diff options
782 files changed, 19860 insertions, 6657 deletions
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 870d190fe617..0a46833c1b76 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -493,3 +493,52 @@ Why: These two features use non-standard interfaces. There are the | |||
493 | Who: Corentin Chary <corentin.chary@gmail.com> | 493 | Who: Corentin Chary <corentin.chary@gmail.com> |
494 | 494 | ||
495 | ---------------------------- | 495 | ---------------------------- |
496 | |||
497 | What: usbvideo quickcam_messenger driver | ||
498 | When: 2.6.35 | ||
499 | Files: drivers/media/video/usbvideo/quickcam_messenger.[ch] | ||
500 | Why: obsolete v4l1 driver replaced by gspca_stv06xx | ||
501 | Who: Hans de Goede <hdegoede@redhat.com> | ||
502 | |||
503 | ---------------------------- | ||
504 | |||
505 | What: ov511 v4l1 driver | ||
506 | When: 2.6.35 | ||
507 | Files: drivers/media/video/ov511.[ch] | ||
508 | Why: obsolete v4l1 driver replaced by gspca_ov519 | ||
509 | Who: Hans de Goede <hdegoede@redhat.com> | ||
510 | |||
511 | ---------------------------- | ||
512 | |||
513 | What: w9968cf v4l1 driver | ||
514 | When: 2.6.35 | ||
515 | Files: drivers/media/video/w9968cf*.[ch] | ||
516 | Why: obsolete v4l1 driver replaced by gspca_ov519 | ||
517 | Who: Hans de Goede <hdegoede@redhat.com> | ||
518 | |||
519 | ---------------------------- | ||
520 | |||
521 | What: ovcamchip sensor framework | ||
522 | When: 2.6.35 | ||
523 | Files: drivers/media/video/ovcamchip/* | ||
524 | Why: Only used by obsoleted v4l1 drivers | ||
525 | Who: Hans de Goede <hdegoede@redhat.com> | ||
526 | |||
527 | ---------------------------- | ||
528 | |||
529 | What: stv680 v4l1 driver | ||
530 | When: 2.6.35 | ||
531 | Files: drivers/media/video/stv680.[ch] | ||
532 | Why: obsolete v4l1 driver replaced by gspca_stv0680 | ||
533 | Who: Hans de Goede <hdegoede@redhat.com> | ||
534 | |||
535 | ---------------------------- | ||
536 | |||
537 | What: zc0301 v4l driver | ||
538 | When: 2.6.35 | ||
539 | Files: drivers/media/video/zc0301/* | ||
540 | Why: Duplicate functionality with the gspca_zc3xx driver, zc0301 only | ||
541 | supports 2 USB-ID's (because it only supports a limited set of | ||
542 | sensors) wich are also supported by the gspca_zc3xx driver | ||
543 | (which supports 53 USB-ID's in total) | ||
544 | Who: Hans de Goede <hdegoede@redhat.com> | ||
diff --git a/Documentation/input/multi-touch-protocol.txt b/Documentation/input/multi-touch-protocol.txt index a12ea3b586e6..8490480ce432 100644 --- a/Documentation/input/multi-touch-protocol.txt +++ b/Documentation/input/multi-touch-protocol.txt | |||
@@ -27,12 +27,30 @@ set of events/packets. | |||
27 | 27 | ||
28 | A set of ABS_MT events with the desired properties is defined. The events | 28 | A set of ABS_MT events with the desired properties is defined. The events |
29 | are divided into categories, to allow for partial implementation. The | 29 | are divided into categories, to allow for partial implementation. The |
30 | minimum set consists of ABS_MT_TOUCH_MAJOR, ABS_MT_POSITION_X and | 30 | minimum set consists of ABS_MT_POSITION_X and ABS_MT_POSITION_Y, which |
31 | ABS_MT_POSITION_Y, which allows for multiple fingers to be tracked. If the | 31 | allows for multiple fingers to be tracked. If the device supports it, the |
32 | device supports it, the ABS_MT_WIDTH_MAJOR may be used to provide the size | 32 | ABS_MT_TOUCH_MAJOR and ABS_MT_WIDTH_MAJOR may be used to provide the size |
33 | of the approaching finger. Anisotropy and direction may be specified with | 33 | of the contact area and approaching finger, respectively. |
34 | ABS_MT_TOUCH_MINOR, ABS_MT_WIDTH_MINOR and ABS_MT_ORIENTATION. The | 34 | |
35 | ABS_MT_TOOL_TYPE may be used to specify whether the touching tool is a | 35 | The TOUCH and WIDTH parameters have a geometrical interpretation; imagine |
36 | looking through a window at someone gently holding a finger against the | ||
37 | glass. You will see two regions, one inner region consisting of the part | ||
38 | of the finger actually touching the glass, and one outer region formed by | ||
39 | the perimeter of the finger. The diameter of the inner region is the | ||
40 | ABS_MT_TOUCH_MAJOR, the diameter of the outer region is | ||
41 | ABS_MT_WIDTH_MAJOR. Now imagine the person pressing the finger harder | ||
42 | against the glass. The inner region will increase, and in general, the | ||
43 | ratio ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR, which is always smaller than | ||
44 | unity, is related to the finger pressure. For pressure-based devices, | ||
45 | ABS_MT_PRESSURE may be used to provide the pressure on the contact area | ||
46 | instead. | ||
47 | |||
48 | In addition to the MAJOR parameters, the oval shape of the finger can be | ||
49 | described by adding the MINOR parameters, such that MAJOR and MINOR are the | ||
50 | major and minor axis of an ellipse. Finally, the orientation of the oval | ||
51 | shape can be describe with the ORIENTATION parameter. | ||
52 | |||
53 | The ABS_MT_TOOL_TYPE may be used to specify whether the touching tool is a | ||
36 | finger or a pen or something else. Devices with more granular information | 54 | finger or a pen or something else. Devices with more granular information |
37 | may specify general shapes as blobs, i.e., as a sequence of rectangular | 55 | may specify general shapes as blobs, i.e., as a sequence of rectangular |
38 | shapes grouped together by an ABS_MT_BLOB_ID. Finally, for the few devices | 56 | shapes grouped together by an ABS_MT_BLOB_ID. Finally, for the few devices |
@@ -42,11 +60,9 @@ report finger tracking from hardware [5]. | |||
42 | Here is what a minimal event sequence for a two-finger touch would look | 60 | Here is what a minimal event sequence for a two-finger touch would look |
43 | like: | 61 | like: |
44 | 62 | ||
45 | ABS_MT_TOUCH_MAJOR | ||
46 | ABS_MT_POSITION_X | 63 | ABS_MT_POSITION_X |
47 | ABS_MT_POSITION_Y | 64 | ABS_MT_POSITION_Y |
48 | SYN_MT_REPORT | 65 | SYN_MT_REPORT |
49 | ABS_MT_TOUCH_MAJOR | ||
50 | ABS_MT_POSITION_X | 66 | ABS_MT_POSITION_X |
51 | ABS_MT_POSITION_Y | 67 | ABS_MT_POSITION_Y |
52 | SYN_MT_REPORT | 68 | SYN_MT_REPORT |
@@ -87,6 +103,12 @@ the contact. The ratio ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR approximates | |||
87 | the notion of pressure. The fingers of the hand and the palm all have | 103 | the notion of pressure. The fingers of the hand and the palm all have |
88 | different characteristic widths [1]. | 104 | different characteristic widths [1]. |
89 | 105 | ||
106 | ABS_MT_PRESSURE | ||
107 | |||
108 | The pressure, in arbitrary units, on the contact area. May be used instead | ||
109 | of TOUCH and WIDTH for pressure-based devices or any device with a spatial | ||
110 | signal intensity distribution. | ||
111 | |||
90 | ABS_MT_ORIENTATION | 112 | ABS_MT_ORIENTATION |
91 | 113 | ||
92 | The orientation of the ellipse. The value should describe a signed quarter | 114 | The orientation of the ellipse. The value should describe a signed quarter |
@@ -170,6 +192,16 @@ There are a few devices that support trackingID in hardware. User space can | |||
170 | make use of these native identifiers to reduce bandwidth and cpu usage. | 192 | make use of these native identifiers to reduce bandwidth and cpu usage. |
171 | 193 | ||
172 | 194 | ||
195 | Gestures | ||
196 | -------- | ||
197 | |||
198 | In the specific application of creating gesture events, the TOUCH and WIDTH | ||
199 | parameters can be used to, e.g., approximate finger pressure or distinguish | ||
200 | between index finger and thumb. With the addition of the MINOR parameters, | ||
201 | one can also distinguish between a sweeping finger and a pointing finger, | ||
202 | and with ORIENTATION, one can detect twisting of fingers. | ||
203 | |||
204 | |||
173 | Notes | 205 | Notes |
174 | ----- | 206 | ----- |
175 | 207 | ||
diff --git a/MAINTAINERS b/MAINTAINERS index c8f47bf154f4..03f38c18f323 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -410,9 +410,8 @@ F: drivers/i2c/busses/i2c-ali1563.c | |||
410 | 410 | ||
411 | ALPHA PORT | 411 | ALPHA PORT |
412 | M: Richard Henderson <rth@twiddle.net> | 412 | M: Richard Henderson <rth@twiddle.net> |
413 | S: Odd Fixes for 2.4; Maintained for 2.6. | ||
414 | M: Ivan Kokshaysky <ink@jurassic.park.msu.ru> | 413 | M: Ivan Kokshaysky <ink@jurassic.park.msu.ru> |
415 | S: Maintained for 2.4; PCI support for 2.6. | 414 | M: Matt Turner <mattst88@gmail.com> |
416 | L: linux-alpha@vger.kernel.org | 415 | L: linux-alpha@vger.kernel.org |
417 | F: arch/alpha/ | 416 | F: arch/alpha/ |
418 | 417 | ||
@@ -988,7 +987,6 @@ F: drivers/platform/x86/asus-laptop.c | |||
988 | 987 | ||
989 | ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API | 988 | ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API |
990 | M: Dan Williams <dan.j.williams@intel.com> | 989 | M: Dan Williams <dan.j.williams@intel.com> |
991 | M: Maciej Sosnowski <maciej.sosnowski@intel.com> | ||
992 | W: http://sourceforge.net/projects/xscaleiop | 990 | W: http://sourceforge.net/projects/xscaleiop |
993 | S: Supported | 991 | S: Supported |
994 | F: Documentation/crypto/async-tx-api.txt | 992 | F: Documentation/crypto/async-tx-api.txt |
@@ -1638,9 +1636,8 @@ S: Maintained | |||
1638 | F: sound/pci/cs5535audio/ | 1636 | F: sound/pci/cs5535audio/ |
1639 | 1637 | ||
1640 | CX18 VIDEO4LINUX DRIVER | 1638 | CX18 VIDEO4LINUX DRIVER |
1641 | M: Hans Verkuil <hverkuil@xs4all.nl> | ||
1642 | M: Andy Walls <awalls@radix.net> | 1639 | M: Andy Walls <awalls@radix.net> |
1643 | L: ivtv-devel@ivtvdriver.org | 1640 | L: ivtv-devel@ivtvdriver.org (moderated for non-subscribers) |
1644 | L: linux-media@vger.kernel.org | 1641 | L: linux-media@vger.kernel.org |
1645 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git | 1642 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git |
1646 | W: http://linuxtv.org | 1643 | W: http://linuxtv.org |
@@ -1825,7 +1822,6 @@ S: Supported | |||
1825 | F: fs/dlm/ | 1822 | F: fs/dlm/ |
1826 | 1823 | ||
1827 | DMA GENERIC OFFLOAD ENGINE SUBSYSTEM | 1824 | DMA GENERIC OFFLOAD ENGINE SUBSYSTEM |
1828 | M: Maciej Sosnowski <maciej.sosnowski@intel.com> | ||
1829 | M: Dan Williams <dan.j.williams@intel.com> | 1825 | M: Dan Williams <dan.j.williams@intel.com> |
1830 | S: Supported | 1826 | S: Supported |
1831 | F: drivers/dma/ | 1827 | F: drivers/dma/ |
@@ -2788,7 +2784,7 @@ F: arch/x86/kernel/microcode_core.c | |||
2788 | F: arch/x86/kernel/microcode_intel.c | 2784 | F: arch/x86/kernel/microcode_intel.c |
2789 | 2785 | ||
2790 | INTEL I/OAT DMA DRIVER | 2786 | INTEL I/OAT DMA DRIVER |
2791 | M: Maciej Sosnowski <maciej.sosnowski@intel.com> | 2787 | M: Dan Williams <dan.j.williams@intel.com> |
2792 | S: Supported | 2788 | S: Supported |
2793 | F: drivers/dma/ioat* | 2789 | F: drivers/dma/ioat* |
2794 | 2790 | ||
@@ -2826,10 +2822,11 @@ L: netdev@vger.kernel.org | |||
2826 | S: Maintained | 2822 | S: Maintained |
2827 | F: drivers/net/ixp2000/ | 2823 | F: drivers/net/ixp2000/ |
2828 | 2824 | ||
2829 | INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/ixgb/ixgbe) | 2825 | INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe) |
2830 | M: Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2826 | M: Jeff Kirsher <jeffrey.t.kirsher@intel.com> |
2831 | M: Jesse Brandeburg <jesse.brandeburg@intel.com> | 2827 | M: Jesse Brandeburg <jesse.brandeburg@intel.com> |
2832 | M: Bruce Allan <bruce.w.allan@intel.com> | 2828 | M: Bruce Allan <bruce.w.allan@intel.com> |
2829 | M: Alex Duyck <alexander.h.duyck@intel.com> | ||
2833 | M: PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com> | 2830 | M: PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com> |
2834 | M: John Ronciak <john.ronciak@intel.com> | 2831 | M: John Ronciak <john.ronciak@intel.com> |
2835 | L: e1000-devel@lists.sourceforge.net | 2832 | L: e1000-devel@lists.sourceforge.net |
@@ -2839,6 +2836,7 @@ F: drivers/net/e100.c | |||
2839 | F: drivers/net/e1000/ | 2836 | F: drivers/net/e1000/ |
2840 | F: drivers/net/e1000e/ | 2837 | F: drivers/net/e1000e/ |
2841 | F: drivers/net/igb/ | 2838 | F: drivers/net/igb/ |
2839 | F: drivers/net/igbvf/ | ||
2842 | F: drivers/net/ixgb/ | 2840 | F: drivers/net/ixgb/ |
2843 | F: drivers/net/ixgbe/ | 2841 | F: drivers/net/ixgbe/ |
2844 | 2842 | ||
@@ -3012,8 +3010,8 @@ S: Maintained | |||
3012 | F: drivers/isdn/hardware/eicon/ | 3010 | F: drivers/isdn/hardware/eicon/ |
3013 | 3011 | ||
3014 | IVTV VIDEO4LINUX DRIVER | 3012 | IVTV VIDEO4LINUX DRIVER |
3015 | M: Hans Verkuil <hverkuil@xs4all.nl> | 3013 | M: Andy Walls <awalls@radix.net> |
3016 | L: ivtv-devel@ivtvdriver.org | 3014 | L: ivtv-devel@ivtvdriver.org (moderated for non-subscribers) |
3017 | L: linux-media@vger.kernel.org | 3015 | L: linux-media@vger.kernel.org |
3018 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git | 3016 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git |
3019 | W: http://www.ivtvdriver.org | 3017 | W: http://www.ivtvdriver.org |
@@ -1,7 +1,7 @@ | |||
1 | VERSION = 2 | 1 | VERSION = 2 |
2 | PATCHLEVEL = 6 | 2 | PATCHLEVEL = 6 |
3 | SUBLEVEL = 33 | 3 | SUBLEVEL = 33 |
4 | EXTRAVERSION = -rc4 | 4 | EXTRAVERSION = -rc6 |
5 | NAME = Man-Eating Seals of Antiquity | 5 | NAME = Man-Eating Seals of Antiquity |
6 | 6 | ||
7 | # *DOCUMENTATION* | 7 | # *DOCUMENTATION* |
@@ -18,10 +18,9 @@ MAKEFLAGS += -rR --no-print-directory | |||
18 | 18 | ||
19 | # Avoid funny character set dependencies | 19 | # Avoid funny character set dependencies |
20 | unexport LC_ALL | 20 | unexport LC_ALL |
21 | LC_CTYPE=C | ||
22 | LC_COLLATE=C | 21 | LC_COLLATE=C |
23 | LC_NUMERIC=C | 22 | LC_NUMERIC=C |
24 | export LC_CTYPE LC_COLLATE LC_NUMERIC | 23 | export LC_COLLATE LC_NUMERIC |
25 | 24 | ||
26 | # We are using a recursive build, so we need to do a little thinking | 25 | # We are using a recursive build, so we need to do a little thinking |
27 | # to get the ordering right. | 26 | # to get the ordering right. |
diff --git a/arch/alpha/include/asm/topology.h b/arch/alpha/include/asm/topology.h index 36b3a30ba0e5..9251e13e144f 100644 --- a/arch/alpha/include/asm/topology.h +++ b/arch/alpha/include/asm/topology.h | |||
@@ -28,6 +28,9 @@ static const struct cpumask *cpumask_of_node(int node) | |||
28 | { | 28 | { |
29 | int cpu; | 29 | int cpu; |
30 | 30 | ||
31 | if (node == -1) | ||
32 | return cpu_all_mask; | ||
33 | |||
31 | cpumask_clear(&node_to_cpumask_map[node]); | 34 | cpumask_clear(&node_to_cpumask_map[node]); |
32 | 35 | ||
33 | for_each_online_cpu(cpu) { | 36 | for_each_online_cpu(cpu) { |
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index c2238cd474c7..4c33ca82f9b1 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -729,14 +729,26 @@ config ARCH_U8500 | |||
729 | 729 | ||
730 | endchoice | 730 | endchoice |
731 | 731 | ||
732 | source "arch/arm/mach-aaec2000/Kconfig" | ||
733 | |||
734 | source "arch/arm/mach-at91/Kconfig" | ||
735 | |||
736 | source "arch/arm/mach-bcmring/Kconfig" | ||
737 | |||
732 | source "arch/arm/mach-clps711x/Kconfig" | 738 | source "arch/arm/mach-clps711x/Kconfig" |
733 | 739 | ||
740 | source "arch/arm/mach-davinci/Kconfig" | ||
741 | |||
742 | source "arch/arm/mach-dove/Kconfig" | ||
743 | |||
734 | source "arch/arm/mach-ep93xx/Kconfig" | 744 | source "arch/arm/mach-ep93xx/Kconfig" |
735 | 745 | ||
736 | source "arch/arm/mach-footbridge/Kconfig" | 746 | source "arch/arm/mach-footbridge/Kconfig" |
737 | 747 | ||
738 | source "arch/arm/mach-gemini/Kconfig" | 748 | source "arch/arm/mach-gemini/Kconfig" |
739 | 749 | ||
750 | source "arch/arm/mach-h720x/Kconfig" | ||
751 | |||
740 | source "arch/arm/mach-integrator/Kconfig" | 752 | source "arch/arm/mach-integrator/Kconfig" |
741 | 753 | ||
742 | source "arch/arm/mach-iop32x/Kconfig" | 754 | source "arch/arm/mach-iop32x/Kconfig" |
@@ -751,16 +763,26 @@ source "arch/arm/mach-ixp2000/Kconfig" | |||
751 | 763 | ||
752 | source "arch/arm/mach-ixp23xx/Kconfig" | 764 | source "arch/arm/mach-ixp23xx/Kconfig" |
753 | 765 | ||
766 | source "arch/arm/mach-kirkwood/Kconfig" | ||
767 | |||
768 | source "arch/arm/mach-ks8695/Kconfig" | ||
769 | |||
770 | source "arch/arm/mach-lh7a40x/Kconfig" | ||
771 | |||
754 | source "arch/arm/mach-loki/Kconfig" | 772 | source "arch/arm/mach-loki/Kconfig" |
755 | 773 | ||
774 | source "arch/arm/mach-msm/Kconfig" | ||
775 | |||
756 | source "arch/arm/mach-mv78xx0/Kconfig" | 776 | source "arch/arm/mach-mv78xx0/Kconfig" |
757 | 777 | ||
758 | source "arch/arm/mach-pxa/Kconfig" | 778 | source "arch/arm/plat-mxc/Kconfig" |
759 | source "arch/arm/plat-pxa/Kconfig" | ||
760 | 779 | ||
761 | source "arch/arm/mach-mmp/Kconfig" | 780 | source "arch/arm/mach-netx/Kconfig" |
762 | 781 | ||
763 | source "arch/arm/mach-sa1100/Kconfig" | 782 | source "arch/arm/mach-nomadik/Kconfig" |
783 | source "arch/arm/plat-nomadik/Kconfig" | ||
784 | |||
785 | source "arch/arm/mach-ns9xxx/Kconfig" | ||
764 | 786 | ||
765 | source "arch/arm/plat-omap/Kconfig" | 787 | source "arch/arm/plat-omap/Kconfig" |
766 | 788 | ||
@@ -770,9 +792,14 @@ source "arch/arm/mach-omap2/Kconfig" | |||
770 | 792 | ||
771 | source "arch/arm/mach-orion5x/Kconfig" | 793 | source "arch/arm/mach-orion5x/Kconfig" |
772 | 794 | ||
773 | source "arch/arm/mach-kirkwood/Kconfig" | 795 | source "arch/arm/mach-pxa/Kconfig" |
796 | source "arch/arm/plat-pxa/Kconfig" | ||
774 | 797 | ||
775 | source "arch/arm/mach-dove/Kconfig" | 798 | source "arch/arm/mach-mmp/Kconfig" |
799 | |||
800 | source "arch/arm/mach-realview/Kconfig" | ||
801 | |||
802 | source "arch/arm/mach-sa1100/Kconfig" | ||
776 | 803 | ||
777 | source "arch/arm/plat-samsung/Kconfig" | 804 | source "arch/arm/plat-samsung/Kconfig" |
778 | source "arch/arm/plat-s3c24xx/Kconfig" | 805 | source "arch/arm/plat-s3c24xx/Kconfig" |
@@ -800,41 +827,14 @@ if ARCH_S5PC1XX | |||
800 | source "arch/arm/mach-s5pc100/Kconfig" | 827 | source "arch/arm/mach-s5pc100/Kconfig" |
801 | endif | 828 | endif |
802 | 829 | ||
803 | source "arch/arm/mach-lh7a40x/Kconfig" | 830 | source "arch/arm/mach-u300/Kconfig" |
804 | 831 | ||
805 | source "arch/arm/mach-h720x/Kconfig" | 832 | source "arch/arm/mach-ux500/Kconfig" |
806 | 833 | ||
807 | source "arch/arm/mach-versatile/Kconfig" | 834 | source "arch/arm/mach-versatile/Kconfig" |
808 | 835 | ||
809 | source "arch/arm/mach-aaec2000/Kconfig" | ||
810 | |||
811 | source "arch/arm/mach-realview/Kconfig" | ||
812 | |||
813 | source "arch/arm/mach-at91/Kconfig" | ||
814 | |||
815 | source "arch/arm/plat-mxc/Kconfig" | ||
816 | |||
817 | source "arch/arm/mach-nomadik/Kconfig" | ||
818 | source "arch/arm/plat-nomadik/Kconfig" | ||
819 | |||
820 | source "arch/arm/mach-netx/Kconfig" | ||
821 | |||
822 | source "arch/arm/mach-ns9xxx/Kconfig" | ||
823 | |||
824 | source "arch/arm/mach-davinci/Kconfig" | ||
825 | |||
826 | source "arch/arm/mach-ks8695/Kconfig" | ||
827 | |||
828 | source "arch/arm/mach-msm/Kconfig" | ||
829 | |||
830 | source "arch/arm/mach-u300/Kconfig" | ||
831 | |||
832 | source "arch/arm/mach-w90x900/Kconfig" | 836 | source "arch/arm/mach-w90x900/Kconfig" |
833 | 837 | ||
834 | source "arch/arm/mach-bcmring/Kconfig" | ||
835 | |||
836 | source "arch/arm/mach-ux500/Kconfig" | ||
837 | |||
838 | # Definitions to make life easier | 838 | # Definitions to make life easier |
839 | config ARCH_ACORN | 839 | config ARCH_ACORN |
840 | bool | 840 | bool |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index e9da08483b3c..9e7582572741 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -146,6 +146,7 @@ machine-$(CONFIG_ARCH_MX1) := mx1 | |||
146 | machine-$(CONFIG_ARCH_MX2) := mx2 | 146 | machine-$(CONFIG_ARCH_MX2) := mx2 |
147 | machine-$(CONFIG_ARCH_MX25) := mx25 | 147 | machine-$(CONFIG_ARCH_MX25) := mx25 |
148 | machine-$(CONFIG_ARCH_MX3) := mx3 | 148 | machine-$(CONFIG_ARCH_MX3) := mx3 |
149 | machine-$(CONFIG_ARCH_MXC91231) := mxc91231 | ||
149 | machine-$(CONFIG_ARCH_NETX) := netx | 150 | machine-$(CONFIG_ARCH_NETX) := netx |
150 | machine-$(CONFIG_ARCH_NOMADIK) := nomadik | 151 | machine-$(CONFIG_ARCH_NOMADIK) := nomadik |
151 | machine-$(CONFIG_ARCH_NS9XXX) := ns9xxx | 152 | machine-$(CONFIG_ARCH_NS9XXX) := ns9xxx |
@@ -171,12 +172,12 @@ machine-$(CONFIG_ARCH_U8500) := ux500 | |||
171 | machine-$(CONFIG_ARCH_VERSATILE) := versatile | 172 | machine-$(CONFIG_ARCH_VERSATILE) := versatile |
172 | machine-$(CONFIG_ARCH_W90X900) := w90x900 | 173 | machine-$(CONFIG_ARCH_W90X900) := w90x900 |
173 | machine-$(CONFIG_FOOTBRIDGE) := footbridge | 174 | machine-$(CONFIG_FOOTBRIDGE) := footbridge |
174 | machine-$(CONFIG_ARCH_MXC91231) := mxc91231 | ||
175 | 175 | ||
176 | # Platform directory name. This list is sorted alphanumerically | 176 | # Platform directory name. This list is sorted alphanumerically |
177 | # by CONFIG_* macro name. | 177 | # by CONFIG_* macro name. |
178 | plat-$(CONFIG_ARCH_MXC) := mxc | 178 | plat-$(CONFIG_ARCH_MXC) := mxc |
179 | plat-$(CONFIG_ARCH_OMAP) := omap | 179 | plat-$(CONFIG_ARCH_OMAP) := omap |
180 | plat-$(CONFIG_ARCH_STMP3XXX) := stmp3xxx | ||
180 | plat-$(CONFIG_PLAT_IOP) := iop | 181 | plat-$(CONFIG_PLAT_IOP) := iop |
181 | plat-$(CONFIG_PLAT_NOMADIK) := nomadik | 182 | plat-$(CONFIG_PLAT_NOMADIK) := nomadik |
182 | plat-$(CONFIG_PLAT_ORION) := orion | 183 | plat-$(CONFIG_PLAT_ORION) := orion |
@@ -184,7 +185,6 @@ plat-$(CONFIG_PLAT_PXA) := pxa | |||
184 | plat-$(CONFIG_PLAT_S3C24XX) := s3c24xx s3c samsung | 185 | plat-$(CONFIG_PLAT_S3C24XX) := s3c24xx s3c samsung |
185 | plat-$(CONFIG_PLAT_S3C64XX) := s3c64xx s3c samsung | 186 | plat-$(CONFIG_PLAT_S3C64XX) := s3c64xx s3c samsung |
186 | plat-$(CONFIG_PLAT_S5PC1XX) := s5pc1xx s3c samsung | 187 | plat-$(CONFIG_PLAT_S5PC1XX) := s5pc1xx s3c samsung |
187 | plat-$(CONFIG_ARCH_STMP3XXX) := stmp3xxx | ||
188 | 188 | ||
189 | ifeq ($(CONFIG_ARCH_EBSA110),y) | 189 | ifeq ($(CONFIG_ARCH_EBSA110),y) |
190 | # This is what happens if you forget the IOCS16 line. | 190 | # This is what happens if you forget the IOCS16 line. |
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index d356af7cef82..4fddc509e78e 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
@@ -27,6 +27,14 @@ | |||
27 | .macro writeb, ch, rb | 27 | .macro writeb, ch, rb |
28 | mcr p14, 0, \ch, c0, c5, 0 | 28 | mcr p14, 0, \ch, c0, c5, 0 |
29 | .endm | 29 | .endm |
30 | #elif defined(CONFIG_CPU_V7) | ||
31 | .macro loadsp, rb | ||
32 | .endm | ||
33 | .macro writeb, ch, rb | ||
34 | wait: mrc p14, 0, pc, c0, c1, 0 | ||
35 | bcs wait | ||
36 | mcr p14, 0, \ch, c0, c5, 0 | ||
37 | .endm | ||
30 | #elif defined(CONFIG_CPU_XSCALE) | 38 | #elif defined(CONFIG_CPU_XSCALE) |
31 | .macro loadsp, rb | 39 | .macro loadsp, rb |
32 | .endm | 40 | .endm |
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c index 7e0fe4d42c7b..56a0d116d271 100644 --- a/arch/arm/boot/compressed/misc.c +++ b/arch/arm/boot/compressed/misc.c | |||
@@ -53,6 +53,18 @@ static void icedcc_putc(int ch) | |||
53 | 53 | ||
54 | asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch)); | 54 | asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch)); |
55 | } | 55 | } |
56 | |||
57 | #elif defined(CONFIG_CPU_V7) | ||
58 | |||
59 | static void icedcc_putc(int ch) | ||
60 | { | ||
61 | asm( | ||
62 | "wait: mrc p14, 0, pc, c0, c1, 0 \n\ | ||
63 | bcs wait \n\ | ||
64 | mcr p14, 0, %0, c0, c5, 0 " | ||
65 | : : "r" (ch)); | ||
66 | } | ||
67 | |||
56 | #elif defined(CONFIG_CPU_XSCALE) | 68 | #elif defined(CONFIG_CPU_XSCALE) |
57 | 69 | ||
58 | static void icedcc_putc(int ch) | 70 | static void icedcc_putc(int ch) |
@@ -88,7 +100,6 @@ static void icedcc_putc(int ch) | |||
88 | #endif | 100 | #endif |
89 | 101 | ||
90 | #define putc(ch) icedcc_putc(ch) | 102 | #define putc(ch) icedcc_putc(ch) |
91 | #define flush() do { } while (0) | ||
92 | #endif | 103 | #endif |
93 | 104 | ||
94 | static void putstr(const char *ptr) | 105 | static void putstr(const char *ptr) |
diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h index 730aefcfbee3..c77d2fa1f6e5 100644 --- a/arch/arm/include/asm/cacheflush.h +++ b/arch/arm/include/asm/cacheflush.h | |||
@@ -154,16 +154,16 @@ | |||
154 | * Please note that the implementation of these, and the required | 154 | * Please note that the implementation of these, and the required |
155 | * effects are cache-type (VIVT/VIPT/PIPT) specific. | 155 | * effects are cache-type (VIVT/VIPT/PIPT) specific. |
156 | * | 156 | * |
157 | * flush_cache_kern_all() | 157 | * flush_kern_all() |
158 | * | 158 | * |
159 | * Unconditionally clean and invalidate the entire cache. | 159 | * Unconditionally clean and invalidate the entire cache. |
160 | * | 160 | * |
161 | * flush_cache_user_mm(mm) | 161 | * flush_user_all() |
162 | * | 162 | * |
163 | * Clean and invalidate all user space cache entries | 163 | * Clean and invalidate all user space cache entries |
164 | * before a change of page tables. | 164 | * before a change of page tables. |
165 | * | 165 | * |
166 | * flush_cache_user_range(start, end, flags) | 166 | * flush_user_range(start, end, flags) |
167 | * | 167 | * |
168 | * Clean and invalidate a range of cache entries in the | 168 | * Clean and invalidate a range of cache entries in the |
169 | * specified address space before a change of page tables. | 169 | * specified address space before a change of page tables. |
@@ -179,6 +179,20 @@ | |||
179 | * - start - virtual start address | 179 | * - start - virtual start address |
180 | * - end - virtual end address | 180 | * - end - virtual end address |
181 | * | 181 | * |
182 | * coherent_user_range(start, end) | ||
183 | * | ||
184 | * Ensure coherency between the Icache and the Dcache in the | ||
185 | * region described by start, end. If you have non-snooping | ||
186 | * Harvard caches, you need to implement this function. | ||
187 | * - start - virtual start address | ||
188 | * - end - virtual end address | ||
189 | * | ||
190 | * flush_kern_dcache_area(kaddr, size) | ||
191 | * | ||
192 | * Ensure that the data held in page is written back. | ||
193 | * - kaddr - page address | ||
194 | * - size - region size | ||
195 | * | ||
182 | * DMA Cache Coherency | 196 | * DMA Cache Coherency |
183 | * =================== | 197 | * =================== |
184 | * | 198 | * |
diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S index b121b6053cce..5c91addcaebc 100644 --- a/arch/arm/kernel/debug.S +++ b/arch/arm/kernel/debug.S | |||
@@ -49,6 +49,26 @@ | |||
49 | 1002: | 49 | 1002: |
50 | .endm | 50 | .endm |
51 | 51 | ||
52 | #elif defined(CONFIG_CPU_V7) | ||
53 | |||
54 | .macro addruart, rx | ||
55 | .endm | ||
56 | |||
57 | .macro senduart, rd, rx | ||
58 | mcr p14, 0, \rd, c0, c5, 0 | ||
59 | .endm | ||
60 | |||
61 | .macro busyuart, rd, rx | ||
62 | busy: mrc p14, 0, pc, c0, c1, 0 | ||
63 | bcs busy | ||
64 | .endm | ||
65 | |||
66 | .macro waituart, rd, rx | ||
67 | wait: mrc p14, 0, pc, c0, c1, 0 | ||
68 | bcs wait | ||
69 | |||
70 | .endm | ||
71 | |||
52 | #elif defined(CONFIG_CPU_XSCALE) | 72 | #elif defined(CONFIG_CPU_XSCALE) |
53 | 73 | ||
54 | .macro addruart, rx | 74 | .macro addruart, rx |
diff --git a/arch/arm/kernel/elf.c b/arch/arm/kernel/elf.c index 950391f194c4..d4a0da1e48f4 100644 --- a/arch/arm/kernel/elf.c +++ b/arch/arm/kernel/elf.c | |||
@@ -78,15 +78,6 @@ int arm_elf_read_implies_exec(const struct elf32_hdr *x, int executable_stack) | |||
78 | return 1; | 78 | return 1; |
79 | if (cpu_architecture() < CPU_ARCH_ARMv6) | 79 | if (cpu_architecture() < CPU_ARCH_ARMv6) |
80 | return 1; | 80 | return 1; |
81 | #if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT) | ||
82 | /* | ||
83 | * If we have support for OABI programs, we can never allow NX | ||
84 | * support - our signal syscall restart mechanism relies upon | ||
85 | * being able to execute code placed on the user stack. | ||
86 | */ | ||
87 | return 1; | ||
88 | #else | ||
89 | return 0; | 81 | return 0; |
90 | #endif | ||
91 | } | 82 | } |
92 | EXPORT_SYMBOL(arm_elf_read_implies_exec); | 83 | EXPORT_SYMBOL(arm_elf_read_implies_exec); |
diff --git a/arch/arm/mach-davinci/include/mach/keyscan.h b/arch/arm/mach-davinci/include/mach/keyscan.h index b4e21a2976d1..7a560e05bda8 100644 --- a/arch/arm/mach-davinci/include/mach/keyscan.h +++ b/arch/arm/mach-davinci/include/mach/keyscan.h | |||
@@ -29,6 +29,7 @@ enum davinci_matrix_types { | |||
29 | }; | 29 | }; |
30 | 30 | ||
31 | struct davinci_ks_platform_data { | 31 | struct davinci_ks_platform_data { |
32 | int (*device_enable)(struct device *dev); | ||
32 | unsigned short *keymap; | 33 | unsigned short *keymap; |
33 | u32 keymapsize; | 34 | u32 keymapsize; |
34 | u8 rep:1; | 35 | u8 rep:1; |
diff --git a/arch/arm/mach-gemini/include/mach/uncompress.h b/arch/arm/mach-gemini/include/mach/uncompress.h index 59c5df7e716c..5483f61a8061 100644 --- a/arch/arm/mach-gemini/include/mach/uncompress.h +++ b/arch/arm/mach-gemini/include/mach/uncompress.h | |||
@@ -30,7 +30,9 @@ static inline void putc(char c) | |||
30 | UART[UART_TX] = c; | 30 | UART[UART_TX] = c; |
31 | } | 31 | } |
32 | 32 | ||
33 | #define flush() do { } while (0) | 33 | static inline void flush(void) |
34 | { | ||
35 | } | ||
34 | 36 | ||
35 | /* | 37 | /* |
36 | * nothing to do | 38 | * nothing to do |
diff --git a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c index 8bf4153d0840..3bf6304158f6 100644 --- a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c +++ b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | #include <linux/ata_platform.h> | 14 | #include <linux/ata_platform.h> |
15 | #include <linux/mv643xx_eth.h> | 15 | #include <linux/mv643xx_eth.h> |
16 | #include <linux/gpio.h> | ||
16 | #include <linux/spi/flash.h> | 17 | #include <linux/spi/flash.h> |
17 | #include <linux/spi/spi.h> | 18 | #include <linux/spi/spi.h> |
18 | #include <linux/spi/orion_spi.h> | 19 | #include <linux/spi/orion_spi.h> |
@@ -53,6 +54,11 @@ static void __init rd88f6192_init(void) | |||
53 | */ | 54 | */ |
54 | kirkwood_init(); | 55 | kirkwood_init(); |
55 | 56 | ||
57 | orion_gpio_set_valid(RD88F6192_GPIO_USB_VBUS, 1); | ||
58 | if (gpio_request(RD88F6192_GPIO_USB_VBUS, "USB VBUS") != 0 || | ||
59 | gpio_direction_output(RD88F6192_GPIO_USB_VBUS, 1) != 0) | ||
60 | pr_err("RD-88F6192-NAS: failed to setup USB VBUS GPIO\n"); | ||
61 | |||
56 | kirkwood_ehci_init(); | 62 | kirkwood_ehci_init(); |
57 | kirkwood_ge00_init(&rd88f6192_ge00_data); | 63 | kirkwood_ge00_init(&rd88f6192_ge00_data); |
58 | kirkwood_sata_init(&rd88f6192_sata_data); | 64 | kirkwood_sata_init(&rd88f6192_sata_data); |
diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c index 2ba9ab953731..04f1d29cba2c 100644 --- a/arch/arm/mach-omap1/clock.c +++ b/arch/arm/mach-omap1/clock.c | |||
@@ -214,8 +214,8 @@ int omap1_select_table_rate(struct clk *clk, unsigned long rate) | |||
214 | struct mpu_rate * ptr; | 214 | struct mpu_rate * ptr; |
215 | unsigned long dpll1_rate, ref_rate; | 215 | unsigned long dpll1_rate, ref_rate; |
216 | 216 | ||
217 | dpll1_rate = clk_get_rate(ck_dpll1_p); | 217 | dpll1_rate = ck_dpll1_p->rate; |
218 | ref_rate = clk_get_rate(ck_ref_p); | 218 | ref_rate = ck_ref_p->rate; |
219 | 219 | ||
220 | for (ptr = omap1_rate_table; ptr->rate; ptr++) { | 220 | for (ptr = omap1_rate_table; ptr->rate; ptr++) { |
221 | if (ptr->xtal != ref_rate) | 221 | if (ptr->xtal != ref_rate) |
@@ -306,7 +306,7 @@ long omap1_round_to_table_rate(struct clk *clk, unsigned long rate) | |||
306 | long highest_rate; | 306 | long highest_rate; |
307 | unsigned long ref_rate; | 307 | unsigned long ref_rate; |
308 | 308 | ||
309 | ref_rate = clk_get_rate(ck_ref_p); | 309 | ref_rate = ck_ref_p->rate; |
310 | 310 | ||
311 | highest_rate = -EINVAL; | 311 | highest_rate = -EINVAL; |
312 | 312 | ||
diff --git a/arch/arm/mach-omap2/clock34xx_data.c b/arch/arm/mach-omap2/clock34xx_data.c index c6031d74d6f6..74930e3158e3 100644 --- a/arch/arm/mach-omap2/clock34xx_data.c +++ b/arch/arm/mach-omap2/clock34xx_data.c | |||
@@ -671,7 +671,6 @@ static struct clk dpll4_m3x2_ck = { | |||
671 | .name = "dpll4_m3x2_ck", | 671 | .name = "dpll4_m3x2_ck", |
672 | .ops = &clkops_omap2_dflt_wait, | 672 | .ops = &clkops_omap2_dflt_wait, |
673 | .parent = &dpll4_m3_ck, | 673 | .parent = &dpll4_m3_ck, |
674 | .init = &omap2_init_clksel_parent, | ||
675 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | 674 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), |
676 | .enable_bit = OMAP3430_PWRDN_TV_SHIFT, | 675 | .enable_bit = OMAP3430_PWRDN_TV_SHIFT, |
677 | .flags = INVERT_ENABLE, | 676 | .flags = INVERT_ENABLE, |
@@ -811,7 +810,6 @@ static struct clk dpll4_m6x2_ck = { | |||
811 | .name = "dpll4_m6x2_ck", | 810 | .name = "dpll4_m6x2_ck", |
812 | .ops = &clkops_omap2_dflt_wait, | 811 | .ops = &clkops_omap2_dflt_wait, |
813 | .parent = &dpll4_m6_ck, | 812 | .parent = &dpll4_m6_ck, |
814 | .init = &omap2_init_clksel_parent, | ||
815 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | 813 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), |
816 | .enable_bit = OMAP3430_PWRDN_EMU_PERIPH_SHIFT, | 814 | .enable_bit = OMAP3430_PWRDN_EMU_PERIPH_SHIFT, |
817 | .flags = INVERT_ENABLE, | 815 | .flags = INVERT_ENABLE, |
@@ -1047,7 +1045,6 @@ static struct clk iva2_ck = { | |||
1047 | .name = "iva2_ck", | 1045 | .name = "iva2_ck", |
1048 | .ops = &clkops_omap2_dflt_wait, | 1046 | .ops = &clkops_omap2_dflt_wait, |
1049 | .parent = &dpll2_m2_ck, | 1047 | .parent = &dpll2_m2_ck, |
1050 | .init = &omap2_init_clksel_parent, | ||
1051 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, CM_FCLKEN), | 1048 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, CM_FCLKEN), |
1052 | .enable_bit = OMAP3430_CM_FCLKEN_IVA2_EN_IVA2_SHIFT, | 1049 | .enable_bit = OMAP3430_CM_FCLKEN_IVA2_EN_IVA2_SHIFT, |
1053 | .clkdm_name = "iva2_clkdm", | 1050 | .clkdm_name = "iva2_clkdm", |
@@ -1121,7 +1118,6 @@ static struct clk gfx_l3_ck = { | |||
1121 | .name = "gfx_l3_ck", | 1118 | .name = "gfx_l3_ck", |
1122 | .ops = &clkops_omap2_dflt_wait, | 1119 | .ops = &clkops_omap2_dflt_wait, |
1123 | .parent = &l3_ick, | 1120 | .parent = &l3_ick, |
1124 | .init = &omap2_init_clksel_parent, | ||
1125 | .enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_ICLKEN), | 1121 | .enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_ICLKEN), |
1126 | .enable_bit = OMAP_EN_GFX_SHIFT, | 1122 | .enable_bit = OMAP_EN_GFX_SHIFT, |
1127 | .recalc = &followparent_recalc, | 1123 | .recalc = &followparent_recalc, |
diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-omap2/clock44xx_data.c index 2210e227d78a..9d882bcb56e3 100644 --- a/arch/arm/mach-omap2/clock44xx_data.c +++ b/arch/arm/mach-omap2/clock44xx_data.c | |||
@@ -346,37 +346,37 @@ static struct clk aess_fclk = { | |||
346 | }; | 346 | }; |
347 | 347 | ||
348 | static const struct clksel_rate div31_1to31_rates[] = { | 348 | static const struct clksel_rate div31_1to31_rates[] = { |
349 | { .div = 1, .val = 0, .flags = RATE_IN_4430 }, | 349 | { .div = 1, .val = 1, .flags = RATE_IN_4430 }, |
350 | { .div = 2, .val = 1, .flags = RATE_IN_4430 }, | 350 | { .div = 2, .val = 2, .flags = RATE_IN_4430 }, |
351 | { .div = 3, .val = 2, .flags = RATE_IN_4430 }, | 351 | { .div = 3, .val = 3, .flags = RATE_IN_4430 }, |
352 | { .div = 4, .val = 3, .flags = RATE_IN_4430 }, | 352 | { .div = 4, .val = 4, .flags = RATE_IN_4430 }, |
353 | { .div = 5, .val = 4, .flags = RATE_IN_4430 }, | 353 | { .div = 5, .val = 5, .flags = RATE_IN_4430 }, |
354 | { .div = 6, .val = 5, .flags = RATE_IN_4430 }, | 354 | { .div = 6, .val = 6, .flags = RATE_IN_4430 }, |
355 | { .div = 7, .val = 6, .flags = RATE_IN_4430 }, | 355 | { .div = 7, .val = 7, .flags = RATE_IN_4430 }, |
356 | { .div = 8, .val = 7, .flags = RATE_IN_4430 }, | 356 | { .div = 8, .val = 8, .flags = RATE_IN_4430 }, |
357 | { .div = 9, .val = 8, .flags = RATE_IN_4430 }, | 357 | { .div = 9, .val = 9, .flags = RATE_IN_4430 }, |
358 | { .div = 10, .val = 9, .flags = RATE_IN_4430 }, | 358 | { .div = 10, .val = 10, .flags = RATE_IN_4430 }, |
359 | { .div = 11, .val = 10, .flags = RATE_IN_4430 }, | 359 | { .div = 11, .val = 11, .flags = RATE_IN_4430 }, |
360 | { .div = 12, .val = 11, .flags = RATE_IN_4430 }, | 360 | { .div = 12, .val = 12, .flags = RATE_IN_4430 }, |
361 | { .div = 13, .val = 12, .flags = RATE_IN_4430 }, | 361 | { .div = 13, .val = 13, .flags = RATE_IN_4430 }, |
362 | { .div = 14, .val = 13, .flags = RATE_IN_4430 }, | 362 | { .div = 14, .val = 14, .flags = RATE_IN_4430 }, |
363 | { .div = 15, .val = 14, .flags = RATE_IN_4430 }, | 363 | { .div = 15, .val = 15, .flags = RATE_IN_4430 }, |
364 | { .div = 16, .val = 15, .flags = RATE_IN_4430 }, | 364 | { .div = 16, .val = 16, .flags = RATE_IN_4430 }, |
365 | { .div = 17, .val = 16, .flags = RATE_IN_4430 }, | 365 | { .div = 17, .val = 17, .flags = RATE_IN_4430 }, |
366 | { .div = 18, .val = 17, .flags = RATE_IN_4430 }, | 366 | { .div = 18, .val = 18, .flags = RATE_IN_4430 }, |
367 | { .div = 19, .val = 18, .flags = RATE_IN_4430 }, | 367 | { .div = 19, .val = 19, .flags = RATE_IN_4430 }, |
368 | { .div = 20, .val = 19, .flags = RATE_IN_4430 }, | 368 | { .div = 20, .val = 20, .flags = RATE_IN_4430 }, |
369 | { .div = 21, .val = 20, .flags = RATE_IN_4430 }, | 369 | { .div = 21, .val = 21, .flags = RATE_IN_4430 }, |
370 | { .div = 22, .val = 21, .flags = RATE_IN_4430 }, | 370 | { .div = 22, .val = 22, .flags = RATE_IN_4430 }, |
371 | { .div = 23, .val = 22, .flags = RATE_IN_4430 }, | 371 | { .div = 23, .val = 23, .flags = RATE_IN_4430 }, |
372 | { .div = 24, .val = 23, .flags = RATE_IN_4430 }, | 372 | { .div = 24, .val = 24, .flags = RATE_IN_4430 }, |
373 | { .div = 25, .val = 24, .flags = RATE_IN_4430 }, | 373 | { .div = 25, .val = 25, .flags = RATE_IN_4430 }, |
374 | { .div = 26, .val = 25, .flags = RATE_IN_4430 }, | 374 | { .div = 26, .val = 26, .flags = RATE_IN_4430 }, |
375 | { .div = 27, .val = 26, .flags = RATE_IN_4430 }, | 375 | { .div = 27, .val = 27, .flags = RATE_IN_4430 }, |
376 | { .div = 28, .val = 27, .flags = RATE_IN_4430 }, | 376 | { .div = 28, .val = 28, .flags = RATE_IN_4430 }, |
377 | { .div = 29, .val = 28, .flags = RATE_IN_4430 }, | 377 | { .div = 29, .val = 29, .flags = RATE_IN_4430 }, |
378 | { .div = 30, .val = 29, .flags = RATE_IN_4430 }, | 378 | { .div = 30, .val = 30, .flags = RATE_IN_4430 }, |
379 | { .div = 31, .val = 30, .flags = RATE_IN_4430 }, | 379 | { .div = 31, .val = 31, .flags = RATE_IN_4430 }, |
380 | { .div = 0 }, | 380 | { .div = 0 }, |
381 | }; | 381 | }; |
382 | 382 | ||
diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c index a26d6a08ae3f..12f0cbfc2894 100644 --- a/arch/arm/mach-omap2/cpuidle34xx.c +++ b/arch/arm/mach-omap2/cpuidle34xx.c | |||
@@ -137,7 +137,7 @@ return_sleep_time: | |||
137 | local_irq_enable(); | 137 | local_irq_enable(); |
138 | local_fiq_enable(); | 138 | local_fiq_enable(); |
139 | 139 | ||
140 | return (u32)timespec_to_ns(&ts_idle)/1000; | 140 | return ts_idle.tv_nsec / NSEC_PER_USEC + ts_idle.tv_sec * USEC_PER_SEC; |
141 | } | 141 | } |
142 | 142 | ||
143 | /** | 143 | /** |
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c index bd8cb5974726..3f1334f62e7a 100644 --- a/arch/arm/mach-omap2/gpmc.c +++ b/arch/arm/mach-omap2/gpmc.c | |||
@@ -534,6 +534,8 @@ void __init gpmc_init(void) | |||
534 | BUG(); | 534 | BUG(); |
535 | } | 535 | } |
536 | 536 | ||
537 | clk_enable(gpmc_l3_clk); | ||
538 | |||
537 | l = gpmc_read_reg(GPMC_REVISION); | 539 | l = gpmc_read_reg(GPMC_REVISION); |
538 | printk(KERN_INFO "GPMC revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f); | 540 | printk(KERN_INFO "GPMC revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f); |
539 | /* Set smart idle mode and automatic L3 clock gating */ | 541 | /* Set smart idle mode and automatic L3 clock gating */ |
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index a091b53657b9..3d65c50bd017 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c | |||
@@ -188,6 +188,8 @@ void __init omap3_check_revision(void) | |||
188 | u16 hawkeye; | 188 | u16 hawkeye; |
189 | u8 rev; | 189 | u8 rev; |
190 | 190 | ||
191 | omap_chip.oc = CHIP_IS_OMAP3430; | ||
192 | |||
191 | /* | 193 | /* |
192 | * We cannot access revision registers on ES1.0. | 194 | * We cannot access revision registers on ES1.0. |
193 | * If the processor type is Cortex-A8 and the revision is 0x0 | 195 | * If the processor type is Cortex-A8 and the revision is 0x0 |
@@ -196,6 +198,7 @@ void __init omap3_check_revision(void) | |||
196 | cpuid = read_cpuid(CPUID_ID); | 198 | cpuid = read_cpuid(CPUID_ID); |
197 | if ((((cpuid >> 4) & 0xfff) == 0xc08) && ((cpuid & 0xf) == 0x0)) { | 199 | if ((((cpuid >> 4) & 0xfff) == 0xc08) && ((cpuid & 0xf) == 0x0)) { |
198 | omap_revision = OMAP3430_REV_ES1_0; | 200 | omap_revision = OMAP3430_REV_ES1_0; |
201 | omap_chip.oc |= CHIP_IS_OMAP3430ES1; | ||
199 | return; | 202 | return; |
200 | } | 203 | } |
201 | 204 | ||
@@ -216,18 +219,28 @@ void __init omap3_check_revision(void) | |||
216 | case 0: /* Take care of early samples */ | 219 | case 0: /* Take care of early samples */ |
217 | case 1: | 220 | case 1: |
218 | omap_revision = OMAP3430_REV_ES2_0; | 221 | omap_revision = OMAP3430_REV_ES2_0; |
222 | omap_chip.oc |= CHIP_IS_OMAP3430ES2; | ||
219 | break; | 223 | break; |
220 | case 2: | 224 | case 2: |
221 | omap_revision = OMAP3430_REV_ES2_1; | 225 | omap_revision = OMAP3430_REV_ES2_1; |
226 | omap_chip.oc |= CHIP_IS_OMAP3430ES2; | ||
222 | break; | 227 | break; |
223 | case 3: | 228 | case 3: |
224 | omap_revision = OMAP3430_REV_ES3_0; | 229 | omap_revision = OMAP3430_REV_ES3_0; |
230 | omap_chip.oc |= CHIP_IS_OMAP3430ES3_0; | ||
225 | break; | 231 | break; |
226 | case 4: | 232 | case 4: |
233 | omap_revision = OMAP3430_REV_ES3_1; | ||
234 | omap_chip.oc |= CHIP_IS_OMAP3430ES3_1; | ||
235 | break; | ||
236 | case 7: | ||
227 | /* FALLTHROUGH */ | 237 | /* FALLTHROUGH */ |
228 | default: | 238 | default: |
229 | /* Use the latest known revision as default */ | 239 | /* Use the latest known revision as default */ |
230 | omap_revision = OMAP3430_REV_ES3_1; | 240 | omap_revision = OMAP3430_REV_ES3_1_2; |
241 | |||
242 | /* REVISIT: Add CHIP_IS_OMAP3430ES3_1_2? */ | ||
243 | omap_chip.oc |= CHIP_IS_OMAP3430ES3_1; | ||
231 | } | 244 | } |
232 | break; | 245 | break; |
233 | case 0xb868: | 246 | case 0xb868: |
@@ -235,14 +248,18 @@ void __init omap3_check_revision(void) | |||
235 | * | 248 | * |
236 | * Set the device to be OMAP3505 here. Actual device | 249 | * Set the device to be OMAP3505 here. Actual device |
237 | * is identified later based on the features. | 250 | * is identified later based on the features. |
251 | * | ||
252 | * REVISIT: AM3505/AM3517 should have their own CHIP_IS | ||
238 | */ | 253 | */ |
239 | omap_revision = OMAP3505_REV(rev); | 254 | omap_revision = OMAP3505_REV(rev); |
255 | omap_chip.oc |= CHIP_IS_OMAP3430ES3_1; | ||
240 | break; | 256 | break; |
241 | case 0xb891: | 257 | case 0xb891: |
242 | /* FALLTHROUGH */ | 258 | /* FALLTHROUGH */ |
243 | default: | 259 | default: |
244 | /* Unknown default to latest silicon rev as default*/ | 260 | /* Unknown default to latest silicon rev as default*/ |
245 | omap_revision = OMAP3630_REV_ES1_0; | 261 | omap_revision = OMAP3630_REV_ES1_0; |
262 | omap_chip.oc |= CHIP_IS_OMAP3630ES1; | ||
246 | } | 263 | } |
247 | } | 264 | } |
248 | 265 | ||
@@ -360,6 +377,7 @@ void __init omap2_check_revision(void) | |||
360 | omap3_check_revision(); | 377 | omap3_check_revision(); |
361 | omap3_check_features(); | 378 | omap3_check_features(); |
362 | omap3_cpuinfo(); | 379 | omap3_cpuinfo(); |
380 | return; | ||
363 | } else if (cpu_is_omap44xx()) { | 381 | } else if (cpu_is_omap44xx()) { |
364 | omap4_check_revision(); | 382 | omap4_check_revision(); |
365 | return; | 383 | return; |
@@ -374,27 +392,14 @@ void __init omap2_check_revision(void) | |||
374 | if (cpu_is_omap243x()) { | 392 | if (cpu_is_omap243x()) { |
375 | /* Currently only supports 2430ES2.1 and 2430-all */ | 393 | /* Currently only supports 2430ES2.1 and 2430-all */ |
376 | omap_chip.oc |= CHIP_IS_OMAP2430; | 394 | omap_chip.oc |= CHIP_IS_OMAP2430; |
395 | return; | ||
377 | } else if (cpu_is_omap242x()) { | 396 | } else if (cpu_is_omap242x()) { |
378 | /* Currently only supports 2420ES2.1.1 and 2420-all */ | 397 | /* Currently only supports 2420ES2.1.1 and 2420-all */ |
379 | omap_chip.oc |= CHIP_IS_OMAP2420; | 398 | omap_chip.oc |= CHIP_IS_OMAP2420; |
380 | } else if (cpu_is_omap3505() || cpu_is_omap3517()) { | 399 | return; |
381 | omap_chip.oc = CHIP_IS_OMAP3430 | CHIP_IS_OMAP3430ES3_1; | ||
382 | } else if (cpu_is_omap343x()) { | ||
383 | omap_chip.oc = CHIP_IS_OMAP3430; | ||
384 | if (omap_rev() == OMAP3430_REV_ES1_0) | ||
385 | omap_chip.oc |= CHIP_IS_OMAP3430ES1; | ||
386 | else if (omap_rev() >= OMAP3430_REV_ES2_0 && | ||
387 | omap_rev() <= OMAP3430_REV_ES2_1) | ||
388 | omap_chip.oc |= CHIP_IS_OMAP3430ES2; | ||
389 | else if (omap_rev() == OMAP3430_REV_ES3_0) | ||
390 | omap_chip.oc |= CHIP_IS_OMAP3430ES3_0; | ||
391 | else if (omap_rev() == OMAP3430_REV_ES3_1) | ||
392 | omap_chip.oc |= CHIP_IS_OMAP3430ES3_1; | ||
393 | else if (omap_rev() == OMAP3630_REV_ES1_0) | ||
394 | omap_chip.oc |= CHIP_IS_OMAP3630ES1; | ||
395 | } else { | ||
396 | pr_err("Uninitialized omap_chip, please fix!\n"); | ||
397 | } | 400 | } |
401 | |||
402 | pr_err("Uninitialized omap_chip, please fix!\n"); | ||
398 | } | 403 | } |
399 | 404 | ||
400 | /* | 405 | /* |
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c index e9bc782fa414..27054025da2b 100644 --- a/arch/arm/mach-omap2/irq.c +++ b/arch/arm/mach-omap2/irq.c | |||
@@ -274,4 +274,22 @@ void omap_intc_restore_context(void) | |||
274 | } | 274 | } |
275 | /* MIRs are saved and restore with other PRCM registers */ | 275 | /* MIRs are saved and restore with other PRCM registers */ |
276 | } | 276 | } |
277 | |||
278 | void omap3_intc_suspend(void) | ||
279 | { | ||
280 | /* A pending interrupt would prevent OMAP from entering suspend */ | ||
281 | omap_ack_irq(0); | ||
282 | } | ||
283 | |||
284 | void omap3_intc_prepare_idle(void) | ||
285 | { | ||
286 | /* Disable autoidle as it can stall interrupt controller */ | ||
287 | intc_bank_write_reg(0, &irq_banks[0], INTC_SYSCONFIG); | ||
288 | } | ||
289 | |||
290 | void omap3_intc_resume_idle(void) | ||
291 | { | ||
292 | /* Re-enable autoidle */ | ||
293 | intc_bank_write_reg(1, &irq_banks[0], INTC_SYSCONFIG); | ||
294 | } | ||
277 | #endif /* CONFIG_ARCH_OMAP3 */ | 295 | #endif /* CONFIG_ARCH_OMAP3 */ |
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 459ef23ab8a8..3f59bd12cbbf 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
@@ -51,7 +51,7 @@ struct omap_mux_entry { | |||
51 | static unsigned long mux_phys; | 51 | static unsigned long mux_phys; |
52 | static void __iomem *mux_base; | 52 | static void __iomem *mux_base; |
53 | 53 | ||
54 | static inline u16 omap_mux_read(u16 reg) | 54 | u16 omap_mux_read(u16 reg) |
55 | { | 55 | { |
56 | if (cpu_is_omap24xx()) | 56 | if (cpu_is_omap24xx()) |
57 | return __raw_readb(mux_base + reg); | 57 | return __raw_readb(mux_base + reg); |
@@ -59,7 +59,7 @@ static inline u16 omap_mux_read(u16 reg) | |||
59 | return __raw_readw(mux_base + reg); | 59 | return __raw_readw(mux_base + reg); |
60 | } | 60 | } |
61 | 61 | ||
62 | static inline void omap_mux_write(u16 val, u16 reg) | 62 | void omap_mux_write(u16 val, u16 reg) |
63 | { | 63 | { |
64 | if (cpu_is_omap24xx()) | 64 | if (cpu_is_omap24xx()) |
65 | __raw_writeb(val, mux_base + reg); | 65 | __raw_writeb(val, mux_base + reg); |
@@ -67,6 +67,14 @@ static inline void omap_mux_write(u16 val, u16 reg) | |||
67 | __raw_writew(val, mux_base + reg); | 67 | __raw_writew(val, mux_base + reg); |
68 | } | 68 | } |
69 | 69 | ||
70 | void omap_mux_write_array(struct omap_board_mux *board_mux) | ||
71 | { | ||
72 | while (board_mux->reg_offset != OMAP_MUX_TERMINATOR) { | ||
73 | omap_mux_write(board_mux->value, board_mux->reg_offset); | ||
74 | board_mux++; | ||
75 | } | ||
76 | } | ||
77 | |||
70 | #if defined(CONFIG_ARCH_OMAP24XX) && defined(CONFIG_OMAP_MUX) | 78 | #if defined(CONFIG_ARCH_OMAP24XX) && defined(CONFIG_OMAP_MUX) |
71 | 79 | ||
72 | static struct omap_mux_cfg arch_mux_cfg; | 80 | static struct omap_mux_cfg arch_mux_cfg; |
@@ -833,14 +841,6 @@ static void __init omap_mux_set_cmdline_signals(void) | |||
833 | kfree(options); | 841 | kfree(options); |
834 | } | 842 | } |
835 | 843 | ||
836 | static void __init omap_mux_set_board_signals(struct omap_board_mux *board_mux) | ||
837 | { | ||
838 | while (board_mux->reg_offset != OMAP_MUX_TERMINATOR) { | ||
839 | omap_mux_write(board_mux->value, board_mux->reg_offset); | ||
840 | board_mux++; | ||
841 | } | ||
842 | } | ||
843 | |||
844 | static int __init omap_mux_copy_names(struct omap_mux *src, | 844 | static int __init omap_mux_copy_names(struct omap_mux *src, |
845 | struct omap_mux *dst) | 845 | struct omap_mux *dst) |
846 | { | 846 | { |
@@ -998,12 +998,15 @@ int __init omap_mux_init(u32 mux_pbase, u32 mux_size, | |||
998 | omap_mux_package_fixup(package_subset, superset); | 998 | omap_mux_package_fixup(package_subset, superset); |
999 | if (package_balls) | 999 | if (package_balls) |
1000 | omap_mux_package_init_balls(package_balls, superset); | 1000 | omap_mux_package_init_balls(package_balls, superset); |
1001 | omap_mux_set_cmdline_signals(); | ||
1002 | omap_mux_set_board_signals(board_mux); | ||
1003 | #endif | 1001 | #endif |
1004 | 1002 | ||
1005 | omap_mux_init_list(superset); | 1003 | omap_mux_init_list(superset); |
1006 | 1004 | ||
1005 | #ifdef CONFIG_OMAP_MUX | ||
1006 | omap_mux_set_cmdline_signals(); | ||
1007 | omap_mux_write_array(board_mux); | ||
1008 | #endif | ||
1009 | |||
1007 | return 0; | 1010 | return 0; |
1008 | } | 1011 | } |
1009 | 1012 | ||
diff --git a/arch/arm/mach-omap2/mux.h b/arch/arm/mach-omap2/mux.h index d8b4d5ad2278..f8c2e7a8f063 100644 --- a/arch/arm/mach-omap2/mux.h +++ b/arch/arm/mach-omap2/mux.h | |||
@@ -147,6 +147,30 @@ u16 omap_mux_get_gpio(int gpio); | |||
147 | void omap_mux_set_gpio(u16 val, int gpio); | 147 | void omap_mux_set_gpio(u16 val, int gpio); |
148 | 148 | ||
149 | /** | 149 | /** |
150 | * omap_mux_read() - read mux register | ||
151 | * @mux_offset: Offset of the mux register | ||
152 | * | ||
153 | */ | ||
154 | u16 omap_mux_read(u16 mux_offset); | ||
155 | |||
156 | /** | ||
157 | * omap_mux_write() - write mux register | ||
158 | * @val: New mux register value | ||
159 | * @mux_offset: Offset of the mux register | ||
160 | * | ||
161 | * This should be only needed for dynamic remuxing of non-gpio signals. | ||
162 | */ | ||
163 | void omap_mux_write(u16 val, u16 mux_offset); | ||
164 | |||
165 | /** | ||
166 | * omap_mux_write_array() - write an array of mux registers | ||
167 | * @board_mux: Array of mux registers terminated by MAP_MUX_TERMINATOR | ||
168 | * | ||
169 | * This should be only needed for dynamic remuxing of non-gpio signals. | ||
170 | */ | ||
171 | void omap_mux_write_array(struct omap_board_mux *board_mux); | ||
172 | |||
173 | /** | ||
150 | * omap3_mux_init() - initialize mux system with board specific set | 174 | * omap3_mux_init() - initialize mux system with board specific set |
151 | * @board_mux: Board specific mux table | 175 | * @board_mux: Board specific mux table |
152 | * @flags: OMAP package type used for the board | 176 | * @flags: OMAP package type used for the board |
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index d8c8545875b1..478ae585ca39 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
@@ -94,7 +94,8 @@ static int _update_sysc_cache(struct omap_hwmod *oh) | |||
94 | 94 | ||
95 | oh->_sysc_cache = omap_hwmod_readl(oh, oh->sysconfig->sysc_offs); | 95 | oh->_sysc_cache = omap_hwmod_readl(oh, oh->sysconfig->sysc_offs); |
96 | 96 | ||
97 | oh->_int_flags |= _HWMOD_SYSCONFIG_LOADED; | 97 | if (!(oh->sysconfig->sysc_flags & SYSC_NO_CACHE)) |
98 | oh->_int_flags |= _HWMOD_SYSCONFIG_LOADED; | ||
98 | 99 | ||
99 | return 0; | 100 | return 0; |
100 | } | 101 | } |
diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c index 860b755d2220..a0866268aa41 100644 --- a/arch/arm/mach-omap2/pm-debug.c +++ b/arch/arm/mach-omap2/pm-debug.c | |||
@@ -54,8 +54,6 @@ int omap2_pm_debug; | |||
54 | regs[reg_count++].val = \ | 54 | regs[reg_count++].val = \ |
55 | __raw_readl(OMAP2_L4_IO_ADDRESS(0x480fe000 + (off))) | 55 | __raw_readl(OMAP2_L4_IO_ADDRESS(0x480fe000 + (off))) |
56 | 56 | ||
57 | static int __init pm_dbg_init(void); | ||
58 | |||
59 | void omap2_pm_dump(int mode, int resume, unsigned int us) | 57 | void omap2_pm_dump(int mode, int resume, unsigned int us) |
60 | { | 58 | { |
61 | struct reg { | 59 | struct reg { |
@@ -167,6 +165,8 @@ struct dentry *pm_dbg_dir; | |||
167 | 165 | ||
168 | static int pm_dbg_init_done; | 166 | static int pm_dbg_init_done; |
169 | 167 | ||
168 | static int __init pm_dbg_init(void); | ||
169 | |||
170 | enum { | 170 | enum { |
171 | DEBUG_FILE_COUNTERS = 0, | 171 | DEBUG_FILE_COUNTERS = 0, |
172 | DEBUG_FILE_TIMERS, | 172 | DEBUG_FILE_TIMERS, |
@@ -488,9 +488,11 @@ int pm_dbg_regset_init(int reg_set) | |||
488 | 488 | ||
489 | static int pwrdm_suspend_get(void *data, u64 *val) | 489 | static int pwrdm_suspend_get(void *data, u64 *val) |
490 | { | 490 | { |
491 | *val = omap3_pm_get_suspend_state((struct powerdomain *)data); | 491 | int ret; |
492 | ret = omap3_pm_get_suspend_state((struct powerdomain *)data); | ||
493 | *val = ret; | ||
492 | 494 | ||
493 | if (*val >= 0) | 495 | if (ret >= 0) |
494 | return 0; | 496 | return 0; |
495 | return *val; | 497 | return *val; |
496 | } | 498 | } |
@@ -604,6 +606,4 @@ static int __init pm_dbg_init(void) | |||
604 | } | 606 | } |
605 | arch_initcall(pm_dbg_init); | 607 | arch_initcall(pm_dbg_init); |
606 | 608 | ||
607 | #else | ||
608 | void pm_dbg_update_time(struct powerdomain *pwrdm, int prev) {} | ||
609 | #endif | 609 | #endif |
diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h index 0bf345db7147..7a9c2d004511 100644 --- a/arch/arm/mach-omap2/pm.h +++ b/arch/arm/mach-omap2/pm.h | |||
@@ -32,12 +32,16 @@ extern struct omap_dm_timer *gptimer_wakeup; | |||
32 | #ifdef CONFIG_PM_DEBUG | 32 | #ifdef CONFIG_PM_DEBUG |
33 | extern void omap2_pm_dump(int mode, int resume, unsigned int us); | 33 | extern void omap2_pm_dump(int mode, int resume, unsigned int us); |
34 | extern int omap2_pm_debug; | 34 | extern int omap2_pm_debug; |
35 | #else | ||
36 | #define omap2_pm_dump(mode, resume, us) do {} while (0); | ||
37 | #define omap2_pm_debug 0 | ||
38 | #endif | ||
39 | |||
40 | #if defined(CONFIG_PM_DEBUG) && defined(CONFIG_DEBUG_FS) | ||
35 | extern void pm_dbg_update_time(struct powerdomain *pwrdm, int prev); | 41 | extern void pm_dbg_update_time(struct powerdomain *pwrdm, int prev); |
36 | extern int pm_dbg_regset_save(int reg_set); | 42 | extern int pm_dbg_regset_save(int reg_set); |
37 | extern int pm_dbg_regset_init(int reg_set); | 43 | extern int pm_dbg_regset_init(int reg_set); |
38 | #else | 44 | #else |
39 | #define omap2_pm_dump(mode, resume, us) do {} while (0); | ||
40 | #define omap2_pm_debug 0 | ||
41 | #define pm_dbg_update_time(pwrdm, prev) do {} while (0); | 45 | #define pm_dbg_update_time(pwrdm, prev) do {} while (0); |
42 | #define pm_dbg_regset_save(reg_set) do {} while (0); | 46 | #define pm_dbg_regset_save(reg_set) do {} while (0); |
43 | #define pm_dbg_regset_init(reg_set) do {} while (0); | 47 | #define pm_dbg_regset_init(reg_set) do {} while (0); |
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index c6cc809afb79..910a7acf542d 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/err.h> | 26 | #include <linux/err.h> |
27 | #include <linux/gpio.h> | 27 | #include <linux/gpio.h> |
28 | #include <linux/clk.h> | 28 | #include <linux/clk.h> |
29 | #include <linux/delay.h> | ||
29 | 30 | ||
30 | #include <plat/sram.h> | 31 | #include <plat/sram.h> |
31 | #include <plat/clockdomain.h> | 32 | #include <plat/clockdomain.h> |
@@ -126,7 +127,15 @@ static void omap3_core_save_context(void) | |||
126 | /* wait for the save to complete */ | 127 | /* wait for the save to complete */ |
127 | while (!(omap_ctrl_readl(OMAP343X_CONTROL_GENERAL_PURPOSE_STATUS) | 128 | while (!(omap_ctrl_readl(OMAP343X_CONTROL_GENERAL_PURPOSE_STATUS) |
128 | & PADCONF_SAVE_DONE)) | 129 | & PADCONF_SAVE_DONE)) |
129 | ; | 130 | udelay(1); |
131 | |||
132 | /* | ||
133 | * Force write last pad into memory, as this can fail in some | ||
134 | * cases according to erratas 1.157, 1.185 | ||
135 | */ | ||
136 | omap_ctrl_writel(omap_ctrl_readl(OMAP343X_PADCONF_ETK_D14), | ||
137 | OMAP343X_CONTROL_MEM_WKUP + 0x2a0); | ||
138 | |||
130 | /* Save the Interrupt controller context */ | 139 | /* Save the Interrupt controller context */ |
131 | omap_intc_save_context(); | 140 | omap_intc_save_context(); |
132 | /* Save the GPMC context */ | 141 | /* Save the GPMC context */ |
@@ -392,6 +401,7 @@ void omap_sram_idle(void) | |||
392 | prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN); | 401 | prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN); |
393 | omap3_enable_io_chain(); | 402 | omap3_enable_io_chain(); |
394 | } | 403 | } |
404 | omap3_intc_prepare_idle(); | ||
395 | 405 | ||
396 | /* | 406 | /* |
397 | * On EMU/HS devices ROM code restores a SRDC value | 407 | * On EMU/HS devices ROM code restores a SRDC value |
@@ -438,6 +448,7 @@ void omap_sram_idle(void) | |||
438 | OMAP3430_GR_MOD, | 448 | OMAP3430_GR_MOD, |
439 | OMAP3_PRM_VOLTCTRL_OFFSET); | 449 | OMAP3_PRM_VOLTCTRL_OFFSET); |
440 | } | 450 | } |
451 | omap3_intc_resume_idle(); | ||
441 | 452 | ||
442 | /* PER */ | 453 | /* PER */ |
443 | if (per_next_state < PWRDM_POWER_ON) { | 454 | if (per_next_state < PWRDM_POWER_ON) { |
@@ -578,6 +589,8 @@ static int omap3_pm_suspend(void) | |||
578 | } | 589 | } |
579 | 590 | ||
580 | omap_uart_prepare_suspend(); | 591 | omap_uart_prepare_suspend(); |
592 | omap3_intc_suspend(); | ||
593 | |||
581 | omap_sram_idle(); | 594 | omap_sram_idle(); |
582 | 595 | ||
583 | restore: | 596 | restore: |
@@ -835,6 +848,8 @@ static void __init prcm_setup_regs(void) | |||
835 | CM_AUTOIDLE); | 848 | CM_AUTOIDLE); |
836 | } | 849 | } |
837 | 850 | ||
851 | omap_ctrl_writel(OMAP3430_AUTOIDLE, OMAP2_CONTROL_SYSCONFIG); | ||
852 | |||
838 | /* | 853 | /* |
839 | * Set all plls to autoidle. This is needed until autoidle is | 854 | * Set all plls to autoidle. This is needed until autoidle is |
840 | * enabled by clockfw | 855 | * enabled by clockfw |
@@ -875,15 +890,23 @@ static void __init prcm_setup_regs(void) | |||
875 | prm_write_mod_reg(OMAP3430_IO_EN | OMAP3430_WKUP_EN, | 890 | prm_write_mod_reg(OMAP3430_IO_EN | OMAP3430_WKUP_EN, |
876 | OCP_MOD, OMAP3_PRM_IRQENABLE_MPU_OFFSET); | 891 | OCP_MOD, OMAP3_PRM_IRQENABLE_MPU_OFFSET); |
877 | 892 | ||
893 | /* Enable PM_WKEN to support DSS LPR */ | ||
894 | prm_write_mod_reg(OMAP3430_PM_WKEN_DSS_EN_DSS, | ||
895 | OMAP3430_DSS_MOD, PM_WKEN); | ||
896 | |||
878 | /* Enable wakeups in PER */ | 897 | /* Enable wakeups in PER */ |
879 | prm_write_mod_reg(OMAP3430_EN_GPIO2 | OMAP3430_EN_GPIO3 | | 898 | prm_write_mod_reg(OMAP3430_EN_GPIO2 | OMAP3430_EN_GPIO3 | |
880 | OMAP3430_EN_GPIO4 | OMAP3430_EN_GPIO5 | | 899 | OMAP3430_EN_GPIO4 | OMAP3430_EN_GPIO5 | |
881 | OMAP3430_EN_GPIO6 | OMAP3430_EN_UART3, | 900 | OMAP3430_EN_GPIO6 | OMAP3430_EN_UART3 | |
901 | OMAP3430_EN_MCBSP2 | OMAP3430_EN_MCBSP3 | | ||
902 | OMAP3430_EN_MCBSP4, | ||
882 | OMAP3430_PER_MOD, PM_WKEN); | 903 | OMAP3430_PER_MOD, PM_WKEN); |
883 | /* and allow them to wake up MPU */ | 904 | /* and allow them to wake up MPU */ |
884 | prm_write_mod_reg(OMAP3430_GRPSEL_GPIO2 | OMAP3430_EN_GPIO3 | | 905 | prm_write_mod_reg(OMAP3430_GRPSEL_GPIO2 | OMAP3430_EN_GPIO3 | |
885 | OMAP3430_GRPSEL_GPIO4 | OMAP3430_EN_GPIO5 | | 906 | OMAP3430_GRPSEL_GPIO4 | OMAP3430_EN_GPIO5 | |
886 | OMAP3430_GRPSEL_GPIO6 | OMAP3430_EN_UART3, | 907 | OMAP3430_GRPSEL_GPIO6 | OMAP3430_EN_UART3 | |
908 | OMAP3430_EN_MCBSP2 | OMAP3430_EN_MCBSP3 | | ||
909 | OMAP3430_EN_MCBSP4, | ||
887 | OMAP3430_PER_MOD, OMAP3430_PM_MPUGRPSEL); | 910 | OMAP3430_PER_MOD, OMAP3430_PM_MPUGRPSEL); |
888 | 911 | ||
889 | /* Don't attach IVA interrupts */ | 912 | /* Don't attach IVA interrupts */ |
@@ -904,24 +927,6 @@ static void __init prcm_setup_regs(void) | |||
904 | /* Clear any pending PRCM interrupts */ | 927 | /* Clear any pending PRCM interrupts */ |
905 | prm_write_mod_reg(0, OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET); | 928 | prm_write_mod_reg(0, OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET); |
906 | 929 | ||
907 | /* Don't attach IVA interrupts */ | ||
908 | prm_write_mod_reg(0, WKUP_MOD, OMAP3430_PM_IVAGRPSEL); | ||
909 | prm_write_mod_reg(0, CORE_MOD, OMAP3430_PM_IVAGRPSEL1); | ||
910 | prm_write_mod_reg(0, CORE_MOD, OMAP3430ES2_PM_IVAGRPSEL3); | ||
911 | prm_write_mod_reg(0, OMAP3430_PER_MOD, OMAP3430_PM_IVAGRPSEL); | ||
912 | |||
913 | /* Clear any pending 'reset' flags */ | ||
914 | prm_write_mod_reg(0xffffffff, MPU_MOD, RM_RSTST); | ||
915 | prm_write_mod_reg(0xffffffff, CORE_MOD, RM_RSTST); | ||
916 | prm_write_mod_reg(0xffffffff, OMAP3430_PER_MOD, RM_RSTST); | ||
917 | prm_write_mod_reg(0xffffffff, OMAP3430_EMU_MOD, RM_RSTST); | ||
918 | prm_write_mod_reg(0xffffffff, OMAP3430_NEON_MOD, RM_RSTST); | ||
919 | prm_write_mod_reg(0xffffffff, OMAP3430_DSS_MOD, RM_RSTST); | ||
920 | prm_write_mod_reg(0xffffffff, OMAP3430ES2_USBHOST_MOD, RM_RSTST); | ||
921 | |||
922 | /* Clear any pending PRCM interrupts */ | ||
923 | prm_write_mod_reg(0, OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET); | ||
924 | |||
925 | omap3_iva_idle(); | 930 | omap3_iva_idle(); |
926 | omap3_d2d_idle(); | 931 | omap3_d2d_idle(); |
927 | } | 932 | } |
diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c index 3ea8177ffb25..cf466ea1dffc 100644 --- a/arch/arm/mach-omap2/prcm.c +++ b/arch/arm/mach-omap2/prcm.c | |||
@@ -44,7 +44,6 @@ struct omap3_prcm_regs { | |||
44 | u32 iva2_cm_clksel2; | 44 | u32 iva2_cm_clksel2; |
45 | u32 cm_sysconfig; | 45 | u32 cm_sysconfig; |
46 | u32 sgx_cm_clksel; | 46 | u32 sgx_cm_clksel; |
47 | u32 wkup_cm_clksel; | ||
48 | u32 dss_cm_clksel; | 47 | u32 dss_cm_clksel; |
49 | u32 cam_cm_clksel; | 48 | u32 cam_cm_clksel; |
50 | u32 per_cm_clksel; | 49 | u32 per_cm_clksel; |
@@ -53,7 +52,6 @@ struct omap3_prcm_regs { | |||
53 | u32 pll_cm_autoidle2; | 52 | u32 pll_cm_autoidle2; |
54 | u32 pll_cm_clksel4; | 53 | u32 pll_cm_clksel4; |
55 | u32 pll_cm_clksel5; | 54 | u32 pll_cm_clksel5; |
56 | u32 pll_cm_clken; | ||
57 | u32 pll_cm_clken2; | 55 | u32 pll_cm_clken2; |
58 | u32 cm_polctrl; | 56 | u32 cm_polctrl; |
59 | u32 iva2_cm_fclken; | 57 | u32 iva2_cm_fclken; |
@@ -77,7 +75,6 @@ struct omap3_prcm_regs { | |||
77 | u32 usbhost_cm_iclken; | 75 | u32 usbhost_cm_iclken; |
78 | u32 iva2_cm_autiidle2; | 76 | u32 iva2_cm_autiidle2; |
79 | u32 mpu_cm_autoidle2; | 77 | u32 mpu_cm_autoidle2; |
80 | u32 pll_cm_autoidle; | ||
81 | u32 iva2_cm_clkstctrl; | 78 | u32 iva2_cm_clkstctrl; |
82 | u32 mpu_cm_clkstctrl; | 79 | u32 mpu_cm_clkstctrl; |
83 | u32 core_cm_clkstctrl; | 80 | u32 core_cm_clkstctrl; |
@@ -274,7 +271,6 @@ void omap3_prcm_save_context(void) | |||
274 | prcm_context.cm_sysconfig = __raw_readl(OMAP3430_CM_SYSCONFIG); | 271 | prcm_context.cm_sysconfig = __raw_readl(OMAP3430_CM_SYSCONFIG); |
275 | prcm_context.sgx_cm_clksel = | 272 | prcm_context.sgx_cm_clksel = |
276 | cm_read_mod_reg(OMAP3430ES2_SGX_MOD, CM_CLKSEL); | 273 | cm_read_mod_reg(OMAP3430ES2_SGX_MOD, CM_CLKSEL); |
277 | prcm_context.wkup_cm_clksel = cm_read_mod_reg(WKUP_MOD, CM_CLKSEL); | ||
278 | prcm_context.dss_cm_clksel = | 274 | prcm_context.dss_cm_clksel = |
279 | cm_read_mod_reg(OMAP3430_DSS_MOD, CM_CLKSEL); | 275 | cm_read_mod_reg(OMAP3430_DSS_MOD, CM_CLKSEL); |
280 | prcm_context.cam_cm_clksel = | 276 | prcm_context.cam_cm_clksel = |
@@ -291,8 +287,6 @@ void omap3_prcm_save_context(void) | |||
291 | cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL4); | 287 | cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL4); |
292 | prcm_context.pll_cm_clksel5 = | 288 | prcm_context.pll_cm_clksel5 = |
293 | cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL5); | 289 | cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL5); |
294 | prcm_context.pll_cm_clken = | ||
295 | cm_read_mod_reg(PLL_MOD, CM_CLKEN); | ||
296 | prcm_context.pll_cm_clken2 = | 290 | prcm_context.pll_cm_clken2 = |
297 | cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKEN2); | 291 | cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKEN2); |
298 | prcm_context.cm_polctrl = __raw_readl(OMAP3430_CM_POLCTRL); | 292 | prcm_context.cm_polctrl = __raw_readl(OMAP3430_CM_POLCTRL); |
@@ -338,8 +332,6 @@ void omap3_prcm_save_context(void) | |||
338 | cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_AUTOIDLE2); | 332 | cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_AUTOIDLE2); |
339 | prcm_context.mpu_cm_autoidle2 = | 333 | prcm_context.mpu_cm_autoidle2 = |
340 | cm_read_mod_reg(MPU_MOD, CM_AUTOIDLE2); | 334 | cm_read_mod_reg(MPU_MOD, CM_AUTOIDLE2); |
341 | prcm_context.pll_cm_autoidle = | ||
342 | cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE); | ||
343 | prcm_context.iva2_cm_clkstctrl = | 335 | prcm_context.iva2_cm_clkstctrl = |
344 | cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_CLKSTCTRL); | 336 | cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_CLKSTCTRL); |
345 | prcm_context.mpu_cm_clkstctrl = | 337 | prcm_context.mpu_cm_clkstctrl = |
@@ -431,7 +423,6 @@ void omap3_prcm_restore_context(void) | |||
431 | __raw_writel(prcm_context.cm_sysconfig, OMAP3430_CM_SYSCONFIG); | 423 | __raw_writel(prcm_context.cm_sysconfig, OMAP3430_CM_SYSCONFIG); |
432 | cm_write_mod_reg(prcm_context.sgx_cm_clksel, OMAP3430ES2_SGX_MOD, | 424 | cm_write_mod_reg(prcm_context.sgx_cm_clksel, OMAP3430ES2_SGX_MOD, |
433 | CM_CLKSEL); | 425 | CM_CLKSEL); |
434 | cm_write_mod_reg(prcm_context.wkup_cm_clksel, WKUP_MOD, CM_CLKSEL); | ||
435 | cm_write_mod_reg(prcm_context.dss_cm_clksel, OMAP3430_DSS_MOD, | 426 | cm_write_mod_reg(prcm_context.dss_cm_clksel, OMAP3430_DSS_MOD, |
436 | CM_CLKSEL); | 427 | CM_CLKSEL); |
437 | cm_write_mod_reg(prcm_context.cam_cm_clksel, OMAP3430_CAM_MOD, | 428 | cm_write_mod_reg(prcm_context.cam_cm_clksel, OMAP3430_CAM_MOD, |
@@ -448,7 +439,6 @@ void omap3_prcm_restore_context(void) | |||
448 | OMAP3430ES2_CM_CLKSEL4); | 439 | OMAP3430ES2_CM_CLKSEL4); |
449 | cm_write_mod_reg(prcm_context.pll_cm_clksel5, PLL_MOD, | 440 | cm_write_mod_reg(prcm_context.pll_cm_clksel5, PLL_MOD, |
450 | OMAP3430ES2_CM_CLKSEL5); | 441 | OMAP3430ES2_CM_CLKSEL5); |
451 | cm_write_mod_reg(prcm_context.pll_cm_clken, PLL_MOD, CM_CLKEN); | ||
452 | cm_write_mod_reg(prcm_context.pll_cm_clken2, PLL_MOD, | 442 | cm_write_mod_reg(prcm_context.pll_cm_clken2, PLL_MOD, |
453 | OMAP3430ES2_CM_CLKEN2); | 443 | OMAP3430ES2_CM_CLKEN2); |
454 | __raw_writel(prcm_context.cm_polctrl, OMAP3430_CM_POLCTRL); | 444 | __raw_writel(prcm_context.cm_polctrl, OMAP3430_CM_POLCTRL); |
@@ -487,7 +477,6 @@ void omap3_prcm_restore_context(void) | |||
487 | cm_write_mod_reg(prcm_context.iva2_cm_autiidle2, OMAP3430_IVA2_MOD, | 477 | cm_write_mod_reg(prcm_context.iva2_cm_autiidle2, OMAP3430_IVA2_MOD, |
488 | CM_AUTOIDLE2); | 478 | CM_AUTOIDLE2); |
489 | cm_write_mod_reg(prcm_context.mpu_cm_autoidle2, MPU_MOD, CM_AUTOIDLE2); | 479 | cm_write_mod_reg(prcm_context.mpu_cm_autoidle2, MPU_MOD, CM_AUTOIDLE2); |
490 | cm_write_mod_reg(prcm_context.pll_cm_autoidle, PLL_MOD, CM_AUTOIDLE); | ||
491 | cm_write_mod_reg(prcm_context.iva2_cm_clkstctrl, OMAP3430_IVA2_MOD, | 480 | cm_write_mod_reg(prcm_context.iva2_cm_clkstctrl, OMAP3430_IVA2_MOD, |
492 | CM_CLKSTCTRL); | 481 | CM_CLKSTCTRL); |
493 | cm_write_mod_reg(prcm_context.mpu_cm_clkstctrl, MPU_MOD, CM_CLKSTCTRL); | 482 | cm_write_mod_reg(prcm_context.mpu_cm_clkstctrl, MPU_MOD, CM_CLKSTCTRL); |
diff --git a/arch/arm/mach-omap2/prm.h b/arch/arm/mach-omap2/prm.h index ea050ce188a7..40f006285163 100644 --- a/arch/arm/mach-omap2/prm.h +++ b/arch/arm/mach-omap2/prm.h | |||
@@ -24,6 +24,8 @@ | |||
24 | OMAP2_L4_IO_ADDRESS(OMAP3430_PRM_BASE + (module) + (reg)) | 24 | OMAP2_L4_IO_ADDRESS(OMAP3430_PRM_BASE + (module) + (reg)) |
25 | #define OMAP44XX_PRM_REGADDR(module, reg) \ | 25 | #define OMAP44XX_PRM_REGADDR(module, reg) \ |
26 | OMAP2_L4_IO_ADDRESS(OMAP4430_PRM_BASE + (module) + (reg)) | 26 | OMAP2_L4_IO_ADDRESS(OMAP4430_PRM_BASE + (module) + (reg)) |
27 | #define OMAP44XX_CHIRONSS_REGADDR(module, reg) \ | ||
28 | OMAP2_L4_IO_ADDRESS(OMAP4430_CHIRONSS_BASE + (module) + (reg)) | ||
27 | 29 | ||
28 | #include "prm44xx.h" | 30 | #include "prm44xx.h" |
29 | 31 | ||
diff --git a/arch/arm/mach-omap2/prm44xx.h b/arch/arm/mach-omap2/prm44xx.h index 89be97f0589d..adb2558bb121 100644 --- a/arch/arm/mach-omap2/prm44xx.h +++ b/arch/arm/mach-omap2/prm44xx.h | |||
@@ -386,26 +386,26 @@ | |||
386 | 386 | ||
387 | 387 | ||
388 | /* CHIRON_PRCM.CHIRONSS_OCP_SOCKET_PRCM register offsets */ | 388 | /* CHIRON_PRCM.CHIRONSS_OCP_SOCKET_PRCM register offsets */ |
389 | #define OMAP4430_REVISION_PRCM OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_OCP_SOCKET_PRCM_MOD, 0x0000) | 389 | #define OMAP4430_REVISION_PRCM OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_OCP_SOCKET_PRCM_MOD, 0x0000) |
390 | 390 | ||
391 | /* CHIRON_PRCM.CHIRONSS_DEVICE_PRM register offsets */ | 391 | /* CHIRON_PRCM.CHIRONSS_DEVICE_PRM register offsets */ |
392 | #define OMAP4430_CHIRON_PRCM_PRM_RSTST OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_DEVICE_PRM_MOD, 0x0000) | 392 | #define OMAP4430_CHIRON_PRCM_PRM_RSTST OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_DEVICE_PRM_MOD, 0x0000) |
393 | 393 | ||
394 | /* CHIRON_PRCM.CHIRONSS_CPU0 register offsets */ | 394 | /* CHIRON_PRCM.CHIRONSS_CPU0 register offsets */ |
395 | #define OMAP4430_PM_PDA_CPU0_PWRSTCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0000) | 395 | #define OMAP4430_PM_PDA_CPU0_PWRSTCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0000) |
396 | #define OMAP4430_PM_PDA_CPU0_PWRSTST OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0004) | 396 | #define OMAP4430_PM_PDA_CPU0_PWRSTST OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0004) |
397 | #define OMAP4430_RM_PDA_CPU0_CPU0_CONTEXT OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0008) | 397 | #define OMAP4430_RM_PDA_CPU0_CPU0_CONTEXT OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0008) |
398 | #define OMAP4430_RM_PDA_CPU0_CPU0_RSTCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x000c) | 398 | #define OMAP4430_RM_PDA_CPU0_CPU0_RSTCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x000c) |
399 | #define OMAP4430_RM_PDA_CPU0_CPU0_RSTST OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0010) | 399 | #define OMAP4430_RM_PDA_CPU0_CPU0_RSTST OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0010) |
400 | #define OMAP4430_CM_PDA_CPU0_CPU0_CLKCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0014) | 400 | #define OMAP4430_CM_PDA_CPU0_CPU0_CLKCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0014) |
401 | #define OMAP4430_CM_PDA_CPU0_CLKSTCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0018) | 401 | #define OMAP4430_CM_PDA_CPU0_CLKSTCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0018) |
402 | 402 | ||
403 | /* CHIRON_PRCM.CHIRONSS_CPU1 register offsets */ | 403 | /* CHIRON_PRCM.CHIRONSS_CPU1 register offsets */ |
404 | #define OMAP4430_PM_PDA_CPU1_PWRSTCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0000) | 404 | #define OMAP4430_PM_PDA_CPU1_PWRSTCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0000) |
405 | #define OMAP4430_PM_PDA_CPU1_PWRSTST OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0004) | 405 | #define OMAP4430_PM_PDA_CPU1_PWRSTST OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0004) |
406 | #define OMAP4430_RM_PDA_CPU1_CPU1_CONTEXT OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0008) | 406 | #define OMAP4430_RM_PDA_CPU1_CPU1_CONTEXT OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0008) |
407 | #define OMAP4430_RM_PDA_CPU1_CPU1_RSTCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x000c) | 407 | #define OMAP4430_RM_PDA_CPU1_CPU1_RSTCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x000c) |
408 | #define OMAP4430_RM_PDA_CPU1_CPU1_RSTST OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0010) | 408 | #define OMAP4430_RM_PDA_CPU1_CPU1_RSTST OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0010) |
409 | #define OMAP4430_CM_PDA_CPU1_CPU1_CLKCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0014) | 409 | #define OMAP4430_CM_PDA_CPU1_CPU1_CLKCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0014) |
410 | #define OMAP4430_CM_PDA_CPU1_CLKSTCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0018) | 410 | #define OMAP4430_CM_PDA_CPU1_CLKSTCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0018) |
411 | #endif | 411 | #endif |
diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-omap2/sleep34xx.S index 15268f8b61de..c3626ea48143 100644 --- a/arch/arm/mach-omap2/sleep34xx.S +++ b/arch/arm/mach-omap2/sleep34xx.S | |||
@@ -245,7 +245,8 @@ restore: | |||
245 | mov r1, #0 @ set task id for ROM code in r1 | 245 | mov r1, #0 @ set task id for ROM code in r1 |
246 | mov r2, #4 @ set some flags in r2, r6 | 246 | mov r2, #4 @ set some flags in r2, r6 |
247 | mov r6, #0xff | 247 | mov r6, #0xff |
248 | adr r3, write_aux_control_params @ r3 points to parameters | 248 | ldr r4, scratchpad_base |
249 | ldr r3, [r4, #0xBC] @ r3 points to parameters | ||
249 | mcr p15, 0, r0, c7, c10, 4 @ data write barrier | 250 | mcr p15, 0, r0, c7, c10, 4 @ data write barrier |
250 | mcr p15, 0, r0, c7, c10, 5 @ data memory barrier | 251 | mcr p15, 0, r0, c7, c10, 5 @ data memory barrier |
251 | .word 0xE1600071 @ call SMI monitor (smi #1) | 252 | .word 0xE1600071 @ call SMI monitor (smi #1) |
@@ -253,14 +254,14 @@ restore: | |||
253 | b logic_l1_restore | 254 | b logic_l1_restore |
254 | l2_inv_api_params: | 255 | l2_inv_api_params: |
255 | .word 0x1, 0x00 | 256 | .word 0x1, 0x00 |
256 | write_aux_control_params: | ||
257 | .word 0x1, 0x72 | ||
258 | l2_inv_gp: | 257 | l2_inv_gp: |
259 | /* Execute smi to invalidate L2 cache */ | 258 | /* Execute smi to invalidate L2 cache */ |
260 | mov r12, #0x1 @ set up to invalide L2 | 259 | mov r12, #0x1 @ set up to invalide L2 |
261 | smi: .word 0xE1600070 @ Call SMI monitor (smieq) | 260 | smi: .word 0xE1600070 @ Call SMI monitor (smieq) |
262 | /* Write to Aux control register to set some bits */ | 261 | /* Write to Aux control register to set some bits */ |
263 | mov r0, #0x72 | 262 | ldr r4, scratchpad_base |
263 | ldr r3, [r4,#0xBC] | ||
264 | ldr r0, [r3,#4] | ||
264 | mov r12, #0x3 | 265 | mov r12, #0x3 |
265 | .word 0xE1600070 @ Call SMI monitor (smieq) | 266 | .word 0xE1600070 @ Call SMI monitor (smieq) |
266 | logic_l1_restore: | 267 | logic_l1_restore: |
@@ -271,6 +272,7 @@ logic_l1_restore: | |||
271 | 272 | ||
272 | ldr r4, scratchpad_base | 273 | ldr r4, scratchpad_base |
273 | ldr r3, [r4,#0xBC] | 274 | ldr r3, [r4,#0xBC] |
275 | adds r3, r3, #8 | ||
274 | ldmia r3!, {r4-r6} | 276 | ldmia r3!, {r4-r6} |
275 | mov sp, r4 | 277 | mov sp, r4 |
276 | msr spsr_cxsf, r5 | 278 | msr spsr_cxsf, r5 |
@@ -387,6 +389,9 @@ usettbr0: | |||
387 | save_context_wfi: | 389 | save_context_wfi: |
388 | /*b save_context_wfi*/ @ enable to debug save code | 390 | /*b save_context_wfi*/ @ enable to debug save code |
389 | mov r8, r0 /* Store SDRAM address in r8 */ | 391 | mov r8, r0 /* Store SDRAM address in r8 */ |
392 | mrc p15, 0, r5, c1, c0, 1 @ Read Auxiliary Control Register | ||
393 | mov r4, #0x1 @ Number of parameters for restore call | ||
394 | stmia r8!, {r4-r5} | ||
390 | /* Check what that target sleep state is:stored in r1*/ | 395 | /* Check what that target sleep state is:stored in r1*/ |
391 | /* 1 - Only L1 and logic lost */ | 396 | /* 1 - Only L1 and logic lost */ |
392 | /* 2 - Only L2 lost */ | 397 | /* 2 - Only L2 lost */ |
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c index b31ca4cef365..8f159db4d08a 100644 --- a/arch/arm/mach-orion5x/dns323-setup.c +++ b/arch/arm/mach-orion5x/dns323-setup.c | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/delay.h> | ||
15 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
16 | #include <linux/pci.h> | 17 | #include <linux/pci.h> |
17 | #include <linux/irq.h> | 18 | #include <linux/irq.h> |
@@ -32,6 +33,7 @@ | |||
32 | 33 | ||
33 | #define DNS323_GPIO_LED_RIGHT_AMBER 1 | 34 | #define DNS323_GPIO_LED_RIGHT_AMBER 1 |
34 | #define DNS323_GPIO_LED_LEFT_AMBER 2 | 35 | #define DNS323_GPIO_LED_LEFT_AMBER 2 |
36 | #define DNS323_GPIO_SYSTEM_UP 3 | ||
35 | #define DNS323_GPIO_LED_POWER 5 | 37 | #define DNS323_GPIO_LED_POWER 5 |
36 | #define DNS323_GPIO_OVERTEMP 6 | 38 | #define DNS323_GPIO_OVERTEMP 6 |
37 | #define DNS323_GPIO_RTC 7 | 39 | #define DNS323_GPIO_RTC 7 |
@@ -239,7 +241,7 @@ static struct gpio_led dns323_leds[] = { | |||
239 | { | 241 | { |
240 | .name = "power:blue", | 242 | .name = "power:blue", |
241 | .gpio = DNS323_GPIO_LED_POWER, | 243 | .gpio = DNS323_GPIO_LED_POWER, |
242 | .active_low = 1, | 244 | .default_state = LEDS_GPIO_DEFSTATE_ON, |
243 | }, { | 245 | }, { |
244 | .name = "right:amber", | 246 | .name = "right:amber", |
245 | .gpio = DNS323_GPIO_LED_RIGHT_AMBER, | 247 | .gpio = DNS323_GPIO_LED_RIGHT_AMBER, |
@@ -334,7 +336,7 @@ static struct orion5x_mpp_mode dns323_mv88f5182_mpp_modes[] __initdata = { | |||
334 | { 0, MPP_UNUSED }, | 336 | { 0, MPP_UNUSED }, |
335 | { 1, MPP_GPIO }, /* right amber LED (sata ch0) */ | 337 | { 1, MPP_GPIO }, /* right amber LED (sata ch0) */ |
336 | { 2, MPP_GPIO }, /* left amber LED (sata ch1) */ | 338 | { 2, MPP_GPIO }, /* left amber LED (sata ch1) */ |
337 | { 3, MPP_UNUSED }, | 339 | { 3, MPP_GPIO }, /* system up flag */ |
338 | { 4, MPP_GPIO }, /* power button LED */ | 340 | { 4, MPP_GPIO }, /* power button LED */ |
339 | { 5, MPP_GPIO }, /* power button LED */ | 341 | { 5, MPP_GPIO }, /* power button LED */ |
340 | { 6, MPP_GPIO }, /* GMT G751-2f overtemp */ | 342 | { 6, MPP_GPIO }, /* GMT G751-2f overtemp */ |
@@ -372,13 +374,23 @@ static struct i2c_board_info __initdata dns323_i2c_devices[] = { | |||
372 | }, | 374 | }, |
373 | }; | 375 | }; |
374 | 376 | ||
375 | /* DNS-323 specific power off method */ | 377 | /* DNS-323 rev. A specific power off method */ |
376 | static void dns323_power_off(void) | 378 | static void dns323a_power_off(void) |
377 | { | 379 | { |
378 | pr_info("%s: triggering power-off...\n", __func__); | 380 | pr_info("%s: triggering power-off...\n", __func__); |
379 | gpio_set_value(DNS323_GPIO_POWER_OFF, 1); | 381 | gpio_set_value(DNS323_GPIO_POWER_OFF, 1); |
380 | } | 382 | } |
381 | 383 | ||
384 | /* DNS-323 rev B specific power off method */ | ||
385 | static void dns323b_power_off(void) | ||
386 | { | ||
387 | pr_info("%s: triggering power-off...\n", __func__); | ||
388 | /* Pin has to be changed to 1 and back to 0 to do actual power off. */ | ||
389 | gpio_set_value(DNS323_GPIO_POWER_OFF, 1); | ||
390 | mdelay(100); | ||
391 | gpio_set_value(DNS323_GPIO_POWER_OFF, 0); | ||
392 | } | ||
393 | |||
382 | static void __init dns323_init(void) | 394 | static void __init dns323_init(void) |
383 | { | 395 | { |
384 | /* Setup basic Orion functions. Need to be called early. */ | 396 | /* Setup basic Orion functions. Need to be called early. */ |
@@ -424,11 +436,20 @@ static void __init dns323_init(void) | |||
424 | if (dns323_dev_id() == MV88F5182_DEV_ID) | 436 | if (dns323_dev_id() == MV88F5182_DEV_ID) |
425 | orion5x_sata_init(&dns323_sata_data); | 437 | orion5x_sata_init(&dns323_sata_data); |
426 | 438 | ||
427 | /* register dns323 specific power-off method */ | 439 | /* The 5182 has flag to indicate the system is up. Without this flag |
440 | * set, power LED will flash and cannot be controlled via leds-gpio. | ||
441 | */ | ||
442 | if (dns323_dev_id() == MV88F5182_DEV_ID) | ||
443 | gpio_set_value(DNS323_GPIO_SYSTEM_UP, 1); | ||
444 | |||
445 | /* Register dns323 specific power-off method */ | ||
428 | if (gpio_request(DNS323_GPIO_POWER_OFF, "POWEROFF") != 0 || | 446 | if (gpio_request(DNS323_GPIO_POWER_OFF, "POWEROFF") != 0 || |
429 | gpio_direction_output(DNS323_GPIO_POWER_OFF, 0) != 0) | 447 | gpio_direction_output(DNS323_GPIO_POWER_OFF, 0) != 0) |
430 | pr_err("DNS323: failed to setup power-off GPIO\n"); | 448 | pr_err("DNS323: failed to setup power-off GPIO\n"); |
431 | pm_power_off = dns323_power_off; | 449 | if (dns323_dev_id() == MV88F5182_DEV_ID) |
450 | pm_power_off = dns323b_power_off; | ||
451 | else | ||
452 | pm_power_off = dns323a_power_off; | ||
432 | } | 453 | } |
433 | 454 | ||
434 | /* Warning: D-Link uses a wrong mach-type (=526) in their bootloader */ | 455 | /* Warning: D-Link uses a wrong mach-type (=526) in their bootloader */ |
diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c index 1b4ad9d5e2eb..cb0feca193d4 100644 --- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c +++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c | |||
@@ -15,6 +15,9 @@ | |||
15 | #include <linux/mtd/physmap.h> | 15 | #include <linux/mtd/physmap.h> |
16 | #include <linux/mv643xx_eth.h> | 16 | #include <linux/mv643xx_eth.h> |
17 | #include <linux/ethtool.h> | 17 | #include <linux/ethtool.h> |
18 | #include <linux/leds.h> | ||
19 | #include <linux/gpio_keys.h> | ||
20 | #include <linux/input.h> | ||
18 | #include <net/dsa.h> | 21 | #include <net/dsa.h> |
19 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
20 | #include <asm/gpio.h> | 23 | #include <asm/gpio.h> |
@@ -24,6 +27,80 @@ | |||
24 | #include "common.h" | 27 | #include "common.h" |
25 | #include "mpp.h" | 28 | #include "mpp.h" |
26 | 29 | ||
30 | /* | ||
31 | * LEDs attached to GPIO | ||
32 | */ | ||
33 | static struct gpio_led wrt350n_v2_led_pins[] = { | ||
34 | { | ||
35 | .name = "wrt350nv2:green:power", | ||
36 | .gpio = 0, | ||
37 | .active_low = 1, | ||
38 | }, { | ||
39 | .name = "wrt350nv2:green:security", | ||
40 | .gpio = 1, | ||
41 | .active_low = 1, | ||
42 | }, { | ||
43 | .name = "wrt350nv2:orange:power", | ||
44 | .gpio = 5, | ||
45 | .active_low = 1, | ||
46 | }, { | ||
47 | .name = "wrt350nv2:green:usb", | ||
48 | .gpio = 6, | ||
49 | .active_low = 1, | ||
50 | }, { | ||
51 | .name = "wrt350nv2:green:wireless", | ||
52 | .gpio = 7, | ||
53 | .active_low = 1, | ||
54 | }, | ||
55 | }; | ||
56 | |||
57 | static struct gpio_led_platform_data wrt350n_v2_led_data = { | ||
58 | .leds = wrt350n_v2_led_pins, | ||
59 | .num_leds = ARRAY_SIZE(wrt350n_v2_led_pins), | ||
60 | }; | ||
61 | |||
62 | static struct platform_device wrt350n_v2_leds = { | ||
63 | .name = "leds-gpio", | ||
64 | .id = -1, | ||
65 | .dev = { | ||
66 | .platform_data = &wrt350n_v2_led_data, | ||
67 | }, | ||
68 | }; | ||
69 | |||
70 | /* | ||
71 | * Buttons attached to GPIO | ||
72 | */ | ||
73 | static struct gpio_keys_button wrt350n_v2_buttons[] = { | ||
74 | { | ||
75 | .code = KEY_RESTART, | ||
76 | .gpio = 3, | ||
77 | .desc = "Reset Button", | ||
78 | .active_low = 1, | ||
79 | }, { | ||
80 | .code = KEY_WLAN, | ||
81 | .gpio = 2, | ||
82 | .desc = "WPS Button", | ||
83 | .active_low = 1, | ||
84 | }, | ||
85 | }; | ||
86 | |||
87 | static struct gpio_keys_platform_data wrt350n_v2_button_data = { | ||
88 | .buttons = wrt350n_v2_buttons, | ||
89 | .nbuttons = ARRAY_SIZE(wrt350n_v2_buttons), | ||
90 | }; | ||
91 | |||
92 | static struct platform_device wrt350n_v2_button_device = { | ||
93 | .name = "gpio-keys", | ||
94 | .id = -1, | ||
95 | .num_resources = 0, | ||
96 | .dev = { | ||
97 | .platform_data = &wrt350n_v2_button_data, | ||
98 | }, | ||
99 | }; | ||
100 | |||
101 | /* | ||
102 | * General setup | ||
103 | */ | ||
27 | static struct orion5x_mpp_mode wrt350n_v2_mpp_modes[] __initdata = { | 104 | static struct orion5x_mpp_mode wrt350n_v2_mpp_modes[] __initdata = { |
28 | { 0, MPP_GPIO }, /* Power LED green (0=on) */ | 105 | { 0, MPP_GPIO }, /* Power LED green (0=on) */ |
29 | { 1, MPP_GPIO }, /* Security LED (0=on) */ | 106 | { 1, MPP_GPIO }, /* Security LED (0=on) */ |
@@ -140,6 +217,8 @@ static void __init wrt350n_v2_init(void) | |||
140 | orion5x_setup_dev_boot_win(WRT350N_V2_NOR_BOOT_BASE, | 217 | orion5x_setup_dev_boot_win(WRT350N_V2_NOR_BOOT_BASE, |
141 | WRT350N_V2_NOR_BOOT_SIZE); | 218 | WRT350N_V2_NOR_BOOT_SIZE); |
142 | platform_device_register(&wrt350n_v2_nor_flash); | 219 | platform_device_register(&wrt350n_v2_nor_flash); |
220 | platform_device_register(&wrt350n_v2_leds); | ||
221 | platform_device_register(&wrt350n_v2_button_device); | ||
143 | } | 222 | } |
144 | 223 | ||
145 | static int __init wrt350n_v2_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | 224 | static int __init wrt350n_v2_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) |
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index 74446cf8ae69..da3156d8690b 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c | |||
@@ -457,6 +457,7 @@ static struct pxaficp_platform_data corgi_ficp_platform_data = { | |||
457 | * USB Device Controller | 457 | * USB Device Controller |
458 | */ | 458 | */ |
459 | static struct pxa2xx_udc_mach_info udc_info __initdata = { | 459 | static struct pxa2xx_udc_mach_info udc_info __initdata = { |
460 | .gpio_vbus = -1, | ||
460 | /* no connect GPIO; corgi can't tell connection status */ | 461 | /* no connect GPIO; corgi can't tell connection status */ |
461 | .gpio_pullup = CORGI_GPIO_USB_PULLUP, | 462 | .gpio_pullup = CORGI_GPIO_USB_PULLUP, |
462 | }; | 463 | }; |
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa25x.h b/arch/arm/mach-pxa/include/mach/mfp-pxa25x.h index b13dc0269a6d..9c787855cf24 100644 --- a/arch/arm/mach-pxa/include/mach/mfp-pxa25x.h +++ b/arch/arm/mach-pxa/include/mach/mfp-pxa25x.h | |||
@@ -169,7 +169,6 @@ | |||
169 | #define GPIO86_nSDCS2 MFP_CFG_OUT(GPIO86, AF0, DRIVE_HIGH) | 169 | #define GPIO86_nSDCS2 MFP_CFG_OUT(GPIO86, AF0, DRIVE_HIGH) |
170 | #define GPIO87_nSDCS3 MFP_CFG_OUT(GPIO87, AF0, DRIVE_HIGH) | 170 | #define GPIO87_nSDCS3 MFP_CFG_OUT(GPIO87, AF0, DRIVE_HIGH) |
171 | #define GPIO88_RDnWR MFP_CFG_OUT(GPIO88, AF0, DRIVE_HIGH) | 171 | #define GPIO88_RDnWR MFP_CFG_OUT(GPIO88, AF0, DRIVE_HIGH) |
172 | #define GPIO89_nACRESET MFP_CFG_OUT(GPIO89, AF0, DRIVE_HIGH) | ||
173 | 172 | ||
174 | /* USB */ | 173 | /* USB */ |
175 | #define GPIO9_USB_RCV MFP_CFG_IN(GPIO9, AF1) | 174 | #define GPIO9_USB_RCV MFP_CFG_IN(GPIO9, AF1) |
@@ -186,6 +185,9 @@ | |||
186 | #define GPIO30_ASSP_TXD MFP_CFG_OUT(GPIO30, AF3, DRIVE_LOW) | 185 | #define GPIO30_ASSP_TXD MFP_CFG_OUT(GPIO30, AF3, DRIVE_LOW) |
187 | #define GPIO31_ASSP_SFRM_IN MFP_CFG_IN(GPIO31, AF1) | 186 | #define GPIO31_ASSP_SFRM_IN MFP_CFG_IN(GPIO31, AF1) |
188 | #define GPIO31_ASSP_SFRM_OUT MFP_CFG_OUT(GPIO31, AF3, DRIVE_LOW) | 187 | #define GPIO31_ASSP_SFRM_OUT MFP_CFG_OUT(GPIO31, AF3, DRIVE_LOW) |
189 | #endif | 188 | |
189 | /* AC97 */ | ||
190 | #define GPIO89_AC97_nRESET MFP_CFG_OUT(GPIO89, AF0, DRIVE_HIGH) | ||
191 | #endif /* CONFIG_CPU_PXA26x */ | ||
190 | 192 | ||
191 | #endif /* __ASM_ARCH_MFP_PXA25X_H */ | 193 | #endif /* __ASM_ARCH_MFP_PXA25X_H */ |
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c index 6112af431fa4..1beb40f692fc 100644 --- a/arch/arm/mach-pxa/irq.c +++ b/arch/arm/mach-pxa/irq.c | |||
@@ -164,8 +164,11 @@ static int pxa_irq_suspend(struct sys_device *dev, pm_message_t state) | |||
164 | saved_icmr[i] = _ICMR(irq); | 164 | saved_icmr[i] = _ICMR(irq); |
165 | _ICMR(irq) = 0; | 165 | _ICMR(irq) = 0; |
166 | } | 166 | } |
167 | for (i = 0; i < pxa_internal_irq_nr; i++) | 167 | |
168 | saved_ipr[i] = IPR(i); | 168 | if (cpu_is_pxa27x() || cpu_is_pxa3xx()) { |
169 | for (i = 0; i < pxa_internal_irq_nr; i++) | ||
170 | saved_ipr[i] = IPR(i); | ||
171 | } | ||
169 | 172 | ||
170 | return 0; | 173 | return 0; |
171 | } | 174 | } |
@@ -174,12 +177,15 @@ static int pxa_irq_resume(struct sys_device *dev) | |||
174 | { | 177 | { |
175 | int i, irq = PXA_IRQ(0); | 178 | int i, irq = PXA_IRQ(0); |
176 | 179 | ||
180 | if (cpu_is_pxa27x() || cpu_is_pxa3xx()) { | ||
181 | for (i = 0; i < pxa_internal_irq_nr; i++) | ||
182 | IPR(i) = saved_ipr[i]; | ||
183 | } | ||
184 | |||
177 | for (i = 0; irq < PXA_IRQ(pxa_internal_irq_nr); i++, irq += 32) { | 185 | for (i = 0; irq < PXA_IRQ(pxa_internal_irq_nr); i++, irq += 32) { |
178 | _ICMR(irq) = saved_icmr[i]; | 186 | _ICMR(irq) = saved_icmr[i]; |
179 | _ICLR(irq) = 0; | 187 | _ICLR(irq) = 0; |
180 | } | 188 | } |
181 | for (i = 0; i < pxa_internal_irq_nr; i++) | ||
182 | IPR(i) = saved_ipr[i]; | ||
183 | 189 | ||
184 | ICCR = 1; | 190 | ICCR = 1; |
185 | return 0; | 191 | return 0; |
diff --git a/arch/arm/mach-s3c2440/mach-mini2440.c b/arch/arm/mach-s3c2440/mach-mini2440.c index 547d4fc99131..2068e9096a43 100644 --- a/arch/arm/mach-s3c2440/mach-mini2440.c +++ b/arch/arm/mach-s3c2440/mach-mini2440.c | |||
@@ -288,7 +288,7 @@ static struct s3c2410_platform_nand mini2440_nand_info __initdata = { | |||
288 | 288 | ||
289 | /* DM9000AEP 10/100 ethernet controller */ | 289 | /* DM9000AEP 10/100 ethernet controller */ |
290 | 290 | ||
291 | static struct resource mini2440_dm9k_resource[] __initdata = { | 291 | static struct resource mini2440_dm9k_resource[] = { |
292 | [0] = { | 292 | [0] = { |
293 | .start = MACH_MINI2440_DM9K_BASE, | 293 | .start = MACH_MINI2440_DM9K_BASE, |
294 | .end = MACH_MINI2440_DM9K_BASE + 3, | 294 | .end = MACH_MINI2440_DM9K_BASE + 3, |
@@ -310,11 +310,11 @@ static struct resource mini2440_dm9k_resource[] __initdata = { | |||
310 | * The DM9000 has no eeprom, and it's MAC address is set by | 310 | * The DM9000 has no eeprom, and it's MAC address is set by |
311 | * the bootloader before starting the kernel. | 311 | * the bootloader before starting the kernel. |
312 | */ | 312 | */ |
313 | static struct dm9000_plat_data mini2440_dm9k_pdata __initdata = { | 313 | static struct dm9000_plat_data mini2440_dm9k_pdata = { |
314 | .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM), | 314 | .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM), |
315 | }; | 315 | }; |
316 | 316 | ||
317 | static struct platform_device mini2440_device_eth __initdata = { | 317 | static struct platform_device mini2440_device_eth = { |
318 | .name = "dm9000", | 318 | .name = "dm9000", |
319 | .id = -1, | 319 | .id = -1, |
320 | .num_resources = ARRAY_SIZE(mini2440_dm9k_resource), | 320 | .num_resources = ARRAY_SIZE(mini2440_dm9k_resource), |
@@ -341,7 +341,7 @@ static struct platform_device mini2440_device_eth __initdata = { | |||
341 | * | | +----+ +----+ | 341 | * | | +----+ +----+ |
342 | * ..... | 342 | * ..... |
343 | */ | 343 | */ |
344 | static struct gpio_keys_button mini2440_buttons[] __initdata = { | 344 | static struct gpio_keys_button mini2440_buttons[] = { |
345 | { | 345 | { |
346 | .gpio = S3C2410_GPG(0), /* K1 */ | 346 | .gpio = S3C2410_GPG(0), /* K1 */ |
347 | .code = KEY_F1, | 347 | .code = KEY_F1, |
@@ -384,12 +384,12 @@ static struct gpio_keys_button mini2440_buttons[] __initdata = { | |||
384 | #endif | 384 | #endif |
385 | }; | 385 | }; |
386 | 386 | ||
387 | static struct gpio_keys_platform_data mini2440_button_data __initdata = { | 387 | static struct gpio_keys_platform_data mini2440_button_data = { |
388 | .buttons = mini2440_buttons, | 388 | .buttons = mini2440_buttons, |
389 | .nbuttons = ARRAY_SIZE(mini2440_buttons), | 389 | .nbuttons = ARRAY_SIZE(mini2440_buttons), |
390 | }; | 390 | }; |
391 | 391 | ||
392 | static struct platform_device mini2440_button_device __initdata = { | 392 | static struct platform_device mini2440_button_device = { |
393 | .name = "gpio-keys", | 393 | .name = "gpio-keys", |
394 | .id = -1, | 394 | .id = -1, |
395 | .dev = { | 395 | .dev = { |
@@ -399,41 +399,41 @@ static struct platform_device mini2440_button_device __initdata = { | |||
399 | 399 | ||
400 | /* LEDS */ | 400 | /* LEDS */ |
401 | 401 | ||
402 | static struct s3c24xx_led_platdata mini2440_led1_pdata __initdata = { | 402 | static struct s3c24xx_led_platdata mini2440_led1_pdata = { |
403 | .name = "led1", | 403 | .name = "led1", |
404 | .gpio = S3C2410_GPB(5), | 404 | .gpio = S3C2410_GPB(5), |
405 | .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, | 405 | .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, |
406 | .def_trigger = "heartbeat", | 406 | .def_trigger = "heartbeat", |
407 | }; | 407 | }; |
408 | 408 | ||
409 | static struct s3c24xx_led_platdata mini2440_led2_pdata __initdata = { | 409 | static struct s3c24xx_led_platdata mini2440_led2_pdata = { |
410 | .name = "led2", | 410 | .name = "led2", |
411 | .gpio = S3C2410_GPB(6), | 411 | .gpio = S3C2410_GPB(6), |
412 | .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, | 412 | .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, |
413 | .def_trigger = "nand-disk", | 413 | .def_trigger = "nand-disk", |
414 | }; | 414 | }; |
415 | 415 | ||
416 | static struct s3c24xx_led_platdata mini2440_led3_pdata __initdata = { | 416 | static struct s3c24xx_led_platdata mini2440_led3_pdata = { |
417 | .name = "led3", | 417 | .name = "led3", |
418 | .gpio = S3C2410_GPB(7), | 418 | .gpio = S3C2410_GPB(7), |
419 | .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, | 419 | .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, |
420 | .def_trigger = "mmc0", | 420 | .def_trigger = "mmc0", |
421 | }; | 421 | }; |
422 | 422 | ||
423 | static struct s3c24xx_led_platdata mini2440_led4_pdata __initdata = { | 423 | static struct s3c24xx_led_platdata mini2440_led4_pdata = { |
424 | .name = "led4", | 424 | .name = "led4", |
425 | .gpio = S3C2410_GPB(8), | 425 | .gpio = S3C2410_GPB(8), |
426 | .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, | 426 | .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, |
427 | .def_trigger = "", | 427 | .def_trigger = "", |
428 | }; | 428 | }; |
429 | 429 | ||
430 | static struct s3c24xx_led_platdata mini2440_led_backlight_pdata __initdata = { | 430 | static struct s3c24xx_led_platdata mini2440_led_backlight_pdata = { |
431 | .name = "backlight", | 431 | .name = "backlight", |
432 | .gpio = S3C2410_GPG(4), | 432 | .gpio = S3C2410_GPG(4), |
433 | .def_trigger = "backlight", | 433 | .def_trigger = "backlight", |
434 | }; | 434 | }; |
435 | 435 | ||
436 | static struct platform_device mini2440_led1 __initdata = { | 436 | static struct platform_device mini2440_led1 = { |
437 | .name = "s3c24xx_led", | 437 | .name = "s3c24xx_led", |
438 | .id = 1, | 438 | .id = 1, |
439 | .dev = { | 439 | .dev = { |
@@ -441,7 +441,7 @@ static struct platform_device mini2440_led1 __initdata = { | |||
441 | }, | 441 | }, |
442 | }; | 442 | }; |
443 | 443 | ||
444 | static struct platform_device mini2440_led2 __initdata = { | 444 | static struct platform_device mini2440_led2 = { |
445 | .name = "s3c24xx_led", | 445 | .name = "s3c24xx_led", |
446 | .id = 2, | 446 | .id = 2, |
447 | .dev = { | 447 | .dev = { |
@@ -449,7 +449,7 @@ static struct platform_device mini2440_led2 __initdata = { | |||
449 | }, | 449 | }, |
450 | }; | 450 | }; |
451 | 451 | ||
452 | static struct platform_device mini2440_led3 __initdata = { | 452 | static struct platform_device mini2440_led3 = { |
453 | .name = "s3c24xx_led", | 453 | .name = "s3c24xx_led", |
454 | .id = 3, | 454 | .id = 3, |
455 | .dev = { | 455 | .dev = { |
@@ -457,7 +457,7 @@ static struct platform_device mini2440_led3 __initdata = { | |||
457 | }, | 457 | }, |
458 | }; | 458 | }; |
459 | 459 | ||
460 | static struct platform_device mini2440_led4 __initdata = { | 460 | static struct platform_device mini2440_led4 = { |
461 | .name = "s3c24xx_led", | 461 | .name = "s3c24xx_led", |
462 | .id = 4, | 462 | .id = 4, |
463 | .dev = { | 463 | .dev = { |
@@ -465,7 +465,7 @@ static struct platform_device mini2440_led4 __initdata = { | |||
465 | }, | 465 | }, |
466 | }; | 466 | }; |
467 | 467 | ||
468 | static struct platform_device mini2440_led_backlight __initdata = { | 468 | static struct platform_device mini2440_led_backlight = { |
469 | .name = "s3c24xx_led", | 469 | .name = "s3c24xx_led", |
470 | .id = 5, | 470 | .id = 5, |
471 | .dev = { | 471 | .dev = { |
@@ -475,14 +475,14 @@ static struct platform_device mini2440_led_backlight __initdata = { | |||
475 | 475 | ||
476 | /* AUDIO */ | 476 | /* AUDIO */ |
477 | 477 | ||
478 | static struct s3c24xx_uda134x_platform_data mini2440_audio_pins __initdata = { | 478 | static struct s3c24xx_uda134x_platform_data mini2440_audio_pins = { |
479 | .l3_clk = S3C2410_GPB(4), | 479 | .l3_clk = S3C2410_GPB(4), |
480 | .l3_mode = S3C2410_GPB(2), | 480 | .l3_mode = S3C2410_GPB(2), |
481 | .l3_data = S3C2410_GPB(3), | 481 | .l3_data = S3C2410_GPB(3), |
482 | .model = UDA134X_UDA1341 | 482 | .model = UDA134X_UDA1341 |
483 | }; | 483 | }; |
484 | 484 | ||
485 | static struct platform_device mini2440_audio __initdata = { | 485 | static struct platform_device mini2440_audio = { |
486 | .name = "s3c24xx_uda134x", | 486 | .name = "s3c24xx_uda134x", |
487 | .id = 0, | 487 | .id = 0, |
488 | .dev = { | 488 | .dev = { |
diff --git a/arch/arm/mach-s3c6410/mach-hmt.c b/arch/arm/mach-s3c6410/mach-hmt.c index cdd4b5378552..7619456f2ae8 100644 --- a/arch/arm/mach-s3c6410/mach-hmt.c +++ b/arch/arm/mach-s3c6410/mach-hmt.c | |||
@@ -82,7 +82,7 @@ static int hmt_bl_init(struct device *dev) | |||
82 | return ret; | 82 | return ret; |
83 | } | 83 | } |
84 | 84 | ||
85 | static int hmt_bl_notify(int brightness) | 85 | static int hmt_bl_notify(struct device *dev, int brightness) |
86 | { | 86 | { |
87 | /* | 87 | /* |
88 | * translate from CIELUV/CIELAB L*->brightness, E.G. from | 88 | * translate from CIELUV/CIELAB L*->brightness, E.G. from |
diff --git a/arch/arm/mach-s3c6410/mach-smdk6410.c b/arch/arm/mach-s3c6410/mach-smdk6410.c index 480d297c1de2..8969fe73b83f 100644 --- a/arch/arm/mach-s3c6410/mach-smdk6410.c +++ b/arch/arm/mach-s3c6410/mach-smdk6410.c | |||
@@ -211,6 +211,7 @@ static struct fixed_voltage_config smdk6410_b_pwr_5v_pdata = { | |||
211 | .supply_name = "B_PWR_5V", | 211 | .supply_name = "B_PWR_5V", |
212 | .microvolts = 5000000, | 212 | .microvolts = 5000000, |
213 | .init_data = &smdk6410_b_pwr_5v_data, | 213 | .init_data = &smdk6410_b_pwr_5v_data, |
214 | .gpio = -EINVAL, | ||
214 | }; | 215 | }; |
215 | 216 | ||
216 | static struct platform_device smdk6410_b_pwr_5v = { | 217 | static struct platform_device smdk6410_b_pwr_5v = { |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 1708da82da96..761ffede6a23 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -1067,4 +1067,6 @@ void setup_mm_for_reboot(char mode) | |||
1067 | pmd[1] = __pmd(pmdval + (1 << (PGDIR_SHIFT - 1))); | 1067 | pmd[1] = __pmd(pmdval + (1 << (PGDIR_SHIFT - 1))); |
1068 | flush_pmd_entry(pmd); | 1068 | flush_pmd_entry(pmd); |
1069 | } | 1069 | } |
1070 | |||
1071 | local_flush_tlb_all(); | ||
1070 | } | 1072 | } |
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index 395cc90c6613..7a5337ed7d68 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
@@ -59,8 +59,6 @@ ENTRY(cpu_v6_proc_fin) | |||
59 | * to what would be the reset vector. | 59 | * to what would be the reset vector. |
60 | * | 60 | * |
61 | * - loc - location to jump to for soft reset | 61 | * - loc - location to jump to for soft reset |
62 | * | ||
63 | * It is assumed that: | ||
64 | */ | 62 | */ |
65 | .align 5 | 63 | .align 5 |
66 | ENTRY(cpu_v6_reset) | 64 | ENTRY(cpu_v6_reset) |
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index 3a285218fd15..7aaf88a3b7aa 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S | |||
@@ -45,7 +45,14 @@ ENTRY(cpu_v7_proc_init) | |||
45 | ENDPROC(cpu_v7_proc_init) | 45 | ENDPROC(cpu_v7_proc_init) |
46 | 46 | ||
47 | ENTRY(cpu_v7_proc_fin) | 47 | ENTRY(cpu_v7_proc_fin) |
48 | mov pc, lr | 48 | stmfd sp!, {lr} |
49 | cpsid if @ disable interrupts | ||
50 | bl v7_flush_kern_cache_all | ||
51 | mrc p15, 0, r0, c1, c0, 0 @ ctrl register | ||
52 | bic r0, r0, #0x1000 @ ...i............ | ||
53 | bic r0, r0, #0x0006 @ .............ca. | ||
54 | mcr p15, 0, r0, c1, c0, 0 @ disable caches | ||
55 | ldmfd sp!, {pc} | ||
49 | ENDPROC(cpu_v7_proc_fin) | 56 | ENDPROC(cpu_v7_proc_fin) |
50 | 57 | ||
51 | /* | 58 | /* |
@@ -56,8 +63,6 @@ ENDPROC(cpu_v7_proc_fin) | |||
56 | * to what would be the reset vector. | 63 | * to what would be the reset vector. |
57 | * | 64 | * |
58 | * - loc - location to jump to for soft reset | 65 | * - loc - location to jump to for soft reset |
59 | * | ||
60 | * It is assumed that: | ||
61 | */ | 66 | */ |
62 | .align 5 | 67 | .align 5 |
63 | ENTRY(cpu_v7_reset) | 68 | ENTRY(cpu_v7_reset) |
diff --git a/arch/arm/plat-mxc/include/mach/uncompress.h b/arch/arm/plat-mxc/include/mach/uncompress.h index 4d5d395ad63b..d49384cb1e97 100644 --- a/arch/arm/plat-mxc/include/mach/uncompress.h +++ b/arch/arm/plat-mxc/include/mach/uncompress.h | |||
@@ -60,7 +60,9 @@ static void putc(int ch) | |||
60 | UART(TXR) = ch; | 60 | UART(TXR) = ch; |
61 | } | 61 | } |
62 | 62 | ||
63 | #define flush() do { } while (0) | 63 | static inline void flush(void) |
64 | { | ||
65 | } | ||
64 | 66 | ||
65 | #define MX1_UART1_BASE_ADDR 0x00206000 | 67 | #define MX1_UART1_BASE_ADDR 0x00206000 |
66 | #define MX25_UART1_BASE_ADDR 0x43f90000 | 68 | #define MX25_UART1_BASE_ADDR 0x43f90000 |
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c index bf1eaf3a27d4..dddc0273bc8b 100644 --- a/arch/arm/plat-omap/common.c +++ b/arch/arm/plat-omap/common.c | |||
@@ -172,6 +172,32 @@ unsigned long long sched_clock(void) | |||
172 | clocksource_32k.mult, clocksource_32k.shift); | 172 | clocksource_32k.mult, clocksource_32k.shift); |
173 | } | 173 | } |
174 | 174 | ||
175 | /** | ||
176 | * read_persistent_clock - Return time from a persistent clock. | ||
177 | * | ||
178 | * Reads the time from a source which isn't disabled during PM, the | ||
179 | * 32k sync timer. Convert the cycles elapsed since last read into | ||
180 | * nsecs and adds to a monotonically increasing timespec. | ||
181 | */ | ||
182 | static struct timespec persistent_ts; | ||
183 | static cycles_t cycles, last_cycles; | ||
184 | void read_persistent_clock(struct timespec *ts) | ||
185 | { | ||
186 | unsigned long long nsecs; | ||
187 | cycles_t delta; | ||
188 | struct timespec *tsp = &persistent_ts; | ||
189 | |||
190 | last_cycles = cycles; | ||
191 | cycles = clocksource_32k.read(&clocksource_32k); | ||
192 | delta = cycles - last_cycles; | ||
193 | |||
194 | nsecs = clocksource_cyc2ns(delta, | ||
195 | clocksource_32k.mult, clocksource_32k.shift); | ||
196 | |||
197 | timespec_add_ns(tsp, nsecs); | ||
198 | *ts = *tsp; | ||
199 | } | ||
200 | |||
175 | static int __init omap_init_clocksource_32k(void) | 201 | static int __init omap_init_clocksource_32k(void) |
176 | { | 202 | { |
177 | static char err[] __initdata = KERN_ERR | 203 | static char err[] __initdata = KERN_ERR |
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 09d82b3c66ce..728c64204184 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -1183,7 +1183,7 @@ void omap_dma_unlink_lch(int lch_head, int lch_queue) | |||
1183 | } | 1183 | } |
1184 | 1184 | ||
1185 | if ((dma_chan[lch_head].flags & OMAP_DMA_ACTIVE) || | 1185 | if ((dma_chan[lch_head].flags & OMAP_DMA_ACTIVE) || |
1186 | (dma_chan[lch_head].flags & OMAP_DMA_ACTIVE)) { | 1186 | (dma_chan[lch_queue].flags & OMAP_DMA_ACTIVE)) { |
1187 | printk(KERN_ERR "omap_dma: You need to stop the DMA channels " | 1187 | printk(KERN_ERR "omap_dma: You need to stop the DMA channels " |
1188 | "before unlinking\n"); | 1188 | "before unlinking\n"); |
1189 | dump_stack(); | 1189 | dump_stack(); |
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c index 64f407ee0f4e..08ccf8922520 100644 --- a/arch/arm/plat-omap/dmtimer.c +++ b/arch/arm/plat-omap/dmtimer.c | |||
@@ -551,6 +551,19 @@ void omap_dm_timer_stop(struct omap_dm_timer *timer) | |||
551 | if (l & OMAP_TIMER_CTRL_ST) { | 551 | if (l & OMAP_TIMER_CTRL_ST) { |
552 | l &= ~0x1; | 552 | l &= ~0x1; |
553 | omap_dm_timer_write_reg(timer, OMAP_TIMER_CTRL_REG, l); | 553 | omap_dm_timer_write_reg(timer, OMAP_TIMER_CTRL_REG, l); |
554 | #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) || \ | ||
555 | defined(CONFIG_ARCH_OMAP4) | ||
556 | /* Readback to make sure write has completed */ | ||
557 | omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG); | ||
558 | /* | ||
559 | * Wait for functional clock period x 3.5 to make sure that | ||
560 | * timer is stopped | ||
561 | */ | ||
562 | udelay(3500000 / clk_get_rate(timer->fclk) + 1); | ||
563 | /* Ack possibly pending interrupt */ | ||
564 | omap_dm_timer_write_reg(timer, OMAP_TIMER_STAT_REG, | ||
565 | OMAP_TIMER_INT_OVERFLOW); | ||
566 | #endif | ||
554 | } | 567 | } |
555 | } | 568 | } |
556 | EXPORT_SYMBOL_GPL(omap_dm_timer_stop); | 569 | EXPORT_SYMBOL_GPL(omap_dm_timer_stop); |
diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h index 9a028bdebb06..a162f585b1e3 100644 --- a/arch/arm/plat-omap/include/plat/cpu.h +++ b/arch/arm/plat-omap/include/plat/cpu.h | |||
@@ -434,6 +434,7 @@ IS_OMAP_TYPE(3517, 0x3517) | |||
434 | #define OMAP3430_REV_ES2_1 0x34302034 | 434 | #define OMAP3430_REV_ES2_1 0x34302034 |
435 | #define OMAP3430_REV_ES3_0 0x34303034 | 435 | #define OMAP3430_REV_ES3_0 0x34303034 |
436 | #define OMAP3430_REV_ES3_1 0x34304034 | 436 | #define OMAP3430_REV_ES3_1 0x34304034 |
437 | #define OMAP3430_REV_ES3_1_2 0x34305034 | ||
437 | 438 | ||
438 | #define OMAP3630_REV_ES1_0 0x36300034 | 439 | #define OMAP3630_REV_ES1_0 0x36300034 |
439 | 440 | ||
diff --git a/arch/arm/plat-omap/include/plat/irqs.h b/arch/arm/plat-omap/include/plat/irqs.h index 97d6c50c3dcb..c0ab7c80f72e 100644 --- a/arch/arm/plat-omap/include/plat/irqs.h +++ b/arch/arm/plat-omap/include/plat/irqs.h | |||
@@ -499,6 +499,9 @@ extern void omap_init_irq(void); | |||
499 | extern int omap_irq_pending(void); | 499 | extern int omap_irq_pending(void); |
500 | void omap_intc_save_context(void); | 500 | void omap_intc_save_context(void); |
501 | void omap_intc_restore_context(void); | 501 | void omap_intc_restore_context(void); |
502 | void omap3_intc_suspend(void); | ||
503 | void omap3_intc_prepare_idle(void); | ||
504 | void omap3_intc_resume_idle(void); | ||
502 | #endif | 505 | #endif |
503 | 506 | ||
504 | #include <mach/hardware.h> | 507 | #include <mach/hardware.h> |
diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h b/arch/arm/plat-omap/include/plat/omap_hwmod.h index 007935a921ea..33933256a226 100644 --- a/arch/arm/plat-omap/include/plat/omap_hwmod.h +++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h | |||
@@ -227,6 +227,7 @@ struct omap_hwmod_ocp_if { | |||
227 | #define SYSC_HAS_SIDLEMODE (1 << 5) | 227 | #define SYSC_HAS_SIDLEMODE (1 << 5) |
228 | #define SYSC_HAS_MIDLEMODE (1 << 6) | 228 | #define SYSC_HAS_MIDLEMODE (1 << 6) |
229 | #define SYSS_MISSING (1 << 7) | 229 | #define SYSS_MISSING (1 << 7) |
230 | #define SYSC_NO_CACHE (1 << 8) /* XXX SW flag, belongs elsewhere */ | ||
230 | 231 | ||
231 | /* omap_hwmod_sysconfig.clockact flags */ | 232 | /* omap_hwmod_sysconfig.clockact flags */ |
232 | #define CLOCKACT_TEST_BOTH 0x0 | 233 | #define CLOCKACT_TEST_BOTH 0x0 |
diff --git a/arch/arm/plat-orion/pcie.c b/arch/arm/plat-orion/pcie.c index d41d41d78ad9..54c84a492a0f 100644 --- a/arch/arm/plat-orion/pcie.c +++ b/arch/arm/plat-orion/pcie.c | |||
@@ -133,6 +133,12 @@ static void __init orion_pcie_setup_wins(void __iomem *base, | |||
133 | } | 133 | } |
134 | 134 | ||
135 | /* | 135 | /* |
136 | * Round up 'size' to the nearest power of two. | ||
137 | */ | ||
138 | if ((size & (size - 1)) != 0) | ||
139 | size = 1 << fls(size); | ||
140 | |||
141 | /* | ||
136 | * Setup BAR[1] to all DRAM banks. | 142 | * Setup BAR[1] to all DRAM banks. |
137 | */ | 143 | */ |
138 | writel(dram->cs[0].base, base + PCIE_BAR_LO_OFF(1)); | 144 | writel(dram->cs[0].base, base + PCIE_BAR_LO_OFF(1)); |
diff --git a/arch/arm/plat-s3c/dev-nand.c b/arch/arm/plat-s3c/dev-nand.c index 84808ccda70e..a52fb6cf618f 100644 --- a/arch/arm/plat-s3c/dev-nand.c +++ b/arch/arm/plat-s3c/dev-nand.c | |||
@@ -58,8 +58,8 @@ static int __init s3c_nand_copy_set(struct s3c2410_nand_set *set) | |||
58 | return -ENOMEM; | 58 | return -ENOMEM; |
59 | } | 59 | } |
60 | 60 | ||
61 | size = sizeof(int) * set->nr_chips; | 61 | if (set->nr_map && set->nr_chips) { |
62 | if (size) { | 62 | size = sizeof(int) * set->nr_chips; |
63 | ptr = kmemdup(set->nr_map, size, GFP_KERNEL); | 63 | ptr = kmemdup(set->nr_map, size, GFP_KERNEL); |
64 | set->nr_map = ptr; | 64 | set->nr_map = ptr; |
65 | 65 | ||
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index c3a74ce24ef6..5a79fc6ee818 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types | |||
@@ -12,7 +12,7 @@ | |||
12 | # | 12 | # |
13 | # http://www.arm.linux.org.uk/developer/machines/?action=new | 13 | # http://www.arm.linux.org.uk/developer/machines/?action=new |
14 | # | 14 | # |
15 | # Last update: Wed Dec 16 20:06:34 2009 | 15 | # Last update: Thu Jan 28 22:15:54 2010 |
16 | # | 16 | # |
17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number | 17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number |
18 | # | 18 | # |
@@ -2536,6 +2536,7 @@ davinci_dm6467tevm MACH_DAVINCI_DM6467TEVM DAVINCI_DM6467TEVM 2548 | |||
2536 | c3ax03 MACH_C3AX03 C3AX03 2549 | 2536 | c3ax03 MACH_C3AX03 C3AX03 2549 |
2537 | mxt_td60 MACH_MXT_TD60 MXT_TD60 2550 | 2537 | mxt_td60 MACH_MXT_TD60 MXT_TD60 2550 |
2538 | esyx MACH_ESYX ESYX 2551 | 2538 | esyx MACH_ESYX ESYX 2551 |
2539 | dove_db2 MACH_DOVE_DB2 DOVE_DB2 2552 | ||
2539 | bulldog MACH_BULLDOG BULLDOG 2553 | 2540 | bulldog MACH_BULLDOG BULLDOG 2553 |
2540 | derell_me2000 MACH_DERELL_ME2000 DERELL_ME2000 2554 | 2541 | derell_me2000 MACH_DERELL_ME2000 DERELL_ME2000 2554 |
2541 | bcmring_base MACH_BCMRING_BASE BCMRING_BASE 2555 | 2542 | bcmring_base MACH_BCMRING_BASE BCMRING_BASE 2555 |
@@ -2555,6 +2556,7 @@ iseo MACH_ISEO ISEO 2568 | |||
2555 | cezanne MACH_CEZANNE CEZANNE 2569 | 2556 | cezanne MACH_CEZANNE CEZANNE 2569 |
2556 | lucca MACH_LUCCA LUCCA 2570 | 2557 | lucca MACH_LUCCA LUCCA 2570 |
2557 | supersmart MACH_SUPERSMART SUPERSMART 2571 | 2558 | supersmart MACH_SUPERSMART SUPERSMART 2571 |
2559 | arm11_board MACH_CS_MISANO CS_MISANO 2572 | ||
2558 | magnolia2 MACH_MAGNOLIA2 MAGNOLIA2 2573 | 2560 | magnolia2 MACH_MAGNOLIA2 MAGNOLIA2 2573 |
2559 | emxx MACH_EMXX EMXX 2574 | 2561 | emxx MACH_EMXX EMXX 2574 |
2560 | outlaw MACH_OUTLAW OUTLAW 2575 | 2562 | outlaw MACH_OUTLAW OUTLAW 2575 |
@@ -2578,3 +2580,59 @@ glacier MACH_GLACIER GLACIER 2592 | |||
2578 | phrazer_bulldog MACH_PHRAZER_BULLDOG PHRAZER_BULLDOG 2593 | 2580 | phrazer_bulldog MACH_PHRAZER_BULLDOG PHRAZER_BULLDOG 2593 |
2579 | omap3_bulldog MACH_OMAP3_BULLDOG OMAP3_BULLDOG 2594 | 2581 | omap3_bulldog MACH_OMAP3_BULLDOG OMAP3_BULLDOG 2594 |
2580 | pca101 MACH_PCA101 PCA101 2595 | 2582 | pca101 MACH_PCA101 PCA101 2595 |
2583 | buzzc MACH_BUZZC BUZZC 2596 | ||
2584 | sasie2 MACH_SASIE2 SASIE2 2597 | ||
2585 | davinci_cio MACH_DAVINCI_CIO DAVINCI_CIO 2598 | ||
2586 | smartmeter_dl MACH_SMARTMETER_DL SMARTMETER_DL 2599 | ||
2587 | wzl6410 MACH_WZL6410 WZL6410 2600 | ||
2588 | wzl6410m MACH_WZL6410M WZL6410M 2601 | ||
2589 | wzl6410f MACH_WZL6410F WZL6410F 2602 | ||
2590 | wzl6410i MACH_WZL6410I WZL6410I 2603 | ||
2591 | spacecom1 MACH_SPACECOM1 SPACECOM1 2604 | ||
2592 | pingu920 MACH_PINGU920 PINGU920 2605 | ||
2593 | bravoc MACH_BRAVOC BRAVOC 2606 | ||
2594 | cybo2440 MACH_CYBO2440 CYBO2440 2607 | ||
2595 | vdssw MACH_VDSSW VDSSW 2608 | ||
2596 | romulus MACH_ROMULUS ROMULUS 2609 | ||
2597 | omap_magic MACH_OMAP_MAGIC OMAP_MAGIC 2610 | ||
2598 | eltd100 MACH_ELTD100 ELTD100 2611 | ||
2599 | capc7117 MACH_CAPC7117 CAPC7117 2612 | ||
2600 | swan MACH_SWAN SWAN 2613 | ||
2601 | veu MACH_VEU VEU 2614 | ||
2602 | rm2 MACH_RM2 RM2 2615 | ||
2603 | tt2100 MACH_TT2100 TT2100 2616 | ||
2604 | venice MACH_VENICE VENICE 2617 | ||
2605 | pc7323 MACH_PC7323 PC7323 2618 | ||
2606 | masp MACH_MASP MASP 2619 | ||
2607 | fujitsu_tvstbsoc0 MACH_FUJITSU_TVSTBSOC FUJITSU_TVSTBSOC 2620 | ||
2608 | fujitsu_tvstbsoc1 MACH_FUJITSU_TVSTBSOC1 FUJITSU_TVSTBSOC1 2621 | ||
2609 | lexikon MACH_LEXIKON LEXIKON 2622 | ||
2610 | mini2440v2 MACH_MINI2440V2 MINI2440V2 2623 | ||
2611 | icontrol MACH_ICONTROL ICONTROL 2624 | ||
2612 | sheevad MACH_SHEEVAD SHEEVAD 2625 | ||
2613 | qsd8x50a_st1_1 MACH_QSD8X50A_ST1_1 QSD8X50A_ST1_1 2626 | ||
2614 | qsd8x50a_st1_5 MACH_QSD8X50A_ST1_5 QSD8X50A_ST1_5 2627 | ||
2615 | bee MACH_BEE BEE 2628 | ||
2616 | mx23evk MACH_MX23EVK MX23EVK 2629 | ||
2617 | ap4evb MACH_AP4EVB AP4EVB 2630 | ||
2618 | stockholm MACH_STOCKHOLM STOCKHOLM 2631 | ||
2619 | lpc_h3131 MACH_LPC_H3131 LPC_H3131 2632 | ||
2620 | stingray MACH_STINGRAY STINGRAY 2633 | ||
2621 | kraken MACH_KRAKEN KRAKEN 2634 | ||
2622 | gw2388 MACH_GW2388 GW2388 2635 | ||
2623 | jadecpu MACH_JADECPU JADECPU 2636 | ||
2624 | carlisle MACH_CARLISLE CARLISLE 2637 | ||
2625 | lux_sf9 MACH_LUX_SFT9 LUX_SFT9 2638 | ||
2626 | nemid_tb MACH_NEMID_TB NEMID_TB 2639 | ||
2627 | terrier MACH_TERRIER TERRIER 2640 | ||
2628 | turbot MACH_TURBOT TURBOT 2641 | ||
2629 | sanddab MACH_SANDDAB SANDDAB 2642 | ||
2630 | mx35_cicada MACH_MX35_CICADA MX35_CICADA 2643 | ||
2631 | ghi2703d MACH_GHI2703D GHI2703D 2644 | ||
2632 | lux_sfx9 MACH_LUX_SFX9 LUX_SFX9 2645 | ||
2633 | lux_sf9g MACH_LUX_SF9G LUX_SF9G 2646 | ||
2634 | lux_edk9 MACH_LUX_EDK9 LUX_EDK9 2647 | ||
2635 | hw90240 MACH_HW90240 HW90240 2648 | ||
2636 | dm365_leopard MACH_DM365_LEOPARD DM365_LEOPARD 2649 | ||
2637 | mityomapl138 MACH_MITYOMAPL138 MITYOMAPL138 2650 | ||
2638 | scat110 MACH_SCAT110 SCAT110 2651 | ||
diff --git a/arch/m68knommu/platform/coldfire/pit.c b/arch/m68knommu/platform/coldfire/pit.c index d8720ee34510..aebea19abd78 100644 --- a/arch/m68knommu/platform/coldfire/pit.c +++ b/arch/m68knommu/platform/coldfire/pit.c | |||
@@ -146,7 +146,6 @@ static struct clocksource pit_clk = { | |||
146 | .read = pit_read_clk, | 146 | .read = pit_read_clk, |
147 | .shift = 20, | 147 | .shift = 20, |
148 | .mask = CLOCKSOURCE_MASK(32), | 148 | .mask = CLOCKSOURCE_MASK(32), |
149 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | ||
150 | }; | 149 | }; |
151 | 150 | ||
152 | /***************************************************************************/ | 151 | /***************************************************************************/ |
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index fd53e500be67..cd5837e298b2 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig | |||
@@ -90,7 +90,7 @@ source "arch/microblaze/platform/Kconfig.platform" | |||
90 | 90 | ||
91 | menu "Processor type and features" | 91 | menu "Processor type and features" |
92 | 92 | ||
93 | source kernel/time/Kconfig | 93 | source "kernel/time/Kconfig" |
94 | 94 | ||
95 | source "kernel/Kconfig.preempt" | 95 | source "kernel/Kconfig.preempt" |
96 | 96 | ||
diff --git a/arch/microblaze/include/asm/ptrace.h b/arch/microblaze/include/asm/ptrace.h index a917dc517736..d74dbfb92c04 100644 --- a/arch/microblaze/include/asm/ptrace.h +++ b/arch/microblaze/include/asm/ptrace.h | |||
@@ -54,6 +54,7 @@ struct pt_regs { | |||
54 | int pt_mode; | 54 | int pt_mode; |
55 | }; | 55 | }; |
56 | 56 | ||
57 | #ifdef __KERNEL__ | ||
57 | #define kernel_mode(regs) ((regs)->pt_mode) | 58 | #define kernel_mode(regs) ((regs)->pt_mode) |
58 | #define user_mode(regs) (!kernel_mode(regs)) | 59 | #define user_mode(regs) (!kernel_mode(regs)) |
59 | 60 | ||
@@ -62,6 +63,19 @@ struct pt_regs { | |||
62 | 63 | ||
63 | void show_regs(struct pt_regs *); | 64 | void show_regs(struct pt_regs *); |
64 | 65 | ||
66 | #else /* __KERNEL__ */ | ||
67 | |||
68 | /* pt_regs offsets used by gdbserver etc in ptrace syscalls */ | ||
69 | #define PT_GPR(n) ((n) * sizeof(microblaze_reg_t)) | ||
70 | #define PT_PC (32 * sizeof(microblaze_reg_t)) | ||
71 | #define PT_MSR (33 * sizeof(microblaze_reg_t)) | ||
72 | #define PT_EAR (34 * sizeof(microblaze_reg_t)) | ||
73 | #define PT_ESR (35 * sizeof(microblaze_reg_t)) | ||
74 | #define PT_FSR (36 * sizeof(microblaze_reg_t)) | ||
75 | #define PT_KERNEL_MODE (37 * sizeof(microblaze_reg_t)) | ||
76 | |||
77 | #endif /* __KERNEL */ | ||
78 | |||
65 | #endif /* __ASSEMBLY__ */ | 79 | #endif /* __ASSEMBLY__ */ |
66 | 80 | ||
67 | #endif /* _ASM_MICROBLAZE_PTRACE_H */ | 81 | #endif /* _ASM_MICROBLAZE_PTRACE_H */ |
diff --git a/arch/microblaze/include/asm/unistd.h b/arch/microblaze/include/asm/unistd.h index cb05a07e55e9..2b67e92a773c 100644 --- a/arch/microblaze/include/asm/unistd.h +++ b/arch/microblaze/include/asm/unistd.h | |||
@@ -377,13 +377,14 @@ | |||
377 | #define __NR_shutdown 359 /* new */ | 377 | #define __NR_shutdown 359 /* new */ |
378 | #define __NR_sendmsg 360 /* new */ | 378 | #define __NR_sendmsg 360 /* new */ |
379 | #define __NR_recvmsg 361 /* new */ | 379 | #define __NR_recvmsg 361 /* new */ |
380 | #define __NR_accept04 362 /* new */ | 380 | #define __NR_accept4 362 /* new */ |
381 | #define __NR_preadv 363 /* new */ | 381 | #define __NR_preadv 363 /* new */ |
382 | #define __NR_pwritev 364 /* new */ | 382 | #define __NR_pwritev 364 /* new */ |
383 | #define __NR_rt_tgsigqueueinfo 365 /* new */ | 383 | #define __NR_rt_tgsigqueueinfo 365 /* new */ |
384 | #define __NR_perf_event_open 366 /* new */ | 384 | #define __NR_perf_event_open 366 /* new */ |
385 | #define __NR_recvmmsg 367 /* new */ | ||
385 | 386 | ||
386 | #define __NR_syscalls 367 | 387 | #define __NR_syscalls 368 |
387 | 388 | ||
388 | #ifdef __KERNEL__ | 389 | #ifdef __KERNEL__ |
389 | #ifndef __ASSEMBLY__ | 390 | #ifndef __ASSEMBLY__ |
diff --git a/arch/microblaze/kernel/prom_parse.c b/arch/microblaze/kernel/prom_parse.c index ae0352ecd5a9..bf7e6c27e318 100644 --- a/arch/microblaze/kernel/prom_parse.c +++ b/arch/microblaze/kernel/prom_parse.c | |||
@@ -256,7 +256,7 @@ int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq) | |||
256 | if (ppdev == NULL) { | 256 | if (ppdev == NULL) { |
257 | struct pci_controller *host; | 257 | struct pci_controller *host; |
258 | host = pci_bus_to_host(pdev->bus); | 258 | host = pci_bus_to_host(pdev->bus); |
259 | ppnode = host ? host->arch_data : NULL; | 259 | ppnode = host ? host->dn : NULL; |
260 | /* No node for host bridge ? give up */ | 260 | /* No node for host bridge ? give up */ |
261 | if (ppnode == NULL) | 261 | if (ppnode == NULL) |
262 | return -EINVAL; | 262 | return -EINVAL; |
diff --git a/arch/microblaze/kernel/syscall_table.S b/arch/microblaze/kernel/syscall_table.S index 4088be7d4e29..03376dc814c9 100644 --- a/arch/microblaze/kernel/syscall_table.S +++ b/arch/microblaze/kernel/syscall_table.S | |||
@@ -366,7 +366,7 @@ ENTRY(sys_call_table) | |||
366 | .long sys_shutdown | 366 | .long sys_shutdown |
367 | .long sys_sendmsg /* 360 */ | 367 | .long sys_sendmsg /* 360 */ |
368 | .long sys_recvmsg | 368 | .long sys_recvmsg |
369 | .long sys_ni_syscall | 369 | .long sys_accept4 |
370 | .long sys_ni_syscall | 370 | .long sys_ni_syscall |
371 | .long sys_ni_syscall | 371 | .long sys_ni_syscall |
372 | .long sys_rt_tgsigqueueinfo /* 365 */ | 372 | .long sys_rt_tgsigqueueinfo /* 365 */ |
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 9541171f1220..8b5d174685f0 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -1311,6 +1311,7 @@ config SYS_SUPPORTS_ZBOOT | |||
1311 | select HAVE_KERNEL_GZIP | 1311 | select HAVE_KERNEL_GZIP |
1312 | select HAVE_KERNEL_BZIP2 | 1312 | select HAVE_KERNEL_BZIP2 |
1313 | select HAVE_KERNEL_LZMA | 1313 | select HAVE_KERNEL_LZMA |
1314 | select HAVE_KERNEL_LZO | ||
1314 | 1315 | ||
1315 | config SYS_SUPPORTS_ZBOOT_UART16550 | 1316 | config SYS_SUPPORTS_ZBOOT_UART16550 |
1316 | bool | 1317 | bool |
diff --git a/arch/mips/boot/compressed/Makefile b/arch/mips/boot/compressed/Makefile index 671d3448fad4..9df903d714d7 100644 --- a/arch/mips/boot/compressed/Makefile +++ b/arch/mips/boot/compressed/Makefile | |||
@@ -14,8 +14,11 @@ | |||
14 | 14 | ||
15 | # compressed kernel load addr: VMLINUZ_LOAD_ADDRESS > VMLINUX_LOAD_ADDRESS + VMLINUX_SIZE | 15 | # compressed kernel load addr: VMLINUZ_LOAD_ADDRESS > VMLINUX_LOAD_ADDRESS + VMLINUX_SIZE |
16 | VMLINUX_SIZE := $(shell wc -c $(objtree)/$(KBUILD_IMAGE) 2>/dev/null | cut -d' ' -f1) | 16 | VMLINUX_SIZE := $(shell wc -c $(objtree)/$(KBUILD_IMAGE) 2>/dev/null | cut -d' ' -f1) |
17 | VMLINUX_SIZE := $(shell [ -n "$(VMLINUX_SIZE)" ] && echo $$(($(VMLINUX_SIZE) + (65536 - $(VMLINUX_SIZE) % 65536)))) | 17 | VMLINUX_SIZE := $(shell [ -n "$(VMLINUX_SIZE)" ] && echo -n $$(($(VMLINUX_SIZE) + (65536 - $(VMLINUX_SIZE) % 65536)))) |
18 | VMLINUZ_LOAD_ADDRESS := 0x$(shell [ -n "$(VMLINUX_SIZE)" ] && printf %x $$(($(VMLINUX_LOAD_ADDRESS) + $(VMLINUX_SIZE)))) | 18 | # VMLINUZ_LOAD_ADDRESS = concat "high32 of VMLINUX_LOAD_ADDRESS" and "(low32 of VMLINUX_LOAD_ADDRESS) + VMLINUX_SIZE" |
19 | HIGH32 := $(shell A=$(VMLINUX_LOAD_ADDRESS); [ $${\#A} -gt 10 ] && expr substr "$(VMLINUX_LOAD_ADDRESS)" 3 $$(($${\#A} - 10))) | ||
20 | LOW32 := $(shell [ -n "$(HIGH32)" ] && A=11 || A=3; expr substr "$(VMLINUX_LOAD_ADDRESS)" $${A} 8) | ||
21 | VMLINUZ_LOAD_ADDRESS := 0x$(shell [ -n "$(VMLINUX_SIZE)" -a -n "$(LOW32)" ] && printf "$(HIGH32)%08x" $$(($(VMLINUX_SIZE) + 0x$(LOW32)))) | ||
19 | 22 | ||
20 | # set the default size of the mallocing area for decompressing | 23 | # set the default size of the mallocing area for decompressing |
21 | BOOT_HEAP_SIZE := 0x400000 | 24 | BOOT_HEAP_SIZE := 0x400000 |
@@ -41,9 +44,11 @@ $(obj)/vmlinux.bin: $(KBUILD_IMAGE) | |||
41 | suffix_$(CONFIG_KERNEL_GZIP) = gz | 44 | suffix_$(CONFIG_KERNEL_GZIP) = gz |
42 | suffix_$(CONFIG_KERNEL_BZIP2) = bz2 | 45 | suffix_$(CONFIG_KERNEL_BZIP2) = bz2 |
43 | suffix_$(CONFIG_KERNEL_LZMA) = lzma | 46 | suffix_$(CONFIG_KERNEL_LZMA) = lzma |
47 | suffix_$(CONFIG_KERNEL_LZO) = lzo | ||
44 | tool_$(CONFIG_KERNEL_GZIP) = gzip | 48 | tool_$(CONFIG_KERNEL_GZIP) = gzip |
45 | tool_$(CONFIG_KERNEL_BZIP2) = bzip2 | 49 | tool_$(CONFIG_KERNEL_BZIP2) = bzip2 |
46 | tool_$(CONFIG_KERNEL_LZMA) = lzma | 50 | tool_$(CONFIG_KERNEL_LZMA) = lzma |
51 | tool_$(CONFIG_KERNEL_LZO) = lzo | ||
47 | $(obj)/vmlinux.$(suffix_y): $(obj)/vmlinux.bin | 52 | $(obj)/vmlinux.$(suffix_y): $(obj)/vmlinux.bin |
48 | $(call if_changed,$(tool_y)) | 53 | $(call if_changed,$(tool_y)) |
49 | 54 | ||
diff --git a/arch/mips/boot/compressed/decompress.c b/arch/mips/boot/compressed/decompress.c index e48fd72898a8..55d02b3a6712 100644 --- a/arch/mips/boot/compressed/decompress.c +++ b/arch/mips/boot/compressed/decompress.c | |||
@@ -77,6 +77,10 @@ void *memset(void *s, int c, size_t n) | |||
77 | #include "../../../../lib/decompress_unlzma.c" | 77 | #include "../../../../lib/decompress_unlzma.c" |
78 | #endif | 78 | #endif |
79 | 79 | ||
80 | #ifdef CONFIG_KERNEL_LZO | ||
81 | #include "../../../../lib/decompress_unlzo.c" | ||
82 | #endif | ||
83 | |||
80 | void decompress_kernel(unsigned long boot_heap_start) | 84 | void decompress_kernel(unsigned long boot_heap_start) |
81 | { | 85 | { |
82 | int zimage_size; | 86 | int zimage_size; |
diff --git a/arch/mips/include/asm/irq.h b/arch/mips/include/asm/irq.h index 06960364c96b..dea4aed6478f 100644 --- a/arch/mips/include/asm/irq.h +++ b/arch/mips/include/asm/irq.h | |||
@@ -135,6 +135,7 @@ extern void free_irqno(unsigned int irq); | |||
135 | #define CP0_LEGACY_COMPARE_IRQ 7 | 135 | #define CP0_LEGACY_COMPARE_IRQ 7 |
136 | 136 | ||
137 | extern int cp0_compare_irq; | 137 | extern int cp0_compare_irq; |
138 | extern int cp0_compare_irq_shift; | ||
138 | extern int cp0_perfcount_irq; | 139 | extern int cp0_perfcount_irq; |
139 | 140 | ||
140 | #endif /* _ASM_IRQ_H */ | 141 | #endif /* _ASM_IRQ_H */ |
diff --git a/arch/mips/include/asm/mach-powertv/asic_reg_map.h b/arch/mips/include/asm/mach-powertv/asic_reg_map.h new file mode 100644 index 000000000000..6f26cb09828e --- /dev/null +++ b/arch/mips/include/asm/mach-powertv/asic_reg_map.h | |||
@@ -0,0 +1,90 @@ | |||
1 | /* | ||
2 | * asic_reg_map.h | ||
3 | * | ||
4 | * A macro-enclosed list of the elements for the register_map structure for | ||
5 | * use in defining and manipulating the structure. | ||
6 | * | ||
7 | * Copyright (C) 2009 Cisco Systems, Inc. | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License as published by | ||
11 | * the Free Software Foundation; either version 2 of the License, or | ||
12 | * (at your option) any later version. | ||
13 | * | ||
14 | * This program is distributed in the hope that it will be useful, | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License | ||
20 | * along with this program; if not, write to the Free Software | ||
21 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
22 | */ | ||
23 | |||
24 | REGISTER_MAP_ELEMENT(eic_slow0_strt_add) | ||
25 | REGISTER_MAP_ELEMENT(eic_cfg_bits) | ||
26 | REGISTER_MAP_ELEMENT(eic_ready_status) | ||
27 | REGISTER_MAP_ELEMENT(chipver3) | ||
28 | REGISTER_MAP_ELEMENT(chipver2) | ||
29 | REGISTER_MAP_ELEMENT(chipver1) | ||
30 | REGISTER_MAP_ELEMENT(chipver0) | ||
31 | REGISTER_MAP_ELEMENT(uart1_intstat) | ||
32 | REGISTER_MAP_ELEMENT(uart1_inten) | ||
33 | REGISTER_MAP_ELEMENT(uart1_config1) | ||
34 | REGISTER_MAP_ELEMENT(uart1_config2) | ||
35 | REGISTER_MAP_ELEMENT(uart1_divisorhi) | ||
36 | REGISTER_MAP_ELEMENT(uart1_divisorlo) | ||
37 | REGISTER_MAP_ELEMENT(uart1_data) | ||
38 | REGISTER_MAP_ELEMENT(uart1_status) | ||
39 | REGISTER_MAP_ELEMENT(int_stat_3) | ||
40 | REGISTER_MAP_ELEMENT(int_stat_2) | ||
41 | REGISTER_MAP_ELEMENT(int_stat_1) | ||
42 | REGISTER_MAP_ELEMENT(int_stat_0) | ||
43 | REGISTER_MAP_ELEMENT(int_config) | ||
44 | REGISTER_MAP_ELEMENT(int_int_scan) | ||
45 | REGISTER_MAP_ELEMENT(ien_int_3) | ||
46 | REGISTER_MAP_ELEMENT(ien_int_2) | ||
47 | REGISTER_MAP_ELEMENT(ien_int_1) | ||
48 | REGISTER_MAP_ELEMENT(ien_int_0) | ||
49 | REGISTER_MAP_ELEMENT(int_level_3_3) | ||
50 | REGISTER_MAP_ELEMENT(int_level_3_2) | ||
51 | REGISTER_MAP_ELEMENT(int_level_3_1) | ||
52 | REGISTER_MAP_ELEMENT(int_level_3_0) | ||
53 | REGISTER_MAP_ELEMENT(int_level_2_3) | ||
54 | REGISTER_MAP_ELEMENT(int_level_2_2) | ||
55 | REGISTER_MAP_ELEMENT(int_level_2_1) | ||
56 | REGISTER_MAP_ELEMENT(int_level_2_0) | ||
57 | REGISTER_MAP_ELEMENT(int_level_1_3) | ||
58 | REGISTER_MAP_ELEMENT(int_level_1_2) | ||
59 | REGISTER_MAP_ELEMENT(int_level_1_1) | ||
60 | REGISTER_MAP_ELEMENT(int_level_1_0) | ||
61 | REGISTER_MAP_ELEMENT(int_level_0_3) | ||
62 | REGISTER_MAP_ELEMENT(int_level_0_2) | ||
63 | REGISTER_MAP_ELEMENT(int_level_0_1) | ||
64 | REGISTER_MAP_ELEMENT(int_level_0_0) | ||
65 | REGISTER_MAP_ELEMENT(int_docsis_en) | ||
66 | REGISTER_MAP_ELEMENT(mips_pll_setup) | ||
67 | REGISTER_MAP_ELEMENT(usb_fs) | ||
68 | REGISTER_MAP_ELEMENT(test_bus) | ||
69 | REGISTER_MAP_ELEMENT(crt_spare) | ||
70 | REGISTER_MAP_ELEMENT(usb2_ohci_int_mask) | ||
71 | REGISTER_MAP_ELEMENT(usb2_strap) | ||
72 | REGISTER_MAP_ELEMENT(ehci_hcapbase) | ||
73 | REGISTER_MAP_ELEMENT(ohci_hc_revision) | ||
74 | REGISTER_MAP_ELEMENT(bcm1_bs_lmi_steer) | ||
75 | REGISTER_MAP_ELEMENT(usb2_control) | ||
76 | REGISTER_MAP_ELEMENT(usb2_stbus_obc) | ||
77 | REGISTER_MAP_ELEMENT(usb2_stbus_mess_size) | ||
78 | REGISTER_MAP_ELEMENT(usb2_stbus_chunk_size) | ||
79 | REGISTER_MAP_ELEMENT(pcie_regs) | ||
80 | REGISTER_MAP_ELEMENT(tim_ch) | ||
81 | REGISTER_MAP_ELEMENT(tim_cl) | ||
82 | REGISTER_MAP_ELEMENT(gpio_dout) | ||
83 | REGISTER_MAP_ELEMENT(gpio_din) | ||
84 | REGISTER_MAP_ELEMENT(gpio_dir) | ||
85 | REGISTER_MAP_ELEMENT(watchdog) | ||
86 | REGISTER_MAP_ELEMENT(front_panel) | ||
87 | REGISTER_MAP_ELEMENT(misc_clk_ctl1) | ||
88 | REGISTER_MAP_ELEMENT(misc_clk_ctl2) | ||
89 | REGISTER_MAP_ELEMENT(crt_ext_ctl) | ||
90 | REGISTER_MAP_ELEMENT(register_maps) | ||
diff --git a/arch/mips/include/asm/mach-powertv/asic_regs.h b/arch/mips/include/asm/mach-powertv/asic_regs.h index 9a65c93782f9..1e11236c6dbc 100644 --- a/arch/mips/include/asm/mach-powertv/asic_regs.h +++ b/arch/mips/include/asm/mach-powertv/asic_regs.h | |||
@@ -35,11 +35,12 @@ enum asic_type { | |||
35 | #define CRONUS_11 0x0B4C1C21 | 35 | #define CRONUS_11 0x0B4C1C21 |
36 | #define CRONUSLITE_10 0x0B4C1C40 | 36 | #define CRONUSLITE_10 0x0B4C1C40 |
37 | 37 | ||
38 | #define NAND_FLASH_BASE 0x03000000 | 38 | #define NAND_FLASH_BASE 0x03000000 |
39 | #define ZEUS_IO_BASE 0x09000000 | ||
40 | #define CALLIOPE_IO_BASE 0x08000000 | 39 | #define CALLIOPE_IO_BASE 0x08000000 |
41 | #define CRONUS_IO_BASE 0x09000000 | 40 | #define CRONUS_IO_BASE 0x09000000 |
42 | #define ASIC_IO_SIZE 0x01000000 | 41 | #define ZEUS_IO_BASE 0x09000000 |
42 | |||
43 | #define ASIC_IO_SIZE 0x01000000 | ||
43 | 44 | ||
44 | /* Definitions for backward compatibility */ | 45 | /* Definitions for backward compatibility */ |
45 | #define UART1_INTSTAT uart1_intstat | 46 | #define UART1_INTSTAT uart1_intstat |
@@ -52,96 +53,62 @@ enum asic_type { | |||
52 | #define UART1_STATUS uart1_status | 53 | #define UART1_STATUS uart1_status |
53 | 54 | ||
54 | /* ASIC register enumeration */ | 55 | /* ASIC register enumeration */ |
56 | union register_map_entry { | ||
57 | unsigned long phys; | ||
58 | u32 *virt; | ||
59 | }; | ||
60 | |||
61 | #define REGISTER_MAP_ELEMENT(x) union register_map_entry x; | ||
55 | struct register_map { | 62 | struct register_map { |
56 | u32 eic_slow0_strt_add; | 63 | #include <asm/mach-powertv/asic_reg_map.h> |
57 | u32 eic_cfg_bits; | ||
58 | u32 eic_ready_status; | ||
59 | |||
60 | u32 chipver3; | ||
61 | u32 chipver2; | ||
62 | u32 chipver1; | ||
63 | u32 chipver0; | ||
64 | |||
65 | u32 uart1_intstat; | ||
66 | u32 uart1_inten; | ||
67 | u32 uart1_config1; | ||
68 | u32 uart1_config2; | ||
69 | u32 uart1_divisorhi; | ||
70 | u32 uart1_divisorlo; | ||
71 | u32 uart1_data; | ||
72 | u32 uart1_status; | ||
73 | |||
74 | u32 int_stat_3; | ||
75 | u32 int_stat_2; | ||
76 | u32 int_stat_1; | ||
77 | u32 int_stat_0; | ||
78 | u32 int_config; | ||
79 | u32 int_int_scan; | ||
80 | u32 ien_int_3; | ||
81 | u32 ien_int_2; | ||
82 | u32 ien_int_1; | ||
83 | u32 ien_int_0; | ||
84 | u32 int_level_3_3; | ||
85 | u32 int_level_3_2; | ||
86 | u32 int_level_3_1; | ||
87 | u32 int_level_3_0; | ||
88 | u32 int_level_2_3; | ||
89 | u32 int_level_2_2; | ||
90 | u32 int_level_2_1; | ||
91 | u32 int_level_2_0; | ||
92 | u32 int_level_1_3; | ||
93 | u32 int_level_1_2; | ||
94 | u32 int_level_1_1; | ||
95 | u32 int_level_1_0; | ||
96 | u32 int_level_0_3; | ||
97 | u32 int_level_0_2; | ||
98 | u32 int_level_0_1; | ||
99 | u32 int_level_0_0; | ||
100 | u32 int_docsis_en; | ||
101 | |||
102 | u32 mips_pll_setup; | ||
103 | u32 usb_fs; | ||
104 | u32 test_bus; | ||
105 | u32 crt_spare; | ||
106 | u32 usb2_ohci_int_mask; | ||
107 | u32 usb2_strap; | ||
108 | u32 ehci_hcapbase; | ||
109 | u32 ohci_hc_revision; | ||
110 | u32 bcm1_bs_lmi_steer; | ||
111 | u32 usb2_control; | ||
112 | u32 usb2_stbus_obc; | ||
113 | u32 usb2_stbus_mess_size; | ||
114 | u32 usb2_stbus_chunk_size; | ||
115 | |||
116 | u32 pcie_regs; | ||
117 | u32 tim_ch; | ||
118 | u32 tim_cl; | ||
119 | u32 gpio_dout; | ||
120 | u32 gpio_din; | ||
121 | u32 gpio_dir; | ||
122 | u32 watchdog; | ||
123 | u32 front_panel; | ||
124 | |||
125 | u32 register_maps; | ||
126 | }; | 64 | }; |
65 | #undef REGISTER_MAP_ELEMENT | ||
66 | |||
67 | /** | ||
68 | * register_map_offset_phys - add an offset to the physical address | ||
69 | * @map: Pointer to the &struct register_map | ||
70 | * @offset: Value to add | ||
71 | * | ||
72 | * Only adds the base to non-zero physical addresses | ||
73 | */ | ||
74 | static inline void register_map_offset_phys(struct register_map *map, | ||
75 | unsigned long offset) | ||
76 | { | ||
77 | #define REGISTER_MAP_ELEMENT(x) do { \ | ||
78 | if (map->x.phys != 0) \ | ||
79 | map->x.phys += offset; \ | ||
80 | } while (false); | ||
81 | |||
82 | #include <asm/mach-powertv/asic_reg_map.h> | ||
83 | #undef REGISTER_MAP_ELEMENT | ||
84 | } | ||
85 | |||
86 | /** | ||
87 | * register_map_virtualize - Convert ®ister_map to virtual addresses | ||
88 | * @map: Pointer to ®ister_map to virtualize | ||
89 | */ | ||
90 | static inline void register_map_virtualize(struct register_map *map) | ||
91 | { | ||
92 | #define REGISTER_MAP_ELEMENT(x) do { \ | ||
93 | map->x.virt = (!map->x.phys) ? NULL : \ | ||
94 | UNCAC_ADDR(phys_to_virt(map->x.phys)); \ | ||
95 | } while (false); | ||
96 | |||
97 | #include <asm/mach-powertv/asic_reg_map.h> | ||
98 | #undef REGISTER_MAP_ELEMENT | ||
99 | } | ||
127 | 100 | ||
128 | extern enum asic_type asic; | 101 | extern struct register_map _asic_register_map; |
129 | extern const struct register_map *register_map; | ||
130 | extern unsigned long asic_phy_base; /* Physical address of ASIC */ | ||
131 | extern unsigned long asic_base; /* Virtual address of ASIC */ | ||
132 | 102 | ||
133 | /* | 103 | /* |
134 | * Macros to interface to registers through their ioremapped address | 104 | * Macros to interface to registers through their ioremapped address |
135 | * asic_reg_offset Returns the offset of a given register from the start | ||
136 | * of the ASIC address space | ||
137 | * asic_reg_phys_addr Returns the physical address of the given register | 105 | * asic_reg_phys_addr Returns the physical address of the given register |
138 | * asic_reg_addr Returns the iomapped virtual address of the given | 106 | * asic_reg_addr Returns the iomapped virtual address of the given |
139 | * register. | 107 | * register. |
140 | */ | 108 | */ |
141 | #define asic_reg_offset(x) (register_map->x) | 109 | #define asic_reg_addr(x) (_asic_register_map.x.virt) |
142 | #define asic_reg_phys_addr(x) (asic_phy_base + asic_reg_offset(x)) | 110 | #define asic_reg_phys_addr(x) (virt_to_phys((void *) CAC_ADDR( \ |
143 | #define asic_reg_addr(x) \ | 111 | (unsigned long) asic_reg_addr(x)))) |
144 | ((unsigned int *) (asic_base + asic_reg_offset(x))) | ||
145 | 112 | ||
146 | /* | 113 | /* |
147 | * The asic_reg macro is gone. It should be replaced by either asic_read or | 114 | * The asic_reg macro is gone. It should be replaced by either asic_read or |
diff --git a/arch/mips/include/asm/mipsregs.h b/arch/mips/include/asm/mipsregs.h index a581d60cbcc2..f4ab3139d737 100644 --- a/arch/mips/include/asm/mipsregs.h +++ b/arch/mips/include/asm/mipsregs.h | |||
@@ -406,6 +406,16 @@ | |||
406 | #define ST0_XX 0x80000000 /* MIPS IV naming */ | 406 | #define ST0_XX 0x80000000 /* MIPS IV naming */ |
407 | 407 | ||
408 | /* | 408 | /* |
409 | * Bitfields and bit numbers in the coprocessor 0 IntCtl register. (MIPSR2) | ||
410 | * | ||
411 | * Refer to your MIPS R4xx0 manual, chapter 5 for explanation. | ||
412 | */ | ||
413 | #define INTCTLB_IPPCI 26 | ||
414 | #define INTCTLF_IPPCI (_ULCAST_(7) << INTCTLB_IPPCI) | ||
415 | #define INTCTLB_IPTI 29 | ||
416 | #define INTCTLF_IPTI (_ULCAST_(7) << INTCTLB_IPTI) | ||
417 | |||
418 | /* | ||
409 | * Bitfields and bit numbers in the coprocessor 0 cause register. | 419 | * Bitfields and bit numbers in the coprocessor 0 cause register. |
410 | * | 420 | * |
411 | * Refer to your MIPS R4xx0 manual, chapter 5 for explanation. | 421 | * Refer to your MIPS R4xx0 manual, chapter 5 for explanation. |
@@ -434,6 +444,8 @@ | |||
434 | #define CAUSEF_IV (_ULCAST_(1) << 23) | 444 | #define CAUSEF_IV (_ULCAST_(1) << 23) |
435 | #define CAUSEB_CE 28 | 445 | #define CAUSEB_CE 28 |
436 | #define CAUSEF_CE (_ULCAST_(3) << 28) | 446 | #define CAUSEF_CE (_ULCAST_(3) << 28) |
447 | #define CAUSEB_TI 30 | ||
448 | #define CAUSEF_TI (_ULCAST_(1) << 30) | ||
437 | #define CAUSEB_BD 31 | 449 | #define CAUSEB_BD 31 |
438 | #define CAUSEF_BD (_ULCAST_(1) << 31) | 450 | #define CAUSEF_BD (_ULCAST_(1) << 31) |
439 | 451 | ||
diff --git a/arch/mips/kernel/cevt-r4k.c b/arch/mips/kernel/cevt-r4k.c index b469ad05d520..0b2450ceb13f 100644 --- a/arch/mips/kernel/cevt-r4k.c +++ b/arch/mips/kernel/cevt-r4k.c | |||
@@ -97,7 +97,7 @@ void mips_event_handler(struct clock_event_device *dev) | |||
97 | */ | 97 | */ |
98 | static int c0_compare_int_pending(void) | 98 | static int c0_compare_int_pending(void) |
99 | { | 99 | { |
100 | return (read_c0_cause() >> cp0_compare_irq) & 0x100; | 100 | return (read_c0_cause() >> cp0_compare_irq_shift) & (1ul << CAUSEB_IP); |
101 | } | 101 | } |
102 | 102 | ||
103 | /* | 103 | /* |
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 308e43460864..338dfe8ed002 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -1403,6 +1403,7 @@ extern void flush_tlb_handlers(void); | |||
1403 | * Timer interrupt | 1403 | * Timer interrupt |
1404 | */ | 1404 | */ |
1405 | int cp0_compare_irq; | 1405 | int cp0_compare_irq; |
1406 | int cp0_compare_irq_shift; | ||
1406 | 1407 | ||
1407 | /* | 1408 | /* |
1408 | * Performance counter IRQ or -1 if shared with timer | 1409 | * Performance counter IRQ or -1 if shared with timer |
@@ -1493,8 +1494,9 @@ void __cpuinit per_cpu_trap_init(void) | |||
1493 | * o read IntCtl.IPPCI to determine the performance counter interrupt | 1494 | * o read IntCtl.IPPCI to determine the performance counter interrupt |
1494 | */ | 1495 | */ |
1495 | if (cpu_has_mips_r2) { | 1496 | if (cpu_has_mips_r2) { |
1496 | cp0_compare_irq = (read_c0_intctl() >> 29) & 7; | 1497 | cp0_compare_irq_shift = CAUSEB_TI - CAUSEB_IP; |
1497 | cp0_perfcount_irq = (read_c0_intctl() >> 26) & 7; | 1498 | cp0_compare_irq = (read_c0_intctl() >> INTCTLB_IPTI) & 7; |
1499 | cp0_perfcount_irq = (read_c0_intctl() >> INTCTLB_IPPCI) & 7; | ||
1498 | if (cp0_perfcount_irq == cp0_compare_irq) | 1500 | if (cp0_perfcount_irq == cp0_compare_irq) |
1499 | cp0_perfcount_irq = -1; | 1501 | cp0_perfcount_irq = -1; |
1500 | } else { | 1502 | } else { |
diff --git a/arch/mips/powertv/asic/asic-calliope.c b/arch/mips/powertv/asic/asic-calliope.c index 03d3884c6270..1ae6623444b2 100644 --- a/arch/mips/powertv/asic/asic-calliope.c +++ b/arch/mips/powertv/asic/asic-calliope.c | |||
@@ -23,76 +23,79 @@ | |||
23 | * Description: Defines the platform resources for the SA settop. | 23 | * Description: Defines the platform resources for the SA settop. |
24 | */ | 24 | */ |
25 | 25 | ||
26 | #include <linux/init.h> | ||
26 | #include <asm/mach-powertv/asic.h> | 27 | #include <asm/mach-powertv/asic.h> |
27 | 28 | ||
28 | const struct register_map calliope_register_map = { | 29 | #define CALLIOPE_ADDR(x) (CALLIOPE_IO_BASE + (x)) |
29 | .eic_slow0_strt_add = 0x800000, | ||
30 | .eic_cfg_bits = 0x800038, | ||
31 | .eic_ready_status = 0x80004c, | ||
32 | 30 | ||
33 | .chipver3 = 0xA00800, | 31 | const struct register_map calliope_register_map __initdata = { |
34 | .chipver2 = 0xA00804, | 32 | .eic_slow0_strt_add = {.phys = CALLIOPE_ADDR(0x800000)}, |
35 | .chipver1 = 0xA00808, | 33 | .eic_cfg_bits = {.phys = CALLIOPE_ADDR(0x800038)}, |
36 | .chipver0 = 0xA0080c, | 34 | .eic_ready_status = {.phys = CALLIOPE_ADDR(0x80004c)}, |
35 | |||
36 | .chipver3 = {.phys = CALLIOPE_ADDR(0xA00800)}, | ||
37 | .chipver2 = {.phys = CALLIOPE_ADDR(0xA00804)}, | ||
38 | .chipver1 = {.phys = CALLIOPE_ADDR(0xA00808)}, | ||
39 | .chipver0 = {.phys = CALLIOPE_ADDR(0xA0080c)}, | ||
37 | 40 | ||
38 | /* The registers of IRBlaster */ | 41 | /* The registers of IRBlaster */ |
39 | .uart1_intstat = 0xA01800, | 42 | .uart1_intstat = {.phys = CALLIOPE_ADDR(0xA01800)}, |
40 | .uart1_inten = 0xA01804, | 43 | .uart1_inten = {.phys = CALLIOPE_ADDR(0xA01804)}, |
41 | .uart1_config1 = 0xA01808, | 44 | .uart1_config1 = {.phys = CALLIOPE_ADDR(0xA01808)}, |
42 | .uart1_config2 = 0xA0180C, | 45 | .uart1_config2 = {.phys = CALLIOPE_ADDR(0xA0180C)}, |
43 | .uart1_divisorhi = 0xA01810, | 46 | .uart1_divisorhi = {.phys = CALLIOPE_ADDR(0xA01810)}, |
44 | .uart1_divisorlo = 0xA01814, | 47 | .uart1_divisorlo = {.phys = CALLIOPE_ADDR(0xA01814)}, |
45 | .uart1_data = 0xA01818, | 48 | .uart1_data = {.phys = CALLIOPE_ADDR(0xA01818)}, |
46 | .uart1_status = 0xA0181C, | 49 | .uart1_status = {.phys = CALLIOPE_ADDR(0xA0181C)}, |
47 | 50 | ||
48 | .int_stat_3 = 0xA02800, | 51 | .int_stat_3 = {.phys = CALLIOPE_ADDR(0xA02800)}, |
49 | .int_stat_2 = 0xA02804, | 52 | .int_stat_2 = {.phys = CALLIOPE_ADDR(0xA02804)}, |
50 | .int_stat_1 = 0xA02808, | 53 | .int_stat_1 = {.phys = CALLIOPE_ADDR(0xA02808)}, |
51 | .int_stat_0 = 0xA0280c, | 54 | .int_stat_0 = {.phys = CALLIOPE_ADDR(0xA0280c)}, |
52 | .int_config = 0xA02810, | 55 | .int_config = {.phys = CALLIOPE_ADDR(0xA02810)}, |
53 | .int_int_scan = 0xA02818, | 56 | .int_int_scan = {.phys = CALLIOPE_ADDR(0xA02818)}, |
54 | .ien_int_3 = 0xA02830, | 57 | .ien_int_3 = {.phys = CALLIOPE_ADDR(0xA02830)}, |
55 | .ien_int_2 = 0xA02834, | 58 | .ien_int_2 = {.phys = CALLIOPE_ADDR(0xA02834)}, |
56 | .ien_int_1 = 0xA02838, | 59 | .ien_int_1 = {.phys = CALLIOPE_ADDR(0xA02838)}, |
57 | .ien_int_0 = 0xA0283c, | 60 | .ien_int_0 = {.phys = CALLIOPE_ADDR(0xA0283c)}, |
58 | .int_level_3_3 = 0xA02880, | 61 | .int_level_3_3 = {.phys = CALLIOPE_ADDR(0xA02880)}, |
59 | .int_level_3_2 = 0xA02884, | 62 | .int_level_3_2 = {.phys = CALLIOPE_ADDR(0xA02884)}, |
60 | .int_level_3_1 = 0xA02888, | 63 | .int_level_3_1 = {.phys = CALLIOPE_ADDR(0xA02888)}, |
61 | .int_level_3_0 = 0xA0288c, | 64 | .int_level_3_0 = {.phys = CALLIOPE_ADDR(0xA0288c)}, |
62 | .int_level_2_3 = 0xA02890, | 65 | .int_level_2_3 = {.phys = CALLIOPE_ADDR(0xA02890)}, |
63 | .int_level_2_2 = 0xA02894, | 66 | .int_level_2_2 = {.phys = CALLIOPE_ADDR(0xA02894)}, |
64 | .int_level_2_1 = 0xA02898, | 67 | .int_level_2_1 = {.phys = CALLIOPE_ADDR(0xA02898)}, |
65 | .int_level_2_0 = 0xA0289c, | 68 | .int_level_2_0 = {.phys = CALLIOPE_ADDR(0xA0289c)}, |
66 | .int_level_1_3 = 0xA028a0, | 69 | .int_level_1_3 = {.phys = CALLIOPE_ADDR(0xA028a0)}, |
67 | .int_level_1_2 = 0xA028a4, | 70 | .int_level_1_2 = {.phys = CALLIOPE_ADDR(0xA028a4)}, |
68 | .int_level_1_1 = 0xA028a8, | 71 | .int_level_1_1 = {.phys = CALLIOPE_ADDR(0xA028a8)}, |
69 | .int_level_1_0 = 0xA028ac, | 72 | .int_level_1_0 = {.phys = CALLIOPE_ADDR(0xA028ac)}, |
70 | .int_level_0_3 = 0xA028b0, | 73 | .int_level_0_3 = {.phys = CALLIOPE_ADDR(0xA028b0)}, |
71 | .int_level_0_2 = 0xA028b4, | 74 | .int_level_0_2 = {.phys = CALLIOPE_ADDR(0xA028b4)}, |
72 | .int_level_0_1 = 0xA028b8, | 75 | .int_level_0_1 = {.phys = CALLIOPE_ADDR(0xA028b8)}, |
73 | .int_level_0_0 = 0xA028bc, | 76 | .int_level_0_0 = {.phys = CALLIOPE_ADDR(0xA028bc)}, |
74 | .int_docsis_en = 0xA028F4, | 77 | .int_docsis_en = {.phys = CALLIOPE_ADDR(0xA028F4)}, |
75 | 78 | ||
76 | .mips_pll_setup = 0x980000, | 79 | .mips_pll_setup = {.phys = CALLIOPE_ADDR(0x980000)}, |
77 | .usb_fs = 0x980030, /* -default 72800028- */ | 80 | .usb_fs = {.phys = CALLIOPE_ADDR(0x980030)}, |
78 | .test_bus = 0x9800CC, | 81 | .test_bus = {.phys = CALLIOPE_ADDR(0x9800CC)}, |
79 | .crt_spare = 0x9800d4, | 82 | .crt_spare = {.phys = CALLIOPE_ADDR(0x9800d4)}, |
80 | .usb2_ohci_int_mask = 0x9A000c, | 83 | .usb2_ohci_int_mask = {.phys = CALLIOPE_ADDR(0x9A000c)}, |
81 | .usb2_strap = 0x9A0014, | 84 | .usb2_strap = {.phys = CALLIOPE_ADDR(0x9A0014)}, |
82 | .ehci_hcapbase = 0x9BFE00, | 85 | .ehci_hcapbase = {.phys = CALLIOPE_ADDR(0x9BFE00)}, |
83 | .ohci_hc_revision = 0x9BFC00, | 86 | .ohci_hc_revision = {.phys = CALLIOPE_ADDR(0x9BFC00)}, |
84 | .bcm1_bs_lmi_steer = 0x9E0004, | 87 | .bcm1_bs_lmi_steer = {.phys = CALLIOPE_ADDR(0x9E0004)}, |
85 | .usb2_control = 0x9E0054, | 88 | .usb2_control = {.phys = CALLIOPE_ADDR(0x9E0054)}, |
86 | .usb2_stbus_obc = 0x9BFF00, | 89 | .usb2_stbus_obc = {.phys = CALLIOPE_ADDR(0x9BFF00)}, |
87 | .usb2_stbus_mess_size = 0x9BFF04, | 90 | .usb2_stbus_mess_size = {.phys = CALLIOPE_ADDR(0x9BFF04)}, |
88 | .usb2_stbus_chunk_size = 0x9BFF08, | 91 | .usb2_stbus_chunk_size = {.phys = CALLIOPE_ADDR(0x9BFF08)}, |
89 | 92 | ||
90 | .pcie_regs = 0x000000, /* -doesn't exist- */ | 93 | .pcie_regs = {.phys = 0x000000}, /* -doesn't exist- */ |
91 | .tim_ch = 0xA02C10, | 94 | .tim_ch = {.phys = CALLIOPE_ADDR(0xA02C10)}, |
92 | .tim_cl = 0xA02C14, | 95 | .tim_cl = {.phys = CALLIOPE_ADDR(0xA02C14)}, |
93 | .gpio_dout = 0xA02c20, | 96 | .gpio_dout = {.phys = CALLIOPE_ADDR(0xA02c20)}, |
94 | .gpio_din = 0xA02c24, | 97 | .gpio_din = {.phys = CALLIOPE_ADDR(0xA02c24)}, |
95 | .gpio_dir = 0xA02c2C, | 98 | .gpio_dir = {.phys = CALLIOPE_ADDR(0xA02c2C)}, |
96 | .watchdog = 0xA02c30, | 99 | .watchdog = {.phys = CALLIOPE_ADDR(0xA02c30)}, |
97 | .front_panel = 0x000000, /* -not used- */ | 100 | .front_panel = {.phys = 0x000000}, /* -not used- */ |
98 | }; | 101 | }; |
diff --git a/arch/mips/powertv/asic/asic-cronus.c b/arch/mips/powertv/asic/asic-cronus.c index 5f4589c9f83d..5bb64bfb508b 100644 --- a/arch/mips/powertv/asic/asic-cronus.c +++ b/arch/mips/powertv/asic/asic-cronus.c | |||
@@ -23,76 +23,79 @@ | |||
23 | * Description: Defines the platform resources for the SA settop. | 23 | * Description: Defines the platform resources for the SA settop. |
24 | */ | 24 | */ |
25 | 25 | ||
26 | #include <linux/init.h> | ||
26 | #include <asm/mach-powertv/asic.h> | 27 | #include <asm/mach-powertv/asic.h> |
27 | 28 | ||
28 | const struct register_map cronus_register_map = { | 29 | #define CRONUS_ADDR(x) (CRONUS_IO_BASE + (x)) |
29 | .eic_slow0_strt_add = 0x000000, | ||
30 | .eic_cfg_bits = 0x000038, | ||
31 | .eic_ready_status = 0x00004C, | ||
32 | 30 | ||
33 | .chipver3 = 0x2A0800, | 31 | const struct register_map cronus_register_map __initdata = { |
34 | .chipver2 = 0x2A0804, | 32 | .eic_slow0_strt_add = {.phys = CRONUS_ADDR(0x000000)}, |
35 | .chipver1 = 0x2A0808, | 33 | .eic_cfg_bits = {.phys = CRONUS_ADDR(0x000038)}, |
36 | .chipver0 = 0x2A080C, | 34 | .eic_ready_status = {.phys = CRONUS_ADDR(0x00004C)}, |
35 | |||
36 | .chipver3 = {.phys = CRONUS_ADDR(0x2A0800)}, | ||
37 | .chipver2 = {.phys = CRONUS_ADDR(0x2A0804)}, | ||
38 | .chipver1 = {.phys = CRONUS_ADDR(0x2A0808)}, | ||
39 | .chipver0 = {.phys = CRONUS_ADDR(0x2A080C)}, | ||
37 | 40 | ||
38 | /* The registers of IRBlaster */ | 41 | /* The registers of IRBlaster */ |
39 | .uart1_intstat = 0x2A1800, | 42 | .uart1_intstat = {.phys = CRONUS_ADDR(0x2A1800)}, |
40 | .uart1_inten = 0x2A1804, | 43 | .uart1_inten = {.phys = CRONUS_ADDR(0x2A1804)}, |
41 | .uart1_config1 = 0x2A1808, | 44 | .uart1_config1 = {.phys = CRONUS_ADDR(0x2A1808)}, |
42 | .uart1_config2 = 0x2A180C, | 45 | .uart1_config2 = {.phys = CRONUS_ADDR(0x2A180C)}, |
43 | .uart1_divisorhi = 0x2A1810, | 46 | .uart1_divisorhi = {.phys = CRONUS_ADDR(0x2A1810)}, |
44 | .uart1_divisorlo = 0x2A1814, | 47 | .uart1_divisorlo = {.phys = CRONUS_ADDR(0x2A1814)}, |
45 | .uart1_data = 0x2A1818, | 48 | .uart1_data = {.phys = CRONUS_ADDR(0x2A1818)}, |
46 | .uart1_status = 0x2A181C, | 49 | .uart1_status = {.phys = CRONUS_ADDR(0x2A181C)}, |
47 | 50 | ||
48 | .int_stat_3 = 0x2A2800, | 51 | .int_stat_3 = {.phys = CRONUS_ADDR(0x2A2800)}, |
49 | .int_stat_2 = 0x2A2804, | 52 | .int_stat_2 = {.phys = CRONUS_ADDR(0x2A2804)}, |
50 | .int_stat_1 = 0x2A2808, | 53 | .int_stat_1 = {.phys = CRONUS_ADDR(0x2A2808)}, |
51 | .int_stat_0 = 0x2A280C, | 54 | .int_stat_0 = {.phys = CRONUS_ADDR(0x2A280C)}, |
52 | .int_config = 0x2A2810, | 55 | .int_config = {.phys = CRONUS_ADDR(0x2A2810)}, |
53 | .int_int_scan = 0x2A2818, | 56 | .int_int_scan = {.phys = CRONUS_ADDR(0x2A2818)}, |
54 | .ien_int_3 = 0x2A2830, | 57 | .ien_int_3 = {.phys = CRONUS_ADDR(0x2A2830)}, |
55 | .ien_int_2 = 0x2A2834, | 58 | .ien_int_2 = {.phys = CRONUS_ADDR(0x2A2834)}, |
56 | .ien_int_1 = 0x2A2838, | 59 | .ien_int_1 = {.phys = CRONUS_ADDR(0x2A2838)}, |
57 | .ien_int_0 = 0x2A283C, | 60 | .ien_int_0 = {.phys = CRONUS_ADDR(0x2A283C)}, |
58 | .int_level_3_3 = 0x2A2880, | 61 | .int_level_3_3 = {.phys = CRONUS_ADDR(0x2A2880)}, |
59 | .int_level_3_2 = 0x2A2884, | 62 | .int_level_3_2 = {.phys = CRONUS_ADDR(0x2A2884)}, |
60 | .int_level_3_1 = 0x2A2888, | 63 | .int_level_3_1 = {.phys = CRONUS_ADDR(0x2A2888)}, |
61 | .int_level_3_0 = 0x2A288C, | 64 | .int_level_3_0 = {.phys = CRONUS_ADDR(0x2A288C)}, |
62 | .int_level_2_3 = 0x2A2890, | 65 | .int_level_2_3 = {.phys = CRONUS_ADDR(0x2A2890)}, |
63 | .int_level_2_2 = 0x2A2894, | 66 | .int_level_2_2 = {.phys = CRONUS_ADDR(0x2A2894)}, |
64 | .int_level_2_1 = 0x2A2898, | 67 | .int_level_2_1 = {.phys = CRONUS_ADDR(0x2A2898)}, |
65 | .int_level_2_0 = 0x2A289C, | 68 | .int_level_2_0 = {.phys = CRONUS_ADDR(0x2A289C)}, |
66 | .int_level_1_3 = 0x2A28A0, | 69 | .int_level_1_3 = {.phys = CRONUS_ADDR(0x2A28A0)}, |
67 | .int_level_1_2 = 0x2A28A4, | 70 | .int_level_1_2 = {.phys = CRONUS_ADDR(0x2A28A4)}, |
68 | .int_level_1_1 = 0x2A28A8, | 71 | .int_level_1_1 = {.phys = CRONUS_ADDR(0x2A28A8)}, |
69 | .int_level_1_0 = 0x2A28AC, | 72 | .int_level_1_0 = {.phys = CRONUS_ADDR(0x2A28AC)}, |
70 | .int_level_0_3 = 0x2A28B0, | 73 | .int_level_0_3 = {.phys = CRONUS_ADDR(0x2A28B0)}, |
71 | .int_level_0_2 = 0x2A28B4, | 74 | .int_level_0_2 = {.phys = CRONUS_ADDR(0x2A28B4)}, |
72 | .int_level_0_1 = 0x2A28B8, | 75 | .int_level_0_1 = {.phys = CRONUS_ADDR(0x2A28B8)}, |
73 | .int_level_0_0 = 0x2A28BC, | 76 | .int_level_0_0 = {.phys = CRONUS_ADDR(0x2A28BC)}, |
74 | .int_docsis_en = 0x2A28F4, | 77 | .int_docsis_en = {.phys = CRONUS_ADDR(0x2A28F4)}, |
75 | 78 | ||
76 | .mips_pll_setup = 0x1C0000, | 79 | .mips_pll_setup = {.phys = CRONUS_ADDR(0x1C0000)}, |
77 | .usb_fs = 0x1C0018, | 80 | .usb_fs = {.phys = CRONUS_ADDR(0x1C0018)}, |
78 | .test_bus = 0x1C00CC, | 81 | .test_bus = {.phys = CRONUS_ADDR(0x1C00CC)}, |
79 | .crt_spare = 0x1c00d4, | 82 | .crt_spare = {.phys = CRONUS_ADDR(0x1c00d4)}, |
80 | .usb2_ohci_int_mask = 0x20000C, | 83 | .usb2_ohci_int_mask = {.phys = CRONUS_ADDR(0x20000C)}, |
81 | .usb2_strap = 0x200014, | 84 | .usb2_strap = {.phys = CRONUS_ADDR(0x200014)}, |
82 | .ehci_hcapbase = 0x21FE00, | 85 | .ehci_hcapbase = {.phys = CRONUS_ADDR(0x21FE00)}, |
83 | .ohci_hc_revision = 0x1E0000, | 86 | .ohci_hc_revision = {.phys = CRONUS_ADDR(0x1E0000)}, |
84 | .bcm1_bs_lmi_steer = 0x2E0008, | 87 | .bcm1_bs_lmi_steer = {.phys = CRONUS_ADDR(0x2E0008)}, |
85 | .usb2_control = 0x2E004C, | 88 | .usb2_control = {.phys = CRONUS_ADDR(0x2E004C)}, |
86 | .usb2_stbus_obc = 0x21FF00, | 89 | .usb2_stbus_obc = {.phys = CRONUS_ADDR(0x21FF00)}, |
87 | .usb2_stbus_mess_size = 0x21FF04, | 90 | .usb2_stbus_mess_size = {.phys = CRONUS_ADDR(0x21FF04)}, |
88 | .usb2_stbus_chunk_size = 0x21FF08, | 91 | .usb2_stbus_chunk_size = {.phys = CRONUS_ADDR(0x21FF08)}, |
89 | 92 | ||
90 | .pcie_regs = 0x220000, | 93 | .pcie_regs = {.phys = CRONUS_ADDR(0x220000)}, |
91 | .tim_ch = 0x2A2C10, | 94 | .tim_ch = {.phys = CRONUS_ADDR(0x2A2C10)}, |
92 | .tim_cl = 0x2A2C14, | 95 | .tim_cl = {.phys = CRONUS_ADDR(0x2A2C14)}, |
93 | .gpio_dout = 0x2A2C20, | 96 | .gpio_dout = {.phys = CRONUS_ADDR(0x2A2C20)}, |
94 | .gpio_din = 0x2A2C24, | 97 | .gpio_din = {.phys = CRONUS_ADDR(0x2A2C24)}, |
95 | .gpio_dir = 0x2A2C2C, | 98 | .gpio_dir = {.phys = CRONUS_ADDR(0x2A2C2C)}, |
96 | .watchdog = 0x2A2C30, | 99 | .watchdog = {.phys = CRONUS_ADDR(0x2A2C30)}, |
97 | .front_panel = 0x2A3800, | 100 | .front_panel = {.phys = CRONUS_ADDR(0x2A3800)}, |
98 | }; | 101 | }; |
diff --git a/arch/mips/powertv/asic/asic-zeus.c b/arch/mips/powertv/asic/asic-zeus.c index 1469daab920e..095cbe10ebb9 100644 --- a/arch/mips/powertv/asic/asic-zeus.c +++ b/arch/mips/powertv/asic/asic-zeus.c | |||
@@ -23,76 +23,79 @@ | |||
23 | * Description: Defines the platform resources for the SA settop. | 23 | * Description: Defines the platform resources for the SA settop. |
24 | */ | 24 | */ |
25 | 25 | ||
26 | #include <linux/init.h> | ||
26 | #include <asm/mach-powertv/asic.h> | 27 | #include <asm/mach-powertv/asic.h> |
27 | 28 | ||
28 | const struct register_map zeus_register_map = { | 29 | #define ZEUS_ADDR(x) (ZEUS_IO_BASE + (x)) |
29 | .eic_slow0_strt_add = 0x000000, | ||
30 | .eic_cfg_bits = 0x000038, | ||
31 | .eic_ready_status = 0x00004c, | ||
32 | 30 | ||
33 | .chipver3 = 0x280800, | 31 | const struct register_map zeus_register_map __initdata = { |
34 | .chipver2 = 0x280804, | 32 | .eic_slow0_strt_add = {.phys = ZEUS_ADDR(0x000000)}, |
35 | .chipver1 = 0x280808, | 33 | .eic_cfg_bits = {.phys = ZEUS_ADDR(0x000038)}, |
36 | .chipver0 = 0x28080c, | 34 | .eic_ready_status = {.phys = ZEUS_ADDR(0x00004c)}, |
35 | |||
36 | .chipver3 = {.phys = ZEUS_ADDR(0x280800)}, | ||
37 | .chipver2 = {.phys = ZEUS_ADDR(0x280804)}, | ||
38 | .chipver1 = {.phys = ZEUS_ADDR(0x280808)}, | ||
39 | .chipver0 = {.phys = ZEUS_ADDR(0x28080c)}, | ||
37 | 40 | ||
38 | /* The registers of IRBlaster */ | 41 | /* The registers of IRBlaster */ |
39 | .uart1_intstat = 0x281800, | 42 | .uart1_intstat = {.phys = ZEUS_ADDR(0x281800)}, |
40 | .uart1_inten = 0x281804, | 43 | .uart1_inten = {.phys = ZEUS_ADDR(0x281804)}, |
41 | .uart1_config1 = 0x281808, | 44 | .uart1_config1 = {.phys = ZEUS_ADDR(0x281808)}, |
42 | .uart1_config2 = 0x28180C, | 45 | .uart1_config2 = {.phys = ZEUS_ADDR(0x28180C)}, |
43 | .uart1_divisorhi = 0x281810, | 46 | .uart1_divisorhi = {.phys = ZEUS_ADDR(0x281810)}, |
44 | .uart1_divisorlo = 0x281814, | 47 | .uart1_divisorlo = {.phys = ZEUS_ADDR(0x281814)}, |
45 | .uart1_data = 0x281818, | 48 | .uart1_data = {.phys = ZEUS_ADDR(0x281818)}, |
46 | .uart1_status = 0x28181C, | 49 | .uart1_status = {.phys = ZEUS_ADDR(0x28181C)}, |
47 | 50 | ||
48 | .int_stat_3 = 0x282800, | 51 | .int_stat_3 = {.phys = ZEUS_ADDR(0x282800)}, |
49 | .int_stat_2 = 0x282804, | 52 | .int_stat_2 = {.phys = ZEUS_ADDR(0x282804)}, |
50 | .int_stat_1 = 0x282808, | 53 | .int_stat_1 = {.phys = ZEUS_ADDR(0x282808)}, |
51 | .int_stat_0 = 0x28280c, | 54 | .int_stat_0 = {.phys = ZEUS_ADDR(0x28280c)}, |
52 | .int_config = 0x282810, | 55 | .int_config = {.phys = ZEUS_ADDR(0x282810)}, |
53 | .int_int_scan = 0x282818, | 56 | .int_int_scan = {.phys = ZEUS_ADDR(0x282818)}, |
54 | .ien_int_3 = 0x282830, | 57 | .ien_int_3 = {.phys = ZEUS_ADDR(0x282830)}, |
55 | .ien_int_2 = 0x282834, | 58 | .ien_int_2 = {.phys = ZEUS_ADDR(0x282834)}, |
56 | .ien_int_1 = 0x282838, | 59 | .ien_int_1 = {.phys = ZEUS_ADDR(0x282838)}, |
57 | .ien_int_0 = 0x28283c, | 60 | .ien_int_0 = {.phys = ZEUS_ADDR(0x28283c)}, |
58 | .int_level_3_3 = 0x282880, | 61 | .int_level_3_3 = {.phys = ZEUS_ADDR(0x282880)}, |
59 | .int_level_3_2 = 0x282884, | 62 | .int_level_3_2 = {.phys = ZEUS_ADDR(0x282884)}, |
60 | .int_level_3_1 = 0x282888, | 63 | .int_level_3_1 = {.phys = ZEUS_ADDR(0x282888)}, |
61 | .int_level_3_0 = 0x28288c, | 64 | .int_level_3_0 = {.phys = ZEUS_ADDR(0x28288c)}, |
62 | .int_level_2_3 = 0x282890, | 65 | .int_level_2_3 = {.phys = ZEUS_ADDR(0x282890)}, |
63 | .int_level_2_2 = 0x282894, | 66 | .int_level_2_2 = {.phys = ZEUS_ADDR(0x282894)}, |
64 | .int_level_2_1 = 0x282898, | 67 | .int_level_2_1 = {.phys = ZEUS_ADDR(0x282898)}, |
65 | .int_level_2_0 = 0x28289c, | 68 | .int_level_2_0 = {.phys = ZEUS_ADDR(0x28289c)}, |
66 | .int_level_1_3 = 0x2828a0, | 69 | .int_level_1_3 = {.phys = ZEUS_ADDR(0x2828a0)}, |
67 | .int_level_1_2 = 0x2828a4, | 70 | .int_level_1_2 = {.phys = ZEUS_ADDR(0x2828a4)}, |
68 | .int_level_1_1 = 0x2828a8, | 71 | .int_level_1_1 = {.phys = ZEUS_ADDR(0x2828a8)}, |
69 | .int_level_1_0 = 0x2828ac, | 72 | .int_level_1_0 = {.phys = ZEUS_ADDR(0x2828ac)}, |
70 | .int_level_0_3 = 0x2828b0, | 73 | .int_level_0_3 = {.phys = ZEUS_ADDR(0x2828b0)}, |
71 | .int_level_0_2 = 0x2828b4, | 74 | .int_level_0_2 = {.phys = ZEUS_ADDR(0x2828b4)}, |
72 | .int_level_0_1 = 0x2828b8, | 75 | .int_level_0_1 = {.phys = ZEUS_ADDR(0x2828b8)}, |
73 | .int_level_0_0 = 0x2828bc, | 76 | .int_level_0_0 = {.phys = ZEUS_ADDR(0x2828bc)}, |
74 | .int_docsis_en = 0x2828F4, | 77 | .int_docsis_en = {.phys = ZEUS_ADDR(0x2828F4)}, |
75 | 78 | ||
76 | .mips_pll_setup = 0x1a0000, | 79 | .mips_pll_setup = {.phys = ZEUS_ADDR(0x1a0000)}, |
77 | .usb_fs = 0x1a0018, | 80 | .usb_fs = {.phys = ZEUS_ADDR(0x1a0018)}, |
78 | .test_bus = 0x1a0238, | 81 | .test_bus = {.phys = ZEUS_ADDR(0x1a0238)}, |
79 | .crt_spare = 0x1a0090, | 82 | .crt_spare = {.phys = ZEUS_ADDR(0x1a0090)}, |
80 | .usb2_ohci_int_mask = 0x1e000c, | 83 | .usb2_ohci_int_mask = {.phys = ZEUS_ADDR(0x1e000c)}, |
81 | .usb2_strap = 0x1e0014, | 84 | .usb2_strap = {.phys = ZEUS_ADDR(0x1e0014)}, |
82 | .ehci_hcapbase = 0x1FFE00, | 85 | .ehci_hcapbase = {.phys = ZEUS_ADDR(0x1FFE00)}, |
83 | .ohci_hc_revision = 0x1FFC00, | 86 | .ohci_hc_revision = {.phys = ZEUS_ADDR(0x1FFC00)}, |
84 | .bcm1_bs_lmi_steer = 0x2C0008, | 87 | .bcm1_bs_lmi_steer = {.phys = ZEUS_ADDR(0x2C0008)}, |
85 | .usb2_control = 0x2c01a0, | 88 | .usb2_control = {.phys = ZEUS_ADDR(0x2c01a0)}, |
86 | .usb2_stbus_obc = 0x1FFF00, | 89 | .usb2_stbus_obc = {.phys = ZEUS_ADDR(0x1FFF00)}, |
87 | .usb2_stbus_mess_size = 0x1FFF04, | 90 | .usb2_stbus_mess_size = {.phys = ZEUS_ADDR(0x1FFF04)}, |
88 | .usb2_stbus_chunk_size = 0x1FFF08, | 91 | .usb2_stbus_chunk_size = {.phys = ZEUS_ADDR(0x1FFF08)}, |
89 | 92 | ||
90 | .pcie_regs = 0x200000, | 93 | .pcie_regs = {.phys = ZEUS_ADDR(0x200000)}, |
91 | .tim_ch = 0x282C10, | 94 | .tim_ch = {.phys = ZEUS_ADDR(0x282C10)}, |
92 | .tim_cl = 0x282C14, | 95 | .tim_cl = {.phys = ZEUS_ADDR(0x282C14)}, |
93 | .gpio_dout = 0x282c20, | 96 | .gpio_dout = {.phys = ZEUS_ADDR(0x282c20)}, |
94 | .gpio_din = 0x282c24, | 97 | .gpio_din = {.phys = ZEUS_ADDR(0x282c24)}, |
95 | .gpio_dir = 0x282c2C, | 98 | .gpio_dir = {.phys = ZEUS_ADDR(0x282c2C)}, |
96 | .watchdog = 0x282c30, | 99 | .watchdog = {.phys = ZEUS_ADDR(0x282c30)}, |
97 | .front_panel = 0x283800, | 100 | .front_panel = {.phys = ZEUS_ADDR(0x283800)}, |
98 | }; | 101 | }; |
diff --git a/arch/mips/powertv/asic/asic_devices.c b/arch/mips/powertv/asic/asic_devices.c index bae82880b6b5..6a882194e063 100644 --- a/arch/mips/powertv/asic/asic_devices.c +++ b/arch/mips/powertv/asic/asic_devices.c | |||
@@ -67,8 +67,8 @@ enum asic_type asic; | |||
67 | 67 | ||
68 | unsigned int platform_features; | 68 | unsigned int platform_features; |
69 | unsigned int platform_family; | 69 | unsigned int platform_family; |
70 | const struct register_map *register_map; | 70 | struct register_map _asic_register_map; |
71 | EXPORT_SYMBOL(register_map); /* Exported for testing */ | 71 | EXPORT_SYMBOL(_asic_register_map); /* Exported for testing */ |
72 | unsigned long asic_phy_base; | 72 | unsigned long asic_phy_base; |
73 | unsigned long asic_base; | 73 | unsigned long asic_base; |
74 | EXPORT_SYMBOL(asic_base); /* Exported for testing */ | 74 | EXPORT_SYMBOL(asic_base); /* Exported for testing */ |
@@ -418,6 +418,15 @@ void platform_unconfigure_usb_ohci() | |||
418 | { | 418 | { |
419 | } | 419 | } |
420 | 420 | ||
421 | static void __init set_register_map(unsigned long phys_base, | ||
422 | const struct register_map *map) | ||
423 | { | ||
424 | asic_phy_base = phys_base; | ||
425 | _asic_register_map = *map; | ||
426 | register_map_virtualize(&_asic_register_map); | ||
427 | asic_base = (unsigned long)ioremap_nocache(phys_base, ASIC_IO_SIZE); | ||
428 | } | ||
429 | |||
421 | /** | 430 | /** |
422 | * configure_platform - configuration based on platform type. | 431 | * configure_platform - configuration based on platform type. |
423 | */ | 432 | */ |
@@ -431,10 +440,7 @@ void __init configure_platform(void) | |||
431 | case FAMILY_1500VZF: | 440 | case FAMILY_1500VZF: |
432 | platform_features = FFS_CAPABLE; | 441 | platform_features = FFS_CAPABLE; |
433 | asic = ASIC_CALLIOPE; | 442 | asic = ASIC_CALLIOPE; |
434 | asic_phy_base = CALLIOPE_IO_BASE; | 443 | set_register_map(CALLIOPE_IO_BASE, &calliope_register_map); |
435 | register_map = &calliope_register_map; | ||
436 | asic_base = (unsigned long)ioremap_nocache(asic_phy_base, | ||
437 | ASIC_IO_SIZE); | ||
438 | 444 | ||
439 | if (platform_family == FAMILY_1500VZE) { | 445 | if (platform_family == FAMILY_1500VZE) { |
440 | gp_resources = non_dvr_vze_calliope_resources; | 446 | gp_resources = non_dvr_vze_calliope_resources; |
@@ -455,10 +461,7 @@ void __init configure_platform(void) | |||
455 | platform_features = FFS_CAPABLE | PCIE_CAPABLE | | 461 | platform_features = FFS_CAPABLE | PCIE_CAPABLE | |
456 | DISPLAY_CAPABLE; | 462 | DISPLAY_CAPABLE; |
457 | asic = ASIC_ZEUS; | 463 | asic = ASIC_ZEUS; |
458 | asic_phy_base = ZEUS_IO_BASE; | 464 | set_register_map(ZEUS_IO_BASE, &zeus_register_map); |
459 | register_map = &zeus_register_map; | ||
460 | asic_base = (unsigned long)ioremap_nocache(asic_phy_base, | ||
461 | ASIC_IO_SIZE); | ||
462 | gp_resources = non_dvr_zeus_resources; | 465 | gp_resources = non_dvr_zeus_resources; |
463 | 466 | ||
464 | pr_info("Platform: 4500 - ZEUS, NON_DVR_CAPABLE\n"); | 467 | pr_info("Platform: 4500 - ZEUS, NON_DVR_CAPABLE\n"); |
@@ -471,11 +474,6 @@ void __init configure_platform(void) | |||
471 | /* The settop has PCIE but it isn't used, so don't advertise | 474 | /* The settop has PCIE but it isn't used, so don't advertise |
472 | * it*/ | 475 | * it*/ |
473 | platform_features = FFS_CAPABLE | DISPLAY_CAPABLE; | 476 | platform_features = FFS_CAPABLE | DISPLAY_CAPABLE; |
474 | asic_phy_base = CRONUS_IO_BASE; /* same as Cronus */ | ||
475 | register_map = &cronus_register_map; /* same as Cronus */ | ||
476 | asic_base = (unsigned long)ioremap_nocache(asic_phy_base, | ||
477 | ASIC_IO_SIZE); | ||
478 | gp_resources = non_dvr_cronuslite_resources; | ||
479 | 477 | ||
480 | /* ASIC version will determine if this is a real CronusLite or | 478 | /* ASIC version will determine if this is a real CronusLite or |
481 | * Castrati(Cronus) */ | 479 | * Castrati(Cronus) */ |
@@ -489,6 +487,9 @@ void __init configure_platform(void) | |||
489 | else | 487 | else |
490 | asic = ASIC_CRONUSLITE; | 488 | asic = ASIC_CRONUSLITE; |
491 | 489 | ||
490 | /* Cronus and Cronus Lite have the same register map */ | ||
491 | set_register_map(CRONUS_IO_BASE, &cronus_register_map); | ||
492 | gp_resources = non_dvr_cronuslite_resources; | ||
492 | pr_info("Platform: 4600 - %s, NON_DVR_CAPABLE, " | 493 | pr_info("Platform: 4600 - %s, NON_DVR_CAPABLE, " |
493 | "chipversion=0x%08X\n", | 494 | "chipversion=0x%08X\n", |
494 | (asic == ASIC_CRONUS) ? "CRONUS" : "CRONUS LITE", | 495 | (asic == ASIC_CRONUS) ? "CRONUS" : "CRONUS LITE", |
@@ -498,10 +499,7 @@ void __init configure_platform(void) | |||
498 | case FAMILY_4600VZA: | 499 | case FAMILY_4600VZA: |
499 | platform_features = FFS_CAPABLE | DISPLAY_CAPABLE; | 500 | platform_features = FFS_CAPABLE | DISPLAY_CAPABLE; |
500 | asic = ASIC_CRONUS; | 501 | asic = ASIC_CRONUS; |
501 | asic_phy_base = CRONUS_IO_BASE; | 502 | set_register_map(CRONUS_IO_BASE, &cronus_register_map); |
502 | register_map = &cronus_register_map; | ||
503 | asic_base = (unsigned long)ioremap_nocache(asic_phy_base, | ||
504 | ASIC_IO_SIZE); | ||
505 | gp_resources = non_dvr_cronus_resources; | 503 | gp_resources = non_dvr_cronus_resources; |
506 | 504 | ||
507 | pr_info("Platform: Vz Class A - CRONUS, NON_DVR_CAPABLE\n"); | 505 | pr_info("Platform: Vz Class A - CRONUS, NON_DVR_CAPABLE\n"); |
@@ -512,10 +510,7 @@ void __init configure_platform(void) | |||
512 | platform_features = DVR_CAPABLE | PCIE_CAPABLE | | 510 | platform_features = DVR_CAPABLE | PCIE_CAPABLE | |
513 | DISPLAY_CAPABLE; | 511 | DISPLAY_CAPABLE; |
514 | asic = ASIC_ZEUS; | 512 | asic = ASIC_ZEUS; |
515 | asic_phy_base = ZEUS_IO_BASE; | 513 | set_register_map(ZEUS_IO_BASE, &zeus_register_map); |
516 | register_map = &zeus_register_map; | ||
517 | asic_base = (unsigned long)ioremap_nocache(asic_phy_base, | ||
518 | ASIC_IO_SIZE); | ||
519 | gp_resources = dvr_zeus_resources; | 514 | gp_resources = dvr_zeus_resources; |
520 | 515 | ||
521 | pr_info("Platform: 8500/RNG200 - ZEUS, DVR_CAPABLE\n"); | 516 | pr_info("Platform: 8500/RNG200 - ZEUS, DVR_CAPABLE\n"); |
@@ -526,10 +521,7 @@ void __init configure_platform(void) | |||
526 | platform_features = DVR_CAPABLE | PCIE_CAPABLE | | 521 | platform_features = DVR_CAPABLE | PCIE_CAPABLE | |
527 | DISPLAY_CAPABLE; | 522 | DISPLAY_CAPABLE; |
528 | asic = ASIC_CRONUS; | 523 | asic = ASIC_CRONUS; |
529 | asic_phy_base = CRONUS_IO_BASE; | 524 | set_register_map(CRONUS_IO_BASE, &cronus_register_map); |
530 | register_map = &cronus_register_map; | ||
531 | asic_base = (unsigned long)ioremap_nocache(asic_phy_base, | ||
532 | ASIC_IO_SIZE); | ||
533 | gp_resources = dvr_cronus_resources; | 525 | gp_resources = dvr_cronus_resources; |
534 | 526 | ||
535 | pr_info("Platform: 8600/Vz Class B - CRONUS, " | 527 | pr_info("Platform: 8600/Vz Class B - CRONUS, " |
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 826a30a00f59..bb2465bcb327 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
@@ -20,7 +20,7 @@ | |||
20 | all: $(obj)/zImage | 20 | all: $(obj)/zImage |
21 | 21 | ||
22 | BOOTCFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ | 22 | BOOTCFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ |
23 | -fno-strict-aliasing -Os -msoft-float -pipe -D__KERNEL__\ | 23 | -fno-strict-aliasing -Os -msoft-float -pipe \ |
24 | -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \ | 24 | -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \ |
25 | -isystem $(shell $(CROSS32CC) -print-file-name=include) | 25 | -isystem $(shell $(CROSS32CC) -print-file-name=include) |
26 | BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc | 26 | BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc |
@@ -34,8 +34,6 @@ BOOTCFLAGS += -fno-stack-protector | |||
34 | endif | 34 | endif |
35 | 35 | ||
36 | BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj) | 36 | BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj) |
37 | BOOTCFLAGS += -include include/linux/autoconf.h -Iarch/powerpc/include | ||
38 | BOOTCFLAGS += -Iinclude | ||
39 | 37 | ||
40 | DTS_FLAGS ?= -p 1024 | 38 | DTS_FLAGS ?= -p 1024 |
41 | 39 | ||
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper index 390512ae7f86..f4594ed09a20 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper | |||
@@ -43,6 +43,9 @@ gzip=.gz | |||
43 | # cross-compilation prefix | 43 | # cross-compilation prefix |
44 | CROSS= | 44 | CROSS= |
45 | 45 | ||
46 | # mkimage wrapper script | ||
47 | MKIMAGE=$srctree/scripts/mkuboot.sh | ||
48 | |||
46 | # directory for object and other files used by this script | 49 | # directory for object and other files used by this script |
47 | object=arch/powerpc/boot | 50 | object=arch/powerpc/boot |
48 | objbin=$object | 51 | objbin=$object |
@@ -267,7 +270,7 @@ membase=`${CROSS}objdump -p "$kernel" | grep -m 1 LOAD | awk '{print $7}'` | |||
267 | case "$platform" in | 270 | case "$platform" in |
268 | uboot) | 271 | uboot) |
269 | rm -f "$ofile" | 272 | rm -f "$ofile" |
270 | mkimage -A ppc -O linux -T kernel -C gzip -a $membase -e $membase \ | 273 | ${MKIMAGE} -A ppc -O linux -T kernel -C gzip -a $membase -e $membase \ |
271 | $uboot_version -d "$vmz" "$ofile" | 274 | $uboot_version -d "$vmz" "$ofile" |
272 | if [ -z "$cacheit" ]; then | 275 | if [ -z "$cacheit" ]; then |
273 | rm -f "$vmz" | 276 | rm -f "$vmz" |
@@ -327,7 +330,7 @@ coff) | |||
327 | ;; | 330 | ;; |
328 | cuboot*) | 331 | cuboot*) |
329 | gzip -f -9 "$ofile" | 332 | gzip -f -9 "$ofile" |
330 | mkimage -A ppc -O linux -T kernel -C gzip -a "$base" -e "$entry" \ | 333 | ${MKIMAGE} -A ppc -O linux -T kernel -C gzip -a "$base" -e "$entry" \ |
331 | $uboot_version -d "$ofile".gz "$ofile" | 334 | $uboot_version -d "$ofile".gz "$ofile" |
332 | ;; | 335 | ;; |
333 | treeboot*) | 336 | treeboot*) |
diff --git a/arch/powerpc/configs/52xx/cm5200_defconfig b/arch/powerpc/configs/52xx/cm5200_defconfig index 0396ce7bffc6..ff9bdb28197d 100644 --- a/arch/powerpc/configs/52xx/cm5200_defconfig +++ b/arch/powerpc/configs/52xx/cm5200_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.32-rc4 | 3 | # Linux kernel version: 2.6.33-rc2 |
4 | # Thu Oct 15 10:33:22 2009 | 4 | # Wed Dec 30 14:45:07 2009 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -36,6 +36,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
38 | CONFIG_IRQ_PER_CPU=y | 38 | CONFIG_IRQ_PER_CPU=y |
39 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | 40 | CONFIG_STACKTRACE_SUPPORT=y |
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y | |||
58 | CONFIG_GENERIC_BUG=y | 59 | CONFIG_GENERIC_BUG=y |
59 | CONFIG_DTC=y | 60 | CONFIG_DTC=y |
60 | CONFIG_DEFAULT_UIMAGE=y | 61 | CONFIG_DEFAULT_UIMAGE=y |
62 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
61 | # CONFIG_PPC_DCR_NATIVE is not set | 63 | # CONFIG_PPC_DCR_NATIVE is not set |
62 | # CONFIG_PPC_DCR_MMIO is not set | 64 | # CONFIG_PPC_DCR_MMIO is not set |
63 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 65 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
85 | # | 87 | # |
86 | CONFIG_TREE_RCU=y | 88 | CONFIG_TREE_RCU=y |
87 | # CONFIG_TREE_PREEMPT_RCU is not set | 89 | # CONFIG_TREE_PREEMPT_RCU is not set |
90 | # CONFIG_TINY_RCU is not set | ||
88 | # CONFIG_RCU_TRACE is not set | 91 | # CONFIG_RCU_TRACE is not set |
89 | CONFIG_RCU_FANOUT=32 | 92 | CONFIG_RCU_FANOUT=32 |
90 | # CONFIG_RCU_FANOUT_EXACT is not set | 93 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -166,14 +169,41 @@ CONFIG_LBDAF=y | |||
166 | # IO Schedulers | 169 | # IO Schedulers |
167 | # | 170 | # |
168 | CONFIG_IOSCHED_NOOP=y | 171 | CONFIG_IOSCHED_NOOP=y |
169 | CONFIG_IOSCHED_AS=y | ||
170 | CONFIG_IOSCHED_DEADLINE=y | 172 | CONFIG_IOSCHED_DEADLINE=y |
171 | CONFIG_IOSCHED_CFQ=y | 173 | CONFIG_IOSCHED_CFQ=y |
172 | CONFIG_DEFAULT_AS=y | ||
173 | # CONFIG_DEFAULT_DEADLINE is not set | 174 | # CONFIG_DEFAULT_DEADLINE is not set |
174 | # CONFIG_DEFAULT_CFQ is not set | 175 | CONFIG_DEFAULT_CFQ=y |
175 | # CONFIG_DEFAULT_NOOP is not set | 176 | # CONFIG_DEFAULT_NOOP is not set |
176 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 177 | CONFIG_DEFAULT_IOSCHED="cfq" |
178 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
179 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
180 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
181 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
182 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
183 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
184 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
185 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
186 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
187 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
188 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
189 | # CONFIG_INLINE_READ_LOCK is not set | ||
190 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
191 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
192 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
193 | CONFIG_INLINE_READ_UNLOCK=y | ||
194 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
195 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
196 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
197 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
198 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
199 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
200 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
201 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
202 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
203 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
204 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
205 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
206 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
177 | # CONFIG_FREEZER is not set | 207 | # CONFIG_FREEZER is not set |
178 | 208 | ||
179 | # | 209 | # |
@@ -189,6 +219,7 @@ CONFIG_PPC_MPC5200_SIMPLE=y | |||
189 | # CONFIG_PPC_MEDIA5200 is not set | 219 | # CONFIG_PPC_MEDIA5200 is not set |
190 | # CONFIG_PPC_MPC5200_BUGFIX is not set | 220 | # CONFIG_PPC_MPC5200_BUGFIX is not set |
191 | # CONFIG_PPC_MPC5200_GPIO is not set | 221 | # CONFIG_PPC_MPC5200_GPIO is not set |
222 | # CONFIG_PPC_MPC5200_LPBFIFO is not set | ||
192 | # CONFIG_PPC_PMAC is not set | 223 | # CONFIG_PPC_PMAC is not set |
193 | # CONFIG_PPC_CELL is not set | 224 | # CONFIG_PPC_CELL is not set |
194 | # CONFIG_PPC_CELL_NATIVE is not set | 225 | # CONFIG_PPC_CELL_NATIVE is not set |
@@ -243,6 +274,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
243 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 274 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
244 | # CONFIG_KEXEC is not set | 275 | # CONFIG_KEXEC is not set |
245 | # CONFIG_CRASH_DUMP is not set | 276 | # CONFIG_CRASH_DUMP is not set |
277 | CONFIG_SPARSE_IRQ=y | ||
246 | CONFIG_MAX_ACTIVE_REGIONS=32 | 278 | CONFIG_MAX_ACTIVE_REGIONS=32 |
247 | CONFIG_ARCH_FLATMEM_ENABLE=y | 279 | CONFIG_ARCH_FLATMEM_ENABLE=y |
248 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 280 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -259,8 +291,6 @@ CONFIG_MIGRATION=y | |||
259 | CONFIG_ZONE_DMA_FLAG=1 | 291 | CONFIG_ZONE_DMA_FLAG=1 |
260 | CONFIG_BOUNCE=y | 292 | CONFIG_BOUNCE=y |
261 | CONFIG_VIRT_TO_BUS=y | 293 | CONFIG_VIRT_TO_BUS=y |
262 | CONFIG_HAVE_MLOCK=y | ||
263 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
264 | # CONFIG_KSM is not set | 294 | # CONFIG_KSM is not set |
265 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 295 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
266 | CONFIG_PPC_4K_PAGES=y | 296 | CONFIG_PPC_4K_PAGES=y |
@@ -273,6 +303,7 @@ CONFIG_PROC_DEVICETREE=y | |||
273 | CONFIG_EXTRA_TARGETS="" | 303 | CONFIG_EXTRA_TARGETS="" |
274 | CONFIG_PM=y | 304 | CONFIG_PM=y |
275 | # CONFIG_PM_DEBUG is not set | 305 | # CONFIG_PM_DEBUG is not set |
306 | # CONFIG_HIBERNATION is not set | ||
276 | # CONFIG_PM_RUNTIME is not set | 307 | # CONFIG_PM_RUNTIME is not set |
277 | CONFIG_SECCOMP=y | 308 | CONFIG_SECCOMP=y |
278 | CONFIG_ISA_DMA_API=y | 309 | CONFIG_ISA_DMA_API=y |
@@ -378,7 +409,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
378 | # CONFIG_IRDA is not set | 409 | # CONFIG_IRDA is not set |
379 | # CONFIG_BT is not set | 410 | # CONFIG_BT is not set |
380 | # CONFIG_AF_RXRPC is not set | 411 | # CONFIG_AF_RXRPC is not set |
381 | # CONFIG_WIRELESS is not set | 412 | CONFIG_WIRELESS=y |
413 | # CONFIG_CFG80211 is not set | ||
414 | # CONFIG_LIB80211 is not set | ||
415 | |||
416 | # | ||
417 | # CFG80211 needs to be enabled for MAC80211 | ||
418 | # | ||
382 | # CONFIG_WIMAX is not set | 419 | # CONFIG_WIMAX is not set |
383 | # CONFIG_RFKILL is not set | 420 | # CONFIG_RFKILL is not set |
384 | # CONFIG_NET_9P is not set | 421 | # CONFIG_NET_9P is not set |
@@ -489,6 +526,10 @@ CONFIG_BLK_DEV=y | |||
489 | # CONFIG_BLK_DEV_COW_COMMON is not set | 526 | # CONFIG_BLK_DEV_COW_COMMON is not set |
490 | CONFIG_BLK_DEV_LOOP=y | 527 | CONFIG_BLK_DEV_LOOP=y |
491 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 528 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
529 | |||
530 | # | ||
531 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
532 | # | ||
492 | # CONFIG_BLK_DEV_NBD is not set | 533 | # CONFIG_BLK_DEV_NBD is not set |
493 | # CONFIG_BLK_DEV_UB is not set | 534 | # CONFIG_BLK_DEV_UB is not set |
494 | CONFIG_BLK_DEV_RAM=y | 535 | CONFIG_BLK_DEV_RAM=y |
@@ -587,8 +628,8 @@ CONFIG_FEC_MPC52xx_MDIO=y | |||
587 | # CONFIG_NETDEV_1000 is not set | 628 | # CONFIG_NETDEV_1000 is not set |
588 | # CONFIG_NETDEV_10000 is not set | 629 | # CONFIG_NETDEV_10000 is not set |
589 | CONFIG_WLAN=y | 630 | CONFIG_WLAN=y |
590 | # CONFIG_WLAN_PRE80211 is not set | 631 | # CONFIG_USB_ZD1201 is not set |
591 | # CONFIG_WLAN_80211 is not set | 632 | # CONFIG_HOSTAP is not set |
592 | 633 | ||
593 | # | 634 | # |
594 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 635 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -643,6 +684,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
643 | CONFIG_SERIAL_MPC52xx=y | 684 | CONFIG_SERIAL_MPC52xx=y |
644 | CONFIG_SERIAL_MPC52xx_CONSOLE=y | 685 | CONFIG_SERIAL_MPC52xx_CONSOLE=y |
645 | CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=57600 | 686 | CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=57600 |
687 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
646 | CONFIG_UNIX98_PTYS=y | 688 | CONFIG_UNIX98_PTYS=y |
647 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 689 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
648 | CONFIG_LEGACY_PTYS=y | 690 | CONFIG_LEGACY_PTYS=y |
@@ -688,7 +730,6 @@ CONFIG_I2C_MPC=y | |||
688 | # | 730 | # |
689 | # Miscellaneous I2C Chip support | 731 | # Miscellaneous I2C Chip support |
690 | # | 732 | # |
691 | # CONFIG_DS1682 is not set | ||
692 | # CONFIG_SENSORS_TSL2550 is not set | 733 | # CONFIG_SENSORS_TSL2550 is not set |
693 | # CONFIG_I2C_DEBUG_CORE is not set | 734 | # CONFIG_I2C_DEBUG_CORE is not set |
694 | # CONFIG_I2C_DEBUG_ALGO is not set | 735 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -735,11 +776,13 @@ CONFIG_SSB_POSSIBLE=y | |||
735 | # CONFIG_TWL4030_CORE is not set | 776 | # CONFIG_TWL4030_CORE is not set |
736 | # CONFIG_MFD_TMIO is not set | 777 | # CONFIG_MFD_TMIO is not set |
737 | # CONFIG_PMIC_DA903X is not set | 778 | # CONFIG_PMIC_DA903X is not set |
779 | # CONFIG_PMIC_ADP5520 is not set | ||
738 | # CONFIG_MFD_WM8400 is not set | 780 | # CONFIG_MFD_WM8400 is not set |
739 | # CONFIG_MFD_WM831X is not set | 781 | # CONFIG_MFD_WM831X is not set |
740 | # CONFIG_MFD_WM8350_I2C is not set | 782 | # CONFIG_MFD_WM8350_I2C is not set |
741 | # CONFIG_MFD_PCF50633 is not set | 783 | # CONFIG_MFD_PCF50633 is not set |
742 | # CONFIG_AB3100_CORE is not set | 784 | # CONFIG_AB3100_CORE is not set |
785 | # CONFIG_MFD_88PM8607 is not set | ||
743 | # CONFIG_REGULATOR is not set | 786 | # CONFIG_REGULATOR is not set |
744 | # CONFIG_MEDIA_SUPPORT is not set | 787 | # CONFIG_MEDIA_SUPPORT is not set |
745 | 788 | ||
@@ -797,7 +840,6 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y | |||
797 | # CONFIG_USB_SL811_HCD is not set | 840 | # CONFIG_USB_SL811_HCD is not set |
798 | # CONFIG_USB_R8A66597_HCD is not set | 841 | # CONFIG_USB_R8A66597_HCD is not set |
799 | # CONFIG_USB_HWA_HCD is not set | 842 | # CONFIG_USB_HWA_HCD is not set |
800 | # CONFIG_USB_MUSB_HDRC is not set | ||
801 | 843 | ||
802 | # | 844 | # |
803 | # USB Device Class drivers | 845 | # USB Device Class drivers |
@@ -1137,6 +1179,7 @@ CONFIG_SCHED_DEBUG=y | |||
1137 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | 1179 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set |
1138 | # CONFIG_FAULT_INJECTION is not set | 1180 | # CONFIG_FAULT_INJECTION is not set |
1139 | # CONFIG_LATENCYTOP is not set | 1181 | # CONFIG_LATENCYTOP is not set |
1182 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
1140 | # CONFIG_DEBUG_PAGEALLOC is not set | 1183 | # CONFIG_DEBUG_PAGEALLOC is not set |
1141 | CONFIG_HAVE_FUNCTION_TRACER=y | 1184 | CONFIG_HAVE_FUNCTION_TRACER=y |
1142 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | 1185 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y |
@@ -1180,7 +1223,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1180 | # CONFIG_KEYS is not set | 1223 | # CONFIG_KEYS is not set |
1181 | # CONFIG_SECURITY is not set | 1224 | # CONFIG_SECURITY is not set |
1182 | # CONFIG_SECURITYFS is not set | 1225 | # CONFIG_SECURITYFS is not set |
1183 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1226 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1227 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1228 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1229 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1230 | CONFIG_DEFAULT_SECURITY="" | ||
1184 | CONFIG_CRYPTO=y | 1231 | CONFIG_CRYPTO=y |
1185 | 1232 | ||
1186 | # | 1233 | # |
diff --git a/arch/powerpc/configs/52xx/lite5200b_defconfig b/arch/powerpc/configs/52xx/lite5200b_defconfig index f5c07fd72239..7b3f4d0ed404 100644 --- a/arch/powerpc/configs/52xx/lite5200b_defconfig +++ b/arch/powerpc/configs/52xx/lite5200b_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.32-rc4 | 3 | # Linux kernel version: 2.6.33-rc2 |
4 | # Thu Oct 15 10:33:24 2009 | 4 | # Wed Dec 30 14:45:09 2009 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -36,6 +36,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
38 | CONFIG_IRQ_PER_CPU=y | 38 | CONFIG_IRQ_PER_CPU=y |
39 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | 40 | CONFIG_STACKTRACE_SUPPORT=y |
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y | |||
58 | CONFIG_GENERIC_BUG=y | 59 | CONFIG_GENERIC_BUG=y |
59 | CONFIG_DTC=y | 60 | CONFIG_DTC=y |
60 | CONFIG_DEFAULT_UIMAGE=y | 61 | CONFIG_DEFAULT_UIMAGE=y |
62 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
61 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 63 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
62 | # CONFIG_PPC_DCR_NATIVE is not set | 64 | # CONFIG_PPC_DCR_NATIVE is not set |
63 | # CONFIG_PPC_DCR_MMIO is not set | 65 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -86,6 +88,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
86 | # | 88 | # |
87 | CONFIG_TREE_RCU=y | 89 | CONFIG_TREE_RCU=y |
88 | # CONFIG_TREE_PREEMPT_RCU is not set | 90 | # CONFIG_TREE_PREEMPT_RCU is not set |
91 | # CONFIG_TINY_RCU is not set | ||
89 | # CONFIG_RCU_TRACE is not set | 92 | # CONFIG_RCU_TRACE is not set |
90 | CONFIG_RCU_FANOUT=32 | 93 | CONFIG_RCU_FANOUT=32 |
91 | # CONFIG_RCU_FANOUT_EXACT is not set | 94 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y | |||
173 | # IO Schedulers | 176 | # IO Schedulers |
174 | # | 177 | # |
175 | CONFIG_IOSCHED_NOOP=y | 178 | CONFIG_IOSCHED_NOOP=y |
176 | CONFIG_IOSCHED_AS=y | ||
177 | CONFIG_IOSCHED_DEADLINE=y | 179 | CONFIG_IOSCHED_DEADLINE=y |
178 | CONFIG_IOSCHED_CFQ=y | 180 | CONFIG_IOSCHED_CFQ=y |
179 | CONFIG_DEFAULT_AS=y | ||
180 | # CONFIG_DEFAULT_DEADLINE is not set | 181 | # CONFIG_DEFAULT_DEADLINE is not set |
181 | # CONFIG_DEFAULT_CFQ is not set | 182 | CONFIG_DEFAULT_CFQ=y |
182 | # CONFIG_DEFAULT_NOOP is not set | 183 | # CONFIG_DEFAULT_NOOP is not set |
183 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 184 | CONFIG_DEFAULT_IOSCHED="cfq" |
185 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
186 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
191 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
192 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
193 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
194 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
195 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
200 | CONFIG_INLINE_READ_UNLOCK=y | ||
201 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
202 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
203 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
204 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
209 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
210 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
211 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
212 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
213 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
184 | CONFIG_FREEZER=y | 214 | CONFIG_FREEZER=y |
185 | 215 | ||
186 | # | 216 | # |
@@ -196,6 +226,7 @@ CONFIG_PPC_LITE5200=y | |||
196 | # CONFIG_PPC_MEDIA5200 is not set | 226 | # CONFIG_PPC_MEDIA5200 is not set |
197 | # CONFIG_PPC_MPC5200_BUGFIX is not set | 227 | # CONFIG_PPC_MPC5200_BUGFIX is not set |
198 | # CONFIG_PPC_MPC5200_GPIO is not set | 228 | # CONFIG_PPC_MPC5200_GPIO is not set |
229 | # CONFIG_PPC_MPC5200_LPBFIFO is not set | ||
199 | # CONFIG_PPC_PMAC is not set | 230 | # CONFIG_PPC_PMAC is not set |
200 | # CONFIG_PPC_CELL is not set | 231 | # CONFIG_PPC_CELL is not set |
201 | # CONFIG_PPC_CELL_NATIVE is not set | 232 | # CONFIG_PPC_CELL_NATIVE is not set |
@@ -252,6 +283,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
252 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 283 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
253 | # CONFIG_KEXEC is not set | 284 | # CONFIG_KEXEC is not set |
254 | # CONFIG_CRASH_DUMP is not set | 285 | # CONFIG_CRASH_DUMP is not set |
286 | CONFIG_SPARSE_IRQ=y | ||
255 | CONFIG_MAX_ACTIVE_REGIONS=32 | 287 | CONFIG_MAX_ACTIVE_REGIONS=32 |
256 | CONFIG_ARCH_FLATMEM_ENABLE=y | 288 | CONFIG_ARCH_FLATMEM_ENABLE=y |
257 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 289 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -268,8 +300,6 @@ CONFIG_MIGRATION=y | |||
268 | CONFIG_ZONE_DMA_FLAG=1 | 300 | CONFIG_ZONE_DMA_FLAG=1 |
269 | CONFIG_BOUNCE=y | 301 | CONFIG_BOUNCE=y |
270 | CONFIG_VIRT_TO_BUS=y | 302 | CONFIG_VIRT_TO_BUS=y |
271 | CONFIG_HAVE_MLOCK=y | ||
272 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
273 | # CONFIG_KSM is not set | 303 | # CONFIG_KSM is not set |
274 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 304 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
275 | CONFIG_PPC_4K_PAGES=y | 305 | CONFIG_PPC_4K_PAGES=y |
@@ -285,6 +315,7 @@ CONFIG_PM=y | |||
285 | CONFIG_PM_SLEEP=y | 315 | CONFIG_PM_SLEEP=y |
286 | CONFIG_SUSPEND=y | 316 | CONFIG_SUSPEND=y |
287 | CONFIG_SUSPEND_FREEZER=y | 317 | CONFIG_SUSPEND_FREEZER=y |
318 | # CONFIG_HIBERNATION is not set | ||
288 | # CONFIG_PM_RUNTIME is not set | 319 | # CONFIG_PM_RUNTIME is not set |
289 | CONFIG_SECCOMP=y | 320 | CONFIG_SECCOMP=y |
290 | CONFIG_ISA_DMA_API=y | 321 | CONFIG_ISA_DMA_API=y |
@@ -398,7 +429,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
398 | # CONFIG_IRDA is not set | 429 | # CONFIG_IRDA is not set |
399 | # CONFIG_BT is not set | 430 | # CONFIG_BT is not set |
400 | # CONFIG_AF_RXRPC is not set | 431 | # CONFIG_AF_RXRPC is not set |
401 | # CONFIG_WIRELESS is not set | 432 | CONFIG_WIRELESS=y |
433 | # CONFIG_CFG80211 is not set | ||
434 | # CONFIG_LIB80211 is not set | ||
435 | |||
436 | # | ||
437 | # CFG80211 needs to be enabled for MAC80211 | ||
438 | # | ||
402 | # CONFIG_WIMAX is not set | 439 | # CONFIG_WIMAX is not set |
403 | # CONFIG_RFKILL is not set | 440 | # CONFIG_RFKILL is not set |
404 | # CONFIG_NET_9P is not set | 441 | # CONFIG_NET_9P is not set |
@@ -433,6 +470,10 @@ CONFIG_BLK_DEV=y | |||
433 | # CONFIG_BLK_DEV_COW_COMMON is not set | 470 | # CONFIG_BLK_DEV_COW_COMMON is not set |
434 | CONFIG_BLK_DEV_LOOP=y | 471 | CONFIG_BLK_DEV_LOOP=y |
435 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 472 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
473 | |||
474 | # | ||
475 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
476 | # | ||
436 | # CONFIG_BLK_DEV_NBD is not set | 477 | # CONFIG_BLK_DEV_NBD is not set |
437 | # CONFIG_BLK_DEV_SX8 is not set | 478 | # CONFIG_BLK_DEV_SX8 is not set |
438 | CONFIG_BLK_DEV_RAM=y | 479 | CONFIG_BLK_DEV_RAM=y |
@@ -443,6 +484,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
443 | # CONFIG_ATA_OVER_ETH is not set | 484 | # CONFIG_ATA_OVER_ETH is not set |
444 | # CONFIG_BLK_DEV_HD is not set | 485 | # CONFIG_BLK_DEV_HD is not set |
445 | CONFIG_MISC_DEVICES=y | 486 | CONFIG_MISC_DEVICES=y |
487 | # CONFIG_AD525X_DPOT is not set | ||
446 | # CONFIG_PHANTOM is not set | 488 | # CONFIG_PHANTOM is not set |
447 | # CONFIG_SGI_IOC4 is not set | 489 | # CONFIG_SGI_IOC4 is not set |
448 | # CONFIG_TIFM_CORE is not set | 490 | # CONFIG_TIFM_CORE is not set |
@@ -450,6 +492,7 @@ CONFIG_MISC_DEVICES=y | |||
450 | # CONFIG_ENCLOSURE_SERVICES is not set | 492 | # CONFIG_ENCLOSURE_SERVICES is not set |
451 | # CONFIG_HP_ILO is not set | 493 | # CONFIG_HP_ILO is not set |
452 | # CONFIG_ISL29003 is not set | 494 | # CONFIG_ISL29003 is not set |
495 | # CONFIG_DS1682 is not set | ||
453 | # CONFIG_C2PORT is not set | 496 | # CONFIG_C2PORT is not set |
454 | 497 | ||
455 | # | 498 | # |
@@ -502,7 +545,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
502 | # CONFIG_SCSI_BNX2_ISCSI is not set | 545 | # CONFIG_SCSI_BNX2_ISCSI is not set |
503 | # CONFIG_BE2ISCSI is not set | 546 | # CONFIG_BE2ISCSI is not set |
504 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 547 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
548 | # CONFIG_SCSI_HPSA is not set | ||
505 | # CONFIG_SCSI_3W_9XXX is not set | 549 | # CONFIG_SCSI_3W_9XXX is not set |
550 | # CONFIG_SCSI_3W_SAS is not set | ||
506 | # CONFIG_SCSI_ACARD is not set | 551 | # CONFIG_SCSI_ACARD is not set |
507 | # CONFIG_SCSI_AACRAID is not set | 552 | # CONFIG_SCSI_AACRAID is not set |
508 | # CONFIG_SCSI_AIC7XXX is not set | 553 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -541,6 +586,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
541 | # CONFIG_SCSI_NSP32 is not set | 586 | # CONFIG_SCSI_NSP32 is not set |
542 | # CONFIG_SCSI_DEBUG is not set | 587 | # CONFIG_SCSI_DEBUG is not set |
543 | # CONFIG_SCSI_PMCRAID is not set | 588 | # CONFIG_SCSI_PMCRAID is not set |
589 | # CONFIG_SCSI_PM8001 is not set | ||
544 | # CONFIG_SCSI_SRP is not set | 590 | # CONFIG_SCSI_SRP is not set |
545 | # CONFIG_SCSI_BFA_FC is not set | 591 | # CONFIG_SCSI_BFA_FC is not set |
546 | # CONFIG_SCSI_DH is not set | 592 | # CONFIG_SCSI_DH is not set |
@@ -596,15 +642,16 @@ CONFIG_PATA_MPC52xx=y | |||
596 | # CONFIG_PATA_NS87415 is not set | 642 | # CONFIG_PATA_NS87415 is not set |
597 | # CONFIG_PATA_OPTI is not set | 643 | # CONFIG_PATA_OPTI is not set |
598 | # CONFIG_PATA_OPTIDMA is not set | 644 | # CONFIG_PATA_OPTIDMA is not set |
645 | # CONFIG_PATA_PDC2027X is not set | ||
599 | # CONFIG_PATA_PDC_OLD is not set | 646 | # CONFIG_PATA_PDC_OLD is not set |
600 | # CONFIG_PATA_RADISYS is not set | 647 | # CONFIG_PATA_RADISYS is not set |
601 | # CONFIG_PATA_RDC is not set | 648 | # CONFIG_PATA_RDC is not set |
602 | # CONFIG_PATA_RZ1000 is not set | 649 | # CONFIG_PATA_RZ1000 is not set |
603 | # CONFIG_PATA_SC1200 is not set | 650 | # CONFIG_PATA_SC1200 is not set |
604 | # CONFIG_PATA_SERVERWORKS is not set | 651 | # CONFIG_PATA_SERVERWORKS is not set |
605 | # CONFIG_PATA_PDC2027X is not set | ||
606 | # CONFIG_PATA_SIL680 is not set | 652 | # CONFIG_PATA_SIL680 is not set |
607 | # CONFIG_PATA_SIS is not set | 653 | # CONFIG_PATA_SIS is not set |
654 | # CONFIG_PATA_TOSHIBA is not set | ||
608 | # CONFIG_PATA_VIA is not set | 655 | # CONFIG_PATA_VIA is not set |
609 | # CONFIG_PATA_WINBOND is not set | 656 | # CONFIG_PATA_WINBOND is not set |
610 | # CONFIG_PATA_PLATFORM is not set | 657 | # CONFIG_PATA_PLATFORM is not set |
@@ -726,8 +773,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
726 | # CONFIG_BE2NET is not set | 773 | # CONFIG_BE2NET is not set |
727 | # CONFIG_TR is not set | 774 | # CONFIG_TR is not set |
728 | CONFIG_WLAN=y | 775 | CONFIG_WLAN=y |
729 | # CONFIG_WLAN_PRE80211 is not set | 776 | # CONFIG_AIRO is not set |
730 | # CONFIG_WLAN_80211 is not set | 777 | # CONFIG_ATMEL is not set |
778 | # CONFIG_PRISM54 is not set | ||
779 | # CONFIG_HOSTAP is not set | ||
731 | 780 | ||
732 | # | 781 | # |
733 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 782 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -741,6 +790,7 @@ CONFIG_WLAN=y | |||
741 | # CONFIG_NETCONSOLE is not set | 790 | # CONFIG_NETCONSOLE is not set |
742 | # CONFIG_NETPOLL is not set | 791 | # CONFIG_NETPOLL is not set |
743 | # CONFIG_NET_POLL_CONTROLLER is not set | 792 | # CONFIG_NET_POLL_CONTROLLER is not set |
793 | # CONFIG_VMXNET3 is not set | ||
744 | # CONFIG_ISDN is not set | 794 | # CONFIG_ISDN is not set |
745 | # CONFIG_PHONE is not set | 795 | # CONFIG_PHONE is not set |
746 | 796 | ||
@@ -778,6 +828,7 @@ CONFIG_SERIAL_MPC52xx=y | |||
778 | CONFIG_SERIAL_MPC52xx_CONSOLE=y | 828 | CONFIG_SERIAL_MPC52xx_CONSOLE=y |
779 | CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 | 829 | CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 |
780 | # CONFIG_SERIAL_JSM is not set | 830 | # CONFIG_SERIAL_JSM is not set |
831 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
781 | CONFIG_UNIX98_PTYS=y | 832 | CONFIG_UNIX98_PTYS=y |
782 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 833 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
783 | CONFIG_LEGACY_PTYS=y | 834 | CONFIG_LEGACY_PTYS=y |
@@ -836,11 +887,6 @@ CONFIG_I2C_MPC=y | |||
836 | # CONFIG_I2C_TAOS_EVM is not set | 887 | # CONFIG_I2C_TAOS_EVM is not set |
837 | 888 | ||
838 | # | 889 | # |
839 | # Graphics adapter I2C/DDC channel drivers | ||
840 | # | ||
841 | # CONFIG_I2C_VOODOO3 is not set | ||
842 | |||
843 | # | ||
844 | # Other I2C/SMBus bus drivers | 890 | # Other I2C/SMBus bus drivers |
845 | # | 891 | # |
846 | # CONFIG_I2C_PCA_PLATFORM is not set | 892 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -849,7 +895,6 @@ CONFIG_I2C_MPC=y | |||
849 | # | 895 | # |
850 | # Miscellaneous I2C Chip support | 896 | # Miscellaneous I2C Chip support |
851 | # | 897 | # |
852 | # CONFIG_DS1682 is not set | ||
853 | # CONFIG_SENSORS_TSL2550 is not set | 898 | # CONFIG_SENSORS_TSL2550 is not set |
854 | # CONFIG_I2C_DEBUG_CORE is not set | 899 | # CONFIG_I2C_DEBUG_CORE is not set |
855 | # CONFIG_I2C_DEBUG_ALGO is not set | 900 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -884,11 +929,13 @@ CONFIG_SSB_POSSIBLE=y | |||
884 | # CONFIG_TWL4030_CORE is not set | 929 | # CONFIG_TWL4030_CORE is not set |
885 | # CONFIG_MFD_TMIO is not set | 930 | # CONFIG_MFD_TMIO is not set |
886 | # CONFIG_PMIC_DA903X is not set | 931 | # CONFIG_PMIC_DA903X is not set |
932 | # CONFIG_PMIC_ADP5520 is not set | ||
887 | # CONFIG_MFD_WM8400 is not set | 933 | # CONFIG_MFD_WM8400 is not set |
888 | # CONFIG_MFD_WM831X is not set | 934 | # CONFIG_MFD_WM831X is not set |
889 | # CONFIG_MFD_WM8350_I2C is not set | 935 | # CONFIG_MFD_WM8350_I2C is not set |
890 | # CONFIG_MFD_PCF50633 is not set | 936 | # CONFIG_MFD_PCF50633 is not set |
891 | # CONFIG_AB3100_CORE is not set | 937 | # CONFIG_AB3100_CORE is not set |
938 | # CONFIG_MFD_88PM8607 is not set | ||
892 | # CONFIG_REGULATOR is not set | 939 | # CONFIG_REGULATOR is not set |
893 | # CONFIG_MEDIA_SUPPORT is not set | 940 | # CONFIG_MEDIA_SUPPORT is not set |
894 | 941 | ||
@@ -1129,6 +1176,7 @@ CONFIG_DEBUG_INFO=y | |||
1129 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | 1176 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set |
1130 | # CONFIG_FAULT_INJECTION is not set | 1177 | # CONFIG_FAULT_INJECTION is not set |
1131 | # CONFIG_LATENCYTOP is not set | 1178 | # CONFIG_LATENCYTOP is not set |
1179 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
1132 | # CONFIG_DEBUG_PAGEALLOC is not set | 1180 | # CONFIG_DEBUG_PAGEALLOC is not set |
1133 | CONFIG_HAVE_FUNCTION_TRACER=y | 1181 | CONFIG_HAVE_FUNCTION_TRACER=y |
1134 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | 1182 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y |
@@ -1172,7 +1220,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1172 | # CONFIG_KEYS is not set | 1220 | # CONFIG_KEYS is not set |
1173 | # CONFIG_SECURITY is not set | 1221 | # CONFIG_SECURITY is not set |
1174 | # CONFIG_SECURITYFS is not set | 1222 | # CONFIG_SECURITYFS is not set |
1175 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1223 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1224 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1225 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1226 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1227 | CONFIG_DEFAULT_SECURITY="" | ||
1176 | CONFIG_CRYPTO=y | 1228 | CONFIG_CRYPTO=y |
1177 | 1229 | ||
1178 | # | 1230 | # |
diff --git a/arch/powerpc/configs/52xx/motionpro_defconfig b/arch/powerpc/configs/52xx/motionpro_defconfig index 4f77a1bdc8f9..eaae2d469aa0 100644 --- a/arch/powerpc/configs/52xx/motionpro_defconfig +++ b/arch/powerpc/configs/52xx/motionpro_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.32-rc4 | 3 | # Linux kernel version: 2.6.33-rc2 |
4 | # Thu Oct 15 10:33:22 2009 | 4 | # Wed Dec 30 14:45:08 2009 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -36,6 +36,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
38 | CONFIG_IRQ_PER_CPU=y | 38 | CONFIG_IRQ_PER_CPU=y |
39 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | 40 | CONFIG_STACKTRACE_SUPPORT=y |
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y | |||
58 | CONFIG_GENERIC_BUG=y | 59 | CONFIG_GENERIC_BUG=y |
59 | CONFIG_DTC=y | 60 | CONFIG_DTC=y |
60 | CONFIG_DEFAULT_UIMAGE=y | 61 | CONFIG_DEFAULT_UIMAGE=y |
62 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
61 | # CONFIG_PPC_DCR_NATIVE is not set | 63 | # CONFIG_PPC_DCR_NATIVE is not set |
62 | # CONFIG_PPC_DCR_MMIO is not set | 64 | # CONFIG_PPC_DCR_MMIO is not set |
63 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 65 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
85 | # | 87 | # |
86 | CONFIG_TREE_RCU=y | 88 | CONFIG_TREE_RCU=y |
87 | # CONFIG_TREE_PREEMPT_RCU is not set | 89 | # CONFIG_TREE_PREEMPT_RCU is not set |
90 | # CONFIG_TINY_RCU is not set | ||
88 | # CONFIG_RCU_TRACE is not set | 91 | # CONFIG_RCU_TRACE is not set |
89 | CONFIG_RCU_FANOUT=32 | 92 | CONFIG_RCU_FANOUT=32 |
90 | # CONFIG_RCU_FANOUT_EXACT is not set | 93 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -166,14 +169,41 @@ CONFIG_LBDAF=y | |||
166 | # IO Schedulers | 169 | # IO Schedulers |
167 | # | 170 | # |
168 | CONFIG_IOSCHED_NOOP=y | 171 | CONFIG_IOSCHED_NOOP=y |
169 | CONFIG_IOSCHED_AS=y | ||
170 | CONFIG_IOSCHED_DEADLINE=y | 172 | CONFIG_IOSCHED_DEADLINE=y |
171 | CONFIG_IOSCHED_CFQ=y | 173 | CONFIG_IOSCHED_CFQ=y |
172 | CONFIG_DEFAULT_AS=y | ||
173 | # CONFIG_DEFAULT_DEADLINE is not set | 174 | # CONFIG_DEFAULT_DEADLINE is not set |
174 | # CONFIG_DEFAULT_CFQ is not set | 175 | CONFIG_DEFAULT_CFQ=y |
175 | # CONFIG_DEFAULT_NOOP is not set | 176 | # CONFIG_DEFAULT_NOOP is not set |
176 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 177 | CONFIG_DEFAULT_IOSCHED="cfq" |
178 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
179 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
180 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
181 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
182 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
183 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
184 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
185 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
186 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
187 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
188 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
189 | # CONFIG_INLINE_READ_LOCK is not set | ||
190 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
191 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
192 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
193 | CONFIG_INLINE_READ_UNLOCK=y | ||
194 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
195 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
196 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
197 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
198 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
199 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
200 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
201 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
202 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
203 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
204 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
205 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
206 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
177 | # CONFIG_FREEZER is not set | 207 | # CONFIG_FREEZER is not set |
178 | 208 | ||
179 | # | 209 | # |
@@ -189,6 +219,7 @@ CONFIG_PPC_MPC5200_SIMPLE=y | |||
189 | # CONFIG_PPC_MEDIA5200 is not set | 219 | # CONFIG_PPC_MEDIA5200 is not set |
190 | # CONFIG_PPC_MPC5200_BUGFIX is not set | 220 | # CONFIG_PPC_MPC5200_BUGFIX is not set |
191 | # CONFIG_PPC_MPC5200_GPIO is not set | 221 | # CONFIG_PPC_MPC5200_GPIO is not set |
222 | # CONFIG_PPC_MPC5200_LPBFIFO is not set | ||
192 | # CONFIG_PPC_PMAC is not set | 223 | # CONFIG_PPC_PMAC is not set |
193 | # CONFIG_PPC_CELL is not set | 224 | # CONFIG_PPC_CELL is not set |
194 | # CONFIG_PPC_CELL_NATIVE is not set | 225 | # CONFIG_PPC_CELL_NATIVE is not set |
@@ -244,6 +275,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
244 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 275 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
245 | # CONFIG_KEXEC is not set | 276 | # CONFIG_KEXEC is not set |
246 | # CONFIG_CRASH_DUMP is not set | 277 | # CONFIG_CRASH_DUMP is not set |
278 | CONFIG_SPARSE_IRQ=y | ||
247 | CONFIG_MAX_ACTIVE_REGIONS=32 | 279 | CONFIG_MAX_ACTIVE_REGIONS=32 |
248 | CONFIG_ARCH_FLATMEM_ENABLE=y | 280 | CONFIG_ARCH_FLATMEM_ENABLE=y |
249 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 281 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -260,8 +292,6 @@ CONFIG_MIGRATION=y | |||
260 | CONFIG_ZONE_DMA_FLAG=1 | 292 | CONFIG_ZONE_DMA_FLAG=1 |
261 | CONFIG_BOUNCE=y | 293 | CONFIG_BOUNCE=y |
262 | CONFIG_VIRT_TO_BUS=y | 294 | CONFIG_VIRT_TO_BUS=y |
263 | CONFIG_HAVE_MLOCK=y | ||
264 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
265 | # CONFIG_KSM is not set | 295 | # CONFIG_KSM is not set |
266 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 296 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
267 | CONFIG_PPC_4K_PAGES=y | 297 | CONFIG_PPC_4K_PAGES=y |
@@ -274,6 +304,7 @@ CONFIG_PROC_DEVICETREE=y | |||
274 | CONFIG_EXTRA_TARGETS="" | 304 | CONFIG_EXTRA_TARGETS="" |
275 | CONFIG_PM=y | 305 | CONFIG_PM=y |
276 | # CONFIG_PM_DEBUG is not set | 306 | # CONFIG_PM_DEBUG is not set |
307 | # CONFIG_HIBERNATION is not set | ||
277 | # CONFIG_PM_RUNTIME is not set | 308 | # CONFIG_PM_RUNTIME is not set |
278 | CONFIG_SECCOMP=y | 309 | CONFIG_SECCOMP=y |
279 | CONFIG_ISA_DMA_API=y | 310 | CONFIG_ISA_DMA_API=y |
@@ -379,7 +410,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
379 | # CONFIG_IRDA is not set | 410 | # CONFIG_IRDA is not set |
380 | # CONFIG_BT is not set | 411 | # CONFIG_BT is not set |
381 | # CONFIG_AF_RXRPC is not set | 412 | # CONFIG_AF_RXRPC is not set |
382 | # CONFIG_WIRELESS is not set | 413 | CONFIG_WIRELESS=y |
414 | # CONFIG_CFG80211 is not set | ||
415 | # CONFIG_LIB80211 is not set | ||
416 | |||
417 | # | ||
418 | # CFG80211 needs to be enabled for MAC80211 | ||
419 | # | ||
383 | # CONFIG_WIMAX is not set | 420 | # CONFIG_WIMAX is not set |
384 | # CONFIG_RFKILL is not set | 421 | # CONFIG_RFKILL is not set |
385 | # CONFIG_NET_9P is not set | 422 | # CONFIG_NET_9P is not set |
@@ -490,6 +527,10 @@ CONFIG_BLK_DEV=y | |||
490 | # CONFIG_BLK_DEV_COW_COMMON is not set | 527 | # CONFIG_BLK_DEV_COW_COMMON is not set |
491 | CONFIG_BLK_DEV_LOOP=y | 528 | CONFIG_BLK_DEV_LOOP=y |
492 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 529 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
530 | |||
531 | # | ||
532 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
533 | # | ||
493 | # CONFIG_BLK_DEV_NBD is not set | 534 | # CONFIG_BLK_DEV_NBD is not set |
494 | CONFIG_BLK_DEV_RAM=y | 535 | CONFIG_BLK_DEV_RAM=y |
495 | CONFIG_BLK_DEV_RAM_COUNT=16 | 536 | CONFIG_BLK_DEV_RAM_COUNT=16 |
@@ -499,9 +540,11 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
499 | # CONFIG_ATA_OVER_ETH is not set | 540 | # CONFIG_ATA_OVER_ETH is not set |
500 | # CONFIG_BLK_DEV_HD is not set | 541 | # CONFIG_BLK_DEV_HD is not set |
501 | CONFIG_MISC_DEVICES=y | 542 | CONFIG_MISC_DEVICES=y |
543 | # CONFIG_AD525X_DPOT is not set | ||
502 | # CONFIG_ICS932S401 is not set | 544 | # CONFIG_ICS932S401 is not set |
503 | # CONFIG_ENCLOSURE_SERVICES is not set | 545 | # CONFIG_ENCLOSURE_SERVICES is not set |
504 | # CONFIG_ISL29003 is not set | 546 | # CONFIG_ISL29003 is not set |
547 | # CONFIG_DS1682 is not set | ||
505 | # CONFIG_C2PORT is not set | 548 | # CONFIG_C2PORT is not set |
506 | 549 | ||
507 | # | 550 | # |
@@ -610,8 +653,7 @@ CONFIG_FEC_MPC52xx_MDIO=y | |||
610 | # CONFIG_NETDEV_1000 is not set | 653 | # CONFIG_NETDEV_1000 is not set |
611 | # CONFIG_NETDEV_10000 is not set | 654 | # CONFIG_NETDEV_10000 is not set |
612 | CONFIG_WLAN=y | 655 | CONFIG_WLAN=y |
613 | # CONFIG_WLAN_PRE80211 is not set | 656 | # CONFIG_HOSTAP is not set |
614 | # CONFIG_WLAN_80211 is not set | ||
615 | 657 | ||
616 | # | 658 | # |
617 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 659 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -657,6 +699,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
657 | CONFIG_SERIAL_MPC52xx=y | 699 | CONFIG_SERIAL_MPC52xx=y |
658 | CONFIG_SERIAL_MPC52xx_CONSOLE=y | 700 | CONFIG_SERIAL_MPC52xx_CONSOLE=y |
659 | CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 | 701 | CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 |
702 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
660 | CONFIG_UNIX98_PTYS=y | 703 | CONFIG_UNIX98_PTYS=y |
661 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 704 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
662 | CONFIG_LEGACY_PTYS=y | 705 | CONFIG_LEGACY_PTYS=y |
@@ -700,7 +743,6 @@ CONFIG_I2C_MPC=y | |||
700 | # | 743 | # |
701 | # Miscellaneous I2C Chip support | 744 | # Miscellaneous I2C Chip support |
702 | # | 745 | # |
703 | # CONFIG_DS1682 is not set | ||
704 | # CONFIG_SENSORS_TSL2550 is not set | 746 | # CONFIG_SENSORS_TSL2550 is not set |
705 | # CONFIG_I2C_DEBUG_CORE is not set | 747 | # CONFIG_I2C_DEBUG_CORE is not set |
706 | # CONFIG_I2C_DEBUG_ALGO is not set | 748 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -745,6 +787,7 @@ CONFIG_HWMON=y | |||
745 | # CONFIG_SENSORS_GL520SM is not set | 787 | # CONFIG_SENSORS_GL520SM is not set |
746 | # CONFIG_SENSORS_IT87 is not set | 788 | # CONFIG_SENSORS_IT87 is not set |
747 | # CONFIG_SENSORS_LM63 is not set | 789 | # CONFIG_SENSORS_LM63 is not set |
790 | # CONFIG_SENSORS_LM73 is not set | ||
748 | # CONFIG_SENSORS_LM75 is not set | 791 | # CONFIG_SENSORS_LM75 is not set |
749 | # CONFIG_SENSORS_LM77 is not set | 792 | # CONFIG_SENSORS_LM77 is not set |
750 | # CONFIG_SENSORS_LM78 is not set | 793 | # CONFIG_SENSORS_LM78 is not set |
@@ -805,11 +848,13 @@ CONFIG_SSB_POSSIBLE=y | |||
805 | # CONFIG_TWL4030_CORE is not set | 848 | # CONFIG_TWL4030_CORE is not set |
806 | # CONFIG_MFD_TMIO is not set | 849 | # CONFIG_MFD_TMIO is not set |
807 | # CONFIG_PMIC_DA903X is not set | 850 | # CONFIG_PMIC_DA903X is not set |
851 | # CONFIG_PMIC_ADP5520 is not set | ||
808 | # CONFIG_MFD_WM8400 is not set | 852 | # CONFIG_MFD_WM8400 is not set |
809 | # CONFIG_MFD_WM831X is not set | 853 | # CONFIG_MFD_WM831X is not set |
810 | # CONFIG_MFD_WM8350_I2C is not set | 854 | # CONFIG_MFD_WM8350_I2C is not set |
811 | # CONFIG_MFD_PCF50633 is not set | 855 | # CONFIG_MFD_PCF50633 is not set |
812 | # CONFIG_AB3100_CORE is not set | 856 | # CONFIG_AB3100_CORE is not set |
857 | # CONFIG_MFD_88PM8607 is not set | ||
813 | # CONFIG_REGULATOR is not set | 858 | # CONFIG_REGULATOR is not set |
814 | # CONFIG_MEDIA_SUPPORT is not set | 859 | # CONFIG_MEDIA_SUPPORT is not set |
815 | 860 | ||
@@ -881,6 +926,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
881 | # CONFIG_RTC_DRV_PCF8563 is not set | 926 | # CONFIG_RTC_DRV_PCF8563 is not set |
882 | # CONFIG_RTC_DRV_PCF8583 is not set | 927 | # CONFIG_RTC_DRV_PCF8583 is not set |
883 | # CONFIG_RTC_DRV_M41T80 is not set | 928 | # CONFIG_RTC_DRV_M41T80 is not set |
929 | # CONFIG_RTC_DRV_BQ32K is not set | ||
884 | # CONFIG_RTC_DRV_S35390A is not set | 930 | # CONFIG_RTC_DRV_S35390A is not set |
885 | # CONFIG_RTC_DRV_FM3130 is not set | 931 | # CONFIG_RTC_DRV_FM3130 is not set |
886 | # CONFIG_RTC_DRV_RX8581 is not set | 932 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -902,7 +948,9 @@ CONFIG_RTC_DRV_DS1307=y | |||
902 | # CONFIG_RTC_DRV_M48T86 is not set | 948 | # CONFIG_RTC_DRV_M48T86 is not set |
903 | # CONFIG_RTC_DRV_M48T35 is not set | 949 | # CONFIG_RTC_DRV_M48T35 is not set |
904 | # CONFIG_RTC_DRV_M48T59 is not set | 950 | # CONFIG_RTC_DRV_M48T59 is not set |
951 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
905 | # CONFIG_RTC_DRV_BQ4802 is not set | 952 | # CONFIG_RTC_DRV_BQ4802 is not set |
953 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
906 | # CONFIG_RTC_DRV_V3020 is not set | 954 | # CONFIG_RTC_DRV_V3020 is not set |
907 | 955 | ||
908 | # | 956 | # |
@@ -1172,6 +1220,7 @@ CONFIG_DEBUG_INFO=y | |||
1172 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | 1220 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set |
1173 | # CONFIG_FAULT_INJECTION is not set | 1221 | # CONFIG_FAULT_INJECTION is not set |
1174 | # CONFIG_LATENCYTOP is not set | 1222 | # CONFIG_LATENCYTOP is not set |
1223 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
1175 | # CONFIG_DEBUG_PAGEALLOC is not set | 1224 | # CONFIG_DEBUG_PAGEALLOC is not set |
1176 | CONFIG_HAVE_FUNCTION_TRACER=y | 1225 | CONFIG_HAVE_FUNCTION_TRACER=y |
1177 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | 1226 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y |
@@ -1215,7 +1264,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1215 | # CONFIG_KEYS is not set | 1264 | # CONFIG_KEYS is not set |
1216 | # CONFIG_SECURITY is not set | 1265 | # CONFIG_SECURITY is not set |
1217 | # CONFIG_SECURITYFS is not set | 1266 | # CONFIG_SECURITYFS is not set |
1218 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1267 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1268 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1269 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1270 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1271 | CONFIG_DEFAULT_SECURITY="" | ||
1219 | CONFIG_CRYPTO=y | 1272 | CONFIG_CRYPTO=y |
1220 | 1273 | ||
1221 | # | 1274 | # |
diff --git a/arch/powerpc/configs/52xx/pcm030_defconfig b/arch/powerpc/configs/52xx/pcm030_defconfig index f9168c1a2fa5..1742c0200b75 100644 --- a/arch/powerpc/configs/52xx/pcm030_defconfig +++ b/arch/powerpc/configs/52xx/pcm030_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.32-rc4 | 3 | # Linux kernel version: 2.6.33-rc2 |
4 | # Thu Oct 15 10:33:25 2009 | 4 | # Wed Dec 30 14:45:10 2009 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -36,6 +36,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
38 | CONFIG_IRQ_PER_CPU=y | 38 | CONFIG_IRQ_PER_CPU=y |
39 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | 40 | CONFIG_STACKTRACE_SUPPORT=y |
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y | |||
58 | CONFIG_GENERIC_BUG=y | 59 | CONFIG_GENERIC_BUG=y |
59 | CONFIG_DTC=y | 60 | CONFIG_DTC=y |
60 | CONFIG_DEFAULT_UIMAGE=y | 61 | CONFIG_DEFAULT_UIMAGE=y |
62 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
61 | # CONFIG_PPC_DCR_NATIVE is not set | 63 | # CONFIG_PPC_DCR_NATIVE is not set |
62 | # CONFIG_PPC_DCR_MMIO is not set | 64 | # CONFIG_PPC_DCR_MMIO is not set |
63 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 65 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -87,6 +89,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y | |||
87 | # | 89 | # |
88 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -172,14 +175,41 @@ CONFIG_LBDAF=y | |||
172 | # IO Schedulers | 175 | # IO Schedulers |
173 | # | 176 | # |
174 | CONFIG_IOSCHED_NOOP=y | 177 | CONFIG_IOSCHED_NOOP=y |
175 | # CONFIG_IOSCHED_AS is not set | ||
176 | # CONFIG_IOSCHED_DEADLINE is not set | 178 | # CONFIG_IOSCHED_DEADLINE is not set |
177 | # CONFIG_IOSCHED_CFQ is not set | 179 | # CONFIG_IOSCHED_CFQ is not set |
178 | # CONFIG_DEFAULT_AS is not set | ||
179 | # CONFIG_DEFAULT_DEADLINE is not set | 180 | # CONFIG_DEFAULT_DEADLINE is not set |
180 | # CONFIG_DEFAULT_CFQ is not set | 181 | # CONFIG_DEFAULT_CFQ is not set |
181 | CONFIG_DEFAULT_NOOP=y | 182 | CONFIG_DEFAULT_NOOP=y |
182 | CONFIG_DEFAULT_IOSCHED="noop" | 183 | CONFIG_DEFAULT_IOSCHED="noop" |
184 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
185 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
186 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
190 | # CONFIG_INLINE_SPIN_UNLOCK is not set | ||
191 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
192 | # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
193 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
194 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
195 | # CONFIG_INLINE_READ_LOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
199 | # CONFIG_INLINE_READ_UNLOCK is not set | ||
200 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
201 | # CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
202 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
203 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
204 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
208 | # CONFIG_INLINE_WRITE_UNLOCK is not set | ||
209 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
210 | # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
211 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
212 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
183 | # CONFIG_FREEZER is not set | 213 | # CONFIG_FREEZER is not set |
184 | 214 | ||
185 | # | 215 | # |
@@ -195,6 +225,7 @@ CONFIG_PPC_MPC5200_SIMPLE=y | |||
195 | # CONFIG_PPC_MEDIA5200 is not set | 225 | # CONFIG_PPC_MEDIA5200 is not set |
196 | # CONFIG_PPC_MPC5200_BUGFIX is not set | 226 | # CONFIG_PPC_MPC5200_BUGFIX is not set |
197 | # CONFIG_PPC_MPC5200_GPIO is not set | 227 | # CONFIG_PPC_MPC5200_GPIO is not set |
228 | # CONFIG_PPC_MPC5200_LPBFIFO is not set | ||
198 | # CONFIG_PPC_PMAC is not set | 229 | # CONFIG_PPC_PMAC is not set |
199 | # CONFIG_PPC_CELL is not set | 230 | # CONFIG_PPC_CELL is not set |
200 | # CONFIG_PPC_CELL_NATIVE is not set | 231 | # CONFIG_PPC_CELL_NATIVE is not set |
@@ -251,6 +282,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
251 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 282 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
252 | # CONFIG_KEXEC is not set | 283 | # CONFIG_KEXEC is not set |
253 | # CONFIG_CRASH_DUMP is not set | 284 | # CONFIG_CRASH_DUMP is not set |
285 | CONFIG_SPARSE_IRQ=y | ||
254 | CONFIG_MAX_ACTIVE_REGIONS=32 | 286 | CONFIG_MAX_ACTIVE_REGIONS=32 |
255 | CONFIG_ARCH_FLATMEM_ENABLE=y | 287 | CONFIG_ARCH_FLATMEM_ENABLE=y |
256 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 288 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -267,8 +299,6 @@ CONFIG_MIGRATION=y | |||
267 | CONFIG_ZONE_DMA_FLAG=1 | 299 | CONFIG_ZONE_DMA_FLAG=1 |
268 | CONFIG_BOUNCE=y | 300 | CONFIG_BOUNCE=y |
269 | CONFIG_VIRT_TO_BUS=y | 301 | CONFIG_VIRT_TO_BUS=y |
270 | CONFIG_HAVE_MLOCK=y | ||
271 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
272 | # CONFIG_KSM is not set | 302 | # CONFIG_KSM is not set |
273 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 303 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
274 | CONFIG_PPC_4K_PAGES=y | 304 | CONFIG_PPC_4K_PAGES=y |
@@ -385,7 +415,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
385 | # CONFIG_IRDA is not set | 415 | # CONFIG_IRDA is not set |
386 | # CONFIG_BT is not set | 416 | # CONFIG_BT is not set |
387 | # CONFIG_AF_RXRPC is not set | 417 | # CONFIG_AF_RXRPC is not set |
388 | # CONFIG_WIRELESS is not set | 418 | CONFIG_WIRELESS=y |
419 | # CONFIG_CFG80211 is not set | ||
420 | # CONFIG_LIB80211 is not set | ||
421 | |||
422 | # | ||
423 | # CFG80211 needs to be enabled for MAC80211 | ||
424 | # | ||
389 | # CONFIG_WIMAX is not set | 425 | # CONFIG_WIMAX is not set |
390 | # CONFIG_RFKILL is not set | 426 | # CONFIG_RFKILL is not set |
391 | # CONFIG_NET_9P is not set | 427 | # CONFIG_NET_9P is not set |
@@ -585,15 +621,16 @@ CONFIG_PATA_MPC52xx=m | |||
585 | # CONFIG_PATA_NS87415 is not set | 621 | # CONFIG_PATA_NS87415 is not set |
586 | # CONFIG_PATA_OPTI is not set | 622 | # CONFIG_PATA_OPTI is not set |
587 | # CONFIG_PATA_OPTIDMA is not set | 623 | # CONFIG_PATA_OPTIDMA is not set |
624 | # CONFIG_PATA_PDC2027X is not set | ||
588 | # CONFIG_PATA_PDC_OLD is not set | 625 | # CONFIG_PATA_PDC_OLD is not set |
589 | # CONFIG_PATA_RADISYS is not set | 626 | # CONFIG_PATA_RADISYS is not set |
590 | # CONFIG_PATA_RDC is not set | 627 | # CONFIG_PATA_RDC is not set |
591 | # CONFIG_PATA_RZ1000 is not set | 628 | # CONFIG_PATA_RZ1000 is not set |
592 | # CONFIG_PATA_SC1200 is not set | 629 | # CONFIG_PATA_SC1200 is not set |
593 | # CONFIG_PATA_SERVERWORKS is not set | 630 | # CONFIG_PATA_SERVERWORKS is not set |
594 | # CONFIG_PATA_PDC2027X is not set | ||
595 | # CONFIG_PATA_SIL680 is not set | 631 | # CONFIG_PATA_SIL680 is not set |
596 | # CONFIG_PATA_SIS is not set | 632 | # CONFIG_PATA_SIS is not set |
633 | # CONFIG_PATA_TOSHIBA is not set | ||
597 | # CONFIG_PATA_VIA is not set | 634 | # CONFIG_PATA_VIA is not set |
598 | # CONFIG_PATA_WINBOND is not set | 635 | # CONFIG_PATA_WINBOND is not set |
599 | # CONFIG_PATA_PLATFORM is not set | 636 | # CONFIG_PATA_PLATFORM is not set |
@@ -673,8 +710,11 @@ CONFIG_FEC_MPC52xx_MDIO=y | |||
673 | # CONFIG_NETDEV_10000 is not set | 710 | # CONFIG_NETDEV_10000 is not set |
674 | # CONFIG_TR is not set | 711 | # CONFIG_TR is not set |
675 | CONFIG_WLAN=y | 712 | CONFIG_WLAN=y |
676 | # CONFIG_WLAN_PRE80211 is not set | 713 | # CONFIG_AIRO is not set |
677 | # CONFIG_WLAN_80211 is not set | 714 | # CONFIG_ATMEL is not set |
715 | # CONFIG_PRISM54 is not set | ||
716 | # CONFIG_USB_ZD1201 is not set | ||
717 | # CONFIG_HOSTAP is not set | ||
678 | 718 | ||
679 | # | 719 | # |
680 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 720 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -697,6 +737,7 @@ CONFIG_WLAN=y | |||
697 | # CONFIG_NETCONSOLE is not set | 737 | # CONFIG_NETCONSOLE is not set |
698 | # CONFIG_NETPOLL is not set | 738 | # CONFIG_NETPOLL is not set |
699 | # CONFIG_NET_POLL_CONTROLLER is not set | 739 | # CONFIG_NET_POLL_CONTROLLER is not set |
740 | # CONFIG_VMXNET3 is not set | ||
700 | # CONFIG_ISDN is not set | 741 | # CONFIG_ISDN is not set |
701 | # CONFIG_PHONE is not set | 742 | # CONFIG_PHONE is not set |
702 | 743 | ||
@@ -734,6 +775,7 @@ CONFIG_SERIAL_MPC52xx=y | |||
734 | CONFIG_SERIAL_MPC52xx_CONSOLE=y | 775 | CONFIG_SERIAL_MPC52xx_CONSOLE=y |
735 | CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=9600 | 776 | CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=9600 |
736 | # CONFIG_SERIAL_JSM is not set | 777 | # CONFIG_SERIAL_JSM is not set |
778 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
737 | CONFIG_UNIX98_PTYS=y | 779 | CONFIG_UNIX98_PTYS=y |
738 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 780 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
739 | # CONFIG_LEGACY_PTYS is not set | 781 | # CONFIG_LEGACY_PTYS is not set |
@@ -791,11 +833,6 @@ CONFIG_I2C_MPC=y | |||
791 | # CONFIG_I2C_TINY_USB is not set | 833 | # CONFIG_I2C_TINY_USB is not set |
792 | 834 | ||
793 | # | 835 | # |
794 | # Graphics adapter I2C/DDC channel drivers | ||
795 | # | ||
796 | # CONFIG_I2C_VOODOO3 is not set | ||
797 | |||
798 | # | ||
799 | # Other I2C/SMBus bus drivers | 836 | # Other I2C/SMBus bus drivers |
800 | # | 837 | # |
801 | # CONFIG_I2C_PCA_PLATFORM is not set | 838 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -804,7 +841,6 @@ CONFIG_I2C_MPC=y | |||
804 | # | 841 | # |
805 | # Miscellaneous I2C Chip support | 842 | # Miscellaneous I2C Chip support |
806 | # | 843 | # |
807 | # CONFIG_DS1682 is not set | ||
808 | # CONFIG_SENSORS_TSL2550 is not set | 844 | # CONFIG_SENSORS_TSL2550 is not set |
809 | # CONFIG_I2C_DEBUG_CORE is not set | 845 | # CONFIG_I2C_DEBUG_CORE is not set |
810 | # CONFIG_I2C_DEBUG_ALGO is not set | 846 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -839,11 +875,13 @@ CONFIG_SSB_POSSIBLE=y | |||
839 | # CONFIG_TWL4030_CORE is not set | 875 | # CONFIG_TWL4030_CORE is not set |
840 | # CONFIG_MFD_TMIO is not set | 876 | # CONFIG_MFD_TMIO is not set |
841 | # CONFIG_PMIC_DA903X is not set | 877 | # CONFIG_PMIC_DA903X is not set |
878 | # CONFIG_PMIC_ADP5520 is not set | ||
842 | # CONFIG_MFD_WM8400 is not set | 879 | # CONFIG_MFD_WM8400 is not set |
843 | # CONFIG_MFD_WM831X is not set | 880 | # CONFIG_MFD_WM831X is not set |
844 | # CONFIG_MFD_WM8350_I2C is not set | 881 | # CONFIG_MFD_WM8350_I2C is not set |
845 | # CONFIG_MFD_PCF50633 is not set | 882 | # CONFIG_MFD_PCF50633 is not set |
846 | # CONFIG_AB3100_CORE is not set | 883 | # CONFIG_AB3100_CORE is not set |
884 | # CONFIG_MFD_88PM8607 is not set | ||
847 | # CONFIG_REGULATOR is not set | 885 | # CONFIG_REGULATOR is not set |
848 | # CONFIG_MEDIA_SUPPORT is not set | 886 | # CONFIG_MEDIA_SUPPORT is not set |
849 | 887 | ||
@@ -908,7 +946,6 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y | |||
908 | # CONFIG_USB_R8A66597_HCD is not set | 946 | # CONFIG_USB_R8A66597_HCD is not set |
909 | # CONFIG_USB_WHCI_HCD is not set | 947 | # CONFIG_USB_WHCI_HCD is not set |
910 | # CONFIG_USB_HWA_HCD is not set | 948 | # CONFIG_USB_HWA_HCD is not set |
911 | # CONFIG_USB_MUSB_HDRC is not set | ||
912 | 949 | ||
913 | # | 950 | # |
914 | # USB Device Class drivers | 951 | # USB Device Class drivers |
@@ -1011,6 +1048,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1011 | CONFIG_RTC_DRV_PCF8563=m | 1048 | CONFIG_RTC_DRV_PCF8563=m |
1012 | # CONFIG_RTC_DRV_PCF8583 is not set | 1049 | # CONFIG_RTC_DRV_PCF8583 is not set |
1013 | # CONFIG_RTC_DRV_M41T80 is not set | 1050 | # CONFIG_RTC_DRV_M41T80 is not set |
1051 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1014 | # CONFIG_RTC_DRV_S35390A is not set | 1052 | # CONFIG_RTC_DRV_S35390A is not set |
1015 | # CONFIG_RTC_DRV_FM3130 is not set | 1053 | # CONFIG_RTC_DRV_FM3130 is not set |
1016 | # CONFIG_RTC_DRV_RX8581 is not set | 1054 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1032,7 +1070,9 @@ CONFIG_RTC_DRV_PCF8563=m | |||
1032 | # CONFIG_RTC_DRV_M48T86 is not set | 1070 | # CONFIG_RTC_DRV_M48T86 is not set |
1033 | # CONFIG_RTC_DRV_M48T35 is not set | 1071 | # CONFIG_RTC_DRV_M48T35 is not set |
1034 | # CONFIG_RTC_DRV_M48T59 is not set | 1072 | # CONFIG_RTC_DRV_M48T59 is not set |
1073 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1035 | # CONFIG_RTC_DRV_BQ4802 is not set | 1074 | # CONFIG_RTC_DRV_BQ4802 is not set |
1075 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1036 | # CONFIG_RTC_DRV_V3020 is not set | 1076 | # CONFIG_RTC_DRV_V3020 is not set |
1037 | 1077 | ||
1038 | # | 1078 | # |
@@ -1243,10 +1283,11 @@ CONFIG_FRAME_WARN=1024 | |||
1243 | # CONFIG_DEBUG_FS is not set | 1283 | # CONFIG_DEBUG_FS is not set |
1244 | # CONFIG_HEADERS_CHECK is not set | 1284 | # CONFIG_HEADERS_CHECK is not set |
1245 | # CONFIG_DEBUG_KERNEL is not set | 1285 | # CONFIG_DEBUG_KERNEL is not set |
1246 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1286 | CONFIG_DEBUG_BUGVERBOSE=y |
1247 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1287 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1248 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1288 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1249 | # CONFIG_LATENCYTOP is not set | 1289 | # CONFIG_LATENCYTOP is not set |
1290 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
1250 | CONFIG_HAVE_FUNCTION_TRACER=y | 1291 | CONFIG_HAVE_FUNCTION_TRACER=y |
1251 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | 1292 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y |
1252 | CONFIG_HAVE_DYNAMIC_FTRACE=y | 1293 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
@@ -1269,7 +1310,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1269 | # CONFIG_KEYS is not set | 1310 | # CONFIG_KEYS is not set |
1270 | # CONFIG_SECURITY is not set | 1311 | # CONFIG_SECURITY is not set |
1271 | # CONFIG_SECURITYFS is not set | 1312 | # CONFIG_SECURITYFS is not set |
1272 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1313 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1314 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1315 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1316 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1317 | CONFIG_DEFAULT_SECURITY="" | ||
1273 | # CONFIG_CRYPTO is not set | 1318 | # CONFIG_CRYPTO is not set |
1274 | CONFIG_PPC_CLOCK=y | 1319 | CONFIG_PPC_CLOCK=y |
1275 | CONFIG_PPC_LIB_RHEAP=y | 1320 | CONFIG_PPC_LIB_RHEAP=y |
diff --git a/arch/powerpc/configs/52xx/tqm5200_defconfig b/arch/powerpc/configs/52xx/tqm5200_defconfig index 75c835c2ae66..3972438db719 100644 --- a/arch/powerpc/configs/52xx/tqm5200_defconfig +++ b/arch/powerpc/configs/52xx/tqm5200_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.32-rc4 | 3 | # Linux kernel version: 2.6.33-rc2 |
4 | # Thu Oct 15 10:33:23 2009 | 4 | # Wed Dec 30 14:45:09 2009 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -36,6 +36,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
38 | CONFIG_IRQ_PER_CPU=y | 38 | CONFIG_IRQ_PER_CPU=y |
39 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | 40 | CONFIG_STACKTRACE_SUPPORT=y |
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y | |||
58 | CONFIG_GENERIC_BUG=y | 59 | CONFIG_GENERIC_BUG=y |
59 | CONFIG_DTC=y | 60 | CONFIG_DTC=y |
60 | CONFIG_DEFAULT_UIMAGE=y | 61 | CONFIG_DEFAULT_UIMAGE=y |
62 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
61 | # CONFIG_PPC_DCR_NATIVE is not set | 63 | # CONFIG_PPC_DCR_NATIVE is not set |
62 | # CONFIG_PPC_DCR_MMIO is not set | 64 | # CONFIG_PPC_DCR_MMIO is not set |
63 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 65 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
85 | # | 87 | # |
86 | CONFIG_TREE_RCU=y | 88 | CONFIG_TREE_RCU=y |
87 | # CONFIG_TREE_PREEMPT_RCU is not set | 89 | # CONFIG_TREE_PREEMPT_RCU is not set |
90 | # CONFIG_TINY_RCU is not set | ||
88 | # CONFIG_RCU_TRACE is not set | 91 | # CONFIG_RCU_TRACE is not set |
89 | CONFIG_RCU_FANOUT=32 | 92 | CONFIG_RCU_FANOUT=32 |
90 | # CONFIG_RCU_FANOUT_EXACT is not set | 93 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -171,14 +174,41 @@ CONFIG_LBDAF=y | |||
171 | # IO Schedulers | 174 | # IO Schedulers |
172 | # | 175 | # |
173 | CONFIG_IOSCHED_NOOP=y | 176 | CONFIG_IOSCHED_NOOP=y |
174 | CONFIG_IOSCHED_AS=y | ||
175 | CONFIG_IOSCHED_DEADLINE=y | 177 | CONFIG_IOSCHED_DEADLINE=y |
176 | CONFIG_IOSCHED_CFQ=y | 178 | CONFIG_IOSCHED_CFQ=y |
177 | CONFIG_DEFAULT_AS=y | ||
178 | # CONFIG_DEFAULT_DEADLINE is not set | 179 | # CONFIG_DEFAULT_DEADLINE is not set |
179 | # CONFIG_DEFAULT_CFQ is not set | 180 | CONFIG_DEFAULT_CFQ=y |
180 | # CONFIG_DEFAULT_NOOP is not set | 181 | # CONFIG_DEFAULT_NOOP is not set |
181 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 182 | CONFIG_DEFAULT_IOSCHED="cfq" |
183 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
184 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
185 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
186 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
189 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
190 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
191 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
192 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
193 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
194 | # CONFIG_INLINE_READ_LOCK is not set | ||
195 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
196 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
198 | CONFIG_INLINE_READ_UNLOCK=y | ||
199 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
200 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
201 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
202 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
203 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
204 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
207 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
208 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
209 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
210 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
211 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
182 | # CONFIG_FREEZER is not set | 212 | # CONFIG_FREEZER is not set |
183 | 213 | ||
184 | # | 214 | # |
@@ -194,6 +224,7 @@ CONFIG_PPC_MPC5200_SIMPLE=y | |||
194 | # CONFIG_PPC_MEDIA5200 is not set | 224 | # CONFIG_PPC_MEDIA5200 is not set |
195 | CONFIG_PPC_MPC5200_BUGFIX=y | 225 | CONFIG_PPC_MPC5200_BUGFIX=y |
196 | # CONFIG_PPC_MPC5200_GPIO is not set | 226 | # CONFIG_PPC_MPC5200_GPIO is not set |
227 | # CONFIG_PPC_MPC5200_LPBFIFO is not set | ||
197 | # CONFIG_PPC_PMAC is not set | 228 | # CONFIG_PPC_PMAC is not set |
198 | # CONFIG_PPC_CELL is not set | 229 | # CONFIG_PPC_CELL is not set |
199 | # CONFIG_PPC_CELL_NATIVE is not set | 230 | # CONFIG_PPC_CELL_NATIVE is not set |
@@ -249,6 +280,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
249 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 280 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
250 | # CONFIG_KEXEC is not set | 281 | # CONFIG_KEXEC is not set |
251 | # CONFIG_CRASH_DUMP is not set | 282 | # CONFIG_CRASH_DUMP is not set |
283 | CONFIG_SPARSE_IRQ=y | ||
252 | CONFIG_MAX_ACTIVE_REGIONS=32 | 284 | CONFIG_MAX_ACTIVE_REGIONS=32 |
253 | CONFIG_ARCH_FLATMEM_ENABLE=y | 285 | CONFIG_ARCH_FLATMEM_ENABLE=y |
254 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 286 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -265,8 +297,6 @@ CONFIG_MIGRATION=y | |||
265 | CONFIG_ZONE_DMA_FLAG=1 | 297 | CONFIG_ZONE_DMA_FLAG=1 |
266 | CONFIG_BOUNCE=y | 298 | CONFIG_BOUNCE=y |
267 | CONFIG_VIRT_TO_BUS=y | 299 | CONFIG_VIRT_TO_BUS=y |
268 | CONFIG_HAVE_MLOCK=y | ||
269 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
270 | # CONFIG_KSM is not set | 300 | # CONFIG_KSM is not set |
271 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 301 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
272 | CONFIG_PPC_4K_PAGES=y | 302 | CONFIG_PPC_4K_PAGES=y |
@@ -279,6 +309,7 @@ CONFIG_PROC_DEVICETREE=y | |||
279 | CONFIG_EXTRA_TARGETS="" | 309 | CONFIG_EXTRA_TARGETS="" |
280 | CONFIG_PM=y | 310 | CONFIG_PM=y |
281 | # CONFIG_PM_DEBUG is not set | 311 | # CONFIG_PM_DEBUG is not set |
312 | # CONFIG_HIBERNATION is not set | ||
282 | # CONFIG_PM_RUNTIME is not set | 313 | # CONFIG_PM_RUNTIME is not set |
283 | CONFIG_SECCOMP=y | 314 | CONFIG_SECCOMP=y |
284 | CONFIG_ISA_DMA_API=y | 315 | CONFIG_ISA_DMA_API=y |
@@ -384,7 +415,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
384 | # CONFIG_IRDA is not set | 415 | # CONFIG_IRDA is not set |
385 | # CONFIG_BT is not set | 416 | # CONFIG_BT is not set |
386 | # CONFIG_AF_RXRPC is not set | 417 | # CONFIG_AF_RXRPC is not set |
387 | # CONFIG_WIRELESS is not set | 418 | CONFIG_WIRELESS=y |
419 | # CONFIG_CFG80211 is not set | ||
420 | # CONFIG_LIB80211 is not set | ||
421 | |||
422 | # | ||
423 | # CFG80211 needs to be enabled for MAC80211 | ||
424 | # | ||
388 | # CONFIG_WIMAX is not set | 425 | # CONFIG_WIMAX is not set |
389 | # CONFIG_RFKILL is not set | 426 | # CONFIG_RFKILL is not set |
390 | # CONFIG_NET_9P is not set | 427 | # CONFIG_NET_9P is not set |
@@ -496,6 +533,10 @@ CONFIG_BLK_DEV=y | |||
496 | # CONFIG_BLK_DEV_COW_COMMON is not set | 533 | # CONFIG_BLK_DEV_COW_COMMON is not set |
497 | CONFIG_BLK_DEV_LOOP=y | 534 | CONFIG_BLK_DEV_LOOP=y |
498 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 535 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
536 | |||
537 | # | ||
538 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
539 | # | ||
499 | # CONFIG_BLK_DEV_NBD is not set | 540 | # CONFIG_BLK_DEV_NBD is not set |
500 | # CONFIG_BLK_DEV_UB is not set | 541 | # CONFIG_BLK_DEV_UB is not set |
501 | CONFIG_BLK_DEV_RAM=y | 542 | CONFIG_BLK_DEV_RAM=y |
@@ -607,8 +648,8 @@ CONFIG_FEC_MPC52xx_MDIO=y | |||
607 | # CONFIG_NETDEV_1000 is not set | 648 | # CONFIG_NETDEV_1000 is not set |
608 | # CONFIG_NETDEV_10000 is not set | 649 | # CONFIG_NETDEV_10000 is not set |
609 | CONFIG_WLAN=y | 650 | CONFIG_WLAN=y |
610 | # CONFIG_WLAN_PRE80211 is not set | 651 | # CONFIG_USB_ZD1201 is not set |
611 | # CONFIG_WLAN_80211 is not set | 652 | # CONFIG_HOSTAP is not set |
612 | 653 | ||
613 | # | 654 | # |
614 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 655 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -663,6 +704,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
663 | CONFIG_SERIAL_MPC52xx=y | 704 | CONFIG_SERIAL_MPC52xx=y |
664 | CONFIG_SERIAL_MPC52xx_CONSOLE=y | 705 | CONFIG_SERIAL_MPC52xx_CONSOLE=y |
665 | CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 | 706 | CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 |
707 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
666 | CONFIG_UNIX98_PTYS=y | 708 | CONFIG_UNIX98_PTYS=y |
667 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 709 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
668 | CONFIG_LEGACY_PTYS=y | 710 | CONFIG_LEGACY_PTYS=y |
@@ -708,7 +750,6 @@ CONFIG_I2C_MPC=y | |||
708 | # | 750 | # |
709 | # Miscellaneous I2C Chip support | 751 | # Miscellaneous I2C Chip support |
710 | # | 752 | # |
711 | # CONFIG_DS1682 is not set | ||
712 | # CONFIG_SENSORS_TSL2550 is not set | 753 | # CONFIG_SENSORS_TSL2550 is not set |
713 | # CONFIG_I2C_DEBUG_CORE is not set | 754 | # CONFIG_I2C_DEBUG_CORE is not set |
714 | # CONFIG_I2C_DEBUG_ALGO is not set | 755 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -753,6 +794,7 @@ CONFIG_HWMON=y | |||
753 | # CONFIG_SENSORS_GL520SM is not set | 794 | # CONFIG_SENSORS_GL520SM is not set |
754 | # CONFIG_SENSORS_IT87 is not set | 795 | # CONFIG_SENSORS_IT87 is not set |
755 | # CONFIG_SENSORS_LM63 is not set | 796 | # CONFIG_SENSORS_LM63 is not set |
797 | # CONFIG_SENSORS_LM73 is not set | ||
756 | # CONFIG_SENSORS_LM75 is not set | 798 | # CONFIG_SENSORS_LM75 is not set |
757 | # CONFIG_SENSORS_LM77 is not set | 799 | # CONFIG_SENSORS_LM77 is not set |
758 | # CONFIG_SENSORS_LM78 is not set | 800 | # CONFIG_SENSORS_LM78 is not set |
@@ -818,11 +860,13 @@ CONFIG_SSB_POSSIBLE=y | |||
818 | # CONFIG_TWL4030_CORE is not set | 860 | # CONFIG_TWL4030_CORE is not set |
819 | # CONFIG_MFD_TMIO is not set | 861 | # CONFIG_MFD_TMIO is not set |
820 | # CONFIG_PMIC_DA903X is not set | 862 | # CONFIG_PMIC_DA903X is not set |
863 | # CONFIG_PMIC_ADP5520 is not set | ||
821 | # CONFIG_MFD_WM8400 is not set | 864 | # CONFIG_MFD_WM8400 is not set |
822 | # CONFIG_MFD_WM831X is not set | 865 | # CONFIG_MFD_WM831X is not set |
823 | # CONFIG_MFD_WM8350_I2C is not set | 866 | # CONFIG_MFD_WM8350_I2C is not set |
824 | # CONFIG_MFD_PCF50633 is not set | 867 | # CONFIG_MFD_PCF50633 is not set |
825 | # CONFIG_AB3100_CORE is not set | 868 | # CONFIG_AB3100_CORE is not set |
869 | # CONFIG_MFD_88PM8607 is not set | ||
826 | # CONFIG_REGULATOR is not set | 870 | # CONFIG_REGULATOR is not set |
827 | # CONFIG_MEDIA_SUPPORT is not set | 871 | # CONFIG_MEDIA_SUPPORT is not set |
828 | 872 | ||
@@ -880,7 +924,6 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y | |||
880 | # CONFIG_USB_SL811_HCD is not set | 924 | # CONFIG_USB_SL811_HCD is not set |
881 | # CONFIG_USB_R8A66597_HCD is not set | 925 | # CONFIG_USB_R8A66597_HCD is not set |
882 | # CONFIG_USB_HWA_HCD is not set | 926 | # CONFIG_USB_HWA_HCD is not set |
883 | # CONFIG_USB_MUSB_HDRC is not set | ||
884 | 927 | ||
885 | # | 928 | # |
886 | # USB Device Class drivers | 929 | # USB Device Class drivers |
@@ -984,6 +1027,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
984 | # CONFIG_RTC_DRV_PCF8563 is not set | 1027 | # CONFIG_RTC_DRV_PCF8563 is not set |
985 | # CONFIG_RTC_DRV_PCF8583 is not set | 1028 | # CONFIG_RTC_DRV_PCF8583 is not set |
986 | # CONFIG_RTC_DRV_M41T80 is not set | 1029 | # CONFIG_RTC_DRV_M41T80 is not set |
1030 | # CONFIG_RTC_DRV_BQ32K is not set | ||
987 | # CONFIG_RTC_DRV_S35390A is not set | 1031 | # CONFIG_RTC_DRV_S35390A is not set |
988 | # CONFIG_RTC_DRV_FM3130 is not set | 1032 | # CONFIG_RTC_DRV_FM3130 is not set |
989 | # CONFIG_RTC_DRV_RX8581 is not set | 1033 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1005,7 +1049,9 @@ CONFIG_RTC_DRV_DS1307=y | |||
1005 | # CONFIG_RTC_DRV_M48T86 is not set | 1049 | # CONFIG_RTC_DRV_M48T86 is not set |
1006 | # CONFIG_RTC_DRV_M48T35 is not set | 1050 | # CONFIG_RTC_DRV_M48T35 is not set |
1007 | # CONFIG_RTC_DRV_M48T59 is not set | 1051 | # CONFIG_RTC_DRV_M48T59 is not set |
1052 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1008 | # CONFIG_RTC_DRV_BQ4802 is not set | 1053 | # CONFIG_RTC_DRV_BQ4802 is not set |
1054 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1009 | # CONFIG_RTC_DRV_V3020 is not set | 1055 | # CONFIG_RTC_DRV_V3020 is not set |
1010 | 1056 | ||
1011 | # | 1057 | # |
@@ -1275,6 +1321,7 @@ CONFIG_DEBUG_INFO=y | |||
1275 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | 1321 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set |
1276 | # CONFIG_FAULT_INJECTION is not set | 1322 | # CONFIG_FAULT_INJECTION is not set |
1277 | # CONFIG_LATENCYTOP is not set | 1323 | # CONFIG_LATENCYTOP is not set |
1324 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
1278 | # CONFIG_DEBUG_PAGEALLOC is not set | 1325 | # CONFIG_DEBUG_PAGEALLOC is not set |
1279 | CONFIG_HAVE_FUNCTION_TRACER=y | 1326 | CONFIG_HAVE_FUNCTION_TRACER=y |
1280 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | 1327 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y |
@@ -1318,7 +1365,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1318 | # CONFIG_KEYS is not set | 1365 | # CONFIG_KEYS is not set |
1319 | # CONFIG_SECURITY is not set | 1366 | # CONFIG_SECURITY is not set |
1320 | # CONFIG_SECURITYFS is not set | 1367 | # CONFIG_SECURITYFS is not set |
1321 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1368 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1369 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1370 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1371 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1372 | CONFIG_DEFAULT_SECURITY="" | ||
1322 | CONFIG_CRYPTO=y | 1373 | CONFIG_CRYPTO=y |
1323 | 1374 | ||
1324 | # | 1375 | # |
diff --git a/arch/powerpc/configs/83xx/asp8347_defconfig b/arch/powerpc/configs/83xx/asp8347_defconfig index 466f09ac3153..baa2bbb6c096 100644 --- a/arch/powerpc/configs/83xx/asp8347_defconfig +++ b/arch/powerpc/configs/83xx/asp8347_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:20 2009 | 4 | # Wed Jan 6 09:24:14 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -60,6 +61,7 @@ CONFIG_GENERIC_BUG=y | |||
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | # CONFIG_DEFAULT_UIMAGE is not set | 62 | # CONFIG_DEFAULT_UIMAGE is not set |
62 | CONFIG_REDBOOT=y | 63 | CONFIG_REDBOOT=y |
64 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
63 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 65 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
64 | # CONFIG_PPC_DCR_NATIVE is not set | 66 | # CONFIG_PPC_DCR_NATIVE is not set |
65 | # CONFIG_PPC_DCR_MMIO is not set | 67 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -88,6 +90,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
88 | # | 90 | # |
89 | CONFIG_TREE_RCU=y | 91 | CONFIG_TREE_RCU=y |
90 | # CONFIG_TREE_PREEMPT_RCU is not set | 92 | # CONFIG_TREE_PREEMPT_RCU is not set |
93 | # CONFIG_TINY_RCU is not set | ||
91 | # CONFIG_RCU_TRACE is not set | 94 | # CONFIG_RCU_TRACE is not set |
92 | CONFIG_RCU_FANOUT=32 | 95 | CONFIG_RCU_FANOUT=32 |
93 | # CONFIG_RCU_FANOUT_EXACT is not set | 96 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -174,14 +177,41 @@ CONFIG_LBDAF=y | |||
174 | # IO Schedulers | 177 | # IO Schedulers |
175 | # | 178 | # |
176 | CONFIG_IOSCHED_NOOP=y | 179 | CONFIG_IOSCHED_NOOP=y |
177 | CONFIG_IOSCHED_AS=y | ||
178 | CONFIG_IOSCHED_DEADLINE=y | 180 | CONFIG_IOSCHED_DEADLINE=y |
179 | CONFIG_IOSCHED_CFQ=y | 181 | CONFIG_IOSCHED_CFQ=y |
180 | CONFIG_DEFAULT_AS=y | ||
181 | # CONFIG_DEFAULT_DEADLINE is not set | 182 | # CONFIG_DEFAULT_DEADLINE is not set |
182 | # CONFIG_DEFAULT_CFQ is not set | 183 | CONFIG_DEFAULT_CFQ=y |
183 | # CONFIG_DEFAULT_NOOP is not set | 184 | # CONFIG_DEFAULT_NOOP is not set |
184 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 185 | CONFIG_DEFAULT_IOSCHED="cfq" |
186 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
187 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
191 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
192 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
193 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
194 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
195 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
196 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
200 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
201 | CONFIG_INLINE_READ_UNLOCK=y | ||
202 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
203 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
204 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
205 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
209 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
210 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
211 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
212 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
213 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
214 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
185 | # CONFIG_FREEZER is not set | 215 | # CONFIG_FREEZER is not set |
186 | 216 | ||
187 | # | 217 | # |
@@ -260,6 +290,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
260 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 290 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
261 | # CONFIG_KEXEC is not set | 291 | # CONFIG_KEXEC is not set |
262 | # CONFIG_CRASH_DUMP is not set | 292 | # CONFIG_CRASH_DUMP is not set |
293 | CONFIG_SPARSE_IRQ=y | ||
263 | CONFIG_MAX_ACTIVE_REGIONS=32 | 294 | CONFIG_MAX_ACTIVE_REGIONS=32 |
264 | CONFIG_ARCH_FLATMEM_ENABLE=y | 295 | CONFIG_ARCH_FLATMEM_ENABLE=y |
265 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 296 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -276,8 +307,6 @@ CONFIG_MIGRATION=y | |||
276 | CONFIG_ZONE_DMA_FLAG=1 | 307 | CONFIG_ZONE_DMA_FLAG=1 |
277 | CONFIG_BOUNCE=y | 308 | CONFIG_BOUNCE=y |
278 | CONFIG_VIRT_TO_BUS=y | 309 | CONFIG_VIRT_TO_BUS=y |
279 | CONFIG_HAVE_MLOCK=y | ||
280 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
281 | # CONFIG_KSM is not set | 310 | # CONFIG_KSM is not set |
282 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 311 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
283 | CONFIG_PPC_4K_PAGES=y | 312 | CONFIG_PPC_4K_PAGES=y |
@@ -404,9 +433,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
404 | # CONFIG_AF_RXRPC is not set | 433 | # CONFIG_AF_RXRPC is not set |
405 | CONFIG_WIRELESS=y | 434 | CONFIG_WIRELESS=y |
406 | # CONFIG_CFG80211 is not set | 435 | # CONFIG_CFG80211 is not set |
407 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
408 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
409 | # CONFIG_WIRELESS_EXT is not set | ||
410 | # CONFIG_LIB80211 is not set | 436 | # CONFIG_LIB80211 is not set |
411 | 437 | ||
412 | # | 438 | # |
@@ -530,6 +556,10 @@ CONFIG_BLK_DEV=y | |||
530 | # CONFIG_BLK_DEV_COW_COMMON is not set | 556 | # CONFIG_BLK_DEV_COW_COMMON is not set |
531 | CONFIG_BLK_DEV_LOOP=y | 557 | CONFIG_BLK_DEV_LOOP=y |
532 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 558 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
559 | |||
560 | # | ||
561 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
562 | # | ||
533 | # CONFIG_BLK_DEV_NBD is not set | 563 | # CONFIG_BLK_DEV_NBD is not set |
534 | # CONFIG_BLK_DEV_SX8 is not set | 564 | # CONFIG_BLK_DEV_SX8 is not set |
535 | # CONFIG_BLK_DEV_UB is not set | 565 | # CONFIG_BLK_DEV_UB is not set |
@@ -541,6 +571,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
541 | # CONFIG_ATA_OVER_ETH is not set | 571 | # CONFIG_ATA_OVER_ETH is not set |
542 | # CONFIG_BLK_DEV_HD is not set | 572 | # CONFIG_BLK_DEV_HD is not set |
543 | CONFIG_MISC_DEVICES=y | 573 | CONFIG_MISC_DEVICES=y |
574 | # CONFIG_AD525X_DPOT is not set | ||
544 | # CONFIG_PHANTOM is not set | 575 | # CONFIG_PHANTOM is not set |
545 | # CONFIG_SGI_IOC4 is not set | 576 | # CONFIG_SGI_IOC4 is not set |
546 | # CONFIG_TIFM_CORE is not set | 577 | # CONFIG_TIFM_CORE is not set |
@@ -548,6 +579,7 @@ CONFIG_MISC_DEVICES=y | |||
548 | # CONFIG_ENCLOSURE_SERVICES is not set | 579 | # CONFIG_ENCLOSURE_SERVICES is not set |
549 | # CONFIG_HP_ILO is not set | 580 | # CONFIG_HP_ILO is not set |
550 | # CONFIG_ISL29003 is not set | 581 | # CONFIG_ISL29003 is not set |
582 | # CONFIG_DS1682 is not set | ||
551 | # CONFIG_C2PORT is not set | 583 | # CONFIG_C2PORT is not set |
552 | 584 | ||
553 | # | 585 | # |
@@ -581,7 +613,7 @@ CONFIG_HAVE_IDE=y | |||
581 | # | 613 | # |
582 | 614 | ||
583 | # | 615 | # |
584 | # See the help texts for more information. | 616 | # The newer stack is recommended. |
585 | # | 617 | # |
586 | # CONFIG_FIREWIRE is not set | 618 | # CONFIG_FIREWIRE is not set |
587 | # CONFIG_IEEE1394 is not set | 619 | # CONFIG_IEEE1394 is not set |
@@ -668,8 +700,11 @@ CONFIG_GIANFAR=y | |||
668 | # CONFIG_NETDEV_10000 is not set | 700 | # CONFIG_NETDEV_10000 is not set |
669 | # CONFIG_TR is not set | 701 | # CONFIG_TR is not set |
670 | CONFIG_WLAN=y | 702 | CONFIG_WLAN=y |
671 | # CONFIG_WLAN_PRE80211 is not set | 703 | # CONFIG_AIRO is not set |
672 | # CONFIG_WLAN_80211 is not set | 704 | # CONFIG_ATMEL is not set |
705 | # CONFIG_PRISM54 is not set | ||
706 | # CONFIG_USB_ZD1201 is not set | ||
707 | # CONFIG_HOSTAP is not set | ||
673 | 708 | ||
674 | # | 709 | # |
675 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 710 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -691,6 +726,7 @@ CONFIG_WLAN=y | |||
691 | # CONFIG_NETCONSOLE is not set | 726 | # CONFIG_NETCONSOLE is not set |
692 | # CONFIG_NETPOLL is not set | 727 | # CONFIG_NETPOLL is not set |
693 | # CONFIG_NET_POLL_CONTROLLER is not set | 728 | # CONFIG_NET_POLL_CONTROLLER is not set |
729 | # CONFIG_VMXNET3 is not set | ||
694 | # CONFIG_ISDN is not set | 730 | # CONFIG_ISDN is not set |
695 | # CONFIG_PHONE is not set | 731 | # CONFIG_PHONE is not set |
696 | 732 | ||
@@ -700,6 +736,7 @@ CONFIG_WLAN=y | |||
700 | CONFIG_INPUT=y | 736 | CONFIG_INPUT=y |
701 | # CONFIG_INPUT_FF_MEMLESS is not set | 737 | # CONFIG_INPUT_FF_MEMLESS is not set |
702 | # CONFIG_INPUT_POLLDEV is not set | 738 | # CONFIG_INPUT_POLLDEV is not set |
739 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
703 | 740 | ||
704 | # | 741 | # |
705 | # Userland interfaces | 742 | # Userland interfaces |
@@ -751,6 +788,7 @@ CONFIG_SERIAL_CORE=y | |||
751 | CONFIG_SERIAL_CORE_CONSOLE=y | 788 | CONFIG_SERIAL_CORE_CONSOLE=y |
752 | # CONFIG_SERIAL_JSM is not set | 789 | # CONFIG_SERIAL_JSM is not set |
753 | # CONFIG_SERIAL_OF_PLATFORM is not set | 790 | # CONFIG_SERIAL_OF_PLATFORM is not set |
791 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
754 | CONFIG_UNIX98_PTYS=y | 792 | CONFIG_UNIX98_PTYS=y |
755 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 793 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
756 | CONFIG_LEGACY_PTYS=y | 794 | CONFIG_LEGACY_PTYS=y |
@@ -807,11 +845,6 @@ CONFIG_I2C_MPC=y | |||
807 | # CONFIG_I2C_TINY_USB is not set | 845 | # CONFIG_I2C_TINY_USB is not set |
808 | 846 | ||
809 | # | 847 | # |
810 | # Graphics adapter I2C/DDC channel drivers | ||
811 | # | ||
812 | # CONFIG_I2C_VOODOO3 is not set | ||
813 | |||
814 | # | ||
815 | # Other I2C/SMBus bus drivers | 848 | # Other I2C/SMBus bus drivers |
816 | # | 849 | # |
817 | # CONFIG_I2C_PCA_PLATFORM is not set | 850 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -820,7 +853,6 @@ CONFIG_I2C_MPC=y | |||
820 | # | 853 | # |
821 | # Miscellaneous I2C Chip support | 854 | # Miscellaneous I2C Chip support |
822 | # | 855 | # |
823 | # CONFIG_DS1682 is not set | ||
824 | # CONFIG_SENSORS_TSL2550 is not set | 856 | # CONFIG_SENSORS_TSL2550 is not set |
825 | # CONFIG_I2C_DEBUG_CORE is not set | 857 | # CONFIG_I2C_DEBUG_CORE is not set |
826 | # CONFIG_I2C_DEBUG_ALGO is not set | 858 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -866,6 +898,7 @@ CONFIG_HWMON=y | |||
866 | # CONFIG_SENSORS_GL520SM is not set | 898 | # CONFIG_SENSORS_GL520SM is not set |
867 | # CONFIG_SENSORS_IT87 is not set | 899 | # CONFIG_SENSORS_IT87 is not set |
868 | # CONFIG_SENSORS_LM63 is not set | 900 | # CONFIG_SENSORS_LM63 is not set |
901 | # CONFIG_SENSORS_LM73 is not set | ||
869 | # CONFIG_SENSORS_LM75 is not set | 902 | # CONFIG_SENSORS_LM75 is not set |
870 | # CONFIG_SENSORS_LM77 is not set | 903 | # CONFIG_SENSORS_LM77 is not set |
871 | # CONFIG_SENSORS_LM78 is not set | 904 | # CONFIG_SENSORS_LM78 is not set |
@@ -904,6 +937,7 @@ CONFIG_HWMON=y | |||
904 | # CONFIG_SENSORS_W83L786NG is not set | 937 | # CONFIG_SENSORS_W83L786NG is not set |
905 | # CONFIG_SENSORS_W83627HF is not set | 938 | # CONFIG_SENSORS_W83627HF is not set |
906 | # CONFIG_SENSORS_W83627EHF is not set | 939 | # CONFIG_SENSORS_W83627EHF is not set |
940 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
907 | CONFIG_THERMAL=y | 941 | CONFIG_THERMAL=y |
908 | # CONFIG_THERMAL_HWMON is not set | 942 | # CONFIG_THERMAL_HWMON is not set |
909 | CONFIG_WATCHDOG=y | 943 | CONFIG_WATCHDOG=y |
@@ -942,11 +976,13 @@ CONFIG_SSB_POSSIBLE=y | |||
942 | # CONFIG_TWL4030_CORE is not set | 976 | # CONFIG_TWL4030_CORE is not set |
943 | # CONFIG_MFD_TMIO is not set | 977 | # CONFIG_MFD_TMIO is not set |
944 | # CONFIG_PMIC_DA903X is not set | 978 | # CONFIG_PMIC_DA903X is not set |
979 | # CONFIG_PMIC_ADP5520 is not set | ||
945 | # CONFIG_MFD_WM8400 is not set | 980 | # CONFIG_MFD_WM8400 is not set |
946 | # CONFIG_MFD_WM831X is not set | 981 | # CONFIG_MFD_WM831X is not set |
947 | # CONFIG_MFD_WM8350_I2C is not set | 982 | # CONFIG_MFD_WM8350_I2C is not set |
948 | # CONFIG_MFD_PCF50633 is not set | 983 | # CONFIG_MFD_PCF50633 is not set |
949 | # CONFIG_AB3100_CORE is not set | 984 | # CONFIG_AB3100_CORE is not set |
985 | # CONFIG_MFD_88PM8607 is not set | ||
950 | # CONFIG_REGULATOR is not set | 986 | # CONFIG_REGULATOR is not set |
951 | # CONFIG_MEDIA_SUPPORT is not set | 987 | # CONFIG_MEDIA_SUPPORT is not set |
952 | 988 | ||
@@ -996,6 +1032,7 @@ CONFIG_USB_MON=y | |||
996 | CONFIG_USB_EHCI_HCD=y | 1032 | CONFIG_USB_EHCI_HCD=y |
997 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1033 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
998 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1034 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1035 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
999 | CONFIG_USB_EHCI_FSL=y | 1036 | CONFIG_USB_EHCI_FSL=y |
1000 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1037 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1001 | # CONFIG_USB_OXU210HP_HCD is not set | 1038 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1101,6 +1138,7 @@ CONFIG_RTC_DRV_DS1374=y | |||
1101 | # CONFIG_RTC_DRV_PCF8563 is not set | 1138 | # CONFIG_RTC_DRV_PCF8563 is not set |
1102 | # CONFIG_RTC_DRV_PCF8583 is not set | 1139 | # CONFIG_RTC_DRV_PCF8583 is not set |
1103 | # CONFIG_RTC_DRV_M41T80 is not set | 1140 | # CONFIG_RTC_DRV_M41T80 is not set |
1141 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1104 | # CONFIG_RTC_DRV_S35390A is not set | 1142 | # CONFIG_RTC_DRV_S35390A is not set |
1105 | # CONFIG_RTC_DRV_FM3130 is not set | 1143 | # CONFIG_RTC_DRV_FM3130 is not set |
1106 | # CONFIG_RTC_DRV_RX8581 is not set | 1144 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1122,7 +1160,9 @@ CONFIG_RTC_DRV_DS1374=y | |||
1122 | # CONFIG_RTC_DRV_M48T86 is not set | 1160 | # CONFIG_RTC_DRV_M48T86 is not set |
1123 | # CONFIG_RTC_DRV_M48T35 is not set | 1161 | # CONFIG_RTC_DRV_M48T35 is not set |
1124 | # CONFIG_RTC_DRV_M48T59 is not set | 1162 | # CONFIG_RTC_DRV_M48T59 is not set |
1163 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1125 | # CONFIG_RTC_DRV_BQ4802 is not set | 1164 | # CONFIG_RTC_DRV_BQ4802 is not set |
1165 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1126 | # CONFIG_RTC_DRV_V3020 is not set | 1166 | # CONFIG_RTC_DRV_V3020 is not set |
1127 | 1167 | ||
1128 | # | 1168 | # |
@@ -1347,7 +1387,7 @@ CONFIG_FRAME_WARN=1024 | |||
1347 | # CONFIG_DEBUG_KERNEL is not set | 1387 | # CONFIG_DEBUG_KERNEL is not set |
1348 | # CONFIG_SLUB_DEBUG_ON is not set | 1388 | # CONFIG_SLUB_DEBUG_ON is not set |
1349 | # CONFIG_SLUB_STATS is not set | 1389 | # CONFIG_SLUB_STATS is not set |
1350 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1390 | CONFIG_DEBUG_BUGVERBOSE=y |
1351 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1391 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1352 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1392 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1353 | # CONFIG_LATENCYTOP is not set | 1393 | # CONFIG_LATENCYTOP is not set |
@@ -1374,7 +1414,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1374 | # CONFIG_KEYS is not set | 1414 | # CONFIG_KEYS is not set |
1375 | # CONFIG_SECURITY is not set | 1415 | # CONFIG_SECURITY is not set |
1376 | # CONFIG_SECURITYFS is not set | 1416 | # CONFIG_SECURITYFS is not set |
1377 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1417 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1418 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1419 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1420 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1421 | CONFIG_DEFAULT_SECURITY="" | ||
1378 | CONFIG_CRYPTO=y | 1422 | CONFIG_CRYPTO=y |
1379 | 1423 | ||
1380 | # | 1424 | # |
diff --git a/arch/powerpc/configs/83xx/kmeter1_defconfig b/arch/powerpc/configs/83xx/kmeter1_defconfig index 6694fb73cd99..8b1aa806e548 100644 --- a/arch/powerpc/configs/83xx/kmeter1_defconfig +++ b/arch/powerpc/configs/83xx/kmeter1_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:21 2009 | 4 | # Wed Jan 6 09:24:14 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -89,6 +91,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y | |||
89 | # | 91 | # |
90 | CONFIG_TREE_RCU=y | 92 | CONFIG_TREE_RCU=y |
91 | # CONFIG_TREE_PREEMPT_RCU is not set | 93 | # CONFIG_TREE_PREEMPT_RCU is not set |
94 | # CONFIG_TINY_RCU is not set | ||
92 | # CONFIG_RCU_TRACE is not set | 95 | # CONFIG_RCU_TRACE is not set |
93 | CONFIG_RCU_FANOUT=32 | 96 | CONFIG_RCU_FANOUT=32 |
94 | # CONFIG_RCU_FANOUT_EXACT is not set | 97 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -168,14 +171,41 @@ CONFIG_LBDAF=y | |||
168 | # IO Schedulers | 171 | # IO Schedulers |
169 | # | 172 | # |
170 | CONFIG_IOSCHED_NOOP=y | 173 | CONFIG_IOSCHED_NOOP=y |
171 | # CONFIG_IOSCHED_AS is not set | ||
172 | # CONFIG_IOSCHED_DEADLINE is not set | 174 | # CONFIG_IOSCHED_DEADLINE is not set |
173 | # CONFIG_IOSCHED_CFQ is not set | 175 | # CONFIG_IOSCHED_CFQ is not set |
174 | # CONFIG_DEFAULT_AS is not set | ||
175 | # CONFIG_DEFAULT_DEADLINE is not set | 176 | # CONFIG_DEFAULT_DEADLINE is not set |
176 | # CONFIG_DEFAULT_CFQ is not set | 177 | # CONFIG_DEFAULT_CFQ is not set |
177 | CONFIG_DEFAULT_NOOP=y | 178 | CONFIG_DEFAULT_NOOP=y |
178 | CONFIG_DEFAULT_IOSCHED="noop" | 179 | CONFIG_DEFAULT_IOSCHED="noop" |
180 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
181 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
182 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
183 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
184 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
185 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
186 | # CONFIG_INLINE_SPIN_UNLOCK is not set | ||
187 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
188 | # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
189 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
190 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
191 | # CONFIG_INLINE_READ_LOCK is not set | ||
192 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
193 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
194 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
195 | # CONFIG_INLINE_READ_UNLOCK is not set | ||
196 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
197 | # CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
198 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
199 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
200 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
201 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
202 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
203 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
204 | # CONFIG_INLINE_WRITE_UNLOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
206 | # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
207 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
208 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
179 | # CONFIG_FREEZER is not set | 209 | # CONFIG_FREEZER is not set |
180 | 210 | ||
181 | # | 211 | # |
@@ -253,6 +283,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
253 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 283 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
254 | # CONFIG_KEXEC is not set | 284 | # CONFIG_KEXEC is not set |
255 | # CONFIG_CRASH_DUMP is not set | 285 | # CONFIG_CRASH_DUMP is not set |
286 | CONFIG_SPARSE_IRQ=y | ||
256 | CONFIG_MAX_ACTIVE_REGIONS=32 | 287 | CONFIG_MAX_ACTIVE_REGIONS=32 |
257 | CONFIG_ARCH_FLATMEM_ENABLE=y | 288 | CONFIG_ARCH_FLATMEM_ENABLE=y |
258 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 289 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -269,8 +300,6 @@ CONFIG_MIGRATION=y | |||
269 | CONFIG_ZONE_DMA_FLAG=1 | 300 | CONFIG_ZONE_DMA_FLAG=1 |
270 | CONFIG_BOUNCE=y | 301 | CONFIG_BOUNCE=y |
271 | CONFIG_VIRT_TO_BUS=y | 302 | CONFIG_VIRT_TO_BUS=y |
272 | CONFIG_HAVE_MLOCK=y | ||
273 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
274 | # CONFIG_KSM is not set | 303 | # CONFIG_KSM is not set |
275 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 304 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
276 | CONFIG_PPC_4K_PAGES=y | 305 | CONFIG_PPC_4K_PAGES=y |
@@ -384,7 +413,13 @@ CONFIG_LLC=m | |||
384 | # CONFIG_IRDA is not set | 413 | # CONFIG_IRDA is not set |
385 | # CONFIG_BT is not set | 414 | # CONFIG_BT is not set |
386 | # CONFIG_AF_RXRPC is not set | 415 | # CONFIG_AF_RXRPC is not set |
387 | # CONFIG_WIRELESS is not set | 416 | CONFIG_WIRELESS=y |
417 | # CONFIG_CFG80211 is not set | ||
418 | # CONFIG_LIB80211 is not set | ||
419 | |||
420 | # | ||
421 | # CFG80211 needs to be enabled for MAC80211 | ||
422 | # | ||
388 | # CONFIG_WIMAX is not set | 423 | # CONFIG_WIMAX is not set |
389 | # CONFIG_RFKILL is not set | 424 | # CONFIG_RFKILL is not set |
390 | # CONFIG_NET_9P is not set | 425 | # CONFIG_NET_9P is not set |
@@ -512,6 +547,10 @@ CONFIG_BLK_DEV=y | |||
512 | # CONFIG_BLK_DEV_FD is not set | 547 | # CONFIG_BLK_DEV_FD is not set |
513 | # CONFIG_BLK_DEV_COW_COMMON is not set | 548 | # CONFIG_BLK_DEV_COW_COMMON is not set |
514 | # CONFIG_BLK_DEV_LOOP is not set | 549 | # CONFIG_BLK_DEV_LOOP is not set |
550 | |||
551 | # | ||
552 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
553 | # | ||
515 | # CONFIG_BLK_DEV_NBD is not set | 554 | # CONFIG_BLK_DEV_NBD is not set |
516 | # CONFIG_BLK_DEV_RAM is not set | 555 | # CONFIG_BLK_DEV_RAM is not set |
517 | # CONFIG_CDROM_PKTCDVD is not set | 556 | # CONFIG_CDROM_PKTCDVD is not set |
@@ -581,8 +620,7 @@ CONFIG_UCC_GETH=y | |||
581 | # CONFIG_MV643XX_ETH is not set | 620 | # CONFIG_MV643XX_ETH is not set |
582 | # CONFIG_NETDEV_10000 is not set | 621 | # CONFIG_NETDEV_10000 is not set |
583 | CONFIG_WLAN=y | 622 | CONFIG_WLAN=y |
584 | # CONFIG_WLAN_PRE80211 is not set | 623 | # CONFIG_HOSTAP is not set |
585 | # CONFIG_WLAN_80211 is not set | ||
586 | 624 | ||
587 | # | 625 | # |
588 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 626 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -652,6 +690,7 @@ CONFIG_SERIAL_CORE=y | |||
652 | CONFIG_SERIAL_CORE_CONSOLE=y | 690 | CONFIG_SERIAL_CORE_CONSOLE=y |
653 | # CONFIG_SERIAL_OF_PLATFORM is not set | 691 | # CONFIG_SERIAL_OF_PLATFORM is not set |
654 | # CONFIG_SERIAL_QE is not set | 692 | # CONFIG_SERIAL_QE is not set |
693 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
655 | CONFIG_UNIX98_PTYS=y | 694 | CONFIG_UNIX98_PTYS=y |
656 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 695 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
657 | CONFIG_LEGACY_PTYS=y | 696 | CONFIG_LEGACY_PTYS=y |
@@ -697,7 +736,6 @@ CONFIG_I2C_MPC=y | |||
697 | # | 736 | # |
698 | # Miscellaneous I2C Chip support | 737 | # Miscellaneous I2C Chip support |
699 | # | 738 | # |
700 | # CONFIG_DS1682 is not set | ||
701 | # CONFIG_SENSORS_TSL2550 is not set | 739 | # CONFIG_SENSORS_TSL2550 is not set |
702 | # CONFIG_I2C_DEBUG_CORE is not set | 740 | # CONFIG_I2C_DEBUG_CORE is not set |
703 | # CONFIG_I2C_DEBUG_ALGO is not set | 741 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -732,11 +770,13 @@ CONFIG_SSB_POSSIBLE=y | |||
732 | # CONFIG_TWL4030_CORE is not set | 770 | # CONFIG_TWL4030_CORE is not set |
733 | # CONFIG_MFD_TMIO is not set | 771 | # CONFIG_MFD_TMIO is not set |
734 | # CONFIG_PMIC_DA903X is not set | 772 | # CONFIG_PMIC_DA903X is not set |
773 | # CONFIG_PMIC_ADP5520 is not set | ||
735 | # CONFIG_MFD_WM8400 is not set | 774 | # CONFIG_MFD_WM8400 is not set |
736 | # CONFIG_MFD_WM831X is not set | 775 | # CONFIG_MFD_WM831X is not set |
737 | # CONFIG_MFD_WM8350_I2C is not set | 776 | # CONFIG_MFD_WM8350_I2C is not set |
738 | # CONFIG_MFD_PCF50633 is not set | 777 | # CONFIG_MFD_PCF50633 is not set |
739 | # CONFIG_AB3100_CORE is not set | 778 | # CONFIG_AB3100_CORE is not set |
779 | # CONFIG_MFD_88PM8607 is not set | ||
740 | # CONFIG_REGULATOR is not set | 780 | # CONFIG_REGULATOR is not set |
741 | # CONFIG_MEDIA_SUPPORT is not set | 781 | # CONFIG_MEDIA_SUPPORT is not set |
742 | 782 | ||
@@ -933,7 +973,7 @@ CONFIG_FRAME_WARN=1024 | |||
933 | CONFIG_DEBUG_FS=y | 973 | CONFIG_DEBUG_FS=y |
934 | # CONFIG_HEADERS_CHECK is not set | 974 | # CONFIG_HEADERS_CHECK is not set |
935 | # CONFIG_DEBUG_KERNEL is not set | 975 | # CONFIG_DEBUG_KERNEL is not set |
936 | # CONFIG_DEBUG_BUGVERBOSE is not set | 976 | CONFIG_DEBUG_BUGVERBOSE=y |
937 | # CONFIG_DEBUG_MEMORY_INIT is not set | 977 | # CONFIG_DEBUG_MEMORY_INIT is not set |
938 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 978 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
939 | # CONFIG_LATENCYTOP is not set | 979 | # CONFIG_LATENCYTOP is not set |
@@ -963,7 +1003,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
963 | # CONFIG_KEYS is not set | 1003 | # CONFIG_KEYS is not set |
964 | # CONFIG_SECURITY is not set | 1004 | # CONFIG_SECURITY is not set |
965 | # CONFIG_SECURITYFS is not set | 1005 | # CONFIG_SECURITYFS is not set |
966 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1006 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1007 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1008 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1009 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1010 | CONFIG_DEFAULT_SECURITY="" | ||
967 | # CONFIG_CRYPTO is not set | 1011 | # CONFIG_CRYPTO is not set |
968 | # CONFIG_PPC_CLOCK is not set | 1012 | # CONFIG_PPC_CLOCK is not set |
969 | CONFIG_PPC_LIB_RHEAP=y | 1013 | CONFIG_PPC_LIB_RHEAP=y |
diff --git a/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig b/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig index 86df19f041a4..2f2d98558e44 100644 --- a/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig +++ b/arch/powerpc/configs/83xx/mpc8313_rdb_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:22 2009 | 4 | # Wed Jan 6 09:24:15 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
87 | # | 89 | # |
88 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y | |||
173 | # IO Schedulers | 176 | # IO Schedulers |
174 | # | 177 | # |
175 | CONFIG_IOSCHED_NOOP=y | 178 | CONFIG_IOSCHED_NOOP=y |
176 | CONFIG_IOSCHED_AS=y | ||
177 | CONFIG_IOSCHED_DEADLINE=y | 179 | CONFIG_IOSCHED_DEADLINE=y |
178 | CONFIG_IOSCHED_CFQ=y | 180 | CONFIG_IOSCHED_CFQ=y |
179 | CONFIG_DEFAULT_AS=y | ||
180 | # CONFIG_DEFAULT_DEADLINE is not set | 181 | # CONFIG_DEFAULT_DEADLINE is not set |
181 | # CONFIG_DEFAULT_CFQ is not set | 182 | CONFIG_DEFAULT_CFQ=y |
182 | # CONFIG_DEFAULT_NOOP is not set | 183 | # CONFIG_DEFAULT_NOOP is not set |
183 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 184 | CONFIG_DEFAULT_IOSCHED="cfq" |
185 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
186 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
191 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
192 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
193 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
194 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
195 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
200 | CONFIG_INLINE_READ_UNLOCK=y | ||
201 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
202 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
203 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
204 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
209 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
210 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
211 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
212 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
213 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
184 | # CONFIG_FREEZER is not set | 214 | # CONFIG_FREEZER is not set |
185 | 215 | ||
186 | # | 216 | # |
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
259 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 289 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
260 | # CONFIG_KEXEC is not set | 290 | # CONFIG_KEXEC is not set |
261 | # CONFIG_CRASH_DUMP is not set | 291 | # CONFIG_CRASH_DUMP is not set |
292 | CONFIG_SPARSE_IRQ=y | ||
262 | CONFIG_MAX_ACTIVE_REGIONS=32 | 293 | CONFIG_MAX_ACTIVE_REGIONS=32 |
263 | CONFIG_ARCH_FLATMEM_ENABLE=y | 294 | CONFIG_ARCH_FLATMEM_ENABLE=y |
264 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 295 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y | |||
275 | CONFIG_ZONE_DMA_FLAG=1 | 306 | CONFIG_ZONE_DMA_FLAG=1 |
276 | CONFIG_BOUNCE=y | 307 | CONFIG_BOUNCE=y |
277 | CONFIG_VIRT_TO_BUS=y | 308 | CONFIG_VIRT_TO_BUS=y |
278 | CONFIG_HAVE_MLOCK=y | ||
279 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
280 | # CONFIG_KSM is not set | 309 | # CONFIG_KSM is not set |
281 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 310 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
282 | CONFIG_PPC_4K_PAGES=y | 311 | CONFIG_PPC_4K_PAGES=y |
@@ -404,9 +433,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
404 | # CONFIG_AF_RXRPC is not set | 433 | # CONFIG_AF_RXRPC is not set |
405 | CONFIG_WIRELESS=y | 434 | CONFIG_WIRELESS=y |
406 | # CONFIG_CFG80211 is not set | 435 | # CONFIG_CFG80211 is not set |
407 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
408 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
409 | # CONFIG_WIRELESS_EXT is not set | ||
410 | # CONFIG_LIB80211 is not set | 436 | # CONFIG_LIB80211 is not set |
411 | 437 | ||
412 | # | 438 | # |
@@ -544,6 +570,10 @@ CONFIG_BLK_DEV=y | |||
544 | # CONFIG_BLK_DEV_COW_COMMON is not set | 570 | # CONFIG_BLK_DEV_COW_COMMON is not set |
545 | CONFIG_BLK_DEV_LOOP=y | 571 | CONFIG_BLK_DEV_LOOP=y |
546 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 572 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
573 | |||
574 | # | ||
575 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
576 | # | ||
547 | # CONFIG_BLK_DEV_NBD is not set | 577 | # CONFIG_BLK_DEV_NBD is not set |
548 | # CONFIG_BLK_DEV_SX8 is not set | 578 | # CONFIG_BLK_DEV_SX8 is not set |
549 | # CONFIG_BLK_DEV_UB is not set | 579 | # CONFIG_BLK_DEV_UB is not set |
@@ -555,6 +585,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
555 | # CONFIG_ATA_OVER_ETH is not set | 585 | # CONFIG_ATA_OVER_ETH is not set |
556 | # CONFIG_BLK_DEV_HD is not set | 586 | # CONFIG_BLK_DEV_HD is not set |
557 | CONFIG_MISC_DEVICES=y | 587 | CONFIG_MISC_DEVICES=y |
588 | # CONFIG_AD525X_DPOT is not set | ||
558 | # CONFIG_PHANTOM is not set | 589 | # CONFIG_PHANTOM is not set |
559 | # CONFIG_SGI_IOC4 is not set | 590 | # CONFIG_SGI_IOC4 is not set |
560 | # CONFIG_TIFM_CORE is not set | 591 | # CONFIG_TIFM_CORE is not set |
@@ -562,6 +593,8 @@ CONFIG_MISC_DEVICES=y | |||
562 | # CONFIG_ENCLOSURE_SERVICES is not set | 593 | # CONFIG_ENCLOSURE_SERVICES is not set |
563 | # CONFIG_HP_ILO is not set | 594 | # CONFIG_HP_ILO is not set |
564 | # CONFIG_ISL29003 is not set | 595 | # CONFIG_ISL29003 is not set |
596 | # CONFIG_DS1682 is not set | ||
597 | # CONFIG_TI_DAC7512 is not set | ||
565 | # CONFIG_C2PORT is not set | 598 | # CONFIG_C2PORT is not set |
566 | 599 | ||
567 | # | 600 | # |
@@ -615,7 +648,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
615 | # CONFIG_SCSI_BNX2_ISCSI is not set | 648 | # CONFIG_SCSI_BNX2_ISCSI is not set |
616 | # CONFIG_BE2ISCSI is not set | 649 | # CONFIG_BE2ISCSI is not set |
617 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 650 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
651 | # CONFIG_SCSI_HPSA is not set | ||
618 | # CONFIG_SCSI_3W_9XXX is not set | 652 | # CONFIG_SCSI_3W_9XXX is not set |
653 | # CONFIG_SCSI_3W_SAS is not set | ||
619 | # CONFIG_SCSI_ACARD is not set | 654 | # CONFIG_SCSI_ACARD is not set |
620 | # CONFIG_SCSI_AACRAID is not set | 655 | # CONFIG_SCSI_AACRAID is not set |
621 | # CONFIG_SCSI_AIC7XXX is not set | 656 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -653,6 +688,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
653 | # CONFIG_SCSI_NSP32 is not set | 688 | # CONFIG_SCSI_NSP32 is not set |
654 | # CONFIG_SCSI_DEBUG is not set | 689 | # CONFIG_SCSI_DEBUG is not set |
655 | # CONFIG_SCSI_PMCRAID is not set | 690 | # CONFIG_SCSI_PMCRAID is not set |
691 | # CONFIG_SCSI_PM8001 is not set | ||
656 | # CONFIG_SCSI_SRP is not set | 692 | # CONFIG_SCSI_SRP is not set |
657 | # CONFIG_SCSI_BFA_FC is not set | 693 | # CONFIG_SCSI_BFA_FC is not set |
658 | # CONFIG_SCSI_DH is not set | 694 | # CONFIG_SCSI_DH is not set |
@@ -680,7 +716,7 @@ CONFIG_MD_RAID1=y | |||
680 | # | 716 | # |
681 | 717 | ||
682 | # | 718 | # |
683 | # See the help texts for more information. | 719 | # The newer stack is recommended. |
684 | # | 720 | # |
685 | # CONFIG_FIREWIRE is not set | 721 | # CONFIG_FIREWIRE is not set |
686 | # CONFIG_IEEE1394 is not set | 722 | # CONFIG_IEEE1394 is not set |
@@ -805,8 +841,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
805 | # CONFIG_BE2NET is not set | 841 | # CONFIG_BE2NET is not set |
806 | # CONFIG_TR is not set | 842 | # CONFIG_TR is not set |
807 | CONFIG_WLAN=y | 843 | CONFIG_WLAN=y |
808 | # CONFIG_WLAN_PRE80211 is not set | 844 | # CONFIG_AIRO is not set |
809 | # CONFIG_WLAN_80211 is not set | 845 | # CONFIG_ATMEL is not set |
846 | # CONFIG_PRISM54 is not set | ||
847 | # CONFIG_USB_ZD1201 is not set | ||
848 | # CONFIG_HOSTAP is not set | ||
810 | 849 | ||
811 | # | 850 | # |
812 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 851 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -829,6 +868,7 @@ CONFIG_WLAN=y | |||
829 | # CONFIG_NETCONSOLE is not set | 868 | # CONFIG_NETCONSOLE is not set |
830 | # CONFIG_NETPOLL is not set | 869 | # CONFIG_NETPOLL is not set |
831 | # CONFIG_NET_POLL_CONTROLLER is not set | 870 | # CONFIG_NET_POLL_CONTROLLER is not set |
871 | # CONFIG_VMXNET3 is not set | ||
832 | # CONFIG_ISDN is not set | 872 | # CONFIG_ISDN is not set |
833 | # CONFIG_PHONE is not set | 873 | # CONFIG_PHONE is not set |
834 | 874 | ||
@@ -838,6 +878,7 @@ CONFIG_WLAN=y | |||
838 | CONFIG_INPUT=y | 878 | CONFIG_INPUT=y |
839 | # CONFIG_INPUT_FF_MEMLESS is not set | 879 | # CONFIG_INPUT_FF_MEMLESS is not set |
840 | # CONFIG_INPUT_POLLDEV is not set | 880 | # CONFIG_INPUT_POLLDEV is not set |
881 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
841 | 882 | ||
842 | # | 883 | # |
843 | # Userland interfaces | 884 | # Userland interfaces |
@@ -890,6 +931,7 @@ CONFIG_SERIAL_CORE=y | |||
890 | CONFIG_SERIAL_CORE_CONSOLE=y | 931 | CONFIG_SERIAL_CORE_CONSOLE=y |
891 | # CONFIG_SERIAL_JSM is not set | 932 | # CONFIG_SERIAL_JSM is not set |
892 | # CONFIG_SERIAL_OF_PLATFORM is not set | 933 | # CONFIG_SERIAL_OF_PLATFORM is not set |
934 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
893 | CONFIG_UNIX98_PTYS=y | 935 | CONFIG_UNIX98_PTYS=y |
894 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 936 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
895 | CONFIG_LEGACY_PTYS=y | 937 | CONFIG_LEGACY_PTYS=y |
@@ -947,11 +989,6 @@ CONFIG_I2C_MPC=y | |||
947 | # CONFIG_I2C_TINY_USB is not set | 989 | # CONFIG_I2C_TINY_USB is not set |
948 | 990 | ||
949 | # | 991 | # |
950 | # Graphics adapter I2C/DDC channel drivers | ||
951 | # | ||
952 | # CONFIG_I2C_VOODOO3 is not set | ||
953 | |||
954 | # | ||
955 | # Other I2C/SMBus bus drivers | 992 | # Other I2C/SMBus bus drivers |
956 | # | 993 | # |
957 | # CONFIG_I2C_PCA_PLATFORM is not set | 994 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -960,7 +997,6 @@ CONFIG_I2C_MPC=y | |||
960 | # | 997 | # |
961 | # Miscellaneous I2C Chip support | 998 | # Miscellaneous I2C Chip support |
962 | # | 999 | # |
963 | # CONFIG_DS1682 is not set | ||
964 | # CONFIG_SENSORS_TSL2550 is not set | 1000 | # CONFIG_SENSORS_TSL2550 is not set |
965 | # CONFIG_I2C_DEBUG_CORE is not set | 1001 | # CONFIG_I2C_DEBUG_CORE is not set |
966 | # CONFIG_I2C_DEBUG_ALGO is not set | 1002 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -975,6 +1011,8 @@ CONFIG_SPI_MASTER=y | |||
975 | # | 1011 | # |
976 | CONFIG_SPI_BITBANG=y | 1012 | CONFIG_SPI_BITBANG=y |
977 | # CONFIG_SPI_MPC8xxx is not set | 1013 | # CONFIG_SPI_MPC8xxx is not set |
1014 | # CONFIG_SPI_XILINX is not set | ||
1015 | # CONFIG_SPI_DESIGNWARE is not set | ||
978 | 1016 | ||
979 | # | 1017 | # |
980 | # SPI Protocol Masters | 1018 | # SPI Protocol Masters |
@@ -1022,6 +1060,7 @@ CONFIG_HWMON=y | |||
1022 | # CONFIG_SENSORS_IT87 is not set | 1060 | # CONFIG_SENSORS_IT87 is not set |
1023 | # CONFIG_SENSORS_LM63 is not set | 1061 | # CONFIG_SENSORS_LM63 is not set |
1024 | # CONFIG_SENSORS_LM70 is not set | 1062 | # CONFIG_SENSORS_LM70 is not set |
1063 | # CONFIG_SENSORS_LM73 is not set | ||
1025 | # CONFIG_SENSORS_LM75 is not set | 1064 | # CONFIG_SENSORS_LM75 is not set |
1026 | # CONFIG_SENSORS_LM77 is not set | 1065 | # CONFIG_SENSORS_LM77 is not set |
1027 | # CONFIG_SENSORS_LM78 is not set | 1066 | # CONFIG_SENSORS_LM78 is not set |
@@ -1062,6 +1101,7 @@ CONFIG_HWMON=y | |||
1062 | # CONFIG_SENSORS_W83627HF is not set | 1101 | # CONFIG_SENSORS_W83627HF is not set |
1063 | # CONFIG_SENSORS_W83627EHF is not set | 1102 | # CONFIG_SENSORS_W83627EHF is not set |
1064 | # CONFIG_SENSORS_LIS3_SPI is not set | 1103 | # CONFIG_SENSORS_LIS3_SPI is not set |
1104 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1065 | # CONFIG_THERMAL is not set | 1105 | # CONFIG_THERMAL is not set |
1066 | CONFIG_WATCHDOG=y | 1106 | CONFIG_WATCHDOG=y |
1067 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1107 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -1099,6 +1139,7 @@ CONFIG_SSB_POSSIBLE=y | |||
1099 | # CONFIG_TWL4030_CORE is not set | 1139 | # CONFIG_TWL4030_CORE is not set |
1100 | # CONFIG_MFD_TMIO is not set | 1140 | # CONFIG_MFD_TMIO is not set |
1101 | # CONFIG_PMIC_DA903X is not set | 1141 | # CONFIG_PMIC_DA903X is not set |
1142 | # CONFIG_PMIC_ADP5520 is not set | ||
1102 | # CONFIG_MFD_WM8400 is not set | 1143 | # CONFIG_MFD_WM8400 is not set |
1103 | # CONFIG_MFD_WM831X is not set | 1144 | # CONFIG_MFD_WM831X is not set |
1104 | # CONFIG_MFD_WM8350_I2C is not set | 1145 | # CONFIG_MFD_WM8350_I2C is not set |
@@ -1106,6 +1147,8 @@ CONFIG_SSB_POSSIBLE=y | |||
1106 | # CONFIG_MFD_MC13783 is not set | 1147 | # CONFIG_MFD_MC13783 is not set |
1107 | # CONFIG_AB3100_CORE is not set | 1148 | # CONFIG_AB3100_CORE is not set |
1108 | # CONFIG_EZX_PCAP is not set | 1149 | # CONFIG_EZX_PCAP is not set |
1150 | # CONFIG_MFD_88PM8607 is not set | ||
1151 | # CONFIG_AB4500_CORE is not set | ||
1109 | # CONFIG_REGULATOR is not set | 1152 | # CONFIG_REGULATOR is not set |
1110 | # CONFIG_MEDIA_SUPPORT is not set | 1153 | # CONFIG_MEDIA_SUPPORT is not set |
1111 | 1154 | ||
@@ -1173,6 +1216,7 @@ CONFIG_USB_MON=y | |||
1173 | CONFIG_USB_EHCI_HCD=y | 1216 | CONFIG_USB_EHCI_HCD=y |
1174 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1217 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
1175 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1218 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1219 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1176 | CONFIG_USB_EHCI_FSL=y | 1220 | CONFIG_USB_EHCI_FSL=y |
1177 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1221 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1178 | # CONFIG_USB_OXU210HP_HCD is not set | 1222 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1287,15 +1331,17 @@ CONFIG_USB_NET2280=y | |||
1287 | CONFIG_USB_GADGET_DUALSPEED=y | 1331 | CONFIG_USB_GADGET_DUALSPEED=y |
1288 | # CONFIG_USB_ZERO is not set | 1332 | # CONFIG_USB_ZERO is not set |
1289 | # CONFIG_USB_AUDIO is not set | 1333 | # CONFIG_USB_AUDIO is not set |
1290 | CONFIG_USB_ETH=y | 1334 | CONFIG_USB_ETH=m |
1291 | CONFIG_USB_ETH_RNDIS=y | 1335 | CONFIG_USB_ETH_RNDIS=y |
1292 | # CONFIG_USB_ETH_EEM is not set | 1336 | # CONFIG_USB_ETH_EEM is not set |
1293 | # CONFIG_USB_GADGETFS is not set | 1337 | # CONFIG_USB_GADGETFS is not set |
1294 | # CONFIG_USB_FILE_STORAGE is not set | 1338 | # CONFIG_USB_FILE_STORAGE is not set |
1339 | # CONFIG_USB_MASS_STORAGE is not set | ||
1295 | # CONFIG_USB_G_SERIAL is not set | 1340 | # CONFIG_USB_G_SERIAL is not set |
1296 | # CONFIG_USB_MIDI_GADGET is not set | 1341 | # CONFIG_USB_MIDI_GADGET is not set |
1297 | # CONFIG_USB_G_PRINTER is not set | 1342 | # CONFIG_USB_G_PRINTER is not set |
1298 | # CONFIG_USB_CDC_COMPOSITE is not set | 1343 | # CONFIG_USB_CDC_COMPOSITE is not set |
1344 | # CONFIG_USB_G_MULTI is not set | ||
1299 | 1345 | ||
1300 | # | 1346 | # |
1301 | # OTG and related infrastructure | 1347 | # OTG and related infrastructure |
@@ -1336,6 +1382,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
1336 | # CONFIG_RTC_DRV_PCF8563 is not set | 1382 | # CONFIG_RTC_DRV_PCF8563 is not set |
1337 | # CONFIG_RTC_DRV_PCF8583 is not set | 1383 | # CONFIG_RTC_DRV_PCF8583 is not set |
1338 | # CONFIG_RTC_DRV_M41T80 is not set | 1384 | # CONFIG_RTC_DRV_M41T80 is not set |
1385 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1339 | # CONFIG_RTC_DRV_S35390A is not set | 1386 | # CONFIG_RTC_DRV_S35390A is not set |
1340 | # CONFIG_RTC_DRV_FM3130 is not set | 1387 | # CONFIG_RTC_DRV_FM3130 is not set |
1341 | # CONFIG_RTC_DRV_RX8581 is not set | 1388 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1365,7 +1412,9 @@ CONFIG_RTC_DRV_DS1307=y | |||
1365 | # CONFIG_RTC_DRV_M48T86 is not set | 1412 | # CONFIG_RTC_DRV_M48T86 is not set |
1366 | # CONFIG_RTC_DRV_M48T35 is not set | 1413 | # CONFIG_RTC_DRV_M48T35 is not set |
1367 | # CONFIG_RTC_DRV_M48T59 is not set | 1414 | # CONFIG_RTC_DRV_M48T59 is not set |
1415 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1368 | # CONFIG_RTC_DRV_BQ4802 is not set | 1416 | # CONFIG_RTC_DRV_BQ4802 is not set |
1417 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1369 | # CONFIG_RTC_DRV_V3020 is not set | 1418 | # CONFIG_RTC_DRV_V3020 is not set |
1370 | 1419 | ||
1371 | # | 1420 | # |
@@ -1676,7 +1725,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1676 | # CONFIG_KEYS is not set | 1725 | # CONFIG_KEYS is not set |
1677 | # CONFIG_SECURITY is not set | 1726 | # CONFIG_SECURITY is not set |
1678 | # CONFIG_SECURITYFS is not set | 1727 | # CONFIG_SECURITYFS is not set |
1679 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1728 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1729 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1730 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1731 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1732 | CONFIG_DEFAULT_SECURITY="" | ||
1680 | CONFIG_CRYPTO=y | 1733 | CONFIG_CRYPTO=y |
1681 | 1734 | ||
1682 | # | 1735 | # |
diff --git a/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig b/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig index 7bf71d577033..633e61194603 100644 --- a/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig +++ b/arch/powerpc/configs/83xx/mpc8315_rdb_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:23 2009 | 4 | # Wed Jan 6 09:24:16 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
87 | # | 89 | # |
88 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y | |||
173 | # IO Schedulers | 176 | # IO Schedulers |
174 | # | 177 | # |
175 | CONFIG_IOSCHED_NOOP=y | 178 | CONFIG_IOSCHED_NOOP=y |
176 | CONFIG_IOSCHED_AS=y | ||
177 | CONFIG_IOSCHED_DEADLINE=y | 179 | CONFIG_IOSCHED_DEADLINE=y |
178 | CONFIG_IOSCHED_CFQ=y | 180 | CONFIG_IOSCHED_CFQ=y |
179 | CONFIG_DEFAULT_AS=y | ||
180 | # CONFIG_DEFAULT_DEADLINE is not set | 181 | # CONFIG_DEFAULT_DEADLINE is not set |
181 | # CONFIG_DEFAULT_CFQ is not set | 182 | CONFIG_DEFAULT_CFQ=y |
182 | # CONFIG_DEFAULT_NOOP is not set | 183 | # CONFIG_DEFAULT_NOOP is not set |
183 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 184 | CONFIG_DEFAULT_IOSCHED="cfq" |
185 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
186 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
191 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
192 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
193 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
194 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
195 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
200 | CONFIG_INLINE_READ_UNLOCK=y | ||
201 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
202 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
203 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
204 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
209 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
210 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
211 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
212 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
213 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
184 | # CONFIG_FREEZER is not set | 214 | # CONFIG_FREEZER is not set |
185 | 215 | ||
186 | # | 216 | # |
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
259 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 289 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
260 | # CONFIG_KEXEC is not set | 290 | # CONFIG_KEXEC is not set |
261 | # CONFIG_CRASH_DUMP is not set | 291 | # CONFIG_CRASH_DUMP is not set |
292 | CONFIG_SPARSE_IRQ=y | ||
262 | CONFIG_MAX_ACTIVE_REGIONS=32 | 293 | CONFIG_MAX_ACTIVE_REGIONS=32 |
263 | CONFIG_ARCH_FLATMEM_ENABLE=y | 294 | CONFIG_ARCH_FLATMEM_ENABLE=y |
264 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 295 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y | |||
275 | CONFIG_ZONE_DMA_FLAG=1 | 306 | CONFIG_ZONE_DMA_FLAG=1 |
276 | CONFIG_BOUNCE=y | 307 | CONFIG_BOUNCE=y |
277 | CONFIG_VIRT_TO_BUS=y | 308 | CONFIG_VIRT_TO_BUS=y |
278 | CONFIG_HAVE_MLOCK=y | ||
279 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
280 | # CONFIG_KSM is not set | 309 | # CONFIG_KSM is not set |
281 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 310 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
282 | CONFIG_PPC_4K_PAGES=y | 311 | CONFIG_PPC_4K_PAGES=y |
@@ -404,9 +433,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
404 | # CONFIG_AF_RXRPC is not set | 433 | # CONFIG_AF_RXRPC is not set |
405 | CONFIG_WIRELESS=y | 434 | CONFIG_WIRELESS=y |
406 | # CONFIG_CFG80211 is not set | 435 | # CONFIG_CFG80211 is not set |
407 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
408 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
409 | # CONFIG_WIRELESS_EXT is not set | ||
410 | # CONFIG_LIB80211 is not set | 436 | # CONFIG_LIB80211 is not set |
411 | 437 | ||
412 | # | 438 | # |
@@ -544,6 +570,10 @@ CONFIG_BLK_DEV=y | |||
544 | # CONFIG_BLK_DEV_COW_COMMON is not set | 570 | # CONFIG_BLK_DEV_COW_COMMON is not set |
545 | CONFIG_BLK_DEV_LOOP=y | 571 | CONFIG_BLK_DEV_LOOP=y |
546 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 572 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
573 | |||
574 | # | ||
575 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
576 | # | ||
547 | # CONFIG_BLK_DEV_NBD is not set | 577 | # CONFIG_BLK_DEV_NBD is not set |
548 | # CONFIG_BLK_DEV_SX8 is not set | 578 | # CONFIG_BLK_DEV_SX8 is not set |
549 | # CONFIG_BLK_DEV_UB is not set | 579 | # CONFIG_BLK_DEV_UB is not set |
@@ -555,6 +585,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
555 | # CONFIG_ATA_OVER_ETH is not set | 585 | # CONFIG_ATA_OVER_ETH is not set |
556 | # CONFIG_BLK_DEV_HD is not set | 586 | # CONFIG_BLK_DEV_HD is not set |
557 | CONFIG_MISC_DEVICES=y | 587 | CONFIG_MISC_DEVICES=y |
588 | # CONFIG_AD525X_DPOT is not set | ||
558 | # CONFIG_PHANTOM is not set | 589 | # CONFIG_PHANTOM is not set |
559 | # CONFIG_SGI_IOC4 is not set | 590 | # CONFIG_SGI_IOC4 is not set |
560 | # CONFIG_TIFM_CORE is not set | 591 | # CONFIG_TIFM_CORE is not set |
@@ -562,6 +593,8 @@ CONFIG_MISC_DEVICES=y | |||
562 | # CONFIG_ENCLOSURE_SERVICES is not set | 593 | # CONFIG_ENCLOSURE_SERVICES is not set |
563 | # CONFIG_HP_ILO is not set | 594 | # CONFIG_HP_ILO is not set |
564 | # CONFIG_ISL29003 is not set | 595 | # CONFIG_ISL29003 is not set |
596 | # CONFIG_DS1682 is not set | ||
597 | # CONFIG_TI_DAC7512 is not set | ||
565 | # CONFIG_C2PORT is not set | 598 | # CONFIG_C2PORT is not set |
566 | 599 | ||
567 | # | 600 | # |
@@ -615,7 +648,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
615 | # CONFIG_SCSI_BNX2_ISCSI is not set | 648 | # CONFIG_SCSI_BNX2_ISCSI is not set |
616 | # CONFIG_BE2ISCSI is not set | 649 | # CONFIG_BE2ISCSI is not set |
617 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 650 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
651 | # CONFIG_SCSI_HPSA is not set | ||
618 | # CONFIG_SCSI_3W_9XXX is not set | 652 | # CONFIG_SCSI_3W_9XXX is not set |
653 | # CONFIG_SCSI_3W_SAS is not set | ||
619 | # CONFIG_SCSI_ACARD is not set | 654 | # CONFIG_SCSI_ACARD is not set |
620 | # CONFIG_SCSI_AACRAID is not set | 655 | # CONFIG_SCSI_AACRAID is not set |
621 | # CONFIG_SCSI_AIC7XXX is not set | 656 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -654,6 +689,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
654 | # CONFIG_SCSI_NSP32 is not set | 689 | # CONFIG_SCSI_NSP32 is not set |
655 | # CONFIG_SCSI_DEBUG is not set | 690 | # CONFIG_SCSI_DEBUG is not set |
656 | # CONFIG_SCSI_PMCRAID is not set | 691 | # CONFIG_SCSI_PMCRAID is not set |
692 | # CONFIG_SCSI_PM8001 is not set | ||
657 | # CONFIG_SCSI_SRP is not set | 693 | # CONFIG_SCSI_SRP is not set |
658 | # CONFIG_SCSI_BFA_FC is not set | 694 | # CONFIG_SCSI_BFA_FC is not set |
659 | # CONFIG_SCSI_DH is not set | 695 | # CONFIG_SCSI_DH is not set |
@@ -709,15 +745,16 @@ CONFIG_ATA_SFF=y | |||
709 | # CONFIG_PATA_NS87415 is not set | 745 | # CONFIG_PATA_NS87415 is not set |
710 | # CONFIG_PATA_OPTI is not set | 746 | # CONFIG_PATA_OPTI is not set |
711 | # CONFIG_PATA_OPTIDMA is not set | 747 | # CONFIG_PATA_OPTIDMA is not set |
748 | # CONFIG_PATA_PDC2027X is not set | ||
712 | # CONFIG_PATA_PDC_OLD is not set | 749 | # CONFIG_PATA_PDC_OLD is not set |
713 | # CONFIG_PATA_RADISYS is not set | 750 | # CONFIG_PATA_RADISYS is not set |
714 | # CONFIG_PATA_RDC is not set | 751 | # CONFIG_PATA_RDC is not set |
715 | # CONFIG_PATA_RZ1000 is not set | 752 | # CONFIG_PATA_RZ1000 is not set |
716 | # CONFIG_PATA_SC1200 is not set | 753 | # CONFIG_PATA_SC1200 is not set |
717 | # CONFIG_PATA_SERVERWORKS is not set | 754 | # CONFIG_PATA_SERVERWORKS is not set |
718 | # CONFIG_PATA_PDC2027X is not set | ||
719 | # CONFIG_PATA_SIL680 is not set | 755 | # CONFIG_PATA_SIL680 is not set |
720 | # CONFIG_PATA_SIS is not set | 756 | # CONFIG_PATA_SIS is not set |
757 | # CONFIG_PATA_TOSHIBA is not set | ||
721 | # CONFIG_PATA_VIA is not set | 758 | # CONFIG_PATA_VIA is not set |
722 | # CONFIG_PATA_WINBOND is not set | 759 | # CONFIG_PATA_WINBOND is not set |
723 | # CONFIG_PATA_PLATFORM is not set | 760 | # CONFIG_PATA_PLATFORM is not set |
@@ -744,7 +781,7 @@ CONFIG_MD_RAID1=y | |||
744 | # | 781 | # |
745 | 782 | ||
746 | # | 783 | # |
747 | # See the help texts for more information. | 784 | # The newer stack is recommended. |
748 | # | 785 | # |
749 | # CONFIG_FIREWIRE is not set | 786 | # CONFIG_FIREWIRE is not set |
750 | # CONFIG_IEEE1394 is not set | 787 | # CONFIG_IEEE1394 is not set |
@@ -869,8 +906,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
869 | # CONFIG_BE2NET is not set | 906 | # CONFIG_BE2NET is not set |
870 | # CONFIG_TR is not set | 907 | # CONFIG_TR is not set |
871 | CONFIG_WLAN=y | 908 | CONFIG_WLAN=y |
872 | # CONFIG_WLAN_PRE80211 is not set | 909 | # CONFIG_AIRO is not set |
873 | # CONFIG_WLAN_80211 is not set | 910 | # CONFIG_ATMEL is not set |
911 | # CONFIG_PRISM54 is not set | ||
912 | # CONFIG_USB_ZD1201 is not set | ||
913 | # CONFIG_HOSTAP is not set | ||
874 | 914 | ||
875 | # | 915 | # |
876 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 916 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -893,6 +933,7 @@ CONFIG_WLAN=y | |||
893 | # CONFIG_NETCONSOLE is not set | 933 | # CONFIG_NETCONSOLE is not set |
894 | # CONFIG_NETPOLL is not set | 934 | # CONFIG_NETPOLL is not set |
895 | # CONFIG_NET_POLL_CONTROLLER is not set | 935 | # CONFIG_NET_POLL_CONTROLLER is not set |
936 | # CONFIG_VMXNET3 is not set | ||
896 | # CONFIG_ISDN is not set | 937 | # CONFIG_ISDN is not set |
897 | # CONFIG_PHONE is not set | 938 | # CONFIG_PHONE is not set |
898 | 939 | ||
@@ -902,6 +943,7 @@ CONFIG_WLAN=y | |||
902 | CONFIG_INPUT=y | 943 | CONFIG_INPUT=y |
903 | # CONFIG_INPUT_FF_MEMLESS is not set | 944 | # CONFIG_INPUT_FF_MEMLESS is not set |
904 | # CONFIG_INPUT_POLLDEV is not set | 945 | # CONFIG_INPUT_POLLDEV is not set |
946 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
905 | 947 | ||
906 | # | 948 | # |
907 | # Userland interfaces | 949 | # Userland interfaces |
@@ -954,6 +996,7 @@ CONFIG_SERIAL_CORE=y | |||
954 | CONFIG_SERIAL_CORE_CONSOLE=y | 996 | CONFIG_SERIAL_CORE_CONSOLE=y |
955 | # CONFIG_SERIAL_JSM is not set | 997 | # CONFIG_SERIAL_JSM is not set |
956 | # CONFIG_SERIAL_OF_PLATFORM is not set | 998 | # CONFIG_SERIAL_OF_PLATFORM is not set |
999 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
957 | CONFIG_UNIX98_PTYS=y | 1000 | CONFIG_UNIX98_PTYS=y |
958 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 1001 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
959 | CONFIG_LEGACY_PTYS=y | 1002 | CONFIG_LEGACY_PTYS=y |
@@ -1011,11 +1054,6 @@ CONFIG_I2C_MPC=y | |||
1011 | # CONFIG_I2C_TINY_USB is not set | 1054 | # CONFIG_I2C_TINY_USB is not set |
1012 | 1055 | ||
1013 | # | 1056 | # |
1014 | # Graphics adapter I2C/DDC channel drivers | ||
1015 | # | ||
1016 | # CONFIG_I2C_VOODOO3 is not set | ||
1017 | |||
1018 | # | ||
1019 | # Other I2C/SMBus bus drivers | 1057 | # Other I2C/SMBus bus drivers |
1020 | # | 1058 | # |
1021 | # CONFIG_I2C_PCA_PLATFORM is not set | 1059 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -1024,7 +1062,6 @@ CONFIG_I2C_MPC=y | |||
1024 | # | 1062 | # |
1025 | # Miscellaneous I2C Chip support | 1063 | # Miscellaneous I2C Chip support |
1026 | # | 1064 | # |
1027 | # CONFIG_DS1682 is not set | ||
1028 | # CONFIG_SENSORS_TSL2550 is not set | 1065 | # CONFIG_SENSORS_TSL2550 is not set |
1029 | # CONFIG_I2C_DEBUG_CORE is not set | 1066 | # CONFIG_I2C_DEBUG_CORE is not set |
1030 | # CONFIG_I2C_DEBUG_ALGO is not set | 1067 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1039,6 +1076,8 @@ CONFIG_SPI_MASTER=y | |||
1039 | # | 1076 | # |
1040 | CONFIG_SPI_BITBANG=y | 1077 | CONFIG_SPI_BITBANG=y |
1041 | # CONFIG_SPI_MPC8xxx is not set | 1078 | # CONFIG_SPI_MPC8xxx is not set |
1079 | # CONFIG_SPI_XILINX is not set | ||
1080 | # CONFIG_SPI_DESIGNWARE is not set | ||
1042 | 1081 | ||
1043 | # | 1082 | # |
1044 | # SPI Protocol Masters | 1083 | # SPI Protocol Masters |
@@ -1086,6 +1125,7 @@ CONFIG_HWMON=y | |||
1086 | # CONFIG_SENSORS_IT87 is not set | 1125 | # CONFIG_SENSORS_IT87 is not set |
1087 | # CONFIG_SENSORS_LM63 is not set | 1126 | # CONFIG_SENSORS_LM63 is not set |
1088 | # CONFIG_SENSORS_LM70 is not set | 1127 | # CONFIG_SENSORS_LM70 is not set |
1128 | # CONFIG_SENSORS_LM73 is not set | ||
1089 | # CONFIG_SENSORS_LM75 is not set | 1129 | # CONFIG_SENSORS_LM75 is not set |
1090 | # CONFIG_SENSORS_LM77 is not set | 1130 | # CONFIG_SENSORS_LM77 is not set |
1091 | # CONFIG_SENSORS_LM78 is not set | 1131 | # CONFIG_SENSORS_LM78 is not set |
@@ -1126,6 +1166,7 @@ CONFIG_HWMON=y | |||
1126 | # CONFIG_SENSORS_W83627HF is not set | 1166 | # CONFIG_SENSORS_W83627HF is not set |
1127 | # CONFIG_SENSORS_W83627EHF is not set | 1167 | # CONFIG_SENSORS_W83627EHF is not set |
1128 | # CONFIG_SENSORS_LIS3_SPI is not set | 1168 | # CONFIG_SENSORS_LIS3_SPI is not set |
1169 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1129 | # CONFIG_THERMAL is not set | 1170 | # CONFIG_THERMAL is not set |
1130 | CONFIG_WATCHDOG=y | 1171 | CONFIG_WATCHDOG=y |
1131 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1172 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -1163,6 +1204,7 @@ CONFIG_SSB_POSSIBLE=y | |||
1163 | # CONFIG_TWL4030_CORE is not set | 1204 | # CONFIG_TWL4030_CORE is not set |
1164 | # CONFIG_MFD_TMIO is not set | 1205 | # CONFIG_MFD_TMIO is not set |
1165 | # CONFIG_PMIC_DA903X is not set | 1206 | # CONFIG_PMIC_DA903X is not set |
1207 | # CONFIG_PMIC_ADP5520 is not set | ||
1166 | # CONFIG_MFD_WM8400 is not set | 1208 | # CONFIG_MFD_WM8400 is not set |
1167 | # CONFIG_MFD_WM831X is not set | 1209 | # CONFIG_MFD_WM831X is not set |
1168 | # CONFIG_MFD_WM8350_I2C is not set | 1210 | # CONFIG_MFD_WM8350_I2C is not set |
@@ -1170,6 +1212,8 @@ CONFIG_SSB_POSSIBLE=y | |||
1170 | # CONFIG_MFD_MC13783 is not set | 1212 | # CONFIG_MFD_MC13783 is not set |
1171 | # CONFIG_AB3100_CORE is not set | 1213 | # CONFIG_AB3100_CORE is not set |
1172 | # CONFIG_EZX_PCAP is not set | 1214 | # CONFIG_EZX_PCAP is not set |
1215 | # CONFIG_MFD_88PM8607 is not set | ||
1216 | # CONFIG_AB4500_CORE is not set | ||
1173 | # CONFIG_REGULATOR is not set | 1217 | # CONFIG_REGULATOR is not set |
1174 | # CONFIG_MEDIA_SUPPORT is not set | 1218 | # CONFIG_MEDIA_SUPPORT is not set |
1175 | 1219 | ||
@@ -1237,6 +1281,7 @@ CONFIG_USB_MON=y | |||
1237 | CONFIG_USB_EHCI_HCD=y | 1281 | CONFIG_USB_EHCI_HCD=y |
1238 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1282 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
1239 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1283 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1284 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1240 | CONFIG_USB_EHCI_FSL=y | 1285 | CONFIG_USB_EHCI_FSL=y |
1241 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1286 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1242 | # CONFIG_USB_OXU210HP_HCD is not set | 1287 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1351,15 +1396,17 @@ CONFIG_USB_NET2280=y | |||
1351 | CONFIG_USB_GADGET_DUALSPEED=y | 1396 | CONFIG_USB_GADGET_DUALSPEED=y |
1352 | # CONFIG_USB_ZERO is not set | 1397 | # CONFIG_USB_ZERO is not set |
1353 | # CONFIG_USB_AUDIO is not set | 1398 | # CONFIG_USB_AUDIO is not set |
1354 | CONFIG_USB_ETH=y | 1399 | CONFIG_USB_ETH=m |
1355 | CONFIG_USB_ETH_RNDIS=y | 1400 | CONFIG_USB_ETH_RNDIS=y |
1356 | # CONFIG_USB_ETH_EEM is not set | 1401 | # CONFIG_USB_ETH_EEM is not set |
1357 | # CONFIG_USB_GADGETFS is not set | 1402 | # CONFIG_USB_GADGETFS is not set |
1358 | # CONFIG_USB_FILE_STORAGE is not set | 1403 | # CONFIG_USB_FILE_STORAGE is not set |
1404 | # CONFIG_USB_MASS_STORAGE is not set | ||
1359 | # CONFIG_USB_G_SERIAL is not set | 1405 | # CONFIG_USB_G_SERIAL is not set |
1360 | # CONFIG_USB_MIDI_GADGET is not set | 1406 | # CONFIG_USB_MIDI_GADGET is not set |
1361 | # CONFIG_USB_G_PRINTER is not set | 1407 | # CONFIG_USB_G_PRINTER is not set |
1362 | # CONFIG_USB_CDC_COMPOSITE is not set | 1408 | # CONFIG_USB_CDC_COMPOSITE is not set |
1409 | # CONFIG_USB_G_MULTI is not set | ||
1363 | 1410 | ||
1364 | # | 1411 | # |
1365 | # OTG and related infrastructure | 1412 | # OTG and related infrastructure |
@@ -1400,6 +1447,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
1400 | # CONFIG_RTC_DRV_PCF8563 is not set | 1447 | # CONFIG_RTC_DRV_PCF8563 is not set |
1401 | # CONFIG_RTC_DRV_PCF8583 is not set | 1448 | # CONFIG_RTC_DRV_PCF8583 is not set |
1402 | # CONFIG_RTC_DRV_M41T80 is not set | 1449 | # CONFIG_RTC_DRV_M41T80 is not set |
1450 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1403 | # CONFIG_RTC_DRV_S35390A is not set | 1451 | # CONFIG_RTC_DRV_S35390A is not set |
1404 | # CONFIG_RTC_DRV_FM3130 is not set | 1452 | # CONFIG_RTC_DRV_FM3130 is not set |
1405 | # CONFIG_RTC_DRV_RX8581 is not set | 1453 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1429,7 +1477,9 @@ CONFIG_RTC_DRV_DS1307=y | |||
1429 | # CONFIG_RTC_DRV_M48T86 is not set | 1477 | # CONFIG_RTC_DRV_M48T86 is not set |
1430 | # CONFIG_RTC_DRV_M48T35 is not set | 1478 | # CONFIG_RTC_DRV_M48T35 is not set |
1431 | # CONFIG_RTC_DRV_M48T59 is not set | 1479 | # CONFIG_RTC_DRV_M48T59 is not set |
1480 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1432 | # CONFIG_RTC_DRV_BQ4802 is not set | 1481 | # CONFIG_RTC_DRV_BQ4802 is not set |
1482 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1433 | # CONFIG_RTC_DRV_V3020 is not set | 1483 | # CONFIG_RTC_DRV_V3020 is not set |
1434 | 1484 | ||
1435 | # | 1485 | # |
@@ -1740,7 +1790,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1740 | # CONFIG_KEYS is not set | 1790 | # CONFIG_KEYS is not set |
1741 | # CONFIG_SECURITY is not set | 1791 | # CONFIG_SECURITY is not set |
1742 | # CONFIG_SECURITYFS is not set | 1792 | # CONFIG_SECURITYFS is not set |
1743 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1793 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1794 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1795 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1796 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1797 | CONFIG_DEFAULT_SECURITY="" | ||
1744 | CONFIG_CRYPTO=y | 1798 | CONFIG_CRYPTO=y |
1745 | 1799 | ||
1746 | # | 1800 | # |
diff --git a/arch/powerpc/configs/83xx/mpc832x_mds_defconfig b/arch/powerpc/configs/83xx/mpc832x_mds_defconfig index 7def83518a6c..0b4262bd4917 100644 --- a/arch/powerpc/configs/83xx/mpc832x_mds_defconfig +++ b/arch/powerpc/configs/83xx/mpc832x_mds_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:24 2009 | 4 | # Wed Jan 6 09:24:17 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
87 | # | 89 | # |
88 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y | |||
173 | # IO Schedulers | 176 | # IO Schedulers |
174 | # | 177 | # |
175 | CONFIG_IOSCHED_NOOP=y | 178 | CONFIG_IOSCHED_NOOP=y |
176 | CONFIG_IOSCHED_AS=y | ||
177 | CONFIG_IOSCHED_DEADLINE=y | 179 | CONFIG_IOSCHED_DEADLINE=y |
178 | CONFIG_IOSCHED_CFQ=y | 180 | CONFIG_IOSCHED_CFQ=y |
179 | CONFIG_DEFAULT_AS=y | ||
180 | # CONFIG_DEFAULT_DEADLINE is not set | 181 | # CONFIG_DEFAULT_DEADLINE is not set |
181 | # CONFIG_DEFAULT_CFQ is not set | 182 | CONFIG_DEFAULT_CFQ=y |
182 | # CONFIG_DEFAULT_NOOP is not set | 183 | # CONFIG_DEFAULT_NOOP is not set |
183 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 184 | CONFIG_DEFAULT_IOSCHED="cfq" |
185 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
186 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
191 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
192 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
193 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
194 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
195 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
200 | CONFIG_INLINE_READ_UNLOCK=y | ||
201 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
202 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
203 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
204 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
209 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
210 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
211 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
212 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
213 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
184 | # CONFIG_FREEZER is not set | 214 | # CONFIG_FREEZER is not set |
185 | 215 | ||
186 | # | 216 | # |
@@ -260,6 +290,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
260 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 290 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
261 | # CONFIG_KEXEC is not set | 291 | # CONFIG_KEXEC is not set |
262 | # CONFIG_CRASH_DUMP is not set | 292 | # CONFIG_CRASH_DUMP is not set |
293 | CONFIG_SPARSE_IRQ=y | ||
263 | CONFIG_MAX_ACTIVE_REGIONS=32 | 294 | CONFIG_MAX_ACTIVE_REGIONS=32 |
264 | CONFIG_ARCH_FLATMEM_ENABLE=y | 295 | CONFIG_ARCH_FLATMEM_ENABLE=y |
265 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 296 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -276,8 +307,6 @@ CONFIG_MIGRATION=y | |||
276 | CONFIG_ZONE_DMA_FLAG=1 | 307 | CONFIG_ZONE_DMA_FLAG=1 |
277 | CONFIG_BOUNCE=y | 308 | CONFIG_BOUNCE=y |
278 | CONFIG_VIRT_TO_BUS=y | 309 | CONFIG_VIRT_TO_BUS=y |
279 | CONFIG_HAVE_MLOCK=y | ||
280 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
281 | # CONFIG_KSM is not set | 310 | # CONFIG_KSM is not set |
282 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 311 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
283 | CONFIG_PPC_4K_PAGES=y | 312 | CONFIG_PPC_4K_PAGES=y |
@@ -404,9 +433,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
404 | # CONFIG_AF_RXRPC is not set | 433 | # CONFIG_AF_RXRPC is not set |
405 | CONFIG_WIRELESS=y | 434 | CONFIG_WIRELESS=y |
406 | # CONFIG_CFG80211 is not set | 435 | # CONFIG_CFG80211 is not set |
407 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
408 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
409 | # CONFIG_WIRELESS_EXT is not set | ||
410 | # CONFIG_LIB80211 is not set | 436 | # CONFIG_LIB80211 is not set |
411 | 437 | ||
412 | # | 438 | # |
@@ -444,6 +470,10 @@ CONFIG_BLK_DEV=y | |||
444 | # CONFIG_BLK_DEV_COW_COMMON is not set | 470 | # CONFIG_BLK_DEV_COW_COMMON is not set |
445 | CONFIG_BLK_DEV_LOOP=y | 471 | CONFIG_BLK_DEV_LOOP=y |
446 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 472 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
473 | |||
474 | # | ||
475 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
476 | # | ||
447 | # CONFIG_BLK_DEV_NBD is not set | 477 | # CONFIG_BLK_DEV_NBD is not set |
448 | # CONFIG_BLK_DEV_SX8 is not set | 478 | # CONFIG_BLK_DEV_SX8 is not set |
449 | CONFIG_BLK_DEV_RAM=y | 479 | CONFIG_BLK_DEV_RAM=y |
@@ -454,6 +484,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
454 | # CONFIG_ATA_OVER_ETH is not set | 484 | # CONFIG_ATA_OVER_ETH is not set |
455 | # CONFIG_BLK_DEV_HD is not set | 485 | # CONFIG_BLK_DEV_HD is not set |
456 | CONFIG_MISC_DEVICES=y | 486 | CONFIG_MISC_DEVICES=y |
487 | # CONFIG_AD525X_DPOT is not set | ||
457 | # CONFIG_PHANTOM is not set | 488 | # CONFIG_PHANTOM is not set |
458 | # CONFIG_SGI_IOC4 is not set | 489 | # CONFIG_SGI_IOC4 is not set |
459 | # CONFIG_TIFM_CORE is not set | 490 | # CONFIG_TIFM_CORE is not set |
@@ -461,6 +492,7 @@ CONFIG_MISC_DEVICES=y | |||
461 | # CONFIG_ENCLOSURE_SERVICES is not set | 492 | # CONFIG_ENCLOSURE_SERVICES is not set |
462 | # CONFIG_HP_ILO is not set | 493 | # CONFIG_HP_ILO is not set |
463 | # CONFIG_ISL29003 is not set | 494 | # CONFIG_ISL29003 is not set |
495 | # CONFIG_DS1682 is not set | ||
464 | # CONFIG_C2PORT is not set | 496 | # CONFIG_C2PORT is not set |
465 | 497 | ||
466 | # | 498 | # |
@@ -513,7 +545,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
513 | # CONFIG_SCSI_BNX2_ISCSI is not set | 545 | # CONFIG_SCSI_BNX2_ISCSI is not set |
514 | # CONFIG_BE2ISCSI is not set | 546 | # CONFIG_BE2ISCSI is not set |
515 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 547 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
548 | # CONFIG_SCSI_HPSA is not set | ||
516 | # CONFIG_SCSI_3W_9XXX is not set | 549 | # CONFIG_SCSI_3W_9XXX is not set |
550 | # CONFIG_SCSI_3W_SAS is not set | ||
517 | # CONFIG_SCSI_ACARD is not set | 551 | # CONFIG_SCSI_ACARD is not set |
518 | # CONFIG_SCSI_AACRAID is not set | 552 | # CONFIG_SCSI_AACRAID is not set |
519 | # CONFIG_SCSI_AIC7XXX is not set | 553 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -551,6 +585,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
551 | # CONFIG_SCSI_NSP32 is not set | 585 | # CONFIG_SCSI_NSP32 is not set |
552 | # CONFIG_SCSI_DEBUG is not set | 586 | # CONFIG_SCSI_DEBUG is not set |
553 | # CONFIG_SCSI_PMCRAID is not set | 587 | # CONFIG_SCSI_PMCRAID is not set |
588 | # CONFIG_SCSI_PM8001 is not set | ||
554 | # CONFIG_SCSI_SRP is not set | 589 | # CONFIG_SCSI_SRP is not set |
555 | # CONFIG_SCSI_BFA_FC is not set | 590 | # CONFIG_SCSI_BFA_FC is not set |
556 | # CONFIG_SCSI_DH is not set | 591 | # CONFIG_SCSI_DH is not set |
@@ -568,7 +603,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
568 | # | 603 | # |
569 | 604 | ||
570 | # | 605 | # |
571 | # See the help texts for more information. | 606 | # The newer stack is recommended. |
572 | # | 607 | # |
573 | # CONFIG_FIREWIRE is not set | 608 | # CONFIG_FIREWIRE is not set |
574 | # CONFIG_IEEE1394 is not set | 609 | # CONFIG_IEEE1394 is not set |
@@ -675,8 +710,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
675 | # CONFIG_BE2NET is not set | 710 | # CONFIG_BE2NET is not set |
676 | # CONFIG_TR is not set | 711 | # CONFIG_TR is not set |
677 | CONFIG_WLAN=y | 712 | CONFIG_WLAN=y |
678 | # CONFIG_WLAN_PRE80211 is not set | 713 | # CONFIG_AIRO is not set |
679 | # CONFIG_WLAN_80211 is not set | 714 | # CONFIG_ATMEL is not set |
715 | # CONFIG_PRISM54 is not set | ||
716 | # CONFIG_HOSTAP is not set | ||
680 | 717 | ||
681 | # | 718 | # |
682 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 719 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -690,6 +727,7 @@ CONFIG_WLAN=y | |||
690 | # CONFIG_NETCONSOLE is not set | 727 | # CONFIG_NETCONSOLE is not set |
691 | # CONFIG_NETPOLL is not set | 728 | # CONFIG_NETPOLL is not set |
692 | # CONFIG_NET_POLL_CONTROLLER is not set | 729 | # CONFIG_NET_POLL_CONTROLLER is not set |
730 | # CONFIG_VMXNET3 is not set | ||
693 | # CONFIG_ISDN is not set | 731 | # CONFIG_ISDN is not set |
694 | # CONFIG_PHONE is not set | 732 | # CONFIG_PHONE is not set |
695 | 733 | ||
@@ -699,6 +737,7 @@ CONFIG_WLAN=y | |||
699 | CONFIG_INPUT=y | 737 | CONFIG_INPUT=y |
700 | # CONFIG_INPUT_FF_MEMLESS is not set | 738 | # CONFIG_INPUT_FF_MEMLESS is not set |
701 | # CONFIG_INPUT_POLLDEV is not set | 739 | # CONFIG_INPUT_POLLDEV is not set |
740 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
702 | 741 | ||
703 | # | 742 | # |
704 | # Userland interfaces | 743 | # Userland interfaces |
@@ -751,6 +790,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
751 | # CONFIG_SERIAL_JSM is not set | 790 | # CONFIG_SERIAL_JSM is not set |
752 | # CONFIG_SERIAL_OF_PLATFORM is not set | 791 | # CONFIG_SERIAL_OF_PLATFORM is not set |
753 | # CONFIG_SERIAL_QE is not set | 792 | # CONFIG_SERIAL_QE is not set |
793 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
754 | CONFIG_UNIX98_PTYS=y | 794 | CONFIG_UNIX98_PTYS=y |
755 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 795 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
756 | CONFIG_LEGACY_PTYS=y | 796 | CONFIG_LEGACY_PTYS=y |
@@ -807,11 +847,6 @@ CONFIG_I2C_MPC=y | |||
807 | # CONFIG_I2C_TAOS_EVM is not set | 847 | # CONFIG_I2C_TAOS_EVM is not set |
808 | 848 | ||
809 | # | 849 | # |
810 | # Graphics adapter I2C/DDC channel drivers | ||
811 | # | ||
812 | # CONFIG_I2C_VOODOO3 is not set | ||
813 | |||
814 | # | ||
815 | # Other I2C/SMBus bus drivers | 850 | # Other I2C/SMBus bus drivers |
816 | # | 851 | # |
817 | # CONFIG_I2C_PCA_PLATFORM is not set | 852 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -820,7 +855,6 @@ CONFIG_I2C_MPC=y | |||
820 | # | 855 | # |
821 | # Miscellaneous I2C Chip support | 856 | # Miscellaneous I2C Chip support |
822 | # | 857 | # |
823 | # CONFIG_DS1682 is not set | ||
824 | # CONFIG_SENSORS_TSL2550 is not set | 858 | # CONFIG_SENSORS_TSL2550 is not set |
825 | # CONFIG_I2C_DEBUG_CORE is not set | 859 | # CONFIG_I2C_DEBUG_CORE is not set |
826 | # CONFIG_I2C_DEBUG_ALGO is not set | 860 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -866,6 +900,7 @@ CONFIG_HWMON=y | |||
866 | # CONFIG_SENSORS_GL520SM is not set | 900 | # CONFIG_SENSORS_GL520SM is not set |
867 | # CONFIG_SENSORS_IT87 is not set | 901 | # CONFIG_SENSORS_IT87 is not set |
868 | # CONFIG_SENSORS_LM63 is not set | 902 | # CONFIG_SENSORS_LM63 is not set |
903 | # CONFIG_SENSORS_LM73 is not set | ||
869 | # CONFIG_SENSORS_LM75 is not set | 904 | # CONFIG_SENSORS_LM75 is not set |
870 | # CONFIG_SENSORS_LM77 is not set | 905 | # CONFIG_SENSORS_LM77 is not set |
871 | # CONFIG_SENSORS_LM78 is not set | 906 | # CONFIG_SENSORS_LM78 is not set |
@@ -904,6 +939,7 @@ CONFIG_HWMON=y | |||
904 | # CONFIG_SENSORS_W83L786NG is not set | 939 | # CONFIG_SENSORS_W83L786NG is not set |
905 | # CONFIG_SENSORS_W83627HF is not set | 940 | # CONFIG_SENSORS_W83627HF is not set |
906 | # CONFIG_SENSORS_W83627EHF is not set | 941 | # CONFIG_SENSORS_W83627EHF is not set |
942 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
907 | # CONFIG_THERMAL is not set | 943 | # CONFIG_THERMAL is not set |
908 | CONFIG_WATCHDOG=y | 944 | CONFIG_WATCHDOG=y |
909 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 945 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -936,11 +972,13 @@ CONFIG_SSB_POSSIBLE=y | |||
936 | # CONFIG_TWL4030_CORE is not set | 972 | # CONFIG_TWL4030_CORE is not set |
937 | # CONFIG_MFD_TMIO is not set | 973 | # CONFIG_MFD_TMIO is not set |
938 | # CONFIG_PMIC_DA903X is not set | 974 | # CONFIG_PMIC_DA903X is not set |
975 | # CONFIG_PMIC_ADP5520 is not set | ||
939 | # CONFIG_MFD_WM8400 is not set | 976 | # CONFIG_MFD_WM8400 is not set |
940 | # CONFIG_MFD_WM831X is not set | 977 | # CONFIG_MFD_WM831X is not set |
941 | # CONFIG_MFD_WM8350_I2C is not set | 978 | # CONFIG_MFD_WM8350_I2C is not set |
942 | # CONFIG_MFD_PCF50633 is not set | 979 | # CONFIG_MFD_PCF50633 is not set |
943 | # CONFIG_AB3100_CORE is not set | 980 | # CONFIG_AB3100_CORE is not set |
981 | # CONFIG_MFD_88PM8607 is not set | ||
944 | # CONFIG_REGULATOR is not set | 982 | # CONFIG_REGULATOR is not set |
945 | # CONFIG_MEDIA_SUPPORT is not set | 983 | # CONFIG_MEDIA_SUPPORT is not set |
946 | 984 | ||
@@ -1023,6 +1061,7 @@ CONFIG_RTC_DRV_DS1374=y | |||
1023 | # CONFIG_RTC_DRV_PCF8563 is not set | 1061 | # CONFIG_RTC_DRV_PCF8563 is not set |
1024 | # CONFIG_RTC_DRV_PCF8583 is not set | 1062 | # CONFIG_RTC_DRV_PCF8583 is not set |
1025 | # CONFIG_RTC_DRV_M41T80 is not set | 1063 | # CONFIG_RTC_DRV_M41T80 is not set |
1064 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1026 | # CONFIG_RTC_DRV_S35390A is not set | 1065 | # CONFIG_RTC_DRV_S35390A is not set |
1027 | # CONFIG_RTC_DRV_FM3130 is not set | 1066 | # CONFIG_RTC_DRV_FM3130 is not set |
1028 | # CONFIG_RTC_DRV_RX8581 is not set | 1067 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1044,7 +1083,9 @@ CONFIG_RTC_DRV_DS1374=y | |||
1044 | # CONFIG_RTC_DRV_M48T86 is not set | 1083 | # CONFIG_RTC_DRV_M48T86 is not set |
1045 | # CONFIG_RTC_DRV_M48T35 is not set | 1084 | # CONFIG_RTC_DRV_M48T35 is not set |
1046 | # CONFIG_RTC_DRV_M48T59 is not set | 1085 | # CONFIG_RTC_DRV_M48T59 is not set |
1086 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1047 | # CONFIG_RTC_DRV_BQ4802 is not set | 1087 | # CONFIG_RTC_DRV_BQ4802 is not set |
1088 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1048 | # CONFIG_RTC_DRV_V3020 is not set | 1089 | # CONFIG_RTC_DRV_V3020 is not set |
1049 | 1090 | ||
1050 | # | 1091 | # |
@@ -1220,7 +1261,7 @@ CONFIG_FRAME_WARN=1024 | |||
1220 | # CONFIG_DEBUG_KERNEL is not set | 1261 | # CONFIG_DEBUG_KERNEL is not set |
1221 | # CONFIG_SLUB_DEBUG_ON is not set | 1262 | # CONFIG_SLUB_DEBUG_ON is not set |
1222 | # CONFIG_SLUB_STATS is not set | 1263 | # CONFIG_SLUB_STATS is not set |
1223 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1264 | CONFIG_DEBUG_BUGVERBOSE=y |
1224 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1265 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1225 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1266 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1226 | # CONFIG_LATENCYTOP is not set | 1267 | # CONFIG_LATENCYTOP is not set |
@@ -1247,7 +1288,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1247 | # CONFIG_KEYS is not set | 1288 | # CONFIG_KEYS is not set |
1248 | # CONFIG_SECURITY is not set | 1289 | # CONFIG_SECURITY is not set |
1249 | # CONFIG_SECURITYFS is not set | 1290 | # CONFIG_SECURITYFS is not set |
1250 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1291 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1292 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1293 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1294 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1295 | CONFIG_DEFAULT_SECURITY="" | ||
1251 | CONFIG_CRYPTO=y | 1296 | CONFIG_CRYPTO=y |
1252 | 1297 | ||
1253 | # | 1298 | # |
diff --git a/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig b/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig index b398b9b2b635..155af009f7b5 100644 --- a/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig +++ b/arch/powerpc/configs/83xx/mpc832x_rdb_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:24 2009 | 4 | # Wed Jan 6 09:24:18 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
87 | # | 89 | # |
88 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y | |||
173 | # IO Schedulers | 176 | # IO Schedulers |
174 | # | 177 | # |
175 | CONFIG_IOSCHED_NOOP=y | 178 | CONFIG_IOSCHED_NOOP=y |
176 | CONFIG_IOSCHED_AS=y | ||
177 | CONFIG_IOSCHED_DEADLINE=y | 179 | CONFIG_IOSCHED_DEADLINE=y |
178 | CONFIG_IOSCHED_CFQ=y | 180 | CONFIG_IOSCHED_CFQ=y |
179 | CONFIG_DEFAULT_AS=y | ||
180 | # CONFIG_DEFAULT_DEADLINE is not set | 181 | # CONFIG_DEFAULT_DEADLINE is not set |
181 | # CONFIG_DEFAULT_CFQ is not set | 182 | CONFIG_DEFAULT_CFQ=y |
182 | # CONFIG_DEFAULT_NOOP is not set | 183 | # CONFIG_DEFAULT_NOOP is not set |
183 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 184 | CONFIG_DEFAULT_IOSCHED="cfq" |
185 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
186 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
191 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
192 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
193 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
194 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
195 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
200 | CONFIG_INLINE_READ_UNLOCK=y | ||
201 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
202 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
203 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
204 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
209 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
210 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
211 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
212 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
213 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
184 | # CONFIG_FREEZER is not set | 214 | # CONFIG_FREEZER is not set |
185 | 215 | ||
186 | # | 216 | # |
@@ -260,6 +290,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
260 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 290 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
261 | # CONFIG_KEXEC is not set | 291 | # CONFIG_KEXEC is not set |
262 | # CONFIG_CRASH_DUMP is not set | 292 | # CONFIG_CRASH_DUMP is not set |
293 | CONFIG_SPARSE_IRQ=y | ||
263 | CONFIG_MAX_ACTIVE_REGIONS=32 | 294 | CONFIG_MAX_ACTIVE_REGIONS=32 |
264 | CONFIG_ARCH_FLATMEM_ENABLE=y | 295 | CONFIG_ARCH_FLATMEM_ENABLE=y |
265 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 296 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -276,8 +307,6 @@ CONFIG_MIGRATION=y | |||
276 | CONFIG_ZONE_DMA_FLAG=1 | 307 | CONFIG_ZONE_DMA_FLAG=1 |
277 | CONFIG_BOUNCE=y | 308 | CONFIG_BOUNCE=y |
278 | CONFIG_VIRT_TO_BUS=y | 309 | CONFIG_VIRT_TO_BUS=y |
279 | CONFIG_HAVE_MLOCK=y | ||
280 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
281 | # CONFIG_KSM is not set | 310 | # CONFIG_KSM is not set |
282 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 311 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
283 | CONFIG_PPC_4K_PAGES=y | 312 | CONFIG_PPC_4K_PAGES=y |
@@ -404,9 +433,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
404 | # CONFIG_AF_RXRPC is not set | 433 | # CONFIG_AF_RXRPC is not set |
405 | CONFIG_WIRELESS=y | 434 | CONFIG_WIRELESS=y |
406 | # CONFIG_CFG80211 is not set | 435 | # CONFIG_CFG80211 is not set |
407 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
408 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
409 | # CONFIG_WIRELESS_EXT is not set | ||
410 | # CONFIG_LIB80211 is not set | 436 | # CONFIG_LIB80211 is not set |
411 | 437 | ||
412 | # | 438 | # |
@@ -445,6 +471,10 @@ CONFIG_BLK_DEV=y | |||
445 | # CONFIG_BLK_DEV_COW_COMMON is not set | 471 | # CONFIG_BLK_DEV_COW_COMMON is not set |
446 | CONFIG_BLK_DEV_LOOP=y | 472 | CONFIG_BLK_DEV_LOOP=y |
447 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 473 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
474 | |||
475 | # | ||
476 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
477 | # | ||
448 | # CONFIG_BLK_DEV_NBD is not set | 478 | # CONFIG_BLK_DEV_NBD is not set |
449 | # CONFIG_BLK_DEV_SX8 is not set | 479 | # CONFIG_BLK_DEV_SX8 is not set |
450 | # CONFIG_BLK_DEV_UB is not set | 480 | # CONFIG_BLK_DEV_UB is not set |
@@ -456,6 +486,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
456 | # CONFIG_ATA_OVER_ETH is not set | 486 | # CONFIG_ATA_OVER_ETH is not set |
457 | # CONFIG_BLK_DEV_HD is not set | 487 | # CONFIG_BLK_DEV_HD is not set |
458 | CONFIG_MISC_DEVICES=y | 488 | CONFIG_MISC_DEVICES=y |
489 | # CONFIG_AD525X_DPOT is not set | ||
459 | # CONFIG_PHANTOM is not set | 490 | # CONFIG_PHANTOM is not set |
460 | # CONFIG_SGI_IOC4 is not set | 491 | # CONFIG_SGI_IOC4 is not set |
461 | # CONFIG_TIFM_CORE is not set | 492 | # CONFIG_TIFM_CORE is not set |
@@ -463,6 +494,8 @@ CONFIG_MISC_DEVICES=y | |||
463 | # CONFIG_ENCLOSURE_SERVICES is not set | 494 | # CONFIG_ENCLOSURE_SERVICES is not set |
464 | # CONFIG_HP_ILO is not set | 495 | # CONFIG_HP_ILO is not set |
465 | # CONFIG_ISL29003 is not set | 496 | # CONFIG_ISL29003 is not set |
497 | # CONFIG_DS1682 is not set | ||
498 | # CONFIG_TI_DAC7512 is not set | ||
466 | # CONFIG_C2PORT is not set | 499 | # CONFIG_C2PORT is not set |
467 | 500 | ||
468 | # | 501 | # |
@@ -474,6 +507,7 @@ CONFIG_MISC_DEVICES=y | |||
474 | # CONFIG_EEPROM_MAX6875 is not set | 507 | # CONFIG_EEPROM_MAX6875 is not set |
475 | # CONFIG_EEPROM_93CX6 is not set | 508 | # CONFIG_EEPROM_93CX6 is not set |
476 | # CONFIG_CB710_CORE is not set | 509 | # CONFIG_CB710_CORE is not set |
510 | # CONFIG_IWMC3200TOP is not set | ||
477 | CONFIG_HAVE_IDE=y | 511 | CONFIG_HAVE_IDE=y |
478 | # CONFIG_IDE is not set | 512 | # CONFIG_IDE is not set |
479 | 513 | ||
@@ -516,7 +550,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
516 | # CONFIG_SCSI_BNX2_ISCSI is not set | 550 | # CONFIG_SCSI_BNX2_ISCSI is not set |
517 | # CONFIG_BE2ISCSI is not set | 551 | # CONFIG_BE2ISCSI is not set |
518 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 552 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
553 | # CONFIG_SCSI_HPSA is not set | ||
519 | # CONFIG_SCSI_3W_9XXX is not set | 554 | # CONFIG_SCSI_3W_9XXX is not set |
555 | # CONFIG_SCSI_3W_SAS is not set | ||
520 | # CONFIG_SCSI_ACARD is not set | 556 | # CONFIG_SCSI_ACARD is not set |
521 | # CONFIG_SCSI_AACRAID is not set | 557 | # CONFIG_SCSI_AACRAID is not set |
522 | # CONFIG_SCSI_AIC7XXX is not set | 558 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -554,6 +590,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
554 | # CONFIG_SCSI_NSP32 is not set | 590 | # CONFIG_SCSI_NSP32 is not set |
555 | # CONFIG_SCSI_DEBUG is not set | 591 | # CONFIG_SCSI_DEBUG is not set |
556 | # CONFIG_SCSI_PMCRAID is not set | 592 | # CONFIG_SCSI_PMCRAID is not set |
593 | # CONFIG_SCSI_PM8001 is not set | ||
557 | # CONFIG_SCSI_SRP is not set | 594 | # CONFIG_SCSI_SRP is not set |
558 | # CONFIG_SCSI_BFA_FC is not set | 595 | # CONFIG_SCSI_BFA_FC is not set |
559 | # CONFIG_SCSI_DH is not set | 596 | # CONFIG_SCSI_DH is not set |
@@ -571,7 +608,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
571 | # | 608 | # |
572 | 609 | ||
573 | # | 610 | # |
574 | # See the help texts for more information. | 611 | # The newer stack is recommended. |
575 | # | 612 | # |
576 | # CONFIG_FIREWIRE is not set | 613 | # CONFIG_FIREWIRE is not set |
577 | # CONFIG_IEEE1394 is not set | 614 | # CONFIG_IEEE1394 is not set |
@@ -680,8 +717,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
680 | # CONFIG_BE2NET is not set | 717 | # CONFIG_BE2NET is not set |
681 | # CONFIG_TR is not set | 718 | # CONFIG_TR is not set |
682 | CONFIG_WLAN=y | 719 | CONFIG_WLAN=y |
683 | # CONFIG_WLAN_PRE80211 is not set | 720 | # CONFIG_AIRO is not set |
684 | # CONFIG_WLAN_80211 is not set | 721 | # CONFIG_ATMEL is not set |
722 | # CONFIG_PRISM54 is not set | ||
723 | # CONFIG_USB_ZD1201 is not set | ||
724 | # CONFIG_HOSTAP is not set | ||
685 | 725 | ||
686 | # | 726 | # |
687 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 727 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -704,6 +744,7 @@ CONFIG_WLAN=y | |||
704 | # CONFIG_NETCONSOLE is not set | 744 | # CONFIG_NETCONSOLE is not set |
705 | # CONFIG_NETPOLL is not set | 745 | # CONFIG_NETPOLL is not set |
706 | # CONFIG_NET_POLL_CONTROLLER is not set | 746 | # CONFIG_NET_POLL_CONTROLLER is not set |
747 | # CONFIG_VMXNET3 is not set | ||
707 | # CONFIG_ISDN is not set | 748 | # CONFIG_ISDN is not set |
708 | # CONFIG_PHONE is not set | 749 | # CONFIG_PHONE is not set |
709 | 750 | ||
@@ -713,6 +754,7 @@ CONFIG_WLAN=y | |||
713 | CONFIG_INPUT=y | 754 | CONFIG_INPUT=y |
714 | # CONFIG_INPUT_FF_MEMLESS is not set | 755 | # CONFIG_INPUT_FF_MEMLESS is not set |
715 | # CONFIG_INPUT_POLLDEV is not set | 756 | # CONFIG_INPUT_POLLDEV is not set |
757 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
716 | 758 | ||
717 | # | 759 | # |
718 | # Userland interfaces | 760 | # Userland interfaces |
@@ -766,6 +808,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
766 | # CONFIG_SERIAL_JSM is not set | 808 | # CONFIG_SERIAL_JSM is not set |
767 | # CONFIG_SERIAL_OF_PLATFORM is not set | 809 | # CONFIG_SERIAL_OF_PLATFORM is not set |
768 | # CONFIG_SERIAL_QE is not set | 810 | # CONFIG_SERIAL_QE is not set |
811 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
769 | CONFIG_UNIX98_PTYS=y | 812 | CONFIG_UNIX98_PTYS=y |
770 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 813 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
771 | CONFIG_LEGACY_PTYS=y | 814 | CONFIG_LEGACY_PTYS=y |
@@ -825,11 +868,6 @@ CONFIG_I2C_MPC=y | |||
825 | # CONFIG_I2C_TINY_USB is not set | 868 | # CONFIG_I2C_TINY_USB is not set |
826 | 869 | ||
827 | # | 870 | # |
828 | # Graphics adapter I2C/DDC channel drivers | ||
829 | # | ||
830 | # CONFIG_I2C_VOODOO3 is not set | ||
831 | |||
832 | # | ||
833 | # Other I2C/SMBus bus drivers | 871 | # Other I2C/SMBus bus drivers |
834 | # | 872 | # |
835 | # CONFIG_I2C_PCA_PLATFORM is not set | 873 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -838,7 +876,6 @@ CONFIG_I2C_MPC=y | |||
838 | # | 876 | # |
839 | # Miscellaneous I2C Chip support | 877 | # Miscellaneous I2C Chip support |
840 | # | 878 | # |
841 | # CONFIG_DS1682 is not set | ||
842 | # CONFIG_SENSORS_TSL2550 is not set | 879 | # CONFIG_SENSORS_TSL2550 is not set |
843 | # CONFIG_I2C_DEBUG_CORE is not set | 880 | # CONFIG_I2C_DEBUG_CORE is not set |
844 | # CONFIG_I2C_DEBUG_ALGO is not set | 881 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -852,6 +889,8 @@ CONFIG_SPI_MASTER=y | |||
852 | # | 889 | # |
853 | CONFIG_SPI_BITBANG=y | 890 | CONFIG_SPI_BITBANG=y |
854 | # CONFIG_SPI_MPC8xxx is not set | 891 | # CONFIG_SPI_MPC8xxx is not set |
892 | # CONFIG_SPI_XILINX is not set | ||
893 | # CONFIG_SPI_DESIGNWARE is not set | ||
855 | 894 | ||
856 | # | 895 | # |
857 | # SPI Protocol Masters | 896 | # SPI Protocol Masters |
@@ -899,6 +938,7 @@ CONFIG_HWMON=y | |||
899 | # CONFIG_SENSORS_IT87 is not set | 938 | # CONFIG_SENSORS_IT87 is not set |
900 | # CONFIG_SENSORS_LM63 is not set | 939 | # CONFIG_SENSORS_LM63 is not set |
901 | # CONFIG_SENSORS_LM70 is not set | 940 | # CONFIG_SENSORS_LM70 is not set |
941 | # CONFIG_SENSORS_LM73 is not set | ||
902 | # CONFIG_SENSORS_LM75 is not set | 942 | # CONFIG_SENSORS_LM75 is not set |
903 | # CONFIG_SENSORS_LM77 is not set | 943 | # CONFIG_SENSORS_LM77 is not set |
904 | # CONFIG_SENSORS_LM78 is not set | 944 | # CONFIG_SENSORS_LM78 is not set |
@@ -939,6 +979,7 @@ CONFIG_HWMON=y | |||
939 | # CONFIG_SENSORS_W83627HF is not set | 979 | # CONFIG_SENSORS_W83627HF is not set |
940 | # CONFIG_SENSORS_W83627EHF is not set | 980 | # CONFIG_SENSORS_W83627EHF is not set |
941 | # CONFIG_SENSORS_LIS3_SPI is not set | 981 | # CONFIG_SENSORS_LIS3_SPI is not set |
982 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
942 | # CONFIG_THERMAL is not set | 983 | # CONFIG_THERMAL is not set |
943 | CONFIG_WATCHDOG=y | 984 | CONFIG_WATCHDOG=y |
944 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 985 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -976,6 +1017,7 @@ CONFIG_SSB_POSSIBLE=y | |||
976 | # CONFIG_TWL4030_CORE is not set | 1017 | # CONFIG_TWL4030_CORE is not set |
977 | # CONFIG_MFD_TMIO is not set | 1018 | # CONFIG_MFD_TMIO is not set |
978 | # CONFIG_PMIC_DA903X is not set | 1019 | # CONFIG_PMIC_DA903X is not set |
1020 | # CONFIG_PMIC_ADP5520 is not set | ||
979 | # CONFIG_MFD_WM8400 is not set | 1021 | # CONFIG_MFD_WM8400 is not set |
980 | # CONFIG_MFD_WM831X is not set | 1022 | # CONFIG_MFD_WM831X is not set |
981 | # CONFIG_MFD_WM8350_I2C is not set | 1023 | # CONFIG_MFD_WM8350_I2C is not set |
@@ -983,6 +1025,8 @@ CONFIG_SSB_POSSIBLE=y | |||
983 | # CONFIG_MFD_MC13783 is not set | 1025 | # CONFIG_MFD_MC13783 is not set |
984 | # CONFIG_AB3100_CORE is not set | 1026 | # CONFIG_AB3100_CORE is not set |
985 | # CONFIG_EZX_PCAP is not set | 1027 | # CONFIG_EZX_PCAP is not set |
1028 | # CONFIG_MFD_88PM8607 is not set | ||
1029 | # CONFIG_AB4500_CORE is not set | ||
986 | # CONFIG_REGULATOR is not set | 1030 | # CONFIG_REGULATOR is not set |
987 | # CONFIG_MEDIA_SUPPORT is not set | 1031 | # CONFIG_MEDIA_SUPPORT is not set |
988 | 1032 | ||
@@ -1050,6 +1094,7 @@ CONFIG_USB_MON=y | |||
1050 | CONFIG_USB_EHCI_HCD=y | 1094 | CONFIG_USB_EHCI_HCD=y |
1051 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1095 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1052 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1096 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1097 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1053 | # CONFIG_USB_EHCI_FSL is not set | 1098 | # CONFIG_USB_EHCI_FSL is not set |
1054 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1099 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1055 | # CONFIG_USB_OXU210HP_HCD is not set | 1100 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1387,7 +1432,7 @@ CONFIG_FRAME_WARN=1024 | |||
1387 | # CONFIG_DEBUG_KERNEL is not set | 1432 | # CONFIG_DEBUG_KERNEL is not set |
1388 | # CONFIG_SLUB_DEBUG_ON is not set | 1433 | # CONFIG_SLUB_DEBUG_ON is not set |
1389 | # CONFIG_SLUB_STATS is not set | 1434 | # CONFIG_SLUB_STATS is not set |
1390 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1435 | CONFIG_DEBUG_BUGVERBOSE=y |
1391 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1436 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1392 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1437 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1393 | # CONFIG_LATENCYTOP is not set | 1438 | # CONFIG_LATENCYTOP is not set |
@@ -1414,7 +1459,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1414 | # CONFIG_KEYS is not set | 1459 | # CONFIG_KEYS is not set |
1415 | # CONFIG_SECURITY is not set | 1460 | # CONFIG_SECURITY is not set |
1416 | # CONFIG_SECURITYFS is not set | 1461 | # CONFIG_SECURITYFS is not set |
1417 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1462 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1463 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1464 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1465 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1466 | CONFIG_DEFAULT_SECURITY="" | ||
1418 | CONFIG_CRYPTO=y | 1467 | CONFIG_CRYPTO=y |
1419 | 1468 | ||
1420 | # | 1469 | # |
diff --git a/arch/powerpc/configs/83xx/mpc834x_itx_defconfig b/arch/powerpc/configs/83xx/mpc834x_itx_defconfig index f67317e1934c..ff45f4904488 100644 --- a/arch/powerpc/configs/83xx/mpc834x_itx_defconfig +++ b/arch/powerpc/configs/83xx/mpc834x_itx_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:25 2009 | 4 | # Wed Jan 6 09:24:19 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
87 | # | 89 | # |
88 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y | |||
173 | # IO Schedulers | 176 | # IO Schedulers |
174 | # | 177 | # |
175 | CONFIG_IOSCHED_NOOP=y | 178 | CONFIG_IOSCHED_NOOP=y |
176 | CONFIG_IOSCHED_AS=y | ||
177 | CONFIG_IOSCHED_DEADLINE=y | 179 | CONFIG_IOSCHED_DEADLINE=y |
178 | CONFIG_IOSCHED_CFQ=y | 180 | CONFIG_IOSCHED_CFQ=y |
179 | CONFIG_DEFAULT_AS=y | ||
180 | # CONFIG_DEFAULT_DEADLINE is not set | 181 | # CONFIG_DEFAULT_DEADLINE is not set |
181 | # CONFIG_DEFAULT_CFQ is not set | 182 | CONFIG_DEFAULT_CFQ=y |
182 | # CONFIG_DEFAULT_NOOP is not set | 183 | # CONFIG_DEFAULT_NOOP is not set |
183 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 184 | CONFIG_DEFAULT_IOSCHED="cfq" |
185 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
186 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
191 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
192 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
193 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
194 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
195 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
200 | CONFIG_INLINE_READ_UNLOCK=y | ||
201 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
202 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
203 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
204 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
209 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
210 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
211 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
212 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
213 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
184 | # CONFIG_FREEZER is not set | 214 | # CONFIG_FREEZER is not set |
185 | 215 | ||
186 | # | 216 | # |
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
259 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 289 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
260 | # CONFIG_KEXEC is not set | 290 | # CONFIG_KEXEC is not set |
261 | # CONFIG_CRASH_DUMP is not set | 291 | # CONFIG_CRASH_DUMP is not set |
292 | CONFIG_SPARSE_IRQ=y | ||
262 | CONFIG_MAX_ACTIVE_REGIONS=32 | 293 | CONFIG_MAX_ACTIVE_REGIONS=32 |
263 | CONFIG_ARCH_FLATMEM_ENABLE=y | 294 | CONFIG_ARCH_FLATMEM_ENABLE=y |
264 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 295 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y | |||
275 | CONFIG_ZONE_DMA_FLAG=1 | 306 | CONFIG_ZONE_DMA_FLAG=1 |
276 | CONFIG_BOUNCE=y | 307 | CONFIG_BOUNCE=y |
277 | CONFIG_VIRT_TO_BUS=y | 308 | CONFIG_VIRT_TO_BUS=y |
278 | CONFIG_HAVE_MLOCK=y | ||
279 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
280 | # CONFIG_KSM is not set | 309 | # CONFIG_KSM is not set |
281 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 310 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
282 | CONFIG_PPC_4K_PAGES=y | 311 | CONFIG_PPC_4K_PAGES=y |
@@ -403,9 +432,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
403 | # CONFIG_AF_RXRPC is not set | 432 | # CONFIG_AF_RXRPC is not set |
404 | CONFIG_WIRELESS=y | 433 | CONFIG_WIRELESS=y |
405 | # CONFIG_CFG80211 is not set | 434 | # CONFIG_CFG80211 is not set |
406 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
407 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
408 | # CONFIG_WIRELESS_EXT is not set | ||
409 | # CONFIG_LIB80211 is not set | 435 | # CONFIG_LIB80211 is not set |
410 | 436 | ||
411 | # | 437 | # |
@@ -528,6 +554,10 @@ CONFIG_BLK_DEV=y | |||
528 | # CONFIG_BLK_DEV_COW_COMMON is not set | 554 | # CONFIG_BLK_DEV_COW_COMMON is not set |
529 | CONFIG_BLK_DEV_LOOP=y | 555 | CONFIG_BLK_DEV_LOOP=y |
530 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 556 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
557 | |||
558 | # | ||
559 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
560 | # | ||
531 | # CONFIG_BLK_DEV_NBD is not set | 561 | # CONFIG_BLK_DEV_NBD is not set |
532 | # CONFIG_BLK_DEV_SX8 is not set | 562 | # CONFIG_BLK_DEV_SX8 is not set |
533 | # CONFIG_BLK_DEV_UB is not set | 563 | # CONFIG_BLK_DEV_UB is not set |
@@ -539,6 +569,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
539 | # CONFIG_ATA_OVER_ETH is not set | 569 | # CONFIG_ATA_OVER_ETH is not set |
540 | # CONFIG_BLK_DEV_HD is not set | 570 | # CONFIG_BLK_DEV_HD is not set |
541 | CONFIG_MISC_DEVICES=y | 571 | CONFIG_MISC_DEVICES=y |
572 | # CONFIG_AD525X_DPOT is not set | ||
542 | # CONFIG_PHANTOM is not set | 573 | # CONFIG_PHANTOM is not set |
543 | # CONFIG_SGI_IOC4 is not set | 574 | # CONFIG_SGI_IOC4 is not set |
544 | # CONFIG_TIFM_CORE is not set | 575 | # CONFIG_TIFM_CORE is not set |
@@ -546,6 +577,8 @@ CONFIG_MISC_DEVICES=y | |||
546 | # CONFIG_ENCLOSURE_SERVICES is not set | 577 | # CONFIG_ENCLOSURE_SERVICES is not set |
547 | # CONFIG_HP_ILO is not set | 578 | # CONFIG_HP_ILO is not set |
548 | # CONFIG_ISL29003 is not set | 579 | # CONFIG_ISL29003 is not set |
580 | # CONFIG_DS1682 is not set | ||
581 | # CONFIG_TI_DAC7512 is not set | ||
549 | # CONFIG_C2PORT is not set | 582 | # CONFIG_C2PORT is not set |
550 | 583 | ||
551 | # | 584 | # |
@@ -647,7 +680,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
647 | # CONFIG_SCSI_BNX2_ISCSI is not set | 680 | # CONFIG_SCSI_BNX2_ISCSI is not set |
648 | # CONFIG_BE2ISCSI is not set | 681 | # CONFIG_BE2ISCSI is not set |
649 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 682 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
683 | # CONFIG_SCSI_HPSA is not set | ||
650 | # CONFIG_SCSI_3W_9XXX is not set | 684 | # CONFIG_SCSI_3W_9XXX is not set |
685 | # CONFIG_SCSI_3W_SAS is not set | ||
651 | # CONFIG_SCSI_ACARD is not set | 686 | # CONFIG_SCSI_ACARD is not set |
652 | # CONFIG_SCSI_AACRAID is not set | 687 | # CONFIG_SCSI_AACRAID is not set |
653 | # CONFIG_SCSI_AIC7XXX is not set | 688 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -686,6 +721,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
686 | # CONFIG_SCSI_NSP32 is not set | 721 | # CONFIG_SCSI_NSP32 is not set |
687 | # CONFIG_SCSI_DEBUG is not set | 722 | # CONFIG_SCSI_DEBUG is not set |
688 | # CONFIG_SCSI_PMCRAID is not set | 723 | # CONFIG_SCSI_PMCRAID is not set |
724 | # CONFIG_SCSI_PM8001 is not set | ||
689 | # CONFIG_SCSI_SRP is not set | 725 | # CONFIG_SCSI_SRP is not set |
690 | # CONFIG_SCSI_BFA_FC is not set | 726 | # CONFIG_SCSI_BFA_FC is not set |
691 | # CONFIG_SCSI_DH is not set | 727 | # CONFIG_SCSI_DH is not set |
@@ -741,15 +777,16 @@ CONFIG_SATA_SIL=y | |||
741 | # CONFIG_PATA_NS87415 is not set | 777 | # CONFIG_PATA_NS87415 is not set |
742 | # CONFIG_PATA_OPTI is not set | 778 | # CONFIG_PATA_OPTI is not set |
743 | # CONFIG_PATA_OPTIDMA is not set | 779 | # CONFIG_PATA_OPTIDMA is not set |
780 | # CONFIG_PATA_PDC2027X is not set | ||
744 | # CONFIG_PATA_PDC_OLD is not set | 781 | # CONFIG_PATA_PDC_OLD is not set |
745 | # CONFIG_PATA_RADISYS is not set | 782 | # CONFIG_PATA_RADISYS is not set |
746 | # CONFIG_PATA_RDC is not set | 783 | # CONFIG_PATA_RDC is not set |
747 | # CONFIG_PATA_RZ1000 is not set | 784 | # CONFIG_PATA_RZ1000 is not set |
748 | # CONFIG_PATA_SC1200 is not set | 785 | # CONFIG_PATA_SC1200 is not set |
749 | # CONFIG_PATA_SERVERWORKS is not set | 786 | # CONFIG_PATA_SERVERWORKS is not set |
750 | # CONFIG_PATA_PDC2027X is not set | ||
751 | # CONFIG_PATA_SIL680 is not set | 787 | # CONFIG_PATA_SIL680 is not set |
752 | # CONFIG_PATA_SIS is not set | 788 | # CONFIG_PATA_SIS is not set |
789 | # CONFIG_PATA_TOSHIBA is not set | ||
753 | # CONFIG_PATA_VIA is not set | 790 | # CONFIG_PATA_VIA is not set |
754 | # CONFIG_PATA_WINBOND is not set | 791 | # CONFIG_PATA_WINBOND is not set |
755 | CONFIG_PATA_PLATFORM=y | 792 | CONFIG_PATA_PLATFORM=y |
@@ -777,7 +814,7 @@ CONFIG_MD_RAID1=y | |||
777 | # | 814 | # |
778 | 815 | ||
779 | # | 816 | # |
780 | # See the help texts for more information. | 817 | # The newer stack is recommended. |
781 | # | 818 | # |
782 | # CONFIG_FIREWIRE is not set | 819 | # CONFIG_FIREWIRE is not set |
783 | # CONFIG_IEEE1394 is not set | 820 | # CONFIG_IEEE1394 is not set |
@@ -860,8 +897,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
860 | # CONFIG_BE2NET is not set | 897 | # CONFIG_BE2NET is not set |
861 | # CONFIG_TR is not set | 898 | # CONFIG_TR is not set |
862 | CONFIG_WLAN=y | 899 | CONFIG_WLAN=y |
863 | # CONFIG_WLAN_PRE80211 is not set | 900 | # CONFIG_AIRO is not set |
864 | # CONFIG_WLAN_80211 is not set | 901 | # CONFIG_ATMEL is not set |
902 | # CONFIG_PRISM54 is not set | ||
903 | # CONFIG_USB_ZD1201 is not set | ||
904 | # CONFIG_HOSTAP is not set | ||
865 | 905 | ||
866 | # | 906 | # |
867 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 907 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -884,6 +924,7 @@ CONFIG_WLAN=y | |||
884 | # CONFIG_NETCONSOLE is not set | 924 | # CONFIG_NETCONSOLE is not set |
885 | # CONFIG_NETPOLL is not set | 925 | # CONFIG_NETPOLL is not set |
886 | # CONFIG_NET_POLL_CONTROLLER is not set | 926 | # CONFIG_NET_POLL_CONTROLLER is not set |
927 | # CONFIG_VMXNET3 is not set | ||
887 | # CONFIG_ISDN is not set | 928 | # CONFIG_ISDN is not set |
888 | # CONFIG_PHONE is not set | 929 | # CONFIG_PHONE is not set |
889 | 930 | ||
@@ -925,6 +966,7 @@ CONFIG_SERIAL_CORE=y | |||
925 | CONFIG_SERIAL_CORE_CONSOLE=y | 966 | CONFIG_SERIAL_CORE_CONSOLE=y |
926 | # CONFIG_SERIAL_JSM is not set | 967 | # CONFIG_SERIAL_JSM is not set |
927 | # CONFIG_SERIAL_OF_PLATFORM is not set | 968 | # CONFIG_SERIAL_OF_PLATFORM is not set |
969 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
928 | CONFIG_UNIX98_PTYS=y | 970 | CONFIG_UNIX98_PTYS=y |
929 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 971 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
930 | CONFIG_LEGACY_PTYS=y | 972 | CONFIG_LEGACY_PTYS=y |
@@ -982,11 +1024,6 @@ CONFIG_I2C_MPC=y | |||
982 | # CONFIG_I2C_TINY_USB is not set | 1024 | # CONFIG_I2C_TINY_USB is not set |
983 | 1025 | ||
984 | # | 1026 | # |
985 | # Graphics adapter I2C/DDC channel drivers | ||
986 | # | ||
987 | # CONFIG_I2C_VOODOO3 is not set | ||
988 | |||
989 | # | ||
990 | # Other I2C/SMBus bus drivers | 1027 | # Other I2C/SMBus bus drivers |
991 | # | 1028 | # |
992 | # CONFIG_I2C_PCA_PLATFORM is not set | 1029 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -995,7 +1032,6 @@ CONFIG_I2C_MPC=y | |||
995 | # | 1032 | # |
996 | # Miscellaneous I2C Chip support | 1033 | # Miscellaneous I2C Chip support |
997 | # | 1034 | # |
998 | # CONFIG_DS1682 is not set | ||
999 | # CONFIG_SENSORS_TSL2550 is not set | 1035 | # CONFIG_SENSORS_TSL2550 is not set |
1000 | # CONFIG_I2C_DEBUG_CORE is not set | 1036 | # CONFIG_I2C_DEBUG_CORE is not set |
1001 | # CONFIG_I2C_DEBUG_ALGO is not set | 1037 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1009,6 +1045,8 @@ CONFIG_SPI_MASTER=y | |||
1009 | # | 1045 | # |
1010 | CONFIG_SPI_BITBANG=y | 1046 | CONFIG_SPI_BITBANG=y |
1011 | # CONFIG_SPI_MPC8xxx is not set | 1047 | # CONFIG_SPI_MPC8xxx is not set |
1048 | # CONFIG_SPI_XILINX is not set | ||
1049 | # CONFIG_SPI_DESIGNWARE is not set | ||
1012 | 1050 | ||
1013 | # | 1051 | # |
1014 | # SPI Protocol Masters | 1052 | # SPI Protocol Masters |
@@ -1062,6 +1100,7 @@ CONFIG_SSB_POSSIBLE=y | |||
1062 | # CONFIG_TWL4030_CORE is not set | 1100 | # CONFIG_TWL4030_CORE is not set |
1063 | # CONFIG_MFD_TMIO is not set | 1101 | # CONFIG_MFD_TMIO is not set |
1064 | # CONFIG_PMIC_DA903X is not set | 1102 | # CONFIG_PMIC_DA903X is not set |
1103 | # CONFIG_PMIC_ADP5520 is not set | ||
1065 | # CONFIG_MFD_WM8400 is not set | 1104 | # CONFIG_MFD_WM8400 is not set |
1066 | # CONFIG_MFD_WM831X is not set | 1105 | # CONFIG_MFD_WM831X is not set |
1067 | # CONFIG_MFD_WM8350_I2C is not set | 1106 | # CONFIG_MFD_WM8350_I2C is not set |
@@ -1069,6 +1108,8 @@ CONFIG_SSB_POSSIBLE=y | |||
1069 | # CONFIG_MFD_MC13783 is not set | 1108 | # CONFIG_MFD_MC13783 is not set |
1070 | # CONFIG_AB3100_CORE is not set | 1109 | # CONFIG_AB3100_CORE is not set |
1071 | # CONFIG_EZX_PCAP is not set | 1110 | # CONFIG_EZX_PCAP is not set |
1111 | # CONFIG_MFD_88PM8607 is not set | ||
1112 | # CONFIG_AB4500_CORE is not set | ||
1072 | # CONFIG_REGULATOR is not set | 1113 | # CONFIG_REGULATOR is not set |
1073 | # CONFIG_MEDIA_SUPPORT is not set | 1114 | # CONFIG_MEDIA_SUPPORT is not set |
1074 | 1115 | ||
@@ -1117,6 +1158,7 @@ CONFIG_USB_MON=y | |||
1117 | CONFIG_USB_EHCI_HCD=y | 1158 | CONFIG_USB_EHCI_HCD=y |
1118 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1159 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
1119 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1160 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1161 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1120 | CONFIG_USB_EHCI_FSL=y | 1162 | CONFIG_USB_EHCI_FSL=y |
1121 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1163 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1122 | # CONFIG_USB_OXU210HP_HCD is not set | 1164 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1235,6 +1277,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
1235 | # CONFIG_RTC_DRV_PCF8563 is not set | 1277 | # CONFIG_RTC_DRV_PCF8563 is not set |
1236 | # CONFIG_RTC_DRV_PCF8583 is not set | 1278 | # CONFIG_RTC_DRV_PCF8583 is not set |
1237 | # CONFIG_RTC_DRV_M41T80 is not set | 1279 | # CONFIG_RTC_DRV_M41T80 is not set |
1280 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1238 | # CONFIG_RTC_DRV_S35390A is not set | 1281 | # CONFIG_RTC_DRV_S35390A is not set |
1239 | # CONFIG_RTC_DRV_FM3130 is not set | 1282 | # CONFIG_RTC_DRV_FM3130 is not set |
1240 | # CONFIG_RTC_DRV_RX8581 is not set | 1283 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1264,7 +1307,9 @@ CONFIG_RTC_DRV_DS1307=y | |||
1264 | # CONFIG_RTC_DRV_M48T86 is not set | 1307 | # CONFIG_RTC_DRV_M48T86 is not set |
1265 | # CONFIG_RTC_DRV_M48T35 is not set | 1308 | # CONFIG_RTC_DRV_M48T35 is not set |
1266 | # CONFIG_RTC_DRV_M48T59 is not set | 1309 | # CONFIG_RTC_DRV_M48T59 is not set |
1310 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1267 | # CONFIG_RTC_DRV_BQ4802 is not set | 1311 | # CONFIG_RTC_DRV_BQ4802 is not set |
1312 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1268 | # CONFIG_RTC_DRV_V3020 is not set | 1313 | # CONFIG_RTC_DRV_V3020 is not set |
1269 | 1314 | ||
1270 | # | 1315 | # |
@@ -1485,7 +1530,7 @@ CONFIG_FRAME_WARN=1024 | |||
1485 | # CONFIG_DEBUG_KERNEL is not set | 1530 | # CONFIG_DEBUG_KERNEL is not set |
1486 | # CONFIG_SLUB_DEBUG_ON is not set | 1531 | # CONFIG_SLUB_DEBUG_ON is not set |
1487 | # CONFIG_SLUB_STATS is not set | 1532 | # CONFIG_SLUB_STATS is not set |
1488 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1533 | CONFIG_DEBUG_BUGVERBOSE=y |
1489 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1534 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1490 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1535 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1491 | # CONFIG_LATENCYTOP is not set | 1536 | # CONFIG_LATENCYTOP is not set |
@@ -1512,7 +1557,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1512 | # CONFIG_KEYS is not set | 1557 | # CONFIG_KEYS is not set |
1513 | # CONFIG_SECURITY is not set | 1558 | # CONFIG_SECURITY is not set |
1514 | # CONFIG_SECURITYFS is not set | 1559 | # CONFIG_SECURITYFS is not set |
1515 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1560 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1561 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1562 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1563 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1564 | CONFIG_DEFAULT_SECURITY="" | ||
1516 | CONFIG_CRYPTO=y | 1565 | CONFIG_CRYPTO=y |
1517 | 1566 | ||
1518 | # | 1567 | # |
diff --git a/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig b/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig index a668110c10f6..28d8ff3e8fca 100644 --- a/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig +++ b/arch/powerpc/configs/83xx/mpc834x_itxgp_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:26 2009 | 4 | # Wed Jan 6 09:24:20 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
87 | # | 89 | # |
88 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y | |||
173 | # IO Schedulers | 176 | # IO Schedulers |
174 | # | 177 | # |
175 | CONFIG_IOSCHED_NOOP=y | 178 | CONFIG_IOSCHED_NOOP=y |
176 | CONFIG_IOSCHED_AS=y | ||
177 | CONFIG_IOSCHED_DEADLINE=y | 179 | CONFIG_IOSCHED_DEADLINE=y |
178 | CONFIG_IOSCHED_CFQ=y | 180 | CONFIG_IOSCHED_CFQ=y |
179 | CONFIG_DEFAULT_AS=y | ||
180 | # CONFIG_DEFAULT_DEADLINE is not set | 181 | # CONFIG_DEFAULT_DEADLINE is not set |
181 | # CONFIG_DEFAULT_CFQ is not set | 182 | CONFIG_DEFAULT_CFQ=y |
182 | # CONFIG_DEFAULT_NOOP is not set | 183 | # CONFIG_DEFAULT_NOOP is not set |
183 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 184 | CONFIG_DEFAULT_IOSCHED="cfq" |
185 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
186 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
191 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
192 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
193 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
194 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
195 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
200 | CONFIG_INLINE_READ_UNLOCK=y | ||
201 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
202 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
203 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
204 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
209 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
210 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
211 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
212 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
213 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
184 | # CONFIG_FREEZER is not set | 214 | # CONFIG_FREEZER is not set |
185 | 215 | ||
186 | # | 216 | # |
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
259 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 289 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
260 | # CONFIG_KEXEC is not set | 290 | # CONFIG_KEXEC is not set |
261 | # CONFIG_CRASH_DUMP is not set | 291 | # CONFIG_CRASH_DUMP is not set |
292 | CONFIG_SPARSE_IRQ=y | ||
262 | CONFIG_MAX_ACTIVE_REGIONS=32 | 293 | CONFIG_MAX_ACTIVE_REGIONS=32 |
263 | CONFIG_ARCH_FLATMEM_ENABLE=y | 294 | CONFIG_ARCH_FLATMEM_ENABLE=y |
264 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 295 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y | |||
275 | CONFIG_ZONE_DMA_FLAG=1 | 306 | CONFIG_ZONE_DMA_FLAG=1 |
276 | CONFIG_BOUNCE=y | 307 | CONFIG_BOUNCE=y |
277 | CONFIG_VIRT_TO_BUS=y | 308 | CONFIG_VIRT_TO_BUS=y |
278 | CONFIG_HAVE_MLOCK=y | ||
279 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
280 | # CONFIG_KSM is not set | 309 | # CONFIG_KSM is not set |
281 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 310 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
282 | CONFIG_PPC_4K_PAGES=y | 311 | CONFIG_PPC_4K_PAGES=y |
@@ -403,9 +432,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
403 | # CONFIG_AF_RXRPC is not set | 432 | # CONFIG_AF_RXRPC is not set |
404 | CONFIG_WIRELESS=y | 433 | CONFIG_WIRELESS=y |
405 | # CONFIG_CFG80211 is not set | 434 | # CONFIG_CFG80211 is not set |
406 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
407 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
408 | # CONFIG_WIRELESS_EXT is not set | ||
409 | # CONFIG_LIB80211 is not set | 435 | # CONFIG_LIB80211 is not set |
410 | 436 | ||
411 | # | 437 | # |
@@ -528,6 +554,10 @@ CONFIG_BLK_DEV=y | |||
528 | # CONFIG_BLK_DEV_COW_COMMON is not set | 554 | # CONFIG_BLK_DEV_COW_COMMON is not set |
529 | CONFIG_BLK_DEV_LOOP=y | 555 | CONFIG_BLK_DEV_LOOP=y |
530 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 556 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
557 | |||
558 | # | ||
559 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
560 | # | ||
531 | # CONFIG_BLK_DEV_NBD is not set | 561 | # CONFIG_BLK_DEV_NBD is not set |
532 | # CONFIG_BLK_DEV_SX8 is not set | 562 | # CONFIG_BLK_DEV_SX8 is not set |
533 | # CONFIG_BLK_DEV_UB is not set | 563 | # CONFIG_BLK_DEV_UB is not set |
@@ -539,6 +569,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
539 | # CONFIG_ATA_OVER_ETH is not set | 569 | # CONFIG_ATA_OVER_ETH is not set |
540 | # CONFIG_BLK_DEV_HD is not set | 570 | # CONFIG_BLK_DEV_HD is not set |
541 | CONFIG_MISC_DEVICES=y | 571 | CONFIG_MISC_DEVICES=y |
572 | # CONFIG_AD525X_DPOT is not set | ||
542 | # CONFIG_PHANTOM is not set | 573 | # CONFIG_PHANTOM is not set |
543 | # CONFIG_SGI_IOC4 is not set | 574 | # CONFIG_SGI_IOC4 is not set |
544 | # CONFIG_TIFM_CORE is not set | 575 | # CONFIG_TIFM_CORE is not set |
@@ -546,6 +577,8 @@ CONFIG_MISC_DEVICES=y | |||
546 | # CONFIG_ENCLOSURE_SERVICES is not set | 577 | # CONFIG_ENCLOSURE_SERVICES is not set |
547 | # CONFIG_HP_ILO is not set | 578 | # CONFIG_HP_ILO is not set |
548 | # CONFIG_ISL29003 is not set | 579 | # CONFIG_ISL29003 is not set |
580 | # CONFIG_DS1682 is not set | ||
581 | # CONFIG_TI_DAC7512 is not set | ||
549 | # CONFIG_C2PORT is not set | 582 | # CONFIG_C2PORT is not set |
550 | 583 | ||
551 | # | 584 | # |
@@ -599,7 +632,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
599 | # CONFIG_SCSI_BNX2_ISCSI is not set | 632 | # CONFIG_SCSI_BNX2_ISCSI is not set |
600 | # CONFIG_BE2ISCSI is not set | 633 | # CONFIG_BE2ISCSI is not set |
601 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 634 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
635 | # CONFIG_SCSI_HPSA is not set | ||
602 | # CONFIG_SCSI_3W_9XXX is not set | 636 | # CONFIG_SCSI_3W_9XXX is not set |
637 | # CONFIG_SCSI_3W_SAS is not set | ||
603 | # CONFIG_SCSI_ACARD is not set | 638 | # CONFIG_SCSI_ACARD is not set |
604 | # CONFIG_SCSI_AACRAID is not set | 639 | # CONFIG_SCSI_AACRAID is not set |
605 | # CONFIG_SCSI_AIC7XXX is not set | 640 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -637,6 +672,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
637 | # CONFIG_SCSI_NSP32 is not set | 672 | # CONFIG_SCSI_NSP32 is not set |
638 | # CONFIG_SCSI_DEBUG is not set | 673 | # CONFIG_SCSI_DEBUG is not set |
639 | # CONFIG_SCSI_PMCRAID is not set | 674 | # CONFIG_SCSI_PMCRAID is not set |
675 | # CONFIG_SCSI_PM8001 is not set | ||
640 | # CONFIG_SCSI_SRP is not set | 676 | # CONFIG_SCSI_SRP is not set |
641 | # CONFIG_SCSI_BFA_FC is not set | 677 | # CONFIG_SCSI_BFA_FC is not set |
642 | # CONFIG_SCSI_DH is not set | 678 | # CONFIG_SCSI_DH is not set |
@@ -654,7 +690,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
654 | # | 690 | # |
655 | 691 | ||
656 | # | 692 | # |
657 | # See the help texts for more information. | 693 | # The newer stack is recommended. |
658 | # | 694 | # |
659 | # CONFIG_FIREWIRE is not set | 695 | # CONFIG_FIREWIRE is not set |
660 | # CONFIG_IEEE1394 is not set | 696 | # CONFIG_IEEE1394 is not set |
@@ -737,8 +773,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
737 | # CONFIG_BE2NET is not set | 773 | # CONFIG_BE2NET is not set |
738 | # CONFIG_TR is not set | 774 | # CONFIG_TR is not set |
739 | CONFIG_WLAN=y | 775 | CONFIG_WLAN=y |
740 | # CONFIG_WLAN_PRE80211 is not set | 776 | # CONFIG_AIRO is not set |
741 | # CONFIG_WLAN_80211 is not set | 777 | # CONFIG_ATMEL is not set |
778 | # CONFIG_PRISM54 is not set | ||
779 | # CONFIG_USB_ZD1201 is not set | ||
780 | # CONFIG_HOSTAP is not set | ||
742 | 781 | ||
743 | # | 782 | # |
744 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 783 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -761,6 +800,7 @@ CONFIG_WLAN=y | |||
761 | # CONFIG_NETCONSOLE is not set | 800 | # CONFIG_NETCONSOLE is not set |
762 | # CONFIG_NETPOLL is not set | 801 | # CONFIG_NETPOLL is not set |
763 | # CONFIG_NET_POLL_CONTROLLER is not set | 802 | # CONFIG_NET_POLL_CONTROLLER is not set |
803 | # CONFIG_VMXNET3 is not set | ||
764 | # CONFIG_ISDN is not set | 804 | # CONFIG_ISDN is not set |
765 | # CONFIG_PHONE is not set | 805 | # CONFIG_PHONE is not set |
766 | 806 | ||
@@ -802,6 +842,7 @@ CONFIG_SERIAL_CORE=y | |||
802 | CONFIG_SERIAL_CORE_CONSOLE=y | 842 | CONFIG_SERIAL_CORE_CONSOLE=y |
803 | # CONFIG_SERIAL_JSM is not set | 843 | # CONFIG_SERIAL_JSM is not set |
804 | # CONFIG_SERIAL_OF_PLATFORM is not set | 844 | # CONFIG_SERIAL_OF_PLATFORM is not set |
845 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
805 | CONFIG_UNIX98_PTYS=y | 846 | CONFIG_UNIX98_PTYS=y |
806 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 847 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
807 | CONFIG_LEGACY_PTYS=y | 848 | CONFIG_LEGACY_PTYS=y |
@@ -859,11 +900,6 @@ CONFIG_I2C_MPC=y | |||
859 | # CONFIG_I2C_TINY_USB is not set | 900 | # CONFIG_I2C_TINY_USB is not set |
860 | 901 | ||
861 | # | 902 | # |
862 | # Graphics adapter I2C/DDC channel drivers | ||
863 | # | ||
864 | # CONFIG_I2C_VOODOO3 is not set | ||
865 | |||
866 | # | ||
867 | # Other I2C/SMBus bus drivers | 903 | # Other I2C/SMBus bus drivers |
868 | # | 904 | # |
869 | # CONFIG_I2C_PCA_PLATFORM is not set | 905 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -872,7 +908,6 @@ CONFIG_I2C_MPC=y | |||
872 | # | 908 | # |
873 | # Miscellaneous I2C Chip support | 909 | # Miscellaneous I2C Chip support |
874 | # | 910 | # |
875 | # CONFIG_DS1682 is not set | ||
876 | # CONFIG_SENSORS_TSL2550 is not set | 911 | # CONFIG_SENSORS_TSL2550 is not set |
877 | # CONFIG_I2C_DEBUG_CORE is not set | 912 | # CONFIG_I2C_DEBUG_CORE is not set |
878 | # CONFIG_I2C_DEBUG_ALGO is not set | 913 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -886,6 +921,8 @@ CONFIG_SPI_MASTER=y | |||
886 | # | 921 | # |
887 | CONFIG_SPI_BITBANG=y | 922 | CONFIG_SPI_BITBANG=y |
888 | # CONFIG_SPI_MPC8xxx is not set | 923 | # CONFIG_SPI_MPC8xxx is not set |
924 | # CONFIG_SPI_XILINX is not set | ||
925 | # CONFIG_SPI_DESIGNWARE is not set | ||
889 | 926 | ||
890 | # | 927 | # |
891 | # SPI Protocol Masters | 928 | # SPI Protocol Masters |
@@ -939,6 +976,7 @@ CONFIG_SSB_POSSIBLE=y | |||
939 | # CONFIG_TWL4030_CORE is not set | 976 | # CONFIG_TWL4030_CORE is not set |
940 | # CONFIG_MFD_TMIO is not set | 977 | # CONFIG_MFD_TMIO is not set |
941 | # CONFIG_PMIC_DA903X is not set | 978 | # CONFIG_PMIC_DA903X is not set |
979 | # CONFIG_PMIC_ADP5520 is not set | ||
942 | # CONFIG_MFD_WM8400 is not set | 980 | # CONFIG_MFD_WM8400 is not set |
943 | # CONFIG_MFD_WM831X is not set | 981 | # CONFIG_MFD_WM831X is not set |
944 | # CONFIG_MFD_WM8350_I2C is not set | 982 | # CONFIG_MFD_WM8350_I2C is not set |
@@ -946,6 +984,8 @@ CONFIG_SSB_POSSIBLE=y | |||
946 | # CONFIG_MFD_MC13783 is not set | 984 | # CONFIG_MFD_MC13783 is not set |
947 | # CONFIG_AB3100_CORE is not set | 985 | # CONFIG_AB3100_CORE is not set |
948 | # CONFIG_EZX_PCAP is not set | 986 | # CONFIG_EZX_PCAP is not set |
987 | # CONFIG_MFD_88PM8607 is not set | ||
988 | # CONFIG_AB4500_CORE is not set | ||
949 | # CONFIG_REGULATOR is not set | 989 | # CONFIG_REGULATOR is not set |
950 | # CONFIG_MEDIA_SUPPORT is not set | 990 | # CONFIG_MEDIA_SUPPORT is not set |
951 | 991 | ||
@@ -994,6 +1034,7 @@ CONFIG_USB_MON=y | |||
994 | CONFIG_USB_EHCI_HCD=y | 1034 | CONFIG_USB_EHCI_HCD=y |
995 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1035 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
996 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1036 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1037 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
997 | CONFIG_USB_EHCI_FSL=y | 1038 | CONFIG_USB_EHCI_FSL=y |
998 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1039 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
999 | # CONFIG_USB_OXU210HP_HCD is not set | 1040 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1112,6 +1153,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
1112 | # CONFIG_RTC_DRV_PCF8563 is not set | 1153 | # CONFIG_RTC_DRV_PCF8563 is not set |
1113 | # CONFIG_RTC_DRV_PCF8583 is not set | 1154 | # CONFIG_RTC_DRV_PCF8583 is not set |
1114 | # CONFIG_RTC_DRV_M41T80 is not set | 1155 | # CONFIG_RTC_DRV_M41T80 is not set |
1156 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1115 | # CONFIG_RTC_DRV_S35390A is not set | 1157 | # CONFIG_RTC_DRV_S35390A is not set |
1116 | # CONFIG_RTC_DRV_FM3130 is not set | 1158 | # CONFIG_RTC_DRV_FM3130 is not set |
1117 | # CONFIG_RTC_DRV_RX8581 is not set | 1159 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1141,7 +1183,9 @@ CONFIG_RTC_DRV_DS1307=y | |||
1141 | # CONFIG_RTC_DRV_M48T86 is not set | 1183 | # CONFIG_RTC_DRV_M48T86 is not set |
1142 | # CONFIG_RTC_DRV_M48T35 is not set | 1184 | # CONFIG_RTC_DRV_M48T35 is not set |
1143 | # CONFIG_RTC_DRV_M48T59 is not set | 1185 | # CONFIG_RTC_DRV_M48T59 is not set |
1186 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1144 | # CONFIG_RTC_DRV_BQ4802 is not set | 1187 | # CONFIG_RTC_DRV_BQ4802 is not set |
1188 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1145 | # CONFIG_RTC_DRV_V3020 is not set | 1189 | # CONFIG_RTC_DRV_V3020 is not set |
1146 | 1190 | ||
1147 | # | 1191 | # |
@@ -1362,7 +1406,7 @@ CONFIG_FRAME_WARN=1024 | |||
1362 | # CONFIG_DEBUG_KERNEL is not set | 1406 | # CONFIG_DEBUG_KERNEL is not set |
1363 | # CONFIG_SLUB_DEBUG_ON is not set | 1407 | # CONFIG_SLUB_DEBUG_ON is not set |
1364 | # CONFIG_SLUB_STATS is not set | 1408 | # CONFIG_SLUB_STATS is not set |
1365 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1409 | CONFIG_DEBUG_BUGVERBOSE=y |
1366 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1410 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1367 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1411 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1368 | # CONFIG_LATENCYTOP is not set | 1412 | # CONFIG_LATENCYTOP is not set |
@@ -1389,7 +1433,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1389 | # CONFIG_KEYS is not set | 1433 | # CONFIG_KEYS is not set |
1390 | # CONFIG_SECURITY is not set | 1434 | # CONFIG_SECURITY is not set |
1391 | # CONFIG_SECURITYFS is not set | 1435 | # CONFIG_SECURITYFS is not set |
1392 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1436 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1437 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1438 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1439 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1440 | CONFIG_DEFAULT_SECURITY="" | ||
1393 | CONFIG_CRYPTO=y | 1441 | CONFIG_CRYPTO=y |
1394 | 1442 | ||
1395 | # | 1443 | # |
diff --git a/arch/powerpc/configs/83xx/mpc834x_mds_defconfig b/arch/powerpc/configs/83xx/mpc834x_mds_defconfig index c4e92ba5c38b..6252ab5bf181 100644 --- a/arch/powerpc/configs/83xx/mpc834x_mds_defconfig +++ b/arch/powerpc/configs/83xx/mpc834x_mds_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:27 2009 | 4 | # Wed Jan 6 09:24:21 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
87 | # | 89 | # |
88 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y | |||
173 | # IO Schedulers | 176 | # IO Schedulers |
174 | # | 177 | # |
175 | CONFIG_IOSCHED_NOOP=y | 178 | CONFIG_IOSCHED_NOOP=y |
176 | CONFIG_IOSCHED_AS=y | ||
177 | CONFIG_IOSCHED_DEADLINE=y | 179 | CONFIG_IOSCHED_DEADLINE=y |
178 | CONFIG_IOSCHED_CFQ=y | 180 | CONFIG_IOSCHED_CFQ=y |
179 | CONFIG_DEFAULT_AS=y | ||
180 | # CONFIG_DEFAULT_DEADLINE is not set | 181 | # CONFIG_DEFAULT_DEADLINE is not set |
181 | # CONFIG_DEFAULT_CFQ is not set | 182 | CONFIG_DEFAULT_CFQ=y |
182 | # CONFIG_DEFAULT_NOOP is not set | 183 | # CONFIG_DEFAULT_NOOP is not set |
183 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 184 | CONFIG_DEFAULT_IOSCHED="cfq" |
185 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
186 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
191 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
192 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
193 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
194 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
195 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
200 | CONFIG_INLINE_READ_UNLOCK=y | ||
201 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
202 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
203 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
204 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
209 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
210 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
211 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
212 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
213 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
184 | # CONFIG_FREEZER is not set | 214 | # CONFIG_FREEZER is not set |
185 | 215 | ||
186 | # | 216 | # |
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
259 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 289 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
260 | # CONFIG_KEXEC is not set | 290 | # CONFIG_KEXEC is not set |
261 | # CONFIG_CRASH_DUMP is not set | 291 | # CONFIG_CRASH_DUMP is not set |
292 | CONFIG_SPARSE_IRQ=y | ||
262 | CONFIG_MAX_ACTIVE_REGIONS=32 | 293 | CONFIG_MAX_ACTIVE_REGIONS=32 |
263 | CONFIG_ARCH_FLATMEM_ENABLE=y | 294 | CONFIG_ARCH_FLATMEM_ENABLE=y |
264 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 295 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y | |||
275 | CONFIG_ZONE_DMA_FLAG=1 | 306 | CONFIG_ZONE_DMA_FLAG=1 |
276 | CONFIG_BOUNCE=y | 307 | CONFIG_BOUNCE=y |
277 | CONFIG_VIRT_TO_BUS=y | 308 | CONFIG_VIRT_TO_BUS=y |
278 | CONFIG_HAVE_MLOCK=y | ||
279 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
280 | # CONFIG_KSM is not set | 309 | # CONFIG_KSM is not set |
281 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 310 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
282 | CONFIG_PPC_4K_PAGES=y | 311 | CONFIG_PPC_4K_PAGES=y |
@@ -403,9 +432,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
403 | # CONFIG_AF_RXRPC is not set | 432 | # CONFIG_AF_RXRPC is not set |
404 | CONFIG_WIRELESS=y | 433 | CONFIG_WIRELESS=y |
405 | # CONFIG_CFG80211 is not set | 434 | # CONFIG_CFG80211 is not set |
406 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
407 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
408 | # CONFIG_WIRELESS_EXT is not set | ||
409 | # CONFIG_LIB80211 is not set | 435 | # CONFIG_LIB80211 is not set |
410 | 436 | ||
411 | # | 437 | # |
@@ -443,6 +469,10 @@ CONFIG_BLK_DEV=y | |||
443 | # CONFIG_BLK_DEV_COW_COMMON is not set | 469 | # CONFIG_BLK_DEV_COW_COMMON is not set |
444 | CONFIG_BLK_DEV_LOOP=y | 470 | CONFIG_BLK_DEV_LOOP=y |
445 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 471 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
472 | |||
473 | # | ||
474 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
475 | # | ||
446 | # CONFIG_BLK_DEV_NBD is not set | 476 | # CONFIG_BLK_DEV_NBD is not set |
447 | # CONFIG_BLK_DEV_SX8 is not set | 477 | # CONFIG_BLK_DEV_SX8 is not set |
448 | CONFIG_BLK_DEV_RAM=y | 478 | CONFIG_BLK_DEV_RAM=y |
@@ -453,6 +483,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
453 | # CONFIG_ATA_OVER_ETH is not set | 483 | # CONFIG_ATA_OVER_ETH is not set |
454 | # CONFIG_BLK_DEV_HD is not set | 484 | # CONFIG_BLK_DEV_HD is not set |
455 | CONFIG_MISC_DEVICES=y | 485 | CONFIG_MISC_DEVICES=y |
486 | # CONFIG_AD525X_DPOT is not set | ||
456 | # CONFIG_PHANTOM is not set | 487 | # CONFIG_PHANTOM is not set |
457 | # CONFIG_SGI_IOC4 is not set | 488 | # CONFIG_SGI_IOC4 is not set |
458 | # CONFIG_TIFM_CORE is not set | 489 | # CONFIG_TIFM_CORE is not set |
@@ -460,6 +491,7 @@ CONFIG_MISC_DEVICES=y | |||
460 | # CONFIG_ENCLOSURE_SERVICES is not set | 491 | # CONFIG_ENCLOSURE_SERVICES is not set |
461 | # CONFIG_HP_ILO is not set | 492 | # CONFIG_HP_ILO is not set |
462 | # CONFIG_ISL29003 is not set | 493 | # CONFIG_ISL29003 is not set |
494 | # CONFIG_DS1682 is not set | ||
463 | # CONFIG_C2PORT is not set | 495 | # CONFIG_C2PORT is not set |
464 | 496 | ||
465 | # | 497 | # |
@@ -493,7 +525,7 @@ CONFIG_HAVE_IDE=y | |||
493 | # | 525 | # |
494 | 526 | ||
495 | # | 527 | # |
496 | # See the help texts for more information. | 528 | # The newer stack is recommended. |
497 | # | 529 | # |
498 | # CONFIG_FIREWIRE is not set | 530 | # CONFIG_FIREWIRE is not set |
499 | # CONFIG_IEEE1394 is not set | 531 | # CONFIG_IEEE1394 is not set |
@@ -616,8 +648,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
616 | # CONFIG_BE2NET is not set | 648 | # CONFIG_BE2NET is not set |
617 | # CONFIG_TR is not set | 649 | # CONFIG_TR is not set |
618 | CONFIG_WLAN=y | 650 | CONFIG_WLAN=y |
619 | # CONFIG_WLAN_PRE80211 is not set | 651 | # CONFIG_AIRO is not set |
620 | # CONFIG_WLAN_80211 is not set | 652 | # CONFIG_ATMEL is not set |
653 | # CONFIG_PRISM54 is not set | ||
654 | # CONFIG_HOSTAP is not set | ||
621 | 655 | ||
622 | # | 656 | # |
623 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 657 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -630,6 +664,7 @@ CONFIG_WLAN=y | |||
630 | # CONFIG_NETCONSOLE is not set | 664 | # CONFIG_NETCONSOLE is not set |
631 | # CONFIG_NETPOLL is not set | 665 | # CONFIG_NETPOLL is not set |
632 | # CONFIG_NET_POLL_CONTROLLER is not set | 666 | # CONFIG_NET_POLL_CONTROLLER is not set |
667 | # CONFIG_VMXNET3 is not set | ||
633 | # CONFIG_ISDN is not set | 668 | # CONFIG_ISDN is not set |
634 | # CONFIG_PHONE is not set | 669 | # CONFIG_PHONE is not set |
635 | 670 | ||
@@ -639,6 +674,7 @@ CONFIG_WLAN=y | |||
639 | CONFIG_INPUT=y | 674 | CONFIG_INPUT=y |
640 | # CONFIG_INPUT_FF_MEMLESS is not set | 675 | # CONFIG_INPUT_FF_MEMLESS is not set |
641 | # CONFIG_INPUT_POLLDEV is not set | 676 | # CONFIG_INPUT_POLLDEV is not set |
677 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
642 | 678 | ||
643 | # | 679 | # |
644 | # Userland interfaces | 680 | # Userland interfaces |
@@ -690,6 +726,7 @@ CONFIG_SERIAL_CORE=y | |||
690 | CONFIG_SERIAL_CORE_CONSOLE=y | 726 | CONFIG_SERIAL_CORE_CONSOLE=y |
691 | # CONFIG_SERIAL_JSM is not set | 727 | # CONFIG_SERIAL_JSM is not set |
692 | # CONFIG_SERIAL_OF_PLATFORM is not set | 728 | # CONFIG_SERIAL_OF_PLATFORM is not set |
729 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
693 | CONFIG_UNIX98_PTYS=y | 730 | CONFIG_UNIX98_PTYS=y |
694 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 731 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
695 | CONFIG_LEGACY_PTYS=y | 732 | CONFIG_LEGACY_PTYS=y |
@@ -745,11 +782,6 @@ CONFIG_I2C_MPC=y | |||
745 | # CONFIG_I2C_TAOS_EVM is not set | 782 | # CONFIG_I2C_TAOS_EVM is not set |
746 | 783 | ||
747 | # | 784 | # |
748 | # Graphics adapter I2C/DDC channel drivers | ||
749 | # | ||
750 | # CONFIG_I2C_VOODOO3 is not set | ||
751 | |||
752 | # | ||
753 | # Other I2C/SMBus bus drivers | 785 | # Other I2C/SMBus bus drivers |
754 | # | 786 | # |
755 | # CONFIG_I2C_PCA_PLATFORM is not set | 787 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -758,7 +790,6 @@ CONFIG_I2C_MPC=y | |||
758 | # | 790 | # |
759 | # Miscellaneous I2C Chip support | 791 | # Miscellaneous I2C Chip support |
760 | # | 792 | # |
761 | # CONFIG_DS1682 is not set | ||
762 | # CONFIG_SENSORS_TSL2550 is not set | 793 | # CONFIG_SENSORS_TSL2550 is not set |
763 | # CONFIG_I2C_DEBUG_CORE is not set | 794 | # CONFIG_I2C_DEBUG_CORE is not set |
764 | # CONFIG_I2C_DEBUG_ALGO is not set | 795 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -804,6 +835,7 @@ CONFIG_HWMON=y | |||
804 | # CONFIG_SENSORS_GL520SM is not set | 835 | # CONFIG_SENSORS_GL520SM is not set |
805 | # CONFIG_SENSORS_IT87 is not set | 836 | # CONFIG_SENSORS_IT87 is not set |
806 | # CONFIG_SENSORS_LM63 is not set | 837 | # CONFIG_SENSORS_LM63 is not set |
838 | # CONFIG_SENSORS_LM73 is not set | ||
807 | # CONFIG_SENSORS_LM75 is not set | 839 | # CONFIG_SENSORS_LM75 is not set |
808 | # CONFIG_SENSORS_LM77 is not set | 840 | # CONFIG_SENSORS_LM77 is not set |
809 | # CONFIG_SENSORS_LM78 is not set | 841 | # CONFIG_SENSORS_LM78 is not set |
@@ -842,6 +874,7 @@ CONFIG_HWMON=y | |||
842 | # CONFIG_SENSORS_W83L786NG is not set | 874 | # CONFIG_SENSORS_W83L786NG is not set |
843 | # CONFIG_SENSORS_W83627HF is not set | 875 | # CONFIG_SENSORS_W83627HF is not set |
844 | # CONFIG_SENSORS_W83627EHF is not set | 876 | # CONFIG_SENSORS_W83627EHF is not set |
877 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
845 | # CONFIG_THERMAL is not set | 878 | # CONFIG_THERMAL is not set |
846 | CONFIG_WATCHDOG=y | 879 | CONFIG_WATCHDOG=y |
847 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 880 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -874,11 +907,13 @@ CONFIG_SSB_POSSIBLE=y | |||
874 | # CONFIG_TWL4030_CORE is not set | 907 | # CONFIG_TWL4030_CORE is not set |
875 | # CONFIG_MFD_TMIO is not set | 908 | # CONFIG_MFD_TMIO is not set |
876 | # CONFIG_PMIC_DA903X is not set | 909 | # CONFIG_PMIC_DA903X is not set |
910 | # CONFIG_PMIC_ADP5520 is not set | ||
877 | # CONFIG_MFD_WM8400 is not set | 911 | # CONFIG_MFD_WM8400 is not set |
878 | # CONFIG_MFD_WM831X is not set | 912 | # CONFIG_MFD_WM831X is not set |
879 | # CONFIG_MFD_WM8350_I2C is not set | 913 | # CONFIG_MFD_WM8350_I2C is not set |
880 | # CONFIG_MFD_PCF50633 is not set | 914 | # CONFIG_MFD_PCF50633 is not set |
881 | # CONFIG_AB3100_CORE is not set | 915 | # CONFIG_AB3100_CORE is not set |
916 | # CONFIG_MFD_88PM8607 is not set | ||
882 | # CONFIG_REGULATOR is not set | 917 | # CONFIG_REGULATOR is not set |
883 | # CONFIG_MEDIA_SUPPORT is not set | 918 | # CONFIG_MEDIA_SUPPORT is not set |
884 | 919 | ||
@@ -961,6 +996,7 @@ CONFIG_RTC_DRV_DS1374=y | |||
961 | # CONFIG_RTC_DRV_PCF8563 is not set | 996 | # CONFIG_RTC_DRV_PCF8563 is not set |
962 | # CONFIG_RTC_DRV_PCF8583 is not set | 997 | # CONFIG_RTC_DRV_PCF8583 is not set |
963 | # CONFIG_RTC_DRV_M41T80 is not set | 998 | # CONFIG_RTC_DRV_M41T80 is not set |
999 | # CONFIG_RTC_DRV_BQ32K is not set | ||
964 | # CONFIG_RTC_DRV_S35390A is not set | 1000 | # CONFIG_RTC_DRV_S35390A is not set |
965 | # CONFIG_RTC_DRV_FM3130 is not set | 1001 | # CONFIG_RTC_DRV_FM3130 is not set |
966 | # CONFIG_RTC_DRV_RX8581 is not set | 1002 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -982,7 +1018,9 @@ CONFIG_RTC_DRV_DS1374=y | |||
982 | # CONFIG_RTC_DRV_M48T86 is not set | 1018 | # CONFIG_RTC_DRV_M48T86 is not set |
983 | # CONFIG_RTC_DRV_M48T35 is not set | 1019 | # CONFIG_RTC_DRV_M48T35 is not set |
984 | # CONFIG_RTC_DRV_M48T59 is not set | 1020 | # CONFIG_RTC_DRV_M48T59 is not set |
1021 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
985 | # CONFIG_RTC_DRV_BQ4802 is not set | 1022 | # CONFIG_RTC_DRV_BQ4802 is not set |
1023 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
986 | # CONFIG_RTC_DRV_V3020 is not set | 1024 | # CONFIG_RTC_DRV_V3020 is not set |
987 | 1025 | ||
988 | # | 1026 | # |
@@ -1156,7 +1194,7 @@ CONFIG_FRAME_WARN=1024 | |||
1156 | # CONFIG_DEBUG_KERNEL is not set | 1194 | # CONFIG_DEBUG_KERNEL is not set |
1157 | # CONFIG_SLUB_DEBUG_ON is not set | 1195 | # CONFIG_SLUB_DEBUG_ON is not set |
1158 | # CONFIG_SLUB_STATS is not set | 1196 | # CONFIG_SLUB_STATS is not set |
1159 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1197 | CONFIG_DEBUG_BUGVERBOSE=y |
1160 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1198 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1161 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1199 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1162 | # CONFIG_LATENCYTOP is not set | 1200 | # CONFIG_LATENCYTOP is not set |
@@ -1183,7 +1221,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1183 | # CONFIG_KEYS is not set | 1221 | # CONFIG_KEYS is not set |
1184 | # CONFIG_SECURITY is not set | 1222 | # CONFIG_SECURITY is not set |
1185 | # CONFIG_SECURITYFS is not set | 1223 | # CONFIG_SECURITYFS is not set |
1186 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1224 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1225 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1226 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1227 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1228 | CONFIG_DEFAULT_SECURITY="" | ||
1187 | CONFIG_CRYPTO=y | 1229 | CONFIG_CRYPTO=y |
1188 | 1230 | ||
1189 | # | 1231 | # |
diff --git a/arch/powerpc/configs/83xx/mpc836x_mds_defconfig b/arch/powerpc/configs/83xx/mpc836x_mds_defconfig index 4f434b1492fa..78227378e678 100644 --- a/arch/powerpc/configs/83xx/mpc836x_mds_defconfig +++ b/arch/powerpc/configs/83xx/mpc836x_mds_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:28 2009 | 4 | # Wed Jan 6 09:24:21 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
87 | # | 89 | # |
88 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y | |||
173 | # IO Schedulers | 176 | # IO Schedulers |
174 | # | 177 | # |
175 | CONFIG_IOSCHED_NOOP=y | 178 | CONFIG_IOSCHED_NOOP=y |
176 | CONFIG_IOSCHED_AS=y | ||
177 | CONFIG_IOSCHED_DEADLINE=y | 179 | CONFIG_IOSCHED_DEADLINE=y |
178 | CONFIG_IOSCHED_CFQ=y | 180 | CONFIG_IOSCHED_CFQ=y |
179 | CONFIG_DEFAULT_AS=y | ||
180 | # CONFIG_DEFAULT_DEADLINE is not set | 181 | # CONFIG_DEFAULT_DEADLINE is not set |
181 | # CONFIG_DEFAULT_CFQ is not set | 182 | CONFIG_DEFAULT_CFQ=y |
182 | # CONFIG_DEFAULT_NOOP is not set | 183 | # CONFIG_DEFAULT_NOOP is not set |
183 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 184 | CONFIG_DEFAULT_IOSCHED="cfq" |
185 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
186 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
191 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
192 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
193 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
194 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
195 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
200 | CONFIG_INLINE_READ_UNLOCK=y | ||
201 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
202 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
203 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
204 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
209 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
210 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
211 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
212 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
213 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
184 | # CONFIG_FREEZER is not set | 214 | # CONFIG_FREEZER is not set |
185 | 215 | ||
186 | # | 216 | # |
@@ -258,6 +288,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
258 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 288 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
259 | # CONFIG_KEXEC is not set | 289 | # CONFIG_KEXEC is not set |
260 | # CONFIG_CRASH_DUMP is not set | 290 | # CONFIG_CRASH_DUMP is not set |
291 | CONFIG_SPARSE_IRQ=y | ||
261 | CONFIG_MAX_ACTIVE_REGIONS=32 | 292 | CONFIG_MAX_ACTIVE_REGIONS=32 |
262 | CONFIG_ARCH_FLATMEM_ENABLE=y | 293 | CONFIG_ARCH_FLATMEM_ENABLE=y |
263 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 294 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -274,8 +305,6 @@ CONFIG_MIGRATION=y | |||
274 | CONFIG_ZONE_DMA_FLAG=1 | 305 | CONFIG_ZONE_DMA_FLAG=1 |
275 | CONFIG_BOUNCE=y | 306 | CONFIG_BOUNCE=y |
276 | CONFIG_VIRT_TO_BUS=y | 307 | CONFIG_VIRT_TO_BUS=y |
277 | CONFIG_HAVE_MLOCK=y | ||
278 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
279 | # CONFIG_KSM is not set | 308 | # CONFIG_KSM is not set |
280 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 309 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
281 | CONFIG_PPC_4K_PAGES=y | 310 | CONFIG_PPC_4K_PAGES=y |
@@ -402,9 +431,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
402 | # CONFIG_AF_RXRPC is not set | 431 | # CONFIG_AF_RXRPC is not set |
403 | CONFIG_WIRELESS=y | 432 | CONFIG_WIRELESS=y |
404 | # CONFIG_CFG80211 is not set | 433 | # CONFIG_CFG80211 is not set |
405 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
406 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
407 | # CONFIG_WIRELESS_EXT is not set | ||
408 | # CONFIG_LIB80211 is not set | 434 | # CONFIG_LIB80211 is not set |
409 | 435 | ||
410 | # | 436 | # |
@@ -525,6 +551,10 @@ CONFIG_BLK_DEV=y | |||
525 | # CONFIG_BLK_DEV_COW_COMMON is not set | 551 | # CONFIG_BLK_DEV_COW_COMMON is not set |
526 | CONFIG_BLK_DEV_LOOP=y | 552 | CONFIG_BLK_DEV_LOOP=y |
527 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 553 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
554 | |||
555 | # | ||
556 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
557 | # | ||
528 | # CONFIG_BLK_DEV_NBD is not set | 558 | # CONFIG_BLK_DEV_NBD is not set |
529 | # CONFIG_BLK_DEV_SX8 is not set | 559 | # CONFIG_BLK_DEV_SX8 is not set |
530 | CONFIG_BLK_DEV_RAM=y | 560 | CONFIG_BLK_DEV_RAM=y |
@@ -535,6 +565,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
535 | # CONFIG_ATA_OVER_ETH is not set | 565 | # CONFIG_ATA_OVER_ETH is not set |
536 | # CONFIG_BLK_DEV_HD is not set | 566 | # CONFIG_BLK_DEV_HD is not set |
537 | CONFIG_MISC_DEVICES=y | 567 | CONFIG_MISC_DEVICES=y |
568 | # CONFIG_AD525X_DPOT is not set | ||
538 | # CONFIG_PHANTOM is not set | 569 | # CONFIG_PHANTOM is not set |
539 | # CONFIG_SGI_IOC4 is not set | 570 | # CONFIG_SGI_IOC4 is not set |
540 | # CONFIG_TIFM_CORE is not set | 571 | # CONFIG_TIFM_CORE is not set |
@@ -542,6 +573,7 @@ CONFIG_MISC_DEVICES=y | |||
542 | # CONFIG_ENCLOSURE_SERVICES is not set | 573 | # CONFIG_ENCLOSURE_SERVICES is not set |
543 | # CONFIG_HP_ILO is not set | 574 | # CONFIG_HP_ILO is not set |
544 | # CONFIG_ISL29003 is not set | 575 | # CONFIG_ISL29003 is not set |
576 | # CONFIG_DS1682 is not set | ||
545 | # CONFIG_C2PORT is not set | 577 | # CONFIG_C2PORT is not set |
546 | 578 | ||
547 | # | 579 | # |
@@ -594,7 +626,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
594 | # CONFIG_SCSI_BNX2_ISCSI is not set | 626 | # CONFIG_SCSI_BNX2_ISCSI is not set |
595 | # CONFIG_BE2ISCSI is not set | 627 | # CONFIG_BE2ISCSI is not set |
596 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 628 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
629 | # CONFIG_SCSI_HPSA is not set | ||
597 | # CONFIG_SCSI_3W_9XXX is not set | 630 | # CONFIG_SCSI_3W_9XXX is not set |
631 | # CONFIG_SCSI_3W_SAS is not set | ||
598 | # CONFIG_SCSI_ACARD is not set | 632 | # CONFIG_SCSI_ACARD is not set |
599 | # CONFIG_SCSI_AACRAID is not set | 633 | # CONFIG_SCSI_AACRAID is not set |
600 | # CONFIG_SCSI_AIC7XXX is not set | 634 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -632,6 +666,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
632 | # CONFIG_SCSI_NSP32 is not set | 666 | # CONFIG_SCSI_NSP32 is not set |
633 | # CONFIG_SCSI_DEBUG is not set | 667 | # CONFIG_SCSI_DEBUG is not set |
634 | # CONFIG_SCSI_PMCRAID is not set | 668 | # CONFIG_SCSI_PMCRAID is not set |
669 | # CONFIG_SCSI_PM8001 is not set | ||
635 | # CONFIG_SCSI_SRP is not set | 670 | # CONFIG_SCSI_SRP is not set |
636 | # CONFIG_SCSI_BFA_FC is not set | 671 | # CONFIG_SCSI_BFA_FC is not set |
637 | # CONFIG_SCSI_DH is not set | 672 | # CONFIG_SCSI_DH is not set |
@@ -649,7 +684,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
649 | # | 684 | # |
650 | 685 | ||
651 | # | 686 | # |
652 | # See the help texts for more information. | 687 | # The newer stack is recommended. |
653 | # | 688 | # |
654 | # CONFIG_FIREWIRE is not set | 689 | # CONFIG_FIREWIRE is not set |
655 | # CONFIG_IEEE1394 is not set | 690 | # CONFIG_IEEE1394 is not set |
@@ -756,8 +791,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
756 | # CONFIG_BE2NET is not set | 791 | # CONFIG_BE2NET is not set |
757 | # CONFIG_TR is not set | 792 | # CONFIG_TR is not set |
758 | CONFIG_WLAN=y | 793 | CONFIG_WLAN=y |
759 | # CONFIG_WLAN_PRE80211 is not set | 794 | # CONFIG_AIRO is not set |
760 | # CONFIG_WLAN_80211 is not set | 795 | # CONFIG_ATMEL is not set |
796 | # CONFIG_PRISM54 is not set | ||
797 | # CONFIG_HOSTAP is not set | ||
761 | 798 | ||
762 | # | 799 | # |
763 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 800 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -771,6 +808,7 @@ CONFIG_WLAN=y | |||
771 | # CONFIG_NETCONSOLE is not set | 808 | # CONFIG_NETCONSOLE is not set |
772 | # CONFIG_NETPOLL is not set | 809 | # CONFIG_NETPOLL is not set |
773 | # CONFIG_NET_POLL_CONTROLLER is not set | 810 | # CONFIG_NET_POLL_CONTROLLER is not set |
811 | # CONFIG_VMXNET3 is not set | ||
774 | # CONFIG_ISDN is not set | 812 | # CONFIG_ISDN is not set |
775 | # CONFIG_PHONE is not set | 813 | # CONFIG_PHONE is not set |
776 | 814 | ||
@@ -780,6 +818,7 @@ CONFIG_WLAN=y | |||
780 | CONFIG_INPUT=y | 818 | CONFIG_INPUT=y |
781 | # CONFIG_INPUT_FF_MEMLESS is not set | 819 | # CONFIG_INPUT_FF_MEMLESS is not set |
782 | # CONFIG_INPUT_POLLDEV is not set | 820 | # CONFIG_INPUT_POLLDEV is not set |
821 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
783 | 822 | ||
784 | # | 823 | # |
785 | # Userland interfaces | 824 | # Userland interfaces |
@@ -832,6 +871,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
832 | # CONFIG_SERIAL_JSM is not set | 871 | # CONFIG_SERIAL_JSM is not set |
833 | # CONFIG_SERIAL_OF_PLATFORM is not set | 872 | # CONFIG_SERIAL_OF_PLATFORM is not set |
834 | # CONFIG_SERIAL_QE is not set | 873 | # CONFIG_SERIAL_QE is not set |
874 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
835 | CONFIG_UNIX98_PTYS=y | 875 | CONFIG_UNIX98_PTYS=y |
836 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 876 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
837 | CONFIG_LEGACY_PTYS=y | 877 | CONFIG_LEGACY_PTYS=y |
@@ -888,11 +928,6 @@ CONFIG_I2C_MPC=y | |||
888 | # CONFIG_I2C_TAOS_EVM is not set | 928 | # CONFIG_I2C_TAOS_EVM is not set |
889 | 929 | ||
890 | # | 930 | # |
891 | # Graphics adapter I2C/DDC channel drivers | ||
892 | # | ||
893 | # CONFIG_I2C_VOODOO3 is not set | ||
894 | |||
895 | # | ||
896 | # Other I2C/SMBus bus drivers | 931 | # Other I2C/SMBus bus drivers |
897 | # | 932 | # |
898 | # CONFIG_I2C_PCA_PLATFORM is not set | 933 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -901,7 +936,6 @@ CONFIG_I2C_MPC=y | |||
901 | # | 936 | # |
902 | # Miscellaneous I2C Chip support | 937 | # Miscellaneous I2C Chip support |
903 | # | 938 | # |
904 | # CONFIG_DS1682 is not set | ||
905 | # CONFIG_SENSORS_TSL2550 is not set | 939 | # CONFIG_SENSORS_TSL2550 is not set |
906 | # CONFIG_I2C_DEBUG_CORE is not set | 940 | # CONFIG_I2C_DEBUG_CORE is not set |
907 | # CONFIG_I2C_DEBUG_ALGO is not set | 941 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -947,6 +981,7 @@ CONFIG_HWMON=y | |||
947 | # CONFIG_SENSORS_GL520SM is not set | 981 | # CONFIG_SENSORS_GL520SM is not set |
948 | # CONFIG_SENSORS_IT87 is not set | 982 | # CONFIG_SENSORS_IT87 is not set |
949 | # CONFIG_SENSORS_LM63 is not set | 983 | # CONFIG_SENSORS_LM63 is not set |
984 | # CONFIG_SENSORS_LM73 is not set | ||
950 | # CONFIG_SENSORS_LM75 is not set | 985 | # CONFIG_SENSORS_LM75 is not set |
951 | # CONFIG_SENSORS_LM77 is not set | 986 | # CONFIG_SENSORS_LM77 is not set |
952 | # CONFIG_SENSORS_LM78 is not set | 987 | # CONFIG_SENSORS_LM78 is not set |
@@ -985,6 +1020,7 @@ CONFIG_HWMON=y | |||
985 | # CONFIG_SENSORS_W83L786NG is not set | 1020 | # CONFIG_SENSORS_W83L786NG is not set |
986 | # CONFIG_SENSORS_W83627HF is not set | 1021 | # CONFIG_SENSORS_W83627HF is not set |
987 | # CONFIG_SENSORS_W83627EHF is not set | 1022 | # CONFIG_SENSORS_W83627EHF is not set |
1023 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
988 | # CONFIG_THERMAL is not set | 1024 | # CONFIG_THERMAL is not set |
989 | CONFIG_WATCHDOG=y | 1025 | CONFIG_WATCHDOG=y |
990 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1026 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -1017,11 +1053,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1017 | # CONFIG_TWL4030_CORE is not set | 1053 | # CONFIG_TWL4030_CORE is not set |
1018 | # CONFIG_MFD_TMIO is not set | 1054 | # CONFIG_MFD_TMIO is not set |
1019 | # CONFIG_PMIC_DA903X is not set | 1055 | # CONFIG_PMIC_DA903X is not set |
1056 | # CONFIG_PMIC_ADP5520 is not set | ||
1020 | # CONFIG_MFD_WM8400 is not set | 1057 | # CONFIG_MFD_WM8400 is not set |
1021 | # CONFIG_MFD_WM831X is not set | 1058 | # CONFIG_MFD_WM831X is not set |
1022 | # CONFIG_MFD_WM8350_I2C is not set | 1059 | # CONFIG_MFD_WM8350_I2C is not set |
1023 | # CONFIG_MFD_PCF50633 is not set | 1060 | # CONFIG_MFD_PCF50633 is not set |
1024 | # CONFIG_AB3100_CORE is not set | 1061 | # CONFIG_AB3100_CORE is not set |
1062 | # CONFIG_MFD_88PM8607 is not set | ||
1025 | # CONFIG_REGULATOR is not set | 1063 | # CONFIG_REGULATOR is not set |
1026 | # CONFIG_MEDIA_SUPPORT is not set | 1064 | # CONFIG_MEDIA_SUPPORT is not set |
1027 | 1065 | ||
@@ -1104,6 +1142,7 @@ CONFIG_RTC_DRV_DS1374=y | |||
1104 | # CONFIG_RTC_DRV_PCF8563 is not set | 1142 | # CONFIG_RTC_DRV_PCF8563 is not set |
1105 | # CONFIG_RTC_DRV_PCF8583 is not set | 1143 | # CONFIG_RTC_DRV_PCF8583 is not set |
1106 | # CONFIG_RTC_DRV_M41T80 is not set | 1144 | # CONFIG_RTC_DRV_M41T80 is not set |
1145 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1107 | # CONFIG_RTC_DRV_S35390A is not set | 1146 | # CONFIG_RTC_DRV_S35390A is not set |
1108 | # CONFIG_RTC_DRV_FM3130 is not set | 1147 | # CONFIG_RTC_DRV_FM3130 is not set |
1109 | # CONFIG_RTC_DRV_RX8581 is not set | 1148 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1125,7 +1164,9 @@ CONFIG_RTC_DRV_DS1374=y | |||
1125 | # CONFIG_RTC_DRV_M48T86 is not set | 1164 | # CONFIG_RTC_DRV_M48T86 is not set |
1126 | # CONFIG_RTC_DRV_M48T35 is not set | 1165 | # CONFIG_RTC_DRV_M48T35 is not set |
1127 | # CONFIG_RTC_DRV_M48T59 is not set | 1166 | # CONFIG_RTC_DRV_M48T59 is not set |
1167 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1128 | # CONFIG_RTC_DRV_BQ4802 is not set | 1168 | # CONFIG_RTC_DRV_BQ4802 is not set |
1169 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1129 | # CONFIG_RTC_DRV_V3020 is not set | 1170 | # CONFIG_RTC_DRV_V3020 is not set |
1130 | 1171 | ||
1131 | # | 1172 | # |
@@ -1302,7 +1343,7 @@ CONFIG_FRAME_WARN=1024 | |||
1302 | # CONFIG_DEBUG_KERNEL is not set | 1343 | # CONFIG_DEBUG_KERNEL is not set |
1303 | # CONFIG_SLUB_DEBUG_ON is not set | 1344 | # CONFIG_SLUB_DEBUG_ON is not set |
1304 | # CONFIG_SLUB_STATS is not set | 1345 | # CONFIG_SLUB_STATS is not set |
1305 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1346 | CONFIG_DEBUG_BUGVERBOSE=y |
1306 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1347 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1307 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1348 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1308 | # CONFIG_LATENCYTOP is not set | 1349 | # CONFIG_LATENCYTOP is not set |
@@ -1329,7 +1370,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1329 | # CONFIG_KEYS is not set | 1370 | # CONFIG_KEYS is not set |
1330 | # CONFIG_SECURITY is not set | 1371 | # CONFIG_SECURITY is not set |
1331 | # CONFIG_SECURITYFS is not set | 1372 | # CONFIG_SECURITYFS is not set |
1332 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1373 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1374 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1375 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1376 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1377 | CONFIG_DEFAULT_SECURITY="" | ||
1333 | CONFIG_CRYPTO=y | 1378 | CONFIG_CRYPTO=y |
1334 | 1379 | ||
1335 | # | 1380 | # |
diff --git a/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig b/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig index b52ec0861679..9451d6e5c802 100644 --- a/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig +++ b/arch/powerpc/configs/83xx/mpc836x_rdk_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:30 2009 | 4 | # Wed Jan 6 09:24:23 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -60,6 +61,7 @@ CONFIG_AUDIT_ARCH=y | |||
60 | CONFIG_GENERIC_BUG=y | 61 | CONFIG_GENERIC_BUG=y |
61 | CONFIG_DTC=y | 62 | CONFIG_DTC=y |
62 | CONFIG_DEFAULT_UIMAGE=y | 63 | CONFIG_DEFAULT_UIMAGE=y |
64 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
63 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 65 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
64 | # CONFIG_PPC_DCR_NATIVE is not set | 66 | # CONFIG_PPC_DCR_NATIVE is not set |
65 | # CONFIG_PPC_DCR_MMIO is not set | 67 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -88,6 +90,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
88 | # | 90 | # |
89 | CONFIG_TREE_RCU=y | 91 | CONFIG_TREE_RCU=y |
90 | # CONFIG_TREE_PREEMPT_RCU is not set | 92 | # CONFIG_TREE_PREEMPT_RCU is not set |
93 | # CONFIG_TINY_RCU is not set | ||
91 | # CONFIG_RCU_TRACE is not set | 94 | # CONFIG_RCU_TRACE is not set |
92 | CONFIG_RCU_FANOUT=32 | 95 | CONFIG_RCU_FANOUT=32 |
93 | # CONFIG_RCU_FANOUT_EXACT is not set | 96 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -174,14 +177,41 @@ CONFIG_LBDAF=y | |||
174 | # IO Schedulers | 177 | # IO Schedulers |
175 | # | 178 | # |
176 | CONFIG_IOSCHED_NOOP=y | 179 | CONFIG_IOSCHED_NOOP=y |
177 | CONFIG_IOSCHED_AS=y | ||
178 | CONFIG_IOSCHED_DEADLINE=y | 180 | CONFIG_IOSCHED_DEADLINE=y |
179 | CONFIG_IOSCHED_CFQ=y | 181 | CONFIG_IOSCHED_CFQ=y |
180 | CONFIG_DEFAULT_AS=y | ||
181 | # CONFIG_DEFAULT_DEADLINE is not set | 182 | # CONFIG_DEFAULT_DEADLINE is not set |
182 | # CONFIG_DEFAULT_CFQ is not set | 183 | CONFIG_DEFAULT_CFQ=y |
183 | # CONFIG_DEFAULT_NOOP is not set | 184 | # CONFIG_DEFAULT_NOOP is not set |
184 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 185 | CONFIG_DEFAULT_IOSCHED="cfq" |
186 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
187 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
191 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
192 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
193 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
194 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
195 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
196 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
200 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
201 | CONFIG_INLINE_READ_UNLOCK=y | ||
202 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
203 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
204 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
205 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
209 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
210 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
211 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
212 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
213 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
214 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
185 | # CONFIG_FREEZER is not set | 215 | # CONFIG_FREEZER is not set |
186 | 216 | ||
187 | # | 217 | # |
@@ -258,6 +288,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
258 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 288 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
259 | # CONFIG_KEXEC is not set | 289 | # CONFIG_KEXEC is not set |
260 | # CONFIG_CRASH_DUMP is not set | 290 | # CONFIG_CRASH_DUMP is not set |
291 | CONFIG_SPARSE_IRQ=y | ||
261 | CONFIG_MAX_ACTIVE_REGIONS=32 | 292 | CONFIG_MAX_ACTIVE_REGIONS=32 |
262 | CONFIG_ARCH_FLATMEM_ENABLE=y | 293 | CONFIG_ARCH_FLATMEM_ENABLE=y |
263 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 294 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -274,8 +305,6 @@ CONFIG_MIGRATION=y | |||
274 | CONFIG_ZONE_DMA_FLAG=1 | 305 | CONFIG_ZONE_DMA_FLAG=1 |
275 | CONFIG_BOUNCE=y | 306 | CONFIG_BOUNCE=y |
276 | CONFIG_VIRT_TO_BUS=y | 307 | CONFIG_VIRT_TO_BUS=y |
277 | CONFIG_HAVE_MLOCK=y | ||
278 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
279 | # CONFIG_KSM is not set | 308 | # CONFIG_KSM is not set |
280 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 309 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
281 | CONFIG_PPC_4K_PAGES=y | 310 | CONFIG_PPC_4K_PAGES=y |
@@ -404,9 +433,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
404 | # CONFIG_AF_RXRPC is not set | 433 | # CONFIG_AF_RXRPC is not set |
405 | CONFIG_WIRELESS=y | 434 | CONFIG_WIRELESS=y |
406 | # CONFIG_CFG80211 is not set | 435 | # CONFIG_CFG80211 is not set |
407 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
408 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
409 | # CONFIG_WIRELESS_EXT is not set | ||
410 | # CONFIG_LIB80211 is not set | 436 | # CONFIG_LIB80211 is not set |
411 | 437 | ||
412 | # | 438 | # |
@@ -539,6 +565,10 @@ CONFIG_BLK_DEV=y | |||
539 | # CONFIG_BLK_DEV_COW_COMMON is not set | 565 | # CONFIG_BLK_DEV_COW_COMMON is not set |
540 | CONFIG_BLK_DEV_LOOP=y | 566 | CONFIG_BLK_DEV_LOOP=y |
541 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 567 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
568 | |||
569 | # | ||
570 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
571 | # | ||
542 | # CONFIG_BLK_DEV_NBD is not set | 572 | # CONFIG_BLK_DEV_NBD is not set |
543 | # CONFIG_BLK_DEV_SX8 is not set | 573 | # CONFIG_BLK_DEV_SX8 is not set |
544 | CONFIG_BLK_DEV_RAM=y | 574 | CONFIG_BLK_DEV_RAM=y |
@@ -549,6 +579,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
549 | # CONFIG_ATA_OVER_ETH is not set | 579 | # CONFIG_ATA_OVER_ETH is not set |
550 | # CONFIG_BLK_DEV_HD is not set | 580 | # CONFIG_BLK_DEV_HD is not set |
551 | CONFIG_MISC_DEVICES=y | 581 | CONFIG_MISC_DEVICES=y |
582 | # CONFIG_AD525X_DPOT is not set | ||
552 | # CONFIG_PHANTOM is not set | 583 | # CONFIG_PHANTOM is not set |
553 | # CONFIG_SGI_IOC4 is not set | 584 | # CONFIG_SGI_IOC4 is not set |
554 | # CONFIG_TIFM_CORE is not set | 585 | # CONFIG_TIFM_CORE is not set |
@@ -556,6 +587,8 @@ CONFIG_MISC_DEVICES=y | |||
556 | # CONFIG_ENCLOSURE_SERVICES is not set | 587 | # CONFIG_ENCLOSURE_SERVICES is not set |
557 | # CONFIG_HP_ILO is not set | 588 | # CONFIG_HP_ILO is not set |
558 | # CONFIG_ISL29003 is not set | 589 | # CONFIG_ISL29003 is not set |
590 | # CONFIG_DS1682 is not set | ||
591 | # CONFIG_TI_DAC7512 is not set | ||
559 | # CONFIG_C2PORT is not set | 592 | # CONFIG_C2PORT is not set |
560 | 593 | ||
561 | # | 594 | # |
@@ -590,7 +623,7 @@ CONFIG_HAVE_IDE=y | |||
590 | # | 623 | # |
591 | 624 | ||
592 | # | 625 | # |
593 | # See the help texts for more information. | 626 | # The newer stack is recommended. |
594 | # | 627 | # |
595 | # CONFIG_FIREWIRE is not set | 628 | # CONFIG_FIREWIRE is not set |
596 | # CONFIG_IEEE1394 is not set | 629 | # CONFIG_IEEE1394 is not set |
@@ -657,8 +690,10 @@ CONFIG_UCC_GETH=y | |||
657 | # CONFIG_NETDEV_10000 is not set | 690 | # CONFIG_NETDEV_10000 is not set |
658 | # CONFIG_TR is not set | 691 | # CONFIG_TR is not set |
659 | CONFIG_WLAN=y | 692 | CONFIG_WLAN=y |
660 | # CONFIG_WLAN_PRE80211 is not set | 693 | # CONFIG_AIRO is not set |
661 | # CONFIG_WLAN_80211 is not set | 694 | # CONFIG_ATMEL is not set |
695 | # CONFIG_PRISM54 is not set | ||
696 | # CONFIG_HOSTAP is not set | ||
662 | 697 | ||
663 | # | 698 | # |
664 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 699 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -671,6 +706,7 @@ CONFIG_WLAN=y | |||
671 | # CONFIG_NETCONSOLE is not set | 706 | # CONFIG_NETCONSOLE is not set |
672 | # CONFIG_NETPOLL is not set | 707 | # CONFIG_NETPOLL is not set |
673 | # CONFIG_NET_POLL_CONTROLLER is not set | 708 | # CONFIG_NET_POLL_CONTROLLER is not set |
709 | # CONFIG_VMXNET3 is not set | ||
674 | # CONFIG_ISDN is not set | 710 | # CONFIG_ISDN is not set |
675 | # CONFIG_PHONE is not set | 711 | # CONFIG_PHONE is not set |
676 | 712 | ||
@@ -680,6 +716,7 @@ CONFIG_WLAN=y | |||
680 | CONFIG_INPUT=y | 716 | CONFIG_INPUT=y |
681 | # CONFIG_INPUT_FF_MEMLESS is not set | 717 | # CONFIG_INPUT_FF_MEMLESS is not set |
682 | # CONFIG_INPUT_POLLDEV is not set | 718 | # CONFIG_INPUT_POLLDEV is not set |
719 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
683 | 720 | ||
684 | # | 721 | # |
685 | # Userland interfaces | 722 | # Userland interfaces |
@@ -737,6 +774,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
737 | # CONFIG_SERIAL_JSM is not set | 774 | # CONFIG_SERIAL_JSM is not set |
738 | # CONFIG_SERIAL_OF_PLATFORM is not set | 775 | # CONFIG_SERIAL_OF_PLATFORM is not set |
739 | CONFIG_SERIAL_QE=y | 776 | CONFIG_SERIAL_QE=y |
777 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
740 | CONFIG_UNIX98_PTYS=y | 778 | CONFIG_UNIX98_PTYS=y |
741 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 779 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
742 | CONFIG_LEGACY_PTYS=y | 780 | CONFIG_LEGACY_PTYS=y |
@@ -795,11 +833,6 @@ CONFIG_I2C_MPC=y | |||
795 | # CONFIG_I2C_TAOS_EVM is not set | 833 | # CONFIG_I2C_TAOS_EVM is not set |
796 | 834 | ||
797 | # | 835 | # |
798 | # Graphics adapter I2C/DDC channel drivers | ||
799 | # | ||
800 | # CONFIG_I2C_VOODOO3 is not set | ||
801 | |||
802 | # | ||
803 | # Other I2C/SMBus bus drivers | 836 | # Other I2C/SMBus bus drivers |
804 | # | 837 | # |
805 | # CONFIG_I2C_PCA_PLATFORM is not set | 838 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -808,7 +841,6 @@ CONFIG_I2C_MPC=y | |||
808 | # | 841 | # |
809 | # Miscellaneous I2C Chip support | 842 | # Miscellaneous I2C Chip support |
810 | # | 843 | # |
811 | # CONFIG_DS1682 is not set | ||
812 | # CONFIG_SENSORS_TSL2550 is not set | 844 | # CONFIG_SENSORS_TSL2550 is not set |
813 | # CONFIG_I2C_DEBUG_CORE is not set | 845 | # CONFIG_I2C_DEBUG_CORE is not set |
814 | # CONFIG_I2C_DEBUG_ALGO is not set | 846 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -823,6 +855,8 @@ CONFIG_SPI_MASTER=y | |||
823 | CONFIG_SPI_BITBANG=y | 855 | CONFIG_SPI_BITBANG=y |
824 | # CONFIG_SPI_GPIO is not set | 856 | # CONFIG_SPI_GPIO is not set |
825 | # CONFIG_SPI_MPC8xxx is not set | 857 | # CONFIG_SPI_MPC8xxx is not set |
858 | # CONFIG_SPI_XILINX is not set | ||
859 | # CONFIG_SPI_DESIGNWARE is not set | ||
826 | 860 | ||
827 | # | 861 | # |
828 | # SPI Protocol Masters | 862 | # SPI Protocol Masters |
@@ -854,6 +888,7 @@ CONFIG_GPIOLIB=y | |||
854 | # | 888 | # |
855 | # PCI GPIO expanders: | 889 | # PCI GPIO expanders: |
856 | # | 890 | # |
891 | # CONFIG_GPIO_CS5535 is not set | ||
857 | # CONFIG_GPIO_BT8XX is not set | 892 | # CONFIG_GPIO_BT8XX is not set |
858 | # CONFIG_GPIO_LANGWELL is not set | 893 | # CONFIG_GPIO_LANGWELL is not set |
859 | 894 | ||
@@ -903,6 +938,7 @@ CONFIG_SSB_POSSIBLE=y | |||
903 | # CONFIG_TWL4030_CORE is not set | 938 | # CONFIG_TWL4030_CORE is not set |
904 | # CONFIG_MFD_TMIO is not set | 939 | # CONFIG_MFD_TMIO is not set |
905 | # CONFIG_PMIC_DA903X is not set | 940 | # CONFIG_PMIC_DA903X is not set |
941 | # CONFIG_PMIC_ADP5520 is not set | ||
906 | # CONFIG_MFD_WM8400 is not set | 942 | # CONFIG_MFD_WM8400 is not set |
907 | # CONFIG_MFD_WM831X is not set | 943 | # CONFIG_MFD_WM831X is not set |
908 | # CONFIG_MFD_WM8350_I2C is not set | 944 | # CONFIG_MFD_WM8350_I2C is not set |
@@ -910,6 +946,8 @@ CONFIG_SSB_POSSIBLE=y | |||
910 | # CONFIG_MFD_MC13783 is not set | 946 | # CONFIG_MFD_MC13783 is not set |
911 | # CONFIG_AB3100_CORE is not set | 947 | # CONFIG_AB3100_CORE is not set |
912 | # CONFIG_EZX_PCAP is not set | 948 | # CONFIG_EZX_PCAP is not set |
949 | # CONFIG_MFD_88PM8607 is not set | ||
950 | # CONFIG_AB4500_CORE is not set | ||
913 | # CONFIG_REGULATOR is not set | 951 | # CONFIG_REGULATOR is not set |
914 | # CONFIG_MEDIA_SUPPORT is not set | 952 | # CONFIG_MEDIA_SUPPORT is not set |
915 | 953 | ||
@@ -1199,7 +1237,7 @@ CONFIG_FRAME_WARN=1024 | |||
1199 | # CONFIG_DEBUG_KERNEL is not set | 1237 | # CONFIG_DEBUG_KERNEL is not set |
1200 | # CONFIG_SLUB_DEBUG_ON is not set | 1238 | # CONFIG_SLUB_DEBUG_ON is not set |
1201 | # CONFIG_SLUB_STATS is not set | 1239 | # CONFIG_SLUB_STATS is not set |
1202 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1240 | CONFIG_DEBUG_BUGVERBOSE=y |
1203 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1241 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1204 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1242 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1205 | # CONFIG_LATENCYTOP is not set | 1243 | # CONFIG_LATENCYTOP is not set |
@@ -1230,6 +1268,7 @@ CONFIG_PPC_EARLY_DEBUG=y | |||
1230 | # CONFIG_PPC_EARLY_DEBUG_44x is not set | 1268 | # CONFIG_PPC_EARLY_DEBUG_44x is not set |
1231 | # CONFIG_PPC_EARLY_DEBUG_40x is not set | 1269 | # CONFIG_PPC_EARLY_DEBUG_40x is not set |
1232 | # CONFIG_PPC_EARLY_DEBUG_CPM is not set | 1270 | # CONFIG_PPC_EARLY_DEBUG_CPM is not set |
1271 | # CONFIG_PPC_EARLY_DEBUG_USBGECKO is not set | ||
1233 | 1272 | ||
1234 | # | 1273 | # |
1235 | # Security options | 1274 | # Security options |
@@ -1237,7 +1276,11 @@ CONFIG_PPC_EARLY_DEBUG=y | |||
1237 | # CONFIG_KEYS is not set | 1276 | # CONFIG_KEYS is not set |
1238 | # CONFIG_SECURITY is not set | 1277 | # CONFIG_SECURITY is not set |
1239 | # CONFIG_SECURITYFS is not set | 1278 | # CONFIG_SECURITYFS is not set |
1240 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1279 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1280 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1281 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1282 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1283 | CONFIG_DEFAULT_SECURITY="" | ||
1241 | CONFIG_CRYPTO=y | 1284 | CONFIG_CRYPTO=y |
1242 | 1285 | ||
1243 | # | 1286 | # |
diff --git a/arch/powerpc/configs/83xx/mpc837x_mds_defconfig b/arch/powerpc/configs/83xx/mpc837x_mds_defconfig index 730061574f96..f67b70d0b292 100644 --- a/arch/powerpc/configs/83xx/mpc837x_mds_defconfig +++ b/arch/powerpc/configs/83xx/mpc837x_mds_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:29 2009 | 4 | # Wed Jan 6 09:24:22 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
87 | # | 89 | # |
88 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -174,14 +177,41 @@ CONFIG_LBDAF=y | |||
174 | # IO Schedulers | 177 | # IO Schedulers |
175 | # | 178 | # |
176 | CONFIG_IOSCHED_NOOP=y | 179 | CONFIG_IOSCHED_NOOP=y |
177 | CONFIG_IOSCHED_AS=y | ||
178 | CONFIG_IOSCHED_DEADLINE=y | 180 | CONFIG_IOSCHED_DEADLINE=y |
179 | CONFIG_IOSCHED_CFQ=y | 181 | CONFIG_IOSCHED_CFQ=y |
180 | CONFIG_DEFAULT_AS=y | ||
181 | # CONFIG_DEFAULT_DEADLINE is not set | 182 | # CONFIG_DEFAULT_DEADLINE is not set |
182 | # CONFIG_DEFAULT_CFQ is not set | 183 | CONFIG_DEFAULT_CFQ=y |
183 | # CONFIG_DEFAULT_NOOP is not set | 184 | # CONFIG_DEFAULT_NOOP is not set |
184 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 185 | CONFIG_DEFAULT_IOSCHED="cfq" |
186 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
187 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
191 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
192 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
193 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
194 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
195 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
196 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
200 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
201 | CONFIG_INLINE_READ_UNLOCK=y | ||
202 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
203 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
204 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
205 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
209 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
210 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
211 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
212 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
213 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
214 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
185 | # CONFIG_FREEZER is not set | 215 | # CONFIG_FREEZER is not set |
186 | 216 | ||
187 | # | 217 | # |
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
259 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 289 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
260 | # CONFIG_KEXEC is not set | 290 | # CONFIG_KEXEC is not set |
261 | # CONFIG_CRASH_DUMP is not set | 291 | # CONFIG_CRASH_DUMP is not set |
292 | CONFIG_SPARSE_IRQ=y | ||
262 | CONFIG_MAX_ACTIVE_REGIONS=32 | 293 | CONFIG_MAX_ACTIVE_REGIONS=32 |
263 | CONFIG_ARCH_FLATMEM_ENABLE=y | 294 | CONFIG_ARCH_FLATMEM_ENABLE=y |
264 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 295 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y | |||
275 | CONFIG_ZONE_DMA_FLAG=1 | 306 | CONFIG_ZONE_DMA_FLAG=1 |
276 | CONFIG_BOUNCE=y | 307 | CONFIG_BOUNCE=y |
277 | CONFIG_VIRT_TO_BUS=y | 308 | CONFIG_VIRT_TO_BUS=y |
278 | CONFIG_HAVE_MLOCK=y | ||
279 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
280 | # CONFIG_KSM is not set | 309 | # CONFIG_KSM is not set |
281 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 310 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
282 | CONFIG_PPC_4K_PAGES=y | 311 | CONFIG_PPC_4K_PAGES=y |
@@ -403,9 +432,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
403 | # CONFIG_AF_RXRPC is not set | 432 | # CONFIG_AF_RXRPC is not set |
404 | CONFIG_WIRELESS=y | 433 | CONFIG_WIRELESS=y |
405 | # CONFIG_CFG80211 is not set | 434 | # CONFIG_CFG80211 is not set |
406 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
407 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
408 | # CONFIG_WIRELESS_EXT is not set | ||
409 | # CONFIG_LIB80211 is not set | 435 | # CONFIG_LIB80211 is not set |
410 | 436 | ||
411 | # | 437 | # |
@@ -443,6 +469,10 @@ CONFIG_BLK_DEV=y | |||
443 | # CONFIG_BLK_DEV_COW_COMMON is not set | 469 | # CONFIG_BLK_DEV_COW_COMMON is not set |
444 | CONFIG_BLK_DEV_LOOP=y | 470 | CONFIG_BLK_DEV_LOOP=y |
445 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 471 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
472 | |||
473 | # | ||
474 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
475 | # | ||
446 | # CONFIG_BLK_DEV_NBD is not set | 476 | # CONFIG_BLK_DEV_NBD is not set |
447 | # CONFIG_BLK_DEV_SX8 is not set | 477 | # CONFIG_BLK_DEV_SX8 is not set |
448 | CONFIG_BLK_DEV_RAM=y | 478 | CONFIG_BLK_DEV_RAM=y |
@@ -453,6 +483,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
453 | # CONFIG_ATA_OVER_ETH is not set | 483 | # CONFIG_ATA_OVER_ETH is not set |
454 | # CONFIG_BLK_DEV_HD is not set | 484 | # CONFIG_BLK_DEV_HD is not set |
455 | CONFIG_MISC_DEVICES=y | 485 | CONFIG_MISC_DEVICES=y |
486 | # CONFIG_AD525X_DPOT is not set | ||
456 | # CONFIG_PHANTOM is not set | 487 | # CONFIG_PHANTOM is not set |
457 | # CONFIG_SGI_IOC4 is not set | 488 | # CONFIG_SGI_IOC4 is not set |
458 | # CONFIG_TIFM_CORE is not set | 489 | # CONFIG_TIFM_CORE is not set |
@@ -460,6 +491,7 @@ CONFIG_MISC_DEVICES=y | |||
460 | # CONFIG_ENCLOSURE_SERVICES is not set | 491 | # CONFIG_ENCLOSURE_SERVICES is not set |
461 | # CONFIG_HP_ILO is not set | 492 | # CONFIG_HP_ILO is not set |
462 | # CONFIG_ISL29003 is not set | 493 | # CONFIG_ISL29003 is not set |
494 | # CONFIG_DS1682 is not set | ||
463 | # CONFIG_C2PORT is not set | 495 | # CONFIG_C2PORT is not set |
464 | 496 | ||
465 | # | 497 | # |
@@ -512,7 +544,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
512 | # CONFIG_SCSI_BNX2_ISCSI is not set | 544 | # CONFIG_SCSI_BNX2_ISCSI is not set |
513 | # CONFIG_BE2ISCSI is not set | 545 | # CONFIG_BE2ISCSI is not set |
514 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 546 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
547 | # CONFIG_SCSI_HPSA is not set | ||
515 | # CONFIG_SCSI_3W_9XXX is not set | 548 | # CONFIG_SCSI_3W_9XXX is not set |
549 | # CONFIG_SCSI_3W_SAS is not set | ||
516 | # CONFIG_SCSI_ACARD is not set | 550 | # CONFIG_SCSI_ACARD is not set |
517 | # CONFIG_SCSI_AACRAID is not set | 551 | # CONFIG_SCSI_AACRAID is not set |
518 | # CONFIG_SCSI_AIC7XXX is not set | 552 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -551,6 +585,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
551 | # CONFIG_SCSI_NSP32 is not set | 585 | # CONFIG_SCSI_NSP32 is not set |
552 | # CONFIG_SCSI_DEBUG is not set | 586 | # CONFIG_SCSI_DEBUG is not set |
553 | # CONFIG_SCSI_PMCRAID is not set | 587 | # CONFIG_SCSI_PMCRAID is not set |
588 | # CONFIG_SCSI_PM8001 is not set | ||
554 | # CONFIG_SCSI_SRP is not set | 589 | # CONFIG_SCSI_SRP is not set |
555 | # CONFIG_SCSI_BFA_FC is not set | 590 | # CONFIG_SCSI_BFA_FC is not set |
556 | # CONFIG_SCSI_DH is not set | 591 | # CONFIG_SCSI_DH is not set |
@@ -606,15 +641,16 @@ CONFIG_ATA_SFF=y | |||
606 | # CONFIG_PATA_NS87415 is not set | 641 | # CONFIG_PATA_NS87415 is not set |
607 | # CONFIG_PATA_OPTI is not set | 642 | # CONFIG_PATA_OPTI is not set |
608 | # CONFIG_PATA_OPTIDMA is not set | 643 | # CONFIG_PATA_OPTIDMA is not set |
644 | # CONFIG_PATA_PDC2027X is not set | ||
609 | # CONFIG_PATA_PDC_OLD is not set | 645 | # CONFIG_PATA_PDC_OLD is not set |
610 | # CONFIG_PATA_RADISYS is not set | 646 | # CONFIG_PATA_RADISYS is not set |
611 | # CONFIG_PATA_RDC is not set | 647 | # CONFIG_PATA_RDC is not set |
612 | # CONFIG_PATA_RZ1000 is not set | 648 | # CONFIG_PATA_RZ1000 is not set |
613 | # CONFIG_PATA_SC1200 is not set | 649 | # CONFIG_PATA_SC1200 is not set |
614 | # CONFIG_PATA_SERVERWORKS is not set | 650 | # CONFIG_PATA_SERVERWORKS is not set |
615 | # CONFIG_PATA_PDC2027X is not set | ||
616 | # CONFIG_PATA_SIL680 is not set | 651 | # CONFIG_PATA_SIL680 is not set |
617 | # CONFIG_PATA_SIS is not set | 652 | # CONFIG_PATA_SIS is not set |
653 | # CONFIG_PATA_TOSHIBA is not set | ||
618 | # CONFIG_PATA_VIA is not set | 654 | # CONFIG_PATA_VIA is not set |
619 | # CONFIG_PATA_WINBOND is not set | 655 | # CONFIG_PATA_WINBOND is not set |
620 | # CONFIG_PATA_PLATFORM is not set | 656 | # CONFIG_PATA_PLATFORM is not set |
@@ -631,7 +667,7 @@ CONFIG_ATA_SFF=y | |||
631 | # | 667 | # |
632 | 668 | ||
633 | # | 669 | # |
634 | # See the help texts for more information. | 670 | # The newer stack is recommended. |
635 | # | 671 | # |
636 | # CONFIG_FIREWIRE is not set | 672 | # CONFIG_FIREWIRE is not set |
637 | # CONFIG_IEEE1394 is not set | 673 | # CONFIG_IEEE1394 is not set |
@@ -736,8 +772,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
736 | # CONFIG_BE2NET is not set | 772 | # CONFIG_BE2NET is not set |
737 | # CONFIG_TR is not set | 773 | # CONFIG_TR is not set |
738 | CONFIG_WLAN=y | 774 | CONFIG_WLAN=y |
739 | # CONFIG_WLAN_PRE80211 is not set | 775 | # CONFIG_AIRO is not set |
740 | # CONFIG_WLAN_80211 is not set | 776 | # CONFIG_ATMEL is not set |
777 | # CONFIG_PRISM54 is not set | ||
778 | # CONFIG_HOSTAP is not set | ||
741 | 779 | ||
742 | # | 780 | # |
743 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 781 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -751,6 +789,7 @@ CONFIG_WLAN=y | |||
751 | # CONFIG_NETCONSOLE is not set | 789 | # CONFIG_NETCONSOLE is not set |
752 | # CONFIG_NETPOLL is not set | 790 | # CONFIG_NETPOLL is not set |
753 | # CONFIG_NET_POLL_CONTROLLER is not set | 791 | # CONFIG_NET_POLL_CONTROLLER is not set |
792 | # CONFIG_VMXNET3 is not set | ||
754 | # CONFIG_ISDN is not set | 793 | # CONFIG_ISDN is not set |
755 | # CONFIG_PHONE is not set | 794 | # CONFIG_PHONE is not set |
756 | 795 | ||
@@ -760,6 +799,7 @@ CONFIG_WLAN=y | |||
760 | CONFIG_INPUT=y | 799 | CONFIG_INPUT=y |
761 | # CONFIG_INPUT_FF_MEMLESS is not set | 800 | # CONFIG_INPUT_FF_MEMLESS is not set |
762 | # CONFIG_INPUT_POLLDEV is not set | 801 | # CONFIG_INPUT_POLLDEV is not set |
802 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
763 | 803 | ||
764 | # | 804 | # |
765 | # Userland interfaces | 805 | # Userland interfaces |
@@ -811,6 +851,7 @@ CONFIG_SERIAL_CORE=y | |||
811 | CONFIG_SERIAL_CORE_CONSOLE=y | 851 | CONFIG_SERIAL_CORE_CONSOLE=y |
812 | # CONFIG_SERIAL_JSM is not set | 852 | # CONFIG_SERIAL_JSM is not set |
813 | # CONFIG_SERIAL_OF_PLATFORM is not set | 853 | # CONFIG_SERIAL_OF_PLATFORM is not set |
854 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
814 | CONFIG_UNIX98_PTYS=y | 855 | CONFIG_UNIX98_PTYS=y |
815 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 856 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
816 | CONFIG_LEGACY_PTYS=y | 857 | CONFIG_LEGACY_PTYS=y |
@@ -868,11 +909,6 @@ CONFIG_I2C_MPC=y | |||
868 | # CONFIG_I2C_TAOS_EVM is not set | 909 | # CONFIG_I2C_TAOS_EVM is not set |
869 | 910 | ||
870 | # | 911 | # |
871 | # Graphics adapter I2C/DDC channel drivers | ||
872 | # | ||
873 | # CONFIG_I2C_VOODOO3 is not set | ||
874 | |||
875 | # | ||
876 | # Other I2C/SMBus bus drivers | 912 | # Other I2C/SMBus bus drivers |
877 | # | 913 | # |
878 | # CONFIG_I2C_PCA_PLATFORM is not set | 914 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -881,7 +917,6 @@ CONFIG_I2C_MPC=y | |||
881 | # | 917 | # |
882 | # Miscellaneous I2C Chip support | 918 | # Miscellaneous I2C Chip support |
883 | # | 919 | # |
884 | # CONFIG_DS1682 is not set | ||
885 | # CONFIG_SENSORS_TSL2550 is not set | 920 | # CONFIG_SENSORS_TSL2550 is not set |
886 | # CONFIG_I2C_DEBUG_CORE is not set | 921 | # CONFIG_I2C_DEBUG_CORE is not set |
887 | # CONFIG_I2C_DEBUG_ALGO is not set | 922 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -927,6 +962,7 @@ CONFIG_HWMON=y | |||
927 | # CONFIG_SENSORS_GL520SM is not set | 962 | # CONFIG_SENSORS_GL520SM is not set |
928 | # CONFIG_SENSORS_IT87 is not set | 963 | # CONFIG_SENSORS_IT87 is not set |
929 | # CONFIG_SENSORS_LM63 is not set | 964 | # CONFIG_SENSORS_LM63 is not set |
965 | # CONFIG_SENSORS_LM73 is not set | ||
930 | # CONFIG_SENSORS_LM75 is not set | 966 | # CONFIG_SENSORS_LM75 is not set |
931 | # CONFIG_SENSORS_LM77 is not set | 967 | # CONFIG_SENSORS_LM77 is not set |
932 | # CONFIG_SENSORS_LM78 is not set | 968 | # CONFIG_SENSORS_LM78 is not set |
@@ -965,6 +1001,7 @@ CONFIG_HWMON=y | |||
965 | # CONFIG_SENSORS_W83L786NG is not set | 1001 | # CONFIG_SENSORS_W83L786NG is not set |
966 | # CONFIG_SENSORS_W83627HF is not set | 1002 | # CONFIG_SENSORS_W83627HF is not set |
967 | # CONFIG_SENSORS_W83627EHF is not set | 1003 | # CONFIG_SENSORS_W83627EHF is not set |
1004 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
968 | # CONFIG_THERMAL is not set | 1005 | # CONFIG_THERMAL is not set |
969 | CONFIG_WATCHDOG=y | 1006 | CONFIG_WATCHDOG=y |
970 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1007 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -997,11 +1034,13 @@ CONFIG_SSB_POSSIBLE=y | |||
997 | # CONFIG_TWL4030_CORE is not set | 1034 | # CONFIG_TWL4030_CORE is not set |
998 | # CONFIG_MFD_TMIO is not set | 1035 | # CONFIG_MFD_TMIO is not set |
999 | # CONFIG_PMIC_DA903X is not set | 1036 | # CONFIG_PMIC_DA903X is not set |
1037 | # CONFIG_PMIC_ADP5520 is not set | ||
1000 | # CONFIG_MFD_WM8400 is not set | 1038 | # CONFIG_MFD_WM8400 is not set |
1001 | # CONFIG_MFD_WM831X is not set | 1039 | # CONFIG_MFD_WM831X is not set |
1002 | # CONFIG_MFD_WM8350_I2C is not set | 1040 | # CONFIG_MFD_WM8350_I2C is not set |
1003 | # CONFIG_MFD_PCF50633 is not set | 1041 | # CONFIG_MFD_PCF50633 is not set |
1004 | # CONFIG_AB3100_CORE is not set | 1042 | # CONFIG_AB3100_CORE is not set |
1043 | # CONFIG_MFD_88PM8607 is not set | ||
1005 | # CONFIG_REGULATOR is not set | 1044 | # CONFIG_REGULATOR is not set |
1006 | # CONFIG_MEDIA_SUPPORT is not set | 1045 | # CONFIG_MEDIA_SUPPORT is not set |
1007 | 1046 | ||
@@ -1226,7 +1265,7 @@ CONFIG_FRAME_WARN=1024 | |||
1226 | # CONFIG_DEBUG_FS is not set | 1265 | # CONFIG_DEBUG_FS is not set |
1227 | # CONFIG_HEADERS_CHECK is not set | 1266 | # CONFIG_HEADERS_CHECK is not set |
1228 | # CONFIG_DEBUG_KERNEL is not set | 1267 | # CONFIG_DEBUG_KERNEL is not set |
1229 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1268 | CONFIG_DEBUG_BUGVERBOSE=y |
1230 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1269 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1231 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1270 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1232 | # CONFIG_LATENCYTOP is not set | 1271 | # CONFIG_LATENCYTOP is not set |
@@ -1253,7 +1292,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1253 | # CONFIG_KEYS is not set | 1292 | # CONFIG_KEYS is not set |
1254 | # CONFIG_SECURITY is not set | 1293 | # CONFIG_SECURITY is not set |
1255 | # CONFIG_SECURITYFS is not set | 1294 | # CONFIG_SECURITYFS is not set |
1256 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1295 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1296 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1297 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1298 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1299 | CONFIG_DEFAULT_SECURITY="" | ||
1257 | CONFIG_CRYPTO=y | 1300 | CONFIG_CRYPTO=y |
1258 | 1301 | ||
1259 | # | 1302 | # |
diff --git a/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig b/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig index 9e9158a5b190..a84fd1194e2b 100644 --- a/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig +++ b/arch/powerpc/configs/83xx/mpc837x_rdb_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:30 2009 | 4 | # Wed Jan 6 09:24:24 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
87 | # | 89 | # |
88 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -174,14 +177,41 @@ CONFIG_LBDAF=y | |||
174 | # IO Schedulers | 177 | # IO Schedulers |
175 | # | 178 | # |
176 | CONFIG_IOSCHED_NOOP=y | 179 | CONFIG_IOSCHED_NOOP=y |
177 | CONFIG_IOSCHED_AS=y | ||
178 | CONFIG_IOSCHED_DEADLINE=y | 180 | CONFIG_IOSCHED_DEADLINE=y |
179 | CONFIG_IOSCHED_CFQ=y | 181 | CONFIG_IOSCHED_CFQ=y |
180 | CONFIG_DEFAULT_AS=y | ||
181 | # CONFIG_DEFAULT_DEADLINE is not set | 182 | # CONFIG_DEFAULT_DEADLINE is not set |
182 | # CONFIG_DEFAULT_CFQ is not set | 183 | CONFIG_DEFAULT_CFQ=y |
183 | # CONFIG_DEFAULT_NOOP is not set | 184 | # CONFIG_DEFAULT_NOOP is not set |
184 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 185 | CONFIG_DEFAULT_IOSCHED="cfq" |
186 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
187 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
191 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
192 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
193 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
194 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
195 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
196 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
200 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
201 | CONFIG_INLINE_READ_UNLOCK=y | ||
202 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
203 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
204 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
205 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
209 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
210 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
211 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
212 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
213 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
214 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
185 | # CONFIG_FREEZER is not set | 215 | # CONFIG_FREEZER is not set |
186 | 216 | ||
187 | # | 217 | # |
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
259 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 289 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
260 | # CONFIG_KEXEC is not set | 290 | # CONFIG_KEXEC is not set |
261 | # CONFIG_CRASH_DUMP is not set | 291 | # CONFIG_CRASH_DUMP is not set |
292 | CONFIG_SPARSE_IRQ=y | ||
262 | CONFIG_MAX_ACTIVE_REGIONS=32 | 293 | CONFIG_MAX_ACTIVE_REGIONS=32 |
263 | CONFIG_ARCH_FLATMEM_ENABLE=y | 294 | CONFIG_ARCH_FLATMEM_ENABLE=y |
264 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 295 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y | |||
275 | CONFIG_ZONE_DMA_FLAG=1 | 306 | CONFIG_ZONE_DMA_FLAG=1 |
276 | CONFIG_BOUNCE=y | 307 | CONFIG_BOUNCE=y |
277 | CONFIG_VIRT_TO_BUS=y | 308 | CONFIG_VIRT_TO_BUS=y |
278 | CONFIG_HAVE_MLOCK=y | ||
279 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
280 | # CONFIG_KSM is not set | 309 | # CONFIG_KSM is not set |
281 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 310 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
282 | CONFIG_PPC_4K_PAGES=y | 311 | CONFIG_PPC_4K_PAGES=y |
@@ -398,9 +427,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
398 | # CONFIG_AF_RXRPC is not set | 427 | # CONFIG_AF_RXRPC is not set |
399 | CONFIG_WIRELESS=y | 428 | CONFIG_WIRELESS=y |
400 | # CONFIG_CFG80211 is not set | 429 | # CONFIG_CFG80211 is not set |
401 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
402 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
403 | # CONFIG_WIRELESS_EXT is not set | ||
404 | # CONFIG_LIB80211 is not set | 430 | # CONFIG_LIB80211 is not set |
405 | 431 | ||
406 | # | 432 | # |
@@ -438,6 +464,10 @@ CONFIG_BLK_DEV=y | |||
438 | # CONFIG_BLK_DEV_COW_COMMON is not set | 464 | # CONFIG_BLK_DEV_COW_COMMON is not set |
439 | CONFIG_BLK_DEV_LOOP=y | 465 | CONFIG_BLK_DEV_LOOP=y |
440 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 466 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
467 | |||
468 | # | ||
469 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
470 | # | ||
441 | # CONFIG_BLK_DEV_NBD is not set | 471 | # CONFIG_BLK_DEV_NBD is not set |
442 | # CONFIG_BLK_DEV_SX8 is not set | 472 | # CONFIG_BLK_DEV_SX8 is not set |
443 | # CONFIG_BLK_DEV_UB is not set | 473 | # CONFIG_BLK_DEV_UB is not set |
@@ -449,6 +479,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
449 | # CONFIG_ATA_OVER_ETH is not set | 479 | # CONFIG_ATA_OVER_ETH is not set |
450 | # CONFIG_BLK_DEV_HD is not set | 480 | # CONFIG_BLK_DEV_HD is not set |
451 | CONFIG_MISC_DEVICES=y | 481 | CONFIG_MISC_DEVICES=y |
482 | # CONFIG_AD525X_DPOT is not set | ||
452 | # CONFIG_PHANTOM is not set | 483 | # CONFIG_PHANTOM is not set |
453 | # CONFIG_SGI_IOC4 is not set | 484 | # CONFIG_SGI_IOC4 is not set |
454 | # CONFIG_TIFM_CORE is not set | 485 | # CONFIG_TIFM_CORE is not set |
@@ -456,6 +487,7 @@ CONFIG_MISC_DEVICES=y | |||
456 | # CONFIG_ENCLOSURE_SERVICES is not set | 487 | # CONFIG_ENCLOSURE_SERVICES is not set |
457 | # CONFIG_HP_ILO is not set | 488 | # CONFIG_HP_ILO is not set |
458 | # CONFIG_ISL29003 is not set | 489 | # CONFIG_ISL29003 is not set |
490 | # CONFIG_DS1682 is not set | ||
459 | # CONFIG_C2PORT is not set | 491 | # CONFIG_C2PORT is not set |
460 | 492 | ||
461 | # | 493 | # |
@@ -507,7 +539,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
507 | # CONFIG_SCSI_BNX2_ISCSI is not set | 539 | # CONFIG_SCSI_BNX2_ISCSI is not set |
508 | # CONFIG_BE2ISCSI is not set | 540 | # CONFIG_BE2ISCSI is not set |
509 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 541 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
542 | # CONFIG_SCSI_HPSA is not set | ||
510 | # CONFIG_SCSI_3W_9XXX is not set | 543 | # CONFIG_SCSI_3W_9XXX is not set |
544 | # CONFIG_SCSI_3W_SAS is not set | ||
511 | # CONFIG_SCSI_ACARD is not set | 545 | # CONFIG_SCSI_ACARD is not set |
512 | # CONFIG_SCSI_AACRAID is not set | 546 | # CONFIG_SCSI_AACRAID is not set |
513 | # CONFIG_SCSI_AIC7XXX is not set | 547 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -546,6 +580,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
546 | # CONFIG_SCSI_NSP32 is not set | 580 | # CONFIG_SCSI_NSP32 is not set |
547 | # CONFIG_SCSI_DEBUG is not set | 581 | # CONFIG_SCSI_DEBUG is not set |
548 | # CONFIG_SCSI_PMCRAID is not set | 582 | # CONFIG_SCSI_PMCRAID is not set |
583 | # CONFIG_SCSI_PM8001 is not set | ||
549 | # CONFIG_SCSI_SRP is not set | 584 | # CONFIG_SCSI_SRP is not set |
550 | # CONFIG_SCSI_BFA_FC is not set | 585 | # CONFIG_SCSI_BFA_FC is not set |
551 | # CONFIG_SCSI_DH is not set | 586 | # CONFIG_SCSI_DH is not set |
@@ -601,15 +636,16 @@ CONFIG_ATA_SFF=y | |||
601 | # CONFIG_PATA_NS87415 is not set | 636 | # CONFIG_PATA_NS87415 is not set |
602 | # CONFIG_PATA_OPTI is not set | 637 | # CONFIG_PATA_OPTI is not set |
603 | # CONFIG_PATA_OPTIDMA is not set | 638 | # CONFIG_PATA_OPTIDMA is not set |
639 | # CONFIG_PATA_PDC2027X is not set | ||
604 | # CONFIG_PATA_PDC_OLD is not set | 640 | # CONFIG_PATA_PDC_OLD is not set |
605 | # CONFIG_PATA_RADISYS is not set | 641 | # CONFIG_PATA_RADISYS is not set |
606 | # CONFIG_PATA_RDC is not set | 642 | # CONFIG_PATA_RDC is not set |
607 | # CONFIG_PATA_RZ1000 is not set | 643 | # CONFIG_PATA_RZ1000 is not set |
608 | # CONFIG_PATA_SC1200 is not set | 644 | # CONFIG_PATA_SC1200 is not set |
609 | # CONFIG_PATA_SERVERWORKS is not set | 645 | # CONFIG_PATA_SERVERWORKS is not set |
610 | # CONFIG_PATA_PDC2027X is not set | ||
611 | # CONFIG_PATA_SIL680 is not set | 646 | # CONFIG_PATA_SIL680 is not set |
612 | # CONFIG_PATA_SIS is not set | 647 | # CONFIG_PATA_SIS is not set |
648 | # CONFIG_PATA_TOSHIBA is not set | ||
613 | # CONFIG_PATA_VIA is not set | 649 | # CONFIG_PATA_VIA is not set |
614 | # CONFIG_PATA_WINBOND is not set | 650 | # CONFIG_PATA_WINBOND is not set |
615 | # CONFIG_PATA_PLATFORM is not set | 651 | # CONFIG_PATA_PLATFORM is not set |
@@ -638,7 +674,7 @@ CONFIG_MD_RAID6_PQ=y | |||
638 | # | 674 | # |
639 | 675 | ||
640 | # | 676 | # |
641 | # See the help texts for more information. | 677 | # The newer stack is recommended. |
642 | # | 678 | # |
643 | # CONFIG_FIREWIRE is not set | 679 | # CONFIG_FIREWIRE is not set |
644 | # CONFIG_IEEE1394 is not set | 680 | # CONFIG_IEEE1394 is not set |
@@ -725,8 +761,11 @@ CONFIG_GIANFAR=y | |||
725 | # CONFIG_NETDEV_10000 is not set | 761 | # CONFIG_NETDEV_10000 is not set |
726 | # CONFIG_TR is not set | 762 | # CONFIG_TR is not set |
727 | CONFIG_WLAN=y | 763 | CONFIG_WLAN=y |
728 | # CONFIG_WLAN_PRE80211 is not set | 764 | # CONFIG_AIRO is not set |
729 | # CONFIG_WLAN_80211 is not set | 765 | # CONFIG_ATMEL is not set |
766 | # CONFIG_PRISM54 is not set | ||
767 | # CONFIG_USB_ZD1201 is not set | ||
768 | # CONFIG_HOSTAP is not set | ||
730 | 769 | ||
731 | # | 770 | # |
732 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 771 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -749,6 +788,7 @@ CONFIG_WLAN=y | |||
749 | # CONFIG_NETCONSOLE is not set | 788 | # CONFIG_NETCONSOLE is not set |
750 | # CONFIG_NETPOLL is not set | 789 | # CONFIG_NETPOLL is not set |
751 | # CONFIG_NET_POLL_CONTROLLER is not set | 790 | # CONFIG_NET_POLL_CONTROLLER is not set |
791 | # CONFIG_VMXNET3 is not set | ||
752 | # CONFIG_ISDN is not set | 792 | # CONFIG_ISDN is not set |
753 | # CONFIG_PHONE is not set | 793 | # CONFIG_PHONE is not set |
754 | 794 | ||
@@ -758,6 +798,7 @@ CONFIG_WLAN=y | |||
758 | CONFIG_INPUT=y | 798 | CONFIG_INPUT=y |
759 | CONFIG_INPUT_FF_MEMLESS=m | 799 | CONFIG_INPUT_FF_MEMLESS=m |
760 | # CONFIG_INPUT_POLLDEV is not set | 800 | # CONFIG_INPUT_POLLDEV is not set |
801 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
761 | 802 | ||
762 | # | 803 | # |
763 | # Userland interfaces | 804 | # Userland interfaces |
@@ -809,6 +850,7 @@ CONFIG_SERIAL_CORE=y | |||
809 | CONFIG_SERIAL_CORE_CONSOLE=y | 850 | CONFIG_SERIAL_CORE_CONSOLE=y |
810 | # CONFIG_SERIAL_JSM is not set | 851 | # CONFIG_SERIAL_JSM is not set |
811 | # CONFIG_SERIAL_OF_PLATFORM is not set | 852 | # CONFIG_SERIAL_OF_PLATFORM is not set |
853 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
812 | CONFIG_UNIX98_PTYS=y | 854 | CONFIG_UNIX98_PTYS=y |
813 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 855 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
814 | CONFIG_LEGACY_PTYS=y | 856 | CONFIG_LEGACY_PTYS=y |
@@ -867,11 +909,6 @@ CONFIG_I2C_MPC=y | |||
867 | # CONFIG_I2C_TINY_USB is not set | 909 | # CONFIG_I2C_TINY_USB is not set |
868 | 910 | ||
869 | # | 911 | # |
870 | # Graphics adapter I2C/DDC channel drivers | ||
871 | # | ||
872 | # CONFIG_I2C_VOODOO3 is not set | ||
873 | |||
874 | # | ||
875 | # Other I2C/SMBus bus drivers | 912 | # Other I2C/SMBus bus drivers |
876 | # | 913 | # |
877 | # CONFIG_I2C_PCA_PLATFORM is not set | 914 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -880,7 +917,6 @@ CONFIG_I2C_MPC=y | |||
880 | # | 917 | # |
881 | # Miscellaneous I2C Chip support | 918 | # Miscellaneous I2C Chip support |
882 | # | 919 | # |
883 | # CONFIG_DS1682 is not set | ||
884 | # CONFIG_SENSORS_TSL2550 is not set | 920 | # CONFIG_SENSORS_TSL2550 is not set |
885 | # CONFIG_I2C_DEBUG_CORE is not set | 921 | # CONFIG_I2C_DEBUG_CORE is not set |
886 | # CONFIG_I2C_DEBUG_ALGO is not set | 922 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -926,6 +962,7 @@ CONFIG_HWMON=y | |||
926 | # CONFIG_SENSORS_GL520SM is not set | 962 | # CONFIG_SENSORS_GL520SM is not set |
927 | # CONFIG_SENSORS_IT87 is not set | 963 | # CONFIG_SENSORS_IT87 is not set |
928 | # CONFIG_SENSORS_LM63 is not set | 964 | # CONFIG_SENSORS_LM63 is not set |
965 | # CONFIG_SENSORS_LM73 is not set | ||
929 | # CONFIG_SENSORS_LM75 is not set | 966 | # CONFIG_SENSORS_LM75 is not set |
930 | # CONFIG_SENSORS_LM77 is not set | 967 | # CONFIG_SENSORS_LM77 is not set |
931 | # CONFIG_SENSORS_LM78 is not set | 968 | # CONFIG_SENSORS_LM78 is not set |
@@ -964,6 +1001,7 @@ CONFIG_HWMON=y | |||
964 | # CONFIG_SENSORS_W83L786NG is not set | 1001 | # CONFIG_SENSORS_W83L786NG is not set |
965 | # CONFIG_SENSORS_W83627HF is not set | 1002 | # CONFIG_SENSORS_W83627HF is not set |
966 | # CONFIG_SENSORS_W83627EHF is not set | 1003 | # CONFIG_SENSORS_W83627EHF is not set |
1004 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
967 | # CONFIG_THERMAL is not set | 1005 | # CONFIG_THERMAL is not set |
968 | CONFIG_WATCHDOG=y | 1006 | CONFIG_WATCHDOG=y |
969 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1007 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -1001,11 +1039,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1001 | # CONFIG_TWL4030_CORE is not set | 1039 | # CONFIG_TWL4030_CORE is not set |
1002 | # CONFIG_MFD_TMIO is not set | 1040 | # CONFIG_MFD_TMIO is not set |
1003 | # CONFIG_PMIC_DA903X is not set | 1041 | # CONFIG_PMIC_DA903X is not set |
1042 | # CONFIG_PMIC_ADP5520 is not set | ||
1004 | # CONFIG_MFD_WM8400 is not set | 1043 | # CONFIG_MFD_WM8400 is not set |
1005 | # CONFIG_MFD_WM831X is not set | 1044 | # CONFIG_MFD_WM831X is not set |
1006 | # CONFIG_MFD_WM8350_I2C is not set | 1045 | # CONFIG_MFD_WM8350_I2C is not set |
1007 | # CONFIG_MFD_PCF50633 is not set | 1046 | # CONFIG_MFD_PCF50633 is not set |
1008 | # CONFIG_AB3100_CORE is not set | 1047 | # CONFIG_AB3100_CORE is not set |
1048 | # CONFIG_MFD_88PM8607 is not set | ||
1009 | # CONFIG_REGULATOR is not set | 1049 | # CONFIG_REGULATOR is not set |
1010 | # CONFIG_MEDIA_SUPPORT is not set | 1050 | # CONFIG_MEDIA_SUPPORT is not set |
1011 | 1051 | ||
@@ -1097,6 +1137,7 @@ CONFIG_USB_MON=y | |||
1097 | CONFIG_USB_EHCI_HCD=y | 1137 | CONFIG_USB_EHCI_HCD=y |
1098 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1138 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
1099 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1139 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1140 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1100 | CONFIG_USB_EHCI_FSL=y | 1141 | CONFIG_USB_EHCI_FSL=y |
1101 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1142 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1102 | # CONFIG_USB_OXU210HP_HCD is not set | 1143 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1385,7 +1426,7 @@ CONFIG_FRAME_WARN=1024 | |||
1385 | # CONFIG_DEBUG_FS is not set | 1426 | # CONFIG_DEBUG_FS is not set |
1386 | # CONFIG_HEADERS_CHECK is not set | 1427 | # CONFIG_HEADERS_CHECK is not set |
1387 | # CONFIG_DEBUG_KERNEL is not set | 1428 | # CONFIG_DEBUG_KERNEL is not set |
1388 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1429 | CONFIG_DEBUG_BUGVERBOSE=y |
1389 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1430 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1390 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1431 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1391 | # CONFIG_LATENCYTOP is not set | 1432 | # CONFIG_LATENCYTOP is not set |
@@ -1412,7 +1453,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1412 | # CONFIG_KEYS is not set | 1453 | # CONFIG_KEYS is not set |
1413 | # CONFIG_SECURITY is not set | 1454 | # CONFIG_SECURITY is not set |
1414 | # CONFIG_SECURITYFS is not set | 1455 | # CONFIG_SECURITYFS is not set |
1415 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1456 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1457 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1458 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1459 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1460 | CONFIG_DEFAULT_SECURITY="" | ||
1416 | CONFIG_XOR_BLOCKS=y | 1461 | CONFIG_XOR_BLOCKS=y |
1417 | CONFIG_ASYNC_CORE=y | 1462 | CONFIG_ASYNC_CORE=y |
1418 | CONFIG_ASYNC_MEMCPY=y | 1463 | CONFIG_ASYNC_MEMCPY=y |
diff --git a/arch/powerpc/configs/83xx/sbc834x_defconfig b/arch/powerpc/configs/83xx/sbc834x_defconfig index 6b399154970f..72c2067137b9 100644 --- a/arch/powerpc/configs/83xx/sbc834x_defconfig +++ b/arch/powerpc/configs/83xx/sbc834x_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:31 2009 | 4 | # Wed Jan 6 09:24:25 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
87 | # | 89 | # |
88 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -172,14 +175,41 @@ CONFIG_LBDAF=y | |||
172 | # IO Schedulers | 175 | # IO Schedulers |
173 | # | 176 | # |
174 | CONFIG_IOSCHED_NOOP=y | 177 | CONFIG_IOSCHED_NOOP=y |
175 | CONFIG_IOSCHED_AS=y | ||
176 | CONFIG_IOSCHED_DEADLINE=y | 178 | CONFIG_IOSCHED_DEADLINE=y |
177 | CONFIG_IOSCHED_CFQ=y | 179 | CONFIG_IOSCHED_CFQ=y |
178 | CONFIG_DEFAULT_AS=y | ||
179 | # CONFIG_DEFAULT_DEADLINE is not set | 180 | # CONFIG_DEFAULT_DEADLINE is not set |
180 | # CONFIG_DEFAULT_CFQ is not set | 181 | CONFIG_DEFAULT_CFQ=y |
181 | # CONFIG_DEFAULT_NOOP is not set | 182 | # CONFIG_DEFAULT_NOOP is not set |
182 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 183 | CONFIG_DEFAULT_IOSCHED="cfq" |
184 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
185 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
186 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
190 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
191 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
192 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
193 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
194 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
195 | # CONFIG_INLINE_READ_LOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
199 | CONFIG_INLINE_READ_UNLOCK=y | ||
200 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
201 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
202 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
203 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
204 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
208 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
209 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
210 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
211 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
212 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
183 | # CONFIG_FREEZER is not set | 213 | # CONFIG_FREEZER is not set |
184 | 214 | ||
185 | # | 215 | # |
@@ -257,6 +287,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
257 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 287 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
258 | # CONFIG_KEXEC is not set | 288 | # CONFIG_KEXEC is not set |
259 | # CONFIG_CRASH_DUMP is not set | 289 | # CONFIG_CRASH_DUMP is not set |
290 | CONFIG_SPARSE_IRQ=y | ||
260 | CONFIG_MAX_ACTIVE_REGIONS=32 | 291 | CONFIG_MAX_ACTIVE_REGIONS=32 |
261 | CONFIG_ARCH_FLATMEM_ENABLE=y | 292 | CONFIG_ARCH_FLATMEM_ENABLE=y |
262 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 293 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -273,8 +304,6 @@ CONFIG_MIGRATION=y | |||
273 | CONFIG_ZONE_DMA_FLAG=1 | 304 | CONFIG_ZONE_DMA_FLAG=1 |
274 | CONFIG_BOUNCE=y | 305 | CONFIG_BOUNCE=y |
275 | CONFIG_VIRT_TO_BUS=y | 306 | CONFIG_VIRT_TO_BUS=y |
276 | CONFIG_HAVE_MLOCK=y | ||
277 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
278 | # CONFIG_KSM is not set | 307 | # CONFIG_KSM is not set |
279 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 308 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
280 | CONFIG_PPC_4K_PAGES=y | 309 | CONFIG_PPC_4K_PAGES=y |
@@ -401,9 +430,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
401 | # CONFIG_AF_RXRPC is not set | 430 | # CONFIG_AF_RXRPC is not set |
402 | CONFIG_WIRELESS=y | 431 | CONFIG_WIRELESS=y |
403 | # CONFIG_CFG80211 is not set | 432 | # CONFIG_CFG80211 is not set |
404 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
405 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
406 | # CONFIG_WIRELESS_EXT is not set | ||
407 | # CONFIG_LIB80211 is not set | 433 | # CONFIG_LIB80211 is not set |
408 | 434 | ||
409 | # | 435 | # |
@@ -524,6 +550,10 @@ CONFIG_BLK_DEV=y | |||
524 | # CONFIG_BLK_DEV_COW_COMMON is not set | 550 | # CONFIG_BLK_DEV_COW_COMMON is not set |
525 | CONFIG_BLK_DEV_LOOP=y | 551 | CONFIG_BLK_DEV_LOOP=y |
526 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 552 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
553 | |||
554 | # | ||
555 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
556 | # | ||
527 | # CONFIG_BLK_DEV_NBD is not set | 557 | # CONFIG_BLK_DEV_NBD is not set |
528 | # CONFIG_BLK_DEV_SX8 is not set | 558 | # CONFIG_BLK_DEV_SX8 is not set |
529 | # CONFIG_BLK_DEV_UB is not set | 559 | # CONFIG_BLK_DEV_UB is not set |
@@ -535,6 +565,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
535 | # CONFIG_ATA_OVER_ETH is not set | 565 | # CONFIG_ATA_OVER_ETH is not set |
536 | # CONFIG_BLK_DEV_HD is not set | 566 | # CONFIG_BLK_DEV_HD is not set |
537 | CONFIG_MISC_DEVICES=y | 567 | CONFIG_MISC_DEVICES=y |
568 | # CONFIG_AD525X_DPOT is not set | ||
538 | # CONFIG_PHANTOM is not set | 569 | # CONFIG_PHANTOM is not set |
539 | # CONFIG_SGI_IOC4 is not set | 570 | # CONFIG_SGI_IOC4 is not set |
540 | # CONFIG_TIFM_CORE is not set | 571 | # CONFIG_TIFM_CORE is not set |
@@ -542,6 +573,7 @@ CONFIG_MISC_DEVICES=y | |||
542 | # CONFIG_ENCLOSURE_SERVICES is not set | 573 | # CONFIG_ENCLOSURE_SERVICES is not set |
543 | # CONFIG_HP_ILO is not set | 574 | # CONFIG_HP_ILO is not set |
544 | # CONFIG_ISL29003 is not set | 575 | # CONFIG_ISL29003 is not set |
576 | # CONFIG_DS1682 is not set | ||
545 | # CONFIG_C2PORT is not set | 577 | # CONFIG_C2PORT is not set |
546 | 578 | ||
547 | # | 579 | # |
@@ -604,7 +636,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
604 | # | 636 | # |
605 | 637 | ||
606 | # | 638 | # |
607 | # See the help texts for more information. | 639 | # The newer stack is recommended. |
608 | # | 640 | # |
609 | # CONFIG_FIREWIRE is not set | 641 | # CONFIG_FIREWIRE is not set |
610 | # CONFIG_IEEE1394 is not set | 642 | # CONFIG_IEEE1394 is not set |
@@ -691,8 +723,11 @@ CONFIG_GIANFAR=y | |||
691 | # CONFIG_NETDEV_10000 is not set | 723 | # CONFIG_NETDEV_10000 is not set |
692 | # CONFIG_TR is not set | 724 | # CONFIG_TR is not set |
693 | CONFIG_WLAN=y | 725 | CONFIG_WLAN=y |
694 | # CONFIG_WLAN_PRE80211 is not set | 726 | # CONFIG_AIRO is not set |
695 | # CONFIG_WLAN_80211 is not set | 727 | # CONFIG_ATMEL is not set |
728 | # CONFIG_PRISM54 is not set | ||
729 | # CONFIG_USB_ZD1201 is not set | ||
730 | # CONFIG_HOSTAP is not set | ||
696 | 731 | ||
697 | # | 732 | # |
698 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 733 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -715,6 +750,7 @@ CONFIG_WLAN=y | |||
715 | # CONFIG_NETCONSOLE is not set | 750 | # CONFIG_NETCONSOLE is not set |
716 | # CONFIG_NETPOLL is not set | 751 | # CONFIG_NETPOLL is not set |
717 | # CONFIG_NET_POLL_CONTROLLER is not set | 752 | # CONFIG_NET_POLL_CONTROLLER is not set |
753 | # CONFIG_VMXNET3 is not set | ||
718 | # CONFIG_ISDN is not set | 754 | # CONFIG_ISDN is not set |
719 | # CONFIG_PHONE is not set | 755 | # CONFIG_PHONE is not set |
720 | 756 | ||
@@ -724,6 +760,7 @@ CONFIG_WLAN=y | |||
724 | CONFIG_INPUT=y | 760 | CONFIG_INPUT=y |
725 | # CONFIG_INPUT_FF_MEMLESS is not set | 761 | # CONFIG_INPUT_FF_MEMLESS is not set |
726 | # CONFIG_INPUT_POLLDEV is not set | 762 | # CONFIG_INPUT_POLLDEV is not set |
763 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
727 | 764 | ||
728 | # | 765 | # |
729 | # Userland interfaces | 766 | # Userland interfaces |
@@ -775,6 +812,7 @@ CONFIG_SERIAL_CORE=y | |||
775 | CONFIG_SERIAL_CORE_CONSOLE=y | 812 | CONFIG_SERIAL_CORE_CONSOLE=y |
776 | # CONFIG_SERIAL_JSM is not set | 813 | # CONFIG_SERIAL_JSM is not set |
777 | # CONFIG_SERIAL_OF_PLATFORM is not set | 814 | # CONFIG_SERIAL_OF_PLATFORM is not set |
815 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
778 | CONFIG_UNIX98_PTYS=y | 816 | CONFIG_UNIX98_PTYS=y |
779 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 817 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
780 | CONFIG_LEGACY_PTYS=y | 818 | CONFIG_LEGACY_PTYS=y |
@@ -833,11 +871,6 @@ CONFIG_I2C_MPC=y | |||
833 | # CONFIG_I2C_TINY_USB is not set | 871 | # CONFIG_I2C_TINY_USB is not set |
834 | 872 | ||
835 | # | 873 | # |
836 | # Graphics adapter I2C/DDC channel drivers | ||
837 | # | ||
838 | # CONFIG_I2C_VOODOO3 is not set | ||
839 | |||
840 | # | ||
841 | # Other I2C/SMBus bus drivers | 874 | # Other I2C/SMBus bus drivers |
842 | # | 875 | # |
843 | # CONFIG_I2C_PCA_PLATFORM is not set | 876 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -846,7 +879,6 @@ CONFIG_I2C_MPC=y | |||
846 | # | 879 | # |
847 | # Miscellaneous I2C Chip support | 880 | # Miscellaneous I2C Chip support |
848 | # | 881 | # |
849 | # CONFIG_DS1682 is not set | ||
850 | # CONFIG_SENSORS_TSL2550 is not set | 882 | # CONFIG_SENSORS_TSL2550 is not set |
851 | # CONFIG_I2C_DEBUG_CORE is not set | 883 | # CONFIG_I2C_DEBUG_CORE is not set |
852 | # CONFIG_I2C_DEBUG_ALGO is not set | 884 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -892,6 +924,7 @@ CONFIG_HWMON=y | |||
892 | # CONFIG_SENSORS_GL520SM is not set | 924 | # CONFIG_SENSORS_GL520SM is not set |
893 | # CONFIG_SENSORS_IT87 is not set | 925 | # CONFIG_SENSORS_IT87 is not set |
894 | # CONFIG_SENSORS_LM63 is not set | 926 | # CONFIG_SENSORS_LM63 is not set |
927 | # CONFIG_SENSORS_LM73 is not set | ||
895 | # CONFIG_SENSORS_LM75 is not set | 928 | # CONFIG_SENSORS_LM75 is not set |
896 | # CONFIG_SENSORS_LM77 is not set | 929 | # CONFIG_SENSORS_LM77 is not set |
897 | # CONFIG_SENSORS_LM78 is not set | 930 | # CONFIG_SENSORS_LM78 is not set |
@@ -930,6 +963,7 @@ CONFIG_HWMON=y | |||
930 | # CONFIG_SENSORS_W83L786NG is not set | 963 | # CONFIG_SENSORS_W83L786NG is not set |
931 | # CONFIG_SENSORS_W83627HF is not set | 964 | # CONFIG_SENSORS_W83627HF is not set |
932 | # CONFIG_SENSORS_W83627EHF is not set | 965 | # CONFIG_SENSORS_W83627EHF is not set |
966 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
933 | # CONFIG_THERMAL is not set | 967 | # CONFIG_THERMAL is not set |
934 | CONFIG_WATCHDOG=y | 968 | CONFIG_WATCHDOG=y |
935 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 969 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -967,11 +1001,13 @@ CONFIG_SSB_POSSIBLE=y | |||
967 | # CONFIG_TWL4030_CORE is not set | 1001 | # CONFIG_TWL4030_CORE is not set |
968 | # CONFIG_MFD_TMIO is not set | 1002 | # CONFIG_MFD_TMIO is not set |
969 | # CONFIG_PMIC_DA903X is not set | 1003 | # CONFIG_PMIC_DA903X is not set |
1004 | # CONFIG_PMIC_ADP5520 is not set | ||
970 | # CONFIG_MFD_WM8400 is not set | 1005 | # CONFIG_MFD_WM8400 is not set |
971 | # CONFIG_MFD_WM831X is not set | 1006 | # CONFIG_MFD_WM831X is not set |
972 | # CONFIG_MFD_WM8350_I2C is not set | 1007 | # CONFIG_MFD_WM8350_I2C is not set |
973 | # CONFIG_MFD_PCF50633 is not set | 1008 | # CONFIG_MFD_PCF50633 is not set |
974 | # CONFIG_AB3100_CORE is not set | 1009 | # CONFIG_AB3100_CORE is not set |
1010 | # CONFIG_MFD_88PM8607 is not set | ||
975 | # CONFIG_REGULATOR is not set | 1011 | # CONFIG_REGULATOR is not set |
976 | # CONFIG_MEDIA_SUPPORT is not set | 1012 | # CONFIG_MEDIA_SUPPORT is not set |
977 | 1013 | ||
@@ -1039,6 +1075,7 @@ CONFIG_USB_MON=y | |||
1039 | CONFIG_USB_EHCI_HCD=y | 1075 | CONFIG_USB_EHCI_HCD=y |
1040 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1076 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
1041 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1077 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1078 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1042 | CONFIG_USB_EHCI_FSL=y | 1079 | CONFIG_USB_EHCI_FSL=y |
1043 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1080 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1044 | # CONFIG_USB_OXU210HP_HCD is not set | 1081 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1321,7 +1358,7 @@ CONFIG_FRAME_WARN=1024 | |||
1321 | # CONFIG_DEBUG_FS is not set | 1358 | # CONFIG_DEBUG_FS is not set |
1322 | # CONFIG_HEADERS_CHECK is not set | 1359 | # CONFIG_HEADERS_CHECK is not set |
1323 | # CONFIG_DEBUG_KERNEL is not set | 1360 | # CONFIG_DEBUG_KERNEL is not set |
1324 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1361 | CONFIG_DEBUG_BUGVERBOSE=y |
1325 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1362 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1326 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1363 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1327 | # CONFIG_LATENCYTOP is not set | 1364 | # CONFIG_LATENCYTOP is not set |
@@ -1348,7 +1385,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1348 | # CONFIG_KEYS is not set | 1385 | # CONFIG_KEYS is not set |
1349 | # CONFIG_SECURITY is not set | 1386 | # CONFIG_SECURITY is not set |
1350 | # CONFIG_SECURITYFS is not set | 1387 | # CONFIG_SECURITYFS is not set |
1351 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1388 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1389 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1390 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1391 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1392 | CONFIG_DEFAULT_SECURITY="" | ||
1352 | CONFIG_CRYPTO=y | 1393 | CONFIG_CRYPTO=y |
1353 | 1394 | ||
1354 | # | 1395 | # |
diff --git a/arch/powerpc/configs/85xx/ksi8560_defconfig b/arch/powerpc/configs/85xx/ksi8560_defconfig index a5bde8da462c..21dad38b156f 100644 --- a/arch/powerpc/configs/85xx/ksi8560_defconfig +++ b/arch/powerpc/configs/85xx/ksi8560_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:32 2009 | 4 | # Wed Jan 6 09:24:26 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y | |||
62 | CONFIG_GENERIC_BUG=y | 63 | CONFIG_GENERIC_BUG=y |
63 | CONFIG_DTC=y | 64 | CONFIG_DTC=y |
64 | CONFIG_DEFAULT_UIMAGE=y | 65 | CONFIG_DEFAULT_UIMAGE=y |
66 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
67 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
65 | # CONFIG_PPC_DCR_NATIVE is not set | 68 | # CONFIG_PPC_DCR_NATIVE is not set |
66 | # CONFIG_PPC_DCR_MMIO is not set | 69 | # CONFIG_PPC_DCR_MMIO is not set |
67 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 70 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -89,6 +92,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
89 | # | 92 | # |
90 | CONFIG_TREE_RCU=y | 93 | CONFIG_TREE_RCU=y |
91 | # CONFIG_TREE_PREEMPT_RCU is not set | 94 | # CONFIG_TREE_PREEMPT_RCU is not set |
95 | # CONFIG_TINY_RCU is not set | ||
92 | # CONFIG_RCU_TRACE is not set | 96 | # CONFIG_RCU_TRACE is not set |
93 | CONFIG_RCU_FANOUT=32 | 97 | CONFIG_RCU_FANOUT=32 |
94 | # CONFIG_RCU_FANOUT_EXACT is not set | 98 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -169,14 +173,41 @@ CONFIG_LBDAF=y | |||
169 | # IO Schedulers | 173 | # IO Schedulers |
170 | # | 174 | # |
171 | CONFIG_IOSCHED_NOOP=y | 175 | CONFIG_IOSCHED_NOOP=y |
172 | CONFIG_IOSCHED_AS=y | ||
173 | CONFIG_IOSCHED_DEADLINE=y | 176 | CONFIG_IOSCHED_DEADLINE=y |
174 | CONFIG_IOSCHED_CFQ=y | 177 | CONFIG_IOSCHED_CFQ=y |
175 | CONFIG_DEFAULT_AS=y | ||
176 | # CONFIG_DEFAULT_DEADLINE is not set | 178 | # CONFIG_DEFAULT_DEADLINE is not set |
177 | # CONFIG_DEFAULT_CFQ is not set | 179 | CONFIG_DEFAULT_CFQ=y |
178 | # CONFIG_DEFAULT_NOOP is not set | 180 | # CONFIG_DEFAULT_NOOP is not set |
179 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 181 | CONFIG_DEFAULT_IOSCHED="cfq" |
182 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
183 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
184 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
185 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
186 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
188 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
189 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
190 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
191 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
192 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
193 | # CONFIG_INLINE_READ_LOCK is not set | ||
194 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
195 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
196 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
197 | CONFIG_INLINE_READ_UNLOCK=y | ||
198 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
199 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
200 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
201 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
202 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
203 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
204 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
206 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
207 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
208 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
209 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
210 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
180 | # CONFIG_FREEZER is not set | 211 | # CONFIG_FREEZER is not set |
181 | 212 | ||
182 | # | 213 | # |
@@ -185,7 +216,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
185 | # CONFIG_PPC_CELL is not set | 216 | # CONFIG_PPC_CELL is not set |
186 | # CONFIG_PPC_CELL_NATIVE is not set | 217 | # CONFIG_PPC_CELL_NATIVE is not set |
187 | # CONFIG_PQ2ADS is not set | 218 | # CONFIG_PQ2ADS is not set |
188 | CONFIG_MPC85xx=y | 219 | CONFIG_FSL_SOC_BOOKE=y |
189 | # CONFIG_MPC8540_ADS is not set | 220 | # CONFIG_MPC8540_ADS is not set |
190 | # CONFIG_MPC8560_ADS is not set | 221 | # CONFIG_MPC8560_ADS is not set |
191 | # CONFIG_MPC85xx_CDS is not set | 222 | # CONFIG_MPC85xx_CDS is not set |
@@ -204,6 +235,7 @@ CONFIG_KSI8560=y | |||
204 | # CONFIG_TQM8560 is not set | 235 | # CONFIG_TQM8560 is not set |
205 | # CONFIG_SBC8548 is not set | 236 | # CONFIG_SBC8548 is not set |
206 | # CONFIG_SBC8560 is not set | 237 | # CONFIG_SBC8560 is not set |
238 | # CONFIG_P4080_DS is not set | ||
207 | # CONFIG_IPIC is not set | 239 | # CONFIG_IPIC is not set |
208 | CONFIG_MPIC=y | 240 | CONFIG_MPIC=y |
209 | # CONFIG_MPIC_WEIRD is not set | 241 | # CONFIG_MPIC_WEIRD is not set |
@@ -248,6 +280,7 @@ CONFIG_MATH_EMULATION=y | |||
248 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 280 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
249 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 281 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
250 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 282 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
283 | CONFIG_SPARSE_IRQ=y | ||
251 | CONFIG_MAX_ACTIVE_REGIONS=32 | 284 | CONFIG_MAX_ACTIVE_REGIONS=32 |
252 | CONFIG_ARCH_FLATMEM_ENABLE=y | 285 | CONFIG_ARCH_FLATMEM_ENABLE=y |
253 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 286 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -264,8 +297,6 @@ CONFIG_MIGRATION=y | |||
264 | CONFIG_ZONE_DMA_FLAG=1 | 297 | CONFIG_ZONE_DMA_FLAG=1 |
265 | CONFIG_BOUNCE=y | 298 | CONFIG_BOUNCE=y |
266 | CONFIG_VIRT_TO_BUS=y | 299 | CONFIG_VIRT_TO_BUS=y |
267 | CONFIG_HAVE_MLOCK=y | ||
268 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
269 | # CONFIG_KSM is not set | 300 | # CONFIG_KSM is not set |
270 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 301 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
271 | CONFIG_PPC_4K_PAGES=y | 302 | CONFIG_PPC_4K_PAGES=y |
@@ -385,9 +416,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
385 | # CONFIG_AF_RXRPC is not set | 416 | # CONFIG_AF_RXRPC is not set |
386 | CONFIG_WIRELESS=y | 417 | CONFIG_WIRELESS=y |
387 | # CONFIG_CFG80211 is not set | 418 | # CONFIG_CFG80211 is not set |
388 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
389 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
390 | # CONFIG_WIRELESS_EXT is not set | ||
391 | # CONFIG_LIB80211 is not set | 419 | # CONFIG_LIB80211 is not set |
392 | 420 | ||
393 | # | 421 | # |
@@ -503,6 +531,10 @@ CONFIG_BLK_DEV=y | |||
503 | # CONFIG_BLK_DEV_COW_COMMON is not set | 531 | # CONFIG_BLK_DEV_COW_COMMON is not set |
504 | CONFIG_BLK_DEV_LOOP=y | 532 | CONFIG_BLK_DEV_LOOP=y |
505 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 533 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
534 | |||
535 | # | ||
536 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
537 | # | ||
506 | # CONFIG_BLK_DEV_NBD is not set | 538 | # CONFIG_BLK_DEV_NBD is not set |
507 | CONFIG_BLK_DEV_RAM=y | 539 | CONFIG_BLK_DEV_RAM=y |
508 | CONFIG_BLK_DEV_RAM_COUNT=16 | 540 | CONFIG_BLK_DEV_RAM_COUNT=16 |
@@ -603,8 +635,7 @@ CONFIG_GIANFAR=y | |||
603 | # CONFIG_MV643XX_ETH is not set | 635 | # CONFIG_MV643XX_ETH is not set |
604 | CONFIG_NETDEV_10000=y | 636 | CONFIG_NETDEV_10000=y |
605 | CONFIG_WLAN=y | 637 | CONFIG_WLAN=y |
606 | # CONFIG_WLAN_PRE80211 is not set | 638 | # CONFIG_HOSTAP is not set |
607 | # CONFIG_WLAN_80211 is not set | ||
608 | 639 | ||
609 | # | 640 | # |
610 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 641 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -624,6 +655,7 @@ CONFIG_WLAN=y | |||
624 | CONFIG_INPUT=y | 655 | CONFIG_INPUT=y |
625 | # CONFIG_INPUT_FF_MEMLESS is not set | 656 | # CONFIG_INPUT_FF_MEMLESS is not set |
626 | # CONFIG_INPUT_POLLDEV is not set | 657 | # CONFIG_INPUT_POLLDEV is not set |
658 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
627 | 659 | ||
628 | # | 660 | # |
629 | # Userland interfaces | 661 | # Userland interfaces |
@@ -669,6 +701,7 @@ CONFIG_SERIAL_CORE=y | |||
669 | CONFIG_SERIAL_CORE_CONSOLE=y | 701 | CONFIG_SERIAL_CORE_CONSOLE=y |
670 | CONFIG_SERIAL_CPM=y | 702 | CONFIG_SERIAL_CPM=y |
671 | CONFIG_SERIAL_CPM_CONSOLE=y | 703 | CONFIG_SERIAL_CPM_CONSOLE=y |
704 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
672 | CONFIG_UNIX98_PTYS=y | 705 | CONFIG_UNIX98_PTYS=y |
673 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 706 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
674 | CONFIG_LEGACY_PTYS=y | 707 | CONFIG_LEGACY_PTYS=y |
@@ -1051,7 +1084,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1051 | # CONFIG_KEYS is not set | 1084 | # CONFIG_KEYS is not set |
1052 | # CONFIG_SECURITY is not set | 1085 | # CONFIG_SECURITY is not set |
1053 | # CONFIG_SECURITYFS is not set | 1086 | # CONFIG_SECURITYFS is not set |
1054 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1087 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1088 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1089 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1090 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1091 | CONFIG_DEFAULT_SECURITY="" | ||
1055 | CONFIG_CRYPTO=y | 1092 | CONFIG_CRYPTO=y |
1056 | 1093 | ||
1057 | # | 1094 | # |
diff --git a/arch/powerpc/configs/85xx/mpc8540_ads_defconfig b/arch/powerpc/configs/85xx/mpc8540_ads_defconfig index c10e26f8763f..5db54cd274c6 100644 --- a/arch/powerpc/configs/85xx/mpc8540_ads_defconfig +++ b/arch/powerpc/configs/85xx/mpc8540_ads_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:33 2009 | 4 | # Wed Jan 6 09:24:27 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y | |||
61 | CONFIG_GENERIC_BUG=y | 62 | CONFIG_GENERIC_BUG=y |
62 | CONFIG_DTC=y | 63 | CONFIG_DTC=y |
63 | CONFIG_DEFAULT_UIMAGE=y | 64 | CONFIG_DEFAULT_UIMAGE=y |
65 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
66 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
64 | # CONFIG_PPC_DCR_NATIVE is not set | 67 | # CONFIG_PPC_DCR_NATIVE is not set |
65 | # CONFIG_PPC_DCR_MMIO is not set | 68 | # CONFIG_PPC_DCR_MMIO is not set |
66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 69 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
88 | # | 91 | # |
89 | CONFIG_TREE_RCU=y | 92 | CONFIG_TREE_RCU=y |
90 | # CONFIG_TREE_PREEMPT_RCU is not set | 93 | # CONFIG_TREE_PREEMPT_RCU is not set |
94 | # CONFIG_TINY_RCU is not set | ||
91 | # CONFIG_RCU_TRACE is not set | 95 | # CONFIG_RCU_TRACE is not set |
92 | CONFIG_RCU_FANOUT=32 | 96 | CONFIG_RCU_FANOUT=32 |
93 | # CONFIG_RCU_FANOUT_EXACT is not set | 97 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -170,14 +174,41 @@ CONFIG_LBDAF=y | |||
170 | # IO Schedulers | 174 | # IO Schedulers |
171 | # | 175 | # |
172 | CONFIG_IOSCHED_NOOP=y | 176 | CONFIG_IOSCHED_NOOP=y |
173 | CONFIG_IOSCHED_AS=y | ||
174 | CONFIG_IOSCHED_DEADLINE=y | 177 | CONFIG_IOSCHED_DEADLINE=y |
175 | CONFIG_IOSCHED_CFQ=y | 178 | CONFIG_IOSCHED_CFQ=y |
176 | CONFIG_DEFAULT_AS=y | ||
177 | # CONFIG_DEFAULT_DEADLINE is not set | 179 | # CONFIG_DEFAULT_DEADLINE is not set |
178 | # CONFIG_DEFAULT_CFQ is not set | 180 | CONFIG_DEFAULT_CFQ=y |
179 | # CONFIG_DEFAULT_NOOP is not set | 181 | # CONFIG_DEFAULT_NOOP is not set |
180 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 182 | CONFIG_DEFAULT_IOSCHED="cfq" |
183 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
184 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
185 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
186 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
189 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
190 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
191 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
192 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
193 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
194 | # CONFIG_INLINE_READ_LOCK is not set | ||
195 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
196 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
198 | CONFIG_INLINE_READ_UNLOCK=y | ||
199 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
200 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
201 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
202 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
203 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
204 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
207 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
208 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
209 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
210 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
211 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
181 | # CONFIG_FREEZER is not set | 212 | # CONFIG_FREEZER is not set |
182 | 213 | ||
183 | # | 214 | # |
@@ -186,7 +217,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
186 | # CONFIG_PPC_CELL is not set | 217 | # CONFIG_PPC_CELL is not set |
187 | # CONFIG_PPC_CELL_NATIVE is not set | 218 | # CONFIG_PPC_CELL_NATIVE is not set |
188 | # CONFIG_PQ2ADS is not set | 219 | # CONFIG_PQ2ADS is not set |
189 | CONFIG_MPC85xx=y | 220 | CONFIG_FSL_SOC_BOOKE=y |
190 | CONFIG_MPC8540_ADS=y | 221 | CONFIG_MPC8540_ADS=y |
191 | # CONFIG_MPC8560_ADS is not set | 222 | # CONFIG_MPC8560_ADS is not set |
192 | # CONFIG_MPC85xx_CDS is not set | 223 | # CONFIG_MPC85xx_CDS is not set |
@@ -205,6 +236,7 @@ CONFIG_MPC8540_ADS=y | |||
205 | # CONFIG_TQM8560 is not set | 236 | # CONFIG_TQM8560 is not set |
206 | # CONFIG_SBC8548 is not set | 237 | # CONFIG_SBC8548 is not set |
207 | # CONFIG_SBC8560 is not set | 238 | # CONFIG_SBC8560 is not set |
239 | # CONFIG_P4080_DS is not set | ||
208 | # CONFIG_IPIC is not set | 240 | # CONFIG_IPIC is not set |
209 | CONFIG_MPIC=y | 241 | CONFIG_MPIC=y |
210 | # CONFIG_MPIC_WEIRD is not set | 242 | # CONFIG_MPIC_WEIRD is not set |
@@ -249,6 +281,7 @@ CONFIG_MATH_EMULATION=y | |||
249 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 281 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
250 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 282 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
251 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 283 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
284 | CONFIG_SPARSE_IRQ=y | ||
252 | CONFIG_MAX_ACTIVE_REGIONS=32 | 285 | CONFIG_MAX_ACTIVE_REGIONS=32 |
253 | CONFIG_ARCH_FLATMEM_ENABLE=y | 286 | CONFIG_ARCH_FLATMEM_ENABLE=y |
254 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 287 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -265,8 +298,6 @@ CONFIG_MIGRATION=y | |||
265 | CONFIG_ZONE_DMA_FLAG=1 | 298 | CONFIG_ZONE_DMA_FLAG=1 |
266 | CONFIG_BOUNCE=y | 299 | CONFIG_BOUNCE=y |
267 | CONFIG_VIRT_TO_BUS=y | 300 | CONFIG_VIRT_TO_BUS=y |
268 | CONFIG_HAVE_MLOCK=y | ||
269 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
270 | # CONFIG_KSM is not set | 301 | # CONFIG_KSM is not set |
271 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 302 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
272 | CONFIG_PPC_4K_PAGES=y | 303 | CONFIG_PPC_4K_PAGES=y |
@@ -386,9 +417,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
386 | # CONFIG_AF_RXRPC is not set | 417 | # CONFIG_AF_RXRPC is not set |
387 | CONFIG_WIRELESS=y | 418 | CONFIG_WIRELESS=y |
388 | # CONFIG_CFG80211 is not set | 419 | # CONFIG_CFG80211 is not set |
389 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
390 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
391 | # CONFIG_WIRELESS_EXT is not set | ||
392 | # CONFIG_LIB80211 is not set | 420 | # CONFIG_LIB80211 is not set |
393 | 421 | ||
394 | # | 422 | # |
@@ -423,6 +451,10 @@ CONFIG_BLK_DEV=y | |||
423 | # CONFIG_BLK_DEV_COW_COMMON is not set | 451 | # CONFIG_BLK_DEV_COW_COMMON is not set |
424 | CONFIG_BLK_DEV_LOOP=y | 452 | CONFIG_BLK_DEV_LOOP=y |
425 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 453 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
454 | |||
455 | # | ||
456 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
457 | # | ||
426 | # CONFIG_BLK_DEV_NBD is not set | 458 | # CONFIG_BLK_DEV_NBD is not set |
427 | CONFIG_BLK_DEV_RAM=y | 459 | CONFIG_BLK_DEV_RAM=y |
428 | CONFIG_BLK_DEV_RAM_COUNT=16 | 460 | CONFIG_BLK_DEV_RAM_COUNT=16 |
@@ -500,8 +532,7 @@ CONFIG_GIANFAR=y | |||
500 | # CONFIG_MV643XX_ETH is not set | 532 | # CONFIG_MV643XX_ETH is not set |
501 | CONFIG_NETDEV_10000=y | 533 | CONFIG_NETDEV_10000=y |
502 | CONFIG_WLAN=y | 534 | CONFIG_WLAN=y |
503 | # CONFIG_WLAN_PRE80211 is not set | 535 | # CONFIG_HOSTAP is not set |
504 | # CONFIG_WLAN_80211 is not set | ||
505 | 536 | ||
506 | # | 537 | # |
507 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 538 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -521,6 +552,7 @@ CONFIG_WLAN=y | |||
521 | CONFIG_INPUT=y | 552 | CONFIG_INPUT=y |
522 | # CONFIG_INPUT_FF_MEMLESS is not set | 553 | # CONFIG_INPUT_FF_MEMLESS is not set |
523 | # CONFIG_INPUT_POLLDEV is not set | 554 | # CONFIG_INPUT_POLLDEV is not set |
555 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
524 | 556 | ||
525 | # | 557 | # |
526 | # Userland interfaces | 558 | # Userland interfaces |
@@ -570,6 +602,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y | |||
570 | CONFIG_SERIAL_CORE=y | 602 | CONFIG_SERIAL_CORE=y |
571 | CONFIG_SERIAL_CORE_CONSOLE=y | 603 | CONFIG_SERIAL_CORE_CONSOLE=y |
572 | # CONFIG_SERIAL_OF_PLATFORM is not set | 604 | # CONFIG_SERIAL_OF_PLATFORM is not set |
605 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
573 | CONFIG_UNIX98_PTYS=y | 606 | CONFIG_UNIX98_PTYS=y |
574 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 607 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
575 | CONFIG_LEGACY_PTYS=y | 608 | CONFIG_LEGACY_PTYS=y |
@@ -920,7 +953,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
920 | # CONFIG_KEYS is not set | 953 | # CONFIG_KEYS is not set |
921 | # CONFIG_SECURITY is not set | 954 | # CONFIG_SECURITY is not set |
922 | # CONFIG_SECURITYFS is not set | 955 | # CONFIG_SECURITYFS is not set |
923 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 956 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
957 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
958 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
959 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
960 | CONFIG_DEFAULT_SECURITY="" | ||
924 | CONFIG_CRYPTO=y | 961 | CONFIG_CRYPTO=y |
925 | 962 | ||
926 | # | 963 | # |
diff --git a/arch/powerpc/configs/85xx/mpc8560_ads_defconfig b/arch/powerpc/configs/85xx/mpc8560_ads_defconfig index 8d9f0a4b5205..76c7018c5cd2 100644 --- a/arch/powerpc/configs/85xx/mpc8560_ads_defconfig +++ b/arch/powerpc/configs/85xx/mpc8560_ads_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:34 2009 | 4 | # Wed Jan 6 09:24:28 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y | |||
62 | CONFIG_GENERIC_BUG=y | 63 | CONFIG_GENERIC_BUG=y |
63 | CONFIG_DTC=y | 64 | CONFIG_DTC=y |
64 | CONFIG_DEFAULT_UIMAGE=y | 65 | CONFIG_DEFAULT_UIMAGE=y |
66 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
67 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
65 | # CONFIG_PPC_DCR_NATIVE is not set | 68 | # CONFIG_PPC_DCR_NATIVE is not set |
66 | # CONFIG_PPC_DCR_MMIO is not set | 69 | # CONFIG_PPC_DCR_MMIO is not set |
67 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 70 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -89,6 +92,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
89 | # | 92 | # |
90 | CONFIG_TREE_RCU=y | 93 | CONFIG_TREE_RCU=y |
91 | # CONFIG_TREE_PREEMPT_RCU is not set | 94 | # CONFIG_TREE_PREEMPT_RCU is not set |
95 | # CONFIG_TINY_RCU is not set | ||
92 | # CONFIG_RCU_TRACE is not set | 96 | # CONFIG_RCU_TRACE is not set |
93 | CONFIG_RCU_FANOUT=32 | 97 | CONFIG_RCU_FANOUT=32 |
94 | # CONFIG_RCU_FANOUT_EXACT is not set | 98 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -173,14 +177,41 @@ CONFIG_LBDAF=y | |||
173 | # IO Schedulers | 177 | # IO Schedulers |
174 | # | 178 | # |
175 | CONFIG_IOSCHED_NOOP=y | 179 | CONFIG_IOSCHED_NOOP=y |
176 | CONFIG_IOSCHED_AS=y | ||
177 | CONFIG_IOSCHED_DEADLINE=y | 180 | CONFIG_IOSCHED_DEADLINE=y |
178 | CONFIG_IOSCHED_CFQ=y | 181 | CONFIG_IOSCHED_CFQ=y |
179 | CONFIG_DEFAULT_AS=y | ||
180 | # CONFIG_DEFAULT_DEADLINE is not set | 182 | # CONFIG_DEFAULT_DEADLINE is not set |
181 | # CONFIG_DEFAULT_CFQ is not set | 183 | CONFIG_DEFAULT_CFQ=y |
182 | # CONFIG_DEFAULT_NOOP is not set | 184 | # CONFIG_DEFAULT_NOOP is not set |
183 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 185 | CONFIG_DEFAULT_IOSCHED="cfq" |
186 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
187 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
191 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
192 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
193 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
194 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
195 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
196 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
197 | # CONFIG_INLINE_READ_LOCK is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
200 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
201 | CONFIG_INLINE_READ_UNLOCK=y | ||
202 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
203 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
204 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
205 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
209 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
210 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
211 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
212 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
213 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
214 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
184 | # CONFIG_FREEZER is not set | 215 | # CONFIG_FREEZER is not set |
185 | 216 | ||
186 | # | 217 | # |
@@ -189,7 +220,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
189 | # CONFIG_PPC_CELL is not set | 220 | # CONFIG_PPC_CELL is not set |
190 | # CONFIG_PPC_CELL_NATIVE is not set | 221 | # CONFIG_PPC_CELL_NATIVE is not set |
191 | # CONFIG_PQ2ADS is not set | 222 | # CONFIG_PQ2ADS is not set |
192 | CONFIG_MPC85xx=y | 223 | CONFIG_FSL_SOC_BOOKE=y |
193 | # CONFIG_MPC8540_ADS is not set | 224 | # CONFIG_MPC8540_ADS is not set |
194 | CONFIG_MPC8560_ADS=y | 225 | CONFIG_MPC8560_ADS=y |
195 | # CONFIG_MPC85xx_CDS is not set | 226 | # CONFIG_MPC85xx_CDS is not set |
@@ -208,6 +239,7 @@ CONFIG_MPC8560_ADS=y | |||
208 | # CONFIG_TQM8560 is not set | 239 | # CONFIG_TQM8560 is not set |
209 | # CONFIG_SBC8548 is not set | 240 | # CONFIG_SBC8548 is not set |
210 | # CONFIG_SBC8560 is not set | 241 | # CONFIG_SBC8560 is not set |
242 | # CONFIG_P4080_DS is not set | ||
211 | # CONFIG_IPIC is not set | 243 | # CONFIG_IPIC is not set |
212 | CONFIG_MPIC=y | 244 | CONFIG_MPIC=y |
213 | # CONFIG_MPIC_WEIRD is not set | 245 | # CONFIG_MPIC_WEIRD is not set |
@@ -252,6 +284,7 @@ CONFIG_MATH_EMULATION=y | |||
252 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 284 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
253 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 285 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
254 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 286 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
287 | CONFIG_SPARSE_IRQ=y | ||
255 | CONFIG_MAX_ACTIVE_REGIONS=32 | 288 | CONFIG_MAX_ACTIVE_REGIONS=32 |
256 | CONFIG_ARCH_FLATMEM_ENABLE=y | 289 | CONFIG_ARCH_FLATMEM_ENABLE=y |
257 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 290 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -268,8 +301,6 @@ CONFIG_MIGRATION=y | |||
268 | CONFIG_ZONE_DMA_FLAG=1 | 301 | CONFIG_ZONE_DMA_FLAG=1 |
269 | CONFIG_BOUNCE=y | 302 | CONFIG_BOUNCE=y |
270 | CONFIG_VIRT_TO_BUS=y | 303 | CONFIG_VIRT_TO_BUS=y |
271 | CONFIG_HAVE_MLOCK=y | ||
272 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
273 | # CONFIG_KSM is not set | 304 | # CONFIG_KSM is not set |
274 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 305 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
275 | CONFIG_PPC_4K_PAGES=y | 306 | CONFIG_PPC_4K_PAGES=y |
@@ -398,9 +429,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
398 | # CONFIG_AF_RXRPC is not set | 429 | # CONFIG_AF_RXRPC is not set |
399 | CONFIG_WIRELESS=y | 430 | CONFIG_WIRELESS=y |
400 | # CONFIG_CFG80211 is not set | 431 | # CONFIG_CFG80211 is not set |
401 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
402 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
403 | # CONFIG_WIRELESS_EXT is not set | ||
404 | # CONFIG_LIB80211 is not set | 432 | # CONFIG_LIB80211 is not set |
405 | 433 | ||
406 | # | 434 | # |
@@ -440,6 +468,10 @@ CONFIG_BLK_DEV=y | |||
440 | # CONFIG_BLK_DEV_COW_COMMON is not set | 468 | # CONFIG_BLK_DEV_COW_COMMON is not set |
441 | CONFIG_BLK_DEV_LOOP=y | 469 | CONFIG_BLK_DEV_LOOP=y |
442 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 470 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
471 | |||
472 | # | ||
473 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
474 | # | ||
443 | # CONFIG_BLK_DEV_NBD is not set | 475 | # CONFIG_BLK_DEV_NBD is not set |
444 | # CONFIG_BLK_DEV_SX8 is not set | 476 | # CONFIG_BLK_DEV_SX8 is not set |
445 | CONFIG_BLK_DEV_RAM=y | 477 | CONFIG_BLK_DEV_RAM=y |
@@ -485,7 +517,7 @@ CONFIG_HAVE_IDE=y | |||
485 | # | 517 | # |
486 | 518 | ||
487 | # | 519 | # |
488 | # See the help texts for more information. | 520 | # The newer stack is recommended. |
489 | # | 521 | # |
490 | # CONFIG_FIREWIRE is not set | 522 | # CONFIG_FIREWIRE is not set |
491 | # CONFIG_IEEE1394 is not set | 523 | # CONFIG_IEEE1394 is not set |
@@ -594,8 +626,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
594 | # CONFIG_BE2NET is not set | 626 | # CONFIG_BE2NET is not set |
595 | # CONFIG_TR is not set | 627 | # CONFIG_TR is not set |
596 | CONFIG_WLAN=y | 628 | CONFIG_WLAN=y |
597 | # CONFIG_WLAN_PRE80211 is not set | 629 | # CONFIG_AIRO is not set |
598 | # CONFIG_WLAN_80211 is not set | 630 | # CONFIG_ATMEL is not set |
631 | # CONFIG_PRISM54 is not set | ||
632 | # CONFIG_HOSTAP is not set | ||
599 | 633 | ||
600 | # | 634 | # |
601 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 635 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -608,6 +642,7 @@ CONFIG_WLAN=y | |||
608 | # CONFIG_NETCONSOLE is not set | 642 | # CONFIG_NETCONSOLE is not set |
609 | # CONFIG_NETPOLL is not set | 643 | # CONFIG_NETPOLL is not set |
610 | # CONFIG_NET_POLL_CONTROLLER is not set | 644 | # CONFIG_NET_POLL_CONTROLLER is not set |
645 | # CONFIG_VMXNET3 is not set | ||
611 | # CONFIG_ISDN is not set | 646 | # CONFIG_ISDN is not set |
612 | # CONFIG_PHONE is not set | 647 | # CONFIG_PHONE is not set |
613 | 648 | ||
@@ -617,6 +652,7 @@ CONFIG_WLAN=y | |||
617 | CONFIG_INPUT=y | 652 | CONFIG_INPUT=y |
618 | # CONFIG_INPUT_FF_MEMLESS is not set | 653 | # CONFIG_INPUT_FF_MEMLESS is not set |
619 | # CONFIG_INPUT_POLLDEV is not set | 654 | # CONFIG_INPUT_POLLDEV is not set |
655 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
620 | 656 | ||
621 | # | 657 | # |
622 | # Userland interfaces | 658 | # Userland interfaces |
@@ -664,6 +700,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
664 | CONFIG_SERIAL_CPM=y | 700 | CONFIG_SERIAL_CPM=y |
665 | CONFIG_SERIAL_CPM_CONSOLE=y | 701 | CONFIG_SERIAL_CPM_CONSOLE=y |
666 | # CONFIG_SERIAL_JSM is not set | 702 | # CONFIG_SERIAL_JSM is not set |
703 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
667 | CONFIG_UNIX98_PTYS=y | 704 | CONFIG_UNIX98_PTYS=y |
668 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 705 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
669 | CONFIG_LEGACY_PTYS=y | 706 | CONFIG_LEGACY_PTYS=y |
@@ -705,6 +742,7 @@ CONFIG_GPIOLIB=y | |||
705 | # | 742 | # |
706 | # PCI GPIO expanders: | 743 | # PCI GPIO expanders: |
707 | # | 744 | # |
745 | # CONFIG_GPIO_CS5535 is not set | ||
708 | # CONFIG_GPIO_BT8XX is not set | 746 | # CONFIG_GPIO_BT8XX is not set |
709 | # CONFIG_GPIO_LANGWELL is not set | 747 | # CONFIG_GPIO_LANGWELL is not set |
710 | 748 | ||
@@ -1054,7 +1092,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1054 | # CONFIG_KEYS is not set | 1092 | # CONFIG_KEYS is not set |
1055 | # CONFIG_SECURITY is not set | 1093 | # CONFIG_SECURITY is not set |
1056 | # CONFIG_SECURITYFS is not set | 1094 | # CONFIG_SECURITYFS is not set |
1057 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1095 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1096 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1097 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1098 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1099 | CONFIG_DEFAULT_SECURITY="" | ||
1058 | CONFIG_CRYPTO=y | 1100 | CONFIG_CRYPTO=y |
1059 | 1101 | ||
1060 | # | 1102 | # |
diff --git a/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig b/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig index 9b63e258dac6..fab8adacbf79 100644 --- a/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig +++ b/arch/powerpc/configs/85xx/mpc85xx_cds_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:35 2009 | 4 | # Wed Jan 6 09:24:29 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y | |||
61 | CONFIG_GENERIC_BUG=y | 62 | CONFIG_GENERIC_BUG=y |
62 | CONFIG_DTC=y | 63 | CONFIG_DTC=y |
63 | CONFIG_DEFAULT_UIMAGE=y | 64 | CONFIG_DEFAULT_UIMAGE=y |
65 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
66 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
64 | # CONFIG_PPC_DCR_NATIVE is not set | 67 | # CONFIG_PPC_DCR_NATIVE is not set |
65 | # CONFIG_PPC_DCR_MMIO is not set | 68 | # CONFIG_PPC_DCR_MMIO is not set |
66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 69 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
88 | # | 91 | # |
89 | CONFIG_TREE_RCU=y | 92 | CONFIG_TREE_RCU=y |
90 | # CONFIG_TREE_PREEMPT_RCU is not set | 93 | # CONFIG_TREE_PREEMPT_RCU is not set |
94 | # CONFIG_TINY_RCU is not set | ||
91 | # CONFIG_RCU_TRACE is not set | 95 | # CONFIG_RCU_TRACE is not set |
92 | CONFIG_RCU_FANOUT=32 | 96 | CONFIG_RCU_FANOUT=32 |
93 | # CONFIG_RCU_FANOUT_EXACT is not set | 97 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -171,14 +175,41 @@ CONFIG_LBDAF=y | |||
171 | # IO Schedulers | 175 | # IO Schedulers |
172 | # | 176 | # |
173 | CONFIG_IOSCHED_NOOP=y | 177 | CONFIG_IOSCHED_NOOP=y |
174 | CONFIG_IOSCHED_AS=y | ||
175 | CONFIG_IOSCHED_DEADLINE=y | 178 | CONFIG_IOSCHED_DEADLINE=y |
176 | CONFIG_IOSCHED_CFQ=y | 179 | CONFIG_IOSCHED_CFQ=y |
177 | CONFIG_DEFAULT_AS=y | ||
178 | # CONFIG_DEFAULT_DEADLINE is not set | 180 | # CONFIG_DEFAULT_DEADLINE is not set |
179 | # CONFIG_DEFAULT_CFQ is not set | 181 | CONFIG_DEFAULT_CFQ=y |
180 | # CONFIG_DEFAULT_NOOP is not set | 182 | # CONFIG_DEFAULT_NOOP is not set |
181 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 183 | CONFIG_DEFAULT_IOSCHED="cfq" |
184 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
185 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
186 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
190 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
191 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
192 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
193 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
194 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
195 | # CONFIG_INLINE_READ_LOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
199 | CONFIG_INLINE_READ_UNLOCK=y | ||
200 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
201 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
202 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
203 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
204 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
208 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
209 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
210 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
211 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
212 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
182 | # CONFIG_FREEZER is not set | 213 | # CONFIG_FREEZER is not set |
183 | 214 | ||
184 | # | 215 | # |
@@ -187,7 +218,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
187 | # CONFIG_PPC_CELL is not set | 218 | # CONFIG_PPC_CELL is not set |
188 | # CONFIG_PPC_CELL_NATIVE is not set | 219 | # CONFIG_PPC_CELL_NATIVE is not set |
189 | # CONFIG_PQ2ADS is not set | 220 | # CONFIG_PQ2ADS is not set |
190 | CONFIG_MPC85xx=y | 221 | CONFIG_FSL_SOC_BOOKE=y |
191 | # CONFIG_MPC8540_ADS is not set | 222 | # CONFIG_MPC8540_ADS is not set |
192 | # CONFIG_MPC8560_ADS is not set | 223 | # CONFIG_MPC8560_ADS is not set |
193 | CONFIG_MPC85xx_CDS=y | 224 | CONFIG_MPC85xx_CDS=y |
@@ -206,6 +237,7 @@ CONFIG_MPC85xx_CDS=y | |||
206 | # CONFIG_TQM8560 is not set | 237 | # CONFIG_TQM8560 is not set |
207 | # CONFIG_SBC8548 is not set | 238 | # CONFIG_SBC8548 is not set |
208 | # CONFIG_SBC8560 is not set | 239 | # CONFIG_SBC8560 is not set |
240 | # CONFIG_P4080_DS is not set | ||
209 | # CONFIG_IPIC is not set | 241 | # CONFIG_IPIC is not set |
210 | CONFIG_MPIC=y | 242 | CONFIG_MPIC=y |
211 | # CONFIG_MPIC_WEIRD is not set | 243 | # CONFIG_MPIC_WEIRD is not set |
@@ -250,6 +282,7 @@ CONFIG_MATH_EMULATION=y | |||
250 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 282 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
251 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 283 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
252 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 284 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
285 | CONFIG_SPARSE_IRQ=y | ||
253 | CONFIG_MAX_ACTIVE_REGIONS=32 | 286 | CONFIG_MAX_ACTIVE_REGIONS=32 |
254 | CONFIG_ARCH_FLATMEM_ENABLE=y | 287 | CONFIG_ARCH_FLATMEM_ENABLE=y |
255 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 288 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -266,8 +299,6 @@ CONFIG_MIGRATION=y | |||
266 | CONFIG_ZONE_DMA_FLAG=1 | 299 | CONFIG_ZONE_DMA_FLAG=1 |
267 | CONFIG_BOUNCE=y | 300 | CONFIG_BOUNCE=y |
268 | CONFIG_VIRT_TO_BUS=y | 301 | CONFIG_VIRT_TO_BUS=y |
269 | CONFIG_HAVE_MLOCK=y | ||
270 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
271 | # CONFIG_KSM is not set | 302 | # CONFIG_KSM is not set |
272 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 303 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
273 | CONFIG_PPC_4K_PAGES=y | 304 | CONFIG_PPC_4K_PAGES=y |
@@ -396,9 +427,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
396 | # CONFIG_AF_RXRPC is not set | 427 | # CONFIG_AF_RXRPC is not set |
397 | CONFIG_WIRELESS=y | 428 | CONFIG_WIRELESS=y |
398 | # CONFIG_CFG80211 is not set | 429 | # CONFIG_CFG80211 is not set |
399 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
400 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
401 | # CONFIG_WIRELESS_EXT is not set | ||
402 | # CONFIG_LIB80211 is not set | 430 | # CONFIG_LIB80211 is not set |
403 | 431 | ||
404 | # | 432 | # |
@@ -437,6 +465,10 @@ CONFIG_BLK_DEV=y | |||
437 | # CONFIG_BLK_DEV_COW_COMMON is not set | 465 | # CONFIG_BLK_DEV_COW_COMMON is not set |
438 | CONFIG_BLK_DEV_LOOP=y | 466 | CONFIG_BLK_DEV_LOOP=y |
439 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 467 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
468 | |||
469 | # | ||
470 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
471 | # | ||
440 | # CONFIG_BLK_DEV_NBD is not set | 472 | # CONFIG_BLK_DEV_NBD is not set |
441 | # CONFIG_BLK_DEV_SX8 is not set | 473 | # CONFIG_BLK_DEV_SX8 is not set |
442 | CONFIG_BLK_DEV_RAM=y | 474 | CONFIG_BLK_DEV_RAM=y |
@@ -537,7 +569,7 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
537 | # | 569 | # |
538 | 570 | ||
539 | # | 571 | # |
540 | # See the help texts for more information. | 572 | # The newer stack is recommended. |
541 | # | 573 | # |
542 | # CONFIG_FIREWIRE is not set | 574 | # CONFIG_FIREWIRE is not set |
543 | # CONFIG_IEEE1394 is not set | 575 | # CONFIG_IEEE1394 is not set |
@@ -642,8 +674,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
642 | # CONFIG_BE2NET is not set | 674 | # CONFIG_BE2NET is not set |
643 | # CONFIG_TR is not set | 675 | # CONFIG_TR is not set |
644 | CONFIG_WLAN=y | 676 | CONFIG_WLAN=y |
645 | # CONFIG_WLAN_PRE80211 is not set | 677 | # CONFIG_AIRO is not set |
646 | # CONFIG_WLAN_80211 is not set | 678 | # CONFIG_ATMEL is not set |
679 | # CONFIG_PRISM54 is not set | ||
680 | # CONFIG_HOSTAP is not set | ||
647 | 681 | ||
648 | # | 682 | # |
649 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 683 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -656,6 +690,7 @@ CONFIG_WLAN=y | |||
656 | # CONFIG_NETCONSOLE is not set | 690 | # CONFIG_NETCONSOLE is not set |
657 | # CONFIG_NETPOLL is not set | 691 | # CONFIG_NETPOLL is not set |
658 | # CONFIG_NET_POLL_CONTROLLER is not set | 692 | # CONFIG_NET_POLL_CONTROLLER is not set |
693 | # CONFIG_VMXNET3 is not set | ||
659 | # CONFIG_ISDN is not set | 694 | # CONFIG_ISDN is not set |
660 | # CONFIG_PHONE is not set | 695 | # CONFIG_PHONE is not set |
661 | 696 | ||
@@ -665,6 +700,7 @@ CONFIG_WLAN=y | |||
665 | CONFIG_INPUT=y | 700 | CONFIG_INPUT=y |
666 | # CONFIG_INPUT_FF_MEMLESS is not set | 701 | # CONFIG_INPUT_FF_MEMLESS is not set |
667 | # CONFIG_INPUT_POLLDEV is not set | 702 | # CONFIG_INPUT_POLLDEV is not set |
703 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
668 | 704 | ||
669 | # | 705 | # |
670 | # Userland interfaces | 706 | # Userland interfaces |
@@ -717,6 +753,7 @@ CONFIG_SERIAL_CORE=y | |||
717 | CONFIG_SERIAL_CORE_CONSOLE=y | 753 | CONFIG_SERIAL_CORE_CONSOLE=y |
718 | # CONFIG_SERIAL_JSM is not set | 754 | # CONFIG_SERIAL_JSM is not set |
719 | # CONFIG_SERIAL_OF_PLATFORM is not set | 755 | # CONFIG_SERIAL_OF_PLATFORM is not set |
756 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
720 | CONFIG_UNIX98_PTYS=y | 757 | CONFIG_UNIX98_PTYS=y |
721 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 758 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
722 | CONFIG_LEGACY_PTYS=y | 759 | CONFIG_LEGACY_PTYS=y |
@@ -1079,7 +1116,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1079 | # CONFIG_KEYS is not set | 1116 | # CONFIG_KEYS is not set |
1080 | # CONFIG_SECURITY is not set | 1117 | # CONFIG_SECURITY is not set |
1081 | # CONFIG_SECURITYFS is not set | 1118 | # CONFIG_SECURITYFS is not set |
1082 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1119 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1120 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1121 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1122 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1123 | CONFIG_DEFAULT_SECURITY="" | ||
1083 | CONFIG_CRYPTO=y | 1124 | CONFIG_CRYPTO=y |
1084 | 1125 | ||
1085 | # | 1126 | # |
diff --git a/arch/powerpc/configs/85xx/sbc8548_defconfig b/arch/powerpc/configs/85xx/sbc8548_defconfig index 1b2356830173..8290385e9b94 100644 --- a/arch/powerpc/configs/85xx/sbc8548_defconfig +++ b/arch/powerpc/configs/85xx/sbc8548_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:36 2009 | 4 | # Wed Jan 6 09:24:29 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y | |||
61 | CONFIG_GENERIC_BUG=y | 62 | CONFIG_GENERIC_BUG=y |
62 | CONFIG_DTC=y | 63 | CONFIG_DTC=y |
63 | CONFIG_DEFAULT_UIMAGE=y | 64 | CONFIG_DEFAULT_UIMAGE=y |
65 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
66 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
64 | # CONFIG_PPC_DCR_NATIVE is not set | 67 | # CONFIG_PPC_DCR_NATIVE is not set |
65 | # CONFIG_PPC_DCR_MMIO is not set | 68 | # CONFIG_PPC_DCR_MMIO is not set |
66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 69 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
88 | # | 91 | # |
89 | CONFIG_TREE_RCU=y | 92 | CONFIG_TREE_RCU=y |
90 | # CONFIG_TREE_PREEMPT_RCU is not set | 93 | # CONFIG_TREE_PREEMPT_RCU is not set |
94 | # CONFIG_TINY_RCU is not set | ||
91 | # CONFIG_RCU_TRACE is not set | 95 | # CONFIG_RCU_TRACE is not set |
92 | CONFIG_RCU_FANOUT=32 | 96 | CONFIG_RCU_FANOUT=32 |
93 | # CONFIG_RCU_FANOUT_EXACT is not set | 97 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -169,14 +173,41 @@ CONFIG_LBDAF=y | |||
169 | # IO Schedulers | 173 | # IO Schedulers |
170 | # | 174 | # |
171 | CONFIG_IOSCHED_NOOP=y | 175 | CONFIG_IOSCHED_NOOP=y |
172 | CONFIG_IOSCHED_AS=y | ||
173 | CONFIG_IOSCHED_DEADLINE=y | 176 | CONFIG_IOSCHED_DEADLINE=y |
174 | CONFIG_IOSCHED_CFQ=y | 177 | CONFIG_IOSCHED_CFQ=y |
175 | CONFIG_DEFAULT_AS=y | ||
176 | # CONFIG_DEFAULT_DEADLINE is not set | 178 | # CONFIG_DEFAULT_DEADLINE is not set |
177 | # CONFIG_DEFAULT_CFQ is not set | 179 | CONFIG_DEFAULT_CFQ=y |
178 | # CONFIG_DEFAULT_NOOP is not set | 180 | # CONFIG_DEFAULT_NOOP is not set |
179 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 181 | CONFIG_DEFAULT_IOSCHED="cfq" |
182 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
183 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
184 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
185 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
186 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
188 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
189 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
190 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
191 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
192 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
193 | # CONFIG_INLINE_READ_LOCK is not set | ||
194 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
195 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
196 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
197 | CONFIG_INLINE_READ_UNLOCK=y | ||
198 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
199 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
200 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
201 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
202 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
203 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
204 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
206 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
207 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
208 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
209 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
210 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
180 | # CONFIG_FREEZER is not set | 211 | # CONFIG_FREEZER is not set |
181 | 212 | ||
182 | # | 213 | # |
@@ -185,7 +216,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
185 | # CONFIG_PPC_CELL is not set | 216 | # CONFIG_PPC_CELL is not set |
186 | # CONFIG_PPC_CELL_NATIVE is not set | 217 | # CONFIG_PPC_CELL_NATIVE is not set |
187 | # CONFIG_PQ2ADS is not set | 218 | # CONFIG_PQ2ADS is not set |
188 | CONFIG_MPC85xx=y | 219 | CONFIG_FSL_SOC_BOOKE=y |
189 | # CONFIG_MPC8540_ADS is not set | 220 | # CONFIG_MPC8540_ADS is not set |
190 | # CONFIG_MPC8560_ADS is not set | 221 | # CONFIG_MPC8560_ADS is not set |
191 | # CONFIG_MPC85xx_CDS is not set | 222 | # CONFIG_MPC85xx_CDS is not set |
@@ -204,6 +235,7 @@ CONFIG_MPC85xx=y | |||
204 | # CONFIG_TQM8560 is not set | 235 | # CONFIG_TQM8560 is not set |
205 | CONFIG_SBC8548=y | 236 | CONFIG_SBC8548=y |
206 | # CONFIG_SBC8560 is not set | 237 | # CONFIG_SBC8560 is not set |
238 | # CONFIG_P4080_DS is not set | ||
207 | # CONFIG_IPIC is not set | 239 | # CONFIG_IPIC is not set |
208 | CONFIG_MPIC=y | 240 | CONFIG_MPIC=y |
209 | # CONFIG_MPIC_WEIRD is not set | 241 | # CONFIG_MPIC_WEIRD is not set |
@@ -247,6 +279,7 @@ CONFIG_MATH_EMULATION=y | |||
247 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 279 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
248 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 280 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
249 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 281 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
282 | CONFIG_SPARSE_IRQ=y | ||
250 | CONFIG_MAX_ACTIVE_REGIONS=32 | 283 | CONFIG_MAX_ACTIVE_REGIONS=32 |
251 | CONFIG_ARCH_FLATMEM_ENABLE=y | 284 | CONFIG_ARCH_FLATMEM_ENABLE=y |
252 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 285 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -263,8 +296,6 @@ CONFIG_MIGRATION=y | |||
263 | CONFIG_ZONE_DMA_FLAG=1 | 296 | CONFIG_ZONE_DMA_FLAG=1 |
264 | CONFIG_BOUNCE=y | 297 | CONFIG_BOUNCE=y |
265 | CONFIG_VIRT_TO_BUS=y | 298 | CONFIG_VIRT_TO_BUS=y |
266 | CONFIG_HAVE_MLOCK=y | ||
267 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
268 | # CONFIG_KSM is not set | 299 | # CONFIG_KSM is not set |
269 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 300 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
270 | CONFIG_PPC_4K_PAGES=y | 301 | CONFIG_PPC_4K_PAGES=y |
@@ -392,9 +423,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
392 | # CONFIG_AF_RXRPC is not set | 423 | # CONFIG_AF_RXRPC is not set |
393 | CONFIG_WIRELESS=y | 424 | CONFIG_WIRELESS=y |
394 | # CONFIG_CFG80211 is not set | 425 | # CONFIG_CFG80211 is not set |
395 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
396 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
397 | # CONFIG_WIRELESS_EXT is not set | ||
398 | # CONFIG_LIB80211 is not set | 426 | # CONFIG_LIB80211 is not set |
399 | 427 | ||
400 | # | 428 | # |
@@ -431,6 +459,10 @@ CONFIG_BLK_DEV=y | |||
431 | # CONFIG_BLK_DEV_COW_COMMON is not set | 459 | # CONFIG_BLK_DEV_COW_COMMON is not set |
432 | CONFIG_BLK_DEV_LOOP=y | 460 | CONFIG_BLK_DEV_LOOP=y |
433 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 461 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
462 | |||
463 | # | ||
464 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
465 | # | ||
434 | # CONFIG_BLK_DEV_NBD is not set | 466 | # CONFIG_BLK_DEV_NBD is not set |
435 | # CONFIG_BLK_DEV_SX8 is not set | 467 | # CONFIG_BLK_DEV_SX8 is not set |
436 | CONFIG_BLK_DEV_RAM=y | 468 | CONFIG_BLK_DEV_RAM=y |
@@ -476,7 +508,7 @@ CONFIG_HAVE_IDE=y | |||
476 | # | 508 | # |
477 | 509 | ||
478 | # | 510 | # |
479 | # See the help texts for more information. | 511 | # The newer stack is recommended. |
480 | # | 512 | # |
481 | # CONFIG_FIREWIRE is not set | 513 | # CONFIG_FIREWIRE is not set |
482 | # CONFIG_IEEE1394 is not set | 514 | # CONFIG_IEEE1394 is not set |
@@ -581,8 +613,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
581 | # CONFIG_BE2NET is not set | 613 | # CONFIG_BE2NET is not set |
582 | # CONFIG_TR is not set | 614 | # CONFIG_TR is not set |
583 | CONFIG_WLAN=y | 615 | CONFIG_WLAN=y |
584 | # CONFIG_WLAN_PRE80211 is not set | 616 | # CONFIG_AIRO is not set |
585 | # CONFIG_WLAN_80211 is not set | 617 | # CONFIG_ATMEL is not set |
618 | # CONFIG_PRISM54 is not set | ||
619 | # CONFIG_HOSTAP is not set | ||
586 | 620 | ||
587 | # | 621 | # |
588 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 622 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -595,6 +629,7 @@ CONFIG_WLAN=y | |||
595 | # CONFIG_NETCONSOLE is not set | 629 | # CONFIG_NETCONSOLE is not set |
596 | # CONFIG_NETPOLL is not set | 630 | # CONFIG_NETPOLL is not set |
597 | # CONFIG_NET_POLL_CONTROLLER is not set | 631 | # CONFIG_NET_POLL_CONTROLLER is not set |
632 | # CONFIG_VMXNET3 is not set | ||
598 | # CONFIG_ISDN is not set | 633 | # CONFIG_ISDN is not set |
599 | # CONFIG_PHONE is not set | 634 | # CONFIG_PHONE is not set |
600 | 635 | ||
@@ -604,6 +639,7 @@ CONFIG_WLAN=y | |||
604 | CONFIG_INPUT=y | 639 | CONFIG_INPUT=y |
605 | # CONFIG_INPUT_FF_MEMLESS is not set | 640 | # CONFIG_INPUT_FF_MEMLESS is not set |
606 | # CONFIG_INPUT_POLLDEV is not set | 641 | # CONFIG_INPUT_POLLDEV is not set |
642 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
607 | 643 | ||
608 | # | 644 | # |
609 | # Userland interfaces | 645 | # Userland interfaces |
@@ -656,6 +692,7 @@ CONFIG_SERIAL_CORE=y | |||
656 | CONFIG_SERIAL_CORE_CONSOLE=y | 692 | CONFIG_SERIAL_CORE_CONSOLE=y |
657 | # CONFIG_SERIAL_JSM is not set | 693 | # CONFIG_SERIAL_JSM is not set |
658 | # CONFIG_SERIAL_OF_PLATFORM is not set | 694 | # CONFIG_SERIAL_OF_PLATFORM is not set |
695 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
659 | CONFIG_UNIX98_PTYS=y | 696 | CONFIG_UNIX98_PTYS=y |
660 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 697 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
661 | CONFIG_LEGACY_PTYS=y | 698 | CONFIG_LEGACY_PTYS=y |
@@ -889,7 +926,7 @@ CONFIG_FRAME_WARN=1024 | |||
889 | # CONFIG_DEBUG_FS is not set | 926 | # CONFIG_DEBUG_FS is not set |
890 | # CONFIG_HEADERS_CHECK is not set | 927 | # CONFIG_HEADERS_CHECK is not set |
891 | # CONFIG_DEBUG_KERNEL is not set | 928 | # CONFIG_DEBUG_KERNEL is not set |
892 | # CONFIG_DEBUG_BUGVERBOSE is not set | 929 | CONFIG_DEBUG_BUGVERBOSE=y |
893 | # CONFIG_DEBUG_MEMORY_INIT is not set | 930 | # CONFIG_DEBUG_MEMORY_INIT is not set |
894 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 931 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
895 | # CONFIG_LATENCYTOP is not set | 932 | # CONFIG_LATENCYTOP is not set |
@@ -915,7 +952,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
915 | # CONFIG_KEYS is not set | 952 | # CONFIG_KEYS is not set |
916 | # CONFIG_SECURITY is not set | 953 | # CONFIG_SECURITY is not set |
917 | # CONFIG_SECURITYFS is not set | 954 | # CONFIG_SECURITYFS is not set |
918 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 955 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
956 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
957 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
958 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
959 | CONFIG_DEFAULT_SECURITY="" | ||
919 | CONFIG_CRYPTO=y | 960 | CONFIG_CRYPTO=y |
920 | 961 | ||
921 | # | 962 | # |
diff --git a/arch/powerpc/configs/85xx/sbc8560_defconfig b/arch/powerpc/configs/85xx/sbc8560_defconfig index 959d0281431b..2499b5ba7141 100644 --- a/arch/powerpc/configs/85xx/sbc8560_defconfig +++ b/arch/powerpc/configs/85xx/sbc8560_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:37 2009 | 4 | # Wed Jan 6 09:24:30 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y | |||
61 | CONFIG_GENERIC_BUG=y | 62 | CONFIG_GENERIC_BUG=y |
62 | CONFIG_DTC=y | 63 | CONFIG_DTC=y |
63 | CONFIG_DEFAULT_UIMAGE=y | 64 | CONFIG_DEFAULT_UIMAGE=y |
65 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
66 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
64 | # CONFIG_PPC_DCR_NATIVE is not set | 67 | # CONFIG_PPC_DCR_NATIVE is not set |
65 | # CONFIG_PPC_DCR_MMIO is not set | 68 | # CONFIG_PPC_DCR_MMIO is not set |
66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 69 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
88 | # | 91 | # |
89 | CONFIG_TREE_RCU=y | 92 | CONFIG_TREE_RCU=y |
90 | # CONFIG_TREE_PREEMPT_RCU is not set | 93 | # CONFIG_TREE_PREEMPT_RCU is not set |
94 | # CONFIG_TINY_RCU is not set | ||
91 | # CONFIG_RCU_TRACE is not set | 95 | # CONFIG_RCU_TRACE is not set |
92 | CONFIG_RCU_FANOUT=32 | 96 | CONFIG_RCU_FANOUT=32 |
93 | # CONFIG_RCU_FANOUT_EXACT is not set | 97 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -169,14 +173,41 @@ CONFIG_LBDAF=y | |||
169 | # IO Schedulers | 173 | # IO Schedulers |
170 | # | 174 | # |
171 | CONFIG_IOSCHED_NOOP=y | 175 | CONFIG_IOSCHED_NOOP=y |
172 | CONFIG_IOSCHED_AS=y | ||
173 | CONFIG_IOSCHED_DEADLINE=y | 176 | CONFIG_IOSCHED_DEADLINE=y |
174 | CONFIG_IOSCHED_CFQ=y | 177 | CONFIG_IOSCHED_CFQ=y |
175 | CONFIG_DEFAULT_AS=y | ||
176 | # CONFIG_DEFAULT_DEADLINE is not set | 178 | # CONFIG_DEFAULT_DEADLINE is not set |
177 | # CONFIG_DEFAULT_CFQ is not set | 179 | CONFIG_DEFAULT_CFQ=y |
178 | # CONFIG_DEFAULT_NOOP is not set | 180 | # CONFIG_DEFAULT_NOOP is not set |
179 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 181 | CONFIG_DEFAULT_IOSCHED="cfq" |
182 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
183 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
184 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
185 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
186 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
188 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
189 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
190 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
191 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
192 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
193 | # CONFIG_INLINE_READ_LOCK is not set | ||
194 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
195 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
196 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
197 | CONFIG_INLINE_READ_UNLOCK=y | ||
198 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
199 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
200 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
201 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
202 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
203 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
204 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
206 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
207 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
208 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
209 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
210 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
180 | # CONFIG_FREEZER is not set | 211 | # CONFIG_FREEZER is not set |
181 | 212 | ||
182 | # | 213 | # |
@@ -185,7 +216,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
185 | # CONFIG_PPC_CELL is not set | 216 | # CONFIG_PPC_CELL is not set |
186 | # CONFIG_PPC_CELL_NATIVE is not set | 217 | # CONFIG_PPC_CELL_NATIVE is not set |
187 | # CONFIG_PQ2ADS is not set | 218 | # CONFIG_PQ2ADS is not set |
188 | CONFIG_MPC85xx=y | 219 | CONFIG_FSL_SOC_BOOKE=y |
189 | # CONFIG_MPC8540_ADS is not set | 220 | # CONFIG_MPC8540_ADS is not set |
190 | # CONFIG_MPC8560_ADS is not set | 221 | # CONFIG_MPC8560_ADS is not set |
191 | # CONFIG_MPC85xx_CDS is not set | 222 | # CONFIG_MPC85xx_CDS is not set |
@@ -204,6 +235,7 @@ CONFIG_MPC85xx=y | |||
204 | # CONFIG_TQM8560 is not set | 235 | # CONFIG_TQM8560 is not set |
205 | # CONFIG_SBC8548 is not set | 236 | # CONFIG_SBC8548 is not set |
206 | CONFIG_SBC8560=y | 237 | CONFIG_SBC8560=y |
238 | # CONFIG_P4080_DS is not set | ||
207 | # CONFIG_IPIC is not set | 239 | # CONFIG_IPIC is not set |
208 | CONFIG_MPIC=y | 240 | CONFIG_MPIC=y |
209 | # CONFIG_MPIC_WEIRD is not set | 241 | # CONFIG_MPIC_WEIRD is not set |
@@ -247,6 +279,7 @@ CONFIG_BINFMT_MISC=y | |||
247 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 279 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
248 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 280 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
249 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 281 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
282 | CONFIG_SPARSE_IRQ=y | ||
250 | CONFIG_MAX_ACTIVE_REGIONS=32 | 283 | CONFIG_MAX_ACTIVE_REGIONS=32 |
251 | CONFIG_ARCH_FLATMEM_ENABLE=y | 284 | CONFIG_ARCH_FLATMEM_ENABLE=y |
252 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 285 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -263,8 +296,6 @@ CONFIG_MIGRATION=y | |||
263 | CONFIG_ZONE_DMA_FLAG=1 | 296 | CONFIG_ZONE_DMA_FLAG=1 |
264 | CONFIG_BOUNCE=y | 297 | CONFIG_BOUNCE=y |
265 | CONFIG_VIRT_TO_BUS=y | 298 | CONFIG_VIRT_TO_BUS=y |
266 | CONFIG_HAVE_MLOCK=y | ||
267 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
268 | # CONFIG_KSM is not set | 299 | # CONFIG_KSM is not set |
269 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 300 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
270 | CONFIG_PPC_4K_PAGES=y | 301 | CONFIG_PPC_4K_PAGES=y |
@@ -384,9 +415,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
384 | # CONFIG_AF_RXRPC is not set | 415 | # CONFIG_AF_RXRPC is not set |
385 | CONFIG_WIRELESS=y | 416 | CONFIG_WIRELESS=y |
386 | # CONFIG_CFG80211 is not set | 417 | # CONFIG_CFG80211 is not set |
387 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
388 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
389 | # CONFIG_WIRELESS_EXT is not set | ||
390 | # CONFIG_LIB80211 is not set | 418 | # CONFIG_LIB80211 is not set |
391 | 419 | ||
392 | # | 420 | # |
@@ -421,6 +449,10 @@ CONFIG_BLK_DEV=y | |||
421 | # CONFIG_BLK_DEV_COW_COMMON is not set | 449 | # CONFIG_BLK_DEV_COW_COMMON is not set |
422 | CONFIG_BLK_DEV_LOOP=y | 450 | CONFIG_BLK_DEV_LOOP=y |
423 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 451 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
452 | |||
453 | # | ||
454 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
455 | # | ||
424 | # CONFIG_BLK_DEV_NBD is not set | 456 | # CONFIG_BLK_DEV_NBD is not set |
425 | CONFIG_BLK_DEV_RAM=y | 457 | CONFIG_BLK_DEV_RAM=y |
426 | CONFIG_BLK_DEV_RAM_COUNT=16 | 458 | CONFIG_BLK_DEV_RAM_COUNT=16 |
@@ -498,8 +530,7 @@ CONFIG_GIANFAR=y | |||
498 | # CONFIG_MV643XX_ETH is not set | 530 | # CONFIG_MV643XX_ETH is not set |
499 | CONFIG_NETDEV_10000=y | 531 | CONFIG_NETDEV_10000=y |
500 | CONFIG_WLAN=y | 532 | CONFIG_WLAN=y |
501 | # CONFIG_WLAN_PRE80211 is not set | 533 | # CONFIG_HOSTAP is not set |
502 | # CONFIG_WLAN_80211 is not set | ||
503 | 534 | ||
504 | # | 535 | # |
505 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 536 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -519,6 +550,7 @@ CONFIG_WLAN=y | |||
519 | CONFIG_INPUT=y | 550 | CONFIG_INPUT=y |
520 | # CONFIG_INPUT_FF_MEMLESS is not set | 551 | # CONFIG_INPUT_FF_MEMLESS is not set |
521 | # CONFIG_INPUT_POLLDEV is not set | 552 | # CONFIG_INPUT_POLLDEV is not set |
553 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
522 | 554 | ||
523 | # | 555 | # |
524 | # Userland interfaces | 556 | # Userland interfaces |
@@ -568,6 +600,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y | |||
568 | CONFIG_SERIAL_CORE=y | 600 | CONFIG_SERIAL_CORE=y |
569 | CONFIG_SERIAL_CORE_CONSOLE=y | 601 | CONFIG_SERIAL_CORE_CONSOLE=y |
570 | # CONFIG_SERIAL_OF_PLATFORM is not set | 602 | # CONFIG_SERIAL_OF_PLATFORM is not set |
603 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
571 | CONFIG_UNIX98_PTYS=y | 604 | CONFIG_UNIX98_PTYS=y |
572 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 605 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
573 | CONFIG_LEGACY_PTYS=y | 606 | CONFIG_LEGACY_PTYS=y |
@@ -702,7 +735,9 @@ CONFIG_RTC_INTF_DEV=y | |||
702 | # CONFIG_RTC_DRV_M48T86 is not set | 735 | # CONFIG_RTC_DRV_M48T86 is not set |
703 | # CONFIG_RTC_DRV_M48T35 is not set | 736 | # CONFIG_RTC_DRV_M48T35 is not set |
704 | CONFIG_RTC_DRV_M48T59=y | 737 | CONFIG_RTC_DRV_M48T59=y |
738 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
705 | # CONFIG_RTC_DRV_BQ4802 is not set | 739 | # CONFIG_RTC_DRV_BQ4802 is not set |
740 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
706 | # CONFIG_RTC_DRV_V3020 is not set | 741 | # CONFIG_RTC_DRV_V3020 is not set |
707 | 742 | ||
708 | # | 743 | # |
@@ -948,6 +983,7 @@ CONFIG_PPC_EARLY_DEBUG=y | |||
948 | # CONFIG_PPC_EARLY_DEBUG_44x is not set | 983 | # CONFIG_PPC_EARLY_DEBUG_44x is not set |
949 | # CONFIG_PPC_EARLY_DEBUG_40x is not set | 984 | # CONFIG_PPC_EARLY_DEBUG_40x is not set |
950 | # CONFIG_PPC_EARLY_DEBUG_CPM is not set | 985 | # CONFIG_PPC_EARLY_DEBUG_CPM is not set |
986 | # CONFIG_PPC_EARLY_DEBUG_USBGECKO is not set | ||
951 | 987 | ||
952 | # | 988 | # |
953 | # Security options | 989 | # Security options |
@@ -955,7 +991,11 @@ CONFIG_PPC_EARLY_DEBUG=y | |||
955 | # CONFIG_KEYS is not set | 991 | # CONFIG_KEYS is not set |
956 | # CONFIG_SECURITY is not set | 992 | # CONFIG_SECURITY is not set |
957 | # CONFIG_SECURITYFS is not set | 993 | # CONFIG_SECURITYFS is not set |
958 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 994 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
995 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
996 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
997 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
998 | CONFIG_DEFAULT_SECURITY="" | ||
959 | CONFIG_CRYPTO=y | 999 | CONFIG_CRYPTO=y |
960 | 1000 | ||
961 | # | 1001 | # |
diff --git a/arch/powerpc/configs/85xx/socrates_defconfig b/arch/powerpc/configs/85xx/socrates_defconfig index 7f5ec35bf199..e2edb79cfd1a 100644 --- a/arch/powerpc/configs/85xx/socrates_defconfig +++ b/arch/powerpc/configs/85xx/socrates_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:37 2009 | 4 | # Wed Jan 6 09:24:31 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y | |||
61 | CONFIG_GENERIC_BUG=y | 62 | CONFIG_GENERIC_BUG=y |
62 | CONFIG_DTC=y | 63 | CONFIG_DTC=y |
63 | CONFIG_DEFAULT_UIMAGE=y | 64 | CONFIG_DEFAULT_UIMAGE=y |
65 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
66 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
64 | # CONFIG_PPC_DCR_NATIVE is not set | 67 | # CONFIG_PPC_DCR_NATIVE is not set |
65 | # CONFIG_PPC_DCR_MMIO is not set | 68 | # CONFIG_PPC_DCR_MMIO is not set |
66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 69 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
88 | # | 91 | # |
89 | CONFIG_TREE_RCU=y | 92 | CONFIG_TREE_RCU=y |
90 | # CONFIG_TREE_PREEMPT_RCU is not set | 93 | # CONFIG_TREE_PREEMPT_RCU is not set |
94 | # CONFIG_TINY_RCU is not set | ||
91 | # CONFIG_RCU_TRACE is not set | 95 | # CONFIG_RCU_TRACE is not set |
92 | CONFIG_RCU_FANOUT=32 | 96 | CONFIG_RCU_FANOUT=32 |
93 | # CONFIG_RCU_FANOUT_EXACT is not set | 97 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -174,14 +178,41 @@ CONFIG_LBDAF=y | |||
174 | # IO Schedulers | 178 | # IO Schedulers |
175 | # | 179 | # |
176 | CONFIG_IOSCHED_NOOP=y | 180 | CONFIG_IOSCHED_NOOP=y |
177 | CONFIG_IOSCHED_AS=y | ||
178 | CONFIG_IOSCHED_DEADLINE=y | 181 | CONFIG_IOSCHED_DEADLINE=y |
179 | CONFIG_IOSCHED_CFQ=y | 182 | CONFIG_IOSCHED_CFQ=y |
180 | CONFIG_DEFAULT_AS=y | ||
181 | # CONFIG_DEFAULT_DEADLINE is not set | 183 | # CONFIG_DEFAULT_DEADLINE is not set |
182 | # CONFIG_DEFAULT_CFQ is not set | 184 | CONFIG_DEFAULT_CFQ=y |
183 | # CONFIG_DEFAULT_NOOP is not set | 185 | # CONFIG_DEFAULT_NOOP is not set |
184 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 186 | CONFIG_DEFAULT_IOSCHED="cfq" |
187 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
188 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
191 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
192 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
193 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
194 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
195 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
196 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
197 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
198 | # CONFIG_INLINE_READ_LOCK is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
200 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
201 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
202 | CONFIG_INLINE_READ_UNLOCK=y | ||
203 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
204 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
205 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
206 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
209 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
210 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
211 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
212 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
213 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
214 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
215 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
185 | # CONFIG_FREEZER is not set | 216 | # CONFIG_FREEZER is not set |
186 | 217 | ||
187 | # | 218 | # |
@@ -190,7 +221,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
190 | # CONFIG_PPC_CELL is not set | 221 | # CONFIG_PPC_CELL is not set |
191 | # CONFIG_PPC_CELL_NATIVE is not set | 222 | # CONFIG_PPC_CELL_NATIVE is not set |
192 | # CONFIG_PQ2ADS is not set | 223 | # CONFIG_PQ2ADS is not set |
193 | CONFIG_MPC85xx=y | 224 | CONFIG_FSL_SOC_BOOKE=y |
194 | # CONFIG_MPC8540_ADS is not set | 225 | # CONFIG_MPC8540_ADS is not set |
195 | # CONFIG_MPC8560_ADS is not set | 226 | # CONFIG_MPC8560_ADS is not set |
196 | # CONFIG_MPC85xx_CDS is not set | 227 | # CONFIG_MPC85xx_CDS is not set |
@@ -209,6 +240,7 @@ CONFIG_SOCRATES=y | |||
209 | # CONFIG_TQM8560 is not set | 240 | # CONFIG_TQM8560 is not set |
210 | # CONFIG_SBC8548 is not set | 241 | # CONFIG_SBC8548 is not set |
211 | # CONFIG_SBC8560 is not set | 242 | # CONFIG_SBC8560 is not set |
243 | # CONFIG_P4080_DS is not set | ||
212 | # CONFIG_IPIC is not set | 244 | # CONFIG_IPIC is not set |
213 | CONFIG_MPIC=y | 245 | CONFIG_MPIC=y |
214 | # CONFIG_MPIC_WEIRD is not set | 246 | # CONFIG_MPIC_WEIRD is not set |
@@ -252,6 +284,7 @@ CONFIG_MATH_EMULATION=y | |||
252 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 284 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
253 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 285 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
254 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 286 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
287 | CONFIG_SPARSE_IRQ=y | ||
255 | CONFIG_MAX_ACTIVE_REGIONS=32 | 288 | CONFIG_MAX_ACTIVE_REGIONS=32 |
256 | CONFIG_ARCH_FLATMEM_ENABLE=y | 289 | CONFIG_ARCH_FLATMEM_ENABLE=y |
257 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 290 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -268,8 +301,6 @@ CONFIG_MIGRATION=y | |||
268 | CONFIG_ZONE_DMA_FLAG=1 | 301 | CONFIG_ZONE_DMA_FLAG=1 |
269 | CONFIG_BOUNCE=y | 302 | CONFIG_BOUNCE=y |
270 | CONFIG_VIRT_TO_BUS=y | 303 | CONFIG_VIRT_TO_BUS=y |
271 | CONFIG_HAVE_MLOCK=y | ||
272 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
273 | # CONFIG_KSM is not set | 304 | # CONFIG_KSM is not set |
274 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 305 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
275 | CONFIG_PPC_4K_PAGES=y | 306 | CONFIG_PPC_4K_PAGES=y |
@@ -404,9 +435,6 @@ CONFIG_CAN_BCM=y | |||
404 | # CONFIG_AF_RXRPC is not set | 435 | # CONFIG_AF_RXRPC is not set |
405 | CONFIG_WIRELESS=y | 436 | CONFIG_WIRELESS=y |
406 | # CONFIG_CFG80211 is not set | 437 | # CONFIG_CFG80211 is not set |
407 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
408 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | ||
409 | # CONFIG_WIRELESS_EXT is not set | ||
410 | # CONFIG_LIB80211 is not set | 438 | # CONFIG_LIB80211 is not set |
411 | 439 | ||
412 | # | 440 | # |
@@ -540,6 +568,10 @@ CONFIG_BLK_DEV=y | |||
540 | # CONFIG_BLK_DEV_COW_COMMON is not set | 568 | # CONFIG_BLK_DEV_COW_COMMON is not set |
541 | CONFIG_BLK_DEV_LOOP=y | 569 | CONFIG_BLK_DEV_LOOP=y |
542 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 570 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
571 | |||
572 | # | ||
573 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
574 | # | ||
543 | # CONFIG_BLK_DEV_NBD is not set | 575 | # CONFIG_BLK_DEV_NBD is not set |
544 | # CONFIG_BLK_DEV_SX8 is not set | 576 | # CONFIG_BLK_DEV_SX8 is not set |
545 | # CONFIG_BLK_DEV_UB is not set | 577 | # CONFIG_BLK_DEV_UB is not set |
@@ -551,6 +583,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
551 | # CONFIG_ATA_OVER_ETH is not set | 583 | # CONFIG_ATA_OVER_ETH is not set |
552 | # CONFIG_BLK_DEV_HD is not set | 584 | # CONFIG_BLK_DEV_HD is not set |
553 | CONFIG_MISC_DEVICES=y | 585 | CONFIG_MISC_DEVICES=y |
586 | # CONFIG_AD525X_DPOT is not set | ||
554 | # CONFIG_PHANTOM is not set | 587 | # CONFIG_PHANTOM is not set |
555 | # CONFIG_SGI_IOC4 is not set | 588 | # CONFIG_SGI_IOC4 is not set |
556 | # CONFIG_TIFM_CORE is not set | 589 | # CONFIG_TIFM_CORE is not set |
@@ -558,6 +591,8 @@ CONFIG_MISC_DEVICES=y | |||
558 | # CONFIG_ENCLOSURE_SERVICES is not set | 591 | # CONFIG_ENCLOSURE_SERVICES is not set |
559 | # CONFIG_HP_ILO is not set | 592 | # CONFIG_HP_ILO is not set |
560 | # CONFIG_ISL29003 is not set | 593 | # CONFIG_ISL29003 is not set |
594 | # CONFIG_DS1682 is not set | ||
595 | # CONFIG_TI_DAC7512 is not set | ||
561 | # CONFIG_C2PORT is not set | 596 | # CONFIG_C2PORT is not set |
562 | 597 | ||
563 | # | 598 | # |
@@ -621,7 +656,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
621 | # | 656 | # |
622 | 657 | ||
623 | # | 658 | # |
624 | # See the help texts for more information. | 659 | # The newer stack is recommended. |
625 | # | 660 | # |
626 | # CONFIG_FIREWIRE is not set | 661 | # CONFIG_FIREWIRE is not set |
627 | # CONFIG_IEEE1394 is not set | 662 | # CONFIG_IEEE1394 is not set |
@@ -710,8 +745,11 @@ CONFIG_GIANFAR=y | |||
710 | # CONFIG_NETDEV_10000 is not set | 745 | # CONFIG_NETDEV_10000 is not set |
711 | # CONFIG_TR is not set | 746 | # CONFIG_TR is not set |
712 | CONFIG_WLAN=y | 747 | CONFIG_WLAN=y |
713 | # CONFIG_WLAN_PRE80211 is not set | 748 | # CONFIG_AIRO is not set |
714 | # CONFIG_WLAN_80211 is not set | 749 | # CONFIG_ATMEL is not set |
750 | # CONFIG_PRISM54 is not set | ||
751 | # CONFIG_USB_ZD1201 is not set | ||
752 | # CONFIG_HOSTAP is not set | ||
715 | 753 | ||
716 | # | 754 | # |
717 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 755 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -734,6 +772,7 @@ CONFIG_WLAN=y | |||
734 | # CONFIG_NETCONSOLE is not set | 772 | # CONFIG_NETCONSOLE is not set |
735 | # CONFIG_NETPOLL is not set | 773 | # CONFIG_NETPOLL is not set |
736 | # CONFIG_NET_POLL_CONTROLLER is not set | 774 | # CONFIG_NET_POLL_CONTROLLER is not set |
775 | # CONFIG_VMXNET3 is not set | ||
737 | # CONFIG_ISDN is not set | 776 | # CONFIG_ISDN is not set |
738 | # CONFIG_PHONE is not set | 777 | # CONFIG_PHONE is not set |
739 | 778 | ||
@@ -743,6 +782,7 @@ CONFIG_WLAN=y | |||
743 | CONFIG_INPUT=y | 782 | CONFIG_INPUT=y |
744 | # CONFIG_INPUT_FF_MEMLESS is not set | 783 | # CONFIG_INPUT_FF_MEMLESS is not set |
745 | # CONFIG_INPUT_POLLDEV is not set | 784 | # CONFIG_INPUT_POLLDEV is not set |
785 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
746 | 786 | ||
747 | # | 787 | # |
748 | # Userland interfaces | 788 | # Userland interfaces |
@@ -768,6 +808,7 @@ CONFIG_INPUT_TOUCHSCREEN=y | |||
768 | # CONFIG_TOUCHSCREEN_AD7879_I2C is not set | 808 | # CONFIG_TOUCHSCREEN_AD7879_I2C is not set |
769 | # CONFIG_TOUCHSCREEN_AD7879_SPI is not set | 809 | # CONFIG_TOUCHSCREEN_AD7879_SPI is not set |
770 | # CONFIG_TOUCHSCREEN_AD7879 is not set | 810 | # CONFIG_TOUCHSCREEN_AD7879 is not set |
811 | # CONFIG_TOUCHSCREEN_DYNAPRO is not set | ||
771 | # CONFIG_TOUCHSCREEN_EETI is not set | 812 | # CONFIG_TOUCHSCREEN_EETI is not set |
772 | # CONFIG_TOUCHSCREEN_FUJITSU is not set | 813 | # CONFIG_TOUCHSCREEN_FUJITSU is not set |
773 | # CONFIG_TOUCHSCREEN_GUNZE is not set | 814 | # CONFIG_TOUCHSCREEN_GUNZE is not set |
@@ -826,6 +867,7 @@ CONFIG_SERIAL_CORE=y | |||
826 | CONFIG_SERIAL_CORE_CONSOLE=y | 867 | CONFIG_SERIAL_CORE_CONSOLE=y |
827 | # CONFIG_SERIAL_JSM is not set | 868 | # CONFIG_SERIAL_JSM is not set |
828 | # CONFIG_SERIAL_OF_PLATFORM is not set | 869 | # CONFIG_SERIAL_OF_PLATFORM is not set |
870 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
829 | CONFIG_UNIX98_PTYS=y | 871 | CONFIG_UNIX98_PTYS=y |
830 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 872 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
831 | CONFIG_LEGACY_PTYS=y | 873 | CONFIG_LEGACY_PTYS=y |
@@ -883,11 +925,6 @@ CONFIG_I2C_MPC=y | |||
883 | # CONFIG_I2C_TINY_USB is not set | 925 | # CONFIG_I2C_TINY_USB is not set |
884 | 926 | ||
885 | # | 927 | # |
886 | # Graphics adapter I2C/DDC channel drivers | ||
887 | # | ||
888 | # CONFIG_I2C_VOODOO3 is not set | ||
889 | |||
890 | # | ||
891 | # Other I2C/SMBus bus drivers | 928 | # Other I2C/SMBus bus drivers |
892 | # | 929 | # |
893 | # CONFIG_I2C_PCA_PLATFORM is not set | 930 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -896,7 +933,6 @@ CONFIG_I2C_MPC=y | |||
896 | # | 933 | # |
897 | # Miscellaneous I2C Chip support | 934 | # Miscellaneous I2C Chip support |
898 | # | 935 | # |
899 | # CONFIG_DS1682 is not set | ||
900 | # CONFIG_SENSORS_TSL2550 is not set | 936 | # CONFIG_SENSORS_TSL2550 is not set |
901 | # CONFIG_I2C_DEBUG_CORE is not set | 937 | # CONFIG_I2C_DEBUG_CORE is not set |
902 | # CONFIG_I2C_DEBUG_ALGO is not set | 938 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -910,6 +946,8 @@ CONFIG_SPI_MASTER=y | |||
910 | # | 946 | # |
911 | # CONFIG_SPI_BITBANG is not set | 947 | # CONFIG_SPI_BITBANG is not set |
912 | # CONFIG_SPI_MPC8xxx is not set | 948 | # CONFIG_SPI_MPC8xxx is not set |
949 | # CONFIG_SPI_XILINX is not set | ||
950 | # CONFIG_SPI_DESIGNWARE is not set | ||
913 | 951 | ||
914 | # | 952 | # |
915 | # SPI Protocol Masters | 953 | # SPI Protocol Masters |
@@ -957,6 +995,7 @@ CONFIG_HWMON_DEBUG_CHIP=y | |||
957 | # CONFIG_SENSORS_IT87 is not set | 995 | # CONFIG_SENSORS_IT87 is not set |
958 | # CONFIG_SENSORS_LM63 is not set | 996 | # CONFIG_SENSORS_LM63 is not set |
959 | # CONFIG_SENSORS_LM70 is not set | 997 | # CONFIG_SENSORS_LM70 is not set |
998 | # CONFIG_SENSORS_LM73 is not set | ||
960 | CONFIG_SENSORS_LM75=y | 999 | CONFIG_SENSORS_LM75=y |
961 | # CONFIG_SENSORS_LM77 is not set | 1000 | # CONFIG_SENSORS_LM77 is not set |
962 | # CONFIG_SENSORS_LM78 is not set | 1001 | # CONFIG_SENSORS_LM78 is not set |
@@ -997,6 +1036,7 @@ CONFIG_SENSORS_W83781D=y | |||
997 | # CONFIG_SENSORS_W83627HF is not set | 1036 | # CONFIG_SENSORS_W83627HF is not set |
998 | # CONFIG_SENSORS_W83627EHF is not set | 1037 | # CONFIG_SENSORS_W83627EHF is not set |
999 | # CONFIG_SENSORS_LIS3_SPI is not set | 1038 | # CONFIG_SENSORS_LIS3_SPI is not set |
1039 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1000 | # CONFIG_THERMAL is not set | 1040 | # CONFIG_THERMAL is not set |
1001 | # CONFIG_WATCHDOG is not set | 1041 | # CONFIG_WATCHDOG is not set |
1002 | CONFIG_SSB_POSSIBLE=y | 1042 | CONFIG_SSB_POSSIBLE=y |
@@ -1015,6 +1055,7 @@ CONFIG_SSB_POSSIBLE=y | |||
1015 | # CONFIG_TWL4030_CORE is not set | 1055 | # CONFIG_TWL4030_CORE is not set |
1016 | # CONFIG_MFD_TMIO is not set | 1056 | # CONFIG_MFD_TMIO is not set |
1017 | # CONFIG_PMIC_DA903X is not set | 1057 | # CONFIG_PMIC_DA903X is not set |
1058 | # CONFIG_PMIC_ADP5520 is not set | ||
1018 | # CONFIG_MFD_WM8400 is not set | 1059 | # CONFIG_MFD_WM8400 is not set |
1019 | # CONFIG_MFD_WM831X is not set | 1060 | # CONFIG_MFD_WM831X is not set |
1020 | # CONFIG_MFD_WM8350_I2C is not set | 1061 | # CONFIG_MFD_WM8350_I2C is not set |
@@ -1022,6 +1063,8 @@ CONFIG_SSB_POSSIBLE=y | |||
1022 | # CONFIG_MFD_MC13783 is not set | 1063 | # CONFIG_MFD_MC13783 is not set |
1023 | # CONFIG_AB3100_CORE is not set | 1064 | # CONFIG_AB3100_CORE is not set |
1024 | # CONFIG_EZX_PCAP is not set | 1065 | # CONFIG_EZX_PCAP is not set |
1066 | # CONFIG_MFD_88PM8607 is not set | ||
1067 | # CONFIG_AB4500_CORE is not set | ||
1025 | # CONFIG_REGULATOR is not set | 1068 | # CONFIG_REGULATOR is not set |
1026 | # CONFIG_MEDIA_SUPPORT is not set | 1069 | # CONFIG_MEDIA_SUPPORT is not set |
1027 | 1070 | ||
@@ -1192,6 +1235,7 @@ CONFIG_USB_MON=y | |||
1192 | CONFIG_USB_EHCI_HCD=y | 1235 | CONFIG_USB_EHCI_HCD=y |
1193 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1236 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1194 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1237 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1238 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1195 | # CONFIG_USB_EHCI_FSL is not set | 1239 | # CONFIG_USB_EHCI_FSL is not set |
1196 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1240 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1197 | # CONFIG_USB_OXU210HP_HCD is not set | 1241 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1318,6 +1362,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1318 | # CONFIG_RTC_DRV_PCF8563 is not set | 1362 | # CONFIG_RTC_DRV_PCF8563 is not set |
1319 | # CONFIG_RTC_DRV_PCF8583 is not set | 1363 | # CONFIG_RTC_DRV_PCF8583 is not set |
1320 | # CONFIG_RTC_DRV_M41T80 is not set | 1364 | # CONFIG_RTC_DRV_M41T80 is not set |
1365 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1321 | # CONFIG_RTC_DRV_S35390A is not set | 1366 | # CONFIG_RTC_DRV_S35390A is not set |
1322 | # CONFIG_RTC_DRV_FM3130 is not set | 1367 | # CONFIG_RTC_DRV_FM3130 is not set |
1323 | # CONFIG_RTC_DRV_RX8581 is not set | 1368 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1347,7 +1392,9 @@ CONFIG_RTC_INTF_DEV=y | |||
1347 | # CONFIG_RTC_DRV_M48T86 is not set | 1392 | # CONFIG_RTC_DRV_M48T86 is not set |
1348 | # CONFIG_RTC_DRV_M48T35 is not set | 1393 | # CONFIG_RTC_DRV_M48T35 is not set |
1349 | # CONFIG_RTC_DRV_M48T59 is not set | 1394 | # CONFIG_RTC_DRV_M48T59 is not set |
1395 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1350 | # CONFIG_RTC_DRV_BQ4802 is not set | 1396 | # CONFIG_RTC_DRV_BQ4802 is not set |
1397 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1351 | # CONFIG_RTC_DRV_V3020 is not set | 1398 | # CONFIG_RTC_DRV_V3020 is not set |
1352 | 1399 | ||
1353 | # | 1400 | # |
@@ -1574,7 +1621,7 @@ CONFIG_FRAME_WARN=1024 | |||
1574 | # CONFIG_DEBUG_KERNEL is not set | 1621 | # CONFIG_DEBUG_KERNEL is not set |
1575 | # CONFIG_SLUB_DEBUG_ON is not set | 1622 | # CONFIG_SLUB_DEBUG_ON is not set |
1576 | # CONFIG_SLUB_STATS is not set | 1623 | # CONFIG_SLUB_STATS is not set |
1577 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1624 | CONFIG_DEBUG_BUGVERBOSE=y |
1578 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1625 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1579 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1626 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1580 | # CONFIG_LATENCYTOP is not set | 1627 | # CONFIG_LATENCYTOP is not set |
@@ -1600,7 +1647,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1600 | # CONFIG_KEYS is not set | 1647 | # CONFIG_KEYS is not set |
1601 | # CONFIG_SECURITY is not set | 1648 | # CONFIG_SECURITY is not set |
1602 | # CONFIG_SECURITYFS is not set | 1649 | # CONFIG_SECURITYFS is not set |
1603 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1650 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1651 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1652 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1653 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1654 | CONFIG_DEFAULT_SECURITY="" | ||
1604 | CONFIG_CRYPTO=y | 1655 | CONFIG_CRYPTO=y |
1605 | 1656 | ||
1606 | # | 1657 | # |
diff --git a/arch/powerpc/configs/85xx/stx_gp3_defconfig b/arch/powerpc/configs/85xx/stx_gp3_defconfig index c8327e88a987..ce313259df14 100644 --- a/arch/powerpc/configs/85xx/stx_gp3_defconfig +++ b/arch/powerpc/configs/85xx/stx_gp3_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:38 2009 | 4 | # Wed Jan 6 09:24:32 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y | |||
62 | CONFIG_GENERIC_BUG=y | 63 | CONFIG_GENERIC_BUG=y |
63 | CONFIG_DTC=y | 64 | CONFIG_DTC=y |
64 | CONFIG_DEFAULT_UIMAGE=y | 65 | CONFIG_DEFAULT_UIMAGE=y |
66 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
67 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
65 | # CONFIG_PPC_DCR_NATIVE is not set | 68 | # CONFIG_PPC_DCR_NATIVE is not set |
66 | # CONFIG_PPC_DCR_MMIO is not set | 69 | # CONFIG_PPC_DCR_MMIO is not set |
67 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 70 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -89,6 +92,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
89 | # | 92 | # |
90 | CONFIG_TREE_RCU=y | 93 | CONFIG_TREE_RCU=y |
91 | # CONFIG_TREE_PREEMPT_RCU is not set | 94 | # CONFIG_TREE_PREEMPT_RCU is not set |
95 | # CONFIG_TINY_RCU is not set | ||
92 | # CONFIG_RCU_TRACE is not set | 96 | # CONFIG_RCU_TRACE is not set |
93 | CONFIG_RCU_FANOUT=32 | 97 | CONFIG_RCU_FANOUT=32 |
94 | # CONFIG_RCU_FANOUT_EXACT is not set | 98 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -178,14 +182,41 @@ CONFIG_LBDAF=y | |||
178 | # IO Schedulers | 182 | # IO Schedulers |
179 | # | 183 | # |
180 | CONFIG_IOSCHED_NOOP=y | 184 | CONFIG_IOSCHED_NOOP=y |
181 | CONFIG_IOSCHED_AS=y | ||
182 | CONFIG_IOSCHED_DEADLINE=y | 185 | CONFIG_IOSCHED_DEADLINE=y |
183 | CONFIG_IOSCHED_CFQ=y | 186 | CONFIG_IOSCHED_CFQ=y |
184 | # CONFIG_DEFAULT_AS is not set | ||
185 | # CONFIG_DEFAULT_DEADLINE is not set | 187 | # CONFIG_DEFAULT_DEADLINE is not set |
186 | CONFIG_DEFAULT_CFQ=y | 188 | CONFIG_DEFAULT_CFQ=y |
187 | # CONFIG_DEFAULT_NOOP is not set | 189 | # CONFIG_DEFAULT_NOOP is not set |
188 | CONFIG_DEFAULT_IOSCHED="cfq" | 190 | CONFIG_DEFAULT_IOSCHED="cfq" |
191 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
192 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
193 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
194 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
195 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
196 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
197 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
198 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
199 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
200 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
201 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
202 | # CONFIG_INLINE_READ_LOCK is not set | ||
203 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
204 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
205 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
206 | CONFIG_INLINE_READ_UNLOCK=y | ||
207 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
208 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
209 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
210 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
211 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
212 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
213 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
214 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
215 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
216 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
217 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
218 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
219 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
189 | # CONFIG_FREEZER is not set | 220 | # CONFIG_FREEZER is not set |
190 | 221 | ||
191 | # | 222 | # |
@@ -194,7 +225,7 @@ CONFIG_DEFAULT_IOSCHED="cfq" | |||
194 | # CONFIG_PPC_CELL is not set | 225 | # CONFIG_PPC_CELL is not set |
195 | # CONFIG_PPC_CELL_NATIVE is not set | 226 | # CONFIG_PPC_CELL_NATIVE is not set |
196 | # CONFIG_PQ2ADS is not set | 227 | # CONFIG_PQ2ADS is not set |
197 | CONFIG_MPC85xx=y | 228 | CONFIG_FSL_SOC_BOOKE=y |
198 | # CONFIG_MPC8540_ADS is not set | 229 | # CONFIG_MPC8540_ADS is not set |
199 | # CONFIG_MPC8560_ADS is not set | 230 | # CONFIG_MPC8560_ADS is not set |
200 | # CONFIG_MPC85xx_CDS is not set | 231 | # CONFIG_MPC85xx_CDS is not set |
@@ -213,6 +244,7 @@ CONFIG_STX_GP3=y | |||
213 | # CONFIG_TQM8560 is not set | 244 | # CONFIG_TQM8560 is not set |
214 | # CONFIG_SBC8548 is not set | 245 | # CONFIG_SBC8548 is not set |
215 | # CONFIG_SBC8560 is not set | 246 | # CONFIG_SBC8560 is not set |
247 | # CONFIG_P4080_DS is not set | ||
216 | # CONFIG_IPIC is not set | 248 | # CONFIG_IPIC is not set |
217 | CONFIG_MPIC=y | 249 | CONFIG_MPIC=y |
218 | # CONFIG_MPIC_WEIRD is not set | 250 | # CONFIG_MPIC_WEIRD is not set |
@@ -257,6 +289,7 @@ CONFIG_MATH_EMULATION=y | |||
257 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 289 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
258 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 290 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
259 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 291 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
292 | CONFIG_SPARSE_IRQ=y | ||
260 | CONFIG_MAX_ACTIVE_REGIONS=32 | 293 | CONFIG_MAX_ACTIVE_REGIONS=32 |
261 | CONFIG_ARCH_FLATMEM_ENABLE=y | 294 | CONFIG_ARCH_FLATMEM_ENABLE=y |
262 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 295 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -273,8 +306,6 @@ CONFIG_MIGRATION=y | |||
273 | CONFIG_ZONE_DMA_FLAG=1 | 306 | CONFIG_ZONE_DMA_FLAG=1 |
274 | CONFIG_BOUNCE=y | 307 | CONFIG_BOUNCE=y |
275 | CONFIG_VIRT_TO_BUS=y | 308 | CONFIG_VIRT_TO_BUS=y |
276 | CONFIG_HAVE_MLOCK=y | ||
277 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
278 | # CONFIG_KSM is not set | 309 | # CONFIG_KSM is not set |
279 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 310 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
280 | CONFIG_PPC_4K_PAGES=y | 311 | CONFIG_PPC_4K_PAGES=y |
@@ -463,9 +494,6 @@ CONFIG_NET_PKTGEN=y | |||
463 | # CONFIG_AF_RXRPC is not set | 494 | # CONFIG_AF_RXRPC is not set |
464 | CONFIG_WIRELESS=y | 495 | CONFIG_WIRELESS=y |
465 | # CONFIG_CFG80211 is not set | 496 | # CONFIG_CFG80211 is not set |
466 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
467 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
468 | # CONFIG_WIRELESS_EXT is not set | ||
469 | # CONFIG_LIB80211 is not set | 497 | # CONFIG_LIB80211 is not set |
470 | 498 | ||
471 | # | 499 | # |
@@ -513,6 +541,10 @@ CONFIG_BLK_DEV=y | |||
513 | # CONFIG_BLK_DEV_COW_COMMON is not set | 541 | # CONFIG_BLK_DEV_COW_COMMON is not set |
514 | CONFIG_BLK_DEV_LOOP=m | 542 | CONFIG_BLK_DEV_LOOP=m |
515 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 543 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
544 | |||
545 | # | ||
546 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
547 | # | ||
516 | CONFIG_BLK_DEV_NBD=m | 548 | CONFIG_BLK_DEV_NBD=m |
517 | # CONFIG_BLK_DEV_SX8 is not set | 549 | # CONFIG_BLK_DEV_SX8 is not set |
518 | CONFIG_BLK_DEV_RAM=y | 550 | CONFIG_BLK_DEV_RAM=y |
@@ -523,6 +555,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
523 | # CONFIG_ATA_OVER_ETH is not set | 555 | # CONFIG_ATA_OVER_ETH is not set |
524 | # CONFIG_BLK_DEV_HD is not set | 556 | # CONFIG_BLK_DEV_HD is not set |
525 | CONFIG_MISC_DEVICES=y | 557 | CONFIG_MISC_DEVICES=y |
558 | # CONFIG_AD525X_DPOT is not set | ||
526 | # CONFIG_PHANTOM is not set | 559 | # CONFIG_PHANTOM is not set |
527 | # CONFIG_SGI_IOC4 is not set | 560 | # CONFIG_SGI_IOC4 is not set |
528 | # CONFIG_TIFM_CORE is not set | 561 | # CONFIG_TIFM_CORE is not set |
@@ -530,6 +563,7 @@ CONFIG_MISC_DEVICES=y | |||
530 | # CONFIG_ENCLOSURE_SERVICES is not set | 563 | # CONFIG_ENCLOSURE_SERVICES is not set |
531 | # CONFIG_HP_ILO is not set | 564 | # CONFIG_HP_ILO is not set |
532 | # CONFIG_ISL29003 is not set | 565 | # CONFIG_ISL29003 is not set |
566 | # CONFIG_DS1682 is not set | ||
533 | # CONFIG_C2PORT is not set | 567 | # CONFIG_C2PORT is not set |
534 | 568 | ||
535 | # | 569 | # |
@@ -633,7 +667,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
633 | # CONFIG_SCSI_BNX2_ISCSI is not set | 667 | # CONFIG_SCSI_BNX2_ISCSI is not set |
634 | # CONFIG_BE2ISCSI is not set | 668 | # CONFIG_BE2ISCSI is not set |
635 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 669 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
670 | # CONFIG_SCSI_HPSA is not set | ||
636 | # CONFIG_SCSI_3W_9XXX is not set | 671 | # CONFIG_SCSI_3W_9XXX is not set |
672 | # CONFIG_SCSI_3W_SAS is not set | ||
637 | # CONFIG_SCSI_ACARD is not set | 673 | # CONFIG_SCSI_ACARD is not set |
638 | # CONFIG_SCSI_AACRAID is not set | 674 | # CONFIG_SCSI_AACRAID is not set |
639 | # CONFIG_SCSI_AIC7XXX is not set | 675 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -673,6 +709,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
673 | # CONFIG_SCSI_NSP32 is not set | 709 | # CONFIG_SCSI_NSP32 is not set |
674 | # CONFIG_SCSI_DEBUG is not set | 710 | # CONFIG_SCSI_DEBUG is not set |
675 | # CONFIG_SCSI_PMCRAID is not set | 711 | # CONFIG_SCSI_PMCRAID is not set |
712 | # CONFIG_SCSI_PM8001 is not set | ||
676 | # CONFIG_SCSI_SRP is not set | 713 | # CONFIG_SCSI_SRP is not set |
677 | # CONFIG_SCSI_BFA_FC is not set | 714 | # CONFIG_SCSI_BFA_FC is not set |
678 | # CONFIG_SCSI_DH is not set | 715 | # CONFIG_SCSI_DH is not set |
@@ -690,7 +727,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
690 | # | 727 | # |
691 | 728 | ||
692 | # | 729 | # |
693 | # See the help texts for more information. | 730 | # The newer stack is recommended. |
694 | # | 731 | # |
695 | # CONFIG_FIREWIRE is not set | 732 | # CONFIG_FIREWIRE is not set |
696 | # CONFIG_IEEE1394 is not set | 733 | # CONFIG_IEEE1394 is not set |
@@ -797,8 +834,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
797 | # CONFIG_BE2NET is not set | 834 | # CONFIG_BE2NET is not set |
798 | # CONFIG_TR is not set | 835 | # CONFIG_TR is not set |
799 | CONFIG_WLAN=y | 836 | CONFIG_WLAN=y |
800 | # CONFIG_WLAN_PRE80211 is not set | 837 | # CONFIG_AIRO is not set |
801 | # CONFIG_WLAN_80211 is not set | 838 | # CONFIG_ATMEL is not set |
839 | # CONFIG_PRISM54 is not set | ||
840 | # CONFIG_HOSTAP is not set | ||
802 | 841 | ||
803 | # | 842 | # |
804 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 843 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -813,6 +852,7 @@ CONFIG_WLAN=y | |||
813 | # CONFIG_NETCONSOLE is not set | 852 | # CONFIG_NETCONSOLE is not set |
814 | # CONFIG_NETPOLL is not set | 853 | # CONFIG_NETPOLL is not set |
815 | # CONFIG_NET_POLL_CONTROLLER is not set | 854 | # CONFIG_NET_POLL_CONTROLLER is not set |
855 | # CONFIG_VMXNET3 is not set | ||
816 | # CONFIG_ISDN is not set | 856 | # CONFIG_ISDN is not set |
817 | # CONFIG_PHONE is not set | 857 | # CONFIG_PHONE is not set |
818 | 858 | ||
@@ -822,6 +862,7 @@ CONFIG_WLAN=y | |||
822 | CONFIG_INPUT=y | 862 | CONFIG_INPUT=y |
823 | # CONFIG_INPUT_FF_MEMLESS is not set | 863 | # CONFIG_INPUT_FF_MEMLESS is not set |
824 | # CONFIG_INPUT_POLLDEV is not set | 864 | # CONFIG_INPUT_POLLDEV is not set |
865 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
825 | 866 | ||
826 | # | 867 | # |
827 | # Userland interfaces | 868 | # Userland interfaces |
@@ -881,6 +922,7 @@ CONFIG_SERIO_SERPORT=y | |||
881 | CONFIG_SERIO_LIBPS2=y | 922 | CONFIG_SERIO_LIBPS2=y |
882 | # CONFIG_SERIO_RAW is not set | 923 | # CONFIG_SERIO_RAW is not set |
883 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | 924 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set |
925 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
884 | # CONFIG_GAMEPORT is not set | 926 | # CONFIG_GAMEPORT is not set |
885 | 927 | ||
886 | # | 928 | # |
@@ -905,6 +947,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
905 | CONFIG_SERIAL_CPM=y | 947 | CONFIG_SERIAL_CPM=y |
906 | CONFIG_SERIAL_CPM_CONSOLE=y | 948 | CONFIG_SERIAL_CPM_CONSOLE=y |
907 | # CONFIG_SERIAL_JSM is not set | 949 | # CONFIG_SERIAL_JSM is not set |
950 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
908 | CONFIG_UNIX98_PTYS=y | 951 | CONFIG_UNIX98_PTYS=y |
909 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 952 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
910 | CONFIG_LEGACY_PTYS=y | 953 | CONFIG_LEGACY_PTYS=y |
@@ -970,11 +1013,6 @@ CONFIG_I2C_ALGOBIT=m | |||
970 | # CONFIG_I2C_TAOS_EVM is not set | 1013 | # CONFIG_I2C_TAOS_EVM is not set |
971 | 1014 | ||
972 | # | 1015 | # |
973 | # Graphics adapter I2C/DDC channel drivers | ||
974 | # | ||
975 | # CONFIG_I2C_VOODOO3 is not set | ||
976 | |||
977 | # | ||
978 | # Other I2C/SMBus bus drivers | 1016 | # Other I2C/SMBus bus drivers |
979 | # | 1017 | # |
980 | # CONFIG_I2C_PCA_PLATFORM is not set | 1018 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -983,7 +1021,6 @@ CONFIG_I2C_ALGOBIT=m | |||
983 | # | 1021 | # |
984 | # Miscellaneous I2C Chip support | 1022 | # Miscellaneous I2C Chip support |
985 | # | 1023 | # |
986 | # CONFIG_DS1682 is not set | ||
987 | # CONFIG_SENSORS_TSL2550 is not set | 1024 | # CONFIG_SENSORS_TSL2550 is not set |
988 | # CONFIG_I2C_DEBUG_CORE is not set | 1025 | # CONFIG_I2C_DEBUG_CORE is not set |
989 | # CONFIG_I2C_DEBUG_ALGO is not set | 1026 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1016,6 +1053,7 @@ CONFIG_GPIOLIB=y | |||
1016 | # | 1053 | # |
1017 | # PCI GPIO expanders: | 1054 | # PCI GPIO expanders: |
1018 | # | 1055 | # |
1056 | # CONFIG_GPIO_CS5535 is not set | ||
1019 | # CONFIG_GPIO_BT8XX is not set | 1057 | # CONFIG_GPIO_BT8XX is not set |
1020 | # CONFIG_GPIO_LANGWELL is not set | 1058 | # CONFIG_GPIO_LANGWELL is not set |
1021 | 1059 | ||
@@ -1058,6 +1096,7 @@ CONFIG_HWMON=y | |||
1058 | # CONFIG_SENSORS_GL520SM is not set | 1096 | # CONFIG_SENSORS_GL520SM is not set |
1059 | # CONFIG_SENSORS_IT87 is not set | 1097 | # CONFIG_SENSORS_IT87 is not set |
1060 | # CONFIG_SENSORS_LM63 is not set | 1098 | # CONFIG_SENSORS_LM63 is not set |
1099 | # CONFIG_SENSORS_LM73 is not set | ||
1061 | # CONFIG_SENSORS_LM75 is not set | 1100 | # CONFIG_SENSORS_LM75 is not set |
1062 | # CONFIG_SENSORS_LM77 is not set | 1101 | # CONFIG_SENSORS_LM77 is not set |
1063 | # CONFIG_SENSORS_LM78 is not set | 1102 | # CONFIG_SENSORS_LM78 is not set |
@@ -1097,6 +1136,7 @@ CONFIG_HWMON=y | |||
1097 | # CONFIG_SENSORS_W83L786NG is not set | 1136 | # CONFIG_SENSORS_W83L786NG is not set |
1098 | # CONFIG_SENSORS_W83627HF is not set | 1137 | # CONFIG_SENSORS_W83627HF is not set |
1099 | # CONFIG_SENSORS_W83627EHF is not set | 1138 | # CONFIG_SENSORS_W83627EHF is not set |
1139 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1100 | # CONFIG_THERMAL is not set | 1140 | # CONFIG_THERMAL is not set |
1101 | # CONFIG_WATCHDOG is not set | 1141 | # CONFIG_WATCHDOG is not set |
1102 | CONFIG_SSB_POSSIBLE=y | 1142 | CONFIG_SSB_POSSIBLE=y |
@@ -1115,7 +1155,6 @@ CONFIG_SSB_POSSIBLE=y | |||
1115 | # CONFIG_TPS65010 is not set | 1155 | # CONFIG_TPS65010 is not set |
1116 | # CONFIG_MFD_TMIO is not set | 1156 | # CONFIG_MFD_TMIO is not set |
1117 | # CONFIG_MFD_WM8400 is not set | 1157 | # CONFIG_MFD_WM8400 is not set |
1118 | # CONFIG_MFD_WM831X is not set | ||
1119 | # CONFIG_MFD_WM8350_I2C is not set | 1158 | # CONFIG_MFD_WM8350_I2C is not set |
1120 | # CONFIG_MFD_PCF50633 is not set | 1159 | # CONFIG_MFD_PCF50633 is not set |
1121 | # CONFIG_AB3100_CORE is not set | 1160 | # CONFIG_AB3100_CORE is not set |
@@ -1465,7 +1504,11 @@ CONFIG_BDI_SWITCH=y | |||
1465 | # CONFIG_KEYS is not set | 1504 | # CONFIG_KEYS is not set |
1466 | # CONFIG_SECURITY is not set | 1505 | # CONFIG_SECURITY is not set |
1467 | # CONFIG_SECURITYFS is not set | 1506 | # CONFIG_SECURITYFS is not set |
1468 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1507 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1508 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1509 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1510 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1511 | CONFIG_DEFAULT_SECURITY="" | ||
1469 | CONFIG_CRYPTO=y | 1512 | CONFIG_CRYPTO=y |
1470 | 1513 | ||
1471 | # | 1514 | # |
diff --git a/arch/powerpc/configs/85xx/tqm8540_defconfig b/arch/powerpc/configs/85xx/tqm8540_defconfig index 82563703d5e3..0824b4667229 100644 --- a/arch/powerpc/configs/85xx/tqm8540_defconfig +++ b/arch/powerpc/configs/85xx/tqm8540_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:39 2009 | 4 | # Wed Jan 6 09:24:33 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y | |||
61 | CONFIG_GENERIC_BUG=y | 62 | CONFIG_GENERIC_BUG=y |
62 | CONFIG_DTC=y | 63 | CONFIG_DTC=y |
63 | CONFIG_DEFAULT_UIMAGE=y | 64 | CONFIG_DEFAULT_UIMAGE=y |
65 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
66 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
64 | # CONFIG_PPC_DCR_NATIVE is not set | 67 | # CONFIG_PPC_DCR_NATIVE is not set |
65 | # CONFIG_PPC_DCR_MMIO is not set | 68 | # CONFIG_PPC_DCR_MMIO is not set |
66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 69 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
88 | # | 91 | # |
89 | CONFIG_TREE_RCU=y | 92 | CONFIG_TREE_RCU=y |
90 | # CONFIG_TREE_PREEMPT_RCU is not set | 93 | # CONFIG_TREE_PREEMPT_RCU is not set |
94 | # CONFIG_TINY_RCU is not set | ||
91 | # CONFIG_RCU_TRACE is not set | 95 | # CONFIG_RCU_TRACE is not set |
92 | CONFIG_RCU_FANOUT=32 | 96 | CONFIG_RCU_FANOUT=32 |
93 | # CONFIG_RCU_FANOUT_EXACT is not set | 97 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -169,14 +173,41 @@ CONFIG_LBDAF=y | |||
169 | # IO Schedulers | 173 | # IO Schedulers |
170 | # | 174 | # |
171 | CONFIG_IOSCHED_NOOP=y | 175 | CONFIG_IOSCHED_NOOP=y |
172 | CONFIG_IOSCHED_AS=y | ||
173 | CONFIG_IOSCHED_DEADLINE=y | 176 | CONFIG_IOSCHED_DEADLINE=y |
174 | CONFIG_IOSCHED_CFQ=y | 177 | CONFIG_IOSCHED_CFQ=y |
175 | CONFIG_DEFAULT_AS=y | ||
176 | # CONFIG_DEFAULT_DEADLINE is not set | 178 | # CONFIG_DEFAULT_DEADLINE is not set |
177 | # CONFIG_DEFAULT_CFQ is not set | 179 | CONFIG_DEFAULT_CFQ=y |
178 | # CONFIG_DEFAULT_NOOP is not set | 180 | # CONFIG_DEFAULT_NOOP is not set |
179 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 181 | CONFIG_DEFAULT_IOSCHED="cfq" |
182 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
183 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
184 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
185 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
186 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
188 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
189 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
190 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
191 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
192 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
193 | # CONFIG_INLINE_READ_LOCK is not set | ||
194 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
195 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
196 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
197 | CONFIG_INLINE_READ_UNLOCK=y | ||
198 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
199 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
200 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
201 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
202 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
203 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
204 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
206 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
207 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
208 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
209 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
210 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
180 | # CONFIG_FREEZER is not set | 211 | # CONFIG_FREEZER is not set |
181 | 212 | ||
182 | # | 213 | # |
@@ -185,7 +216,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
185 | # CONFIG_PPC_CELL is not set | 216 | # CONFIG_PPC_CELL is not set |
186 | # CONFIG_PPC_CELL_NATIVE is not set | 217 | # CONFIG_PPC_CELL_NATIVE is not set |
187 | # CONFIG_PQ2ADS is not set | 218 | # CONFIG_PQ2ADS is not set |
188 | CONFIG_MPC85xx=y | 219 | CONFIG_FSL_SOC_BOOKE=y |
189 | # CONFIG_MPC8540_ADS is not set | 220 | # CONFIG_MPC8540_ADS is not set |
190 | # CONFIG_MPC8560_ADS is not set | 221 | # CONFIG_MPC8560_ADS is not set |
191 | # CONFIG_MPC85xx_CDS is not set | 222 | # CONFIG_MPC85xx_CDS is not set |
@@ -204,6 +235,7 @@ CONFIG_TQM8540=y | |||
204 | # CONFIG_TQM8560 is not set | 235 | # CONFIG_TQM8560 is not set |
205 | # CONFIG_SBC8548 is not set | 236 | # CONFIG_SBC8548 is not set |
206 | # CONFIG_SBC8560 is not set | 237 | # CONFIG_SBC8560 is not set |
238 | # CONFIG_P4080_DS is not set | ||
207 | CONFIG_TQM85xx=y | 239 | CONFIG_TQM85xx=y |
208 | # CONFIG_IPIC is not set | 240 | # CONFIG_IPIC is not set |
209 | CONFIG_MPIC=y | 241 | CONFIG_MPIC=y |
@@ -248,6 +280,7 @@ CONFIG_MATH_EMULATION=y | |||
248 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 280 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
249 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 281 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
250 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 282 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
283 | CONFIG_SPARSE_IRQ=y | ||
251 | CONFIG_MAX_ACTIVE_REGIONS=32 | 284 | CONFIG_MAX_ACTIVE_REGIONS=32 |
252 | CONFIG_ARCH_FLATMEM_ENABLE=y | 285 | CONFIG_ARCH_FLATMEM_ENABLE=y |
253 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 286 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -264,8 +297,6 @@ CONFIG_MIGRATION=y | |||
264 | CONFIG_ZONE_DMA_FLAG=1 | 297 | CONFIG_ZONE_DMA_FLAG=1 |
265 | CONFIG_BOUNCE=y | 298 | CONFIG_BOUNCE=y |
266 | CONFIG_VIRT_TO_BUS=y | 299 | CONFIG_VIRT_TO_BUS=y |
267 | CONFIG_HAVE_MLOCK=y | ||
268 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
269 | # CONFIG_KSM is not set | 300 | # CONFIG_KSM is not set |
270 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 301 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
271 | CONFIG_PPC_4K_PAGES=y | 302 | CONFIG_PPC_4K_PAGES=y |
@@ -391,9 +422,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
391 | # CONFIG_AF_RXRPC is not set | 422 | # CONFIG_AF_RXRPC is not set |
392 | CONFIG_WIRELESS=y | 423 | CONFIG_WIRELESS=y |
393 | # CONFIG_CFG80211 is not set | 424 | # CONFIG_CFG80211 is not set |
394 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
395 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
396 | # CONFIG_WIRELESS_EXT is not set | ||
397 | # CONFIG_LIB80211 is not set | 425 | # CONFIG_LIB80211 is not set |
398 | 426 | ||
399 | # | 427 | # |
@@ -510,6 +538,10 @@ CONFIG_BLK_DEV=y | |||
510 | # CONFIG_BLK_DEV_COW_COMMON is not set | 538 | # CONFIG_BLK_DEV_COW_COMMON is not set |
511 | CONFIG_BLK_DEV_LOOP=y | 539 | CONFIG_BLK_DEV_LOOP=y |
512 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 540 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
541 | |||
542 | # | ||
543 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
544 | # | ||
513 | # CONFIG_BLK_DEV_NBD is not set | 545 | # CONFIG_BLK_DEV_NBD is not set |
514 | # CONFIG_BLK_DEV_SX8 is not set | 546 | # CONFIG_BLK_DEV_SX8 is not set |
515 | CONFIG_BLK_DEV_RAM=y | 547 | CONFIG_BLK_DEV_RAM=y |
@@ -520,6 +552,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
520 | # CONFIG_ATA_OVER_ETH is not set | 552 | # CONFIG_ATA_OVER_ETH is not set |
521 | # CONFIG_BLK_DEV_HD is not set | 553 | # CONFIG_BLK_DEV_HD is not set |
522 | CONFIG_MISC_DEVICES=y | 554 | CONFIG_MISC_DEVICES=y |
555 | # CONFIG_AD525X_DPOT is not set | ||
523 | # CONFIG_PHANTOM is not set | 556 | # CONFIG_PHANTOM is not set |
524 | # CONFIG_SGI_IOC4 is not set | 557 | # CONFIG_SGI_IOC4 is not set |
525 | # CONFIG_TIFM_CORE is not set | 558 | # CONFIG_TIFM_CORE is not set |
@@ -527,6 +560,7 @@ CONFIG_MISC_DEVICES=y | |||
527 | # CONFIG_ENCLOSURE_SERVICES is not set | 560 | # CONFIG_ENCLOSURE_SERVICES is not set |
528 | # CONFIG_HP_ILO is not set | 561 | # CONFIG_HP_ILO is not set |
529 | # CONFIG_ISL29003 is not set | 562 | # CONFIG_ISL29003 is not set |
563 | # CONFIG_DS1682 is not set | ||
530 | # CONFIG_C2PORT is not set | 564 | # CONFIG_C2PORT is not set |
531 | 565 | ||
532 | # | 566 | # |
@@ -615,7 +649,7 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
615 | # | 649 | # |
616 | 650 | ||
617 | # | 651 | # |
618 | # See the help texts for more information. | 652 | # The newer stack is recommended. |
619 | # | 653 | # |
620 | # CONFIG_FIREWIRE is not set | 654 | # CONFIG_FIREWIRE is not set |
621 | # CONFIG_IEEE1394 is not set | 655 | # CONFIG_IEEE1394 is not set |
@@ -738,8 +772,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
738 | # CONFIG_BE2NET is not set | 772 | # CONFIG_BE2NET is not set |
739 | # CONFIG_TR is not set | 773 | # CONFIG_TR is not set |
740 | CONFIG_WLAN=y | 774 | CONFIG_WLAN=y |
741 | # CONFIG_WLAN_PRE80211 is not set | 775 | # CONFIG_AIRO is not set |
742 | # CONFIG_WLAN_80211 is not set | 776 | # CONFIG_ATMEL is not set |
777 | # CONFIG_PRISM54 is not set | ||
778 | # CONFIG_HOSTAP is not set | ||
743 | 779 | ||
744 | # | 780 | # |
745 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 781 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -752,6 +788,7 @@ CONFIG_WLAN=y | |||
752 | # CONFIG_NETCONSOLE is not set | 788 | # CONFIG_NETCONSOLE is not set |
753 | # CONFIG_NETPOLL is not set | 789 | # CONFIG_NETPOLL is not set |
754 | # CONFIG_NET_POLL_CONTROLLER is not set | 790 | # CONFIG_NET_POLL_CONTROLLER is not set |
791 | # CONFIG_VMXNET3 is not set | ||
755 | # CONFIG_ISDN is not set | 792 | # CONFIG_ISDN is not set |
756 | # CONFIG_PHONE is not set | 793 | # CONFIG_PHONE is not set |
757 | 794 | ||
@@ -761,6 +798,7 @@ CONFIG_WLAN=y | |||
761 | CONFIG_INPUT=y | 798 | CONFIG_INPUT=y |
762 | # CONFIG_INPUT_FF_MEMLESS is not set | 799 | # CONFIG_INPUT_FF_MEMLESS is not set |
763 | # CONFIG_INPUT_POLLDEV is not set | 800 | # CONFIG_INPUT_POLLDEV is not set |
801 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
764 | 802 | ||
765 | # | 803 | # |
766 | # Userland interfaces | 804 | # Userland interfaces |
@@ -813,6 +851,7 @@ CONFIG_SERIAL_CORE=y | |||
813 | CONFIG_SERIAL_CORE_CONSOLE=y | 851 | CONFIG_SERIAL_CORE_CONSOLE=y |
814 | # CONFIG_SERIAL_JSM is not set | 852 | # CONFIG_SERIAL_JSM is not set |
815 | # CONFIG_SERIAL_OF_PLATFORM is not set | 853 | # CONFIG_SERIAL_OF_PLATFORM is not set |
854 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
816 | CONFIG_UNIX98_PTYS=y | 855 | CONFIG_UNIX98_PTYS=y |
817 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 856 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
818 | CONFIG_LEGACY_PTYS=y | 857 | CONFIG_LEGACY_PTYS=y |
@@ -871,11 +910,6 @@ CONFIG_I2C_MPC=y | |||
871 | # CONFIG_I2C_TAOS_EVM is not set | 910 | # CONFIG_I2C_TAOS_EVM is not set |
872 | 911 | ||
873 | # | 912 | # |
874 | # Graphics adapter I2C/DDC channel drivers | ||
875 | # | ||
876 | # CONFIG_I2C_VOODOO3 is not set | ||
877 | |||
878 | # | ||
879 | # Other I2C/SMBus bus drivers | 913 | # Other I2C/SMBus bus drivers |
880 | # | 914 | # |
881 | # CONFIG_I2C_PCA_PLATFORM is not set | 915 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -883,7 +917,6 @@ CONFIG_I2C_MPC=y | |||
883 | # | 917 | # |
884 | # Miscellaneous I2C Chip support | 918 | # Miscellaneous I2C Chip support |
885 | # | 919 | # |
886 | # CONFIG_DS1682 is not set | ||
887 | # CONFIG_SENSORS_TSL2550 is not set | 920 | # CONFIG_SENSORS_TSL2550 is not set |
888 | # CONFIG_I2C_DEBUG_CORE is not set | 921 | # CONFIG_I2C_DEBUG_CORE is not set |
889 | # CONFIG_I2C_DEBUG_ALGO is not set | 922 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -929,6 +962,7 @@ CONFIG_HWMON_DEBUG_CHIP=y | |||
929 | # CONFIG_SENSORS_GL520SM is not set | 962 | # CONFIG_SENSORS_GL520SM is not set |
930 | # CONFIG_SENSORS_IT87 is not set | 963 | # CONFIG_SENSORS_IT87 is not set |
931 | # CONFIG_SENSORS_LM63 is not set | 964 | # CONFIG_SENSORS_LM63 is not set |
965 | # CONFIG_SENSORS_LM73 is not set | ||
932 | CONFIG_SENSORS_LM75=y | 966 | CONFIG_SENSORS_LM75=y |
933 | # CONFIG_SENSORS_LM77 is not set | 967 | # CONFIG_SENSORS_LM77 is not set |
934 | # CONFIG_SENSORS_LM78 is not set | 968 | # CONFIG_SENSORS_LM78 is not set |
@@ -967,6 +1001,7 @@ CONFIG_SENSORS_LM75=y | |||
967 | # CONFIG_SENSORS_W83L786NG is not set | 1001 | # CONFIG_SENSORS_W83L786NG is not set |
968 | # CONFIG_SENSORS_W83627HF is not set | 1002 | # CONFIG_SENSORS_W83627HF is not set |
969 | # CONFIG_SENSORS_W83627EHF is not set | 1003 | # CONFIG_SENSORS_W83627EHF is not set |
1004 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
970 | # CONFIG_THERMAL is not set | 1005 | # CONFIG_THERMAL is not set |
971 | # CONFIG_WATCHDOG is not set | 1006 | # CONFIG_WATCHDOG is not set |
972 | CONFIG_SSB_POSSIBLE=y | 1007 | CONFIG_SSB_POSSIBLE=y |
@@ -985,11 +1020,13 @@ CONFIG_SSB_POSSIBLE=y | |||
985 | # CONFIG_TWL4030_CORE is not set | 1020 | # CONFIG_TWL4030_CORE is not set |
986 | # CONFIG_MFD_TMIO is not set | 1021 | # CONFIG_MFD_TMIO is not set |
987 | # CONFIG_PMIC_DA903X is not set | 1022 | # CONFIG_PMIC_DA903X is not set |
1023 | # CONFIG_PMIC_ADP5520 is not set | ||
988 | # CONFIG_MFD_WM8400 is not set | 1024 | # CONFIG_MFD_WM8400 is not set |
989 | # CONFIG_MFD_WM831X is not set | 1025 | # CONFIG_MFD_WM831X is not set |
990 | # CONFIG_MFD_WM8350_I2C is not set | 1026 | # CONFIG_MFD_WM8350_I2C is not set |
991 | # CONFIG_MFD_PCF50633 is not set | 1027 | # CONFIG_MFD_PCF50633 is not set |
992 | # CONFIG_AB3100_CORE is not set | 1028 | # CONFIG_AB3100_CORE is not set |
1029 | # CONFIG_MFD_88PM8607 is not set | ||
993 | # CONFIG_REGULATOR is not set | 1030 | # CONFIG_REGULATOR is not set |
994 | # CONFIG_MEDIA_SUPPORT is not set | 1031 | # CONFIG_MEDIA_SUPPORT is not set |
995 | 1032 | ||
@@ -1220,7 +1257,7 @@ CONFIG_FRAME_WARN=1024 | |||
1220 | # CONFIG_DEBUG_KERNEL is not set | 1257 | # CONFIG_DEBUG_KERNEL is not set |
1221 | # CONFIG_SLUB_DEBUG_ON is not set | 1258 | # CONFIG_SLUB_DEBUG_ON is not set |
1222 | # CONFIG_SLUB_STATS is not set | 1259 | # CONFIG_SLUB_STATS is not set |
1223 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1260 | CONFIG_DEBUG_BUGVERBOSE=y |
1224 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1261 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1225 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1262 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1226 | # CONFIG_LATENCYTOP is not set | 1263 | # CONFIG_LATENCYTOP is not set |
@@ -1246,7 +1283,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1246 | # CONFIG_KEYS is not set | 1283 | # CONFIG_KEYS is not set |
1247 | # CONFIG_SECURITY is not set | 1284 | # CONFIG_SECURITY is not set |
1248 | # CONFIG_SECURITYFS is not set | 1285 | # CONFIG_SECURITYFS is not set |
1249 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1286 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1287 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1288 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1289 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1290 | CONFIG_DEFAULT_SECURITY="" | ||
1250 | CONFIG_CRYPTO=y | 1291 | CONFIG_CRYPTO=y |
1251 | 1292 | ||
1252 | # | 1293 | # |
diff --git a/arch/powerpc/configs/85xx/tqm8541_defconfig b/arch/powerpc/configs/85xx/tqm8541_defconfig index 91d85d733827..2137be4100ed 100644 --- a/arch/powerpc/configs/85xx/tqm8541_defconfig +++ b/arch/powerpc/configs/85xx/tqm8541_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:40 2009 | 4 | # Wed Jan 6 09:24:34 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y | |||
62 | CONFIG_GENERIC_BUG=y | 63 | CONFIG_GENERIC_BUG=y |
63 | CONFIG_DTC=y | 64 | CONFIG_DTC=y |
64 | CONFIG_DEFAULT_UIMAGE=y | 65 | CONFIG_DEFAULT_UIMAGE=y |
66 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
67 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
65 | # CONFIG_PPC_DCR_NATIVE is not set | 68 | # CONFIG_PPC_DCR_NATIVE is not set |
66 | # CONFIG_PPC_DCR_MMIO is not set | 69 | # CONFIG_PPC_DCR_MMIO is not set |
67 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 70 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -89,6 +92,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
89 | # | 92 | # |
90 | CONFIG_TREE_RCU=y | 93 | CONFIG_TREE_RCU=y |
91 | # CONFIG_TREE_PREEMPT_RCU is not set | 94 | # CONFIG_TREE_PREEMPT_RCU is not set |
95 | # CONFIG_TINY_RCU is not set | ||
92 | # CONFIG_RCU_TRACE is not set | 96 | # CONFIG_RCU_TRACE is not set |
93 | CONFIG_RCU_FANOUT=32 | 97 | CONFIG_RCU_FANOUT=32 |
94 | # CONFIG_RCU_FANOUT_EXACT is not set | 98 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -171,14 +175,41 @@ CONFIG_LBDAF=y | |||
171 | # IO Schedulers | 175 | # IO Schedulers |
172 | # | 176 | # |
173 | CONFIG_IOSCHED_NOOP=y | 177 | CONFIG_IOSCHED_NOOP=y |
174 | CONFIG_IOSCHED_AS=y | ||
175 | CONFIG_IOSCHED_DEADLINE=y | 178 | CONFIG_IOSCHED_DEADLINE=y |
176 | CONFIG_IOSCHED_CFQ=y | 179 | CONFIG_IOSCHED_CFQ=y |
177 | CONFIG_DEFAULT_AS=y | ||
178 | # CONFIG_DEFAULT_DEADLINE is not set | 180 | # CONFIG_DEFAULT_DEADLINE is not set |
179 | # CONFIG_DEFAULT_CFQ is not set | 181 | CONFIG_DEFAULT_CFQ=y |
180 | # CONFIG_DEFAULT_NOOP is not set | 182 | # CONFIG_DEFAULT_NOOP is not set |
181 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 183 | CONFIG_DEFAULT_IOSCHED="cfq" |
184 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
185 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
186 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
190 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
191 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
192 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
193 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
194 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
195 | # CONFIG_INLINE_READ_LOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
199 | CONFIG_INLINE_READ_UNLOCK=y | ||
200 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
201 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
202 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
203 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
204 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
208 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
209 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
210 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
211 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
212 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
182 | # CONFIG_FREEZER is not set | 213 | # CONFIG_FREEZER is not set |
183 | 214 | ||
184 | # | 215 | # |
@@ -187,7 +218,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
187 | # CONFIG_PPC_CELL is not set | 218 | # CONFIG_PPC_CELL is not set |
188 | # CONFIG_PPC_CELL_NATIVE is not set | 219 | # CONFIG_PPC_CELL_NATIVE is not set |
189 | # CONFIG_PQ2ADS is not set | 220 | # CONFIG_PQ2ADS is not set |
190 | CONFIG_MPC85xx=y | 221 | CONFIG_FSL_SOC_BOOKE=y |
191 | # CONFIG_MPC8540_ADS is not set | 222 | # CONFIG_MPC8540_ADS is not set |
192 | # CONFIG_MPC8560_ADS is not set | 223 | # CONFIG_MPC8560_ADS is not set |
193 | # CONFIG_MPC85xx_CDS is not set | 224 | # CONFIG_MPC85xx_CDS is not set |
@@ -206,6 +237,7 @@ CONFIG_TQM8541=y | |||
206 | # CONFIG_TQM8560 is not set | 237 | # CONFIG_TQM8560 is not set |
207 | # CONFIG_SBC8548 is not set | 238 | # CONFIG_SBC8548 is not set |
208 | # CONFIG_SBC8560 is not set | 239 | # CONFIG_SBC8560 is not set |
240 | # CONFIG_P4080_DS is not set | ||
209 | CONFIG_TQM85xx=y | 241 | CONFIG_TQM85xx=y |
210 | # CONFIG_IPIC is not set | 242 | # CONFIG_IPIC is not set |
211 | CONFIG_MPIC=y | 243 | CONFIG_MPIC=y |
@@ -251,6 +283,7 @@ CONFIG_MATH_EMULATION=y | |||
251 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 283 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
252 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 284 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
253 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 285 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
286 | CONFIG_SPARSE_IRQ=y | ||
254 | CONFIG_MAX_ACTIVE_REGIONS=32 | 287 | CONFIG_MAX_ACTIVE_REGIONS=32 |
255 | CONFIG_ARCH_FLATMEM_ENABLE=y | 288 | CONFIG_ARCH_FLATMEM_ENABLE=y |
256 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 289 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -267,8 +300,6 @@ CONFIG_MIGRATION=y | |||
267 | CONFIG_ZONE_DMA_FLAG=1 | 300 | CONFIG_ZONE_DMA_FLAG=1 |
268 | CONFIG_BOUNCE=y | 301 | CONFIG_BOUNCE=y |
269 | CONFIG_VIRT_TO_BUS=y | 302 | CONFIG_VIRT_TO_BUS=y |
270 | CONFIG_HAVE_MLOCK=y | ||
271 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
272 | # CONFIG_KSM is not set | 303 | # CONFIG_KSM is not set |
273 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 304 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
274 | CONFIG_PPC_4K_PAGES=y | 305 | CONFIG_PPC_4K_PAGES=y |
@@ -394,9 +425,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
394 | # CONFIG_AF_RXRPC is not set | 425 | # CONFIG_AF_RXRPC is not set |
395 | CONFIG_WIRELESS=y | 426 | CONFIG_WIRELESS=y |
396 | # CONFIG_CFG80211 is not set | 427 | # CONFIG_CFG80211 is not set |
397 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
398 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
399 | # CONFIG_WIRELESS_EXT is not set | ||
400 | # CONFIG_LIB80211 is not set | 428 | # CONFIG_LIB80211 is not set |
401 | 429 | ||
402 | # | 430 | # |
@@ -514,6 +542,10 @@ CONFIG_BLK_DEV=y | |||
514 | # CONFIG_BLK_DEV_COW_COMMON is not set | 542 | # CONFIG_BLK_DEV_COW_COMMON is not set |
515 | CONFIG_BLK_DEV_LOOP=y | 543 | CONFIG_BLK_DEV_LOOP=y |
516 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 544 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
545 | |||
546 | # | ||
547 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
548 | # | ||
517 | # CONFIG_BLK_DEV_NBD is not set | 549 | # CONFIG_BLK_DEV_NBD is not set |
518 | # CONFIG_BLK_DEV_SX8 is not set | 550 | # CONFIG_BLK_DEV_SX8 is not set |
519 | CONFIG_BLK_DEV_RAM=y | 551 | CONFIG_BLK_DEV_RAM=y |
@@ -524,6 +556,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
524 | # CONFIG_ATA_OVER_ETH is not set | 556 | # CONFIG_ATA_OVER_ETH is not set |
525 | # CONFIG_BLK_DEV_HD is not set | 557 | # CONFIG_BLK_DEV_HD is not set |
526 | CONFIG_MISC_DEVICES=y | 558 | CONFIG_MISC_DEVICES=y |
559 | # CONFIG_AD525X_DPOT is not set | ||
527 | # CONFIG_PHANTOM is not set | 560 | # CONFIG_PHANTOM is not set |
528 | # CONFIG_SGI_IOC4 is not set | 561 | # CONFIG_SGI_IOC4 is not set |
529 | # CONFIG_TIFM_CORE is not set | 562 | # CONFIG_TIFM_CORE is not set |
@@ -531,6 +564,7 @@ CONFIG_MISC_DEVICES=y | |||
531 | # CONFIG_ENCLOSURE_SERVICES is not set | 564 | # CONFIG_ENCLOSURE_SERVICES is not set |
532 | # CONFIG_HP_ILO is not set | 565 | # CONFIG_HP_ILO is not set |
533 | # CONFIG_ISL29003 is not set | 566 | # CONFIG_ISL29003 is not set |
567 | # CONFIG_DS1682 is not set | ||
534 | # CONFIG_C2PORT is not set | 568 | # CONFIG_C2PORT is not set |
535 | 569 | ||
536 | # | 570 | # |
@@ -619,7 +653,7 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
619 | # | 653 | # |
620 | 654 | ||
621 | # | 655 | # |
622 | # See the help texts for more information. | 656 | # The newer stack is recommended. |
623 | # | 657 | # |
624 | # CONFIG_FIREWIRE is not set | 658 | # CONFIG_FIREWIRE is not set |
625 | # CONFIG_IEEE1394 is not set | 659 | # CONFIG_IEEE1394 is not set |
@@ -743,8 +777,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
743 | # CONFIG_BE2NET is not set | 777 | # CONFIG_BE2NET is not set |
744 | # CONFIG_TR is not set | 778 | # CONFIG_TR is not set |
745 | CONFIG_WLAN=y | 779 | CONFIG_WLAN=y |
746 | # CONFIG_WLAN_PRE80211 is not set | 780 | # CONFIG_AIRO is not set |
747 | # CONFIG_WLAN_80211 is not set | 781 | # CONFIG_ATMEL is not set |
782 | # CONFIG_PRISM54 is not set | ||
783 | # CONFIG_HOSTAP is not set | ||
748 | 784 | ||
749 | # | 785 | # |
750 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 786 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -757,6 +793,7 @@ CONFIG_WLAN=y | |||
757 | # CONFIG_NETCONSOLE is not set | 793 | # CONFIG_NETCONSOLE is not set |
758 | # CONFIG_NETPOLL is not set | 794 | # CONFIG_NETPOLL is not set |
759 | # CONFIG_NET_POLL_CONTROLLER is not set | 795 | # CONFIG_NET_POLL_CONTROLLER is not set |
796 | # CONFIG_VMXNET3 is not set | ||
760 | # CONFIG_ISDN is not set | 797 | # CONFIG_ISDN is not set |
761 | # CONFIG_PHONE is not set | 798 | # CONFIG_PHONE is not set |
762 | 799 | ||
@@ -766,6 +803,7 @@ CONFIG_WLAN=y | |||
766 | CONFIG_INPUT=y | 803 | CONFIG_INPUT=y |
767 | # CONFIG_INPUT_FF_MEMLESS is not set | 804 | # CONFIG_INPUT_FF_MEMLESS is not set |
768 | # CONFIG_INPUT_POLLDEV is not set | 805 | # CONFIG_INPUT_POLLDEV is not set |
806 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
769 | 807 | ||
770 | # | 808 | # |
771 | # Userland interfaces | 809 | # Userland interfaces |
@@ -820,6 +858,7 @@ CONFIG_SERIAL_CPM=y | |||
820 | CONFIG_SERIAL_CPM_CONSOLE=y | 858 | CONFIG_SERIAL_CPM_CONSOLE=y |
821 | # CONFIG_SERIAL_JSM is not set | 859 | # CONFIG_SERIAL_JSM is not set |
822 | # CONFIG_SERIAL_OF_PLATFORM is not set | 860 | # CONFIG_SERIAL_OF_PLATFORM is not set |
861 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
823 | CONFIG_UNIX98_PTYS=y | 862 | CONFIG_UNIX98_PTYS=y |
824 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 863 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
825 | CONFIG_LEGACY_PTYS=y | 864 | CONFIG_LEGACY_PTYS=y |
@@ -881,11 +920,6 @@ CONFIG_I2C_MPC=y | |||
881 | # CONFIG_I2C_TAOS_EVM is not set | 920 | # CONFIG_I2C_TAOS_EVM is not set |
882 | 921 | ||
883 | # | 922 | # |
884 | # Graphics adapter I2C/DDC channel drivers | ||
885 | # | ||
886 | # CONFIG_I2C_VOODOO3 is not set | ||
887 | |||
888 | # | ||
889 | # Other I2C/SMBus bus drivers | 923 | # Other I2C/SMBus bus drivers |
890 | # | 924 | # |
891 | # CONFIG_I2C_PCA_PLATFORM is not set | 925 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -893,7 +927,6 @@ CONFIG_I2C_MPC=y | |||
893 | # | 927 | # |
894 | # Miscellaneous I2C Chip support | 928 | # Miscellaneous I2C Chip support |
895 | # | 929 | # |
896 | # CONFIG_DS1682 is not set | ||
897 | # CONFIG_SENSORS_TSL2550 is not set | 930 | # CONFIG_SENSORS_TSL2550 is not set |
898 | # CONFIG_I2C_DEBUG_CORE is not set | 931 | # CONFIG_I2C_DEBUG_CORE is not set |
899 | # CONFIG_I2C_DEBUG_ALGO is not set | 932 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -925,6 +958,7 @@ CONFIG_GPIOLIB=y | |||
925 | # | 958 | # |
926 | # PCI GPIO expanders: | 959 | # PCI GPIO expanders: |
927 | # | 960 | # |
961 | # CONFIG_GPIO_CS5535 is not set | ||
928 | # CONFIG_GPIO_BT8XX is not set | 962 | # CONFIG_GPIO_BT8XX is not set |
929 | # CONFIG_GPIO_LANGWELL is not set | 963 | # CONFIG_GPIO_LANGWELL is not set |
930 | 964 | ||
@@ -967,6 +1001,7 @@ CONFIG_HWMON_DEBUG_CHIP=y | |||
967 | # CONFIG_SENSORS_GL520SM is not set | 1001 | # CONFIG_SENSORS_GL520SM is not set |
968 | # CONFIG_SENSORS_IT87 is not set | 1002 | # CONFIG_SENSORS_IT87 is not set |
969 | # CONFIG_SENSORS_LM63 is not set | 1003 | # CONFIG_SENSORS_LM63 is not set |
1004 | # CONFIG_SENSORS_LM73 is not set | ||
970 | CONFIG_SENSORS_LM75=y | 1005 | CONFIG_SENSORS_LM75=y |
971 | # CONFIG_SENSORS_LM77 is not set | 1006 | # CONFIG_SENSORS_LM77 is not set |
972 | # CONFIG_SENSORS_LM78 is not set | 1007 | # CONFIG_SENSORS_LM78 is not set |
@@ -1006,6 +1041,7 @@ CONFIG_SENSORS_LM75=y | |||
1006 | # CONFIG_SENSORS_W83L786NG is not set | 1041 | # CONFIG_SENSORS_W83L786NG is not set |
1007 | # CONFIG_SENSORS_W83627HF is not set | 1042 | # CONFIG_SENSORS_W83627HF is not set |
1008 | # CONFIG_SENSORS_W83627EHF is not set | 1043 | # CONFIG_SENSORS_W83627EHF is not set |
1044 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1009 | # CONFIG_THERMAL is not set | 1045 | # CONFIG_THERMAL is not set |
1010 | # CONFIG_WATCHDOG is not set | 1046 | # CONFIG_WATCHDOG is not set |
1011 | CONFIG_SSB_POSSIBLE=y | 1047 | CONFIG_SSB_POSSIBLE=y |
@@ -1025,11 +1061,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1025 | # CONFIG_TWL4030_CORE is not set | 1061 | # CONFIG_TWL4030_CORE is not set |
1026 | # CONFIG_MFD_TMIO is not set | 1062 | # CONFIG_MFD_TMIO is not set |
1027 | # CONFIG_PMIC_DA903X is not set | 1063 | # CONFIG_PMIC_DA903X is not set |
1064 | # CONFIG_PMIC_ADP5520 is not set | ||
1028 | # CONFIG_MFD_WM8400 is not set | 1065 | # CONFIG_MFD_WM8400 is not set |
1029 | # CONFIG_MFD_WM831X is not set | 1066 | # CONFIG_MFD_WM831X is not set |
1030 | # CONFIG_MFD_WM8350_I2C is not set | 1067 | # CONFIG_MFD_WM8350_I2C is not set |
1031 | # CONFIG_MFD_PCF50633 is not set | 1068 | # CONFIG_MFD_PCF50633 is not set |
1032 | # CONFIG_AB3100_CORE is not set | 1069 | # CONFIG_AB3100_CORE is not set |
1070 | # CONFIG_MFD_88PM8607 is not set | ||
1033 | # CONFIG_REGULATOR is not set | 1071 | # CONFIG_REGULATOR is not set |
1034 | # CONFIG_MEDIA_SUPPORT is not set | 1072 | # CONFIG_MEDIA_SUPPORT is not set |
1035 | 1073 | ||
@@ -1260,7 +1298,7 @@ CONFIG_FRAME_WARN=1024 | |||
1260 | # CONFIG_DEBUG_KERNEL is not set | 1298 | # CONFIG_DEBUG_KERNEL is not set |
1261 | # CONFIG_SLUB_DEBUG_ON is not set | 1299 | # CONFIG_SLUB_DEBUG_ON is not set |
1262 | # CONFIG_SLUB_STATS is not set | 1300 | # CONFIG_SLUB_STATS is not set |
1263 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1301 | CONFIG_DEBUG_BUGVERBOSE=y |
1264 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1302 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1265 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1303 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1266 | # CONFIG_LATENCYTOP is not set | 1304 | # CONFIG_LATENCYTOP is not set |
@@ -1286,7 +1324,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1286 | # CONFIG_KEYS is not set | 1324 | # CONFIG_KEYS is not set |
1287 | # CONFIG_SECURITY is not set | 1325 | # CONFIG_SECURITY is not set |
1288 | # CONFIG_SECURITYFS is not set | 1326 | # CONFIG_SECURITYFS is not set |
1289 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1327 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1328 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1329 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1330 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1331 | CONFIG_DEFAULT_SECURITY="" | ||
1290 | CONFIG_CRYPTO=y | 1332 | CONFIG_CRYPTO=y |
1291 | 1333 | ||
1292 | # | 1334 | # |
diff --git a/arch/powerpc/configs/85xx/tqm8548_defconfig b/arch/powerpc/configs/85xx/tqm8548_defconfig index debe268f43d1..5cc89aac3fec 100644 --- a/arch/powerpc/configs/85xx/tqm8548_defconfig +++ b/arch/powerpc/configs/85xx/tqm8548_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:41 2009 | 4 | # Wed Jan 6 09:24:35 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y | |||
61 | CONFIG_GENERIC_BUG=y | 62 | CONFIG_GENERIC_BUG=y |
62 | CONFIG_DTC=y | 63 | CONFIG_DTC=y |
63 | CONFIG_DEFAULT_UIMAGE=y | 64 | CONFIG_DEFAULT_UIMAGE=y |
65 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
66 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
64 | # CONFIG_PPC_DCR_NATIVE is not set | 67 | # CONFIG_PPC_DCR_NATIVE is not set |
65 | # CONFIG_PPC_DCR_MMIO is not set | 68 | # CONFIG_PPC_DCR_MMIO is not set |
66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 69 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
88 | # | 91 | # |
89 | CONFIG_TREE_RCU=y | 92 | CONFIG_TREE_RCU=y |
90 | # CONFIG_TREE_PREEMPT_RCU is not set | 93 | # CONFIG_TREE_PREEMPT_RCU is not set |
94 | # CONFIG_TINY_RCU is not set | ||
91 | # CONFIG_RCU_TRACE is not set | 95 | # CONFIG_RCU_TRACE is not set |
92 | CONFIG_RCU_FANOUT=32 | 96 | CONFIG_RCU_FANOUT=32 |
93 | # CONFIG_RCU_FANOUT_EXACT is not set | 97 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -177,14 +181,41 @@ CONFIG_LBDAF=y | |||
177 | # IO Schedulers | 181 | # IO Schedulers |
178 | # | 182 | # |
179 | CONFIG_IOSCHED_NOOP=y | 183 | CONFIG_IOSCHED_NOOP=y |
180 | CONFIG_IOSCHED_AS=y | ||
181 | CONFIG_IOSCHED_DEADLINE=y | 184 | CONFIG_IOSCHED_DEADLINE=y |
182 | CONFIG_IOSCHED_CFQ=y | 185 | CONFIG_IOSCHED_CFQ=y |
183 | CONFIG_DEFAULT_AS=y | ||
184 | # CONFIG_DEFAULT_DEADLINE is not set | 186 | # CONFIG_DEFAULT_DEADLINE is not set |
185 | # CONFIG_DEFAULT_CFQ is not set | 187 | CONFIG_DEFAULT_CFQ=y |
186 | # CONFIG_DEFAULT_NOOP is not set | 188 | # CONFIG_DEFAULT_NOOP is not set |
187 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 189 | CONFIG_DEFAULT_IOSCHED="cfq" |
190 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
191 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
192 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
193 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
194 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
195 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
196 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
197 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
198 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
199 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
200 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
201 | # CONFIG_INLINE_READ_LOCK is not set | ||
202 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
203 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
204 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
205 | CONFIG_INLINE_READ_UNLOCK=y | ||
206 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
207 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
208 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
209 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
210 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
211 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
212 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
213 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
214 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
215 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
216 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
217 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
218 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
188 | # CONFIG_FREEZER is not set | 219 | # CONFIG_FREEZER is not set |
189 | 220 | ||
190 | # | 221 | # |
@@ -193,7 +224,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
193 | # CONFIG_PPC_CELL is not set | 224 | # CONFIG_PPC_CELL is not set |
194 | # CONFIG_PPC_CELL_NATIVE is not set | 225 | # CONFIG_PPC_CELL_NATIVE is not set |
195 | # CONFIG_PQ2ADS is not set | 226 | # CONFIG_PQ2ADS is not set |
196 | CONFIG_MPC85xx=y | 227 | CONFIG_FSL_SOC_BOOKE=y |
197 | # CONFIG_MPC8540_ADS is not set | 228 | # CONFIG_MPC8540_ADS is not set |
198 | # CONFIG_MPC8560_ADS is not set | 229 | # CONFIG_MPC8560_ADS is not set |
199 | # CONFIG_MPC85xx_CDS is not set | 230 | # CONFIG_MPC85xx_CDS is not set |
@@ -212,6 +243,7 @@ CONFIG_TQM8548=y | |||
212 | # CONFIG_TQM8560 is not set | 243 | # CONFIG_TQM8560 is not set |
213 | # CONFIG_SBC8548 is not set | 244 | # CONFIG_SBC8548 is not set |
214 | # CONFIG_SBC8560 is not set | 245 | # CONFIG_SBC8560 is not set |
246 | # CONFIG_P4080_DS is not set | ||
215 | CONFIG_TQM85xx=y | 247 | CONFIG_TQM85xx=y |
216 | # CONFIG_IPIC is not set | 248 | # CONFIG_IPIC is not set |
217 | CONFIG_MPIC=y | 249 | CONFIG_MPIC=y |
@@ -257,6 +289,7 @@ CONFIG_MATH_EMULATION=y | |||
257 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 289 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
258 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 290 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
259 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 291 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
292 | CONFIG_SPARSE_IRQ=y | ||
260 | CONFIG_MAX_ACTIVE_REGIONS=32 | 293 | CONFIG_MAX_ACTIVE_REGIONS=32 |
261 | CONFIG_ARCH_FLATMEM_ENABLE=y | 294 | CONFIG_ARCH_FLATMEM_ENABLE=y |
262 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 295 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -273,8 +306,6 @@ CONFIG_MIGRATION=y | |||
273 | CONFIG_ZONE_DMA_FLAG=1 | 306 | CONFIG_ZONE_DMA_FLAG=1 |
274 | CONFIG_BOUNCE=y | 307 | CONFIG_BOUNCE=y |
275 | CONFIG_VIRT_TO_BUS=y | 308 | CONFIG_VIRT_TO_BUS=y |
276 | CONFIG_HAVE_MLOCK=y | ||
277 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
278 | # CONFIG_KSM is not set | 309 | # CONFIG_KSM is not set |
279 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 310 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
280 | CONFIG_PPC_4K_PAGES=y | 311 | CONFIG_PPC_4K_PAGES=y |
@@ -406,7 +437,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
406 | # CONFIG_IRDA is not set | 437 | # CONFIG_IRDA is not set |
407 | # CONFIG_BT is not set | 438 | # CONFIG_BT is not set |
408 | # CONFIG_AF_RXRPC is not set | 439 | # CONFIG_AF_RXRPC is not set |
409 | # CONFIG_WIRELESS is not set | 440 | CONFIG_WIRELESS=y |
441 | # CONFIG_CFG80211 is not set | ||
442 | # CONFIG_LIB80211 is not set | ||
443 | |||
444 | # | ||
445 | # CFG80211 needs to be enabled for MAC80211 | ||
446 | # | ||
410 | # CONFIG_WIMAX is not set | 447 | # CONFIG_WIMAX is not set |
411 | # CONFIG_RFKILL is not set | 448 | # CONFIG_RFKILL is not set |
412 | # CONFIG_NET_9P is not set | 449 | # CONFIG_NET_9P is not set |
@@ -535,6 +572,10 @@ CONFIG_BLK_DEV=y | |||
535 | # CONFIG_BLK_DEV_COW_COMMON is not set | 572 | # CONFIG_BLK_DEV_COW_COMMON is not set |
536 | CONFIG_BLK_DEV_LOOP=y | 573 | CONFIG_BLK_DEV_LOOP=y |
537 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 574 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
575 | |||
576 | # | ||
577 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
578 | # | ||
538 | # CONFIG_BLK_DEV_NBD is not set | 579 | # CONFIG_BLK_DEV_NBD is not set |
539 | # CONFIG_BLK_DEV_SX8 is not set | 580 | # CONFIG_BLK_DEV_SX8 is not set |
540 | CONFIG_BLK_DEV_RAM=y | 581 | CONFIG_BLK_DEV_RAM=y |
@@ -545,6 +586,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
545 | # CONFIG_ATA_OVER_ETH is not set | 586 | # CONFIG_ATA_OVER_ETH is not set |
546 | # CONFIG_BLK_DEV_HD is not set | 587 | # CONFIG_BLK_DEV_HD is not set |
547 | CONFIG_MISC_DEVICES=y | 588 | CONFIG_MISC_DEVICES=y |
589 | # CONFIG_AD525X_DPOT is not set | ||
548 | # CONFIG_PHANTOM is not set | 590 | # CONFIG_PHANTOM is not set |
549 | # CONFIG_SGI_IOC4 is not set | 591 | # CONFIG_SGI_IOC4 is not set |
550 | # CONFIG_TIFM_CORE is not set | 592 | # CONFIG_TIFM_CORE is not set |
@@ -552,6 +594,7 @@ CONFIG_MISC_DEVICES=y | |||
552 | # CONFIG_ENCLOSURE_SERVICES is not set | 594 | # CONFIG_ENCLOSURE_SERVICES is not set |
553 | # CONFIG_HP_ILO is not set | 595 | # CONFIG_HP_ILO is not set |
554 | # CONFIG_ISL29003 is not set | 596 | # CONFIG_ISL29003 is not set |
597 | # CONFIG_DS1682 is not set | ||
555 | # CONFIG_C2PORT is not set | 598 | # CONFIG_C2PORT is not set |
556 | 599 | ||
557 | # | 600 | # |
@@ -585,7 +628,7 @@ CONFIG_HAVE_IDE=y | |||
585 | # | 628 | # |
586 | 629 | ||
587 | # | 630 | # |
588 | # See the help texts for more information. | 631 | # The newer stack is recommended. |
589 | # | 632 | # |
590 | # CONFIG_FIREWIRE is not set | 633 | # CONFIG_FIREWIRE is not set |
591 | # CONFIG_IEEE1394 is not set | 634 | # CONFIG_IEEE1394 is not set |
@@ -690,8 +733,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
690 | # CONFIG_BE2NET is not set | 733 | # CONFIG_BE2NET is not set |
691 | # CONFIG_TR is not set | 734 | # CONFIG_TR is not set |
692 | CONFIG_WLAN=y | 735 | CONFIG_WLAN=y |
693 | # CONFIG_WLAN_PRE80211 is not set | 736 | # CONFIG_AIRO is not set |
694 | # CONFIG_WLAN_80211 is not set | 737 | # CONFIG_ATMEL is not set |
738 | # CONFIG_PRISM54 is not set | ||
739 | # CONFIG_HOSTAP is not set | ||
695 | 740 | ||
696 | # | 741 | # |
697 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 742 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -704,6 +749,7 @@ CONFIG_WLAN=y | |||
704 | # CONFIG_NETCONSOLE is not set | 749 | # CONFIG_NETCONSOLE is not set |
705 | # CONFIG_NETPOLL is not set | 750 | # CONFIG_NETPOLL is not set |
706 | # CONFIG_NET_POLL_CONTROLLER is not set | 751 | # CONFIG_NET_POLL_CONTROLLER is not set |
752 | # CONFIG_VMXNET3 is not set | ||
707 | # CONFIG_ISDN is not set | 753 | # CONFIG_ISDN is not set |
708 | # CONFIG_PHONE is not set | 754 | # CONFIG_PHONE is not set |
709 | 755 | ||
@@ -713,6 +759,7 @@ CONFIG_WLAN=y | |||
713 | CONFIG_INPUT=y | 759 | CONFIG_INPUT=y |
714 | # CONFIG_INPUT_FF_MEMLESS is not set | 760 | # CONFIG_INPUT_FF_MEMLESS is not set |
715 | # CONFIG_INPUT_POLLDEV is not set | 761 | # CONFIG_INPUT_POLLDEV is not set |
762 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
716 | 763 | ||
717 | # | 764 | # |
718 | # Userland interfaces | 765 | # Userland interfaces |
@@ -765,6 +812,7 @@ CONFIG_SERIAL_CORE=y | |||
765 | CONFIG_SERIAL_CORE_CONSOLE=y | 812 | CONFIG_SERIAL_CORE_CONSOLE=y |
766 | # CONFIG_SERIAL_JSM is not set | 813 | # CONFIG_SERIAL_JSM is not set |
767 | # CONFIG_SERIAL_OF_PLATFORM is not set | 814 | # CONFIG_SERIAL_OF_PLATFORM is not set |
815 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
768 | CONFIG_UNIX98_PTYS=y | 816 | CONFIG_UNIX98_PTYS=y |
769 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 817 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
770 | CONFIG_LEGACY_PTYS=y | 818 | CONFIG_LEGACY_PTYS=y |
@@ -820,11 +868,6 @@ CONFIG_I2C_MPC=y | |||
820 | # CONFIG_I2C_TAOS_EVM is not set | 868 | # CONFIG_I2C_TAOS_EVM is not set |
821 | 869 | ||
822 | # | 870 | # |
823 | # Graphics adapter I2C/DDC channel drivers | ||
824 | # | ||
825 | # CONFIG_I2C_VOODOO3 is not set | ||
826 | |||
827 | # | ||
828 | # Other I2C/SMBus bus drivers | 871 | # Other I2C/SMBus bus drivers |
829 | # | 872 | # |
830 | # CONFIG_I2C_PCA_PLATFORM is not set | 873 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -833,7 +876,6 @@ CONFIG_I2C_MPC=y | |||
833 | # | 876 | # |
834 | # Miscellaneous I2C Chip support | 877 | # Miscellaneous I2C Chip support |
835 | # | 878 | # |
836 | # CONFIG_DS1682 is not set | ||
837 | # CONFIG_SENSORS_TSL2550 is not set | 879 | # CONFIG_SENSORS_TSL2550 is not set |
838 | # CONFIG_I2C_DEBUG_CORE is not set | 880 | # CONFIG_I2C_DEBUG_CORE is not set |
839 | # CONFIG_I2C_DEBUG_ALGO is not set | 881 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -879,6 +921,7 @@ CONFIG_HWMON=y | |||
879 | # CONFIG_SENSORS_GL520SM is not set | 921 | # CONFIG_SENSORS_GL520SM is not set |
880 | # CONFIG_SENSORS_IT87 is not set | 922 | # CONFIG_SENSORS_IT87 is not set |
881 | # CONFIG_SENSORS_LM63 is not set | 923 | # CONFIG_SENSORS_LM63 is not set |
924 | # CONFIG_SENSORS_LM73 is not set | ||
882 | CONFIG_SENSORS_LM75=y | 925 | CONFIG_SENSORS_LM75=y |
883 | # CONFIG_SENSORS_LM77 is not set | 926 | # CONFIG_SENSORS_LM77 is not set |
884 | # CONFIG_SENSORS_LM78 is not set | 927 | # CONFIG_SENSORS_LM78 is not set |
@@ -917,6 +960,7 @@ CONFIG_SENSORS_LM75=y | |||
917 | # CONFIG_SENSORS_W83L786NG is not set | 960 | # CONFIG_SENSORS_W83L786NG is not set |
918 | # CONFIG_SENSORS_W83627HF is not set | 961 | # CONFIG_SENSORS_W83627HF is not set |
919 | # CONFIG_SENSORS_W83627EHF is not set | 962 | # CONFIG_SENSORS_W83627EHF is not set |
963 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
920 | # CONFIG_THERMAL is not set | 964 | # CONFIG_THERMAL is not set |
921 | # CONFIG_WATCHDOG is not set | 965 | # CONFIG_WATCHDOG is not set |
922 | CONFIG_SSB_POSSIBLE=y | 966 | CONFIG_SSB_POSSIBLE=y |
@@ -935,11 +979,13 @@ CONFIG_SSB_POSSIBLE=y | |||
935 | # CONFIG_TWL4030_CORE is not set | 979 | # CONFIG_TWL4030_CORE is not set |
936 | # CONFIG_MFD_TMIO is not set | 980 | # CONFIG_MFD_TMIO is not set |
937 | # CONFIG_PMIC_DA903X is not set | 981 | # CONFIG_PMIC_DA903X is not set |
982 | # CONFIG_PMIC_ADP5520 is not set | ||
938 | # CONFIG_MFD_WM8400 is not set | 983 | # CONFIG_MFD_WM8400 is not set |
939 | # CONFIG_MFD_WM831X is not set | 984 | # CONFIG_MFD_WM831X is not set |
940 | # CONFIG_MFD_WM8350_I2C is not set | 985 | # CONFIG_MFD_WM8350_I2C is not set |
941 | # CONFIG_MFD_PCF50633 is not set | 986 | # CONFIG_MFD_PCF50633 is not set |
942 | # CONFIG_AB3100_CORE is not set | 987 | # CONFIG_AB3100_CORE is not set |
988 | # CONFIG_MFD_88PM8607 is not set | ||
943 | # CONFIG_REGULATOR is not set | 989 | # CONFIG_REGULATOR is not set |
944 | # CONFIG_MEDIA_SUPPORT is not set | 990 | # CONFIG_MEDIA_SUPPORT is not set |
945 | 991 | ||
@@ -1003,6 +1049,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
1003 | # CONFIG_RTC_DRV_PCF8563 is not set | 1049 | # CONFIG_RTC_DRV_PCF8563 is not set |
1004 | # CONFIG_RTC_DRV_PCF8583 is not set | 1050 | # CONFIG_RTC_DRV_PCF8583 is not set |
1005 | # CONFIG_RTC_DRV_M41T80 is not set | 1051 | # CONFIG_RTC_DRV_M41T80 is not set |
1052 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1006 | # CONFIG_RTC_DRV_S35390A is not set | 1053 | # CONFIG_RTC_DRV_S35390A is not set |
1007 | # CONFIG_RTC_DRV_FM3130 is not set | 1054 | # CONFIG_RTC_DRV_FM3130 is not set |
1008 | # CONFIG_RTC_DRV_RX8581 is not set | 1055 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1024,7 +1071,9 @@ CONFIG_RTC_DRV_DS1307=y | |||
1024 | # CONFIG_RTC_DRV_M48T86 is not set | 1071 | # CONFIG_RTC_DRV_M48T86 is not set |
1025 | # CONFIG_RTC_DRV_M48T35 is not set | 1072 | # CONFIG_RTC_DRV_M48T35 is not set |
1026 | # CONFIG_RTC_DRV_M48T59 is not set | 1073 | # CONFIG_RTC_DRV_M48T59 is not set |
1074 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1027 | # CONFIG_RTC_DRV_BQ4802 is not set | 1075 | # CONFIG_RTC_DRV_BQ4802 is not set |
1076 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1028 | # CONFIG_RTC_DRV_V3020 is not set | 1077 | # CONFIG_RTC_DRV_V3020 is not set |
1029 | 1078 | ||
1030 | # | 1079 | # |
@@ -1280,7 +1329,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1280 | # CONFIG_KEYS is not set | 1329 | # CONFIG_KEYS is not set |
1281 | # CONFIG_SECURITY is not set | 1330 | # CONFIG_SECURITY is not set |
1282 | # CONFIG_SECURITYFS is not set | 1331 | # CONFIG_SECURITYFS is not set |
1283 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1332 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1333 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1334 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1335 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1336 | CONFIG_DEFAULT_SECURITY="" | ||
1284 | CONFIG_CRYPTO=y | 1337 | CONFIG_CRYPTO=y |
1285 | 1338 | ||
1286 | # | 1339 | # |
diff --git a/arch/powerpc/configs/85xx/tqm8555_defconfig b/arch/powerpc/configs/85xx/tqm8555_defconfig index 74515501f5b7..e7b9148e58cf 100644 --- a/arch/powerpc/configs/85xx/tqm8555_defconfig +++ b/arch/powerpc/configs/85xx/tqm8555_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:42 2009 | 4 | # Wed Jan 6 09:24:36 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y | |||
62 | CONFIG_GENERIC_BUG=y | 63 | CONFIG_GENERIC_BUG=y |
63 | CONFIG_DTC=y | 64 | CONFIG_DTC=y |
64 | CONFIG_DEFAULT_UIMAGE=y | 65 | CONFIG_DEFAULT_UIMAGE=y |
66 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
67 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
65 | # CONFIG_PPC_DCR_NATIVE is not set | 68 | # CONFIG_PPC_DCR_NATIVE is not set |
66 | # CONFIG_PPC_DCR_MMIO is not set | 69 | # CONFIG_PPC_DCR_MMIO is not set |
67 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 70 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -89,6 +92,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
89 | # | 92 | # |
90 | CONFIG_TREE_RCU=y | 93 | CONFIG_TREE_RCU=y |
91 | # CONFIG_TREE_PREEMPT_RCU is not set | 94 | # CONFIG_TREE_PREEMPT_RCU is not set |
95 | # CONFIG_TINY_RCU is not set | ||
92 | # CONFIG_RCU_TRACE is not set | 96 | # CONFIG_RCU_TRACE is not set |
93 | CONFIG_RCU_FANOUT=32 | 97 | CONFIG_RCU_FANOUT=32 |
94 | # CONFIG_RCU_FANOUT_EXACT is not set | 98 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -171,14 +175,41 @@ CONFIG_LBDAF=y | |||
171 | # IO Schedulers | 175 | # IO Schedulers |
172 | # | 176 | # |
173 | CONFIG_IOSCHED_NOOP=y | 177 | CONFIG_IOSCHED_NOOP=y |
174 | CONFIG_IOSCHED_AS=y | ||
175 | CONFIG_IOSCHED_DEADLINE=y | 178 | CONFIG_IOSCHED_DEADLINE=y |
176 | CONFIG_IOSCHED_CFQ=y | 179 | CONFIG_IOSCHED_CFQ=y |
177 | CONFIG_DEFAULT_AS=y | ||
178 | # CONFIG_DEFAULT_DEADLINE is not set | 180 | # CONFIG_DEFAULT_DEADLINE is not set |
179 | # CONFIG_DEFAULT_CFQ is not set | 181 | CONFIG_DEFAULT_CFQ=y |
180 | # CONFIG_DEFAULT_NOOP is not set | 182 | # CONFIG_DEFAULT_NOOP is not set |
181 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 183 | CONFIG_DEFAULT_IOSCHED="cfq" |
184 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
185 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
186 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
190 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
191 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
192 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
193 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
194 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
195 | # CONFIG_INLINE_READ_LOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
199 | CONFIG_INLINE_READ_UNLOCK=y | ||
200 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
201 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
202 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
203 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
204 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
208 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
209 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
210 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
211 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
212 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
182 | # CONFIG_FREEZER is not set | 213 | # CONFIG_FREEZER is not set |
183 | 214 | ||
184 | # | 215 | # |
@@ -187,7 +218,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
187 | # CONFIG_PPC_CELL is not set | 218 | # CONFIG_PPC_CELL is not set |
188 | # CONFIG_PPC_CELL_NATIVE is not set | 219 | # CONFIG_PPC_CELL_NATIVE is not set |
189 | # CONFIG_PQ2ADS is not set | 220 | # CONFIG_PQ2ADS is not set |
190 | CONFIG_MPC85xx=y | 221 | CONFIG_FSL_SOC_BOOKE=y |
191 | # CONFIG_MPC8540_ADS is not set | 222 | # CONFIG_MPC8540_ADS is not set |
192 | # CONFIG_MPC8560_ADS is not set | 223 | # CONFIG_MPC8560_ADS is not set |
193 | # CONFIG_MPC85xx_CDS is not set | 224 | # CONFIG_MPC85xx_CDS is not set |
@@ -206,6 +237,7 @@ CONFIG_TQM8555=y | |||
206 | # CONFIG_TQM8560 is not set | 237 | # CONFIG_TQM8560 is not set |
207 | # CONFIG_SBC8548 is not set | 238 | # CONFIG_SBC8548 is not set |
208 | # CONFIG_SBC8560 is not set | 239 | # CONFIG_SBC8560 is not set |
240 | # CONFIG_P4080_DS is not set | ||
209 | CONFIG_TQM85xx=y | 241 | CONFIG_TQM85xx=y |
210 | # CONFIG_IPIC is not set | 242 | # CONFIG_IPIC is not set |
211 | CONFIG_MPIC=y | 243 | CONFIG_MPIC=y |
@@ -251,6 +283,7 @@ CONFIG_MATH_EMULATION=y | |||
251 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 283 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
252 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 284 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
253 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 285 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
286 | CONFIG_SPARSE_IRQ=y | ||
254 | CONFIG_MAX_ACTIVE_REGIONS=32 | 287 | CONFIG_MAX_ACTIVE_REGIONS=32 |
255 | CONFIG_ARCH_FLATMEM_ENABLE=y | 288 | CONFIG_ARCH_FLATMEM_ENABLE=y |
256 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 289 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -267,8 +300,6 @@ CONFIG_MIGRATION=y | |||
267 | CONFIG_ZONE_DMA_FLAG=1 | 300 | CONFIG_ZONE_DMA_FLAG=1 |
268 | CONFIG_BOUNCE=y | 301 | CONFIG_BOUNCE=y |
269 | CONFIG_VIRT_TO_BUS=y | 302 | CONFIG_VIRT_TO_BUS=y |
270 | CONFIG_HAVE_MLOCK=y | ||
271 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
272 | # CONFIG_KSM is not set | 303 | # CONFIG_KSM is not set |
273 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 304 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
274 | CONFIG_PPC_4K_PAGES=y | 305 | CONFIG_PPC_4K_PAGES=y |
@@ -394,9 +425,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
394 | # CONFIG_AF_RXRPC is not set | 425 | # CONFIG_AF_RXRPC is not set |
395 | CONFIG_WIRELESS=y | 426 | CONFIG_WIRELESS=y |
396 | # CONFIG_CFG80211 is not set | 427 | # CONFIG_CFG80211 is not set |
397 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
398 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
399 | # CONFIG_WIRELESS_EXT is not set | ||
400 | # CONFIG_LIB80211 is not set | 428 | # CONFIG_LIB80211 is not set |
401 | 429 | ||
402 | # | 430 | # |
@@ -514,6 +542,10 @@ CONFIG_BLK_DEV=y | |||
514 | # CONFIG_BLK_DEV_COW_COMMON is not set | 542 | # CONFIG_BLK_DEV_COW_COMMON is not set |
515 | CONFIG_BLK_DEV_LOOP=y | 543 | CONFIG_BLK_DEV_LOOP=y |
516 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 544 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
545 | |||
546 | # | ||
547 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
548 | # | ||
517 | # CONFIG_BLK_DEV_NBD is not set | 549 | # CONFIG_BLK_DEV_NBD is not set |
518 | # CONFIG_BLK_DEV_SX8 is not set | 550 | # CONFIG_BLK_DEV_SX8 is not set |
519 | CONFIG_BLK_DEV_RAM=y | 551 | CONFIG_BLK_DEV_RAM=y |
@@ -524,6 +556,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
524 | # CONFIG_ATA_OVER_ETH is not set | 556 | # CONFIG_ATA_OVER_ETH is not set |
525 | # CONFIG_BLK_DEV_HD is not set | 557 | # CONFIG_BLK_DEV_HD is not set |
526 | CONFIG_MISC_DEVICES=y | 558 | CONFIG_MISC_DEVICES=y |
559 | # CONFIG_AD525X_DPOT is not set | ||
527 | # CONFIG_PHANTOM is not set | 560 | # CONFIG_PHANTOM is not set |
528 | # CONFIG_SGI_IOC4 is not set | 561 | # CONFIG_SGI_IOC4 is not set |
529 | # CONFIG_TIFM_CORE is not set | 562 | # CONFIG_TIFM_CORE is not set |
@@ -531,6 +564,7 @@ CONFIG_MISC_DEVICES=y | |||
531 | # CONFIG_ENCLOSURE_SERVICES is not set | 564 | # CONFIG_ENCLOSURE_SERVICES is not set |
532 | # CONFIG_HP_ILO is not set | 565 | # CONFIG_HP_ILO is not set |
533 | # CONFIG_ISL29003 is not set | 566 | # CONFIG_ISL29003 is not set |
567 | # CONFIG_DS1682 is not set | ||
534 | # CONFIG_C2PORT is not set | 568 | # CONFIG_C2PORT is not set |
535 | 569 | ||
536 | # | 570 | # |
@@ -619,7 +653,7 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
619 | # | 653 | # |
620 | 654 | ||
621 | # | 655 | # |
622 | # See the help texts for more information. | 656 | # The newer stack is recommended. |
623 | # | 657 | # |
624 | # CONFIG_FIREWIRE is not set | 658 | # CONFIG_FIREWIRE is not set |
625 | # CONFIG_IEEE1394 is not set | 659 | # CONFIG_IEEE1394 is not set |
@@ -743,8 +777,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
743 | # CONFIG_BE2NET is not set | 777 | # CONFIG_BE2NET is not set |
744 | # CONFIG_TR is not set | 778 | # CONFIG_TR is not set |
745 | CONFIG_WLAN=y | 779 | CONFIG_WLAN=y |
746 | # CONFIG_WLAN_PRE80211 is not set | 780 | # CONFIG_AIRO is not set |
747 | # CONFIG_WLAN_80211 is not set | 781 | # CONFIG_ATMEL is not set |
782 | # CONFIG_PRISM54 is not set | ||
783 | # CONFIG_HOSTAP is not set | ||
748 | 784 | ||
749 | # | 785 | # |
750 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 786 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -757,6 +793,7 @@ CONFIG_WLAN=y | |||
757 | # CONFIG_NETCONSOLE is not set | 793 | # CONFIG_NETCONSOLE is not set |
758 | # CONFIG_NETPOLL is not set | 794 | # CONFIG_NETPOLL is not set |
759 | # CONFIG_NET_POLL_CONTROLLER is not set | 795 | # CONFIG_NET_POLL_CONTROLLER is not set |
796 | # CONFIG_VMXNET3 is not set | ||
760 | # CONFIG_ISDN is not set | 797 | # CONFIG_ISDN is not set |
761 | # CONFIG_PHONE is not set | 798 | # CONFIG_PHONE is not set |
762 | 799 | ||
@@ -766,6 +803,7 @@ CONFIG_WLAN=y | |||
766 | CONFIG_INPUT=y | 803 | CONFIG_INPUT=y |
767 | # CONFIG_INPUT_FF_MEMLESS is not set | 804 | # CONFIG_INPUT_FF_MEMLESS is not set |
768 | # CONFIG_INPUT_POLLDEV is not set | 805 | # CONFIG_INPUT_POLLDEV is not set |
806 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
769 | 807 | ||
770 | # | 808 | # |
771 | # Userland interfaces | 809 | # Userland interfaces |
@@ -820,6 +858,7 @@ CONFIG_SERIAL_CPM=y | |||
820 | CONFIG_SERIAL_CPM_CONSOLE=y | 858 | CONFIG_SERIAL_CPM_CONSOLE=y |
821 | # CONFIG_SERIAL_JSM is not set | 859 | # CONFIG_SERIAL_JSM is not set |
822 | # CONFIG_SERIAL_OF_PLATFORM is not set | 860 | # CONFIG_SERIAL_OF_PLATFORM is not set |
861 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
823 | CONFIG_UNIX98_PTYS=y | 862 | CONFIG_UNIX98_PTYS=y |
824 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 863 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
825 | CONFIG_LEGACY_PTYS=y | 864 | CONFIG_LEGACY_PTYS=y |
@@ -881,11 +920,6 @@ CONFIG_I2C_MPC=y | |||
881 | # CONFIG_I2C_TAOS_EVM is not set | 920 | # CONFIG_I2C_TAOS_EVM is not set |
882 | 921 | ||
883 | # | 922 | # |
884 | # Graphics adapter I2C/DDC channel drivers | ||
885 | # | ||
886 | # CONFIG_I2C_VOODOO3 is not set | ||
887 | |||
888 | # | ||
889 | # Other I2C/SMBus bus drivers | 923 | # Other I2C/SMBus bus drivers |
890 | # | 924 | # |
891 | # CONFIG_I2C_PCA_PLATFORM is not set | 925 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -893,7 +927,6 @@ CONFIG_I2C_MPC=y | |||
893 | # | 927 | # |
894 | # Miscellaneous I2C Chip support | 928 | # Miscellaneous I2C Chip support |
895 | # | 929 | # |
896 | # CONFIG_DS1682 is not set | ||
897 | # CONFIG_SENSORS_TSL2550 is not set | 930 | # CONFIG_SENSORS_TSL2550 is not set |
898 | # CONFIG_I2C_DEBUG_CORE is not set | 931 | # CONFIG_I2C_DEBUG_CORE is not set |
899 | # CONFIG_I2C_DEBUG_ALGO is not set | 932 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -925,6 +958,7 @@ CONFIG_GPIOLIB=y | |||
925 | # | 958 | # |
926 | # PCI GPIO expanders: | 959 | # PCI GPIO expanders: |
927 | # | 960 | # |
961 | # CONFIG_GPIO_CS5535 is not set | ||
928 | # CONFIG_GPIO_BT8XX is not set | 962 | # CONFIG_GPIO_BT8XX is not set |
929 | # CONFIG_GPIO_LANGWELL is not set | 963 | # CONFIG_GPIO_LANGWELL is not set |
930 | 964 | ||
@@ -967,6 +1001,7 @@ CONFIG_HWMON_DEBUG_CHIP=y | |||
967 | # CONFIG_SENSORS_GL520SM is not set | 1001 | # CONFIG_SENSORS_GL520SM is not set |
968 | # CONFIG_SENSORS_IT87 is not set | 1002 | # CONFIG_SENSORS_IT87 is not set |
969 | # CONFIG_SENSORS_LM63 is not set | 1003 | # CONFIG_SENSORS_LM63 is not set |
1004 | # CONFIG_SENSORS_LM73 is not set | ||
970 | CONFIG_SENSORS_LM75=y | 1005 | CONFIG_SENSORS_LM75=y |
971 | # CONFIG_SENSORS_LM77 is not set | 1006 | # CONFIG_SENSORS_LM77 is not set |
972 | # CONFIG_SENSORS_LM78 is not set | 1007 | # CONFIG_SENSORS_LM78 is not set |
@@ -1006,6 +1041,7 @@ CONFIG_SENSORS_LM75=y | |||
1006 | # CONFIG_SENSORS_W83L786NG is not set | 1041 | # CONFIG_SENSORS_W83L786NG is not set |
1007 | # CONFIG_SENSORS_W83627HF is not set | 1042 | # CONFIG_SENSORS_W83627HF is not set |
1008 | # CONFIG_SENSORS_W83627EHF is not set | 1043 | # CONFIG_SENSORS_W83627EHF is not set |
1044 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1009 | # CONFIG_THERMAL is not set | 1045 | # CONFIG_THERMAL is not set |
1010 | # CONFIG_WATCHDOG is not set | 1046 | # CONFIG_WATCHDOG is not set |
1011 | CONFIG_SSB_POSSIBLE=y | 1047 | CONFIG_SSB_POSSIBLE=y |
@@ -1025,11 +1061,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1025 | # CONFIG_TWL4030_CORE is not set | 1061 | # CONFIG_TWL4030_CORE is not set |
1026 | # CONFIG_MFD_TMIO is not set | 1062 | # CONFIG_MFD_TMIO is not set |
1027 | # CONFIG_PMIC_DA903X is not set | 1063 | # CONFIG_PMIC_DA903X is not set |
1064 | # CONFIG_PMIC_ADP5520 is not set | ||
1028 | # CONFIG_MFD_WM8400 is not set | 1065 | # CONFIG_MFD_WM8400 is not set |
1029 | # CONFIG_MFD_WM831X is not set | 1066 | # CONFIG_MFD_WM831X is not set |
1030 | # CONFIG_MFD_WM8350_I2C is not set | 1067 | # CONFIG_MFD_WM8350_I2C is not set |
1031 | # CONFIG_MFD_PCF50633 is not set | 1068 | # CONFIG_MFD_PCF50633 is not set |
1032 | # CONFIG_AB3100_CORE is not set | 1069 | # CONFIG_AB3100_CORE is not set |
1070 | # CONFIG_MFD_88PM8607 is not set | ||
1033 | # CONFIG_REGULATOR is not set | 1071 | # CONFIG_REGULATOR is not set |
1034 | # CONFIG_MEDIA_SUPPORT is not set | 1072 | # CONFIG_MEDIA_SUPPORT is not set |
1035 | 1073 | ||
@@ -1260,7 +1298,7 @@ CONFIG_FRAME_WARN=1024 | |||
1260 | # CONFIG_DEBUG_KERNEL is not set | 1298 | # CONFIG_DEBUG_KERNEL is not set |
1261 | # CONFIG_SLUB_DEBUG_ON is not set | 1299 | # CONFIG_SLUB_DEBUG_ON is not set |
1262 | # CONFIG_SLUB_STATS is not set | 1300 | # CONFIG_SLUB_STATS is not set |
1263 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1301 | CONFIG_DEBUG_BUGVERBOSE=y |
1264 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1302 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1265 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1303 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1266 | # CONFIG_LATENCYTOP is not set | 1304 | # CONFIG_LATENCYTOP is not set |
@@ -1286,7 +1324,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1286 | # CONFIG_KEYS is not set | 1324 | # CONFIG_KEYS is not set |
1287 | # CONFIG_SECURITY is not set | 1325 | # CONFIG_SECURITY is not set |
1288 | # CONFIG_SECURITYFS is not set | 1326 | # CONFIG_SECURITYFS is not set |
1289 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1327 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1328 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1329 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1330 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1331 | CONFIG_DEFAULT_SECURITY="" | ||
1290 | CONFIG_CRYPTO=y | 1332 | CONFIG_CRYPTO=y |
1291 | 1333 | ||
1292 | # | 1334 | # |
diff --git a/arch/powerpc/configs/85xx/tqm8560_defconfig b/arch/powerpc/configs/85xx/tqm8560_defconfig index 631d92b4d4e6..a998e401bbfc 100644 --- a/arch/powerpc/configs/85xx/tqm8560_defconfig +++ b/arch/powerpc/configs/85xx/tqm8560_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:43 2009 | 4 | # Wed Jan 6 09:24:36 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y | |||
62 | CONFIG_GENERIC_BUG=y | 63 | CONFIG_GENERIC_BUG=y |
63 | CONFIG_DTC=y | 64 | CONFIG_DTC=y |
64 | CONFIG_DEFAULT_UIMAGE=y | 65 | CONFIG_DEFAULT_UIMAGE=y |
66 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
67 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
65 | # CONFIG_PPC_DCR_NATIVE is not set | 68 | # CONFIG_PPC_DCR_NATIVE is not set |
66 | # CONFIG_PPC_DCR_MMIO is not set | 69 | # CONFIG_PPC_DCR_MMIO is not set |
67 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 70 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -89,6 +92,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
89 | # | 92 | # |
90 | CONFIG_TREE_RCU=y | 93 | CONFIG_TREE_RCU=y |
91 | # CONFIG_TREE_PREEMPT_RCU is not set | 94 | # CONFIG_TREE_PREEMPT_RCU is not set |
95 | # CONFIG_TINY_RCU is not set | ||
92 | # CONFIG_RCU_TRACE is not set | 96 | # CONFIG_RCU_TRACE is not set |
93 | CONFIG_RCU_FANOUT=32 | 97 | CONFIG_RCU_FANOUT=32 |
94 | # CONFIG_RCU_FANOUT_EXACT is not set | 98 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -171,14 +175,41 @@ CONFIG_LBDAF=y | |||
171 | # IO Schedulers | 175 | # IO Schedulers |
172 | # | 176 | # |
173 | CONFIG_IOSCHED_NOOP=y | 177 | CONFIG_IOSCHED_NOOP=y |
174 | CONFIG_IOSCHED_AS=y | ||
175 | CONFIG_IOSCHED_DEADLINE=y | 178 | CONFIG_IOSCHED_DEADLINE=y |
176 | CONFIG_IOSCHED_CFQ=y | 179 | CONFIG_IOSCHED_CFQ=y |
177 | CONFIG_DEFAULT_AS=y | ||
178 | # CONFIG_DEFAULT_DEADLINE is not set | 180 | # CONFIG_DEFAULT_DEADLINE is not set |
179 | # CONFIG_DEFAULT_CFQ is not set | 181 | CONFIG_DEFAULT_CFQ=y |
180 | # CONFIG_DEFAULT_NOOP is not set | 182 | # CONFIG_DEFAULT_NOOP is not set |
181 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 183 | CONFIG_DEFAULT_IOSCHED="cfq" |
184 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
185 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
186 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
188 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
190 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
191 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
192 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
193 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
194 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
195 | # CONFIG_INLINE_READ_LOCK is not set | ||
196 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
197 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
198 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
199 | CONFIG_INLINE_READ_UNLOCK=y | ||
200 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
201 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
202 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
203 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
204 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
206 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
208 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
209 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
210 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
211 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
212 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
182 | # CONFIG_FREEZER is not set | 213 | # CONFIG_FREEZER is not set |
183 | 214 | ||
184 | # | 215 | # |
@@ -187,7 +218,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
187 | # CONFIG_PPC_CELL is not set | 218 | # CONFIG_PPC_CELL is not set |
188 | # CONFIG_PPC_CELL_NATIVE is not set | 219 | # CONFIG_PPC_CELL_NATIVE is not set |
189 | # CONFIG_PQ2ADS is not set | 220 | # CONFIG_PQ2ADS is not set |
190 | CONFIG_MPC85xx=y | 221 | CONFIG_FSL_SOC_BOOKE=y |
191 | # CONFIG_MPC8540_ADS is not set | 222 | # CONFIG_MPC8540_ADS is not set |
192 | # CONFIG_MPC8560_ADS is not set | 223 | # CONFIG_MPC8560_ADS is not set |
193 | # CONFIG_MPC85xx_CDS is not set | 224 | # CONFIG_MPC85xx_CDS is not set |
@@ -206,6 +237,7 @@ CONFIG_MPC85xx=y | |||
206 | CONFIG_TQM8560=y | 237 | CONFIG_TQM8560=y |
207 | # CONFIG_SBC8548 is not set | 238 | # CONFIG_SBC8548 is not set |
208 | # CONFIG_SBC8560 is not set | 239 | # CONFIG_SBC8560 is not set |
240 | # CONFIG_P4080_DS is not set | ||
209 | CONFIG_TQM85xx=y | 241 | CONFIG_TQM85xx=y |
210 | # CONFIG_IPIC is not set | 242 | # CONFIG_IPIC is not set |
211 | CONFIG_MPIC=y | 243 | CONFIG_MPIC=y |
@@ -251,6 +283,7 @@ CONFIG_MATH_EMULATION=y | |||
251 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 283 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
252 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 284 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
253 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 285 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
286 | CONFIG_SPARSE_IRQ=y | ||
254 | CONFIG_MAX_ACTIVE_REGIONS=32 | 287 | CONFIG_MAX_ACTIVE_REGIONS=32 |
255 | CONFIG_ARCH_FLATMEM_ENABLE=y | 288 | CONFIG_ARCH_FLATMEM_ENABLE=y |
256 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 289 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -267,8 +300,6 @@ CONFIG_MIGRATION=y | |||
267 | CONFIG_ZONE_DMA_FLAG=1 | 300 | CONFIG_ZONE_DMA_FLAG=1 |
268 | CONFIG_BOUNCE=y | 301 | CONFIG_BOUNCE=y |
269 | CONFIG_VIRT_TO_BUS=y | 302 | CONFIG_VIRT_TO_BUS=y |
270 | CONFIG_HAVE_MLOCK=y | ||
271 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
272 | # CONFIG_KSM is not set | 303 | # CONFIG_KSM is not set |
273 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 304 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
274 | CONFIG_PPC_4K_PAGES=y | 305 | CONFIG_PPC_4K_PAGES=y |
@@ -394,9 +425,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
394 | # CONFIG_AF_RXRPC is not set | 425 | # CONFIG_AF_RXRPC is not set |
395 | CONFIG_WIRELESS=y | 426 | CONFIG_WIRELESS=y |
396 | # CONFIG_CFG80211 is not set | 427 | # CONFIG_CFG80211 is not set |
397 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
398 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
399 | # CONFIG_WIRELESS_EXT is not set | ||
400 | # CONFIG_LIB80211 is not set | 428 | # CONFIG_LIB80211 is not set |
401 | 429 | ||
402 | # | 430 | # |
@@ -514,6 +542,10 @@ CONFIG_BLK_DEV=y | |||
514 | # CONFIG_BLK_DEV_COW_COMMON is not set | 542 | # CONFIG_BLK_DEV_COW_COMMON is not set |
515 | CONFIG_BLK_DEV_LOOP=y | 543 | CONFIG_BLK_DEV_LOOP=y |
516 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 544 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
545 | |||
546 | # | ||
547 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
548 | # | ||
517 | # CONFIG_BLK_DEV_NBD is not set | 549 | # CONFIG_BLK_DEV_NBD is not set |
518 | # CONFIG_BLK_DEV_SX8 is not set | 550 | # CONFIG_BLK_DEV_SX8 is not set |
519 | CONFIG_BLK_DEV_RAM=y | 551 | CONFIG_BLK_DEV_RAM=y |
@@ -524,6 +556,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
524 | # CONFIG_ATA_OVER_ETH is not set | 556 | # CONFIG_ATA_OVER_ETH is not set |
525 | # CONFIG_BLK_DEV_HD is not set | 557 | # CONFIG_BLK_DEV_HD is not set |
526 | CONFIG_MISC_DEVICES=y | 558 | CONFIG_MISC_DEVICES=y |
559 | # CONFIG_AD525X_DPOT is not set | ||
527 | # CONFIG_PHANTOM is not set | 560 | # CONFIG_PHANTOM is not set |
528 | # CONFIG_SGI_IOC4 is not set | 561 | # CONFIG_SGI_IOC4 is not set |
529 | # CONFIG_TIFM_CORE is not set | 562 | # CONFIG_TIFM_CORE is not set |
@@ -531,6 +564,7 @@ CONFIG_MISC_DEVICES=y | |||
531 | # CONFIG_ENCLOSURE_SERVICES is not set | 564 | # CONFIG_ENCLOSURE_SERVICES is not set |
532 | # CONFIG_HP_ILO is not set | 565 | # CONFIG_HP_ILO is not set |
533 | # CONFIG_ISL29003 is not set | 566 | # CONFIG_ISL29003 is not set |
567 | # CONFIG_DS1682 is not set | ||
534 | # CONFIG_C2PORT is not set | 568 | # CONFIG_C2PORT is not set |
535 | 569 | ||
536 | # | 570 | # |
@@ -619,7 +653,7 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
619 | # | 653 | # |
620 | 654 | ||
621 | # | 655 | # |
622 | # See the help texts for more information. | 656 | # The newer stack is recommended. |
623 | # | 657 | # |
624 | # CONFIG_FIREWIRE is not set | 658 | # CONFIG_FIREWIRE is not set |
625 | # CONFIG_IEEE1394 is not set | 659 | # CONFIG_IEEE1394 is not set |
@@ -743,8 +777,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
743 | # CONFIG_BE2NET is not set | 777 | # CONFIG_BE2NET is not set |
744 | # CONFIG_TR is not set | 778 | # CONFIG_TR is not set |
745 | CONFIG_WLAN=y | 779 | CONFIG_WLAN=y |
746 | # CONFIG_WLAN_PRE80211 is not set | 780 | # CONFIG_AIRO is not set |
747 | # CONFIG_WLAN_80211 is not set | 781 | # CONFIG_ATMEL is not set |
782 | # CONFIG_PRISM54 is not set | ||
783 | # CONFIG_HOSTAP is not set | ||
748 | 784 | ||
749 | # | 785 | # |
750 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 786 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -757,6 +793,7 @@ CONFIG_WLAN=y | |||
757 | # CONFIG_NETCONSOLE is not set | 793 | # CONFIG_NETCONSOLE is not set |
758 | # CONFIG_NETPOLL is not set | 794 | # CONFIG_NETPOLL is not set |
759 | # CONFIG_NET_POLL_CONTROLLER is not set | 795 | # CONFIG_NET_POLL_CONTROLLER is not set |
796 | # CONFIG_VMXNET3 is not set | ||
760 | # CONFIG_ISDN is not set | 797 | # CONFIG_ISDN is not set |
761 | # CONFIG_PHONE is not set | 798 | # CONFIG_PHONE is not set |
762 | 799 | ||
@@ -766,6 +803,7 @@ CONFIG_WLAN=y | |||
766 | CONFIG_INPUT=y | 803 | CONFIG_INPUT=y |
767 | # CONFIG_INPUT_FF_MEMLESS is not set | 804 | # CONFIG_INPUT_FF_MEMLESS is not set |
768 | # CONFIG_INPUT_POLLDEV is not set | 805 | # CONFIG_INPUT_POLLDEV is not set |
806 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
769 | 807 | ||
770 | # | 808 | # |
771 | # Userland interfaces | 809 | # Userland interfaces |
@@ -820,6 +858,7 @@ CONFIG_SERIAL_CPM=y | |||
820 | CONFIG_SERIAL_CPM_CONSOLE=y | 858 | CONFIG_SERIAL_CPM_CONSOLE=y |
821 | # CONFIG_SERIAL_JSM is not set | 859 | # CONFIG_SERIAL_JSM is not set |
822 | # CONFIG_SERIAL_OF_PLATFORM is not set | 860 | # CONFIG_SERIAL_OF_PLATFORM is not set |
861 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
823 | CONFIG_UNIX98_PTYS=y | 862 | CONFIG_UNIX98_PTYS=y |
824 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 863 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
825 | CONFIG_LEGACY_PTYS=y | 864 | CONFIG_LEGACY_PTYS=y |
@@ -881,11 +920,6 @@ CONFIG_I2C_MPC=y | |||
881 | # CONFIG_I2C_TAOS_EVM is not set | 920 | # CONFIG_I2C_TAOS_EVM is not set |
882 | 921 | ||
883 | # | 922 | # |
884 | # Graphics adapter I2C/DDC channel drivers | ||
885 | # | ||
886 | # CONFIG_I2C_VOODOO3 is not set | ||
887 | |||
888 | # | ||
889 | # Other I2C/SMBus bus drivers | 923 | # Other I2C/SMBus bus drivers |
890 | # | 924 | # |
891 | # CONFIG_I2C_PCA_PLATFORM is not set | 925 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -893,7 +927,6 @@ CONFIG_I2C_MPC=y | |||
893 | # | 927 | # |
894 | # Miscellaneous I2C Chip support | 928 | # Miscellaneous I2C Chip support |
895 | # | 929 | # |
896 | # CONFIG_DS1682 is not set | ||
897 | # CONFIG_SENSORS_TSL2550 is not set | 930 | # CONFIG_SENSORS_TSL2550 is not set |
898 | # CONFIG_I2C_DEBUG_CORE is not set | 931 | # CONFIG_I2C_DEBUG_CORE is not set |
899 | # CONFIG_I2C_DEBUG_ALGO is not set | 932 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -925,6 +958,7 @@ CONFIG_GPIOLIB=y | |||
925 | # | 958 | # |
926 | # PCI GPIO expanders: | 959 | # PCI GPIO expanders: |
927 | # | 960 | # |
961 | # CONFIG_GPIO_CS5535 is not set | ||
928 | # CONFIG_GPIO_BT8XX is not set | 962 | # CONFIG_GPIO_BT8XX is not set |
929 | # CONFIG_GPIO_LANGWELL is not set | 963 | # CONFIG_GPIO_LANGWELL is not set |
930 | 964 | ||
@@ -967,6 +1001,7 @@ CONFIG_HWMON_DEBUG_CHIP=y | |||
967 | # CONFIG_SENSORS_GL520SM is not set | 1001 | # CONFIG_SENSORS_GL520SM is not set |
968 | # CONFIG_SENSORS_IT87 is not set | 1002 | # CONFIG_SENSORS_IT87 is not set |
969 | # CONFIG_SENSORS_LM63 is not set | 1003 | # CONFIG_SENSORS_LM63 is not set |
1004 | # CONFIG_SENSORS_LM73 is not set | ||
970 | CONFIG_SENSORS_LM75=y | 1005 | CONFIG_SENSORS_LM75=y |
971 | # CONFIG_SENSORS_LM77 is not set | 1006 | # CONFIG_SENSORS_LM77 is not set |
972 | # CONFIG_SENSORS_LM78 is not set | 1007 | # CONFIG_SENSORS_LM78 is not set |
@@ -1006,6 +1041,7 @@ CONFIG_SENSORS_LM75=y | |||
1006 | # CONFIG_SENSORS_W83L786NG is not set | 1041 | # CONFIG_SENSORS_W83L786NG is not set |
1007 | # CONFIG_SENSORS_W83627HF is not set | 1042 | # CONFIG_SENSORS_W83627HF is not set |
1008 | # CONFIG_SENSORS_W83627EHF is not set | 1043 | # CONFIG_SENSORS_W83627EHF is not set |
1044 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1009 | # CONFIG_THERMAL is not set | 1045 | # CONFIG_THERMAL is not set |
1010 | # CONFIG_WATCHDOG is not set | 1046 | # CONFIG_WATCHDOG is not set |
1011 | CONFIG_SSB_POSSIBLE=y | 1047 | CONFIG_SSB_POSSIBLE=y |
@@ -1025,11 +1061,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1025 | # CONFIG_TWL4030_CORE is not set | 1061 | # CONFIG_TWL4030_CORE is not set |
1026 | # CONFIG_MFD_TMIO is not set | 1062 | # CONFIG_MFD_TMIO is not set |
1027 | # CONFIG_PMIC_DA903X is not set | 1063 | # CONFIG_PMIC_DA903X is not set |
1064 | # CONFIG_PMIC_ADP5520 is not set | ||
1028 | # CONFIG_MFD_WM8400 is not set | 1065 | # CONFIG_MFD_WM8400 is not set |
1029 | # CONFIG_MFD_WM831X is not set | 1066 | # CONFIG_MFD_WM831X is not set |
1030 | # CONFIG_MFD_WM8350_I2C is not set | 1067 | # CONFIG_MFD_WM8350_I2C is not set |
1031 | # CONFIG_MFD_PCF50633 is not set | 1068 | # CONFIG_MFD_PCF50633 is not set |
1032 | # CONFIG_AB3100_CORE is not set | 1069 | # CONFIG_AB3100_CORE is not set |
1070 | # CONFIG_MFD_88PM8607 is not set | ||
1033 | # CONFIG_REGULATOR is not set | 1071 | # CONFIG_REGULATOR is not set |
1034 | # CONFIG_MEDIA_SUPPORT is not set | 1072 | # CONFIG_MEDIA_SUPPORT is not set |
1035 | 1073 | ||
@@ -1260,7 +1298,7 @@ CONFIG_FRAME_WARN=1024 | |||
1260 | # CONFIG_DEBUG_KERNEL is not set | 1298 | # CONFIG_DEBUG_KERNEL is not set |
1261 | # CONFIG_SLUB_DEBUG_ON is not set | 1299 | # CONFIG_SLUB_DEBUG_ON is not set |
1262 | # CONFIG_SLUB_STATS is not set | 1300 | # CONFIG_SLUB_STATS is not set |
1263 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1301 | CONFIG_DEBUG_BUGVERBOSE=y |
1264 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1302 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1265 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1303 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1266 | # CONFIG_LATENCYTOP is not set | 1304 | # CONFIG_LATENCYTOP is not set |
@@ -1286,7 +1324,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1286 | # CONFIG_KEYS is not set | 1324 | # CONFIG_KEYS is not set |
1287 | # CONFIG_SECURITY is not set | 1325 | # CONFIG_SECURITY is not set |
1288 | # CONFIG_SECURITYFS is not set | 1326 | # CONFIG_SECURITYFS is not set |
1289 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1327 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1328 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1329 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1330 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1331 | CONFIG_DEFAULT_SECURITY="" | ||
1290 | CONFIG_CRYPTO=y | 1332 | CONFIG_CRYPTO=y |
1291 | 1333 | ||
1292 | # | 1334 | # |
diff --git a/arch/powerpc/configs/85xx/xes_mpc85xx_defconfig b/arch/powerpc/configs/85xx/xes_mpc85xx_defconfig index 52acbac0c4fe..fc656af04ea1 100644 --- a/arch/powerpc/configs/85xx/xes_mpc85xx_defconfig +++ b/arch/powerpc/configs/85xx/xes_mpc85xx_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:44 2009 | 4 | # Wed Jan 6 09:24:37 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -40,6 +40,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
40 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 40 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
41 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 41 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
42 | CONFIG_IRQ_PER_CPU=y | 42 | CONFIG_IRQ_PER_CPU=y |
43 | CONFIG_NR_IRQS=512 | ||
43 | CONFIG_STACKTRACE_SUPPORT=y | 44 | CONFIG_STACKTRACE_SUPPORT=y |
44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 45 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 46 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -63,6 +64,8 @@ CONFIG_AUDIT_ARCH=y | |||
63 | CONFIG_GENERIC_BUG=y | 64 | CONFIG_GENERIC_BUG=y |
64 | CONFIG_DTC=y | 65 | CONFIG_DTC=y |
65 | CONFIG_DEFAULT_UIMAGE=y | 66 | CONFIG_DEFAULT_UIMAGE=y |
67 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
68 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
66 | # CONFIG_PPC_DCR_NATIVE is not set | 69 | # CONFIG_PPC_DCR_NATIVE is not set |
67 | # CONFIG_PPC_DCR_MMIO is not set | 70 | # CONFIG_PPC_DCR_MMIO is not set |
68 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 71 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -93,6 +96,7 @@ CONFIG_AUDIT=y | |||
93 | # | 96 | # |
94 | CONFIG_TREE_RCU=y | 97 | CONFIG_TREE_RCU=y |
95 | # CONFIG_TREE_PREEMPT_RCU is not set | 98 | # CONFIG_TREE_PREEMPT_RCU is not set |
99 | # CONFIG_TINY_RCU is not set | ||
96 | # CONFIG_RCU_TRACE is not set | 100 | # CONFIG_RCU_TRACE is not set |
97 | CONFIG_RCU_FANOUT=32 | 101 | CONFIG_RCU_FANOUT=32 |
98 | # CONFIG_RCU_FANOUT_EXACT is not set | 102 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -181,14 +185,41 @@ CONFIG_LBDAF=y | |||
181 | # IO Schedulers | 185 | # IO Schedulers |
182 | # | 186 | # |
183 | CONFIG_IOSCHED_NOOP=y | 187 | CONFIG_IOSCHED_NOOP=y |
184 | CONFIG_IOSCHED_AS=y | ||
185 | CONFIG_IOSCHED_DEADLINE=y | 188 | CONFIG_IOSCHED_DEADLINE=y |
186 | CONFIG_IOSCHED_CFQ=y | 189 | CONFIG_IOSCHED_CFQ=y |
187 | # CONFIG_DEFAULT_AS is not set | ||
188 | # CONFIG_DEFAULT_DEADLINE is not set | 190 | # CONFIG_DEFAULT_DEADLINE is not set |
189 | CONFIG_DEFAULT_CFQ=y | 191 | CONFIG_DEFAULT_CFQ=y |
190 | # CONFIG_DEFAULT_NOOP is not set | 192 | # CONFIG_DEFAULT_NOOP is not set |
191 | CONFIG_DEFAULT_IOSCHED="cfq" | 193 | CONFIG_DEFAULT_IOSCHED="cfq" |
194 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
195 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
196 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
197 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
198 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
199 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
200 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
201 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
202 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
203 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
204 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
205 | # CONFIG_INLINE_READ_LOCK is not set | ||
206 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
207 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
208 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
209 | CONFIG_INLINE_READ_UNLOCK=y | ||
210 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
211 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
212 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
213 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
214 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
215 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
216 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
217 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
218 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
219 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
220 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
221 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
222 | CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
192 | # CONFIG_FREEZER is not set | 223 | # CONFIG_FREEZER is not set |
193 | CONFIG_PPC_MSI_BITMAP=y | 224 | CONFIG_PPC_MSI_BITMAP=y |
194 | 225 | ||
@@ -198,7 +229,7 @@ CONFIG_PPC_MSI_BITMAP=y | |||
198 | # CONFIG_PPC_CELL is not set | 229 | # CONFIG_PPC_CELL is not set |
199 | # CONFIG_PPC_CELL_NATIVE is not set | 230 | # CONFIG_PPC_CELL_NATIVE is not set |
200 | # CONFIG_PQ2ADS is not set | 231 | # CONFIG_PQ2ADS is not set |
201 | CONFIG_MPC85xx=y | 232 | CONFIG_FSL_SOC_BOOKE=y |
202 | # CONFIG_MPC8540_ADS is not set | 233 | # CONFIG_MPC8540_ADS is not set |
203 | # CONFIG_MPC8560_ADS is not set | 234 | # CONFIG_MPC8560_ADS is not set |
204 | # CONFIG_MPC85xx_CDS is not set | 235 | # CONFIG_MPC85xx_CDS is not set |
@@ -217,6 +248,7 @@ CONFIG_XES_MPC85xx=y | |||
217 | # CONFIG_TQM8560 is not set | 248 | # CONFIG_TQM8560 is not set |
218 | # CONFIG_SBC8548 is not set | 249 | # CONFIG_SBC8548 is not set |
219 | # CONFIG_SBC8560 is not set | 250 | # CONFIG_SBC8560 is not set |
251 | # CONFIG_P4080_DS is not set | ||
220 | # CONFIG_IPIC is not set | 252 | # CONFIG_IPIC is not set |
221 | CONFIG_MPIC=y | 253 | CONFIG_MPIC=y |
222 | # CONFIG_MPIC_WEIRD is not set | 254 | # CONFIG_MPIC_WEIRD is not set |
@@ -261,6 +293,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | |||
261 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 293 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
262 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 294 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
263 | # CONFIG_IRQ_ALL_CPUS is not set | 295 | # CONFIG_IRQ_ALL_CPUS is not set |
296 | CONFIG_SPARSE_IRQ=y | ||
264 | CONFIG_MAX_ACTIVE_REGIONS=32 | 297 | CONFIG_MAX_ACTIVE_REGIONS=32 |
265 | CONFIG_ARCH_FLATMEM_ENABLE=y | 298 | CONFIG_ARCH_FLATMEM_ENABLE=y |
266 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 299 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -277,8 +310,6 @@ CONFIG_MIGRATION=y | |||
277 | CONFIG_ZONE_DMA_FLAG=1 | 310 | CONFIG_ZONE_DMA_FLAG=1 |
278 | CONFIG_BOUNCE=y | 311 | CONFIG_BOUNCE=y |
279 | CONFIG_VIRT_TO_BUS=y | 312 | CONFIG_VIRT_TO_BUS=y |
280 | CONFIG_HAVE_MLOCK=y | ||
281 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
282 | # CONFIG_KSM is not set | 313 | # CONFIG_KSM is not set |
283 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 314 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
284 | CONFIG_PPC_4K_PAGES=y | 315 | CONFIG_PPC_4K_PAGES=y |
@@ -404,6 +435,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y | |||
404 | CONFIG_INET6_XFRM_MODE_BEET=y | 435 | CONFIG_INET6_XFRM_MODE_BEET=y |
405 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 436 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
406 | CONFIG_IPV6_SIT=y | 437 | CONFIG_IPV6_SIT=y |
438 | # CONFIG_IPV6_SIT_6RD is not set | ||
407 | CONFIG_IPV6_NDISC_NODETYPE=y | 439 | CONFIG_IPV6_NDISC_NODETYPE=y |
408 | # CONFIG_IPV6_TUNNEL is not set | 440 | # CONFIG_IPV6_TUNNEL is not set |
409 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 441 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
@@ -441,7 +473,13 @@ CONFIG_IPV6_NDISC_NODETYPE=y | |||
441 | # CONFIG_BT is not set | 473 | # CONFIG_BT is not set |
442 | # CONFIG_AF_RXRPC is not set | 474 | # CONFIG_AF_RXRPC is not set |
443 | CONFIG_FIB_RULES=y | 475 | CONFIG_FIB_RULES=y |
444 | # CONFIG_WIRELESS is not set | 476 | CONFIG_WIRELESS=y |
477 | # CONFIG_CFG80211 is not set | ||
478 | # CONFIG_LIB80211 is not set | ||
479 | |||
480 | # | ||
481 | # CFG80211 needs to be enabled for MAC80211 | ||
482 | # | ||
445 | # CONFIG_WIMAX is not set | 483 | # CONFIG_WIMAX is not set |
446 | # CONFIG_RFKILL is not set | 484 | # CONFIG_RFKILL is not set |
447 | # CONFIG_NET_9P is not set | 485 | # CONFIG_NET_9P is not set |
@@ -576,6 +614,10 @@ CONFIG_BLK_DEV=y | |||
576 | # CONFIG_BLK_DEV_COW_COMMON is not set | 614 | # CONFIG_BLK_DEV_COW_COMMON is not set |
577 | CONFIG_BLK_DEV_LOOP=y | 615 | CONFIG_BLK_DEV_LOOP=y |
578 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 616 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
617 | |||
618 | # | ||
619 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
620 | # | ||
579 | CONFIG_BLK_DEV_NBD=y | 621 | CONFIG_BLK_DEV_NBD=y |
580 | # CONFIG_BLK_DEV_SX8 is not set | 622 | # CONFIG_BLK_DEV_SX8 is not set |
581 | # CONFIG_BLK_DEV_UB is not set | 623 | # CONFIG_BLK_DEV_UB is not set |
@@ -587,6 +629,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072 | |||
587 | # CONFIG_ATA_OVER_ETH is not set | 629 | # CONFIG_ATA_OVER_ETH is not set |
588 | # CONFIG_BLK_DEV_HD is not set | 630 | # CONFIG_BLK_DEV_HD is not set |
589 | CONFIG_MISC_DEVICES=y | 631 | CONFIG_MISC_DEVICES=y |
632 | # CONFIG_AD525X_DPOT is not set | ||
590 | # CONFIG_PHANTOM is not set | 633 | # CONFIG_PHANTOM is not set |
591 | # CONFIG_SGI_IOC4 is not set | 634 | # CONFIG_SGI_IOC4 is not set |
592 | # CONFIG_TIFM_CORE is not set | 635 | # CONFIG_TIFM_CORE is not set |
@@ -594,6 +637,7 @@ CONFIG_MISC_DEVICES=y | |||
594 | # CONFIG_ENCLOSURE_SERVICES is not set | 637 | # CONFIG_ENCLOSURE_SERVICES is not set |
595 | # CONFIG_HP_ILO is not set | 638 | # CONFIG_HP_ILO is not set |
596 | # CONFIG_ISL29003 is not set | 639 | # CONFIG_ISL29003 is not set |
640 | # CONFIG_DS1682 is not set | ||
597 | # CONFIG_C2PORT is not set | 641 | # CONFIG_C2PORT is not set |
598 | 642 | ||
599 | # | 643 | # |
@@ -646,7 +690,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
646 | # CONFIG_SCSI_BNX2_ISCSI is not set | 690 | # CONFIG_SCSI_BNX2_ISCSI is not set |
647 | # CONFIG_BE2ISCSI is not set | 691 | # CONFIG_BE2ISCSI is not set |
648 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 692 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
693 | # CONFIG_SCSI_HPSA is not set | ||
649 | # CONFIG_SCSI_3W_9XXX is not set | 694 | # CONFIG_SCSI_3W_9XXX is not set |
695 | # CONFIG_SCSI_3W_SAS is not set | ||
650 | # CONFIG_SCSI_ACARD is not set | 696 | # CONFIG_SCSI_ACARD is not set |
651 | # CONFIG_SCSI_AACRAID is not set | 697 | # CONFIG_SCSI_AACRAID is not set |
652 | # CONFIG_SCSI_AIC7XXX is not set | 698 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -685,6 +731,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
685 | # CONFIG_SCSI_NSP32 is not set | 731 | # CONFIG_SCSI_NSP32 is not set |
686 | # CONFIG_SCSI_DEBUG is not set | 732 | # CONFIG_SCSI_DEBUG is not set |
687 | # CONFIG_SCSI_PMCRAID is not set | 733 | # CONFIG_SCSI_PMCRAID is not set |
734 | # CONFIG_SCSI_PM8001 is not set | ||
688 | # CONFIG_SCSI_SRP is not set | 735 | # CONFIG_SCSI_SRP is not set |
689 | # CONFIG_SCSI_BFA_FC is not set | 736 | # CONFIG_SCSI_BFA_FC is not set |
690 | # CONFIG_SCSI_DH is not set | 737 | # CONFIG_SCSI_DH is not set |
@@ -740,15 +787,16 @@ CONFIG_PATA_ALI=y | |||
740 | # CONFIG_PATA_NS87415 is not set | 787 | # CONFIG_PATA_NS87415 is not set |
741 | # CONFIG_PATA_OPTI is not set | 788 | # CONFIG_PATA_OPTI is not set |
742 | # CONFIG_PATA_OPTIDMA is not set | 789 | # CONFIG_PATA_OPTIDMA is not set |
790 | # CONFIG_PATA_PDC2027X is not set | ||
743 | # CONFIG_PATA_PDC_OLD is not set | 791 | # CONFIG_PATA_PDC_OLD is not set |
744 | # CONFIG_PATA_RADISYS is not set | 792 | # CONFIG_PATA_RADISYS is not set |
745 | # CONFIG_PATA_RDC is not set | 793 | # CONFIG_PATA_RDC is not set |
746 | # CONFIG_PATA_RZ1000 is not set | 794 | # CONFIG_PATA_RZ1000 is not set |
747 | # CONFIG_PATA_SC1200 is not set | 795 | # CONFIG_PATA_SC1200 is not set |
748 | # CONFIG_PATA_SERVERWORKS is not set | 796 | # CONFIG_PATA_SERVERWORKS is not set |
749 | # CONFIG_PATA_PDC2027X is not set | ||
750 | # CONFIG_PATA_SIL680 is not set | 797 | # CONFIG_PATA_SIL680 is not set |
751 | # CONFIG_PATA_SIS is not set | 798 | # CONFIG_PATA_SIS is not set |
799 | # CONFIG_PATA_TOSHIBA is not set | ||
752 | # CONFIG_PATA_VIA is not set | 800 | # CONFIG_PATA_VIA is not set |
753 | # CONFIG_PATA_WINBOND is not set | 801 | # CONFIG_PATA_WINBOND is not set |
754 | # CONFIG_PATA_PLATFORM is not set | 802 | # CONFIG_PATA_PLATFORM is not set |
@@ -765,7 +813,7 @@ CONFIG_PATA_ALI=y | |||
765 | # | 813 | # |
766 | 814 | ||
767 | # | 815 | # |
768 | # See the help texts for more information. | 816 | # The newer stack is recommended. |
769 | # | 817 | # |
770 | # CONFIG_FIREWIRE is not set | 818 | # CONFIG_FIREWIRE is not set |
771 | # CONFIG_IEEE1394 is not set | 819 | # CONFIG_IEEE1394 is not set |
@@ -852,8 +900,11 @@ CONFIG_GIANFAR=y | |||
852 | # CONFIG_NETDEV_10000 is not set | 900 | # CONFIG_NETDEV_10000 is not set |
853 | # CONFIG_TR is not set | 901 | # CONFIG_TR is not set |
854 | CONFIG_WLAN=y | 902 | CONFIG_WLAN=y |
855 | # CONFIG_WLAN_PRE80211 is not set | 903 | # CONFIG_AIRO is not set |
856 | # CONFIG_WLAN_80211 is not set | 904 | # CONFIG_ATMEL is not set |
905 | # CONFIG_PRISM54 is not set | ||
906 | # CONFIG_USB_ZD1201 is not set | ||
907 | # CONFIG_HOSTAP is not set | ||
857 | 908 | ||
858 | # | 909 | # |
859 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 910 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -876,6 +927,7 @@ CONFIG_WLAN=y | |||
876 | # CONFIG_NETCONSOLE is not set | 927 | # CONFIG_NETCONSOLE is not set |
877 | # CONFIG_NETPOLL is not set | 928 | # CONFIG_NETPOLL is not set |
878 | # CONFIG_NET_POLL_CONTROLLER is not set | 929 | # CONFIG_NET_POLL_CONTROLLER is not set |
930 | # CONFIG_VMXNET3 is not set | ||
879 | # CONFIG_ISDN is not set | 931 | # CONFIG_ISDN is not set |
880 | # CONFIG_PHONE is not set | 932 | # CONFIG_PHONE is not set |
881 | 933 | ||
@@ -885,6 +937,7 @@ CONFIG_WLAN=y | |||
885 | CONFIG_INPUT=y | 937 | CONFIG_INPUT=y |
886 | # CONFIG_INPUT_FF_MEMLESS is not set | 938 | # CONFIG_INPUT_FF_MEMLESS is not set |
887 | # CONFIG_INPUT_POLLDEV is not set | 939 | # CONFIG_INPUT_POLLDEV is not set |
940 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
888 | 941 | ||
889 | # | 942 | # |
890 | # Userland interfaces | 943 | # Userland interfaces |
@@ -914,6 +967,7 @@ CONFIG_SERIO_SERPORT=y | |||
914 | CONFIG_SERIO_LIBPS2=y | 967 | CONFIG_SERIO_LIBPS2=y |
915 | # CONFIG_SERIO_RAW is not set | 968 | # CONFIG_SERIO_RAW is not set |
916 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | 969 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set |
970 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
917 | # CONFIG_GAMEPORT is not set | 971 | # CONFIG_GAMEPORT is not set |
918 | 972 | ||
919 | # | 973 | # |
@@ -950,6 +1004,7 @@ CONFIG_SERIAL_CORE=y | |||
950 | CONFIG_SERIAL_CORE_CONSOLE=y | 1004 | CONFIG_SERIAL_CORE_CONSOLE=y |
951 | # CONFIG_SERIAL_JSM is not set | 1005 | # CONFIG_SERIAL_JSM is not set |
952 | # CONFIG_SERIAL_OF_PLATFORM is not set | 1006 | # CONFIG_SERIAL_OF_PLATFORM is not set |
1007 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
953 | CONFIG_UNIX98_PTYS=y | 1008 | CONFIG_UNIX98_PTYS=y |
954 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 1009 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
955 | CONFIG_LEGACY_PTYS=y | 1010 | CONFIG_LEGACY_PTYS=y |
@@ -1007,11 +1062,6 @@ CONFIG_I2C_MPC=y | |||
1007 | # CONFIG_I2C_TINY_USB is not set | 1062 | # CONFIG_I2C_TINY_USB is not set |
1008 | 1063 | ||
1009 | # | 1064 | # |
1010 | # Graphics adapter I2C/DDC channel drivers | ||
1011 | # | ||
1012 | # CONFIG_I2C_VOODOO3 is not set | ||
1013 | |||
1014 | # | ||
1015 | # Other I2C/SMBus bus drivers | 1065 | # Other I2C/SMBus bus drivers |
1016 | # | 1066 | # |
1017 | # CONFIG_I2C_PCA_PLATFORM is not set | 1067 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -1020,7 +1070,6 @@ CONFIG_I2C_MPC=y | |||
1020 | # | 1070 | # |
1021 | # Miscellaneous I2C Chip support | 1071 | # Miscellaneous I2C Chip support |
1022 | # | 1072 | # |
1023 | # CONFIG_DS1682 is not set | ||
1024 | # CONFIG_SENSORS_TSL2550 is not set | 1073 | # CONFIG_SENSORS_TSL2550 is not set |
1025 | # CONFIG_I2C_DEBUG_CORE is not set | 1074 | # CONFIG_I2C_DEBUG_CORE is not set |
1026 | # CONFIG_I2C_DEBUG_ALGO is not set | 1075 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1053,6 +1102,7 @@ CONFIG_GPIO_PCA953X=y | |||
1053 | # | 1102 | # |
1054 | # PCI GPIO expanders: | 1103 | # PCI GPIO expanders: |
1055 | # | 1104 | # |
1105 | # CONFIG_GPIO_CS5535 is not set | ||
1056 | # CONFIG_GPIO_BT8XX is not set | 1106 | # CONFIG_GPIO_BT8XX is not set |
1057 | # CONFIG_GPIO_LANGWELL is not set | 1107 | # CONFIG_GPIO_LANGWELL is not set |
1058 | 1108 | ||
@@ -1095,6 +1145,7 @@ CONFIG_SENSORS_DS1621=y | |||
1095 | # CONFIG_SENSORS_GL520SM is not set | 1145 | # CONFIG_SENSORS_GL520SM is not set |
1096 | # CONFIG_SENSORS_IT87 is not set | 1146 | # CONFIG_SENSORS_IT87 is not set |
1097 | # CONFIG_SENSORS_LM63 is not set | 1147 | # CONFIG_SENSORS_LM63 is not set |
1148 | # CONFIG_SENSORS_LM73 is not set | ||
1098 | # CONFIG_SENSORS_LM75 is not set | 1149 | # CONFIG_SENSORS_LM75 is not set |
1099 | # CONFIG_SENSORS_LM77 is not set | 1150 | # CONFIG_SENSORS_LM77 is not set |
1100 | # CONFIG_SENSORS_LM78 is not set | 1151 | # CONFIG_SENSORS_LM78 is not set |
@@ -1134,6 +1185,7 @@ CONFIG_SENSORS_LM90=y | |||
1134 | # CONFIG_SENSORS_W83L786NG is not set | 1185 | # CONFIG_SENSORS_W83L786NG is not set |
1135 | # CONFIG_SENSORS_W83627HF is not set | 1186 | # CONFIG_SENSORS_W83627HF is not set |
1136 | # CONFIG_SENSORS_W83627EHF is not set | 1187 | # CONFIG_SENSORS_W83627EHF is not set |
1188 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1137 | # CONFIG_THERMAL is not set | 1189 | # CONFIG_THERMAL is not set |
1138 | CONFIG_WATCHDOG=y | 1190 | CONFIG_WATCHDOG=y |
1139 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1191 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -1172,11 +1224,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1172 | # CONFIG_TWL4030_CORE is not set | 1224 | # CONFIG_TWL4030_CORE is not set |
1173 | # CONFIG_MFD_TMIO is not set | 1225 | # CONFIG_MFD_TMIO is not set |
1174 | # CONFIG_PMIC_DA903X is not set | 1226 | # CONFIG_PMIC_DA903X is not set |
1227 | # CONFIG_PMIC_ADP5520 is not set | ||
1175 | # CONFIG_MFD_WM8400 is not set | 1228 | # CONFIG_MFD_WM8400 is not set |
1176 | # CONFIG_MFD_WM831X is not set | 1229 | # CONFIG_MFD_WM831X is not set |
1177 | # CONFIG_MFD_WM8350_I2C is not set | 1230 | # CONFIG_MFD_WM8350_I2C is not set |
1178 | # CONFIG_MFD_PCF50633 is not set | 1231 | # CONFIG_MFD_PCF50633 is not set |
1179 | # CONFIG_AB3100_CORE is not set | 1232 | # CONFIG_AB3100_CORE is not set |
1233 | # CONFIG_MFD_88PM8607 is not set | ||
1180 | # CONFIG_REGULATOR is not set | 1234 | # CONFIG_REGULATOR is not set |
1181 | # CONFIG_MEDIA_SUPPORT is not set | 1235 | # CONFIG_MEDIA_SUPPORT is not set |
1182 | 1236 | ||
@@ -1368,6 +1422,7 @@ CONFIG_LEDS_GPIO_OF=y | |||
1368 | # CONFIG_LEDS_LP3944 is not set | 1422 | # CONFIG_LEDS_LP3944 is not set |
1369 | CONFIG_LEDS_PCA955X=y | 1423 | CONFIG_LEDS_PCA955X=y |
1370 | # CONFIG_LEDS_BD2802 is not set | 1424 | # CONFIG_LEDS_BD2802 is not set |
1425 | # CONFIG_LEDS_LT3593 is not set | ||
1371 | 1426 | ||
1372 | # | 1427 | # |
1373 | # LED Triggers | 1428 | # LED Triggers |
@@ -1391,7 +1446,6 @@ CONFIG_EDAC=y | |||
1391 | # | 1446 | # |
1392 | # CONFIG_EDAC_DEBUG is not set | 1447 | # CONFIG_EDAC_DEBUG is not set |
1393 | CONFIG_EDAC_MM_EDAC=y | 1448 | CONFIG_EDAC_MM_EDAC=y |
1394 | CONFIG_EDAC_MPC85XX=y | ||
1395 | CONFIG_RTC_LIB=y | 1449 | CONFIG_RTC_LIB=y |
1396 | CONFIG_RTC_CLASS=y | 1450 | CONFIG_RTC_CLASS=y |
1397 | CONFIG_RTC_HCTOSYS=y | 1451 | CONFIG_RTC_HCTOSYS=y |
@@ -1420,6 +1474,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
1420 | # CONFIG_RTC_DRV_PCF8563 is not set | 1474 | # CONFIG_RTC_DRV_PCF8563 is not set |
1421 | # CONFIG_RTC_DRV_PCF8583 is not set | 1475 | # CONFIG_RTC_DRV_PCF8583 is not set |
1422 | # CONFIG_RTC_DRV_M41T80 is not set | 1476 | # CONFIG_RTC_DRV_M41T80 is not set |
1477 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1423 | # CONFIG_RTC_DRV_S35390A is not set | 1478 | # CONFIG_RTC_DRV_S35390A is not set |
1424 | # CONFIG_RTC_DRV_FM3130 is not set | 1479 | # CONFIG_RTC_DRV_FM3130 is not set |
1425 | # CONFIG_RTC_DRV_RX8581 is not set | 1480 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1441,7 +1496,9 @@ CONFIG_RTC_DRV_CMOS=y | |||
1441 | # CONFIG_RTC_DRV_M48T86 is not set | 1496 | # CONFIG_RTC_DRV_M48T86 is not set |
1442 | # CONFIG_RTC_DRV_M48T35 is not set | 1497 | # CONFIG_RTC_DRV_M48T35 is not set |
1443 | # CONFIG_RTC_DRV_M48T59 is not set | 1498 | # CONFIG_RTC_DRV_M48T59 is not set |
1499 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1444 | # CONFIG_RTC_DRV_BQ4802 is not set | 1500 | # CONFIG_RTC_DRV_BQ4802 is not set |
1501 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1445 | # CONFIG_RTC_DRV_V3020 is not set | 1502 | # CONFIG_RTC_DRV_V3020 is not set |
1446 | 1503 | ||
1447 | # | 1504 | # |
@@ -1772,7 +1829,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1772 | # CONFIG_KEYS is not set | 1829 | # CONFIG_KEYS is not set |
1773 | # CONFIG_SECURITY is not set | 1830 | # CONFIG_SECURITY is not set |
1774 | # CONFIG_SECURITYFS is not set | 1831 | # CONFIG_SECURITYFS is not set |
1775 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1832 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1833 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1834 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1835 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1836 | CONFIG_DEFAULT_SECURITY="" | ||
1776 | CONFIG_CRYPTO=y | 1837 | CONFIG_CRYPTO=y |
1777 | 1838 | ||
1778 | # | 1839 | # |
diff --git a/arch/powerpc/configs/86xx/gef_ppc9a_defconfig b/arch/powerpc/configs/86xx/gef_ppc9a_defconfig index 6cd2cd65c2cd..a85f927bf225 100644 --- a/arch/powerpc/configs/86xx/gef_ppc9a_defconfig +++ b/arch/powerpc/configs/86xx/gef_ppc9a_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:49 2009 | 4 | # Wed Jan 6 09:24:43 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -38,6 +38,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
40 | CONFIG_IRQ_PER_CPU=y | 40 | CONFIG_IRQ_PER_CPU=y |
41 | CONFIG_NR_IRQS=512 | ||
41 | CONFIG_STACKTRACE_SUPPORT=y | 42 | CONFIG_STACKTRACE_SUPPORT=y |
42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y | |||
62 | CONFIG_GENERIC_BUG=y | 63 | CONFIG_GENERIC_BUG=y |
63 | CONFIG_DTC=y | 64 | CONFIG_DTC=y |
64 | CONFIG_DEFAULT_UIMAGE=y | 65 | CONFIG_DEFAULT_UIMAGE=y |
66 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
67 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
65 | # CONFIG_PPC_DCR_NATIVE is not set | 68 | # CONFIG_PPC_DCR_NATIVE is not set |
66 | # CONFIG_PPC_DCR_MMIO is not set | 69 | # CONFIG_PPC_DCR_MMIO is not set |
67 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 70 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -91,6 +94,7 @@ CONFIG_BSD_PROCESS_ACCT_V3=y | |||
91 | # | 94 | # |
92 | CONFIG_TREE_RCU=y | 95 | CONFIG_TREE_RCU=y |
93 | # CONFIG_TREE_PREEMPT_RCU is not set | 96 | # CONFIG_TREE_PREEMPT_RCU is not set |
97 | # CONFIG_TINY_RCU is not set | ||
94 | # CONFIG_RCU_TRACE is not set | 98 | # CONFIG_RCU_TRACE is not set |
95 | CONFIG_RCU_FANOUT=32 | 99 | CONFIG_RCU_FANOUT=32 |
96 | # CONFIG_RCU_FANOUT_EXACT is not set | 100 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -181,14 +185,41 @@ CONFIG_LBDAF=y | |||
181 | # IO Schedulers | 185 | # IO Schedulers |
182 | # | 186 | # |
183 | CONFIG_IOSCHED_NOOP=y | 187 | CONFIG_IOSCHED_NOOP=y |
184 | CONFIG_IOSCHED_AS=y | ||
185 | CONFIG_IOSCHED_DEADLINE=y | 188 | CONFIG_IOSCHED_DEADLINE=y |
186 | CONFIG_IOSCHED_CFQ=y | 189 | CONFIG_IOSCHED_CFQ=y |
187 | # CONFIG_DEFAULT_AS is not set | ||
188 | # CONFIG_DEFAULT_DEADLINE is not set | 190 | # CONFIG_DEFAULT_DEADLINE is not set |
189 | CONFIG_DEFAULT_CFQ=y | 191 | CONFIG_DEFAULT_CFQ=y |
190 | # CONFIG_DEFAULT_NOOP is not set | 192 | # CONFIG_DEFAULT_NOOP is not set |
191 | CONFIG_DEFAULT_IOSCHED="cfq" | 193 | CONFIG_DEFAULT_IOSCHED="cfq" |
194 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
195 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
196 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
197 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
198 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
199 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
200 | # CONFIG_INLINE_SPIN_UNLOCK is not set | ||
201 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
202 | # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
203 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
204 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
205 | # CONFIG_INLINE_READ_LOCK is not set | ||
206 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
207 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
208 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
209 | # CONFIG_INLINE_READ_UNLOCK is not set | ||
210 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
211 | # CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
212 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
213 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
214 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
215 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
216 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
217 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
218 | # CONFIG_INLINE_WRITE_UNLOCK is not set | ||
219 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
220 | # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
221 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
222 | CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
192 | # CONFIG_FREEZER is not set | 223 | # CONFIG_FREEZER is not set |
193 | 224 | ||
194 | # | 225 | # |
@@ -259,6 +290,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | |||
259 | # CONFIG_KEXEC is not set | 290 | # CONFIG_KEXEC is not set |
260 | # CONFIG_CRASH_DUMP is not set | 291 | # CONFIG_CRASH_DUMP is not set |
261 | CONFIG_IRQ_ALL_CPUS=y | 292 | CONFIG_IRQ_ALL_CPUS=y |
293 | CONFIG_SPARSE_IRQ=y | ||
262 | CONFIG_MAX_ACTIVE_REGIONS=32 | 294 | CONFIG_MAX_ACTIVE_REGIONS=32 |
263 | CONFIG_ARCH_FLATMEM_ENABLE=y | 295 | CONFIG_ARCH_FLATMEM_ENABLE=y |
264 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 296 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -275,8 +307,6 @@ CONFIG_MIGRATION=y | |||
275 | CONFIG_ZONE_DMA_FLAG=1 | 307 | CONFIG_ZONE_DMA_FLAG=1 |
276 | CONFIG_BOUNCE=y | 308 | CONFIG_BOUNCE=y |
277 | CONFIG_VIRT_TO_BUS=y | 309 | CONFIG_VIRT_TO_BUS=y |
278 | CONFIG_HAVE_MLOCK=y | ||
279 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
280 | # CONFIG_KSM is not set | 310 | # CONFIG_KSM is not set |
281 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 311 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
282 | CONFIG_PPC_4K_PAGES=y | 312 | CONFIG_PPC_4K_PAGES=y |
@@ -314,7 +344,6 @@ CONFIG_ARCH_SUPPORTS_MSI=y | |||
314 | # CONFIG_PCI_STUB is not set | 344 | # CONFIG_PCI_STUB is not set |
315 | # CONFIG_PCI_IOV is not set | 345 | # CONFIG_PCI_IOV is not set |
316 | CONFIG_PCCARD=y | 346 | CONFIG_PCCARD=y |
317 | # CONFIG_PCMCIA_DEBUG is not set | ||
318 | CONFIG_PCMCIA=y | 347 | CONFIG_PCMCIA=y |
319 | # CONFIG_PCMCIA_LOAD_CIS is not set | 348 | # CONFIG_PCMCIA_LOAD_CIS is not set |
320 | # CONFIG_PCMCIA_IOCTL is not set | 349 | # CONFIG_PCMCIA_IOCTL is not set |
@@ -414,6 +443,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
414 | CONFIG_INET6_XFRM_MODE_BEET=m | 443 | CONFIG_INET6_XFRM_MODE_BEET=m |
415 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 444 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
416 | CONFIG_IPV6_SIT=m | 445 | CONFIG_IPV6_SIT=m |
446 | # CONFIG_IPV6_SIT_6RD is not set | ||
417 | CONFIG_IPV6_NDISC_NODETYPE=y | 447 | CONFIG_IPV6_NDISC_NODETYPE=y |
418 | CONFIG_IPV6_TUNNEL=m | 448 | CONFIG_IPV6_TUNNEL=m |
419 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 449 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
@@ -451,7 +481,13 @@ CONFIG_NET_PKTGEN=m | |||
451 | # CONFIG_BT is not set | 481 | # CONFIG_BT is not set |
452 | # CONFIG_AF_RXRPC is not set | 482 | # CONFIG_AF_RXRPC is not set |
453 | CONFIG_FIB_RULES=y | 483 | CONFIG_FIB_RULES=y |
454 | # CONFIG_WIRELESS is not set | 484 | CONFIG_WIRELESS=y |
485 | # CONFIG_CFG80211 is not set | ||
486 | # CONFIG_LIB80211 is not set | ||
487 | |||
488 | # | ||
489 | # CFG80211 needs to be enabled for MAC80211 | ||
490 | # | ||
455 | # CONFIG_WIMAX is not set | 491 | # CONFIG_WIMAX is not set |
456 | # CONFIG_RFKILL is not set | 492 | # CONFIG_RFKILL is not set |
457 | # CONFIG_NET_9P is not set | 493 | # CONFIG_NET_9P is not set |
@@ -570,6 +606,10 @@ CONFIG_BLK_DEV=y | |||
570 | # CONFIG_BLK_DEV_COW_COMMON is not set | 606 | # CONFIG_BLK_DEV_COW_COMMON is not set |
571 | CONFIG_BLK_DEV_LOOP=m | 607 | CONFIG_BLK_DEV_LOOP=m |
572 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 608 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
609 | |||
610 | # | ||
611 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
612 | # | ||
573 | CONFIG_BLK_DEV_NBD=m | 613 | CONFIG_BLK_DEV_NBD=m |
574 | # CONFIG_BLK_DEV_SX8 is not set | 614 | # CONFIG_BLK_DEV_SX8 is not set |
575 | # CONFIG_BLK_DEV_UB is not set | 615 | # CONFIG_BLK_DEV_UB is not set |
@@ -581,6 +621,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072 | |||
581 | # CONFIG_ATA_OVER_ETH is not set | 621 | # CONFIG_ATA_OVER_ETH is not set |
582 | # CONFIG_BLK_DEV_HD is not set | 622 | # CONFIG_BLK_DEV_HD is not set |
583 | CONFIG_MISC_DEVICES=y | 623 | CONFIG_MISC_DEVICES=y |
624 | # CONFIG_AD525X_DPOT is not set | ||
584 | # CONFIG_PHANTOM is not set | 625 | # CONFIG_PHANTOM is not set |
585 | # CONFIG_SGI_IOC4 is not set | 626 | # CONFIG_SGI_IOC4 is not set |
586 | # CONFIG_TIFM_CORE is not set | 627 | # CONFIG_TIFM_CORE is not set |
@@ -588,6 +629,7 @@ CONFIG_MISC_DEVICES=y | |||
588 | # CONFIG_ENCLOSURE_SERVICES is not set | 629 | # CONFIG_ENCLOSURE_SERVICES is not set |
589 | # CONFIG_HP_ILO is not set | 630 | # CONFIG_HP_ILO is not set |
590 | # CONFIG_ISL29003 is not set | 631 | # CONFIG_ISL29003 is not set |
632 | CONFIG_DS1682=y | ||
591 | # CONFIG_C2PORT is not set | 633 | # CONFIG_C2PORT is not set |
592 | 634 | ||
593 | # | 635 | # |
@@ -689,7 +731,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
689 | # CONFIG_SCSI_BNX2_ISCSI is not set | 731 | # CONFIG_SCSI_BNX2_ISCSI is not set |
690 | # CONFIG_BE2ISCSI is not set | 732 | # CONFIG_BE2ISCSI is not set |
691 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 733 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
734 | # CONFIG_SCSI_HPSA is not set | ||
692 | # CONFIG_SCSI_3W_9XXX is not set | 735 | # CONFIG_SCSI_3W_9XXX is not set |
736 | # CONFIG_SCSI_3W_SAS is not set | ||
693 | # CONFIG_SCSI_ACARD is not set | 737 | # CONFIG_SCSI_ACARD is not set |
694 | # CONFIG_SCSI_AACRAID is not set | 738 | # CONFIG_SCSI_AACRAID is not set |
695 | # CONFIG_SCSI_AIC7XXX is not set | 739 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -728,6 +772,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
728 | # CONFIG_SCSI_NSP32 is not set | 772 | # CONFIG_SCSI_NSP32 is not set |
729 | # CONFIG_SCSI_DEBUG is not set | 773 | # CONFIG_SCSI_DEBUG is not set |
730 | # CONFIG_SCSI_PMCRAID is not set | 774 | # CONFIG_SCSI_PMCRAID is not set |
775 | # CONFIG_SCSI_PM8001 is not set | ||
731 | # CONFIG_SCSI_SRP is not set | 776 | # CONFIG_SCSI_SRP is not set |
732 | # CONFIG_SCSI_BFA_FC is not set | 777 | # CONFIG_SCSI_BFA_FC is not set |
733 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set | 778 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set |
@@ -785,15 +830,16 @@ CONFIG_SATA_SIL=y | |||
785 | # CONFIG_PATA_OPTI is not set | 830 | # CONFIG_PATA_OPTI is not set |
786 | # CONFIG_PATA_OPTIDMA is not set | 831 | # CONFIG_PATA_OPTIDMA is not set |
787 | # CONFIG_PATA_PCMCIA is not set | 832 | # CONFIG_PATA_PCMCIA is not set |
833 | # CONFIG_PATA_PDC2027X is not set | ||
788 | # CONFIG_PATA_PDC_OLD is not set | 834 | # CONFIG_PATA_PDC_OLD is not set |
789 | # CONFIG_PATA_RADISYS is not set | 835 | # CONFIG_PATA_RADISYS is not set |
790 | # CONFIG_PATA_RDC is not set | 836 | # CONFIG_PATA_RDC is not set |
791 | # CONFIG_PATA_RZ1000 is not set | 837 | # CONFIG_PATA_RZ1000 is not set |
792 | # CONFIG_PATA_SC1200 is not set | 838 | # CONFIG_PATA_SC1200 is not set |
793 | # CONFIG_PATA_SERVERWORKS is not set | 839 | # CONFIG_PATA_SERVERWORKS is not set |
794 | # CONFIG_PATA_PDC2027X is not set | ||
795 | # CONFIG_PATA_SIL680 is not set | 840 | # CONFIG_PATA_SIL680 is not set |
796 | # CONFIG_PATA_SIS is not set | 841 | # CONFIG_PATA_SIS is not set |
842 | # CONFIG_PATA_TOSHIBA is not set | ||
797 | # CONFIG_PATA_VIA is not set | 843 | # CONFIG_PATA_VIA is not set |
798 | # CONFIG_PATA_WINBOND is not set | 844 | # CONFIG_PATA_WINBOND is not set |
799 | # CONFIG_PATA_PLATFORM is not set | 845 | # CONFIG_PATA_PLATFORM is not set |
@@ -810,7 +856,7 @@ CONFIG_SATA_SIL=y | |||
810 | # | 856 | # |
811 | 857 | ||
812 | # | 858 | # |
813 | # See the help texts for more information. | 859 | # The newer stack is recommended. |
814 | # | 860 | # |
815 | # CONFIG_FIREWIRE is not set | 861 | # CONFIG_FIREWIRE is not set |
816 | # CONFIG_IEEE1394 is not set | 862 | # CONFIG_IEEE1394 is not set |
@@ -897,8 +943,14 @@ CONFIG_GIANFAR=y | |||
897 | # CONFIG_NETDEV_10000 is not set | 943 | # CONFIG_NETDEV_10000 is not set |
898 | # CONFIG_TR is not set | 944 | # CONFIG_TR is not set |
899 | CONFIG_WLAN=y | 945 | CONFIG_WLAN=y |
900 | # CONFIG_WLAN_PRE80211 is not set | 946 | # CONFIG_PCMCIA_RAYCS is not set |
901 | # CONFIG_WLAN_80211 is not set | 947 | # CONFIG_AIRO is not set |
948 | # CONFIG_ATMEL is not set | ||
949 | # CONFIG_AIRO_CS is not set | ||
950 | # CONFIG_PCMCIA_WL3501 is not set | ||
951 | # CONFIG_PRISM54 is not set | ||
952 | # CONFIG_USB_ZD1201 is not set | ||
953 | # CONFIG_HOSTAP is not set | ||
902 | 954 | ||
903 | # | 955 | # |
904 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 956 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -937,6 +989,7 @@ CONFIG_NETCONSOLE=y | |||
937 | CONFIG_NETPOLL=y | 989 | CONFIG_NETPOLL=y |
938 | CONFIG_NETPOLL_TRAP=y | 990 | CONFIG_NETPOLL_TRAP=y |
939 | CONFIG_NET_POLL_CONTROLLER=y | 991 | CONFIG_NET_POLL_CONTROLLER=y |
992 | # CONFIG_VMXNET3 is not set | ||
940 | # CONFIG_ISDN is not set | 993 | # CONFIG_ISDN is not set |
941 | # CONFIG_PHONE is not set | 994 | # CONFIG_PHONE is not set |
942 | 995 | ||
@@ -946,6 +999,7 @@ CONFIG_NET_POLL_CONTROLLER=y | |||
946 | CONFIG_INPUT=y | 999 | CONFIG_INPUT=y |
947 | # CONFIG_INPUT_FF_MEMLESS is not set | 1000 | # CONFIG_INPUT_FF_MEMLESS is not set |
948 | # CONFIG_INPUT_POLLDEV is not set | 1001 | # CONFIG_INPUT_POLLDEV is not set |
1002 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
949 | 1003 | ||
950 | # | 1004 | # |
951 | # Userland interfaces | 1005 | # Userland interfaces |
@@ -1005,6 +1059,7 @@ CONFIG_SERIAL_CORE=y | |||
1005 | CONFIG_SERIAL_CORE_CONSOLE=y | 1059 | CONFIG_SERIAL_CORE_CONSOLE=y |
1006 | # CONFIG_SERIAL_JSM is not set | 1060 | # CONFIG_SERIAL_JSM is not set |
1007 | # CONFIG_SERIAL_OF_PLATFORM is not set | 1061 | # CONFIG_SERIAL_OF_PLATFORM is not set |
1062 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
1008 | CONFIG_UNIX98_PTYS=y | 1063 | CONFIG_UNIX98_PTYS=y |
1009 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 1064 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
1010 | # CONFIG_LEGACY_PTYS is not set | 1065 | # CONFIG_LEGACY_PTYS is not set |
@@ -1070,11 +1125,6 @@ CONFIG_I2C_MPC=y | |||
1070 | # CONFIG_I2C_TINY_USB is not set | 1125 | # CONFIG_I2C_TINY_USB is not set |
1071 | 1126 | ||
1072 | # | 1127 | # |
1073 | # Graphics adapter I2C/DDC channel drivers | ||
1074 | # | ||
1075 | # CONFIG_I2C_VOODOO3 is not set | ||
1076 | |||
1077 | # | ||
1078 | # Other I2C/SMBus bus drivers | 1128 | # Other I2C/SMBus bus drivers |
1079 | # | 1129 | # |
1080 | # CONFIG_I2C_PCA_PLATFORM is not set | 1130 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -1083,7 +1133,6 @@ CONFIG_I2C_MPC=y | |||
1083 | # | 1133 | # |
1084 | # Miscellaneous I2C Chip support | 1134 | # Miscellaneous I2C Chip support |
1085 | # | 1135 | # |
1086 | CONFIG_DS1682=y | ||
1087 | # CONFIG_SENSORS_TSL2550 is not set | 1136 | # CONFIG_SENSORS_TSL2550 is not set |
1088 | # CONFIG_I2C_DEBUG_CORE is not set | 1137 | # CONFIG_I2C_DEBUG_CORE is not set |
1089 | # CONFIG_I2C_DEBUG_ALGO is not set | 1138 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1115,6 +1164,7 @@ CONFIG_GPIO_SYSFS=y | |||
1115 | # | 1164 | # |
1116 | # PCI GPIO expanders: | 1165 | # PCI GPIO expanders: |
1117 | # | 1166 | # |
1167 | # CONFIG_GPIO_CS5535 is not set | ||
1118 | # CONFIG_GPIO_BT8XX is not set | 1168 | # CONFIG_GPIO_BT8XX is not set |
1119 | # CONFIG_GPIO_LANGWELL is not set | 1169 | # CONFIG_GPIO_LANGWELL is not set |
1120 | 1170 | ||
@@ -1157,6 +1207,7 @@ CONFIG_HWMON=y | |||
1157 | # CONFIG_SENSORS_GL520SM is not set | 1207 | # CONFIG_SENSORS_GL520SM is not set |
1158 | # CONFIG_SENSORS_IT87 is not set | 1208 | # CONFIG_SENSORS_IT87 is not set |
1159 | # CONFIG_SENSORS_LM63 is not set | 1209 | # CONFIG_SENSORS_LM63 is not set |
1210 | # CONFIG_SENSORS_LM73 is not set | ||
1160 | # CONFIG_SENSORS_LM75 is not set | 1211 | # CONFIG_SENSORS_LM75 is not set |
1161 | # CONFIG_SENSORS_LM77 is not set | 1212 | # CONFIG_SENSORS_LM77 is not set |
1162 | # CONFIG_SENSORS_LM78 is not set | 1213 | # CONFIG_SENSORS_LM78 is not set |
@@ -1196,6 +1247,7 @@ CONFIG_SENSORS_LM92=y | |||
1196 | # CONFIG_SENSORS_W83L786NG is not set | 1247 | # CONFIG_SENSORS_W83L786NG is not set |
1197 | # CONFIG_SENSORS_W83627HF is not set | 1248 | # CONFIG_SENSORS_W83627HF is not set |
1198 | # CONFIG_SENSORS_W83627EHF is not set | 1249 | # CONFIG_SENSORS_W83627EHF is not set |
1250 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1199 | # CONFIG_THERMAL is not set | 1251 | # CONFIG_THERMAL is not set |
1200 | CONFIG_WATCHDOG=y | 1252 | CONFIG_WATCHDOG=y |
1201 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1253 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -1235,11 +1287,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1235 | # CONFIG_TWL4030_CORE is not set | 1287 | # CONFIG_TWL4030_CORE is not set |
1236 | # CONFIG_MFD_TMIO is not set | 1288 | # CONFIG_MFD_TMIO is not set |
1237 | # CONFIG_PMIC_DA903X is not set | 1289 | # CONFIG_PMIC_DA903X is not set |
1290 | # CONFIG_PMIC_ADP5520 is not set | ||
1238 | # CONFIG_MFD_WM8400 is not set | 1291 | # CONFIG_MFD_WM8400 is not set |
1239 | # CONFIG_MFD_WM831X is not set | 1292 | # CONFIG_MFD_WM831X is not set |
1240 | # CONFIG_MFD_WM8350_I2C is not set | 1293 | # CONFIG_MFD_WM8350_I2C is not set |
1241 | # CONFIG_MFD_PCF50633 is not set | 1294 | # CONFIG_MFD_PCF50633 is not set |
1242 | # CONFIG_AB3100_CORE is not set | 1295 | # CONFIG_AB3100_CORE is not set |
1296 | # CONFIG_MFD_88PM8607 is not set | ||
1243 | # CONFIG_REGULATOR is not set | 1297 | # CONFIG_REGULATOR is not set |
1244 | # CONFIG_MEDIA_SUPPORT is not set | 1298 | # CONFIG_MEDIA_SUPPORT is not set |
1245 | 1299 | ||
@@ -1338,6 +1392,7 @@ CONFIG_USB=y | |||
1338 | CONFIG_USB_EHCI_HCD=y | 1392 | CONFIG_USB_EHCI_HCD=y |
1339 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1393 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1340 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1394 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1395 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1341 | # CONFIG_USB_EHCI_FSL is not set | 1396 | # CONFIG_USB_EHCI_FSL is not set |
1342 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | 1397 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set |
1343 | # CONFIG_USB_OXU210HP_HCD is not set | 1398 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1464,6 +1519,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1464 | # CONFIG_RTC_DRV_PCF8563 is not set | 1519 | # CONFIG_RTC_DRV_PCF8563 is not set |
1465 | # CONFIG_RTC_DRV_PCF8583 is not set | 1520 | # CONFIG_RTC_DRV_PCF8583 is not set |
1466 | # CONFIG_RTC_DRV_M41T80 is not set | 1521 | # CONFIG_RTC_DRV_M41T80 is not set |
1522 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1467 | # CONFIG_RTC_DRV_S35390A is not set | 1523 | # CONFIG_RTC_DRV_S35390A is not set |
1468 | # CONFIG_RTC_DRV_FM3130 is not set | 1524 | # CONFIG_RTC_DRV_FM3130 is not set |
1469 | CONFIG_RTC_DRV_RX8581=y | 1525 | CONFIG_RTC_DRV_RX8581=y |
@@ -1485,7 +1541,9 @@ CONFIG_RTC_DRV_RX8581=y | |||
1485 | # CONFIG_RTC_DRV_M48T86 is not set | 1541 | # CONFIG_RTC_DRV_M48T86 is not set |
1486 | # CONFIG_RTC_DRV_M48T35 is not set | 1542 | # CONFIG_RTC_DRV_M48T35 is not set |
1487 | # CONFIG_RTC_DRV_M48T59 is not set | 1543 | # CONFIG_RTC_DRV_M48T59 is not set |
1544 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1488 | # CONFIG_RTC_DRV_BQ4802 is not set | 1545 | # CONFIG_RTC_DRV_BQ4802 is not set |
1546 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1489 | # CONFIG_RTC_DRV_V3020 is not set | 1547 | # CONFIG_RTC_DRV_V3020 is not set |
1490 | 1548 | ||
1491 | # | 1549 | # |
@@ -1710,7 +1768,7 @@ CONFIG_MAGIC_SYSRQ=y | |||
1710 | # CONFIG_DEBUG_FS is not set | 1768 | # CONFIG_DEBUG_FS is not set |
1711 | # CONFIG_HEADERS_CHECK is not set | 1769 | # CONFIG_HEADERS_CHECK is not set |
1712 | # CONFIG_DEBUG_KERNEL is not set | 1770 | # CONFIG_DEBUG_KERNEL is not set |
1713 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1771 | CONFIG_DEBUG_BUGVERBOSE=y |
1714 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1772 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1715 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1773 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1716 | # CONFIG_LATENCYTOP is not set | 1774 | # CONFIG_LATENCYTOP is not set |
@@ -1737,7 +1795,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1737 | # CONFIG_KEYS is not set | 1795 | # CONFIG_KEYS is not set |
1738 | # CONFIG_SECURITY is not set | 1796 | # CONFIG_SECURITY is not set |
1739 | # CONFIG_SECURITYFS is not set | 1797 | # CONFIG_SECURITYFS is not set |
1740 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1798 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1799 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1800 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1801 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1802 | CONFIG_DEFAULT_SECURITY="" | ||
1741 | CONFIG_CRYPTO=y | 1803 | CONFIG_CRYPTO=y |
1742 | 1804 | ||
1743 | # | 1805 | # |
diff --git a/arch/powerpc/configs/86xx/gef_sbc310_defconfig b/arch/powerpc/configs/86xx/gef_sbc310_defconfig index a6a3768f7304..eb58dec11a61 100644 --- a/arch/powerpc/configs/86xx/gef_sbc310_defconfig +++ b/arch/powerpc/configs/86xx/gef_sbc310_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:47 2009 | 4 | # Wed Jan 6 09:24:41 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -38,6 +38,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
40 | CONFIG_IRQ_PER_CPU=y | 40 | CONFIG_IRQ_PER_CPU=y |
41 | CONFIG_NR_IRQS=512 | ||
41 | CONFIG_STACKTRACE_SUPPORT=y | 42 | CONFIG_STACKTRACE_SUPPORT=y |
42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y | |||
62 | CONFIG_GENERIC_BUG=y | 63 | CONFIG_GENERIC_BUG=y |
63 | CONFIG_DTC=y | 64 | CONFIG_DTC=y |
64 | CONFIG_DEFAULT_UIMAGE=y | 65 | CONFIG_DEFAULT_UIMAGE=y |
66 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
67 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
65 | # CONFIG_PPC_DCR_NATIVE is not set | 68 | # CONFIG_PPC_DCR_NATIVE is not set |
66 | # CONFIG_PPC_DCR_MMIO is not set | 69 | # CONFIG_PPC_DCR_MMIO is not set |
67 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 70 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -91,6 +94,7 @@ CONFIG_BSD_PROCESS_ACCT_V3=y | |||
91 | # | 94 | # |
92 | CONFIG_TREE_RCU=y | 95 | CONFIG_TREE_RCU=y |
93 | # CONFIG_TREE_PREEMPT_RCU is not set | 96 | # CONFIG_TREE_PREEMPT_RCU is not set |
97 | # CONFIG_TINY_RCU is not set | ||
94 | # CONFIG_RCU_TRACE is not set | 98 | # CONFIG_RCU_TRACE is not set |
95 | CONFIG_RCU_FANOUT=32 | 99 | CONFIG_RCU_FANOUT=32 |
96 | # CONFIG_RCU_FANOUT_EXACT is not set | 100 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -181,14 +185,41 @@ CONFIG_LBDAF=y | |||
181 | # IO Schedulers | 185 | # IO Schedulers |
182 | # | 186 | # |
183 | CONFIG_IOSCHED_NOOP=y | 187 | CONFIG_IOSCHED_NOOP=y |
184 | CONFIG_IOSCHED_AS=y | ||
185 | CONFIG_IOSCHED_DEADLINE=y | 188 | CONFIG_IOSCHED_DEADLINE=y |
186 | CONFIG_IOSCHED_CFQ=y | 189 | CONFIG_IOSCHED_CFQ=y |
187 | # CONFIG_DEFAULT_AS is not set | ||
188 | # CONFIG_DEFAULT_DEADLINE is not set | 190 | # CONFIG_DEFAULT_DEADLINE is not set |
189 | CONFIG_DEFAULT_CFQ=y | 191 | CONFIG_DEFAULT_CFQ=y |
190 | # CONFIG_DEFAULT_NOOP is not set | 192 | # CONFIG_DEFAULT_NOOP is not set |
191 | CONFIG_DEFAULT_IOSCHED="cfq" | 193 | CONFIG_DEFAULT_IOSCHED="cfq" |
194 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
195 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
196 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
197 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
198 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
199 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
200 | # CONFIG_INLINE_SPIN_UNLOCK is not set | ||
201 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
202 | # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
203 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
204 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
205 | # CONFIG_INLINE_READ_LOCK is not set | ||
206 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
207 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
208 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
209 | # CONFIG_INLINE_READ_UNLOCK is not set | ||
210 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
211 | # CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
212 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
213 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
214 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
215 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
216 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
217 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
218 | # CONFIG_INLINE_WRITE_UNLOCK is not set | ||
219 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
220 | # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
221 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
222 | CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
192 | # CONFIG_FREEZER is not set | 223 | # CONFIG_FREEZER is not set |
193 | 224 | ||
194 | # | 225 | # |
@@ -259,6 +290,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | |||
259 | # CONFIG_KEXEC is not set | 290 | # CONFIG_KEXEC is not set |
260 | # CONFIG_CRASH_DUMP is not set | 291 | # CONFIG_CRASH_DUMP is not set |
261 | CONFIG_IRQ_ALL_CPUS=y | 292 | CONFIG_IRQ_ALL_CPUS=y |
293 | CONFIG_SPARSE_IRQ=y | ||
262 | CONFIG_MAX_ACTIVE_REGIONS=32 | 294 | CONFIG_MAX_ACTIVE_REGIONS=32 |
263 | CONFIG_ARCH_FLATMEM_ENABLE=y | 295 | CONFIG_ARCH_FLATMEM_ENABLE=y |
264 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 296 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -275,8 +307,6 @@ CONFIG_MIGRATION=y | |||
275 | CONFIG_ZONE_DMA_FLAG=1 | 307 | CONFIG_ZONE_DMA_FLAG=1 |
276 | CONFIG_BOUNCE=y | 308 | CONFIG_BOUNCE=y |
277 | CONFIG_VIRT_TO_BUS=y | 309 | CONFIG_VIRT_TO_BUS=y |
278 | CONFIG_HAVE_MLOCK=y | ||
279 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
280 | # CONFIG_KSM is not set | 310 | # CONFIG_KSM is not set |
281 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 311 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
282 | CONFIG_PPC_4K_PAGES=y | 312 | CONFIG_PPC_4K_PAGES=y |
@@ -314,7 +344,6 @@ CONFIG_ARCH_SUPPORTS_MSI=y | |||
314 | # CONFIG_PCI_STUB is not set | 344 | # CONFIG_PCI_STUB is not set |
315 | # CONFIG_PCI_IOV is not set | 345 | # CONFIG_PCI_IOV is not set |
316 | CONFIG_PCCARD=y | 346 | CONFIG_PCCARD=y |
317 | # CONFIG_PCMCIA_DEBUG is not set | ||
318 | CONFIG_PCMCIA=y | 347 | CONFIG_PCMCIA=y |
319 | # CONFIG_PCMCIA_LOAD_CIS is not set | 348 | # CONFIG_PCMCIA_LOAD_CIS is not set |
320 | # CONFIG_PCMCIA_IOCTL is not set | 349 | # CONFIG_PCMCIA_IOCTL is not set |
@@ -414,6 +443,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
414 | CONFIG_INET6_XFRM_MODE_BEET=m | 443 | CONFIG_INET6_XFRM_MODE_BEET=m |
415 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 444 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
416 | CONFIG_IPV6_SIT=m | 445 | CONFIG_IPV6_SIT=m |
446 | # CONFIG_IPV6_SIT_6RD is not set | ||
417 | CONFIG_IPV6_NDISC_NODETYPE=y | 447 | CONFIG_IPV6_NDISC_NODETYPE=y |
418 | CONFIG_IPV6_TUNNEL=m | 448 | CONFIG_IPV6_TUNNEL=m |
419 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 449 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
@@ -451,7 +481,13 @@ CONFIG_NET_PKTGEN=m | |||
451 | # CONFIG_BT is not set | 481 | # CONFIG_BT is not set |
452 | # CONFIG_AF_RXRPC is not set | 482 | # CONFIG_AF_RXRPC is not set |
453 | CONFIG_FIB_RULES=y | 483 | CONFIG_FIB_RULES=y |
454 | # CONFIG_WIRELESS is not set | 484 | CONFIG_WIRELESS=y |
485 | # CONFIG_CFG80211 is not set | ||
486 | # CONFIG_LIB80211 is not set | ||
487 | |||
488 | # | ||
489 | # CFG80211 needs to be enabled for MAC80211 | ||
490 | # | ||
455 | # CONFIG_WIMAX is not set | 491 | # CONFIG_WIMAX is not set |
456 | # CONFIG_RFKILL is not set | 492 | # CONFIG_RFKILL is not set |
457 | # CONFIG_NET_9P is not set | 493 | # CONFIG_NET_9P is not set |
@@ -570,6 +606,10 @@ CONFIG_BLK_DEV=y | |||
570 | # CONFIG_BLK_DEV_COW_COMMON is not set | 606 | # CONFIG_BLK_DEV_COW_COMMON is not set |
571 | CONFIG_BLK_DEV_LOOP=m | 607 | CONFIG_BLK_DEV_LOOP=m |
572 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 608 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
609 | |||
610 | # | ||
611 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
612 | # | ||
573 | CONFIG_BLK_DEV_NBD=m | 613 | CONFIG_BLK_DEV_NBD=m |
574 | # CONFIG_BLK_DEV_SX8 is not set | 614 | # CONFIG_BLK_DEV_SX8 is not set |
575 | # CONFIG_BLK_DEV_UB is not set | 615 | # CONFIG_BLK_DEV_UB is not set |
@@ -581,6 +621,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072 | |||
581 | # CONFIG_ATA_OVER_ETH is not set | 621 | # CONFIG_ATA_OVER_ETH is not set |
582 | # CONFIG_BLK_DEV_HD is not set | 622 | # CONFIG_BLK_DEV_HD is not set |
583 | CONFIG_MISC_DEVICES=y | 623 | CONFIG_MISC_DEVICES=y |
624 | # CONFIG_AD525X_DPOT is not set | ||
584 | # CONFIG_PHANTOM is not set | 625 | # CONFIG_PHANTOM is not set |
585 | # CONFIG_SGI_IOC4 is not set | 626 | # CONFIG_SGI_IOC4 is not set |
586 | # CONFIG_TIFM_CORE is not set | 627 | # CONFIG_TIFM_CORE is not set |
@@ -588,6 +629,7 @@ CONFIG_MISC_DEVICES=y | |||
588 | # CONFIG_ENCLOSURE_SERVICES is not set | 629 | # CONFIG_ENCLOSURE_SERVICES is not set |
589 | # CONFIG_HP_ILO is not set | 630 | # CONFIG_HP_ILO is not set |
590 | # CONFIG_ISL29003 is not set | 631 | # CONFIG_ISL29003 is not set |
632 | CONFIG_DS1682=y | ||
591 | # CONFIG_C2PORT is not set | 633 | # CONFIG_C2PORT is not set |
592 | 634 | ||
593 | # | 635 | # |
@@ -689,7 +731,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
689 | # CONFIG_SCSI_BNX2_ISCSI is not set | 731 | # CONFIG_SCSI_BNX2_ISCSI is not set |
690 | # CONFIG_BE2ISCSI is not set | 732 | # CONFIG_BE2ISCSI is not set |
691 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 733 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
734 | # CONFIG_SCSI_HPSA is not set | ||
692 | # CONFIG_SCSI_3W_9XXX is not set | 735 | # CONFIG_SCSI_3W_9XXX is not set |
736 | # CONFIG_SCSI_3W_SAS is not set | ||
693 | # CONFIG_SCSI_ACARD is not set | 737 | # CONFIG_SCSI_ACARD is not set |
694 | # CONFIG_SCSI_AACRAID is not set | 738 | # CONFIG_SCSI_AACRAID is not set |
695 | # CONFIG_SCSI_AIC7XXX is not set | 739 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -728,6 +772,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
728 | # CONFIG_SCSI_NSP32 is not set | 772 | # CONFIG_SCSI_NSP32 is not set |
729 | # CONFIG_SCSI_DEBUG is not set | 773 | # CONFIG_SCSI_DEBUG is not set |
730 | # CONFIG_SCSI_PMCRAID is not set | 774 | # CONFIG_SCSI_PMCRAID is not set |
775 | # CONFIG_SCSI_PM8001 is not set | ||
731 | # CONFIG_SCSI_SRP is not set | 776 | # CONFIG_SCSI_SRP is not set |
732 | # CONFIG_SCSI_BFA_FC is not set | 777 | # CONFIG_SCSI_BFA_FC is not set |
733 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set | 778 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set |
@@ -753,7 +798,7 @@ CONFIG_SATA_SIL24=y | |||
753 | # | 798 | # |
754 | 799 | ||
755 | # | 800 | # |
756 | # See the help texts for more information. | 801 | # The newer stack is recommended. |
757 | # | 802 | # |
758 | # CONFIG_FIREWIRE is not set | 803 | # CONFIG_FIREWIRE is not set |
759 | # CONFIG_IEEE1394 is not set | 804 | # CONFIG_IEEE1394 is not set |
@@ -840,8 +885,14 @@ CONFIG_GIANFAR=y | |||
840 | # CONFIG_NETDEV_10000 is not set | 885 | # CONFIG_NETDEV_10000 is not set |
841 | # CONFIG_TR is not set | 886 | # CONFIG_TR is not set |
842 | CONFIG_WLAN=y | 887 | CONFIG_WLAN=y |
843 | # CONFIG_WLAN_PRE80211 is not set | 888 | # CONFIG_PCMCIA_RAYCS is not set |
844 | # CONFIG_WLAN_80211 is not set | 889 | # CONFIG_AIRO is not set |
890 | # CONFIG_ATMEL is not set | ||
891 | # CONFIG_AIRO_CS is not set | ||
892 | # CONFIG_PCMCIA_WL3501 is not set | ||
893 | # CONFIG_PRISM54 is not set | ||
894 | # CONFIG_USB_ZD1201 is not set | ||
895 | # CONFIG_HOSTAP is not set | ||
845 | 896 | ||
846 | # | 897 | # |
847 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 898 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -880,6 +931,7 @@ CONFIG_NETCONSOLE=y | |||
880 | CONFIG_NETPOLL=y | 931 | CONFIG_NETPOLL=y |
881 | CONFIG_NETPOLL_TRAP=y | 932 | CONFIG_NETPOLL_TRAP=y |
882 | CONFIG_NET_POLL_CONTROLLER=y | 933 | CONFIG_NET_POLL_CONTROLLER=y |
934 | # CONFIG_VMXNET3 is not set | ||
883 | # CONFIG_ISDN is not set | 935 | # CONFIG_ISDN is not set |
884 | # CONFIG_PHONE is not set | 936 | # CONFIG_PHONE is not set |
885 | 937 | ||
@@ -889,6 +941,7 @@ CONFIG_NET_POLL_CONTROLLER=y | |||
889 | CONFIG_INPUT=y | 941 | CONFIG_INPUT=y |
890 | # CONFIG_INPUT_FF_MEMLESS is not set | 942 | # CONFIG_INPUT_FF_MEMLESS is not set |
891 | # CONFIG_INPUT_POLLDEV is not set | 943 | # CONFIG_INPUT_POLLDEV is not set |
944 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
892 | 945 | ||
893 | # | 946 | # |
894 | # Userland interfaces | 947 | # Userland interfaces |
@@ -948,6 +1001,7 @@ CONFIG_SERIAL_CORE=y | |||
948 | CONFIG_SERIAL_CORE_CONSOLE=y | 1001 | CONFIG_SERIAL_CORE_CONSOLE=y |
949 | # CONFIG_SERIAL_JSM is not set | 1002 | # CONFIG_SERIAL_JSM is not set |
950 | # CONFIG_SERIAL_OF_PLATFORM is not set | 1003 | # CONFIG_SERIAL_OF_PLATFORM is not set |
1004 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
951 | CONFIG_UNIX98_PTYS=y | 1005 | CONFIG_UNIX98_PTYS=y |
952 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 1006 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
953 | # CONFIG_LEGACY_PTYS is not set | 1007 | # CONFIG_LEGACY_PTYS is not set |
@@ -1013,11 +1067,6 @@ CONFIG_I2C_MPC=y | |||
1013 | # CONFIG_I2C_TINY_USB is not set | 1067 | # CONFIG_I2C_TINY_USB is not set |
1014 | 1068 | ||
1015 | # | 1069 | # |
1016 | # Graphics adapter I2C/DDC channel drivers | ||
1017 | # | ||
1018 | # CONFIG_I2C_VOODOO3 is not set | ||
1019 | |||
1020 | # | ||
1021 | # Other I2C/SMBus bus drivers | 1070 | # Other I2C/SMBus bus drivers |
1022 | # | 1071 | # |
1023 | # CONFIG_I2C_PCA_PLATFORM is not set | 1072 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -1026,7 +1075,6 @@ CONFIG_I2C_MPC=y | |||
1026 | # | 1075 | # |
1027 | # Miscellaneous I2C Chip support | 1076 | # Miscellaneous I2C Chip support |
1028 | # | 1077 | # |
1029 | CONFIG_DS1682=y | ||
1030 | # CONFIG_SENSORS_TSL2550 is not set | 1078 | # CONFIG_SENSORS_TSL2550 is not set |
1031 | # CONFIG_I2C_DEBUG_CORE is not set | 1079 | # CONFIG_I2C_DEBUG_CORE is not set |
1032 | # CONFIG_I2C_DEBUG_ALGO is not set | 1080 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1058,6 +1106,7 @@ CONFIG_GPIO_SYSFS=y | |||
1058 | # | 1106 | # |
1059 | # PCI GPIO expanders: | 1107 | # PCI GPIO expanders: |
1060 | # | 1108 | # |
1109 | # CONFIG_GPIO_CS5535 is not set | ||
1061 | # CONFIG_GPIO_BT8XX is not set | 1110 | # CONFIG_GPIO_BT8XX is not set |
1062 | # CONFIG_GPIO_LANGWELL is not set | 1111 | # CONFIG_GPIO_LANGWELL is not set |
1063 | 1112 | ||
@@ -1100,6 +1149,7 @@ CONFIG_HWMON=y | |||
1100 | # CONFIG_SENSORS_GL520SM is not set | 1149 | # CONFIG_SENSORS_GL520SM is not set |
1101 | # CONFIG_SENSORS_IT87 is not set | 1150 | # CONFIG_SENSORS_IT87 is not set |
1102 | # CONFIG_SENSORS_LM63 is not set | 1151 | # CONFIG_SENSORS_LM63 is not set |
1152 | # CONFIG_SENSORS_LM73 is not set | ||
1103 | # CONFIG_SENSORS_LM75 is not set | 1153 | # CONFIG_SENSORS_LM75 is not set |
1104 | # CONFIG_SENSORS_LM77 is not set | 1154 | # CONFIG_SENSORS_LM77 is not set |
1105 | # CONFIG_SENSORS_LM78 is not set | 1155 | # CONFIG_SENSORS_LM78 is not set |
@@ -1139,6 +1189,7 @@ CONFIG_SENSORS_LM92=y | |||
1139 | # CONFIG_SENSORS_W83L786NG is not set | 1189 | # CONFIG_SENSORS_W83L786NG is not set |
1140 | # CONFIG_SENSORS_W83627HF is not set | 1190 | # CONFIG_SENSORS_W83627HF is not set |
1141 | # CONFIG_SENSORS_W83627EHF is not set | 1191 | # CONFIG_SENSORS_W83627EHF is not set |
1192 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1142 | # CONFIG_THERMAL is not set | 1193 | # CONFIG_THERMAL is not set |
1143 | CONFIG_WATCHDOG=y | 1194 | CONFIG_WATCHDOG=y |
1144 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1195 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -1178,11 +1229,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1178 | # CONFIG_TWL4030_CORE is not set | 1229 | # CONFIG_TWL4030_CORE is not set |
1179 | # CONFIG_MFD_TMIO is not set | 1230 | # CONFIG_MFD_TMIO is not set |
1180 | # CONFIG_PMIC_DA903X is not set | 1231 | # CONFIG_PMIC_DA903X is not set |
1232 | # CONFIG_PMIC_ADP5520 is not set | ||
1181 | # CONFIG_MFD_WM8400 is not set | 1233 | # CONFIG_MFD_WM8400 is not set |
1182 | # CONFIG_MFD_WM831X is not set | 1234 | # CONFIG_MFD_WM831X is not set |
1183 | # CONFIG_MFD_WM8350_I2C is not set | 1235 | # CONFIG_MFD_WM8350_I2C is not set |
1184 | # CONFIG_MFD_PCF50633 is not set | 1236 | # CONFIG_MFD_PCF50633 is not set |
1185 | # CONFIG_AB3100_CORE is not set | 1237 | # CONFIG_AB3100_CORE is not set |
1238 | # CONFIG_MFD_88PM8607 is not set | ||
1186 | # CONFIG_REGULATOR is not set | 1239 | # CONFIG_REGULATOR is not set |
1187 | # CONFIG_MEDIA_SUPPORT is not set | 1240 | # CONFIG_MEDIA_SUPPORT is not set |
1188 | 1241 | ||
@@ -1281,6 +1334,7 @@ CONFIG_USB=y | |||
1281 | CONFIG_USB_EHCI_HCD=y | 1334 | CONFIG_USB_EHCI_HCD=y |
1282 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1335 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1283 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1336 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1337 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1284 | # CONFIG_USB_EHCI_FSL is not set | 1338 | # CONFIG_USB_EHCI_FSL is not set |
1285 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | 1339 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set |
1286 | # CONFIG_USB_OXU210HP_HCD is not set | 1340 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1407,6 +1461,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1407 | # CONFIG_RTC_DRV_PCF8563 is not set | 1461 | # CONFIG_RTC_DRV_PCF8563 is not set |
1408 | # CONFIG_RTC_DRV_PCF8583 is not set | 1462 | # CONFIG_RTC_DRV_PCF8583 is not set |
1409 | # CONFIG_RTC_DRV_M41T80 is not set | 1463 | # CONFIG_RTC_DRV_M41T80 is not set |
1464 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1410 | # CONFIG_RTC_DRV_S35390A is not set | 1465 | # CONFIG_RTC_DRV_S35390A is not set |
1411 | # CONFIG_RTC_DRV_FM3130 is not set | 1466 | # CONFIG_RTC_DRV_FM3130 is not set |
1412 | CONFIG_RTC_DRV_RX8581=y | 1467 | CONFIG_RTC_DRV_RX8581=y |
@@ -1428,7 +1483,9 @@ CONFIG_RTC_DRV_RX8581=y | |||
1428 | # CONFIG_RTC_DRV_M48T86 is not set | 1483 | # CONFIG_RTC_DRV_M48T86 is not set |
1429 | # CONFIG_RTC_DRV_M48T35 is not set | 1484 | # CONFIG_RTC_DRV_M48T35 is not set |
1430 | # CONFIG_RTC_DRV_M48T59 is not set | 1485 | # CONFIG_RTC_DRV_M48T59 is not set |
1486 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1431 | # CONFIG_RTC_DRV_BQ4802 is not set | 1487 | # CONFIG_RTC_DRV_BQ4802 is not set |
1488 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1432 | # CONFIG_RTC_DRV_V3020 is not set | 1489 | # CONFIG_RTC_DRV_V3020 is not set |
1433 | 1490 | ||
1434 | # | 1491 | # |
@@ -1653,7 +1710,7 @@ CONFIG_MAGIC_SYSRQ=y | |||
1653 | # CONFIG_DEBUG_FS is not set | 1710 | # CONFIG_DEBUG_FS is not set |
1654 | # CONFIG_HEADERS_CHECK is not set | 1711 | # CONFIG_HEADERS_CHECK is not set |
1655 | # CONFIG_DEBUG_KERNEL is not set | 1712 | # CONFIG_DEBUG_KERNEL is not set |
1656 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1713 | CONFIG_DEBUG_BUGVERBOSE=y |
1657 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1714 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1658 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1715 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1659 | # CONFIG_LATENCYTOP is not set | 1716 | # CONFIG_LATENCYTOP is not set |
@@ -1680,7 +1737,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1680 | # CONFIG_KEYS is not set | 1737 | # CONFIG_KEYS is not set |
1681 | # CONFIG_SECURITY is not set | 1738 | # CONFIG_SECURITY is not set |
1682 | # CONFIG_SECURITYFS is not set | 1739 | # CONFIG_SECURITYFS is not set |
1683 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1740 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1741 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1742 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1743 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1744 | CONFIG_DEFAULT_SECURITY="" | ||
1684 | CONFIG_CRYPTO=y | 1745 | CONFIG_CRYPTO=y |
1685 | 1746 | ||
1686 | # | 1747 | # |
diff --git a/arch/powerpc/configs/86xx/gef_sbc610_defconfig b/arch/powerpc/configs/86xx/gef_sbc610_defconfig index 1975d41e0763..4554d9bb03e5 100644 --- a/arch/powerpc/configs/86xx/gef_sbc610_defconfig +++ b/arch/powerpc/configs/86xx/gef_sbc610_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:48 2009 | 4 | # Wed Jan 6 09:24:42 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -38,6 +38,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
40 | CONFIG_IRQ_PER_CPU=y | 40 | CONFIG_IRQ_PER_CPU=y |
41 | CONFIG_NR_IRQS=512 | ||
41 | CONFIG_STACKTRACE_SUPPORT=y | 42 | CONFIG_STACKTRACE_SUPPORT=y |
42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y | |||
62 | CONFIG_GENERIC_BUG=y | 63 | CONFIG_GENERIC_BUG=y |
63 | CONFIG_DTC=y | 64 | CONFIG_DTC=y |
64 | CONFIG_DEFAULT_UIMAGE=y | 65 | CONFIG_DEFAULT_UIMAGE=y |
66 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
67 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
65 | # CONFIG_PPC_DCR_NATIVE is not set | 68 | # CONFIG_PPC_DCR_NATIVE is not set |
66 | # CONFIG_PPC_DCR_MMIO is not set | 69 | # CONFIG_PPC_DCR_MMIO is not set |
67 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 70 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -91,6 +94,7 @@ CONFIG_BSD_PROCESS_ACCT_V3=y | |||
91 | # | 94 | # |
92 | CONFIG_TREE_RCU=y | 95 | CONFIG_TREE_RCU=y |
93 | # CONFIG_TREE_PREEMPT_RCU is not set | 96 | # CONFIG_TREE_PREEMPT_RCU is not set |
97 | # CONFIG_TINY_RCU is not set | ||
94 | # CONFIG_RCU_TRACE is not set | 98 | # CONFIG_RCU_TRACE is not set |
95 | CONFIG_RCU_FANOUT=32 | 99 | CONFIG_RCU_FANOUT=32 |
96 | # CONFIG_RCU_FANOUT_EXACT is not set | 100 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -182,14 +186,41 @@ CONFIG_LBDAF=y | |||
182 | # IO Schedulers | 186 | # IO Schedulers |
183 | # | 187 | # |
184 | CONFIG_IOSCHED_NOOP=y | 188 | CONFIG_IOSCHED_NOOP=y |
185 | CONFIG_IOSCHED_AS=y | ||
186 | CONFIG_IOSCHED_DEADLINE=y | 189 | CONFIG_IOSCHED_DEADLINE=y |
187 | CONFIG_IOSCHED_CFQ=y | 190 | CONFIG_IOSCHED_CFQ=y |
188 | # CONFIG_DEFAULT_AS is not set | ||
189 | # CONFIG_DEFAULT_DEADLINE is not set | 191 | # CONFIG_DEFAULT_DEADLINE is not set |
190 | CONFIG_DEFAULT_CFQ=y | 192 | CONFIG_DEFAULT_CFQ=y |
191 | # CONFIG_DEFAULT_NOOP is not set | 193 | # CONFIG_DEFAULT_NOOP is not set |
192 | CONFIG_DEFAULT_IOSCHED="cfq" | 194 | CONFIG_DEFAULT_IOSCHED="cfq" |
195 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
196 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
197 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
198 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
199 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
200 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
201 | # CONFIG_INLINE_SPIN_UNLOCK is not set | ||
202 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
203 | # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
204 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
205 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
206 | # CONFIG_INLINE_READ_LOCK is not set | ||
207 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
208 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
209 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
210 | # CONFIG_INLINE_READ_UNLOCK is not set | ||
211 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
212 | # CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
213 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
214 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
215 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
216 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
217 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
218 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
219 | # CONFIG_INLINE_WRITE_UNLOCK is not set | ||
220 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
221 | # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
222 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
223 | CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
193 | # CONFIG_FREEZER is not set | 224 | # CONFIG_FREEZER is not set |
194 | 225 | ||
195 | # | 226 | # |
@@ -260,6 +291,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | |||
260 | # CONFIG_KEXEC is not set | 291 | # CONFIG_KEXEC is not set |
261 | # CONFIG_CRASH_DUMP is not set | 292 | # CONFIG_CRASH_DUMP is not set |
262 | CONFIG_IRQ_ALL_CPUS=y | 293 | CONFIG_IRQ_ALL_CPUS=y |
294 | CONFIG_SPARSE_IRQ=y | ||
263 | CONFIG_MAX_ACTIVE_REGIONS=32 | 295 | CONFIG_MAX_ACTIVE_REGIONS=32 |
264 | CONFIG_ARCH_FLATMEM_ENABLE=y | 296 | CONFIG_ARCH_FLATMEM_ENABLE=y |
265 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 297 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -276,8 +308,6 @@ CONFIG_MIGRATION=y | |||
276 | CONFIG_ZONE_DMA_FLAG=1 | 308 | CONFIG_ZONE_DMA_FLAG=1 |
277 | CONFIG_BOUNCE=y | 309 | CONFIG_BOUNCE=y |
278 | CONFIG_VIRT_TO_BUS=y | 310 | CONFIG_VIRT_TO_BUS=y |
279 | CONFIG_HAVE_MLOCK=y | ||
280 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
281 | # CONFIG_KSM is not set | 311 | # CONFIG_KSM is not set |
282 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 312 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
283 | CONFIG_PPC_4K_PAGES=y | 313 | CONFIG_PPC_4K_PAGES=y |
@@ -400,6 +430,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
400 | CONFIG_INET6_XFRM_MODE_BEET=m | 430 | CONFIG_INET6_XFRM_MODE_BEET=m |
401 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 431 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
402 | CONFIG_IPV6_SIT=m | 432 | CONFIG_IPV6_SIT=m |
433 | # CONFIG_IPV6_SIT_6RD is not set | ||
403 | CONFIG_IPV6_NDISC_NODETYPE=y | 434 | CONFIG_IPV6_NDISC_NODETYPE=y |
404 | CONFIG_IPV6_TUNNEL=m | 435 | CONFIG_IPV6_TUNNEL=m |
405 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 436 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
@@ -588,9 +619,6 @@ CONFIG_NET_PKTGEN=m | |||
588 | CONFIG_FIB_RULES=y | 619 | CONFIG_FIB_RULES=y |
589 | CONFIG_WIRELESS=y | 620 | CONFIG_WIRELESS=y |
590 | # CONFIG_CFG80211 is not set | 621 | # CONFIG_CFG80211 is not set |
591 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
592 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
593 | # CONFIG_WIRELESS_EXT is not set | ||
594 | # CONFIG_LIB80211 is not set | 622 | # CONFIG_LIB80211 is not set |
595 | 623 | ||
596 | # | 624 | # |
@@ -719,6 +747,10 @@ CONFIG_BLK_DEV=y | |||
719 | # CONFIG_BLK_DEV_COW_COMMON is not set | 747 | # CONFIG_BLK_DEV_COW_COMMON is not set |
720 | CONFIG_BLK_DEV_LOOP=m | 748 | CONFIG_BLK_DEV_LOOP=m |
721 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 749 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
750 | |||
751 | # | ||
752 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
753 | # | ||
722 | CONFIG_BLK_DEV_NBD=m | 754 | CONFIG_BLK_DEV_NBD=m |
723 | # CONFIG_BLK_DEV_SX8 is not set | 755 | # CONFIG_BLK_DEV_SX8 is not set |
724 | # CONFIG_BLK_DEV_UB is not set | 756 | # CONFIG_BLK_DEV_UB is not set |
@@ -730,6 +762,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072 | |||
730 | # CONFIG_ATA_OVER_ETH is not set | 762 | # CONFIG_ATA_OVER_ETH is not set |
731 | # CONFIG_BLK_DEV_HD is not set | 763 | # CONFIG_BLK_DEV_HD is not set |
732 | CONFIG_MISC_DEVICES=y | 764 | CONFIG_MISC_DEVICES=y |
765 | # CONFIG_AD525X_DPOT is not set | ||
733 | # CONFIG_PHANTOM is not set | 766 | # CONFIG_PHANTOM is not set |
734 | # CONFIG_SGI_IOC4 is not set | 767 | # CONFIG_SGI_IOC4 is not set |
735 | # CONFIG_TIFM_CORE is not set | 768 | # CONFIG_TIFM_CORE is not set |
@@ -737,6 +770,7 @@ CONFIG_MISC_DEVICES=y | |||
737 | # CONFIG_ENCLOSURE_SERVICES is not set | 770 | # CONFIG_ENCLOSURE_SERVICES is not set |
738 | # CONFIG_HP_ILO is not set | 771 | # CONFIG_HP_ILO is not set |
739 | # CONFIG_ISL29003 is not set | 772 | # CONFIG_ISL29003 is not set |
773 | CONFIG_DS1682=y | ||
740 | # CONFIG_C2PORT is not set | 774 | # CONFIG_C2PORT is not set |
741 | 775 | ||
742 | # | 776 | # |
@@ -789,7 +823,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
789 | # CONFIG_SCSI_BNX2_ISCSI is not set | 823 | # CONFIG_SCSI_BNX2_ISCSI is not set |
790 | # CONFIG_BE2ISCSI is not set | 824 | # CONFIG_BE2ISCSI is not set |
791 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 825 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
826 | # CONFIG_SCSI_HPSA is not set | ||
792 | # CONFIG_SCSI_3W_9XXX is not set | 827 | # CONFIG_SCSI_3W_9XXX is not set |
828 | # CONFIG_SCSI_3W_SAS is not set | ||
793 | # CONFIG_SCSI_ACARD is not set | 829 | # CONFIG_SCSI_ACARD is not set |
794 | # CONFIG_SCSI_AACRAID is not set | 830 | # CONFIG_SCSI_AACRAID is not set |
795 | # CONFIG_SCSI_AIC7XXX is not set | 831 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -828,6 +864,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
828 | # CONFIG_SCSI_NSP32 is not set | 864 | # CONFIG_SCSI_NSP32 is not set |
829 | # CONFIG_SCSI_DEBUG is not set | 865 | # CONFIG_SCSI_DEBUG is not set |
830 | # CONFIG_SCSI_PMCRAID is not set | 866 | # CONFIG_SCSI_PMCRAID is not set |
867 | # CONFIG_SCSI_PM8001 is not set | ||
831 | # CONFIG_SCSI_SRP is not set | 868 | # CONFIG_SCSI_SRP is not set |
832 | # CONFIG_SCSI_BFA_FC is not set | 869 | # CONFIG_SCSI_BFA_FC is not set |
833 | # CONFIG_SCSI_DH is not set | 870 | # CONFIG_SCSI_DH is not set |
@@ -883,15 +920,16 @@ CONFIG_SATA_SIL=y | |||
883 | # CONFIG_PATA_NS87415 is not set | 920 | # CONFIG_PATA_NS87415 is not set |
884 | # CONFIG_PATA_OPTI is not set | 921 | # CONFIG_PATA_OPTI is not set |
885 | # CONFIG_PATA_OPTIDMA is not set | 922 | # CONFIG_PATA_OPTIDMA is not set |
923 | # CONFIG_PATA_PDC2027X is not set | ||
886 | # CONFIG_PATA_PDC_OLD is not set | 924 | # CONFIG_PATA_PDC_OLD is not set |
887 | # CONFIG_PATA_RADISYS is not set | 925 | # CONFIG_PATA_RADISYS is not set |
888 | # CONFIG_PATA_RDC is not set | 926 | # CONFIG_PATA_RDC is not set |
889 | # CONFIG_PATA_RZ1000 is not set | 927 | # CONFIG_PATA_RZ1000 is not set |
890 | # CONFIG_PATA_SC1200 is not set | 928 | # CONFIG_PATA_SC1200 is not set |
891 | # CONFIG_PATA_SERVERWORKS is not set | 929 | # CONFIG_PATA_SERVERWORKS is not set |
892 | # CONFIG_PATA_PDC2027X is not set | ||
893 | # CONFIG_PATA_SIL680 is not set | 930 | # CONFIG_PATA_SIL680 is not set |
894 | # CONFIG_PATA_SIS is not set | 931 | # CONFIG_PATA_SIS is not set |
932 | # CONFIG_PATA_TOSHIBA is not set | ||
895 | # CONFIG_PATA_VIA is not set | 933 | # CONFIG_PATA_VIA is not set |
896 | # CONFIG_PATA_WINBOND is not set | 934 | # CONFIG_PATA_WINBOND is not set |
897 | # CONFIG_PATA_PLATFORM is not set | 935 | # CONFIG_PATA_PLATFORM is not set |
@@ -908,7 +946,7 @@ CONFIG_SATA_SIL=y | |||
908 | # | 946 | # |
909 | 947 | ||
910 | # | 948 | # |
911 | # See the help texts for more information. | 949 | # The newer stack is recommended. |
912 | # | 950 | # |
913 | # CONFIG_FIREWIRE is not set | 951 | # CONFIG_FIREWIRE is not set |
914 | # CONFIG_IEEE1394 is not set | 952 | # CONFIG_IEEE1394 is not set |
@@ -995,8 +1033,11 @@ CONFIG_GIANFAR=y | |||
995 | # CONFIG_NETDEV_10000 is not set | 1033 | # CONFIG_NETDEV_10000 is not set |
996 | # CONFIG_TR is not set | 1034 | # CONFIG_TR is not set |
997 | CONFIG_WLAN=y | 1035 | CONFIG_WLAN=y |
998 | # CONFIG_WLAN_PRE80211 is not set | 1036 | # CONFIG_AIRO is not set |
999 | # CONFIG_WLAN_80211 is not set | 1037 | # CONFIG_ATMEL is not set |
1038 | # CONFIG_PRISM54 is not set | ||
1039 | # CONFIG_USB_ZD1201 is not set | ||
1040 | # CONFIG_HOSTAP is not set | ||
1000 | 1041 | ||
1001 | # | 1042 | # |
1002 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 1043 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -1050,6 +1091,7 @@ CONFIG_NETCONSOLE=y | |||
1050 | CONFIG_NETPOLL=y | 1091 | CONFIG_NETPOLL=y |
1051 | CONFIG_NETPOLL_TRAP=y | 1092 | CONFIG_NETPOLL_TRAP=y |
1052 | CONFIG_NET_POLL_CONTROLLER=y | 1093 | CONFIG_NET_POLL_CONTROLLER=y |
1094 | # CONFIG_VMXNET3 is not set | ||
1053 | # CONFIG_ISDN is not set | 1095 | # CONFIG_ISDN is not set |
1054 | # CONFIG_PHONE is not set | 1096 | # CONFIG_PHONE is not set |
1055 | 1097 | ||
@@ -1059,6 +1101,7 @@ CONFIG_NET_POLL_CONTROLLER=y | |||
1059 | CONFIG_INPUT=y | 1101 | CONFIG_INPUT=y |
1060 | CONFIG_INPUT_FF_MEMLESS=m | 1102 | CONFIG_INPUT_FF_MEMLESS=m |
1061 | # CONFIG_INPUT_POLLDEV is not set | 1103 | # CONFIG_INPUT_POLLDEV is not set |
1104 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
1062 | 1105 | ||
1063 | # | 1106 | # |
1064 | # Userland interfaces | 1107 | # Userland interfaces |
@@ -1117,6 +1160,7 @@ CONFIG_SERIAL_CORE=y | |||
1117 | CONFIG_SERIAL_CORE_CONSOLE=y | 1160 | CONFIG_SERIAL_CORE_CONSOLE=y |
1118 | # CONFIG_SERIAL_JSM is not set | 1161 | # CONFIG_SERIAL_JSM is not set |
1119 | # CONFIG_SERIAL_OF_PLATFORM is not set | 1162 | # CONFIG_SERIAL_OF_PLATFORM is not set |
1163 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
1120 | CONFIG_UNIX98_PTYS=y | 1164 | CONFIG_UNIX98_PTYS=y |
1121 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 1165 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
1122 | # CONFIG_LEGACY_PTYS is not set | 1166 | # CONFIG_LEGACY_PTYS is not set |
@@ -1174,11 +1218,6 @@ CONFIG_I2C_MPC=y | |||
1174 | # CONFIG_I2C_TINY_USB is not set | 1218 | # CONFIG_I2C_TINY_USB is not set |
1175 | 1219 | ||
1176 | # | 1220 | # |
1177 | # Graphics adapter I2C/DDC channel drivers | ||
1178 | # | ||
1179 | # CONFIG_I2C_VOODOO3 is not set | ||
1180 | |||
1181 | # | ||
1182 | # Other I2C/SMBus bus drivers | 1221 | # Other I2C/SMBus bus drivers |
1183 | # | 1222 | # |
1184 | # CONFIG_I2C_PCA_PLATFORM is not set | 1223 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -1187,7 +1226,6 @@ CONFIG_I2C_MPC=y | |||
1187 | # | 1226 | # |
1188 | # Miscellaneous I2C Chip support | 1227 | # Miscellaneous I2C Chip support |
1189 | # | 1228 | # |
1190 | CONFIG_DS1682=y | ||
1191 | # CONFIG_SENSORS_TSL2550 is not set | 1229 | # CONFIG_SENSORS_TSL2550 is not set |
1192 | # CONFIG_I2C_DEBUG_CORE is not set | 1230 | # CONFIG_I2C_DEBUG_CORE is not set |
1193 | # CONFIG_I2C_DEBUG_ALGO is not set | 1231 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1220,6 +1258,7 @@ CONFIG_GPIOLIB=y | |||
1220 | # | 1258 | # |
1221 | # PCI GPIO expanders: | 1259 | # PCI GPIO expanders: |
1222 | # | 1260 | # |
1261 | # CONFIG_GPIO_CS5535 is not set | ||
1223 | # CONFIG_GPIO_BT8XX is not set | 1262 | # CONFIG_GPIO_BT8XX is not set |
1224 | # CONFIG_GPIO_LANGWELL is not set | 1263 | # CONFIG_GPIO_LANGWELL is not set |
1225 | 1264 | ||
@@ -1262,6 +1301,7 @@ CONFIG_HWMON=y | |||
1262 | # CONFIG_SENSORS_GL520SM is not set | 1301 | # CONFIG_SENSORS_GL520SM is not set |
1263 | # CONFIG_SENSORS_IT87 is not set | 1302 | # CONFIG_SENSORS_IT87 is not set |
1264 | # CONFIG_SENSORS_LM63 is not set | 1303 | # CONFIG_SENSORS_LM63 is not set |
1304 | # CONFIG_SENSORS_LM73 is not set | ||
1265 | # CONFIG_SENSORS_LM75 is not set | 1305 | # CONFIG_SENSORS_LM75 is not set |
1266 | # CONFIG_SENSORS_LM77 is not set | 1306 | # CONFIG_SENSORS_LM77 is not set |
1267 | # CONFIG_SENSORS_LM78 is not set | 1307 | # CONFIG_SENSORS_LM78 is not set |
@@ -1301,6 +1341,7 @@ CONFIG_SENSORS_LM92=y | |||
1301 | # CONFIG_SENSORS_W83L786NG is not set | 1341 | # CONFIG_SENSORS_W83L786NG is not set |
1302 | # CONFIG_SENSORS_W83627HF is not set | 1342 | # CONFIG_SENSORS_W83627HF is not set |
1303 | # CONFIG_SENSORS_W83627EHF is not set | 1343 | # CONFIG_SENSORS_W83627EHF is not set |
1344 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1304 | # CONFIG_THERMAL is not set | 1345 | # CONFIG_THERMAL is not set |
1305 | CONFIG_WATCHDOG=y | 1346 | CONFIG_WATCHDOG=y |
1306 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1347 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -1340,11 +1381,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1340 | # CONFIG_TWL4030_CORE is not set | 1381 | # CONFIG_TWL4030_CORE is not set |
1341 | # CONFIG_MFD_TMIO is not set | 1382 | # CONFIG_MFD_TMIO is not set |
1342 | # CONFIG_PMIC_DA903X is not set | 1383 | # CONFIG_PMIC_DA903X is not set |
1384 | # CONFIG_PMIC_ADP5520 is not set | ||
1343 | # CONFIG_MFD_WM8400 is not set | 1385 | # CONFIG_MFD_WM8400 is not set |
1344 | # CONFIG_MFD_WM831X is not set | 1386 | # CONFIG_MFD_WM831X is not set |
1345 | # CONFIG_MFD_WM8350_I2C is not set | 1387 | # CONFIG_MFD_WM8350_I2C is not set |
1346 | # CONFIG_MFD_PCF50633 is not set | 1388 | # CONFIG_MFD_PCF50633 is not set |
1347 | # CONFIG_AB3100_CORE is not set | 1389 | # CONFIG_AB3100_CORE is not set |
1390 | # CONFIG_MFD_88PM8607 is not set | ||
1348 | # CONFIG_REGULATOR is not set | 1391 | # CONFIG_REGULATOR is not set |
1349 | # CONFIG_MEDIA_SUPPORT is not set | 1392 | # CONFIG_MEDIA_SUPPORT is not set |
1350 | 1393 | ||
@@ -1443,6 +1486,7 @@ CONFIG_USB=y | |||
1443 | CONFIG_USB_EHCI_HCD=y | 1486 | CONFIG_USB_EHCI_HCD=y |
1444 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1487 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1445 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1488 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1489 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1446 | # CONFIG_USB_EHCI_FSL is not set | 1490 | # CONFIG_USB_EHCI_FSL is not set |
1447 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | 1491 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set |
1448 | # CONFIG_USB_OXU210HP_HCD is not set | 1492 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1570,6 +1614,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1570 | # CONFIG_RTC_DRV_PCF8563 is not set | 1614 | # CONFIG_RTC_DRV_PCF8563 is not set |
1571 | # CONFIG_RTC_DRV_PCF8583 is not set | 1615 | # CONFIG_RTC_DRV_PCF8583 is not set |
1572 | # CONFIG_RTC_DRV_M41T80 is not set | 1616 | # CONFIG_RTC_DRV_M41T80 is not set |
1617 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1573 | # CONFIG_RTC_DRV_S35390A is not set | 1618 | # CONFIG_RTC_DRV_S35390A is not set |
1574 | # CONFIG_RTC_DRV_FM3130 is not set | 1619 | # CONFIG_RTC_DRV_FM3130 is not set |
1575 | CONFIG_RTC_DRV_RX8581=y | 1620 | CONFIG_RTC_DRV_RX8581=y |
@@ -1591,7 +1636,9 @@ CONFIG_RTC_DRV_RX8581=y | |||
1591 | # CONFIG_RTC_DRV_M48T86 is not set | 1636 | # CONFIG_RTC_DRV_M48T86 is not set |
1592 | # CONFIG_RTC_DRV_M48T35 is not set | 1637 | # CONFIG_RTC_DRV_M48T35 is not set |
1593 | # CONFIG_RTC_DRV_M48T59 is not set | 1638 | # CONFIG_RTC_DRV_M48T59 is not set |
1639 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1594 | # CONFIG_RTC_DRV_BQ4802 is not set | 1640 | # CONFIG_RTC_DRV_BQ4802 is not set |
1641 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1595 | # CONFIG_RTC_DRV_V3020 is not set | 1642 | # CONFIG_RTC_DRV_V3020 is not set |
1596 | 1643 | ||
1597 | # | 1644 | # |
@@ -1891,9 +1938,12 @@ CONFIG_SECURITY=y | |||
1891 | CONFIG_SECURITY_NETWORK=y | 1938 | CONFIG_SECURITY_NETWORK=y |
1892 | # CONFIG_SECURITY_NETWORK_XFRM is not set | 1939 | # CONFIG_SECURITY_NETWORK_XFRM is not set |
1893 | # CONFIG_SECURITY_PATH is not set | 1940 | # CONFIG_SECURITY_PATH is not set |
1894 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
1895 | # CONFIG_SECURITY_ROOTPLUG is not set | ||
1896 | # CONFIG_SECURITY_TOMOYO is not set | 1941 | # CONFIG_SECURITY_TOMOYO is not set |
1942 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set | ||
1943 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1944 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1945 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1946 | CONFIG_DEFAULT_SECURITY="" | ||
1897 | CONFIG_CRYPTO=y | 1947 | CONFIG_CRYPTO=y |
1898 | 1948 | ||
1899 | # | 1949 | # |
diff --git a/arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig b/arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig index de4d52504fe4..aab3baebab8c 100644 --- a/arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig +++ b/arch/powerpc/configs/86xx/mpc8610_hpcd_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:45 2009 | 4 | # Wed Jan 6 09:24:39 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,8 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
62 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
63 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
64 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 67 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -86,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
86 | # | 89 | # |
87 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
88 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
89 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
90 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
91 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -176,14 +180,41 @@ CONFIG_LBDAF=y | |||
176 | # IO Schedulers | 180 | # IO Schedulers |
177 | # | 181 | # |
178 | CONFIG_IOSCHED_NOOP=y | 182 | CONFIG_IOSCHED_NOOP=y |
179 | # CONFIG_IOSCHED_AS is not set | ||
180 | CONFIG_IOSCHED_DEADLINE=y | 183 | CONFIG_IOSCHED_DEADLINE=y |
181 | # CONFIG_IOSCHED_CFQ is not set | 184 | # CONFIG_IOSCHED_CFQ is not set |
182 | # CONFIG_DEFAULT_AS is not set | ||
183 | CONFIG_DEFAULT_DEADLINE=y | 185 | CONFIG_DEFAULT_DEADLINE=y |
184 | # CONFIG_DEFAULT_CFQ is not set | 186 | # CONFIG_DEFAULT_CFQ is not set |
185 | # CONFIG_DEFAULT_NOOP is not set | 187 | # CONFIG_DEFAULT_NOOP is not set |
186 | CONFIG_DEFAULT_IOSCHED="deadline" | 188 | CONFIG_DEFAULT_IOSCHED="deadline" |
189 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
190 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
191 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
192 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
193 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
194 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
195 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
196 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
197 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
198 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
199 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
200 | # CONFIG_INLINE_READ_LOCK is not set | ||
201 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
202 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
203 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
204 | CONFIG_INLINE_READ_UNLOCK=y | ||
205 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
206 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
207 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
208 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
209 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
210 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
211 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
212 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
213 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
214 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
215 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
216 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
217 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
187 | # CONFIG_FREEZER is not set | 218 | # CONFIG_FREEZER is not set |
188 | 219 | ||
189 | # | 220 | # |
@@ -254,6 +285,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
254 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 285 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
255 | # CONFIG_KEXEC is not set | 286 | # CONFIG_KEXEC is not set |
256 | # CONFIG_CRASH_DUMP is not set | 287 | # CONFIG_CRASH_DUMP is not set |
288 | CONFIG_SPARSE_IRQ=y | ||
257 | CONFIG_MAX_ACTIVE_REGIONS=32 | 289 | CONFIG_MAX_ACTIVE_REGIONS=32 |
258 | CONFIG_ARCH_FLATMEM_ENABLE=y | 290 | CONFIG_ARCH_FLATMEM_ENABLE=y |
259 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 291 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -270,8 +302,6 @@ CONFIG_MIGRATION=y | |||
270 | CONFIG_ZONE_DMA_FLAG=1 | 302 | CONFIG_ZONE_DMA_FLAG=1 |
271 | CONFIG_BOUNCE=y | 303 | CONFIG_BOUNCE=y |
272 | CONFIG_VIRT_TO_BUS=y | 304 | CONFIG_VIRT_TO_BUS=y |
273 | CONFIG_HAVE_MLOCK=y | ||
274 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
275 | # CONFIG_KSM is not set | 305 | # CONFIG_KSM is not set |
276 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 306 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
277 | CONFIG_PPC_4K_PAGES=y | 307 | CONFIG_PPC_4K_PAGES=y |
@@ -382,6 +412,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y | |||
382 | CONFIG_INET6_XFRM_MODE_BEET=y | 412 | CONFIG_INET6_XFRM_MODE_BEET=y |
383 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 413 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
384 | CONFIG_IPV6_SIT=y | 414 | CONFIG_IPV6_SIT=y |
415 | # CONFIG_IPV6_SIT_6RD is not set | ||
385 | CONFIG_IPV6_NDISC_NODETYPE=y | 416 | CONFIG_IPV6_NDISC_NODETYPE=y |
386 | # CONFIG_IPV6_TUNNEL is not set | 417 | # CONFIG_IPV6_TUNNEL is not set |
387 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 418 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
@@ -420,9 +451,6 @@ CONFIG_IPV6_NDISC_NODETYPE=y | |||
420 | # CONFIG_AF_RXRPC is not set | 451 | # CONFIG_AF_RXRPC is not set |
421 | CONFIG_WIRELESS=y | 452 | CONFIG_WIRELESS=y |
422 | # CONFIG_CFG80211 is not set | 453 | # CONFIG_CFG80211 is not set |
423 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
424 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
425 | # CONFIG_WIRELESS_EXT is not set | ||
426 | # CONFIG_LIB80211 is not set | 454 | # CONFIG_LIB80211 is not set |
427 | 455 | ||
428 | # | 456 | # |
@@ -555,6 +583,10 @@ CONFIG_BLK_DEV=y | |||
555 | # CONFIG_BLK_DEV_COW_COMMON is not set | 583 | # CONFIG_BLK_DEV_COW_COMMON is not set |
556 | CONFIG_BLK_DEV_LOOP=y | 584 | CONFIG_BLK_DEV_LOOP=y |
557 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 585 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
586 | |||
587 | # | ||
588 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
589 | # | ||
558 | # CONFIG_BLK_DEV_NBD is not set | 590 | # CONFIG_BLK_DEV_NBD is not set |
559 | # CONFIG_BLK_DEV_SX8 is not set | 591 | # CONFIG_BLK_DEV_SX8 is not set |
560 | CONFIG_BLK_DEV_RAM=y | 592 | CONFIG_BLK_DEV_RAM=y |
@@ -565,6 +597,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072 | |||
565 | # CONFIG_ATA_OVER_ETH is not set | 597 | # CONFIG_ATA_OVER_ETH is not set |
566 | # CONFIG_BLK_DEV_HD is not set | 598 | # CONFIG_BLK_DEV_HD is not set |
567 | CONFIG_MISC_DEVICES=y | 599 | CONFIG_MISC_DEVICES=y |
600 | # CONFIG_AD525X_DPOT is not set | ||
568 | # CONFIG_PHANTOM is not set | 601 | # CONFIG_PHANTOM is not set |
569 | # CONFIG_SGI_IOC4 is not set | 602 | # CONFIG_SGI_IOC4 is not set |
570 | # CONFIG_TIFM_CORE is not set | 603 | # CONFIG_TIFM_CORE is not set |
@@ -572,6 +605,7 @@ CONFIG_MISC_DEVICES=y | |||
572 | # CONFIG_ENCLOSURE_SERVICES is not set | 605 | # CONFIG_ENCLOSURE_SERVICES is not set |
573 | # CONFIG_HP_ILO is not set | 606 | # CONFIG_HP_ILO is not set |
574 | # CONFIG_ISL29003 is not set | 607 | # CONFIG_ISL29003 is not set |
608 | # CONFIG_DS1682 is not set | ||
575 | # CONFIG_C2PORT is not set | 609 | # CONFIG_C2PORT is not set |
576 | 610 | ||
577 | # | 611 | # |
@@ -671,7 +705,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
671 | # CONFIG_SCSI_BNX2_ISCSI is not set | 705 | # CONFIG_SCSI_BNX2_ISCSI is not set |
672 | # CONFIG_BE2ISCSI is not set | 706 | # CONFIG_BE2ISCSI is not set |
673 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 707 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
708 | # CONFIG_SCSI_HPSA is not set | ||
674 | # CONFIG_SCSI_3W_9XXX is not set | 709 | # CONFIG_SCSI_3W_9XXX is not set |
710 | # CONFIG_SCSI_3W_SAS is not set | ||
675 | # CONFIG_SCSI_ACARD is not set | 711 | # CONFIG_SCSI_ACARD is not set |
676 | # CONFIG_SCSI_AACRAID is not set | 712 | # CONFIG_SCSI_AACRAID is not set |
677 | # CONFIG_SCSI_AIC7XXX is not set | 713 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -710,6 +746,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
710 | # CONFIG_SCSI_NSP32 is not set | 746 | # CONFIG_SCSI_NSP32 is not set |
711 | # CONFIG_SCSI_DEBUG is not set | 747 | # CONFIG_SCSI_DEBUG is not set |
712 | # CONFIG_SCSI_PMCRAID is not set | 748 | # CONFIG_SCSI_PMCRAID is not set |
749 | # CONFIG_SCSI_PM8001 is not set | ||
713 | # CONFIG_SCSI_SRP is not set | 750 | # CONFIG_SCSI_SRP is not set |
714 | # CONFIG_SCSI_BFA_FC is not set | 751 | # CONFIG_SCSI_BFA_FC is not set |
715 | # CONFIG_SCSI_DH is not set | 752 | # CONFIG_SCSI_DH is not set |
@@ -765,15 +802,16 @@ CONFIG_PATA_ALI=y | |||
765 | # CONFIG_PATA_NS87415 is not set | 802 | # CONFIG_PATA_NS87415 is not set |
766 | # CONFIG_PATA_OPTI is not set | 803 | # CONFIG_PATA_OPTI is not set |
767 | # CONFIG_PATA_OPTIDMA is not set | 804 | # CONFIG_PATA_OPTIDMA is not set |
805 | # CONFIG_PATA_PDC2027X is not set | ||
768 | # CONFIG_PATA_PDC_OLD is not set | 806 | # CONFIG_PATA_PDC_OLD is not set |
769 | # CONFIG_PATA_RADISYS is not set | 807 | # CONFIG_PATA_RADISYS is not set |
770 | # CONFIG_PATA_RDC is not set | 808 | # CONFIG_PATA_RDC is not set |
771 | # CONFIG_PATA_RZ1000 is not set | 809 | # CONFIG_PATA_RZ1000 is not set |
772 | # CONFIG_PATA_SC1200 is not set | 810 | # CONFIG_PATA_SC1200 is not set |
773 | # CONFIG_PATA_SERVERWORKS is not set | 811 | # CONFIG_PATA_SERVERWORKS is not set |
774 | # CONFIG_PATA_PDC2027X is not set | ||
775 | # CONFIG_PATA_SIL680 is not set | 812 | # CONFIG_PATA_SIL680 is not set |
776 | # CONFIG_PATA_SIS is not set | 813 | # CONFIG_PATA_SIS is not set |
814 | # CONFIG_PATA_TOSHIBA is not set | ||
777 | # CONFIG_PATA_VIA is not set | 815 | # CONFIG_PATA_VIA is not set |
778 | # CONFIG_PATA_WINBOND is not set | 816 | # CONFIG_PATA_WINBOND is not set |
779 | # CONFIG_PATA_PLATFORM is not set | 817 | # CONFIG_PATA_PLATFORM is not set |
@@ -790,7 +828,7 @@ CONFIG_PATA_ALI=y | |||
790 | # | 828 | # |
791 | 829 | ||
792 | # | 830 | # |
793 | # See the help texts for more information. | 831 | # The newer stack is recommended. |
794 | # | 832 | # |
795 | # CONFIG_FIREWIRE is not set | 833 | # CONFIG_FIREWIRE is not set |
796 | # CONFIG_IEEE1394 is not set | 834 | # CONFIG_IEEE1394 is not set |
@@ -838,8 +876,10 @@ CONFIG_ULI526X=y | |||
838 | # CONFIG_NETDEV_10000 is not set | 876 | # CONFIG_NETDEV_10000 is not set |
839 | # CONFIG_TR is not set | 877 | # CONFIG_TR is not set |
840 | CONFIG_WLAN=y | 878 | CONFIG_WLAN=y |
841 | # CONFIG_WLAN_PRE80211 is not set | 879 | # CONFIG_AIRO is not set |
842 | # CONFIG_WLAN_80211 is not set | 880 | # CONFIG_ATMEL is not set |
881 | # CONFIG_PRISM54 is not set | ||
882 | # CONFIG_HOSTAP is not set | ||
843 | 883 | ||
844 | # | 884 | # |
845 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 885 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -853,6 +893,7 @@ CONFIG_WLAN=y | |||
853 | # CONFIG_NETCONSOLE is not set | 893 | # CONFIG_NETCONSOLE is not set |
854 | # CONFIG_NETPOLL is not set | 894 | # CONFIG_NETPOLL is not set |
855 | # CONFIG_NET_POLL_CONTROLLER is not set | 895 | # CONFIG_NET_POLL_CONTROLLER is not set |
896 | # CONFIG_VMXNET3 is not set | ||
856 | # CONFIG_ISDN is not set | 897 | # CONFIG_ISDN is not set |
857 | # CONFIG_PHONE is not set | 898 | # CONFIG_PHONE is not set |
858 | 899 | ||
@@ -862,6 +903,7 @@ CONFIG_WLAN=y | |||
862 | CONFIG_INPUT=y | 903 | CONFIG_INPUT=y |
863 | # CONFIG_INPUT_FF_MEMLESS is not set | 904 | # CONFIG_INPUT_FF_MEMLESS is not set |
864 | # CONFIG_INPUT_POLLDEV is not set | 905 | # CONFIG_INPUT_POLLDEV is not set |
906 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
865 | 907 | ||
866 | # | 908 | # |
867 | # Userland interfaces | 909 | # Userland interfaces |
@@ -891,6 +933,7 @@ CONFIG_SERIO_SERPORT=y | |||
891 | CONFIG_SERIO_LIBPS2=y | 933 | CONFIG_SERIO_LIBPS2=y |
892 | # CONFIG_SERIO_RAW is not set | 934 | # CONFIG_SERIO_RAW is not set |
893 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | 935 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set |
936 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
894 | # CONFIG_GAMEPORT is not set | 937 | # CONFIG_GAMEPORT is not set |
895 | 938 | ||
896 | # | 939 | # |
@@ -927,6 +970,7 @@ CONFIG_SERIAL_CORE=y | |||
927 | CONFIG_SERIAL_CORE_CONSOLE=y | 970 | CONFIG_SERIAL_CORE_CONSOLE=y |
928 | # CONFIG_SERIAL_JSM is not set | 971 | # CONFIG_SERIAL_JSM is not set |
929 | # CONFIG_SERIAL_OF_PLATFORM is not set | 972 | # CONFIG_SERIAL_OF_PLATFORM is not set |
973 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
930 | CONFIG_UNIX98_PTYS=y | 974 | CONFIG_UNIX98_PTYS=y |
931 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 975 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
932 | # CONFIG_LEGACY_PTYS is not set | 976 | # CONFIG_LEGACY_PTYS is not set |
@@ -981,11 +1025,6 @@ CONFIG_I2C_MPC=y | |||
981 | # CONFIG_I2C_TAOS_EVM is not set | 1025 | # CONFIG_I2C_TAOS_EVM is not set |
982 | 1026 | ||
983 | # | 1027 | # |
984 | # Graphics adapter I2C/DDC channel drivers | ||
985 | # | ||
986 | # CONFIG_I2C_VOODOO3 is not set | ||
987 | |||
988 | # | ||
989 | # Other I2C/SMBus bus drivers | 1028 | # Other I2C/SMBus bus drivers |
990 | # | 1029 | # |
991 | # CONFIG_I2C_PCA_PLATFORM is not set | 1030 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -994,7 +1033,6 @@ CONFIG_I2C_MPC=y | |||
994 | # | 1033 | # |
995 | # Miscellaneous I2C Chip support | 1034 | # Miscellaneous I2C Chip support |
996 | # | 1035 | # |
997 | # CONFIG_DS1682 is not set | ||
998 | # CONFIG_SENSORS_TSL2550 is not set | 1036 | # CONFIG_SENSORS_TSL2550 is not set |
999 | # CONFIG_I2C_DEBUG_CORE is not set | 1037 | # CONFIG_I2C_DEBUG_CORE is not set |
1000 | # CONFIG_I2C_DEBUG_ALGO is not set | 1038 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1029,11 +1067,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1029 | # CONFIG_TWL4030_CORE is not set | 1067 | # CONFIG_TWL4030_CORE is not set |
1030 | # CONFIG_MFD_TMIO is not set | 1068 | # CONFIG_MFD_TMIO is not set |
1031 | # CONFIG_PMIC_DA903X is not set | 1069 | # CONFIG_PMIC_DA903X is not set |
1070 | # CONFIG_PMIC_ADP5520 is not set | ||
1032 | # CONFIG_MFD_WM8400 is not set | 1071 | # CONFIG_MFD_WM8400 is not set |
1033 | # CONFIG_MFD_WM831X is not set | 1072 | # CONFIG_MFD_WM831X is not set |
1034 | # CONFIG_MFD_WM8350_I2C is not set | 1073 | # CONFIG_MFD_WM8350_I2C is not set |
1035 | # CONFIG_MFD_PCF50633 is not set | 1074 | # CONFIG_MFD_PCF50633 is not set |
1036 | # CONFIG_AB3100_CORE is not set | 1075 | # CONFIG_AB3100_CORE is not set |
1076 | # CONFIG_MFD_88PM8607 is not set | ||
1037 | # CONFIG_REGULATOR is not set | 1077 | # CONFIG_REGULATOR is not set |
1038 | # CONFIG_MEDIA_SUPPORT is not set | 1078 | # CONFIG_MEDIA_SUPPORT is not set |
1039 | 1079 | ||
@@ -1163,6 +1203,7 @@ CONFIG_SND_PCI=y | |||
1163 | # CONFIG_SND_CS4281 is not set | 1203 | # CONFIG_SND_CS4281 is not set |
1164 | # CONFIG_SND_CS46XX is not set | 1204 | # CONFIG_SND_CS46XX is not set |
1165 | # CONFIG_SND_CS5530 is not set | 1205 | # CONFIG_SND_CS5530 is not set |
1206 | # CONFIG_SND_CS5535AUDIO is not set | ||
1166 | # CONFIG_SND_CTXFI is not set | 1207 | # CONFIG_SND_CTXFI is not set |
1167 | # CONFIG_SND_DARLA20 is not set | 1208 | # CONFIG_SND_DARLA20 is not set |
1168 | # CONFIG_SND_GINA20 is not set | 1209 | # CONFIG_SND_GINA20 is not set |
@@ -1282,6 +1323,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1282 | # CONFIG_RTC_DRV_PCF8563 is not set | 1323 | # CONFIG_RTC_DRV_PCF8563 is not set |
1283 | # CONFIG_RTC_DRV_PCF8583 is not set | 1324 | # CONFIG_RTC_DRV_PCF8583 is not set |
1284 | # CONFIG_RTC_DRV_M41T80 is not set | 1325 | # CONFIG_RTC_DRV_M41T80 is not set |
1326 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1285 | # CONFIG_RTC_DRV_S35390A is not set | 1327 | # CONFIG_RTC_DRV_S35390A is not set |
1286 | # CONFIG_RTC_DRV_FM3130 is not set | 1328 | # CONFIG_RTC_DRV_FM3130 is not set |
1287 | # CONFIG_RTC_DRV_RX8581 is not set | 1329 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1303,7 +1345,9 @@ CONFIG_RTC_DRV_CMOS=y | |||
1303 | # CONFIG_RTC_DRV_M48T86 is not set | 1345 | # CONFIG_RTC_DRV_M48T86 is not set |
1304 | # CONFIG_RTC_DRV_M48T35 is not set | 1346 | # CONFIG_RTC_DRV_M48T35 is not set |
1305 | # CONFIG_RTC_DRV_M48T59 is not set | 1347 | # CONFIG_RTC_DRV_M48T59 is not set |
1348 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1306 | # CONFIG_RTC_DRV_BQ4802 is not set | 1349 | # CONFIG_RTC_DRV_BQ4802 is not set |
1350 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1307 | # CONFIG_RTC_DRV_V3020 is not set | 1351 | # CONFIG_RTC_DRV_V3020 is not set |
1308 | 1352 | ||
1309 | # | 1353 | # |
@@ -1606,7 +1650,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1606 | # CONFIG_KEYS is not set | 1650 | # CONFIG_KEYS is not set |
1607 | # CONFIG_SECURITY is not set | 1651 | # CONFIG_SECURITY is not set |
1608 | # CONFIG_SECURITYFS is not set | 1652 | # CONFIG_SECURITYFS is not set |
1609 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1653 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1654 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1655 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1656 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1657 | CONFIG_DEFAULT_SECURITY="" | ||
1610 | CONFIG_CRYPTO=y | 1658 | CONFIG_CRYPTO=y |
1611 | 1659 | ||
1612 | # | 1660 | # |
diff --git a/arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig b/arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig index 754a79ba74a9..727a8c8d15b5 100644 --- a/arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig +++ b/arch/powerpc/configs/86xx/mpc8641_hpcn_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:46 2009 | 4 | # Wed Jan 6 09:24:40 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -38,6 +38,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
40 | CONFIG_IRQ_PER_CPU=y | 40 | CONFIG_IRQ_PER_CPU=y |
41 | CONFIG_NR_IRQS=512 | ||
41 | CONFIG_STACKTRACE_SUPPORT=y | 42 | CONFIG_STACKTRACE_SUPPORT=y |
42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -60,6 +61,8 @@ CONFIG_AUDIT_ARCH=y | |||
60 | CONFIG_GENERIC_BUG=y | 61 | CONFIG_GENERIC_BUG=y |
61 | CONFIG_DTC=y | 62 | CONFIG_DTC=y |
62 | CONFIG_DEFAULT_UIMAGE=y | 63 | CONFIG_DEFAULT_UIMAGE=y |
64 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
65 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
63 | # CONFIG_PPC_DCR_NATIVE is not set | 66 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 67 | # CONFIG_PPC_DCR_MMIO is not set |
65 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 68 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -90,6 +93,7 @@ CONFIG_AUDIT=y | |||
90 | # | 93 | # |
91 | CONFIG_TREE_RCU=y | 94 | CONFIG_TREE_RCU=y |
92 | # CONFIG_TREE_PREEMPT_RCU is not set | 95 | # CONFIG_TREE_PREEMPT_RCU is not set |
96 | # CONFIG_TINY_RCU is not set | ||
93 | # CONFIG_RCU_TRACE is not set | 97 | # CONFIG_RCU_TRACE is not set |
94 | CONFIG_RCU_FANOUT=32 | 98 | CONFIG_RCU_FANOUT=32 |
95 | # CONFIG_RCU_FANOUT_EXACT is not set | 99 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -182,14 +186,41 @@ CONFIG_LBDAF=y | |||
182 | # IO Schedulers | 186 | # IO Schedulers |
183 | # | 187 | # |
184 | CONFIG_IOSCHED_NOOP=y | 188 | CONFIG_IOSCHED_NOOP=y |
185 | CONFIG_IOSCHED_AS=y | ||
186 | CONFIG_IOSCHED_DEADLINE=y | 189 | CONFIG_IOSCHED_DEADLINE=y |
187 | CONFIG_IOSCHED_CFQ=y | 190 | CONFIG_IOSCHED_CFQ=y |
188 | # CONFIG_DEFAULT_AS is not set | ||
189 | # CONFIG_DEFAULT_DEADLINE is not set | 191 | # CONFIG_DEFAULT_DEADLINE is not set |
190 | CONFIG_DEFAULT_CFQ=y | 192 | CONFIG_DEFAULT_CFQ=y |
191 | # CONFIG_DEFAULT_NOOP is not set | 193 | # CONFIG_DEFAULT_NOOP is not set |
192 | CONFIG_DEFAULT_IOSCHED="cfq" | 194 | CONFIG_DEFAULT_IOSCHED="cfq" |
195 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
196 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
197 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
198 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
199 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
200 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
201 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
202 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
203 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
204 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
205 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
206 | # CONFIG_INLINE_READ_LOCK is not set | ||
207 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
208 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
209 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
210 | CONFIG_INLINE_READ_UNLOCK=y | ||
211 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
212 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
213 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
214 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
215 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
216 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
217 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
218 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
219 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
220 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
221 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
222 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
223 | CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
193 | # CONFIG_FREEZER is not set | 224 | # CONFIG_FREEZER is not set |
194 | 225 | ||
195 | # | 226 | # |
@@ -260,6 +291,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | |||
260 | # CONFIG_KEXEC is not set | 291 | # CONFIG_KEXEC is not set |
261 | # CONFIG_CRASH_DUMP is not set | 292 | # CONFIG_CRASH_DUMP is not set |
262 | # CONFIG_IRQ_ALL_CPUS is not set | 293 | # CONFIG_IRQ_ALL_CPUS is not set |
294 | CONFIG_SPARSE_IRQ=y | ||
263 | CONFIG_MAX_ACTIVE_REGIONS=32 | 295 | CONFIG_MAX_ACTIVE_REGIONS=32 |
264 | CONFIG_ARCH_FLATMEM_ENABLE=y | 296 | CONFIG_ARCH_FLATMEM_ENABLE=y |
265 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 297 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -276,8 +308,6 @@ CONFIG_MIGRATION=y | |||
276 | CONFIG_ZONE_DMA_FLAG=1 | 308 | CONFIG_ZONE_DMA_FLAG=1 |
277 | CONFIG_BOUNCE=y | 309 | CONFIG_BOUNCE=y |
278 | CONFIG_VIRT_TO_BUS=y | 310 | CONFIG_VIRT_TO_BUS=y |
279 | CONFIG_HAVE_MLOCK=y | ||
280 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
281 | # CONFIG_KSM is not set | 311 | # CONFIG_KSM is not set |
282 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 312 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
283 | CONFIG_PPC_4K_PAGES=y | 313 | CONFIG_PPC_4K_PAGES=y |
@@ -395,6 +425,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y | |||
395 | CONFIG_INET6_XFRM_MODE_BEET=y | 425 | CONFIG_INET6_XFRM_MODE_BEET=y |
396 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 426 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
397 | CONFIG_IPV6_SIT=y | 427 | CONFIG_IPV6_SIT=y |
428 | # CONFIG_IPV6_SIT_6RD is not set | ||
398 | CONFIG_IPV6_NDISC_NODETYPE=y | 429 | CONFIG_IPV6_NDISC_NODETYPE=y |
399 | # CONFIG_IPV6_TUNNEL is not set | 430 | # CONFIG_IPV6_TUNNEL is not set |
400 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 431 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
@@ -439,9 +470,6 @@ CONFIG_SCTP_HMAC_MD5=y | |||
439 | CONFIG_FIB_RULES=y | 470 | CONFIG_FIB_RULES=y |
440 | CONFIG_WIRELESS=y | 471 | CONFIG_WIRELESS=y |
441 | # CONFIG_CFG80211 is not set | 472 | # CONFIG_CFG80211 is not set |
442 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
443 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
444 | # CONFIG_WIRELESS_EXT is not set | ||
445 | # CONFIG_LIB80211 is not set | 473 | # CONFIG_LIB80211 is not set |
446 | 474 | ||
447 | # | 475 | # |
@@ -483,6 +511,10 @@ CONFIG_BLK_DEV=y | |||
483 | # CONFIG_BLK_DEV_COW_COMMON is not set | 511 | # CONFIG_BLK_DEV_COW_COMMON is not set |
484 | CONFIG_BLK_DEV_LOOP=y | 512 | CONFIG_BLK_DEV_LOOP=y |
485 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 513 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
514 | |||
515 | # | ||
516 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
517 | # | ||
486 | CONFIG_BLK_DEV_NBD=y | 518 | CONFIG_BLK_DEV_NBD=y |
487 | # CONFIG_BLK_DEV_SX8 is not set | 519 | # CONFIG_BLK_DEV_SX8 is not set |
488 | # CONFIG_BLK_DEV_UB is not set | 520 | # CONFIG_BLK_DEV_UB is not set |
@@ -494,6 +526,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072 | |||
494 | # CONFIG_ATA_OVER_ETH is not set | 526 | # CONFIG_ATA_OVER_ETH is not set |
495 | # CONFIG_BLK_DEV_HD is not set | 527 | # CONFIG_BLK_DEV_HD is not set |
496 | CONFIG_MISC_DEVICES=y | 528 | CONFIG_MISC_DEVICES=y |
529 | # CONFIG_AD525X_DPOT is not set | ||
497 | # CONFIG_PHANTOM is not set | 530 | # CONFIG_PHANTOM is not set |
498 | # CONFIG_SGI_IOC4 is not set | 531 | # CONFIG_SGI_IOC4 is not set |
499 | # CONFIG_TIFM_CORE is not set | 532 | # CONFIG_TIFM_CORE is not set |
@@ -501,6 +534,7 @@ CONFIG_MISC_DEVICES=y | |||
501 | # CONFIG_ENCLOSURE_SERVICES is not set | 534 | # CONFIG_ENCLOSURE_SERVICES is not set |
502 | # CONFIG_HP_ILO is not set | 535 | # CONFIG_HP_ILO is not set |
503 | # CONFIG_ISL29003 is not set | 536 | # CONFIG_ISL29003 is not set |
537 | # CONFIG_DS1682 is not set | ||
504 | # CONFIG_C2PORT is not set | 538 | # CONFIG_C2PORT is not set |
505 | 539 | ||
506 | # | 540 | # |
@@ -554,7 +588,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
554 | # CONFIG_SCSI_BNX2_ISCSI is not set | 588 | # CONFIG_SCSI_BNX2_ISCSI is not set |
555 | # CONFIG_BE2ISCSI is not set | 589 | # CONFIG_BE2ISCSI is not set |
556 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 590 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
591 | # CONFIG_SCSI_HPSA is not set | ||
557 | # CONFIG_SCSI_3W_9XXX is not set | 592 | # CONFIG_SCSI_3W_9XXX is not set |
593 | # CONFIG_SCSI_3W_SAS is not set | ||
558 | # CONFIG_SCSI_ACARD is not set | 594 | # CONFIG_SCSI_ACARD is not set |
559 | # CONFIG_SCSI_AACRAID is not set | 595 | # CONFIG_SCSI_AACRAID is not set |
560 | # CONFIG_SCSI_AIC7XXX is not set | 596 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -593,6 +629,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
593 | # CONFIG_SCSI_NSP32 is not set | 629 | # CONFIG_SCSI_NSP32 is not set |
594 | # CONFIG_SCSI_DEBUG is not set | 630 | # CONFIG_SCSI_DEBUG is not set |
595 | # CONFIG_SCSI_PMCRAID is not set | 631 | # CONFIG_SCSI_PMCRAID is not set |
632 | # CONFIG_SCSI_PM8001 is not set | ||
596 | # CONFIG_SCSI_SRP is not set | 633 | # CONFIG_SCSI_SRP is not set |
597 | # CONFIG_SCSI_BFA_FC is not set | 634 | # CONFIG_SCSI_BFA_FC is not set |
598 | # CONFIG_SCSI_DH is not set | 635 | # CONFIG_SCSI_DH is not set |
@@ -648,15 +685,16 @@ CONFIG_PATA_ALI=y | |||
648 | # CONFIG_PATA_NS87415 is not set | 685 | # CONFIG_PATA_NS87415 is not set |
649 | # CONFIG_PATA_OPTI is not set | 686 | # CONFIG_PATA_OPTI is not set |
650 | # CONFIG_PATA_OPTIDMA is not set | 687 | # CONFIG_PATA_OPTIDMA is not set |
688 | # CONFIG_PATA_PDC2027X is not set | ||
651 | # CONFIG_PATA_PDC_OLD is not set | 689 | # CONFIG_PATA_PDC_OLD is not set |
652 | # CONFIG_PATA_RADISYS is not set | 690 | # CONFIG_PATA_RADISYS is not set |
653 | # CONFIG_PATA_RDC is not set | 691 | # CONFIG_PATA_RDC is not set |
654 | # CONFIG_PATA_RZ1000 is not set | 692 | # CONFIG_PATA_RZ1000 is not set |
655 | # CONFIG_PATA_SC1200 is not set | 693 | # CONFIG_PATA_SC1200 is not set |
656 | # CONFIG_PATA_SERVERWORKS is not set | 694 | # CONFIG_PATA_SERVERWORKS is not set |
657 | # CONFIG_PATA_PDC2027X is not set | ||
658 | # CONFIG_PATA_SIL680 is not set | 695 | # CONFIG_PATA_SIL680 is not set |
659 | # CONFIG_PATA_SIS is not set | 696 | # CONFIG_PATA_SIS is not set |
697 | # CONFIG_PATA_TOSHIBA is not set | ||
660 | # CONFIG_PATA_VIA is not set | 698 | # CONFIG_PATA_VIA is not set |
661 | # CONFIG_PATA_WINBOND is not set | 699 | # CONFIG_PATA_WINBOND is not set |
662 | # CONFIG_PATA_PLATFORM is not set | 700 | # CONFIG_PATA_PLATFORM is not set |
@@ -673,7 +711,7 @@ CONFIG_PATA_ALI=y | |||
673 | # | 711 | # |
674 | 712 | ||
675 | # | 713 | # |
676 | # See the help texts for more information. | 714 | # The newer stack is recommended. |
677 | # | 715 | # |
678 | # CONFIG_FIREWIRE is not set | 716 | # CONFIG_FIREWIRE is not set |
679 | # CONFIG_IEEE1394 is not set | 717 | # CONFIG_IEEE1394 is not set |
@@ -778,8 +816,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
778 | # CONFIG_BE2NET is not set | 816 | # CONFIG_BE2NET is not set |
779 | # CONFIG_TR is not set | 817 | # CONFIG_TR is not set |
780 | CONFIG_WLAN=y | 818 | CONFIG_WLAN=y |
781 | # CONFIG_WLAN_PRE80211 is not set | 819 | # CONFIG_AIRO is not set |
782 | # CONFIG_WLAN_80211 is not set | 820 | # CONFIG_ATMEL is not set |
821 | # CONFIG_PRISM54 is not set | ||
822 | # CONFIG_USB_ZD1201 is not set | ||
823 | # CONFIG_HOSTAP is not set | ||
783 | 824 | ||
784 | # | 825 | # |
785 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 826 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -802,6 +843,7 @@ CONFIG_WLAN=y | |||
802 | # CONFIG_NETCONSOLE is not set | 843 | # CONFIG_NETCONSOLE is not set |
803 | # CONFIG_NETPOLL is not set | 844 | # CONFIG_NETPOLL is not set |
804 | # CONFIG_NET_POLL_CONTROLLER is not set | 845 | # CONFIG_NET_POLL_CONTROLLER is not set |
846 | # CONFIG_VMXNET3 is not set | ||
805 | # CONFIG_ISDN is not set | 847 | # CONFIG_ISDN is not set |
806 | # CONFIG_PHONE is not set | 848 | # CONFIG_PHONE is not set |
807 | 849 | ||
@@ -811,6 +853,7 @@ CONFIG_WLAN=y | |||
811 | CONFIG_INPUT=y | 853 | CONFIG_INPUT=y |
812 | CONFIG_INPUT_FF_MEMLESS=m | 854 | CONFIG_INPUT_FF_MEMLESS=m |
813 | # CONFIG_INPUT_POLLDEV is not set | 855 | # CONFIG_INPUT_POLLDEV is not set |
856 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
814 | 857 | ||
815 | # | 858 | # |
816 | # Userland interfaces | 859 | # Userland interfaces |
@@ -840,6 +883,7 @@ CONFIG_SERIO_SERPORT=y | |||
840 | CONFIG_SERIO_LIBPS2=y | 883 | CONFIG_SERIO_LIBPS2=y |
841 | # CONFIG_SERIO_RAW is not set | 884 | # CONFIG_SERIO_RAW is not set |
842 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | 885 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set |
886 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
843 | # CONFIG_GAMEPORT is not set | 887 | # CONFIG_GAMEPORT is not set |
844 | 888 | ||
845 | # | 889 | # |
@@ -876,6 +920,7 @@ CONFIG_SERIAL_CORE=y | |||
876 | CONFIG_SERIAL_CORE_CONSOLE=y | 920 | CONFIG_SERIAL_CORE_CONSOLE=y |
877 | # CONFIG_SERIAL_JSM is not set | 921 | # CONFIG_SERIAL_JSM is not set |
878 | # CONFIG_SERIAL_OF_PLATFORM is not set | 922 | # CONFIG_SERIAL_OF_PLATFORM is not set |
923 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
879 | CONFIG_UNIX98_PTYS=y | 924 | CONFIG_UNIX98_PTYS=y |
880 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 925 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
881 | CONFIG_LEGACY_PTYS=y | 926 | CONFIG_LEGACY_PTYS=y |
@@ -932,11 +977,6 @@ CONFIG_I2C_MPC=y | |||
932 | # CONFIG_I2C_TINY_USB is not set | 977 | # CONFIG_I2C_TINY_USB is not set |
933 | 978 | ||
934 | # | 979 | # |
935 | # Graphics adapter I2C/DDC channel drivers | ||
936 | # | ||
937 | # CONFIG_I2C_VOODOO3 is not set | ||
938 | |||
939 | # | ||
940 | # Other I2C/SMBus bus drivers | 980 | # Other I2C/SMBus bus drivers |
941 | # | 981 | # |
942 | # CONFIG_I2C_PCA_PLATFORM is not set | 982 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -945,7 +985,6 @@ CONFIG_I2C_MPC=y | |||
945 | # | 985 | # |
946 | # Miscellaneous I2C Chip support | 986 | # Miscellaneous I2C Chip support |
947 | # | 987 | # |
948 | # CONFIG_DS1682 is not set | ||
949 | # CONFIG_SENSORS_TSL2550 is not set | 988 | # CONFIG_SENSORS_TSL2550 is not set |
950 | # CONFIG_I2C_DEBUG_CORE is not set | 989 | # CONFIG_I2C_DEBUG_CORE is not set |
951 | # CONFIG_I2C_DEBUG_ALGO is not set | 990 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -980,11 +1019,13 @@ CONFIG_SSB_POSSIBLE=y | |||
980 | # CONFIG_TWL4030_CORE is not set | 1019 | # CONFIG_TWL4030_CORE is not set |
981 | # CONFIG_MFD_TMIO is not set | 1020 | # CONFIG_MFD_TMIO is not set |
982 | # CONFIG_PMIC_DA903X is not set | 1021 | # CONFIG_PMIC_DA903X is not set |
1022 | # CONFIG_PMIC_ADP5520 is not set | ||
983 | # CONFIG_MFD_WM8400 is not set | 1023 | # CONFIG_MFD_WM8400 is not set |
984 | # CONFIG_MFD_WM831X is not set | 1024 | # CONFIG_MFD_WM831X is not set |
985 | # CONFIG_MFD_WM8350_I2C is not set | 1025 | # CONFIG_MFD_WM8350_I2C is not set |
986 | # CONFIG_MFD_PCF50633 is not set | 1026 | # CONFIG_MFD_PCF50633 is not set |
987 | # CONFIG_AB3100_CORE is not set | 1027 | # CONFIG_AB3100_CORE is not set |
1028 | # CONFIG_MFD_88PM8607 is not set | ||
988 | # CONFIG_REGULATOR is not set | 1029 | # CONFIG_REGULATOR is not set |
989 | # CONFIG_MEDIA_SUPPORT is not set | 1030 | # CONFIG_MEDIA_SUPPORT is not set |
990 | 1031 | ||
@@ -1059,6 +1100,7 @@ CONFIG_SND_PCI=y | |||
1059 | # CONFIG_SND_CS4281 is not set | 1100 | # CONFIG_SND_CS4281 is not set |
1060 | # CONFIG_SND_CS46XX is not set | 1101 | # CONFIG_SND_CS46XX is not set |
1061 | # CONFIG_SND_CS5530 is not set | 1102 | # CONFIG_SND_CS5530 is not set |
1103 | # CONFIG_SND_CS5535AUDIO is not set | ||
1062 | # CONFIG_SND_CTXFI is not set | 1104 | # CONFIG_SND_CTXFI is not set |
1063 | # CONFIG_SND_DARLA20 is not set | 1105 | # CONFIG_SND_DARLA20 is not set |
1064 | # CONFIG_SND_GINA20 is not set | 1106 | # CONFIG_SND_GINA20 is not set |
@@ -1186,6 +1228,7 @@ CONFIG_USB_MON=y | |||
1186 | CONFIG_USB_EHCI_HCD=y | 1228 | CONFIG_USB_EHCI_HCD=y |
1187 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1229 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1188 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1230 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1231 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1189 | # CONFIG_USB_EHCI_FSL is not set | 1232 | # CONFIG_USB_EHCI_FSL is not set |
1190 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1233 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1191 | # CONFIG_USB_OXU210HP_HCD is not set | 1234 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1312,6 +1355,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1312 | # CONFIG_RTC_DRV_PCF8563 is not set | 1355 | # CONFIG_RTC_DRV_PCF8563 is not set |
1313 | # CONFIG_RTC_DRV_PCF8583 is not set | 1356 | # CONFIG_RTC_DRV_PCF8583 is not set |
1314 | # CONFIG_RTC_DRV_M41T80 is not set | 1357 | # CONFIG_RTC_DRV_M41T80 is not set |
1358 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1315 | # CONFIG_RTC_DRV_S35390A is not set | 1359 | # CONFIG_RTC_DRV_S35390A is not set |
1316 | # CONFIG_RTC_DRV_FM3130 is not set | 1360 | # CONFIG_RTC_DRV_FM3130 is not set |
1317 | # CONFIG_RTC_DRV_RX8581 is not set | 1361 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1333,7 +1377,9 @@ CONFIG_RTC_DRV_CMOS=y | |||
1333 | # CONFIG_RTC_DRV_M48T86 is not set | 1377 | # CONFIG_RTC_DRV_M48T86 is not set |
1334 | # CONFIG_RTC_DRV_M48T35 is not set | 1378 | # CONFIG_RTC_DRV_M48T35 is not set |
1335 | # CONFIG_RTC_DRV_M48T59 is not set | 1379 | # CONFIG_RTC_DRV_M48T59 is not set |
1380 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1336 | # CONFIG_RTC_DRV_BQ4802 is not set | 1381 | # CONFIG_RTC_DRV_BQ4802 is not set |
1382 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1337 | # CONFIG_RTC_DRV_V3020 is not set | 1383 | # CONFIG_RTC_DRV_V3020 is not set |
1338 | 1384 | ||
1339 | # | 1385 | # |
@@ -1648,7 +1694,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1648 | # CONFIG_KEYS is not set | 1694 | # CONFIG_KEYS is not set |
1649 | # CONFIG_SECURITY is not set | 1695 | # CONFIG_SECURITY is not set |
1650 | # CONFIG_SECURITYFS is not set | 1696 | # CONFIG_SECURITYFS is not set |
1651 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1697 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1698 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1699 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1700 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1701 | CONFIG_DEFAULT_SECURITY="" | ||
1652 | CONFIG_CRYPTO=y | 1702 | CONFIG_CRYPTO=y |
1653 | 1703 | ||
1654 | # | 1704 | # |
diff --git a/arch/powerpc/configs/86xx/sbc8641d_defconfig b/arch/powerpc/configs/86xx/sbc8641d_defconfig index 89991f157ae8..4fb04dd2cde3 100644 --- a/arch/powerpc/configs/86xx/sbc8641d_defconfig +++ b/arch/powerpc/configs/86xx/sbc8641d_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:45 2009 | 4 | # Wed Jan 6 09:24:38 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -38,6 +38,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
40 | CONFIG_IRQ_PER_CPU=y | 40 | CONFIG_IRQ_PER_CPU=y |
41 | CONFIG_NR_IRQS=512 | ||
41 | CONFIG_STACKTRACE_SUPPORT=y | 42 | CONFIG_STACKTRACE_SUPPORT=y |
42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y | |||
61 | CONFIG_GENERIC_BUG=y | 62 | CONFIG_GENERIC_BUG=y |
62 | CONFIG_DTC=y | 63 | CONFIG_DTC=y |
63 | CONFIG_DEFAULT_UIMAGE=y | 64 | CONFIG_DEFAULT_UIMAGE=y |
65 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
66 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
64 | # CONFIG_PPC_DCR_NATIVE is not set | 67 | # CONFIG_PPC_DCR_NATIVE is not set |
65 | # CONFIG_PPC_DCR_MMIO is not set | 68 | # CONFIG_PPC_DCR_MMIO is not set |
66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 69 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -90,6 +93,7 @@ CONFIG_BSD_PROCESS_ACCT_V3=y | |||
90 | # | 93 | # |
91 | CONFIG_TREE_RCU=y | 94 | CONFIG_TREE_RCU=y |
92 | # CONFIG_TREE_PREEMPT_RCU is not set | 95 | # CONFIG_TREE_PREEMPT_RCU is not set |
96 | # CONFIG_TINY_RCU is not set | ||
93 | # CONFIG_RCU_TRACE is not set | 97 | # CONFIG_RCU_TRACE is not set |
94 | CONFIG_RCU_FANOUT=32 | 98 | CONFIG_RCU_FANOUT=32 |
95 | # CONFIG_RCU_FANOUT_EXACT is not set | 99 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -162,6 +166,7 @@ CONFIG_HAVE_DMA_API_DEBUG=y | |||
162 | # | 166 | # |
163 | # CONFIG_GCOV_KERNEL is not set | 167 | # CONFIG_GCOV_KERNEL is not set |
164 | CONFIG_SLOW_WORK=y | 168 | CONFIG_SLOW_WORK=y |
169 | # CONFIG_SLOW_WORK_DEBUG is not set | ||
165 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | 170 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set |
166 | CONFIG_SLABINFO=y | 171 | CONFIG_SLABINFO=y |
167 | CONFIG_RT_MUTEXES=y | 172 | CONFIG_RT_MUTEXES=y |
@@ -182,14 +187,41 @@ CONFIG_LBDAF=y | |||
182 | # IO Schedulers | 187 | # IO Schedulers |
183 | # | 188 | # |
184 | CONFIG_IOSCHED_NOOP=y | 189 | CONFIG_IOSCHED_NOOP=y |
185 | CONFIG_IOSCHED_AS=y | ||
186 | CONFIG_IOSCHED_DEADLINE=y | 190 | CONFIG_IOSCHED_DEADLINE=y |
187 | CONFIG_IOSCHED_CFQ=y | 191 | CONFIG_IOSCHED_CFQ=y |
188 | # CONFIG_DEFAULT_AS is not set | ||
189 | # CONFIG_DEFAULT_DEADLINE is not set | 192 | # CONFIG_DEFAULT_DEADLINE is not set |
190 | CONFIG_DEFAULT_CFQ=y | 193 | CONFIG_DEFAULT_CFQ=y |
191 | # CONFIG_DEFAULT_NOOP is not set | 194 | # CONFIG_DEFAULT_NOOP is not set |
192 | CONFIG_DEFAULT_IOSCHED="cfq" | 195 | CONFIG_DEFAULT_IOSCHED="cfq" |
196 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
197 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
198 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
199 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
200 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
201 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
202 | # CONFIG_INLINE_SPIN_UNLOCK is not set | ||
203 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
204 | # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
205 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
206 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
207 | # CONFIG_INLINE_READ_LOCK is not set | ||
208 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
209 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
210 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
211 | # CONFIG_INLINE_READ_UNLOCK is not set | ||
212 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
213 | # CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
214 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
215 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
216 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
217 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
218 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
219 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
220 | # CONFIG_INLINE_WRITE_UNLOCK is not set | ||
221 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
222 | # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
223 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
224 | CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
193 | # CONFIG_FREEZER is not set | 225 | # CONFIG_FREEZER is not set |
194 | 226 | ||
195 | # | 227 | # |
@@ -260,6 +292,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | |||
260 | # CONFIG_KEXEC is not set | 292 | # CONFIG_KEXEC is not set |
261 | # CONFIG_CRASH_DUMP is not set | 293 | # CONFIG_CRASH_DUMP is not set |
262 | CONFIG_IRQ_ALL_CPUS=y | 294 | CONFIG_IRQ_ALL_CPUS=y |
295 | CONFIG_SPARSE_IRQ=y | ||
263 | CONFIG_MAX_ACTIVE_REGIONS=32 | 296 | CONFIG_MAX_ACTIVE_REGIONS=32 |
264 | CONFIG_ARCH_FLATMEM_ENABLE=y | 297 | CONFIG_ARCH_FLATMEM_ENABLE=y |
265 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 298 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -276,8 +309,6 @@ CONFIG_MIGRATION=y | |||
276 | CONFIG_ZONE_DMA_FLAG=1 | 309 | CONFIG_ZONE_DMA_FLAG=1 |
277 | CONFIG_BOUNCE=y | 310 | CONFIG_BOUNCE=y |
278 | CONFIG_VIRT_TO_BUS=y | 311 | CONFIG_VIRT_TO_BUS=y |
279 | CONFIG_HAVE_MLOCK=y | ||
280 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
281 | # CONFIG_KSM is not set | 312 | # CONFIG_KSM is not set |
282 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 313 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
283 | CONFIG_PPC_4K_PAGES=y | 314 | CONFIG_PPC_4K_PAGES=y |
@@ -399,6 +430,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
399 | CONFIG_INET6_XFRM_MODE_BEET=m | 430 | CONFIG_INET6_XFRM_MODE_BEET=m |
400 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 431 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
401 | CONFIG_IPV6_SIT=m | 432 | CONFIG_IPV6_SIT=m |
433 | # CONFIG_IPV6_SIT_6RD is not set | ||
402 | CONFIG_IPV6_NDISC_NODETYPE=y | 434 | CONFIG_IPV6_NDISC_NODETYPE=y |
403 | CONFIG_IPV6_TUNNEL=m | 435 | CONFIG_IPV6_TUNNEL=m |
404 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 436 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
@@ -587,9 +619,6 @@ CONFIG_NET_PKTGEN=m | |||
587 | CONFIG_FIB_RULES=y | 619 | CONFIG_FIB_RULES=y |
588 | CONFIG_WIRELESS=y | 620 | CONFIG_WIRELESS=y |
589 | # CONFIG_CFG80211 is not set | 621 | # CONFIG_CFG80211 is not set |
590 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
591 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
592 | # CONFIG_WIRELESS_EXT is not set | ||
593 | # CONFIG_LIB80211 is not set | 622 | # CONFIG_LIB80211 is not set |
594 | 623 | ||
595 | # | 624 | # |
@@ -717,6 +746,10 @@ CONFIG_BLK_DEV=y | |||
717 | # CONFIG_BLK_DEV_COW_COMMON is not set | 746 | # CONFIG_BLK_DEV_COW_COMMON is not set |
718 | CONFIG_BLK_DEV_LOOP=m | 747 | CONFIG_BLK_DEV_LOOP=m |
719 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 748 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
749 | |||
750 | # | ||
751 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
752 | # | ||
720 | CONFIG_BLK_DEV_NBD=m | 753 | CONFIG_BLK_DEV_NBD=m |
721 | # CONFIG_BLK_DEV_SX8 is not set | 754 | # CONFIG_BLK_DEV_SX8 is not set |
722 | CONFIG_BLK_DEV_RAM=y | 755 | CONFIG_BLK_DEV_RAM=y |
@@ -727,6 +760,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 | |||
727 | # CONFIG_ATA_OVER_ETH is not set | 760 | # CONFIG_ATA_OVER_ETH is not set |
728 | # CONFIG_BLK_DEV_HD is not set | 761 | # CONFIG_BLK_DEV_HD is not set |
729 | CONFIG_MISC_DEVICES=y | 762 | CONFIG_MISC_DEVICES=y |
763 | # CONFIG_AD525X_DPOT is not set | ||
730 | # CONFIG_PHANTOM is not set | 764 | # CONFIG_PHANTOM is not set |
731 | # CONFIG_SGI_IOC4 is not set | 765 | # CONFIG_SGI_IOC4 is not set |
732 | # CONFIG_TIFM_CORE is not set | 766 | # CONFIG_TIFM_CORE is not set |
@@ -734,6 +768,7 @@ CONFIG_MISC_DEVICES=y | |||
734 | # CONFIG_ENCLOSURE_SERVICES is not set | 768 | # CONFIG_ENCLOSURE_SERVICES is not set |
735 | # CONFIG_HP_ILO is not set | 769 | # CONFIG_HP_ILO is not set |
736 | # CONFIG_ISL29003 is not set | 770 | # CONFIG_ISL29003 is not set |
771 | # CONFIG_DS1682 is not set | ||
737 | # CONFIG_C2PORT is not set | 772 | # CONFIG_C2PORT is not set |
738 | 773 | ||
739 | # | 774 | # |
@@ -786,7 +821,7 @@ CONFIG_DM_ZERO=y | |||
786 | # | 821 | # |
787 | 822 | ||
788 | # | 823 | # |
789 | # See the help texts for more information. | 824 | # The newer stack is recommended. |
790 | # | 825 | # |
791 | # CONFIG_FIREWIRE is not set | 826 | # CONFIG_FIREWIRE is not set |
792 | # CONFIG_IEEE1394 is not set | 827 | # CONFIG_IEEE1394 is not set |
@@ -873,8 +908,10 @@ CONFIG_GIANFAR=y | |||
873 | # CONFIG_NETDEV_10000 is not set | 908 | # CONFIG_NETDEV_10000 is not set |
874 | # CONFIG_TR is not set | 909 | # CONFIG_TR is not set |
875 | CONFIG_WLAN=y | 910 | CONFIG_WLAN=y |
876 | # CONFIG_WLAN_PRE80211 is not set | 911 | # CONFIG_AIRO is not set |
877 | # CONFIG_WLAN_80211 is not set | 912 | # CONFIG_ATMEL is not set |
913 | # CONFIG_PRISM54 is not set | ||
914 | # CONFIG_HOSTAP is not set | ||
878 | 915 | ||
879 | # | 916 | # |
880 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 917 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -918,6 +955,7 @@ CONFIG_NETCONSOLE=y | |||
918 | CONFIG_NETPOLL=y | 955 | CONFIG_NETPOLL=y |
919 | CONFIG_NETPOLL_TRAP=y | 956 | CONFIG_NETPOLL_TRAP=y |
920 | CONFIG_NET_POLL_CONTROLLER=y | 957 | CONFIG_NET_POLL_CONTROLLER=y |
958 | # CONFIG_VMXNET3 is not set | ||
921 | # CONFIG_ISDN is not set | 959 | # CONFIG_ISDN is not set |
922 | # CONFIG_PHONE is not set | 960 | # CONFIG_PHONE is not set |
923 | 961 | ||
@@ -927,6 +965,7 @@ CONFIG_NET_POLL_CONTROLLER=y | |||
927 | CONFIG_INPUT=y | 965 | CONFIG_INPUT=y |
928 | # CONFIG_INPUT_FF_MEMLESS is not set | 966 | # CONFIG_INPUT_FF_MEMLESS is not set |
929 | # CONFIG_INPUT_POLLDEV is not set | 967 | # CONFIG_INPUT_POLLDEV is not set |
968 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
930 | 969 | ||
931 | # | 970 | # |
932 | # Userland interfaces | 971 | # Userland interfaces |
@@ -985,6 +1024,7 @@ CONFIG_SERIAL_CORE=y | |||
985 | CONFIG_SERIAL_CORE_CONSOLE=y | 1024 | CONFIG_SERIAL_CORE_CONSOLE=y |
986 | # CONFIG_SERIAL_JSM is not set | 1025 | # CONFIG_SERIAL_JSM is not set |
987 | # CONFIG_SERIAL_OF_PLATFORM is not set | 1026 | # CONFIG_SERIAL_OF_PLATFORM is not set |
1027 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
988 | CONFIG_UNIX98_PTYS=y | 1028 | CONFIG_UNIX98_PTYS=y |
989 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 1029 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
990 | CONFIG_LEGACY_PTYS=y | 1030 | CONFIG_LEGACY_PTYS=y |
@@ -1042,11 +1082,6 @@ CONFIG_I2C_MPC=y | |||
1042 | # CONFIG_I2C_TAOS_EVM is not set | 1082 | # CONFIG_I2C_TAOS_EVM is not set |
1043 | 1083 | ||
1044 | # | 1084 | # |
1045 | # Graphics adapter I2C/DDC channel drivers | ||
1046 | # | ||
1047 | # CONFIG_I2C_VOODOO3 is not set | ||
1048 | |||
1049 | # | ||
1050 | # Other I2C/SMBus bus drivers | 1085 | # Other I2C/SMBus bus drivers |
1051 | # | 1086 | # |
1052 | # CONFIG_I2C_PCA_PLATFORM is not set | 1087 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -1055,7 +1090,6 @@ CONFIG_I2C_MPC=y | |||
1055 | # | 1090 | # |
1056 | # Miscellaneous I2C Chip support | 1091 | # Miscellaneous I2C Chip support |
1057 | # | 1092 | # |
1058 | # CONFIG_DS1682 is not set | ||
1059 | # CONFIG_SENSORS_TSL2550 is not set | 1093 | # CONFIG_SENSORS_TSL2550 is not set |
1060 | # CONFIG_I2C_DEBUG_CORE is not set | 1094 | # CONFIG_I2C_DEBUG_CORE is not set |
1061 | # CONFIG_I2C_DEBUG_ALGO is not set | 1095 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1101,6 +1135,7 @@ CONFIG_HWMON=y | |||
1101 | # CONFIG_SENSORS_GL520SM is not set | 1135 | # CONFIG_SENSORS_GL520SM is not set |
1102 | # CONFIG_SENSORS_IT87 is not set | 1136 | # CONFIG_SENSORS_IT87 is not set |
1103 | # CONFIG_SENSORS_LM63 is not set | 1137 | # CONFIG_SENSORS_LM63 is not set |
1138 | # CONFIG_SENSORS_LM73 is not set | ||
1104 | # CONFIG_SENSORS_LM75 is not set | 1139 | # CONFIG_SENSORS_LM75 is not set |
1105 | # CONFIG_SENSORS_LM77 is not set | 1140 | # CONFIG_SENSORS_LM77 is not set |
1106 | # CONFIG_SENSORS_LM78 is not set | 1141 | # CONFIG_SENSORS_LM78 is not set |
@@ -1139,6 +1174,7 @@ CONFIG_HWMON=y | |||
1139 | # CONFIG_SENSORS_W83L786NG is not set | 1174 | # CONFIG_SENSORS_W83L786NG is not set |
1140 | # CONFIG_SENSORS_W83627HF is not set | 1175 | # CONFIG_SENSORS_W83627HF is not set |
1141 | # CONFIG_SENSORS_W83627EHF is not set | 1176 | # CONFIG_SENSORS_W83627EHF is not set |
1177 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1142 | # CONFIG_THERMAL is not set | 1178 | # CONFIG_THERMAL is not set |
1143 | CONFIG_WATCHDOG=y | 1179 | CONFIG_WATCHDOG=y |
1144 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1180 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -1171,11 +1207,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1171 | # CONFIG_TWL4030_CORE is not set | 1207 | # CONFIG_TWL4030_CORE is not set |
1172 | # CONFIG_MFD_TMIO is not set | 1208 | # CONFIG_MFD_TMIO is not set |
1173 | # CONFIG_PMIC_DA903X is not set | 1209 | # CONFIG_PMIC_DA903X is not set |
1210 | # CONFIG_PMIC_ADP5520 is not set | ||
1174 | # CONFIG_MFD_WM8400 is not set | 1211 | # CONFIG_MFD_WM8400 is not set |
1175 | # CONFIG_MFD_WM831X is not set | 1212 | # CONFIG_MFD_WM831X is not set |
1176 | # CONFIG_MFD_WM8350_I2C is not set | 1213 | # CONFIG_MFD_WM8350_I2C is not set |
1177 | # CONFIG_MFD_PCF50633 is not set | 1214 | # CONFIG_MFD_PCF50633 is not set |
1178 | # CONFIG_AB3100_CORE is not set | 1215 | # CONFIG_AB3100_CORE is not set |
1216 | # CONFIG_MFD_88PM8607 is not set | ||
1179 | # CONFIG_REGULATOR is not set | 1217 | # CONFIG_REGULATOR is not set |
1180 | # CONFIG_MEDIA_SUPPORT is not set | 1218 | # CONFIG_MEDIA_SUPPORT is not set |
1181 | 1219 | ||
@@ -1281,7 +1319,6 @@ CONFIG_OCFS2_FS_O2CB=m | |||
1281 | CONFIG_OCFS2_FS_STATS=y | 1319 | CONFIG_OCFS2_FS_STATS=y |
1282 | CONFIG_OCFS2_DEBUG_MASKLOG=y | 1320 | CONFIG_OCFS2_DEBUG_MASKLOG=y |
1283 | # CONFIG_OCFS2_DEBUG_FS is not set | 1321 | # CONFIG_OCFS2_DEBUG_FS is not set |
1284 | # CONFIG_OCFS2_FS_POSIX_ACL is not set | ||
1285 | # CONFIG_BTRFS_FS is not set | 1322 | # CONFIG_BTRFS_FS is not set |
1286 | # CONFIG_NILFS2_FS is not set | 1323 | # CONFIG_NILFS2_FS is not set |
1287 | CONFIG_FILE_LOCKING=y | 1324 | CONFIG_FILE_LOCKING=y |
@@ -1556,8 +1593,12 @@ CONFIG_SECURITY=y | |||
1556 | CONFIG_SECURITY_NETWORK=y | 1593 | CONFIG_SECURITY_NETWORK=y |
1557 | # CONFIG_SECURITY_NETWORK_XFRM is not set | 1594 | # CONFIG_SECURITY_NETWORK_XFRM is not set |
1558 | # CONFIG_SECURITY_PATH is not set | 1595 | # CONFIG_SECURITY_PATH is not set |
1559 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
1560 | # CONFIG_SECURITY_TOMOYO is not set | 1596 | # CONFIG_SECURITY_TOMOYO is not set |
1597 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set | ||
1598 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1599 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1600 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1601 | CONFIG_DEFAULT_SECURITY="" | ||
1561 | CONFIG_CRYPTO=y | 1602 | CONFIG_CRYPTO=y |
1562 | 1603 | ||
1563 | # | 1604 | # |
diff --git a/arch/powerpc/configs/adder875_defconfig b/arch/powerpc/configs/adder875_defconfig index 052cf134e018..5c1dc768bbd8 100644 --- a/arch/powerpc/configs/adder875_defconfig +++ b/arch/powerpc/configs/adder875_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:04 2009 | 4 | # Wed Jan 6 09:23:58 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -32,6 +32,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
33 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 33 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
34 | CONFIG_IRQ_PER_CPU=y | 34 | CONFIG_IRQ_PER_CPU=y |
35 | CONFIG_NR_IRQS=512 | ||
35 | CONFIG_STACKTRACE_SUPPORT=y | 36 | CONFIG_STACKTRACE_SUPPORT=y |
36 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 37 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
37 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 38 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -55,6 +56,7 @@ CONFIG_GENERIC_BUG=y | |||
55 | CONFIG_DTC=y | 56 | CONFIG_DTC=y |
56 | # CONFIG_DEFAULT_UIMAGE is not set | 57 | # CONFIG_DEFAULT_UIMAGE is not set |
57 | CONFIG_REDBOOT=y | 58 | CONFIG_REDBOOT=y |
59 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
58 | # CONFIG_PPC_DCR_NATIVE is not set | 60 | # CONFIG_PPC_DCR_NATIVE is not set |
59 | # CONFIG_PPC_DCR_MMIO is not set | 61 | # CONFIG_PPC_DCR_MMIO is not set |
60 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 62 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -82,6 +84,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
82 | # | 84 | # |
83 | CONFIG_TREE_RCU=y | 85 | CONFIG_TREE_RCU=y |
84 | # CONFIG_TREE_PREEMPT_RCU is not set | 86 | # CONFIG_TREE_PREEMPT_RCU is not set |
87 | # CONFIG_TINY_RCU is not set | ||
85 | # CONFIG_RCU_TRACE is not set | 88 | # CONFIG_RCU_TRACE is not set |
86 | CONFIG_RCU_FANOUT=32 | 89 | CONFIG_RCU_FANOUT=32 |
87 | # CONFIG_RCU_FANOUT_EXACT is not set | 90 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -161,14 +164,41 @@ CONFIG_LBDAF=y | |||
161 | # IO Schedulers | 164 | # IO Schedulers |
162 | # | 165 | # |
163 | CONFIG_IOSCHED_NOOP=y | 166 | CONFIG_IOSCHED_NOOP=y |
164 | # CONFIG_IOSCHED_AS is not set | ||
165 | CONFIG_IOSCHED_DEADLINE=y | 167 | CONFIG_IOSCHED_DEADLINE=y |
166 | # CONFIG_IOSCHED_CFQ is not set | 168 | # CONFIG_IOSCHED_CFQ is not set |
167 | # CONFIG_DEFAULT_AS is not set | ||
168 | CONFIG_DEFAULT_DEADLINE=y | 169 | CONFIG_DEFAULT_DEADLINE=y |
169 | # CONFIG_DEFAULT_CFQ is not set | 170 | # CONFIG_DEFAULT_CFQ is not set |
170 | # CONFIG_DEFAULT_NOOP is not set | 171 | # CONFIG_DEFAULT_NOOP is not set |
171 | CONFIG_DEFAULT_IOSCHED="deadline" | 172 | CONFIG_DEFAULT_IOSCHED="deadline" |
173 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
174 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
175 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
176 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
177 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
178 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
179 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
180 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
181 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
182 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
183 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
184 | # CONFIG_INLINE_READ_LOCK is not set | ||
185 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
186 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
187 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
188 | CONFIG_INLINE_READ_UNLOCK=y | ||
189 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
190 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
191 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
192 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
193 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
194 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
195 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
196 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
197 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
198 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
199 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
200 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
201 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
172 | # CONFIG_FREEZER is not set | 202 | # CONFIG_FREEZER is not set |
173 | 203 | ||
174 | # | 204 | # |
@@ -242,6 +272,7 @@ CONFIG_BINFMT_ELF=y | |||
242 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 272 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
243 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 273 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
244 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 274 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
275 | CONFIG_SPARSE_IRQ=y | ||
245 | CONFIG_MAX_ACTIVE_REGIONS=32 | 276 | CONFIG_MAX_ACTIVE_REGIONS=32 |
246 | CONFIG_ARCH_FLATMEM_ENABLE=y | 277 | CONFIG_ARCH_FLATMEM_ENABLE=y |
247 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 278 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -258,8 +289,6 @@ CONFIG_MIGRATION=y | |||
258 | CONFIG_ZONE_DMA_FLAG=1 | 289 | CONFIG_ZONE_DMA_FLAG=1 |
259 | CONFIG_BOUNCE=y | 290 | CONFIG_BOUNCE=y |
260 | CONFIG_VIRT_TO_BUS=y | 291 | CONFIG_VIRT_TO_BUS=y |
261 | CONFIG_HAVE_MLOCK=y | ||
262 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
263 | # CONFIG_KSM is not set | 292 | # CONFIG_KSM is not set |
264 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 293 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
265 | CONFIG_PPC_4K_PAGES=y | 294 | CONFIG_PPC_4K_PAGES=y |
@@ -373,9 +402,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
373 | # CONFIG_AF_RXRPC is not set | 402 | # CONFIG_AF_RXRPC is not set |
374 | CONFIG_WIRELESS=y | 403 | CONFIG_WIRELESS=y |
375 | # CONFIG_CFG80211 is not set | 404 | # CONFIG_CFG80211 is not set |
376 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
377 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
378 | # CONFIG_WIRELESS_EXT is not set | ||
379 | # CONFIG_LIB80211 is not set | 405 | # CONFIG_LIB80211 is not set |
380 | 406 | ||
381 | # | 407 | # |
@@ -546,8 +572,7 @@ CONFIG_FS_ENET_MDIO_FEC=y | |||
546 | # CONFIG_NETDEV_1000 is not set | 572 | # CONFIG_NETDEV_1000 is not set |
547 | # CONFIG_NETDEV_10000 is not set | 573 | # CONFIG_NETDEV_10000 is not set |
548 | CONFIG_WLAN=y | 574 | CONFIG_WLAN=y |
549 | # CONFIG_WLAN_PRE80211 is not set | 575 | # CONFIG_HOSTAP is not set |
550 | # CONFIG_WLAN_80211 is not set | ||
551 | 576 | ||
552 | # | 577 | # |
553 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 578 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -567,6 +592,7 @@ CONFIG_WLAN=y | |||
567 | CONFIG_INPUT=y | 592 | CONFIG_INPUT=y |
568 | # CONFIG_INPUT_FF_MEMLESS is not set | 593 | # CONFIG_INPUT_FF_MEMLESS is not set |
569 | # CONFIG_INPUT_POLLDEV is not set | 594 | # CONFIG_INPUT_POLLDEV is not set |
595 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
570 | 596 | ||
571 | # | 597 | # |
572 | # Userland interfaces | 598 | # Userland interfaces |
@@ -615,6 +641,7 @@ CONFIG_SERIO_SERPORT=y | |||
615 | CONFIG_SERIO_LIBPS2=y | 641 | CONFIG_SERIO_LIBPS2=y |
616 | # CONFIG_SERIO_RAW is not set | 642 | # CONFIG_SERIO_RAW is not set |
617 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | 643 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set |
644 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
618 | # CONFIG_GAMEPORT is not set | 645 | # CONFIG_GAMEPORT is not set |
619 | 646 | ||
620 | # | 647 | # |
@@ -637,6 +664,7 @@ CONFIG_SERIAL_CORE=y | |||
637 | CONFIG_SERIAL_CORE_CONSOLE=y | 664 | CONFIG_SERIAL_CORE_CONSOLE=y |
638 | CONFIG_SERIAL_CPM=y | 665 | CONFIG_SERIAL_CPM=y |
639 | CONFIG_SERIAL_CPM_CONSOLE=y | 666 | CONFIG_SERIAL_CPM_CONSOLE=y |
667 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
640 | CONFIG_UNIX98_PTYS=y | 668 | CONFIG_UNIX98_PTYS=y |
641 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 669 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
642 | # CONFIG_LEGACY_PTYS is not set | 670 | # CONFIG_LEGACY_PTYS is not set |
@@ -898,6 +926,7 @@ CONFIG_DEBUG_INFO=y | |||
898 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | 926 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set |
899 | # CONFIG_FAULT_INJECTION is not set | 927 | # CONFIG_FAULT_INJECTION is not set |
900 | # CONFIG_LATENCYTOP is not set | 928 | # CONFIG_LATENCYTOP is not set |
929 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
901 | # CONFIG_DEBUG_PAGEALLOC is not set | 930 | # CONFIG_DEBUG_PAGEALLOC is not set |
902 | CONFIG_HAVE_FUNCTION_TRACER=y | 931 | CONFIG_HAVE_FUNCTION_TRACER=y |
903 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | 932 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y |
@@ -943,7 +972,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
943 | # CONFIG_KEYS is not set | 972 | # CONFIG_KEYS is not set |
944 | # CONFIG_SECURITY is not set | 973 | # CONFIG_SECURITY is not set |
945 | # CONFIG_SECURITYFS is not set | 974 | # CONFIG_SECURITYFS is not set |
946 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 975 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
976 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
977 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
978 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
979 | CONFIG_DEFAULT_SECURITY="" | ||
947 | # CONFIG_CRYPTO is not set | 980 | # CONFIG_CRYPTO is not set |
948 | CONFIG_PPC_CLOCK=y | 981 | CONFIG_PPC_CLOCK=y |
949 | CONFIG_PPC_LIB_RHEAP=y | 982 | CONFIG_PPC_LIB_RHEAP=y |
diff --git a/arch/powerpc/configs/c2k_defconfig b/arch/powerpc/configs/c2k_defconfig index 0fb65a85dfdf..72137cd881da 100644 --- a/arch/powerpc/configs/c2k_defconfig +++ b/arch/powerpc/configs/c2k_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:05 2009 | 4 | # Wed Jan 6 09:23:59 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -61,6 +62,7 @@ CONFIG_AUDIT_ARCH=y | |||
61 | CONFIG_GENERIC_BUG=y | 62 | CONFIG_GENERIC_BUG=y |
62 | CONFIG_DTC=y | 63 | CONFIG_DTC=y |
63 | # CONFIG_DEFAULT_UIMAGE is not set | 64 | # CONFIG_DEFAULT_UIMAGE is not set |
65 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
64 | # CONFIG_PPC_DCR_NATIVE is not set | 66 | # CONFIG_PPC_DCR_NATIVE is not set |
65 | # CONFIG_PPC_DCR_MMIO is not set | 67 | # CONFIG_PPC_DCR_MMIO is not set |
66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 68 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -92,6 +94,7 @@ CONFIG_AUDIT_TREE=y | |||
92 | # | 94 | # |
93 | CONFIG_TREE_RCU=y | 95 | CONFIG_TREE_RCU=y |
94 | # CONFIG_TREE_PREEMPT_RCU is not set | 96 | # CONFIG_TREE_PREEMPT_RCU is not set |
97 | # CONFIG_TINY_RCU is not set | ||
95 | # CONFIG_RCU_TRACE is not set | 98 | # CONFIG_RCU_TRACE is not set |
96 | CONFIG_RCU_FANOUT=32 | 99 | CONFIG_RCU_FANOUT=32 |
97 | # CONFIG_RCU_FANOUT_EXACT is not set | 100 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -173,6 +176,7 @@ CONFIG_HAVE_DMA_API_DEBUG=y | |||
173 | # | 176 | # |
174 | # CONFIG_GCOV_KERNEL is not set | 177 | # CONFIG_GCOV_KERNEL is not set |
175 | CONFIG_SLOW_WORK=y | 178 | CONFIG_SLOW_WORK=y |
179 | # CONFIG_SLOW_WORK_DEBUG is not set | ||
176 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | 180 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set |
177 | CONFIG_SLABINFO=y | 181 | CONFIG_SLABINFO=y |
178 | CONFIG_RT_MUTEXES=y | 182 | CONFIG_RT_MUTEXES=y |
@@ -192,14 +196,41 @@ CONFIG_LBDAF=y | |||
192 | # IO Schedulers | 196 | # IO Schedulers |
193 | # | 197 | # |
194 | CONFIG_IOSCHED_NOOP=y | 198 | CONFIG_IOSCHED_NOOP=y |
195 | CONFIG_IOSCHED_AS=y | ||
196 | CONFIG_IOSCHED_DEADLINE=y | 199 | CONFIG_IOSCHED_DEADLINE=y |
197 | CONFIG_IOSCHED_CFQ=y | 200 | CONFIG_IOSCHED_CFQ=y |
198 | # CONFIG_DEFAULT_AS is not set | ||
199 | # CONFIG_DEFAULT_DEADLINE is not set | 201 | # CONFIG_DEFAULT_DEADLINE is not set |
200 | CONFIG_DEFAULT_CFQ=y | 202 | CONFIG_DEFAULT_CFQ=y |
201 | # CONFIG_DEFAULT_NOOP is not set | 203 | # CONFIG_DEFAULT_NOOP is not set |
202 | CONFIG_DEFAULT_IOSCHED="cfq" | 204 | CONFIG_DEFAULT_IOSCHED="cfq" |
205 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
206 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
207 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
208 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
209 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
210 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
211 | # CONFIG_INLINE_SPIN_UNLOCK is not set | ||
212 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
213 | # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
214 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
215 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
216 | # CONFIG_INLINE_READ_LOCK is not set | ||
217 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
218 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
219 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
220 | # CONFIG_INLINE_READ_UNLOCK is not set | ||
221 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
222 | # CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
223 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
224 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
225 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
226 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
227 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
228 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
229 | # CONFIG_INLINE_WRITE_UNLOCK is not set | ||
230 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
231 | # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
232 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
233 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
203 | # CONFIG_FREEZER is not set | 234 | # CONFIG_FREEZER is not set |
204 | 235 | ||
205 | # | 236 | # |
@@ -224,6 +255,8 @@ CONFIG_EMBEDDED6xx=y | |||
224 | # CONFIG_PPC_PRPMC2800 is not set | 255 | # CONFIG_PPC_PRPMC2800 is not set |
225 | CONFIG_PPC_C2K=y | 256 | CONFIG_PPC_C2K=y |
226 | CONFIG_MV64X60=y | 257 | CONFIG_MV64X60=y |
258 | # CONFIG_GAMECUBE is not set | ||
259 | # CONFIG_WII is not set | ||
227 | # CONFIG_AMIGAONE is not set | 260 | # CONFIG_AMIGAONE is not set |
228 | CONFIG_PPC_OF_BOOT_TRAMPOLINE=y | 261 | CONFIG_PPC_OF_BOOT_TRAMPOLINE=y |
229 | # CONFIG_IPIC is not set | 262 | # CONFIG_IPIC is not set |
@@ -286,6 +319,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
286 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 319 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
287 | # CONFIG_KEXEC is not set | 320 | # CONFIG_KEXEC is not set |
288 | # CONFIG_CRASH_DUMP is not set | 321 | # CONFIG_CRASH_DUMP is not set |
322 | CONFIG_SPARSE_IRQ=y | ||
289 | CONFIG_MAX_ACTIVE_REGIONS=32 | 323 | CONFIG_MAX_ACTIVE_REGIONS=32 |
290 | CONFIG_ARCH_FLATMEM_ENABLE=y | 324 | CONFIG_ARCH_FLATMEM_ENABLE=y |
291 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 325 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -296,14 +330,12 @@ CONFIG_FLATMEM_MANUAL=y | |||
296 | CONFIG_FLATMEM=y | 330 | CONFIG_FLATMEM=y |
297 | CONFIG_FLAT_NODE_MEM_MAP=y | 331 | CONFIG_FLAT_NODE_MEM_MAP=y |
298 | CONFIG_PAGEFLAGS_EXTENDED=y | 332 | CONFIG_PAGEFLAGS_EXTENDED=y |
299 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 333 | CONFIG_SPLIT_PTLOCK_CPUS=999999 |
300 | CONFIG_MIGRATION=y | 334 | CONFIG_MIGRATION=y |
301 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 335 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
302 | CONFIG_ZONE_DMA_FLAG=1 | 336 | CONFIG_ZONE_DMA_FLAG=1 |
303 | CONFIG_BOUNCE=y | 337 | CONFIG_BOUNCE=y |
304 | CONFIG_VIRT_TO_BUS=y | 338 | CONFIG_VIRT_TO_BUS=y |
305 | CONFIG_HAVE_MLOCK=y | ||
306 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
307 | # CONFIG_KSM is not set | 339 | # CONFIG_KSM is not set |
308 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 340 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
309 | CONFIG_PPC_4K_PAGES=y | 341 | CONFIG_PPC_4K_PAGES=y |
@@ -316,6 +348,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11 | |||
316 | CONFIG_EXTRA_TARGETS="" | 348 | CONFIG_EXTRA_TARGETS="" |
317 | CONFIG_PM=y | 349 | CONFIG_PM=y |
318 | # CONFIG_PM_DEBUG is not set | 350 | # CONFIG_PM_DEBUG is not set |
351 | # CONFIG_HIBERNATION is not set | ||
319 | # CONFIG_PM_RUNTIME is not set | 352 | # CONFIG_PM_RUNTIME is not set |
320 | CONFIG_SECCOMP=y | 353 | CONFIG_SECCOMP=y |
321 | CONFIG_ISA_DMA_API=y | 354 | CONFIG_ISA_DMA_API=y |
@@ -424,6 +457,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
424 | CONFIG_INET6_XFRM_MODE_BEET=m | 457 | CONFIG_INET6_XFRM_MODE_BEET=m |
425 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 458 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
426 | CONFIG_IPV6_SIT=m | 459 | CONFIG_IPV6_SIT=m |
460 | # CONFIG_IPV6_SIT_6RD is not set | ||
427 | CONFIG_IPV6_NDISC_NODETYPE=y | 461 | CONFIG_IPV6_NDISC_NODETYPE=y |
428 | CONFIG_IPV6_TUNNEL=m | 462 | CONFIG_IPV6_TUNNEL=m |
429 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 463 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
@@ -687,10 +721,6 @@ CONFIG_BT_HCIVHCI=m | |||
687 | CONFIG_FIB_RULES=y | 721 | CONFIG_FIB_RULES=y |
688 | CONFIG_WIRELESS=y | 722 | CONFIG_WIRELESS=y |
689 | # CONFIG_CFG80211 is not set | 723 | # CONFIG_CFG80211 is not set |
690 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
691 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
692 | CONFIG_WIRELESS_EXT=y | ||
693 | CONFIG_WIRELESS_EXT_SYSFS=y | ||
694 | # CONFIG_LIB80211 is not set | 724 | # CONFIG_LIB80211 is not set |
695 | 725 | ||
696 | # | 726 | # |
@@ -773,7 +803,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y | |||
773 | # CONFIG_MTD_PHYSMAP is not set | 803 | # CONFIG_MTD_PHYSMAP is not set |
774 | CONFIG_MTD_PHYSMAP_OF=y | 804 | CONFIG_MTD_PHYSMAP_OF=y |
775 | # CONFIG_MTD_PCI is not set | 805 | # CONFIG_MTD_PCI is not set |
776 | # CONFIG_MTD_GPIO_ADDR is not set | ||
777 | # CONFIG_MTD_INTEL_VR_NOR is not set | 806 | # CONFIG_MTD_INTEL_VR_NOR is not set |
778 | # CONFIG_MTD_PLATRAM is not set | 807 | # CONFIG_MTD_PLATRAM is not set |
779 | 808 | ||
@@ -817,6 +846,10 @@ CONFIG_BLK_DEV=y | |||
817 | # CONFIG_BLK_DEV_COW_COMMON is not set | 846 | # CONFIG_BLK_DEV_COW_COMMON is not set |
818 | CONFIG_BLK_DEV_LOOP=m | 847 | CONFIG_BLK_DEV_LOOP=m |
819 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 848 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
849 | |||
850 | # | ||
851 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
852 | # | ||
820 | CONFIG_BLK_DEV_NBD=m | 853 | CONFIG_BLK_DEV_NBD=m |
821 | # CONFIG_BLK_DEV_SX8 is not set | 854 | # CONFIG_BLK_DEV_SX8 is not set |
822 | # CONFIG_BLK_DEV_UB is not set | 855 | # CONFIG_BLK_DEV_UB is not set |
@@ -870,7 +903,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
870 | # CONFIG_SCSI_BNX2_ISCSI is not set | 903 | # CONFIG_SCSI_BNX2_ISCSI is not set |
871 | # CONFIG_BE2ISCSI is not set | 904 | # CONFIG_BE2ISCSI is not set |
872 | CONFIG_BLK_DEV_3W_XXXX_RAID=m | 905 | CONFIG_BLK_DEV_3W_XXXX_RAID=m |
906 | # CONFIG_SCSI_HPSA is not set | ||
873 | CONFIG_SCSI_3W_9XXX=m | 907 | CONFIG_SCSI_3W_9XXX=m |
908 | # CONFIG_SCSI_3W_SAS is not set | ||
874 | CONFIG_SCSI_ACARD=m | 909 | CONFIG_SCSI_ACARD=m |
875 | CONFIG_SCSI_AACRAID=m | 910 | CONFIG_SCSI_AACRAID=m |
876 | CONFIG_SCSI_AIC7XXX=m | 911 | CONFIG_SCSI_AIC7XXX=m |
@@ -925,6 +960,7 @@ CONFIG_SCSI_LPFC=m | |||
925 | # CONFIG_SCSI_NSP32 is not set | 960 | # CONFIG_SCSI_NSP32 is not set |
926 | # CONFIG_SCSI_DEBUG is not set | 961 | # CONFIG_SCSI_DEBUG is not set |
927 | # CONFIG_SCSI_PMCRAID is not set | 962 | # CONFIG_SCSI_PMCRAID is not set |
963 | # CONFIG_SCSI_PM8001 is not set | ||
928 | # CONFIG_SCSI_SRP is not set | 964 | # CONFIG_SCSI_SRP is not set |
929 | # CONFIG_SCSI_BFA_FC is not set | 965 | # CONFIG_SCSI_BFA_FC is not set |
930 | # CONFIG_SCSI_DH is not set | 966 | # CONFIG_SCSI_DH is not set |
@@ -942,7 +978,7 @@ CONFIG_SCSI_LPFC=m | |||
942 | # | 978 | # |
943 | 979 | ||
944 | # | 980 | # |
945 | # See the help texts for more information. | 981 | # The newer stack is recommended. |
946 | # | 982 | # |
947 | # CONFIG_FIREWIRE is not set | 983 | # CONFIG_FIREWIRE is not set |
948 | # CONFIG_IEEE1394 is not set | 984 | # CONFIG_IEEE1394 is not set |
@@ -1027,8 +1063,11 @@ CONFIG_MV643XX_ETH=y | |||
1027 | # CONFIG_NETDEV_10000 is not set | 1063 | # CONFIG_NETDEV_10000 is not set |
1028 | # CONFIG_TR is not set | 1064 | # CONFIG_TR is not set |
1029 | CONFIG_WLAN=y | 1065 | CONFIG_WLAN=y |
1030 | # CONFIG_WLAN_PRE80211 is not set | 1066 | # CONFIG_AIRO is not set |
1031 | # CONFIG_WLAN_80211 is not set | 1067 | # CONFIG_ATMEL is not set |
1068 | # CONFIG_PRISM54 is not set | ||
1069 | # CONFIG_USB_ZD1201 is not set | ||
1070 | # CONFIG_HOSTAP is not set | ||
1032 | 1071 | ||
1033 | # | 1072 | # |
1034 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 1073 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -1054,6 +1093,7 @@ CONFIG_NETCONSOLE=m | |||
1054 | CONFIG_NETPOLL=y | 1093 | CONFIG_NETPOLL=y |
1055 | CONFIG_NETPOLL_TRAP=y | 1094 | CONFIG_NETPOLL_TRAP=y |
1056 | CONFIG_NET_POLL_CONTROLLER=y | 1095 | CONFIG_NET_POLL_CONTROLLER=y |
1096 | # CONFIG_VMXNET3 is not set | ||
1057 | # CONFIG_ISDN is not set | 1097 | # CONFIG_ISDN is not set |
1058 | # CONFIG_PHONE is not set | 1098 | # CONFIG_PHONE is not set |
1059 | 1099 | ||
@@ -1063,6 +1103,7 @@ CONFIG_NET_POLL_CONTROLLER=y | |||
1063 | CONFIG_INPUT=y | 1103 | CONFIG_INPUT=y |
1064 | # CONFIG_INPUT_FF_MEMLESS is not set | 1104 | # CONFIG_INPUT_FF_MEMLESS is not set |
1065 | # CONFIG_INPUT_POLLDEV is not set | 1105 | # CONFIG_INPUT_POLLDEV is not set |
1106 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
1066 | 1107 | ||
1067 | # | 1108 | # |
1068 | # Userland interfaces | 1109 | # Userland interfaces |
@@ -1121,8 +1162,6 @@ CONFIG_SERIAL_NONSTANDARD=y | |||
1121 | # CONFIG_N_HDLC is not set | 1162 | # CONFIG_N_HDLC is not set |
1122 | # CONFIG_RISCOM8 is not set | 1163 | # CONFIG_RISCOM8 is not set |
1123 | # CONFIG_SPECIALIX is not set | 1164 | # CONFIG_SPECIALIX is not set |
1124 | # CONFIG_SX is not set | ||
1125 | # CONFIG_RIO is not set | ||
1126 | # CONFIG_STALDRV is not set | 1165 | # CONFIG_STALDRV is not set |
1127 | # CONFIG_NOZOMI is not set | 1166 | # CONFIG_NOZOMI is not set |
1128 | 1167 | ||
@@ -1140,6 +1179,7 @@ CONFIG_SERIAL_MPSC_CONSOLE=y | |||
1140 | CONFIG_SERIAL_CORE=y | 1179 | CONFIG_SERIAL_CORE=y |
1141 | CONFIG_SERIAL_CORE_CONSOLE=y | 1180 | CONFIG_SERIAL_CORE_CONSOLE=y |
1142 | # CONFIG_SERIAL_JSM is not set | 1181 | # CONFIG_SERIAL_JSM is not set |
1182 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
1143 | CONFIG_UNIX98_PTYS=y | 1183 | CONFIG_UNIX98_PTYS=y |
1144 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 1184 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
1145 | # CONFIG_LEGACY_PTYS is not set | 1185 | # CONFIG_LEGACY_PTYS is not set |
@@ -1200,11 +1240,6 @@ CONFIG_I2C_MV64XXX=m | |||
1200 | # CONFIG_I2C_TINY_USB is not set | 1240 | # CONFIG_I2C_TINY_USB is not set |
1201 | 1241 | ||
1202 | # | 1242 | # |
1203 | # Graphics adapter I2C/DDC channel drivers | ||
1204 | # | ||
1205 | # CONFIG_I2C_VOODOO3 is not set | ||
1206 | |||
1207 | # | ||
1208 | # Other I2C/SMBus bus drivers | 1243 | # Other I2C/SMBus bus drivers |
1209 | # | 1244 | # |
1210 | # CONFIG_I2C_PCA_PLATFORM is not set | 1245 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -1213,7 +1248,6 @@ CONFIG_I2C_MV64XXX=m | |||
1213 | # | 1248 | # |
1214 | # Miscellaneous I2C Chip support | 1249 | # Miscellaneous I2C Chip support |
1215 | # | 1250 | # |
1216 | # CONFIG_DS1682 is not set | ||
1217 | # CONFIG_SENSORS_TSL2550 is not set | 1251 | # CONFIG_SENSORS_TSL2550 is not set |
1218 | # CONFIG_I2C_DEBUG_CORE is not set | 1252 | # CONFIG_I2C_DEBUG_CORE is not set |
1219 | # CONFIG_I2C_DEBUG_ALGO is not set | 1253 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1259,6 +1293,7 @@ CONFIG_SENSORS_GL518SM=m | |||
1259 | # CONFIG_SENSORS_GL520SM is not set | 1293 | # CONFIG_SENSORS_GL520SM is not set |
1260 | CONFIG_SENSORS_IT87=m | 1294 | CONFIG_SENSORS_IT87=m |
1261 | # CONFIG_SENSORS_LM63 is not set | 1295 | # CONFIG_SENSORS_LM63 is not set |
1296 | # CONFIG_SENSORS_LM73 is not set | ||
1262 | CONFIG_SENSORS_LM75=m | 1297 | CONFIG_SENSORS_LM75=m |
1263 | CONFIG_SENSORS_LM77=m | 1298 | CONFIG_SENSORS_LM77=m |
1264 | CONFIG_SENSORS_LM78=m | 1299 | CONFIG_SENSORS_LM78=m |
@@ -1297,6 +1332,7 @@ CONFIG_SENSORS_W83L785TS=m | |||
1297 | # CONFIG_SENSORS_W83L786NG is not set | 1332 | # CONFIG_SENSORS_W83L786NG is not set |
1298 | CONFIG_SENSORS_W83627HF=m | 1333 | CONFIG_SENSORS_W83627HF=m |
1299 | # CONFIG_SENSORS_W83627EHF is not set | 1334 | # CONFIG_SENSORS_W83627EHF is not set |
1335 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1300 | # CONFIG_THERMAL is not set | 1336 | # CONFIG_THERMAL is not set |
1301 | CONFIG_WATCHDOG=y | 1337 | CONFIG_WATCHDOG=y |
1302 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1338 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -1333,7 +1369,6 @@ CONFIG_SSB_POSSIBLE=y | |||
1333 | # CONFIG_HTC_PASIC3 is not set | 1369 | # CONFIG_HTC_PASIC3 is not set |
1334 | # CONFIG_MFD_TMIO is not set | 1370 | # CONFIG_MFD_TMIO is not set |
1335 | # CONFIG_MFD_WM8400 is not set | 1371 | # CONFIG_MFD_WM8400 is not set |
1336 | # CONFIG_MFD_WM831X is not set | ||
1337 | # CONFIG_MFD_WM8350_I2C is not set | 1372 | # CONFIG_MFD_WM8350_I2C is not set |
1338 | # CONFIG_MFD_PCF50633 is not set | 1373 | # CONFIG_MFD_PCF50633 is not set |
1339 | # CONFIG_AB3100_CORE is not set | 1374 | # CONFIG_AB3100_CORE is not set |
@@ -1392,6 +1427,7 @@ CONFIG_USB_MON=m | |||
1392 | CONFIG_USB_EHCI_HCD=m | 1427 | CONFIG_USB_EHCI_HCD=m |
1393 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1428 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
1394 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1429 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1430 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1395 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1431 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1396 | # CONFIG_USB_OXU210HP_HCD is not set | 1432 | # CONFIG_USB_OXU210HP_HCD is not set |
1397 | # CONFIG_USB_ISP116X_HCD is not set | 1433 | # CONFIG_USB_ISP116X_HCD is not set |
@@ -1923,7 +1959,6 @@ CONFIG_SECURITY=y | |||
1923 | CONFIG_SECURITY_NETWORK=y | 1959 | CONFIG_SECURITY_NETWORK=y |
1924 | # CONFIG_SECURITY_NETWORK_XFRM is not set | 1960 | # CONFIG_SECURITY_NETWORK_XFRM is not set |
1925 | # CONFIG_SECURITY_PATH is not set | 1961 | # CONFIG_SECURITY_PATH is not set |
1926 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
1927 | CONFIG_LSM_MMAP_MIN_ADDR=65536 | 1962 | CONFIG_LSM_MMAP_MIN_ADDR=65536 |
1928 | CONFIG_SECURITY_SELINUX=y | 1963 | CONFIG_SECURITY_SELINUX=y |
1929 | CONFIG_SECURITY_SELINUX_BOOTPARAM=y | 1964 | CONFIG_SECURITY_SELINUX_BOOTPARAM=y |
@@ -1934,6 +1969,11 @@ CONFIG_SECURITY_SELINUX_AVC_STATS=y | |||
1934 | CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 | 1969 | CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 |
1935 | # CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set | 1970 | # CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set |
1936 | # CONFIG_SECURITY_TOMOYO is not set | 1971 | # CONFIG_SECURITY_TOMOYO is not set |
1972 | CONFIG_DEFAULT_SECURITY_SELINUX=y | ||
1973 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1974 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1975 | # CONFIG_DEFAULT_SECURITY_DAC is not set | ||
1976 | CONFIG_DEFAULT_SECURITY="selinux" | ||
1937 | CONFIG_CRYPTO=y | 1977 | CONFIG_CRYPTO=y |
1938 | 1978 | ||
1939 | # | 1979 | # |
diff --git a/arch/powerpc/configs/ep8248e_defconfig b/arch/powerpc/configs/ep8248e_defconfig index ef5edc7203f5..79105413884e 100644 --- a/arch/powerpc/configs/ep8248e_defconfig +++ b/arch/powerpc/configs/ep8248e_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:06 2009 | 4 | # Wed Jan 6 09:23:59 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -36,6 +36,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
38 | CONFIG_IRQ_PER_CPU=y | 38 | CONFIG_IRQ_PER_CPU=y |
39 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | 40 | CONFIG_STACKTRACE_SUPPORT=y |
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | # CONFIG_DEFAULT_UIMAGE is not set | 62 | # CONFIG_DEFAULT_UIMAGE is not set |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | # CONFIG_PPC_DCR_NATIVE is not set | 64 | # CONFIG_PPC_DCR_NATIVE is not set |
63 | # CONFIG_PPC_DCR_MMIO is not set | 65 | # CONFIG_PPC_DCR_MMIO is not set |
64 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
85 | # | 87 | # |
86 | CONFIG_TREE_RCU=y | 88 | CONFIG_TREE_RCU=y |
87 | # CONFIG_TREE_PREEMPT_RCU is not set | 89 | # CONFIG_TREE_PREEMPT_RCU is not set |
90 | # CONFIG_TINY_RCU is not set | ||
88 | # CONFIG_RCU_TRACE is not set | 91 | # CONFIG_RCU_TRACE is not set |
89 | CONFIG_RCU_FANOUT=32 | 92 | CONFIG_RCU_FANOUT=32 |
90 | # CONFIG_RCU_FANOUT_EXACT is not set | 93 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -160,14 +163,41 @@ CONFIG_BLK_DEV_BSG=y | |||
160 | # IO Schedulers | 163 | # IO Schedulers |
161 | # | 164 | # |
162 | CONFIG_IOSCHED_NOOP=y | 165 | CONFIG_IOSCHED_NOOP=y |
163 | # CONFIG_IOSCHED_AS is not set | ||
164 | CONFIG_IOSCHED_DEADLINE=y | 166 | CONFIG_IOSCHED_DEADLINE=y |
165 | # CONFIG_IOSCHED_CFQ is not set | 167 | # CONFIG_IOSCHED_CFQ is not set |
166 | # CONFIG_DEFAULT_AS is not set | ||
167 | CONFIG_DEFAULT_DEADLINE=y | 168 | CONFIG_DEFAULT_DEADLINE=y |
168 | # CONFIG_DEFAULT_CFQ is not set | 169 | # CONFIG_DEFAULT_CFQ is not set |
169 | # CONFIG_DEFAULT_NOOP is not set | 170 | # CONFIG_DEFAULT_NOOP is not set |
170 | CONFIG_DEFAULT_IOSCHED="deadline" | 171 | CONFIG_DEFAULT_IOSCHED="deadline" |
172 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
173 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
174 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
175 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
176 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
177 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
178 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
179 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
180 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
181 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
182 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
183 | # CONFIG_INLINE_READ_LOCK is not set | ||
184 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
185 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
186 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
187 | CONFIG_INLINE_READ_UNLOCK=y | ||
188 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
189 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
190 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
191 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
192 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
193 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
194 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
195 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
196 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
197 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
198 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
199 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
200 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
171 | # CONFIG_FREEZER is not set | 201 | # CONFIG_FREEZER is not set |
172 | 202 | ||
173 | # | 203 | # |
@@ -237,6 +267,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | |||
237 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 267 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
238 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 268 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
239 | # CONFIG_CRASH_DUMP is not set | 269 | # CONFIG_CRASH_DUMP is not set |
270 | CONFIG_SPARSE_IRQ=y | ||
240 | CONFIG_MAX_ACTIVE_REGIONS=32 | 271 | CONFIG_MAX_ACTIVE_REGIONS=32 |
241 | CONFIG_ARCH_FLATMEM_ENABLE=y | 272 | CONFIG_ARCH_FLATMEM_ENABLE=y |
242 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 273 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -249,8 +280,6 @@ CONFIG_MIGRATION=y | |||
249 | CONFIG_ZONE_DMA_FLAG=1 | 280 | CONFIG_ZONE_DMA_FLAG=1 |
250 | CONFIG_BOUNCE=y | 281 | CONFIG_BOUNCE=y |
251 | CONFIG_VIRT_TO_BUS=y | 282 | CONFIG_VIRT_TO_BUS=y |
252 | CONFIG_HAVE_MLOCK=y | ||
253 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
254 | # CONFIG_KSM is not set | 283 | # CONFIG_KSM is not set |
255 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 284 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
256 | CONFIG_PPC_4K_PAGES=y | 285 | CONFIG_PPC_4K_PAGES=y |
@@ -400,9 +429,6 @@ CONFIG_NETFILTER_ADVANCED=y | |||
400 | # CONFIG_BT is not set | 429 | # CONFIG_BT is not set |
401 | CONFIG_WIRELESS=y | 430 | CONFIG_WIRELESS=y |
402 | # CONFIG_CFG80211 is not set | 431 | # CONFIG_CFG80211 is not set |
403 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
404 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
405 | # CONFIG_WIRELESS_EXT is not set | ||
406 | # CONFIG_LIB80211 is not set | 432 | # CONFIG_LIB80211 is not set |
407 | 433 | ||
408 | # | 434 | # |
@@ -523,6 +549,10 @@ CONFIG_BLK_DEV=y | |||
523 | # CONFIG_BLK_DEV_COW_COMMON is not set | 549 | # CONFIG_BLK_DEV_COW_COMMON is not set |
524 | CONFIG_BLK_DEV_LOOP=y | 550 | CONFIG_BLK_DEV_LOOP=y |
525 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 551 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
552 | |||
553 | # | ||
554 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
555 | # | ||
526 | # CONFIG_BLK_DEV_NBD is not set | 556 | # CONFIG_BLK_DEV_NBD is not set |
527 | # CONFIG_BLK_DEV_SX8 is not set | 557 | # CONFIG_BLK_DEV_SX8 is not set |
528 | # CONFIG_BLK_DEV_RAM is not set | 558 | # CONFIG_BLK_DEV_RAM is not set |
@@ -553,7 +583,7 @@ CONFIG_HAVE_IDE=y | |||
553 | # | 583 | # |
554 | 584 | ||
555 | # | 585 | # |
556 | # See the help texts for more information. | 586 | # The newer stack is recommended. |
557 | # | 587 | # |
558 | # CONFIG_FIREWIRE is not set | 588 | # CONFIG_FIREWIRE is not set |
559 | # CONFIG_IEEE1394 is not set | 589 | # CONFIG_IEEE1394 is not set |
@@ -658,8 +688,9 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
658 | # CONFIG_BE2NET is not set | 688 | # CONFIG_BE2NET is not set |
659 | # CONFIG_TR is not set | 689 | # CONFIG_TR is not set |
660 | CONFIG_WLAN=y | 690 | CONFIG_WLAN=y |
661 | # CONFIG_WLAN_PRE80211 is not set | 691 | # CONFIG_AIRO is not set |
662 | # CONFIG_WLAN_80211 is not set | 692 | # CONFIG_ATMEL is not set |
693 | # CONFIG_HOSTAP is not set | ||
663 | 694 | ||
664 | # | 695 | # |
665 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 696 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -670,6 +701,7 @@ CONFIG_WLAN=y | |||
670 | # CONFIG_SLIP is not set | 701 | # CONFIG_SLIP is not set |
671 | # CONFIG_NETPOLL is not set | 702 | # CONFIG_NETPOLL is not set |
672 | # CONFIG_NET_POLL_CONTROLLER is not set | 703 | # CONFIG_NET_POLL_CONTROLLER is not set |
704 | # CONFIG_VMXNET3 is not set | ||
673 | # CONFIG_ISDN is not set | 705 | # CONFIG_ISDN is not set |
674 | # CONFIG_PHONE is not set | 706 | # CONFIG_PHONE is not set |
675 | 707 | ||
@@ -705,6 +737,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
705 | CONFIG_SERIAL_CPM=y | 737 | CONFIG_SERIAL_CPM=y |
706 | CONFIG_SERIAL_CPM_CONSOLE=y | 738 | CONFIG_SERIAL_CPM_CONSOLE=y |
707 | # CONFIG_SERIAL_JSM is not set | 739 | # CONFIG_SERIAL_JSM is not set |
740 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
708 | CONFIG_UNIX98_PTYS=y | 741 | CONFIG_UNIX98_PTYS=y |
709 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 742 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
710 | CONFIG_LEGACY_PTYS=y | 743 | CONFIG_LEGACY_PTYS=y |
@@ -741,6 +774,7 @@ CONFIG_GPIOLIB=y | |||
741 | # | 774 | # |
742 | # PCI GPIO expanders: | 775 | # PCI GPIO expanders: |
743 | # | 776 | # |
777 | # CONFIG_GPIO_CS5535 is not set | ||
744 | # CONFIG_GPIO_BT8XX is not set | 778 | # CONFIG_GPIO_BT8XX is not set |
745 | # CONFIG_GPIO_LANGWELL is not set | 779 | # CONFIG_GPIO_LANGWELL is not set |
746 | 780 | ||
@@ -1061,7 +1095,11 @@ CONFIG_BDI_SWITCH=y | |||
1061 | # CONFIG_KEYS is not set | 1095 | # CONFIG_KEYS is not set |
1062 | # CONFIG_SECURITY is not set | 1096 | # CONFIG_SECURITY is not set |
1063 | # CONFIG_SECURITYFS is not set | 1097 | # CONFIG_SECURITYFS is not set |
1064 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1098 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1099 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1100 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1101 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1102 | CONFIG_DEFAULT_SECURITY="" | ||
1065 | CONFIG_CRYPTO=y | 1103 | CONFIG_CRYPTO=y |
1066 | 1104 | ||
1067 | # | 1105 | # |
diff --git a/arch/powerpc/configs/ep88xc_defconfig b/arch/powerpc/configs/ep88xc_defconfig index 73ef9be41280..58f7ca71a59d 100644 --- a/arch/powerpc/configs/ep88xc_defconfig +++ b/arch/powerpc/configs/ep88xc_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:07 2009 | 4 | # Wed Jan 6 09:24:00 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -32,6 +32,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
33 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 33 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
34 | CONFIG_IRQ_PER_CPU=y | 34 | CONFIG_IRQ_PER_CPU=y |
35 | CONFIG_NR_IRQS=512 | ||
35 | CONFIG_STACKTRACE_SUPPORT=y | 36 | CONFIG_STACKTRACE_SUPPORT=y |
36 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 37 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
37 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 38 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -54,6 +55,7 @@ CONFIG_AUDIT_ARCH=y | |||
54 | CONFIG_GENERIC_BUG=y | 55 | CONFIG_GENERIC_BUG=y |
55 | CONFIG_DTC=y | 56 | CONFIG_DTC=y |
56 | # CONFIG_DEFAULT_UIMAGE is not set | 57 | # CONFIG_DEFAULT_UIMAGE is not set |
58 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
57 | # CONFIG_PPC_DCR_NATIVE is not set | 59 | # CONFIG_PPC_DCR_NATIVE is not set |
58 | # CONFIG_PPC_DCR_MMIO is not set | 60 | # CONFIG_PPC_DCR_MMIO is not set |
59 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 61 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -81,6 +83,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
81 | # | 83 | # |
82 | CONFIG_TREE_RCU=y | 84 | CONFIG_TREE_RCU=y |
83 | # CONFIG_TREE_PREEMPT_RCU is not set | 85 | # CONFIG_TREE_PREEMPT_RCU is not set |
86 | # CONFIG_TINY_RCU is not set | ||
84 | # CONFIG_RCU_TRACE is not set | 87 | # CONFIG_RCU_TRACE is not set |
85 | CONFIG_RCU_FANOUT=32 | 88 | CONFIG_RCU_FANOUT=32 |
86 | # CONFIG_RCU_FANOUT_EXACT is not set | 89 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -159,14 +162,41 @@ CONFIG_LBDAF=y | |||
159 | # IO Schedulers | 162 | # IO Schedulers |
160 | # | 163 | # |
161 | CONFIG_IOSCHED_NOOP=y | 164 | CONFIG_IOSCHED_NOOP=y |
162 | # CONFIG_IOSCHED_AS is not set | ||
163 | CONFIG_IOSCHED_DEADLINE=y | 165 | CONFIG_IOSCHED_DEADLINE=y |
164 | # CONFIG_IOSCHED_CFQ is not set | 166 | # CONFIG_IOSCHED_CFQ is not set |
165 | # CONFIG_DEFAULT_AS is not set | ||
166 | CONFIG_DEFAULT_DEADLINE=y | 167 | CONFIG_DEFAULT_DEADLINE=y |
167 | # CONFIG_DEFAULT_CFQ is not set | 168 | # CONFIG_DEFAULT_CFQ is not set |
168 | # CONFIG_DEFAULT_NOOP is not set | 169 | # CONFIG_DEFAULT_NOOP is not set |
169 | CONFIG_DEFAULT_IOSCHED="deadline" | 170 | CONFIG_DEFAULT_IOSCHED="deadline" |
171 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
172 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
173 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
174 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
175 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
176 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
177 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
178 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
179 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
180 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
181 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
182 | # CONFIG_INLINE_READ_LOCK is not set | ||
183 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
184 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
185 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
186 | CONFIG_INLINE_READ_UNLOCK=y | ||
187 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
188 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
189 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
190 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
191 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
192 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
193 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
194 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
195 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
196 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
197 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
198 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
199 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
170 | # CONFIG_FREEZER is not set | 200 | # CONFIG_FREEZER is not set |
171 | 201 | ||
172 | # | 202 | # |
@@ -241,6 +271,7 @@ CONFIG_8XX_MINIMAL_FPEMU=y | |||
241 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 271 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
242 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 272 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
243 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 273 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
274 | CONFIG_SPARSE_IRQ=y | ||
244 | CONFIG_MAX_ACTIVE_REGIONS=32 | 275 | CONFIG_MAX_ACTIVE_REGIONS=32 |
245 | CONFIG_ARCH_FLATMEM_ENABLE=y | 276 | CONFIG_ARCH_FLATMEM_ENABLE=y |
246 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 277 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -257,8 +288,6 @@ CONFIG_MIGRATION=y | |||
257 | CONFIG_ZONE_DMA_FLAG=1 | 288 | CONFIG_ZONE_DMA_FLAG=1 |
258 | CONFIG_BOUNCE=y | 289 | CONFIG_BOUNCE=y |
259 | CONFIG_VIRT_TO_BUS=y | 290 | CONFIG_VIRT_TO_BUS=y |
260 | CONFIG_HAVE_MLOCK=y | ||
261 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
262 | # CONFIG_KSM is not set | 291 | # CONFIG_KSM is not set |
263 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 292 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
264 | CONFIG_PPC_4K_PAGES=y | 293 | CONFIG_PPC_4K_PAGES=y |
@@ -372,9 +401,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
372 | # CONFIG_AF_RXRPC is not set | 401 | # CONFIG_AF_RXRPC is not set |
373 | CONFIG_WIRELESS=y | 402 | CONFIG_WIRELESS=y |
374 | # CONFIG_CFG80211 is not set | 403 | # CONFIG_CFG80211 is not set |
375 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
376 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
377 | # CONFIG_WIRELESS_EXT is not set | ||
378 | # CONFIG_LIB80211 is not set | 404 | # CONFIG_LIB80211 is not set |
379 | 405 | ||
380 | # | 406 | # |
@@ -545,8 +571,7 @@ CONFIG_FS_ENET_MDIO_FEC=y | |||
545 | # CONFIG_NETDEV_1000 is not set | 571 | # CONFIG_NETDEV_1000 is not set |
546 | # CONFIG_NETDEV_10000 is not set | 572 | # CONFIG_NETDEV_10000 is not set |
547 | CONFIG_WLAN=y | 573 | CONFIG_WLAN=y |
548 | # CONFIG_WLAN_PRE80211 is not set | 574 | # CONFIG_HOSTAP is not set |
549 | # CONFIG_WLAN_80211 is not set | ||
550 | 575 | ||
551 | # | 576 | # |
552 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 577 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -591,6 +616,7 @@ CONFIG_SERIAL_CORE=y | |||
591 | CONFIG_SERIAL_CORE_CONSOLE=y | 616 | CONFIG_SERIAL_CORE_CONSOLE=y |
592 | CONFIG_SERIAL_CPM=y | 617 | CONFIG_SERIAL_CPM=y |
593 | CONFIG_SERIAL_CPM_CONSOLE=y | 618 | CONFIG_SERIAL_CPM_CONSOLE=y |
619 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
594 | CONFIG_UNIX98_PTYS=y | 620 | CONFIG_UNIX98_PTYS=y |
595 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 621 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
596 | # CONFIG_LEGACY_PTYS is not set | 622 | # CONFIG_LEGACY_PTYS is not set |
@@ -851,6 +877,7 @@ CONFIG_DEBUG_INFO=y | |||
851 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | 877 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set |
852 | # CONFIG_FAULT_INJECTION is not set | 878 | # CONFIG_FAULT_INJECTION is not set |
853 | # CONFIG_LATENCYTOP is not set | 879 | # CONFIG_LATENCYTOP is not set |
880 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
854 | # CONFIG_DEBUG_PAGEALLOC is not set | 881 | # CONFIG_DEBUG_PAGEALLOC is not set |
855 | CONFIG_HAVE_FUNCTION_TRACER=y | 882 | CONFIG_HAVE_FUNCTION_TRACER=y |
856 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | 883 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y |
@@ -893,7 +920,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
893 | # CONFIG_KEYS is not set | 920 | # CONFIG_KEYS is not set |
894 | # CONFIG_SECURITY is not set | 921 | # CONFIG_SECURITY is not set |
895 | # CONFIG_SECURITYFS is not set | 922 | # CONFIG_SECURITYFS is not set |
896 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 923 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
924 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
925 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
926 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
927 | CONFIG_DEFAULT_SECURITY="" | ||
897 | # CONFIG_CRYPTO is not set | 928 | # CONFIG_CRYPTO is not set |
898 | CONFIG_PPC_CLOCK=y | 929 | CONFIG_PPC_CLOCK=y |
899 | CONFIG_PPC_LIB_RHEAP=y | 930 | CONFIG_PPC_LIB_RHEAP=y |
diff --git a/arch/powerpc/configs/linkstation_defconfig b/arch/powerpc/configs/linkstation_defconfig index 63c3e8de8f16..9a0c981277eb 100644 --- a/arch/powerpc/configs/linkstation_defconfig +++ b/arch/powerpc/configs/linkstation_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:08 2009 | 4 | # Wed Jan 6 09:24:01 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -36,6 +36,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
38 | CONFIG_IRQ_PER_CPU=y | 38 | CONFIG_IRQ_PER_CPU=y |
39 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | 40 | CONFIG_STACKTRACE_SUPPORT=y |
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y | |||
58 | CONFIG_GENERIC_BUG=y | 59 | CONFIG_GENERIC_BUG=y |
59 | CONFIG_DTC=y | 60 | CONFIG_DTC=y |
60 | CONFIG_DEFAULT_UIMAGE=y | 61 | CONFIG_DEFAULT_UIMAGE=y |
62 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
61 | # CONFIG_PPC_DCR_NATIVE is not set | 63 | # CONFIG_PPC_DCR_NATIVE is not set |
62 | # CONFIG_PPC_DCR_MMIO is not set | 64 | # CONFIG_PPC_DCR_MMIO is not set |
63 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 65 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -86,6 +88,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y | |||
86 | # | 88 | # |
87 | CONFIG_TREE_RCU=y | 89 | CONFIG_TREE_RCU=y |
88 | # CONFIG_TREE_PREEMPT_RCU is not set | 90 | # CONFIG_TREE_PREEMPT_RCU is not set |
91 | # CONFIG_TINY_RCU is not set | ||
89 | # CONFIG_RCU_TRACE is not set | 92 | # CONFIG_RCU_TRACE is not set |
90 | CONFIG_RCU_FANOUT=32 | 93 | CONFIG_RCU_FANOUT=32 |
91 | # CONFIG_RCU_FANOUT_EXACT is not set | 94 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -181,14 +184,41 @@ CONFIG_LBDAF=y | |||
181 | # IO Schedulers | 184 | # IO Schedulers |
182 | # | 185 | # |
183 | CONFIG_IOSCHED_NOOP=y | 186 | CONFIG_IOSCHED_NOOP=y |
184 | CONFIG_IOSCHED_AS=y | ||
185 | CONFIG_IOSCHED_DEADLINE=y | 187 | CONFIG_IOSCHED_DEADLINE=y |
186 | CONFIG_IOSCHED_CFQ=y | 188 | CONFIG_IOSCHED_CFQ=y |
187 | CONFIG_DEFAULT_AS=y | ||
188 | # CONFIG_DEFAULT_DEADLINE is not set | 189 | # CONFIG_DEFAULT_DEADLINE is not set |
189 | # CONFIG_DEFAULT_CFQ is not set | 190 | CONFIG_DEFAULT_CFQ=y |
190 | # CONFIG_DEFAULT_NOOP is not set | 191 | # CONFIG_DEFAULT_NOOP is not set |
191 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 192 | CONFIG_DEFAULT_IOSCHED="cfq" |
193 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
194 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
195 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
196 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
197 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
198 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
199 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
200 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
201 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
202 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
203 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
204 | # CONFIG_INLINE_READ_LOCK is not set | ||
205 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
206 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
207 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
208 | CONFIG_INLINE_READ_UNLOCK=y | ||
209 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
210 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
211 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
212 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
213 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
214 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
215 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
216 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
217 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
218 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
219 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
220 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
221 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
192 | # CONFIG_FREEZER is not set | 222 | # CONFIG_FREEZER is not set |
193 | 223 | ||
194 | # | 224 | # |
@@ -215,6 +245,8 @@ CONFIG_LINKSTATION=y | |||
215 | CONFIG_MPC10X_BRIDGE=y | 245 | CONFIG_MPC10X_BRIDGE=y |
216 | CONFIG_MPC10X_OPENPIC=y | 246 | CONFIG_MPC10X_OPENPIC=y |
217 | # CONFIG_MPC10X_STORE_GATHERING is not set | 247 | # CONFIG_MPC10X_STORE_GATHERING is not set |
248 | # CONFIG_GAMECUBE is not set | ||
249 | # CONFIG_WII is not set | ||
218 | # CONFIG_AMIGAONE is not set | 250 | # CONFIG_AMIGAONE is not set |
219 | CONFIG_PPC_OF_BOOT_TRAMPOLINE=y | 251 | CONFIG_PPC_OF_BOOT_TRAMPOLINE=y |
220 | # CONFIG_IPIC is not set | 252 | # CONFIG_IPIC is not set |
@@ -261,6 +293,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
261 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 293 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
262 | # CONFIG_KEXEC is not set | 294 | # CONFIG_KEXEC is not set |
263 | # CONFIG_CRASH_DUMP is not set | 295 | # CONFIG_CRASH_DUMP is not set |
296 | CONFIG_SPARSE_IRQ=y | ||
264 | CONFIG_MAX_ACTIVE_REGIONS=32 | 297 | CONFIG_MAX_ACTIVE_REGIONS=32 |
265 | CONFIG_ARCH_FLATMEM_ENABLE=y | 298 | CONFIG_ARCH_FLATMEM_ENABLE=y |
266 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 299 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -277,8 +310,6 @@ CONFIG_MIGRATION=y | |||
277 | CONFIG_ZONE_DMA_FLAG=1 | 310 | CONFIG_ZONE_DMA_FLAG=1 |
278 | CONFIG_BOUNCE=y | 311 | CONFIG_BOUNCE=y |
279 | CONFIG_VIRT_TO_BUS=y | 312 | CONFIG_VIRT_TO_BUS=y |
280 | CONFIG_HAVE_MLOCK=y | ||
281 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
282 | # CONFIG_KSM is not set | 313 | # CONFIG_KSM is not set |
283 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 314 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
284 | CONFIG_PPC_4K_PAGES=y | 315 | CONFIG_PPC_4K_PAGES=y |
@@ -517,10 +548,6 @@ CONFIG_IP_NF_ARP_MANGLE=m | |||
517 | # CONFIG_AF_RXRPC is not set | 548 | # CONFIG_AF_RXRPC is not set |
518 | CONFIG_WIRELESS=y | 549 | CONFIG_WIRELESS=y |
519 | # CONFIG_CFG80211 is not set | 550 | # CONFIG_CFG80211 is not set |
520 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
521 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
522 | CONFIG_WIRELESS_EXT=y | ||
523 | CONFIG_WIRELESS_EXT_SYSFS=y | ||
524 | # CONFIG_LIB80211 is not set | 551 | # CONFIG_LIB80211 is not set |
525 | 552 | ||
526 | # | 553 | # |
@@ -650,6 +677,10 @@ CONFIG_BLK_DEV=y | |||
650 | # CONFIG_BLK_DEV_COW_COMMON is not set | 677 | # CONFIG_BLK_DEV_COW_COMMON is not set |
651 | CONFIG_BLK_DEV_LOOP=y | 678 | CONFIG_BLK_DEV_LOOP=y |
652 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 679 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
680 | |||
681 | # | ||
682 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
683 | # | ||
653 | # CONFIG_BLK_DEV_NBD is not set | 684 | # CONFIG_BLK_DEV_NBD is not set |
654 | # CONFIG_BLK_DEV_SX8 is not set | 685 | # CONFIG_BLK_DEV_SX8 is not set |
655 | # CONFIG_BLK_DEV_UB is not set | 686 | # CONFIG_BLK_DEV_UB is not set |
@@ -661,6 +692,7 @@ CONFIG_BLK_DEV_RAM_SIZE=8192 | |||
661 | # CONFIG_ATA_OVER_ETH is not set | 692 | # CONFIG_ATA_OVER_ETH is not set |
662 | # CONFIG_BLK_DEV_HD is not set | 693 | # CONFIG_BLK_DEV_HD is not set |
663 | CONFIG_MISC_DEVICES=y | 694 | CONFIG_MISC_DEVICES=y |
695 | # CONFIG_AD525X_DPOT is not set | ||
664 | # CONFIG_PHANTOM is not set | 696 | # CONFIG_PHANTOM is not set |
665 | # CONFIG_SGI_IOC4 is not set | 697 | # CONFIG_SGI_IOC4 is not set |
666 | # CONFIG_TIFM_CORE is not set | 698 | # CONFIG_TIFM_CORE is not set |
@@ -668,6 +700,7 @@ CONFIG_MISC_DEVICES=y | |||
668 | # CONFIG_ENCLOSURE_SERVICES is not set | 700 | # CONFIG_ENCLOSURE_SERVICES is not set |
669 | # CONFIG_HP_ILO is not set | 701 | # CONFIG_HP_ILO is not set |
670 | # CONFIG_ISL29003 is not set | 702 | # CONFIG_ISL29003 is not set |
703 | # CONFIG_DS1682 is not set | ||
671 | # CONFIG_C2PORT is not set | 704 | # CONFIG_C2PORT is not set |
672 | 705 | ||
673 | # | 706 | # |
@@ -720,7 +753,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
720 | # CONFIG_SCSI_BNX2_ISCSI is not set | 753 | # CONFIG_SCSI_BNX2_ISCSI is not set |
721 | # CONFIG_BE2ISCSI is not set | 754 | # CONFIG_BE2ISCSI is not set |
722 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 755 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
756 | # CONFIG_SCSI_HPSA is not set | ||
723 | # CONFIG_SCSI_3W_9XXX is not set | 757 | # CONFIG_SCSI_3W_9XXX is not set |
758 | # CONFIG_SCSI_3W_SAS is not set | ||
724 | # CONFIG_SCSI_ACARD is not set | 759 | # CONFIG_SCSI_ACARD is not set |
725 | # CONFIG_SCSI_AACRAID is not set | 760 | # CONFIG_SCSI_AACRAID is not set |
726 | # CONFIG_SCSI_AIC7XXX is not set | 761 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -759,6 +794,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
759 | # CONFIG_SCSI_NSP32 is not set | 794 | # CONFIG_SCSI_NSP32 is not set |
760 | # CONFIG_SCSI_DEBUG is not set | 795 | # CONFIG_SCSI_DEBUG is not set |
761 | # CONFIG_SCSI_PMCRAID is not set | 796 | # CONFIG_SCSI_PMCRAID is not set |
797 | # CONFIG_SCSI_PM8001 is not set | ||
762 | # CONFIG_SCSI_SRP is not set | 798 | # CONFIG_SCSI_SRP is not set |
763 | # CONFIG_SCSI_BFA_FC is not set | 799 | # CONFIG_SCSI_BFA_FC is not set |
764 | # CONFIG_SCSI_DH is not set | 800 | # CONFIG_SCSI_DH is not set |
@@ -814,15 +850,16 @@ CONFIG_PATA_IT821X=y | |||
814 | # CONFIG_PATA_NS87415 is not set | 850 | # CONFIG_PATA_NS87415 is not set |
815 | # CONFIG_PATA_OPTI is not set | 851 | # CONFIG_PATA_OPTI is not set |
816 | # CONFIG_PATA_OPTIDMA is not set | 852 | # CONFIG_PATA_OPTIDMA is not set |
853 | # CONFIG_PATA_PDC2027X is not set | ||
817 | # CONFIG_PATA_PDC_OLD is not set | 854 | # CONFIG_PATA_PDC_OLD is not set |
818 | # CONFIG_PATA_RADISYS is not set | 855 | # CONFIG_PATA_RADISYS is not set |
819 | # CONFIG_PATA_RDC is not set | 856 | # CONFIG_PATA_RDC is not set |
820 | # CONFIG_PATA_RZ1000 is not set | 857 | # CONFIG_PATA_RZ1000 is not set |
821 | # CONFIG_PATA_SC1200 is not set | 858 | # CONFIG_PATA_SC1200 is not set |
822 | # CONFIG_PATA_SERVERWORKS is not set | 859 | # CONFIG_PATA_SERVERWORKS is not set |
823 | # CONFIG_PATA_PDC2027X is not set | ||
824 | CONFIG_PATA_SIL680=y | 860 | CONFIG_PATA_SIL680=y |
825 | # CONFIG_PATA_SIS is not set | 861 | # CONFIG_PATA_SIS is not set |
862 | # CONFIG_PATA_TOSHIBA is not set | ||
826 | # CONFIG_PATA_VIA is not set | 863 | # CONFIG_PATA_VIA is not set |
827 | # CONFIG_PATA_WINBOND is not set | 864 | # CONFIG_PATA_WINBOND is not set |
828 | # CONFIG_PATA_PLATFORM is not set | 865 | # CONFIG_PATA_PLATFORM is not set |
@@ -839,7 +876,7 @@ CONFIG_PATA_SIL680=y | |||
839 | # | 876 | # |
840 | 877 | ||
841 | # | 878 | # |
842 | # See the help texts for more information. | 879 | # The newer stack is recommended. |
843 | # | 880 | # |
844 | # CONFIG_FIREWIRE is not set | 881 | # CONFIG_FIREWIRE is not set |
845 | # CONFIG_IEEE1394 is not set | 882 | # CONFIG_IEEE1394 is not set |
@@ -934,8 +971,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
934 | # CONFIG_BE2NET is not set | 971 | # CONFIG_BE2NET is not set |
935 | # CONFIG_TR is not set | 972 | # CONFIG_TR is not set |
936 | CONFIG_WLAN=y | 973 | CONFIG_WLAN=y |
937 | # CONFIG_WLAN_PRE80211 is not set | 974 | # CONFIG_AIRO is not set |
938 | # CONFIG_WLAN_80211 is not set | 975 | # CONFIG_ATMEL is not set |
976 | # CONFIG_PRISM54 is not set | ||
977 | # CONFIG_USB_ZD1201 is not set | ||
978 | # CONFIG_HOSTAP is not set | ||
939 | 979 | ||
940 | # | 980 | # |
941 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 981 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -960,6 +1000,7 @@ CONFIG_NETCONSOLE=y | |||
960 | CONFIG_NETPOLL=y | 1000 | CONFIG_NETPOLL=y |
961 | # CONFIG_NETPOLL_TRAP is not set | 1001 | # CONFIG_NETPOLL_TRAP is not set |
962 | CONFIG_NET_POLL_CONTROLLER=y | 1002 | CONFIG_NET_POLL_CONTROLLER=y |
1003 | # CONFIG_VMXNET3 is not set | ||
963 | # CONFIG_ISDN is not set | 1004 | # CONFIG_ISDN is not set |
964 | # CONFIG_PHONE is not set | 1005 | # CONFIG_PHONE is not set |
965 | 1006 | ||
@@ -969,6 +1010,7 @@ CONFIG_NET_POLL_CONTROLLER=y | |||
969 | CONFIG_INPUT=y | 1010 | CONFIG_INPUT=y |
970 | # CONFIG_INPUT_FF_MEMLESS is not set | 1011 | # CONFIG_INPUT_FF_MEMLESS is not set |
971 | # CONFIG_INPUT_POLLDEV is not set | 1012 | # CONFIG_INPUT_POLLDEV is not set |
1013 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
972 | 1014 | ||
973 | # | 1015 | # |
974 | # Userland interfaces | 1016 | # Userland interfaces |
@@ -1007,6 +1049,7 @@ CONFIG_SERIO_SERPORT=y | |||
1007 | # CONFIG_SERIO_PCIPS2 is not set | 1049 | # CONFIG_SERIO_PCIPS2 is not set |
1008 | # CONFIG_SERIO_RAW is not set | 1050 | # CONFIG_SERIO_RAW is not set |
1009 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | 1051 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set |
1052 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
1010 | # CONFIG_GAMEPORT is not set | 1053 | # CONFIG_GAMEPORT is not set |
1011 | 1054 | ||
1012 | # | 1055 | # |
@@ -1039,6 +1082,7 @@ CONFIG_SERIAL_CORE=y | |||
1039 | CONFIG_SERIAL_CORE_CONSOLE=y | 1082 | CONFIG_SERIAL_CORE_CONSOLE=y |
1040 | # CONFIG_SERIAL_JSM is not set | 1083 | # CONFIG_SERIAL_JSM is not set |
1041 | # CONFIG_SERIAL_OF_PLATFORM is not set | 1084 | # CONFIG_SERIAL_OF_PLATFORM is not set |
1085 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
1042 | CONFIG_UNIX98_PTYS=y | 1086 | CONFIG_UNIX98_PTYS=y |
1043 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 1087 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
1044 | CONFIG_LEGACY_PTYS=y | 1088 | CONFIG_LEGACY_PTYS=y |
@@ -1096,11 +1140,6 @@ CONFIG_I2C_MPC=y | |||
1096 | # CONFIG_I2C_TINY_USB is not set | 1140 | # CONFIG_I2C_TINY_USB is not set |
1097 | 1141 | ||
1098 | # | 1142 | # |
1099 | # Graphics adapter I2C/DDC channel drivers | ||
1100 | # | ||
1101 | # CONFIG_I2C_VOODOO3 is not set | ||
1102 | |||
1103 | # | ||
1104 | # Other I2C/SMBus bus drivers | 1143 | # Other I2C/SMBus bus drivers |
1105 | # | 1144 | # |
1106 | # CONFIG_I2C_PCA_PLATFORM is not set | 1145 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -1109,7 +1148,6 @@ CONFIG_I2C_MPC=y | |||
1109 | # | 1148 | # |
1110 | # Miscellaneous I2C Chip support | 1149 | # Miscellaneous I2C Chip support |
1111 | # | 1150 | # |
1112 | # CONFIG_DS1682 is not set | ||
1113 | # CONFIG_SENSORS_TSL2550 is not set | 1151 | # CONFIG_SENSORS_TSL2550 is not set |
1114 | # CONFIG_I2C_DEBUG_CORE is not set | 1152 | # CONFIG_I2C_DEBUG_CORE is not set |
1115 | # CONFIG_I2C_DEBUG_ALGO is not set | 1153 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1155,6 +1193,7 @@ CONFIG_HWMON=y | |||
1155 | # CONFIG_SENSORS_GL520SM is not set | 1193 | # CONFIG_SENSORS_GL520SM is not set |
1156 | # CONFIG_SENSORS_IT87 is not set | 1194 | # CONFIG_SENSORS_IT87 is not set |
1157 | # CONFIG_SENSORS_LM63 is not set | 1195 | # CONFIG_SENSORS_LM63 is not set |
1196 | # CONFIG_SENSORS_LM73 is not set | ||
1158 | # CONFIG_SENSORS_LM75 is not set | 1197 | # CONFIG_SENSORS_LM75 is not set |
1159 | # CONFIG_SENSORS_LM77 is not set | 1198 | # CONFIG_SENSORS_LM77 is not set |
1160 | # CONFIG_SENSORS_LM78 is not set | 1199 | # CONFIG_SENSORS_LM78 is not set |
@@ -1193,6 +1232,7 @@ CONFIG_HWMON=y | |||
1193 | # CONFIG_SENSORS_W83L786NG is not set | 1232 | # CONFIG_SENSORS_W83L786NG is not set |
1194 | # CONFIG_SENSORS_W83627HF is not set | 1233 | # CONFIG_SENSORS_W83627HF is not set |
1195 | # CONFIG_SENSORS_W83627EHF is not set | 1234 | # CONFIG_SENSORS_W83627EHF is not set |
1235 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1196 | # CONFIG_THERMAL is not set | 1236 | # CONFIG_THERMAL is not set |
1197 | # CONFIG_WATCHDOG is not set | 1237 | # CONFIG_WATCHDOG is not set |
1198 | CONFIG_SSB_POSSIBLE=y | 1238 | CONFIG_SSB_POSSIBLE=y |
@@ -1211,11 +1251,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1211 | # CONFIG_TWL4030_CORE is not set | 1251 | # CONFIG_TWL4030_CORE is not set |
1212 | # CONFIG_MFD_TMIO is not set | 1252 | # CONFIG_MFD_TMIO is not set |
1213 | # CONFIG_PMIC_DA903X is not set | 1253 | # CONFIG_PMIC_DA903X is not set |
1254 | # CONFIG_PMIC_ADP5520 is not set | ||
1214 | # CONFIG_MFD_WM8400 is not set | 1255 | # CONFIG_MFD_WM8400 is not set |
1215 | # CONFIG_MFD_WM831X is not set | 1256 | # CONFIG_MFD_WM831X is not set |
1216 | # CONFIG_MFD_WM8350_I2C is not set | 1257 | # CONFIG_MFD_WM8350_I2C is not set |
1217 | # CONFIG_MFD_PCF50633 is not set | 1258 | # CONFIG_MFD_PCF50633 is not set |
1218 | # CONFIG_AB3100_CORE is not set | 1259 | # CONFIG_AB3100_CORE is not set |
1260 | # CONFIG_MFD_88PM8607 is not set | ||
1219 | # CONFIG_REGULATOR is not set | 1261 | # CONFIG_REGULATOR is not set |
1220 | # CONFIG_MEDIA_SUPPORT is not set | 1262 | # CONFIG_MEDIA_SUPPORT is not set |
1221 | 1263 | ||
@@ -1281,6 +1323,7 @@ CONFIG_USB_MON=y | |||
1281 | CONFIG_USB_EHCI_HCD=y | 1323 | CONFIG_USB_EHCI_HCD=y |
1282 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1324 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1283 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1325 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1326 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1284 | # CONFIG_USB_EHCI_FSL is not set | 1327 | # CONFIG_USB_EHCI_FSL is not set |
1285 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1328 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1286 | # CONFIG_USB_OXU210HP_HCD is not set | 1329 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1454,6 +1497,7 @@ CONFIG_RTC_DRV_RS5C372=y | |||
1454 | # CONFIG_RTC_DRV_PCF8563 is not set | 1497 | # CONFIG_RTC_DRV_PCF8563 is not set |
1455 | # CONFIG_RTC_DRV_PCF8583 is not set | 1498 | # CONFIG_RTC_DRV_PCF8583 is not set |
1456 | # CONFIG_RTC_DRV_M41T80 is not set | 1499 | # CONFIG_RTC_DRV_M41T80 is not set |
1500 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1457 | # CONFIG_RTC_DRV_S35390A is not set | 1501 | # CONFIG_RTC_DRV_S35390A is not set |
1458 | # CONFIG_RTC_DRV_FM3130 is not set | 1502 | # CONFIG_RTC_DRV_FM3130 is not set |
1459 | # CONFIG_RTC_DRV_RX8581 is not set | 1503 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1475,7 +1519,9 @@ CONFIG_RTC_DRV_RS5C372=y | |||
1475 | # CONFIG_RTC_DRV_M48T86 is not set | 1519 | # CONFIG_RTC_DRV_M48T86 is not set |
1476 | # CONFIG_RTC_DRV_M48T35 is not set | 1520 | # CONFIG_RTC_DRV_M48T35 is not set |
1477 | # CONFIG_RTC_DRV_M48T59 is not set | 1521 | # CONFIG_RTC_DRV_M48T59 is not set |
1522 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1478 | # CONFIG_RTC_DRV_BQ4802 is not set | 1523 | # CONFIG_RTC_DRV_BQ4802 is not set |
1524 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1479 | # CONFIG_RTC_DRV_V3020 is not set | 1525 | # CONFIG_RTC_DRV_V3020 is not set |
1480 | 1526 | ||
1481 | # | 1527 | # |
@@ -1786,7 +1832,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1786 | # CONFIG_KEYS is not set | 1832 | # CONFIG_KEYS is not set |
1787 | # CONFIG_SECURITY is not set | 1833 | # CONFIG_SECURITY is not set |
1788 | # CONFIG_SECURITYFS is not set | 1834 | # CONFIG_SECURITYFS is not set |
1789 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1835 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1836 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1837 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1838 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1839 | CONFIG_DEFAULT_SECURITY="" | ||
1790 | CONFIG_CRYPTO=y | 1840 | CONFIG_CRYPTO=y |
1791 | 1841 | ||
1792 | # | 1842 | # |
diff --git a/arch/powerpc/configs/mgcoge_defconfig b/arch/powerpc/configs/mgcoge_defconfig index 520b04a0def9..4c2c877f9363 100644 --- a/arch/powerpc/configs/mgcoge_defconfig +++ b/arch/powerpc/configs/mgcoge_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:09 2009 | 4 | # Wed Jan 6 09:24:02 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -36,6 +36,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
38 | CONFIG_IRQ_PER_CPU=y | 38 | CONFIG_IRQ_PER_CPU=y |
39 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | 40 | CONFIG_STACKTRACE_SUPPORT=y |
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,7 +60,6 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | # CONFIG_DEFAULT_UIMAGE is not set | 62 | # CONFIG_DEFAULT_UIMAGE is not set |
62 | CONFIG_HIBERNATE_32=y | ||
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | 63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y |
64 | # CONFIG_PPC_DCR_NATIVE is not set | 64 | # CONFIG_PPC_DCR_NATIVE is not set |
65 | # CONFIG_PPC_DCR_MMIO is not set | 65 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -87,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
87 | # | 87 | # |
88 | CONFIG_TREE_RCU=y | 88 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 89 | # CONFIG_TREE_PREEMPT_RCU is not set |
90 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 91 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 92 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 93 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -168,14 +169,41 @@ CONFIG_BLK_DEV_BSG=y | |||
168 | # IO Schedulers | 169 | # IO Schedulers |
169 | # | 170 | # |
170 | CONFIG_IOSCHED_NOOP=y | 171 | CONFIG_IOSCHED_NOOP=y |
171 | # CONFIG_IOSCHED_AS is not set | ||
172 | CONFIG_IOSCHED_DEADLINE=y | 172 | CONFIG_IOSCHED_DEADLINE=y |
173 | # CONFIG_IOSCHED_CFQ is not set | 173 | # CONFIG_IOSCHED_CFQ is not set |
174 | # CONFIG_DEFAULT_AS is not set | ||
175 | CONFIG_DEFAULT_DEADLINE=y | 174 | CONFIG_DEFAULT_DEADLINE=y |
176 | # CONFIG_DEFAULT_CFQ is not set | 175 | # CONFIG_DEFAULT_CFQ is not set |
177 | # CONFIG_DEFAULT_NOOP is not set | 176 | # CONFIG_DEFAULT_NOOP is not set |
178 | CONFIG_DEFAULT_IOSCHED="deadline" | 177 | CONFIG_DEFAULT_IOSCHED="deadline" |
178 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
179 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
180 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
181 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
182 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
183 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
184 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
185 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
186 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
187 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
188 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
189 | # CONFIG_INLINE_READ_LOCK is not set | ||
190 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
191 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
192 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
193 | CONFIG_INLINE_READ_UNLOCK=y | ||
194 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
195 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
196 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
197 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
198 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
199 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
200 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
201 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
202 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
203 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
204 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
205 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
206 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
179 | # CONFIG_FREEZER is not set | 207 | # CONFIG_FREEZER is not set |
180 | 208 | ||
181 | # | 209 | # |
@@ -208,7 +236,8 @@ CONFIG_MPIC=y | |||
208 | # CONFIG_MPIC_WEIRD is not set | 236 | # CONFIG_MPIC_WEIRD is not set |
209 | CONFIG_PPC_I8259=y | 237 | CONFIG_PPC_I8259=y |
210 | CONFIG_PPC_RTAS=y | 238 | CONFIG_PPC_RTAS=y |
211 | # CONFIG_RTAS_ERROR_LOGGING is not set | 239 | CONFIG_RTAS_ERROR_LOGGING=y |
240 | CONFIG_PPC_RTAS_DAEMON=y | ||
212 | CONFIG_RTAS_PROC=y | 241 | CONFIG_RTAS_PROC=y |
213 | # CONFIG_MMIO_NVRAM is not set | 242 | # CONFIG_MMIO_NVRAM is not set |
214 | CONFIG_PPC_MPC106=y | 243 | CONFIG_PPC_MPC106=y |
@@ -250,6 +279,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | |||
250 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 279 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
251 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 280 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
252 | # CONFIG_CRASH_DUMP is not set | 281 | # CONFIG_CRASH_DUMP is not set |
282 | CONFIG_SPARSE_IRQ=y | ||
253 | CONFIG_MAX_ACTIVE_REGIONS=32 | 283 | CONFIG_MAX_ACTIVE_REGIONS=32 |
254 | CONFIG_ARCH_FLATMEM_ENABLE=y | 284 | CONFIG_ARCH_FLATMEM_ENABLE=y |
255 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 285 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -262,8 +292,6 @@ CONFIG_MIGRATION=y | |||
262 | CONFIG_ZONE_DMA_FLAG=1 | 292 | CONFIG_ZONE_DMA_FLAG=1 |
263 | CONFIG_BOUNCE=y | 293 | CONFIG_BOUNCE=y |
264 | CONFIG_VIRT_TO_BUS=y | 294 | CONFIG_VIRT_TO_BUS=y |
265 | CONFIG_HAVE_MLOCK=y | ||
266 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
267 | # CONFIG_KSM is not set | 295 | # CONFIG_KSM is not set |
268 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 296 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
269 | CONFIG_PPC_4K_PAGES=y | 297 | CONFIG_PPC_4K_PAGES=y |
@@ -395,9 +423,6 @@ CONFIG_NETFILTER_ADVANCED=y | |||
395 | # CONFIG_BT is not set | 423 | # CONFIG_BT is not set |
396 | CONFIG_WIRELESS=y | 424 | CONFIG_WIRELESS=y |
397 | # CONFIG_CFG80211 is not set | 425 | # CONFIG_CFG80211 is not set |
398 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
399 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
400 | # CONFIG_WIRELESS_EXT is not set | ||
401 | # CONFIG_LIB80211 is not set | 426 | # CONFIG_LIB80211 is not set |
402 | 427 | ||
403 | # | 428 | # |
@@ -525,6 +550,10 @@ CONFIG_BLK_DEV=y | |||
525 | # CONFIG_BLK_DEV_COW_COMMON is not set | 550 | # CONFIG_BLK_DEV_COW_COMMON is not set |
526 | CONFIG_BLK_DEV_LOOP=y | 551 | CONFIG_BLK_DEV_LOOP=y |
527 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 552 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
553 | |||
554 | # | ||
555 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
556 | # | ||
528 | # CONFIG_BLK_DEV_NBD is not set | 557 | # CONFIG_BLK_DEV_NBD is not set |
529 | # CONFIG_BLK_DEV_SX8 is not set | 558 | # CONFIG_BLK_DEV_SX8 is not set |
530 | CONFIG_BLK_DEV_RAM=y | 559 | CONFIG_BLK_DEV_RAM=y |
@@ -558,7 +587,7 @@ CONFIG_HAVE_IDE=y | |||
558 | # | 587 | # |
559 | 588 | ||
560 | # | 589 | # |
561 | # See the help texts for more information. | 590 | # The newer stack is recommended. |
562 | # | 591 | # |
563 | # CONFIG_FIREWIRE is not set | 592 | # CONFIG_FIREWIRE is not set |
564 | # CONFIG_IEEE1394 is not set | 593 | # CONFIG_IEEE1394 is not set |
@@ -625,8 +654,9 @@ CONFIG_FS_ENET_MDIO_FCC=y | |||
625 | # CONFIG_NETDEV_10000 is not set | 654 | # CONFIG_NETDEV_10000 is not set |
626 | # CONFIG_TR is not set | 655 | # CONFIG_TR is not set |
627 | CONFIG_WLAN=y | 656 | CONFIG_WLAN=y |
628 | # CONFIG_WLAN_PRE80211 is not set | 657 | # CONFIG_AIRO is not set |
629 | # CONFIG_WLAN_80211 is not set | 658 | # CONFIG_ATMEL is not set |
659 | # CONFIG_HOSTAP is not set | ||
630 | 660 | ||
631 | # | 661 | # |
632 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 662 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -637,6 +667,7 @@ CONFIG_WLAN=y | |||
637 | # CONFIG_SLIP is not set | 667 | # CONFIG_SLIP is not set |
638 | # CONFIG_NETPOLL is not set | 668 | # CONFIG_NETPOLL is not set |
639 | # CONFIG_NET_POLL_CONTROLLER is not set | 669 | # CONFIG_NET_POLL_CONTROLLER is not set |
670 | # CONFIG_VMXNET3 is not set | ||
640 | # CONFIG_ISDN is not set | 671 | # CONFIG_ISDN is not set |
641 | # CONFIG_PHONE is not set | 672 | # CONFIG_PHONE is not set |
642 | 673 | ||
@@ -673,6 +704,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
673 | CONFIG_SERIAL_CPM=y | 704 | CONFIG_SERIAL_CPM=y |
674 | CONFIG_SERIAL_CPM_CONSOLE=y | 705 | CONFIG_SERIAL_CPM_CONSOLE=y |
675 | # CONFIG_SERIAL_JSM is not set | 706 | # CONFIG_SERIAL_JSM is not set |
707 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
676 | CONFIG_UNIX98_PTYS=y | 708 | CONFIG_UNIX98_PTYS=y |
677 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 709 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
678 | CONFIG_LEGACY_PTYS=y | 710 | CONFIG_LEGACY_PTYS=y |
@@ -734,11 +766,6 @@ CONFIG_I2C_CPM=y | |||
734 | # CONFIG_I2C_PARPORT_LIGHT is not set | 766 | # CONFIG_I2C_PARPORT_LIGHT is not set |
735 | 767 | ||
736 | # | 768 | # |
737 | # Graphics adapter I2C/DDC channel drivers | ||
738 | # | ||
739 | # CONFIG_I2C_VOODOO3 is not set | ||
740 | |||
741 | # | ||
742 | # Other I2C/SMBus bus drivers | 769 | # Other I2C/SMBus bus drivers |
743 | # | 770 | # |
744 | # CONFIG_I2C_PCA_PLATFORM is not set | 771 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -775,6 +802,7 @@ CONFIG_GPIOLIB=y | |||
775 | # | 802 | # |
776 | # PCI GPIO expanders: | 803 | # PCI GPIO expanders: |
777 | # | 804 | # |
805 | # CONFIG_GPIO_CS5535 is not set | ||
778 | # CONFIG_GPIO_BT8XX is not set | 806 | # CONFIG_GPIO_BT8XX is not set |
779 | # CONFIG_GPIO_LANGWELL is not set | 807 | # CONFIG_GPIO_LANGWELL is not set |
780 | 808 | ||
@@ -807,11 +835,13 @@ CONFIG_SSB_POSSIBLE=y | |||
807 | # CONFIG_TWL4030_CORE is not set | 835 | # CONFIG_TWL4030_CORE is not set |
808 | # CONFIG_MFD_TMIO is not set | 836 | # CONFIG_MFD_TMIO is not set |
809 | # CONFIG_PMIC_DA903X is not set | 837 | # CONFIG_PMIC_DA903X is not set |
838 | # CONFIG_PMIC_ADP5520 is not set | ||
810 | # CONFIG_MFD_WM8400 is not set | 839 | # CONFIG_MFD_WM8400 is not set |
811 | # CONFIG_MFD_WM831X is not set | 840 | # CONFIG_MFD_WM831X is not set |
812 | # CONFIG_MFD_WM8350_I2C is not set | 841 | # CONFIG_MFD_WM8350_I2C is not set |
813 | # CONFIG_MFD_PCF50633 is not set | 842 | # CONFIG_MFD_PCF50633 is not set |
814 | # CONFIG_AB3100_CORE is not set | 843 | # CONFIG_AB3100_CORE is not set |
844 | # CONFIG_MFD_88PM8607 is not set | ||
815 | # CONFIG_REGULATOR is not set | 845 | # CONFIG_REGULATOR is not set |
816 | # CONFIG_MEDIA_SUPPORT is not set | 846 | # CONFIG_MEDIA_SUPPORT is not set |
817 | 847 | ||
@@ -1118,7 +1148,11 @@ CONFIG_BDI_SWITCH=y | |||
1118 | # CONFIG_KEYS is not set | 1148 | # CONFIG_KEYS is not set |
1119 | # CONFIG_SECURITY is not set | 1149 | # CONFIG_SECURITY is not set |
1120 | # CONFIG_SECURITYFS is not set | 1150 | # CONFIG_SECURITYFS is not set |
1121 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1151 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1152 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1153 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1154 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1155 | CONFIG_DEFAULT_SECURITY="" | ||
1122 | CONFIG_CRYPTO=y | 1156 | CONFIG_CRYPTO=y |
1123 | 1157 | ||
1124 | # | 1158 | # |
diff --git a/arch/powerpc/configs/mgsuvd_defconfig b/arch/powerpc/configs/mgsuvd_defconfig index 43c3c4fcdce3..9e090f2c7e36 100644 --- a/arch/powerpc/configs/mgsuvd_defconfig +++ b/arch/powerpc/configs/mgsuvd_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:10 2009 | 4 | # Wed Jan 6 09:24:03 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -32,6 +32,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
33 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 33 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
34 | CONFIG_IRQ_PER_CPU=y | 34 | CONFIG_IRQ_PER_CPU=y |
35 | CONFIG_NR_IRQS=512 | ||
35 | CONFIG_STACKTRACE_SUPPORT=y | 36 | CONFIG_STACKTRACE_SUPPORT=y |
36 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 37 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
37 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 38 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -53,6 +54,7 @@ CONFIG_OF=y | |||
53 | CONFIG_AUDIT_ARCH=y | 54 | CONFIG_AUDIT_ARCH=y |
54 | CONFIG_DTC=y | 55 | CONFIG_DTC=y |
55 | # CONFIG_DEFAULT_UIMAGE is not set | 56 | # CONFIG_DEFAULT_UIMAGE is not set |
57 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
56 | # CONFIG_PPC_DCR_NATIVE is not set | 58 | # CONFIG_PPC_DCR_NATIVE is not set |
57 | # CONFIG_PPC_DCR_MMIO is not set | 59 | # CONFIG_PPC_DCR_MMIO is not set |
58 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 60 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -80,6 +82,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
80 | # | 82 | # |
81 | CONFIG_TREE_RCU=y | 83 | CONFIG_TREE_RCU=y |
82 | # CONFIG_TREE_PREEMPT_RCU is not set | 84 | # CONFIG_TREE_PREEMPT_RCU is not set |
85 | # CONFIG_TINY_RCU is not set | ||
83 | # CONFIG_RCU_TRACE is not set | 86 | # CONFIG_RCU_TRACE is not set |
84 | CONFIG_RCU_FANOUT=32 | 87 | CONFIG_RCU_FANOUT=32 |
85 | # CONFIG_RCU_FANOUT_EXACT is not set | 88 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -162,14 +165,41 @@ CONFIG_LBDAF=y | |||
162 | # IO Schedulers | 165 | # IO Schedulers |
163 | # | 166 | # |
164 | CONFIG_IOSCHED_NOOP=y | 167 | CONFIG_IOSCHED_NOOP=y |
165 | CONFIG_IOSCHED_AS=y | ||
166 | CONFIG_IOSCHED_DEADLINE=y | 168 | CONFIG_IOSCHED_DEADLINE=y |
167 | CONFIG_IOSCHED_CFQ=y | 169 | CONFIG_IOSCHED_CFQ=y |
168 | CONFIG_DEFAULT_AS=y | ||
169 | # CONFIG_DEFAULT_DEADLINE is not set | 170 | # CONFIG_DEFAULT_DEADLINE is not set |
170 | # CONFIG_DEFAULT_CFQ is not set | 171 | CONFIG_DEFAULT_CFQ=y |
171 | # CONFIG_DEFAULT_NOOP is not set | 172 | # CONFIG_DEFAULT_NOOP is not set |
172 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 173 | CONFIG_DEFAULT_IOSCHED="cfq" |
174 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
175 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
176 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
177 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
178 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
179 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
180 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
181 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
182 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
183 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
184 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
185 | # CONFIG_INLINE_READ_LOCK is not set | ||
186 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
187 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
188 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
189 | CONFIG_INLINE_READ_UNLOCK=y | ||
190 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
191 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
192 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
193 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
194 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
195 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
196 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
197 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
198 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
199 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
200 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
201 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
202 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
173 | # CONFIG_FREEZER is not set | 203 | # CONFIG_FREEZER is not set |
174 | 204 | ||
175 | # | 205 | # |
@@ -244,6 +274,7 @@ CONFIG_MATH_EMULATION=y | |||
244 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 274 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
245 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 275 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
246 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 276 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
277 | CONFIG_SPARSE_IRQ=y | ||
247 | CONFIG_MAX_ACTIVE_REGIONS=32 | 278 | CONFIG_MAX_ACTIVE_REGIONS=32 |
248 | CONFIG_ARCH_FLATMEM_ENABLE=y | 279 | CONFIG_ARCH_FLATMEM_ENABLE=y |
249 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 280 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -260,8 +291,6 @@ CONFIG_MIGRATION=y | |||
260 | CONFIG_ZONE_DMA_FLAG=1 | 291 | CONFIG_ZONE_DMA_FLAG=1 |
261 | CONFIG_BOUNCE=y | 292 | CONFIG_BOUNCE=y |
262 | CONFIG_VIRT_TO_BUS=y | 293 | CONFIG_VIRT_TO_BUS=y |
263 | CONFIG_HAVE_MLOCK=y | ||
264 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
265 | # CONFIG_KSM is not set | 294 | # CONFIG_KSM is not set |
266 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 295 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
267 | CONFIG_PPC_4K_PAGES=y | 296 | CONFIG_PPC_4K_PAGES=y |
@@ -379,9 +408,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
379 | # CONFIG_AF_RXRPC is not set | 408 | # CONFIG_AF_RXRPC is not set |
380 | CONFIG_WIRELESS=y | 409 | CONFIG_WIRELESS=y |
381 | # CONFIG_CFG80211 is not set | 410 | # CONFIG_CFG80211 is not set |
382 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
383 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
384 | # CONFIG_WIRELESS_EXT is not set | ||
385 | # CONFIG_LIB80211 is not set | 411 | # CONFIG_LIB80211 is not set |
386 | 412 | ||
387 | # | 413 | # |
@@ -497,6 +523,10 @@ CONFIG_BLK_DEV=y | |||
497 | # CONFIG_BLK_DEV_COW_COMMON is not set | 523 | # CONFIG_BLK_DEV_COW_COMMON is not set |
498 | CONFIG_BLK_DEV_LOOP=y | 524 | CONFIG_BLK_DEV_LOOP=y |
499 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 525 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
526 | |||
527 | # | ||
528 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
529 | # | ||
500 | # CONFIG_BLK_DEV_NBD is not set | 530 | # CONFIG_BLK_DEV_NBD is not set |
501 | CONFIG_BLK_DEV_RAM=y | 531 | CONFIG_BLK_DEV_RAM=y |
502 | CONFIG_BLK_DEV_RAM_COUNT=16 | 532 | CONFIG_BLK_DEV_RAM_COUNT=16 |
@@ -568,8 +598,7 @@ CONFIG_FS_ENET_HAS_SCC=y | |||
568 | # CONFIG_NETDEV_1000 is not set | 598 | # CONFIG_NETDEV_1000 is not set |
569 | # CONFIG_NETDEV_10000 is not set | 599 | # CONFIG_NETDEV_10000 is not set |
570 | CONFIG_WLAN=y | 600 | CONFIG_WLAN=y |
571 | # CONFIG_WLAN_PRE80211 is not set | 601 | # CONFIG_HOSTAP is not set |
572 | # CONFIG_WLAN_80211 is not set | ||
573 | 602 | ||
574 | # | 603 | # |
575 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 604 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -614,6 +643,7 @@ CONFIG_SERIAL_CORE=y | |||
614 | CONFIG_SERIAL_CORE_CONSOLE=y | 643 | CONFIG_SERIAL_CORE_CONSOLE=y |
615 | CONFIG_SERIAL_CPM=y | 644 | CONFIG_SERIAL_CPM=y |
616 | CONFIG_SERIAL_CPM_CONSOLE=y | 645 | CONFIG_SERIAL_CPM_CONSOLE=y |
646 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
617 | CONFIG_UNIX98_PTYS=y | 647 | CONFIG_UNIX98_PTYS=y |
618 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 648 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
619 | # CONFIG_LEGACY_PTYS is not set | 649 | # CONFIG_LEGACY_PTYS is not set |
@@ -863,6 +893,7 @@ CONFIG_DEBUG_FS=y | |||
863 | # CONFIG_DEBUG_MEMORY_INIT is not set | 893 | # CONFIG_DEBUG_MEMORY_INIT is not set |
864 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 894 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
865 | # CONFIG_LATENCYTOP is not set | 895 | # CONFIG_LATENCYTOP is not set |
896 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
866 | CONFIG_HAVE_FUNCTION_TRACER=y | 897 | CONFIG_HAVE_FUNCTION_TRACER=y |
867 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | 898 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y |
868 | CONFIG_HAVE_DYNAMIC_FTRACE=y | 899 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
@@ -887,7 +918,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
887 | # CONFIG_KEYS is not set | 918 | # CONFIG_KEYS is not set |
888 | # CONFIG_SECURITY is not set | 919 | # CONFIG_SECURITY is not set |
889 | # CONFIG_SECURITYFS is not set | 920 | # CONFIG_SECURITYFS is not set |
890 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 921 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
922 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
923 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
924 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
925 | CONFIG_DEFAULT_SECURITY="" | ||
891 | CONFIG_CRYPTO=y | 926 | CONFIG_CRYPTO=y |
892 | 927 | ||
893 | # | 928 | # |
diff --git a/arch/powerpc/configs/mpc5200_defconfig b/arch/powerpc/configs/mpc5200_defconfig index 523d5fe18c0e..61cf73d0000f 100644 --- a/arch/powerpc/configs/mpc5200_defconfig +++ b/arch/powerpc/configs/mpc5200_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.32-rc4 | 3 | # Linux kernel version: 2.6.33-rc2 |
4 | # Thu Oct 15 10:33:21 2009 | 4 | # Wed Dec 30 15:08:52 2009 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -36,6 +36,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
38 | CONFIG_IRQ_PER_CPU=y | 38 | CONFIG_IRQ_PER_CPU=y |
39 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | 40 | CONFIG_STACKTRACE_SUPPORT=y |
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
87 | # | 89 | # |
88 | CONFIG_TREE_RCU=y | 90 | CONFIG_TREE_RCU=y |
89 | # CONFIG_TREE_PREEMPT_RCU is not set | 91 | # CONFIG_TREE_PREEMPT_RCU is not set |
92 | # CONFIG_TINY_RCU is not set | ||
90 | # CONFIG_RCU_TRACE is not set | 93 | # CONFIG_RCU_TRACE is not set |
91 | CONFIG_RCU_FANOUT=32 | 94 | CONFIG_RCU_FANOUT=32 |
92 | # CONFIG_RCU_FANOUT_EXACT is not set | 95 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -170,14 +173,41 @@ CONFIG_LBDAF=y | |||
170 | # IO Schedulers | 173 | # IO Schedulers |
171 | # | 174 | # |
172 | CONFIG_IOSCHED_NOOP=y | 175 | CONFIG_IOSCHED_NOOP=y |
173 | CONFIG_IOSCHED_AS=y | ||
174 | CONFIG_IOSCHED_DEADLINE=y | 176 | CONFIG_IOSCHED_DEADLINE=y |
175 | CONFIG_IOSCHED_CFQ=y | 177 | CONFIG_IOSCHED_CFQ=y |
176 | CONFIG_DEFAULT_AS=y | ||
177 | # CONFIG_DEFAULT_DEADLINE is not set | 178 | # CONFIG_DEFAULT_DEADLINE is not set |
178 | # CONFIG_DEFAULT_CFQ is not set | 179 | CONFIG_DEFAULT_CFQ=y |
179 | # CONFIG_DEFAULT_NOOP is not set | 180 | # CONFIG_DEFAULT_NOOP is not set |
180 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 181 | CONFIG_DEFAULT_IOSCHED="cfq" |
182 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
183 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
184 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
185 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
186 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
187 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
188 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
189 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
190 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
191 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
192 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
193 | # CONFIG_INLINE_READ_LOCK is not set | ||
194 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
195 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
196 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
197 | CONFIG_INLINE_READ_UNLOCK=y | ||
198 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
199 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
200 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
201 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
202 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
203 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
204 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
205 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
206 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
207 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
208 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
209 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
210 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
181 | CONFIG_FREEZER=y | 211 | CONFIG_FREEZER=y |
182 | 212 | ||
183 | # | 213 | # |
@@ -193,6 +223,7 @@ CONFIG_PPC_LITE5200=y | |||
193 | CONFIG_PPC_MEDIA5200=y | 223 | CONFIG_PPC_MEDIA5200=y |
194 | CONFIG_PPC_MPC5200_BUGFIX=y | 224 | CONFIG_PPC_MPC5200_BUGFIX=y |
195 | CONFIG_PPC_MPC5200_GPIO=y | 225 | CONFIG_PPC_MPC5200_GPIO=y |
226 | CONFIG_PPC_MPC5200_LPBFIFO=m | ||
196 | # CONFIG_PPC_PMAC is not set | 227 | # CONFIG_PPC_PMAC is not set |
197 | # CONFIG_PPC_CELL is not set | 228 | # CONFIG_PPC_CELL is not set |
198 | # CONFIG_PPC_CELL_NATIVE is not set | 229 | # CONFIG_PPC_CELL_NATIVE is not set |
@@ -211,6 +242,7 @@ CONFIG_PPC_OF_BOOT_TRAMPOLINE=y | |||
211 | # CONFIG_PPC_I8259 is not set | 242 | # CONFIG_PPC_I8259 is not set |
212 | CONFIG_PPC_RTAS=y | 243 | CONFIG_PPC_RTAS=y |
213 | # CONFIG_RTAS_ERROR_LOGGING is not set | 244 | # CONFIG_RTAS_ERROR_LOGGING is not set |
245 | # CONFIG_PPC_RTAS_DAEMON is not set | ||
214 | CONFIG_RTAS_PROC=y | 246 | CONFIG_RTAS_PROC=y |
215 | # CONFIG_MMIO_NVRAM is not set | 247 | # CONFIG_MMIO_NVRAM is not set |
216 | # CONFIG_PPC_MPC106 is not set | 248 | # CONFIG_PPC_MPC106 is not set |
@@ -223,6 +255,7 @@ CONFIG_RTAS_PROC=y | |||
223 | CONFIG_PPC_BESTCOMM=y | 255 | CONFIG_PPC_BESTCOMM=y |
224 | CONFIG_PPC_BESTCOMM_ATA=y | 256 | CONFIG_PPC_BESTCOMM_ATA=y |
225 | CONFIG_PPC_BESTCOMM_FEC=y | 257 | CONFIG_PPC_BESTCOMM_FEC=y |
258 | CONFIG_PPC_BESTCOMM_GEN_BD=m | ||
226 | CONFIG_SIMPLE_GPIO=y | 259 | CONFIG_SIMPLE_GPIO=y |
227 | 260 | ||
228 | # | 261 | # |
@@ -253,6 +286,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
253 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 286 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
254 | # CONFIG_KEXEC is not set | 287 | # CONFIG_KEXEC is not set |
255 | # CONFIG_CRASH_DUMP is not set | 288 | # CONFIG_CRASH_DUMP is not set |
289 | CONFIG_SPARSE_IRQ=y | ||
256 | CONFIG_MAX_ACTIVE_REGIONS=32 | 290 | CONFIG_MAX_ACTIVE_REGIONS=32 |
257 | CONFIG_ARCH_FLATMEM_ENABLE=y | 291 | CONFIG_ARCH_FLATMEM_ENABLE=y |
258 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 292 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -269,8 +303,6 @@ CONFIG_MIGRATION=y | |||
269 | CONFIG_ZONE_DMA_FLAG=1 | 303 | CONFIG_ZONE_DMA_FLAG=1 |
270 | CONFIG_BOUNCE=y | 304 | CONFIG_BOUNCE=y |
271 | CONFIG_VIRT_TO_BUS=y | 305 | CONFIG_VIRT_TO_BUS=y |
272 | CONFIG_HAVE_MLOCK=y | ||
273 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
274 | # CONFIG_KSM is not set | 306 | # CONFIG_KSM is not set |
275 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 307 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
276 | CONFIG_PPC_4K_PAGES=y | 308 | CONFIG_PPC_4K_PAGES=y |
@@ -286,6 +318,7 @@ CONFIG_PM=y | |||
286 | CONFIG_PM_SLEEP=y | 318 | CONFIG_PM_SLEEP=y |
287 | CONFIG_SUSPEND=y | 319 | CONFIG_SUSPEND=y |
288 | CONFIG_SUSPEND_FREEZER=y | 320 | CONFIG_SUSPEND_FREEZER=y |
321 | # CONFIG_HIBERNATION is not set | ||
289 | # CONFIG_PM_RUNTIME is not set | 322 | # CONFIG_PM_RUNTIME is not set |
290 | CONFIG_SECCOMP=y | 323 | CONFIG_SECCOMP=y |
291 | CONFIG_ISA_DMA_API=y | 324 | CONFIG_ISA_DMA_API=y |
@@ -399,7 +432,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
399 | # CONFIG_IRDA is not set | 432 | # CONFIG_IRDA is not set |
400 | # CONFIG_BT is not set | 433 | # CONFIG_BT is not set |
401 | # CONFIG_AF_RXRPC is not set | 434 | # CONFIG_AF_RXRPC is not set |
402 | # CONFIG_WIRELESS is not set | 435 | CONFIG_WIRELESS=y |
436 | # CONFIG_CFG80211 is not set | ||
437 | # CONFIG_LIB80211 is not set | ||
438 | |||
439 | # | ||
440 | # CFG80211 needs to be enabled for MAC80211 | ||
441 | # | ||
403 | # CONFIG_WIMAX is not set | 442 | # CONFIG_WIMAX is not set |
404 | # CONFIG_RFKILL is not set | 443 | # CONFIG_RFKILL is not set |
405 | # CONFIG_NET_9P is not set | 444 | # CONFIG_NET_9P is not set |
@@ -530,6 +569,10 @@ CONFIG_BLK_DEV=y | |||
530 | # CONFIG_BLK_DEV_COW_COMMON is not set | 569 | # CONFIG_BLK_DEV_COW_COMMON is not set |
531 | CONFIG_BLK_DEV_LOOP=y | 570 | CONFIG_BLK_DEV_LOOP=y |
532 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 571 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
572 | |||
573 | # | ||
574 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
575 | # | ||
533 | # CONFIG_BLK_DEV_NBD is not set | 576 | # CONFIG_BLK_DEV_NBD is not set |
534 | # CONFIG_BLK_DEV_SX8 is not set | 577 | # CONFIG_BLK_DEV_SX8 is not set |
535 | # CONFIG_BLK_DEV_UB is not set | 578 | # CONFIG_BLK_DEV_UB is not set |
@@ -541,6 +584,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
541 | # CONFIG_ATA_OVER_ETH is not set | 584 | # CONFIG_ATA_OVER_ETH is not set |
542 | # CONFIG_BLK_DEV_HD is not set | 585 | # CONFIG_BLK_DEV_HD is not set |
543 | CONFIG_MISC_DEVICES=y | 586 | CONFIG_MISC_DEVICES=y |
587 | # CONFIG_AD525X_DPOT is not set | ||
544 | # CONFIG_PHANTOM is not set | 588 | # CONFIG_PHANTOM is not set |
545 | # CONFIG_SGI_IOC4 is not set | 589 | # CONFIG_SGI_IOC4 is not set |
546 | # CONFIG_TIFM_CORE is not set | 590 | # CONFIG_TIFM_CORE is not set |
@@ -548,6 +592,8 @@ CONFIG_MISC_DEVICES=y | |||
548 | # CONFIG_ENCLOSURE_SERVICES is not set | 592 | # CONFIG_ENCLOSURE_SERVICES is not set |
549 | # CONFIG_HP_ILO is not set | 593 | # CONFIG_HP_ILO is not set |
550 | # CONFIG_ISL29003 is not set | 594 | # CONFIG_ISL29003 is not set |
595 | # CONFIG_DS1682 is not set | ||
596 | # CONFIG_TI_DAC7512 is not set | ||
551 | # CONFIG_C2PORT is not set | 597 | # CONFIG_C2PORT is not set |
552 | 598 | ||
553 | # | 599 | # |
@@ -600,7 +646,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
600 | # CONFIG_SCSI_BNX2_ISCSI is not set | 646 | # CONFIG_SCSI_BNX2_ISCSI is not set |
601 | # CONFIG_BE2ISCSI is not set | 647 | # CONFIG_BE2ISCSI is not set |
602 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 648 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
649 | # CONFIG_SCSI_HPSA is not set | ||
603 | # CONFIG_SCSI_3W_9XXX is not set | 650 | # CONFIG_SCSI_3W_9XXX is not set |
651 | # CONFIG_SCSI_3W_SAS is not set | ||
604 | # CONFIG_SCSI_ACARD is not set | 652 | # CONFIG_SCSI_ACARD is not set |
605 | # CONFIG_SCSI_AACRAID is not set | 653 | # CONFIG_SCSI_AACRAID is not set |
606 | # CONFIG_SCSI_AIC7XXX is not set | 654 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -639,6 +687,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
639 | # CONFIG_SCSI_NSP32 is not set | 687 | # CONFIG_SCSI_NSP32 is not set |
640 | # CONFIG_SCSI_DEBUG is not set | 688 | # CONFIG_SCSI_DEBUG is not set |
641 | # CONFIG_SCSI_PMCRAID is not set | 689 | # CONFIG_SCSI_PMCRAID is not set |
690 | # CONFIG_SCSI_PM8001 is not set | ||
642 | # CONFIG_SCSI_SRP is not set | 691 | # CONFIG_SCSI_SRP is not set |
643 | # CONFIG_SCSI_BFA_FC is not set | 692 | # CONFIG_SCSI_BFA_FC is not set |
644 | # CONFIG_SCSI_DH is not set | 693 | # CONFIG_SCSI_DH is not set |
@@ -694,15 +743,16 @@ CONFIG_PATA_MPC52xx=y | |||
694 | # CONFIG_PATA_NS87415 is not set | 743 | # CONFIG_PATA_NS87415 is not set |
695 | # CONFIG_PATA_OPTI is not set | 744 | # CONFIG_PATA_OPTI is not set |
696 | # CONFIG_PATA_OPTIDMA is not set | 745 | # CONFIG_PATA_OPTIDMA is not set |
746 | # CONFIG_PATA_PDC2027X is not set | ||
697 | # CONFIG_PATA_PDC_OLD is not set | 747 | # CONFIG_PATA_PDC_OLD is not set |
698 | # CONFIG_PATA_RADISYS is not set | 748 | # CONFIG_PATA_RADISYS is not set |
699 | # CONFIG_PATA_RDC is not set | 749 | # CONFIG_PATA_RDC is not set |
700 | # CONFIG_PATA_RZ1000 is not set | 750 | # CONFIG_PATA_RZ1000 is not set |
701 | # CONFIG_PATA_SC1200 is not set | 751 | # CONFIG_PATA_SC1200 is not set |
702 | # CONFIG_PATA_SERVERWORKS is not set | 752 | # CONFIG_PATA_SERVERWORKS is not set |
703 | # CONFIG_PATA_PDC2027X is not set | ||
704 | # CONFIG_PATA_SIL680 is not set | 753 | # CONFIG_PATA_SIL680 is not set |
705 | # CONFIG_PATA_SIS is not set | 754 | # CONFIG_PATA_SIS is not set |
755 | # CONFIG_PATA_TOSHIBA is not set | ||
706 | # CONFIG_PATA_VIA is not set | 756 | # CONFIG_PATA_VIA is not set |
707 | # CONFIG_PATA_WINBOND is not set | 757 | # CONFIG_PATA_WINBOND is not set |
708 | CONFIG_PATA_PLATFORM=y | 758 | CONFIG_PATA_PLATFORM=y |
@@ -785,8 +835,11 @@ CONFIG_FEC_MPC52xx_MDIO=y | |||
785 | # CONFIG_NETDEV_10000 is not set | 835 | # CONFIG_NETDEV_10000 is not set |
786 | # CONFIG_TR is not set | 836 | # CONFIG_TR is not set |
787 | CONFIG_WLAN=y | 837 | CONFIG_WLAN=y |
788 | # CONFIG_WLAN_PRE80211 is not set | 838 | # CONFIG_AIRO is not set |
789 | # CONFIG_WLAN_80211 is not set | 839 | # CONFIG_ATMEL is not set |
840 | # CONFIG_PRISM54 is not set | ||
841 | # CONFIG_USB_ZD1201 is not set | ||
842 | # CONFIG_HOSTAP is not set | ||
790 | 843 | ||
791 | # | 844 | # |
792 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 845 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -809,6 +862,7 @@ CONFIG_WLAN=y | |||
809 | # CONFIG_NETCONSOLE is not set | 862 | # CONFIG_NETCONSOLE is not set |
810 | # CONFIG_NETPOLL is not set | 863 | # CONFIG_NETPOLL is not set |
811 | # CONFIG_NET_POLL_CONTROLLER is not set | 864 | # CONFIG_NET_POLL_CONTROLLER is not set |
865 | # CONFIG_VMXNET3 is not set | ||
812 | # CONFIG_ISDN is not set | 866 | # CONFIG_ISDN is not set |
813 | # CONFIG_PHONE is not set | 867 | # CONFIG_PHONE is not set |
814 | 868 | ||
@@ -818,6 +872,7 @@ CONFIG_WLAN=y | |||
818 | CONFIG_INPUT=y | 872 | CONFIG_INPUT=y |
819 | # CONFIG_INPUT_FF_MEMLESS is not set | 873 | # CONFIG_INPUT_FF_MEMLESS is not set |
820 | # CONFIG_INPUT_POLLDEV is not set | 874 | # CONFIG_INPUT_POLLDEV is not set |
875 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
821 | 876 | ||
822 | # | 877 | # |
823 | # Userland interfaces | 878 | # Userland interfaces |
@@ -874,6 +929,7 @@ CONFIG_SERIAL_MPC52xx=y | |||
874 | CONFIG_SERIAL_MPC52xx_CONSOLE=y | 929 | CONFIG_SERIAL_MPC52xx_CONSOLE=y |
875 | CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 | 930 | CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 |
876 | # CONFIG_SERIAL_JSM is not set | 931 | # CONFIG_SERIAL_JSM is not set |
932 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
877 | CONFIG_UNIX98_PTYS=y | 933 | CONFIG_UNIX98_PTYS=y |
878 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 934 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
879 | CONFIG_LEGACY_PTYS=y | 935 | CONFIG_LEGACY_PTYS=y |
@@ -934,11 +990,6 @@ CONFIG_I2C_MPC=y | |||
934 | # CONFIG_I2C_TINY_USB is not set | 990 | # CONFIG_I2C_TINY_USB is not set |
935 | 991 | ||
936 | # | 992 | # |
937 | # Graphics adapter I2C/DDC channel drivers | ||
938 | # | ||
939 | # CONFIG_I2C_VOODOO3 is not set | ||
940 | |||
941 | # | ||
942 | # Other I2C/SMBus bus drivers | 993 | # Other I2C/SMBus bus drivers |
943 | # | 994 | # |
944 | # CONFIG_I2C_PCA_PLATFORM is not set | 995 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -947,7 +998,6 @@ CONFIG_I2C_MPC=y | |||
947 | # | 998 | # |
948 | # Miscellaneous I2C Chip support | 999 | # Miscellaneous I2C Chip support |
949 | # | 1000 | # |
950 | # CONFIG_DS1682 is not set | ||
951 | # CONFIG_SENSORS_TSL2550 is not set | 1001 | # CONFIG_SENSORS_TSL2550 is not set |
952 | # CONFIG_I2C_DEBUG_CORE is not set | 1002 | # CONFIG_I2C_DEBUG_CORE is not set |
953 | # CONFIG_I2C_DEBUG_ALGO is not set | 1003 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -962,7 +1012,10 @@ CONFIG_SPI_MASTER=y | |||
962 | # | 1012 | # |
963 | # CONFIG_SPI_BITBANG is not set | 1013 | # CONFIG_SPI_BITBANG is not set |
964 | # CONFIG_SPI_GPIO is not set | 1014 | # CONFIG_SPI_GPIO is not set |
1015 | # CONFIG_SPI_MPC52xx is not set | ||
965 | CONFIG_SPI_MPC52xx_PSC=m | 1016 | CONFIG_SPI_MPC52xx_PSC=m |
1017 | # CONFIG_SPI_XILINX is not set | ||
1018 | # CONFIG_SPI_DESIGNWARE is not set | ||
966 | 1019 | ||
967 | # | 1020 | # |
968 | # SPI Protocol Masters | 1021 | # SPI Protocol Masters |
@@ -995,6 +1048,7 @@ CONFIG_GPIOLIB=y | |||
995 | # | 1048 | # |
996 | # PCI GPIO expanders: | 1049 | # PCI GPIO expanders: |
997 | # | 1050 | # |
1051 | # CONFIG_GPIO_CS5535 is not set | ||
998 | # CONFIG_GPIO_BT8XX is not set | 1052 | # CONFIG_GPIO_BT8XX is not set |
999 | # CONFIG_GPIO_LANGWELL is not set | 1053 | # CONFIG_GPIO_LANGWELL is not set |
1000 | 1054 | ||
@@ -1042,6 +1096,7 @@ CONFIG_HWMON=y | |||
1042 | # CONFIG_SENSORS_IT87 is not set | 1096 | # CONFIG_SENSORS_IT87 is not set |
1043 | # CONFIG_SENSORS_LM63 is not set | 1097 | # CONFIG_SENSORS_LM63 is not set |
1044 | # CONFIG_SENSORS_LM70 is not set | 1098 | # CONFIG_SENSORS_LM70 is not set |
1099 | # CONFIG_SENSORS_LM73 is not set | ||
1045 | # CONFIG_SENSORS_LM75 is not set | 1100 | # CONFIG_SENSORS_LM75 is not set |
1046 | # CONFIG_SENSORS_LM77 is not set | 1101 | # CONFIG_SENSORS_LM77 is not set |
1047 | # CONFIG_SENSORS_LM78 is not set | 1102 | # CONFIG_SENSORS_LM78 is not set |
@@ -1083,6 +1138,7 @@ CONFIG_HWMON=y | |||
1083 | # CONFIG_SENSORS_W83627HF is not set | 1138 | # CONFIG_SENSORS_W83627HF is not set |
1084 | # CONFIG_SENSORS_W83627EHF is not set | 1139 | # CONFIG_SENSORS_W83627EHF is not set |
1085 | # CONFIG_SENSORS_LIS3_SPI is not set | 1140 | # CONFIG_SENSORS_LIS3_SPI is not set |
1141 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1086 | # CONFIG_THERMAL is not set | 1142 | # CONFIG_THERMAL is not set |
1087 | CONFIG_WATCHDOG=y | 1143 | CONFIG_WATCHDOG=y |
1088 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1144 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -1122,6 +1178,7 @@ CONFIG_SSB_POSSIBLE=y | |||
1122 | # CONFIG_TWL4030_CORE is not set | 1178 | # CONFIG_TWL4030_CORE is not set |
1123 | # CONFIG_MFD_TMIO is not set | 1179 | # CONFIG_MFD_TMIO is not set |
1124 | # CONFIG_PMIC_DA903X is not set | 1180 | # CONFIG_PMIC_DA903X is not set |
1181 | # CONFIG_PMIC_ADP5520 is not set | ||
1125 | # CONFIG_MFD_WM8400 is not set | 1182 | # CONFIG_MFD_WM8400 is not set |
1126 | # CONFIG_MFD_WM831X is not set | 1183 | # CONFIG_MFD_WM831X is not set |
1127 | # CONFIG_MFD_WM8350_I2C is not set | 1184 | # CONFIG_MFD_WM8350_I2C is not set |
@@ -1129,6 +1186,8 @@ CONFIG_SSB_POSSIBLE=y | |||
1129 | # CONFIG_MFD_MC13783 is not set | 1186 | # CONFIG_MFD_MC13783 is not set |
1130 | # CONFIG_AB3100_CORE is not set | 1187 | # CONFIG_AB3100_CORE is not set |
1131 | # CONFIG_EZX_PCAP is not set | 1188 | # CONFIG_EZX_PCAP is not set |
1189 | # CONFIG_MFD_88PM8607 is not set | ||
1190 | # CONFIG_AB4500_CORE is not set | ||
1132 | # CONFIG_REGULATOR is not set | 1191 | # CONFIG_REGULATOR is not set |
1133 | # CONFIG_MEDIA_SUPPORT is not set | 1192 | # CONFIG_MEDIA_SUPPORT is not set |
1134 | 1193 | ||
@@ -1322,7 +1381,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1322 | # CONFIG_USB_R8A66597_HCD is not set | 1381 | # CONFIG_USB_R8A66597_HCD is not set |
1323 | # CONFIG_USB_WHCI_HCD is not set | 1382 | # CONFIG_USB_WHCI_HCD is not set |
1324 | # CONFIG_USB_HWA_HCD is not set | 1383 | # CONFIG_USB_HWA_HCD is not set |
1325 | # CONFIG_USB_MUSB_HDRC is not set | ||
1326 | 1384 | ||
1327 | # | 1385 | # |
1328 | # USB Device Class drivers | 1386 | # USB Device Class drivers |
@@ -1440,6 +1498,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
1440 | # CONFIG_RTC_DRV_PCF8563 is not set | 1498 | # CONFIG_RTC_DRV_PCF8563 is not set |
1441 | # CONFIG_RTC_DRV_PCF8583 is not set | 1499 | # CONFIG_RTC_DRV_PCF8583 is not set |
1442 | # CONFIG_RTC_DRV_M41T80 is not set | 1500 | # CONFIG_RTC_DRV_M41T80 is not set |
1501 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1443 | # CONFIG_RTC_DRV_S35390A is not set | 1502 | # CONFIG_RTC_DRV_S35390A is not set |
1444 | # CONFIG_RTC_DRV_FM3130 is not set | 1503 | # CONFIG_RTC_DRV_FM3130 is not set |
1445 | # CONFIG_RTC_DRV_RX8581 is not set | 1504 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1469,7 +1528,9 @@ CONFIG_RTC_DRV_DS1307=y | |||
1469 | # CONFIG_RTC_DRV_M48T86 is not set | 1528 | # CONFIG_RTC_DRV_M48T86 is not set |
1470 | # CONFIG_RTC_DRV_M48T35 is not set | 1529 | # CONFIG_RTC_DRV_M48T35 is not set |
1471 | # CONFIG_RTC_DRV_M48T59 is not set | 1530 | # CONFIG_RTC_DRV_M48T59 is not set |
1531 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1472 | # CONFIG_RTC_DRV_BQ4802 is not set | 1532 | # CONFIG_RTC_DRV_BQ4802 is not set |
1533 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1473 | # CONFIG_RTC_DRV_V3020 is not set | 1534 | # CONFIG_RTC_DRV_V3020 is not set |
1474 | 1535 | ||
1475 | # | 1536 | # |
@@ -1731,6 +1792,7 @@ CONFIG_DEBUG_INFO=y | |||
1731 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | 1792 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set |
1732 | # CONFIG_FAULT_INJECTION is not set | 1793 | # CONFIG_FAULT_INJECTION is not set |
1733 | # CONFIG_LATENCYTOP is not set | 1794 | # CONFIG_LATENCYTOP is not set |
1795 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
1734 | # CONFIG_DEBUG_PAGEALLOC is not set | 1796 | # CONFIG_DEBUG_PAGEALLOC is not set |
1735 | CONFIG_HAVE_FUNCTION_TRACER=y | 1797 | CONFIG_HAVE_FUNCTION_TRACER=y |
1736 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | 1798 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y |
@@ -1774,7 +1836,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1774 | # CONFIG_KEYS is not set | 1836 | # CONFIG_KEYS is not set |
1775 | # CONFIG_SECURITY is not set | 1837 | # CONFIG_SECURITY is not set |
1776 | # CONFIG_SECURITYFS is not set | 1838 | # CONFIG_SECURITYFS is not set |
1777 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1839 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1840 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1841 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1842 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1843 | CONFIG_DEFAULT_SECURITY="" | ||
1778 | CONFIG_CRYPTO=y | 1844 | CONFIG_CRYPTO=y |
1779 | 1845 | ||
1780 | # | 1846 | # |
diff --git a/arch/powerpc/configs/mpc7448_hpc2_defconfig b/arch/powerpc/configs/mpc7448_hpc2_defconfig index d8b364a45944..1315b775a6d2 100644 --- a/arch/powerpc/configs/mpc7448_hpc2_defconfig +++ b/arch/powerpc/configs/mpc7448_hpc2_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:10 2009 | 4 | # Wed Jan 6 09:24:04 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -36,6 +36,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
38 | CONFIG_IRQ_PER_CPU=y | 38 | CONFIG_IRQ_PER_CPU=y |
39 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | 40 | CONFIG_STACKTRACE_SUPPORT=y |
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y | |||
58 | CONFIG_GENERIC_BUG=y | 59 | CONFIG_GENERIC_BUG=y |
59 | CONFIG_DTC=y | 60 | CONFIG_DTC=y |
60 | CONFIG_DEFAULT_UIMAGE=y | 61 | CONFIG_DEFAULT_UIMAGE=y |
62 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
61 | # CONFIG_PPC_DCR_NATIVE is not set | 63 | # CONFIG_PPC_DCR_NATIVE is not set |
62 | # CONFIG_PPC_DCR_MMIO is not set | 64 | # CONFIG_PPC_DCR_MMIO is not set |
63 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 65 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
85 | # | 87 | # |
86 | CONFIG_TREE_RCU=y | 88 | CONFIG_TREE_RCU=y |
87 | # CONFIG_TREE_PREEMPT_RCU is not set | 89 | # CONFIG_TREE_PREEMPT_RCU is not set |
90 | # CONFIG_TINY_RCU is not set | ||
88 | # CONFIG_RCU_TRACE is not set | 91 | # CONFIG_RCU_TRACE is not set |
89 | CONFIG_RCU_FANOUT=32 | 92 | CONFIG_RCU_FANOUT=32 |
90 | # CONFIG_RCU_FANOUT_EXACT is not set | 93 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -167,14 +170,41 @@ CONFIG_LBDAF=y | |||
167 | # IO Schedulers | 170 | # IO Schedulers |
168 | # | 171 | # |
169 | CONFIG_IOSCHED_NOOP=y | 172 | CONFIG_IOSCHED_NOOP=y |
170 | CONFIG_IOSCHED_AS=y | ||
171 | CONFIG_IOSCHED_DEADLINE=y | 173 | CONFIG_IOSCHED_DEADLINE=y |
172 | CONFIG_IOSCHED_CFQ=y | 174 | CONFIG_IOSCHED_CFQ=y |
173 | CONFIG_DEFAULT_AS=y | ||
174 | # CONFIG_DEFAULT_DEADLINE is not set | 175 | # CONFIG_DEFAULT_DEADLINE is not set |
175 | # CONFIG_DEFAULT_CFQ is not set | 176 | CONFIG_DEFAULT_CFQ=y |
176 | # CONFIG_DEFAULT_NOOP is not set | 177 | # CONFIG_DEFAULT_NOOP is not set |
177 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 178 | CONFIG_DEFAULT_IOSCHED="cfq" |
179 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
180 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
181 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
182 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
183 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
184 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
185 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
186 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
187 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
188 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
189 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
190 | # CONFIG_INLINE_READ_LOCK is not set | ||
191 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
192 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
193 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
194 | CONFIG_INLINE_READ_UNLOCK=y | ||
195 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
196 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
197 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
198 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
199 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
200 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
201 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
202 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
203 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
204 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
205 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
206 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
207 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
178 | # CONFIG_FREEZER is not set | 208 | # CONFIG_FREEZER is not set |
179 | 209 | ||
180 | # | 210 | # |
@@ -199,6 +229,8 @@ CONFIG_MPC7448HPC2=y | |||
199 | # CONFIG_PPC_PRPMC2800 is not set | 229 | # CONFIG_PPC_PRPMC2800 is not set |
200 | # CONFIG_PPC_C2K is not set | 230 | # CONFIG_PPC_C2K is not set |
201 | CONFIG_TSI108_BRIDGE=y | 231 | CONFIG_TSI108_BRIDGE=y |
232 | # CONFIG_GAMECUBE is not set | ||
233 | # CONFIG_WII is not set | ||
202 | # CONFIG_AMIGAONE is not set | 234 | # CONFIG_AMIGAONE is not set |
203 | CONFIG_PPC_OF_BOOT_TRAMPOLINE=y | 235 | CONFIG_PPC_OF_BOOT_TRAMPOLINE=y |
204 | # CONFIG_IPIC is not set | 236 | # CONFIG_IPIC is not set |
@@ -244,6 +276,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
244 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 276 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
245 | # CONFIG_KEXEC is not set | 277 | # CONFIG_KEXEC is not set |
246 | # CONFIG_CRASH_DUMP is not set | 278 | # CONFIG_CRASH_DUMP is not set |
279 | CONFIG_SPARSE_IRQ=y | ||
247 | CONFIG_MAX_ACTIVE_REGIONS=32 | 280 | CONFIG_MAX_ACTIVE_REGIONS=32 |
248 | CONFIG_ARCH_FLATMEM_ENABLE=y | 281 | CONFIG_ARCH_FLATMEM_ENABLE=y |
249 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 282 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -260,8 +293,6 @@ CONFIG_MIGRATION=y | |||
260 | CONFIG_ZONE_DMA_FLAG=1 | 293 | CONFIG_ZONE_DMA_FLAG=1 |
261 | CONFIG_BOUNCE=y | 294 | CONFIG_BOUNCE=y |
262 | CONFIG_VIRT_TO_BUS=y | 295 | CONFIG_VIRT_TO_BUS=y |
263 | CONFIG_HAVE_MLOCK=y | ||
264 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
265 | # CONFIG_KSM is not set | 296 | # CONFIG_KSM is not set |
266 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 297 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
267 | CONFIG_PPC_4K_PAGES=y | 298 | CONFIG_PPC_4K_PAGES=y |
@@ -385,9 +416,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
385 | # CONFIG_AF_RXRPC is not set | 416 | # CONFIG_AF_RXRPC is not set |
386 | CONFIG_WIRELESS=y | 417 | CONFIG_WIRELESS=y |
387 | # CONFIG_CFG80211 is not set | 418 | # CONFIG_CFG80211 is not set |
388 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
389 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
390 | # CONFIG_WIRELESS_EXT is not set | ||
391 | # CONFIG_LIB80211 is not set | 419 | # CONFIG_LIB80211 is not set |
392 | 420 | ||
393 | # | 421 | # |
@@ -424,6 +452,10 @@ CONFIG_BLK_DEV=y | |||
424 | # CONFIG_BLK_DEV_COW_COMMON is not set | 452 | # CONFIG_BLK_DEV_COW_COMMON is not set |
425 | CONFIG_BLK_DEV_LOOP=y | 453 | CONFIG_BLK_DEV_LOOP=y |
426 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 454 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
455 | |||
456 | # | ||
457 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
458 | # | ||
427 | # CONFIG_BLK_DEV_NBD is not set | 459 | # CONFIG_BLK_DEV_NBD is not set |
428 | # CONFIG_BLK_DEV_SX8 is not set | 460 | # CONFIG_BLK_DEV_SX8 is not set |
429 | CONFIG_BLK_DEV_RAM=y | 461 | CONFIG_BLK_DEV_RAM=y |
@@ -487,7 +519,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
487 | # CONFIG_SCSI_BNX2_ISCSI is not set | 519 | # CONFIG_SCSI_BNX2_ISCSI is not set |
488 | # CONFIG_BE2ISCSI is not set | 520 | # CONFIG_BE2ISCSI is not set |
489 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 521 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
522 | # CONFIG_SCSI_HPSA is not set | ||
490 | # CONFIG_SCSI_3W_9XXX is not set | 523 | # CONFIG_SCSI_3W_9XXX is not set |
524 | # CONFIG_SCSI_3W_SAS is not set | ||
491 | # CONFIG_SCSI_ACARD is not set | 525 | # CONFIG_SCSI_ACARD is not set |
492 | # CONFIG_SCSI_AACRAID is not set | 526 | # CONFIG_SCSI_AACRAID is not set |
493 | # CONFIG_SCSI_AIC7XXX is not set | 527 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -526,6 +560,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
526 | # CONFIG_SCSI_NSP32 is not set | 560 | # CONFIG_SCSI_NSP32 is not set |
527 | # CONFIG_SCSI_DEBUG is not set | 561 | # CONFIG_SCSI_DEBUG is not set |
528 | # CONFIG_SCSI_PMCRAID is not set | 562 | # CONFIG_SCSI_PMCRAID is not set |
563 | # CONFIG_SCSI_PM8001 is not set | ||
529 | # CONFIG_SCSI_SRP is not set | 564 | # CONFIG_SCSI_SRP is not set |
530 | # CONFIG_SCSI_BFA_FC is not set | 565 | # CONFIG_SCSI_BFA_FC is not set |
531 | # CONFIG_SCSI_DH is not set | 566 | # CONFIG_SCSI_DH is not set |
@@ -580,15 +615,16 @@ CONFIG_SATA_MV=y | |||
580 | # CONFIG_PATA_NS87415 is not set | 615 | # CONFIG_PATA_NS87415 is not set |
581 | # CONFIG_PATA_OPTI is not set | 616 | # CONFIG_PATA_OPTI is not set |
582 | # CONFIG_PATA_OPTIDMA is not set | 617 | # CONFIG_PATA_OPTIDMA is not set |
618 | # CONFIG_PATA_PDC2027X is not set | ||
583 | # CONFIG_PATA_PDC_OLD is not set | 619 | # CONFIG_PATA_PDC_OLD is not set |
584 | # CONFIG_PATA_RADISYS is not set | 620 | # CONFIG_PATA_RADISYS is not set |
585 | # CONFIG_PATA_RDC is not set | 621 | # CONFIG_PATA_RDC is not set |
586 | # CONFIG_PATA_RZ1000 is not set | 622 | # CONFIG_PATA_RZ1000 is not set |
587 | # CONFIG_PATA_SC1200 is not set | 623 | # CONFIG_PATA_SC1200 is not set |
588 | # CONFIG_PATA_SERVERWORKS is not set | 624 | # CONFIG_PATA_SERVERWORKS is not set |
589 | # CONFIG_PATA_PDC2027X is not set | ||
590 | # CONFIG_PATA_SIL680 is not set | 625 | # CONFIG_PATA_SIL680 is not set |
591 | # CONFIG_PATA_SIS is not set | 626 | # CONFIG_PATA_SIS is not set |
627 | # CONFIG_PATA_TOSHIBA is not set | ||
592 | # CONFIG_PATA_VIA is not set | 628 | # CONFIG_PATA_VIA is not set |
593 | # CONFIG_PATA_WINBOND is not set | 629 | # CONFIG_PATA_WINBOND is not set |
594 | # CONFIG_PATA_PLATFORM is not set | 630 | # CONFIG_PATA_PLATFORM is not set |
@@ -605,7 +641,7 @@ CONFIG_SATA_MV=y | |||
605 | # | 641 | # |
606 | 642 | ||
607 | # | 643 | # |
608 | # See the help texts for more information. | 644 | # The newer stack is recommended. |
609 | # | 645 | # |
610 | # CONFIG_FIREWIRE is not set | 646 | # CONFIG_FIREWIRE is not set |
611 | # CONFIG_IEEE1394 is not set | 647 | # CONFIG_IEEE1394 is not set |
@@ -731,8 +767,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
731 | # CONFIG_BE2NET is not set | 767 | # CONFIG_BE2NET is not set |
732 | # CONFIG_TR is not set | 768 | # CONFIG_TR is not set |
733 | CONFIG_WLAN=y | 769 | CONFIG_WLAN=y |
734 | # CONFIG_WLAN_PRE80211 is not set | 770 | # CONFIG_AIRO is not set |
735 | # CONFIG_WLAN_80211 is not set | 771 | # CONFIG_ATMEL is not set |
772 | # CONFIG_PRISM54 is not set | ||
773 | # CONFIG_HOSTAP is not set | ||
736 | 774 | ||
737 | # | 775 | # |
738 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 776 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -746,6 +784,7 @@ CONFIG_WLAN=y | |||
746 | # CONFIG_NETCONSOLE is not set | 784 | # CONFIG_NETCONSOLE is not set |
747 | # CONFIG_NETPOLL is not set | 785 | # CONFIG_NETPOLL is not set |
748 | # CONFIG_NET_POLL_CONTROLLER is not set | 786 | # CONFIG_NET_POLL_CONTROLLER is not set |
787 | # CONFIG_VMXNET3 is not set | ||
749 | # CONFIG_ISDN is not set | 788 | # CONFIG_ISDN is not set |
750 | # CONFIG_PHONE is not set | 789 | # CONFIG_PHONE is not set |
751 | 790 | ||
@@ -755,6 +794,7 @@ CONFIG_WLAN=y | |||
755 | CONFIG_INPUT=y | 794 | CONFIG_INPUT=y |
756 | # CONFIG_INPUT_FF_MEMLESS is not set | 795 | # CONFIG_INPUT_FF_MEMLESS is not set |
757 | # CONFIG_INPUT_POLLDEV is not set | 796 | # CONFIG_INPUT_POLLDEV is not set |
797 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
758 | 798 | ||
759 | # | 799 | # |
760 | # Userland interfaces | 800 | # Userland interfaces |
@@ -806,6 +846,7 @@ CONFIG_SERIAL_CORE=y | |||
806 | CONFIG_SERIAL_CORE_CONSOLE=y | 846 | CONFIG_SERIAL_CORE_CONSOLE=y |
807 | # CONFIG_SERIAL_JSM is not set | 847 | # CONFIG_SERIAL_JSM is not set |
808 | # CONFIG_SERIAL_OF_PLATFORM is not set | 848 | # CONFIG_SERIAL_OF_PLATFORM is not set |
849 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
809 | CONFIG_UNIX98_PTYS=y | 850 | CONFIG_UNIX98_PTYS=y |
810 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 851 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
811 | CONFIG_LEGACY_PTYS=y | 852 | CONFIG_LEGACY_PTYS=y |
@@ -1091,7 +1132,7 @@ CONFIG_FRAME_WARN=1024 | |||
1091 | # CONFIG_DEBUG_KERNEL is not set | 1132 | # CONFIG_DEBUG_KERNEL is not set |
1092 | # CONFIG_SLUB_DEBUG_ON is not set | 1133 | # CONFIG_SLUB_DEBUG_ON is not set |
1093 | # CONFIG_SLUB_STATS is not set | 1134 | # CONFIG_SLUB_STATS is not set |
1094 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1135 | CONFIG_DEBUG_BUGVERBOSE=y |
1095 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1136 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1096 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1137 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1097 | # CONFIG_LATENCYTOP is not set | 1138 | # CONFIG_LATENCYTOP is not set |
@@ -1118,7 +1159,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1118 | # CONFIG_KEYS is not set | 1159 | # CONFIG_KEYS is not set |
1119 | # CONFIG_SECURITY is not set | 1160 | # CONFIG_SECURITY is not set |
1120 | # CONFIG_SECURITYFS is not set | 1161 | # CONFIG_SECURITYFS is not set |
1121 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1162 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1163 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1164 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1165 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1166 | CONFIG_DEFAULT_SECURITY="" | ||
1122 | CONFIG_CRYPTO=y | 1167 | CONFIG_CRYPTO=y |
1123 | 1168 | ||
1124 | # | 1169 | # |
diff --git a/arch/powerpc/configs/mpc8272_ads_defconfig b/arch/powerpc/configs/mpc8272_ads_defconfig index 00fad81b6fce..9073778d3575 100644 --- a/arch/powerpc/configs/mpc8272_ads_defconfig +++ b/arch/powerpc/configs/mpc8272_ads_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:11 2009 | 4 | # Wed Jan 6 09:24:05 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -36,6 +36,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
38 | CONFIG_IRQ_PER_CPU=y | 38 | CONFIG_IRQ_PER_CPU=y |
39 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | 40 | CONFIG_STACKTRACE_SUPPORT=y |
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | # CONFIG_PPC_DCR_NATIVE is not set | 64 | # CONFIG_PPC_DCR_NATIVE is not set |
63 | # CONFIG_PPC_DCR_MMIO is not set | 65 | # CONFIG_PPC_DCR_MMIO is not set |
64 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
85 | # | 87 | # |
86 | CONFIG_TREE_RCU=y | 88 | CONFIG_TREE_RCU=y |
87 | # CONFIG_TREE_PREEMPT_RCU is not set | 89 | # CONFIG_TREE_PREEMPT_RCU is not set |
90 | # CONFIG_TINY_RCU is not set | ||
88 | # CONFIG_RCU_TRACE is not set | 91 | # CONFIG_RCU_TRACE is not set |
89 | CONFIG_RCU_FANOUT=32 | 92 | CONFIG_RCU_FANOUT=32 |
90 | # CONFIG_RCU_FANOUT_EXACT is not set | 93 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -161,14 +164,41 @@ CONFIG_BLK_DEV_BSG=y | |||
161 | # IO Schedulers | 164 | # IO Schedulers |
162 | # | 165 | # |
163 | CONFIG_IOSCHED_NOOP=y | 166 | CONFIG_IOSCHED_NOOP=y |
164 | CONFIG_IOSCHED_AS=y | ||
165 | CONFIG_IOSCHED_DEADLINE=y | 167 | CONFIG_IOSCHED_DEADLINE=y |
166 | CONFIG_IOSCHED_CFQ=y | 168 | CONFIG_IOSCHED_CFQ=y |
167 | CONFIG_DEFAULT_AS=y | ||
168 | # CONFIG_DEFAULT_DEADLINE is not set | 169 | # CONFIG_DEFAULT_DEADLINE is not set |
169 | # CONFIG_DEFAULT_CFQ is not set | 170 | CONFIG_DEFAULT_CFQ=y |
170 | # CONFIG_DEFAULT_NOOP is not set | 171 | # CONFIG_DEFAULT_NOOP is not set |
171 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 172 | CONFIG_DEFAULT_IOSCHED="cfq" |
173 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
174 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
175 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
176 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
177 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
178 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
179 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
180 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
181 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
182 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
183 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
184 | # CONFIG_INLINE_READ_LOCK is not set | ||
185 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
186 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
187 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
188 | CONFIG_INLINE_READ_UNLOCK=y | ||
189 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
190 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
191 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
192 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
193 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
194 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
195 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
196 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
197 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
198 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
199 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
200 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
201 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
172 | # CONFIG_FREEZER is not set | 202 | # CONFIG_FREEZER is not set |
173 | 203 | ||
174 | # | 204 | # |
@@ -240,6 +270,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | |||
240 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 270 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
241 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 271 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
242 | # CONFIG_CRASH_DUMP is not set | 272 | # CONFIG_CRASH_DUMP is not set |
273 | CONFIG_SPARSE_IRQ=y | ||
243 | CONFIG_MAX_ACTIVE_REGIONS=32 | 274 | CONFIG_MAX_ACTIVE_REGIONS=32 |
244 | CONFIG_ARCH_FLATMEM_ENABLE=y | 275 | CONFIG_ARCH_FLATMEM_ENABLE=y |
245 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 276 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -252,8 +283,6 @@ CONFIG_MIGRATION=y | |||
252 | CONFIG_ZONE_DMA_FLAG=1 | 283 | CONFIG_ZONE_DMA_FLAG=1 |
253 | CONFIG_BOUNCE=y | 284 | CONFIG_BOUNCE=y |
254 | CONFIG_VIRT_TO_BUS=y | 285 | CONFIG_VIRT_TO_BUS=y |
255 | CONFIG_HAVE_MLOCK=y | ||
256 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
257 | # CONFIG_KSM is not set | 286 | # CONFIG_KSM is not set |
258 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 287 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
259 | CONFIG_PPC_4K_PAGES=y | 288 | CONFIG_PPC_4K_PAGES=y |
@@ -403,9 +432,6 @@ CONFIG_NETFILTER_ADVANCED=y | |||
403 | # CONFIG_BT is not set | 432 | # CONFIG_BT is not set |
404 | CONFIG_WIRELESS=y | 433 | CONFIG_WIRELESS=y |
405 | # CONFIG_CFG80211 is not set | 434 | # CONFIG_CFG80211 is not set |
406 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
407 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
408 | # CONFIG_WIRELESS_EXT is not set | ||
409 | # CONFIG_LIB80211 is not set | 435 | # CONFIG_LIB80211 is not set |
410 | 436 | ||
411 | # | 437 | # |
@@ -526,6 +552,10 @@ CONFIG_BLK_DEV=y | |||
526 | # CONFIG_BLK_DEV_COW_COMMON is not set | 552 | # CONFIG_BLK_DEV_COW_COMMON is not set |
527 | CONFIG_BLK_DEV_LOOP=y | 553 | CONFIG_BLK_DEV_LOOP=y |
528 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 554 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
555 | |||
556 | # | ||
557 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
558 | # | ||
529 | # CONFIG_BLK_DEV_NBD is not set | 559 | # CONFIG_BLK_DEV_NBD is not set |
530 | # CONFIG_BLK_DEV_SX8 is not set | 560 | # CONFIG_BLK_DEV_SX8 is not set |
531 | # CONFIG_BLK_DEV_RAM is not set | 561 | # CONFIG_BLK_DEV_RAM is not set |
@@ -556,7 +586,7 @@ CONFIG_HAVE_IDE=y | |||
556 | # | 586 | # |
557 | 587 | ||
558 | # | 588 | # |
559 | # See the help texts for more information. | 589 | # The newer stack is recommended. |
560 | # | 590 | # |
561 | # CONFIG_FIREWIRE is not set | 591 | # CONFIG_FIREWIRE is not set |
562 | # CONFIG_IEEE1394 is not set | 592 | # CONFIG_IEEE1394 is not set |
@@ -661,8 +691,9 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
661 | # CONFIG_BE2NET is not set | 691 | # CONFIG_BE2NET is not set |
662 | # CONFIG_TR is not set | 692 | # CONFIG_TR is not set |
663 | CONFIG_WLAN=y | 693 | CONFIG_WLAN=y |
664 | # CONFIG_WLAN_PRE80211 is not set | 694 | # CONFIG_AIRO is not set |
665 | # CONFIG_WLAN_80211 is not set | 695 | # CONFIG_ATMEL is not set |
696 | # CONFIG_HOSTAP is not set | ||
666 | 697 | ||
667 | # | 698 | # |
668 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 699 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -679,6 +710,7 @@ CONFIG_PPP_DEFLATE=y | |||
679 | CONFIG_SLHC=y | 710 | CONFIG_SLHC=y |
680 | # CONFIG_NETPOLL is not set | 711 | # CONFIG_NETPOLL is not set |
681 | # CONFIG_NET_POLL_CONTROLLER is not set | 712 | # CONFIG_NET_POLL_CONTROLLER is not set |
713 | # CONFIG_VMXNET3 is not set | ||
682 | # CONFIG_ISDN is not set | 714 | # CONFIG_ISDN is not set |
683 | # CONFIG_PHONE is not set | 715 | # CONFIG_PHONE is not set |
684 | 716 | ||
@@ -688,6 +720,7 @@ CONFIG_SLHC=y | |||
688 | CONFIG_INPUT=y | 720 | CONFIG_INPUT=y |
689 | # CONFIG_INPUT_FF_MEMLESS is not set | 721 | # CONFIG_INPUT_FF_MEMLESS is not set |
690 | # CONFIG_INPUT_POLLDEV is not set | 722 | # CONFIG_INPUT_POLLDEV is not set |
723 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
691 | 724 | ||
692 | # | 725 | # |
693 | # Userland interfaces | 726 | # Userland interfaces |
@@ -740,6 +773,7 @@ CONFIG_SERIO_SERPORT=y | |||
740 | CONFIG_SERIO_LIBPS2=y | 773 | CONFIG_SERIO_LIBPS2=y |
741 | # CONFIG_SERIO_RAW is not set | 774 | # CONFIG_SERIO_RAW is not set |
742 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | 775 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set |
776 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
743 | # CONFIG_GAMEPORT is not set | 777 | # CONFIG_GAMEPORT is not set |
744 | 778 | ||
745 | # | 779 | # |
@@ -763,6 +797,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
763 | CONFIG_SERIAL_CPM=y | 797 | CONFIG_SERIAL_CPM=y |
764 | CONFIG_SERIAL_CPM_CONSOLE=y | 798 | CONFIG_SERIAL_CPM_CONSOLE=y |
765 | # CONFIG_SERIAL_JSM is not set | 799 | # CONFIG_SERIAL_JSM is not set |
800 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
766 | CONFIG_UNIX98_PTYS=y | 801 | CONFIG_UNIX98_PTYS=y |
767 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 802 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
768 | CONFIG_LEGACY_PTYS=y | 803 | CONFIG_LEGACY_PTYS=y |
@@ -799,6 +834,7 @@ CONFIG_GPIOLIB=y | |||
799 | # | 834 | # |
800 | # PCI GPIO expanders: | 835 | # PCI GPIO expanders: |
801 | # | 836 | # |
837 | # CONFIG_GPIO_CS5535 is not set | ||
802 | # CONFIG_GPIO_BT8XX is not set | 838 | # CONFIG_GPIO_BT8XX is not set |
803 | # CONFIG_GPIO_LANGWELL is not set | 839 | # CONFIG_GPIO_LANGWELL is not set |
804 | 840 | ||
@@ -1131,7 +1167,11 @@ CONFIG_BDI_SWITCH=y | |||
1131 | # CONFIG_KEYS is not set | 1167 | # CONFIG_KEYS is not set |
1132 | # CONFIG_SECURITY is not set | 1168 | # CONFIG_SECURITY is not set |
1133 | # CONFIG_SECURITYFS is not set | 1169 | # CONFIG_SECURITYFS is not set |
1134 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1170 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1171 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1172 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1173 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1174 | CONFIG_DEFAULT_SECURITY="" | ||
1135 | CONFIG_CRYPTO=y | 1175 | CONFIG_CRYPTO=y |
1136 | 1176 | ||
1137 | # | 1177 | # |
diff --git a/arch/powerpc/configs/mpc83xx_defconfig b/arch/powerpc/configs/mpc83xx_defconfig index 64dff21516cb..05bec4835687 100644 --- a/arch/powerpc/configs/mpc83xx_defconfig +++ b/arch/powerpc/configs/mpc83xx_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:12 2009 | 4 | # Wed Jan 6 09:24:06 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -37,6 +37,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 37 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 38 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
39 | CONFIG_IRQ_PER_CPU=y | 39 | CONFIG_IRQ_PER_CPU=y |
40 | CONFIG_NR_IRQS=512 | ||
40 | CONFIG_STACKTRACE_SUPPORT=y | 41 | CONFIG_STACKTRACE_SUPPORT=y |
41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -61,6 +62,7 @@ CONFIG_GENERIC_BUG=y | |||
61 | CONFIG_DTC=y | 62 | CONFIG_DTC=y |
62 | CONFIG_DEFAULT_UIMAGE=y | 63 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_REDBOOT=y | 64 | CONFIG_REDBOOT=y |
65 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
64 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 66 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
65 | # CONFIG_PPC_DCR_NATIVE is not set | 67 | # CONFIG_PPC_DCR_NATIVE is not set |
66 | # CONFIG_PPC_DCR_MMIO is not set | 68 | # CONFIG_PPC_DCR_MMIO is not set |
@@ -89,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
89 | # | 91 | # |
90 | CONFIG_TREE_RCU=y | 92 | CONFIG_TREE_RCU=y |
91 | # CONFIG_TREE_PREEMPT_RCU is not set | 93 | # CONFIG_TREE_PREEMPT_RCU is not set |
94 | # CONFIG_TINY_RCU is not set | ||
92 | # CONFIG_RCU_TRACE is not set | 95 | # CONFIG_RCU_TRACE is not set |
93 | CONFIG_RCU_FANOUT=32 | 96 | CONFIG_RCU_FANOUT=32 |
94 | # CONFIG_RCU_FANOUT_EXACT is not set | 97 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -176,14 +179,41 @@ CONFIG_LBDAF=y | |||
176 | # IO Schedulers | 179 | # IO Schedulers |
177 | # | 180 | # |
178 | CONFIG_IOSCHED_NOOP=y | 181 | CONFIG_IOSCHED_NOOP=y |
179 | CONFIG_IOSCHED_AS=y | ||
180 | CONFIG_IOSCHED_DEADLINE=y | 182 | CONFIG_IOSCHED_DEADLINE=y |
181 | CONFIG_IOSCHED_CFQ=y | 183 | CONFIG_IOSCHED_CFQ=y |
182 | CONFIG_DEFAULT_AS=y | ||
183 | # CONFIG_DEFAULT_DEADLINE is not set | 184 | # CONFIG_DEFAULT_DEADLINE is not set |
184 | # CONFIG_DEFAULT_CFQ is not set | 185 | CONFIG_DEFAULT_CFQ=y |
185 | # CONFIG_DEFAULT_NOOP is not set | 186 | # CONFIG_DEFAULT_NOOP is not set |
186 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 187 | CONFIG_DEFAULT_IOSCHED="cfq" |
188 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
189 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
191 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
192 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
193 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
194 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
195 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
196 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
197 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
198 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
199 | # CONFIG_INLINE_READ_LOCK is not set | ||
200 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
201 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
202 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
203 | CONFIG_INLINE_READ_UNLOCK=y | ||
204 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
205 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
206 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
207 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
209 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
210 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
211 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
212 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
213 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
214 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
215 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
216 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
187 | # CONFIG_FREEZER is not set | 217 | # CONFIG_FREEZER is not set |
188 | 218 | ||
189 | # | 219 | # |
@@ -266,6 +296,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
266 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 296 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
267 | # CONFIG_KEXEC is not set | 297 | # CONFIG_KEXEC is not set |
268 | # CONFIG_CRASH_DUMP is not set | 298 | # CONFIG_CRASH_DUMP is not set |
299 | CONFIG_SPARSE_IRQ=y | ||
269 | CONFIG_MAX_ACTIVE_REGIONS=32 | 300 | CONFIG_MAX_ACTIVE_REGIONS=32 |
270 | CONFIG_ARCH_FLATMEM_ENABLE=y | 301 | CONFIG_ARCH_FLATMEM_ENABLE=y |
271 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 302 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -282,8 +313,6 @@ CONFIG_MIGRATION=y | |||
282 | CONFIG_ZONE_DMA_FLAG=1 | 313 | CONFIG_ZONE_DMA_FLAG=1 |
283 | CONFIG_BOUNCE=y | 314 | CONFIG_BOUNCE=y |
284 | CONFIG_VIRT_TO_BUS=y | 315 | CONFIG_VIRT_TO_BUS=y |
285 | CONFIG_HAVE_MLOCK=y | ||
286 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
287 | # CONFIG_KSM is not set | 316 | # CONFIG_KSM is not set |
288 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 317 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
289 | CONFIG_PPC_4K_PAGES=y | 318 | CONFIG_PPC_4K_PAGES=y |
@@ -413,9 +442,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
413 | # CONFIG_AF_RXRPC is not set | 442 | # CONFIG_AF_RXRPC is not set |
414 | CONFIG_WIRELESS=y | 443 | CONFIG_WIRELESS=y |
415 | # CONFIG_CFG80211 is not set | 444 | # CONFIG_CFG80211 is not set |
416 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
417 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
418 | # CONFIG_WIRELESS_EXT is not set | ||
419 | # CONFIG_LIB80211 is not set | 445 | # CONFIG_LIB80211 is not set |
420 | 446 | ||
421 | # | 447 | # |
@@ -548,6 +574,10 @@ CONFIG_BLK_DEV=y | |||
548 | # CONFIG_BLK_DEV_COW_COMMON is not set | 574 | # CONFIG_BLK_DEV_COW_COMMON is not set |
549 | CONFIG_BLK_DEV_LOOP=y | 575 | CONFIG_BLK_DEV_LOOP=y |
550 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 576 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
577 | |||
578 | # | ||
579 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
580 | # | ||
551 | # CONFIG_BLK_DEV_NBD is not set | 581 | # CONFIG_BLK_DEV_NBD is not set |
552 | # CONFIG_BLK_DEV_SX8 is not set | 582 | # CONFIG_BLK_DEV_SX8 is not set |
553 | # CONFIG_BLK_DEV_UB is not set | 583 | # CONFIG_BLK_DEV_UB is not set |
@@ -559,6 +589,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768 | |||
559 | # CONFIG_ATA_OVER_ETH is not set | 589 | # CONFIG_ATA_OVER_ETH is not set |
560 | # CONFIG_BLK_DEV_HD is not set | 590 | # CONFIG_BLK_DEV_HD is not set |
561 | CONFIG_MISC_DEVICES=y | 591 | CONFIG_MISC_DEVICES=y |
592 | # CONFIG_AD525X_DPOT is not set | ||
562 | # CONFIG_PHANTOM is not set | 593 | # CONFIG_PHANTOM is not set |
563 | # CONFIG_SGI_IOC4 is not set | 594 | # CONFIG_SGI_IOC4 is not set |
564 | # CONFIG_TIFM_CORE is not set | 595 | # CONFIG_TIFM_CORE is not set |
@@ -566,6 +597,7 @@ CONFIG_MISC_DEVICES=y | |||
566 | # CONFIG_ENCLOSURE_SERVICES is not set | 597 | # CONFIG_ENCLOSURE_SERVICES is not set |
567 | # CONFIG_HP_ILO is not set | 598 | # CONFIG_HP_ILO is not set |
568 | # CONFIG_ISL29003 is not set | 599 | # CONFIG_ISL29003 is not set |
600 | # CONFIG_DS1682 is not set | ||
569 | # CONFIG_C2PORT is not set | 601 | # CONFIG_C2PORT is not set |
570 | 602 | ||
571 | # | 603 | # |
@@ -618,7 +650,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
618 | # CONFIG_SCSI_BNX2_ISCSI is not set | 650 | # CONFIG_SCSI_BNX2_ISCSI is not set |
619 | # CONFIG_BE2ISCSI is not set | 651 | # CONFIG_BE2ISCSI is not set |
620 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 652 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
653 | # CONFIG_SCSI_HPSA is not set | ||
621 | # CONFIG_SCSI_3W_9XXX is not set | 654 | # CONFIG_SCSI_3W_9XXX is not set |
655 | # CONFIG_SCSI_3W_SAS is not set | ||
622 | # CONFIG_SCSI_ACARD is not set | 656 | # CONFIG_SCSI_ACARD is not set |
623 | # CONFIG_SCSI_AACRAID is not set | 657 | # CONFIG_SCSI_AACRAID is not set |
624 | # CONFIG_SCSI_AIC7XXX is not set | 658 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -657,6 +691,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
657 | # CONFIG_SCSI_NSP32 is not set | 691 | # CONFIG_SCSI_NSP32 is not set |
658 | # CONFIG_SCSI_DEBUG is not set | 692 | # CONFIG_SCSI_DEBUG is not set |
659 | # CONFIG_SCSI_PMCRAID is not set | 693 | # CONFIG_SCSI_PMCRAID is not set |
694 | # CONFIG_SCSI_PM8001 is not set | ||
660 | # CONFIG_SCSI_SRP is not set | 695 | # CONFIG_SCSI_SRP is not set |
661 | # CONFIG_SCSI_BFA_FC is not set | 696 | # CONFIG_SCSI_BFA_FC is not set |
662 | # CONFIG_SCSI_DH is not set | 697 | # CONFIG_SCSI_DH is not set |
@@ -712,15 +747,16 @@ CONFIG_ATA_SFF=y | |||
712 | # CONFIG_PATA_NS87415 is not set | 747 | # CONFIG_PATA_NS87415 is not set |
713 | # CONFIG_PATA_OPTI is not set | 748 | # CONFIG_PATA_OPTI is not set |
714 | # CONFIG_PATA_OPTIDMA is not set | 749 | # CONFIG_PATA_OPTIDMA is not set |
750 | # CONFIG_PATA_PDC2027X is not set | ||
715 | # CONFIG_PATA_PDC_OLD is not set | 751 | # CONFIG_PATA_PDC_OLD is not set |
716 | # CONFIG_PATA_RADISYS is not set | 752 | # CONFIG_PATA_RADISYS is not set |
717 | # CONFIG_PATA_RDC is not set | 753 | # CONFIG_PATA_RDC is not set |
718 | # CONFIG_PATA_RZ1000 is not set | 754 | # CONFIG_PATA_RZ1000 is not set |
719 | # CONFIG_PATA_SC1200 is not set | 755 | # CONFIG_PATA_SC1200 is not set |
720 | # CONFIG_PATA_SERVERWORKS is not set | 756 | # CONFIG_PATA_SERVERWORKS is not set |
721 | # CONFIG_PATA_PDC2027X is not set | ||
722 | # CONFIG_PATA_SIL680 is not set | 757 | # CONFIG_PATA_SIL680 is not set |
723 | # CONFIG_PATA_SIS is not set | 758 | # CONFIG_PATA_SIS is not set |
759 | # CONFIG_PATA_TOSHIBA is not set | ||
724 | # CONFIG_PATA_VIA is not set | 760 | # CONFIG_PATA_VIA is not set |
725 | # CONFIG_PATA_WINBOND is not set | 761 | # CONFIG_PATA_WINBOND is not set |
726 | # CONFIG_PATA_PLATFORM is not set | 762 | # CONFIG_PATA_PLATFORM is not set |
@@ -737,7 +773,7 @@ CONFIG_ATA_SFF=y | |||
737 | # | 773 | # |
738 | 774 | ||
739 | # | 775 | # |
740 | # See the help texts for more information. | 776 | # The newer stack is recommended. |
741 | # | 777 | # |
742 | # CONFIG_FIREWIRE is not set | 778 | # CONFIG_FIREWIRE is not set |
743 | # CONFIG_IEEE1394 is not set | 779 | # CONFIG_IEEE1394 is not set |
@@ -844,8 +880,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
844 | # CONFIG_BE2NET is not set | 880 | # CONFIG_BE2NET is not set |
845 | # CONFIG_TR is not set | 881 | # CONFIG_TR is not set |
846 | CONFIG_WLAN=y | 882 | CONFIG_WLAN=y |
847 | # CONFIG_WLAN_PRE80211 is not set | 883 | # CONFIG_AIRO is not set |
848 | # CONFIG_WLAN_80211 is not set | 884 | # CONFIG_ATMEL is not set |
885 | # CONFIG_PRISM54 is not set | ||
886 | # CONFIG_USB_ZD1201 is not set | ||
887 | # CONFIG_HOSTAP is not set | ||
849 | 888 | ||
850 | # | 889 | # |
851 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 890 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -868,6 +907,7 @@ CONFIG_WLAN=y | |||
868 | # CONFIG_NETCONSOLE is not set | 907 | # CONFIG_NETCONSOLE is not set |
869 | # CONFIG_NETPOLL is not set | 908 | # CONFIG_NETPOLL is not set |
870 | # CONFIG_NET_POLL_CONTROLLER is not set | 909 | # CONFIG_NET_POLL_CONTROLLER is not set |
910 | # CONFIG_VMXNET3 is not set | ||
871 | # CONFIG_ISDN is not set | 911 | # CONFIG_ISDN is not set |
872 | # CONFIG_PHONE is not set | 912 | # CONFIG_PHONE is not set |
873 | 913 | ||
@@ -877,6 +917,7 @@ CONFIG_WLAN=y | |||
877 | CONFIG_INPUT=y | 917 | CONFIG_INPUT=y |
878 | CONFIG_INPUT_FF_MEMLESS=m | 918 | CONFIG_INPUT_FF_MEMLESS=m |
879 | # CONFIG_INPUT_POLLDEV is not set | 919 | # CONFIG_INPUT_POLLDEV is not set |
920 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
880 | 921 | ||
881 | # | 922 | # |
882 | # Userland interfaces | 923 | # Userland interfaces |
@@ -929,6 +970,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
929 | # CONFIG_SERIAL_JSM is not set | 970 | # CONFIG_SERIAL_JSM is not set |
930 | # CONFIG_SERIAL_OF_PLATFORM is not set | 971 | # CONFIG_SERIAL_OF_PLATFORM is not set |
931 | # CONFIG_SERIAL_QE is not set | 972 | # CONFIG_SERIAL_QE is not set |
973 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
932 | CONFIG_UNIX98_PTYS=y | 974 | CONFIG_UNIX98_PTYS=y |
933 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 975 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
934 | CONFIG_LEGACY_PTYS=y | 976 | CONFIG_LEGACY_PTYS=y |
@@ -989,11 +1031,6 @@ CONFIG_I2C_MPC=y | |||
989 | # CONFIG_I2C_TINY_USB is not set | 1031 | # CONFIG_I2C_TINY_USB is not set |
990 | 1032 | ||
991 | # | 1033 | # |
992 | # Graphics adapter I2C/DDC channel drivers | ||
993 | # | ||
994 | # CONFIG_I2C_VOODOO3 is not set | ||
995 | |||
996 | # | ||
997 | # Other I2C/SMBus bus drivers | 1034 | # Other I2C/SMBus bus drivers |
998 | # | 1035 | # |
999 | # CONFIG_I2C_PCA_PLATFORM is not set | 1036 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -1002,7 +1039,6 @@ CONFIG_I2C_MPC=y | |||
1002 | # | 1039 | # |
1003 | # Miscellaneous I2C Chip support | 1040 | # Miscellaneous I2C Chip support |
1004 | # | 1041 | # |
1005 | # CONFIG_DS1682 is not set | ||
1006 | # CONFIG_SENSORS_TSL2550 is not set | 1042 | # CONFIG_SENSORS_TSL2550 is not set |
1007 | # CONFIG_I2C_DEBUG_CORE is not set | 1043 | # CONFIG_I2C_DEBUG_CORE is not set |
1008 | # CONFIG_I2C_DEBUG_ALGO is not set | 1044 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1034,6 +1070,7 @@ CONFIG_GPIOLIB=y | |||
1034 | # | 1070 | # |
1035 | # PCI GPIO expanders: | 1071 | # PCI GPIO expanders: |
1036 | # | 1072 | # |
1073 | # CONFIG_GPIO_CS5535 is not set | ||
1037 | # CONFIG_GPIO_BT8XX is not set | 1074 | # CONFIG_GPIO_BT8XX is not set |
1038 | # CONFIG_GPIO_LANGWELL is not set | 1075 | # CONFIG_GPIO_LANGWELL is not set |
1039 | 1076 | ||
@@ -1076,6 +1113,7 @@ CONFIG_HWMON=y | |||
1076 | # CONFIG_SENSORS_GL520SM is not set | 1113 | # CONFIG_SENSORS_GL520SM is not set |
1077 | # CONFIG_SENSORS_IT87 is not set | 1114 | # CONFIG_SENSORS_IT87 is not set |
1078 | # CONFIG_SENSORS_LM63 is not set | 1115 | # CONFIG_SENSORS_LM63 is not set |
1116 | # CONFIG_SENSORS_LM73 is not set | ||
1079 | # CONFIG_SENSORS_LM75 is not set | 1117 | # CONFIG_SENSORS_LM75 is not set |
1080 | # CONFIG_SENSORS_LM77 is not set | 1118 | # CONFIG_SENSORS_LM77 is not set |
1081 | # CONFIG_SENSORS_LM78 is not set | 1119 | # CONFIG_SENSORS_LM78 is not set |
@@ -1115,6 +1153,7 @@ CONFIG_HWMON=y | |||
1115 | # CONFIG_SENSORS_W83L786NG is not set | 1153 | # CONFIG_SENSORS_W83L786NG is not set |
1116 | # CONFIG_SENSORS_W83627HF is not set | 1154 | # CONFIG_SENSORS_W83627HF is not set |
1117 | # CONFIG_SENSORS_W83627EHF is not set | 1155 | # CONFIG_SENSORS_W83627EHF is not set |
1156 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1118 | # CONFIG_THERMAL is not set | 1157 | # CONFIG_THERMAL is not set |
1119 | CONFIG_WATCHDOG=y | 1158 | CONFIG_WATCHDOG=y |
1120 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1159 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -1153,11 +1192,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1153 | # CONFIG_TWL4030_CORE is not set | 1192 | # CONFIG_TWL4030_CORE is not set |
1154 | # CONFIG_MFD_TMIO is not set | 1193 | # CONFIG_MFD_TMIO is not set |
1155 | # CONFIG_PMIC_DA903X is not set | 1194 | # CONFIG_PMIC_DA903X is not set |
1195 | # CONFIG_PMIC_ADP5520 is not set | ||
1156 | # CONFIG_MFD_WM8400 is not set | 1196 | # CONFIG_MFD_WM8400 is not set |
1157 | # CONFIG_MFD_WM831X is not set | 1197 | # CONFIG_MFD_WM831X is not set |
1158 | # CONFIG_MFD_WM8350_I2C is not set | 1198 | # CONFIG_MFD_WM8350_I2C is not set |
1159 | # CONFIG_MFD_PCF50633 is not set | 1199 | # CONFIG_MFD_PCF50633 is not set |
1160 | # CONFIG_AB3100_CORE is not set | 1200 | # CONFIG_AB3100_CORE is not set |
1201 | # CONFIG_MFD_88PM8607 is not set | ||
1161 | # CONFIG_REGULATOR is not set | 1202 | # CONFIG_REGULATOR is not set |
1162 | # CONFIG_MEDIA_SUPPORT is not set | 1203 | # CONFIG_MEDIA_SUPPORT is not set |
1163 | 1204 | ||
@@ -1249,6 +1290,7 @@ CONFIG_USB_MON=y | |||
1249 | CONFIG_USB_EHCI_HCD=y | 1290 | CONFIG_USB_EHCI_HCD=y |
1250 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1291 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
1251 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1292 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1293 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1252 | CONFIG_USB_EHCI_FSL=y | 1294 | CONFIG_USB_EHCI_FSL=y |
1253 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1295 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1254 | # CONFIG_USB_OXU210HP_HCD is not set | 1296 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1542,7 +1584,7 @@ CONFIG_FRAME_WARN=1024 | |||
1542 | # CONFIG_DEBUG_FS is not set | 1584 | # CONFIG_DEBUG_FS is not set |
1543 | # CONFIG_HEADERS_CHECK is not set | 1585 | # CONFIG_HEADERS_CHECK is not set |
1544 | # CONFIG_DEBUG_KERNEL is not set | 1586 | # CONFIG_DEBUG_KERNEL is not set |
1545 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1587 | CONFIG_DEBUG_BUGVERBOSE=y |
1546 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1588 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1547 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1589 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1548 | # CONFIG_LATENCYTOP is not set | 1590 | # CONFIG_LATENCYTOP is not set |
@@ -1569,7 +1611,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1569 | # CONFIG_KEYS is not set | 1611 | # CONFIG_KEYS is not set |
1570 | # CONFIG_SECURITY is not set | 1612 | # CONFIG_SECURITY is not set |
1571 | # CONFIG_SECURITYFS is not set | 1613 | # CONFIG_SECURITYFS is not set |
1572 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1614 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1615 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1616 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1617 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1618 | CONFIG_DEFAULT_SECURITY="" | ||
1573 | CONFIG_CRYPTO=y | 1619 | CONFIG_CRYPTO=y |
1574 | 1620 | ||
1575 | # | 1621 | # |
diff --git a/arch/powerpc/configs/mpc85xx_defconfig b/arch/powerpc/configs/mpc85xx_defconfig index a12e7ba87a43..8f35f8049c92 100644 --- a/arch/powerpc/configs/mpc85xx_defconfig +++ b/arch/powerpc/configs/mpc85xx_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:25:20 2009 | 4 | # Wed Jan 6 09:24:06 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 39 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 40 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
41 | CONFIG_IRQ_PER_CPU=y | 41 | CONFIG_IRQ_PER_CPU=y |
42 | CONFIG_NR_IRQS=512 | ||
42 | CONFIG_STACKTRACE_SUPPORT=y | 43 | CONFIG_STACKTRACE_SUPPORT=y |
43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y | |||
62 | CONFIG_GENERIC_BUG=y | 63 | CONFIG_GENERIC_BUG=y |
63 | CONFIG_DTC=y | 64 | CONFIG_DTC=y |
64 | CONFIG_DEFAULT_UIMAGE=y | 65 | CONFIG_DEFAULT_UIMAGE=y |
66 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
67 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
65 | # CONFIG_PPC_DCR_NATIVE is not set | 68 | # CONFIG_PPC_DCR_NATIVE is not set |
66 | # CONFIG_PPC_DCR_MMIO is not set | 69 | # CONFIG_PPC_DCR_MMIO is not set |
67 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 70 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -92,6 +95,7 @@ CONFIG_AUDIT=y | |||
92 | # | 95 | # |
93 | CONFIG_TREE_RCU=y | 96 | CONFIG_TREE_RCU=y |
94 | # CONFIG_TREE_PREEMPT_RCU is not set | 97 | # CONFIG_TREE_PREEMPT_RCU is not set |
98 | # CONFIG_TINY_RCU is not set | ||
95 | # CONFIG_RCU_TRACE is not set | 99 | # CONFIG_RCU_TRACE is not set |
96 | CONFIG_RCU_FANOUT=32 | 100 | CONFIG_RCU_FANOUT=32 |
97 | # CONFIG_RCU_FANOUT_EXACT is not set | 101 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -184,14 +188,41 @@ CONFIG_LBDAF=y | |||
184 | # IO Schedulers | 188 | # IO Schedulers |
185 | # | 189 | # |
186 | CONFIG_IOSCHED_NOOP=y | 190 | CONFIG_IOSCHED_NOOP=y |
187 | CONFIG_IOSCHED_AS=y | ||
188 | CONFIG_IOSCHED_DEADLINE=y | 191 | CONFIG_IOSCHED_DEADLINE=y |
189 | CONFIG_IOSCHED_CFQ=y | 192 | CONFIG_IOSCHED_CFQ=y |
190 | # CONFIG_DEFAULT_AS is not set | ||
191 | # CONFIG_DEFAULT_DEADLINE is not set | 193 | # CONFIG_DEFAULT_DEADLINE is not set |
192 | CONFIG_DEFAULT_CFQ=y | 194 | CONFIG_DEFAULT_CFQ=y |
193 | # CONFIG_DEFAULT_NOOP is not set | 195 | # CONFIG_DEFAULT_NOOP is not set |
194 | CONFIG_DEFAULT_IOSCHED="cfq" | 196 | CONFIG_DEFAULT_IOSCHED="cfq" |
197 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
198 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
199 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
200 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
201 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
202 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
203 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
204 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
205 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
206 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
207 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
208 | # CONFIG_INLINE_READ_LOCK is not set | ||
209 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
210 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
211 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
212 | CONFIG_INLINE_READ_UNLOCK=y | ||
213 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
214 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
215 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
216 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
217 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
218 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
219 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
220 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
221 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
222 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
223 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
224 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
225 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
195 | # CONFIG_FREEZER is not set | 226 | # CONFIG_FREEZER is not set |
196 | CONFIG_PPC_MSI_BITMAP=y | 227 | CONFIG_PPC_MSI_BITMAP=y |
197 | 228 | ||
@@ -201,7 +232,7 @@ CONFIG_PPC_MSI_BITMAP=y | |||
201 | # CONFIG_PPC_CELL is not set | 232 | # CONFIG_PPC_CELL is not set |
202 | # CONFIG_PPC_CELL_NATIVE is not set | 233 | # CONFIG_PPC_CELL_NATIVE is not set |
203 | # CONFIG_PQ2ADS is not set | 234 | # CONFIG_PQ2ADS is not set |
204 | CONFIG_MPC85xx=y | 235 | CONFIG_FSL_SOC_BOOKE=y |
205 | CONFIG_MPC8540_ADS=y | 236 | CONFIG_MPC8540_ADS=y |
206 | CONFIG_MPC8560_ADS=y | 237 | CONFIG_MPC8560_ADS=y |
207 | CONFIG_MPC85xx_CDS=y | 238 | CONFIG_MPC85xx_CDS=y |
@@ -220,6 +251,7 @@ CONFIG_TQM8555=y | |||
220 | CONFIG_TQM8560=y | 251 | CONFIG_TQM8560=y |
221 | CONFIG_SBC8548=y | 252 | CONFIG_SBC8548=y |
222 | # CONFIG_SBC8560 is not set | 253 | # CONFIG_SBC8560 is not set |
254 | # CONFIG_P4080_DS is not set | ||
223 | CONFIG_TQM85xx=y | 255 | CONFIG_TQM85xx=y |
224 | # CONFIG_IPIC is not set | 256 | # CONFIG_IPIC is not set |
225 | CONFIG_MPIC=y | 257 | CONFIG_MPIC=y |
@@ -267,6 +299,7 @@ CONFIG_SWIOTLB=y | |||
267 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 299 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
268 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 300 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
269 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 301 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
302 | CONFIG_SPARSE_IRQ=y | ||
270 | CONFIG_MAX_ACTIVE_REGIONS=32 | 303 | CONFIG_MAX_ACTIVE_REGIONS=32 |
271 | CONFIG_ARCH_FLATMEM_ENABLE=y | 304 | CONFIG_ARCH_FLATMEM_ENABLE=y |
272 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 305 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -283,8 +316,6 @@ CONFIG_MIGRATION=y | |||
283 | CONFIG_ZONE_DMA_FLAG=1 | 316 | CONFIG_ZONE_DMA_FLAG=1 |
284 | CONFIG_BOUNCE=y | 317 | CONFIG_BOUNCE=y |
285 | CONFIG_VIRT_TO_BUS=y | 318 | CONFIG_VIRT_TO_BUS=y |
286 | CONFIG_HAVE_MLOCK=y | ||
287 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
288 | # CONFIG_KSM is not set | 319 | # CONFIG_KSM is not set |
289 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 320 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
290 | CONFIG_PPC_4K_PAGES=y | 321 | CONFIG_PPC_4K_PAGES=y |
@@ -405,6 +436,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y | |||
405 | CONFIG_INET6_XFRM_MODE_BEET=y | 436 | CONFIG_INET6_XFRM_MODE_BEET=y |
406 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 437 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
407 | CONFIG_IPV6_SIT=y | 438 | CONFIG_IPV6_SIT=y |
439 | # CONFIG_IPV6_SIT_6RD is not set | ||
408 | CONFIG_IPV6_NDISC_NODETYPE=y | 440 | CONFIG_IPV6_NDISC_NODETYPE=y |
409 | # CONFIG_IPV6_TUNNEL is not set | 441 | # CONFIG_IPV6_TUNNEL is not set |
410 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 442 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
@@ -449,9 +481,6 @@ CONFIG_SCTP_HMAC_MD5=y | |||
449 | CONFIG_FIB_RULES=y | 481 | CONFIG_FIB_RULES=y |
450 | CONFIG_WIRELESS=y | 482 | CONFIG_WIRELESS=y |
451 | # CONFIG_CFG80211 is not set | 483 | # CONFIG_CFG80211 is not set |
452 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
453 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
454 | # CONFIG_WIRELESS_EXT is not set | ||
455 | # CONFIG_LIB80211 is not set | 484 | # CONFIG_LIB80211 is not set |
456 | 485 | ||
457 | # | 486 | # |
@@ -494,6 +523,10 @@ CONFIG_BLK_DEV=y | |||
494 | # CONFIG_BLK_DEV_COW_COMMON is not set | 523 | # CONFIG_BLK_DEV_COW_COMMON is not set |
495 | CONFIG_BLK_DEV_LOOP=y | 524 | CONFIG_BLK_DEV_LOOP=y |
496 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 525 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
526 | |||
527 | # | ||
528 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
529 | # | ||
497 | CONFIG_BLK_DEV_NBD=y | 530 | CONFIG_BLK_DEV_NBD=y |
498 | # CONFIG_BLK_DEV_SX8 is not set | 531 | # CONFIG_BLK_DEV_SX8 is not set |
499 | # CONFIG_BLK_DEV_UB is not set | 532 | # CONFIG_BLK_DEV_UB is not set |
@@ -505,6 +538,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072 | |||
505 | # CONFIG_ATA_OVER_ETH is not set | 538 | # CONFIG_ATA_OVER_ETH is not set |
506 | # CONFIG_BLK_DEV_HD is not set | 539 | # CONFIG_BLK_DEV_HD is not set |
507 | CONFIG_MISC_DEVICES=y | 540 | CONFIG_MISC_DEVICES=y |
541 | # CONFIG_AD525X_DPOT is not set | ||
508 | # CONFIG_PHANTOM is not set | 542 | # CONFIG_PHANTOM is not set |
509 | # CONFIG_SGI_IOC4 is not set | 543 | # CONFIG_SGI_IOC4 is not set |
510 | # CONFIG_TIFM_CORE is not set | 544 | # CONFIG_TIFM_CORE is not set |
@@ -512,6 +546,7 @@ CONFIG_MISC_DEVICES=y | |||
512 | # CONFIG_ENCLOSURE_SERVICES is not set | 546 | # CONFIG_ENCLOSURE_SERVICES is not set |
513 | # CONFIG_HP_ILO is not set | 547 | # CONFIG_HP_ILO is not set |
514 | # CONFIG_ISL29003 is not set | 548 | # CONFIG_ISL29003 is not set |
549 | # CONFIG_DS1682 is not set | ||
515 | # CONFIG_C2PORT is not set | 550 | # CONFIG_C2PORT is not set |
516 | 551 | ||
517 | # | 552 | # |
@@ -565,7 +600,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
565 | # CONFIG_SCSI_BNX2_ISCSI is not set | 600 | # CONFIG_SCSI_BNX2_ISCSI is not set |
566 | # CONFIG_BE2ISCSI is not set | 601 | # CONFIG_BE2ISCSI is not set |
567 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 602 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
603 | # CONFIG_SCSI_HPSA is not set | ||
568 | # CONFIG_SCSI_3W_9XXX is not set | 604 | # CONFIG_SCSI_3W_9XXX is not set |
605 | # CONFIG_SCSI_3W_SAS is not set | ||
569 | # CONFIG_SCSI_ACARD is not set | 606 | # CONFIG_SCSI_ACARD is not set |
570 | # CONFIG_SCSI_AACRAID is not set | 607 | # CONFIG_SCSI_AACRAID is not set |
571 | # CONFIG_SCSI_AIC7XXX is not set | 608 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -604,6 +641,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
604 | # CONFIG_SCSI_NSP32 is not set | 641 | # CONFIG_SCSI_NSP32 is not set |
605 | # CONFIG_SCSI_DEBUG is not set | 642 | # CONFIG_SCSI_DEBUG is not set |
606 | # CONFIG_SCSI_PMCRAID is not set | 643 | # CONFIG_SCSI_PMCRAID is not set |
644 | # CONFIG_SCSI_PM8001 is not set | ||
607 | # CONFIG_SCSI_SRP is not set | 645 | # CONFIG_SCSI_SRP is not set |
608 | # CONFIG_SCSI_BFA_FC is not set | 646 | # CONFIG_SCSI_BFA_FC is not set |
609 | # CONFIG_SCSI_DH is not set | 647 | # CONFIG_SCSI_DH is not set |
@@ -659,15 +697,16 @@ CONFIG_PATA_ALI=y | |||
659 | # CONFIG_PATA_NS87415 is not set | 697 | # CONFIG_PATA_NS87415 is not set |
660 | # CONFIG_PATA_OPTI is not set | 698 | # CONFIG_PATA_OPTI is not set |
661 | # CONFIG_PATA_OPTIDMA is not set | 699 | # CONFIG_PATA_OPTIDMA is not set |
700 | # CONFIG_PATA_PDC2027X is not set | ||
662 | # CONFIG_PATA_PDC_OLD is not set | 701 | # CONFIG_PATA_PDC_OLD is not set |
663 | # CONFIG_PATA_RADISYS is not set | 702 | # CONFIG_PATA_RADISYS is not set |
664 | # CONFIG_PATA_RDC is not set | 703 | # CONFIG_PATA_RDC is not set |
665 | # CONFIG_PATA_RZ1000 is not set | 704 | # CONFIG_PATA_RZ1000 is not set |
666 | # CONFIG_PATA_SC1200 is not set | 705 | # CONFIG_PATA_SC1200 is not set |
667 | # CONFIG_PATA_SERVERWORKS is not set | 706 | # CONFIG_PATA_SERVERWORKS is not set |
668 | # CONFIG_PATA_PDC2027X is not set | ||
669 | # CONFIG_PATA_SIL680 is not set | 707 | # CONFIG_PATA_SIL680 is not set |
670 | # CONFIG_PATA_SIS is not set | 708 | # CONFIG_PATA_SIS is not set |
709 | # CONFIG_PATA_TOSHIBA is not set | ||
671 | # CONFIG_PATA_VIA is not set | 710 | # CONFIG_PATA_VIA is not set |
672 | # CONFIG_PATA_WINBOND is not set | 711 | # CONFIG_PATA_WINBOND is not set |
673 | # CONFIG_PATA_PLATFORM is not set | 712 | # CONFIG_PATA_PLATFORM is not set |
@@ -684,7 +723,7 @@ CONFIG_PATA_ALI=y | |||
684 | # | 723 | # |
685 | 724 | ||
686 | # | 725 | # |
687 | # See the help texts for more information. | 726 | # The newer stack is recommended. |
688 | # | 727 | # |
689 | # CONFIG_FIREWIRE is not set | 728 | # CONFIG_FIREWIRE is not set |
690 | # CONFIG_IEEE1394 is not set | 729 | # CONFIG_IEEE1394 is not set |
@@ -795,8 +834,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
795 | # CONFIG_BE2NET is not set | 834 | # CONFIG_BE2NET is not set |
796 | # CONFIG_TR is not set | 835 | # CONFIG_TR is not set |
797 | CONFIG_WLAN=y | 836 | CONFIG_WLAN=y |
798 | # CONFIG_WLAN_PRE80211 is not set | 837 | # CONFIG_AIRO is not set |
799 | # CONFIG_WLAN_80211 is not set | 838 | # CONFIG_ATMEL is not set |
839 | # CONFIG_PRISM54 is not set | ||
840 | # CONFIG_USB_ZD1201 is not set | ||
841 | # CONFIG_HOSTAP is not set | ||
800 | 842 | ||
801 | # | 843 | # |
802 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 844 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -820,6 +862,7 @@ CONFIG_WLAN=y | |||
820 | # CONFIG_NETCONSOLE is not set | 862 | # CONFIG_NETCONSOLE is not set |
821 | # CONFIG_NETPOLL is not set | 863 | # CONFIG_NETPOLL is not set |
822 | # CONFIG_NET_POLL_CONTROLLER is not set | 864 | # CONFIG_NET_POLL_CONTROLLER is not set |
865 | # CONFIG_VMXNET3 is not set | ||
823 | # CONFIG_ISDN is not set | 866 | # CONFIG_ISDN is not set |
824 | # CONFIG_PHONE is not set | 867 | # CONFIG_PHONE is not set |
825 | 868 | ||
@@ -829,6 +872,7 @@ CONFIG_WLAN=y | |||
829 | CONFIG_INPUT=y | 872 | CONFIG_INPUT=y |
830 | CONFIG_INPUT_FF_MEMLESS=m | 873 | CONFIG_INPUT_FF_MEMLESS=m |
831 | # CONFIG_INPUT_POLLDEV is not set | 874 | # CONFIG_INPUT_POLLDEV is not set |
875 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
832 | 876 | ||
833 | # | 877 | # |
834 | # Userland interfaces | 878 | # Userland interfaces |
@@ -858,6 +902,7 @@ CONFIG_SERIO_SERPORT=y | |||
858 | CONFIG_SERIO_LIBPS2=y | 902 | CONFIG_SERIO_LIBPS2=y |
859 | # CONFIG_SERIO_RAW is not set | 903 | # CONFIG_SERIO_RAW is not set |
860 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | 904 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set |
905 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
861 | # CONFIG_GAMEPORT is not set | 906 | # CONFIG_GAMEPORT is not set |
862 | 907 | ||
863 | # | 908 | # |
@@ -896,6 +941,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
896 | # CONFIG_SERIAL_JSM is not set | 941 | # CONFIG_SERIAL_JSM is not set |
897 | # CONFIG_SERIAL_OF_PLATFORM is not set | 942 | # CONFIG_SERIAL_OF_PLATFORM is not set |
898 | CONFIG_SERIAL_QE=m | 943 | CONFIG_SERIAL_QE=m |
944 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
899 | CONFIG_UNIX98_PTYS=y | 945 | CONFIG_UNIX98_PTYS=y |
900 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 946 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
901 | CONFIG_LEGACY_PTYS=y | 947 | CONFIG_LEGACY_PTYS=y |
@@ -956,11 +1002,6 @@ CONFIG_I2C_MPC=y | |||
956 | # CONFIG_I2C_TINY_USB is not set | 1002 | # CONFIG_I2C_TINY_USB is not set |
957 | 1003 | ||
958 | # | 1004 | # |
959 | # Graphics adapter I2C/DDC channel drivers | ||
960 | # | ||
961 | # CONFIG_I2C_VOODOO3 is not set | ||
962 | |||
963 | # | ||
964 | # Other I2C/SMBus bus drivers | 1005 | # Other I2C/SMBus bus drivers |
965 | # | 1006 | # |
966 | # CONFIG_I2C_PCA_PLATFORM is not set | 1007 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -969,7 +1010,6 @@ CONFIG_I2C_MPC=y | |||
969 | # | 1010 | # |
970 | # Miscellaneous I2C Chip support | 1011 | # Miscellaneous I2C Chip support |
971 | # | 1012 | # |
972 | # CONFIG_DS1682 is not set | ||
973 | # CONFIG_SENSORS_TSL2550 is not set | 1013 | # CONFIG_SENSORS_TSL2550 is not set |
974 | # CONFIG_I2C_DEBUG_CORE is not set | 1014 | # CONFIG_I2C_DEBUG_CORE is not set |
975 | # CONFIG_I2C_DEBUG_ALGO is not set | 1015 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1002,6 +1042,7 @@ CONFIG_GPIOLIB=y | |||
1002 | # | 1042 | # |
1003 | # PCI GPIO expanders: | 1043 | # PCI GPIO expanders: |
1004 | # | 1044 | # |
1045 | # CONFIG_GPIO_CS5535 is not set | ||
1005 | # CONFIG_GPIO_BT8XX is not set | 1046 | # CONFIG_GPIO_BT8XX is not set |
1006 | # CONFIG_GPIO_LANGWELL is not set | 1047 | # CONFIG_GPIO_LANGWELL is not set |
1007 | 1048 | ||
@@ -1035,11 +1076,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1035 | # CONFIG_TWL4030_CORE is not set | 1076 | # CONFIG_TWL4030_CORE is not set |
1036 | # CONFIG_MFD_TMIO is not set | 1077 | # CONFIG_MFD_TMIO is not set |
1037 | # CONFIG_PMIC_DA903X is not set | 1078 | # CONFIG_PMIC_DA903X is not set |
1079 | # CONFIG_PMIC_ADP5520 is not set | ||
1038 | # CONFIG_MFD_WM8400 is not set | 1080 | # CONFIG_MFD_WM8400 is not set |
1039 | # CONFIG_MFD_WM831X is not set | 1081 | # CONFIG_MFD_WM831X is not set |
1040 | # CONFIG_MFD_WM8350_I2C is not set | 1082 | # CONFIG_MFD_WM8350_I2C is not set |
1041 | # CONFIG_MFD_PCF50633 is not set | 1083 | # CONFIG_MFD_PCF50633 is not set |
1042 | # CONFIG_AB3100_CORE is not set | 1084 | # CONFIG_AB3100_CORE is not set |
1085 | # CONFIG_MFD_88PM8607 is not set | ||
1043 | # CONFIG_REGULATOR is not set | 1086 | # CONFIG_REGULATOR is not set |
1044 | # CONFIG_MEDIA_SUPPORT is not set | 1087 | # CONFIG_MEDIA_SUPPORT is not set |
1045 | 1088 | ||
@@ -1114,6 +1157,7 @@ CONFIG_SND_PCI=y | |||
1114 | # CONFIG_SND_CS4281 is not set | 1157 | # CONFIG_SND_CS4281 is not set |
1115 | # CONFIG_SND_CS46XX is not set | 1158 | # CONFIG_SND_CS46XX is not set |
1116 | # CONFIG_SND_CS5530 is not set | 1159 | # CONFIG_SND_CS5530 is not set |
1160 | # CONFIG_SND_CS5535AUDIO is not set | ||
1117 | # CONFIG_SND_CTXFI is not set | 1161 | # CONFIG_SND_CTXFI is not set |
1118 | # CONFIG_SND_DARLA20 is not set | 1162 | # CONFIG_SND_DARLA20 is not set |
1119 | # CONFIG_SND_GINA20 is not set | 1163 | # CONFIG_SND_GINA20 is not set |
@@ -1241,6 +1285,7 @@ CONFIG_USB_MON=y | |||
1241 | CONFIG_USB_EHCI_HCD=y | 1285 | CONFIG_USB_EHCI_HCD=y |
1242 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1286 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
1243 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1287 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1288 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1244 | CONFIG_USB_EHCI_FSL=y | 1289 | CONFIG_USB_EHCI_FSL=y |
1245 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1290 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1246 | # CONFIG_USB_OXU210HP_HCD is not set | 1291 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1347,7 +1392,6 @@ CONFIG_EDAC=y | |||
1347 | # | 1392 | # |
1348 | # CONFIG_EDAC_DEBUG is not set | 1393 | # CONFIG_EDAC_DEBUG is not set |
1349 | CONFIG_EDAC_MM_EDAC=y | 1394 | CONFIG_EDAC_MM_EDAC=y |
1350 | CONFIG_EDAC_MPC85XX=y | ||
1351 | CONFIG_RTC_LIB=y | 1395 | CONFIG_RTC_LIB=y |
1352 | CONFIG_RTC_CLASS=y | 1396 | CONFIG_RTC_CLASS=y |
1353 | CONFIG_RTC_HCTOSYS=y | 1397 | CONFIG_RTC_HCTOSYS=y |
@@ -1376,6 +1420,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1376 | # CONFIG_RTC_DRV_PCF8563 is not set | 1420 | # CONFIG_RTC_DRV_PCF8563 is not set |
1377 | # CONFIG_RTC_DRV_PCF8583 is not set | 1421 | # CONFIG_RTC_DRV_PCF8583 is not set |
1378 | # CONFIG_RTC_DRV_M41T80 is not set | 1422 | # CONFIG_RTC_DRV_M41T80 is not set |
1423 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1379 | # CONFIG_RTC_DRV_S35390A is not set | 1424 | # CONFIG_RTC_DRV_S35390A is not set |
1380 | # CONFIG_RTC_DRV_FM3130 is not set | 1425 | # CONFIG_RTC_DRV_FM3130 is not set |
1381 | # CONFIG_RTC_DRV_RX8581 is not set | 1426 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1397,7 +1442,9 @@ CONFIG_RTC_DRV_CMOS=y | |||
1397 | # CONFIG_RTC_DRV_M48T86 is not set | 1442 | # CONFIG_RTC_DRV_M48T86 is not set |
1398 | # CONFIG_RTC_DRV_M48T35 is not set | 1443 | # CONFIG_RTC_DRV_M48T35 is not set |
1399 | # CONFIG_RTC_DRV_M48T59 is not set | 1444 | # CONFIG_RTC_DRV_M48T59 is not set |
1445 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1400 | # CONFIG_RTC_DRV_BQ4802 is not set | 1446 | # CONFIG_RTC_DRV_BQ4802 is not set |
1447 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1401 | # CONFIG_RTC_DRV_V3020 is not set | 1448 | # CONFIG_RTC_DRV_V3020 is not set |
1402 | 1449 | ||
1403 | # | 1450 | # |
@@ -1731,7 +1778,11 @@ CONFIG_VIRQ_DEBUG=y | |||
1731 | # CONFIG_KEYS is not set | 1778 | # CONFIG_KEYS is not set |
1732 | # CONFIG_SECURITY is not set | 1779 | # CONFIG_SECURITY is not set |
1733 | # CONFIG_SECURITYFS is not set | 1780 | # CONFIG_SECURITYFS is not set |
1734 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1781 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1782 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1783 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1784 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1785 | CONFIG_DEFAULT_SECURITY="" | ||
1735 | CONFIG_CRYPTO=y | 1786 | CONFIG_CRYPTO=y |
1736 | 1787 | ||
1737 | # | 1788 | # |
diff --git a/arch/powerpc/configs/mpc85xx_smp_defconfig b/arch/powerpc/configs/mpc85xx_smp_defconfig index cd70b4a4ce01..8755ea3c7f5f 100644 --- a/arch/powerpc/configs/mpc85xx_smp_defconfig +++ b/arch/powerpc/configs/mpc85xx_smp_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:26:01 2009 | 4 | # Wed Jan 6 09:24:07 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y | |||
16 | # CONFIG_E200 is not set | 16 | # CONFIG_E200 is not set |
17 | CONFIG_E500=y | 17 | CONFIG_E500=y |
18 | # CONFIG_PPC_E500MC is not set | 18 | # CONFIG_PPC_E500MC is not set |
19 | CONFIG_FSL_EMB_PERFMON=y | ||
19 | CONFIG_BOOKE=y | 20 | CONFIG_BOOKE=y |
20 | CONFIG_FSL_BOOKE=y | 21 | CONFIG_FSL_BOOKE=y |
21 | CONFIG_FSL_EMB_PERFMON=y | ||
22 | # CONFIG_PHYS_64BIT is not set | 22 | # CONFIG_PHYS_64BIT is not set |
23 | CONFIG_SPE=y | 23 | CONFIG_SPE=y |
24 | CONFIG_PPC_MMU_NOHASH=y | 24 | CONFIG_PPC_MMU_NOHASH=y |
@@ -40,6 +40,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
40 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 40 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
41 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 41 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
42 | CONFIG_IRQ_PER_CPU=y | 42 | CONFIG_IRQ_PER_CPU=y |
43 | CONFIG_NR_IRQS=512 | ||
43 | CONFIG_STACKTRACE_SUPPORT=y | 44 | CONFIG_STACKTRACE_SUPPORT=y |
44 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 45 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
45 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 46 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -63,6 +64,8 @@ CONFIG_AUDIT_ARCH=y | |||
63 | CONFIG_GENERIC_BUG=y | 64 | CONFIG_GENERIC_BUG=y |
64 | CONFIG_DTC=y | 65 | CONFIG_DTC=y |
65 | CONFIG_DEFAULT_UIMAGE=y | 66 | CONFIG_DEFAULT_UIMAGE=y |
67 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
68 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
66 | # CONFIG_PPC_DCR_NATIVE is not set | 69 | # CONFIG_PPC_DCR_NATIVE is not set |
67 | # CONFIG_PPC_DCR_MMIO is not set | 70 | # CONFIG_PPC_DCR_MMIO is not set |
68 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 71 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -93,6 +96,7 @@ CONFIG_AUDIT=y | |||
93 | # | 96 | # |
94 | CONFIG_TREE_RCU=y | 97 | CONFIG_TREE_RCU=y |
95 | # CONFIG_TREE_PREEMPT_RCU is not set | 98 | # CONFIG_TREE_PREEMPT_RCU is not set |
99 | # CONFIG_TINY_RCU is not set | ||
96 | # CONFIG_RCU_TRACE is not set | 100 | # CONFIG_RCU_TRACE is not set |
97 | CONFIG_RCU_FANOUT=32 | 101 | CONFIG_RCU_FANOUT=32 |
98 | # CONFIG_RCU_FANOUT_EXACT is not set | 102 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -187,14 +191,41 @@ CONFIG_LBDAF=y | |||
187 | # IO Schedulers | 191 | # IO Schedulers |
188 | # | 192 | # |
189 | CONFIG_IOSCHED_NOOP=y | 193 | CONFIG_IOSCHED_NOOP=y |
190 | CONFIG_IOSCHED_AS=y | ||
191 | CONFIG_IOSCHED_DEADLINE=y | 194 | CONFIG_IOSCHED_DEADLINE=y |
192 | CONFIG_IOSCHED_CFQ=y | 195 | CONFIG_IOSCHED_CFQ=y |
193 | # CONFIG_DEFAULT_AS is not set | ||
194 | # CONFIG_DEFAULT_DEADLINE is not set | 196 | # CONFIG_DEFAULT_DEADLINE is not set |
195 | CONFIG_DEFAULT_CFQ=y | 197 | CONFIG_DEFAULT_CFQ=y |
196 | # CONFIG_DEFAULT_NOOP is not set | 198 | # CONFIG_DEFAULT_NOOP is not set |
197 | CONFIG_DEFAULT_IOSCHED="cfq" | 199 | CONFIG_DEFAULT_IOSCHED="cfq" |
200 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
201 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
202 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
203 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
204 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
205 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
206 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
207 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
208 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
209 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
210 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
211 | # CONFIG_INLINE_READ_LOCK is not set | ||
212 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
213 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
214 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
215 | CONFIG_INLINE_READ_UNLOCK=y | ||
216 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
217 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
218 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
219 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
220 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
221 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
222 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
223 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
224 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
225 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
226 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
227 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
228 | CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
198 | # CONFIG_FREEZER is not set | 229 | # CONFIG_FREEZER is not set |
199 | CONFIG_PPC_MSI_BITMAP=y | 230 | CONFIG_PPC_MSI_BITMAP=y |
200 | 231 | ||
@@ -204,7 +235,7 @@ CONFIG_PPC_MSI_BITMAP=y | |||
204 | # CONFIG_PPC_CELL is not set | 235 | # CONFIG_PPC_CELL is not set |
205 | # CONFIG_PPC_CELL_NATIVE is not set | 236 | # CONFIG_PPC_CELL_NATIVE is not set |
206 | # CONFIG_PQ2ADS is not set | 237 | # CONFIG_PQ2ADS is not set |
207 | CONFIG_MPC85xx=y | 238 | CONFIG_FSL_SOC_BOOKE=y |
208 | CONFIG_MPC8540_ADS=y | 239 | CONFIG_MPC8540_ADS=y |
209 | CONFIG_MPC8560_ADS=y | 240 | CONFIG_MPC8560_ADS=y |
210 | CONFIG_MPC85xx_CDS=y | 241 | CONFIG_MPC85xx_CDS=y |
@@ -223,6 +254,7 @@ CONFIG_TQM8555=y | |||
223 | CONFIG_TQM8560=y | 254 | CONFIG_TQM8560=y |
224 | CONFIG_SBC8548=y | 255 | CONFIG_SBC8548=y |
225 | # CONFIG_SBC8560 is not set | 256 | # CONFIG_SBC8560 is not set |
257 | # CONFIG_P4080_DS is not set | ||
226 | CONFIG_TQM85xx=y | 258 | CONFIG_TQM85xx=y |
227 | # CONFIG_IPIC is not set | 259 | # CONFIG_IPIC is not set |
228 | CONFIG_MPIC=y | 260 | CONFIG_MPIC=y |
@@ -271,6 +303,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | |||
271 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 303 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
272 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 304 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
273 | # CONFIG_IRQ_ALL_CPUS is not set | 305 | # CONFIG_IRQ_ALL_CPUS is not set |
306 | CONFIG_SPARSE_IRQ=y | ||
274 | CONFIG_MAX_ACTIVE_REGIONS=32 | 307 | CONFIG_MAX_ACTIVE_REGIONS=32 |
275 | CONFIG_ARCH_FLATMEM_ENABLE=y | 308 | CONFIG_ARCH_FLATMEM_ENABLE=y |
276 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 309 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -287,8 +320,6 @@ CONFIG_MIGRATION=y | |||
287 | CONFIG_ZONE_DMA_FLAG=1 | 320 | CONFIG_ZONE_DMA_FLAG=1 |
288 | CONFIG_BOUNCE=y | 321 | CONFIG_BOUNCE=y |
289 | CONFIG_VIRT_TO_BUS=y | 322 | CONFIG_VIRT_TO_BUS=y |
290 | CONFIG_HAVE_MLOCK=y | ||
291 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
292 | # CONFIG_KSM is not set | 323 | # CONFIG_KSM is not set |
293 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 324 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
294 | CONFIG_PPC_4K_PAGES=y | 325 | CONFIG_PPC_4K_PAGES=y |
@@ -409,6 +440,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y | |||
409 | CONFIG_INET6_XFRM_MODE_BEET=y | 440 | CONFIG_INET6_XFRM_MODE_BEET=y |
410 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 441 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
411 | CONFIG_IPV6_SIT=y | 442 | CONFIG_IPV6_SIT=y |
443 | # CONFIG_IPV6_SIT_6RD is not set | ||
412 | CONFIG_IPV6_NDISC_NODETYPE=y | 444 | CONFIG_IPV6_NDISC_NODETYPE=y |
413 | # CONFIG_IPV6_TUNNEL is not set | 445 | # CONFIG_IPV6_TUNNEL is not set |
414 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 446 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
@@ -453,9 +485,6 @@ CONFIG_SCTP_HMAC_MD5=y | |||
453 | CONFIG_FIB_RULES=y | 485 | CONFIG_FIB_RULES=y |
454 | CONFIG_WIRELESS=y | 486 | CONFIG_WIRELESS=y |
455 | # CONFIG_CFG80211 is not set | 487 | # CONFIG_CFG80211 is not set |
456 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
457 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
458 | # CONFIG_WIRELESS_EXT is not set | ||
459 | # CONFIG_LIB80211 is not set | 488 | # CONFIG_LIB80211 is not set |
460 | 489 | ||
461 | # | 490 | # |
@@ -498,6 +527,10 @@ CONFIG_BLK_DEV=y | |||
498 | # CONFIG_BLK_DEV_COW_COMMON is not set | 527 | # CONFIG_BLK_DEV_COW_COMMON is not set |
499 | CONFIG_BLK_DEV_LOOP=y | 528 | CONFIG_BLK_DEV_LOOP=y |
500 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 529 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
530 | |||
531 | # | ||
532 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
533 | # | ||
501 | CONFIG_BLK_DEV_NBD=y | 534 | CONFIG_BLK_DEV_NBD=y |
502 | # CONFIG_BLK_DEV_SX8 is not set | 535 | # CONFIG_BLK_DEV_SX8 is not set |
503 | # CONFIG_BLK_DEV_UB is not set | 536 | # CONFIG_BLK_DEV_UB is not set |
@@ -509,6 +542,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072 | |||
509 | # CONFIG_ATA_OVER_ETH is not set | 542 | # CONFIG_ATA_OVER_ETH is not set |
510 | # CONFIG_BLK_DEV_HD is not set | 543 | # CONFIG_BLK_DEV_HD is not set |
511 | CONFIG_MISC_DEVICES=y | 544 | CONFIG_MISC_DEVICES=y |
545 | # CONFIG_AD525X_DPOT is not set | ||
512 | # CONFIG_PHANTOM is not set | 546 | # CONFIG_PHANTOM is not set |
513 | # CONFIG_SGI_IOC4 is not set | 547 | # CONFIG_SGI_IOC4 is not set |
514 | # CONFIG_TIFM_CORE is not set | 548 | # CONFIG_TIFM_CORE is not set |
@@ -516,6 +550,7 @@ CONFIG_MISC_DEVICES=y | |||
516 | # CONFIG_ENCLOSURE_SERVICES is not set | 550 | # CONFIG_ENCLOSURE_SERVICES is not set |
517 | # CONFIG_HP_ILO is not set | 551 | # CONFIG_HP_ILO is not set |
518 | # CONFIG_ISL29003 is not set | 552 | # CONFIG_ISL29003 is not set |
553 | # CONFIG_DS1682 is not set | ||
519 | # CONFIG_C2PORT is not set | 554 | # CONFIG_C2PORT is not set |
520 | 555 | ||
521 | # | 556 | # |
@@ -569,7 +604,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
569 | # CONFIG_SCSI_BNX2_ISCSI is not set | 604 | # CONFIG_SCSI_BNX2_ISCSI is not set |
570 | # CONFIG_BE2ISCSI is not set | 605 | # CONFIG_BE2ISCSI is not set |
571 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 606 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
607 | # CONFIG_SCSI_HPSA is not set | ||
572 | # CONFIG_SCSI_3W_9XXX is not set | 608 | # CONFIG_SCSI_3W_9XXX is not set |
609 | # CONFIG_SCSI_3W_SAS is not set | ||
573 | # CONFIG_SCSI_ACARD is not set | 610 | # CONFIG_SCSI_ACARD is not set |
574 | # CONFIG_SCSI_AACRAID is not set | 611 | # CONFIG_SCSI_AACRAID is not set |
575 | # CONFIG_SCSI_AIC7XXX is not set | 612 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -608,6 +645,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
608 | # CONFIG_SCSI_NSP32 is not set | 645 | # CONFIG_SCSI_NSP32 is not set |
609 | # CONFIG_SCSI_DEBUG is not set | 646 | # CONFIG_SCSI_DEBUG is not set |
610 | # CONFIG_SCSI_PMCRAID is not set | 647 | # CONFIG_SCSI_PMCRAID is not set |
648 | # CONFIG_SCSI_PM8001 is not set | ||
611 | # CONFIG_SCSI_SRP is not set | 649 | # CONFIG_SCSI_SRP is not set |
612 | # CONFIG_SCSI_BFA_FC is not set | 650 | # CONFIG_SCSI_BFA_FC is not set |
613 | # CONFIG_SCSI_DH is not set | 651 | # CONFIG_SCSI_DH is not set |
@@ -663,15 +701,16 @@ CONFIG_PATA_ALI=y | |||
663 | # CONFIG_PATA_NS87415 is not set | 701 | # CONFIG_PATA_NS87415 is not set |
664 | # CONFIG_PATA_OPTI is not set | 702 | # CONFIG_PATA_OPTI is not set |
665 | # CONFIG_PATA_OPTIDMA is not set | 703 | # CONFIG_PATA_OPTIDMA is not set |
704 | # CONFIG_PATA_PDC2027X is not set | ||
666 | # CONFIG_PATA_PDC_OLD is not set | 705 | # CONFIG_PATA_PDC_OLD is not set |
667 | # CONFIG_PATA_RADISYS is not set | 706 | # CONFIG_PATA_RADISYS is not set |
668 | # CONFIG_PATA_RDC is not set | 707 | # CONFIG_PATA_RDC is not set |
669 | # CONFIG_PATA_RZ1000 is not set | 708 | # CONFIG_PATA_RZ1000 is not set |
670 | # CONFIG_PATA_SC1200 is not set | 709 | # CONFIG_PATA_SC1200 is not set |
671 | # CONFIG_PATA_SERVERWORKS is not set | 710 | # CONFIG_PATA_SERVERWORKS is not set |
672 | # CONFIG_PATA_PDC2027X is not set | ||
673 | # CONFIG_PATA_SIL680 is not set | 711 | # CONFIG_PATA_SIL680 is not set |
674 | # CONFIG_PATA_SIS is not set | 712 | # CONFIG_PATA_SIS is not set |
713 | # CONFIG_PATA_TOSHIBA is not set | ||
675 | # CONFIG_PATA_VIA is not set | 714 | # CONFIG_PATA_VIA is not set |
676 | # CONFIG_PATA_WINBOND is not set | 715 | # CONFIG_PATA_WINBOND is not set |
677 | # CONFIG_PATA_PLATFORM is not set | 716 | # CONFIG_PATA_PLATFORM is not set |
@@ -688,7 +727,7 @@ CONFIG_PATA_ALI=y | |||
688 | # | 727 | # |
689 | 728 | ||
690 | # | 729 | # |
691 | # See the help texts for more information. | 730 | # The newer stack is recommended. |
692 | # | 731 | # |
693 | # CONFIG_FIREWIRE is not set | 732 | # CONFIG_FIREWIRE is not set |
694 | # CONFIG_IEEE1394 is not set | 733 | # CONFIG_IEEE1394 is not set |
@@ -799,8 +838,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
799 | # CONFIG_BE2NET is not set | 838 | # CONFIG_BE2NET is not set |
800 | # CONFIG_TR is not set | 839 | # CONFIG_TR is not set |
801 | CONFIG_WLAN=y | 840 | CONFIG_WLAN=y |
802 | # CONFIG_WLAN_PRE80211 is not set | 841 | # CONFIG_AIRO is not set |
803 | # CONFIG_WLAN_80211 is not set | 842 | # CONFIG_ATMEL is not set |
843 | # CONFIG_PRISM54 is not set | ||
844 | # CONFIG_USB_ZD1201 is not set | ||
845 | # CONFIG_HOSTAP is not set | ||
804 | 846 | ||
805 | # | 847 | # |
806 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 848 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -824,6 +866,7 @@ CONFIG_WLAN=y | |||
824 | # CONFIG_NETCONSOLE is not set | 866 | # CONFIG_NETCONSOLE is not set |
825 | # CONFIG_NETPOLL is not set | 867 | # CONFIG_NETPOLL is not set |
826 | # CONFIG_NET_POLL_CONTROLLER is not set | 868 | # CONFIG_NET_POLL_CONTROLLER is not set |
869 | # CONFIG_VMXNET3 is not set | ||
827 | # CONFIG_ISDN is not set | 870 | # CONFIG_ISDN is not set |
828 | # CONFIG_PHONE is not set | 871 | # CONFIG_PHONE is not set |
829 | 872 | ||
@@ -833,6 +876,7 @@ CONFIG_WLAN=y | |||
833 | CONFIG_INPUT=y | 876 | CONFIG_INPUT=y |
834 | CONFIG_INPUT_FF_MEMLESS=m | 877 | CONFIG_INPUT_FF_MEMLESS=m |
835 | # CONFIG_INPUT_POLLDEV is not set | 878 | # CONFIG_INPUT_POLLDEV is not set |
879 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
836 | 880 | ||
837 | # | 881 | # |
838 | # Userland interfaces | 882 | # Userland interfaces |
@@ -862,6 +906,7 @@ CONFIG_SERIO_SERPORT=y | |||
862 | CONFIG_SERIO_LIBPS2=y | 906 | CONFIG_SERIO_LIBPS2=y |
863 | # CONFIG_SERIO_RAW is not set | 907 | # CONFIG_SERIO_RAW is not set |
864 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | 908 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set |
909 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
865 | # CONFIG_GAMEPORT is not set | 910 | # CONFIG_GAMEPORT is not set |
866 | 911 | ||
867 | # | 912 | # |
@@ -900,6 +945,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
900 | # CONFIG_SERIAL_JSM is not set | 945 | # CONFIG_SERIAL_JSM is not set |
901 | # CONFIG_SERIAL_OF_PLATFORM is not set | 946 | # CONFIG_SERIAL_OF_PLATFORM is not set |
902 | CONFIG_SERIAL_QE=m | 947 | CONFIG_SERIAL_QE=m |
948 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
903 | CONFIG_UNIX98_PTYS=y | 949 | CONFIG_UNIX98_PTYS=y |
904 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 950 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
905 | CONFIG_LEGACY_PTYS=y | 951 | CONFIG_LEGACY_PTYS=y |
@@ -960,11 +1006,6 @@ CONFIG_I2C_MPC=y | |||
960 | # CONFIG_I2C_TINY_USB is not set | 1006 | # CONFIG_I2C_TINY_USB is not set |
961 | 1007 | ||
962 | # | 1008 | # |
963 | # Graphics adapter I2C/DDC channel drivers | ||
964 | # | ||
965 | # CONFIG_I2C_VOODOO3 is not set | ||
966 | |||
967 | # | ||
968 | # Other I2C/SMBus bus drivers | 1009 | # Other I2C/SMBus bus drivers |
969 | # | 1010 | # |
970 | # CONFIG_I2C_PCA_PLATFORM is not set | 1011 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -973,7 +1014,6 @@ CONFIG_I2C_MPC=y | |||
973 | # | 1014 | # |
974 | # Miscellaneous I2C Chip support | 1015 | # Miscellaneous I2C Chip support |
975 | # | 1016 | # |
976 | # CONFIG_DS1682 is not set | ||
977 | # CONFIG_SENSORS_TSL2550 is not set | 1017 | # CONFIG_SENSORS_TSL2550 is not set |
978 | # CONFIG_I2C_DEBUG_CORE is not set | 1018 | # CONFIG_I2C_DEBUG_CORE is not set |
979 | # CONFIG_I2C_DEBUG_ALGO is not set | 1019 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1006,6 +1046,7 @@ CONFIG_GPIOLIB=y | |||
1006 | # | 1046 | # |
1007 | # PCI GPIO expanders: | 1047 | # PCI GPIO expanders: |
1008 | # | 1048 | # |
1049 | # CONFIG_GPIO_CS5535 is not set | ||
1009 | # CONFIG_GPIO_BT8XX is not set | 1050 | # CONFIG_GPIO_BT8XX is not set |
1010 | # CONFIG_GPIO_LANGWELL is not set | 1051 | # CONFIG_GPIO_LANGWELL is not set |
1011 | 1052 | ||
@@ -1039,11 +1080,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1039 | # CONFIG_TWL4030_CORE is not set | 1080 | # CONFIG_TWL4030_CORE is not set |
1040 | # CONFIG_MFD_TMIO is not set | 1081 | # CONFIG_MFD_TMIO is not set |
1041 | # CONFIG_PMIC_DA903X is not set | 1082 | # CONFIG_PMIC_DA903X is not set |
1083 | # CONFIG_PMIC_ADP5520 is not set | ||
1042 | # CONFIG_MFD_WM8400 is not set | 1084 | # CONFIG_MFD_WM8400 is not set |
1043 | # CONFIG_MFD_WM831X is not set | 1085 | # CONFIG_MFD_WM831X is not set |
1044 | # CONFIG_MFD_WM8350_I2C is not set | 1086 | # CONFIG_MFD_WM8350_I2C is not set |
1045 | # CONFIG_MFD_PCF50633 is not set | 1087 | # CONFIG_MFD_PCF50633 is not set |
1046 | # CONFIG_AB3100_CORE is not set | 1088 | # CONFIG_AB3100_CORE is not set |
1089 | # CONFIG_MFD_88PM8607 is not set | ||
1047 | # CONFIG_REGULATOR is not set | 1090 | # CONFIG_REGULATOR is not set |
1048 | # CONFIG_MEDIA_SUPPORT is not set | 1091 | # CONFIG_MEDIA_SUPPORT is not set |
1049 | 1092 | ||
@@ -1118,6 +1161,7 @@ CONFIG_SND_PCI=y | |||
1118 | # CONFIG_SND_CS4281 is not set | 1161 | # CONFIG_SND_CS4281 is not set |
1119 | # CONFIG_SND_CS46XX is not set | 1162 | # CONFIG_SND_CS46XX is not set |
1120 | # CONFIG_SND_CS5530 is not set | 1163 | # CONFIG_SND_CS5530 is not set |
1164 | # CONFIG_SND_CS5535AUDIO is not set | ||
1121 | # CONFIG_SND_CTXFI is not set | 1165 | # CONFIG_SND_CTXFI is not set |
1122 | # CONFIG_SND_DARLA20 is not set | 1166 | # CONFIG_SND_DARLA20 is not set |
1123 | # CONFIG_SND_GINA20 is not set | 1167 | # CONFIG_SND_GINA20 is not set |
@@ -1245,6 +1289,7 @@ CONFIG_USB_MON=y | |||
1245 | CONFIG_USB_EHCI_HCD=y | 1289 | CONFIG_USB_EHCI_HCD=y |
1246 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1290 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
1247 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1291 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1292 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1248 | CONFIG_USB_EHCI_FSL=y | 1293 | CONFIG_USB_EHCI_FSL=y |
1249 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1294 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1250 | # CONFIG_USB_OXU210HP_HCD is not set | 1295 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1351,7 +1396,6 @@ CONFIG_EDAC=y | |||
1351 | # | 1396 | # |
1352 | # CONFIG_EDAC_DEBUG is not set | 1397 | # CONFIG_EDAC_DEBUG is not set |
1353 | CONFIG_EDAC_MM_EDAC=y | 1398 | CONFIG_EDAC_MM_EDAC=y |
1354 | CONFIG_EDAC_MPC85XX=y | ||
1355 | CONFIG_RTC_LIB=y | 1399 | CONFIG_RTC_LIB=y |
1356 | CONFIG_RTC_CLASS=y | 1400 | CONFIG_RTC_CLASS=y |
1357 | CONFIG_RTC_HCTOSYS=y | 1401 | CONFIG_RTC_HCTOSYS=y |
@@ -1380,6 +1424,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1380 | # CONFIG_RTC_DRV_PCF8563 is not set | 1424 | # CONFIG_RTC_DRV_PCF8563 is not set |
1381 | # CONFIG_RTC_DRV_PCF8583 is not set | 1425 | # CONFIG_RTC_DRV_PCF8583 is not set |
1382 | # CONFIG_RTC_DRV_M41T80 is not set | 1426 | # CONFIG_RTC_DRV_M41T80 is not set |
1427 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1383 | # CONFIG_RTC_DRV_S35390A is not set | 1428 | # CONFIG_RTC_DRV_S35390A is not set |
1384 | # CONFIG_RTC_DRV_FM3130 is not set | 1429 | # CONFIG_RTC_DRV_FM3130 is not set |
1385 | # CONFIG_RTC_DRV_RX8581 is not set | 1430 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1401,7 +1446,9 @@ CONFIG_RTC_DRV_CMOS=y | |||
1401 | # CONFIG_RTC_DRV_M48T86 is not set | 1446 | # CONFIG_RTC_DRV_M48T86 is not set |
1402 | # CONFIG_RTC_DRV_M48T35 is not set | 1447 | # CONFIG_RTC_DRV_M48T35 is not set |
1403 | # CONFIG_RTC_DRV_M48T59 is not set | 1448 | # CONFIG_RTC_DRV_M48T59 is not set |
1449 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1404 | # CONFIG_RTC_DRV_BQ4802 is not set | 1450 | # CONFIG_RTC_DRV_BQ4802 is not set |
1451 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1405 | # CONFIG_RTC_DRV_V3020 is not set | 1452 | # CONFIG_RTC_DRV_V3020 is not set |
1406 | 1453 | ||
1407 | # | 1454 | # |
@@ -1735,7 +1782,11 @@ CONFIG_VIRQ_DEBUG=y | |||
1735 | # CONFIG_KEYS is not set | 1782 | # CONFIG_KEYS is not set |
1736 | # CONFIG_SECURITY is not set | 1783 | # CONFIG_SECURITY is not set |
1737 | # CONFIG_SECURITYFS is not set | 1784 | # CONFIG_SECURITYFS is not set |
1738 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1785 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1786 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1787 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1788 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1789 | CONFIG_DEFAULT_SECURITY="" | ||
1739 | CONFIG_CRYPTO=y | 1790 | CONFIG_CRYPTO=y |
1740 | 1791 | ||
1741 | # | 1792 | # |
diff --git a/arch/powerpc/configs/mpc866_ads_defconfig b/arch/powerpc/configs/mpc866_ads_defconfig index 40d6f0568ca5..3f6b11b6f4f3 100644 --- a/arch/powerpc/configs/mpc866_ads_defconfig +++ b/arch/powerpc/configs/mpc866_ads_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:15 2009 | 4 | # Wed Jan 6 09:24:08 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -32,6 +32,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
33 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 33 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
34 | CONFIG_IRQ_PER_CPU=y | 34 | CONFIG_IRQ_PER_CPU=y |
35 | CONFIG_NR_IRQS=512 | ||
35 | CONFIG_STACKTRACE_SUPPORT=y | 36 | CONFIG_STACKTRACE_SUPPORT=y |
36 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 37 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
37 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 38 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -53,6 +54,7 @@ CONFIG_OF=y | |||
53 | CONFIG_AUDIT_ARCH=y | 54 | CONFIG_AUDIT_ARCH=y |
54 | CONFIG_DTC=y | 55 | CONFIG_DTC=y |
55 | # CONFIG_DEFAULT_UIMAGE is not set | 56 | # CONFIG_DEFAULT_UIMAGE is not set |
57 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
56 | # CONFIG_PPC_DCR_NATIVE is not set | 58 | # CONFIG_PPC_DCR_NATIVE is not set |
57 | # CONFIG_PPC_DCR_MMIO is not set | 59 | # CONFIG_PPC_DCR_MMIO is not set |
58 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 60 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -80,6 +82,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
80 | # | 82 | # |
81 | CONFIG_TREE_RCU=y | 83 | CONFIG_TREE_RCU=y |
82 | # CONFIG_TREE_PREEMPT_RCU is not set | 84 | # CONFIG_TREE_PREEMPT_RCU is not set |
85 | # CONFIG_TINY_RCU is not set | ||
83 | # CONFIG_RCU_TRACE is not set | 86 | # CONFIG_RCU_TRACE is not set |
84 | CONFIG_RCU_FANOUT=32 | 87 | CONFIG_RCU_FANOUT=32 |
85 | # CONFIG_RCU_FANOUT_EXACT is not set | 88 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -158,14 +161,41 @@ CONFIG_LBDAF=y | |||
158 | # IO Schedulers | 161 | # IO Schedulers |
159 | # | 162 | # |
160 | CONFIG_IOSCHED_NOOP=y | 163 | CONFIG_IOSCHED_NOOP=y |
161 | CONFIG_IOSCHED_AS=y | ||
162 | CONFIG_IOSCHED_DEADLINE=y | 164 | CONFIG_IOSCHED_DEADLINE=y |
163 | CONFIG_IOSCHED_CFQ=y | 165 | CONFIG_IOSCHED_CFQ=y |
164 | CONFIG_DEFAULT_AS=y | ||
165 | # CONFIG_DEFAULT_DEADLINE is not set | 166 | # CONFIG_DEFAULT_DEADLINE is not set |
166 | # CONFIG_DEFAULT_CFQ is not set | 167 | CONFIG_DEFAULT_CFQ=y |
167 | # CONFIG_DEFAULT_NOOP is not set | 168 | # CONFIG_DEFAULT_NOOP is not set |
168 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 169 | CONFIG_DEFAULT_IOSCHED="cfq" |
170 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
171 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
172 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
173 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
174 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
175 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
176 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
177 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
178 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
179 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
180 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
181 | # CONFIG_INLINE_READ_LOCK is not set | ||
182 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
183 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
184 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
185 | CONFIG_INLINE_READ_UNLOCK=y | ||
186 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
187 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
188 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
189 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
190 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
191 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
192 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
193 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
194 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
195 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
196 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
197 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
198 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
169 | # CONFIG_FREEZER is not set | 199 | # CONFIG_FREEZER is not set |
170 | 200 | ||
171 | # | 201 | # |
@@ -240,6 +270,7 @@ CONFIG_MATH_EMULATION=y | |||
240 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 270 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
241 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 271 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
242 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 272 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
273 | CONFIG_SPARSE_IRQ=y | ||
243 | CONFIG_MAX_ACTIVE_REGIONS=32 | 274 | CONFIG_MAX_ACTIVE_REGIONS=32 |
244 | CONFIG_ARCH_FLATMEM_ENABLE=y | 275 | CONFIG_ARCH_FLATMEM_ENABLE=y |
245 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 276 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -256,8 +287,6 @@ CONFIG_MIGRATION=y | |||
256 | CONFIG_ZONE_DMA_FLAG=1 | 287 | CONFIG_ZONE_DMA_FLAG=1 |
257 | CONFIG_BOUNCE=y | 288 | CONFIG_BOUNCE=y |
258 | CONFIG_VIRT_TO_BUS=y | 289 | CONFIG_VIRT_TO_BUS=y |
259 | CONFIG_HAVE_MLOCK=y | ||
260 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
261 | # CONFIG_KSM is not set | 290 | # CONFIG_KSM is not set |
262 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 291 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
263 | CONFIG_PPC_4K_PAGES=y | 292 | CONFIG_PPC_4K_PAGES=y |
@@ -375,9 +404,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
375 | # CONFIG_AF_RXRPC is not set | 404 | # CONFIG_AF_RXRPC is not set |
376 | CONFIG_WIRELESS=y | 405 | CONFIG_WIRELESS=y |
377 | # CONFIG_CFG80211 is not set | 406 | # CONFIG_CFG80211 is not set |
378 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
379 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
380 | # CONFIG_WIRELESS_EXT is not set | ||
381 | # CONFIG_LIB80211 is not set | 407 | # CONFIG_LIB80211 is not set |
382 | 408 | ||
383 | # | 409 | # |
@@ -407,6 +433,10 @@ CONFIG_BLK_DEV=y | |||
407 | # CONFIG_BLK_DEV_COW_COMMON is not set | 433 | # CONFIG_BLK_DEV_COW_COMMON is not set |
408 | CONFIG_BLK_DEV_LOOP=y | 434 | CONFIG_BLK_DEV_LOOP=y |
409 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 435 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
436 | |||
437 | # | ||
438 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
439 | # | ||
410 | # CONFIG_BLK_DEV_NBD is not set | 440 | # CONFIG_BLK_DEV_NBD is not set |
411 | # CONFIG_BLK_DEV_RAM is not set | 441 | # CONFIG_BLK_DEV_RAM is not set |
412 | # CONFIG_CDROM_PKTCDVD is not set | 442 | # CONFIG_CDROM_PKTCDVD is not set |
@@ -485,8 +515,7 @@ CONFIG_NETDEV_1000=y | |||
485 | # CONFIG_MV643XX_ETH is not set | 515 | # CONFIG_MV643XX_ETH is not set |
486 | CONFIG_NETDEV_10000=y | 516 | CONFIG_NETDEV_10000=y |
487 | CONFIG_WLAN=y | 517 | CONFIG_WLAN=y |
488 | # CONFIG_WLAN_PRE80211 is not set | 518 | # CONFIG_HOSTAP is not set |
489 | # CONFIG_WLAN_80211 is not set | ||
490 | 519 | ||
491 | # | 520 | # |
492 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 521 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -506,6 +535,7 @@ CONFIG_WLAN=y | |||
506 | CONFIG_INPUT=y | 535 | CONFIG_INPUT=y |
507 | # CONFIG_INPUT_FF_MEMLESS is not set | 536 | # CONFIG_INPUT_FF_MEMLESS is not set |
508 | # CONFIG_INPUT_POLLDEV is not set | 537 | # CONFIG_INPUT_POLLDEV is not set |
538 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
509 | 539 | ||
510 | # | 540 | # |
511 | # Userland interfaces | 541 | # Userland interfaces |
@@ -554,6 +584,7 @@ CONFIG_SERIO_SERPORT=y | |||
554 | CONFIG_SERIO_LIBPS2=y | 584 | CONFIG_SERIO_LIBPS2=y |
555 | # CONFIG_SERIO_RAW is not set | 585 | # CONFIG_SERIO_RAW is not set |
556 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | 586 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set |
587 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
557 | # CONFIG_GAMEPORT is not set | 588 | # CONFIG_GAMEPORT is not set |
558 | 589 | ||
559 | # | 590 | # |
@@ -576,6 +607,7 @@ CONFIG_SERIAL_CORE=y | |||
576 | CONFIG_SERIAL_CORE_CONSOLE=y | 607 | CONFIG_SERIAL_CORE_CONSOLE=y |
577 | CONFIG_SERIAL_CPM=y | 608 | CONFIG_SERIAL_CPM=y |
578 | CONFIG_SERIAL_CPM_CONSOLE=y | 609 | CONFIG_SERIAL_CPM_CONSOLE=y |
610 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
579 | CONFIG_UNIX98_PTYS=y | 611 | CONFIG_UNIX98_PTYS=y |
580 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 612 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
581 | # CONFIG_LEGACY_PTYS is not set | 613 | # CONFIG_LEGACY_PTYS is not set |
@@ -855,6 +887,7 @@ CONFIG_FRAME_WARN=1024 | |||
855 | # CONFIG_DEBUG_MEMORY_INIT is not set | 887 | # CONFIG_DEBUG_MEMORY_INIT is not set |
856 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 888 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
857 | # CONFIG_LATENCYTOP is not set | 889 | # CONFIG_LATENCYTOP is not set |
890 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
858 | CONFIG_HAVE_FUNCTION_TRACER=y | 891 | CONFIG_HAVE_FUNCTION_TRACER=y |
859 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | 892 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y |
860 | CONFIG_HAVE_DYNAMIC_FTRACE=y | 893 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
@@ -876,7 +909,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
876 | # CONFIG_KEYS is not set | 909 | # CONFIG_KEYS is not set |
877 | # CONFIG_SECURITY is not set | 910 | # CONFIG_SECURITY is not set |
878 | # CONFIG_SECURITYFS is not set | 911 | # CONFIG_SECURITYFS is not set |
879 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 912 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
913 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
914 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
915 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
916 | CONFIG_DEFAULT_SECURITY="" | ||
880 | CONFIG_CRYPTO=y | 917 | CONFIG_CRYPTO=y |
881 | 918 | ||
882 | # | 919 | # |
diff --git a/arch/powerpc/configs/mpc86xx_defconfig b/arch/powerpc/configs/mpc86xx_defconfig index 5b3abb42ae30..41884c97a4f3 100644 --- a/arch/powerpc/configs/mpc86xx_defconfig +++ b/arch/powerpc/configs/mpc86xx_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:16 2009 | 4 | # Wed Jan 6 09:24:09 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -38,6 +38,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
40 | CONFIG_IRQ_PER_CPU=y | 40 | CONFIG_IRQ_PER_CPU=y |
41 | CONFIG_NR_IRQS=512 | ||
41 | CONFIG_STACKTRACE_SUPPORT=y | 42 | CONFIG_STACKTRACE_SUPPORT=y |
42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y | |||
61 | CONFIG_GENERIC_BUG=y | 62 | CONFIG_GENERIC_BUG=y |
62 | CONFIG_DTC=y | 63 | CONFIG_DTC=y |
63 | CONFIG_DEFAULT_UIMAGE=y | 64 | CONFIG_DEFAULT_UIMAGE=y |
65 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
66 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
64 | # CONFIG_PPC_DCR_NATIVE is not set | 67 | # CONFIG_PPC_DCR_NATIVE is not set |
65 | # CONFIG_PPC_DCR_MMIO is not set | 68 | # CONFIG_PPC_DCR_MMIO is not set |
66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 69 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -91,6 +94,7 @@ CONFIG_AUDIT=y | |||
91 | # | 94 | # |
92 | CONFIG_TREE_RCU=y | 95 | CONFIG_TREE_RCU=y |
93 | # CONFIG_TREE_PREEMPT_RCU is not set | 96 | # CONFIG_TREE_PREEMPT_RCU is not set |
97 | # CONFIG_TINY_RCU is not set | ||
94 | # CONFIG_RCU_TRACE is not set | 98 | # CONFIG_RCU_TRACE is not set |
95 | CONFIG_RCU_FANOUT=32 | 99 | CONFIG_RCU_FANOUT=32 |
96 | # CONFIG_RCU_FANOUT_EXACT is not set | 100 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -183,14 +187,41 @@ CONFIG_LBDAF=y | |||
183 | # IO Schedulers | 187 | # IO Schedulers |
184 | # | 188 | # |
185 | CONFIG_IOSCHED_NOOP=y | 189 | CONFIG_IOSCHED_NOOP=y |
186 | CONFIG_IOSCHED_AS=y | ||
187 | CONFIG_IOSCHED_DEADLINE=y | 190 | CONFIG_IOSCHED_DEADLINE=y |
188 | CONFIG_IOSCHED_CFQ=y | 191 | CONFIG_IOSCHED_CFQ=y |
189 | # CONFIG_DEFAULT_AS is not set | ||
190 | # CONFIG_DEFAULT_DEADLINE is not set | 192 | # CONFIG_DEFAULT_DEADLINE is not set |
191 | CONFIG_DEFAULT_CFQ=y | 193 | CONFIG_DEFAULT_CFQ=y |
192 | # CONFIG_DEFAULT_NOOP is not set | 194 | # CONFIG_DEFAULT_NOOP is not set |
193 | CONFIG_DEFAULT_IOSCHED="cfq" | 195 | CONFIG_DEFAULT_IOSCHED="cfq" |
196 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
197 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
198 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
199 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
200 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
201 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
202 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
203 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
204 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
205 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
206 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
207 | # CONFIG_INLINE_READ_LOCK is not set | ||
208 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
209 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
210 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
211 | CONFIG_INLINE_READ_UNLOCK=y | ||
212 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
213 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
214 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
215 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
216 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
217 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
218 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
219 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
220 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
221 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
222 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
223 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
224 | CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
194 | # CONFIG_FREEZER is not set | 225 | # CONFIG_FREEZER is not set |
195 | 226 | ||
196 | # | 227 | # |
@@ -221,7 +252,7 @@ CONFIG_MPIC=y | |||
221 | # CONFIG_MPIC_WEIRD is not set | 252 | # CONFIG_MPIC_WEIRD is not set |
222 | CONFIG_PPC_I8259=y | 253 | CONFIG_PPC_I8259=y |
223 | # CONFIG_PPC_RTAS is not set | 254 | # CONFIG_PPC_RTAS is not set |
224 | # CONFIG_MMIO_NVRAM is not set | 255 | CONFIG_MMIO_NVRAM=y |
225 | # CONFIG_PPC_MPC106 is not set | 256 | # CONFIG_PPC_MPC106 is not set |
226 | # CONFIG_PPC_970_NAP is not set | 257 | # CONFIG_PPC_970_NAP is not set |
227 | # CONFIG_PPC_INDIRECT_IO is not set | 258 | # CONFIG_PPC_INDIRECT_IO is not set |
@@ -262,6 +293,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | |||
262 | # CONFIG_KEXEC is not set | 293 | # CONFIG_KEXEC is not set |
263 | # CONFIG_CRASH_DUMP is not set | 294 | # CONFIG_CRASH_DUMP is not set |
264 | # CONFIG_IRQ_ALL_CPUS is not set | 295 | # CONFIG_IRQ_ALL_CPUS is not set |
296 | CONFIG_SPARSE_IRQ=y | ||
265 | CONFIG_MAX_ACTIVE_REGIONS=32 | 297 | CONFIG_MAX_ACTIVE_REGIONS=32 |
266 | CONFIG_ARCH_FLATMEM_ENABLE=y | 298 | CONFIG_ARCH_FLATMEM_ENABLE=y |
267 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 299 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -278,8 +310,6 @@ CONFIG_MIGRATION=y | |||
278 | CONFIG_ZONE_DMA_FLAG=1 | 310 | CONFIG_ZONE_DMA_FLAG=1 |
279 | CONFIG_BOUNCE=y | 311 | CONFIG_BOUNCE=y |
280 | CONFIG_VIRT_TO_BUS=y | 312 | CONFIG_VIRT_TO_BUS=y |
281 | CONFIG_HAVE_MLOCK=y | ||
282 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
283 | # CONFIG_KSM is not set | 313 | # CONFIG_KSM is not set |
284 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 314 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
285 | CONFIG_PPC_4K_PAGES=y | 315 | CONFIG_PPC_4K_PAGES=y |
@@ -397,6 +427,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y | |||
397 | CONFIG_INET6_XFRM_MODE_BEET=y | 427 | CONFIG_INET6_XFRM_MODE_BEET=y |
398 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 428 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
399 | CONFIG_IPV6_SIT=y | 429 | CONFIG_IPV6_SIT=y |
430 | # CONFIG_IPV6_SIT_6RD is not set | ||
400 | CONFIG_IPV6_NDISC_NODETYPE=y | 431 | CONFIG_IPV6_NDISC_NODETYPE=y |
401 | # CONFIG_IPV6_TUNNEL is not set | 432 | # CONFIG_IPV6_TUNNEL is not set |
402 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 433 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
@@ -441,9 +472,6 @@ CONFIG_SCTP_HMAC_MD5=y | |||
441 | CONFIG_FIB_RULES=y | 472 | CONFIG_FIB_RULES=y |
442 | CONFIG_WIRELESS=y | 473 | CONFIG_WIRELESS=y |
443 | # CONFIG_CFG80211 is not set | 474 | # CONFIG_CFG80211 is not set |
444 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
445 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
446 | # CONFIG_WIRELESS_EXT is not set | ||
447 | # CONFIG_LIB80211 is not set | 475 | # CONFIG_LIB80211 is not set |
448 | 476 | ||
449 | # | 477 | # |
@@ -486,6 +514,10 @@ CONFIG_BLK_DEV=y | |||
486 | # CONFIG_BLK_DEV_COW_COMMON is not set | 514 | # CONFIG_BLK_DEV_COW_COMMON is not set |
487 | CONFIG_BLK_DEV_LOOP=y | 515 | CONFIG_BLK_DEV_LOOP=y |
488 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 516 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
517 | |||
518 | # | ||
519 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
520 | # | ||
489 | CONFIG_BLK_DEV_NBD=y | 521 | CONFIG_BLK_DEV_NBD=y |
490 | # CONFIG_BLK_DEV_SX8 is not set | 522 | # CONFIG_BLK_DEV_SX8 is not set |
491 | # CONFIG_BLK_DEV_UB is not set | 523 | # CONFIG_BLK_DEV_UB is not set |
@@ -497,6 +529,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072 | |||
497 | # CONFIG_ATA_OVER_ETH is not set | 529 | # CONFIG_ATA_OVER_ETH is not set |
498 | # CONFIG_BLK_DEV_HD is not set | 530 | # CONFIG_BLK_DEV_HD is not set |
499 | CONFIG_MISC_DEVICES=y | 531 | CONFIG_MISC_DEVICES=y |
532 | # CONFIG_AD525X_DPOT is not set | ||
500 | # CONFIG_PHANTOM is not set | 533 | # CONFIG_PHANTOM is not set |
501 | # CONFIG_SGI_IOC4 is not set | 534 | # CONFIG_SGI_IOC4 is not set |
502 | # CONFIG_TIFM_CORE is not set | 535 | # CONFIG_TIFM_CORE is not set |
@@ -504,6 +537,7 @@ CONFIG_MISC_DEVICES=y | |||
504 | # CONFIG_ENCLOSURE_SERVICES is not set | 537 | # CONFIG_ENCLOSURE_SERVICES is not set |
505 | # CONFIG_HP_ILO is not set | 538 | # CONFIG_HP_ILO is not set |
506 | # CONFIG_ISL29003 is not set | 539 | # CONFIG_ISL29003 is not set |
540 | # CONFIG_DS1682 is not set | ||
507 | # CONFIG_C2PORT is not set | 541 | # CONFIG_C2PORT is not set |
508 | 542 | ||
509 | # | 543 | # |
@@ -557,7 +591,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
557 | # CONFIG_SCSI_BNX2_ISCSI is not set | 591 | # CONFIG_SCSI_BNX2_ISCSI is not set |
558 | # CONFIG_BE2ISCSI is not set | 592 | # CONFIG_BE2ISCSI is not set |
559 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 593 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
594 | # CONFIG_SCSI_HPSA is not set | ||
560 | # CONFIG_SCSI_3W_9XXX is not set | 595 | # CONFIG_SCSI_3W_9XXX is not set |
596 | # CONFIG_SCSI_3W_SAS is not set | ||
561 | # CONFIG_SCSI_ACARD is not set | 597 | # CONFIG_SCSI_ACARD is not set |
562 | # CONFIG_SCSI_AACRAID is not set | 598 | # CONFIG_SCSI_AACRAID is not set |
563 | # CONFIG_SCSI_AIC7XXX is not set | 599 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -596,6 +632,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
596 | # CONFIG_SCSI_NSP32 is not set | 632 | # CONFIG_SCSI_NSP32 is not set |
597 | # CONFIG_SCSI_DEBUG is not set | 633 | # CONFIG_SCSI_DEBUG is not set |
598 | # CONFIG_SCSI_PMCRAID is not set | 634 | # CONFIG_SCSI_PMCRAID is not set |
635 | # CONFIG_SCSI_PM8001 is not set | ||
599 | # CONFIG_SCSI_SRP is not set | 636 | # CONFIG_SCSI_SRP is not set |
600 | # CONFIG_SCSI_BFA_FC is not set | 637 | # CONFIG_SCSI_BFA_FC is not set |
601 | # CONFIG_SCSI_DH is not set | 638 | # CONFIG_SCSI_DH is not set |
@@ -651,15 +688,16 @@ CONFIG_PATA_ALI=y | |||
651 | # CONFIG_PATA_NS87415 is not set | 688 | # CONFIG_PATA_NS87415 is not set |
652 | # CONFIG_PATA_OPTI is not set | 689 | # CONFIG_PATA_OPTI is not set |
653 | # CONFIG_PATA_OPTIDMA is not set | 690 | # CONFIG_PATA_OPTIDMA is not set |
691 | # CONFIG_PATA_PDC2027X is not set | ||
654 | # CONFIG_PATA_PDC_OLD is not set | 692 | # CONFIG_PATA_PDC_OLD is not set |
655 | # CONFIG_PATA_RADISYS is not set | 693 | # CONFIG_PATA_RADISYS is not set |
656 | # CONFIG_PATA_RDC is not set | 694 | # CONFIG_PATA_RDC is not set |
657 | # CONFIG_PATA_RZ1000 is not set | 695 | # CONFIG_PATA_RZ1000 is not set |
658 | # CONFIG_PATA_SC1200 is not set | 696 | # CONFIG_PATA_SC1200 is not set |
659 | # CONFIG_PATA_SERVERWORKS is not set | 697 | # CONFIG_PATA_SERVERWORKS is not set |
660 | # CONFIG_PATA_PDC2027X is not set | ||
661 | # CONFIG_PATA_SIL680 is not set | 698 | # CONFIG_PATA_SIL680 is not set |
662 | # CONFIG_PATA_SIS is not set | 699 | # CONFIG_PATA_SIS is not set |
700 | # CONFIG_PATA_TOSHIBA is not set | ||
663 | # CONFIG_PATA_VIA is not set | 701 | # CONFIG_PATA_VIA is not set |
664 | # CONFIG_PATA_WINBOND is not set | 702 | # CONFIG_PATA_WINBOND is not set |
665 | # CONFIG_PATA_PLATFORM is not set | 703 | # CONFIG_PATA_PLATFORM is not set |
@@ -676,7 +714,7 @@ CONFIG_PATA_ALI=y | |||
676 | # | 714 | # |
677 | 715 | ||
678 | # | 716 | # |
679 | # See the help texts for more information. | 717 | # The newer stack is recommended. |
680 | # | 718 | # |
681 | # CONFIG_FIREWIRE is not set | 719 | # CONFIG_FIREWIRE is not set |
682 | # CONFIG_IEEE1394 is not set | 720 | # CONFIG_IEEE1394 is not set |
@@ -781,8 +819,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
781 | # CONFIG_BE2NET is not set | 819 | # CONFIG_BE2NET is not set |
782 | # CONFIG_TR is not set | 820 | # CONFIG_TR is not set |
783 | CONFIG_WLAN=y | 821 | CONFIG_WLAN=y |
784 | # CONFIG_WLAN_PRE80211 is not set | 822 | # CONFIG_AIRO is not set |
785 | # CONFIG_WLAN_80211 is not set | 823 | # CONFIG_ATMEL is not set |
824 | # CONFIG_PRISM54 is not set | ||
825 | # CONFIG_USB_ZD1201 is not set | ||
826 | # CONFIG_HOSTAP is not set | ||
786 | 827 | ||
787 | # | 828 | # |
788 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 829 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -805,6 +846,7 @@ CONFIG_WLAN=y | |||
805 | # CONFIG_NETCONSOLE is not set | 846 | # CONFIG_NETCONSOLE is not set |
806 | # CONFIG_NETPOLL is not set | 847 | # CONFIG_NETPOLL is not set |
807 | # CONFIG_NET_POLL_CONTROLLER is not set | 848 | # CONFIG_NET_POLL_CONTROLLER is not set |
849 | # CONFIG_VMXNET3 is not set | ||
808 | # CONFIG_ISDN is not set | 850 | # CONFIG_ISDN is not set |
809 | # CONFIG_PHONE is not set | 851 | # CONFIG_PHONE is not set |
810 | 852 | ||
@@ -814,6 +856,7 @@ CONFIG_WLAN=y | |||
814 | CONFIG_INPUT=y | 856 | CONFIG_INPUT=y |
815 | CONFIG_INPUT_FF_MEMLESS=m | 857 | CONFIG_INPUT_FF_MEMLESS=m |
816 | # CONFIG_INPUT_POLLDEV is not set | 858 | # CONFIG_INPUT_POLLDEV is not set |
859 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
817 | 860 | ||
818 | # | 861 | # |
819 | # Userland interfaces | 862 | # Userland interfaces |
@@ -843,6 +886,7 @@ CONFIG_SERIO_SERPORT=y | |||
843 | CONFIG_SERIO_LIBPS2=y | 886 | CONFIG_SERIO_LIBPS2=y |
844 | # CONFIG_SERIO_RAW is not set | 887 | # CONFIG_SERIO_RAW is not set |
845 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | 888 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set |
889 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
846 | # CONFIG_GAMEPORT is not set | 890 | # CONFIG_GAMEPORT is not set |
847 | 891 | ||
848 | # | 892 | # |
@@ -879,6 +923,7 @@ CONFIG_SERIAL_CORE=y | |||
879 | CONFIG_SERIAL_CORE_CONSOLE=y | 923 | CONFIG_SERIAL_CORE_CONSOLE=y |
880 | # CONFIG_SERIAL_JSM is not set | 924 | # CONFIG_SERIAL_JSM is not set |
881 | # CONFIG_SERIAL_OF_PLATFORM is not set | 925 | # CONFIG_SERIAL_OF_PLATFORM is not set |
926 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
882 | CONFIG_UNIX98_PTYS=y | 927 | CONFIG_UNIX98_PTYS=y |
883 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 928 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
884 | CONFIG_LEGACY_PTYS=y | 929 | CONFIG_LEGACY_PTYS=y |
@@ -936,11 +981,6 @@ CONFIG_I2C_MPC=y | |||
936 | # CONFIG_I2C_TINY_USB is not set | 981 | # CONFIG_I2C_TINY_USB is not set |
937 | 982 | ||
938 | # | 983 | # |
939 | # Graphics adapter I2C/DDC channel drivers | ||
940 | # | ||
941 | # CONFIG_I2C_VOODOO3 is not set | ||
942 | |||
943 | # | ||
944 | # Other I2C/SMBus bus drivers | 984 | # Other I2C/SMBus bus drivers |
945 | # | 985 | # |
946 | # CONFIG_I2C_PCA_PLATFORM is not set | 986 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -949,7 +989,6 @@ CONFIG_I2C_MPC=y | |||
949 | # | 989 | # |
950 | # Miscellaneous I2C Chip support | 990 | # Miscellaneous I2C Chip support |
951 | # | 991 | # |
952 | # CONFIG_DS1682 is not set | ||
953 | # CONFIG_SENSORS_TSL2550 is not set | 992 | # CONFIG_SENSORS_TSL2550 is not set |
954 | # CONFIG_I2C_DEBUG_CORE is not set | 993 | # CONFIG_I2C_DEBUG_CORE is not set |
955 | # CONFIG_I2C_DEBUG_ALGO is not set | 994 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -982,6 +1021,7 @@ CONFIG_GPIOLIB=y | |||
982 | # | 1021 | # |
983 | # PCI GPIO expanders: | 1022 | # PCI GPIO expanders: |
984 | # | 1023 | # |
1024 | # CONFIG_GPIO_CS5535 is not set | ||
985 | # CONFIG_GPIO_BT8XX is not set | 1025 | # CONFIG_GPIO_BT8XX is not set |
986 | # CONFIG_GPIO_LANGWELL is not set | 1026 | # CONFIG_GPIO_LANGWELL is not set |
987 | 1027 | ||
@@ -1015,11 +1055,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1015 | # CONFIG_TWL4030_CORE is not set | 1055 | # CONFIG_TWL4030_CORE is not set |
1016 | # CONFIG_MFD_TMIO is not set | 1056 | # CONFIG_MFD_TMIO is not set |
1017 | # CONFIG_PMIC_DA903X is not set | 1057 | # CONFIG_PMIC_DA903X is not set |
1058 | # CONFIG_PMIC_ADP5520 is not set | ||
1018 | # CONFIG_MFD_WM8400 is not set | 1059 | # CONFIG_MFD_WM8400 is not set |
1019 | # CONFIG_MFD_WM831X is not set | 1060 | # CONFIG_MFD_WM831X is not set |
1020 | # CONFIG_MFD_WM8350_I2C is not set | 1061 | # CONFIG_MFD_WM8350_I2C is not set |
1021 | # CONFIG_MFD_PCF50633 is not set | 1062 | # CONFIG_MFD_PCF50633 is not set |
1022 | # CONFIG_AB3100_CORE is not set | 1063 | # CONFIG_AB3100_CORE is not set |
1064 | # CONFIG_MFD_88PM8607 is not set | ||
1023 | # CONFIG_REGULATOR is not set | 1065 | # CONFIG_REGULATOR is not set |
1024 | # CONFIG_MEDIA_SUPPORT is not set | 1066 | # CONFIG_MEDIA_SUPPORT is not set |
1025 | 1067 | ||
@@ -1094,6 +1136,7 @@ CONFIG_SND_PCI=y | |||
1094 | # CONFIG_SND_CS4281 is not set | 1136 | # CONFIG_SND_CS4281 is not set |
1095 | # CONFIG_SND_CS46XX is not set | 1137 | # CONFIG_SND_CS46XX is not set |
1096 | # CONFIG_SND_CS5530 is not set | 1138 | # CONFIG_SND_CS5530 is not set |
1139 | # CONFIG_SND_CS5535AUDIO is not set | ||
1097 | # CONFIG_SND_CTXFI is not set | 1140 | # CONFIG_SND_CTXFI is not set |
1098 | # CONFIG_SND_DARLA20 is not set | 1141 | # CONFIG_SND_DARLA20 is not set |
1099 | # CONFIG_SND_GINA20 is not set | 1142 | # CONFIG_SND_GINA20 is not set |
@@ -1221,6 +1264,7 @@ CONFIG_USB_MON=y | |||
1221 | CONFIG_USB_EHCI_HCD=y | 1264 | CONFIG_USB_EHCI_HCD=y |
1222 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1265 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1223 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1266 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1267 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1224 | # CONFIG_USB_EHCI_FSL is not set | 1268 | # CONFIG_USB_EHCI_FSL is not set |
1225 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1269 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1226 | # CONFIG_USB_OXU210HP_HCD is not set | 1270 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1348,6 +1392,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1348 | # CONFIG_RTC_DRV_PCF8563 is not set | 1392 | # CONFIG_RTC_DRV_PCF8563 is not set |
1349 | # CONFIG_RTC_DRV_PCF8583 is not set | 1393 | # CONFIG_RTC_DRV_PCF8583 is not set |
1350 | # CONFIG_RTC_DRV_M41T80 is not set | 1394 | # CONFIG_RTC_DRV_M41T80 is not set |
1395 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1351 | # CONFIG_RTC_DRV_S35390A is not set | 1396 | # CONFIG_RTC_DRV_S35390A is not set |
1352 | # CONFIG_RTC_DRV_FM3130 is not set | 1397 | # CONFIG_RTC_DRV_FM3130 is not set |
1353 | # CONFIG_RTC_DRV_RX8581 is not set | 1398 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1369,7 +1414,9 @@ CONFIG_RTC_DRV_CMOS=y | |||
1369 | # CONFIG_RTC_DRV_M48T86 is not set | 1414 | # CONFIG_RTC_DRV_M48T86 is not set |
1370 | # CONFIG_RTC_DRV_M48T35 is not set | 1415 | # CONFIG_RTC_DRV_M48T35 is not set |
1371 | # CONFIG_RTC_DRV_M48T59 is not set | 1416 | # CONFIG_RTC_DRV_M48T59 is not set |
1417 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1372 | # CONFIG_RTC_DRV_BQ4802 is not set | 1418 | # CONFIG_RTC_DRV_BQ4802 is not set |
1419 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1373 | # CONFIG_RTC_DRV_V3020 is not set | 1420 | # CONFIG_RTC_DRV_V3020 is not set |
1374 | 1421 | ||
1375 | # | 1422 | # |
@@ -1684,7 +1731,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1684 | # CONFIG_KEYS is not set | 1731 | # CONFIG_KEYS is not set |
1685 | # CONFIG_SECURITY is not set | 1732 | # CONFIG_SECURITY is not set |
1686 | # CONFIG_SECURITYFS is not set | 1733 | # CONFIG_SECURITYFS is not set |
1687 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1734 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1735 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1736 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1737 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1738 | CONFIG_DEFAULT_SECURITY="" | ||
1688 | CONFIG_CRYPTO=y | 1739 | CONFIG_CRYPTO=y |
1689 | 1740 | ||
1690 | # | 1741 | # |
diff --git a/arch/powerpc/configs/mpc885_ads_defconfig b/arch/powerpc/configs/mpc885_ads_defconfig index 1da3488a603d..6b9e6bd2c98d 100644 --- a/arch/powerpc/configs/mpc885_ads_defconfig +++ b/arch/powerpc/configs/mpc885_ads_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:17 2009 | 4 | # Wed Jan 6 09:24:10 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -32,6 +32,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
33 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 33 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
34 | CONFIG_IRQ_PER_CPU=y | 34 | CONFIG_IRQ_PER_CPU=y |
35 | CONFIG_NR_IRQS=512 | ||
35 | CONFIG_STACKTRACE_SUPPORT=y | 36 | CONFIG_STACKTRACE_SUPPORT=y |
36 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 37 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
37 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 38 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -54,6 +55,7 @@ CONFIG_AUDIT_ARCH=y | |||
54 | CONFIG_GENERIC_BUG=y | 55 | CONFIG_GENERIC_BUG=y |
55 | CONFIG_DTC=y | 56 | CONFIG_DTC=y |
56 | # CONFIG_DEFAULT_UIMAGE is not set | 57 | # CONFIG_DEFAULT_UIMAGE is not set |
58 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
57 | # CONFIG_PPC_DCR_NATIVE is not set | 59 | # CONFIG_PPC_DCR_NATIVE is not set |
58 | # CONFIG_PPC_DCR_MMIO is not set | 60 | # CONFIG_PPC_DCR_MMIO is not set |
59 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 61 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -81,6 +83,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
81 | # | 83 | # |
82 | CONFIG_TREE_RCU=y | 84 | CONFIG_TREE_RCU=y |
83 | # CONFIG_TREE_PREEMPT_RCU is not set | 85 | # CONFIG_TREE_PREEMPT_RCU is not set |
86 | # CONFIG_TINY_RCU is not set | ||
84 | # CONFIG_RCU_TRACE is not set | 87 | # CONFIG_RCU_TRACE is not set |
85 | CONFIG_RCU_FANOUT=32 | 88 | CONFIG_RCU_FANOUT=32 |
86 | # CONFIG_RCU_FANOUT_EXACT is not set | 89 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -159,14 +162,41 @@ CONFIG_LBDAF=y | |||
159 | # IO Schedulers | 162 | # IO Schedulers |
160 | # | 163 | # |
161 | CONFIG_IOSCHED_NOOP=y | 164 | CONFIG_IOSCHED_NOOP=y |
162 | # CONFIG_IOSCHED_AS is not set | ||
163 | CONFIG_IOSCHED_DEADLINE=y | 165 | CONFIG_IOSCHED_DEADLINE=y |
164 | # CONFIG_IOSCHED_CFQ is not set | 166 | # CONFIG_IOSCHED_CFQ is not set |
165 | # CONFIG_DEFAULT_AS is not set | ||
166 | CONFIG_DEFAULT_DEADLINE=y | 167 | CONFIG_DEFAULT_DEADLINE=y |
167 | # CONFIG_DEFAULT_CFQ is not set | 168 | # CONFIG_DEFAULT_CFQ is not set |
168 | # CONFIG_DEFAULT_NOOP is not set | 169 | # CONFIG_DEFAULT_NOOP is not set |
169 | CONFIG_DEFAULT_IOSCHED="deadline" | 170 | CONFIG_DEFAULT_IOSCHED="deadline" |
171 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
172 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
173 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
174 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
175 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
176 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
177 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
178 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
179 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
180 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
181 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
182 | # CONFIG_INLINE_READ_LOCK is not set | ||
183 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
184 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
185 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
186 | CONFIG_INLINE_READ_UNLOCK=y | ||
187 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
188 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
189 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
190 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
191 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
192 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
193 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
194 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
195 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
196 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
197 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
198 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
199 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
170 | # CONFIG_FREEZER is not set | 200 | # CONFIG_FREEZER is not set |
171 | 201 | ||
172 | # | 202 | # |
@@ -248,6 +278,7 @@ CONFIG_8XX_MINIMAL_FPEMU=y | |||
248 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 278 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
249 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 279 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
250 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 280 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
281 | CONFIG_SPARSE_IRQ=y | ||
251 | CONFIG_MAX_ACTIVE_REGIONS=32 | 282 | CONFIG_MAX_ACTIVE_REGIONS=32 |
252 | CONFIG_ARCH_FLATMEM_ENABLE=y | 283 | CONFIG_ARCH_FLATMEM_ENABLE=y |
253 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 284 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -264,8 +295,6 @@ CONFIG_MIGRATION=y | |||
264 | CONFIG_ZONE_DMA_FLAG=1 | 295 | CONFIG_ZONE_DMA_FLAG=1 |
265 | CONFIG_BOUNCE=y | 296 | CONFIG_BOUNCE=y |
266 | CONFIG_VIRT_TO_BUS=y | 297 | CONFIG_VIRT_TO_BUS=y |
267 | CONFIG_HAVE_MLOCK=y | ||
268 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
269 | # CONFIG_KSM is not set | 298 | # CONFIG_KSM is not set |
270 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 299 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
271 | CONFIG_PPC_4K_PAGES=y | 300 | CONFIG_PPC_4K_PAGES=y |
@@ -379,9 +408,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
379 | # CONFIG_AF_RXRPC is not set | 408 | # CONFIG_AF_RXRPC is not set |
380 | CONFIG_WIRELESS=y | 409 | CONFIG_WIRELESS=y |
381 | # CONFIG_CFG80211 is not set | 410 | # CONFIG_CFG80211 is not set |
382 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
383 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
384 | # CONFIG_WIRELESS_EXT is not set | ||
385 | # CONFIG_LIB80211 is not set | 411 | # CONFIG_LIB80211 is not set |
386 | 412 | ||
387 | # | 413 | # |
@@ -556,8 +582,7 @@ CONFIG_FS_ENET_MDIO_FEC=y | |||
556 | # CONFIG_NETDEV_1000 is not set | 582 | # CONFIG_NETDEV_1000 is not set |
557 | # CONFIG_NETDEV_10000 is not set | 583 | # CONFIG_NETDEV_10000 is not set |
558 | CONFIG_WLAN=y | 584 | CONFIG_WLAN=y |
559 | # CONFIG_WLAN_PRE80211 is not set | 585 | # CONFIG_HOSTAP is not set |
560 | # CONFIG_WLAN_80211 is not set | ||
561 | 586 | ||
562 | # | 587 | # |
563 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 588 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -602,6 +627,7 @@ CONFIG_SERIAL_CORE=y | |||
602 | CONFIG_SERIAL_CORE_CONSOLE=y | 627 | CONFIG_SERIAL_CORE_CONSOLE=y |
603 | CONFIG_SERIAL_CPM=y | 628 | CONFIG_SERIAL_CPM=y |
604 | CONFIG_SERIAL_CPM_CONSOLE=y | 629 | CONFIG_SERIAL_CPM_CONSOLE=y |
630 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
605 | CONFIG_UNIX98_PTYS=y | 631 | CONFIG_UNIX98_PTYS=y |
606 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 632 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
607 | # CONFIG_LEGACY_PTYS is not set | 633 | # CONFIG_LEGACY_PTYS is not set |
@@ -862,6 +888,7 @@ CONFIG_DEBUG_INFO=y | |||
862 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | 888 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set |
863 | # CONFIG_FAULT_INJECTION is not set | 889 | # CONFIG_FAULT_INJECTION is not set |
864 | # CONFIG_LATENCYTOP is not set | 890 | # CONFIG_LATENCYTOP is not set |
891 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
865 | # CONFIG_DEBUG_PAGEALLOC is not set | 892 | # CONFIG_DEBUG_PAGEALLOC is not set |
866 | CONFIG_HAVE_FUNCTION_TRACER=y | 893 | CONFIG_HAVE_FUNCTION_TRACER=y |
867 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | 894 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y |
@@ -904,7 +931,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
904 | # CONFIG_KEYS is not set | 931 | # CONFIG_KEYS is not set |
905 | # CONFIG_SECURITY is not set | 932 | # CONFIG_SECURITY is not set |
906 | # CONFIG_SECURITYFS is not set | 933 | # CONFIG_SECURITYFS is not set |
907 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 934 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
935 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
936 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
937 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
938 | CONFIG_DEFAULT_SECURITY="" | ||
908 | # CONFIG_CRYPTO is not set | 939 | # CONFIG_CRYPTO is not set |
909 | CONFIG_PPC_CLOCK=y | 940 | CONFIG_PPC_CLOCK=y |
910 | CONFIG_PPC_LIB_RHEAP=y | 941 | CONFIG_PPC_LIB_RHEAP=y |
diff --git a/arch/powerpc/configs/pq2fads_defconfig b/arch/powerpc/configs/pq2fads_defconfig index b7911216af78..5d06f2cb8e5e 100644 --- a/arch/powerpc/configs/pq2fads_defconfig +++ b/arch/powerpc/configs/pq2fads_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:17 2009 | 4 | # Wed Jan 6 09:24:11 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -36,6 +36,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
38 | CONFIG_IRQ_PER_CPU=y | 38 | CONFIG_IRQ_PER_CPU=y |
39 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | 40 | CONFIG_STACKTRACE_SUPPORT=y |
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y | |||
59 | CONFIG_GENERIC_BUG=y | 60 | CONFIG_GENERIC_BUG=y |
60 | CONFIG_DTC=y | 61 | CONFIG_DTC=y |
61 | CONFIG_DEFAULT_UIMAGE=y | 62 | CONFIG_DEFAULT_UIMAGE=y |
63 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | # CONFIG_PPC_DCR_NATIVE is not set | 64 | # CONFIG_PPC_DCR_NATIVE is not set |
63 | # CONFIG_PPC_DCR_MMIO is not set | 65 | # CONFIG_PPC_DCR_MMIO is not set |
64 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
85 | # | 87 | # |
86 | CONFIG_TREE_RCU=y | 88 | CONFIG_TREE_RCU=y |
87 | # CONFIG_TREE_PREEMPT_RCU is not set | 89 | # CONFIG_TREE_PREEMPT_RCU is not set |
90 | # CONFIG_TINY_RCU is not set | ||
88 | # CONFIG_RCU_TRACE is not set | 91 | # CONFIG_RCU_TRACE is not set |
89 | CONFIG_RCU_FANOUT=32 | 92 | CONFIG_RCU_FANOUT=32 |
90 | # CONFIG_RCU_FANOUT_EXACT is not set | 93 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -165,14 +168,41 @@ CONFIG_BLK_DEV_BSG=y | |||
165 | # IO Schedulers | 168 | # IO Schedulers |
166 | # | 169 | # |
167 | CONFIG_IOSCHED_NOOP=y | 170 | CONFIG_IOSCHED_NOOP=y |
168 | CONFIG_IOSCHED_AS=y | ||
169 | CONFIG_IOSCHED_DEADLINE=y | 171 | CONFIG_IOSCHED_DEADLINE=y |
170 | CONFIG_IOSCHED_CFQ=y | 172 | CONFIG_IOSCHED_CFQ=y |
171 | CONFIG_DEFAULT_AS=y | ||
172 | # CONFIG_DEFAULT_DEADLINE is not set | 173 | # CONFIG_DEFAULT_DEADLINE is not set |
173 | # CONFIG_DEFAULT_CFQ is not set | 174 | CONFIG_DEFAULT_CFQ=y |
174 | # CONFIG_DEFAULT_NOOP is not set | 175 | # CONFIG_DEFAULT_NOOP is not set |
175 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 176 | CONFIG_DEFAULT_IOSCHED="cfq" |
177 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
178 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
179 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
180 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
181 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
182 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
183 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
184 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
185 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
186 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
187 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
188 | # CONFIG_INLINE_READ_LOCK is not set | ||
189 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
190 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
191 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
192 | CONFIG_INLINE_READ_UNLOCK=y | ||
193 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
194 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
195 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
196 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
197 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
198 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
199 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
200 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
201 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
202 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
203 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
204 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
205 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
176 | # CONFIG_FREEZER is not set | 206 | # CONFIG_FREEZER is not set |
177 | 207 | ||
178 | # | 208 | # |
@@ -243,6 +273,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | |||
243 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 273 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
244 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 274 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
245 | # CONFIG_CRASH_DUMP is not set | 275 | # CONFIG_CRASH_DUMP is not set |
276 | CONFIG_SPARSE_IRQ=y | ||
246 | CONFIG_MAX_ACTIVE_REGIONS=32 | 277 | CONFIG_MAX_ACTIVE_REGIONS=32 |
247 | CONFIG_ARCH_FLATMEM_ENABLE=y | 278 | CONFIG_ARCH_FLATMEM_ENABLE=y |
248 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 279 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -255,8 +286,6 @@ CONFIG_MIGRATION=y | |||
255 | CONFIG_ZONE_DMA_FLAG=1 | 286 | CONFIG_ZONE_DMA_FLAG=1 |
256 | CONFIG_BOUNCE=y | 287 | CONFIG_BOUNCE=y |
257 | CONFIG_VIRT_TO_BUS=y | 288 | CONFIG_VIRT_TO_BUS=y |
258 | CONFIG_HAVE_MLOCK=y | ||
259 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
260 | # CONFIG_KSM is not set | 289 | # CONFIG_KSM is not set |
261 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 290 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
262 | CONFIG_PPC_4K_PAGES=y | 291 | CONFIG_PPC_4K_PAGES=y |
@@ -407,9 +436,6 @@ CONFIG_NETFILTER_ADVANCED=y | |||
407 | # CONFIG_BT is not set | 436 | # CONFIG_BT is not set |
408 | CONFIG_WIRELESS=y | 437 | CONFIG_WIRELESS=y |
409 | # CONFIG_CFG80211 is not set | 438 | # CONFIG_CFG80211 is not set |
410 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
411 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
412 | # CONFIG_WIRELESS_EXT is not set | ||
413 | # CONFIG_LIB80211 is not set | 439 | # CONFIG_LIB80211 is not set |
414 | 440 | ||
415 | # | 441 | # |
@@ -530,6 +556,10 @@ CONFIG_BLK_DEV=y | |||
530 | # CONFIG_BLK_DEV_COW_COMMON is not set | 556 | # CONFIG_BLK_DEV_COW_COMMON is not set |
531 | CONFIG_BLK_DEV_LOOP=y | 557 | CONFIG_BLK_DEV_LOOP=y |
532 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 558 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
559 | |||
560 | # | ||
561 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
562 | # | ||
533 | # CONFIG_BLK_DEV_NBD is not set | 563 | # CONFIG_BLK_DEV_NBD is not set |
534 | # CONFIG_BLK_DEV_SX8 is not set | 564 | # CONFIG_BLK_DEV_SX8 is not set |
535 | # CONFIG_BLK_DEV_RAM is not set | 565 | # CONFIG_BLK_DEV_RAM is not set |
@@ -616,7 +646,7 @@ CONFIG_IDE_PROC_FS=y | |||
616 | # | 646 | # |
617 | 647 | ||
618 | # | 648 | # |
619 | # See the help texts for more information. | 649 | # The newer stack is recommended. |
620 | # | 650 | # |
621 | # CONFIG_FIREWIRE is not set | 651 | # CONFIG_FIREWIRE is not set |
622 | # CONFIG_IEEE1394 is not set | 652 | # CONFIG_IEEE1394 is not set |
@@ -721,8 +751,9 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
721 | # CONFIG_BE2NET is not set | 751 | # CONFIG_BE2NET is not set |
722 | # CONFIG_TR is not set | 752 | # CONFIG_TR is not set |
723 | CONFIG_WLAN=y | 753 | CONFIG_WLAN=y |
724 | # CONFIG_WLAN_PRE80211 is not set | 754 | # CONFIG_AIRO is not set |
725 | # CONFIG_WLAN_80211 is not set | 755 | # CONFIG_ATMEL is not set |
756 | # CONFIG_HOSTAP is not set | ||
726 | 757 | ||
727 | # | 758 | # |
728 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 759 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -739,6 +770,7 @@ CONFIG_PPP_DEFLATE=y | |||
739 | CONFIG_SLHC=y | 770 | CONFIG_SLHC=y |
740 | # CONFIG_NETPOLL is not set | 771 | # CONFIG_NETPOLL is not set |
741 | # CONFIG_NET_POLL_CONTROLLER is not set | 772 | # CONFIG_NET_POLL_CONTROLLER is not set |
773 | # CONFIG_VMXNET3 is not set | ||
742 | # CONFIG_ISDN is not set | 774 | # CONFIG_ISDN is not set |
743 | # CONFIG_PHONE is not set | 775 | # CONFIG_PHONE is not set |
744 | 776 | ||
@@ -748,6 +780,7 @@ CONFIG_SLHC=y | |||
748 | CONFIG_INPUT=y | 780 | CONFIG_INPUT=y |
749 | # CONFIG_INPUT_FF_MEMLESS is not set | 781 | # CONFIG_INPUT_FF_MEMLESS is not set |
750 | # CONFIG_INPUT_POLLDEV is not set | 782 | # CONFIG_INPUT_POLLDEV is not set |
783 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
751 | 784 | ||
752 | # | 785 | # |
753 | # Userland interfaces | 786 | # Userland interfaces |
@@ -802,6 +835,7 @@ CONFIG_SERIO_SERPORT=y | |||
802 | CONFIG_SERIO_LIBPS2=y | 835 | CONFIG_SERIO_LIBPS2=y |
803 | # CONFIG_SERIO_RAW is not set | 836 | # CONFIG_SERIO_RAW is not set |
804 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | 837 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set |
838 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
805 | # CONFIG_GAMEPORT is not set | 839 | # CONFIG_GAMEPORT is not set |
806 | 840 | ||
807 | # | 841 | # |
@@ -825,6 +859,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
825 | CONFIG_SERIAL_CPM=y | 859 | CONFIG_SERIAL_CPM=y |
826 | CONFIG_SERIAL_CPM_CONSOLE=y | 860 | CONFIG_SERIAL_CPM_CONSOLE=y |
827 | # CONFIG_SERIAL_JSM is not set | 861 | # CONFIG_SERIAL_JSM is not set |
862 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
828 | CONFIG_UNIX98_PTYS=y | 863 | CONFIG_UNIX98_PTYS=y |
829 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 864 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
830 | CONFIG_LEGACY_PTYS=y | 865 | CONFIG_LEGACY_PTYS=y |
@@ -861,6 +896,7 @@ CONFIG_GPIOLIB=y | |||
861 | # | 896 | # |
862 | # PCI GPIO expanders: | 897 | # PCI GPIO expanders: |
863 | # | 898 | # |
899 | # CONFIG_GPIO_CS5535 is not set | ||
864 | # CONFIG_GPIO_BT8XX is not set | 900 | # CONFIG_GPIO_BT8XX is not set |
865 | # CONFIG_GPIO_LANGWELL is not set | 901 | # CONFIG_GPIO_LANGWELL is not set |
866 | 902 | ||
@@ -955,10 +991,12 @@ CONFIG_USB_ETH_RNDIS=y | |||
955 | # CONFIG_USB_ETH_EEM is not set | 991 | # CONFIG_USB_ETH_EEM is not set |
956 | # CONFIG_USB_GADGETFS is not set | 992 | # CONFIG_USB_GADGETFS is not set |
957 | # CONFIG_USB_FILE_STORAGE is not set | 993 | # CONFIG_USB_FILE_STORAGE is not set |
994 | # CONFIG_USB_MASS_STORAGE is not set | ||
958 | # CONFIG_USB_G_SERIAL is not set | 995 | # CONFIG_USB_G_SERIAL is not set |
959 | # CONFIG_USB_MIDI_GADGET is not set | 996 | # CONFIG_USB_MIDI_GADGET is not set |
960 | # CONFIG_USB_G_PRINTER is not set | 997 | # CONFIG_USB_G_PRINTER is not set |
961 | # CONFIG_USB_CDC_COMPOSITE is not set | 998 | # CONFIG_USB_CDC_COMPOSITE is not set |
999 | # CONFIG_USB_G_MULTI is not set | ||
962 | 1000 | ||
963 | # | 1001 | # |
964 | # OTG and related infrastructure | 1002 | # OTG and related infrastructure |
@@ -1248,7 +1286,11 @@ CONFIG_BDI_SWITCH=y | |||
1248 | # CONFIG_KEYS is not set | 1286 | # CONFIG_KEYS is not set |
1249 | # CONFIG_SECURITY is not set | 1287 | # CONFIG_SECURITY is not set |
1250 | # CONFIG_SECURITYFS is not set | 1288 | # CONFIG_SECURITYFS is not set |
1251 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1289 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1290 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1291 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1292 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1293 | CONFIG_DEFAULT_SECURITY="" | ||
1252 | CONFIG_CRYPTO=y | 1294 | CONFIG_CRYPTO=y |
1253 | 1295 | ||
1254 | # | 1296 | # |
diff --git a/arch/powerpc/configs/prpmc2800_defconfig b/arch/powerpc/configs/prpmc2800_defconfig index ef50ce45d50b..57ab5748a34d 100644 --- a/arch/powerpc/configs/prpmc2800_defconfig +++ b/arch/powerpc/configs/prpmc2800_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:18 2009 | 4 | # Wed Jan 6 09:24:12 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -38,6 +38,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 38 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 39 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
40 | CONFIG_IRQ_PER_CPU=y | 40 | CONFIG_IRQ_PER_CPU=y |
41 | CONFIG_NR_IRQS=512 | ||
41 | CONFIG_STACKTRACE_SUPPORT=y | 42 | CONFIG_STACKTRACE_SUPPORT=y |
42 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 43 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
43 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 44 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -60,6 +61,7 @@ CONFIG_AUDIT_ARCH=y | |||
60 | CONFIG_GENERIC_BUG=y | 61 | CONFIG_GENERIC_BUG=y |
61 | CONFIG_DTC=y | 62 | CONFIG_DTC=y |
62 | # CONFIG_DEFAULT_UIMAGE is not set | 63 | # CONFIG_DEFAULT_UIMAGE is not set |
64 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
63 | # CONFIG_PPC_DCR_NATIVE is not set | 65 | # CONFIG_PPC_DCR_NATIVE is not set |
64 | # CONFIG_PPC_DCR_MMIO is not set | 66 | # CONFIG_PPC_DCR_MMIO is not set |
65 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 67 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -88,6 +90,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y | |||
88 | # | 90 | # |
89 | CONFIG_TREE_RCU=y | 91 | CONFIG_TREE_RCU=y |
90 | # CONFIG_TREE_PREEMPT_RCU is not set | 92 | # CONFIG_TREE_PREEMPT_RCU is not set |
93 | # CONFIG_TINY_RCU is not set | ||
91 | # CONFIG_RCU_TRACE is not set | 94 | # CONFIG_RCU_TRACE is not set |
92 | CONFIG_RCU_FANOUT=32 | 95 | CONFIG_RCU_FANOUT=32 |
93 | # CONFIG_RCU_FANOUT_EXACT is not set | 96 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -175,14 +178,41 @@ CONFIG_LBDAF=y | |||
175 | # IO Schedulers | 178 | # IO Schedulers |
176 | # | 179 | # |
177 | CONFIG_IOSCHED_NOOP=y | 180 | CONFIG_IOSCHED_NOOP=y |
178 | CONFIG_IOSCHED_AS=y | ||
179 | # CONFIG_IOSCHED_DEADLINE is not set | 181 | # CONFIG_IOSCHED_DEADLINE is not set |
180 | # CONFIG_IOSCHED_CFQ is not set | 182 | # CONFIG_IOSCHED_CFQ is not set |
181 | CONFIG_DEFAULT_AS=y | ||
182 | # CONFIG_DEFAULT_DEADLINE is not set | 183 | # CONFIG_DEFAULT_DEADLINE is not set |
183 | # CONFIG_DEFAULT_CFQ is not set | 184 | # CONFIG_DEFAULT_CFQ is not set |
184 | # CONFIG_DEFAULT_NOOP is not set | 185 | CONFIG_DEFAULT_NOOP=y |
185 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 186 | CONFIG_DEFAULT_IOSCHED="noop" |
187 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
188 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
189 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
190 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
191 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
192 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
193 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
194 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
195 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
196 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
197 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
198 | # CONFIG_INLINE_READ_LOCK is not set | ||
199 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
200 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
201 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
202 | CONFIG_INLINE_READ_UNLOCK=y | ||
203 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
204 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
205 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
206 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
207 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
208 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
209 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
210 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
211 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
212 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
213 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
214 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
215 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
186 | # CONFIG_FREEZER is not set | 216 | # CONFIG_FREEZER is not set |
187 | 217 | ||
188 | # | 218 | # |
@@ -207,6 +237,8 @@ CONFIG_EMBEDDED6xx=y | |||
207 | CONFIG_PPC_PRPMC2800=y | 237 | CONFIG_PPC_PRPMC2800=y |
208 | # CONFIG_PPC_C2K is not set | 238 | # CONFIG_PPC_C2K is not set |
209 | CONFIG_MV64X60=y | 239 | CONFIG_MV64X60=y |
240 | # CONFIG_GAMECUBE is not set | ||
241 | # CONFIG_WII is not set | ||
210 | # CONFIG_AMIGAONE is not set | 242 | # CONFIG_AMIGAONE is not set |
211 | CONFIG_PPC_OF_BOOT_TRAMPOLINE=y | 243 | CONFIG_PPC_OF_BOOT_TRAMPOLINE=y |
212 | # CONFIG_IPIC is not set | 244 | # CONFIG_IPIC is not set |
@@ -252,6 +284,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
252 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 284 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
253 | # CONFIG_KEXEC is not set | 285 | # CONFIG_KEXEC is not set |
254 | # CONFIG_CRASH_DUMP is not set | 286 | # CONFIG_CRASH_DUMP is not set |
287 | CONFIG_SPARSE_IRQ=y | ||
255 | CONFIG_MAX_ACTIVE_REGIONS=32 | 288 | CONFIG_MAX_ACTIVE_REGIONS=32 |
256 | CONFIG_ARCH_FLATMEM_ENABLE=y | 289 | CONFIG_ARCH_FLATMEM_ENABLE=y |
257 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 290 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -268,8 +301,6 @@ CONFIG_MIGRATION=y | |||
268 | CONFIG_ZONE_DMA_FLAG=1 | 301 | CONFIG_ZONE_DMA_FLAG=1 |
269 | CONFIG_BOUNCE=y | 302 | CONFIG_BOUNCE=y |
270 | CONFIG_VIRT_TO_BUS=y | 303 | CONFIG_VIRT_TO_BUS=y |
271 | CONFIG_HAVE_MLOCK=y | ||
272 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
273 | # CONFIG_KSM is not set | 304 | # CONFIG_KSM is not set |
274 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 305 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
275 | CONFIG_PPC_4K_PAGES=y | 306 | CONFIG_PPC_4K_PAGES=y |
@@ -394,9 +425,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
394 | # CONFIG_AF_RXRPC is not set | 425 | # CONFIG_AF_RXRPC is not set |
395 | CONFIG_WIRELESS=y | 426 | CONFIG_WIRELESS=y |
396 | # CONFIG_CFG80211 is not set | 427 | # CONFIG_CFG80211 is not set |
397 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
398 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
399 | # CONFIG_WIRELESS_EXT is not set | ||
400 | # CONFIG_LIB80211 is not set | 428 | # CONFIG_LIB80211 is not set |
401 | 429 | ||
402 | # | 430 | # |
@@ -518,6 +546,10 @@ CONFIG_BLK_DEV=y | |||
518 | # CONFIG_BLK_DEV_COW_COMMON is not set | 546 | # CONFIG_BLK_DEV_COW_COMMON is not set |
519 | CONFIG_BLK_DEV_LOOP=y | 547 | CONFIG_BLK_DEV_LOOP=y |
520 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 548 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
549 | |||
550 | # | ||
551 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
552 | # | ||
521 | # CONFIG_BLK_DEV_NBD is not set | 553 | # CONFIG_BLK_DEV_NBD is not set |
522 | # CONFIG_BLK_DEV_SX8 is not set | 554 | # CONFIG_BLK_DEV_SX8 is not set |
523 | # CONFIG_BLK_DEV_UB is not set | 555 | # CONFIG_BLK_DEV_UB is not set |
@@ -529,6 +561,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072 | |||
529 | # CONFIG_ATA_OVER_ETH is not set | 561 | # CONFIG_ATA_OVER_ETH is not set |
530 | # CONFIG_BLK_DEV_HD is not set | 562 | # CONFIG_BLK_DEV_HD is not set |
531 | CONFIG_MISC_DEVICES=y | 563 | CONFIG_MISC_DEVICES=y |
564 | # CONFIG_AD525X_DPOT is not set | ||
532 | # CONFIG_PHANTOM is not set | 565 | # CONFIG_PHANTOM is not set |
533 | # CONFIG_SGI_IOC4 is not set | 566 | # CONFIG_SGI_IOC4 is not set |
534 | # CONFIG_TIFM_CORE is not set | 567 | # CONFIG_TIFM_CORE is not set |
@@ -536,6 +569,7 @@ CONFIG_MISC_DEVICES=y | |||
536 | # CONFIG_ENCLOSURE_SERVICES is not set | 569 | # CONFIG_ENCLOSURE_SERVICES is not set |
537 | # CONFIG_HP_ILO is not set | 570 | # CONFIG_HP_ILO is not set |
538 | # CONFIG_ISL29003 is not set | 571 | # CONFIG_ISL29003 is not set |
572 | # CONFIG_DS1682 is not set | ||
539 | # CONFIG_C2PORT is not set | 573 | # CONFIG_C2PORT is not set |
540 | 574 | ||
541 | # | 575 | # |
@@ -641,7 +675,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
641 | # CONFIG_SCSI_BNX2_ISCSI is not set | 675 | # CONFIG_SCSI_BNX2_ISCSI is not set |
642 | # CONFIG_BE2ISCSI is not set | 676 | # CONFIG_BE2ISCSI is not set |
643 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 677 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
678 | # CONFIG_SCSI_HPSA is not set | ||
644 | # CONFIG_SCSI_3W_9XXX is not set | 679 | # CONFIG_SCSI_3W_9XXX is not set |
680 | # CONFIG_SCSI_3W_SAS is not set | ||
645 | # CONFIG_SCSI_ACARD is not set | 681 | # CONFIG_SCSI_ACARD is not set |
646 | # CONFIG_SCSI_AACRAID is not set | 682 | # CONFIG_SCSI_AACRAID is not set |
647 | # CONFIG_SCSI_AIC7XXX is not set | 683 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -680,6 +716,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
680 | # CONFIG_SCSI_NSP32 is not set | 716 | # CONFIG_SCSI_NSP32 is not set |
681 | # CONFIG_SCSI_DEBUG is not set | 717 | # CONFIG_SCSI_DEBUG is not set |
682 | # CONFIG_SCSI_PMCRAID is not set | 718 | # CONFIG_SCSI_PMCRAID is not set |
719 | # CONFIG_SCSI_PM8001 is not set | ||
683 | # CONFIG_SCSI_SRP is not set | 720 | # CONFIG_SCSI_SRP is not set |
684 | # CONFIG_SCSI_BFA_FC is not set | 721 | # CONFIG_SCSI_BFA_FC is not set |
685 | # CONFIG_SCSI_DH is not set | 722 | # CONFIG_SCSI_DH is not set |
@@ -734,15 +771,16 @@ CONFIG_SATA_MV=y | |||
734 | # CONFIG_PATA_NS87415 is not set | 771 | # CONFIG_PATA_NS87415 is not set |
735 | # CONFIG_PATA_OPTI is not set | 772 | # CONFIG_PATA_OPTI is not set |
736 | # CONFIG_PATA_OPTIDMA is not set | 773 | # CONFIG_PATA_OPTIDMA is not set |
774 | # CONFIG_PATA_PDC2027X is not set | ||
737 | # CONFIG_PATA_PDC_OLD is not set | 775 | # CONFIG_PATA_PDC_OLD is not set |
738 | # CONFIG_PATA_RADISYS is not set | 776 | # CONFIG_PATA_RADISYS is not set |
739 | # CONFIG_PATA_RDC is not set | 777 | # CONFIG_PATA_RDC is not set |
740 | # CONFIG_PATA_RZ1000 is not set | 778 | # CONFIG_PATA_RZ1000 is not set |
741 | # CONFIG_PATA_SC1200 is not set | 779 | # CONFIG_PATA_SC1200 is not set |
742 | # CONFIG_PATA_SERVERWORKS is not set | 780 | # CONFIG_PATA_SERVERWORKS is not set |
743 | # CONFIG_PATA_PDC2027X is not set | ||
744 | # CONFIG_PATA_SIL680 is not set | 781 | # CONFIG_PATA_SIL680 is not set |
745 | # CONFIG_PATA_SIS is not set | 782 | # CONFIG_PATA_SIS is not set |
783 | # CONFIG_PATA_TOSHIBA is not set | ||
746 | # CONFIG_PATA_VIA is not set | 784 | # CONFIG_PATA_VIA is not set |
747 | # CONFIG_PATA_WINBOND is not set | 785 | # CONFIG_PATA_WINBOND is not set |
748 | # CONFIG_PATA_PLATFORM is not set | 786 | # CONFIG_PATA_PLATFORM is not set |
@@ -759,7 +797,7 @@ CONFIG_SATA_MV=y | |||
759 | # | 797 | # |
760 | 798 | ||
761 | # | 799 | # |
762 | # See the help texts for more information. | 800 | # The newer stack is recommended. |
763 | # | 801 | # |
764 | # CONFIG_FIREWIRE is not set | 802 | # CONFIG_FIREWIRE is not set |
765 | # CONFIG_IEEE1394 is not set | 803 | # CONFIG_IEEE1394 is not set |
@@ -886,8 +924,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
886 | # CONFIG_BE2NET is not set | 924 | # CONFIG_BE2NET is not set |
887 | # CONFIG_TR is not set | 925 | # CONFIG_TR is not set |
888 | CONFIG_WLAN=y | 926 | CONFIG_WLAN=y |
889 | # CONFIG_WLAN_PRE80211 is not set | 927 | # CONFIG_AIRO is not set |
890 | # CONFIG_WLAN_80211 is not set | 928 | # CONFIG_ATMEL is not set |
929 | # CONFIG_PRISM54 is not set | ||
930 | # CONFIG_USB_ZD1201 is not set | ||
931 | # CONFIG_HOSTAP is not set | ||
891 | 932 | ||
892 | # | 933 | # |
893 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 934 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -910,6 +951,7 @@ CONFIG_WLAN=y | |||
910 | # CONFIG_NETCONSOLE is not set | 951 | # CONFIG_NETCONSOLE is not set |
911 | # CONFIG_NETPOLL is not set | 952 | # CONFIG_NETPOLL is not set |
912 | # CONFIG_NET_POLL_CONTROLLER is not set | 953 | # CONFIG_NET_POLL_CONTROLLER is not set |
954 | # CONFIG_VMXNET3 is not set | ||
913 | # CONFIG_ISDN is not set | 955 | # CONFIG_ISDN is not set |
914 | # CONFIG_PHONE is not set | 956 | # CONFIG_PHONE is not set |
915 | 957 | ||
@@ -919,6 +961,7 @@ CONFIG_WLAN=y | |||
919 | CONFIG_INPUT=y | 961 | CONFIG_INPUT=y |
920 | CONFIG_INPUT_FF_MEMLESS=y | 962 | CONFIG_INPUT_FF_MEMLESS=y |
921 | # CONFIG_INPUT_POLLDEV is not set | 963 | # CONFIG_INPUT_POLLDEV is not set |
964 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
922 | 965 | ||
923 | # | 966 | # |
924 | # Userland interfaces | 967 | # Userland interfaces |
@@ -973,6 +1016,7 @@ CONFIG_SERIAL_MPSC_CONSOLE=y | |||
973 | CONFIG_SERIAL_CORE=y | 1016 | CONFIG_SERIAL_CORE=y |
974 | CONFIG_SERIAL_CORE_CONSOLE=y | 1017 | CONFIG_SERIAL_CORE_CONSOLE=y |
975 | # CONFIG_SERIAL_JSM is not set | 1018 | # CONFIG_SERIAL_JSM is not set |
1019 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
976 | CONFIG_UNIX98_PTYS=y | 1020 | CONFIG_UNIX98_PTYS=y |
977 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 1021 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
978 | CONFIG_LEGACY_PTYS=y | 1022 | CONFIG_LEGACY_PTYS=y |
@@ -1030,11 +1074,6 @@ CONFIG_I2C_MV64XXX=y | |||
1030 | # CONFIG_I2C_TINY_USB is not set | 1074 | # CONFIG_I2C_TINY_USB is not set |
1031 | 1075 | ||
1032 | # | 1076 | # |
1033 | # Graphics adapter I2C/DDC channel drivers | ||
1034 | # | ||
1035 | # CONFIG_I2C_VOODOO3 is not set | ||
1036 | |||
1037 | # | ||
1038 | # Other I2C/SMBus bus drivers | 1077 | # Other I2C/SMBus bus drivers |
1039 | # | 1078 | # |
1040 | # CONFIG_I2C_PCA_PLATFORM is not set | 1079 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -1042,7 +1081,6 @@ CONFIG_I2C_MV64XXX=y | |||
1042 | # | 1081 | # |
1043 | # Miscellaneous I2C Chip support | 1082 | # Miscellaneous I2C Chip support |
1044 | # | 1083 | # |
1045 | # CONFIG_DS1682 is not set | ||
1046 | # CONFIG_SENSORS_TSL2550 is not set | 1084 | # CONFIG_SENSORS_TSL2550 is not set |
1047 | # CONFIG_I2C_DEBUG_CORE is not set | 1085 | # CONFIG_I2C_DEBUG_CORE is not set |
1048 | # CONFIG_I2C_DEBUG_ALGO is not set | 1086 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -1088,6 +1126,7 @@ CONFIG_HWMON=y | |||
1088 | # CONFIG_SENSORS_GL520SM is not set | 1126 | # CONFIG_SENSORS_GL520SM is not set |
1089 | # CONFIG_SENSORS_IT87 is not set | 1127 | # CONFIG_SENSORS_IT87 is not set |
1090 | # CONFIG_SENSORS_LM63 is not set | 1128 | # CONFIG_SENSORS_LM63 is not set |
1129 | # CONFIG_SENSORS_LM73 is not set | ||
1091 | # CONFIG_SENSORS_LM75 is not set | 1130 | # CONFIG_SENSORS_LM75 is not set |
1092 | # CONFIG_SENSORS_LM77 is not set | 1131 | # CONFIG_SENSORS_LM77 is not set |
1093 | # CONFIG_SENSORS_LM78 is not set | 1132 | # CONFIG_SENSORS_LM78 is not set |
@@ -1126,6 +1165,7 @@ CONFIG_HWMON=y | |||
1126 | # CONFIG_SENSORS_W83L786NG is not set | 1165 | # CONFIG_SENSORS_W83L786NG is not set |
1127 | # CONFIG_SENSORS_W83627HF is not set | 1166 | # CONFIG_SENSORS_W83627HF is not set |
1128 | # CONFIG_SENSORS_W83627EHF is not set | 1167 | # CONFIG_SENSORS_W83627EHF is not set |
1168 | # CONFIG_SENSORS_LIS3_I2C is not set | ||
1129 | # CONFIG_THERMAL is not set | 1169 | # CONFIG_THERMAL is not set |
1130 | # CONFIG_WATCHDOG is not set | 1170 | # CONFIG_WATCHDOG is not set |
1131 | CONFIG_SSB_POSSIBLE=y | 1171 | CONFIG_SSB_POSSIBLE=y |
@@ -1144,11 +1184,13 @@ CONFIG_SSB_POSSIBLE=y | |||
1144 | # CONFIG_TWL4030_CORE is not set | 1184 | # CONFIG_TWL4030_CORE is not set |
1145 | # CONFIG_MFD_TMIO is not set | 1185 | # CONFIG_MFD_TMIO is not set |
1146 | # CONFIG_PMIC_DA903X is not set | 1186 | # CONFIG_PMIC_DA903X is not set |
1187 | # CONFIG_PMIC_ADP5520 is not set | ||
1147 | # CONFIG_MFD_WM8400 is not set | 1188 | # CONFIG_MFD_WM8400 is not set |
1148 | # CONFIG_MFD_WM831X is not set | 1189 | # CONFIG_MFD_WM831X is not set |
1149 | # CONFIG_MFD_WM8350_I2C is not set | 1190 | # CONFIG_MFD_WM8350_I2C is not set |
1150 | # CONFIG_MFD_PCF50633 is not set | 1191 | # CONFIG_MFD_PCF50633 is not set |
1151 | # CONFIG_AB3100_CORE is not set | 1192 | # CONFIG_AB3100_CORE is not set |
1193 | # CONFIG_MFD_88PM8607 is not set | ||
1152 | # CONFIG_REGULATOR is not set | 1194 | # CONFIG_REGULATOR is not set |
1153 | # CONFIG_MEDIA_SUPPORT is not set | 1195 | # CONFIG_MEDIA_SUPPORT is not set |
1154 | 1196 | ||
@@ -1250,6 +1292,7 @@ CONFIG_USB_MON=y | |||
1250 | CONFIG_USB_EHCI_HCD=y | 1292 | CONFIG_USB_EHCI_HCD=y |
1251 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1293 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1252 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1294 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1295 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
1253 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1296 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1254 | # CONFIG_USB_OXU210HP_HCD is not set | 1297 | # CONFIG_USB_OXU210HP_HCD is not set |
1255 | # CONFIG_USB_ISP116X_HCD is not set | 1298 | # CONFIG_USB_ISP116X_HCD is not set |
@@ -1362,6 +1405,7 @@ CONFIG_RTC_DRV_MAX6900=y | |||
1362 | # CONFIG_RTC_DRV_PCF8563 is not set | 1405 | # CONFIG_RTC_DRV_PCF8563 is not set |
1363 | # CONFIG_RTC_DRV_PCF8583 is not set | 1406 | # CONFIG_RTC_DRV_PCF8583 is not set |
1364 | # CONFIG_RTC_DRV_M41T80 is not set | 1407 | # CONFIG_RTC_DRV_M41T80 is not set |
1408 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1365 | # CONFIG_RTC_DRV_S35390A is not set | 1409 | # CONFIG_RTC_DRV_S35390A is not set |
1366 | # CONFIG_RTC_DRV_FM3130 is not set | 1410 | # CONFIG_RTC_DRV_FM3130 is not set |
1367 | # CONFIG_RTC_DRV_RX8581 is not set | 1411 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1383,7 +1427,9 @@ CONFIG_RTC_DRV_MAX6900=y | |||
1383 | # CONFIG_RTC_DRV_M48T86 is not set | 1427 | # CONFIG_RTC_DRV_M48T86 is not set |
1384 | # CONFIG_RTC_DRV_M48T35 is not set | 1428 | # CONFIG_RTC_DRV_M48T35 is not set |
1385 | # CONFIG_RTC_DRV_M48T59 is not set | 1429 | # CONFIG_RTC_DRV_M48T59 is not set |
1430 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1386 | # CONFIG_RTC_DRV_BQ4802 is not set | 1431 | # CONFIG_RTC_DRV_BQ4802 is not set |
1432 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1387 | # CONFIG_RTC_DRV_V3020 is not set | 1433 | # CONFIG_RTC_DRV_V3020 is not set |
1388 | 1434 | ||
1389 | # | 1435 | # |
@@ -1626,7 +1672,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1626 | # CONFIG_KEYS is not set | 1672 | # CONFIG_KEYS is not set |
1627 | # CONFIG_SECURITY is not set | 1673 | # CONFIG_SECURITY is not set |
1628 | # CONFIG_SECURITYFS is not set | 1674 | # CONFIG_SECURITYFS is not set |
1629 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1675 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1676 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1677 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1678 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1679 | CONFIG_DEFAULT_SECURITY="" | ||
1630 | CONFIG_CRYPTO=y | 1680 | CONFIG_CRYPTO=y |
1631 | 1681 | ||
1632 | # | 1682 | # |
diff --git a/arch/powerpc/configs/storcenter_defconfig b/arch/powerpc/configs/storcenter_defconfig index 524263158fc0..f2f832161463 100644 --- a/arch/powerpc/configs/storcenter_defconfig +++ b/arch/powerpc/configs/storcenter_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.32-rc5 | 3 | # Linux kernel version: 2.6.33-rc3 |
4 | # Thu Nov 5 08:20:19 2009 | 4 | # Wed Jan 6 09:24:13 2010 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -36,6 +36,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |||
36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set |
38 | CONFIG_IRQ_PER_CPU=y | 38 | CONFIG_IRQ_PER_CPU=y |
39 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | 40 | CONFIG_STACKTRACE_SUPPORT=y |
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 41 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 42 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y | |||
58 | CONFIG_GENERIC_BUG=y | 59 | CONFIG_GENERIC_BUG=y |
59 | CONFIG_DTC=y | 60 | CONFIG_DTC=y |
60 | # CONFIG_DEFAULT_UIMAGE is not set | 61 | # CONFIG_DEFAULT_UIMAGE is not set |
62 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
61 | # CONFIG_PPC_DCR_NATIVE is not set | 63 | # CONFIG_PPC_DCR_NATIVE is not set |
62 | # CONFIG_PPC_DCR_MMIO is not set | 64 | # CONFIG_PPC_DCR_MMIO is not set |
63 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | 65 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y |
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
85 | # | 87 | # |
86 | CONFIG_TREE_RCU=y | 88 | CONFIG_TREE_RCU=y |
87 | # CONFIG_TREE_PREEMPT_RCU is not set | 89 | # CONFIG_TREE_PREEMPT_RCU is not set |
90 | # CONFIG_TINY_RCU is not set | ||
88 | # CONFIG_RCU_TRACE is not set | 91 | # CONFIG_RCU_TRACE is not set |
89 | CONFIG_RCU_FANOUT=32 | 92 | CONFIG_RCU_FANOUT=32 |
90 | # CONFIG_RCU_FANOUT_EXACT is not set | 93 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -167,14 +170,41 @@ CONFIG_LBDAF=y | |||
167 | # IO Schedulers | 170 | # IO Schedulers |
168 | # | 171 | # |
169 | CONFIG_IOSCHED_NOOP=y | 172 | CONFIG_IOSCHED_NOOP=y |
170 | CONFIG_IOSCHED_AS=y | ||
171 | CONFIG_IOSCHED_DEADLINE=y | 173 | CONFIG_IOSCHED_DEADLINE=y |
172 | CONFIG_IOSCHED_CFQ=y | 174 | CONFIG_IOSCHED_CFQ=y |
173 | # CONFIG_DEFAULT_AS is not set | ||
174 | # CONFIG_DEFAULT_DEADLINE is not set | 175 | # CONFIG_DEFAULT_DEADLINE is not set |
175 | CONFIG_DEFAULT_CFQ=y | 176 | CONFIG_DEFAULT_CFQ=y |
176 | # CONFIG_DEFAULT_NOOP is not set | 177 | # CONFIG_DEFAULT_NOOP is not set |
177 | CONFIG_DEFAULT_IOSCHED="cfq" | 178 | CONFIG_DEFAULT_IOSCHED="cfq" |
179 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
180 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
181 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
182 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
183 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
184 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
185 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
186 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
187 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
188 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
189 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
190 | # CONFIG_INLINE_READ_LOCK is not set | ||
191 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
192 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
193 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
194 | CONFIG_INLINE_READ_UNLOCK=y | ||
195 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
196 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
197 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
198 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
199 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
200 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
201 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
202 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
203 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
204 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
205 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
206 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
207 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
178 | # CONFIG_FREEZER is not set | 208 | # CONFIG_FREEZER is not set |
179 | 209 | ||
180 | # | 210 | # |
@@ -201,6 +231,8 @@ CONFIG_STORCENTER=y | |||
201 | CONFIG_MPC10X_BRIDGE=y | 231 | CONFIG_MPC10X_BRIDGE=y |
202 | CONFIG_MPC10X_OPENPIC=y | 232 | CONFIG_MPC10X_OPENPIC=y |
203 | # CONFIG_MPC10X_STORE_GATHERING is not set | 233 | # CONFIG_MPC10X_STORE_GATHERING is not set |
234 | # CONFIG_GAMECUBE is not set | ||
235 | # CONFIG_WII is not set | ||
204 | # CONFIG_AMIGAONE is not set | 236 | # CONFIG_AMIGAONE is not set |
205 | CONFIG_PPC_OF_BOOT_TRAMPOLINE=y | 237 | CONFIG_PPC_OF_BOOT_TRAMPOLINE=y |
206 | # CONFIG_IPIC is not set | 238 | # CONFIG_IPIC is not set |
@@ -246,6 +278,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
246 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 278 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
247 | # CONFIG_KEXEC is not set | 279 | # CONFIG_KEXEC is not set |
248 | # CONFIG_CRASH_DUMP is not set | 280 | # CONFIG_CRASH_DUMP is not set |
281 | CONFIG_SPARSE_IRQ=y | ||
249 | CONFIG_MAX_ACTIVE_REGIONS=32 | 282 | CONFIG_MAX_ACTIVE_REGIONS=32 |
250 | CONFIG_ARCH_FLATMEM_ENABLE=y | 283 | CONFIG_ARCH_FLATMEM_ENABLE=y |
251 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 284 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -262,8 +295,6 @@ CONFIG_MIGRATION=y | |||
262 | CONFIG_ZONE_DMA_FLAG=1 | 295 | CONFIG_ZONE_DMA_FLAG=1 |
263 | CONFIG_BOUNCE=y | 296 | CONFIG_BOUNCE=y |
264 | CONFIG_VIRT_TO_BUS=y | 297 | CONFIG_VIRT_TO_BUS=y |
265 | CONFIG_HAVE_MLOCK=y | ||
266 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
267 | # CONFIG_KSM is not set | 298 | # CONFIG_KSM is not set |
268 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 299 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
269 | CONFIG_PPC_4K_PAGES=y | 300 | CONFIG_PPC_4K_PAGES=y |
@@ -384,9 +415,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
384 | # CONFIG_AF_RXRPC is not set | 415 | # CONFIG_AF_RXRPC is not set |
385 | CONFIG_WIRELESS=y | 416 | CONFIG_WIRELESS=y |
386 | # CONFIG_CFG80211 is not set | 417 | # CONFIG_CFG80211 is not set |
387 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
388 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
389 | # CONFIG_WIRELESS_EXT is not set | ||
390 | # CONFIG_LIB80211 is not set | 418 | # CONFIG_LIB80211 is not set |
391 | 419 | ||
392 | # | 420 | # |
@@ -507,6 +535,10 @@ CONFIG_BLK_DEV=y | |||
507 | # CONFIG_BLK_DEV_UMEM is not set | 535 | # CONFIG_BLK_DEV_UMEM is not set |
508 | # CONFIG_BLK_DEV_COW_COMMON is not set | 536 | # CONFIG_BLK_DEV_COW_COMMON is not set |
509 | # CONFIG_BLK_DEV_LOOP is not set | 537 | # CONFIG_BLK_DEV_LOOP is not set |
538 | |||
539 | # | ||
540 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
541 | # | ||
510 | # CONFIG_BLK_DEV_NBD is not set | 542 | # CONFIG_BLK_DEV_NBD is not set |
511 | # CONFIG_BLK_DEV_SX8 is not set | 543 | # CONFIG_BLK_DEV_SX8 is not set |
512 | # CONFIG_BLK_DEV_UB is not set | 544 | # CONFIG_BLK_DEV_UB is not set |
@@ -515,6 +547,7 @@ CONFIG_BLK_DEV=y | |||
515 | # CONFIG_ATA_OVER_ETH is not set | 547 | # CONFIG_ATA_OVER_ETH is not set |
516 | # CONFIG_BLK_DEV_HD is not set | 548 | # CONFIG_BLK_DEV_HD is not set |
517 | CONFIG_MISC_DEVICES=y | 549 | CONFIG_MISC_DEVICES=y |
550 | # CONFIG_AD525X_DPOT is not set | ||
518 | # CONFIG_PHANTOM is not set | 551 | # CONFIG_PHANTOM is not set |
519 | # CONFIG_SGI_IOC4 is not set | 552 | # CONFIG_SGI_IOC4 is not set |
520 | # CONFIG_TIFM_CORE is not set | 553 | # CONFIG_TIFM_CORE is not set |
@@ -522,6 +555,7 @@ CONFIG_MISC_DEVICES=y | |||
522 | # CONFIG_ENCLOSURE_SERVICES is not set | 555 | # CONFIG_ENCLOSURE_SERVICES is not set |
523 | # CONFIG_HP_ILO is not set | 556 | # CONFIG_HP_ILO is not set |
524 | # CONFIG_ISL29003 is not set | 557 | # CONFIG_ISL29003 is not set |
558 | # CONFIG_DS1682 is not set | ||
525 | # CONFIG_C2PORT is not set | 559 | # CONFIG_C2PORT is not set |
526 | 560 | ||
527 | # | 561 | # |
@@ -628,7 +662,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
628 | # CONFIG_SCSI_BNX2_ISCSI is not set | 662 | # CONFIG_SCSI_BNX2_ISCSI is not set |
629 | # CONFIG_BE2ISCSI is not set | 663 | # CONFIG_BE2ISCSI is not set |
630 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 664 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
665 | # CONFIG_SCSI_HPSA is not set | ||
631 | # CONFIG_SCSI_3W_9XXX is not set | 666 | # CONFIG_SCSI_3W_9XXX is not set |
667 | # CONFIG_SCSI_3W_SAS is not set | ||
632 | # CONFIG_SCSI_ACARD is not set | 668 | # CONFIG_SCSI_ACARD is not set |
633 | # CONFIG_SCSI_AACRAID is not set | 669 | # CONFIG_SCSI_AACRAID is not set |
634 | # CONFIG_SCSI_AIC7XXX is not set | 670 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -666,6 +702,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
666 | # CONFIG_SCSI_NSP32 is not set | 702 | # CONFIG_SCSI_NSP32 is not set |
667 | # CONFIG_SCSI_DEBUG is not set | 703 | # CONFIG_SCSI_DEBUG is not set |
668 | # CONFIG_SCSI_PMCRAID is not set | 704 | # CONFIG_SCSI_PMCRAID is not set |
705 | # CONFIG_SCSI_PM8001 is not set | ||
669 | # CONFIG_SCSI_SRP is not set | 706 | # CONFIG_SCSI_SRP is not set |
670 | # CONFIG_SCSI_BFA_FC is not set | 707 | # CONFIG_SCSI_BFA_FC is not set |
671 | # CONFIG_SCSI_DH is not set | 708 | # CONFIG_SCSI_DH is not set |
@@ -695,7 +732,7 @@ CONFIG_MD_RAID6_PQ=y | |||
695 | # | 732 | # |
696 | 733 | ||
697 | # | 734 | # |
698 | # See the help texts for more information. | 735 | # The newer stack is recommended. |
699 | # | 736 | # |
700 | # CONFIG_FIREWIRE is not set | 737 | # CONFIG_FIREWIRE is not set |
701 | # CONFIG_IEEE1394 is not set | 738 | # CONFIG_IEEE1394 is not set |
@@ -741,8 +778,11 @@ CONFIG_R8169=y | |||
741 | # CONFIG_NETDEV_10000 is not set | 778 | # CONFIG_NETDEV_10000 is not set |
742 | # CONFIG_TR is not set | 779 | # CONFIG_TR is not set |
743 | CONFIG_WLAN=y | 780 | CONFIG_WLAN=y |
744 | # CONFIG_WLAN_PRE80211 is not set | 781 | # CONFIG_AIRO is not set |
745 | # CONFIG_WLAN_80211 is not set | 782 | # CONFIG_ATMEL is not set |
783 | # CONFIG_PRISM54 is not set | ||
784 | # CONFIG_USB_ZD1201 is not set | ||
785 | # CONFIG_HOSTAP is not set | ||
746 | 786 | ||
747 | # | 787 | # |
748 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 788 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -765,6 +805,7 @@ CONFIG_WLAN=y | |||
765 | # CONFIG_NETCONSOLE is not set | 805 | # CONFIG_NETCONSOLE is not set |
766 | # CONFIG_NETPOLL is not set | 806 | # CONFIG_NETPOLL is not set |
767 | # CONFIG_NET_POLL_CONTROLLER is not set | 807 | # CONFIG_NET_POLL_CONTROLLER is not set |
808 | # CONFIG_VMXNET3 is not set | ||
768 | # CONFIG_ISDN is not set | 809 | # CONFIG_ISDN is not set |
769 | # CONFIG_PHONE is not set | 810 | # CONFIG_PHONE is not set |
770 | 811 | ||
@@ -805,6 +846,7 @@ CONFIG_SERIAL_CORE=y | |||
805 | CONFIG_SERIAL_CORE_CONSOLE=y | 846 | CONFIG_SERIAL_CORE_CONSOLE=y |
806 | # CONFIG_SERIAL_JSM is not set | 847 | # CONFIG_SERIAL_JSM is not set |
807 | # CONFIG_SERIAL_OF_PLATFORM is not set | 848 | # CONFIG_SERIAL_OF_PLATFORM is not set |
849 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
808 | CONFIG_UNIX98_PTYS=y | 850 | CONFIG_UNIX98_PTYS=y |
809 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 851 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
810 | CONFIG_LEGACY_PTYS=y | 852 | CONFIG_LEGACY_PTYS=y |
@@ -862,11 +904,6 @@ CONFIG_I2C_MPC=y | |||
862 | # CONFIG_I2C_TINY_USB is not set | 904 | # CONFIG_I2C_TINY_USB is not set |
863 | 905 | ||
864 | # | 906 | # |
865 | # Graphics adapter I2C/DDC channel drivers | ||
866 | # | ||
867 | # CONFIG_I2C_VOODOO3 is not set | ||
868 | |||
869 | # | ||
870 | # Other I2C/SMBus bus drivers | 907 | # Other I2C/SMBus bus drivers |
871 | # | 908 | # |
872 | # CONFIG_I2C_PCA_PLATFORM is not set | 909 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -875,7 +912,6 @@ CONFIG_I2C_MPC=y | |||
875 | # | 912 | # |
876 | # Miscellaneous I2C Chip support | 913 | # Miscellaneous I2C Chip support |
877 | # | 914 | # |
878 | # CONFIG_DS1682 is not set | ||
879 | # CONFIG_SENSORS_TSL2550 is not set | 915 | # CONFIG_SENSORS_TSL2550 is not set |
880 | # CONFIG_I2C_DEBUG_CORE is not set | 916 | # CONFIG_I2C_DEBUG_CORE is not set |
881 | # CONFIG_I2C_DEBUG_ALGO is not set | 917 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -910,11 +946,13 @@ CONFIG_SSB_POSSIBLE=y | |||
910 | # CONFIG_TWL4030_CORE is not set | 946 | # CONFIG_TWL4030_CORE is not set |
911 | # CONFIG_MFD_TMIO is not set | 947 | # CONFIG_MFD_TMIO is not set |
912 | # CONFIG_PMIC_DA903X is not set | 948 | # CONFIG_PMIC_DA903X is not set |
949 | # CONFIG_PMIC_ADP5520 is not set | ||
913 | # CONFIG_MFD_WM8400 is not set | 950 | # CONFIG_MFD_WM8400 is not set |
914 | # CONFIG_MFD_WM831X is not set | 951 | # CONFIG_MFD_WM831X is not set |
915 | # CONFIG_MFD_WM8350_I2C is not set | 952 | # CONFIG_MFD_WM8350_I2C is not set |
916 | # CONFIG_MFD_PCF50633 is not set | 953 | # CONFIG_MFD_PCF50633 is not set |
917 | # CONFIG_AB3100_CORE is not set | 954 | # CONFIG_AB3100_CORE is not set |
955 | # CONFIG_MFD_88PM8607 is not set | ||
918 | # CONFIG_REGULATOR is not set | 956 | # CONFIG_REGULATOR is not set |
919 | # CONFIG_MEDIA_SUPPORT is not set | 957 | # CONFIG_MEDIA_SUPPORT is not set |
920 | 958 | ||
@@ -963,6 +1001,7 @@ CONFIG_USB_DEVICE_CLASS=y | |||
963 | CONFIG_USB_EHCI_HCD=y | 1001 | CONFIG_USB_EHCI_HCD=y |
964 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1002 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
965 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1003 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1004 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
966 | # CONFIG_USB_EHCI_FSL is not set | 1005 | # CONFIG_USB_EHCI_FSL is not set |
967 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1006 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
968 | # CONFIG_USB_OXU210HP_HCD is not set | 1007 | # CONFIG_USB_OXU210HP_HCD is not set |
@@ -1087,6 +1126,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
1087 | # CONFIG_RTC_DRV_PCF8563 is not set | 1126 | # CONFIG_RTC_DRV_PCF8563 is not set |
1088 | # CONFIG_RTC_DRV_PCF8583 is not set | 1127 | # CONFIG_RTC_DRV_PCF8583 is not set |
1089 | # CONFIG_RTC_DRV_M41T80 is not set | 1128 | # CONFIG_RTC_DRV_M41T80 is not set |
1129 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1090 | # CONFIG_RTC_DRV_S35390A is not set | 1130 | # CONFIG_RTC_DRV_S35390A is not set |
1091 | # CONFIG_RTC_DRV_FM3130 is not set | 1131 | # CONFIG_RTC_DRV_FM3130 is not set |
1092 | # CONFIG_RTC_DRV_RX8581 is not set | 1132 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1108,7 +1148,9 @@ CONFIG_RTC_DRV_DS1307=y | |||
1108 | # CONFIG_RTC_DRV_M48T86 is not set | 1148 | # CONFIG_RTC_DRV_M48T86 is not set |
1109 | # CONFIG_RTC_DRV_M48T35 is not set | 1149 | # CONFIG_RTC_DRV_M48T35 is not set |
1110 | # CONFIG_RTC_DRV_M48T59 is not set | 1150 | # CONFIG_RTC_DRV_M48T59 is not set |
1151 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1111 | # CONFIG_RTC_DRV_BQ4802 is not set | 1152 | # CONFIG_RTC_DRV_BQ4802 is not set |
1153 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1112 | # CONFIG_RTC_DRV_V3020 is not set | 1154 | # CONFIG_RTC_DRV_V3020 is not set |
1113 | 1155 | ||
1114 | # | 1156 | # |
@@ -1322,7 +1364,7 @@ CONFIG_FRAME_WARN=1024 | |||
1322 | # CONFIG_DEBUG_KERNEL is not set | 1364 | # CONFIG_DEBUG_KERNEL is not set |
1323 | # CONFIG_SLUB_DEBUG_ON is not set | 1365 | # CONFIG_SLUB_DEBUG_ON is not set |
1324 | # CONFIG_SLUB_STATS is not set | 1366 | # CONFIG_SLUB_STATS is not set |
1325 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1367 | CONFIG_DEBUG_BUGVERBOSE=y |
1326 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1368 | # CONFIG_DEBUG_MEMORY_INIT is not set |
1327 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1369 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
1328 | # CONFIG_LATENCYTOP is not set | 1370 | # CONFIG_LATENCYTOP is not set |
@@ -1349,7 +1391,11 @@ CONFIG_PRINT_STACK_DEPTH=64 | |||
1349 | # CONFIG_KEYS is not set | 1391 | # CONFIG_KEYS is not set |
1350 | # CONFIG_SECURITY is not set | 1392 | # CONFIG_SECURITY is not set |
1351 | # CONFIG_SECURITYFS is not set | 1393 | # CONFIG_SECURITYFS is not set |
1352 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1394 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1395 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1396 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1397 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1398 | CONFIG_DEFAULT_SECURITY="" | ||
1353 | CONFIG_XOR_BLOCKS=y | 1399 | CONFIG_XOR_BLOCKS=y |
1354 | CONFIG_ASYNC_CORE=y | 1400 | CONFIG_ASYNC_CORE=y |
1355 | CONFIG_ASYNC_MEMCPY=y | 1401 | CONFIG_ASYNC_MEMCPY=y |
diff --git a/arch/powerpc/include/asm/topology.h b/arch/powerpc/include/asm/topology.h index 22f738d12ad9..bbf89701d7a4 100644 --- a/arch/powerpc/include/asm/topology.h +++ b/arch/powerpc/include/asm/topology.h | |||
@@ -17,7 +17,9 @@ static inline int cpu_to_node(int cpu) | |||
17 | 17 | ||
18 | #define parent_node(node) (node) | 18 | #define parent_node(node) (node) |
19 | 19 | ||
20 | #define cpumask_of_node(node) (&numa_cpumask_lookup_table[node]) | 20 | #define cpumask_of_node(node) ((node) == -1 ? \ |
21 | cpu_all_mask : \ | ||
22 | &numa_cpumask_lookup_table[node]) | ||
21 | 23 | ||
22 | int of_node_to_nid(struct device_node *device); | 24 | int of_node_to_nid(struct device_node *device); |
23 | 25 | ||
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S index 678f98cd5e64..3ef743fa5d7c 100644 --- a/arch/powerpc/kernel/head_8xx.S +++ b/arch/powerpc/kernel/head_8xx.S | |||
@@ -542,11 +542,11 @@ DARFixed:/* Return from dcbx instruction bug workaround, r10 holds value of DAR | |||
542 | FixupDAR:/* Entry point for dcbx workaround. */ | 542 | FixupDAR:/* Entry point for dcbx workaround. */ |
543 | /* fetch instruction from memory. */ | 543 | /* fetch instruction from memory. */ |
544 | mfspr r10, SPRN_SRR0 | 544 | mfspr r10, SPRN_SRR0 |
545 | andis. r11, r10, 0x8000 /* Address >= 0x80000000 */ | ||
545 | DO_8xx_CPU6(0x3780, r3) | 546 | DO_8xx_CPU6(0x3780, r3) |
546 | mtspr SPRN_MD_EPN, r10 | 547 | mtspr SPRN_MD_EPN, r10 |
547 | mfspr r11, SPRN_M_TWB /* Get level 1 table entry address */ | 548 | mfspr r11, SPRN_M_TWB /* Get level 1 table entry address */ |
548 | cmplwi cr0, r11, 0x0800 | 549 | beq- 3f /* Branch if user space */ |
549 | blt- 3f /* Branch if user space */ | ||
550 | lis r11, (swapper_pg_dir-PAGE_OFFSET)@h | 550 | lis r11, (swapper_pg_dir-PAGE_OFFSET)@h |
551 | ori r11, r11, (swapper_pg_dir-PAGE_OFFSET)@l | 551 | ori r11, r11, (swapper_pg_dir-PAGE_OFFSET)@l |
552 | rlwimi r11, r10, 32-20, 0xffc /* r11 = r11&~0xffc|(r10>>20)&0xffc */ | 552 | rlwimi r11, r10, 32-20, 0xffc /* r11 = r11&~0xffc|(r10>>20)&0xffc */ |
@@ -768,12 +768,12 @@ start_here: | |||
768 | */ | 768 | */ |
769 | initial_mmu: | 769 | initial_mmu: |
770 | tlbia /* Invalidate all TLB entries */ | 770 | tlbia /* Invalidate all TLB entries */ |
771 | #ifdef CONFIG_PIN_TLB | 771 | /* Always pin the first 8 MB ITLB to prevent ITLB |
772 | misses while mucking around with SRR0/SRR1 in asm | ||
773 | */ | ||
772 | lis r8, MI_RSV4I@h | 774 | lis r8, MI_RSV4I@h |
773 | ori r8, r8, 0x1c00 | 775 | ori r8, r8, 0x1c00 |
774 | #else | 776 | |
775 | li r8, 0 | ||
776 | #endif | ||
777 | mtspr SPRN_MI_CTR, r8 /* Set instruction MMU control */ | 777 | mtspr SPRN_MI_CTR, r8 /* Set instruction MMU control */ |
778 | 778 | ||
779 | #ifdef CONFIG_PIN_TLB | 779 | #ifdef CONFIG_PIN_TLB |
diff --git a/arch/powerpc/kernel/rtas-proc.c b/arch/powerpc/kernel/rtas-proc.c index 1be9fe38bcb5..8777fb02349f 100644 --- a/arch/powerpc/kernel/rtas-proc.c +++ b/arch/powerpc/kernel/rtas-proc.c | |||
@@ -262,19 +262,19 @@ static int __init proc_rtas_init(void) | |||
262 | if (rtas_node == NULL) | 262 | if (rtas_node == NULL) |
263 | return -ENODEV; | 263 | return -ENODEV; |
264 | 264 | ||
265 | proc_create("ppc64/rtas/progress", S_IRUGO|S_IWUSR, NULL, | 265 | proc_create("powerpc/rtas/progress", S_IRUGO|S_IWUSR, NULL, |
266 | &ppc_rtas_progress_operations); | 266 | &ppc_rtas_progress_operations); |
267 | proc_create("ppc64/rtas/clock", S_IRUGO|S_IWUSR, NULL, | 267 | proc_create("powerpc/rtas/clock", S_IRUGO|S_IWUSR, NULL, |
268 | &ppc_rtas_clock_operations); | 268 | &ppc_rtas_clock_operations); |
269 | proc_create("ppc64/rtas/poweron", S_IWUSR|S_IRUGO, NULL, | 269 | proc_create("powerpc/rtas/poweron", S_IWUSR|S_IRUGO, NULL, |
270 | &ppc_rtas_poweron_operations); | 270 | &ppc_rtas_poweron_operations); |
271 | proc_create("ppc64/rtas/sensors", S_IRUGO, NULL, | 271 | proc_create("powerpc/rtas/sensors", S_IRUGO, NULL, |
272 | &ppc_rtas_sensors_operations); | 272 | &ppc_rtas_sensors_operations); |
273 | proc_create("ppc64/rtas/frequency", S_IWUSR|S_IRUGO, NULL, | 273 | proc_create("powerpc/rtas/frequency", S_IWUSR|S_IRUGO, NULL, |
274 | &ppc_rtas_tone_freq_operations); | 274 | &ppc_rtas_tone_freq_operations); |
275 | proc_create("ppc64/rtas/volume", S_IWUSR|S_IRUGO, NULL, | 275 | proc_create("powerpc/rtas/volume", S_IWUSR|S_IRUGO, NULL, |
276 | &ppc_rtas_tone_volume_operations); | 276 | &ppc_rtas_tone_volume_operations); |
277 | proc_create("ppc64/rtas/rmo_buffer", S_IRUSR, NULL, | 277 | proc_create("powerpc/rtas/rmo_buffer", S_IRUSR, NULL, |
278 | &ppc_rtas_rmo_buf_ops); | 278 | &ppc_rtas_rmo_buf_ops); |
279 | return 0; | 279 | return 0; |
280 | } | 280 | } |
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index a521fb8a40ee..c2ee14498077 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c | |||
@@ -619,4 +619,16 @@ void __cpu_die(unsigned int cpu) | |||
619 | if (smp_ops->cpu_die) | 619 | if (smp_ops->cpu_die) |
620 | smp_ops->cpu_die(cpu); | 620 | smp_ops->cpu_die(cpu); |
621 | } | 621 | } |
622 | |||
623 | static DEFINE_MUTEX(powerpc_cpu_hotplug_driver_mutex); | ||
624 | |||
625 | void cpu_hotplug_driver_lock() | ||
626 | { | ||
627 | mutex_lock(&powerpc_cpu_hotplug_driver_mutex); | ||
628 | } | ||
629 | |||
630 | void cpu_hotplug_driver_unlock() | ||
631 | { | ||
632 | mutex_unlock(&powerpc_cpu_hotplug_driver_mutex); | ||
633 | } | ||
622 | #endif | 634 | #endif |
diff --git a/arch/powerpc/kernel/swsusp_32.S b/arch/powerpc/kernel/swsusp_32.S index b47d8ceffb52..b0754e237438 100644 --- a/arch/powerpc/kernel/swsusp_32.S +++ b/arch/powerpc/kernel/swsusp_32.S | |||
@@ -303,7 +303,7 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS) | |||
303 | lis r4,0x1000 | 303 | lis r4,0x1000 |
304 | 1: addic. r4,r4,-0x1000 | 304 | 1: addic. r4,r4,-0x1000 |
305 | tlbie r4 | 305 | tlbie r4 |
306 | blt 1b | 306 | bgt 1b |
307 | sync | 307 | sync |
308 | 308 | ||
309 | /* restore the MSR and turn on the MMU */ | 309 | /* restore the MSR and turn on the MMU */ |
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index 9ba2cc88591d..6c6093d67f30 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c | |||
@@ -903,12 +903,21 @@ static void decrementer_set_mode(enum clock_event_mode mode, | |||
903 | decrementer_set_next_event(DECREMENTER_MAX, dev); | 903 | decrementer_set_next_event(DECREMENTER_MAX, dev); |
904 | } | 904 | } |
905 | 905 | ||
906 | static inline uint64_t div_sc64(unsigned long ticks, unsigned long nsec, | ||
907 | int shift) | ||
908 | { | ||
909 | uint64_t tmp = ((uint64_t)ticks) << shift; | ||
910 | |||
911 | do_div(tmp, nsec); | ||
912 | return tmp; | ||
913 | } | ||
914 | |||
906 | static void __init setup_clockevent_multiplier(unsigned long hz) | 915 | static void __init setup_clockevent_multiplier(unsigned long hz) |
907 | { | 916 | { |
908 | u64 mult, shift = 32; | 917 | u64 mult, shift = 32; |
909 | 918 | ||
910 | while (1) { | 919 | while (1) { |
911 | mult = div_sc(hz, NSEC_PER_SEC, shift); | 920 | mult = div_sc64(hz, NSEC_PER_SEC, shift); |
912 | if (mult && (mult >> 32UL) == 0UL) | 921 | if (mult && (mult >> 32UL) == 0UL) |
913 | break; | 922 | break; |
914 | 923 | ||
diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig index 07703f72330e..6fb6e8aa3890 100644 --- a/arch/powerpc/kvm/Kconfig +++ b/arch/powerpc/kvm/Kconfig | |||
@@ -53,7 +53,7 @@ config KVM_440 | |||
53 | 53 | ||
54 | config KVM_EXIT_TIMING | 54 | config KVM_EXIT_TIMING |
55 | bool "Detailed exit timing" | 55 | bool "Detailed exit timing" |
56 | depends on KVM | 56 | depends on KVM_440 || KVM_E500 |
57 | ---help--- | 57 | ---help--- |
58 | Calculate elapsed time for every exit/enter cycle. A per-vcpu | 58 | Calculate elapsed time for every exit/enter cycle. A per-vcpu |
59 | report is available in debugfs kvm/vm#_vcpu#_timing. | 59 | report is available in debugfs kvm/vm#_vcpu#_timing. |
diff --git a/arch/powerpc/mm/mmap_64.c b/arch/powerpc/mm/mmap_64.c index 0d957a4c70fe..5a783d8e8e8e 100644 --- a/arch/powerpc/mm/mmap_64.c +++ b/arch/powerpc/mm/mmap_64.c | |||
@@ -47,7 +47,7 @@ static inline int mmap_is_legacy(void) | |||
47 | if (current->personality & ADDR_COMPAT_LAYOUT) | 47 | if (current->personality & ADDR_COMPAT_LAYOUT) |
48 | return 1; | 48 | return 1; |
49 | 49 | ||
50 | if (current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY) | 50 | if (rlimit(RLIMIT_STACK) == RLIM_INFINITY) |
51 | return 1; | 51 | return 1; |
52 | 52 | ||
53 | return sysctl_legacy_va_layout; | 53 | return sysctl_legacy_va_layout; |
@@ -77,7 +77,7 @@ static unsigned long mmap_rnd(void) | |||
77 | 77 | ||
78 | static inline unsigned long mmap_base(void) | 78 | static inline unsigned long mmap_base(void) |
79 | { | 79 | { |
80 | unsigned long gap = current->signal->rlim[RLIMIT_STACK].rlim_cur; | 80 | unsigned long gap = rlimit(RLIMIT_STACK); |
81 | 81 | ||
82 | if (gap < MIN_GAP) | 82 | if (gap < MIN_GAP) |
83 | gap = MIN_GAP; | 83 | gap = MIN_GAP; |
diff --git a/arch/powerpc/platforms/cell/spufs/coredump.c b/arch/powerpc/platforms/cell/spufs/coredump.c index c4d4a19235e0..eea120229cdb 100644 --- a/arch/powerpc/platforms/cell/spufs/coredump.c +++ b/arch/powerpc/platforms/cell/spufs/coredump.c | |||
@@ -54,7 +54,7 @@ static ssize_t do_coredump_read(int num, struct spu_context *ctx, void *buffer, | |||
54 | */ | 54 | */ |
55 | static int spufs_dump_write(struct file *file, const void *addr, int nr, loff_t *foffset) | 55 | static int spufs_dump_write(struct file *file, const void *addr, int nr, loff_t *foffset) |
56 | { | 56 | { |
57 | unsigned long limit = current->signal->rlim[RLIMIT_CORE].rlim_cur; | 57 | unsigned long limit = rlimit(RLIMIT_CORE); |
58 | ssize_t written; | 58 | ssize_t written; |
59 | 59 | ||
60 | if (*foffset + nr > limit) | 60 | if (*foffset + nr > limit) |
diff --git a/arch/powerpc/platforms/iseries/vio.c b/arch/powerpc/platforms/iseries/vio.c index 657b72f68493..2aa8b5631beb 100644 --- a/arch/powerpc/platforms/iseries/vio.c +++ b/arch/powerpc/platforms/iseries/vio.c | |||
@@ -474,6 +474,8 @@ static void __init get_viotape_info(struct device_node *vio_root) | |||
474 | struct vio_waitevent we; | 474 | struct vio_waitevent we; |
475 | int ret; | 475 | int ret; |
476 | 476 | ||
477 | init_completion(&we.com); | ||
478 | |||
477 | ret = viopath_open(viopath_hostLp, viomajorsubtype_tape, 2); | 479 | ret = viopath_open(viopath_hostLp, viomajorsubtype_tape, 2); |
478 | if (ret) { | 480 | if (ret) { |
479 | printk(KERN_WARNING "get_viotape_info: " | 481 | printk(KERN_WARNING "get_viotape_info: " |
diff --git a/arch/powerpc/platforms/pseries/dlpar.c b/arch/powerpc/platforms/pseries/dlpar.c index 67b7a10f9fce..37bce52526da 100644 --- a/arch/powerpc/platforms/pseries/dlpar.c +++ b/arch/powerpc/platforms/pseries/dlpar.c | |||
@@ -236,7 +236,9 @@ static struct device_node *derive_parent(const char *path) | |||
236 | 236 | ||
237 | int dlpar_attach_node(struct device_node *dn) | 237 | int dlpar_attach_node(struct device_node *dn) |
238 | { | 238 | { |
239 | #ifdef CONFIG_PROC_DEVICETREE | ||
239 | struct proc_dir_entry *ent; | 240 | struct proc_dir_entry *ent; |
241 | #endif | ||
240 | int rc; | 242 | int rc; |
241 | 243 | ||
242 | of_node_set_flag(dn, OF_DYNAMIC); | 244 | of_node_set_flag(dn, OF_DYNAMIC); |
@@ -267,10 +269,10 @@ int dlpar_attach_node(struct device_node *dn) | |||
267 | 269 | ||
268 | int dlpar_detach_node(struct device_node *dn) | 270 | int dlpar_detach_node(struct device_node *dn) |
269 | { | 271 | { |
272 | #ifdef CONFIG_PROC_DEVICETREE | ||
270 | struct device_node *parent = dn->parent; | 273 | struct device_node *parent = dn->parent; |
271 | struct property *prop = dn->properties; | 274 | struct property *prop = dn->properties; |
272 | 275 | ||
273 | #ifdef CONFIG_PROC_DEVICETREE | ||
274 | while (prop) { | 276 | while (prop) { |
275 | remove_proc_entry(prop->name, dn->pde); | 277 | remove_proc_entry(prop->name, dn->pde); |
276 | prop = prop->next; | 278 | prop = prop->next; |
@@ -344,20 +346,6 @@ int dlpar_release_drc(u32 drc_index) | |||
344 | 346 | ||
345 | #ifdef CONFIG_ARCH_CPU_PROBE_RELEASE | 347 | #ifdef CONFIG_ARCH_CPU_PROBE_RELEASE |
346 | 348 | ||
347 | static DEFINE_MUTEX(pseries_cpu_hotplug_mutex); | ||
348 | |||
349 | void cpu_hotplug_driver_lock(void) | ||
350 | __acquires(pseries_cpu_hotplug_mutex) | ||
351 | { | ||
352 | mutex_lock(&pseries_cpu_hotplug_mutex); | ||
353 | } | ||
354 | |||
355 | void cpu_hotplug_driver_unlock(void) | ||
356 | __releases(pseries_cpu_hotplug_mutex) | ||
357 | { | ||
358 | mutex_unlock(&pseries_cpu_hotplug_mutex); | ||
359 | } | ||
360 | |||
361 | static int dlpar_online_cpu(struct device_node *dn) | 349 | static int dlpar_online_cpu(struct device_node *dn) |
362 | { | 350 | { |
363 | int rc = 0; | 351 | int rc = 0; |
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c index b9b9e11609ec..d80f193cd871 100644 --- a/arch/powerpc/platforms/pseries/xics.c +++ b/arch/powerpc/platforms/pseries/xics.c | |||
@@ -163,14 +163,13 @@ static inline void lpar_qirr_info(int n_cpu , u8 value) | |||
163 | /* Interface to generic irq subsystem */ | 163 | /* Interface to generic irq subsystem */ |
164 | 164 | ||
165 | #ifdef CONFIG_SMP | 165 | #ifdef CONFIG_SMP |
166 | static int get_irq_server(unsigned int virq, unsigned int strict_check) | 166 | static int get_irq_server(unsigned int virq, cpumask_t cpumask, |
167 | unsigned int strict_check) | ||
167 | { | 168 | { |
168 | int server; | 169 | int server; |
169 | /* For the moment only implement delivery to all cpus or one cpu */ | 170 | /* For the moment only implement delivery to all cpus or one cpu */ |
170 | cpumask_t cpumask; | ||
171 | cpumask_t tmp = CPU_MASK_NONE; | 171 | cpumask_t tmp = CPU_MASK_NONE; |
172 | 172 | ||
173 | cpumask_copy(&cpumask, irq_to_desc(virq)->affinity); | ||
174 | if (!distribute_irqs) | 173 | if (!distribute_irqs) |
175 | return default_server; | 174 | return default_server; |
176 | 175 | ||
@@ -192,7 +191,8 @@ static int get_irq_server(unsigned int virq, unsigned int strict_check) | |||
192 | return default_server; | 191 | return default_server; |
193 | } | 192 | } |
194 | #else | 193 | #else |
195 | static int get_irq_server(unsigned int virq, unsigned int strict_check) | 194 | static int get_irq_server(unsigned int virq, cpumask_t cpumask, |
195 | unsigned int strict_check) | ||
196 | { | 196 | { |
197 | return default_server; | 197 | return default_server; |
198 | } | 198 | } |
@@ -211,7 +211,7 @@ static void xics_unmask_irq(unsigned int virq) | |||
211 | if (irq == XICS_IPI || irq == XICS_IRQ_SPURIOUS) | 211 | if (irq == XICS_IPI || irq == XICS_IRQ_SPURIOUS) |
212 | return; | 212 | return; |
213 | 213 | ||
214 | server = get_irq_server(virq, 0); | 214 | server = get_irq_server(virq, *(irq_to_desc(virq)->affinity), 0); |
215 | 215 | ||
216 | call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq, server, | 216 | call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq, server, |
217 | DEFAULT_PRIORITY); | 217 | DEFAULT_PRIORITY); |
@@ -405,7 +405,7 @@ static int xics_set_affinity(unsigned int virq, const struct cpumask *cpumask) | |||
405 | * For the moment only implement delivery to all cpus or one cpu. | 405 | * For the moment only implement delivery to all cpus or one cpu. |
406 | * Get current irq_server for the given irq | 406 | * Get current irq_server for the given irq |
407 | */ | 407 | */ |
408 | irq_server = get_irq_server(virq, 1); | 408 | irq_server = get_irq_server(virq, *cpumask, 1); |
409 | if (irq_server == -1) { | 409 | if (irq_server == -1) { |
410 | char cpulist[128]; | 410 | char cpulist[128]; |
411 | cpumask_scnprintf(cpulist, sizeof(cpulist), cpumask); | 411 | cpumask_scnprintf(cpulist, sizeof(cpulist), cpumask); |
diff --git a/arch/s390/include/asm/bug.h b/arch/s390/include/asm/bug.h index efb74fd5156e..b1066b9fb5f8 100644 --- a/arch/s390/include/asm/bug.h +++ b/arch/s390/include/asm/bug.h | |||
@@ -52,6 +52,10 @@ | |||
52 | unreachable(); \ | 52 | unreachable(); \ |
53 | } while (0) | 53 | } while (0) |
54 | 54 | ||
55 | #define __WARN() do { \ | ||
56 | __EMIT_BUG(BUGFLAG_WARNING); \ | ||
57 | } while (0) | ||
58 | |||
55 | #define WARN_ON(x) ({ \ | 59 | #define WARN_ON(x) ({ \ |
56 | int __ret_warn_on = !!(x); \ | 60 | int __ret_warn_on = !!(x); \ |
57 | if (__builtin_constant_p(__ret_warn_on)) { \ | 61 | if (__builtin_constant_p(__ret_warn_on)) { \ |
diff --git a/arch/s390/include/asm/irqflags.h b/arch/s390/include/asm/irqflags.h index 3f26131120b7..c2fb432f576a 100644 --- a/arch/s390/include/asm/irqflags.h +++ b/arch/s390/include/asm/irqflags.h | |||
@@ -1,14 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-s390/irqflags.h | 2 | * Copyright IBM Corp. 2006,2010 |
3 | * | 3 | * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> |
4 | * Copyright (C) IBM Corp. 2006 | ||
5 | * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com> | ||
6 | */ | 4 | */ |
7 | 5 | ||
8 | #ifndef __ASM_IRQFLAGS_H | 6 | #ifndef __ASM_IRQFLAGS_H |
9 | #define __ASM_IRQFLAGS_H | 7 | #define __ASM_IRQFLAGS_H |
10 | 8 | ||
11 | #ifdef __KERNEL__ | 9 | #include <linux/types.h> |
12 | 10 | ||
13 | #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2) | 11 | #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2) |
14 | 12 | ||
@@ -102,5 +100,4 @@ static inline int raw_irqs_disabled_flags(unsigned long flags) | |||
102 | /* For spinlocks etc */ | 100 | /* For spinlocks etc */ |
103 | #define raw_local_irq_save(x) ((x) = raw_local_irq_disable()) | 101 | #define raw_local_irq_save(x) ((x) = raw_local_irq_disable()) |
104 | 102 | ||
105 | #endif /* __KERNEL__ */ | ||
106 | #endif /* __ASM_IRQFLAGS_H */ | 103 | #endif /* __ASM_IRQFLAGS_H */ |
diff --git a/arch/s390/include/asm/sigp.h b/arch/s390/include/asm/sigp.h index ec403d4304f8..f72d611f7e13 100644 --- a/arch/s390/include/asm/sigp.h +++ b/arch/s390/include/asm/sigp.h | |||
@@ -15,11 +15,19 @@ | |||
15 | #ifndef __SIGP__ | 15 | #ifndef __SIGP__ |
16 | #define __SIGP__ | 16 | #define __SIGP__ |
17 | 17 | ||
18 | #include <asm/ptrace.h> | 18 | #include <asm/system.h> |
19 | #include <asm/atomic.h> | ||
20 | 19 | ||
21 | /* get real cpu address from logical cpu number */ | 20 | /* get real cpu address from logical cpu number */ |
22 | extern volatile int __cpu_logical_map[]; | 21 | extern int __cpu_logical_map[]; |
22 | |||
23 | static inline int cpu_logical_map(int cpu) | ||
24 | { | ||
25 | #ifdef CONFIG_SMP | ||
26 | return __cpu_logical_map[cpu]; | ||
27 | #else | ||
28 | return stap(); | ||
29 | #endif | ||
30 | } | ||
23 | 31 | ||
24 | typedef enum | 32 | typedef enum |
25 | { | 33 | { |
@@ -79,7 +87,7 @@ signal_processor(__u16 cpu_addr, sigp_order_code order_code) | |||
79 | " ipm %0\n" | 87 | " ipm %0\n" |
80 | " srl %0,28\n" | 88 | " srl %0,28\n" |
81 | : "=d" (ccode) | 89 | : "=d" (ccode) |
82 | : "d" (reg1), "d" (__cpu_logical_map[cpu_addr]), | 90 | : "d" (reg1), "d" (cpu_logical_map(cpu_addr)), |
83 | "a" (order_code) : "cc" , "memory"); | 91 | "a" (order_code) : "cc" , "memory"); |
84 | return ccode; | 92 | return ccode; |
85 | } | 93 | } |
@@ -98,7 +106,7 @@ signal_processor_p(__u32 parameter, __u16 cpu_addr, sigp_order_code order_code) | |||
98 | " ipm %0\n" | 106 | " ipm %0\n" |
99 | " srl %0,28\n" | 107 | " srl %0,28\n" |
100 | : "=d" (ccode) | 108 | : "=d" (ccode) |
101 | : "d" (reg1), "d" (__cpu_logical_map[cpu_addr]), | 109 | : "d" (reg1), "d" (cpu_logical_map(cpu_addr)), |
102 | "a" (order_code) : "cc" , "memory"); | 110 | "a" (order_code) : "cc" , "memory"); |
103 | return ccode; | 111 | return ccode; |
104 | } | 112 | } |
@@ -118,7 +126,7 @@ signal_processor_ps(__u32 *statusptr, __u32 parameter, __u16 cpu_addr, | |||
118 | " ipm %0\n" | 126 | " ipm %0\n" |
119 | " srl %0,28\n" | 127 | " srl %0,28\n" |
120 | : "=d" (ccode), "+d" (reg1) | 128 | : "=d" (ccode), "+d" (reg1) |
121 | : "d" (__cpu_logical_map[cpu_addr]), "a" (order_code) | 129 | : "d" (cpu_logical_map(cpu_addr)), "a" (order_code) |
122 | : "cc" , "memory"); | 130 | : "cc" , "memory"); |
123 | *statusptr = reg1; | 131 | *statusptr = reg1; |
124 | return ccode; | 132 | return ccode; |
diff --git a/arch/s390/include/asm/thread_info.h b/arch/s390/include/asm/thread_info.h index 07eb61b2fb3a..66069e736842 100644 --- a/arch/s390/include/asm/thread_info.h +++ b/arch/s390/include/asm/thread_info.h | |||
@@ -93,13 +93,12 @@ static inline struct thread_info *current_thread_info(void) | |||
93 | #define TIF_SYSCALL_AUDIT 9 /* syscall auditing active */ | 93 | #define TIF_SYSCALL_AUDIT 9 /* syscall auditing active */ |
94 | #define TIF_SECCOMP 10 /* secure computing */ | 94 | #define TIF_SECCOMP 10 /* secure computing */ |
95 | #define TIF_SYSCALL_TRACEPOINT 11 /* syscall tracepoint instrumentation */ | 95 | #define TIF_SYSCALL_TRACEPOINT 11 /* syscall tracepoint instrumentation */ |
96 | #define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */ | 96 | #define TIF_POLLING_NRFLAG 16 /* true if poll_idle() is polling |
97 | #define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling | ||
98 | TIF_NEED_RESCHED */ | 97 | TIF_NEED_RESCHED */ |
99 | #define TIF_31BIT 18 /* 32bit process */ | 98 | #define TIF_31BIT 17 /* 32bit process */ |
100 | #define TIF_MEMDIE 19 | 99 | #define TIF_MEMDIE 18 |
101 | #define TIF_RESTORE_SIGMASK 20 /* restore signal mask in do_signal() */ | 100 | #define TIF_RESTORE_SIGMASK 19 /* restore signal mask in do_signal() */ |
102 | #define TIF_FREEZE 21 /* thread is freezing for suspend */ | 101 | #define TIF_FREEZE 20 /* thread is freezing for suspend */ |
103 | 102 | ||
104 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) | 103 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) |
105 | #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) | 104 | #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) |
@@ -112,7 +111,6 @@ static inline struct thread_info *current_thread_info(void) | |||
112 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) | 111 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) |
113 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) | 112 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) |
114 | #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) | 113 | #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) |
115 | #define _TIF_USEDFPU (1<<TIF_USEDFPU) | ||
116 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) | 114 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) |
117 | #define _TIF_31BIT (1<<TIF_31BIT) | 115 | #define _TIF_31BIT (1<<TIF_31BIT) |
118 | #define _TIF_FREEZE (1<<TIF_FREEZE) | 116 | #define _TIF_FREEZE (1<<TIF_FREEZE) |
diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h index 192a7203a14f..6e9f049fa823 100644 --- a/arch/s390/include/asm/unistd.h +++ b/arch/s390/include/asm/unistd.h | |||
@@ -269,8 +269,7 @@ | |||
269 | #define __NR_pwritev 329 | 269 | #define __NR_pwritev 329 |
270 | #define __NR_rt_tgsigqueueinfo 330 | 270 | #define __NR_rt_tgsigqueueinfo 330 |
271 | #define __NR_perf_event_open 331 | 271 | #define __NR_perf_event_open 331 |
272 | #define __NR_recvmmsg 332 | 272 | #define NR_syscalls 332 |
273 | #define NR_syscalls 333 | ||
274 | 273 | ||
275 | /* | 274 | /* |
276 | * There are some system calls that are not present on 64 bit, some | 275 | * There are some system calls that are not present on 64 bit, some |
@@ -377,6 +376,9 @@ | |||
377 | #define __IGNORE_migrate_pages | 376 | #define __IGNORE_migrate_pages |
378 | #define __IGNORE_move_pages | 377 | #define __IGNORE_move_pages |
379 | 378 | ||
379 | /* Ignore system calls that are also reachable via sys_socket */ | ||
380 | #define __IGNORE_recvmmsg | ||
381 | |||
380 | #define __ARCH_WANT_IPC_PARSE_VERSION | 382 | #define __ARCH_WANT_IPC_PARSE_VERSION |
381 | #define __ARCH_WANT_OLD_READDIR | 383 | #define __ARCH_WANT_OLD_READDIR |
382 | #define __ARCH_WANT_SYS_ALARM | 384 | #define __ARCH_WANT_SYS_ALARM |
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c index 22c9e557bb22..11c3aba664ea 100644 --- a/arch/s390/kernel/compat_linux.c +++ b/arch/s390/kernel/compat_linux.c | |||
@@ -616,44 +616,35 @@ asmlinkage long sys32_fstatat64(unsigned int dfd, char __user *filename, | |||
616 | */ | 616 | */ |
617 | 617 | ||
618 | struct mmap_arg_struct_emu31 { | 618 | struct mmap_arg_struct_emu31 { |
619 | u32 addr; | 619 | compat_ulong_t addr; |
620 | u32 len; | 620 | compat_ulong_t len; |
621 | u32 prot; | 621 | compat_ulong_t prot; |
622 | u32 flags; | 622 | compat_ulong_t flags; |
623 | u32 fd; | 623 | compat_ulong_t fd; |
624 | u32 offset; | 624 | compat_ulong_t offset; |
625 | }; | 625 | }; |
626 | 626 | ||
627 | asmlinkage unsigned long | 627 | asmlinkage unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg) |
628 | old32_mmap(struct mmap_arg_struct_emu31 __user *arg) | ||
629 | { | 628 | { |
630 | struct mmap_arg_struct_emu31 a; | 629 | struct mmap_arg_struct_emu31 a; |
631 | int error = -EFAULT; | ||
632 | 630 | ||
633 | if (copy_from_user(&a, arg, sizeof(a))) | 631 | if (copy_from_user(&a, arg, sizeof(a))) |
634 | goto out; | 632 | return -EFAULT; |
635 | |||
636 | error = -EINVAL; | ||
637 | if (a.offset & ~PAGE_MASK) | 633 | if (a.offset & ~PAGE_MASK) |
638 | goto out; | 634 | return -EINVAL; |
639 | 635 | a.addr = (unsigned long) compat_ptr(a.addr); | |
640 | error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, | 636 | return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, |
641 | a.offset >> PAGE_SHIFT); | 637 | a.offset >> PAGE_SHIFT); |
642 | out: | ||
643 | return error; | ||
644 | } | 638 | } |
645 | 639 | ||
646 | asmlinkage long | 640 | asmlinkage long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg) |
647 | sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg) | ||
648 | { | 641 | { |
649 | struct mmap_arg_struct_emu31 a; | 642 | struct mmap_arg_struct_emu31 a; |
650 | int error = -EFAULT; | ||
651 | 643 | ||
652 | if (copy_from_user(&a, arg, sizeof(a))) | 644 | if (copy_from_user(&a, arg, sizeof(a))) |
653 | goto out; | 645 | return -EFAULT; |
654 | error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset); | 646 | a.addr = (unsigned long) compat_ptr(a.addr); |
655 | out: | 647 | return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset); |
656 | return error; | ||
657 | } | 648 | } |
658 | 649 | ||
659 | asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count) | 650 | asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count) |
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index faeaccc7d7d9..30de2d0e52bb 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S | |||
@@ -1853,12 +1853,3 @@ sys32_execve_wrapper: | |||
1853 | llgtr %r3,%r3 # compat_uptr_t * | 1853 | llgtr %r3,%r3 # compat_uptr_t * |
1854 | llgtr %r4,%r4 # compat_uptr_t * | 1854 | llgtr %r4,%r4 # compat_uptr_t * |
1855 | jg sys32_execve # branch to system call | 1855 | jg sys32_execve # branch to system call |
1856 | |||
1857 | .globl compat_sys_recvmmsg_wrapper | ||
1858 | compat_sys_recvmmsg_wrapper: | ||
1859 | lgfr %r2,%r2 # int | ||
1860 | llgtr %r3,%r3 # struct compat_mmsghdr * | ||
1861 | llgfr %r4,%r4 # unsigned int | ||
1862 | llgfr %r5,%r5 # unsigned int | ||
1863 | llgtr %r6,%r6 # struct compat_timespec * | ||
1864 | jg compat_sys_recvmmsg | ||
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S index 48215d15762b..e8ef21c51bbe 100644 --- a/arch/s390/kernel/entry.S +++ b/arch/s390/kernel/entry.S | |||
@@ -571,6 +571,7 @@ pgm_svcper: | |||
571 | mvc __THREAD_per+__PER_access_id(1,%r8),__LC_PER_ACCESS_ID | 571 | mvc __THREAD_per+__PER_access_id(1,%r8),__LC_PER_ACCESS_ID |
572 | oi __TI_flags+3(%r9),_TIF_SINGLE_STEP # set TIF_SINGLE_STEP | 572 | oi __TI_flags+3(%r9),_TIF_SINGLE_STEP # set TIF_SINGLE_STEP |
573 | TRACE_IRQS_ON | 573 | TRACE_IRQS_ON |
574 | lm %r2,%r6,SP_R2(%r15) # load svc arguments | ||
574 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts | 575 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts |
575 | b BASED(sysc_do_svc) | 576 | b BASED(sysc_do_svc) |
576 | 577 | ||
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S index 9aff1d449b6e..f33658f09dd7 100644 --- a/arch/s390/kernel/entry64.S +++ b/arch/s390/kernel/entry64.S | |||
@@ -549,6 +549,7 @@ pgm_svcper: | |||
549 | mvc __THREAD_per+__PER_access_id(1,%r8),__LC_PER_ACCESS_ID | 549 | mvc __THREAD_per+__PER_access_id(1,%r8),__LC_PER_ACCESS_ID |
550 | oi __TI_flags+7(%r9),_TIF_SINGLE_STEP # set TIF_SINGLE_STEP | 550 | oi __TI_flags+7(%r9),_TIF_SINGLE_STEP # set TIF_SINGLE_STEP |
551 | TRACE_IRQS_ON | 551 | TRACE_IRQS_ON |
552 | lmg %r2,%r6,SP_R2(%r15) # load svc arguments | ||
552 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts | 553 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts |
553 | j sysc_do_svc | 554 | j sysc_do_svc |
554 | 555 | ||
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index 5417eb57271a..00b6d1d292f2 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c | |||
@@ -153,8 +153,6 @@ void exit_thread(void) | |||
153 | 153 | ||
154 | void flush_thread(void) | 154 | void flush_thread(void) |
155 | { | 155 | { |
156 | clear_used_math(); | ||
157 | clear_tsk_thread_flag(current, TIF_USEDFPU); | ||
158 | } | 156 | } |
159 | 157 | ||
160 | void release_thread(struct task_struct *dead_task) | 158 | void release_thread(struct task_struct *dead_task) |
@@ -217,6 +215,7 @@ int copy_thread(unsigned long clone_flags, unsigned long new_stackp, | |||
217 | p->thread.mm_segment = get_fs(); | 215 | p->thread.mm_segment = get_fs(); |
218 | /* Don't copy debug registers */ | 216 | /* Don't copy debug registers */ |
219 | memset(&p->thread.per_info, 0, sizeof(p->thread.per_info)); | 217 | memset(&p->thread.per_info, 0, sizeof(p->thread.per_info)); |
218 | clear_tsk_thread_flag(p, TIF_SINGLE_STEP); | ||
220 | /* Initialize per thread user and system timer values */ | 219 | /* Initialize per thread user and system timer values */ |
221 | ti = task_thread_info(p); | 220 | ti = task_thread_info(p); |
222 | ti->user_timer = 0; | 221 | ti->user_timer = 0; |
diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c index 13815d39f7dd..7cf464234419 100644 --- a/arch/s390/kernel/ptrace.c +++ b/arch/s390/kernel/ptrace.c | |||
@@ -65,6 +65,7 @@ FixPerRegisters(struct task_struct *task) | |||
65 | { | 65 | { |
66 | struct pt_regs *regs; | 66 | struct pt_regs *regs; |
67 | per_struct *per_info; | 67 | per_struct *per_info; |
68 | per_cr_words cr_words; | ||
68 | 69 | ||
69 | regs = task_pt_regs(task); | 70 | regs = task_pt_regs(task); |
70 | per_info = (per_struct *) &task->thread.per_info; | 71 | per_info = (per_struct *) &task->thread.per_info; |
@@ -98,6 +99,13 @@ FixPerRegisters(struct task_struct *task) | |||
98 | per_info->control_regs.bits.storage_alt_space_ctl = 1; | 99 | per_info->control_regs.bits.storage_alt_space_ctl = 1; |
99 | else | 100 | else |
100 | per_info->control_regs.bits.storage_alt_space_ctl = 0; | 101 | per_info->control_regs.bits.storage_alt_space_ctl = 0; |
102 | |||
103 | if (task == current) { | ||
104 | __ctl_store(cr_words, 9, 11); | ||
105 | if (memcmp(&cr_words, &per_info->control_regs.words, | ||
106 | sizeof(cr_words)) != 0) | ||
107 | __ctl_load(per_info->control_regs.words, 9, 11); | ||
108 | } | ||
101 | } | 109 | } |
102 | 110 | ||
103 | void user_enable_single_step(struct task_struct *task) | 111 | void user_enable_single_step(struct task_struct *task) |
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index 0663287fa1b3..8d8957b38ab3 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c | |||
@@ -87,7 +87,6 @@ unsigned long elf_hwcap = 0; | |||
87 | char elf_platform[ELF_PLATFORM_SIZE]; | 87 | char elf_platform[ELF_PLATFORM_SIZE]; |
88 | 88 | ||
89 | struct mem_chunk __initdata memory_chunk[MEMORY_CHUNKS]; | 89 | struct mem_chunk __initdata memory_chunk[MEMORY_CHUNKS]; |
90 | volatile int __cpu_logical_map[NR_CPUS]; /* logical cpu to cpu address */ | ||
91 | 90 | ||
92 | int __initdata memory_end_set; | 91 | int __initdata memory_end_set; |
93 | unsigned long __initdata memory_end; | 92 | unsigned long __initdata memory_end; |
@@ -124,12 +123,6 @@ void __cpuinit cpu_init(void) | |||
124 | */ | 123 | */ |
125 | get_cpu_id(&S390_lowcore.cpu_id); | 124 | get_cpu_id(&S390_lowcore.cpu_id); |
126 | 125 | ||
127 | /* | ||
128 | * Force FPU initialization: | ||
129 | */ | ||
130 | clear_thread_flag(TIF_USEDFPU); | ||
131 | clear_used_math(); | ||
132 | |||
133 | atomic_inc(&init_mm.mm_count); | 126 | atomic_inc(&init_mm.mm_count); |
134 | current->active_mm = &init_mm; | 127 | current->active_mm = &init_mm; |
135 | BUG_ON(current->mm); | 128 | BUG_ON(current->mm); |
@@ -855,7 +848,6 @@ setup_arch(char **cmdline_p) | |||
855 | setup_lowcore(); | 848 | setup_lowcore(); |
856 | 849 | ||
857 | cpu_init(); | 850 | cpu_init(); |
858 | __cpu_logical_map[0] = stap(); | ||
859 | s390_init_cpu_topology(); | 851 | s390_init_cpu_topology(); |
860 | 852 | ||
861 | /* | 853 | /* |
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c index 6b4fef877f9d..6289945562b0 100644 --- a/arch/s390/kernel/signal.c +++ b/arch/s390/kernel/signal.c | |||
@@ -64,7 +64,7 @@ SYSCALL_DEFINE3(sigsuspend, int, history0, int, history1, old_sigset_t, mask) | |||
64 | recalc_sigpending(); | 64 | recalc_sigpending(); |
65 | spin_unlock_irq(¤t->sighand->siglock); | 65 | spin_unlock_irq(¤t->sighand->siglock); |
66 | 66 | ||
67 | current->state = TASK_INTERRUPTIBLE; | 67 | set_current_state(TASK_INTERRUPTIBLE); |
68 | schedule(); | 68 | schedule(); |
69 | set_thread_flag(TIF_RESTORE_SIGMASK); | 69 | set_thread_flag(TIF_RESTORE_SIGMASK); |
70 | 70 | ||
@@ -500,18 +500,10 @@ void do_signal(struct pt_regs *regs) | |||
500 | clear_thread_flag(TIF_RESTORE_SIGMASK); | 500 | clear_thread_flag(TIF_RESTORE_SIGMASK); |
501 | 501 | ||
502 | /* | 502 | /* |
503 | * If we would have taken a single-step trap | ||
504 | * for a normal instruction, act like we took | ||
505 | * one for the handler setup. | ||
506 | */ | ||
507 | if (current->thread.per_info.single_step) | ||
508 | set_thread_flag(TIF_SINGLE_STEP); | ||
509 | |||
510 | /* | ||
511 | * Let tracing know that we've done the handler setup. | 503 | * Let tracing know that we've done the handler setup. |
512 | */ | 504 | */ |
513 | tracehook_signal_handler(signr, &info, &ka, regs, | 505 | tracehook_signal_handler(signr, &info, &ka, regs, |
514 | test_thread_flag(TIF_SINGLE_STEP)); | 506 | current->thread.per_info.single_step); |
515 | } | 507 | } |
516 | return; | 508 | return; |
517 | } | 509 | } |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 93e52039321b..76a6fdd46c45 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -52,6 +52,9 @@ | |||
52 | #include <asm/cpu.h> | 52 | #include <asm/cpu.h> |
53 | #include "entry.h" | 53 | #include "entry.h" |
54 | 54 | ||
55 | /* logical cpu to cpu address */ | ||
56 | int __cpu_logical_map[NR_CPUS]; | ||
57 | |||
55 | static struct task_struct *current_set[NR_CPUS]; | 58 | static struct task_struct *current_set[NR_CPUS]; |
56 | 59 | ||
57 | static u8 smp_cpu_type; | 60 | static u8 smp_cpu_type; |
@@ -717,6 +720,12 @@ void __init smp_cpus_done(unsigned int max_cpus) | |||
717 | { | 720 | { |
718 | } | 721 | } |
719 | 722 | ||
723 | void __init smp_setup_processor_id(void) | ||
724 | { | ||
725 | S390_lowcore.cpu_nr = 0; | ||
726 | __cpu_logical_map[0] = stap(); | ||
727 | } | ||
728 | |||
720 | /* | 729 | /* |
721 | * the frequency of the profiling timer can be changed | 730 | * the frequency of the profiling timer can be changed |
722 | * by writing a multiplier value into /proc/profile. | 731 | * by writing a multiplier value into /proc/profile. |
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S index 4f292c936872..30eca070d426 100644 --- a/arch/s390/kernel/syscalls.S +++ b/arch/s390/kernel/syscalls.S | |||
@@ -340,4 +340,3 @@ SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv_wrapper) | |||
340 | SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev_wrapper) | 340 | SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev_wrapper) |
341 | SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo_wrapper) /* 330 */ | 341 | SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo_wrapper) /* 330 */ |
342 | SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper) | 342 | SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper) |
343 | SYSCALL(sys_recvmmsg,sys_recvmmsg,compat_sys_recvmmsg_wrapper) | ||
diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c index 3c72c9cf22b6..14ef6f05e432 100644 --- a/arch/s390/kernel/topology.c +++ b/arch/s390/kernel/topology.c | |||
@@ -114,7 +114,7 @@ static void add_cpus_to_core(struct tl_cpu *tl_cpu, struct core_info *core) | |||
114 | 114 | ||
115 | rcpu = CPU_BITS - 1 - cpu + tl_cpu->origin; | 115 | rcpu = CPU_BITS - 1 - cpu + tl_cpu->origin; |
116 | for_each_present_cpu(lcpu) { | 116 | for_each_present_cpu(lcpu) { |
117 | if (__cpu_logical_map[lcpu] == rcpu) { | 117 | if (cpu_logical_map(lcpu) == rcpu) { |
118 | cpu_set(lcpu, core->mask); | 118 | cpu_set(lcpu, core->mask); |
119 | smp_cpu_polarization[lcpu] = tl_cpu->pp; | 119 | smp_cpu_polarization[lcpu] = tl_cpu->pp; |
120 | } | 120 | } |
diff --git a/arch/s390/kvm/intercept.c b/arch/s390/kvm/intercept.c index ba9d8a7bc1ac..b40096494e46 100644 --- a/arch/s390/kvm/intercept.c +++ b/arch/s390/kvm/intercept.c | |||
@@ -213,7 +213,7 @@ static int handle_instruction_and_prog(struct kvm_vcpu *vcpu) | |||
213 | return rc2; | 213 | return rc2; |
214 | } | 214 | } |
215 | 215 | ||
216 | static const intercept_handler_t intercept_funcs[0x48 >> 2] = { | 216 | static const intercept_handler_t intercept_funcs[] = { |
217 | [0x00 >> 2] = handle_noop, | 217 | [0x00 >> 2] = handle_noop, |
218 | [0x04 >> 2] = handle_instruction, | 218 | [0x04 >> 2] = handle_instruction, |
219 | [0x08 >> 2] = handle_prog, | 219 | [0x08 >> 2] = handle_prog, |
@@ -230,7 +230,7 @@ int kvm_handle_sie_intercept(struct kvm_vcpu *vcpu) | |||
230 | intercept_handler_t func; | 230 | intercept_handler_t func; |
231 | u8 code = vcpu->arch.sie_block->icptcode; | 231 | u8 code = vcpu->arch.sie_block->icptcode; |
232 | 232 | ||
233 | if (code & 3 || code > 0x48) | 233 | if (code & 3 || (code >> 2) >= ARRAY_SIZE(intercept_funcs)) |
234 | return -ENOTSUPP; | 234 | return -ENOTSUPP; |
235 | func = intercept_funcs[code >> 2]; | 235 | func = intercept_funcs[code >> 2]; |
236 | if (func) | 236 | if (func) |
diff --git a/arch/s390/lib/spinlock.c b/arch/s390/lib/spinlock.c index 10754a375668..cff327f109a8 100644 --- a/arch/s390/lib/spinlock.c +++ b/arch/s390/lib/spinlock.c | |||
@@ -34,7 +34,7 @@ static inline void _raw_yield_cpu(int cpu) | |||
34 | { | 34 | { |
35 | if (MACHINE_HAS_DIAG9C) | 35 | if (MACHINE_HAS_DIAG9C) |
36 | asm volatile("diag %0,0,0x9c" | 36 | asm volatile("diag %0,0,0x9c" |
37 | : : "d" (__cpu_logical_map[cpu])); | 37 | : : "d" (cpu_logical_map(cpu))); |
38 | else | 38 | else |
39 | _raw_yield(); | 39 | _raw_yield(); |
40 | } | 40 | } |
diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c index f4558ccf02b9..869efbaed3ea 100644 --- a/arch/s390/mm/mmap.c +++ b/arch/s390/mm/mmap.c | |||
@@ -40,7 +40,7 @@ | |||
40 | 40 | ||
41 | static inline unsigned long mmap_base(void) | 41 | static inline unsigned long mmap_base(void) |
42 | { | 42 | { |
43 | unsigned long gap = current->signal->rlim[RLIMIT_STACK].rlim_cur; | 43 | unsigned long gap = rlimit(RLIMIT_STACK); |
44 | 44 | ||
45 | if (gap < MIN_GAP) | 45 | if (gap < MIN_GAP) |
46 | gap = MIN_GAP; | 46 | gap = MIN_GAP; |
@@ -61,7 +61,7 @@ static inline int mmap_is_legacy(void) | |||
61 | #endif | 61 | #endif |
62 | return sysctl_legacy_va_layout || | 62 | return sysctl_legacy_va_layout || |
63 | (current->personality & ADDR_COMPAT_LAYOUT) || | 63 | (current->personality & ADDR_COMPAT_LAYOUT) || |
64 | current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY; | 64 | rlimit(RLIMIT_STACK) == RLIM_INFINITY; |
65 | } | 65 | } |
66 | 66 | ||
67 | #ifndef CONFIG_64BIT | 67 | #ifndef CONFIG_64BIT |
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c index 6a8861b39f05..5c246289b4f0 100644 --- a/arch/sh/boards/mach-ecovec24/setup.c +++ b/arch/sh/boards/mach-ecovec24/setup.c | |||
@@ -353,6 +353,10 @@ static struct i2c_board_info i2c1_devices[] = { | |||
353 | { | 353 | { |
354 | I2C_BOARD_INFO("r2025sd", 0x32), | 354 | I2C_BOARD_INFO("r2025sd", 0x32), |
355 | }, | 355 | }, |
356 | { | ||
357 | I2C_BOARD_INFO("lis3lv02d", 0x1c), | ||
358 | .irq = 33, | ||
359 | } | ||
356 | }; | 360 | }; |
357 | 361 | ||
358 | /* KEYSC */ | 362 | /* KEYSC */ |
@@ -1115,6 +1119,10 @@ static int __init arch_setup(void) | |||
1115 | gpio_direction_output(GPIO_PTU0, 0); | 1119 | gpio_direction_output(GPIO_PTU0, 0); |
1116 | mdelay(20); | 1120 | mdelay(20); |
1117 | 1121 | ||
1122 | /* enable motion sensor */ | ||
1123 | gpio_request(GPIO_FN_INTC_IRQ1, NULL); | ||
1124 | gpio_direction_input(GPIO_FN_INTC_IRQ1); | ||
1125 | |||
1118 | /* enable I2C device */ | 1126 | /* enable I2C device */ |
1119 | i2c_register_board_info(0, i2c0_devices, | 1127 | i2c_register_board_info(0, i2c0_devices, |
1120 | ARRAY_SIZE(i2c0_devices)); | 1128 | ARRAY_SIZE(i2c0_devices)); |
diff --git a/arch/sh/boards/mach-se/7724/setup.c b/arch/sh/boards/mach-se/7724/setup.c index 5d0f70b46c97..858ecb25d469 100644 --- a/arch/sh/boards/mach-se/7724/setup.c +++ b/arch/sh/boards/mach-se/7724/setup.c | |||
@@ -533,7 +533,7 @@ static int __init sh_eth_is_eeprom_ready(void) | |||
533 | while (t--) { | 533 | while (t--) { |
534 | if (!ctrl_inw(EEPROM_STAT)) | 534 | if (!ctrl_inw(EEPROM_STAT)) |
535 | return 1; | 535 | return 1; |
536 | cpu_relax(); | 536 | udelay(1); |
537 | } | 537 | } |
538 | 538 | ||
539 | printk(KERN_ERR "ms7724se can not access to eeprom\n"); | 539 | printk(KERN_ERR "ms7724se can not access to eeprom\n"); |
diff --git a/arch/sh/include/asm/unistd_32.h b/arch/sh/include/asm/unistd_32.h index f18c4f9baf27..365744b05269 100644 --- a/arch/sh/include/asm/unistd_32.h +++ b/arch/sh/include/asm/unistd_32.h | |||
@@ -345,12 +345,13 @@ | |||
345 | #define __NR_pwritev 334 | 345 | #define __NR_pwritev 334 |
346 | #define __NR_rt_tgsigqueueinfo 335 | 346 | #define __NR_rt_tgsigqueueinfo 335 |
347 | #define __NR_perf_event_open 336 | 347 | #define __NR_perf_event_open 336 |
348 | #define __NR_recvmmsg 337 | ||
349 | 348 | ||
350 | #define NR_syscalls 338 | 349 | #define NR_syscalls 337 |
351 | 350 | ||
352 | #ifdef __KERNEL__ | 351 | #ifdef __KERNEL__ |
353 | 352 | ||
353 | #define __IGNORE_recvmmsg | ||
354 | |||
354 | #define __ARCH_WANT_IPC_PARSE_VERSION | 355 | #define __ARCH_WANT_IPC_PARSE_VERSION |
355 | #define __ARCH_WANT_OLD_READDIR | 356 | #define __ARCH_WANT_OLD_READDIR |
356 | #define __ARCH_WANT_OLD_STAT | 357 | #define __ARCH_WANT_OLD_STAT |
diff --git a/arch/sh/include/asm/unistd_64.h b/arch/sh/include/asm/unistd_64.h index 3e7645d11130..25de158aac3a 100644 --- a/arch/sh/include/asm/unistd_64.h +++ b/arch/sh/include/asm/unistd_64.h | |||
@@ -386,10 +386,11 @@ | |||
386 | #define __NR_rt_tgsigqueueinfo 363 | 386 | #define __NR_rt_tgsigqueueinfo 363 |
387 | #define __NR_perf_event_open 364 | 387 | #define __NR_perf_event_open 364 |
388 | #define __NR_recvmmsg 365 | 388 | #define __NR_recvmmsg 365 |
389 | #define __NR_accept4 366 | ||
389 | 390 | ||
390 | #ifdef __KERNEL__ | 391 | #ifdef __KERNEL__ |
391 | 392 | ||
392 | #define NR_syscalls 366 | 393 | #define NR_syscalls 367 |
393 | 394 | ||
394 | #define __ARCH_WANT_IPC_PARSE_VERSION | 395 | #define __ARCH_WANT_IPC_PARSE_VERSION |
395 | #define __ARCH_WANT_OLD_READDIR | 396 | #define __ARCH_WANT_OLD_READDIR |
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c index 31f80c61b031..ec79faf6f021 100644 --- a/arch/sh/kernel/process_64.c +++ b/arch/sh/kernel/process_64.c | |||
@@ -368,7 +368,7 @@ void exit_thread(void) | |||
368 | void flush_thread(void) | 368 | void flush_thread(void) |
369 | { | 369 | { |
370 | 370 | ||
371 | /* Called by fs/exec.c (flush_old_exec) to remove traces of a | 371 | /* Called by fs/exec.c (setup_new_exec) to remove traces of a |
372 | * previously running executable. */ | 372 | * previously running executable. */ |
373 | #ifdef CONFIG_SH_FPU | 373 | #ifdef CONFIG_SH_FPU |
374 | if (last_task_used_math == current) { | 374 | if (last_task_used_math == current) { |
diff --git a/arch/sh/kernel/syscalls_32.S b/arch/sh/kernel/syscalls_32.S index 4bd5a1146956..19fd11dd9871 100644 --- a/arch/sh/kernel/syscalls_32.S +++ b/arch/sh/kernel/syscalls_32.S | |||
@@ -353,4 +353,3 @@ ENTRY(sys_call_table) | |||
353 | .long sys_pwritev | 353 | .long sys_pwritev |
354 | .long sys_rt_tgsigqueueinfo /* 335 */ | 354 | .long sys_rt_tgsigqueueinfo /* 335 */ |
355 | .long sys_perf_event_open | 355 | .long sys_perf_event_open |
356 | .long sys_recvmmsg | ||
diff --git a/arch/sh/kernel/syscalls_64.S b/arch/sh/kernel/syscalls_64.S index 07d2aaea9ae8..2048a20d7c80 100644 --- a/arch/sh/kernel/syscalls_64.S +++ b/arch/sh/kernel/syscalls_64.S | |||
@@ -392,3 +392,4 @@ sys_call_table: | |||
392 | .long sys_rt_tgsigqueueinfo | 392 | .long sys_rt_tgsigqueueinfo |
393 | .long sys_perf_event_open | 393 | .long sys_perf_event_open |
394 | .long sys_recvmmsg /* 365 */ | 394 | .long sys_recvmmsg /* 365 */ |
395 | .long sys_accept4 | ||
diff --git a/arch/sh/tools/Makefile b/arch/sh/tools/Makefile index 558a56bcc7cf..2082af1f3fef 100644 --- a/arch/sh/tools/Makefile +++ b/arch/sh/tools/Makefile | |||
@@ -13,4 +13,4 @@ | |||
13 | include/generated/machtypes.h: $(src)/gen-mach-types $(src)/mach-types | 13 | include/generated/machtypes.h: $(src)/gen-mach-types $(src)/mach-types |
14 | @echo ' Generating $@' | 14 | @echo ' Generating $@' |
15 | $(Q)mkdir -p $(dir $@) | 15 | $(Q)mkdir -p $(dir $@) |
16 | $(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; } | 16 | $(Q)LC_ALL=C $(AWK) -f $^ > $@ || { rm -f $@; /bin/false; } |
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index 108197ac0d56..4097f6a10860 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig | |||
@@ -64,8 +64,11 @@ config BITS | |||
64 | default 64 if SPARC64 | 64 | default 64 if SPARC64 |
65 | 65 | ||
66 | config GENERIC_TIME | 66 | config GENERIC_TIME |
67 | def_bool y | ||
68 | |||
69 | config ARCH_USES_GETTIMEOFFSET | ||
67 | bool | 70 | bool |
68 | default y if SPARC64 | 71 | default y if SPARC32 |
69 | 72 | ||
70 | config GENERIC_CMOS_UPDATE | 73 | config GENERIC_CMOS_UPDATE |
71 | bool | 74 | bool |
diff --git a/arch/sparc/configs/sparc32_defconfig b/arch/sparc/configs/sparc32_defconfig index 983d59824a28..99a1f191497b 100644 --- a/arch/sparc/configs/sparc32_defconfig +++ b/arch/sparc/configs/sparc32_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.31 | 3 | # Linux kernel version: 2.6.33-rc2 |
4 | # Wed Sep 16 00:03:43 2009 | 4 | # Mon Jan 11 23:20:31 2010 |
5 | # | 5 | # |
6 | # CONFIG_64BIT is not set | 6 | # CONFIG_64BIT is not set |
7 | CONFIG_SPARC=y | 7 | CONFIG_SPARC=y |
@@ -41,6 +41,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y | |||
41 | # | 41 | # |
42 | CONFIG_TREE_RCU=y | 42 | CONFIG_TREE_RCU=y |
43 | # CONFIG_TREE_PREEMPT_RCU is not set | 43 | # CONFIG_TREE_PREEMPT_RCU is not set |
44 | # CONFIG_TINY_RCU is not set | ||
44 | # CONFIG_RCU_TRACE is not set | 45 | # CONFIG_RCU_TRACE is not set |
45 | CONFIG_RCU_FANOUT=32 | 46 | CONFIG_RCU_FANOUT=32 |
46 | # CONFIG_RCU_FANOUT_EXACT is not set | 47 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -88,21 +89,21 @@ CONFIG_TIMERFD=y | |||
88 | CONFIG_EVENTFD=y | 89 | CONFIG_EVENTFD=y |
89 | CONFIG_SHMEM=y | 90 | CONFIG_SHMEM=y |
90 | CONFIG_AIO=y | 91 | CONFIG_AIO=y |
91 | CONFIG_HAVE_PERF_COUNTERS=y | 92 | CONFIG_HAVE_PERF_EVENTS=y |
93 | CONFIG_PERF_USE_VMALLOC=y | ||
92 | 94 | ||
93 | # | 95 | # |
94 | # Performance Counters | 96 | # Kernel Performance Events And Counters |
95 | # | 97 | # |
98 | # CONFIG_PERF_EVENTS is not set | ||
96 | # CONFIG_PERF_COUNTERS is not set | 99 | # CONFIG_PERF_COUNTERS is not set |
97 | CONFIG_VM_EVENT_COUNTERS=y | 100 | CONFIG_VM_EVENT_COUNTERS=y |
98 | CONFIG_PCI_QUIRKS=y | 101 | CONFIG_PCI_QUIRKS=y |
99 | # CONFIG_STRIP_ASM_SYMS is not set | ||
100 | CONFIG_COMPAT_BRK=y | 102 | CONFIG_COMPAT_BRK=y |
101 | CONFIG_SLAB=y | 103 | CONFIG_SLAB=y |
102 | # CONFIG_SLUB is not set | 104 | # CONFIG_SLUB is not set |
103 | # CONFIG_SLOB is not set | 105 | # CONFIG_SLOB is not set |
104 | # CONFIG_PROFILING is not set | 106 | # CONFIG_PROFILING is not set |
105 | # CONFIG_MARKERS is not set | ||
106 | CONFIG_HAVE_OPROFILE=y | 107 | CONFIG_HAVE_OPROFILE=y |
107 | CONFIG_HAVE_ARCH_TRACEHOOK=y | 108 | CONFIG_HAVE_ARCH_TRACEHOOK=y |
108 | CONFIG_HAVE_DMA_ATTRS=y | 109 | CONFIG_HAVE_DMA_ATTRS=y |
@@ -131,14 +132,41 @@ CONFIG_LBDAF=y | |||
131 | # IO Schedulers | 132 | # IO Schedulers |
132 | # | 133 | # |
133 | CONFIG_IOSCHED_NOOP=y | 134 | CONFIG_IOSCHED_NOOP=y |
134 | CONFIG_IOSCHED_AS=y | ||
135 | CONFIG_IOSCHED_DEADLINE=y | 135 | CONFIG_IOSCHED_DEADLINE=y |
136 | CONFIG_IOSCHED_CFQ=y | 136 | CONFIG_IOSCHED_CFQ=y |
137 | # CONFIG_DEFAULT_AS is not set | ||
138 | # CONFIG_DEFAULT_DEADLINE is not set | 137 | # CONFIG_DEFAULT_DEADLINE is not set |
139 | CONFIG_DEFAULT_CFQ=y | 138 | CONFIG_DEFAULT_CFQ=y |
140 | # CONFIG_DEFAULT_NOOP is not set | 139 | # CONFIG_DEFAULT_NOOP is not set |
141 | CONFIG_DEFAULT_IOSCHED="cfq" | 140 | CONFIG_DEFAULT_IOSCHED="cfq" |
141 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
142 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
143 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
144 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
145 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
146 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
147 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
148 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
149 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
150 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
151 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
152 | # CONFIG_INLINE_READ_LOCK is not set | ||
153 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
154 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
155 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
156 | CONFIG_INLINE_READ_UNLOCK=y | ||
157 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
158 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
159 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
160 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
161 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
162 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
163 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
164 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
165 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
166 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
167 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
168 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
169 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
142 | # CONFIG_FREEZER is not set | 170 | # CONFIG_FREEZER is not set |
143 | 171 | ||
144 | # | 172 | # |
@@ -168,8 +196,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
168 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 196 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
169 | CONFIG_ZONE_DMA_FLAG=1 | 197 | CONFIG_ZONE_DMA_FLAG=1 |
170 | CONFIG_BOUNCE=y | 198 | CONFIG_BOUNCE=y |
171 | CONFIG_HAVE_MLOCK=y | 199 | # CONFIG_KSM is not set |
172 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
173 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 200 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
174 | CONFIG_SUN_PM=y | 201 | CONFIG_SUN_PM=y |
175 | # CONFIG_SPARC_LED is not set | 202 | # CONFIG_SPARC_LED is not set |
@@ -257,6 +284,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
257 | CONFIG_INET6_XFRM_MODE_BEET=m | 284 | CONFIG_INET6_XFRM_MODE_BEET=m |
258 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 285 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
259 | CONFIG_IPV6_SIT=m | 286 | CONFIG_IPV6_SIT=m |
287 | # CONFIG_IPV6_SIT_6RD is not set | ||
260 | CONFIG_IPV6_NDISC_NODETYPE=y | 288 | CONFIG_IPV6_NDISC_NODETYPE=y |
261 | CONFIG_IPV6_TUNNEL=m | 289 | CONFIG_IPV6_TUNNEL=m |
262 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 290 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
@@ -295,9 +323,6 @@ CONFIG_NET_PKTGEN=m | |||
295 | # CONFIG_AF_RXRPC is not set | 323 | # CONFIG_AF_RXRPC is not set |
296 | CONFIG_WIRELESS=y | 324 | CONFIG_WIRELESS=y |
297 | # CONFIG_CFG80211 is not set | 325 | # CONFIG_CFG80211 is not set |
298 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
299 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
300 | # CONFIG_WIRELESS_EXT is not set | ||
301 | # CONFIG_LIB80211 is not set | 326 | # CONFIG_LIB80211 is not set |
302 | 327 | ||
303 | # | 328 | # |
@@ -335,6 +360,10 @@ CONFIG_BLK_DEV=y | |||
335 | # CONFIG_BLK_DEV_COW_COMMON is not set | 360 | # CONFIG_BLK_DEV_COW_COMMON is not set |
336 | CONFIG_BLK_DEV_LOOP=m | 361 | CONFIG_BLK_DEV_LOOP=m |
337 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 362 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
363 | |||
364 | # | ||
365 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
366 | # | ||
338 | # CONFIG_BLK_DEV_NBD is not set | 367 | # CONFIG_BLK_DEV_NBD is not set |
339 | # CONFIG_BLK_DEV_SX8 is not set | 368 | # CONFIG_BLK_DEV_SX8 is not set |
340 | CONFIG_BLK_DEV_RAM=y | 369 | CONFIG_BLK_DEV_RAM=y |
@@ -398,8 +427,11 @@ CONFIG_SCSI_LOWLEVEL=y | |||
398 | # CONFIG_ISCSI_TCP is not set | 427 | # CONFIG_ISCSI_TCP is not set |
399 | # CONFIG_SCSI_CXGB3_ISCSI is not set | 428 | # CONFIG_SCSI_CXGB3_ISCSI is not set |
400 | # CONFIG_SCSI_BNX2_ISCSI is not set | 429 | # CONFIG_SCSI_BNX2_ISCSI is not set |
430 | # CONFIG_BE2ISCSI is not set | ||
401 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 431 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
432 | # CONFIG_SCSI_HPSA is not set | ||
402 | # CONFIG_SCSI_3W_9XXX is not set | 433 | # CONFIG_SCSI_3W_9XXX is not set |
434 | # CONFIG_SCSI_3W_SAS is not set | ||
403 | # CONFIG_SCSI_ACARD is not set | 435 | # CONFIG_SCSI_ACARD is not set |
404 | # CONFIG_SCSI_AACRAID is not set | 436 | # CONFIG_SCSI_AACRAID is not set |
405 | # CONFIG_SCSI_AIC7XXX is not set | 437 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -434,7 +466,9 @@ CONFIG_SCSI_QLOGICPTI=m | |||
434 | # CONFIG_SCSI_DEBUG is not set | 466 | # CONFIG_SCSI_DEBUG is not set |
435 | CONFIG_SCSI_SUNESP=y | 467 | CONFIG_SCSI_SUNESP=y |
436 | # CONFIG_SCSI_PMCRAID is not set | 468 | # CONFIG_SCSI_PMCRAID is not set |
469 | # CONFIG_SCSI_PM8001 is not set | ||
437 | # CONFIG_SCSI_SRP is not set | 470 | # CONFIG_SCSI_SRP is not set |
471 | # CONFIG_SCSI_BFA_FC is not set | ||
438 | # CONFIG_SCSI_DH is not set | 472 | # CONFIG_SCSI_DH is not set |
439 | # CONFIG_SCSI_OSD_INITIATOR is not set | 473 | # CONFIG_SCSI_OSD_INITIATOR is not set |
440 | # CONFIG_ATA is not set | 474 | # CONFIG_ATA is not set |
@@ -450,7 +484,7 @@ CONFIG_SCSI_SUNESP=y | |||
450 | # | 484 | # |
451 | 485 | ||
452 | # | 486 | # |
453 | # See the help texts for more information. | 487 | # The newer stack is recommended. |
454 | # | 488 | # |
455 | # CONFIG_FIREWIRE is not set | 489 | # CONFIG_FIREWIRE is not set |
456 | # CONFIG_IEEE1394 is not set | 490 | # CONFIG_IEEE1394 is not set |
@@ -487,6 +521,7 @@ CONFIG_SUNQE=m | |||
487 | # CONFIG_NET_PCI is not set | 521 | # CONFIG_NET_PCI is not set |
488 | # CONFIG_B44 is not set | 522 | # CONFIG_B44 is not set |
489 | # CONFIG_KS8842 is not set | 523 | # CONFIG_KS8842 is not set |
524 | # CONFIG_KS8851_MLL is not set | ||
490 | # CONFIG_ATL2 is not set | 525 | # CONFIG_ATL2 is not set |
491 | CONFIG_NETDEV_1000=y | 526 | CONFIG_NETDEV_1000=y |
492 | # CONFIG_ACENIC is not set | 527 | # CONFIG_ACENIC is not set |
@@ -546,6 +581,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
546 | # CONFIG_NETCONSOLE is not set | 581 | # CONFIG_NETCONSOLE is not set |
547 | # CONFIG_NETPOLL is not set | 582 | # CONFIG_NETPOLL is not set |
548 | # CONFIG_NET_POLL_CONTROLLER is not set | 583 | # CONFIG_NET_POLL_CONTROLLER is not set |
584 | # CONFIG_VMXNET3 is not set | ||
549 | # CONFIG_ISDN is not set | 585 | # CONFIG_ISDN is not set |
550 | # CONFIG_PHONE is not set | 586 | # CONFIG_PHONE is not set |
551 | 587 | ||
@@ -555,6 +591,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y | |||
555 | CONFIG_INPUT=y | 591 | CONFIG_INPUT=y |
556 | # CONFIG_INPUT_FF_MEMLESS is not set | 592 | # CONFIG_INPUT_FF_MEMLESS is not set |
557 | # CONFIG_INPUT_POLLDEV is not set | 593 | # CONFIG_INPUT_POLLDEV is not set |
594 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
558 | 595 | ||
559 | # | 596 | # |
560 | # Userland interfaces | 597 | # Userland interfaces |
@@ -574,6 +611,7 @@ CONFIG_INPUT_KEYBOARD=y | |||
574 | CONFIG_KEYBOARD_ATKBD=m | 611 | CONFIG_KEYBOARD_ATKBD=m |
575 | # CONFIG_KEYBOARD_LKKBD is not set | 612 | # CONFIG_KEYBOARD_LKKBD is not set |
576 | # CONFIG_KEYBOARD_NEWTON is not set | 613 | # CONFIG_KEYBOARD_NEWTON is not set |
614 | # CONFIG_KEYBOARD_OPENCORES is not set | ||
577 | # CONFIG_KEYBOARD_STOWAWAY is not set | 615 | # CONFIG_KEYBOARD_STOWAWAY is not set |
578 | CONFIG_KEYBOARD_SUNKBD=m | 616 | CONFIG_KEYBOARD_SUNKBD=m |
579 | # CONFIG_KEYBOARD_XTKBD is not set | 617 | # CONFIG_KEYBOARD_XTKBD is not set |
@@ -604,6 +642,7 @@ CONFIG_SERIO_SERPORT=m | |||
604 | # CONFIG_SERIO_PCIPS2 is not set | 642 | # CONFIG_SERIO_PCIPS2 is not set |
605 | CONFIG_SERIO_LIBPS2=m | 643 | CONFIG_SERIO_LIBPS2=m |
606 | # CONFIG_SERIO_RAW is not set | 644 | # CONFIG_SERIO_RAW is not set |
645 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
607 | # CONFIG_GAMEPORT is not set | 646 | # CONFIG_GAMEPORT is not set |
608 | 647 | ||
609 | # | 648 | # |
@@ -636,6 +675,7 @@ CONFIG_SERIAL_CORE=y | |||
636 | CONFIG_SERIAL_CORE_CONSOLE=y | 675 | CONFIG_SERIAL_CORE_CONSOLE=y |
637 | CONFIG_CONSOLE_POLL=y | 676 | CONFIG_CONSOLE_POLL=y |
638 | # CONFIG_SERIAL_JSM is not set | 677 | # CONFIG_SERIAL_JSM is not set |
678 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
639 | CONFIG_UNIX98_PTYS=y | 679 | CONFIG_UNIX98_PTYS=y |
640 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 680 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
641 | CONFIG_LEGACY_PTYS=y | 681 | CONFIG_LEGACY_PTYS=y |
@@ -661,6 +701,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | |||
661 | # CONFIG_POWER_SUPPLY is not set | 701 | # CONFIG_POWER_SUPPLY is not set |
662 | CONFIG_HWMON=y | 702 | CONFIG_HWMON=y |
663 | # CONFIG_HWMON_VID is not set | 703 | # CONFIG_HWMON_VID is not set |
704 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
705 | |||
706 | # | ||
707 | # Native drivers | ||
708 | # | ||
664 | # CONFIG_SENSORS_I5K_AMB is not set | 709 | # CONFIG_SENSORS_I5K_AMB is not set |
665 | # CONFIG_SENSORS_F71805F is not set | 710 | # CONFIG_SENSORS_F71805F is not set |
666 | # CONFIG_SENSORS_F71882FG is not set | 711 | # CONFIG_SENSORS_F71882FG is not set |
@@ -675,9 +720,7 @@ CONFIG_HWMON=y | |||
675 | # CONFIG_SENSORS_VT8231 is not set | 720 | # CONFIG_SENSORS_VT8231 is not set |
676 | # CONFIG_SENSORS_W83627HF is not set | 721 | # CONFIG_SENSORS_W83627HF is not set |
677 | # CONFIG_SENSORS_W83627EHF is not set | 722 | # CONFIG_SENSORS_W83627EHF is not set |
678 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
679 | # CONFIG_THERMAL is not set | 723 | # CONFIG_THERMAL is not set |
680 | # CONFIG_THERMAL_HWMON is not set | ||
681 | # CONFIG_WATCHDOG is not set | 724 | # CONFIG_WATCHDOG is not set |
682 | CONFIG_SSB_POSSIBLE=y | 725 | CONFIG_SSB_POSSIBLE=y |
683 | 726 | ||
@@ -699,6 +742,7 @@ CONFIG_SSB_POSSIBLE=y | |||
699 | # | 742 | # |
700 | # Graphics support | 743 | # Graphics support |
701 | # | 744 | # |
745 | CONFIG_VGA_ARB=y | ||
702 | # CONFIG_VGASTATE is not set | 746 | # CONFIG_VGASTATE is not set |
703 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | 747 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set |
704 | # CONFIG_FB is not set | 748 | # CONFIG_FB is not set |
@@ -776,7 +820,9 @@ CONFIG_RTC_INTF_DEV=y | |||
776 | # CONFIG_RTC_DRV_M48T86 is not set | 820 | # CONFIG_RTC_DRV_M48T86 is not set |
777 | # CONFIG_RTC_DRV_M48T35 is not set | 821 | # CONFIG_RTC_DRV_M48T35 is not set |
778 | CONFIG_RTC_DRV_M48T59=y | 822 | CONFIG_RTC_DRV_M48T59=y |
823 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
779 | # CONFIG_RTC_DRV_BQ4802 is not set | 824 | # CONFIG_RTC_DRV_BQ4802 is not set |
825 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
780 | # CONFIG_RTC_DRV_V3020 is not set | 826 | # CONFIG_RTC_DRV_V3020 is not set |
781 | 827 | ||
782 | # | 828 | # |
@@ -955,6 +1001,7 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y | |||
955 | CONFIG_ENABLE_MUST_CHECK=y | 1001 | CONFIG_ENABLE_MUST_CHECK=y |
956 | CONFIG_FRAME_WARN=1024 | 1002 | CONFIG_FRAME_WARN=1024 |
957 | CONFIG_MAGIC_SYSRQ=y | 1003 | CONFIG_MAGIC_SYSRQ=y |
1004 | # CONFIG_STRIP_ASM_SYMS is not set | ||
958 | # CONFIG_UNUSED_SYMBOLS is not set | 1005 | # CONFIG_UNUSED_SYMBOLS is not set |
959 | # CONFIG_DEBUG_FS is not set | 1006 | # CONFIG_DEBUG_FS is not set |
960 | # CONFIG_HEADERS_CHECK is not set | 1007 | # CONFIG_HEADERS_CHECK is not set |
@@ -1003,9 +1050,9 @@ CONFIG_KGDB=y | |||
1003 | CONFIG_KGDB_SERIAL_CONSOLE=y | 1050 | CONFIG_KGDB_SERIAL_CONSOLE=y |
1004 | CONFIG_KGDB_TESTS=y | 1051 | CONFIG_KGDB_TESTS=y |
1005 | # CONFIG_KGDB_TESTS_ON_BOOT is not set | 1052 | # CONFIG_KGDB_TESTS_ON_BOOT is not set |
1006 | # CONFIG_KMEMCHECK is not set | ||
1007 | # CONFIG_DEBUG_STACK_USAGE is not set | 1053 | # CONFIG_DEBUG_STACK_USAGE is not set |
1008 | # CONFIG_STACK_DEBUG is not set | 1054 | # CONFIG_STACK_DEBUG is not set |
1055 | # CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set | ||
1009 | 1056 | ||
1010 | # | 1057 | # |
1011 | # Security options | 1058 | # Security options |
@@ -1013,7 +1060,11 @@ CONFIG_KGDB_TESTS=y | |||
1013 | # CONFIG_KEYS is not set | 1060 | # CONFIG_KEYS is not set |
1014 | # CONFIG_SECURITY is not set | 1061 | # CONFIG_SECURITY is not set |
1015 | # CONFIG_SECURITYFS is not set | 1062 | # CONFIG_SECURITYFS is not set |
1016 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1063 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1064 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1065 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1066 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1067 | CONFIG_DEFAULT_SECURITY="" | ||
1017 | CONFIG_CRYPTO=y | 1068 | CONFIG_CRYPTO=y |
1018 | 1069 | ||
1019 | # | 1070 | # |
diff --git a/arch/sparc/configs/sparc64_defconfig b/arch/sparc/configs/sparc64_defconfig index f80b881dfea7..41c5a56aa6f2 100644 --- a/arch/sparc/configs/sparc64_defconfig +++ b/arch/sparc/configs/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.31 | 3 | # Linux kernel version: 2.6.33-rc2 |
4 | # Tue Sep 15 17:06:03 2009 | 4 | # Wed Jan 20 16:31:47 2010 |
5 | # | 5 | # |
6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
7 | CONFIG_SPARC=y | 7 | CONFIG_SPARC=y |
@@ -20,6 +20,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y | |||
20 | CONFIG_AUDIT_ARCH=y | 20 | CONFIG_AUDIT_ARCH=y |
21 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | 21 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y |
22 | CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y | 22 | CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y |
23 | CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y | ||
23 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 24 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
24 | CONFIG_MMU=y | 25 | CONFIG_MMU=y |
25 | CONFIG_ARCH_NO_VIRT_TO_BUS=y | 26 | CONFIG_ARCH_NO_VIRT_TO_BUS=y |
@@ -50,6 +51,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y | |||
50 | # | 51 | # |
51 | CONFIG_TREE_RCU=y | 52 | CONFIG_TREE_RCU=y |
52 | # CONFIG_TREE_PREEMPT_RCU is not set | 53 | # CONFIG_TREE_PREEMPT_RCU is not set |
54 | # CONFIG_TINY_RCU is not set | ||
53 | # CONFIG_RCU_TRACE is not set | 55 | # CONFIG_RCU_TRACE is not set |
54 | CONFIG_RCU_FANOUT=64 | 56 | CONFIG_RCU_FANOUT=64 |
55 | # CONFIG_RCU_FANOUT_EXACT is not set | 57 | # CONFIG_RCU_FANOUT_EXACT is not set |
@@ -62,8 +64,7 @@ CONFIG_RT_GROUP_SCHED=y | |||
62 | CONFIG_USER_SCHED=y | 64 | CONFIG_USER_SCHED=y |
63 | # CONFIG_CGROUP_SCHED is not set | 65 | # CONFIG_CGROUP_SCHED is not set |
64 | # CONFIG_CGROUPS is not set | 66 | # CONFIG_CGROUPS is not set |
65 | CONFIG_SYSFS_DEPRECATED=y | 67 | # CONFIG_SYSFS_DEPRECATED_V2 is not set |
66 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
67 | CONFIG_RELAY=y | 68 | CONFIG_RELAY=y |
68 | CONFIG_NAMESPACES=y | 69 | CONFIG_NAMESPACES=y |
69 | # CONFIG_UTS_NS is not set | 70 | # CONFIG_UTS_NS is not set |
@@ -97,24 +98,25 @@ CONFIG_TIMERFD=y | |||
97 | CONFIG_EVENTFD=y | 98 | CONFIG_EVENTFD=y |
98 | CONFIG_SHMEM=y | 99 | CONFIG_SHMEM=y |
99 | CONFIG_AIO=y | 100 | CONFIG_AIO=y |
100 | CONFIG_HAVE_PERF_COUNTERS=y | 101 | CONFIG_HAVE_PERF_EVENTS=y |
102 | CONFIG_PERF_USE_VMALLOC=y | ||
101 | 103 | ||
102 | # | 104 | # |
103 | # Performance Counters | 105 | # Kernel Performance Events And Counters |
104 | # | 106 | # |
105 | CONFIG_PERF_COUNTERS=y | 107 | CONFIG_PERF_EVENTS=y |
106 | CONFIG_EVENT_PROFILE=y | 108 | CONFIG_EVENT_PROFILE=y |
109 | CONFIG_PERF_COUNTERS=y | ||
110 | # CONFIG_DEBUG_PERF_USE_VMALLOC is not set | ||
107 | CONFIG_VM_EVENT_COUNTERS=y | 111 | CONFIG_VM_EVENT_COUNTERS=y |
108 | CONFIG_PCI_QUIRKS=y | 112 | CONFIG_PCI_QUIRKS=y |
109 | CONFIG_SLUB_DEBUG=y | 113 | CONFIG_SLUB_DEBUG=y |
110 | # CONFIG_STRIP_ASM_SYMS is not set | ||
111 | # CONFIG_COMPAT_BRK is not set | 114 | # CONFIG_COMPAT_BRK is not set |
112 | # CONFIG_SLAB is not set | 115 | # CONFIG_SLAB is not set |
113 | CONFIG_SLUB=y | 116 | CONFIG_SLUB=y |
114 | # CONFIG_SLOB is not set | 117 | # CONFIG_SLOB is not set |
115 | CONFIG_PROFILING=y | 118 | CONFIG_PROFILING=y |
116 | CONFIG_TRACEPOINTS=y | 119 | CONFIG_TRACEPOINTS=y |
117 | CONFIG_MARKERS=y | ||
118 | CONFIG_OPROFILE=m | 120 | CONFIG_OPROFILE=m |
119 | CONFIG_HAVE_OPROFILE=y | 121 | CONFIG_HAVE_OPROFILE=y |
120 | CONFIG_KPROBES=y | 122 | CONFIG_KPROBES=y |
@@ -152,14 +154,41 @@ CONFIG_BLOCK_COMPAT=y | |||
152 | # IO Schedulers | 154 | # IO Schedulers |
153 | # | 155 | # |
154 | CONFIG_IOSCHED_NOOP=y | 156 | CONFIG_IOSCHED_NOOP=y |
155 | CONFIG_IOSCHED_AS=y | ||
156 | CONFIG_IOSCHED_DEADLINE=y | 157 | CONFIG_IOSCHED_DEADLINE=y |
157 | CONFIG_IOSCHED_CFQ=y | 158 | CONFIG_IOSCHED_CFQ=y |
158 | CONFIG_DEFAULT_AS=y | ||
159 | # CONFIG_DEFAULT_DEADLINE is not set | 159 | # CONFIG_DEFAULT_DEADLINE is not set |
160 | # CONFIG_DEFAULT_CFQ is not set | 160 | CONFIG_DEFAULT_CFQ=y |
161 | # CONFIG_DEFAULT_NOOP is not set | 161 | # CONFIG_DEFAULT_NOOP is not set |
162 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 162 | CONFIG_DEFAULT_IOSCHED="cfq" |
163 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
164 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
165 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
166 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
167 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
168 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
169 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
170 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
171 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
172 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
173 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
174 | # CONFIG_INLINE_READ_LOCK is not set | ||
175 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
176 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
177 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
178 | CONFIG_INLINE_READ_UNLOCK=y | ||
179 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
180 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
181 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
182 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
183 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
184 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
185 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
186 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
187 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
188 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
189 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
190 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
191 | CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
163 | # CONFIG_FREEZER is not set | 192 | # CONFIG_FREEZER is not set |
164 | 193 | ||
165 | # | 194 | # |
@@ -179,6 +208,7 @@ CONFIG_GENERIC_HWEIGHT=y | |||
179 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 208 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
180 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | 209 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y |
181 | CONFIG_SPARC64_SMP=y | 210 | CONFIG_SPARC64_SMP=y |
211 | CONFIG_EARLYFB=y | ||
182 | CONFIG_SPARC64_PAGE_SIZE_8KB=y | 212 | CONFIG_SPARC64_PAGE_SIZE_8KB=y |
183 | # CONFIG_SPARC64_PAGE_SIZE_64KB is not set | 213 | # CONFIG_SPARC64_PAGE_SIZE_64KB is not set |
184 | CONFIG_SECCOMP=y | 214 | CONFIG_SECCOMP=y |
@@ -216,8 +246,7 @@ CONFIG_MIGRATION=y | |||
216 | CONFIG_PHYS_ADDR_T_64BIT=y | 246 | CONFIG_PHYS_ADDR_T_64BIT=y |
217 | CONFIG_ZONE_DMA_FLAG=0 | 247 | CONFIG_ZONE_DMA_FLAG=0 |
218 | CONFIG_NR_QUICK=1 | 248 | CONFIG_NR_QUICK=1 |
219 | CONFIG_HAVE_MLOCK=y | 249 | # CONFIG_KSM is not set |
220 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
221 | CONFIG_DEFAULT_MMAP_MIN_ADDR=8192 | 250 | CONFIG_DEFAULT_MMAP_MIN_ADDR=8192 |
222 | CONFIG_SCHED_SMT=y | 251 | CONFIG_SCHED_SMT=y |
223 | CONFIG_SCHED_MC=y | 252 | CONFIG_SCHED_MC=y |
@@ -315,6 +344,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
315 | CONFIG_INET6_XFRM_MODE_BEET=m | 344 | CONFIG_INET6_XFRM_MODE_BEET=m |
316 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 345 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
317 | CONFIG_IPV6_SIT=m | 346 | CONFIG_IPV6_SIT=m |
347 | # CONFIG_IPV6_SIT_6RD is not set | ||
318 | CONFIG_IPV6_NDISC_NODETYPE=y | 348 | CONFIG_IPV6_NDISC_NODETYPE=y |
319 | CONFIG_IPV6_TUNNEL=m | 349 | CONFIG_IPV6_TUNNEL=m |
320 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 350 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
@@ -356,9 +386,6 @@ CONFIG_NET_TCPPROBE=m | |||
356 | # CONFIG_AF_RXRPC is not set | 386 | # CONFIG_AF_RXRPC is not set |
357 | CONFIG_WIRELESS=y | 387 | CONFIG_WIRELESS=y |
358 | # CONFIG_CFG80211 is not set | 388 | # CONFIG_CFG80211 is not set |
359 | CONFIG_CFG80211_DEFAULT_PS_VALUE=0 | ||
360 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
361 | # CONFIG_WIRELESS_EXT is not set | ||
362 | # CONFIG_LIB80211 is not set | 389 | # CONFIG_LIB80211 is not set |
363 | 390 | ||
364 | # | 391 | # |
@@ -376,6 +403,7 @@ CONFIG_WIRELESS_OLD_REGULATORY=y | |||
376 | # Generic Driver Options | 403 | # Generic Driver Options |
377 | # | 404 | # |
378 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 405 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
406 | # CONFIG_DEVTMPFS is not set | ||
379 | CONFIG_STANDALONE=y | 407 | CONFIG_STANDALONE=y |
380 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 408 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
381 | CONFIG_FW_LOADER=y | 409 | CONFIG_FW_LOADER=y |
@@ -397,6 +425,11 @@ CONFIG_BLK_DEV=y | |||
397 | # CONFIG_BLK_DEV_COW_COMMON is not set | 425 | # CONFIG_BLK_DEV_COW_COMMON is not set |
398 | CONFIG_BLK_DEV_LOOP=m | 426 | CONFIG_BLK_DEV_LOOP=m |
399 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 427 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
428 | |||
429 | # | ||
430 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
431 | # | ||
432 | # CONFIG_BLK_DEV_DRBD is not set | ||
400 | CONFIG_BLK_DEV_NBD=m | 433 | CONFIG_BLK_DEV_NBD=m |
401 | # CONFIG_BLK_DEV_SX8 is not set | 434 | # CONFIG_BLK_DEV_SX8 is not set |
402 | # CONFIG_BLK_DEV_UB is not set | 435 | # CONFIG_BLK_DEV_UB is not set |
@@ -408,6 +441,7 @@ CONFIG_ATA_OVER_ETH=m | |||
408 | CONFIG_SUNVDC=m | 441 | CONFIG_SUNVDC=m |
409 | # CONFIG_BLK_DEV_HD is not set | 442 | # CONFIG_BLK_DEV_HD is not set |
410 | CONFIG_MISC_DEVICES=y | 443 | CONFIG_MISC_DEVICES=y |
444 | # CONFIG_AD525X_DPOT is not set | ||
411 | # CONFIG_PHANTOM is not set | 445 | # CONFIG_PHANTOM is not set |
412 | # CONFIG_SGI_IOC4 is not set | 446 | # CONFIG_SGI_IOC4 is not set |
413 | # CONFIG_TIFM_CORE is not set | 447 | # CONFIG_TIFM_CORE is not set |
@@ -415,6 +449,7 @@ CONFIG_MISC_DEVICES=y | |||
415 | # CONFIG_ENCLOSURE_SERVICES is not set | 449 | # CONFIG_ENCLOSURE_SERVICES is not set |
416 | # CONFIG_HP_ILO is not set | 450 | # CONFIG_HP_ILO is not set |
417 | # CONFIG_ISL29003 is not set | 451 | # CONFIG_ISL29003 is not set |
452 | # CONFIG_DS1682 is not set | ||
418 | # CONFIG_C2PORT is not set | 453 | # CONFIG_C2PORT is not set |
419 | 454 | ||
420 | # | 455 | # |
@@ -522,8 +557,11 @@ CONFIG_SCSI_LOWLEVEL=y | |||
522 | # CONFIG_ISCSI_TCP is not set | 557 | # CONFIG_ISCSI_TCP is not set |
523 | # CONFIG_SCSI_CXGB3_ISCSI is not set | 558 | # CONFIG_SCSI_CXGB3_ISCSI is not set |
524 | # CONFIG_SCSI_BNX2_ISCSI is not set | 559 | # CONFIG_SCSI_BNX2_ISCSI is not set |
560 | # CONFIG_BE2ISCSI is not set | ||
525 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 561 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
562 | # CONFIG_SCSI_HPSA is not set | ||
526 | # CONFIG_SCSI_3W_9XXX is not set | 563 | # CONFIG_SCSI_3W_9XXX is not set |
564 | # CONFIG_SCSI_3W_SAS is not set | ||
527 | # CONFIG_SCSI_ACARD is not set | 565 | # CONFIG_SCSI_ACARD is not set |
528 | # CONFIG_SCSI_AACRAID is not set | 566 | # CONFIG_SCSI_AACRAID is not set |
529 | # CONFIG_SCSI_AIC7XXX is not set | 567 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -557,7 +595,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
557 | # CONFIG_SCSI_DEBUG is not set | 595 | # CONFIG_SCSI_DEBUG is not set |
558 | # CONFIG_SCSI_SUNESP is not set | 596 | # CONFIG_SCSI_SUNESP is not set |
559 | # CONFIG_SCSI_PMCRAID is not set | 597 | # CONFIG_SCSI_PMCRAID is not set |
598 | # CONFIG_SCSI_PM8001 is not set | ||
560 | # CONFIG_SCSI_SRP is not set | 599 | # CONFIG_SCSI_SRP is not set |
600 | # CONFIG_SCSI_BFA_FC is not set | ||
561 | # CONFIG_SCSI_DH is not set | 601 | # CONFIG_SCSI_DH is not set |
562 | # CONFIG_SCSI_OSD_INITIATOR is not set | 602 | # CONFIG_SCSI_OSD_INITIATOR is not set |
563 | # CONFIG_ATA is not set | 603 | # CONFIG_ATA is not set |
@@ -568,7 +608,9 @@ CONFIG_MD_RAID0=m | |||
568 | CONFIG_MD_RAID1=m | 608 | CONFIG_MD_RAID1=m |
569 | CONFIG_MD_RAID10=m | 609 | CONFIG_MD_RAID10=m |
570 | CONFIG_MD_RAID456=m | 610 | CONFIG_MD_RAID456=m |
611 | # CONFIG_MULTICORE_RAID456 is not set | ||
571 | CONFIG_MD_RAID6_PQ=m | 612 | CONFIG_MD_RAID6_PQ=m |
613 | # CONFIG_ASYNC_RAID6_TEST is not set | ||
572 | CONFIG_MD_MULTIPATH=m | 614 | CONFIG_MD_MULTIPATH=m |
573 | # CONFIG_MD_FAULTY is not set | 615 | # CONFIG_MD_FAULTY is not set |
574 | CONFIG_BLK_DEV_DM=m | 616 | CONFIG_BLK_DEV_DM=m |
@@ -592,7 +634,7 @@ CONFIG_DM_ZERO=m | |||
592 | # | 634 | # |
593 | 635 | ||
594 | # | 636 | # |
595 | # See the help texts for more information. | 637 | # The newer stack is recommended. |
596 | # | 638 | # |
597 | # CONFIG_FIREWIRE is not set | 639 | # CONFIG_FIREWIRE is not set |
598 | # CONFIG_IEEE1394 is not set | 640 | # CONFIG_IEEE1394 is not set |
@@ -664,6 +706,7 @@ CONFIG_NET_PCI=y | |||
664 | # CONFIG_SUNDANCE is not set | 706 | # CONFIG_SUNDANCE is not set |
665 | # CONFIG_TLAN is not set | 707 | # CONFIG_TLAN is not set |
666 | # CONFIG_KS8842 is not set | 708 | # CONFIG_KS8842 is not set |
709 | # CONFIG_KS8851_MLL is not set | ||
667 | # CONFIG_VIA_RHINE is not set | 710 | # CONFIG_VIA_RHINE is not set |
668 | # CONFIG_SC92031 is not set | 711 | # CONFIG_SC92031 is not set |
669 | # CONFIG_ATL2 is not set | 712 | # CONFIG_ATL2 is not set |
@@ -745,6 +788,7 @@ CONFIG_SLHC=m | |||
745 | # CONFIG_NETCONSOLE is not set | 788 | # CONFIG_NETCONSOLE is not set |
746 | # CONFIG_NETPOLL is not set | 789 | # CONFIG_NETPOLL is not set |
747 | # CONFIG_NET_POLL_CONTROLLER is not set | 790 | # CONFIG_NET_POLL_CONTROLLER is not set |
791 | # CONFIG_VMXNET3 is not set | ||
748 | # CONFIG_ISDN is not set | 792 | # CONFIG_ISDN is not set |
749 | # CONFIG_PHONE is not set | 793 | # CONFIG_PHONE is not set |
750 | 794 | ||
@@ -754,6 +798,7 @@ CONFIG_SLHC=m | |||
754 | CONFIG_INPUT=y | 798 | CONFIG_INPUT=y |
755 | # CONFIG_INPUT_FF_MEMLESS is not set | 799 | # CONFIG_INPUT_FF_MEMLESS is not set |
756 | # CONFIG_INPUT_POLLDEV is not set | 800 | # CONFIG_INPUT_POLLDEV is not set |
801 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
757 | 802 | ||
758 | # | 803 | # |
759 | # Userland interfaces | 804 | # Userland interfaces |
@@ -770,9 +815,13 @@ CONFIG_INPUT_EVDEV=y | |||
770 | # Input Device Drivers | 815 | # Input Device Drivers |
771 | # | 816 | # |
772 | CONFIG_INPUT_KEYBOARD=y | 817 | CONFIG_INPUT_KEYBOARD=y |
818 | # CONFIG_KEYBOARD_ADP5588 is not set | ||
773 | CONFIG_KEYBOARD_ATKBD=y | 819 | CONFIG_KEYBOARD_ATKBD=y |
820 | # CONFIG_QT2160 is not set | ||
774 | CONFIG_KEYBOARD_LKKBD=m | 821 | CONFIG_KEYBOARD_LKKBD=m |
822 | # CONFIG_KEYBOARD_MAX7359 is not set | ||
775 | # CONFIG_KEYBOARD_NEWTON is not set | 823 | # CONFIG_KEYBOARD_NEWTON is not set |
824 | # CONFIG_KEYBOARD_OPENCORES is not set | ||
776 | # CONFIG_KEYBOARD_STOWAWAY is not set | 825 | # CONFIG_KEYBOARD_STOWAWAY is not set |
777 | CONFIG_KEYBOARD_SUNKBD=y | 826 | CONFIG_KEYBOARD_SUNKBD=y |
778 | # CONFIG_KEYBOARD_XTKBD is not set | 827 | # CONFIG_KEYBOARD_XTKBD is not set |
@@ -812,6 +861,7 @@ CONFIG_SERIO_I8042=y | |||
812 | CONFIG_SERIO_PCIPS2=m | 861 | CONFIG_SERIO_PCIPS2=m |
813 | CONFIG_SERIO_LIBPS2=y | 862 | CONFIG_SERIO_LIBPS2=y |
814 | CONFIG_SERIO_RAW=m | 863 | CONFIG_SERIO_RAW=m |
864 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
815 | # CONFIG_GAMEPORT is not set | 865 | # CONFIG_GAMEPORT is not set |
816 | 866 | ||
817 | # | 867 | # |
@@ -844,6 +894,7 @@ CONFIG_SERIAL_SUNHV=y | |||
844 | CONFIG_SERIAL_CORE=y | 894 | CONFIG_SERIAL_CORE=y |
845 | CONFIG_SERIAL_CORE_CONSOLE=y | 895 | CONFIG_SERIAL_CORE_CONSOLE=y |
846 | # CONFIG_SERIAL_JSM is not set | 896 | # CONFIG_SERIAL_JSM is not set |
897 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
847 | CONFIG_UNIX98_PTYS=y | 898 | CONFIG_UNIX98_PTYS=y |
848 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 899 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
849 | # CONFIG_LEGACY_PTYS is not set | 900 | # CONFIG_LEGACY_PTYS is not set |
@@ -858,6 +909,7 @@ CONFIG_HW_RANDOM_N2RNG=m | |||
858 | CONFIG_DEVPORT=y | 909 | CONFIG_DEVPORT=y |
859 | CONFIG_I2C=y | 910 | CONFIG_I2C=y |
860 | CONFIG_I2C_BOARDINFO=y | 911 | CONFIG_I2C_BOARDINFO=y |
912 | CONFIG_I2C_COMPAT=y | ||
861 | # CONFIG_I2C_CHARDEV is not set | 913 | # CONFIG_I2C_CHARDEV is not set |
862 | CONFIG_I2C_HELPER_AUTO=y | 914 | CONFIG_I2C_HELPER_AUTO=y |
863 | CONFIG_I2C_ALGOBIT=y | 915 | CONFIG_I2C_ALGOBIT=y |
@@ -898,11 +950,6 @@ CONFIG_I2C_ALGOBIT=y | |||
898 | # CONFIG_I2C_TINY_USB is not set | 950 | # CONFIG_I2C_TINY_USB is not set |
899 | 951 | ||
900 | # | 952 | # |
901 | # Graphics adapter I2C/DDC channel drivers | ||
902 | # | ||
903 | # CONFIG_I2C_VOODOO3 is not set | ||
904 | |||
905 | # | ||
906 | # Other I2C/SMBus bus drivers | 953 | # Other I2C/SMBus bus drivers |
907 | # | 954 | # |
908 | # CONFIG_I2C_PCA_PLATFORM is not set | 955 | # CONFIG_I2C_PCA_PLATFORM is not set |
@@ -911,10 +958,6 @@ CONFIG_I2C_ALGOBIT=y | |||
911 | # | 958 | # |
912 | # Miscellaneous I2C Chip support | 959 | # Miscellaneous I2C Chip support |
913 | # | 960 | # |
914 | # CONFIG_DS1682 is not set | ||
915 | # CONFIG_SENSORS_PCF8574 is not set | ||
916 | # CONFIG_PCF8575 is not set | ||
917 | # CONFIG_SENSORS_PCA9539 is not set | ||
918 | # CONFIG_SENSORS_TSL2550 is not set | 961 | # CONFIG_SENSORS_TSL2550 is not set |
919 | # CONFIG_I2C_DEBUG_CORE is not set | 962 | # CONFIG_I2C_DEBUG_CORE is not set |
920 | # CONFIG_I2C_DEBUG_ALGO is not set | 963 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -932,6 +975,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | |||
932 | # CONFIG_POWER_SUPPLY is not set | 975 | # CONFIG_POWER_SUPPLY is not set |
933 | CONFIG_HWMON=y | 976 | CONFIG_HWMON=y |
934 | # CONFIG_HWMON_VID is not set | 977 | # CONFIG_HWMON_VID is not set |
978 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
979 | |||
980 | # | ||
981 | # Native drivers | ||
982 | # | ||
935 | # CONFIG_SENSORS_AD7414 is not set | 983 | # CONFIG_SENSORS_AD7414 is not set |
936 | # CONFIG_SENSORS_AD7418 is not set | 984 | # CONFIG_SENSORS_AD7418 is not set |
937 | # CONFIG_SENSORS_ADM1021 is not set | 985 | # CONFIG_SENSORS_ADM1021 is not set |
@@ -955,6 +1003,7 @@ CONFIG_HWMON=y | |||
955 | # CONFIG_SENSORS_GL520SM is not set | 1003 | # CONFIG_SENSORS_GL520SM is not set |
956 | # CONFIG_SENSORS_IT87 is not set | 1004 | # CONFIG_SENSORS_IT87 is not set |
957 | # CONFIG_SENSORS_LM63 is not set | 1005 | # CONFIG_SENSORS_LM63 is not set |
1006 | # CONFIG_SENSORS_LM73 is not set | ||
958 | # CONFIG_SENSORS_LM75 is not set | 1007 | # CONFIG_SENSORS_LM75 is not set |
959 | # CONFIG_SENSORS_LM77 is not set | 1008 | # CONFIG_SENSORS_LM77 is not set |
960 | # CONFIG_SENSORS_LM78 is not set | 1009 | # CONFIG_SENSORS_LM78 is not set |
@@ -981,6 +1030,7 @@ CONFIG_HWMON=y | |||
981 | # CONFIG_SENSORS_ADS7828 is not set | 1030 | # CONFIG_SENSORS_ADS7828 is not set |
982 | # CONFIG_SENSORS_THMC50 is not set | 1031 | # CONFIG_SENSORS_THMC50 is not set |
983 | # CONFIG_SENSORS_TMP401 is not set | 1032 | # CONFIG_SENSORS_TMP401 is not set |
1033 | # CONFIG_SENSORS_TMP421 is not set | ||
984 | # CONFIG_SENSORS_VIA686A is not set | 1034 | # CONFIG_SENSORS_VIA686A is not set |
985 | # CONFIG_SENSORS_VT1211 is not set | 1035 | # CONFIG_SENSORS_VT1211 is not set |
986 | # CONFIG_SENSORS_VT8231 is not set | 1036 | # CONFIG_SENSORS_VT8231 is not set |
@@ -993,9 +1043,8 @@ CONFIG_HWMON=y | |||
993 | # CONFIG_SENSORS_W83627HF is not set | 1043 | # CONFIG_SENSORS_W83627HF is not set |
994 | # CONFIG_SENSORS_W83627EHF is not set | 1044 | # CONFIG_SENSORS_W83627EHF is not set |
995 | # CONFIG_SENSORS_ULTRA45 is not set | 1045 | # CONFIG_SENSORS_ULTRA45 is not set |
996 | # CONFIG_HWMON_DEBUG_CHIP is not set | 1046 | # CONFIG_SENSORS_LIS3_I2C is not set |
997 | # CONFIG_THERMAL is not set | 1047 | # CONFIG_THERMAL is not set |
998 | # CONFIG_THERMAL_HWMON is not set | ||
999 | # CONFIG_WATCHDOG is not set | 1048 | # CONFIG_WATCHDOG is not set |
1000 | CONFIG_SSB_POSSIBLE=y | 1049 | CONFIG_SSB_POSSIBLE=y |
1001 | 1050 | ||
@@ -1013,16 +1062,20 @@ CONFIG_SSB_POSSIBLE=y | |||
1013 | # CONFIG_TWL4030_CORE is not set | 1062 | # CONFIG_TWL4030_CORE is not set |
1014 | # CONFIG_MFD_TMIO is not set | 1063 | # CONFIG_MFD_TMIO is not set |
1015 | # CONFIG_PMIC_DA903X is not set | 1064 | # CONFIG_PMIC_DA903X is not set |
1065 | # CONFIG_PMIC_ADP5520 is not set | ||
1016 | # CONFIG_MFD_WM8400 is not set | 1066 | # CONFIG_MFD_WM8400 is not set |
1067 | # CONFIG_MFD_WM831X is not set | ||
1017 | # CONFIG_MFD_WM8350_I2C is not set | 1068 | # CONFIG_MFD_WM8350_I2C is not set |
1018 | # CONFIG_MFD_PCF50633 is not set | 1069 | # CONFIG_MFD_PCF50633 is not set |
1019 | # CONFIG_AB3100_CORE is not set | 1070 | # CONFIG_AB3100_CORE is not set |
1071 | # CONFIG_MFD_88PM8607 is not set | ||
1020 | # CONFIG_REGULATOR is not set | 1072 | # CONFIG_REGULATOR is not set |
1021 | # CONFIG_MEDIA_SUPPORT is not set | 1073 | # CONFIG_MEDIA_SUPPORT is not set |
1022 | 1074 | ||
1023 | # | 1075 | # |
1024 | # Graphics support | 1076 | # Graphics support |
1025 | # | 1077 | # |
1078 | CONFIG_VGA_ARB=y | ||
1026 | # CONFIG_DRM is not set | 1079 | # CONFIG_DRM is not set |
1027 | # CONFIG_VGASTATE is not set | 1080 | # CONFIG_VGASTATE is not set |
1028 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | 1081 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set |
@@ -1176,6 +1229,7 @@ CONFIG_SND_ALI5451=m | |||
1176 | # CONFIG_SND_OXYGEN is not set | 1229 | # CONFIG_SND_OXYGEN is not set |
1177 | # CONFIG_SND_CS4281 is not set | 1230 | # CONFIG_SND_CS4281 is not set |
1178 | # CONFIG_SND_CS46XX is not set | 1231 | # CONFIG_SND_CS46XX is not set |
1232 | # CONFIG_SND_CS5535AUDIO is not set | ||
1179 | # CONFIG_SND_CTXFI is not set | 1233 | # CONFIG_SND_CTXFI is not set |
1180 | # CONFIG_SND_DARLA20 is not set | 1234 | # CONFIG_SND_DARLA20 is not set |
1181 | # CONFIG_SND_GINA20 is not set | 1235 | # CONFIG_SND_GINA20 is not set |
@@ -1311,6 +1365,7 @@ CONFIG_USB_EHCI_HCD=m | |||
1311 | # CONFIG_USB_OXU210HP_HCD is not set | 1365 | # CONFIG_USB_OXU210HP_HCD is not set |
1312 | # CONFIG_USB_ISP116X_HCD is not set | 1366 | # CONFIG_USB_ISP116X_HCD is not set |
1313 | # CONFIG_USB_ISP1760_HCD is not set | 1367 | # CONFIG_USB_ISP1760_HCD is not set |
1368 | # CONFIG_USB_ISP1362_HCD is not set | ||
1314 | CONFIG_USB_OHCI_HCD=y | 1369 | CONFIG_USB_OHCI_HCD=y |
1315 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | 1370 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
1316 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | 1371 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set |
@@ -1426,6 +1481,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1426 | # CONFIG_RTC_DRV_PCF8563 is not set | 1481 | # CONFIG_RTC_DRV_PCF8563 is not set |
1427 | # CONFIG_RTC_DRV_PCF8583 is not set | 1482 | # CONFIG_RTC_DRV_PCF8583 is not set |
1428 | # CONFIG_RTC_DRV_M41T80 is not set | 1483 | # CONFIG_RTC_DRV_M41T80 is not set |
1484 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1429 | # CONFIG_RTC_DRV_S35390A is not set | 1485 | # CONFIG_RTC_DRV_S35390A is not set |
1430 | # CONFIG_RTC_DRV_FM3130 is not set | 1486 | # CONFIG_RTC_DRV_FM3130 is not set |
1431 | # CONFIG_RTC_DRV_RX8581 is not set | 1487 | # CONFIG_RTC_DRV_RX8581 is not set |
@@ -1447,7 +1503,9 @@ CONFIG_RTC_DRV_CMOS=y | |||
1447 | # CONFIG_RTC_DRV_M48T86 is not set | 1503 | # CONFIG_RTC_DRV_M48T86 is not set |
1448 | # CONFIG_RTC_DRV_M48T35 is not set | 1504 | # CONFIG_RTC_DRV_M48T35 is not set |
1449 | CONFIG_RTC_DRV_M48T59=y | 1505 | CONFIG_RTC_DRV_M48T59=y |
1506 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1450 | CONFIG_RTC_DRV_BQ4802=y | 1507 | CONFIG_RTC_DRV_BQ4802=y |
1508 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1451 | # CONFIG_RTC_DRV_V3020 is not set | 1509 | # CONFIG_RTC_DRV_V3020 is not set |
1452 | 1510 | ||
1453 | # | 1511 | # |
@@ -1625,6 +1683,7 @@ CONFIG_PRINTK_TIME=y | |||
1625 | CONFIG_ENABLE_MUST_CHECK=y | 1683 | CONFIG_ENABLE_MUST_CHECK=y |
1626 | CONFIG_FRAME_WARN=2048 | 1684 | CONFIG_FRAME_WARN=2048 |
1627 | CONFIG_MAGIC_SYSRQ=y | 1685 | CONFIG_MAGIC_SYSRQ=y |
1686 | # CONFIG_STRIP_ASM_SYMS is not set | ||
1628 | # CONFIG_UNUSED_SYMBOLS is not set | 1687 | # CONFIG_UNUSED_SYMBOLS is not set |
1629 | CONFIG_DEBUG_FS=y | 1688 | CONFIG_DEBUG_FS=y |
1630 | # CONFIG_HEADERS_CHECK is not set | 1689 | # CONFIG_HEADERS_CHECK is not set |
@@ -1678,9 +1737,11 @@ CONFIG_NOP_TRACER=y | |||
1678 | CONFIG_HAVE_FUNCTION_TRACER=y | 1737 | CONFIG_HAVE_FUNCTION_TRACER=y |
1679 | CONFIG_HAVE_DYNAMIC_FTRACE=y | 1738 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1680 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | 1739 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y |
1740 | CONFIG_HAVE_SYSCALL_TRACEPOINTS=y | ||
1681 | CONFIG_RING_BUFFER=y | 1741 | CONFIG_RING_BUFFER=y |
1682 | CONFIG_EVENT_TRACING=y | 1742 | CONFIG_EVENT_TRACING=y |
1683 | CONFIG_CONTEXT_SWITCH_TRACER=y | 1743 | CONFIG_CONTEXT_SWITCH_TRACER=y |
1744 | CONFIG_RING_BUFFER_ALLOW_SWAP=y | ||
1684 | CONFIG_TRACING=y | 1745 | CONFIG_TRACING=y |
1685 | CONFIG_GENERIC_TRACER=y | 1746 | CONFIG_GENERIC_TRACER=y |
1686 | CONFIG_TRACING_SUPPORT=y | 1747 | CONFIG_TRACING_SUPPORT=y |
@@ -1688,6 +1749,7 @@ CONFIG_FTRACE=y | |||
1688 | # CONFIG_FUNCTION_TRACER is not set | 1749 | # CONFIG_FUNCTION_TRACER is not set |
1689 | # CONFIG_IRQSOFF_TRACER is not set | 1750 | # CONFIG_IRQSOFF_TRACER is not set |
1690 | # CONFIG_SCHED_TRACER is not set | 1751 | # CONFIG_SCHED_TRACER is not set |
1752 | # CONFIG_FTRACE_SYSCALLS is not set | ||
1691 | # CONFIG_BOOT_TRACER is not set | 1753 | # CONFIG_BOOT_TRACER is not set |
1692 | CONFIG_BRANCH_PROFILE_NONE=y | 1754 | CONFIG_BRANCH_PROFILE_NONE=y |
1693 | # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set | 1755 | # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set |
@@ -1706,6 +1768,7 @@ CONFIG_HAVE_ARCH_KGDB=y | |||
1706 | # CONFIG_DEBUG_STACK_USAGE is not set | 1768 | # CONFIG_DEBUG_STACK_USAGE is not set |
1707 | # CONFIG_DEBUG_DCFLUSH is not set | 1769 | # CONFIG_DEBUG_DCFLUSH is not set |
1708 | # CONFIG_STACK_DEBUG is not set | 1770 | # CONFIG_STACK_DEBUG is not set |
1771 | # CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set | ||
1709 | 1772 | ||
1710 | # | 1773 | # |
1711 | # Security options | 1774 | # Security options |
@@ -1714,11 +1777,17 @@ CONFIG_KEYS=y | |||
1714 | # CONFIG_KEYS_DEBUG_PROC_KEYS is not set | 1777 | # CONFIG_KEYS_DEBUG_PROC_KEYS is not set |
1715 | # CONFIG_SECURITY is not set | 1778 | # CONFIG_SECURITY is not set |
1716 | # CONFIG_SECURITYFS is not set | 1779 | # CONFIG_SECURITYFS is not set |
1717 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1780 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1781 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1782 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1783 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1784 | CONFIG_DEFAULT_SECURITY="" | ||
1718 | CONFIG_XOR_BLOCKS=m | 1785 | CONFIG_XOR_BLOCKS=m |
1719 | CONFIG_ASYNC_CORE=m | 1786 | CONFIG_ASYNC_CORE=m |
1720 | CONFIG_ASYNC_MEMCPY=m | 1787 | CONFIG_ASYNC_MEMCPY=m |
1721 | CONFIG_ASYNC_XOR=m | 1788 | CONFIG_ASYNC_XOR=m |
1789 | CONFIG_ASYNC_PQ=m | ||
1790 | CONFIG_ASYNC_RAID6_RECOV=m | ||
1722 | CONFIG_CRYPTO=y | 1791 | CONFIG_CRYPTO=y |
1723 | 1792 | ||
1724 | # | 1793 | # |
diff --git a/arch/sparc/include/asm/elf_64.h b/arch/sparc/include/asm/elf_64.h index ff66bb88537b..e67880381b84 100644 --- a/arch/sparc/include/asm/elf_64.h +++ b/arch/sparc/include/asm/elf_64.h | |||
@@ -195,17 +195,10 @@ static inline unsigned int sparc64_elf_hwcap(void) | |||
195 | #define ELF_PLATFORM (NULL) | 195 | #define ELF_PLATFORM (NULL) |
196 | 196 | ||
197 | #define SET_PERSONALITY(ex) \ | 197 | #define SET_PERSONALITY(ex) \ |
198 | do { unsigned long new_flags = current_thread_info()->flags; \ | 198 | do { if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ |
199 | new_flags &= _TIF_32BIT; \ | 199 | set_thread_flag(TIF_32BIT); \ |
200 | if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ | ||
201 | new_flags |= _TIF_32BIT; \ | ||
202 | else \ | 200 | else \ |
203 | new_flags &= ~_TIF_32BIT; \ | 201 | clear_thread_flag(TIF_32BIT); \ |
204 | if ((current_thread_info()->flags & _TIF_32BIT) \ | ||
205 | != new_flags) \ | ||
206 | set_thread_flag(TIF_ABI_PENDING); \ | ||
207 | else \ | ||
208 | clear_thread_flag(TIF_ABI_PENDING); \ | ||
209 | /* flush_thread will update pgd cache */ \ | 202 | /* flush_thread will update pgd cache */ \ |
210 | if (personality(current->personality) != PER_LINUX32) \ | 203 | if (personality(current->personality) != PER_LINUX32) \ |
211 | set_personality(PER_LINUX | \ | 204 | set_personality(PER_LINUX | \ |
diff --git a/arch/sparc/include/asm/io_32.h b/arch/sparc/include/asm/io_32.h index 93fe21e02c86..679c7504625a 100644 --- a/arch/sparc/include/asm/io_32.h +++ b/arch/sparc/include/asm/io_32.h | |||
@@ -8,7 +8,7 @@ | |||
8 | #include <asm/page.h> /* IO address mapping routines need this */ | 8 | #include <asm/page.h> /* IO address mapping routines need this */ |
9 | #include <asm/system.h> | 9 | #include <asm/system.h> |
10 | 10 | ||
11 | #define page_to_phys(page) (((page) - mem_map) << PAGE_SHIFT) | 11 | #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) |
12 | 12 | ||
13 | static inline u32 flip_dword (u32 l) | 13 | static inline u32 flip_dword (u32 l) |
14 | { | 14 | { |
diff --git a/arch/sparc/include/asm/page_32.h b/arch/sparc/include/asm/page_32.h index f72080bdda94..156707b0f18d 100644 --- a/arch/sparc/include/asm/page_32.h +++ b/arch/sparc/include/asm/page_32.h | |||
@@ -143,7 +143,7 @@ extern unsigned long pfn_base; | |||
143 | #define phys_to_virt __va | 143 | #define phys_to_virt __va |
144 | 144 | ||
145 | #define ARCH_PFN_OFFSET (pfn_base) | 145 | #define ARCH_PFN_OFFSET (pfn_base) |
146 | #define virt_to_page(kaddr) (mem_map + ((((unsigned long)(kaddr)-PAGE_OFFSET)>>PAGE_SHIFT))) | 146 | #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) |
147 | 147 | ||
148 | #define pfn_valid(pfn) (((pfn) >= (pfn_base)) && (((pfn)-(pfn_base)) < max_mapnr)) | 148 | #define pfn_valid(pfn) (((pfn) >= (pfn_base)) && (((pfn)-(pfn_base)) < max_mapnr)) |
149 | #define virt_addr_valid(kaddr) ((((unsigned long)(kaddr)-PAGE_OFFSET)>>PAGE_SHIFT) < max_mapnr) | 149 | #define virt_addr_valid(kaddr) ((((unsigned long)(kaddr)-PAGE_OFFSET)>>PAGE_SHIFT) < max_mapnr) |
diff --git a/arch/sparc/include/asm/param.h b/arch/sparc/include/asm/param.h index 9836d9a3cb9a..0bc356bf8c50 100644 --- a/arch/sparc/include/asm/param.h +++ b/arch/sparc/include/asm/param.h | |||
@@ -1,22 +1,7 @@ | |||
1 | #ifndef _ASMSPARC_PARAM_H | 1 | #ifndef _ASMSPARC_PARAM_H |
2 | #define _ASMSPARC_PARAM_H | 2 | #define _ASMSPARC_PARAM_H |
3 | 3 | ||
4 | #ifdef __KERNEL__ | ||
5 | # define HZ CONFIG_HZ /* Internal kernel timer frequency */ | ||
6 | # define USER_HZ 100 /* .. some user interfaces are in "ticks" */ | ||
7 | # define CLOCKS_PER_SEC (USER_HZ) | ||
8 | #endif | ||
9 | |||
10 | #ifndef HZ | ||
11 | #define HZ 100 | ||
12 | #endif | ||
13 | |||
14 | #define EXEC_PAGESIZE 8192 /* Thanks for sun4's we carry baggage... */ | 4 | #define EXEC_PAGESIZE 8192 /* Thanks for sun4's we carry baggage... */ |
5 | #include <asm-generic/param.h> | ||
15 | 6 | ||
16 | #ifndef NOGROUP | 7 | #endif /* _ASMSPARC_PARAM_H */ |
17 | #define NOGROUP (-1) | ||
18 | #endif | ||
19 | |||
20 | #define MAXHOSTNAMELEN 64 /* max length of hostname */ | ||
21 | |||
22 | #endif | ||
diff --git a/arch/sparc/include/asm/thread_info_64.h b/arch/sparc/include/asm/thread_info_64.h index 7257ebb8f394..39be9f256e5a 100644 --- a/arch/sparc/include/asm/thread_info_64.h +++ b/arch/sparc/include/asm/thread_info_64.h | |||
@@ -228,12 +228,11 @@ register struct thread_info *current_thread_info_reg asm("g6"); | |||
228 | #define TIF_SECCOMP 9 /* secure computing */ | 228 | #define TIF_SECCOMP 9 /* secure computing */ |
229 | #define TIF_SYSCALL_AUDIT 10 /* syscall auditing active */ | 229 | #define TIF_SYSCALL_AUDIT 10 /* syscall auditing active */ |
230 | #define TIF_SYSCALL_TRACEPOINT 11 /* syscall tracepoint instrumentation */ | 230 | #define TIF_SYSCALL_TRACEPOINT 11 /* syscall tracepoint instrumentation */ |
231 | /* flag bit 11 is available */ | ||
232 | /* NOTE: Thread flags >= 12 should be ones we have no interest | 231 | /* NOTE: Thread flags >= 12 should be ones we have no interest |
233 | * in using in assembly, else we can't use the mask as | 232 | * in using in assembly, else we can't use the mask as |
234 | * an immediate value in instructions such as andcc. | 233 | * an immediate value in instructions such as andcc. |
235 | */ | 234 | */ |
236 | #define TIF_ABI_PENDING 12 | 235 | /* flag bit 12 is available */ |
237 | #define TIF_MEMDIE 13 | 236 | #define TIF_MEMDIE 13 |
238 | #define TIF_POLLING_NRFLAG 14 | 237 | #define TIF_POLLING_NRFLAG 14 |
239 | #define TIF_FREEZE 15 /* is freezing for suspend */ | 238 | #define TIF_FREEZE 15 /* is freezing for suspend */ |
@@ -248,7 +247,6 @@ register struct thread_info *current_thread_info_reg asm("g6"); | |||
248 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) | 247 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) |
249 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) | 248 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) |
250 | #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) | 249 | #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) |
251 | #define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING) | ||
252 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) | 250 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) |
253 | #define _TIF_FREEZE (1<<TIF_FREEZE) | 251 | #define _TIF_FREEZE (1<<TIF_FREEZE) |
254 | 252 | ||
diff --git a/arch/sparc/include/asm/timex_32.h b/arch/sparc/include/asm/timex_32.h index b6ccdb0d6f7d..a254750e4c03 100644 --- a/arch/sparc/include/asm/timex_32.h +++ b/arch/sparc/include/asm/timex_32.h | |||
@@ -12,4 +12,5 @@ | |||
12 | typedef unsigned long cycles_t; | 12 | typedef unsigned long cycles_t; |
13 | #define get_cycles() (0) | 13 | #define get_cycles() (0) |
14 | 14 | ||
15 | extern u32 (*do_arch_gettimeoffset)(void); | ||
15 | #endif | 16 | #endif |
diff --git a/arch/sparc/include/asm/topology_64.h b/arch/sparc/include/asm/topology_64.h index 600a79035fa1..1c79f32734a0 100644 --- a/arch/sparc/include/asm/topology_64.h +++ b/arch/sparc/include/asm/topology_64.h | |||
@@ -12,7 +12,9 @@ static inline int cpu_to_node(int cpu) | |||
12 | 12 | ||
13 | #define parent_node(node) (node) | 13 | #define parent_node(node) (node) |
14 | 14 | ||
15 | #define cpumask_of_node(node) (&numa_cpumask_lookup_table[node]) | 15 | #define cpumask_of_node(node) ((node) == -1 ? \ |
16 | cpu_all_mask : \ | ||
17 | &numa_cpumask_lookup_table[node]) | ||
16 | 18 | ||
17 | struct pci_bus; | 19 | struct pci_bus; |
18 | #ifdef CONFIG_PCI | 20 | #ifdef CONFIG_PCI |
diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h index 489d2ba92bcb..25f1d10155e8 100644 --- a/arch/sparc/include/asm/uaccess_32.h +++ b/arch/sparc/include/asm/uaccess_32.h | |||
@@ -274,7 +274,7 @@ static inline unsigned long copy_from_user(void *to, const void __user *from, un | |||
274 | 274 | ||
275 | if (unlikely(sz != -1 && sz < n)) { | 275 | if (unlikely(sz != -1 && sz < n)) { |
276 | copy_from_user_overflow(); | 276 | copy_from_user_overflow(); |
277 | return -EFAULT; | 277 | return n; |
278 | } | 278 | } |
279 | 279 | ||
280 | if (n && __access_ok((unsigned long) from, n)) | 280 | if (n && __access_ok((unsigned long) from, n)) |
diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h index dbc141660994..2406788bfe5f 100644 --- a/arch/sparc/include/asm/uaccess_64.h +++ b/arch/sparc/include/asm/uaccess_64.h | |||
@@ -221,8 +221,8 @@ extern unsigned long copy_from_user_fixup(void *to, const void __user *from, | |||
221 | static inline unsigned long __must_check | 221 | static inline unsigned long __must_check |
222 | copy_from_user(void *to, const void __user *from, unsigned long size) | 222 | copy_from_user(void *to, const void __user *from, unsigned long size) |
223 | { | 223 | { |
224 | unsigned long ret = (unsigned long) -EFAULT; | ||
225 | int sz = __compiletime_object_size(to); | 224 | int sz = __compiletime_object_size(to); |
225 | unsigned long ret = size; | ||
226 | 226 | ||
227 | if (likely(sz == -1 || sz >= size)) { | 227 | if (likely(sz == -1 || sz >= size)) { |
228 | ret = ___copy_from_user(to, from, size); | 228 | ret = ___copy_from_user(to, from, size); |
diff --git a/arch/sparc/kernel/central.c b/arch/sparc/kernel/central.c index f3b5466c389c..4589ca33220f 100644 --- a/arch/sparc/kernel/central.c +++ b/arch/sparc/kernel/central.c | |||
@@ -99,7 +99,7 @@ static int __devinit clock_board_probe(struct of_device *op, | |||
99 | 99 | ||
100 | p->leds_resource.start = (unsigned long) | 100 | p->leds_resource.start = (unsigned long) |
101 | (p->clock_regs + CLOCK_CTRL); | 101 | (p->clock_regs + CLOCK_CTRL); |
102 | p->leds_resource.end = p->leds_resource.end; | 102 | p->leds_resource.end = p->leds_resource.start; |
103 | p->leds_resource.name = "leds"; | 103 | p->leds_resource.name = "leds"; |
104 | 104 | ||
105 | p->leds_pdev.name = "sunfire-clockboard-leds"; | 105 | p->leds_pdev.name = "sunfire-clockboard-leds"; |
@@ -194,7 +194,7 @@ static int __devinit fhc_probe(struct of_device *op, | |||
194 | if (!p->central) { | 194 | if (!p->central) { |
195 | p->leds_resource.start = (unsigned long) | 195 | p->leds_resource.start = (unsigned long) |
196 | (p->pregs + FHC_PREGS_CTRL); | 196 | (p->pregs + FHC_PREGS_CTRL); |
197 | p->leds_resource.end = p->leds_resource.end; | 197 | p->leds_resource.end = p->leds_resource.start; |
198 | p->leds_resource.name = "leds"; | 198 | p->leds_resource.name = "leds"; |
199 | 199 | ||
200 | p->leds_pdev.name = "sunfire-fhc-leds"; | 200 | p->leds_pdev.name = "sunfire-fhc-leds"; |
diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c index 8d6882bb480a..e1cbdb94d97b 100644 --- a/arch/sparc/kernel/irq_64.c +++ b/arch/sparc/kernel/irq_64.c | |||
@@ -250,12 +250,12 @@ struct irq_handler_data { | |||
250 | }; | 250 | }; |
251 | 251 | ||
252 | #ifdef CONFIG_SMP | 252 | #ifdef CONFIG_SMP |
253 | static int irq_choose_cpu(unsigned int virt_irq) | 253 | static int irq_choose_cpu(unsigned int virt_irq, const struct cpumask *affinity) |
254 | { | 254 | { |
255 | cpumask_t mask; | 255 | cpumask_t mask; |
256 | int cpuid; | 256 | int cpuid; |
257 | 257 | ||
258 | cpumask_copy(&mask, irq_desc[virt_irq].affinity); | 258 | cpumask_copy(&mask, affinity); |
259 | if (cpus_equal(mask, cpu_online_map)) { | 259 | if (cpus_equal(mask, cpu_online_map)) { |
260 | cpuid = map_to_cpu(virt_irq); | 260 | cpuid = map_to_cpu(virt_irq); |
261 | } else { | 261 | } else { |
@@ -268,10 +268,8 @@ static int irq_choose_cpu(unsigned int virt_irq) | |||
268 | return cpuid; | 268 | return cpuid; |
269 | } | 269 | } |
270 | #else | 270 | #else |
271 | static int irq_choose_cpu(unsigned int virt_irq) | 271 | #define irq_choose_cpu(virt_irq, affinity) \ |
272 | { | 272 | real_hard_smp_processor_id() |
273 | return real_hard_smp_processor_id(); | ||
274 | } | ||
275 | #endif | 273 | #endif |
276 | 274 | ||
277 | static void sun4u_irq_enable(unsigned int virt_irq) | 275 | static void sun4u_irq_enable(unsigned int virt_irq) |
@@ -282,7 +280,8 @@ static void sun4u_irq_enable(unsigned int virt_irq) | |||
282 | unsigned long cpuid, imap, val; | 280 | unsigned long cpuid, imap, val; |
283 | unsigned int tid; | 281 | unsigned int tid; |
284 | 282 | ||
285 | cpuid = irq_choose_cpu(virt_irq); | 283 | cpuid = irq_choose_cpu(virt_irq, |
284 | irq_desc[virt_irq].affinity); | ||
286 | imap = data->imap; | 285 | imap = data->imap; |
287 | 286 | ||
288 | tid = sun4u_compute_tid(imap, cpuid); | 287 | tid = sun4u_compute_tid(imap, cpuid); |
@@ -299,7 +298,24 @@ static void sun4u_irq_enable(unsigned int virt_irq) | |||
299 | static int sun4u_set_affinity(unsigned int virt_irq, | 298 | static int sun4u_set_affinity(unsigned int virt_irq, |
300 | const struct cpumask *mask) | 299 | const struct cpumask *mask) |
301 | { | 300 | { |
302 | sun4u_irq_enable(virt_irq); | 301 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); |
302 | |||
303 | if (likely(data)) { | ||
304 | unsigned long cpuid, imap, val; | ||
305 | unsigned int tid; | ||
306 | |||
307 | cpuid = irq_choose_cpu(virt_irq, mask); | ||
308 | imap = data->imap; | ||
309 | |||
310 | tid = sun4u_compute_tid(imap, cpuid); | ||
311 | |||
312 | val = upa_readq(imap); | ||
313 | val &= ~(IMAP_TID_UPA | IMAP_TID_JBUS | | ||
314 | IMAP_AID_SAFARI | IMAP_NID_SAFARI); | ||
315 | val |= tid | IMAP_VALID; | ||
316 | upa_writeq(val, imap); | ||
317 | upa_writeq(ICLR_IDLE, data->iclr); | ||
318 | } | ||
303 | 319 | ||
304 | return 0; | 320 | return 0; |
305 | } | 321 | } |
@@ -340,7 +356,8 @@ static void sun4u_irq_eoi(unsigned int virt_irq) | |||
340 | static void sun4v_irq_enable(unsigned int virt_irq) | 356 | static void sun4v_irq_enable(unsigned int virt_irq) |
341 | { | 357 | { |
342 | unsigned int ino = virt_irq_table[virt_irq].dev_ino; | 358 | unsigned int ino = virt_irq_table[virt_irq].dev_ino; |
343 | unsigned long cpuid = irq_choose_cpu(virt_irq); | 359 | unsigned long cpuid = irq_choose_cpu(virt_irq, |
360 | irq_desc[virt_irq].affinity); | ||
344 | int err; | 361 | int err; |
345 | 362 | ||
346 | err = sun4v_intr_settarget(ino, cpuid); | 363 | err = sun4v_intr_settarget(ino, cpuid); |
@@ -361,7 +378,7 @@ static int sun4v_set_affinity(unsigned int virt_irq, | |||
361 | const struct cpumask *mask) | 378 | const struct cpumask *mask) |
362 | { | 379 | { |
363 | unsigned int ino = virt_irq_table[virt_irq].dev_ino; | 380 | unsigned int ino = virt_irq_table[virt_irq].dev_ino; |
364 | unsigned long cpuid = irq_choose_cpu(virt_irq); | 381 | unsigned long cpuid = irq_choose_cpu(virt_irq, mask); |
365 | int err; | 382 | int err; |
366 | 383 | ||
367 | err = sun4v_intr_settarget(ino, cpuid); | 384 | err = sun4v_intr_settarget(ino, cpuid); |
@@ -403,7 +420,7 @@ static void sun4v_virq_enable(unsigned int virt_irq) | |||
403 | unsigned long cpuid, dev_handle, dev_ino; | 420 | unsigned long cpuid, dev_handle, dev_ino; |
404 | int err; | 421 | int err; |
405 | 422 | ||
406 | cpuid = irq_choose_cpu(virt_irq); | 423 | cpuid = irq_choose_cpu(virt_irq, irq_desc[virt_irq].affinity); |
407 | 424 | ||
408 | dev_handle = virt_irq_table[virt_irq].dev_handle; | 425 | dev_handle = virt_irq_table[virt_irq].dev_handle; |
409 | dev_ino = virt_irq_table[virt_irq].dev_ino; | 426 | dev_ino = virt_irq_table[virt_irq].dev_ino; |
@@ -433,7 +450,7 @@ static int sun4v_virt_set_affinity(unsigned int virt_irq, | |||
433 | unsigned long cpuid, dev_handle, dev_ino; | 450 | unsigned long cpuid, dev_handle, dev_ino; |
434 | int err; | 451 | int err; |
435 | 452 | ||
436 | cpuid = irq_choose_cpu(virt_irq); | 453 | cpuid = irq_choose_cpu(virt_irq, mask); |
437 | 454 | ||
438 | dev_handle = virt_irq_table[virt_irq].dev_handle; | 455 | dev_handle = virt_irq_table[virt_irq].dev_handle; |
439 | dev_ino = virt_irq_table[virt_irq].dev_ino; | 456 | dev_ino = virt_irq_table[virt_irq].dev_ino; |
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c index 85e7037429b9..4e2724ec2bb6 100644 --- a/arch/sparc/kernel/pcic.c +++ b/arch/sparc/kernel/pcic.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <asm/oplib.h> | 30 | #include <asm/oplib.h> |
31 | #include <asm/prom.h> | 31 | #include <asm/prom.h> |
32 | #include <asm/pcic.h> | 32 | #include <asm/pcic.h> |
33 | #include <asm/timex.h> | ||
33 | #include <asm/timer.h> | 34 | #include <asm/timer.h> |
34 | #include <asm/uaccess.h> | 35 | #include <asm/uaccess.h> |
35 | #include <asm/irq_regs.h> | 36 | #include <asm/irq_regs.h> |
@@ -163,8 +164,6 @@ void __iomem *pcic_regs; | |||
163 | volatile int pcic_speculative; | 164 | volatile int pcic_speculative; |
164 | volatile int pcic_trapped; | 165 | volatile int pcic_trapped; |
165 | 166 | ||
166 | static void pci_do_gettimeofday(struct timeval *tv); | ||
167 | static int pci_do_settimeofday(struct timespec *tv); | ||
168 | 167 | ||
169 | #define CONFIG_CMD(bus, device_fn, where) (0x80000000 | (((unsigned int)bus) << 16) | (((unsigned int)device_fn) << 8) | (where & ~3)) | 168 | #define CONFIG_CMD(bus, device_fn, where) (0x80000000 | (((unsigned int)bus) << 16) | (((unsigned int)device_fn) << 8) | (where & ~3)) |
170 | 169 | ||
@@ -716,19 +715,27 @@ static irqreturn_t pcic_timer_handler (int irq, void *h) | |||
716 | #define USECS_PER_JIFFY 10000 /* We have 100HZ "standard" timer for sparc */ | 715 | #define USECS_PER_JIFFY 10000 /* We have 100HZ "standard" timer for sparc */ |
717 | #define TICK_TIMER_LIMIT ((100*1000000/4)/100) | 716 | #define TICK_TIMER_LIMIT ((100*1000000/4)/100) |
718 | 717 | ||
718 | u32 pci_gettimeoffset(void) | ||
719 | { | ||
720 | /* | ||
721 | * We divide all by 100 | ||
722 | * to have microsecond resolution and to avoid overflow | ||
723 | */ | ||
724 | unsigned long count = | ||
725 | readl(pcic0.pcic_regs+PCI_SYS_COUNTER) & ~PCI_SYS_COUNTER_OVERFLOW; | ||
726 | count = ((count/100)*USECS_PER_JIFFY) / (TICK_TIMER_LIMIT/100); | ||
727 | return count * 1000; | ||
728 | } | ||
729 | |||
730 | |||
719 | void __init pci_time_init(void) | 731 | void __init pci_time_init(void) |
720 | { | 732 | { |
721 | struct linux_pcic *pcic = &pcic0; | 733 | struct linux_pcic *pcic = &pcic0; |
722 | unsigned long v; | 734 | unsigned long v; |
723 | int timer_irq, irq; | 735 | int timer_irq, irq; |
724 | 736 | ||
725 | /* A hack until do_gettimeofday prototype is moved to arch specific headers | 737 | do_arch_gettimeoffset = pci_gettimeoffset; |
726 | and btfixupped. Patch do_gettimeofday with ba pci_do_gettimeofday; nop */ | 738 | |
727 | ((unsigned int *)do_gettimeofday)[0] = | ||
728 | 0x10800000 | ((((unsigned long)pci_do_gettimeofday - | ||
729 | (unsigned long)do_gettimeofday) >> 2) & 0x003fffff); | ||
730 | ((unsigned int *)do_gettimeofday)[1] = 0x01000000; | ||
731 | BTFIXUPSET_CALL(bus_do_settimeofday, pci_do_settimeofday, BTFIXUPCALL_NORM); | ||
732 | btfixup(); | 739 | btfixup(); |
733 | 740 | ||
734 | writel (TICK_TIMER_LIMIT, pcic->pcic_regs+PCI_SYS_LIMIT); | 741 | writel (TICK_TIMER_LIMIT, pcic->pcic_regs+PCI_SYS_LIMIT); |
@@ -746,84 +753,6 @@ void __init pci_time_init(void) | |||
746 | local_irq_enable(); | 753 | local_irq_enable(); |
747 | } | 754 | } |
748 | 755 | ||
749 | static inline unsigned long do_gettimeoffset(void) | ||
750 | { | ||
751 | /* | ||
752 | * We divide all by 100 | ||
753 | * to have microsecond resolution and to avoid overflow | ||
754 | */ | ||
755 | unsigned long count = | ||
756 | readl(pcic0.pcic_regs+PCI_SYS_COUNTER) & ~PCI_SYS_COUNTER_OVERFLOW; | ||
757 | count = ((count/100)*USECS_PER_JIFFY) / (TICK_TIMER_LIMIT/100); | ||
758 | return count; | ||
759 | } | ||
760 | |||
761 | static void pci_do_gettimeofday(struct timeval *tv) | ||
762 | { | ||
763 | unsigned long flags; | ||
764 | unsigned long seq; | ||
765 | unsigned long usec, sec; | ||
766 | unsigned long max_ntp_tick = tick_usec - tickadj; | ||
767 | |||
768 | do { | ||
769 | seq = read_seqbegin_irqsave(&xtime_lock, flags); | ||
770 | usec = do_gettimeoffset(); | ||
771 | |||
772 | /* | ||
773 | * If time_adjust is negative then NTP is slowing the clock | ||
774 | * so make sure not to go into next possible interval. | ||
775 | * Better to lose some accuracy than have time go backwards.. | ||
776 | */ | ||
777 | if (unlikely(time_adjust < 0)) | ||
778 | usec = min(usec, max_ntp_tick); | ||
779 | |||
780 | sec = xtime.tv_sec; | ||
781 | usec += (xtime.tv_nsec / 1000); | ||
782 | } while (read_seqretry_irqrestore(&xtime_lock, seq, flags)); | ||
783 | |||
784 | while (usec >= 1000000) { | ||
785 | usec -= 1000000; | ||
786 | sec++; | ||
787 | } | ||
788 | |||
789 | tv->tv_sec = sec; | ||
790 | tv->tv_usec = usec; | ||
791 | } | ||
792 | |||
793 | static int pci_do_settimeofday(struct timespec *tv) | ||
794 | { | ||
795 | if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) | ||
796 | return -EINVAL; | ||
797 | |||
798 | /* | ||
799 | * This is revolting. We need to set "xtime" correctly. However, the | ||
800 | * value in this location is the value at the most recent update of | ||
801 | * wall time. Discover what correction gettimeofday() would have | ||
802 | * made, and then undo it! | ||
803 | */ | ||
804 | tv->tv_nsec -= 1000 * do_gettimeoffset(); | ||
805 | while (tv->tv_nsec < 0) { | ||
806 | tv->tv_nsec += NSEC_PER_SEC; | ||
807 | tv->tv_sec--; | ||
808 | } | ||
809 | |||
810 | wall_to_monotonic.tv_sec += xtime.tv_sec - tv->tv_sec; | ||
811 | wall_to_monotonic.tv_nsec += xtime.tv_nsec - tv->tv_nsec; | ||
812 | |||
813 | if (wall_to_monotonic.tv_nsec > NSEC_PER_SEC) { | ||
814 | wall_to_monotonic.tv_nsec -= NSEC_PER_SEC; | ||
815 | wall_to_monotonic.tv_sec++; | ||
816 | } | ||
817 | if (wall_to_monotonic.tv_nsec < 0) { | ||
818 | wall_to_monotonic.tv_nsec += NSEC_PER_SEC; | ||
819 | wall_to_monotonic.tv_sec--; | ||
820 | } | ||
821 | |||
822 | xtime.tv_sec = tv->tv_sec; | ||
823 | xtime.tv_nsec = tv->tv_nsec; | ||
824 | ntp_clear(); | ||
825 | return 0; | ||
826 | } | ||
827 | 756 | ||
828 | #if 0 | 757 | #if 0 |
829 | static void watchdog_reset() { | 758 | static void watchdog_reset() { |
diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c index 198fb4e79ba2..e856456ec02f 100644 --- a/arch/sparc/kernel/perf_event.c +++ b/arch/sparc/kernel/perf_event.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* Performance event support for sparc64. | 1 | /* Performance event support for sparc64. |
2 | * | 2 | * |
3 | * Copyright (C) 2009 David S. Miller <davem@davemloft.net> | 3 | * Copyright (C) 2009, 2010 David S. Miller <davem@davemloft.net> |
4 | * | 4 | * |
5 | * This code is based almost entirely upon the x86 perf event | 5 | * This code is based almost entirely upon the x86 perf event |
6 | * code, which is: | 6 | * code, which is: |
@@ -18,11 +18,15 @@ | |||
18 | #include <linux/kdebug.h> | 18 | #include <linux/kdebug.h> |
19 | #include <linux/mutex.h> | 19 | #include <linux/mutex.h> |
20 | 20 | ||
21 | #include <asm/stacktrace.h> | ||
21 | #include <asm/cpudata.h> | 22 | #include <asm/cpudata.h> |
23 | #include <asm/uaccess.h> | ||
22 | #include <asm/atomic.h> | 24 | #include <asm/atomic.h> |
23 | #include <asm/nmi.h> | 25 | #include <asm/nmi.h> |
24 | #include <asm/pcr.h> | 26 | #include <asm/pcr.h> |
25 | 27 | ||
28 | #include "kstack.h" | ||
29 | |||
26 | /* Sparc64 chips have two performance counters, 32-bits each, with | 30 | /* Sparc64 chips have two performance counters, 32-bits each, with |
27 | * overflow interrupts generated on transition from 0xffffffff to 0. | 31 | * overflow interrupts generated on transition from 0xffffffff to 0. |
28 | * The counters are accessed in one go using a 64-bit register. | 32 | * The counters are accessed in one go using a 64-bit register. |
@@ -51,16 +55,49 @@ | |||
51 | 55 | ||
52 | #define PIC_UPPER_INDEX 0 | 56 | #define PIC_UPPER_INDEX 0 |
53 | #define PIC_LOWER_INDEX 1 | 57 | #define PIC_LOWER_INDEX 1 |
58 | #define PIC_NO_INDEX -1 | ||
54 | 59 | ||
55 | struct cpu_hw_events { | 60 | struct cpu_hw_events { |
56 | struct perf_event *events[MAX_HWEVENTS]; | 61 | /* Number of events currently scheduled onto this cpu. |
57 | unsigned long used_mask[BITS_TO_LONGS(MAX_HWEVENTS)]; | 62 | * This tells how many entries in the arrays below |
58 | unsigned long active_mask[BITS_TO_LONGS(MAX_HWEVENTS)]; | 63 | * are valid. |
64 | */ | ||
65 | int n_events; | ||
66 | |||
67 | /* Number of new events added since the last hw_perf_disable(). | ||
68 | * This works because the perf event layer always adds new | ||
69 | * events inside of a perf_{disable,enable}() sequence. | ||
70 | */ | ||
71 | int n_added; | ||
72 | |||
73 | /* Array of events current scheduled on this cpu. */ | ||
74 | struct perf_event *event[MAX_HWEVENTS]; | ||
75 | |||
76 | /* Array of encoded longs, specifying the %pcr register | ||
77 | * encoding and the mask of PIC counters this even can | ||
78 | * be scheduled on. See perf_event_encode() et al. | ||
79 | */ | ||
80 | unsigned long events[MAX_HWEVENTS]; | ||
81 | |||
82 | /* The current counter index assigned to an event. When the | ||
83 | * event hasn't been programmed into the cpu yet, this will | ||
84 | * hold PIC_NO_INDEX. The event->hw.idx value tells us where | ||
85 | * we ought to schedule the event. | ||
86 | */ | ||
87 | int current_idx[MAX_HWEVENTS]; | ||
88 | |||
89 | /* Software copy of %pcr register on this cpu. */ | ||
59 | u64 pcr; | 90 | u64 pcr; |
91 | |||
92 | /* Enabled/disable state. */ | ||
60 | int enabled; | 93 | int enabled; |
61 | }; | 94 | }; |
62 | DEFINE_PER_CPU(struct cpu_hw_events, cpu_hw_events) = { .enabled = 1, }; | 95 | DEFINE_PER_CPU(struct cpu_hw_events, cpu_hw_events) = { .enabled = 1, }; |
63 | 96 | ||
97 | /* An event map describes the characteristics of a performance | ||
98 | * counter event. In particular it gives the encoding as well as | ||
99 | * a mask telling which counters the event can be measured on. | ||
100 | */ | ||
64 | struct perf_event_map { | 101 | struct perf_event_map { |
65 | u16 encoding; | 102 | u16 encoding; |
66 | u8 pic_mask; | 103 | u8 pic_mask; |
@@ -69,15 +106,20 @@ struct perf_event_map { | |||
69 | #define PIC_LOWER 0x02 | 106 | #define PIC_LOWER 0x02 |
70 | }; | 107 | }; |
71 | 108 | ||
109 | /* Encode a perf_event_map entry into a long. */ | ||
72 | static unsigned long perf_event_encode(const struct perf_event_map *pmap) | 110 | static unsigned long perf_event_encode(const struct perf_event_map *pmap) |
73 | { | 111 | { |
74 | return ((unsigned long) pmap->encoding << 16) | pmap->pic_mask; | 112 | return ((unsigned long) pmap->encoding << 16) | pmap->pic_mask; |
75 | } | 113 | } |
76 | 114 | ||
77 | static void perf_event_decode(unsigned long val, u16 *enc, u8 *msk) | 115 | static u8 perf_event_get_msk(unsigned long val) |
78 | { | 116 | { |
79 | *msk = val & 0xff; | 117 | return val & 0xff; |
80 | *enc = val >> 16; | 118 | } |
119 | |||
120 | static u64 perf_event_get_enc(unsigned long val) | ||
121 | { | ||
122 | return val >> 16; | ||
81 | } | 123 | } |
82 | 124 | ||
83 | #define C(x) PERF_COUNT_HW_CACHE_##x | 125 | #define C(x) PERF_COUNT_HW_CACHE_##x |
@@ -491,53 +533,6 @@ static inline void sparc_pmu_disable_event(struct cpu_hw_events *cpuc, struct hw | |||
491 | pcr_ops->write(cpuc->pcr); | 533 | pcr_ops->write(cpuc->pcr); |
492 | } | 534 | } |
493 | 535 | ||
494 | void hw_perf_enable(void) | ||
495 | { | ||
496 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | ||
497 | u64 val; | ||
498 | int i; | ||
499 | |||
500 | if (cpuc->enabled) | ||
501 | return; | ||
502 | |||
503 | cpuc->enabled = 1; | ||
504 | barrier(); | ||
505 | |||
506 | val = cpuc->pcr; | ||
507 | |||
508 | for (i = 0; i < MAX_HWEVENTS; i++) { | ||
509 | struct perf_event *cp = cpuc->events[i]; | ||
510 | struct hw_perf_event *hwc; | ||
511 | |||
512 | if (!cp) | ||
513 | continue; | ||
514 | hwc = &cp->hw; | ||
515 | val |= hwc->config_base; | ||
516 | } | ||
517 | |||
518 | cpuc->pcr = val; | ||
519 | |||
520 | pcr_ops->write(cpuc->pcr); | ||
521 | } | ||
522 | |||
523 | void hw_perf_disable(void) | ||
524 | { | ||
525 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | ||
526 | u64 val; | ||
527 | |||
528 | if (!cpuc->enabled) | ||
529 | return; | ||
530 | |||
531 | cpuc->enabled = 0; | ||
532 | |||
533 | val = cpuc->pcr; | ||
534 | val &= ~(PCR_UTRACE | PCR_STRACE | | ||
535 | sparc_pmu->hv_bit | sparc_pmu->irq_bit); | ||
536 | cpuc->pcr = val; | ||
537 | |||
538 | pcr_ops->write(cpuc->pcr); | ||
539 | } | ||
540 | |||
541 | static u32 read_pmc(int idx) | 536 | static u32 read_pmc(int idx) |
542 | { | 537 | { |
543 | u64 val; | 538 | u64 val; |
@@ -566,6 +561,30 @@ static void write_pmc(int idx, u64 val) | |||
566 | write_pic(pic); | 561 | write_pic(pic); |
567 | } | 562 | } |
568 | 563 | ||
564 | static u64 sparc_perf_event_update(struct perf_event *event, | ||
565 | struct hw_perf_event *hwc, int idx) | ||
566 | { | ||
567 | int shift = 64 - 32; | ||
568 | u64 prev_raw_count, new_raw_count; | ||
569 | s64 delta; | ||
570 | |||
571 | again: | ||
572 | prev_raw_count = atomic64_read(&hwc->prev_count); | ||
573 | new_raw_count = read_pmc(idx); | ||
574 | |||
575 | if (atomic64_cmpxchg(&hwc->prev_count, prev_raw_count, | ||
576 | new_raw_count) != prev_raw_count) | ||
577 | goto again; | ||
578 | |||
579 | delta = (new_raw_count << shift) - (prev_raw_count << shift); | ||
580 | delta >>= shift; | ||
581 | |||
582 | atomic64_add(delta, &event->count); | ||
583 | atomic64_sub(delta, &hwc->period_left); | ||
584 | |||
585 | return new_raw_count; | ||
586 | } | ||
587 | |||
569 | static int sparc_perf_event_set_period(struct perf_event *event, | 588 | static int sparc_perf_event_set_period(struct perf_event *event, |
570 | struct hw_perf_event *hwc, int idx) | 589 | struct hw_perf_event *hwc, int idx) |
571 | { | 590 | { |
@@ -598,81 +617,166 @@ static int sparc_perf_event_set_period(struct perf_event *event, | |||
598 | return ret; | 617 | return ret; |
599 | } | 618 | } |
600 | 619 | ||
601 | static int sparc_pmu_enable(struct perf_event *event) | 620 | /* If performance event entries have been added, move existing |
621 | * events around (if necessary) and then assign new entries to | ||
622 | * counters. | ||
623 | */ | ||
624 | static u64 maybe_change_configuration(struct cpu_hw_events *cpuc, u64 pcr) | ||
602 | { | 625 | { |
603 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | 626 | int i; |
604 | struct hw_perf_event *hwc = &event->hw; | ||
605 | int idx = hwc->idx; | ||
606 | 627 | ||
607 | if (test_and_set_bit(idx, cpuc->used_mask)) | 628 | if (!cpuc->n_added) |
608 | return -EAGAIN; | 629 | goto out; |
609 | 630 | ||
610 | sparc_pmu_disable_event(cpuc, hwc, idx); | 631 | /* Read in the counters which are moving. */ |
632 | for (i = 0; i < cpuc->n_events; i++) { | ||
633 | struct perf_event *cp = cpuc->event[i]; | ||
611 | 634 | ||
612 | cpuc->events[idx] = event; | 635 | if (cpuc->current_idx[i] != PIC_NO_INDEX && |
613 | set_bit(idx, cpuc->active_mask); | 636 | cpuc->current_idx[i] != cp->hw.idx) { |
637 | sparc_perf_event_update(cp, &cp->hw, | ||
638 | cpuc->current_idx[i]); | ||
639 | cpuc->current_idx[i] = PIC_NO_INDEX; | ||
640 | } | ||
641 | } | ||
614 | 642 | ||
615 | sparc_perf_event_set_period(event, hwc, idx); | 643 | /* Assign to counters all unassigned events. */ |
616 | sparc_pmu_enable_event(cpuc, hwc, idx); | 644 | for (i = 0; i < cpuc->n_events; i++) { |
617 | perf_event_update_userpage(event); | 645 | struct perf_event *cp = cpuc->event[i]; |
618 | return 0; | 646 | struct hw_perf_event *hwc = &cp->hw; |
647 | int idx = hwc->idx; | ||
648 | u64 enc; | ||
649 | |||
650 | if (cpuc->current_idx[i] != PIC_NO_INDEX) | ||
651 | continue; | ||
652 | |||
653 | sparc_perf_event_set_period(cp, hwc, idx); | ||
654 | cpuc->current_idx[i] = idx; | ||
655 | |||
656 | enc = perf_event_get_enc(cpuc->events[i]); | ||
657 | pcr |= event_encoding(enc, idx); | ||
658 | } | ||
659 | out: | ||
660 | return pcr; | ||
619 | } | 661 | } |
620 | 662 | ||
621 | static u64 sparc_perf_event_update(struct perf_event *event, | 663 | void hw_perf_enable(void) |
622 | struct hw_perf_event *hwc, int idx) | ||
623 | { | 664 | { |
624 | int shift = 64 - 32; | 665 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); |
625 | u64 prev_raw_count, new_raw_count; | 666 | u64 pcr; |
626 | s64 delta; | ||
627 | 667 | ||
628 | again: | 668 | if (cpuc->enabled) |
629 | prev_raw_count = atomic64_read(&hwc->prev_count); | 669 | return; |
630 | new_raw_count = read_pmc(idx); | ||
631 | 670 | ||
632 | if (atomic64_cmpxchg(&hwc->prev_count, prev_raw_count, | 671 | cpuc->enabled = 1; |
633 | new_raw_count) != prev_raw_count) | 672 | barrier(); |
634 | goto again; | ||
635 | 673 | ||
636 | delta = (new_raw_count << shift) - (prev_raw_count << shift); | 674 | pcr = cpuc->pcr; |
637 | delta >>= shift; | 675 | if (!cpuc->n_events) { |
676 | pcr = 0; | ||
677 | } else { | ||
678 | pcr = maybe_change_configuration(cpuc, pcr); | ||
638 | 679 | ||
639 | atomic64_add(delta, &event->count); | 680 | /* We require that all of the events have the same |
640 | atomic64_sub(delta, &hwc->period_left); | 681 | * configuration, so just fetch the settings from the |
682 | * first entry. | ||
683 | */ | ||
684 | cpuc->pcr = pcr | cpuc->event[0]->hw.config_base; | ||
685 | } | ||
641 | 686 | ||
642 | return new_raw_count; | 687 | pcr_ops->write(cpuc->pcr); |
688 | } | ||
689 | |||
690 | void hw_perf_disable(void) | ||
691 | { | ||
692 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | ||
693 | u64 val; | ||
694 | |||
695 | if (!cpuc->enabled) | ||
696 | return; | ||
697 | |||
698 | cpuc->enabled = 0; | ||
699 | cpuc->n_added = 0; | ||
700 | |||
701 | val = cpuc->pcr; | ||
702 | val &= ~(PCR_UTRACE | PCR_STRACE | | ||
703 | sparc_pmu->hv_bit | sparc_pmu->irq_bit); | ||
704 | cpuc->pcr = val; | ||
705 | |||
706 | pcr_ops->write(cpuc->pcr); | ||
643 | } | 707 | } |
644 | 708 | ||
645 | static void sparc_pmu_disable(struct perf_event *event) | 709 | static void sparc_pmu_disable(struct perf_event *event) |
646 | { | 710 | { |
647 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | 711 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); |
648 | struct hw_perf_event *hwc = &event->hw; | 712 | struct hw_perf_event *hwc = &event->hw; |
649 | int idx = hwc->idx; | 713 | unsigned long flags; |
714 | int i; | ||
650 | 715 | ||
651 | clear_bit(idx, cpuc->active_mask); | 716 | local_irq_save(flags); |
652 | sparc_pmu_disable_event(cpuc, hwc, idx); | 717 | perf_disable(); |
718 | |||
719 | for (i = 0; i < cpuc->n_events; i++) { | ||
720 | if (event == cpuc->event[i]) { | ||
721 | int idx = cpuc->current_idx[i]; | ||
722 | |||
723 | /* Shift remaining entries down into | ||
724 | * the existing slot. | ||
725 | */ | ||
726 | while (++i < cpuc->n_events) { | ||
727 | cpuc->event[i - 1] = cpuc->event[i]; | ||
728 | cpuc->events[i - 1] = cpuc->events[i]; | ||
729 | cpuc->current_idx[i - 1] = | ||
730 | cpuc->current_idx[i]; | ||
731 | } | ||
732 | |||
733 | /* Absorb the final count and turn off the | ||
734 | * event. | ||
735 | */ | ||
736 | sparc_pmu_disable_event(cpuc, hwc, idx); | ||
737 | barrier(); | ||
738 | sparc_perf_event_update(event, hwc, idx); | ||
653 | 739 | ||
654 | barrier(); | 740 | perf_event_update_userpage(event); |
655 | 741 | ||
656 | sparc_perf_event_update(event, hwc, idx); | 742 | cpuc->n_events--; |
657 | cpuc->events[idx] = NULL; | 743 | break; |
658 | clear_bit(idx, cpuc->used_mask); | 744 | } |
745 | } | ||
659 | 746 | ||
660 | perf_event_update_userpage(event); | 747 | perf_enable(); |
748 | local_irq_restore(flags); | ||
749 | } | ||
750 | |||
751 | static int active_event_index(struct cpu_hw_events *cpuc, | ||
752 | struct perf_event *event) | ||
753 | { | ||
754 | int i; | ||
755 | |||
756 | for (i = 0; i < cpuc->n_events; i++) { | ||
757 | if (cpuc->event[i] == event) | ||
758 | break; | ||
759 | } | ||
760 | BUG_ON(i == cpuc->n_events); | ||
761 | return cpuc->current_idx[i]; | ||
661 | } | 762 | } |
662 | 763 | ||
663 | static void sparc_pmu_read(struct perf_event *event) | 764 | static void sparc_pmu_read(struct perf_event *event) |
664 | { | 765 | { |
766 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | ||
767 | int idx = active_event_index(cpuc, event); | ||
665 | struct hw_perf_event *hwc = &event->hw; | 768 | struct hw_perf_event *hwc = &event->hw; |
666 | 769 | ||
667 | sparc_perf_event_update(event, hwc, hwc->idx); | 770 | sparc_perf_event_update(event, hwc, idx); |
668 | } | 771 | } |
669 | 772 | ||
670 | static void sparc_pmu_unthrottle(struct perf_event *event) | 773 | static void sparc_pmu_unthrottle(struct perf_event *event) |
671 | { | 774 | { |
672 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | 775 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); |
776 | int idx = active_event_index(cpuc, event); | ||
673 | struct hw_perf_event *hwc = &event->hw; | 777 | struct hw_perf_event *hwc = &event->hw; |
674 | 778 | ||
675 | sparc_pmu_enable_event(cpuc, hwc, hwc->idx); | 779 | sparc_pmu_enable_event(cpuc, hwc, idx); |
676 | } | 780 | } |
677 | 781 | ||
678 | static atomic_t active_events = ATOMIC_INIT(0); | 782 | static atomic_t active_events = ATOMIC_INIT(0); |
@@ -750,43 +854,75 @@ static void hw_perf_event_destroy(struct perf_event *event) | |||
750 | /* Make sure all events can be scheduled into the hardware at | 854 | /* Make sure all events can be scheduled into the hardware at |
751 | * the same time. This is simplified by the fact that we only | 855 | * the same time. This is simplified by the fact that we only |
752 | * need to support 2 simultaneous HW events. | 856 | * need to support 2 simultaneous HW events. |
857 | * | ||
858 | * As a side effect, the evts[]->hw.idx values will be assigned | ||
859 | * on success. These are pending indexes. When the events are | ||
860 | * actually programmed into the chip, these values will propagate | ||
861 | * to the per-cpu cpuc->current_idx[] slots, see the code in | ||
862 | * maybe_change_configuration() for details. | ||
753 | */ | 863 | */ |
754 | static int sparc_check_constraints(unsigned long *events, int n_ev) | 864 | static int sparc_check_constraints(struct perf_event **evts, |
865 | unsigned long *events, int n_ev) | ||
755 | { | 866 | { |
756 | if (n_ev <= perf_max_events) { | 867 | u8 msk0 = 0, msk1 = 0; |
757 | u8 msk1, msk2; | 868 | int idx0 = 0; |
758 | u16 dummy; | 869 | |
759 | 870 | /* This case is possible when we are invoked from | |
760 | if (n_ev == 1) | 871 | * hw_perf_group_sched_in(). |
761 | return 0; | 872 | */ |
762 | BUG_ON(n_ev != 2); | 873 | if (!n_ev) |
763 | perf_event_decode(events[0], &dummy, &msk1); | 874 | return 0; |
764 | perf_event_decode(events[1], &dummy, &msk2); | 875 | |
765 | 876 | if (n_ev > perf_max_events) | |
766 | /* If both events can go on any counter, OK. */ | 877 | return -1; |
767 | if (msk1 == (PIC_UPPER | PIC_LOWER) && | 878 | |
768 | msk2 == (PIC_UPPER | PIC_LOWER)) | 879 | msk0 = perf_event_get_msk(events[0]); |
769 | return 0; | 880 | if (n_ev == 1) { |
770 | 881 | if (msk0 & PIC_LOWER) | |
771 | /* If one event is limited to a specific counter, | 882 | idx0 = 1; |
772 | * and the other can go on both, OK. | 883 | goto success; |
773 | */ | ||
774 | if ((msk1 == PIC_UPPER || msk1 == PIC_LOWER) && | ||
775 | msk2 == (PIC_UPPER | PIC_LOWER)) | ||
776 | return 0; | ||
777 | if ((msk2 == PIC_UPPER || msk2 == PIC_LOWER) && | ||
778 | msk1 == (PIC_UPPER | PIC_LOWER)) | ||
779 | return 0; | ||
780 | |||
781 | /* If the events are fixed to different counters, OK. */ | ||
782 | if ((msk1 == PIC_UPPER && msk2 == PIC_LOWER) || | ||
783 | (msk1 == PIC_LOWER && msk2 == PIC_UPPER)) | ||
784 | return 0; | ||
785 | |||
786 | /* Otherwise, there is a conflict. */ | ||
787 | } | 884 | } |
885 | BUG_ON(n_ev != 2); | ||
886 | msk1 = perf_event_get_msk(events[1]); | ||
887 | |||
888 | /* If both events can go on any counter, OK. */ | ||
889 | if (msk0 == (PIC_UPPER | PIC_LOWER) && | ||
890 | msk1 == (PIC_UPPER | PIC_LOWER)) | ||
891 | goto success; | ||
788 | 892 | ||
893 | /* If one event is limited to a specific counter, | ||
894 | * and the other can go on both, OK. | ||
895 | */ | ||
896 | if ((msk0 == PIC_UPPER || msk0 == PIC_LOWER) && | ||
897 | msk1 == (PIC_UPPER | PIC_LOWER)) { | ||
898 | if (msk0 & PIC_LOWER) | ||
899 | idx0 = 1; | ||
900 | goto success; | ||
901 | } | ||
902 | |||
903 | if ((msk1 == PIC_UPPER || msk1 == PIC_LOWER) && | ||
904 | msk0 == (PIC_UPPER | PIC_LOWER)) { | ||
905 | if (msk1 & PIC_UPPER) | ||
906 | idx0 = 1; | ||
907 | goto success; | ||
908 | } | ||
909 | |||
910 | /* If the events are fixed to different counters, OK. */ | ||
911 | if ((msk0 == PIC_UPPER && msk1 == PIC_LOWER) || | ||
912 | (msk0 == PIC_LOWER && msk1 == PIC_UPPER)) { | ||
913 | if (msk0 & PIC_LOWER) | ||
914 | idx0 = 1; | ||
915 | goto success; | ||
916 | } | ||
917 | |||
918 | /* Otherwise, there is a conflict. */ | ||
789 | return -1; | 919 | return -1; |
920 | |||
921 | success: | ||
922 | evts[0]->hw.idx = idx0; | ||
923 | if (n_ev == 2) | ||
924 | evts[1]->hw.idx = idx0 ^ 1; | ||
925 | return 0; | ||
790 | } | 926 | } |
791 | 927 | ||
792 | static int check_excludes(struct perf_event **evts, int n_prev, int n_new) | 928 | static int check_excludes(struct perf_event **evts, int n_prev, int n_new) |
@@ -818,7 +954,8 @@ static int check_excludes(struct perf_event **evts, int n_prev, int n_new) | |||
818 | } | 954 | } |
819 | 955 | ||
820 | static int collect_events(struct perf_event *group, int max_count, | 956 | static int collect_events(struct perf_event *group, int max_count, |
821 | struct perf_event *evts[], unsigned long *events) | 957 | struct perf_event *evts[], unsigned long *events, |
958 | int *current_idx) | ||
822 | { | 959 | { |
823 | struct perf_event *event; | 960 | struct perf_event *event; |
824 | int n = 0; | 961 | int n = 0; |
@@ -827,7 +964,8 @@ static int collect_events(struct perf_event *group, int max_count, | |||
827 | if (n >= max_count) | 964 | if (n >= max_count) |
828 | return -1; | 965 | return -1; |
829 | evts[n] = group; | 966 | evts[n] = group; |
830 | events[n++] = group->hw.event_base; | 967 | events[n] = group->hw.event_base; |
968 | current_idx[n++] = PIC_NO_INDEX; | ||
831 | } | 969 | } |
832 | list_for_each_entry(event, &group->sibling_list, group_entry) { | 970 | list_for_each_entry(event, &group->sibling_list, group_entry) { |
833 | if (!is_software_event(event) && | 971 | if (!is_software_event(event) && |
@@ -835,20 +973,100 @@ static int collect_events(struct perf_event *group, int max_count, | |||
835 | if (n >= max_count) | 973 | if (n >= max_count) |
836 | return -1; | 974 | return -1; |
837 | evts[n] = event; | 975 | evts[n] = event; |
838 | events[n++] = event->hw.event_base; | 976 | events[n] = event->hw.event_base; |
977 | current_idx[n++] = PIC_NO_INDEX; | ||
839 | } | 978 | } |
840 | } | 979 | } |
841 | return n; | 980 | return n; |
842 | } | 981 | } |
843 | 982 | ||
983 | static void event_sched_in(struct perf_event *event, int cpu) | ||
984 | { | ||
985 | event->state = PERF_EVENT_STATE_ACTIVE; | ||
986 | event->oncpu = cpu; | ||
987 | event->tstamp_running += event->ctx->time - event->tstamp_stopped; | ||
988 | if (is_software_event(event)) | ||
989 | event->pmu->enable(event); | ||
990 | } | ||
991 | |||
992 | int hw_perf_group_sched_in(struct perf_event *group_leader, | ||
993 | struct perf_cpu_context *cpuctx, | ||
994 | struct perf_event_context *ctx, int cpu) | ||
995 | { | ||
996 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | ||
997 | struct perf_event *sub; | ||
998 | int n0, n; | ||
999 | |||
1000 | if (!sparc_pmu) | ||
1001 | return 0; | ||
1002 | |||
1003 | n0 = cpuc->n_events; | ||
1004 | n = collect_events(group_leader, perf_max_events - n0, | ||
1005 | &cpuc->event[n0], &cpuc->events[n0], | ||
1006 | &cpuc->current_idx[n0]); | ||
1007 | if (n < 0) | ||
1008 | return -EAGAIN; | ||
1009 | if (check_excludes(cpuc->event, n0, n)) | ||
1010 | return -EINVAL; | ||
1011 | if (sparc_check_constraints(cpuc->event, cpuc->events, n + n0)) | ||
1012 | return -EAGAIN; | ||
1013 | cpuc->n_events = n0 + n; | ||
1014 | cpuc->n_added += n; | ||
1015 | |||
1016 | cpuctx->active_oncpu += n; | ||
1017 | n = 1; | ||
1018 | event_sched_in(group_leader, cpu); | ||
1019 | list_for_each_entry(sub, &group_leader->sibling_list, group_entry) { | ||
1020 | if (sub->state != PERF_EVENT_STATE_OFF) { | ||
1021 | event_sched_in(sub, cpu); | ||
1022 | n++; | ||
1023 | } | ||
1024 | } | ||
1025 | ctx->nr_active += n; | ||
1026 | |||
1027 | return 1; | ||
1028 | } | ||
1029 | |||
1030 | static int sparc_pmu_enable(struct perf_event *event) | ||
1031 | { | ||
1032 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | ||
1033 | int n0, ret = -EAGAIN; | ||
1034 | unsigned long flags; | ||
1035 | |||
1036 | local_irq_save(flags); | ||
1037 | perf_disable(); | ||
1038 | |||
1039 | n0 = cpuc->n_events; | ||
1040 | if (n0 >= perf_max_events) | ||
1041 | goto out; | ||
1042 | |||
1043 | cpuc->event[n0] = event; | ||
1044 | cpuc->events[n0] = event->hw.event_base; | ||
1045 | cpuc->current_idx[n0] = PIC_NO_INDEX; | ||
1046 | |||
1047 | if (check_excludes(cpuc->event, n0, 1)) | ||
1048 | goto out; | ||
1049 | if (sparc_check_constraints(cpuc->event, cpuc->events, n0 + 1)) | ||
1050 | goto out; | ||
1051 | |||
1052 | cpuc->n_events++; | ||
1053 | cpuc->n_added++; | ||
1054 | |||
1055 | ret = 0; | ||
1056 | out: | ||
1057 | perf_enable(); | ||
1058 | local_irq_restore(flags); | ||
1059 | return ret; | ||
1060 | } | ||
1061 | |||
844 | static int __hw_perf_event_init(struct perf_event *event) | 1062 | static int __hw_perf_event_init(struct perf_event *event) |
845 | { | 1063 | { |
846 | struct perf_event_attr *attr = &event->attr; | 1064 | struct perf_event_attr *attr = &event->attr; |
847 | struct perf_event *evts[MAX_HWEVENTS]; | 1065 | struct perf_event *evts[MAX_HWEVENTS]; |
848 | struct hw_perf_event *hwc = &event->hw; | 1066 | struct hw_perf_event *hwc = &event->hw; |
849 | unsigned long events[MAX_HWEVENTS]; | 1067 | unsigned long events[MAX_HWEVENTS]; |
1068 | int current_idx_dmy[MAX_HWEVENTS]; | ||
850 | const struct perf_event_map *pmap; | 1069 | const struct perf_event_map *pmap; |
851 | u64 enc; | ||
852 | int n; | 1070 | int n; |
853 | 1071 | ||
854 | if (atomic_read(&nmi_active) < 0) | 1072 | if (atomic_read(&nmi_active) < 0) |
@@ -865,10 +1083,7 @@ static int __hw_perf_event_init(struct perf_event *event) | |||
865 | } else | 1083 | } else |
866 | return -EOPNOTSUPP; | 1084 | return -EOPNOTSUPP; |
867 | 1085 | ||
868 | /* We save the enable bits in the config_base. So to | 1086 | /* We save the enable bits in the config_base. */ |
869 | * turn off sampling just write 'config', and to enable | ||
870 | * things write 'config | config_base'. | ||
871 | */ | ||
872 | hwc->config_base = sparc_pmu->irq_bit; | 1087 | hwc->config_base = sparc_pmu->irq_bit; |
873 | if (!attr->exclude_user) | 1088 | if (!attr->exclude_user) |
874 | hwc->config_base |= PCR_UTRACE; | 1089 | hwc->config_base |= PCR_UTRACE; |
@@ -879,13 +1094,11 @@ static int __hw_perf_event_init(struct perf_event *event) | |||
879 | 1094 | ||
880 | hwc->event_base = perf_event_encode(pmap); | 1095 | hwc->event_base = perf_event_encode(pmap); |
881 | 1096 | ||
882 | enc = pmap->encoding; | ||
883 | |||
884 | n = 0; | 1097 | n = 0; |
885 | if (event->group_leader != event) { | 1098 | if (event->group_leader != event) { |
886 | n = collect_events(event->group_leader, | 1099 | n = collect_events(event->group_leader, |
887 | perf_max_events - 1, | 1100 | perf_max_events - 1, |
888 | evts, events); | 1101 | evts, events, current_idx_dmy); |
889 | if (n < 0) | 1102 | if (n < 0) |
890 | return -EINVAL; | 1103 | return -EINVAL; |
891 | } | 1104 | } |
@@ -895,9 +1108,11 @@ static int __hw_perf_event_init(struct perf_event *event) | |||
895 | if (check_excludes(evts, n, 1)) | 1108 | if (check_excludes(evts, n, 1)) |
896 | return -EINVAL; | 1109 | return -EINVAL; |
897 | 1110 | ||
898 | if (sparc_check_constraints(events, n + 1)) | 1111 | if (sparc_check_constraints(evts, events, n + 1)) |
899 | return -EINVAL; | 1112 | return -EINVAL; |
900 | 1113 | ||
1114 | hwc->idx = PIC_NO_INDEX; | ||
1115 | |||
901 | /* Try to do all error checking before this point, as unwinding | 1116 | /* Try to do all error checking before this point, as unwinding |
902 | * state after grabbing the PMC is difficult. | 1117 | * state after grabbing the PMC is difficult. |
903 | */ | 1118 | */ |
@@ -910,15 +1125,6 @@ static int __hw_perf_event_init(struct perf_event *event) | |||
910 | atomic64_set(&hwc->period_left, hwc->sample_period); | 1125 | atomic64_set(&hwc->period_left, hwc->sample_period); |
911 | } | 1126 | } |
912 | 1127 | ||
913 | if (pmap->pic_mask & PIC_UPPER) { | ||
914 | hwc->idx = PIC_UPPER_INDEX; | ||
915 | enc <<= sparc_pmu->upper_shift; | ||
916 | } else { | ||
917 | hwc->idx = PIC_LOWER_INDEX; | ||
918 | enc <<= sparc_pmu->lower_shift; | ||
919 | } | ||
920 | |||
921 | hwc->config |= enc; | ||
922 | return 0; | 1128 | return 0; |
923 | } | 1129 | } |
924 | 1130 | ||
@@ -968,7 +1174,7 @@ static int __kprobes perf_event_nmi_handler(struct notifier_block *self, | |||
968 | struct perf_sample_data data; | 1174 | struct perf_sample_data data; |
969 | struct cpu_hw_events *cpuc; | 1175 | struct cpu_hw_events *cpuc; |
970 | struct pt_regs *regs; | 1176 | struct pt_regs *regs; |
971 | int idx; | 1177 | int i; |
972 | 1178 | ||
973 | if (!atomic_read(&active_events)) | 1179 | if (!atomic_read(&active_events)) |
974 | return NOTIFY_DONE; | 1180 | return NOTIFY_DONE; |
@@ -997,13 +1203,12 @@ static int __kprobes perf_event_nmi_handler(struct notifier_block *self, | |||
997 | if (sparc_pmu->irq_bit) | 1203 | if (sparc_pmu->irq_bit) |
998 | pcr_ops->write(cpuc->pcr); | 1204 | pcr_ops->write(cpuc->pcr); |
999 | 1205 | ||
1000 | for (idx = 0; idx < MAX_HWEVENTS; idx++) { | 1206 | for (i = 0; i < cpuc->n_events; i++) { |
1001 | struct perf_event *event = cpuc->events[idx]; | 1207 | struct perf_event *event = cpuc->event[i]; |
1208 | int idx = cpuc->current_idx[i]; | ||
1002 | struct hw_perf_event *hwc; | 1209 | struct hw_perf_event *hwc; |
1003 | u64 val; | 1210 | u64 val; |
1004 | 1211 | ||
1005 | if (!test_bit(idx, cpuc->active_mask)) | ||
1006 | continue; | ||
1007 | hwc = &event->hw; | 1212 | hwc = &event->hw; |
1008 | val = sparc_perf_event_update(event, hwc, idx); | 1213 | val = sparc_perf_event_update(event, hwc, idx); |
1009 | if (val & (1ULL << 31)) | 1214 | if (val & (1ULL << 31)) |
@@ -1055,10 +1260,122 @@ void __init init_hw_perf_events(void) | |||
1055 | 1260 | ||
1056 | pr_cont("Supported PMU type is '%s'\n", sparc_pmu_type); | 1261 | pr_cont("Supported PMU type is '%s'\n", sparc_pmu_type); |
1057 | 1262 | ||
1058 | /* All sparc64 PMUs currently have 2 events. But this simple | 1263 | /* All sparc64 PMUs currently have 2 events. */ |
1059 | * driver only supports one active event at a time. | 1264 | perf_max_events = 2; |
1060 | */ | ||
1061 | perf_max_events = 1; | ||
1062 | 1265 | ||
1063 | register_die_notifier(&perf_event_nmi_notifier); | 1266 | register_die_notifier(&perf_event_nmi_notifier); |
1064 | } | 1267 | } |
1268 | |||
1269 | static inline void callchain_store(struct perf_callchain_entry *entry, u64 ip) | ||
1270 | { | ||
1271 | if (entry->nr < PERF_MAX_STACK_DEPTH) | ||
1272 | entry->ip[entry->nr++] = ip; | ||
1273 | } | ||
1274 | |||
1275 | static void perf_callchain_kernel(struct pt_regs *regs, | ||
1276 | struct perf_callchain_entry *entry) | ||
1277 | { | ||
1278 | unsigned long ksp, fp; | ||
1279 | |||
1280 | callchain_store(entry, PERF_CONTEXT_KERNEL); | ||
1281 | callchain_store(entry, regs->tpc); | ||
1282 | |||
1283 | ksp = regs->u_regs[UREG_I6]; | ||
1284 | fp = ksp + STACK_BIAS; | ||
1285 | do { | ||
1286 | struct sparc_stackf *sf; | ||
1287 | struct pt_regs *regs; | ||
1288 | unsigned long pc; | ||
1289 | |||
1290 | if (!kstack_valid(current_thread_info(), fp)) | ||
1291 | break; | ||
1292 | |||
1293 | sf = (struct sparc_stackf *) fp; | ||
1294 | regs = (struct pt_regs *) (sf + 1); | ||
1295 | |||
1296 | if (kstack_is_trap_frame(current_thread_info(), regs)) { | ||
1297 | if (user_mode(regs)) | ||
1298 | break; | ||
1299 | pc = regs->tpc; | ||
1300 | fp = regs->u_regs[UREG_I6] + STACK_BIAS; | ||
1301 | } else { | ||
1302 | pc = sf->callers_pc; | ||
1303 | fp = (unsigned long)sf->fp + STACK_BIAS; | ||
1304 | } | ||
1305 | callchain_store(entry, pc); | ||
1306 | } while (entry->nr < PERF_MAX_STACK_DEPTH); | ||
1307 | } | ||
1308 | |||
1309 | static void perf_callchain_user_64(struct pt_regs *regs, | ||
1310 | struct perf_callchain_entry *entry) | ||
1311 | { | ||
1312 | unsigned long ufp; | ||
1313 | |||
1314 | callchain_store(entry, PERF_CONTEXT_USER); | ||
1315 | callchain_store(entry, regs->tpc); | ||
1316 | |||
1317 | ufp = regs->u_regs[UREG_I6] + STACK_BIAS; | ||
1318 | do { | ||
1319 | struct sparc_stackf *usf, sf; | ||
1320 | unsigned long pc; | ||
1321 | |||
1322 | usf = (struct sparc_stackf *) ufp; | ||
1323 | if (__copy_from_user_inatomic(&sf, usf, sizeof(sf))) | ||
1324 | break; | ||
1325 | |||
1326 | pc = sf.callers_pc; | ||
1327 | ufp = (unsigned long)sf.fp + STACK_BIAS; | ||
1328 | callchain_store(entry, pc); | ||
1329 | } while (entry->nr < PERF_MAX_STACK_DEPTH); | ||
1330 | } | ||
1331 | |||
1332 | static void perf_callchain_user_32(struct pt_regs *regs, | ||
1333 | struct perf_callchain_entry *entry) | ||
1334 | { | ||
1335 | unsigned long ufp; | ||
1336 | |||
1337 | callchain_store(entry, PERF_CONTEXT_USER); | ||
1338 | callchain_store(entry, regs->tpc); | ||
1339 | |||
1340 | ufp = regs->u_regs[UREG_I6]; | ||
1341 | do { | ||
1342 | struct sparc_stackf32 *usf, sf; | ||
1343 | unsigned long pc; | ||
1344 | |||
1345 | usf = (struct sparc_stackf32 *) ufp; | ||
1346 | if (__copy_from_user_inatomic(&sf, usf, sizeof(sf))) | ||
1347 | break; | ||
1348 | |||
1349 | pc = sf.callers_pc; | ||
1350 | ufp = (unsigned long)sf.fp; | ||
1351 | callchain_store(entry, pc); | ||
1352 | } while (entry->nr < PERF_MAX_STACK_DEPTH); | ||
1353 | } | ||
1354 | |||
1355 | /* Like powerpc we can't get PMU interrupts within the PMU handler, | ||
1356 | * so no need for seperate NMI and IRQ chains as on x86. | ||
1357 | */ | ||
1358 | static DEFINE_PER_CPU(struct perf_callchain_entry, callchain); | ||
1359 | |||
1360 | struct perf_callchain_entry *perf_callchain(struct pt_regs *regs) | ||
1361 | { | ||
1362 | struct perf_callchain_entry *entry = &__get_cpu_var(callchain); | ||
1363 | |||
1364 | entry->nr = 0; | ||
1365 | if (!user_mode(regs)) { | ||
1366 | stack_trace_flush(); | ||
1367 | perf_callchain_kernel(regs, entry); | ||
1368 | if (current->mm) | ||
1369 | regs = task_pt_regs(current); | ||
1370 | else | ||
1371 | regs = NULL; | ||
1372 | } | ||
1373 | if (regs) { | ||
1374 | flushw_user(); | ||
1375 | if (test_thread_flag(TIF_32BIT)) | ||
1376 | perf_callchain_user_32(regs, entry); | ||
1377 | else | ||
1378 | perf_callchain_user_64(regs, entry); | ||
1379 | } | ||
1380 | return entry; | ||
1381 | } | ||
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index 18d67854a1b8..c3f1cce0e95e 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c | |||
@@ -365,14 +365,6 @@ void flush_thread(void) | |||
365 | struct thread_info *t = current_thread_info(); | 365 | struct thread_info *t = current_thread_info(); |
366 | struct mm_struct *mm; | 366 | struct mm_struct *mm; |
367 | 367 | ||
368 | if (test_ti_thread_flag(t, TIF_ABI_PENDING)) { | ||
369 | clear_ti_thread_flag(t, TIF_ABI_PENDING); | ||
370 | if (test_ti_thread_flag(t, TIF_32BIT)) | ||
371 | clear_ti_thread_flag(t, TIF_32BIT); | ||
372 | else | ||
373 | set_ti_thread_flag(t, TIF_32BIT); | ||
374 | } | ||
375 | |||
376 | mm = t->task->mm; | 368 | mm = t->task->mm; |
377 | if (mm) | 369 | if (mm) |
378 | tsb_context_switch(mm); | 370 | tsb_context_switch(mm); |
diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c index cfa0e19abe3b..d77f54316948 100644 --- a/arch/sparc/kernel/sys_sparc_64.c +++ b/arch/sparc/kernel/sys_sparc_64.c | |||
@@ -365,6 +365,7 @@ EXPORT_SYMBOL(get_fb_unmapped_area); | |||
365 | void arch_pick_mmap_layout(struct mm_struct *mm) | 365 | void arch_pick_mmap_layout(struct mm_struct *mm) |
366 | { | 366 | { |
367 | unsigned long random_factor = 0UL; | 367 | unsigned long random_factor = 0UL; |
368 | unsigned long gap; | ||
368 | 369 | ||
369 | if (current->flags & PF_RANDOMIZE) { | 370 | if (current->flags & PF_RANDOMIZE) { |
370 | random_factor = get_random_int(); | 371 | random_factor = get_random_int(); |
@@ -379,9 +380,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm) | |||
379 | * Fall back to the standard layout if the personality | 380 | * Fall back to the standard layout if the personality |
380 | * bit is set, or if the expected stack growth is unlimited: | 381 | * bit is set, or if the expected stack growth is unlimited: |
381 | */ | 382 | */ |
383 | gap = rlimit(RLIMIT_STACK); | ||
382 | if (!test_thread_flag(TIF_32BIT) || | 384 | if (!test_thread_flag(TIF_32BIT) || |
383 | (current->personality & ADDR_COMPAT_LAYOUT) || | 385 | (current->personality & ADDR_COMPAT_LAYOUT) || |
384 | current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY || | 386 | gap == RLIM_INFINITY || |
385 | sysctl_legacy_va_layout) { | 387 | sysctl_legacy_va_layout) { |
386 | mm->mmap_base = TASK_UNMAPPED_BASE + random_factor; | 388 | mm->mmap_base = TASK_UNMAPPED_BASE + random_factor; |
387 | mm->get_unmapped_area = arch_get_unmapped_area; | 389 | mm->get_unmapped_area = arch_get_unmapped_area; |
@@ -389,9 +391,7 @@ void arch_pick_mmap_layout(struct mm_struct *mm) | |||
389 | } else { | 391 | } else { |
390 | /* We know it's 32-bit */ | 392 | /* We know it's 32-bit */ |
391 | unsigned long task_size = STACK_TOP32; | 393 | unsigned long task_size = STACK_TOP32; |
392 | unsigned long gap; | ||
393 | 394 | ||
394 | gap = current->signal->rlim[RLIMIT_STACK].rlim_cur; | ||
395 | if (gap < 128 * 1024 * 1024) | 395 | if (gap < 128 * 1024 * 1024) |
396 | gap = 128 * 1024 * 1024; | 396 | gap = 128 * 1024 * 1024; |
397 | if (gap > (task_size / 6 * 5)) | 397 | if (gap > (task_size / 6 * 5)) |
diff --git a/arch/sparc/kernel/time_32.c b/arch/sparc/kernel/time_32.c index 5b2f595fe65b..0d4c09b15efc 100644 --- a/arch/sparc/kernel/time_32.c +++ b/arch/sparc/kernel/time_32.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/platform_device.h> | 35 | #include <linux/platform_device.h> |
36 | 36 | ||
37 | #include <asm/oplib.h> | 37 | #include <asm/oplib.h> |
38 | #include <asm/timex.h> | ||
38 | #include <asm/timer.h> | 39 | #include <asm/timer.h> |
39 | #include <asm/system.h> | 40 | #include <asm/system.h> |
40 | #include <asm/irq.h> | 41 | #include <asm/irq.h> |
@@ -51,7 +52,6 @@ DEFINE_SPINLOCK(rtc_lock); | |||
51 | EXPORT_SYMBOL(rtc_lock); | 52 | EXPORT_SYMBOL(rtc_lock); |
52 | 53 | ||
53 | static int set_rtc_mmss(unsigned long); | 54 | static int set_rtc_mmss(unsigned long); |
54 | static int sbus_do_settimeofday(struct timespec *tv); | ||
55 | 55 | ||
56 | unsigned long profile_pc(struct pt_regs *regs) | 56 | unsigned long profile_pc(struct pt_regs *regs) |
57 | { | 57 | { |
@@ -76,6 +76,8 @@ EXPORT_SYMBOL(profile_pc); | |||
76 | 76 | ||
77 | __volatile__ unsigned int *master_l10_counter; | 77 | __volatile__ unsigned int *master_l10_counter; |
78 | 78 | ||
79 | u32 (*do_arch_gettimeoffset)(void); | ||
80 | |||
79 | /* | 81 | /* |
80 | * timer_interrupt() needs to keep up the real-time clock, | 82 | * timer_interrupt() needs to keep up the real-time clock, |
81 | * as well as call the "do_timer()" routine every clocktick | 83 | * as well as call the "do_timer()" routine every clocktick |
@@ -196,35 +198,14 @@ static int __init clock_init(void) | |||
196 | { | 198 | { |
197 | return of_register_driver(&clock_driver, &of_platform_bus_type); | 199 | return of_register_driver(&clock_driver, &of_platform_bus_type); |
198 | } | 200 | } |
199 | |||
200 | /* Must be after subsys_initcall() so that busses are probed. Must | 201 | /* Must be after subsys_initcall() so that busses are probed. Must |
201 | * be before device_initcall() because things like the RTC driver | 202 | * be before device_initcall() because things like the RTC driver |
202 | * need to see the clock registers. | 203 | * need to see the clock registers. |
203 | */ | 204 | */ |
204 | fs_initcall(clock_init); | 205 | fs_initcall(clock_init); |
205 | 206 | ||
206 | static void __init sbus_time_init(void) | ||
207 | { | ||
208 | |||
209 | BTFIXUPSET_CALL(bus_do_settimeofday, sbus_do_settimeofday, BTFIXUPCALL_NORM); | ||
210 | btfixup(); | ||
211 | |||
212 | sparc_init_timers(timer_interrupt); | ||
213 | } | ||
214 | |||
215 | void __init time_init(void) | ||
216 | { | ||
217 | #ifdef CONFIG_PCI | ||
218 | extern void pci_time_init(void); | ||
219 | if (pcic_present()) { | ||
220 | pci_time_init(); | ||
221 | return; | ||
222 | } | ||
223 | #endif | ||
224 | sbus_time_init(); | ||
225 | } | ||
226 | 207 | ||
227 | static inline unsigned long do_gettimeoffset(void) | 208 | u32 sbus_do_gettimeoffset(void) |
228 | { | 209 | { |
229 | unsigned long val = *master_l10_counter; | 210 | unsigned long val = *master_l10_counter; |
230 | unsigned long usec = (val >> 10) & 0x1fffff; | 211 | unsigned long usec = (val >> 10) & 0x1fffff; |
@@ -233,86 +214,39 @@ static inline unsigned long do_gettimeoffset(void) | |||
233 | if (val & 0x80000000) | 214 | if (val & 0x80000000) |
234 | usec += 1000000 / HZ; | 215 | usec += 1000000 / HZ; |
235 | 216 | ||
236 | return usec; | 217 | return usec * 1000; |
237 | } | 218 | } |
238 | 219 | ||
239 | /* Ok, my cute asm atomicity trick doesn't work anymore. | ||
240 | * There are just too many variables that need to be protected | ||
241 | * now (both members of xtime, et al.) | ||
242 | */ | ||
243 | void do_gettimeofday(struct timeval *tv) | ||
244 | { | ||
245 | unsigned long flags; | ||
246 | unsigned long seq; | ||
247 | unsigned long usec, sec; | ||
248 | unsigned long max_ntp_tick = tick_usec - tickadj; | ||
249 | |||
250 | do { | ||
251 | seq = read_seqbegin_irqsave(&xtime_lock, flags); | ||
252 | usec = do_gettimeoffset(); | ||
253 | |||
254 | /* | ||
255 | * If time_adjust is negative then NTP is slowing the clock | ||
256 | * so make sure not to go into next possible interval. | ||
257 | * Better to lose some accuracy than have time go backwards.. | ||
258 | */ | ||
259 | if (unlikely(time_adjust < 0)) | ||
260 | usec = min(usec, max_ntp_tick); | ||
261 | |||
262 | sec = xtime.tv_sec; | ||
263 | usec += (xtime.tv_nsec / 1000); | ||
264 | } while (read_seqretry_irqrestore(&xtime_lock, seq, flags)); | ||
265 | |||
266 | while (usec >= 1000000) { | ||
267 | usec -= 1000000; | ||
268 | sec++; | ||
269 | } | ||
270 | 220 | ||
271 | tv->tv_sec = sec; | 221 | u32 arch_gettimeoffset(void) |
272 | tv->tv_usec = usec; | ||
273 | } | ||
274 | |||
275 | EXPORT_SYMBOL(do_gettimeofday); | ||
276 | |||
277 | int do_settimeofday(struct timespec *tv) | ||
278 | { | 222 | { |
279 | int ret; | 223 | if (unlikely(!do_arch_gettimeoffset)) |
280 | 224 | return 0; | |
281 | write_seqlock_irq(&xtime_lock); | 225 | return do_arch_gettimeoffset(); |
282 | ret = bus_do_settimeofday(tv); | ||
283 | write_sequnlock_irq(&xtime_lock); | ||
284 | clock_was_set(); | ||
285 | return ret; | ||
286 | } | 226 | } |
287 | 227 | ||
288 | EXPORT_SYMBOL(do_settimeofday); | 228 | static void __init sbus_time_init(void) |
289 | |||
290 | static int sbus_do_settimeofday(struct timespec *tv) | ||
291 | { | 229 | { |
292 | time_t wtm_sec, sec = tv->tv_sec; | 230 | do_arch_gettimeoffset = sbus_do_gettimeoffset; |
293 | long wtm_nsec, nsec = tv->tv_nsec; | ||
294 | 231 | ||
295 | if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) | 232 | btfixup(); |
296 | return -EINVAL; | ||
297 | |||
298 | /* | ||
299 | * This is revolting. We need to set "xtime" correctly. However, the | ||
300 | * value in this location is the value at the most recent update of | ||
301 | * wall time. Discover what correction gettimeofday() would have | ||
302 | * made, and then undo it! | ||
303 | */ | ||
304 | nsec -= 1000 * do_gettimeoffset(); | ||
305 | |||
306 | wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec); | ||
307 | wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec); | ||
308 | 233 | ||
309 | set_normalized_timespec(&xtime, sec, nsec); | 234 | sparc_init_timers(timer_interrupt); |
310 | set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec); | 235 | } |
311 | 236 | ||
312 | ntp_clear(); | 237 | void __init time_init(void) |
313 | return 0; | 238 | { |
239 | #ifdef CONFIG_PCI | ||
240 | extern void pci_time_init(void); | ||
241 | if (pcic_present()) { | ||
242 | pci_time_init(); | ||
243 | return; | ||
244 | } | ||
245 | #endif | ||
246 | sbus_time_init(); | ||
314 | } | 247 | } |
315 | 248 | ||
249 | |||
316 | static int set_rtc_mmss(unsigned long secs) | 250 | static int set_rtc_mmss(unsigned long secs) |
317 | { | 251 | { |
318 | struct rtc_device *rtc = rtc_class_open("rtc0"); | 252 | struct rtc_device *rtc = rtc_class_open("rtc0"); |
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c index b99f81c4906f..a3413acb8f12 100644 --- a/arch/sparc/mm/fault_32.c +++ b/arch/sparc/mm/fault_32.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/signal.h> | 18 | #include <linux/signal.h> |
19 | #include <linux/mm.h> | 19 | #include <linux/mm.h> |
20 | #include <linux/smp.h> | 20 | #include <linux/smp.h> |
21 | #include <linux/perf_event.h> | ||
21 | #include <linux/interrupt.h> | 22 | #include <linux/interrupt.h> |
22 | #include <linux/module.h> | 23 | #include <linux/module.h> |
23 | #include <linux/kdebug.h> | 24 | #include <linux/kdebug.h> |
@@ -203,6 +204,8 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write, | |||
203 | if (in_atomic() || !mm) | 204 | if (in_atomic() || !mm) |
204 | goto no_context; | 205 | goto no_context; |
205 | 206 | ||
207 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, 0, regs, address); | ||
208 | |||
206 | down_read(&mm->mmap_sem); | 209 | down_read(&mm->mmap_sem); |
207 | 210 | ||
208 | /* | 211 | /* |
@@ -249,10 +252,15 @@ good_area: | |||
249 | goto do_sigbus; | 252 | goto do_sigbus; |
250 | BUG(); | 253 | BUG(); |
251 | } | 254 | } |
252 | if (fault & VM_FAULT_MAJOR) | 255 | if (fault & VM_FAULT_MAJOR) { |
253 | current->maj_flt++; | 256 | current->maj_flt++; |
254 | else | 257 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, 0, |
258 | regs, address); | ||
259 | } else { | ||
255 | current->min_flt++; | 260 | current->min_flt++; |
261 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, 0, | ||
262 | regs, address); | ||
263 | } | ||
256 | up_read(&mm->mmap_sem); | 264 | up_read(&mm->mmap_sem); |
257 | return; | 265 | return; |
258 | 266 | ||
diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c index 6081936bf03b..b9d4ff02b8fc 100644 --- a/arch/sparc/mm/fault_64.c +++ b/arch/sparc/mm/fault_64.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/mm.h> | 16 | #include <linux/mm.h> |
17 | #include <linux/module.h> | 17 | #include <linux/module.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/perf_event.h> | ||
19 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
20 | #include <linux/kprobes.h> | 21 | #include <linux/kprobes.h> |
21 | #include <linux/kdebug.h> | 22 | #include <linux/kdebug.h> |
@@ -296,6 +297,8 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs) | |||
296 | if (in_atomic() || !mm) | 297 | if (in_atomic() || !mm) |
297 | goto intr_or_no_mm; | 298 | goto intr_or_no_mm; |
298 | 299 | ||
300 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, 0, regs, address); | ||
301 | |||
299 | if (!down_read_trylock(&mm->mmap_sem)) { | 302 | if (!down_read_trylock(&mm->mmap_sem)) { |
300 | if ((regs->tstate & TSTATE_PRIV) && | 303 | if ((regs->tstate & TSTATE_PRIV) && |
301 | !search_exception_tables(regs->tpc)) { | 304 | !search_exception_tables(regs->tpc)) { |
@@ -400,11 +403,15 @@ good_area: | |||
400 | goto do_sigbus; | 403 | goto do_sigbus; |
401 | BUG(); | 404 | BUG(); |
402 | } | 405 | } |
403 | if (fault & VM_FAULT_MAJOR) | 406 | if (fault & VM_FAULT_MAJOR) { |
404 | current->maj_flt++; | 407 | current->maj_flt++; |
405 | else | 408 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, 0, |
409 | regs, address); | ||
410 | } else { | ||
406 | current->min_flt++; | 411 | current->min_flt++; |
407 | 412 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, 0, | |
413 | regs, address); | ||
414 | } | ||
408 | up_read(&mm->mmap_sem); | 415 | up_read(&mm->mmap_sem); |
409 | 416 | ||
410 | mm_rss = get_mm_rss(mm); | 417 | mm_rss = get_mm_rss(mm); |
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c index 51069245b79a..3b3c36601a7b 100644 --- a/arch/um/drivers/mconsole_kern.c +++ b/arch/um/drivers/mconsole_kern.c | |||
@@ -125,50 +125,36 @@ void mconsole_log(struct mc_request *req) | |||
125 | void mconsole_proc(struct mc_request *req) | 125 | void mconsole_proc(struct mc_request *req) |
126 | { | 126 | { |
127 | struct nameidata nd; | 127 | struct nameidata nd; |
128 | struct file_system_type *proc; | 128 | struct vfsmount *mnt = current->nsproxy->pid_ns->proc_mnt; |
129 | struct super_block *super; | ||
130 | struct file *file; | 129 | struct file *file; |
131 | int n, err; | 130 | int n, err; |
132 | char *ptr = req->request.data, *buf; | 131 | char *ptr = req->request.data, *buf; |
132 | mm_segment_t old_fs = get_fs(); | ||
133 | 133 | ||
134 | ptr += strlen("proc"); | 134 | ptr += strlen("proc"); |
135 | ptr = skip_spaces(ptr); | 135 | ptr = skip_spaces(ptr); |
136 | 136 | ||
137 | proc = get_fs_type("proc"); | 137 | err = vfs_path_lookup(mnt->mnt_root, mnt, ptr, LOOKUP_FOLLOW, &nd); |
138 | if (proc == NULL) { | 138 | if (err) { |
139 | mconsole_reply(req, "procfs not registered", 1, 0); | 139 | mconsole_reply(req, "Failed to look up file", 1, 0); |
140 | goto out; | 140 | goto out; |
141 | } | 141 | } |
142 | 142 | ||
143 | super = (*proc->get_sb)(proc, 0, NULL, NULL); | 143 | err = may_open(&nd.path, MAY_READ, FMODE_READ); |
144 | put_filesystem(proc); | 144 | if (result) { |
145 | if (super == NULL) { | 145 | mconsole_reply(req, "Failed to open file", 1, 0); |
146 | mconsole_reply(req, "Failed to get procfs superblock", 1, 0); | 146 | path_put(&nd.path); |
147 | goto out; | 147 | goto out; |
148 | } | 148 | } |
149 | up_write(&super->s_umount); | ||
150 | |||
151 | nd.path.dentry = super->s_root; | ||
152 | nd.path.mnt = NULL; | ||
153 | nd.flags = O_RDONLY + 1; | ||
154 | nd.last_type = LAST_ROOT; | ||
155 | |||
156 | /* START: it was experienced that the stability problems are closed | ||
157 | * if commenting out these two calls + the below read cycle. To | ||
158 | * make UML crash again, it was enough to readd either one.*/ | ||
159 | err = link_path_walk(ptr, &nd); | ||
160 | if (err) { | ||
161 | mconsole_reply(req, "Failed to look up file", 1, 0); | ||
162 | goto out_kill; | ||
163 | } | ||
164 | 149 | ||
165 | file = dentry_open(nd.path.dentry, nd.path.mnt, O_RDONLY, | 150 | file = dentry_open(nd.path.dentry, nd.path.mnt, O_RDONLY, |
166 | current_cred()); | 151 | current_cred()); |
152 | err = PTR_ERR(file); | ||
167 | if (IS_ERR(file)) { | 153 | if (IS_ERR(file)) { |
168 | mconsole_reply(req, "Failed to open file", 1, 0); | 154 | mconsole_reply(req, "Failed to open file", 1, 0); |
169 | goto out_kill; | 155 | path_put(&nd.path); |
156 | goto out; | ||
170 | } | 157 | } |
171 | /*END*/ | ||
172 | 158 | ||
173 | buf = kmalloc(PAGE_SIZE, GFP_KERNEL); | 159 | buf = kmalloc(PAGE_SIZE, GFP_KERNEL); |
174 | if (buf == NULL) { | 160 | if (buf == NULL) { |
@@ -176,10 +162,13 @@ void mconsole_proc(struct mc_request *req) | |||
176 | goto out_fput; | 162 | goto out_fput; |
177 | } | 163 | } |
178 | 164 | ||
179 | if ((file->f_op != NULL) && (file->f_op->read != NULL)) { | 165 | if (file->f_op->read) { |
180 | do { | 166 | do { |
181 | n = (*file->f_op->read)(file, buf, PAGE_SIZE - 1, | 167 | loff_t pos; |
182 | &file->f_pos); | 168 | set_fs(KERNEL_DS); |
169 | n = vfs_read(file, buf, PAGE_SIZE - 1, &pos); | ||
170 | file_pos_write(file, pos); | ||
171 | set_fs(old_fs); | ||
183 | if (n >= 0) { | 172 | if (n >= 0) { |
184 | buf[n] = '\0'; | 173 | buf[n] = '\0'; |
185 | mconsole_reply(req, buf, 0, (n > 0)); | 174 | mconsole_reply(req, buf, 0, (n > 0)); |
@@ -197,8 +186,6 @@ void mconsole_proc(struct mc_request *req) | |||
197 | kfree(buf); | 186 | kfree(buf); |
198 | out_fput: | 187 | out_fput: |
199 | fput(file); | 188 | fput(file); |
200 | out_kill: | ||
201 | deactivate_super(super); | ||
202 | out: ; | 189 | out: ; |
203 | } | 190 | } |
204 | #endif | 191 | #endif |
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index cbcbfdee3ee0..eb4092568f9e 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -989,12 +989,6 @@ config X86_CPUID | |||
989 | with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to | 989 | with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to |
990 | /dev/cpu/31/cpuid. | 990 | /dev/cpu/31/cpuid. |
991 | 991 | ||
992 | config X86_CPU_DEBUG | ||
993 | tristate "/sys/kernel/debug/x86/cpu/* - CPU Debug support" | ||
994 | ---help--- | ||
995 | If you select this option, this will provide various x86 CPUs | ||
996 | information through debugfs. | ||
997 | |||
998 | choice | 992 | choice |
999 | prompt "High Memory Support" | 993 | prompt "High Memory Support" |
1000 | default HIGHMEM4G if !X86_NUMAQ | 994 | default HIGHMEM4G if !X86_NUMAQ |
diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c index 2a4d073d2cf1..f9f472462753 100644 --- a/arch/x86/ia32/ia32_aout.c +++ b/arch/x86/ia32/ia32_aout.c | |||
@@ -308,14 +308,15 @@ static int load_aout_binary(struct linux_binprm *bprm, struct pt_regs *regs) | |||
308 | if (retval) | 308 | if (retval) |
309 | return retval; | 309 | return retval; |
310 | 310 | ||
311 | regs->cs = __USER32_CS; | ||
312 | regs->r8 = regs->r9 = regs->r10 = regs->r11 = regs->r12 = | ||
313 | regs->r13 = regs->r14 = regs->r15 = 0; | ||
314 | |||
315 | /* OK, This is the point of no return */ | 311 | /* OK, This is the point of no return */ |
316 | set_personality(PER_LINUX); | 312 | set_personality(PER_LINUX); |
317 | set_thread_flag(TIF_IA32); | 313 | set_thread_flag(TIF_IA32); |
318 | clear_thread_flag(TIF_ABI_PENDING); | 314 | |
315 | setup_new_exec(bprm); | ||
316 | |||
317 | regs->cs = __USER32_CS; | ||
318 | regs->r8 = regs->r9 = regs->r10 = regs->r11 = regs->r12 = | ||
319 | regs->r13 = regs->r14 = regs->r15 = 0; | ||
319 | 320 | ||
320 | current->mm->end_code = ex.a_text + | 321 | current->mm->end_code = ex.a_text + |
321 | (current->mm->start_code = N_TXTADDR(ex)); | 322 | (current->mm->start_code = N_TXTADDR(ex)); |
diff --git a/arch/x86/include/asm/cpu_debug.h b/arch/x86/include/asm/cpu_debug.h deleted file mode 100644 index d96c1ee3a95c..000000000000 --- a/arch/x86/include/asm/cpu_debug.h +++ /dev/null | |||
@@ -1,127 +0,0 @@ | |||
1 | #ifndef _ASM_X86_CPU_DEBUG_H | ||
2 | #define _ASM_X86_CPU_DEBUG_H | ||
3 | |||
4 | /* | ||
5 | * CPU x86 architecture debug | ||
6 | * | ||
7 | * Copyright(C) 2009 Jaswinder Singh Rajput | ||
8 | */ | ||
9 | |||
10 | /* Register flags */ | ||
11 | enum cpu_debug_bit { | ||
12 | /* Model Specific Registers (MSRs) */ | ||
13 | CPU_MC_BIT, /* Machine Check */ | ||
14 | CPU_MONITOR_BIT, /* Monitor */ | ||
15 | CPU_TIME_BIT, /* Time */ | ||
16 | CPU_PMC_BIT, /* Performance Monitor */ | ||
17 | CPU_PLATFORM_BIT, /* Platform */ | ||
18 | CPU_APIC_BIT, /* APIC */ | ||
19 | CPU_POWERON_BIT, /* Power-on */ | ||
20 | CPU_CONTROL_BIT, /* Control */ | ||
21 | CPU_FEATURES_BIT, /* Features control */ | ||
22 | CPU_LBRANCH_BIT, /* Last Branch */ | ||
23 | CPU_BIOS_BIT, /* BIOS */ | ||
24 | CPU_FREQ_BIT, /* Frequency */ | ||
25 | CPU_MTTR_BIT, /* MTRR */ | ||
26 | CPU_PERF_BIT, /* Performance */ | ||
27 | CPU_CACHE_BIT, /* Cache */ | ||
28 | CPU_SYSENTER_BIT, /* Sysenter */ | ||
29 | CPU_THERM_BIT, /* Thermal */ | ||
30 | CPU_MISC_BIT, /* Miscellaneous */ | ||
31 | CPU_DEBUG_BIT, /* Debug */ | ||
32 | CPU_PAT_BIT, /* PAT */ | ||
33 | CPU_VMX_BIT, /* VMX */ | ||
34 | CPU_CALL_BIT, /* System Call */ | ||
35 | CPU_BASE_BIT, /* BASE Address */ | ||
36 | CPU_VER_BIT, /* Version ID */ | ||
37 | CPU_CONF_BIT, /* Configuration */ | ||
38 | CPU_SMM_BIT, /* System mgmt mode */ | ||
39 | CPU_SVM_BIT, /*Secure Virtual Machine*/ | ||
40 | CPU_OSVM_BIT, /* OS-Visible Workaround*/ | ||
41 | /* Standard Registers */ | ||
42 | CPU_TSS_BIT, /* Task Stack Segment */ | ||
43 | CPU_CR_BIT, /* Control Registers */ | ||
44 | CPU_DT_BIT, /* Descriptor Table */ | ||
45 | /* End of Registers flags */ | ||
46 | CPU_REG_ALL_BIT, /* Select all Registers */ | ||
47 | }; | ||
48 | |||
49 | #define CPU_REG_ALL (~0) /* Select all Registers */ | ||
50 | |||
51 | #define CPU_MC (1 << CPU_MC_BIT) | ||
52 | #define CPU_MONITOR (1 << CPU_MONITOR_BIT) | ||
53 | #define CPU_TIME (1 << CPU_TIME_BIT) | ||
54 | #define CPU_PMC (1 << CPU_PMC_BIT) | ||
55 | #define CPU_PLATFORM (1 << CPU_PLATFORM_BIT) | ||
56 | #define CPU_APIC (1 << CPU_APIC_BIT) | ||
57 | #define CPU_POWERON (1 << CPU_POWERON_BIT) | ||
58 | #define CPU_CONTROL (1 << CPU_CONTROL_BIT) | ||
59 | #define CPU_FEATURES (1 << CPU_FEATURES_BIT) | ||
60 | #define CPU_LBRANCH (1 << CPU_LBRANCH_BIT) | ||
61 | #define CPU_BIOS (1 << CPU_BIOS_BIT) | ||
62 | #define CPU_FREQ (1 << CPU_FREQ_BIT) | ||
63 | #define CPU_MTRR (1 << CPU_MTTR_BIT) | ||
64 | #define CPU_PERF (1 << CPU_PERF_BIT) | ||
65 | #define CPU_CACHE (1 << CPU_CACHE_BIT) | ||
66 | #define CPU_SYSENTER (1 << CPU_SYSENTER_BIT) | ||
67 | #define CPU_THERM (1 << CPU_THERM_BIT) | ||
68 | #define CPU_MISC (1 << CPU_MISC_BIT) | ||
69 | #define CPU_DEBUG (1 << CPU_DEBUG_BIT) | ||
70 | #define CPU_PAT (1 << CPU_PAT_BIT) | ||
71 | #define CPU_VMX (1 << CPU_VMX_BIT) | ||
72 | #define CPU_CALL (1 << CPU_CALL_BIT) | ||
73 | #define CPU_BASE (1 << CPU_BASE_BIT) | ||
74 | #define CPU_VER (1 << CPU_VER_BIT) | ||
75 | #define CPU_CONF (1 << CPU_CONF_BIT) | ||
76 | #define CPU_SMM (1 << CPU_SMM_BIT) | ||
77 | #define CPU_SVM (1 << CPU_SVM_BIT) | ||
78 | #define CPU_OSVM (1 << CPU_OSVM_BIT) | ||
79 | #define CPU_TSS (1 << CPU_TSS_BIT) | ||
80 | #define CPU_CR (1 << CPU_CR_BIT) | ||
81 | #define CPU_DT (1 << CPU_DT_BIT) | ||
82 | |||
83 | /* Register file flags */ | ||
84 | enum cpu_file_bit { | ||
85 | CPU_INDEX_BIT, /* index */ | ||
86 | CPU_VALUE_BIT, /* value */ | ||
87 | }; | ||
88 | |||
89 | #define CPU_FILE_VALUE (1 << CPU_VALUE_BIT) | ||
90 | |||
91 | #define MAX_CPU_FILES 512 | ||
92 | |||
93 | struct cpu_private { | ||
94 | unsigned cpu; | ||
95 | unsigned type; | ||
96 | unsigned reg; | ||
97 | unsigned file; | ||
98 | }; | ||
99 | |||
100 | struct cpu_debug_base { | ||
101 | char *name; /* Register name */ | ||
102 | unsigned flag; /* Register flag */ | ||
103 | unsigned write; /* Register write flag */ | ||
104 | }; | ||
105 | |||
106 | /* | ||
107 | * Currently it looks similar to cpu_debug_base but once we add more files | ||
108 | * cpu_file_base will go in different direction | ||
109 | */ | ||
110 | struct cpu_file_base { | ||
111 | char *name; /* Register file name */ | ||
112 | unsigned flag; /* Register file flag */ | ||
113 | unsigned write; /* Register write flag */ | ||
114 | }; | ||
115 | |||
116 | struct cpu_cpuX_base { | ||
117 | struct dentry *dentry; /* Register dentry */ | ||
118 | int init; /* Register index file */ | ||
119 | }; | ||
120 | |||
121 | struct cpu_debug_range { | ||
122 | unsigned min; /* Register range min */ | ||
123 | unsigned max; /* Register range max */ | ||
124 | unsigned flag; /* Supported flags */ | ||
125 | }; | ||
126 | |||
127 | #endif /* _ASM_X86_CPU_DEBUG_H */ | ||
diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h index b4501ee223ad..1994d3f58443 100644 --- a/arch/x86/include/asm/elf.h +++ b/arch/x86/include/asm/elf.h | |||
@@ -181,14 +181,8 @@ do { \ | |||
181 | void start_thread_ia32(struct pt_regs *regs, u32 new_ip, u32 new_sp); | 181 | void start_thread_ia32(struct pt_regs *regs, u32 new_ip, u32 new_sp); |
182 | #define compat_start_thread start_thread_ia32 | 182 | #define compat_start_thread start_thread_ia32 |
183 | 183 | ||
184 | #define COMPAT_SET_PERSONALITY(ex) \ | 184 | void set_personality_ia32(void); |
185 | do { \ | 185 | #define COMPAT_SET_PERSONALITY(ex) set_personality_ia32() |
186 | if (test_thread_flag(TIF_IA32)) \ | ||
187 | clear_thread_flag(TIF_ABI_PENDING); \ | ||
188 | else \ | ||
189 | set_thread_flag(TIF_ABI_PENDING); \ | ||
190 | current->personality |= force_personality32; \ | ||
191 | } while (0) | ||
192 | 186 | ||
193 | #define COMPAT_ELF_PLATFORM ("i686") | 187 | #define COMPAT_ELF_PLATFORM ("i686") |
194 | 188 | ||
diff --git a/arch/x86/include/asm/hpet.h b/arch/x86/include/asm/hpet.h index 5d89fd2a3690..1d5c08a1bdfd 100644 --- a/arch/x86/include/asm/hpet.h +++ b/arch/x86/include/asm/hpet.h | |||
@@ -67,6 +67,7 @@ extern unsigned long hpet_address; | |||
67 | extern unsigned long force_hpet_address; | 67 | extern unsigned long force_hpet_address; |
68 | extern u8 hpet_blockid; | 68 | extern u8 hpet_blockid; |
69 | extern int hpet_force_user; | 69 | extern int hpet_force_user; |
70 | extern u8 hpet_msi_disable; | ||
70 | extern int is_hpet_enabled(void); | 71 | extern int is_hpet_enabled(void); |
71 | extern int hpet_enable(void); | 72 | extern int hpet_enable(void); |
72 | extern void hpet_disable(void); | 73 | extern void hpet_disable(void); |
diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h index 858baa061cfc..6c3fdd631ed3 100644 --- a/arch/x86/include/asm/mce.h +++ b/arch/x86/include/asm/mce.h | |||
@@ -108,10 +108,11 @@ struct mce_log { | |||
108 | #define K8_MCE_THRESHOLD_BANK_5 (MCE_THRESHOLD_BASE + 5 * 9) | 108 | #define K8_MCE_THRESHOLD_BANK_5 (MCE_THRESHOLD_BASE + 5 * 9) |
109 | #define K8_MCE_THRESHOLD_DRAM_ECC (MCE_THRESHOLD_BANK_4 + 0) | 109 | #define K8_MCE_THRESHOLD_DRAM_ECC (MCE_THRESHOLD_BANK_4 + 0) |
110 | 110 | ||
111 | extern struct atomic_notifier_head x86_mce_decoder_chain; | ||
112 | 111 | ||
113 | #ifdef __KERNEL__ | 112 | #ifdef __KERNEL__ |
114 | 113 | ||
114 | extern struct atomic_notifier_head x86_mce_decoder_chain; | ||
115 | |||
115 | #include <linux/percpu.h> | 116 | #include <linux/percpu.h> |
116 | #include <linux/init.h> | 117 | #include <linux/init.h> |
117 | #include <asm/atomic.h> | 118 | #include <asm/atomic.h> |
diff --git a/arch/x86/include/asm/microcode.h b/arch/x86/include/asm/microcode.h index c24ca9a56458..ef51b501e22a 100644 --- a/arch/x86/include/asm/microcode.h +++ b/arch/x86/include/asm/microcode.h | |||
@@ -12,8 +12,6 @@ struct device; | |||
12 | enum ucode_state { UCODE_ERROR, UCODE_OK, UCODE_NFOUND }; | 12 | enum ucode_state { UCODE_ERROR, UCODE_OK, UCODE_NFOUND }; |
13 | 13 | ||
14 | struct microcode_ops { | 14 | struct microcode_ops { |
15 | void (*init)(struct device *device); | ||
16 | void (*fini)(void); | ||
17 | enum ucode_state (*request_microcode_user) (int cpu, | 15 | enum ucode_state (*request_microcode_user) (int cpu, |
18 | const void __user *buf, size_t size); | 16 | const void __user *buf, size_t size); |
19 | 17 | ||
diff --git a/arch/x86/include/asm/perf_event.h b/arch/x86/include/asm/perf_event.h index 8d9f8548a870..1380367dabd9 100644 --- a/arch/x86/include/asm/perf_event.h +++ b/arch/x86/include/asm/perf_event.h | |||
@@ -19,6 +19,7 @@ | |||
19 | #define MSR_ARCH_PERFMON_EVENTSEL1 0x187 | 19 | #define MSR_ARCH_PERFMON_EVENTSEL1 0x187 |
20 | 20 | ||
21 | #define ARCH_PERFMON_EVENTSEL0_ENABLE (1 << 22) | 21 | #define ARCH_PERFMON_EVENTSEL0_ENABLE (1 << 22) |
22 | #define ARCH_PERFMON_EVENTSEL_ANY (1 << 21) | ||
22 | #define ARCH_PERFMON_EVENTSEL_INT (1 << 20) | 23 | #define ARCH_PERFMON_EVENTSEL_INT (1 << 20) |
23 | #define ARCH_PERFMON_EVENTSEL_OS (1 << 17) | 24 | #define ARCH_PERFMON_EVENTSEL_OS (1 << 17) |
24 | #define ARCH_PERFMON_EVENTSEL_USR (1 << 16) | 25 | #define ARCH_PERFMON_EVENTSEL_USR (1 << 16) |
diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h index 375c917c37d2..e0d28901e969 100644 --- a/arch/x86/include/asm/thread_info.h +++ b/arch/x86/include/asm/thread_info.h | |||
@@ -87,7 +87,6 @@ struct thread_info { | |||
87 | #define TIF_NOTSC 16 /* TSC is not accessible in userland */ | 87 | #define TIF_NOTSC 16 /* TSC is not accessible in userland */ |
88 | #define TIF_IA32 17 /* 32bit process */ | 88 | #define TIF_IA32 17 /* 32bit process */ |
89 | #define TIF_FORK 18 /* ret_from_fork */ | 89 | #define TIF_FORK 18 /* ret_from_fork */ |
90 | #define TIF_ABI_PENDING 19 | ||
91 | #define TIF_MEMDIE 20 | 90 | #define TIF_MEMDIE 20 |
92 | #define TIF_DEBUG 21 /* uses debug registers */ | 91 | #define TIF_DEBUG 21 /* uses debug registers */ |
93 | #define TIF_IO_BITMAP 22 /* uses I/O bitmap */ | 92 | #define TIF_IO_BITMAP 22 /* uses I/O bitmap */ |
@@ -112,7 +111,6 @@ struct thread_info { | |||
112 | #define _TIF_NOTSC (1 << TIF_NOTSC) | 111 | #define _TIF_NOTSC (1 << TIF_NOTSC) |
113 | #define _TIF_IA32 (1 << TIF_IA32) | 112 | #define _TIF_IA32 (1 << TIF_IA32) |
114 | #define _TIF_FORK (1 << TIF_FORK) | 113 | #define _TIF_FORK (1 << TIF_FORK) |
115 | #define _TIF_ABI_PENDING (1 << TIF_ABI_PENDING) | ||
116 | #define _TIF_DEBUG (1 << TIF_DEBUG) | 114 | #define _TIF_DEBUG (1 << TIF_DEBUG) |
117 | #define _TIF_IO_BITMAP (1 << TIF_IO_BITMAP) | 115 | #define _TIF_IO_BITMAP (1 << TIF_IO_BITMAP) |
118 | #define _TIF_FREEZE (1 << TIF_FREEZE) | 116 | #define _TIF_FREEZE (1 << TIF_FREEZE) |
diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h index bc54fa965af3..40be813fefb1 100644 --- a/arch/x86/include/asm/uv/uv_hub.h +++ b/arch/x86/include/asm/uv/uv_hub.h | |||
@@ -495,5 +495,17 @@ static inline void uv_hub_send_ipi(int pnode, int apicid, int vector) | |||
495 | uv_write_global_mmr64(pnode, UVH_IPI_INT, val); | 495 | uv_write_global_mmr64(pnode, UVH_IPI_INT, val); |
496 | } | 496 | } |
497 | 497 | ||
498 | /* | ||
499 | * Get the minimum revision number of the hub chips within the partition. | ||
500 | * 1 - initial rev 1.0 silicon | ||
501 | * 2 - rev 2.0 production silicon | ||
502 | */ | ||
503 | static inline int uv_get_min_hub_revision_id(void) | ||
504 | { | ||
505 | extern int uv_min_hub_revision_id; | ||
506 | |||
507 | return uv_min_hub_revision_id; | ||
508 | } | ||
509 | |||
498 | #endif /* CONFIG_X86_64 */ | 510 | #endif /* CONFIG_X86_64 */ |
499 | #endif /* _ASM_X86_UV_UV_HUB_H */ | 511 | #endif /* _ASM_X86_UV_UV_HUB_H */ |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index fb1035cd9a6a..036d28adf59d 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -1529,16 +1529,10 @@ static struct dmi_system_id __initdata acpi_dmi_table_late[] = { | |||
1529 | * if acpi_blacklisted() acpi_disabled = 1; | 1529 | * if acpi_blacklisted() acpi_disabled = 1; |
1530 | * acpi_irq_model=... | 1530 | * acpi_irq_model=... |
1531 | * ... | 1531 | * ... |
1532 | * | ||
1533 | * return value: (currently ignored) | ||
1534 | * 0: success | ||
1535 | * !0: failure | ||
1536 | */ | 1532 | */ |
1537 | 1533 | ||
1538 | int __init acpi_boot_table_init(void) | 1534 | void __init acpi_boot_table_init(void) |
1539 | { | 1535 | { |
1540 | int error; | ||
1541 | |||
1542 | dmi_check_system(acpi_dmi_table); | 1536 | dmi_check_system(acpi_dmi_table); |
1543 | 1537 | ||
1544 | /* | 1538 | /* |
@@ -1546,15 +1540,14 @@ int __init acpi_boot_table_init(void) | |||
1546 | * One exception: acpi=ht continues far enough to enumerate LAPICs | 1540 | * One exception: acpi=ht continues far enough to enumerate LAPICs |
1547 | */ | 1541 | */ |
1548 | if (acpi_disabled && !acpi_ht) | 1542 | if (acpi_disabled && !acpi_ht) |
1549 | return 1; | 1543 | return; |
1550 | 1544 | ||
1551 | /* | 1545 | /* |
1552 | * Initialize the ACPI boot-time table parser. | 1546 | * Initialize the ACPI boot-time table parser. |
1553 | */ | 1547 | */ |
1554 | error = acpi_table_init(); | 1548 | if (acpi_table_init()) { |
1555 | if (error) { | ||
1556 | disable_acpi(); | 1549 | disable_acpi(); |
1557 | return error; | 1550 | return; |
1558 | } | 1551 | } |
1559 | 1552 | ||
1560 | acpi_table_parse(ACPI_SIG_BOOT, acpi_parse_sbf); | 1553 | acpi_table_parse(ACPI_SIG_BOOT, acpi_parse_sbf); |
@@ -1562,18 +1555,15 @@ int __init acpi_boot_table_init(void) | |||
1562 | /* | 1555 | /* |
1563 | * blacklist may disable ACPI entirely | 1556 | * blacklist may disable ACPI entirely |
1564 | */ | 1557 | */ |
1565 | error = acpi_blacklisted(); | 1558 | if (acpi_blacklisted()) { |
1566 | if (error) { | ||
1567 | if (acpi_force) { | 1559 | if (acpi_force) { |
1568 | printk(KERN_WARNING PREFIX "acpi=force override\n"); | 1560 | printk(KERN_WARNING PREFIX "acpi=force override\n"); |
1569 | } else { | 1561 | } else { |
1570 | printk(KERN_WARNING PREFIX "Disabling ACPI support\n"); | 1562 | printk(KERN_WARNING PREFIX "Disabling ACPI support\n"); |
1571 | disable_acpi(); | 1563 | disable_acpi(); |
1572 | return error; | 1564 | return; |
1573 | } | 1565 | } |
1574 | } | 1566 | } |
1575 | |||
1576 | return 0; | ||
1577 | } | 1567 | } |
1578 | 1568 | ||
1579 | int __init early_acpi_boot_init(void) | 1569 | int __init early_acpi_boot_init(void) |
diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c index 3704997e8b25..f147a95fd84a 100644 --- a/arch/x86/kernel/aperture_64.c +++ b/arch/x86/kernel/aperture_64.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <asm/x86_init.h> | 31 | #include <asm/x86_init.h> |
32 | 32 | ||
33 | int gart_iommu_aperture; | 33 | int gart_iommu_aperture; |
34 | EXPORT_SYMBOL_GPL(gart_iommu_aperture); | ||
34 | int gart_iommu_aperture_disabled __initdata; | 35 | int gart_iommu_aperture_disabled __initdata; |
35 | int gart_iommu_aperture_allowed __initdata; | 36 | int gart_iommu_aperture_allowed __initdata; |
36 | 37 | ||
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index e80f291472a4..3987e4408f75 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c | |||
@@ -61,12 +61,6 @@ unsigned int boot_cpu_physical_apicid = -1U; | |||
61 | 61 | ||
62 | /* | 62 | /* |
63 | * The highest APIC ID seen during enumeration. | 63 | * The highest APIC ID seen during enumeration. |
64 | * | ||
65 | * This determines the messaging protocol we can use: if all APIC IDs | ||
66 | * are in the 0 ... 7 range, then we can use logical addressing which | ||
67 | * has some performance advantages (better broadcasting). | ||
68 | * | ||
69 | * If there's an APIC ID above 8, we use physical addressing. | ||
70 | */ | 64 | */ |
71 | unsigned int max_physical_apicid; | 65 | unsigned int max_physical_apicid; |
72 | 66 | ||
@@ -1898,14 +1892,7 @@ void __cpuinit generic_processor_info(int apicid, int version) | |||
1898 | max_physical_apicid = apicid; | 1892 | max_physical_apicid = apicid; |
1899 | 1893 | ||
1900 | #ifdef CONFIG_X86_32 | 1894 | #ifdef CONFIG_X86_32 |
1901 | /* | 1895 | if (num_processors > 8) { |
1902 | * Would be preferable to switch to bigsmp when CONFIG_HOTPLUG_CPU=y | ||
1903 | * but we need to work other dependencies like SMP_SUSPEND etc | ||
1904 | * before this can be done without some confusion. | ||
1905 | * if (CPU_HOTPLUG_ENABLED || num_processors > 8) | ||
1906 | * - Ashok Raj <ashok.raj@intel.com> | ||
1907 | */ | ||
1908 | if (max_physical_apicid >= 8) { | ||
1909 | switch (boot_cpu_data.x86_vendor) { | 1896 | switch (boot_cpu_data.x86_vendor) { |
1910 | case X86_VENDOR_INTEL: | 1897 | case X86_VENDOR_INTEL: |
1911 | if (!APIC_XAPIC(version)) { | 1898 | if (!APIC_XAPIC(version)) { |
diff --git a/arch/x86/kernel/apic/apic_flat_64.c b/arch/x86/kernel/apic/apic_flat_64.c index eacbd2b31d27..e3c3d820c325 100644 --- a/arch/x86/kernel/apic/apic_flat_64.c +++ b/arch/x86/kernel/apic/apic_flat_64.c | |||
@@ -240,6 +240,11 @@ static int physflat_acpi_madt_oem_check(char *oem_id, char *oem_table_id) | |||
240 | printk(KERN_DEBUG "system APIC only can use physical flat"); | 240 | printk(KERN_DEBUG "system APIC only can use physical flat"); |
241 | return 1; | 241 | return 1; |
242 | } | 242 | } |
243 | |||
244 | if (!strncmp(oem_id, "IBM", 3) && !strncmp(oem_table_id, "EXA", 3)) { | ||
245 | printk(KERN_DEBUG "IBM Summit detected, will use apic physical"); | ||
246 | return 1; | ||
247 | } | ||
243 | #endif | 248 | #endif |
244 | 249 | ||
245 | return 0; | 250 | return 0; |
diff --git a/arch/x86/kernel/apic/probe_64.c b/arch/x86/kernel/apic/probe_64.c index 65edc180fc82..450fe2064a14 100644 --- a/arch/x86/kernel/apic/probe_64.c +++ b/arch/x86/kernel/apic/probe_64.c | |||
@@ -64,15 +64,13 @@ void __init default_setup_apic_routing(void) | |||
64 | apic = &apic_x2apic_phys; | 64 | apic = &apic_x2apic_phys; |
65 | else | 65 | else |
66 | apic = &apic_x2apic_cluster; | 66 | apic = &apic_x2apic_cluster; |
67 | printk(KERN_INFO "Setting APIC routing to %s\n", apic->name); | ||
68 | } | 67 | } |
69 | #endif | 68 | #endif |
70 | 69 | ||
71 | if (apic == &apic_flat) { | 70 | if (apic == &apic_flat && num_processors > 8) |
72 | if (max_physical_apicid >= 8) | ||
73 | apic = &apic_physflat; | 71 | apic = &apic_physflat; |
74 | printk(KERN_INFO "Setting APIC routing to %s\n", apic->name); | 72 | |
75 | } | 73 | printk(KERN_INFO "Setting APIC routing to %s\n", apic->name); |
76 | 74 | ||
77 | if (is_vsmp_box()) { | 75 | if (is_vsmp_box()) { |
78 | /* need to update phys_pkg_id */ | 76 | /* need to update phys_pkg_id */ |
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c index 5f92494dab61..21db3cbea7dc 100644 --- a/arch/x86/kernel/apic/x2apic_uv_x.c +++ b/arch/x86/kernel/apic/x2apic_uv_x.c | |||
@@ -36,6 +36,8 @@ DEFINE_PER_CPU(int, x2apic_extra_bits); | |||
36 | 36 | ||
37 | static enum uv_system_type uv_system_type; | 37 | static enum uv_system_type uv_system_type; |
38 | static u64 gru_start_paddr, gru_end_paddr; | 38 | static u64 gru_start_paddr, gru_end_paddr; |
39 | int uv_min_hub_revision_id; | ||
40 | EXPORT_SYMBOL_GPL(uv_min_hub_revision_id); | ||
39 | 41 | ||
40 | static inline bool is_GRU_range(u64 start, u64 end) | 42 | static inline bool is_GRU_range(u64 start, u64 end) |
41 | { | 43 | { |
@@ -55,12 +57,19 @@ static int early_get_nodeid(void) | |||
55 | mmr = early_ioremap(UV_LOCAL_MMR_BASE | UVH_NODE_ID, sizeof(*mmr)); | 57 | mmr = early_ioremap(UV_LOCAL_MMR_BASE | UVH_NODE_ID, sizeof(*mmr)); |
56 | node_id.v = *mmr; | 58 | node_id.v = *mmr; |
57 | early_iounmap(mmr, sizeof(*mmr)); | 59 | early_iounmap(mmr, sizeof(*mmr)); |
60 | |||
61 | /* Currently, all blades have same revision number */ | ||
62 | uv_min_hub_revision_id = node_id.s.revision; | ||
63 | |||
58 | return node_id.s.node_id; | 64 | return node_id.s.node_id; |
59 | } | 65 | } |
60 | 66 | ||
61 | static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id) | 67 | static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id) |
62 | { | 68 | { |
69 | int nodeid; | ||
70 | |||
63 | if (!strcmp(oem_id, "SGI")) { | 71 | if (!strcmp(oem_id, "SGI")) { |
72 | nodeid = early_get_nodeid(); | ||
64 | x86_platform.is_untracked_pat_range = uv_is_untracked_pat_range; | 73 | x86_platform.is_untracked_pat_range = uv_is_untracked_pat_range; |
65 | if (!strcmp(oem_table_id, "UVL")) | 74 | if (!strcmp(oem_table_id, "UVL")) |
66 | uv_system_type = UV_LEGACY_APIC; | 75 | uv_system_type = UV_LEGACY_APIC; |
@@ -68,7 +77,7 @@ static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id) | |||
68 | uv_system_type = UV_X2APIC; | 77 | uv_system_type = UV_X2APIC; |
69 | else if (!strcmp(oem_table_id, "UVH")) { | 78 | else if (!strcmp(oem_table_id, "UVH")) { |
70 | __get_cpu_var(x2apic_extra_bits) = | 79 | __get_cpu_var(x2apic_extra_bits) = |
71 | early_get_nodeid() << (UV_APIC_PNODE_SHIFT - 1); | 80 | nodeid << (UV_APIC_PNODE_SHIFT - 1); |
72 | uv_system_type = UV_NON_UNIQUE_APIC; | 81 | uv_system_type = UV_NON_UNIQUE_APIC; |
73 | return 1; | 82 | return 1; |
74 | } | 83 | } |
@@ -374,13 +383,13 @@ static __init void get_lowmem_redirect(unsigned long *base, unsigned long *size) | |||
374 | 383 | ||
375 | enum map_type {map_wb, map_uc}; | 384 | enum map_type {map_wb, map_uc}; |
376 | 385 | ||
377 | static __init void map_high(char *id, unsigned long base, int shift, | 386 | static __init void map_high(char *id, unsigned long base, int pshift, |
378 | int max_pnode, enum map_type map_type) | 387 | int bshift, int max_pnode, enum map_type map_type) |
379 | { | 388 | { |
380 | unsigned long bytes, paddr; | 389 | unsigned long bytes, paddr; |
381 | 390 | ||
382 | paddr = base << shift; | 391 | paddr = base << pshift; |
383 | bytes = (1UL << shift) * (max_pnode + 1); | 392 | bytes = (1UL << bshift) * (max_pnode + 1); |
384 | printk(KERN_INFO "UV: Map %s_HI 0x%lx - 0x%lx\n", id, paddr, | 393 | printk(KERN_INFO "UV: Map %s_HI 0x%lx - 0x%lx\n", id, paddr, |
385 | paddr + bytes); | 394 | paddr + bytes); |
386 | if (map_type == map_uc) | 395 | if (map_type == map_uc) |
@@ -396,7 +405,7 @@ static __init void map_gru_high(int max_pnode) | |||
396 | 405 | ||
397 | gru.v = uv_read_local_mmr(UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR); | 406 | gru.v = uv_read_local_mmr(UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR); |
398 | if (gru.s.enable) { | 407 | if (gru.s.enable) { |
399 | map_high("GRU", gru.s.base, shift, max_pnode, map_wb); | 408 | map_high("GRU", gru.s.base, shift, shift, max_pnode, map_wb); |
400 | gru_start_paddr = ((u64)gru.s.base << shift); | 409 | gru_start_paddr = ((u64)gru.s.base << shift); |
401 | gru_end_paddr = gru_start_paddr + (1UL << shift) * (max_pnode + 1); | 410 | gru_end_paddr = gru_start_paddr + (1UL << shift) * (max_pnode + 1); |
402 | 411 | ||
@@ -410,7 +419,7 @@ static __init void map_mmr_high(int max_pnode) | |||
410 | 419 | ||
411 | mmr.v = uv_read_local_mmr(UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR); | 420 | mmr.v = uv_read_local_mmr(UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR); |
412 | if (mmr.s.enable) | 421 | if (mmr.s.enable) |
413 | map_high("MMR", mmr.s.base, shift, max_pnode, map_uc); | 422 | map_high("MMR", mmr.s.base, shift, shift, max_pnode, map_uc); |
414 | } | 423 | } |
415 | 424 | ||
416 | static __init void map_mmioh_high(int max_pnode) | 425 | static __init void map_mmioh_high(int max_pnode) |
@@ -420,7 +429,8 @@ static __init void map_mmioh_high(int max_pnode) | |||
420 | 429 | ||
421 | mmioh.v = uv_read_local_mmr(UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR); | 430 | mmioh.v = uv_read_local_mmr(UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR); |
422 | if (mmioh.s.enable) | 431 | if (mmioh.s.enable) |
423 | map_high("MMIOH", mmioh.s.base, shift, max_pnode, map_uc); | 432 | map_high("MMIOH", mmioh.s.base, shift, mmioh.s.m_io, |
433 | max_pnode, map_uc); | ||
424 | } | 434 | } |
425 | 435 | ||
426 | static __init void map_low_mmrs(void) | 436 | static __init void map_low_mmrs(void) |
diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile index 1d2cb383410e..c202b62f3671 100644 --- a/arch/x86/kernel/cpu/Makefile +++ b/arch/x86/kernel/cpu/Makefile | |||
@@ -19,8 +19,6 @@ obj-y += vmware.o hypervisor.o sched.o | |||
19 | obj-$(CONFIG_X86_32) += bugs.o cmpxchg.o | 19 | obj-$(CONFIG_X86_32) += bugs.o cmpxchg.o |
20 | obj-$(CONFIG_X86_64) += bugs_64.o | 20 | obj-$(CONFIG_X86_64) += bugs_64.o |
21 | 21 | ||
22 | obj-$(CONFIG_X86_CPU_DEBUG) += cpu_debug.o | ||
23 | |||
24 | obj-$(CONFIG_CPU_SUP_INTEL) += intel.o | 22 | obj-$(CONFIG_CPU_SUP_INTEL) += intel.o |
25 | obj-$(CONFIG_CPU_SUP_AMD) += amd.o | 23 | obj-$(CONFIG_CPU_SUP_AMD) += amd.o |
26 | obj-$(CONFIG_CPU_SUP_CYRIX_32) += cyrix.o | 24 | obj-$(CONFIG_CPU_SUP_CYRIX_32) += cyrix.o |
diff --git a/arch/x86/kernel/cpu/cpu_debug.c b/arch/x86/kernel/cpu/cpu_debug.c deleted file mode 100644 index b368cd862997..000000000000 --- a/arch/x86/kernel/cpu/cpu_debug.c +++ /dev/null | |||
@@ -1,688 +0,0 @@ | |||
1 | /* | ||
2 | * CPU x86 architecture debug code | ||
3 | * | ||
4 | * Copyright(C) 2009 Jaswinder Singh Rajput | ||
5 | * | ||
6 | * For licencing details see kernel-base/COPYING | ||
7 | */ | ||
8 | |||
9 | #include <linux/interrupt.h> | ||
10 | #include <linux/compiler.h> | ||
11 | #include <linux/seq_file.h> | ||
12 | #include <linux/debugfs.h> | ||
13 | #include <linux/kprobes.h> | ||
14 | #include <linux/uaccess.h> | ||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/module.h> | ||
17 | #include <linux/percpu.h> | ||
18 | #include <linux/signal.h> | ||
19 | #include <linux/errno.h> | ||
20 | #include <linux/sched.h> | ||
21 | #include <linux/types.h> | ||
22 | #include <linux/init.h> | ||
23 | #include <linux/slab.h> | ||
24 | #include <linux/smp.h> | ||
25 | |||
26 | #include <asm/cpu_debug.h> | ||
27 | #include <asm/paravirt.h> | ||
28 | #include <asm/system.h> | ||
29 | #include <asm/traps.h> | ||
30 | #include <asm/apic.h> | ||
31 | #include <asm/desc.h> | ||
32 | |||
33 | static DEFINE_PER_CPU(struct cpu_cpuX_base [CPU_REG_ALL_BIT], cpud_arr); | ||
34 | static DEFINE_PER_CPU(struct cpu_private * [MAX_CPU_FILES], cpud_priv_arr); | ||
35 | static DEFINE_PER_CPU(int, cpud_priv_count); | ||
36 | |||
37 | static DEFINE_MUTEX(cpu_debug_lock); | ||
38 | |||
39 | static struct dentry *cpu_debugfs_dir; | ||
40 | |||
41 | static struct cpu_debug_base cpu_base[] = { | ||
42 | { "mc", CPU_MC, 0 }, | ||
43 | { "monitor", CPU_MONITOR, 0 }, | ||
44 | { "time", CPU_TIME, 0 }, | ||
45 | { "pmc", CPU_PMC, 1 }, | ||
46 | { "platform", CPU_PLATFORM, 0 }, | ||
47 | { "apic", CPU_APIC, 0 }, | ||
48 | { "poweron", CPU_POWERON, 0 }, | ||
49 | { "control", CPU_CONTROL, 0 }, | ||
50 | { "features", CPU_FEATURES, 0 }, | ||
51 | { "lastbranch", CPU_LBRANCH, 0 }, | ||
52 | { "bios", CPU_BIOS, 0 }, | ||
53 | { "freq", CPU_FREQ, 0 }, | ||
54 | { "mtrr", CPU_MTRR, 0 }, | ||
55 | { "perf", CPU_PERF, 0 }, | ||
56 | { "cache", CPU_CACHE, 0 }, | ||
57 | { "sysenter", CPU_SYSENTER, 0 }, | ||
58 | { "therm", CPU_THERM, 0 }, | ||
59 | { "misc", CPU_MISC, 0 }, | ||
60 | { "debug", CPU_DEBUG, 0 }, | ||
61 | { "pat", CPU_PAT, 0 }, | ||
62 | { "vmx", CPU_VMX, 0 }, | ||
63 | { "call", CPU_CALL, 0 }, | ||
64 | { "base", CPU_BASE, 0 }, | ||
65 | { "ver", CPU_VER, 0 }, | ||
66 | { "conf", CPU_CONF, 0 }, | ||
67 | { "smm", CPU_SMM, 0 }, | ||
68 | { "svm", CPU_SVM, 0 }, | ||
69 | { "osvm", CPU_OSVM, 0 }, | ||
70 | { "tss", CPU_TSS, 0 }, | ||
71 | { "cr", CPU_CR, 0 }, | ||
72 | { "dt", CPU_DT, 0 }, | ||
73 | { "registers", CPU_REG_ALL, 0 }, | ||
74 | }; | ||
75 | |||
76 | static struct cpu_file_base cpu_file[] = { | ||
77 | { "index", CPU_REG_ALL, 0 }, | ||
78 | { "value", CPU_REG_ALL, 1 }, | ||
79 | }; | ||
80 | |||
81 | /* CPU Registers Range */ | ||
82 | static struct cpu_debug_range cpu_reg_range[] = { | ||
83 | { 0x00000000, 0x00000001, CPU_MC, }, | ||
84 | { 0x00000006, 0x00000007, CPU_MONITOR, }, | ||
85 | { 0x00000010, 0x00000010, CPU_TIME, }, | ||
86 | { 0x00000011, 0x00000013, CPU_PMC, }, | ||
87 | { 0x00000017, 0x00000017, CPU_PLATFORM, }, | ||
88 | { 0x0000001B, 0x0000001B, CPU_APIC, }, | ||
89 | { 0x0000002A, 0x0000002B, CPU_POWERON, }, | ||
90 | { 0x0000002C, 0x0000002C, CPU_FREQ, }, | ||
91 | { 0x0000003A, 0x0000003A, CPU_CONTROL, }, | ||
92 | { 0x00000040, 0x00000047, CPU_LBRANCH, }, | ||
93 | { 0x00000060, 0x00000067, CPU_LBRANCH, }, | ||
94 | { 0x00000079, 0x00000079, CPU_BIOS, }, | ||
95 | { 0x00000088, 0x0000008A, CPU_CACHE, }, | ||
96 | { 0x0000008B, 0x0000008B, CPU_BIOS, }, | ||
97 | { 0x0000009B, 0x0000009B, CPU_MONITOR, }, | ||
98 | { 0x000000C1, 0x000000C4, CPU_PMC, }, | ||
99 | { 0x000000CD, 0x000000CD, CPU_FREQ, }, | ||
100 | { 0x000000E7, 0x000000E8, CPU_PERF, }, | ||
101 | { 0x000000FE, 0x000000FE, CPU_MTRR, }, | ||
102 | |||
103 | { 0x00000116, 0x0000011E, CPU_CACHE, }, | ||
104 | { 0x00000174, 0x00000176, CPU_SYSENTER, }, | ||
105 | { 0x00000179, 0x0000017B, CPU_MC, }, | ||
106 | { 0x00000186, 0x00000189, CPU_PMC, }, | ||
107 | { 0x00000198, 0x00000199, CPU_PERF, }, | ||
108 | { 0x0000019A, 0x0000019A, CPU_TIME, }, | ||
109 | { 0x0000019B, 0x0000019D, CPU_THERM, }, | ||
110 | { 0x000001A0, 0x000001A0, CPU_MISC, }, | ||
111 | { 0x000001C9, 0x000001C9, CPU_LBRANCH, }, | ||
112 | { 0x000001D7, 0x000001D8, CPU_LBRANCH, }, | ||
113 | { 0x000001D9, 0x000001D9, CPU_DEBUG, }, | ||
114 | { 0x000001DA, 0x000001E0, CPU_LBRANCH, }, | ||
115 | |||
116 | { 0x00000200, 0x0000020F, CPU_MTRR, }, | ||
117 | { 0x00000250, 0x00000250, CPU_MTRR, }, | ||
118 | { 0x00000258, 0x00000259, CPU_MTRR, }, | ||
119 | { 0x00000268, 0x0000026F, CPU_MTRR, }, | ||
120 | { 0x00000277, 0x00000277, CPU_PAT, }, | ||
121 | { 0x000002FF, 0x000002FF, CPU_MTRR, }, | ||
122 | |||
123 | { 0x00000300, 0x00000311, CPU_PMC, }, | ||
124 | { 0x00000345, 0x00000345, CPU_PMC, }, | ||
125 | { 0x00000360, 0x00000371, CPU_PMC, }, | ||
126 | { 0x0000038D, 0x00000390, CPU_PMC, }, | ||
127 | { 0x000003A0, 0x000003BE, CPU_PMC, }, | ||
128 | { 0x000003C0, 0x000003CD, CPU_PMC, }, | ||
129 | { 0x000003E0, 0x000003E1, CPU_PMC, }, | ||
130 | { 0x000003F0, 0x000003F2, CPU_PMC, }, | ||
131 | |||
132 | { 0x00000400, 0x00000417, CPU_MC, }, | ||
133 | { 0x00000480, 0x0000048B, CPU_VMX, }, | ||
134 | |||
135 | { 0x00000600, 0x00000600, CPU_DEBUG, }, | ||
136 | { 0x00000680, 0x0000068F, CPU_LBRANCH, }, | ||
137 | { 0x000006C0, 0x000006CF, CPU_LBRANCH, }, | ||
138 | |||
139 | { 0x000107CC, 0x000107D3, CPU_PMC, }, | ||
140 | |||
141 | { 0xC0000080, 0xC0000080, CPU_FEATURES, }, | ||
142 | { 0xC0000081, 0xC0000084, CPU_CALL, }, | ||
143 | { 0xC0000100, 0xC0000102, CPU_BASE, }, | ||
144 | { 0xC0000103, 0xC0000103, CPU_TIME, }, | ||
145 | |||
146 | { 0xC0010000, 0xC0010007, CPU_PMC, }, | ||
147 | { 0xC0010010, 0xC0010010, CPU_CONF, }, | ||
148 | { 0xC0010015, 0xC0010015, CPU_CONF, }, | ||
149 | { 0xC0010016, 0xC001001A, CPU_MTRR, }, | ||
150 | { 0xC001001D, 0xC001001D, CPU_MTRR, }, | ||
151 | { 0xC001001F, 0xC001001F, CPU_CONF, }, | ||
152 | { 0xC0010030, 0xC0010035, CPU_BIOS, }, | ||
153 | { 0xC0010044, 0xC0010048, CPU_MC, }, | ||
154 | { 0xC0010050, 0xC0010056, CPU_SMM, }, | ||
155 | { 0xC0010058, 0xC0010058, CPU_CONF, }, | ||
156 | { 0xC0010060, 0xC0010060, CPU_CACHE, }, | ||
157 | { 0xC0010061, 0xC0010068, CPU_SMM, }, | ||
158 | { 0xC0010069, 0xC001006B, CPU_SMM, }, | ||
159 | { 0xC0010070, 0xC0010071, CPU_SMM, }, | ||
160 | { 0xC0010111, 0xC0010113, CPU_SMM, }, | ||
161 | { 0xC0010114, 0xC0010118, CPU_SVM, }, | ||
162 | { 0xC0010140, 0xC0010141, CPU_OSVM, }, | ||
163 | { 0xC0011022, 0xC0011023, CPU_CONF, }, | ||
164 | }; | ||
165 | |||
166 | static int is_typeflag_valid(unsigned cpu, unsigned flag) | ||
167 | { | ||
168 | int i; | ||
169 | |||
170 | /* Standard Registers should be always valid */ | ||
171 | if (flag >= CPU_TSS) | ||
172 | return 1; | ||
173 | |||
174 | for (i = 0; i < ARRAY_SIZE(cpu_reg_range); i++) { | ||
175 | if (cpu_reg_range[i].flag == flag) | ||
176 | return 1; | ||
177 | } | ||
178 | |||
179 | /* Invalid */ | ||
180 | return 0; | ||
181 | } | ||
182 | |||
183 | static unsigned get_cpu_range(unsigned cpu, unsigned *min, unsigned *max, | ||
184 | int index, unsigned flag) | ||
185 | { | ||
186 | if (cpu_reg_range[index].flag == flag) { | ||
187 | *min = cpu_reg_range[index].min; | ||
188 | *max = cpu_reg_range[index].max; | ||
189 | } else | ||
190 | *max = 0; | ||
191 | |||
192 | return *max; | ||
193 | } | ||
194 | |||
195 | /* This function can also be called with seq = NULL for printk */ | ||
196 | static void print_cpu_data(struct seq_file *seq, unsigned type, | ||
197 | u32 low, u32 high) | ||
198 | { | ||
199 | struct cpu_private *priv; | ||
200 | u64 val = high; | ||
201 | |||
202 | if (seq) { | ||
203 | priv = seq->private; | ||
204 | if (priv->file) { | ||
205 | val = (val << 32) | low; | ||
206 | seq_printf(seq, "0x%llx\n", val); | ||
207 | } else | ||
208 | seq_printf(seq, " %08x: %08x_%08x\n", | ||
209 | type, high, low); | ||
210 | } else | ||
211 | printk(KERN_INFO " %08x: %08x_%08x\n", type, high, low); | ||
212 | } | ||
213 | |||
214 | /* This function can also be called with seq = NULL for printk */ | ||
215 | static void print_msr(struct seq_file *seq, unsigned cpu, unsigned flag) | ||
216 | { | ||
217 | unsigned msr, msr_min, msr_max; | ||
218 | struct cpu_private *priv; | ||
219 | u32 low, high; | ||
220 | int i; | ||
221 | |||
222 | if (seq) { | ||
223 | priv = seq->private; | ||
224 | if (priv->file) { | ||
225 | if (!rdmsr_safe_on_cpu(priv->cpu, priv->reg, | ||
226 | &low, &high)) | ||
227 | print_cpu_data(seq, priv->reg, low, high); | ||
228 | return; | ||
229 | } | ||
230 | } | ||
231 | |||
232 | for (i = 0; i < ARRAY_SIZE(cpu_reg_range); i++) { | ||
233 | if (!get_cpu_range(cpu, &msr_min, &msr_max, i, flag)) | ||
234 | continue; | ||
235 | |||
236 | for (msr = msr_min; msr <= msr_max; msr++) { | ||
237 | if (rdmsr_safe_on_cpu(cpu, msr, &low, &high)) | ||
238 | continue; | ||
239 | print_cpu_data(seq, msr, low, high); | ||
240 | } | ||
241 | } | ||
242 | } | ||
243 | |||
244 | static void print_tss(void *arg) | ||
245 | { | ||
246 | struct pt_regs *regs = task_pt_regs(current); | ||
247 | struct seq_file *seq = arg; | ||
248 | unsigned int seg; | ||
249 | |||
250 | seq_printf(seq, " RAX\t: %016lx\n", regs->ax); | ||
251 | seq_printf(seq, " RBX\t: %016lx\n", regs->bx); | ||
252 | seq_printf(seq, " RCX\t: %016lx\n", regs->cx); | ||
253 | seq_printf(seq, " RDX\t: %016lx\n", regs->dx); | ||
254 | |||
255 | seq_printf(seq, " RSI\t: %016lx\n", regs->si); | ||
256 | seq_printf(seq, " RDI\t: %016lx\n", regs->di); | ||
257 | seq_printf(seq, " RBP\t: %016lx\n", regs->bp); | ||
258 | seq_printf(seq, " ESP\t: %016lx\n", regs->sp); | ||
259 | |||
260 | #ifdef CONFIG_X86_64 | ||
261 | seq_printf(seq, " R08\t: %016lx\n", regs->r8); | ||
262 | seq_printf(seq, " R09\t: %016lx\n", regs->r9); | ||
263 | seq_printf(seq, " R10\t: %016lx\n", regs->r10); | ||
264 | seq_printf(seq, " R11\t: %016lx\n", regs->r11); | ||
265 | seq_printf(seq, " R12\t: %016lx\n", regs->r12); | ||
266 | seq_printf(seq, " R13\t: %016lx\n", regs->r13); | ||
267 | seq_printf(seq, " R14\t: %016lx\n", regs->r14); | ||
268 | seq_printf(seq, " R15\t: %016lx\n", regs->r15); | ||
269 | #endif | ||
270 | |||
271 | asm("movl %%cs,%0" : "=r" (seg)); | ||
272 | seq_printf(seq, " CS\t: %04x\n", seg); | ||
273 | asm("movl %%ds,%0" : "=r" (seg)); | ||
274 | seq_printf(seq, " DS\t: %04x\n", seg); | ||
275 | seq_printf(seq, " SS\t: %04lx\n", regs->ss & 0xffff); | ||
276 | asm("movl %%es,%0" : "=r" (seg)); | ||
277 | seq_printf(seq, " ES\t: %04x\n", seg); | ||
278 | asm("movl %%fs,%0" : "=r" (seg)); | ||
279 | seq_printf(seq, " FS\t: %04x\n", seg); | ||
280 | asm("movl %%gs,%0" : "=r" (seg)); | ||
281 | seq_printf(seq, " GS\t: %04x\n", seg); | ||
282 | |||
283 | seq_printf(seq, " EFLAGS\t: %016lx\n", regs->flags); | ||
284 | |||
285 | seq_printf(seq, " EIP\t: %016lx\n", regs->ip); | ||
286 | } | ||
287 | |||
288 | static void print_cr(void *arg) | ||
289 | { | ||
290 | struct seq_file *seq = arg; | ||
291 | |||
292 | seq_printf(seq, " cr0\t: %016lx\n", read_cr0()); | ||
293 | seq_printf(seq, " cr2\t: %016lx\n", read_cr2()); | ||
294 | seq_printf(seq, " cr3\t: %016lx\n", read_cr3()); | ||
295 | seq_printf(seq, " cr4\t: %016lx\n", read_cr4_safe()); | ||
296 | #ifdef CONFIG_X86_64 | ||
297 | seq_printf(seq, " cr8\t: %016lx\n", read_cr8()); | ||
298 | #endif | ||
299 | } | ||
300 | |||
301 | static void print_desc_ptr(char *str, struct seq_file *seq, struct desc_ptr dt) | ||
302 | { | ||
303 | seq_printf(seq, " %s\t: %016llx\n", str, (u64)(dt.address | dt.size)); | ||
304 | } | ||
305 | |||
306 | static void print_dt(void *seq) | ||
307 | { | ||
308 | struct desc_ptr dt; | ||
309 | unsigned long ldt; | ||
310 | |||
311 | /* IDT */ | ||
312 | store_idt((struct desc_ptr *)&dt); | ||
313 | print_desc_ptr("IDT", seq, dt); | ||
314 | |||
315 | /* GDT */ | ||
316 | store_gdt((struct desc_ptr *)&dt); | ||
317 | print_desc_ptr("GDT", seq, dt); | ||
318 | |||
319 | /* LDT */ | ||
320 | store_ldt(ldt); | ||
321 | seq_printf(seq, " LDT\t: %016lx\n", ldt); | ||
322 | |||
323 | /* TR */ | ||
324 | store_tr(ldt); | ||
325 | seq_printf(seq, " TR\t: %016lx\n", ldt); | ||
326 | } | ||
327 | |||
328 | static void print_dr(void *arg) | ||
329 | { | ||
330 | struct seq_file *seq = arg; | ||
331 | unsigned long dr; | ||
332 | int i; | ||
333 | |||
334 | for (i = 0; i < 8; i++) { | ||
335 | /* Ignore db4, db5 */ | ||
336 | if ((i == 4) || (i == 5)) | ||
337 | continue; | ||
338 | get_debugreg(dr, i); | ||
339 | seq_printf(seq, " dr%d\t: %016lx\n", i, dr); | ||
340 | } | ||
341 | |||
342 | seq_printf(seq, "\n MSR\t:\n"); | ||
343 | } | ||
344 | |||
345 | static void print_apic(void *arg) | ||
346 | { | ||
347 | struct seq_file *seq = arg; | ||
348 | |||
349 | #ifdef CONFIG_X86_LOCAL_APIC | ||
350 | seq_printf(seq, " LAPIC\t:\n"); | ||
351 | seq_printf(seq, " ID\t\t: %08x\n", apic_read(APIC_ID) >> 24); | ||
352 | seq_printf(seq, " LVR\t\t: %08x\n", apic_read(APIC_LVR)); | ||
353 | seq_printf(seq, " TASKPRI\t: %08x\n", apic_read(APIC_TASKPRI)); | ||
354 | seq_printf(seq, " ARBPRI\t\t: %08x\n", apic_read(APIC_ARBPRI)); | ||
355 | seq_printf(seq, " PROCPRI\t: %08x\n", apic_read(APIC_PROCPRI)); | ||
356 | seq_printf(seq, " LDR\t\t: %08x\n", apic_read(APIC_LDR)); | ||
357 | seq_printf(seq, " DFR\t\t: %08x\n", apic_read(APIC_DFR)); | ||
358 | seq_printf(seq, " SPIV\t\t: %08x\n", apic_read(APIC_SPIV)); | ||
359 | seq_printf(seq, " ISR\t\t: %08x\n", apic_read(APIC_ISR)); | ||
360 | seq_printf(seq, " ESR\t\t: %08x\n", apic_read(APIC_ESR)); | ||
361 | seq_printf(seq, " ICR\t\t: %08x\n", apic_read(APIC_ICR)); | ||
362 | seq_printf(seq, " ICR2\t\t: %08x\n", apic_read(APIC_ICR2)); | ||
363 | seq_printf(seq, " LVTT\t\t: %08x\n", apic_read(APIC_LVTT)); | ||
364 | seq_printf(seq, " LVTTHMR\t: %08x\n", apic_read(APIC_LVTTHMR)); | ||
365 | seq_printf(seq, " LVTPC\t\t: %08x\n", apic_read(APIC_LVTPC)); | ||
366 | seq_printf(seq, " LVT0\t\t: %08x\n", apic_read(APIC_LVT0)); | ||
367 | seq_printf(seq, " LVT1\t\t: %08x\n", apic_read(APIC_LVT1)); | ||
368 | seq_printf(seq, " LVTERR\t\t: %08x\n", apic_read(APIC_LVTERR)); | ||
369 | seq_printf(seq, " TMICT\t\t: %08x\n", apic_read(APIC_TMICT)); | ||
370 | seq_printf(seq, " TMCCT\t\t: %08x\n", apic_read(APIC_TMCCT)); | ||
371 | seq_printf(seq, " TDCR\t\t: %08x\n", apic_read(APIC_TDCR)); | ||
372 | if (boot_cpu_has(X86_FEATURE_EXTAPIC)) { | ||
373 | unsigned int i, v, maxeilvt; | ||
374 | |||
375 | v = apic_read(APIC_EFEAT); | ||
376 | maxeilvt = (v >> 16) & 0xff; | ||
377 | seq_printf(seq, " EFEAT\t\t: %08x\n", v); | ||
378 | seq_printf(seq, " ECTRL\t\t: %08x\n", apic_read(APIC_ECTRL)); | ||
379 | |||
380 | for (i = 0; i < maxeilvt; i++) { | ||
381 | v = apic_read(APIC_EILVTn(i)); | ||
382 | seq_printf(seq, " EILVT%d\t\t: %08x\n", i, v); | ||
383 | } | ||
384 | } | ||
385 | #endif /* CONFIG_X86_LOCAL_APIC */ | ||
386 | seq_printf(seq, "\n MSR\t:\n"); | ||
387 | } | ||
388 | |||
389 | static int cpu_seq_show(struct seq_file *seq, void *v) | ||
390 | { | ||
391 | struct cpu_private *priv = seq->private; | ||
392 | |||
393 | if (priv == NULL) | ||
394 | return -EINVAL; | ||
395 | |||
396 | switch (cpu_base[priv->type].flag) { | ||
397 | case CPU_TSS: | ||
398 | smp_call_function_single(priv->cpu, print_tss, seq, 1); | ||
399 | break; | ||
400 | case CPU_CR: | ||
401 | smp_call_function_single(priv->cpu, print_cr, seq, 1); | ||
402 | break; | ||
403 | case CPU_DT: | ||
404 | smp_call_function_single(priv->cpu, print_dt, seq, 1); | ||
405 | break; | ||
406 | case CPU_DEBUG: | ||
407 | if (priv->file == CPU_INDEX_BIT) | ||
408 | smp_call_function_single(priv->cpu, print_dr, seq, 1); | ||
409 | print_msr(seq, priv->cpu, cpu_base[priv->type].flag); | ||
410 | break; | ||
411 | case CPU_APIC: | ||
412 | if (priv->file == CPU_INDEX_BIT) | ||
413 | smp_call_function_single(priv->cpu, print_apic, seq, 1); | ||
414 | print_msr(seq, priv->cpu, cpu_base[priv->type].flag); | ||
415 | break; | ||
416 | |||
417 | default: | ||
418 | print_msr(seq, priv->cpu, cpu_base[priv->type].flag); | ||
419 | break; | ||
420 | } | ||
421 | seq_printf(seq, "\n"); | ||
422 | |||
423 | return 0; | ||
424 | } | ||
425 | |||
426 | static void *cpu_seq_start(struct seq_file *seq, loff_t *pos) | ||
427 | { | ||
428 | if (*pos == 0) /* One time is enough ;-) */ | ||
429 | return seq; | ||
430 | |||
431 | return NULL; | ||
432 | } | ||
433 | |||
434 | static void *cpu_seq_next(struct seq_file *seq, void *v, loff_t *pos) | ||
435 | { | ||
436 | (*pos)++; | ||
437 | |||
438 | return cpu_seq_start(seq, pos); | ||
439 | } | ||
440 | |||
441 | static void cpu_seq_stop(struct seq_file *seq, void *v) | ||
442 | { | ||
443 | } | ||
444 | |||
445 | static const struct seq_operations cpu_seq_ops = { | ||
446 | .start = cpu_seq_start, | ||
447 | .next = cpu_seq_next, | ||
448 | .stop = cpu_seq_stop, | ||
449 | .show = cpu_seq_show, | ||
450 | }; | ||
451 | |||
452 | static int cpu_seq_open(struct inode *inode, struct file *file) | ||
453 | { | ||
454 | struct cpu_private *priv = inode->i_private; | ||
455 | struct seq_file *seq; | ||
456 | int err; | ||
457 | |||
458 | err = seq_open(file, &cpu_seq_ops); | ||
459 | if (!err) { | ||
460 | seq = file->private_data; | ||
461 | seq->private = priv; | ||
462 | } | ||
463 | |||
464 | return err; | ||
465 | } | ||
466 | |||
467 | static int write_msr(struct cpu_private *priv, u64 val) | ||
468 | { | ||
469 | u32 low, high; | ||
470 | |||
471 | high = (val >> 32) & 0xffffffff; | ||
472 | low = val & 0xffffffff; | ||
473 | |||
474 | if (!wrmsr_safe_on_cpu(priv->cpu, priv->reg, low, high)) | ||
475 | return 0; | ||
476 | |||
477 | return -EPERM; | ||
478 | } | ||
479 | |||
480 | static int write_cpu_register(struct cpu_private *priv, const char *buf) | ||
481 | { | ||
482 | int ret = -EPERM; | ||
483 | u64 val; | ||
484 | |||
485 | ret = strict_strtoull(buf, 0, &val); | ||
486 | if (ret < 0) | ||
487 | return ret; | ||
488 | |||
489 | /* Supporting only MSRs */ | ||
490 | if (priv->type < CPU_TSS_BIT) | ||
491 | return write_msr(priv, val); | ||
492 | |||
493 | return ret; | ||
494 | } | ||
495 | |||
496 | static ssize_t cpu_write(struct file *file, const char __user *ubuf, | ||
497 | size_t count, loff_t *off) | ||
498 | { | ||
499 | struct seq_file *seq = file->private_data; | ||
500 | struct cpu_private *priv = seq->private; | ||
501 | char buf[19]; | ||
502 | |||
503 | if ((priv == NULL) || (count >= sizeof(buf))) | ||
504 | return -EINVAL; | ||
505 | |||
506 | if (copy_from_user(&buf, ubuf, count)) | ||
507 | return -EFAULT; | ||
508 | |||
509 | buf[count] = 0; | ||
510 | |||
511 | if ((cpu_base[priv->type].write) && (cpu_file[priv->file].write)) | ||
512 | if (!write_cpu_register(priv, buf)) | ||
513 | return count; | ||
514 | |||
515 | return -EACCES; | ||
516 | } | ||
517 | |||
518 | static const struct file_operations cpu_fops = { | ||
519 | .owner = THIS_MODULE, | ||
520 | .open = cpu_seq_open, | ||
521 | .read = seq_read, | ||
522 | .write = cpu_write, | ||
523 | .llseek = seq_lseek, | ||
524 | .release = seq_release, | ||
525 | }; | ||
526 | |||
527 | static int cpu_create_file(unsigned cpu, unsigned type, unsigned reg, | ||
528 | unsigned file, struct dentry *dentry) | ||
529 | { | ||
530 | struct cpu_private *priv = NULL; | ||
531 | |||
532 | /* Already intialized */ | ||
533 | if (file == CPU_INDEX_BIT) | ||
534 | if (per_cpu(cpud_arr[type].init, cpu)) | ||
535 | return 0; | ||
536 | |||
537 | priv = kzalloc(sizeof(*priv), GFP_KERNEL); | ||
538 | if (priv == NULL) | ||
539 | return -ENOMEM; | ||
540 | |||
541 | priv->cpu = cpu; | ||
542 | priv->type = type; | ||
543 | priv->reg = reg; | ||
544 | priv->file = file; | ||
545 | mutex_lock(&cpu_debug_lock); | ||
546 | per_cpu(cpud_priv_arr[type], cpu) = priv; | ||
547 | per_cpu(cpud_priv_count, cpu)++; | ||
548 | mutex_unlock(&cpu_debug_lock); | ||
549 | |||
550 | if (file) | ||
551 | debugfs_create_file(cpu_file[file].name, S_IRUGO, | ||
552 | dentry, (void *)priv, &cpu_fops); | ||
553 | else { | ||
554 | debugfs_create_file(cpu_base[type].name, S_IRUGO, | ||
555 | per_cpu(cpud_arr[type].dentry, cpu), | ||
556 | (void *)priv, &cpu_fops); | ||
557 | mutex_lock(&cpu_debug_lock); | ||
558 | per_cpu(cpud_arr[type].init, cpu) = 1; | ||
559 | mutex_unlock(&cpu_debug_lock); | ||
560 | } | ||
561 | |||
562 | return 0; | ||
563 | } | ||
564 | |||
565 | static int cpu_init_regfiles(unsigned cpu, unsigned int type, unsigned reg, | ||
566 | struct dentry *dentry) | ||
567 | { | ||
568 | unsigned file; | ||
569 | int err = 0; | ||
570 | |||
571 | for (file = 0; file < ARRAY_SIZE(cpu_file); file++) { | ||
572 | err = cpu_create_file(cpu, type, reg, file, dentry); | ||
573 | if (err) | ||
574 | return err; | ||
575 | } | ||
576 | |||
577 | return err; | ||
578 | } | ||
579 | |||
580 | static int cpu_init_msr(unsigned cpu, unsigned type, struct dentry *dentry) | ||
581 | { | ||
582 | struct dentry *cpu_dentry = NULL; | ||
583 | unsigned reg, reg_min, reg_max; | ||
584 | int i, err = 0; | ||
585 | char reg_dir[12]; | ||
586 | u32 low, high; | ||
587 | |||
588 | for (i = 0; i < ARRAY_SIZE(cpu_reg_range); i++) { | ||
589 | if (!get_cpu_range(cpu, ®_min, ®_max, i, | ||
590 | cpu_base[type].flag)) | ||
591 | continue; | ||
592 | |||
593 | for (reg = reg_min; reg <= reg_max; reg++) { | ||
594 | if (rdmsr_safe_on_cpu(cpu, reg, &low, &high)) | ||
595 | continue; | ||
596 | |||
597 | sprintf(reg_dir, "0x%x", reg); | ||
598 | cpu_dentry = debugfs_create_dir(reg_dir, dentry); | ||
599 | err = cpu_init_regfiles(cpu, type, reg, cpu_dentry); | ||
600 | if (err) | ||
601 | return err; | ||
602 | } | ||
603 | } | ||
604 | |||
605 | return err; | ||
606 | } | ||
607 | |||
608 | static int cpu_init_allreg(unsigned cpu, struct dentry *dentry) | ||
609 | { | ||
610 | struct dentry *cpu_dentry = NULL; | ||
611 | unsigned type; | ||
612 | int err = 0; | ||
613 | |||
614 | for (type = 0; type < ARRAY_SIZE(cpu_base) - 1; type++) { | ||
615 | if (!is_typeflag_valid(cpu, cpu_base[type].flag)) | ||
616 | continue; | ||
617 | cpu_dentry = debugfs_create_dir(cpu_base[type].name, dentry); | ||
618 | per_cpu(cpud_arr[type].dentry, cpu) = cpu_dentry; | ||
619 | |||
620 | if (type < CPU_TSS_BIT) | ||
621 | err = cpu_init_msr(cpu, type, cpu_dentry); | ||
622 | else | ||
623 | err = cpu_create_file(cpu, type, 0, CPU_INDEX_BIT, | ||
624 | cpu_dentry); | ||
625 | if (err) | ||
626 | return err; | ||
627 | } | ||
628 | |||
629 | return err; | ||
630 | } | ||
631 | |||
632 | static int cpu_init_cpu(void) | ||
633 | { | ||
634 | struct dentry *cpu_dentry = NULL; | ||
635 | struct cpuinfo_x86 *cpui; | ||
636 | char cpu_dir[12]; | ||
637 | unsigned cpu; | ||
638 | int err = 0; | ||
639 | |||
640 | for (cpu = 0; cpu < nr_cpu_ids; cpu++) { | ||
641 | cpui = &cpu_data(cpu); | ||
642 | if (!cpu_has(cpui, X86_FEATURE_MSR)) | ||
643 | continue; | ||
644 | |||
645 | sprintf(cpu_dir, "cpu%d", cpu); | ||
646 | cpu_dentry = debugfs_create_dir(cpu_dir, cpu_debugfs_dir); | ||
647 | err = cpu_init_allreg(cpu, cpu_dentry); | ||
648 | |||
649 | pr_info("cpu%d(%d) debug files %d\n", | ||
650 | cpu, nr_cpu_ids, per_cpu(cpud_priv_count, cpu)); | ||
651 | if (per_cpu(cpud_priv_count, cpu) > MAX_CPU_FILES) { | ||
652 | pr_err("Register files count %d exceeds limit %d\n", | ||
653 | per_cpu(cpud_priv_count, cpu), MAX_CPU_FILES); | ||
654 | per_cpu(cpud_priv_count, cpu) = MAX_CPU_FILES; | ||
655 | err = -ENFILE; | ||
656 | } | ||
657 | if (err) | ||
658 | return err; | ||
659 | } | ||
660 | |||
661 | return err; | ||
662 | } | ||
663 | |||
664 | static int __init cpu_debug_init(void) | ||
665 | { | ||
666 | cpu_debugfs_dir = debugfs_create_dir("cpu", arch_debugfs_dir); | ||
667 | |||
668 | return cpu_init_cpu(); | ||
669 | } | ||
670 | |||
671 | static void __exit cpu_debug_exit(void) | ||
672 | { | ||
673 | int i, cpu; | ||
674 | |||
675 | if (cpu_debugfs_dir) | ||
676 | debugfs_remove_recursive(cpu_debugfs_dir); | ||
677 | |||
678 | for (cpu = 0; cpu < nr_cpu_ids; cpu++) | ||
679 | for (i = 0; i < per_cpu(cpud_priv_count, cpu); i++) | ||
680 | kfree(per_cpu(cpud_priv_arr[i], cpu)); | ||
681 | } | ||
682 | |||
683 | module_init(cpu_debug_init); | ||
684 | module_exit(cpu_debug_exit); | ||
685 | |||
686 | MODULE_AUTHOR("Jaswinder Singh Rajput"); | ||
687 | MODULE_DESCRIPTION("CPU Debug module"); | ||
688 | MODULE_LICENSE("GPL"); | ||
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c index d616c06e99b4..8c1c07073ccc 100644 --- a/arch/x86/kernel/cpu/perf_event.c +++ b/arch/x86/kernel/cpu/perf_event.c | |||
@@ -1343,6 +1343,13 @@ intel_pmu_enable_fixed(struct hw_perf_event *hwc, int __idx) | |||
1343 | bits |= 0x2; | 1343 | bits |= 0x2; |
1344 | if (hwc->config & ARCH_PERFMON_EVENTSEL_OS) | 1344 | if (hwc->config & ARCH_PERFMON_EVENTSEL_OS) |
1345 | bits |= 0x1; | 1345 | bits |= 0x1; |
1346 | |||
1347 | /* | ||
1348 | * ANY bit is supported in v3 and up | ||
1349 | */ | ||
1350 | if (x86_pmu.version > 2 && hwc->config & ARCH_PERFMON_EVENTSEL_ANY) | ||
1351 | bits |= 0x4; | ||
1352 | |||
1346 | bits <<= (idx * 4); | 1353 | bits <<= (idx * 4); |
1347 | mask = 0xfULL << (idx * 4); | 1354 | mask = 0xfULL << (idx * 4); |
1348 | 1355 | ||
diff --git a/arch/x86/kernel/cpuid.c b/arch/x86/kernel/cpuid.c index cb27fd6136c9..83e5e628de73 100644 --- a/arch/x86/kernel/cpuid.c +++ b/arch/x86/kernel/cpuid.c | |||
@@ -229,7 +229,7 @@ static void __exit cpuid_exit(void) | |||
229 | for_each_online_cpu(cpu) | 229 | for_each_online_cpu(cpu) |
230 | cpuid_device_destroy(cpu); | 230 | cpuid_device_destroy(cpu); |
231 | class_destroy(cpuid_class); | 231 | class_destroy(cpuid_class); |
232 | unregister_chrdev(CPUID_MAJOR, "cpu/cpuid"); | 232 | __unregister_chrdev(CPUID_MAJOR, 0, NR_CPUS, "cpu/cpuid"); |
233 | unregister_hotcpu_notifier(&cpuid_class_cpu_notifier); | 233 | unregister_hotcpu_notifier(&cpuid_class_cpu_notifier); |
234 | } | 234 | } |
235 | 235 | ||
diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c index c56bc2873030..6d817554780a 100644 --- a/arch/x86/kernel/dumpstack.c +++ b/arch/x86/kernel/dumpstack.c | |||
@@ -123,13 +123,15 @@ print_context_stack_bp(struct thread_info *tinfo, | |||
123 | while (valid_stack_ptr(tinfo, ret_addr, sizeof(*ret_addr), end)) { | 123 | while (valid_stack_ptr(tinfo, ret_addr, sizeof(*ret_addr), end)) { |
124 | unsigned long addr = *ret_addr; | 124 | unsigned long addr = *ret_addr; |
125 | 125 | ||
126 | if (__kernel_text_address(addr)) { | 126 | if (!__kernel_text_address(addr)) |
127 | ops->address(data, addr, 1); | 127 | break; |
128 | frame = frame->next_frame; | 128 | |
129 | ret_addr = &frame->return_address; | 129 | ops->address(data, addr, 1); |
130 | print_ftrace_graph_addr(addr, data, ops, tinfo, graph); | 130 | frame = frame->next_frame; |
131 | } | 131 | ret_addr = &frame->return_address; |
132 | print_ftrace_graph_addr(addr, data, ops, tinfo, graph); | ||
132 | } | 133 | } |
134 | |||
133 | return (unsigned long)frame; | 135 | return (unsigned long)frame; |
134 | } | 136 | } |
135 | EXPORT_SYMBOL_GPL(print_context_stack_bp); | 137 | EXPORT_SYMBOL_GPL(print_context_stack_bp); |
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c index ba6e65884603..ad80a1c718c6 100644 --- a/arch/x86/kernel/hpet.c +++ b/arch/x86/kernel/hpet.c | |||
@@ -34,6 +34,8 @@ | |||
34 | */ | 34 | */ |
35 | unsigned long hpet_address; | 35 | unsigned long hpet_address; |
36 | u8 hpet_blockid; /* OS timer block num */ | 36 | u8 hpet_blockid; /* OS timer block num */ |
37 | u8 hpet_msi_disable; | ||
38 | |||
37 | #ifdef CONFIG_PCI_MSI | 39 | #ifdef CONFIG_PCI_MSI |
38 | static unsigned long hpet_num_timers; | 40 | static unsigned long hpet_num_timers; |
39 | #endif | 41 | #endif |
@@ -596,6 +598,9 @@ static void hpet_msi_capability_lookup(unsigned int start_timer) | |||
596 | unsigned int num_timers_used = 0; | 598 | unsigned int num_timers_used = 0; |
597 | int i; | 599 | int i; |
598 | 600 | ||
601 | if (hpet_msi_disable) | ||
602 | return; | ||
603 | |||
599 | if (boot_cpu_has(X86_FEATURE_ARAT)) | 604 | if (boot_cpu_has(X86_FEATURE_ARAT)) |
600 | return; | 605 | return; |
601 | id = hpet_readl(HPET_ID); | 606 | id = hpet_readl(HPET_ID); |
@@ -928,6 +933,9 @@ static __init int hpet_late_init(void) | |||
928 | hpet_reserve_platform_timers(hpet_readl(HPET_ID)); | 933 | hpet_reserve_platform_timers(hpet_readl(HPET_ID)); |
929 | hpet_print_config(); | 934 | hpet_print_config(); |
930 | 935 | ||
936 | if (hpet_msi_disable) | ||
937 | return 0; | ||
938 | |||
931 | if (boot_cpu_has(X86_FEATURE_ARAT)) | 939 | if (boot_cpu_has(X86_FEATURE_ARAT)) |
932 | return 0; | 940 | return 0; |
933 | 941 | ||
diff --git a/arch/x86/kernel/microcode_amd.c b/arch/x86/kernel/microcode_amd.c index 37542b67c57e..e1af7c055c7d 100644 --- a/arch/x86/kernel/microcode_amd.c +++ b/arch/x86/kernel/microcode_amd.c | |||
@@ -36,9 +36,6 @@ MODULE_LICENSE("GPL v2"); | |||
36 | #define UCODE_EQUIV_CPU_TABLE_TYPE 0x00000000 | 36 | #define UCODE_EQUIV_CPU_TABLE_TYPE 0x00000000 |
37 | #define UCODE_UCODE_TYPE 0x00000001 | 37 | #define UCODE_UCODE_TYPE 0x00000001 |
38 | 38 | ||
39 | const struct firmware *firmware; | ||
40 | static int supported_cpu; | ||
41 | |||
42 | struct equiv_cpu_entry { | 39 | struct equiv_cpu_entry { |
43 | u32 installed_cpu; | 40 | u32 installed_cpu; |
44 | u32 fixed_errata_mask; | 41 | u32 fixed_errata_mask; |
@@ -77,12 +74,15 @@ static struct equiv_cpu_entry *equiv_cpu_table; | |||
77 | 74 | ||
78 | static int collect_cpu_info_amd(int cpu, struct cpu_signature *csig) | 75 | static int collect_cpu_info_amd(int cpu, struct cpu_signature *csig) |
79 | { | 76 | { |
77 | struct cpuinfo_x86 *c = &cpu_data(cpu); | ||
80 | u32 dummy; | 78 | u32 dummy; |
81 | 79 | ||
82 | if (!supported_cpu) | ||
83 | return -1; | ||
84 | |||
85 | memset(csig, 0, sizeof(*csig)); | 80 | memset(csig, 0, sizeof(*csig)); |
81 | if (c->x86_vendor != X86_VENDOR_AMD || c->x86 < 0x10) { | ||
82 | pr_warning("microcode: CPU%d: AMD CPU family 0x%x not " | ||
83 | "supported\n", cpu, c->x86); | ||
84 | return -1; | ||
85 | } | ||
86 | rdmsr(MSR_AMD64_PATCH_LEVEL, csig->rev, dummy); | 86 | rdmsr(MSR_AMD64_PATCH_LEVEL, csig->rev, dummy); |
87 | pr_info("CPU%d: patch_level=0x%x\n", cpu, csig->rev); | 87 | pr_info("CPU%d: patch_level=0x%x\n", cpu, csig->rev); |
88 | return 0; | 88 | return 0; |
@@ -294,10 +294,14 @@ generic_load_microcode(int cpu, const u8 *data, size_t size) | |||
294 | 294 | ||
295 | static enum ucode_state request_microcode_fw(int cpu, struct device *device) | 295 | static enum ucode_state request_microcode_fw(int cpu, struct device *device) |
296 | { | 296 | { |
297 | const char *fw_name = "amd-ucode/microcode_amd.bin"; | ||
298 | const struct firmware *firmware; | ||
297 | enum ucode_state ret; | 299 | enum ucode_state ret; |
298 | 300 | ||
299 | if (firmware == NULL) | 301 | if (request_firmware(&firmware, fw_name, device)) { |
302 | printk(KERN_ERR "microcode: failed to load file %s\n", fw_name); | ||
300 | return UCODE_NFOUND; | 303 | return UCODE_NFOUND; |
304 | } | ||
301 | 305 | ||
302 | if (*(u32 *)firmware->data != UCODE_MAGIC) { | 306 | if (*(u32 *)firmware->data != UCODE_MAGIC) { |
303 | pr_err("invalid UCODE_MAGIC (0x%08x)\n", | 307 | pr_err("invalid UCODE_MAGIC (0x%08x)\n", |
@@ -307,6 +311,8 @@ static enum ucode_state request_microcode_fw(int cpu, struct device *device) | |||
307 | 311 | ||
308 | ret = generic_load_microcode(cpu, firmware->data, firmware->size); | 312 | ret = generic_load_microcode(cpu, firmware->data, firmware->size); |
309 | 313 | ||
314 | release_firmware(firmware); | ||
315 | |||
310 | return ret; | 316 | return ret; |
311 | } | 317 | } |
312 | 318 | ||
@@ -325,31 +331,7 @@ static void microcode_fini_cpu_amd(int cpu) | |||
325 | uci->mc = NULL; | 331 | uci->mc = NULL; |
326 | } | 332 | } |
327 | 333 | ||
328 | void init_microcode_amd(struct device *device) | ||
329 | { | ||
330 | const char *fw_name = "amd-ucode/microcode_amd.bin"; | ||
331 | struct cpuinfo_x86 *c = &boot_cpu_data; | ||
332 | |||
333 | WARN_ON(c->x86_vendor != X86_VENDOR_AMD); | ||
334 | |||
335 | if (c->x86 < 0x10) { | ||
336 | pr_warning("AMD CPU family 0x%x not supported\n", c->x86); | ||
337 | return; | ||
338 | } | ||
339 | supported_cpu = 1; | ||
340 | |||
341 | if (request_firmware(&firmware, fw_name, device)) | ||
342 | pr_err("failed to load file %s\n", fw_name); | ||
343 | } | ||
344 | |||
345 | void fini_microcode_amd(void) | ||
346 | { | ||
347 | release_firmware(firmware); | ||
348 | } | ||
349 | |||
350 | static struct microcode_ops microcode_amd_ops = { | 334 | static struct microcode_ops microcode_amd_ops = { |
351 | .init = init_microcode_amd, | ||
352 | .fini = fini_microcode_amd, | ||
353 | .request_microcode_user = request_microcode_user, | 335 | .request_microcode_user = request_microcode_user, |
354 | .request_microcode_fw = request_microcode_fw, | 336 | .request_microcode_fw = request_microcode_fw, |
355 | .collect_cpu_info = collect_cpu_info_amd, | 337 | .collect_cpu_info = collect_cpu_info_amd, |
diff --git a/arch/x86/kernel/microcode_core.c b/arch/x86/kernel/microcode_core.c index 0c8632433090..cceb5bc3c3c2 100644 --- a/arch/x86/kernel/microcode_core.c +++ b/arch/x86/kernel/microcode_core.c | |||
@@ -521,9 +521,6 @@ static int __init microcode_init(void) | |||
521 | return PTR_ERR(microcode_pdev); | 521 | return PTR_ERR(microcode_pdev); |
522 | } | 522 | } |
523 | 523 | ||
524 | if (microcode_ops->init) | ||
525 | microcode_ops->init(µcode_pdev->dev); | ||
526 | |||
527 | get_online_cpus(); | 524 | get_online_cpus(); |
528 | mutex_lock(µcode_mutex); | 525 | mutex_lock(µcode_mutex); |
529 | 526 | ||
@@ -566,9 +563,6 @@ static void __exit microcode_exit(void) | |||
566 | 563 | ||
567 | platform_device_unregister(microcode_pdev); | 564 | platform_device_unregister(microcode_pdev); |
568 | 565 | ||
569 | if (microcode_ops->fini) | ||
570 | microcode_ops->fini(); | ||
571 | |||
572 | microcode_ops = NULL; | 566 | microcode_ops = NULL; |
573 | 567 | ||
574 | pr_info("Microcode Update Driver: v" MICROCODE_VERSION " removed.\n"); | 568 | pr_info("Microcode Update Driver: v" MICROCODE_VERSION " removed.\n"); |
diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c index 4bd93c9b2b27..206735ac8cbd 100644 --- a/arch/x86/kernel/msr.c +++ b/arch/x86/kernel/msr.c | |||
@@ -285,7 +285,7 @@ static void __exit msr_exit(void) | |||
285 | for_each_online_cpu(cpu) | 285 | for_each_online_cpu(cpu) |
286 | msr_device_destroy(cpu); | 286 | msr_device_destroy(cpu); |
287 | class_destroy(msr_class); | 287 | class_destroy(msr_class); |
288 | unregister_chrdev(MSR_MAJOR, "cpu/msr"); | 288 | __unregister_chrdev(MSR_MAJOR, 0, NR_CPUS, "cpu/msr"); |
289 | unregister_hotcpu_notifier(&msr_class_cpu_notifier); | 289 | unregister_hotcpu_notifier(&msr_class_cpu_notifier); |
290 | } | 290 | } |
291 | 291 | ||
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index c6ee241c8a98..c9b3522b6b46 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c | |||
@@ -115,18 +115,6 @@ void flush_thread(void) | |||
115 | { | 115 | { |
116 | struct task_struct *tsk = current; | 116 | struct task_struct *tsk = current; |
117 | 117 | ||
118 | #ifdef CONFIG_X86_64 | ||
119 | if (test_tsk_thread_flag(tsk, TIF_ABI_PENDING)) { | ||
120 | clear_tsk_thread_flag(tsk, TIF_ABI_PENDING); | ||
121 | if (test_tsk_thread_flag(tsk, TIF_IA32)) { | ||
122 | clear_tsk_thread_flag(tsk, TIF_IA32); | ||
123 | } else { | ||
124 | set_tsk_thread_flag(tsk, TIF_IA32); | ||
125 | current_thread_info()->status |= TS_COMPAT; | ||
126 | } | ||
127 | } | ||
128 | #endif | ||
129 | |||
130 | flush_ptrace_hw_breakpoint(tsk); | 118 | flush_ptrace_hw_breakpoint(tsk); |
131 | memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array)); | 119 | memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array)); |
132 | /* | 120 | /* |
@@ -288,6 +276,8 @@ int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) | |||
288 | regs.es = __USER_DS; | 276 | regs.es = __USER_DS; |
289 | regs.fs = __KERNEL_PERCPU; | 277 | regs.fs = __KERNEL_PERCPU; |
290 | regs.gs = __KERNEL_STACK_CANARY; | 278 | regs.gs = __KERNEL_STACK_CANARY; |
279 | #else | ||
280 | regs.ss = __KERNEL_DS; | ||
291 | #endif | 281 | #endif |
292 | 282 | ||
293 | regs.orig_ax = -1; | 283 | regs.orig_ax = -1; |
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index f9e033150cdf..41a26a82470a 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c | |||
@@ -521,6 +521,17 @@ void set_personality_64bit(void) | |||
521 | current->personality &= ~READ_IMPLIES_EXEC; | 521 | current->personality &= ~READ_IMPLIES_EXEC; |
522 | } | 522 | } |
523 | 523 | ||
524 | void set_personality_ia32(void) | ||
525 | { | ||
526 | /* inherit personality from parent */ | ||
527 | |||
528 | /* Make sure to be in 32bit mode */ | ||
529 | set_thread_flag(TIF_IA32); | ||
530 | |||
531 | /* Prepare the first "return" to user space */ | ||
532 | current_thread_info()->status |= TS_COMPAT; | ||
533 | } | ||
534 | |||
524 | unsigned long get_wchan(struct task_struct *p) | 535 | unsigned long get_wchan(struct task_struct *p) |
525 | { | 536 | { |
526 | unsigned long stack; | 537 | unsigned long stack; |
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c index 18093d7498f0..12e9feaa2f7a 100644 --- a/arch/x86/kernel/quirks.c +++ b/arch/x86/kernel/quirks.c | |||
@@ -491,6 +491,19 @@ void force_hpet_resume(void) | |||
491 | break; | 491 | break; |
492 | } | 492 | } |
493 | } | 493 | } |
494 | |||
495 | /* | ||
496 | * HPET MSI on some boards (ATI SB700/SB800) has side effect on | ||
497 | * floppy DMA. Disable HPET MSI on such platforms. | ||
498 | */ | ||
499 | static void force_disable_hpet_msi(struct pci_dev *unused) | ||
500 | { | ||
501 | hpet_msi_disable = 1; | ||
502 | } | ||
503 | |||
504 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS, | ||
505 | force_disable_hpet_msi); | ||
506 | |||
494 | #endif | 507 | #endif |
495 | 508 | ||
496 | #if defined(CONFIG_PCI) && defined(CONFIG_NUMA) | 509 | #if defined(CONFIG_PCI) && defined(CONFIG_NUMA) |
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 3063a0c4858b..ba8c045da782 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c | |||
@@ -373,6 +373,12 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode, | |||
373 | if (unlikely(!apic_enabled(apic))) | 373 | if (unlikely(!apic_enabled(apic))) |
374 | break; | 374 | break; |
375 | 375 | ||
376 | if (trig_mode) { | ||
377 | apic_debug("level trig mode for vector %d", vector); | ||
378 | apic_set_vector(vector, apic->regs + APIC_TMR); | ||
379 | } else | ||
380 | apic_clear_vector(vector, apic->regs + APIC_TMR); | ||
381 | |||
376 | result = !apic_test_and_set_irr(vector, apic); | 382 | result = !apic_test_and_set_irr(vector, apic); |
377 | trace_kvm_apic_accept_irq(vcpu->vcpu_id, delivery_mode, | 383 | trace_kvm_apic_accept_irq(vcpu->vcpu_id, delivery_mode, |
378 | trig_mode, vector, !result); | 384 | trig_mode, vector, !result); |
@@ -383,11 +389,6 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode, | |||
383 | break; | 389 | break; |
384 | } | 390 | } |
385 | 391 | ||
386 | if (trig_mode) { | ||
387 | apic_debug("level trig mode for vector %d", vector); | ||
388 | apic_set_vector(vector, apic->regs + APIC_TMR); | ||
389 | } else | ||
390 | apic_clear_vector(vector, apic->regs + APIC_TMR); | ||
391 | kvm_vcpu_kick(vcpu); | 392 | kvm_vcpu_kick(vcpu); |
392 | break; | 393 | break; |
393 | 394 | ||
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 4c3e5b2314cb..89a49fb46a27 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c | |||
@@ -477,7 +477,7 @@ static int host_mapping_level(struct kvm *kvm, gfn_t gfn) | |||
477 | 477 | ||
478 | addr = gfn_to_hva(kvm, gfn); | 478 | addr = gfn_to_hva(kvm, gfn); |
479 | if (kvm_is_error_hva(addr)) | 479 | if (kvm_is_error_hva(addr)) |
480 | return page_size; | 480 | return PT_PAGE_TABLE_LEVEL; |
481 | 481 | ||
482 | down_read(¤t->mm->mmap_sem); | 482 | down_read(¤t->mm->mmap_sem); |
483 | vma = find_vma(current->mm, addr); | 483 | vma = find_vma(current->mm, addr); |
@@ -515,11 +515,9 @@ static int mapping_level(struct kvm_vcpu *vcpu, gfn_t large_gfn) | |||
515 | if (host_level == PT_PAGE_TABLE_LEVEL) | 515 | if (host_level == PT_PAGE_TABLE_LEVEL) |
516 | return host_level; | 516 | return host_level; |
517 | 517 | ||
518 | for (level = PT_DIRECTORY_LEVEL; level <= host_level; ++level) { | 518 | for (level = PT_DIRECTORY_LEVEL; level <= host_level; ++level) |
519 | |||
520 | if (has_wrprotected_page(vcpu->kvm, large_gfn, level)) | 519 | if (has_wrprotected_page(vcpu->kvm, large_gfn, level)) |
521 | break; | 520 | break; |
522 | } | ||
523 | 521 | ||
524 | return level - 1; | 522 | return level - 1; |
525 | } | 523 | } |
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h index 58a0f1e88596..ede2131a9225 100644 --- a/arch/x86/kvm/paging_tmpl.h +++ b/arch/x86/kvm/paging_tmpl.h | |||
@@ -150,7 +150,9 @@ walk: | |||
150 | walker->table_gfn[walker->level - 1] = table_gfn; | 150 | walker->table_gfn[walker->level - 1] = table_gfn; |
151 | walker->pte_gpa[walker->level - 1] = pte_gpa; | 151 | walker->pte_gpa[walker->level - 1] = pte_gpa; |
152 | 152 | ||
153 | kvm_read_guest(vcpu->kvm, pte_gpa, &pte, sizeof(pte)); | 153 | if (kvm_read_guest(vcpu->kvm, pte_gpa, &pte, sizeof(pte))) |
154 | goto not_present; | ||
155 | |||
154 | trace_kvm_mmu_paging_element(pte, walker->level); | 156 | trace_kvm_mmu_paging_element(pte, walker->level); |
155 | 157 | ||
156 | if (!is_present_gpte(pte)) | 158 | if (!is_present_gpte(pte)) |
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 6651dbf58675..1ddcad452add 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -5072,12 +5072,13 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) | |||
5072 | GFP_KERNEL); | 5072 | GFP_KERNEL); |
5073 | if (!vcpu->arch.mce_banks) { | 5073 | if (!vcpu->arch.mce_banks) { |
5074 | r = -ENOMEM; | 5074 | r = -ENOMEM; |
5075 | goto fail_mmu_destroy; | 5075 | goto fail_free_lapic; |
5076 | } | 5076 | } |
5077 | vcpu->arch.mcg_cap = KVM_MAX_MCE_BANKS; | 5077 | vcpu->arch.mcg_cap = KVM_MAX_MCE_BANKS; |
5078 | 5078 | ||
5079 | return 0; | 5079 | return 0; |
5080 | 5080 | fail_free_lapic: | |
5081 | kvm_free_lapic(vcpu); | ||
5081 | fail_mmu_destroy: | 5082 | fail_mmu_destroy: |
5082 | kvm_mmu_destroy(vcpu); | 5083 | kvm_mmu_destroy(vcpu); |
5083 | fail_free_pio_data: | 5084 | fail_free_pio_data: |
@@ -5088,6 +5089,7 @@ fail: | |||
5088 | 5089 | ||
5089 | void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu) | 5090 | void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu) |
5090 | { | 5091 | { |
5092 | kfree(vcpu->arch.mce_banks); | ||
5091 | kvm_free_lapic(vcpu); | 5093 | kvm_free_lapic(vcpu); |
5092 | down_read(&vcpu->kvm->slots_lock); | 5094 | down_read(&vcpu->kvm->slots_lock); |
5093 | kvm_mmu_destroy(vcpu); | 5095 | kvm_mmu_destroy(vcpu); |
diff --git a/arch/x86/mm/kmmio.c b/arch/x86/mm/kmmio.c index c0f6198565eb..536fb6823366 100644 --- a/arch/x86/mm/kmmio.c +++ b/arch/x86/mm/kmmio.c | |||
@@ -538,14 +538,15 @@ static int | |||
538 | kmmio_die_notifier(struct notifier_block *nb, unsigned long val, void *args) | 538 | kmmio_die_notifier(struct notifier_block *nb, unsigned long val, void *args) |
539 | { | 539 | { |
540 | struct die_args *arg = args; | 540 | struct die_args *arg = args; |
541 | unsigned long* dr6_p = (unsigned long *)ERR_PTR(arg->err); | ||
541 | 542 | ||
542 | if (val == DIE_DEBUG && (arg->err & DR_STEP)) | 543 | if (val == DIE_DEBUG && (*dr6_p & DR_STEP)) |
543 | if (post_kmmio_handler(arg->err, arg->regs) == 1) { | 544 | if (post_kmmio_handler(*dr6_p, arg->regs) == 1) { |
544 | /* | 545 | /* |
545 | * Reset the BS bit in dr6 (pointed by args->err) to | 546 | * Reset the BS bit in dr6 (pointed by args->err) to |
546 | * denote completion of processing | 547 | * denote completion of processing |
547 | */ | 548 | */ |
548 | (*(unsigned long *)ERR_PTR(arg->err)) &= ~DR_STEP; | 549 | *dr6_p &= ~DR_STEP; |
549 | return NOTIFY_STOP; | 550 | return NOTIFY_STOP; |
550 | } | 551 | } |
551 | 552 | ||
diff --git a/arch/x86/mm/srat_64.c b/arch/x86/mm/srat_64.c index a27124185fc1..28c68762648f 100644 --- a/arch/x86/mm/srat_64.c +++ b/arch/x86/mm/srat_64.c | |||
@@ -229,9 +229,11 @@ update_nodes_add(int node, unsigned long start, unsigned long end) | |||
229 | printk(KERN_ERR "SRAT: Hotplug zone not continuous. Partly ignored\n"); | 229 | printk(KERN_ERR "SRAT: Hotplug zone not continuous. Partly ignored\n"); |
230 | } | 230 | } |
231 | 231 | ||
232 | if (changed) | 232 | if (changed) { |
233 | node_set(node, cpu_nodes_parsed); | ||
233 | printk(KERN_INFO "SRAT: hot plug zone found %Lx - %Lx\n", | 234 | printk(KERN_INFO "SRAT: hot plug zone found %Lx - %Lx\n", |
234 | nd->start, nd->end); | 235 | nd->start, nd->end); |
236 | } | ||
235 | } | 237 | } |
236 | 238 | ||
237 | /* Callback for parsing of the Proximity Domain <-> Memory Area mappings */ | 239 | /* Callback for parsing of the Proximity Domain <-> Memory Area mappings */ |
diff --git a/arch/x86/pci/Makefile b/arch/x86/pci/Makefile index 564b008a51c7..39fba37f702f 100644 --- a/arch/x86/pci/Makefile +++ b/arch/x86/pci/Makefile | |||
@@ -15,7 +15,7 @@ obj-$(CONFIG_X86_NUMAQ) += numaq_32.o | |||
15 | 15 | ||
16 | obj-y += common.o early.o | 16 | obj-y += common.o early.o |
17 | obj-y += amd_bus.o | 17 | obj-y += amd_bus.o |
18 | obj-$(CONFIG_X86_64) += bus_numa.o intel_bus.o | 18 | obj-$(CONFIG_X86_64) += bus_numa.o |
19 | 19 | ||
20 | ifeq ($(CONFIG_PCI_DEBUG),y) | 20 | ifeq ($(CONFIG_PCI_DEBUG),y) |
21 | EXTRA_CFLAGS += -DDEBUG | 21 | EXTRA_CFLAGS += -DDEBUG |
diff --git a/arch/x86/pci/intel_bus.c b/arch/x86/pci/intel_bus.c deleted file mode 100644 index f81a2fa8fe25..000000000000 --- a/arch/x86/pci/intel_bus.c +++ /dev/null | |||
@@ -1,94 +0,0 @@ | |||
1 | /* | ||
2 | * to read io range from IOH pci conf, need to do it after mmconfig is there | ||
3 | */ | ||
4 | |||
5 | #include <linux/delay.h> | ||
6 | #include <linux/dmi.h> | ||
7 | #include <linux/pci.h> | ||
8 | #include <linux/init.h> | ||
9 | #include <asm/pci_x86.h> | ||
10 | |||
11 | #include "bus_numa.h" | ||
12 | |||
13 | static inline void print_ioh_resources(struct pci_root_info *info) | ||
14 | { | ||
15 | int res_num; | ||
16 | int busnum; | ||
17 | int i; | ||
18 | |||
19 | printk(KERN_DEBUG "IOH bus: [%02x, %02x]\n", | ||
20 | info->bus_min, info->bus_max); | ||
21 | res_num = info->res_num; | ||
22 | busnum = info->bus_min; | ||
23 | for (i = 0; i < res_num; i++) { | ||
24 | struct resource *res; | ||
25 | |||
26 | res = &info->res[i]; | ||
27 | printk(KERN_DEBUG "IOH bus: %02x index %x %s: [%llx, %llx]\n", | ||
28 | busnum, i, | ||
29 | (res->flags & IORESOURCE_IO) ? "io port" : | ||
30 | "mmio", | ||
31 | res->start, res->end); | ||
32 | } | ||
33 | } | ||
34 | |||
35 | #define IOH_LIO 0x108 | ||
36 | #define IOH_LMMIOL 0x10c | ||
37 | #define IOH_LMMIOH 0x110 | ||
38 | #define IOH_LMMIOH_BASEU 0x114 | ||
39 | #define IOH_LMMIOH_LIMITU 0x118 | ||
40 | #define IOH_LCFGBUS 0x11c | ||
41 | |||
42 | static void __devinit pci_root_bus_res(struct pci_dev *dev) | ||
43 | { | ||
44 | u16 word; | ||
45 | u32 dword; | ||
46 | struct pci_root_info *info; | ||
47 | u16 io_base, io_end; | ||
48 | u32 mmiol_base, mmiol_end; | ||
49 | u64 mmioh_base, mmioh_end; | ||
50 | int bus_base, bus_end; | ||
51 | |||
52 | /* some sys doesn't get mmconf enabled */ | ||
53 | if (dev->cfg_size < 0x120) | ||
54 | return; | ||
55 | |||
56 | if (pci_root_num >= PCI_ROOT_NR) { | ||
57 | printk(KERN_DEBUG "intel_bus.c: PCI_ROOT_NR is too small\n"); | ||
58 | return; | ||
59 | } | ||
60 | |||
61 | info = &pci_root_info[pci_root_num]; | ||
62 | pci_root_num++; | ||
63 | |||
64 | pci_read_config_word(dev, IOH_LCFGBUS, &word); | ||
65 | bus_base = (word & 0xff); | ||
66 | bus_end = (word & 0xff00) >> 8; | ||
67 | sprintf(info->name, "PCI Bus #%02x", bus_base); | ||
68 | info->bus_min = bus_base; | ||
69 | info->bus_max = bus_end; | ||
70 | |||
71 | pci_read_config_word(dev, IOH_LIO, &word); | ||
72 | io_base = (word & 0xf0) << (12 - 4); | ||
73 | io_end = (word & 0xf000) | 0xfff; | ||
74 | update_res(info, io_base, io_end, IORESOURCE_IO, 0); | ||
75 | |||
76 | pci_read_config_dword(dev, IOH_LMMIOL, &dword); | ||
77 | mmiol_base = (dword & 0xff00) << (24 - 8); | ||
78 | mmiol_end = (dword & 0xff000000) | 0xffffff; | ||
79 | update_res(info, mmiol_base, mmiol_end, IORESOURCE_MEM, 0); | ||
80 | |||
81 | pci_read_config_dword(dev, IOH_LMMIOH, &dword); | ||
82 | mmioh_base = ((u64)(dword & 0xfc00)) << (26 - 10); | ||
83 | mmioh_end = ((u64)(dword & 0xfc000000) | 0x3ffffff); | ||
84 | pci_read_config_dword(dev, IOH_LMMIOH_BASEU, &dword); | ||
85 | mmioh_base |= ((u64)(dword & 0x7ffff)) << 32; | ||
86 | pci_read_config_dword(dev, IOH_LMMIOH_LIMITU, &dword); | ||
87 | mmioh_end |= ((u64)(dword & 0x7ffff)) << 32; | ||
88 | update_res(info, mmioh_base, mmioh_end, IORESOURCE_MEM, 0); | ||
89 | |||
90 | print_ioh_resources(info); | ||
91 | } | ||
92 | |||
93 | /* intel IOH */ | ||
94 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x342e, pci_root_bus_res); | ||
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index 2b26dd5930c6..36daccb68642 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
@@ -1151,9 +1151,13 @@ asmlinkage void __init xen_start_kernel(void) | |||
1151 | 1151 | ||
1152 | /* keep using Xen gdt for now; no urgent need to change it */ | 1152 | /* keep using Xen gdt for now; no urgent need to change it */ |
1153 | 1153 | ||
1154 | #ifdef CONFIG_X86_32 | ||
1154 | pv_info.kernel_rpl = 1; | 1155 | pv_info.kernel_rpl = 1; |
1155 | if (xen_feature(XENFEAT_supervisor_mode_kernel)) | 1156 | if (xen_feature(XENFEAT_supervisor_mode_kernel)) |
1156 | pv_info.kernel_rpl = 0; | 1157 | pv_info.kernel_rpl = 0; |
1158 | #else | ||
1159 | pv_info.kernel_rpl = 0; | ||
1160 | #endif | ||
1157 | 1161 | ||
1158 | /* set the limit of our address space */ | 1162 | /* set the limit of our address space */ |
1159 | xen_reserve_top(); | 1163 | xen_reserve_top(); |
diff --git a/block/blk-ioc.c b/block/blk-ioc.c index cbdabb0dd6d7..98e6bf61b0ac 100644 --- a/block/blk-ioc.c +++ b/block/blk-ioc.c | |||
@@ -39,8 +39,6 @@ int put_io_context(struct io_context *ioc) | |||
39 | 39 | ||
40 | if (atomic_long_dec_and_test(&ioc->refcount)) { | 40 | if (atomic_long_dec_and_test(&ioc->refcount)) { |
41 | rcu_read_lock(); | 41 | rcu_read_lock(); |
42 | if (ioc->aic && ioc->aic->dtor) | ||
43 | ioc->aic->dtor(ioc->aic); | ||
44 | cfq_dtor(ioc); | 42 | cfq_dtor(ioc); |
45 | rcu_read_unlock(); | 43 | rcu_read_unlock(); |
46 | 44 | ||
@@ -76,8 +74,6 @@ void exit_io_context(struct task_struct *task) | |||
76 | task_unlock(task); | 74 | task_unlock(task); |
77 | 75 | ||
78 | if (atomic_dec_and_test(&ioc->nr_tasks)) { | 76 | if (atomic_dec_and_test(&ioc->nr_tasks)) { |
79 | if (ioc->aic && ioc->aic->exit) | ||
80 | ioc->aic->exit(ioc->aic); | ||
81 | cfq_exit(ioc); | 77 | cfq_exit(ioc); |
82 | 78 | ||
83 | } | 79 | } |
@@ -97,7 +93,6 @@ struct io_context *alloc_io_context(gfp_t gfp_flags, int node) | |||
97 | ret->ioprio = 0; | 93 | ret->ioprio = 0; |
98 | ret->last_waited = jiffies; /* doesn't matter... */ | 94 | ret->last_waited = jiffies; /* doesn't matter... */ |
99 | ret->nr_batch_requests = 0; /* because this is 0 */ | 95 | ret->nr_batch_requests = 0; /* because this is 0 */ |
100 | ret->aic = NULL; | ||
101 | INIT_RADIX_TREE(&ret->radix_root, GFP_ATOMIC | __GFP_HIGH); | 96 | INIT_RADIX_TREE(&ret->radix_root, GFP_ATOMIC | __GFP_HIGH); |
102 | INIT_HLIST_HEAD(&ret->cic_list); | 97 | INIT_HLIST_HEAD(&ret->cic_list); |
103 | ret->ioc_data = NULL; | 98 | ret->ioc_data = NULL; |
diff --git a/block/blk-settings.c b/block/blk-settings.c index d52d4adc440b..5eeb9e0d256e 100644 --- a/block/blk-settings.c +++ b/block/blk-settings.c | |||
@@ -528,7 +528,7 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, | |||
528 | sector_t offset) | 528 | sector_t offset) |
529 | { | 529 | { |
530 | sector_t alignment; | 530 | sector_t alignment; |
531 | unsigned int top, bottom; | 531 | unsigned int top, bottom, ret = 0; |
532 | 532 | ||
533 | t->max_sectors = min_not_zero(t->max_sectors, b->max_sectors); | 533 | t->max_sectors = min_not_zero(t->max_sectors, b->max_sectors); |
534 | t->max_hw_sectors = min_not_zero(t->max_hw_sectors, b->max_hw_sectors); | 534 | t->max_hw_sectors = min_not_zero(t->max_hw_sectors, b->max_hw_sectors); |
@@ -546,6 +546,8 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, | |||
546 | t->max_segment_size = min_not_zero(t->max_segment_size, | 546 | t->max_segment_size = min_not_zero(t->max_segment_size, |
547 | b->max_segment_size); | 547 | b->max_segment_size); |
548 | 548 | ||
549 | t->misaligned |= b->misaligned; | ||
550 | |||
549 | alignment = queue_limit_alignment_offset(b, offset); | 551 | alignment = queue_limit_alignment_offset(b, offset); |
550 | 552 | ||
551 | /* Bottom device has different alignment. Check that it is | 553 | /* Bottom device has different alignment. Check that it is |
@@ -558,8 +560,10 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, | |||
558 | bottom = max(b->physical_block_size, b->io_min) + alignment; | 560 | bottom = max(b->physical_block_size, b->io_min) + alignment; |
559 | 561 | ||
560 | /* Verify that top and bottom intervals line up */ | 562 | /* Verify that top and bottom intervals line up */ |
561 | if (max(top, bottom) & (min(top, bottom) - 1)) | 563 | if (max(top, bottom) & (min(top, bottom) - 1)) { |
562 | t->misaligned = 1; | 564 | t->misaligned = 1; |
565 | ret = -1; | ||
566 | } | ||
563 | } | 567 | } |
564 | 568 | ||
565 | t->logical_block_size = max(t->logical_block_size, | 569 | t->logical_block_size = max(t->logical_block_size, |
@@ -578,18 +582,21 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, | |||
578 | if (t->physical_block_size & (t->logical_block_size - 1)) { | 582 | if (t->physical_block_size & (t->logical_block_size - 1)) { |
579 | t->physical_block_size = t->logical_block_size; | 583 | t->physical_block_size = t->logical_block_size; |
580 | t->misaligned = 1; | 584 | t->misaligned = 1; |
585 | ret = -1; | ||
581 | } | 586 | } |
582 | 587 | ||
583 | /* Minimum I/O a multiple of the physical block size? */ | 588 | /* Minimum I/O a multiple of the physical block size? */ |
584 | if (t->io_min & (t->physical_block_size - 1)) { | 589 | if (t->io_min & (t->physical_block_size - 1)) { |
585 | t->io_min = t->physical_block_size; | 590 | t->io_min = t->physical_block_size; |
586 | t->misaligned = 1; | 591 | t->misaligned = 1; |
592 | ret = -1; | ||
587 | } | 593 | } |
588 | 594 | ||
589 | /* Optimal I/O a multiple of the physical block size? */ | 595 | /* Optimal I/O a multiple of the physical block size? */ |
590 | if (t->io_opt & (t->physical_block_size - 1)) { | 596 | if (t->io_opt & (t->physical_block_size - 1)) { |
591 | t->io_opt = 0; | 597 | t->io_opt = 0; |
592 | t->misaligned = 1; | 598 | t->misaligned = 1; |
599 | ret = -1; | ||
593 | } | 600 | } |
594 | 601 | ||
595 | /* Find lowest common alignment_offset */ | 602 | /* Find lowest common alignment_offset */ |
@@ -597,8 +604,10 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, | |||
597 | & (max(t->physical_block_size, t->io_min) - 1); | 604 | & (max(t->physical_block_size, t->io_min) - 1); |
598 | 605 | ||
599 | /* Verify that new alignment_offset is on a logical block boundary */ | 606 | /* Verify that new alignment_offset is on a logical block boundary */ |
600 | if (t->alignment_offset & (t->logical_block_size - 1)) | 607 | if (t->alignment_offset & (t->logical_block_size - 1)) { |
601 | t->misaligned = 1; | 608 | t->misaligned = 1; |
609 | ret = -1; | ||
610 | } | ||
602 | 611 | ||
603 | /* Discard alignment and granularity */ | 612 | /* Discard alignment and granularity */ |
604 | if (b->discard_granularity) { | 613 | if (b->discard_granularity) { |
@@ -626,11 +635,33 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, | |||
626 | (t->discard_granularity - 1); | 635 | (t->discard_granularity - 1); |
627 | } | 636 | } |
628 | 637 | ||
629 | return t->misaligned ? -1 : 0; | 638 | return ret; |
630 | } | 639 | } |
631 | EXPORT_SYMBOL(blk_stack_limits); | 640 | EXPORT_SYMBOL(blk_stack_limits); |
632 | 641 | ||
633 | /** | 642 | /** |
643 | * bdev_stack_limits - adjust queue limits for stacked drivers | ||
644 | * @t: the stacking driver limits (top device) | ||
645 | * @bdev: the component block_device (bottom) | ||
646 | * @start: first data sector within component device | ||
647 | * | ||
648 | * Description: | ||
649 | * Merges queue limits for a top device and a block_device. Returns | ||
650 | * 0 if alignment didn't change. Returns -1 if adding the bottom | ||
651 | * device caused misalignment. | ||
652 | */ | ||
653 | int bdev_stack_limits(struct queue_limits *t, struct block_device *bdev, | ||
654 | sector_t start) | ||
655 | { | ||
656 | struct request_queue *bq = bdev_get_queue(bdev); | ||
657 | |||
658 | start += get_start_sect(bdev); | ||
659 | |||
660 | return blk_stack_limits(t, &bq->limits, start << 9); | ||
661 | } | ||
662 | EXPORT_SYMBOL(bdev_stack_limits); | ||
663 | |||
664 | /** | ||
634 | * disk_stack_limits - adjust queue limits for stacked drivers | 665 | * disk_stack_limits - adjust queue limits for stacked drivers |
635 | * @disk: MD/DM gendisk (top) | 666 | * @disk: MD/DM gendisk (top) |
636 | * @bdev: the underlying block device (bottom) | 667 | * @bdev: the underlying block device (bottom) |
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 918c7fd9aeb1..ee130f14d1fc 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -3077,6 +3077,12 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq, | |||
3077 | return true; | 3077 | return true; |
3078 | 3078 | ||
3079 | /* | 3079 | /* |
3080 | * Don't allow a non-RT request to preempt an ongoing RT cfqq timeslice. | ||
3081 | */ | ||
3082 | if (cfq_class_rt(cfqq) && !cfq_class_rt(new_cfqq)) | ||
3083 | return false; | ||
3084 | |||
3085 | /* | ||
3080 | * if the new request is sync, but the currently running queue is | 3086 | * if the new request is sync, but the currently running queue is |
3081 | * not, let the sync request have priority. | 3087 | * not, let the sync request have priority. |
3082 | */ | 3088 | */ |
diff --git a/block/genhd.c b/block/genhd.c index b11a4ad7d571..d13ba76a169c 100644 --- a/block/genhd.c +++ b/block/genhd.c | |||
@@ -867,7 +867,7 @@ static ssize_t disk_discard_alignment_show(struct device *dev, | |||
867 | { | 867 | { |
868 | struct gendisk *disk = dev_to_disk(dev); | 868 | struct gendisk *disk = dev_to_disk(dev); |
869 | 869 | ||
870 | return sprintf(buf, "%u\n", queue_discard_alignment(disk->queue)); | 870 | return sprintf(buf, "%d\n", queue_discard_alignment(disk->queue)); |
871 | } | 871 | } |
872 | 872 | ||
873 | static DEVICE_ATTR(range, S_IRUGO, disk_range_show, NULL); | 873 | static DEVICE_ATTR(range, S_IRUGO, disk_range_show, NULL); |
diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c index 97991ac6f5fc..7e52295f1ecc 100644 --- a/drivers/acpi/acpi_pad.c +++ b/drivers/acpi/acpi_pad.c | |||
@@ -208,7 +208,7 @@ static int power_saving_thread(void *data) | |||
208 | * the mechanism only works when all CPUs have RT task running, | 208 | * the mechanism only works when all CPUs have RT task running, |
209 | * as if one CPU hasn't RT task, RT task from other CPUs will | 209 | * as if one CPU hasn't RT task, RT task from other CPUs will |
210 | * borrow CPU time from this CPU and cause RT task use > 95% | 210 | * borrow CPU time from this CPU and cause RT task use > 95% |
211 | * CPU time. To make 'avoid staration' work, takes a nap here. | 211 | * CPU time. To make 'avoid starvation' work, takes a nap here. |
212 | */ | 212 | */ |
213 | if (do_sleep) | 213 | if (do_sleep) |
214 | schedule_timeout_killable(HZ * idle_pct / 100); | 214 | schedule_timeout_killable(HZ * idle_pct / 100); |
@@ -222,14 +222,18 @@ static struct task_struct *ps_tsks[NR_CPUS]; | |||
222 | static unsigned int ps_tsk_num; | 222 | static unsigned int ps_tsk_num; |
223 | static int create_power_saving_task(void) | 223 | static int create_power_saving_task(void) |
224 | { | 224 | { |
225 | int rc = -ENOMEM; | ||
226 | |||
225 | ps_tsks[ps_tsk_num] = kthread_run(power_saving_thread, | 227 | ps_tsks[ps_tsk_num] = kthread_run(power_saving_thread, |
226 | (void *)(unsigned long)ps_tsk_num, | 228 | (void *)(unsigned long)ps_tsk_num, |
227 | "power_saving/%d", ps_tsk_num); | 229 | "power_saving/%d", ps_tsk_num); |
228 | if (ps_tsks[ps_tsk_num]) { | 230 | rc = IS_ERR(ps_tsks[ps_tsk_num]) ? PTR_ERR(ps_tsks[ps_tsk_num]) : 0; |
231 | if (!rc) | ||
229 | ps_tsk_num++; | 232 | ps_tsk_num++; |
230 | return 0; | 233 | else |
231 | } | 234 | ps_tsks[ps_tsk_num] = NULL; |
232 | return -EINVAL; | 235 | |
236 | return rc; | ||
233 | } | 237 | } |
234 | 238 | ||
235 | static void destroy_power_saving_task(void) | 239 | static void destroy_power_saving_task(void) |
@@ -237,6 +241,7 @@ static void destroy_power_saving_task(void) | |||
237 | if (ps_tsk_num > 0) { | 241 | if (ps_tsk_num > 0) { |
238 | ps_tsk_num--; | 242 | ps_tsk_num--; |
239 | kthread_stop(ps_tsks[ps_tsk_num]); | 243 | kthread_stop(ps_tsks[ps_tsk_num]); |
244 | ps_tsks[ps_tsk_num] = NULL; | ||
240 | } | 245 | } |
241 | } | 246 | } |
242 | 247 | ||
@@ -253,7 +258,7 @@ static void set_power_saving_task_num(unsigned int num) | |||
253 | } | 258 | } |
254 | } | 259 | } |
255 | 260 | ||
256 | static int acpi_pad_idle_cpus(unsigned int num_cpus) | 261 | static void acpi_pad_idle_cpus(unsigned int num_cpus) |
257 | { | 262 | { |
258 | get_online_cpus(); | 263 | get_online_cpus(); |
259 | 264 | ||
@@ -261,7 +266,6 @@ static int acpi_pad_idle_cpus(unsigned int num_cpus) | |||
261 | set_power_saving_task_num(num_cpus); | 266 | set_power_saving_task_num(num_cpus); |
262 | 267 | ||
263 | put_online_cpus(); | 268 | put_online_cpus(); |
264 | return 0; | ||
265 | } | 269 | } |
266 | 270 | ||
267 | static uint32_t acpi_pad_idle_cpus_num(void) | 271 | static uint32_t acpi_pad_idle_cpus_num(void) |
@@ -369,19 +373,21 @@ static void acpi_pad_remove_sysfs(struct acpi_device *device) | |||
369 | static int acpi_pad_pur(acpi_handle handle, int *num_cpus) | 373 | static int acpi_pad_pur(acpi_handle handle, int *num_cpus) |
370 | { | 374 | { |
371 | struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL}; | 375 | struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL}; |
372 | acpi_status status; | ||
373 | union acpi_object *package; | 376 | union acpi_object *package; |
374 | int rev, num, ret = -EINVAL; | 377 | int rev, num, ret = -EINVAL; |
375 | 378 | ||
376 | status = acpi_evaluate_object(handle, "_PUR", NULL, &buffer); | 379 | if (ACPI_FAILURE(acpi_evaluate_object(handle, "_PUR", NULL, &buffer))) |
377 | if (ACPI_FAILURE(status)) | 380 | return -EINVAL; |
381 | |||
382 | if (!buffer.length || !buffer.pointer) | ||
378 | return -EINVAL; | 383 | return -EINVAL; |
384 | |||
379 | package = buffer.pointer; | 385 | package = buffer.pointer; |
380 | if (package->type != ACPI_TYPE_PACKAGE || package->package.count != 2) | 386 | if (package->type != ACPI_TYPE_PACKAGE || package->package.count != 2) |
381 | goto out; | 387 | goto out; |
382 | rev = package->package.elements[0].integer.value; | 388 | rev = package->package.elements[0].integer.value; |
383 | num = package->package.elements[1].integer.value; | 389 | num = package->package.elements[1].integer.value; |
384 | if (rev != 1) | 390 | if (rev != 1 || num < 0) |
385 | goto out; | 391 | goto out; |
386 | *num_cpus = num; | 392 | *num_cpus = num; |
387 | ret = 0; | 393 | ret = 0; |
@@ -410,7 +416,7 @@ static void acpi_pad_ost(acpi_handle handle, int stat, | |||
410 | 416 | ||
411 | static void acpi_pad_handle_notify(acpi_handle handle) | 417 | static void acpi_pad_handle_notify(acpi_handle handle) |
412 | { | 418 | { |
413 | int num_cpus, ret; | 419 | int num_cpus; |
414 | uint32_t idle_cpus; | 420 | uint32_t idle_cpus; |
415 | 421 | ||
416 | mutex_lock(&isolated_cpus_lock); | 422 | mutex_lock(&isolated_cpus_lock); |
@@ -418,12 +424,9 @@ static void acpi_pad_handle_notify(acpi_handle handle) | |||
418 | mutex_unlock(&isolated_cpus_lock); | 424 | mutex_unlock(&isolated_cpus_lock); |
419 | return; | 425 | return; |
420 | } | 426 | } |
421 | ret = acpi_pad_idle_cpus(num_cpus); | 427 | acpi_pad_idle_cpus(num_cpus); |
422 | idle_cpus = acpi_pad_idle_cpus_num(); | 428 | idle_cpus = acpi_pad_idle_cpus_num(); |
423 | if (!ret) | 429 | acpi_pad_ost(handle, 0, idle_cpus); |
424 | acpi_pad_ost(handle, 0, idle_cpus); | ||
425 | else | ||
426 | acpi_pad_ost(handle, 1, 0); | ||
427 | mutex_unlock(&isolated_cpus_lock); | 430 | mutex_unlock(&isolated_cpus_lock); |
428 | } | 431 | } |
429 | 432 | ||
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index cf761b904e4a..a52126e46307 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c | |||
@@ -490,9 +490,14 @@ static void acpi_bus_osc_support(void) | |||
490 | 490 | ||
491 | capbuf[OSC_QUERY_TYPE] = OSC_QUERY_ENABLE; | 491 | capbuf[OSC_QUERY_TYPE] = OSC_QUERY_ENABLE; |
492 | capbuf[OSC_SUPPORT_TYPE] = OSC_SB_PR3_SUPPORT; /* _PR3 is in use */ | 492 | capbuf[OSC_SUPPORT_TYPE] = OSC_SB_PR3_SUPPORT; /* _PR3 is in use */ |
493 | #ifdef CONFIG_ACPI_PROCESSOR_AGGREGATOR | 493 | #if defined(CONFIG_ACPI_PROCESSOR_AGGREGATOR) ||\ |
494 | defined(CONFIG_ACPI_PROCESSOR_AGGREGATOR_MODULE) | ||
494 | capbuf[OSC_SUPPORT_TYPE] |= OSC_SB_PAD_SUPPORT; | 495 | capbuf[OSC_SUPPORT_TYPE] |= OSC_SB_PAD_SUPPORT; |
495 | #endif | 496 | #endif |
497 | |||
498 | #if defined(CONFIG_ACPI_PROCESSOR) || defined(CONFIG_ACPI_PROCESSOR_MODULE) | ||
499 | capbuf[OSC_SUPPORT_TYPE] |= OSC_SB_PPC_OST_SUPPORT; | ||
500 | #endif | ||
496 | if (ACPI_FAILURE(acpi_get_handle(NULL, "\\_SB", &handle))) | 501 | if (ACPI_FAILURE(acpi_get_handle(NULL, "\\_SB", &handle))) |
497 | return; | 502 | return; |
498 | if (ACPI_SUCCESS(acpi_run_osc(handle, &context))) | 503 | if (ACPI_SUCCESS(acpi_run_osc(handle, &context))) |
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index fd1801bdee66..d6471bb6852f 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c | |||
@@ -201,14 +201,13 @@ unlock: | |||
201 | spin_unlock_irqrestore(&ec->curr_lock, flags); | 201 | spin_unlock_irqrestore(&ec->curr_lock, flags); |
202 | } | 202 | } |
203 | 203 | ||
204 | static void acpi_ec_gpe_query(void *ec_cxt); | 204 | static int acpi_ec_sync_query(struct acpi_ec *ec); |
205 | 205 | ||
206 | static int ec_check_sci(struct acpi_ec *ec, u8 state) | 206 | static int ec_check_sci_sync(struct acpi_ec *ec, u8 state) |
207 | { | 207 | { |
208 | if (state & ACPI_EC_FLAG_SCI) { | 208 | if (state & ACPI_EC_FLAG_SCI) { |
209 | if (!test_and_set_bit(EC_FLAGS_QUERY_PENDING, &ec->flags)) | 209 | if (!test_and_set_bit(EC_FLAGS_QUERY_PENDING, &ec->flags)) |
210 | return acpi_os_execute(OSL_EC_BURST_HANDLER, | 210 | return acpi_ec_sync_query(ec); |
211 | acpi_ec_gpe_query, ec); | ||
212 | } | 211 | } |
213 | return 0; | 212 | return 0; |
214 | } | 213 | } |
@@ -249,11 +248,6 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec, | |||
249 | { | 248 | { |
250 | unsigned long tmp; | 249 | unsigned long tmp; |
251 | int ret = 0; | 250 | int ret = 0; |
252 | pr_debug(PREFIX "transaction start\n"); | ||
253 | /* disable GPE during transaction if storm is detected */ | ||
254 | if (test_bit(EC_FLAGS_GPE_STORM, &ec->flags)) { | ||
255 | acpi_disable_gpe(NULL, ec->gpe); | ||
256 | } | ||
257 | if (EC_FLAGS_MSI) | 251 | if (EC_FLAGS_MSI) |
258 | udelay(ACPI_EC_MSI_UDELAY); | 252 | udelay(ACPI_EC_MSI_UDELAY); |
259 | /* start transaction */ | 253 | /* start transaction */ |
@@ -265,20 +259,9 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec, | |||
265 | clear_bit(EC_FLAGS_QUERY_PENDING, &ec->flags); | 259 | clear_bit(EC_FLAGS_QUERY_PENDING, &ec->flags); |
266 | spin_unlock_irqrestore(&ec->curr_lock, tmp); | 260 | spin_unlock_irqrestore(&ec->curr_lock, tmp); |
267 | ret = ec_poll(ec); | 261 | ret = ec_poll(ec); |
268 | pr_debug(PREFIX "transaction end\n"); | ||
269 | spin_lock_irqsave(&ec->curr_lock, tmp); | 262 | spin_lock_irqsave(&ec->curr_lock, tmp); |
270 | ec->curr = NULL; | 263 | ec->curr = NULL; |
271 | spin_unlock_irqrestore(&ec->curr_lock, tmp); | 264 | spin_unlock_irqrestore(&ec->curr_lock, tmp); |
272 | if (test_bit(EC_FLAGS_GPE_STORM, &ec->flags)) { | ||
273 | /* check if we received SCI during transaction */ | ||
274 | ec_check_sci(ec, acpi_ec_read_status(ec)); | ||
275 | /* it is safe to enable GPE outside of transaction */ | ||
276 | acpi_enable_gpe(NULL, ec->gpe); | ||
277 | } else if (t->irq_count > ACPI_EC_STORM_THRESHOLD) { | ||
278 | pr_info(PREFIX "GPE storm detected, " | ||
279 | "transactions will use polling mode\n"); | ||
280 | set_bit(EC_FLAGS_GPE_STORM, &ec->flags); | ||
281 | } | ||
282 | return ret; | 265 | return ret; |
283 | } | 266 | } |
284 | 267 | ||
@@ -321,7 +304,26 @@ static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t) | |||
321 | status = -ETIME; | 304 | status = -ETIME; |
322 | goto end; | 305 | goto end; |
323 | } | 306 | } |
307 | pr_debug(PREFIX "transaction start\n"); | ||
308 | /* disable GPE during transaction if storm is detected */ | ||
309 | if (test_bit(EC_FLAGS_GPE_STORM, &ec->flags)) { | ||
310 | acpi_disable_gpe(NULL, ec->gpe); | ||
311 | } | ||
312 | |||
324 | status = acpi_ec_transaction_unlocked(ec, t); | 313 | status = acpi_ec_transaction_unlocked(ec, t); |
314 | |||
315 | /* check if we received SCI during transaction */ | ||
316 | ec_check_sci_sync(ec, acpi_ec_read_status(ec)); | ||
317 | if (test_bit(EC_FLAGS_GPE_STORM, &ec->flags)) { | ||
318 | msleep(1); | ||
319 | /* it is safe to enable GPE outside of transaction */ | ||
320 | acpi_enable_gpe(NULL, ec->gpe); | ||
321 | } else if (t->irq_count > ACPI_EC_STORM_THRESHOLD) { | ||
322 | pr_info(PREFIX "GPE storm detected, " | ||
323 | "transactions will use polling mode\n"); | ||
324 | set_bit(EC_FLAGS_GPE_STORM, &ec->flags); | ||
325 | } | ||
326 | pr_debug(PREFIX "transaction end\n"); | ||
325 | end: | 327 | end: |
326 | if (ec->global_lock) | 328 | if (ec->global_lock) |
327 | acpi_release_global_lock(glk); | 329 | acpi_release_global_lock(glk); |
@@ -443,7 +445,7 @@ int ec_transaction(u8 command, | |||
443 | 445 | ||
444 | EXPORT_SYMBOL(ec_transaction); | 446 | EXPORT_SYMBOL(ec_transaction); |
445 | 447 | ||
446 | static int acpi_ec_query(struct acpi_ec *ec, u8 * data) | 448 | static int acpi_ec_query_unlocked(struct acpi_ec *ec, u8 * data) |
447 | { | 449 | { |
448 | int result; | 450 | int result; |
449 | u8 d; | 451 | u8 d; |
@@ -452,20 +454,16 @@ static int acpi_ec_query(struct acpi_ec *ec, u8 * data) | |||
452 | .wlen = 0, .rlen = 1}; | 454 | .wlen = 0, .rlen = 1}; |
453 | if (!ec || !data) | 455 | if (!ec || !data) |
454 | return -EINVAL; | 456 | return -EINVAL; |
455 | |||
456 | /* | 457 | /* |
457 | * Query the EC to find out which _Qxx method we need to evaluate. | 458 | * Query the EC to find out which _Qxx method we need to evaluate. |
458 | * Note that successful completion of the query causes the ACPI_EC_SCI | 459 | * Note that successful completion of the query causes the ACPI_EC_SCI |
459 | * bit to be cleared (and thus clearing the interrupt source). | 460 | * bit to be cleared (and thus clearing the interrupt source). |
460 | */ | 461 | */ |
461 | 462 | result = acpi_ec_transaction_unlocked(ec, &t); | |
462 | result = acpi_ec_transaction(ec, &t); | ||
463 | if (result) | 463 | if (result) |
464 | return result; | 464 | return result; |
465 | |||
466 | if (!d) | 465 | if (!d) |
467 | return -ENODATA; | 466 | return -ENODATA; |
468 | |||
469 | *data = d; | 467 | *data = d; |
470 | return 0; | 468 | return 0; |
471 | } | 469 | } |
@@ -509,43 +507,79 @@ void acpi_ec_remove_query_handler(struct acpi_ec *ec, u8 query_bit) | |||
509 | 507 | ||
510 | EXPORT_SYMBOL_GPL(acpi_ec_remove_query_handler); | 508 | EXPORT_SYMBOL_GPL(acpi_ec_remove_query_handler); |
511 | 509 | ||
512 | static void acpi_ec_gpe_query(void *ec_cxt) | 510 | static void acpi_ec_run(void *cxt) |
513 | { | 511 | { |
514 | struct acpi_ec *ec = ec_cxt; | 512 | struct acpi_ec_query_handler *handler = cxt; |
515 | u8 value = 0; | 513 | if (!handler) |
516 | struct acpi_ec_query_handler *handler, copy; | ||
517 | |||
518 | if (!ec || acpi_ec_query(ec, &value)) | ||
519 | return; | 514 | return; |
520 | mutex_lock(&ec->lock); | 515 | pr_debug(PREFIX "start query execution\n"); |
516 | if (handler->func) | ||
517 | handler->func(handler->data); | ||
518 | else if (handler->handle) | ||
519 | acpi_evaluate_object(handler->handle, NULL, NULL, NULL); | ||
520 | pr_debug(PREFIX "stop query execution\n"); | ||
521 | kfree(handler); | ||
522 | } | ||
523 | |||
524 | static int acpi_ec_sync_query(struct acpi_ec *ec) | ||
525 | { | ||
526 | u8 value = 0; | ||
527 | int status; | ||
528 | struct acpi_ec_query_handler *handler, *copy; | ||
529 | if ((status = acpi_ec_query_unlocked(ec, &value))) | ||
530 | return status; | ||
521 | list_for_each_entry(handler, &ec->list, node) { | 531 | list_for_each_entry(handler, &ec->list, node) { |
522 | if (value == handler->query_bit) { | 532 | if (value == handler->query_bit) { |
523 | /* have custom handler for this bit */ | 533 | /* have custom handler for this bit */ |
524 | memcpy(©, handler, sizeof(copy)); | 534 | copy = kmalloc(sizeof(*handler), GFP_KERNEL); |
525 | mutex_unlock(&ec->lock); | 535 | if (!copy) |
526 | if (copy.func) { | 536 | return -ENOMEM; |
527 | copy.func(copy.data); | 537 | memcpy(copy, handler, sizeof(*copy)); |
528 | } else if (copy.handle) { | 538 | pr_debug(PREFIX "push query execution (0x%2x) on queue\n", value); |
529 | acpi_evaluate_object(copy.handle, NULL, NULL, NULL); | 539 | return acpi_os_execute((copy->func) ? |
530 | } | 540 | OSL_NOTIFY_HANDLER : OSL_GPE_HANDLER, |
531 | return; | 541 | acpi_ec_run, copy); |
532 | } | 542 | } |
533 | } | 543 | } |
544 | return 0; | ||
545 | } | ||
546 | |||
547 | static void acpi_ec_gpe_query(void *ec_cxt) | ||
548 | { | ||
549 | struct acpi_ec *ec = ec_cxt; | ||
550 | if (!ec) | ||
551 | return; | ||
552 | mutex_lock(&ec->lock); | ||
553 | acpi_ec_sync_query(ec); | ||
534 | mutex_unlock(&ec->lock); | 554 | mutex_unlock(&ec->lock); |
535 | } | 555 | } |
536 | 556 | ||
557 | static void acpi_ec_gpe_query(void *ec_cxt); | ||
558 | |||
559 | static int ec_check_sci(struct acpi_ec *ec, u8 state) | ||
560 | { | ||
561 | if (state & ACPI_EC_FLAG_SCI) { | ||
562 | if (!test_and_set_bit(EC_FLAGS_QUERY_PENDING, &ec->flags)) { | ||
563 | pr_debug(PREFIX "push gpe query to the queue\n"); | ||
564 | return acpi_os_execute(OSL_NOTIFY_HANDLER, | ||
565 | acpi_ec_gpe_query, ec); | ||
566 | } | ||
567 | } | ||
568 | return 0; | ||
569 | } | ||
570 | |||
537 | static u32 acpi_ec_gpe_handler(void *data) | 571 | static u32 acpi_ec_gpe_handler(void *data) |
538 | { | 572 | { |
539 | struct acpi_ec *ec = data; | 573 | struct acpi_ec *ec = data; |
540 | u8 status; | ||
541 | 574 | ||
542 | pr_debug(PREFIX "~~~> interrupt\n"); | 575 | pr_debug(PREFIX "~~~> interrupt\n"); |
543 | status = acpi_ec_read_status(ec); | ||
544 | 576 | ||
545 | advance_transaction(ec, status); | 577 | advance_transaction(ec, acpi_ec_read_status(ec)); |
546 | if (ec_transaction_done(ec) && (status & ACPI_EC_FLAG_IBF) == 0) | 578 | if (ec_transaction_done(ec) && |
579 | (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF) == 0) { | ||
547 | wake_up(&ec->wait); | 580 | wake_up(&ec->wait); |
548 | ec_check_sci(ec, status); | 581 | ec_check_sci(ec, acpi_ec_read_status(ec)); |
582 | } | ||
549 | return ACPI_INTERRUPT_HANDLED; | 583 | return ACPI_INTERRUPT_HANDLED; |
550 | } | 584 | } |
551 | 585 | ||
diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c index 394ae89409c2..04b0f007c9b7 100644 --- a/drivers/acpi/pci_link.c +++ b/drivers/acpi/pci_link.c | |||
@@ -56,7 +56,7 @@ ACPI_MODULE_NAME("pci_link"); | |||
56 | static int acpi_pci_link_add(struct acpi_device *device); | 56 | static int acpi_pci_link_add(struct acpi_device *device); |
57 | static int acpi_pci_link_remove(struct acpi_device *device, int type); | 57 | static int acpi_pci_link_remove(struct acpi_device *device, int type); |
58 | 58 | ||
59 | static struct acpi_device_id link_device_ids[] = { | 59 | static const struct acpi_device_id link_device_ids[] = { |
60 | {"PNP0C0F", 0}, | 60 | {"PNP0C0F", 0}, |
61 | {"", 0}, | 61 | {"", 0}, |
62 | }; | 62 | }; |
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index 101cce3681d1..64f55b6db73c 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c | |||
@@ -46,7 +46,7 @@ static int acpi_pci_root_add(struct acpi_device *device); | |||
46 | static int acpi_pci_root_remove(struct acpi_device *device, int type); | 46 | static int acpi_pci_root_remove(struct acpi_device *device, int type); |
47 | static int acpi_pci_root_start(struct acpi_device *device); | 47 | static int acpi_pci_root_start(struct acpi_device *device); |
48 | 48 | ||
49 | static struct acpi_device_id root_device_ids[] = { | 49 | static const struct acpi_device_id root_device_ids[] = { |
50 | {"PNP0A03", 0}, | 50 | {"PNP0A03", 0}, |
51 | {"", 0}, | 51 | {"", 0}, |
52 | }; | 52 | }; |
diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c index 22b297916519..0f30c3c1eea4 100644 --- a/drivers/acpi/power.c +++ b/drivers/acpi/power.c | |||
@@ -65,7 +65,7 @@ static int acpi_power_remove(struct acpi_device *device, int type); | |||
65 | static int acpi_power_resume(struct acpi_device *device); | 65 | static int acpi_power_resume(struct acpi_device *device); |
66 | static int acpi_power_open_fs(struct inode *inode, struct file *file); | 66 | static int acpi_power_open_fs(struct inode *inode, struct file *file); |
67 | 67 | ||
68 | static struct acpi_device_id power_device_ids[] = { | 68 | static const struct acpi_device_id power_device_ids[] = { |
69 | {ACPI_POWER_HID, 0}, | 69 | {ACPI_POWER_HID, 0}, |
70 | {"", 0}, | 70 | {"", 0}, |
71 | }; | 71 | }; |
diff --git a/drivers/acpi/power_meter.c b/drivers/acpi/power_meter.c index 2ef7030a0c28..dc4ffadf8122 100644 --- a/drivers/acpi/power_meter.c +++ b/drivers/acpi/power_meter.c | |||
@@ -64,7 +64,7 @@ static int can_cap_in_hardware(void) | |||
64 | return force_cap_on || cap_in_hardware; | 64 | return force_cap_on || cap_in_hardware; |
65 | } | 65 | } |
66 | 66 | ||
67 | static struct acpi_device_id power_meter_ids[] = { | 67 | static const struct acpi_device_id power_meter_ids[] = { |
68 | {"ACPI000D", 0}, | 68 | {"ACPI000D", 0}, |
69 | {"", 0}, | 69 | {"", 0}, |
70 | }; | 70 | }; |
@@ -534,6 +534,7 @@ static void remove_domain_devices(struct acpi_power_meter_resource *resource) | |||
534 | 534 | ||
535 | kfree(resource->domain_devices); | 535 | kfree(resource->domain_devices); |
536 | kobject_put(resource->holders_dir); | 536 | kobject_put(resource->holders_dir); |
537 | resource->num_domain_devices = 0; | ||
537 | } | 538 | } |
538 | 539 | ||
539 | static int read_domain_devices(struct acpi_power_meter_resource *resource) | 540 | static int read_domain_devices(struct acpi_power_meter_resource *resource) |
@@ -740,7 +741,6 @@ skip_unsafe_cap: | |||
740 | 741 | ||
741 | return res; | 742 | return res; |
742 | error: | 743 | error: |
743 | remove_domain_devices(resource); | ||
744 | remove_attrs(resource); | 744 | remove_attrs(resource); |
745 | return res; | 745 | return res; |
746 | } | 746 | } |
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index d1676b1754d9..7c0441f63b39 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c | |||
@@ -305,6 +305,28 @@ static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr) | |||
305 | pr->power.states[ACPI_STATE_C2].latency = acpi_gbl_FADT.C2latency; | 305 | pr->power.states[ACPI_STATE_C2].latency = acpi_gbl_FADT.C2latency; |
306 | pr->power.states[ACPI_STATE_C3].latency = acpi_gbl_FADT.C3latency; | 306 | pr->power.states[ACPI_STATE_C3].latency = acpi_gbl_FADT.C3latency; |
307 | 307 | ||
308 | /* | ||
309 | * FADT specified C2 latency must be less than or equal to | ||
310 | * 100 microseconds. | ||
311 | */ | ||
312 | if (acpi_gbl_FADT.C2latency > ACPI_PROCESSOR_MAX_C2_LATENCY) { | ||
313 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, | ||
314 | "C2 latency too large [%d]\n", acpi_gbl_FADT.C2latency)); | ||
315 | /* invalidate C2 */ | ||
316 | pr->power.states[ACPI_STATE_C2].address = 0; | ||
317 | } | ||
318 | |||
319 | /* | ||
320 | * FADT supplied C3 latency must be less than or equal to | ||
321 | * 1000 microseconds. | ||
322 | */ | ||
323 | if (acpi_gbl_FADT.C3latency > ACPI_PROCESSOR_MAX_C3_LATENCY) { | ||
324 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, | ||
325 | "C3 latency too large [%d]\n", acpi_gbl_FADT.C3latency)); | ||
326 | /* invalidate C3 */ | ||
327 | pr->power.states[ACPI_STATE_C3].address = 0; | ||
328 | } | ||
329 | |||
308 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, | 330 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, |
309 | "lvl2[0x%08x] lvl3[0x%08x]\n", | 331 | "lvl2[0x%08x] lvl3[0x%08x]\n", |
310 | pr->power.states[ACPI_STATE_C2].address, | 332 | pr->power.states[ACPI_STATE_C2].address, |
@@ -494,33 +516,6 @@ static int acpi_processor_get_power_info_cst(struct acpi_processor *pr) | |||
494 | return status; | 516 | return status; |
495 | } | 517 | } |
496 | 518 | ||
497 | static void acpi_processor_power_verify_c2(struct acpi_processor_cx *cx) | ||
498 | { | ||
499 | |||
500 | if (!cx->address) | ||
501 | return; | ||
502 | |||
503 | /* | ||
504 | * C2 latency must be less than or equal to 100 | ||
505 | * microseconds. | ||
506 | */ | ||
507 | else if (cx->latency > ACPI_PROCESSOR_MAX_C2_LATENCY) { | ||
508 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, | ||
509 | "latency too large [%d]\n", cx->latency)); | ||
510 | return; | ||
511 | } | ||
512 | |||
513 | /* | ||
514 | * Otherwise we've met all of our C2 requirements. | ||
515 | * Normalize the C2 latency to expidite policy | ||
516 | */ | ||
517 | cx->valid = 1; | ||
518 | |||
519 | cx->latency_ticks = cx->latency; | ||
520 | |||
521 | return; | ||
522 | } | ||
523 | |||
524 | static void acpi_processor_power_verify_c3(struct acpi_processor *pr, | 519 | static void acpi_processor_power_verify_c3(struct acpi_processor *pr, |
525 | struct acpi_processor_cx *cx) | 520 | struct acpi_processor_cx *cx) |
526 | { | 521 | { |
@@ -532,16 +527,6 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr, | |||
532 | return; | 527 | return; |
533 | 528 | ||
534 | /* | 529 | /* |
535 | * C3 latency must be less than or equal to 1000 | ||
536 | * microseconds. | ||
537 | */ | ||
538 | else if (cx->latency > ACPI_PROCESSOR_MAX_C3_LATENCY) { | ||
539 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, | ||
540 | "latency too large [%d]\n", cx->latency)); | ||
541 | return; | ||
542 | } | ||
543 | |||
544 | /* | ||
545 | * PIIX4 Erratum #18: We don't support C3 when Type-F (fast) | 530 | * PIIX4 Erratum #18: We don't support C3 when Type-F (fast) |
546 | * DMA transfers are used by any ISA device to avoid livelock. | 531 | * DMA transfers are used by any ISA device to avoid livelock. |
547 | * Note that we could disable Type-F DMA (as recommended by | 532 | * Note that we could disable Type-F DMA (as recommended by |
@@ -629,7 +614,10 @@ static int acpi_processor_power_verify(struct acpi_processor *pr) | |||
629 | break; | 614 | break; |
630 | 615 | ||
631 | case ACPI_STATE_C2: | 616 | case ACPI_STATE_C2: |
632 | acpi_processor_power_verify_c2(cx); | 617 | if (!cx->address) |
618 | break; | ||
619 | cx->valid = 1; | ||
620 | cx->latency_ticks = cx->latency; /* Normalize latency */ | ||
633 | break; | 621 | break; |
634 | 622 | ||
635 | case ACPI_STATE_C3: | 623 | case ACPI_STATE_C3: |
diff --git a/drivers/acpi/processor_pdc.c b/drivers/acpi/processor_pdc.c index 30e4dc0cdf30..7247819dbd80 100644 --- a/drivers/acpi/processor_pdc.c +++ b/drivers/acpi/processor_pdc.c | |||
@@ -144,6 +144,29 @@ void acpi_processor_set_pdc(acpi_handle handle) | |||
144 | } | 144 | } |
145 | EXPORT_SYMBOL_GPL(acpi_processor_set_pdc); | 145 | EXPORT_SYMBOL_GPL(acpi_processor_set_pdc); |
146 | 146 | ||
147 | static int early_pdc_optin; | ||
148 | static int set_early_pdc_optin(const struct dmi_system_id *id) | ||
149 | { | ||
150 | early_pdc_optin = 1; | ||
151 | return 0; | ||
152 | } | ||
153 | |||
154 | static struct dmi_system_id __cpuinitdata early_pdc_optin_table[] = { | ||
155 | { | ||
156 | set_early_pdc_optin, "HP Envy", { | ||
157 | DMI_MATCH(DMI_BIOS_VENDOR, "Hewlett-Packard"), | ||
158 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Envy") }, NULL}, | ||
159 | { | ||
160 | set_early_pdc_optin, "HP Pavilion dv6", { | ||
161 | DMI_MATCH(DMI_BIOS_VENDOR, "Hewlett-Packard"), | ||
162 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv6") }, NULL}, | ||
163 | { | ||
164 | set_early_pdc_optin, "HP Pavilion dv7", { | ||
165 | DMI_MATCH(DMI_BIOS_VENDOR, "Hewlett-Packard"), | ||
166 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv7") }, NULL}, | ||
167 | {}, | ||
168 | }; | ||
169 | |||
147 | static acpi_status | 170 | static acpi_status |
148 | early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv) | 171 | early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv) |
149 | { | 172 | { |
@@ -151,7 +174,7 @@ early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv) | |||
151 | return AE_OK; | 174 | return AE_OK; |
152 | } | 175 | } |
153 | 176 | ||
154 | void acpi_early_processor_set_pdc(void) | 177 | void __init acpi_early_processor_set_pdc(void) |
155 | { | 178 | { |
156 | /* | 179 | /* |
157 | * Check whether the system is DMI table. If yes, OSPM | 180 | * Check whether the system is DMI table. If yes, OSPM |
@@ -159,6 +182,13 @@ void acpi_early_processor_set_pdc(void) | |||
159 | */ | 182 | */ |
160 | dmi_check_system(processor_idle_dmi_table); | 183 | dmi_check_system(processor_idle_dmi_table); |
161 | 184 | ||
185 | /* | ||
186 | * Allow systems to opt-in to early _PDC evaluation. | ||
187 | */ | ||
188 | dmi_check_system(early_pdc_optin_table); | ||
189 | if (!early_pdc_optin) | ||
190 | return; | ||
191 | |||
162 | acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, | 192 | acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, |
163 | ACPI_UINT32_MAX, | 193 | ACPI_UINT32_MAX, |
164 | early_init_pdc, NULL, NULL, NULL); | 194 | early_init_pdc, NULL, NULL, NULL); |
diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c index 140c5c5b423c..6deafb4aa0da 100644 --- a/drivers/acpi/processor_thermal.c +++ b/drivers/acpi/processor_thermal.c | |||
@@ -443,8 +443,7 @@ struct thermal_cooling_device_ops processor_cooling_ops = { | |||
443 | #ifdef CONFIG_ACPI_PROCFS | 443 | #ifdef CONFIG_ACPI_PROCFS |
444 | static int acpi_processor_limit_seq_show(struct seq_file *seq, void *offset) | 444 | static int acpi_processor_limit_seq_show(struct seq_file *seq, void *offset) |
445 | { | 445 | { |
446 | struct acpi_processor *pr = (struct acpi_processor *)seq->private; | 446 | struct acpi_processor *pr = seq->private; |
447 | |||
448 | 447 | ||
449 | if (!pr) | 448 | if (!pr) |
450 | goto end; | 449 | goto end; |
diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c index 52b9db8afc20..b16ddbf23a9c 100644 --- a/drivers/acpi/sbs.c +++ b/drivers/acpi/sbs.c | |||
@@ -822,7 +822,10 @@ static int acpi_battery_add(struct acpi_sbs *sbs, int id) | |||
822 | 822 | ||
823 | static void acpi_battery_remove(struct acpi_sbs *sbs, int id) | 823 | static void acpi_battery_remove(struct acpi_sbs *sbs, int id) |
824 | { | 824 | { |
825 | #if defined(CONFIG_ACPI_SYSFS_POWER) || defined(CONFIG_ACPI_PROCFS_POWER) | ||
825 | struct acpi_battery *battery = &sbs->battery[id]; | 826 | struct acpi_battery *battery = &sbs->battery[id]; |
827 | #endif | ||
828 | |||
826 | #ifdef CONFIG_ACPI_SYSFS_POWER | 829 | #ifdef CONFIG_ACPI_SYSFS_POWER |
827 | if (battery->bat.dev) { | 830 | if (battery->bat.dev) { |
828 | if (battery->have_sysfs_alarm) | 831 | if (battery->have_sysfs_alarm) |
diff --git a/drivers/acpi/sbshc.c b/drivers/acpi/sbshc.c index d9339806df45..fd09229282ea 100644 --- a/drivers/acpi/sbshc.c +++ b/drivers/acpi/sbshc.c | |||
@@ -242,7 +242,7 @@ static int smbus_alarm(void *context) | |||
242 | case ACPI_SBS_CHARGER: | 242 | case ACPI_SBS_CHARGER: |
243 | case ACPI_SBS_MANAGER: | 243 | case ACPI_SBS_MANAGER: |
244 | case ACPI_SBS_BATTERY: | 244 | case ACPI_SBS_BATTERY: |
245 | acpi_os_execute(OSL_GPE_HANDLER, | 245 | acpi_os_execute(OSL_NOTIFY_HANDLER, |
246 | acpi_smbus_callback, hc); | 246 | acpi_smbus_callback, hc); |
247 | default:; | 247 | default:; |
248 | } | 248 | } |
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c index 72e76b4b6538..b765790b32be 100644 --- a/drivers/acpi/video.c +++ b/drivers/acpi/video.c | |||
@@ -78,6 +78,13 @@ MODULE_LICENSE("GPL"); | |||
78 | static int brightness_switch_enabled = 1; | 78 | static int brightness_switch_enabled = 1; |
79 | module_param(brightness_switch_enabled, bool, 0644); | 79 | module_param(brightness_switch_enabled, bool, 0644); |
80 | 80 | ||
81 | /* | ||
82 | * By default, we don't allow duplicate ACPI video bus devices | ||
83 | * under the same VGA controller | ||
84 | */ | ||
85 | static int allow_duplicates; | ||
86 | module_param(allow_duplicates, bool, 0644); | ||
87 | |||
81 | static int register_count = 0; | 88 | static int register_count = 0; |
82 | static int acpi_video_bus_add(struct acpi_device *device); | 89 | static int acpi_video_bus_add(struct acpi_device *device); |
83 | static int acpi_video_bus_remove(struct acpi_device *device, int type); | 90 | static int acpi_video_bus_remove(struct acpi_device *device, int type); |
@@ -2239,11 +2246,47 @@ static int acpi_video_resume(struct acpi_device *device) | |||
2239 | return AE_OK; | 2246 | return AE_OK; |
2240 | } | 2247 | } |
2241 | 2248 | ||
2249 | static acpi_status | ||
2250 | acpi_video_bus_match(acpi_handle handle, u32 level, void *context, | ||
2251 | void **return_value) | ||
2252 | { | ||
2253 | struct acpi_device *device = context; | ||
2254 | struct acpi_device *sibling; | ||
2255 | int result; | ||
2256 | |||
2257 | if (handle == device->handle) | ||
2258 | return AE_CTRL_TERMINATE; | ||
2259 | |||
2260 | result = acpi_bus_get_device(handle, &sibling); | ||
2261 | if (result) | ||
2262 | return AE_OK; | ||
2263 | |||
2264 | if (!strcmp(acpi_device_name(sibling), ACPI_VIDEO_BUS_NAME)) | ||
2265 | return AE_ALREADY_EXISTS; | ||
2266 | |||
2267 | return AE_OK; | ||
2268 | } | ||
2269 | |||
2242 | static int acpi_video_bus_add(struct acpi_device *device) | 2270 | static int acpi_video_bus_add(struct acpi_device *device) |
2243 | { | 2271 | { |
2244 | struct acpi_video_bus *video; | 2272 | struct acpi_video_bus *video; |
2245 | struct input_dev *input; | 2273 | struct input_dev *input; |
2246 | int error; | 2274 | int error; |
2275 | acpi_status status; | ||
2276 | |||
2277 | status = acpi_walk_namespace(ACPI_TYPE_DEVICE, | ||
2278 | device->parent->handle, 1, | ||
2279 | acpi_video_bus_match, NULL, | ||
2280 | device, NULL); | ||
2281 | if (status == AE_ALREADY_EXISTS) { | ||
2282 | printk(KERN_WARNING FW_BUG | ||
2283 | "Duplicate ACPI video bus devices for the" | ||
2284 | " same VGA controller, please try module " | ||
2285 | "parameter \"video.allow_duplicates=1\"" | ||
2286 | "if the current driver doesn't work.\n"); | ||
2287 | if (!allow_duplicates) | ||
2288 | return -ENODEV; | ||
2289 | } | ||
2247 | 2290 | ||
2248 | video = kzalloc(sizeof(struct acpi_video_bus), GFP_KERNEL); | 2291 | video = kzalloc(sizeof(struct acpi_video_bus), GFP_KERNEL); |
2249 | if (!video) | 2292 | if (!video) |
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index 0ea97c942ced..9f6cfac0f2cc 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c | |||
@@ -2028,8 +2028,9 @@ static void ata_eh_link_autopsy(struct ata_link *link) | |||
2028 | qc->err_mask &= ~(AC_ERR_DEV | AC_ERR_OTHER); | 2028 | qc->err_mask &= ~(AC_ERR_DEV | AC_ERR_OTHER); |
2029 | 2029 | ||
2030 | /* determine whether the command is worth retrying */ | 2030 | /* determine whether the command is worth retrying */ |
2031 | if (!(qc->err_mask & AC_ERR_INVALID) && | 2031 | if (qc->flags & ATA_QCFLAG_IO || |
2032 | ((qc->flags & ATA_QCFLAG_IO) || qc->err_mask != AC_ERR_DEV)) | 2032 | (!(qc->err_mask & AC_ERR_INVALID) && |
2033 | qc->err_mask != AC_ERR_DEV)) | ||
2033 | qc->flags |= ATA_QCFLAG_RETRY; | 2034 | qc->flags |= ATA_QCFLAG_RETRY; |
2034 | 2035 | ||
2035 | /* accumulate error info */ | 2036 | /* accumulate error info */ |
diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c index 090dd4851301..42ae452b36b0 100644 --- a/drivers/base/devtmpfs.c +++ b/drivers/base/devtmpfs.c | |||
@@ -354,6 +354,7 @@ int __init devtmpfs_init(void) | |||
354 | { | 354 | { |
355 | int err; | 355 | int err; |
356 | struct vfsmount *mnt; | 356 | struct vfsmount *mnt; |
357 | char options[] = "mode=0755"; | ||
357 | 358 | ||
358 | err = register_filesystem(&dev_fs_type); | 359 | err = register_filesystem(&dev_fs_type); |
359 | if (err) { | 360 | if (err) { |
@@ -362,7 +363,7 @@ int __init devtmpfs_init(void) | |||
362 | return err; | 363 | return err; |
363 | } | 364 | } |
364 | 365 | ||
365 | mnt = kern_mount_data(&dev_fs_type, "mode=0755"); | 366 | mnt = kern_mount_data(&dev_fs_type, options); |
366 | if (IS_ERR(mnt)) { | 367 | if (IS_ERR(mnt)) { |
367 | err = PTR_ERR(mnt); | 368 | err = PTR_ERR(mnt); |
368 | printk(KERN_ERR "devtmpfs: unable to create devtmpfs %i\n", err); | 369 | printk(KERN_ERR "devtmpfs: unable to create devtmpfs %i\n", err); |
diff --git a/drivers/base/memory.c b/drivers/base/memory.c index d7d77d4a402c..bd025059711f 100644 --- a/drivers/base/memory.c +++ b/drivers/base/memory.c | |||
@@ -311,7 +311,7 @@ static SYSDEV_ATTR(removable, 0444, show_mem_removable, NULL); | |||
311 | static ssize_t | 311 | static ssize_t |
312 | print_block_size(struct class *class, char *buf) | 312 | print_block_size(struct class *class, char *buf) |
313 | { | 313 | { |
314 | return sprintf(buf, "%lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE); | 314 | return sprintf(buf, "%#lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE); |
315 | } | 315 | } |
316 | 316 | ||
317 | static CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL); | 317 | static CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL); |
diff --git a/drivers/block/drbd/Kconfig b/drivers/block/drbd/Kconfig index f4acd04ebeef..df0983787390 100644 --- a/drivers/block/drbd/Kconfig +++ b/drivers/block/drbd/Kconfig | |||
@@ -3,7 +3,7 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | comment "DRBD disabled because PROC_FS, INET or CONNECTOR not selected" | 5 | comment "DRBD disabled because PROC_FS, INET or CONNECTOR not selected" |
6 | depends on !PROC_FS || !INET || !CONNECTOR | 6 | depends on PROC_FS='n' || INET='n' || CONNECTOR='n' |
7 | 7 | ||
8 | config BLK_DEV_DRBD | 8 | config BLK_DEV_DRBD |
9 | tristate "DRBD Distributed Replicated Block Device support" | 9 | tristate "DRBD Distributed Replicated Block Device support" |
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h index c97558763430..2bf3a6ef3684 100644 --- a/drivers/block/drbd/drbd_int.h +++ b/drivers/block/drbd/drbd_int.h | |||
@@ -1275,7 +1275,7 @@ struct bm_extent { | |||
1275 | #if DRBD_MAX_SECTORS_BM < DRBD_MAX_SECTORS_32 | 1275 | #if DRBD_MAX_SECTORS_BM < DRBD_MAX_SECTORS_32 |
1276 | #define DRBD_MAX_SECTORS DRBD_MAX_SECTORS_BM | 1276 | #define DRBD_MAX_SECTORS DRBD_MAX_SECTORS_BM |
1277 | #define DRBD_MAX_SECTORS_FLEX DRBD_MAX_SECTORS_BM | 1277 | #define DRBD_MAX_SECTORS_FLEX DRBD_MAX_SECTORS_BM |
1278 | #elif !defined(CONFIG_LBD) && BITS_PER_LONG == 32 | 1278 | #elif !defined(CONFIG_LBDAF) && BITS_PER_LONG == 32 |
1279 | #define DRBD_MAX_SECTORS DRBD_MAX_SECTORS_32 | 1279 | #define DRBD_MAX_SECTORS DRBD_MAX_SECTORS_32 |
1280 | #define DRBD_MAX_SECTORS_FLEX DRBD_MAX_SECTORS_32 | 1280 | #define DRBD_MAX_SECTORS_FLEX DRBD_MAX_SECTORS_32 |
1281 | #else | 1281 | #else |
@@ -1371,10 +1371,9 @@ extern int is_valid_ar_handle(struct drbd_request *, sector_t); | |||
1371 | extern void drbd_suspend_io(struct drbd_conf *mdev); | 1371 | extern void drbd_suspend_io(struct drbd_conf *mdev); |
1372 | extern void drbd_resume_io(struct drbd_conf *mdev); | 1372 | extern void drbd_resume_io(struct drbd_conf *mdev); |
1373 | extern char *ppsize(char *buf, unsigned long long size); | 1373 | extern char *ppsize(char *buf, unsigned long long size); |
1374 | extern sector_t drbd_new_dev_size(struct drbd_conf *, | 1374 | extern sector_t drbd_new_dev_size(struct drbd_conf *, struct drbd_backing_dev *, int); |
1375 | struct drbd_backing_dev *); | ||
1376 | enum determine_dev_size { dev_size_error = -1, unchanged = 0, shrunk = 1, grew = 2 }; | 1375 | enum determine_dev_size { dev_size_error = -1, unchanged = 0, shrunk = 1, grew = 2 }; |
1377 | extern enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *) __must_hold(local); | 1376 | extern enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *, int force) __must_hold(local); |
1378 | extern void resync_after_online_grow(struct drbd_conf *); | 1377 | extern void resync_after_online_grow(struct drbd_conf *); |
1379 | extern void drbd_setup_queue_param(struct drbd_conf *mdev, unsigned int) __must_hold(local); | 1378 | extern void drbd_setup_queue_param(struct drbd_conf *mdev, unsigned int) __must_hold(local); |
1380 | extern int drbd_set_role(struct drbd_conf *mdev, enum drbd_role new_role, | 1379 | extern int drbd_set_role(struct drbd_conf *mdev, enum drbd_role new_role, |
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c index 9348f33f6242..e898ad9eb1c3 100644 --- a/drivers/block/drbd/drbd_main.c +++ b/drivers/block/drbd/drbd_main.c | |||
@@ -1298,6 +1298,7 @@ static void after_state_ch(struct drbd_conf *mdev, union drbd_state os, | |||
1298 | dev_err(DEV, "Sending state in drbd_io_error() failed\n"); | 1298 | dev_err(DEV, "Sending state in drbd_io_error() failed\n"); |
1299 | } | 1299 | } |
1300 | 1300 | ||
1301 | wait_event(mdev->misc_wait, !atomic_read(&mdev->local_cnt)); | ||
1301 | lc_destroy(mdev->resync); | 1302 | lc_destroy(mdev->resync); |
1302 | mdev->resync = NULL; | 1303 | mdev->resync = NULL; |
1303 | lc_destroy(mdev->act_log); | 1304 | lc_destroy(mdev->act_log); |
diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c index 4e0726aa53b0..1292e0620663 100644 --- a/drivers/block/drbd/drbd_nl.c +++ b/drivers/block/drbd/drbd_nl.c | |||
@@ -510,7 +510,7 @@ void drbd_resume_io(struct drbd_conf *mdev) | |||
510 | * Returns 0 on success, negative return values indicate errors. | 510 | * Returns 0 on success, negative return values indicate errors. |
511 | * You should call drbd_md_sync() after calling this function. | 511 | * You should call drbd_md_sync() after calling this function. |
512 | */ | 512 | */ |
513 | enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *mdev) __must_hold(local) | 513 | enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *mdev, int force) __must_hold(local) |
514 | { | 514 | { |
515 | sector_t prev_first_sect, prev_size; /* previous meta location */ | 515 | sector_t prev_first_sect, prev_size; /* previous meta location */ |
516 | sector_t la_size; | 516 | sector_t la_size; |
@@ -541,7 +541,7 @@ enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *mdev) __must_ho | |||
541 | /* TODO: should only be some assert here, not (re)init... */ | 541 | /* TODO: should only be some assert here, not (re)init... */ |
542 | drbd_md_set_sector_offsets(mdev, mdev->ldev); | 542 | drbd_md_set_sector_offsets(mdev, mdev->ldev); |
543 | 543 | ||
544 | size = drbd_new_dev_size(mdev, mdev->ldev); | 544 | size = drbd_new_dev_size(mdev, mdev->ldev, force); |
545 | 545 | ||
546 | if (drbd_get_capacity(mdev->this_bdev) != size || | 546 | if (drbd_get_capacity(mdev->this_bdev) != size || |
547 | drbd_bm_capacity(mdev) != size) { | 547 | drbd_bm_capacity(mdev) != size) { |
@@ -596,7 +596,7 @@ out: | |||
596 | } | 596 | } |
597 | 597 | ||
598 | sector_t | 598 | sector_t |
599 | drbd_new_dev_size(struct drbd_conf *mdev, struct drbd_backing_dev *bdev) | 599 | drbd_new_dev_size(struct drbd_conf *mdev, struct drbd_backing_dev *bdev, int assume_peer_has_space) |
600 | { | 600 | { |
601 | sector_t p_size = mdev->p_size; /* partner's disk size. */ | 601 | sector_t p_size = mdev->p_size; /* partner's disk size. */ |
602 | sector_t la_size = bdev->md.la_size_sect; /* last agreed size. */ | 602 | sector_t la_size = bdev->md.la_size_sect; /* last agreed size. */ |
@@ -606,6 +606,11 @@ drbd_new_dev_size(struct drbd_conf *mdev, struct drbd_backing_dev *bdev) | |||
606 | 606 | ||
607 | m_size = drbd_get_max_capacity(bdev); | 607 | m_size = drbd_get_max_capacity(bdev); |
608 | 608 | ||
609 | if (mdev->state.conn < C_CONNECTED && assume_peer_has_space) { | ||
610 | dev_warn(DEV, "Resize while not connected was forced by the user!\n"); | ||
611 | p_size = m_size; | ||
612 | } | ||
613 | |||
609 | if (p_size && m_size) { | 614 | if (p_size && m_size) { |
610 | size = min_t(sector_t, p_size, m_size); | 615 | size = min_t(sector_t, p_size, m_size); |
611 | } else { | 616 | } else { |
@@ -965,7 +970,7 @@ static int drbd_nl_disk_conf(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp | |||
965 | 970 | ||
966 | /* Prevent shrinking of consistent devices ! */ | 971 | /* Prevent shrinking of consistent devices ! */ |
967 | if (drbd_md_test_flag(nbc, MDF_CONSISTENT) && | 972 | if (drbd_md_test_flag(nbc, MDF_CONSISTENT) && |
968 | drbd_new_dev_size(mdev, nbc) < nbc->md.la_size_sect) { | 973 | drbd_new_dev_size(mdev, nbc, 0) < nbc->md.la_size_sect) { |
969 | dev_warn(DEV, "refusing to truncate a consistent device\n"); | 974 | dev_warn(DEV, "refusing to truncate a consistent device\n"); |
970 | retcode = ERR_DISK_TO_SMALL; | 975 | retcode = ERR_DISK_TO_SMALL; |
971 | goto force_diskless_dec; | 976 | goto force_diskless_dec; |
@@ -1052,7 +1057,7 @@ static int drbd_nl_disk_conf(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp | |||
1052 | !drbd_md_test_flag(mdev->ldev, MDF_CONNECTED_IND)) | 1057 | !drbd_md_test_flag(mdev->ldev, MDF_CONNECTED_IND)) |
1053 | set_bit(USE_DEGR_WFC_T, &mdev->flags); | 1058 | set_bit(USE_DEGR_WFC_T, &mdev->flags); |
1054 | 1059 | ||
1055 | dd = drbd_determin_dev_size(mdev); | 1060 | dd = drbd_determin_dev_size(mdev, 0); |
1056 | if (dd == dev_size_error) { | 1061 | if (dd == dev_size_error) { |
1057 | retcode = ERR_NOMEM_BITMAP; | 1062 | retcode = ERR_NOMEM_BITMAP; |
1058 | goto force_diskless_dec; | 1063 | goto force_diskless_dec; |
@@ -1271,7 +1276,7 @@ static int drbd_nl_net_conf(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp, | |||
1271 | goto fail; | 1276 | goto fail; |
1272 | } | 1277 | } |
1273 | 1278 | ||
1274 | if (crypto_tfm_alg_type(crypto_hash_tfm(tfm)) != CRYPTO_ALG_TYPE_SHASH) { | 1279 | if (!drbd_crypto_is_hash(crypto_hash_tfm(tfm))) { |
1275 | retcode = ERR_AUTH_ALG_ND; | 1280 | retcode = ERR_AUTH_ALG_ND; |
1276 | goto fail; | 1281 | goto fail; |
1277 | } | 1282 | } |
@@ -1504,7 +1509,7 @@ static int drbd_nl_resize(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp, | |||
1504 | } | 1509 | } |
1505 | 1510 | ||
1506 | mdev->ldev->dc.disk_size = (sector_t)rs.resize_size; | 1511 | mdev->ldev->dc.disk_size = (sector_t)rs.resize_size; |
1507 | dd = drbd_determin_dev_size(mdev); | 1512 | dd = drbd_determin_dev_size(mdev, rs.resize_force); |
1508 | drbd_md_sync(mdev); | 1513 | drbd_md_sync(mdev); |
1509 | put_ldev(mdev); | 1514 | put_ldev(mdev); |
1510 | if (dd == dev_size_error) { | 1515 | if (dd == dev_size_error) { |
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index 259c1351b152..f22a5283128a 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c | |||
@@ -878,9 +878,13 @@ retry: | |||
878 | 878 | ||
879 | if (mdev->cram_hmac_tfm) { | 879 | if (mdev->cram_hmac_tfm) { |
880 | /* drbd_request_state(mdev, NS(conn, WFAuth)); */ | 880 | /* drbd_request_state(mdev, NS(conn, WFAuth)); */ |
881 | if (!drbd_do_auth(mdev)) { | 881 | switch (drbd_do_auth(mdev)) { |
882 | case -1: | ||
882 | dev_err(DEV, "Authentication of peer failed\n"); | 883 | dev_err(DEV, "Authentication of peer failed\n"); |
883 | return -1; | 884 | return -1; |
885 | case 0: | ||
886 | dev_err(DEV, "Authentication of peer failed, trying again.\n"); | ||
887 | return 0; | ||
884 | } | 888 | } |
885 | } | 889 | } |
886 | 890 | ||
@@ -1201,10 +1205,11 @@ static int receive_Barrier(struct drbd_conf *mdev, struct p_header *h) | |||
1201 | 1205 | ||
1202 | case WO_bdev_flush: | 1206 | case WO_bdev_flush: |
1203 | case WO_drain_io: | 1207 | case WO_drain_io: |
1204 | D_ASSERT(rv == FE_STILL_LIVE); | 1208 | if (rv == FE_STILL_LIVE) { |
1205 | set_bit(DE_BARRIER_IN_NEXT_EPOCH_ISSUED, &mdev->current_epoch->flags); | 1209 | set_bit(DE_BARRIER_IN_NEXT_EPOCH_ISSUED, &mdev->current_epoch->flags); |
1206 | drbd_wait_ee_list_empty(mdev, &mdev->active_ee); | 1210 | drbd_wait_ee_list_empty(mdev, &mdev->active_ee); |
1207 | rv = drbd_flush_after_epoch(mdev, mdev->current_epoch); | 1211 | rv = drbd_flush_after_epoch(mdev, mdev->current_epoch); |
1212 | } | ||
1208 | if (rv == FE_RECYCLED) | 1213 | if (rv == FE_RECYCLED) |
1209 | return TRUE; | 1214 | return TRUE; |
1210 | 1215 | ||
@@ -2865,7 +2870,7 @@ static int receive_sizes(struct drbd_conf *mdev, struct p_header *h) | |||
2865 | 2870 | ||
2866 | /* Never shrink a device with usable data during connect. | 2871 | /* Never shrink a device with usable data during connect. |
2867 | But allow online shrinking if we are connected. */ | 2872 | But allow online shrinking if we are connected. */ |
2868 | if (drbd_new_dev_size(mdev, mdev->ldev) < | 2873 | if (drbd_new_dev_size(mdev, mdev->ldev, 0) < |
2869 | drbd_get_capacity(mdev->this_bdev) && | 2874 | drbd_get_capacity(mdev->this_bdev) && |
2870 | mdev->state.disk >= D_OUTDATED && | 2875 | mdev->state.disk >= D_OUTDATED && |
2871 | mdev->state.conn < C_CONNECTED) { | 2876 | mdev->state.conn < C_CONNECTED) { |
@@ -2880,7 +2885,7 @@ static int receive_sizes(struct drbd_conf *mdev, struct p_header *h) | |||
2880 | #undef min_not_zero | 2885 | #undef min_not_zero |
2881 | 2886 | ||
2882 | if (get_ldev(mdev)) { | 2887 | if (get_ldev(mdev)) { |
2883 | dd = drbd_determin_dev_size(mdev); | 2888 | dd = drbd_determin_dev_size(mdev, 0); |
2884 | put_ldev(mdev); | 2889 | put_ldev(mdev); |
2885 | if (dd == dev_size_error) | 2890 | if (dd == dev_size_error) |
2886 | return FALSE; | 2891 | return FALSE; |
@@ -3830,10 +3835,17 @@ static int drbd_do_auth(struct drbd_conf *mdev) | |||
3830 | { | 3835 | { |
3831 | dev_err(DEV, "This kernel was build without CONFIG_CRYPTO_HMAC.\n"); | 3836 | dev_err(DEV, "This kernel was build without CONFIG_CRYPTO_HMAC.\n"); |
3832 | dev_err(DEV, "You need to disable 'cram-hmac-alg' in drbd.conf.\n"); | 3837 | dev_err(DEV, "You need to disable 'cram-hmac-alg' in drbd.conf.\n"); |
3833 | return 0; | 3838 | return -1; |
3834 | } | 3839 | } |
3835 | #else | 3840 | #else |
3836 | #define CHALLENGE_LEN 64 | 3841 | #define CHALLENGE_LEN 64 |
3842 | |||
3843 | /* Return value: | ||
3844 | 1 - auth succeeded, | ||
3845 | 0 - failed, try again (network error), | ||
3846 | -1 - auth failed, don't try again. | ||
3847 | */ | ||
3848 | |||
3837 | static int drbd_do_auth(struct drbd_conf *mdev) | 3849 | static int drbd_do_auth(struct drbd_conf *mdev) |
3838 | { | 3850 | { |
3839 | char my_challenge[CHALLENGE_LEN]; /* 64 Bytes... */ | 3851 | char my_challenge[CHALLENGE_LEN]; /* 64 Bytes... */ |
@@ -3854,7 +3866,7 @@ static int drbd_do_auth(struct drbd_conf *mdev) | |||
3854 | (u8 *)mdev->net_conf->shared_secret, key_len); | 3866 | (u8 *)mdev->net_conf->shared_secret, key_len); |
3855 | if (rv) { | 3867 | if (rv) { |
3856 | dev_err(DEV, "crypto_hash_setkey() failed with %d\n", rv); | 3868 | dev_err(DEV, "crypto_hash_setkey() failed with %d\n", rv); |
3857 | rv = 0; | 3869 | rv = -1; |
3858 | goto fail; | 3870 | goto fail; |
3859 | } | 3871 | } |
3860 | 3872 | ||
@@ -3877,14 +3889,14 @@ static int drbd_do_auth(struct drbd_conf *mdev) | |||
3877 | 3889 | ||
3878 | if (p.length > CHALLENGE_LEN*2) { | 3890 | if (p.length > CHALLENGE_LEN*2) { |
3879 | dev_err(DEV, "expected AuthChallenge payload too big.\n"); | 3891 | dev_err(DEV, "expected AuthChallenge payload too big.\n"); |
3880 | rv = 0; | 3892 | rv = -1; |
3881 | goto fail; | 3893 | goto fail; |
3882 | } | 3894 | } |
3883 | 3895 | ||
3884 | peers_ch = kmalloc(p.length, GFP_NOIO); | 3896 | peers_ch = kmalloc(p.length, GFP_NOIO); |
3885 | if (peers_ch == NULL) { | 3897 | if (peers_ch == NULL) { |
3886 | dev_err(DEV, "kmalloc of peers_ch failed\n"); | 3898 | dev_err(DEV, "kmalloc of peers_ch failed\n"); |
3887 | rv = 0; | 3899 | rv = -1; |
3888 | goto fail; | 3900 | goto fail; |
3889 | } | 3901 | } |
3890 | 3902 | ||
@@ -3900,7 +3912,7 @@ static int drbd_do_auth(struct drbd_conf *mdev) | |||
3900 | response = kmalloc(resp_size, GFP_NOIO); | 3912 | response = kmalloc(resp_size, GFP_NOIO); |
3901 | if (response == NULL) { | 3913 | if (response == NULL) { |
3902 | dev_err(DEV, "kmalloc of response failed\n"); | 3914 | dev_err(DEV, "kmalloc of response failed\n"); |
3903 | rv = 0; | 3915 | rv = -1; |
3904 | goto fail; | 3916 | goto fail; |
3905 | } | 3917 | } |
3906 | 3918 | ||
@@ -3910,7 +3922,7 @@ static int drbd_do_auth(struct drbd_conf *mdev) | |||
3910 | rv = crypto_hash_digest(&desc, &sg, sg.length, response); | 3922 | rv = crypto_hash_digest(&desc, &sg, sg.length, response); |
3911 | if (rv) { | 3923 | if (rv) { |
3912 | dev_err(DEV, "crypto_hash_digest() failed with %d\n", rv); | 3924 | dev_err(DEV, "crypto_hash_digest() failed with %d\n", rv); |
3913 | rv = 0; | 3925 | rv = -1; |
3914 | goto fail; | 3926 | goto fail; |
3915 | } | 3927 | } |
3916 | 3928 | ||
@@ -3944,9 +3956,9 @@ static int drbd_do_auth(struct drbd_conf *mdev) | |||
3944 | } | 3956 | } |
3945 | 3957 | ||
3946 | right_response = kmalloc(resp_size, GFP_NOIO); | 3958 | right_response = kmalloc(resp_size, GFP_NOIO); |
3947 | if (response == NULL) { | 3959 | if (right_response == NULL) { |
3948 | dev_err(DEV, "kmalloc of right_response failed\n"); | 3960 | dev_err(DEV, "kmalloc of right_response failed\n"); |
3949 | rv = 0; | 3961 | rv = -1; |
3950 | goto fail; | 3962 | goto fail; |
3951 | } | 3963 | } |
3952 | 3964 | ||
@@ -3955,7 +3967,7 @@ static int drbd_do_auth(struct drbd_conf *mdev) | |||
3955 | rv = crypto_hash_digest(&desc, &sg, sg.length, right_response); | 3967 | rv = crypto_hash_digest(&desc, &sg, sg.length, right_response); |
3956 | if (rv) { | 3968 | if (rv) { |
3957 | dev_err(DEV, "crypto_hash_digest() failed with %d\n", rv); | 3969 | dev_err(DEV, "crypto_hash_digest() failed with %d\n", rv); |
3958 | rv = 0; | 3970 | rv = -1; |
3959 | goto fail; | 3971 | goto fail; |
3960 | } | 3972 | } |
3961 | 3973 | ||
@@ -3964,6 +3976,8 @@ static int drbd_do_auth(struct drbd_conf *mdev) | |||
3964 | if (rv) | 3976 | if (rv) |
3965 | dev_info(DEV, "Peer authenticated using %d bytes of '%s' HMAC\n", | 3977 | dev_info(DEV, "Peer authenticated using %d bytes of '%s' HMAC\n", |
3966 | resp_size, mdev->net_conf->cram_hmac_alg); | 3978 | resp_size, mdev->net_conf->cram_hmac_alg); |
3979 | else | ||
3980 | rv = -1; | ||
3967 | 3981 | ||
3968 | fail: | 3982 | fail: |
3969 | kfree(peers_ch); | 3983 | kfree(peers_ch); |
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig index 31be3ac2e21b..e023682be2c4 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig | |||
@@ -669,7 +669,7 @@ config VIRTIO_CONSOLE | |||
669 | 669 | ||
670 | config HVCS | 670 | config HVCS |
671 | tristate "IBM Hypervisor Virtual Console Server support" | 671 | tristate "IBM Hypervisor Virtual Console Server support" |
672 | depends on PPC_PSERIES | 672 | depends on PPC_PSERIES && HVC_CONSOLE |
673 | help | 673 | help |
674 | Partitionable IBM Power5 ppc64 machines allow hosting of | 674 | Partitionable IBM Power5 ppc64 machines allow hosting of |
675 | firmware virtual consoles from one Linux partition by | 675 | firmware virtual consoles from one Linux partition by |
diff --git a/drivers/char/agp/amd64-agp.c b/drivers/char/agp/amd64-agp.c index 5aa7a586a7ff..1afb8968a342 100644 --- a/drivers/char/agp/amd64-agp.c +++ b/drivers/char/agp/amd64-agp.c | |||
@@ -725,12 +725,11 @@ static struct pci_driver agp_amd64_pci_driver = { | |||
725 | int __init agp_amd64_init(void) | 725 | int __init agp_amd64_init(void) |
726 | { | 726 | { |
727 | int err = 0; | 727 | int err = 0; |
728 | static int done = 0; | ||
729 | 728 | ||
730 | if (agp_off) | 729 | if (agp_off) |
731 | return -EINVAL; | 730 | return -EINVAL; |
732 | 731 | ||
733 | if (done++) | 732 | if (gart_iommu_aperture) |
734 | return agp_bridges_found ? 0 : -ENODEV; | 733 | return agp_bridges_found ? 0 : -ENODEV; |
735 | 734 | ||
736 | err = pci_register_driver(&agp_amd64_pci_driver); | 735 | err = pci_register_driver(&agp_amd64_pci_driver); |
@@ -771,6 +770,8 @@ int __init agp_amd64_init(void) | |||
771 | 770 | ||
772 | static void __exit agp_amd64_cleanup(void) | 771 | static void __exit agp_amd64_cleanup(void) |
773 | { | 772 | { |
773 | if (gart_iommu_aperture) | ||
774 | return; | ||
774 | if (aperture_resource) | 775 | if (aperture_resource) |
775 | release_resource(aperture_resource); | 776 | release_resource(aperture_resource); |
776 | pci_unregister_driver(&agp_amd64_pci_driver); | 777 | pci_unregister_driver(&agp_amd64_pci_driver); |
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index 30c36ac2cd00..3999a5f25f38 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c | |||
@@ -2460,10 +2460,14 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev, | |||
2460 | &bridge->mode); | 2460 | &bridge->mode); |
2461 | } | 2461 | } |
2462 | 2462 | ||
2463 | if (bridge->driver->mask_memory == intel_i965_mask_memory) | 2463 | if (bridge->driver->mask_memory == intel_i965_mask_memory) { |
2464 | if (pci_set_dma_mask(intel_private.pcidev, DMA_BIT_MASK(36))) | 2464 | if (pci_set_dma_mask(intel_private.pcidev, DMA_BIT_MASK(36))) |
2465 | dev_err(&intel_private.pcidev->dev, | 2465 | dev_err(&intel_private.pcidev->dev, |
2466 | "set gfx device dma mask 36bit failed!\n"); | 2466 | "set gfx device dma mask 36bit failed!\n"); |
2467 | else | ||
2468 | pci_set_consistent_dma_mask(intel_private.pcidev, | ||
2469 | DMA_BIT_MASK(36)); | ||
2470 | } | ||
2467 | 2471 | ||
2468 | pci_set_drvdata(pdev, bridge); | 2472 | pci_set_drvdata(pdev, bridge); |
2469 | return agp_add_bridge(bridge); | 2473 | return agp_add_bridge(bridge); |
diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c index bdaef8e94021..64fe0a793efd 100644 --- a/drivers/char/hw_random/virtio-rng.c +++ b/drivers/char/hw_random/virtio-rng.c | |||
@@ -114,7 +114,7 @@ static struct virtio_device_id id_table[] = { | |||
114 | { 0 }, | 114 | { 0 }, |
115 | }; | 115 | }; |
116 | 116 | ||
117 | static struct virtio_driver virtio_rng = { | 117 | static struct virtio_driver virtio_rng_driver = { |
118 | .driver.name = KBUILD_MODNAME, | 118 | .driver.name = KBUILD_MODNAME, |
119 | .driver.owner = THIS_MODULE, | 119 | .driver.owner = THIS_MODULE, |
120 | .id_table = id_table, | 120 | .id_table = id_table, |
@@ -124,12 +124,12 @@ static struct virtio_driver virtio_rng = { | |||
124 | 124 | ||
125 | static int __init init(void) | 125 | static int __init init(void) |
126 | { | 126 | { |
127 | return register_virtio_driver(&virtio_rng); | 127 | return register_virtio_driver(&virtio_rng_driver); |
128 | } | 128 | } |
129 | 129 | ||
130 | static void __exit fini(void) | 130 | static void __exit fini(void) |
131 | { | 131 | { |
132 | unregister_virtio_driver(&virtio_rng); | 132 | unregister_virtio_driver(&virtio_rng_driver); |
133 | } | 133 | } |
134 | module_init(init); | 134 | module_init(init); |
135 | module_exit(fini); | 135 | module_exit(fini); |
diff --git a/drivers/char/nozomi.c b/drivers/char/nozomi.c index 7d73cd430340..2ad7d37afbd0 100644 --- a/drivers/char/nozomi.c +++ b/drivers/char/nozomi.c | |||
@@ -1651,10 +1651,10 @@ static void ntty_close(struct tty_struct *tty, struct file *file) | |||
1651 | 1651 | ||
1652 | dc->open_ttys--; | 1652 | dc->open_ttys--; |
1653 | port->count--; | 1653 | port->count--; |
1654 | tty_port_tty_set(port, NULL); | ||
1655 | 1654 | ||
1656 | if (port->count == 0) { | 1655 | if (port->count == 0) { |
1657 | DBG1("close: %d", nport->token_dl); | 1656 | DBG1("close: %d", nport->token_dl); |
1657 | tty_port_tty_set(port, NULL); | ||
1658 | spin_lock_irqsave(&dc->spin_mutex, flags); | 1658 | spin_lock_irqsave(&dc->spin_mutex, flags); |
1659 | dc->last_ier &= ~(nport->token_dl); | 1659 | dc->last_ier &= ~(nport->token_dl); |
1660 | writew(dc->last_ier, dc->reg_ier); | 1660 | writew(dc->last_ier, dc->reg_ier); |
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index f15df40bc318..c6f3b48be9dd 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c | |||
@@ -1951,8 +1951,8 @@ static int tty_fasync(int fd, struct file *filp, int on) | |||
1951 | pid = task_pid(current); | 1951 | pid = task_pid(current); |
1952 | type = PIDTYPE_PID; | 1952 | type = PIDTYPE_PID; |
1953 | } | 1953 | } |
1954 | spin_unlock_irqrestore(&tty->ctrl_lock, flags); | ||
1955 | retval = __f_setown(filp, pid, type, 0); | 1954 | retval = __f_setown(filp, pid, type, 0); |
1955 | spin_unlock_irqrestore(&tty->ctrl_lock, flags); | ||
1956 | if (retval) | 1956 | if (retval) |
1957 | goto out; | 1957 | goto out; |
1958 | } else { | 1958 | } else { |
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index c5facd951dda..000dc67b85b7 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c | |||
@@ -197,7 +197,7 @@ static int amd64_get_scrub_rate(struct mem_ctl_info *mci, u32 *bw) | |||
197 | edac_printk(KERN_DEBUG, EDAC_MC, | 197 | edac_printk(KERN_DEBUG, EDAC_MC, |
198 | "pci-read, sdram scrub control value: %d \n", scrubval); | 198 | "pci-read, sdram scrub control value: %d \n", scrubval); |
199 | 199 | ||
200 | for (i = 0; ARRAY_SIZE(scrubrates); i++) { | 200 | for (i = 0; i < ARRAY_SIZE(scrubrates); i++) { |
201 | if (scrubrates[i].scrubval == scrubval) { | 201 | if (scrubrates[i].scrubval == scrubval) { |
202 | *bw = scrubrates[i].bandwidth; | 202 | *bw = scrubrates[i].bandwidth; |
203 | status = 0; | 203 | status = 0; |
diff --git a/drivers/edac/i5000_edac.c b/drivers/edac/i5000_edac.c index 77a9579d7167..adc10a2ac5f6 100644 --- a/drivers/edac/i5000_edac.c +++ b/drivers/edac/i5000_edac.c | |||
@@ -577,7 +577,13 @@ static void i5000_process_nonfatal_error_info(struct mem_ctl_info *mci, | |||
577 | debugf0("\tUncorrected bits= 0x%x\n", ue_errors); | 577 | debugf0("\tUncorrected bits= 0x%x\n", ue_errors); |
578 | 578 | ||
579 | branch = EXTRACT_FBDCHAN_INDX(info->ferr_nf_fbd); | 579 | branch = EXTRACT_FBDCHAN_INDX(info->ferr_nf_fbd); |
580 | channel = branch; | 580 | |
581 | /* | ||
582 | * According with i5000 datasheet, bit 28 has no significance | ||
583 | * for errors M4Err-M12Err and M17Err-M21Err, on FERR_NF_FBD | ||
584 | */ | ||
585 | channel = branch & 2; | ||
586 | |||
581 | bank = NREC_BANK(info->nrecmema); | 587 | bank = NREC_BANK(info->nrecmema); |
582 | rank = NREC_RANK(info->nrecmema); | 588 | rank = NREC_RANK(info->nrecmema); |
583 | rdwr = NREC_RDWR(info->nrecmema); | 589 | rdwr = NREC_RDWR(info->nrecmema); |
diff --git a/drivers/firewire/core-card.c b/drivers/firewire/core-card.c index 7083bcc1b9c7..5045156c5313 100644 --- a/drivers/firewire/core-card.c +++ b/drivers/firewire/core-card.c | |||
@@ -57,6 +57,8 @@ static LIST_HEAD(descriptor_list); | |||
57 | static int descriptor_count; | 57 | static int descriptor_count; |
58 | 58 | ||
59 | static __be32 tmp_config_rom[256]; | 59 | static __be32 tmp_config_rom[256]; |
60 | /* ROM header, bus info block, root dir header, capabilities = 7 quadlets */ | ||
61 | static size_t config_rom_length = 1 + 4 + 1 + 1; | ||
60 | 62 | ||
61 | #define BIB_CRC(v) ((v) << 0) | 63 | #define BIB_CRC(v) ((v) << 0) |
62 | #define BIB_CRC_LENGTH(v) ((v) << 16) | 64 | #define BIB_CRC_LENGTH(v) ((v) << 16) |
@@ -73,7 +75,7 @@ static __be32 tmp_config_rom[256]; | |||
73 | #define BIB_CMC ((1) << 30) | 75 | #define BIB_CMC ((1) << 30) |
74 | #define BIB_IMC ((1) << 31) | 76 | #define BIB_IMC ((1) << 31) |
75 | 77 | ||
76 | static size_t generate_config_rom(struct fw_card *card, __be32 *config_rom) | 78 | static void generate_config_rom(struct fw_card *card, __be32 *config_rom) |
77 | { | 79 | { |
78 | struct fw_descriptor *desc; | 80 | struct fw_descriptor *desc; |
79 | int i, j, k, length; | 81 | int i, j, k, length; |
@@ -130,23 +132,30 @@ static size_t generate_config_rom(struct fw_card *card, __be32 *config_rom) | |||
130 | for (i = 0; i < j; i += length + 1) | 132 | for (i = 0; i < j; i += length + 1) |
131 | length = fw_compute_block_crc(config_rom + i); | 133 | length = fw_compute_block_crc(config_rom + i); |
132 | 134 | ||
133 | return j; | 135 | WARN_ON(j != config_rom_length); |
134 | } | 136 | } |
135 | 137 | ||
136 | static void update_config_roms(void) | 138 | static void update_config_roms(void) |
137 | { | 139 | { |
138 | struct fw_card *card; | 140 | struct fw_card *card; |
139 | size_t length; | ||
140 | 141 | ||
141 | list_for_each_entry (card, &card_list, link) { | 142 | list_for_each_entry (card, &card_list, link) { |
142 | length = generate_config_rom(card, tmp_config_rom); | 143 | generate_config_rom(card, tmp_config_rom); |
143 | card->driver->set_config_rom(card, tmp_config_rom, length); | 144 | card->driver->set_config_rom(card, tmp_config_rom, |
145 | config_rom_length); | ||
144 | } | 146 | } |
145 | } | 147 | } |
146 | 148 | ||
149 | static size_t required_space(struct fw_descriptor *desc) | ||
150 | { | ||
151 | /* descriptor + entry into root dir + optional immediate entry */ | ||
152 | return desc->length + 1 + (desc->immediate > 0 ? 1 : 0); | ||
153 | } | ||
154 | |||
147 | int fw_core_add_descriptor(struct fw_descriptor *desc) | 155 | int fw_core_add_descriptor(struct fw_descriptor *desc) |
148 | { | 156 | { |
149 | size_t i; | 157 | size_t i; |
158 | int ret; | ||
150 | 159 | ||
151 | /* | 160 | /* |
152 | * Check descriptor is valid; the length of all blocks in the | 161 | * Check descriptor is valid; the length of all blocks in the |
@@ -162,15 +171,21 @@ int fw_core_add_descriptor(struct fw_descriptor *desc) | |||
162 | 171 | ||
163 | mutex_lock(&card_mutex); | 172 | mutex_lock(&card_mutex); |
164 | 173 | ||
165 | list_add_tail(&desc->link, &descriptor_list); | 174 | if (config_rom_length + required_space(desc) > 256) { |
166 | descriptor_count++; | 175 | ret = -EBUSY; |
167 | if (desc->immediate > 0) | 176 | } else { |
177 | list_add_tail(&desc->link, &descriptor_list); | ||
178 | config_rom_length += required_space(desc); | ||
168 | descriptor_count++; | 179 | descriptor_count++; |
169 | update_config_roms(); | 180 | if (desc->immediate > 0) |
181 | descriptor_count++; | ||
182 | update_config_roms(); | ||
183 | ret = 0; | ||
184 | } | ||
170 | 185 | ||
171 | mutex_unlock(&card_mutex); | 186 | mutex_unlock(&card_mutex); |
172 | 187 | ||
173 | return 0; | 188 | return ret; |
174 | } | 189 | } |
175 | EXPORT_SYMBOL(fw_core_add_descriptor); | 190 | EXPORT_SYMBOL(fw_core_add_descriptor); |
176 | 191 | ||
@@ -179,6 +194,7 @@ void fw_core_remove_descriptor(struct fw_descriptor *desc) | |||
179 | mutex_lock(&card_mutex); | 194 | mutex_lock(&card_mutex); |
180 | 195 | ||
181 | list_del(&desc->link); | 196 | list_del(&desc->link); |
197 | config_rom_length -= required_space(desc); | ||
182 | descriptor_count--; | 198 | descriptor_count--; |
183 | if (desc->immediate > 0) | 199 | if (desc->immediate > 0) |
184 | descriptor_count--; | 200 | descriptor_count--; |
@@ -428,7 +444,6 @@ EXPORT_SYMBOL(fw_card_initialize); | |||
428 | int fw_card_add(struct fw_card *card, | 444 | int fw_card_add(struct fw_card *card, |
429 | u32 max_receive, u32 link_speed, u64 guid) | 445 | u32 max_receive, u32 link_speed, u64 guid) |
430 | { | 446 | { |
431 | size_t length; | ||
432 | int ret; | 447 | int ret; |
433 | 448 | ||
434 | card->max_receive = max_receive; | 449 | card->max_receive = max_receive; |
@@ -437,8 +452,8 @@ int fw_card_add(struct fw_card *card, | |||
437 | 452 | ||
438 | mutex_lock(&card_mutex); | 453 | mutex_lock(&card_mutex); |
439 | 454 | ||
440 | length = generate_config_rom(card, tmp_config_rom); | 455 | generate_config_rom(card, tmp_config_rom); |
441 | ret = card->driver->enable(card, tmp_config_rom, length); | 456 | ret = card->driver->enable(card, tmp_config_rom, config_rom_length); |
442 | if (ret == 0) | 457 | if (ret == 0) |
443 | list_add_tail(&card->link, &card_list); | 458 | list_add_tail(&card->link, &card_list); |
444 | 459 | ||
diff --git a/drivers/firewire/core-cdev.c b/drivers/firewire/core-cdev.c index e6d63849e78e..4eeaed57e219 100644 --- a/drivers/firewire/core-cdev.c +++ b/drivers/firewire/core-cdev.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/preempt.h> | 35 | #include <linux/preempt.h> |
36 | #include <linux/sched.h> | 36 | #include <linux/sched.h> |
37 | #include <linux/spinlock.h> | 37 | #include <linux/spinlock.h> |
38 | #include <linux/string.h> | ||
38 | #include <linux/time.h> | 39 | #include <linux/time.h> |
39 | #include <linux/uaccess.h> | 40 | #include <linux/uaccess.h> |
40 | #include <linux/vmalloc.h> | 41 | #include <linux/vmalloc.h> |
@@ -595,13 +596,20 @@ static int ioctl_send_request(struct client *client, void *buffer) | |||
595 | client->device->max_speed); | 596 | client->device->max_speed); |
596 | } | 597 | } |
597 | 598 | ||
599 | static inline bool is_fcp_request(struct fw_request *request) | ||
600 | { | ||
601 | return request == NULL; | ||
602 | } | ||
603 | |||
598 | static void release_request(struct client *client, | 604 | static void release_request(struct client *client, |
599 | struct client_resource *resource) | 605 | struct client_resource *resource) |
600 | { | 606 | { |
601 | struct inbound_transaction_resource *r = container_of(resource, | 607 | struct inbound_transaction_resource *r = container_of(resource, |
602 | struct inbound_transaction_resource, resource); | 608 | struct inbound_transaction_resource, resource); |
603 | 609 | ||
604 | if (r->request) | 610 | if (is_fcp_request(r->request)) |
611 | kfree(r->data); | ||
612 | else | ||
605 | fw_send_response(client->device->card, r->request, | 613 | fw_send_response(client->device->card, r->request, |
606 | RCODE_CONFLICT_ERROR); | 614 | RCODE_CONFLICT_ERROR); |
607 | kfree(r); | 615 | kfree(r); |
@@ -616,6 +624,7 @@ static void handle_request(struct fw_card *card, struct fw_request *request, | |||
616 | struct address_handler_resource *handler = callback_data; | 624 | struct address_handler_resource *handler = callback_data; |
617 | struct inbound_transaction_resource *r; | 625 | struct inbound_transaction_resource *r; |
618 | struct inbound_transaction_event *e; | 626 | struct inbound_transaction_event *e; |
627 | void *fcp_frame = NULL; | ||
619 | int ret; | 628 | int ret; |
620 | 629 | ||
621 | r = kmalloc(sizeof(*r), GFP_ATOMIC); | 630 | r = kmalloc(sizeof(*r), GFP_ATOMIC); |
@@ -627,6 +636,18 @@ static void handle_request(struct fw_card *card, struct fw_request *request, | |||
627 | r->data = payload; | 636 | r->data = payload; |
628 | r->length = length; | 637 | r->length = length; |
629 | 638 | ||
639 | if (is_fcp_request(request)) { | ||
640 | /* | ||
641 | * FIXME: Let core-transaction.c manage a | ||
642 | * single reference-counted copy? | ||
643 | */ | ||
644 | fcp_frame = kmemdup(payload, length, GFP_ATOMIC); | ||
645 | if (fcp_frame == NULL) | ||
646 | goto failed; | ||
647 | |||
648 | r->data = fcp_frame; | ||
649 | } | ||
650 | |||
630 | r->resource.release = release_request; | 651 | r->resource.release = release_request; |
631 | ret = add_client_resource(handler->client, &r->resource, GFP_ATOMIC); | 652 | ret = add_client_resource(handler->client, &r->resource, GFP_ATOMIC); |
632 | if (ret < 0) | 653 | if (ret < 0) |
@@ -640,13 +661,15 @@ static void handle_request(struct fw_card *card, struct fw_request *request, | |||
640 | e->request.closure = handler->closure; | 661 | e->request.closure = handler->closure; |
641 | 662 | ||
642 | queue_event(handler->client, &e->event, | 663 | queue_event(handler->client, &e->event, |
643 | &e->request, sizeof(e->request), payload, length); | 664 | &e->request, sizeof(e->request), r->data, length); |
644 | return; | 665 | return; |
645 | 666 | ||
646 | failed: | 667 | failed: |
647 | kfree(r); | 668 | kfree(r); |
648 | kfree(e); | 669 | kfree(e); |
649 | if (request) | 670 | kfree(fcp_frame); |
671 | |||
672 | if (!is_fcp_request(request)) | ||
650 | fw_send_response(card, request, RCODE_CONFLICT_ERROR); | 673 | fw_send_response(card, request, RCODE_CONFLICT_ERROR); |
651 | } | 674 | } |
652 | 675 | ||
@@ -717,18 +740,17 @@ static int ioctl_send_response(struct client *client, void *buffer) | |||
717 | 740 | ||
718 | r = container_of(resource, struct inbound_transaction_resource, | 741 | r = container_of(resource, struct inbound_transaction_resource, |
719 | resource); | 742 | resource); |
720 | if (r->request) { | 743 | if (is_fcp_request(r->request)) |
721 | if (request->length < r->length) | 744 | goto out; |
722 | r->length = request->length; | 745 | |
723 | if (copy_from_user(r->data, u64_to_uptr(request->data), | 746 | if (request->length < r->length) |
724 | r->length)) { | 747 | r->length = request->length; |
725 | ret = -EFAULT; | 748 | if (copy_from_user(r->data, u64_to_uptr(request->data), r->length)) { |
726 | kfree(r->request); | 749 | ret = -EFAULT; |
727 | goto out; | 750 | kfree(r->request); |
728 | } | 751 | goto out; |
729 | fw_send_response(client->device->card, r->request, | ||
730 | request->rcode); | ||
731 | } | 752 | } |
753 | fw_send_response(client->device->card, r->request, request->rcode); | ||
732 | out: | 754 | out: |
733 | kfree(r); | 755 | kfree(r); |
734 | 756 | ||
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index a61571c63c59..2345d4103fe6 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c | |||
@@ -2420,6 +2420,7 @@ static void ohci_pmac_off(struct pci_dev *dev) | |||
2420 | 2420 | ||
2421 | #define PCI_VENDOR_ID_AGERE PCI_VENDOR_ID_ATT | 2421 | #define PCI_VENDOR_ID_AGERE PCI_VENDOR_ID_ATT |
2422 | #define PCI_DEVICE_ID_AGERE_FW643 0x5901 | 2422 | #define PCI_DEVICE_ID_AGERE_FW643 0x5901 |
2423 | #define PCI_DEVICE_ID_TI_TSB43AB23 0x8024 | ||
2423 | 2424 | ||
2424 | static int __devinit pci_probe(struct pci_dev *dev, | 2425 | static int __devinit pci_probe(struct pci_dev *dev, |
2425 | const struct pci_device_id *ent) | 2426 | const struct pci_device_id *ent) |
@@ -2488,7 +2489,8 @@ static int __devinit pci_probe(struct pci_dev *dev, | |||
2488 | #if !defined(CONFIG_X86_32) | 2489 | #if !defined(CONFIG_X86_32) |
2489 | /* dual-buffer mode is broken with descriptor addresses above 2G */ | 2490 | /* dual-buffer mode is broken with descriptor addresses above 2G */ |
2490 | if (dev->vendor == PCI_VENDOR_ID_TI && | 2491 | if (dev->vendor == PCI_VENDOR_ID_TI && |
2491 | dev->device == PCI_DEVICE_ID_TI_TSB43AB22) | 2492 | (dev->device == PCI_DEVICE_ID_TI_TSB43AB22 || |
2493 | dev->device == PCI_DEVICE_ID_TI_TSB43AB23)) | ||
2492 | ohci->use_dualbuffer = false; | 2494 | ohci->use_dualbuffer = false; |
2493 | #endif | 2495 | #endif |
2494 | 2496 | ||
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c index 077313f0d47f..7d0f00a935fa 100644 --- a/drivers/gpu/drm/drm_crtc_helper.c +++ b/drivers/gpu/drm/drm_crtc_helper.c | |||
@@ -702,7 +702,7 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc, | |||
702 | if (encoder->crtc != crtc) | 702 | if (encoder->crtc != crtc) |
703 | continue; | 703 | continue; |
704 | 704 | ||
705 | DRM_INFO("%s: set mode %s %x\n", drm_get_encoder_name(encoder), | 705 | DRM_DEBUG("%s: set mode %s %x\n", drm_get_encoder_name(encoder), |
706 | mode->name, mode->base.id); | 706 | mode->name, mode->base.id); |
707 | encoder_funcs = encoder->helper_private; | 707 | encoder_funcs = encoder->helper_private; |
708 | encoder_funcs->mode_set(encoder, mode, adjusted_mode); | 708 | encoder_funcs->mode_set(encoder, mode, adjusted_mode); |
@@ -1032,7 +1032,8 @@ bool drm_helper_initial_config(struct drm_device *dev) | |||
1032 | /* | 1032 | /* |
1033 | * we shouldn't end up with no modes here. | 1033 | * we shouldn't end up with no modes here. |
1034 | */ | 1034 | */ |
1035 | printk(KERN_INFO "No connectors reported conncted with modes\n"); | 1035 | if (count == 0) |
1036 | printk(KERN_INFO "No connectors reported connected with modes\n"); | ||
1036 | 1037 | ||
1037 | drm_setup_crtcs(dev); | 1038 | drm_setup_crtcs(dev); |
1038 | 1039 | ||
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index defcaf108460..f665b05592f3 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c | |||
@@ -633,8 +633,7 @@ static struct drm_display_mode *drm_mode_detailed(struct drm_device *dev, | |||
633 | return NULL; | 633 | return NULL; |
634 | } | 634 | } |
635 | if (!(pt->misc & DRM_EDID_PT_SEPARATE_SYNC)) { | 635 | if (!(pt->misc & DRM_EDID_PT_SEPARATE_SYNC)) { |
636 | printk(KERN_WARNING "integrated sync not supported\n"); | 636 | printk(KERN_WARNING "composite sync not supported\n"); |
637 | return NULL; | ||
638 | } | 637 | } |
639 | 638 | ||
640 | /* it is incorrect if hsync/vsync width is zero */ | 639 | /* it is incorrect if hsync/vsync width is zero */ |
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 1c2b7d44ec05..0f9e90552dc4 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c | |||
@@ -389,7 +389,7 @@ int drm_fb_helper_blank(int blank, struct fb_info *info) | |||
389 | break; | 389 | break; |
390 | /* Display: Off; HSync: On, VSync: On */ | 390 | /* Display: Off; HSync: On, VSync: On */ |
391 | case FB_BLANK_NORMAL: | 391 | case FB_BLANK_NORMAL: |
392 | drm_fb_helper_off(info, DRM_MODE_DPMS_ON); | 392 | drm_fb_helper_off(info, DRM_MODE_DPMS_STANDBY); |
393 | break; | 393 | break; |
394 | /* Display: Off; HSync: Off, VSync: On */ | 394 | /* Display: Off; HSync: Off, VSync: On */ |
395 | case FB_BLANK_HSYNC_SUSPEND: | 395 | case FB_BLANK_HSYNC_SUSPEND: |
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index e9dbb481c469..8bf3770f294e 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c | |||
@@ -142,19 +142,6 @@ drm_gem_object_alloc(struct drm_device *dev, size_t size) | |||
142 | if (IS_ERR(obj->filp)) | 142 | if (IS_ERR(obj->filp)) |
143 | goto free; | 143 | goto free; |
144 | 144 | ||
145 | /* Basically we want to disable the OOM killer and handle ENOMEM | ||
146 | * ourselves by sacrificing pages from cached buffers. | ||
147 | * XXX shmem_file_[gs]et_gfp_mask() | ||
148 | */ | ||
149 | mapping_set_gfp_mask(obj->filp->f_path.dentry->d_inode->i_mapping, | ||
150 | GFP_HIGHUSER | | ||
151 | __GFP_COLD | | ||
152 | __GFP_FS | | ||
153 | __GFP_RECLAIMABLE | | ||
154 | __GFP_NORETRY | | ||
155 | __GFP_NOWARN | | ||
156 | __GFP_NOMEMALLOC); | ||
157 | |||
158 | kref_init(&obj->refcount); | 145 | kref_init(&obj->refcount); |
159 | kref_init(&obj->handlecount); | 146 | kref_init(&obj->handlecount); |
160 | obj->size = size; | 147 | obj->size = size; |
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 9c9998c4dceb..a894ade03093 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c | |||
@@ -290,7 +290,7 @@ static int i915_batchbuffer_info(struct seq_file *m, void *data) | |||
290 | list_for_each_entry(obj_priv, &dev_priv->mm.active_list, list) { | 290 | list_for_each_entry(obj_priv, &dev_priv->mm.active_list, list) { |
291 | obj = obj_priv->obj; | 291 | obj = obj_priv->obj; |
292 | if (obj->read_domains & I915_GEM_DOMAIN_COMMAND) { | 292 | if (obj->read_domains & I915_GEM_DOMAIN_COMMAND) { |
293 | ret = i915_gem_object_get_pages(obj); | 293 | ret = i915_gem_object_get_pages(obj, 0); |
294 | if (ret) { | 294 | if (ret) { |
295 | DRM_ERROR("Failed to get pages: %d\n", ret); | 295 | DRM_ERROR("Failed to get pages: %d\n", ret); |
296 | spin_unlock(&dev_priv->mm.active_list_lock); | 296 | spin_unlock(&dev_priv->mm.active_list_lock); |
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index bbe47812e4b6..e660ac07f3b2 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c | |||
@@ -134,6 +134,10 @@ static int i915_init_phys_hws(struct drm_device *dev) | |||
134 | 134 | ||
135 | memset(dev_priv->hw_status_page, 0, PAGE_SIZE); | 135 | memset(dev_priv->hw_status_page, 0, PAGE_SIZE); |
136 | 136 | ||
137 | if (IS_I965G(dev)) | ||
138 | dev_priv->dma_status_page |= (dev_priv->dma_status_page >> 28) & | ||
139 | 0xf0; | ||
140 | |||
137 | I915_WRITE(HWS_PGA, dev_priv->dma_status_page); | 141 | I915_WRITE(HWS_PGA, dev_priv->dma_status_page); |
138 | DRM_DEBUG_DRIVER("Enabled hardware status page\n"); | 142 | DRM_DEBUG_DRIVER("Enabled hardware status page\n"); |
139 | return 0; | 143 | return 0; |
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index be631cc3e4dc..46d88965852a 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -45,6 +45,9 @@ module_param_named(fbpercrtc, i915_fbpercrtc, int, 0400); | |||
45 | unsigned int i915_powersave = 1; | 45 | unsigned int i915_powersave = 1; |
46 | module_param_named(powersave, i915_powersave, int, 0400); | 46 | module_param_named(powersave, i915_powersave, int, 0400); |
47 | 47 | ||
48 | unsigned int i915_lvds_downclock = 0; | ||
49 | module_param_named(lvds_downclock, i915_lvds_downclock, int, 0400); | ||
50 | |||
48 | static struct drm_driver driver; | 51 | static struct drm_driver driver; |
49 | 52 | ||
50 | #define INTEL_VGA_DEVICE(id, info) { \ | 53 | #define INTEL_VGA_DEVICE(id, info) { \ |
@@ -464,8 +467,11 @@ static struct drm_driver driver = { | |||
464 | .lastclose = i915_driver_lastclose, | 467 | .lastclose = i915_driver_lastclose, |
465 | .preclose = i915_driver_preclose, | 468 | .preclose = i915_driver_preclose, |
466 | .postclose = i915_driver_postclose, | 469 | .postclose = i915_driver_postclose, |
470 | |||
471 | /* Used in place of i915_pm_ops for non-DRIVER_MODESET */ | ||
467 | .suspend = i915_suspend, | 472 | .suspend = i915_suspend, |
468 | .resume = i915_resume, | 473 | .resume = i915_resume, |
474 | |||
469 | .device_is_agp = i915_driver_device_is_agp, | 475 | .device_is_agp = i915_driver_device_is_agp, |
470 | .enable_vblank = i915_enable_vblank, | 476 | .enable_vblank = i915_enable_vblank, |
471 | .disable_vblank = i915_disable_vblank, | 477 | .disable_vblank = i915_disable_vblank, |
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 29dd67626967..aaf934d96f21 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -283,6 +283,7 @@ typedef struct drm_i915_private { | |||
283 | unsigned int lvds_use_ssc:1; | 283 | unsigned int lvds_use_ssc:1; |
284 | unsigned int edp_support:1; | 284 | unsigned int edp_support:1; |
285 | int lvds_ssc_freq; | 285 | int lvds_ssc_freq; |
286 | int edp_bpp; | ||
286 | 287 | ||
287 | struct notifier_block lid_notifier; | 288 | struct notifier_block lid_notifier; |
288 | 289 | ||
@@ -722,6 +723,7 @@ extern struct drm_ioctl_desc i915_ioctls[]; | |||
722 | extern int i915_max_ioctl; | 723 | extern int i915_max_ioctl; |
723 | extern unsigned int i915_fbpercrtc; | 724 | extern unsigned int i915_fbpercrtc; |
724 | extern unsigned int i915_powersave; | 725 | extern unsigned int i915_powersave; |
726 | extern unsigned int i915_lvds_downclock; | ||
725 | 727 | ||
726 | extern void i915_save_display(struct drm_device *dev); | 728 | extern void i915_save_display(struct drm_device *dev); |
727 | extern void i915_restore_display(struct drm_device *dev); | 729 | extern void i915_restore_display(struct drm_device *dev); |
@@ -864,12 +866,13 @@ int i915_do_wait_request(struct drm_device *dev, uint32_t seqno, int interruptib | |||
864 | int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf); | 866 | int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf); |
865 | int i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj, | 867 | int i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj, |
866 | int write); | 868 | int write); |
869 | int i915_gem_object_set_to_display_plane(struct drm_gem_object *obj); | ||
867 | int i915_gem_attach_phys_object(struct drm_device *dev, | 870 | int i915_gem_attach_phys_object(struct drm_device *dev, |
868 | struct drm_gem_object *obj, int id); | 871 | struct drm_gem_object *obj, int id); |
869 | void i915_gem_detach_phys_object(struct drm_device *dev, | 872 | void i915_gem_detach_phys_object(struct drm_device *dev, |
870 | struct drm_gem_object *obj); | 873 | struct drm_gem_object *obj); |
871 | void i915_gem_free_all_phys_object(struct drm_device *dev); | 874 | void i915_gem_free_all_phys_object(struct drm_device *dev); |
872 | int i915_gem_object_get_pages(struct drm_gem_object *obj); | 875 | int i915_gem_object_get_pages(struct drm_gem_object *obj, gfp_t gfpmask); |
873 | void i915_gem_object_put_pages(struct drm_gem_object *obj); | 876 | void i915_gem_object_put_pages(struct drm_gem_object *obj); |
874 | void i915_gem_release(struct drm_device * dev, struct drm_file *file_priv); | 877 | void i915_gem_release(struct drm_device * dev, struct drm_file *file_priv); |
875 | void i915_gem_object_flush_write_domain(struct drm_gem_object *obj); | 878 | void i915_gem_object_flush_write_domain(struct drm_gem_object *obj); |
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 2748609f05b3..dda787aafcc6 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -277,7 +277,7 @@ i915_gem_shmem_pread_fast(struct drm_device *dev, struct drm_gem_object *obj, | |||
277 | 277 | ||
278 | mutex_lock(&dev->struct_mutex); | 278 | mutex_lock(&dev->struct_mutex); |
279 | 279 | ||
280 | ret = i915_gem_object_get_pages(obj); | 280 | ret = i915_gem_object_get_pages(obj, 0); |
281 | if (ret != 0) | 281 | if (ret != 0) |
282 | goto fail_unlock; | 282 | goto fail_unlock; |
283 | 283 | ||
@@ -321,40 +321,24 @@ fail_unlock: | |||
321 | return ret; | 321 | return ret; |
322 | } | 322 | } |
323 | 323 | ||
324 | static inline gfp_t | ||
325 | i915_gem_object_get_page_gfp_mask (struct drm_gem_object *obj) | ||
326 | { | ||
327 | return mapping_gfp_mask(obj->filp->f_path.dentry->d_inode->i_mapping); | ||
328 | } | ||
329 | |||
330 | static inline void | ||
331 | i915_gem_object_set_page_gfp_mask (struct drm_gem_object *obj, gfp_t gfp) | ||
332 | { | ||
333 | mapping_set_gfp_mask(obj->filp->f_path.dentry->d_inode->i_mapping, gfp); | ||
334 | } | ||
335 | |||
336 | static int | 324 | static int |
337 | i915_gem_object_get_pages_or_evict(struct drm_gem_object *obj) | 325 | i915_gem_object_get_pages_or_evict(struct drm_gem_object *obj) |
338 | { | 326 | { |
339 | int ret; | 327 | int ret; |
340 | 328 | ||
341 | ret = i915_gem_object_get_pages(obj); | 329 | ret = i915_gem_object_get_pages(obj, __GFP_NORETRY | __GFP_NOWARN); |
342 | 330 | ||
343 | /* If we've insufficient memory to map in the pages, attempt | 331 | /* If we've insufficient memory to map in the pages, attempt |
344 | * to make some space by throwing out some old buffers. | 332 | * to make some space by throwing out some old buffers. |
345 | */ | 333 | */ |
346 | if (ret == -ENOMEM) { | 334 | if (ret == -ENOMEM) { |
347 | struct drm_device *dev = obj->dev; | 335 | struct drm_device *dev = obj->dev; |
348 | gfp_t gfp; | ||
349 | 336 | ||
350 | ret = i915_gem_evict_something(dev, obj->size); | 337 | ret = i915_gem_evict_something(dev, obj->size); |
351 | if (ret) | 338 | if (ret) |
352 | return ret; | 339 | return ret; |
353 | 340 | ||
354 | gfp = i915_gem_object_get_page_gfp_mask(obj); | 341 | ret = i915_gem_object_get_pages(obj, 0); |
355 | i915_gem_object_set_page_gfp_mask(obj, gfp & ~__GFP_NORETRY); | ||
356 | ret = i915_gem_object_get_pages(obj); | ||
357 | i915_gem_object_set_page_gfp_mask (obj, gfp); | ||
358 | } | 342 | } |
359 | 343 | ||
360 | return ret; | 344 | return ret; |
@@ -790,7 +774,7 @@ i915_gem_shmem_pwrite_fast(struct drm_device *dev, struct drm_gem_object *obj, | |||
790 | 774 | ||
791 | mutex_lock(&dev->struct_mutex); | 775 | mutex_lock(&dev->struct_mutex); |
792 | 776 | ||
793 | ret = i915_gem_object_get_pages(obj); | 777 | ret = i915_gem_object_get_pages(obj, 0); |
794 | if (ret != 0) | 778 | if (ret != 0) |
795 | goto fail_unlock; | 779 | goto fail_unlock; |
796 | 780 | ||
@@ -2230,7 +2214,8 @@ i915_gem_evict_something(struct drm_device *dev, int min_size) | |||
2230 | } | 2214 | } |
2231 | 2215 | ||
2232 | int | 2216 | int |
2233 | i915_gem_object_get_pages(struct drm_gem_object *obj) | 2217 | i915_gem_object_get_pages(struct drm_gem_object *obj, |
2218 | gfp_t gfpmask) | ||
2234 | { | 2219 | { |
2235 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2220 | struct drm_i915_gem_object *obj_priv = obj->driver_private; |
2236 | int page_count, i; | 2221 | int page_count, i; |
@@ -2256,7 +2241,10 @@ i915_gem_object_get_pages(struct drm_gem_object *obj) | |||
2256 | inode = obj->filp->f_path.dentry->d_inode; | 2241 | inode = obj->filp->f_path.dentry->d_inode; |
2257 | mapping = inode->i_mapping; | 2242 | mapping = inode->i_mapping; |
2258 | for (i = 0; i < page_count; i++) { | 2243 | for (i = 0; i < page_count; i++) { |
2259 | page = read_mapping_page(mapping, i, NULL); | 2244 | page = read_cache_page_gfp(mapping, i, |
2245 | mapping_gfp_mask (mapping) | | ||
2246 | __GFP_COLD | | ||
2247 | gfpmask); | ||
2260 | if (IS_ERR(page)) { | 2248 | if (IS_ERR(page)) { |
2261 | ret = PTR_ERR(page); | 2249 | ret = PTR_ERR(page); |
2262 | i915_gem_object_put_pages(obj); | 2250 | i915_gem_object_put_pages(obj); |
@@ -2579,7 +2567,7 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment) | |||
2579 | drm_i915_private_t *dev_priv = dev->dev_private; | 2567 | drm_i915_private_t *dev_priv = dev->dev_private; |
2580 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2568 | struct drm_i915_gem_object *obj_priv = obj->driver_private; |
2581 | struct drm_mm_node *free_space; | 2569 | struct drm_mm_node *free_space; |
2582 | bool retry_alloc = false; | 2570 | gfp_t gfpmask = __GFP_NORETRY | __GFP_NOWARN; |
2583 | int ret; | 2571 | int ret; |
2584 | 2572 | ||
2585 | if (obj_priv->madv != I915_MADV_WILLNEED) { | 2573 | if (obj_priv->madv != I915_MADV_WILLNEED) { |
@@ -2623,15 +2611,7 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment) | |||
2623 | DRM_INFO("Binding object of size %zd at 0x%08x\n", | 2611 | DRM_INFO("Binding object of size %zd at 0x%08x\n", |
2624 | obj->size, obj_priv->gtt_offset); | 2612 | obj->size, obj_priv->gtt_offset); |
2625 | #endif | 2613 | #endif |
2626 | if (retry_alloc) { | 2614 | ret = i915_gem_object_get_pages(obj, gfpmask); |
2627 | i915_gem_object_set_page_gfp_mask (obj, | ||
2628 | i915_gem_object_get_page_gfp_mask (obj) & ~__GFP_NORETRY); | ||
2629 | } | ||
2630 | ret = i915_gem_object_get_pages(obj); | ||
2631 | if (retry_alloc) { | ||
2632 | i915_gem_object_set_page_gfp_mask (obj, | ||
2633 | i915_gem_object_get_page_gfp_mask (obj) | __GFP_NORETRY); | ||
2634 | } | ||
2635 | if (ret) { | 2615 | if (ret) { |
2636 | drm_mm_put_block(obj_priv->gtt_space); | 2616 | drm_mm_put_block(obj_priv->gtt_space); |
2637 | obj_priv->gtt_space = NULL; | 2617 | obj_priv->gtt_space = NULL; |
@@ -2641,9 +2621,9 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment) | |||
2641 | ret = i915_gem_evict_something(dev, obj->size); | 2621 | ret = i915_gem_evict_something(dev, obj->size); |
2642 | if (ret) { | 2622 | if (ret) { |
2643 | /* now try to shrink everyone else */ | 2623 | /* now try to shrink everyone else */ |
2644 | if (! retry_alloc) { | 2624 | if (gfpmask) { |
2645 | retry_alloc = true; | 2625 | gfpmask = 0; |
2646 | goto search_free; | 2626 | goto search_free; |
2647 | } | 2627 | } |
2648 | 2628 | ||
2649 | return ret; | 2629 | return ret; |
@@ -2837,6 +2817,57 @@ i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj, int write) | |||
2837 | return 0; | 2817 | return 0; |
2838 | } | 2818 | } |
2839 | 2819 | ||
2820 | /* | ||
2821 | * Prepare buffer for display plane. Use uninterruptible for possible flush | ||
2822 | * wait, as in modesetting process we're not supposed to be interrupted. | ||
2823 | */ | ||
2824 | int | ||
2825 | i915_gem_object_set_to_display_plane(struct drm_gem_object *obj) | ||
2826 | { | ||
2827 | struct drm_device *dev = obj->dev; | ||
2828 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | ||
2829 | uint32_t old_write_domain, old_read_domains; | ||
2830 | int ret; | ||
2831 | |||
2832 | /* Not valid to be called on unbound objects. */ | ||
2833 | if (obj_priv->gtt_space == NULL) | ||
2834 | return -EINVAL; | ||
2835 | |||
2836 | i915_gem_object_flush_gpu_write_domain(obj); | ||
2837 | |||
2838 | /* Wait on any GPU rendering and flushing to occur. */ | ||
2839 | if (obj_priv->active) { | ||
2840 | #if WATCH_BUF | ||
2841 | DRM_INFO("%s: object %p wait for seqno %08x\n", | ||
2842 | __func__, obj, obj_priv->last_rendering_seqno); | ||
2843 | #endif | ||
2844 | ret = i915_do_wait_request(dev, obj_priv->last_rendering_seqno, 0); | ||
2845 | if (ret != 0) | ||
2846 | return ret; | ||
2847 | } | ||
2848 | |||
2849 | old_write_domain = obj->write_domain; | ||
2850 | old_read_domains = obj->read_domains; | ||
2851 | |||
2852 | obj->read_domains &= I915_GEM_DOMAIN_GTT; | ||
2853 | |||
2854 | i915_gem_object_flush_cpu_write_domain(obj); | ||
2855 | |||
2856 | /* It should now be out of any other write domains, and we can update | ||
2857 | * the domain values for our changes. | ||
2858 | */ | ||
2859 | BUG_ON((obj->write_domain & ~I915_GEM_DOMAIN_GTT) != 0); | ||
2860 | obj->read_domains |= I915_GEM_DOMAIN_GTT; | ||
2861 | obj->write_domain = I915_GEM_DOMAIN_GTT; | ||
2862 | obj_priv->dirty = 1; | ||
2863 | |||
2864 | trace_i915_gem_object_change_domain(obj, | ||
2865 | old_read_domains, | ||
2866 | old_write_domain); | ||
2867 | |||
2868 | return 0; | ||
2869 | } | ||
2870 | |||
2840 | /** | 2871 | /** |
2841 | * Moves a single object to the CPU read, and possibly write domain. | 2872 | * Moves a single object to the CPU read, and possibly write domain. |
2842 | * | 2873 | * |
@@ -4000,8 +4031,6 @@ i915_gem_execbuffer(struct drm_device *dev, void *data, | |||
4000 | "back to user (%d)\n", | 4031 | "back to user (%d)\n", |
4001 | args->buffer_count, ret); | 4032 | args->buffer_count, ret); |
4002 | } | 4033 | } |
4003 | } else { | ||
4004 | DRM_ERROR("i915_gem_do_execbuffer returns %d\n", ret); | ||
4005 | } | 4034 | } |
4006 | 4035 | ||
4007 | drm_free_large(exec_list); | 4036 | drm_free_large(exec_list); |
@@ -4897,7 +4926,7 @@ void i915_gem_detach_phys_object(struct drm_device *dev, | |||
4897 | if (!obj_priv->phys_obj) | 4926 | if (!obj_priv->phys_obj) |
4898 | return; | 4927 | return; |
4899 | 4928 | ||
4900 | ret = i915_gem_object_get_pages(obj); | 4929 | ret = i915_gem_object_get_pages(obj, 0); |
4901 | if (ret) | 4930 | if (ret) |
4902 | goto out; | 4931 | goto out; |
4903 | 4932 | ||
@@ -4955,7 +4984,7 @@ i915_gem_attach_phys_object(struct drm_device *dev, | |||
4955 | obj_priv->phys_obj = dev_priv->mm.phys_objs[id - 1]; | 4984 | obj_priv->phys_obj = dev_priv->mm.phys_objs[id - 1]; |
4956 | obj_priv->phys_obj->cur_obj = obj; | 4985 | obj_priv->phys_obj->cur_obj = obj; |
4957 | 4986 | ||
4958 | ret = i915_gem_object_get_pages(obj); | 4987 | ret = i915_gem_object_get_pages(obj, 0); |
4959 | if (ret) { | 4988 | if (ret) { |
4960 | DRM_ERROR("failed to get page list\n"); | 4989 | DRM_ERROR("failed to get page list\n"); |
4961 | goto out; | 4990 | goto out; |
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 7cd8110051b6..89a071a3e6fb 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c | |||
@@ -274,7 +274,6 @@ irqreturn_t ironlake_irq_handler(struct drm_device *dev) | |||
274 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 274 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
275 | int ret = IRQ_NONE; | 275 | int ret = IRQ_NONE; |
276 | u32 de_iir, gt_iir, de_ier, pch_iir; | 276 | u32 de_iir, gt_iir, de_ier, pch_iir; |
277 | u32 new_de_iir, new_gt_iir, new_pch_iir; | ||
278 | struct drm_i915_master_private *master_priv; | 277 | struct drm_i915_master_private *master_priv; |
279 | 278 | ||
280 | /* disable master interrupt before clearing iir */ | 279 | /* disable master interrupt before clearing iir */ |
@@ -286,51 +285,42 @@ irqreturn_t ironlake_irq_handler(struct drm_device *dev) | |||
286 | gt_iir = I915_READ(GTIIR); | 285 | gt_iir = I915_READ(GTIIR); |
287 | pch_iir = I915_READ(SDEIIR); | 286 | pch_iir = I915_READ(SDEIIR); |
288 | 287 | ||
289 | for (;;) { | 288 | if (de_iir == 0 && gt_iir == 0 && pch_iir == 0) |
290 | if (de_iir == 0 && gt_iir == 0 && pch_iir == 0) | 289 | goto done; |
291 | break; | ||
292 | |||
293 | ret = IRQ_HANDLED; | ||
294 | 290 | ||
295 | /* should clear PCH hotplug event before clear CPU irq */ | 291 | ret = IRQ_HANDLED; |
296 | I915_WRITE(SDEIIR, pch_iir); | ||
297 | new_pch_iir = I915_READ(SDEIIR); | ||
298 | 292 | ||
299 | I915_WRITE(DEIIR, de_iir); | 293 | if (dev->primary->master) { |
300 | new_de_iir = I915_READ(DEIIR); | 294 | master_priv = dev->primary->master->driver_priv; |
301 | I915_WRITE(GTIIR, gt_iir); | 295 | if (master_priv->sarea_priv) |
302 | new_gt_iir = I915_READ(GTIIR); | 296 | master_priv->sarea_priv->last_dispatch = |
303 | 297 | READ_BREADCRUMB(dev_priv); | |
304 | if (dev->primary->master) { | 298 | } |
305 | master_priv = dev->primary->master->driver_priv; | ||
306 | if (master_priv->sarea_priv) | ||
307 | master_priv->sarea_priv->last_dispatch = | ||
308 | READ_BREADCRUMB(dev_priv); | ||
309 | } | ||
310 | |||
311 | if (gt_iir & GT_USER_INTERRUPT) { | ||
312 | u32 seqno = i915_get_gem_seqno(dev); | ||
313 | dev_priv->mm.irq_gem_seqno = seqno; | ||
314 | trace_i915_gem_request_complete(dev, seqno); | ||
315 | DRM_WAKEUP(&dev_priv->irq_queue); | ||
316 | dev_priv->hangcheck_count = 0; | ||
317 | mod_timer(&dev_priv->hangcheck_timer, jiffies + DRM_I915_HANGCHECK_PERIOD); | ||
318 | } | ||
319 | 299 | ||
320 | if (de_iir & DE_GSE) | 300 | if (gt_iir & GT_USER_INTERRUPT) { |
321 | ironlake_opregion_gse_intr(dev); | 301 | u32 seqno = i915_get_gem_seqno(dev); |
302 | dev_priv->mm.irq_gem_seqno = seqno; | ||
303 | trace_i915_gem_request_complete(dev, seqno); | ||
304 | DRM_WAKEUP(&dev_priv->irq_queue); | ||
305 | dev_priv->hangcheck_count = 0; | ||
306 | mod_timer(&dev_priv->hangcheck_timer, jiffies + DRM_I915_HANGCHECK_PERIOD); | ||
307 | } | ||
322 | 308 | ||
323 | /* check event from PCH */ | 309 | if (de_iir & DE_GSE) |
324 | if ((de_iir & DE_PCH_EVENT) && | 310 | ironlake_opregion_gse_intr(dev); |
325 | (pch_iir & SDE_HOTPLUG_MASK)) { | ||
326 | queue_work(dev_priv->wq, &dev_priv->hotplug_work); | ||
327 | } | ||
328 | 311 | ||
329 | de_iir = new_de_iir; | 312 | /* check event from PCH */ |
330 | gt_iir = new_gt_iir; | 313 | if ((de_iir & DE_PCH_EVENT) && |
331 | pch_iir = new_pch_iir; | 314 | (pch_iir & SDE_HOTPLUG_MASK)) { |
315 | queue_work(dev_priv->wq, &dev_priv->hotplug_work); | ||
332 | } | 316 | } |
333 | 317 | ||
318 | /* should clear PCH hotplug event before clear CPU irq */ | ||
319 | I915_WRITE(SDEIIR, pch_iir); | ||
320 | I915_WRITE(GTIIR, gt_iir); | ||
321 | I915_WRITE(DEIIR, de_iir); | ||
322 | |||
323 | done: | ||
334 | I915_WRITE(DEIER, de_ier); | 324 | I915_WRITE(DEIER, de_ier); |
335 | (void)I915_READ(DEIER); | 325 | (void)I915_READ(DEIER); |
336 | 326 | ||
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 149d360d64a3..847006c5218e 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h | |||
@@ -1815,7 +1815,7 @@ | |||
1815 | #define DSPFW_PLANEB_SHIFT 8 | 1815 | #define DSPFW_PLANEB_SHIFT 8 |
1816 | #define DSPFW2 0x70038 | 1816 | #define DSPFW2 0x70038 |
1817 | #define DSPFW_CURSORA_MASK 0x00003f00 | 1817 | #define DSPFW_CURSORA_MASK 0x00003f00 |
1818 | #define DSPFW_CURSORA_SHIFT 16 | 1818 | #define DSPFW_CURSORA_SHIFT 8 |
1819 | #define DSPFW3 0x7003c | 1819 | #define DSPFW3 0x7003c |
1820 | #define DSPFW_HPLL_SR_EN (1<<31) | 1820 | #define DSPFW_HPLL_SR_EN (1<<31) |
1821 | #define DSPFW_CURSOR_SR_SHIFT 24 | 1821 | #define DSPFW_CURSOR_SR_SHIFT 24 |
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c index f27567747580..15fbc1b5a83e 100644 --- a/drivers/gpu/drm/i915/intel_bios.c +++ b/drivers/gpu/drm/i915/intel_bios.c | |||
@@ -33,6 +33,8 @@ | |||
33 | #define SLAVE_ADDR1 0x70 | 33 | #define SLAVE_ADDR1 0x70 |
34 | #define SLAVE_ADDR2 0x72 | 34 | #define SLAVE_ADDR2 0x72 |
35 | 35 | ||
36 | static int panel_type; | ||
37 | |||
36 | static void * | 38 | static void * |
37 | find_section(struct bdb_header *bdb, int section_id) | 39 | find_section(struct bdb_header *bdb, int section_id) |
38 | { | 40 | { |
@@ -128,6 +130,7 @@ parse_lfp_panel_data(struct drm_i915_private *dev_priv, | |||
128 | dev_priv->lvds_dither = lvds_options->pixel_dither; | 130 | dev_priv->lvds_dither = lvds_options->pixel_dither; |
129 | if (lvds_options->panel_type == 0xff) | 131 | if (lvds_options->panel_type == 0xff) |
130 | return; | 132 | return; |
133 | panel_type = lvds_options->panel_type; | ||
131 | 134 | ||
132 | lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA); | 135 | lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA); |
133 | if (!lvds_lfp_data) | 136 | if (!lvds_lfp_data) |
@@ -197,7 +200,8 @@ parse_lfp_panel_data(struct drm_i915_private *dev_priv, | |||
197 | memset(temp_mode, 0, sizeof(*temp_mode)); | 200 | memset(temp_mode, 0, sizeof(*temp_mode)); |
198 | } | 201 | } |
199 | kfree(temp_mode); | 202 | kfree(temp_mode); |
200 | if (temp_downclock < panel_fixed_mode->clock) { | 203 | if (temp_downclock < panel_fixed_mode->clock && |
204 | i915_lvds_downclock) { | ||
201 | dev_priv->lvds_downclock_avail = 1; | 205 | dev_priv->lvds_downclock_avail = 1; |
202 | dev_priv->lvds_downclock = temp_downclock; | 206 | dev_priv->lvds_downclock = temp_downclock; |
203 | DRM_DEBUG_KMS("LVDS downclock is found in VBT. ", | 207 | DRM_DEBUG_KMS("LVDS downclock is found in VBT. ", |
@@ -405,6 +409,34 @@ parse_driver_features(struct drm_i915_private *dev_priv, | |||
405 | } | 409 | } |
406 | 410 | ||
407 | static void | 411 | static void |
412 | parse_edp(struct drm_i915_private *dev_priv, struct bdb_header *bdb) | ||
413 | { | ||
414 | struct bdb_edp *edp; | ||
415 | |||
416 | edp = find_section(bdb, BDB_EDP); | ||
417 | if (!edp) { | ||
418 | if (SUPPORTS_EDP(dev_priv->dev) && dev_priv->edp_support) { | ||
419 | DRM_DEBUG_KMS("No eDP BDB found but eDP panel supported,\ | ||
420 | assume 18bpp panel color depth.\n"); | ||
421 | dev_priv->edp_bpp = 18; | ||
422 | } | ||
423 | return; | ||
424 | } | ||
425 | |||
426 | switch ((edp->color_depth >> (panel_type * 2)) & 3) { | ||
427 | case EDP_18BPP: | ||
428 | dev_priv->edp_bpp = 18; | ||
429 | break; | ||
430 | case EDP_24BPP: | ||
431 | dev_priv->edp_bpp = 24; | ||
432 | break; | ||
433 | case EDP_30BPP: | ||
434 | dev_priv->edp_bpp = 30; | ||
435 | break; | ||
436 | } | ||
437 | } | ||
438 | |||
439 | static void | ||
408 | parse_device_mapping(struct drm_i915_private *dev_priv, | 440 | parse_device_mapping(struct drm_i915_private *dev_priv, |
409 | struct bdb_header *bdb) | 441 | struct bdb_header *bdb) |
410 | { | 442 | { |
@@ -521,6 +553,7 @@ intel_init_bios(struct drm_device *dev) | |||
521 | parse_sdvo_device_mapping(dev_priv, bdb); | 553 | parse_sdvo_device_mapping(dev_priv, bdb); |
522 | parse_device_mapping(dev_priv, bdb); | 554 | parse_device_mapping(dev_priv, bdb); |
523 | parse_driver_features(dev_priv, bdb); | 555 | parse_driver_features(dev_priv, bdb); |
556 | parse_edp(dev_priv, bdb); | ||
524 | 557 | ||
525 | pci_unmap_rom(pdev, bios); | 558 | pci_unmap_rom(pdev, bios); |
526 | 559 | ||
diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h index 425ac9d7f724..4c18514f6f80 100644 --- a/drivers/gpu/drm/i915/intel_bios.h +++ b/drivers/gpu/drm/i915/intel_bios.h | |||
@@ -98,6 +98,7 @@ struct vbios_data { | |||
98 | #define BDB_SDVO_LVDS_PNP_IDS 24 | 98 | #define BDB_SDVO_LVDS_PNP_IDS 24 |
99 | #define BDB_SDVO_LVDS_POWER_SEQ 25 | 99 | #define BDB_SDVO_LVDS_POWER_SEQ 25 |
100 | #define BDB_TV_OPTIONS 26 | 100 | #define BDB_TV_OPTIONS 26 |
101 | #define BDB_EDP 27 | ||
101 | #define BDB_LVDS_OPTIONS 40 | 102 | #define BDB_LVDS_OPTIONS 40 |
102 | #define BDB_LVDS_LFP_DATA_PTRS 41 | 103 | #define BDB_LVDS_LFP_DATA_PTRS 41 |
103 | #define BDB_LVDS_LFP_DATA 42 | 104 | #define BDB_LVDS_LFP_DATA 42 |
@@ -426,6 +427,45 @@ struct bdb_driver_features { | |||
426 | u8 custom_vbt_version; | 427 | u8 custom_vbt_version; |
427 | } __attribute__((packed)); | 428 | } __attribute__((packed)); |
428 | 429 | ||
430 | #define EDP_18BPP 0 | ||
431 | #define EDP_24BPP 1 | ||
432 | #define EDP_30BPP 2 | ||
433 | #define EDP_RATE_1_62 0 | ||
434 | #define EDP_RATE_2_7 1 | ||
435 | #define EDP_LANE_1 0 | ||
436 | #define EDP_LANE_2 1 | ||
437 | #define EDP_LANE_4 3 | ||
438 | #define EDP_PREEMPHASIS_NONE 0 | ||
439 | #define EDP_PREEMPHASIS_3_5dB 1 | ||
440 | #define EDP_PREEMPHASIS_6dB 2 | ||
441 | #define EDP_PREEMPHASIS_9_5dB 3 | ||
442 | #define EDP_VSWING_0_4V 0 | ||
443 | #define EDP_VSWING_0_6V 1 | ||
444 | #define EDP_VSWING_0_8V 2 | ||
445 | #define EDP_VSWING_1_2V 3 | ||
446 | |||
447 | struct edp_power_seq { | ||
448 | u16 t3; | ||
449 | u16 t7; | ||
450 | u16 t9; | ||
451 | u16 t10; | ||
452 | u16 t12; | ||
453 | } __attribute__ ((packed)); | ||
454 | |||
455 | struct edp_link_params { | ||
456 | u8 rate:4; | ||
457 | u8 lanes:4; | ||
458 | u8 preemphasis:4; | ||
459 | u8 vswing:4; | ||
460 | } __attribute__ ((packed)); | ||
461 | |||
462 | struct bdb_edp { | ||
463 | struct edp_power_seq power_seqs[16]; | ||
464 | u32 color_depth; | ||
465 | u32 sdrrs_msa_timing_delay; | ||
466 | struct edp_link_params link_params[16]; | ||
467 | } __attribute__ ((packed)); | ||
468 | |||
429 | bool intel_init_bios(struct drm_device *dev); | 469 | bool intel_init_bios(struct drm_device *dev); |
430 | 470 | ||
431 | /* | 471 | /* |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 002612fae717..45da78ef4a92 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -70,8 +70,6 @@ struct intel_limit { | |||
70 | intel_p2_t p2; | 70 | intel_p2_t p2; |
71 | bool (* find_pll)(const intel_limit_t *, struct drm_crtc *, | 71 | bool (* find_pll)(const intel_limit_t *, struct drm_crtc *, |
72 | int, int, intel_clock_t *); | 72 | int, int, intel_clock_t *); |
73 | bool (* find_reduced_pll)(const intel_limit_t *, struct drm_crtc *, | ||
74 | int, int, intel_clock_t *); | ||
75 | }; | 73 | }; |
76 | 74 | ||
77 | #define I8XX_DOT_MIN 25000 | 75 | #define I8XX_DOT_MIN 25000 |
@@ -243,11 +241,11 @@ struct intel_limit { | |||
243 | #define IRONLAKE_VCO_MIN 1760000 | 241 | #define IRONLAKE_VCO_MIN 1760000 |
244 | #define IRONLAKE_VCO_MAX 3510000 | 242 | #define IRONLAKE_VCO_MAX 3510000 |
245 | #define IRONLAKE_N_MIN 1 | 243 | #define IRONLAKE_N_MIN 1 |
246 | #define IRONLAKE_N_MAX 5 | 244 | #define IRONLAKE_N_MAX 6 |
247 | #define IRONLAKE_M_MIN 79 | 245 | #define IRONLAKE_M_MIN 79 |
248 | #define IRONLAKE_M_MAX 118 | 246 | #define IRONLAKE_M_MAX 127 |
249 | #define IRONLAKE_M1_MIN 12 | 247 | #define IRONLAKE_M1_MIN 12 |
250 | #define IRONLAKE_M1_MAX 23 | 248 | #define IRONLAKE_M1_MAX 22 |
251 | #define IRONLAKE_M2_MIN 5 | 249 | #define IRONLAKE_M2_MIN 5 |
252 | #define IRONLAKE_M2_MAX 9 | 250 | #define IRONLAKE_M2_MAX 9 |
253 | #define IRONLAKE_P_SDVO_DAC_MIN 5 | 251 | #define IRONLAKE_P_SDVO_DAC_MIN 5 |
@@ -274,9 +272,6 @@ static bool | |||
274 | intel_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, | 272 | intel_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, |
275 | int target, int refclk, intel_clock_t *best_clock); | 273 | int target, int refclk, intel_clock_t *best_clock); |
276 | static bool | 274 | static bool |
277 | intel_find_best_reduced_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, | ||
278 | int target, int refclk, intel_clock_t *best_clock); | ||
279 | static bool | ||
280 | intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, | 275 | intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, |
281 | int target, int refclk, intel_clock_t *best_clock); | 276 | int target, int refclk, intel_clock_t *best_clock); |
282 | 277 | ||
@@ -299,7 +294,6 @@ static const intel_limit_t intel_limits_i8xx_dvo = { | |||
299 | .p2 = { .dot_limit = I8XX_P2_SLOW_LIMIT, | 294 | .p2 = { .dot_limit = I8XX_P2_SLOW_LIMIT, |
300 | .p2_slow = I8XX_P2_SLOW, .p2_fast = I8XX_P2_FAST }, | 295 | .p2_slow = I8XX_P2_SLOW, .p2_fast = I8XX_P2_FAST }, |
301 | .find_pll = intel_find_best_PLL, | 296 | .find_pll = intel_find_best_PLL, |
302 | .find_reduced_pll = intel_find_best_reduced_PLL, | ||
303 | }; | 297 | }; |
304 | 298 | ||
305 | static const intel_limit_t intel_limits_i8xx_lvds = { | 299 | static const intel_limit_t intel_limits_i8xx_lvds = { |
@@ -314,7 +308,6 @@ static const intel_limit_t intel_limits_i8xx_lvds = { | |||
314 | .p2 = { .dot_limit = I8XX_P2_SLOW_LIMIT, | 308 | .p2 = { .dot_limit = I8XX_P2_SLOW_LIMIT, |
315 | .p2_slow = I8XX_P2_LVDS_SLOW, .p2_fast = I8XX_P2_LVDS_FAST }, | 309 | .p2_slow = I8XX_P2_LVDS_SLOW, .p2_fast = I8XX_P2_LVDS_FAST }, |
316 | .find_pll = intel_find_best_PLL, | 310 | .find_pll = intel_find_best_PLL, |
317 | .find_reduced_pll = intel_find_best_reduced_PLL, | ||
318 | }; | 311 | }; |
319 | 312 | ||
320 | static const intel_limit_t intel_limits_i9xx_sdvo = { | 313 | static const intel_limit_t intel_limits_i9xx_sdvo = { |
@@ -329,7 +322,6 @@ static const intel_limit_t intel_limits_i9xx_sdvo = { | |||
329 | .p2 = { .dot_limit = I9XX_P2_SDVO_DAC_SLOW_LIMIT, | 322 | .p2 = { .dot_limit = I9XX_P2_SDVO_DAC_SLOW_LIMIT, |
330 | .p2_slow = I9XX_P2_SDVO_DAC_SLOW, .p2_fast = I9XX_P2_SDVO_DAC_FAST }, | 323 | .p2_slow = I9XX_P2_SDVO_DAC_SLOW, .p2_fast = I9XX_P2_SDVO_DAC_FAST }, |
331 | .find_pll = intel_find_best_PLL, | 324 | .find_pll = intel_find_best_PLL, |
332 | .find_reduced_pll = intel_find_best_reduced_PLL, | ||
333 | }; | 325 | }; |
334 | 326 | ||
335 | static const intel_limit_t intel_limits_i9xx_lvds = { | 327 | static const intel_limit_t intel_limits_i9xx_lvds = { |
@@ -347,7 +339,6 @@ static const intel_limit_t intel_limits_i9xx_lvds = { | |||
347 | .p2 = { .dot_limit = I9XX_P2_LVDS_SLOW_LIMIT, | 339 | .p2 = { .dot_limit = I9XX_P2_LVDS_SLOW_LIMIT, |
348 | .p2_slow = I9XX_P2_LVDS_SLOW, .p2_fast = I9XX_P2_LVDS_FAST }, | 340 | .p2_slow = I9XX_P2_LVDS_SLOW, .p2_fast = I9XX_P2_LVDS_FAST }, |
349 | .find_pll = intel_find_best_PLL, | 341 | .find_pll = intel_find_best_PLL, |
350 | .find_reduced_pll = intel_find_best_reduced_PLL, | ||
351 | }; | 342 | }; |
352 | 343 | ||
353 | /* below parameter and function is for G4X Chipset Family*/ | 344 | /* below parameter and function is for G4X Chipset Family*/ |
@@ -365,7 +356,6 @@ static const intel_limit_t intel_limits_g4x_sdvo = { | |||
365 | .p2_fast = G4X_P2_SDVO_FAST | 356 | .p2_fast = G4X_P2_SDVO_FAST |
366 | }, | 357 | }, |
367 | .find_pll = intel_g4x_find_best_PLL, | 358 | .find_pll = intel_g4x_find_best_PLL, |
368 | .find_reduced_pll = intel_g4x_find_best_PLL, | ||
369 | }; | 359 | }; |
370 | 360 | ||
371 | static const intel_limit_t intel_limits_g4x_hdmi = { | 361 | static const intel_limit_t intel_limits_g4x_hdmi = { |
@@ -382,7 +372,6 @@ static const intel_limit_t intel_limits_g4x_hdmi = { | |||
382 | .p2_fast = G4X_P2_HDMI_DAC_FAST | 372 | .p2_fast = G4X_P2_HDMI_DAC_FAST |
383 | }, | 373 | }, |
384 | .find_pll = intel_g4x_find_best_PLL, | 374 | .find_pll = intel_g4x_find_best_PLL, |
385 | .find_reduced_pll = intel_g4x_find_best_PLL, | ||
386 | }; | 375 | }; |
387 | 376 | ||
388 | static const intel_limit_t intel_limits_g4x_single_channel_lvds = { | 377 | static const intel_limit_t intel_limits_g4x_single_channel_lvds = { |
@@ -407,7 +396,6 @@ static const intel_limit_t intel_limits_g4x_single_channel_lvds = { | |||
407 | .p2_fast = G4X_P2_SINGLE_CHANNEL_LVDS_FAST | 396 | .p2_fast = G4X_P2_SINGLE_CHANNEL_LVDS_FAST |
408 | }, | 397 | }, |
409 | .find_pll = intel_g4x_find_best_PLL, | 398 | .find_pll = intel_g4x_find_best_PLL, |
410 | .find_reduced_pll = intel_g4x_find_best_PLL, | ||
411 | }; | 399 | }; |
412 | 400 | ||
413 | static const intel_limit_t intel_limits_g4x_dual_channel_lvds = { | 401 | static const intel_limit_t intel_limits_g4x_dual_channel_lvds = { |
@@ -432,7 +420,6 @@ static const intel_limit_t intel_limits_g4x_dual_channel_lvds = { | |||
432 | .p2_fast = G4X_P2_DUAL_CHANNEL_LVDS_FAST | 420 | .p2_fast = G4X_P2_DUAL_CHANNEL_LVDS_FAST |
433 | }, | 421 | }, |
434 | .find_pll = intel_g4x_find_best_PLL, | 422 | .find_pll = intel_g4x_find_best_PLL, |
435 | .find_reduced_pll = intel_g4x_find_best_PLL, | ||
436 | }; | 423 | }; |
437 | 424 | ||
438 | static const intel_limit_t intel_limits_g4x_display_port = { | 425 | static const intel_limit_t intel_limits_g4x_display_port = { |
@@ -470,7 +457,6 @@ static const intel_limit_t intel_limits_pineview_sdvo = { | |||
470 | .p2 = { .dot_limit = I9XX_P2_SDVO_DAC_SLOW_LIMIT, | 457 | .p2 = { .dot_limit = I9XX_P2_SDVO_DAC_SLOW_LIMIT, |
471 | .p2_slow = I9XX_P2_SDVO_DAC_SLOW, .p2_fast = I9XX_P2_SDVO_DAC_FAST }, | 458 | .p2_slow = I9XX_P2_SDVO_DAC_SLOW, .p2_fast = I9XX_P2_SDVO_DAC_FAST }, |
472 | .find_pll = intel_find_best_PLL, | 459 | .find_pll = intel_find_best_PLL, |
473 | .find_reduced_pll = intel_find_best_reduced_PLL, | ||
474 | }; | 460 | }; |
475 | 461 | ||
476 | static const intel_limit_t intel_limits_pineview_lvds = { | 462 | static const intel_limit_t intel_limits_pineview_lvds = { |
@@ -486,7 +472,6 @@ static const intel_limit_t intel_limits_pineview_lvds = { | |||
486 | .p2 = { .dot_limit = I9XX_P2_LVDS_SLOW_LIMIT, | 472 | .p2 = { .dot_limit = I9XX_P2_LVDS_SLOW_LIMIT, |
487 | .p2_slow = I9XX_P2_LVDS_SLOW, .p2_fast = I9XX_P2_LVDS_SLOW }, | 473 | .p2_slow = I9XX_P2_LVDS_SLOW, .p2_fast = I9XX_P2_LVDS_SLOW }, |
488 | .find_pll = intel_find_best_PLL, | 474 | .find_pll = intel_find_best_PLL, |
489 | .find_reduced_pll = intel_find_best_reduced_PLL, | ||
490 | }; | 475 | }; |
491 | 476 | ||
492 | static const intel_limit_t intel_limits_ironlake_sdvo = { | 477 | static const intel_limit_t intel_limits_ironlake_sdvo = { |
@@ -768,46 +753,6 @@ intel_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, | |||
768 | return (err != target); | 753 | return (err != target); |
769 | } | 754 | } |
770 | 755 | ||
771 | |||
772 | static bool | ||
773 | intel_find_best_reduced_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, | ||
774 | int target, int refclk, intel_clock_t *best_clock) | ||
775 | |||
776 | { | ||
777 | struct drm_device *dev = crtc->dev; | ||
778 | intel_clock_t clock; | ||
779 | int err = target; | ||
780 | bool found = false; | ||
781 | |||
782 | memcpy(&clock, best_clock, sizeof(intel_clock_t)); | ||
783 | |||
784 | for (clock.m1 = limit->m1.min; clock.m1 <= limit->m1.max; clock.m1++) { | ||
785 | for (clock.m2 = limit->m2.min; clock.m2 <= limit->m2.max; clock.m2++) { | ||
786 | /* m1 is always 0 in Pineview */ | ||
787 | if (clock.m2 >= clock.m1 && !IS_PINEVIEW(dev)) | ||
788 | break; | ||
789 | for (clock.n = limit->n.min; clock.n <= limit->n.max; | ||
790 | clock.n++) { | ||
791 | int this_err; | ||
792 | |||
793 | intel_clock(dev, refclk, &clock); | ||
794 | |||
795 | if (!intel_PLL_is_valid(crtc, &clock)) | ||
796 | continue; | ||
797 | |||
798 | this_err = abs(clock.dot - target); | ||
799 | if (this_err < err) { | ||
800 | *best_clock = clock; | ||
801 | err = this_err; | ||
802 | found = true; | ||
803 | } | ||
804 | } | ||
805 | } | ||
806 | } | ||
807 | |||
808 | return found; | ||
809 | } | ||
810 | |||
811 | static bool | 756 | static bool |
812 | intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, | 757 | intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, |
813 | int target, int refclk, intel_clock_t *best_clock) | 758 | int target, int refclk, intel_clock_t *best_clock) |
@@ -1262,7 +1207,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y, | |||
1262 | return ret; | 1207 | return ret; |
1263 | } | 1208 | } |
1264 | 1209 | ||
1265 | ret = i915_gem_object_set_to_gtt_domain(obj, 1); | 1210 | ret = i915_gem_object_set_to_display_plane(obj); |
1266 | if (ret != 0) { | 1211 | if (ret != 0) { |
1267 | i915_gem_object_unpin(obj); | 1212 | i915_gem_object_unpin(obj); |
1268 | mutex_unlock(&dev->struct_mutex); | 1213 | mutex_unlock(&dev->struct_mutex); |
@@ -2910,10 +2855,8 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc, | |||
2910 | return -EINVAL; | 2855 | return -EINVAL; |
2911 | } | 2856 | } |
2912 | 2857 | ||
2913 | if (is_lvds && limit->find_reduced_pll && | 2858 | if (is_lvds && dev_priv->lvds_downclock_avail) { |
2914 | dev_priv->lvds_downclock_avail) { | 2859 | has_reduced_clock = limit->find_pll(limit, crtc, |
2915 | memcpy(&reduced_clock, &clock, sizeof(intel_clock_t)); | ||
2916 | has_reduced_clock = limit->find_reduced_pll(limit, crtc, | ||
2917 | dev_priv->lvds_downclock, | 2860 | dev_priv->lvds_downclock, |
2918 | refclk, | 2861 | refclk, |
2919 | &reduced_clock); | 2862 | &reduced_clock); |
@@ -2981,6 +2924,21 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc, | |||
2981 | temp |= PIPE_8BPC; | 2924 | temp |= PIPE_8BPC; |
2982 | else | 2925 | else |
2983 | temp |= PIPE_6BPC; | 2926 | temp |= PIPE_6BPC; |
2927 | } else if (is_edp) { | ||
2928 | switch (dev_priv->edp_bpp/3) { | ||
2929 | case 8: | ||
2930 | temp |= PIPE_8BPC; | ||
2931 | break; | ||
2932 | case 10: | ||
2933 | temp |= PIPE_10BPC; | ||
2934 | break; | ||
2935 | case 6: | ||
2936 | temp |= PIPE_6BPC; | ||
2937 | break; | ||
2938 | case 12: | ||
2939 | temp |= PIPE_12BPC; | ||
2940 | break; | ||
2941 | } | ||
2984 | } else | 2942 | } else |
2985 | temp |= PIPE_8BPC; | 2943 | temp |= PIPE_8BPC; |
2986 | I915_WRITE(pipeconf_reg, temp); | 2944 | I915_WRITE(pipeconf_reg, temp); |
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 1349d9fd01c4..439506cefc14 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
@@ -125,9 +125,15 @@ intel_dp_link_clock(uint8_t link_bw) | |||
125 | 125 | ||
126 | /* I think this is a fiction */ | 126 | /* I think this is a fiction */ |
127 | static int | 127 | static int |
128 | intel_dp_link_required(int pixel_clock) | 128 | intel_dp_link_required(struct drm_device *dev, |
129 | struct intel_output *intel_output, int pixel_clock) | ||
129 | { | 130 | { |
130 | return pixel_clock * 3; | 131 | struct drm_i915_private *dev_priv = dev->dev_private; |
132 | |||
133 | if (IS_eDP(intel_output)) | ||
134 | return (pixel_clock * dev_priv->edp_bpp) / 8; | ||
135 | else | ||
136 | return pixel_clock * 3; | ||
131 | } | 137 | } |
132 | 138 | ||
133 | static int | 139 | static int |
@@ -138,7 +144,8 @@ intel_dp_mode_valid(struct drm_connector *connector, | |||
138 | int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_output)); | 144 | int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_output)); |
139 | int max_lanes = intel_dp_max_lane_count(intel_output); | 145 | int max_lanes = intel_dp_max_lane_count(intel_output); |
140 | 146 | ||
141 | if (intel_dp_link_required(mode->clock) > max_link_clock * max_lanes) | 147 | if (intel_dp_link_required(connector->dev, intel_output, mode->clock) |
148 | > max_link_clock * max_lanes) | ||
142 | return MODE_CLOCK_HIGH; | 149 | return MODE_CLOCK_HIGH; |
143 | 150 | ||
144 | if (mode->clock < 10000) | 151 | if (mode->clock < 10000) |
@@ -492,7 +499,8 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode, | |||
492 | for (clock = 0; clock <= max_clock; clock++) { | 499 | for (clock = 0; clock <= max_clock; clock++) { |
493 | int link_avail = intel_dp_link_clock(bws[clock]) * lane_count; | 500 | int link_avail = intel_dp_link_clock(bws[clock]) * lane_count; |
494 | 501 | ||
495 | if (intel_dp_link_required(mode->clock) <= link_avail) { | 502 | if (intel_dp_link_required(encoder->dev, intel_output, mode->clock) |
503 | <= link_avail) { | ||
496 | dp_priv->link_bw = bws[clock]; | 504 | dp_priv->link_bw = bws[clock]; |
497 | dp_priv->lane_count = lane_count; | 505 | dp_priv->lane_count = lane_count; |
498 | adjusted_mode->clock = intel_dp_link_clock(dp_priv->link_bw); | 506 | adjusted_mode->clock = intel_dp_link_clock(dp_priv->link_bw); |
@@ -1289,53 +1297,7 @@ intel_dp_hot_plug(struct intel_output *intel_output) | |||
1289 | if (dp_priv->dpms_mode == DRM_MODE_DPMS_ON) | 1297 | if (dp_priv->dpms_mode == DRM_MODE_DPMS_ON) |
1290 | intel_dp_check_link_status(intel_output); | 1298 | intel_dp_check_link_status(intel_output); |
1291 | } | 1299 | } |
1292 | /* | 1300 | |
1293 | * Enumerate the child dev array parsed from VBT to check whether | ||
1294 | * the given DP is present. | ||
1295 | * If it is present, return 1. | ||
1296 | * If it is not present, return false. | ||
1297 | * If no child dev is parsed from VBT, it is assumed that the given | ||
1298 | * DP is present. | ||
1299 | */ | ||
1300 | static int dp_is_present_in_vbt(struct drm_device *dev, int dp_reg) | ||
1301 | { | ||
1302 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1303 | struct child_device_config *p_child; | ||
1304 | int i, dp_port, ret; | ||
1305 | |||
1306 | if (!dev_priv->child_dev_num) | ||
1307 | return 1; | ||
1308 | |||
1309 | dp_port = 0; | ||
1310 | if (dp_reg == DP_B || dp_reg == PCH_DP_B) | ||
1311 | dp_port = PORT_IDPB; | ||
1312 | else if (dp_reg == DP_C || dp_reg == PCH_DP_C) | ||
1313 | dp_port = PORT_IDPC; | ||
1314 | else if (dp_reg == DP_D || dp_reg == PCH_DP_D) | ||
1315 | dp_port = PORT_IDPD; | ||
1316 | |||
1317 | ret = 0; | ||
1318 | for (i = 0; i < dev_priv->child_dev_num; i++) { | ||
1319 | p_child = dev_priv->child_dev + i; | ||
1320 | /* | ||
1321 | * If the device type is not DP, continue. | ||
1322 | */ | ||
1323 | if (p_child->device_type != DEVICE_TYPE_DP && | ||
1324 | p_child->device_type != DEVICE_TYPE_eDP) | ||
1325 | continue; | ||
1326 | /* Find the eDP port */ | ||
1327 | if (dp_reg == DP_A && p_child->device_type == DEVICE_TYPE_eDP) { | ||
1328 | ret = 1; | ||
1329 | break; | ||
1330 | } | ||
1331 | /* Find the DP port */ | ||
1332 | if (p_child->dvo_port == dp_port) { | ||
1333 | ret = 1; | ||
1334 | break; | ||
1335 | } | ||
1336 | } | ||
1337 | return ret; | ||
1338 | } | ||
1339 | void | 1301 | void |
1340 | intel_dp_init(struct drm_device *dev, int output_reg) | 1302 | intel_dp_init(struct drm_device *dev, int output_reg) |
1341 | { | 1303 | { |
@@ -1345,10 +1307,6 @@ intel_dp_init(struct drm_device *dev, int output_reg) | |||
1345 | struct intel_dp_priv *dp_priv; | 1307 | struct intel_dp_priv *dp_priv; |
1346 | const char *name = NULL; | 1308 | const char *name = NULL; |
1347 | 1309 | ||
1348 | if (!dp_is_present_in_vbt(dev, output_reg)) { | ||
1349 | DRM_DEBUG_KMS("DP is not present. Ignore it\n"); | ||
1350 | return; | ||
1351 | } | ||
1352 | intel_output = kcalloc(sizeof(struct intel_output) + | 1310 | intel_output = kcalloc(sizeof(struct intel_output) + |
1353 | sizeof(struct intel_dp_priv), 1, GFP_KERNEL); | 1311 | sizeof(struct intel_dp_priv), 1, GFP_KERNEL); |
1354 | if (!intel_output) | 1312 | if (!intel_output) |
@@ -1373,11 +1331,10 @@ intel_dp_init(struct drm_device *dev, int output_reg) | |||
1373 | else if (output_reg == DP_D || output_reg == PCH_DP_D) | 1331 | else if (output_reg == DP_D || output_reg == PCH_DP_D) |
1374 | intel_output->clone_mask = (1 << INTEL_DP_D_CLONE_BIT); | 1332 | intel_output->clone_mask = (1 << INTEL_DP_D_CLONE_BIT); |
1375 | 1333 | ||
1376 | if (IS_eDP(intel_output)) { | 1334 | if (IS_eDP(intel_output)) |
1377 | intel_output->crtc_mask = (1 << 1); | ||
1378 | intel_output->clone_mask = (1 << INTEL_EDP_CLONE_BIT); | 1335 | intel_output->clone_mask = (1 << INTEL_EDP_CLONE_BIT); |
1379 | } else | 1336 | |
1380 | intel_output->crtc_mask = (1 << 0) | (1 << 1); | 1337 | intel_output->crtc_mask = (1 << 0) | (1 << 1); |
1381 | connector->interlace_allowed = true; | 1338 | connector->interlace_allowed = true; |
1382 | connector->doublescan_allowed = 0; | 1339 | connector->doublescan_allowed = 0; |
1383 | 1340 | ||
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index 06431941b233..0e268deed761 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c | |||
@@ -225,52 +225,6 @@ static const struct drm_encoder_funcs intel_hdmi_enc_funcs = { | |||
225 | .destroy = intel_hdmi_enc_destroy, | 225 | .destroy = intel_hdmi_enc_destroy, |
226 | }; | 226 | }; |
227 | 227 | ||
228 | /* | ||
229 | * Enumerate the child dev array parsed from VBT to check whether | ||
230 | * the given HDMI is present. | ||
231 | * If it is present, return 1. | ||
232 | * If it is not present, return false. | ||
233 | * If no child dev is parsed from VBT, it assumes that the given | ||
234 | * HDMI is present. | ||
235 | */ | ||
236 | static int hdmi_is_present_in_vbt(struct drm_device *dev, int hdmi_reg) | ||
237 | { | ||
238 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
239 | struct child_device_config *p_child; | ||
240 | int i, hdmi_port, ret; | ||
241 | |||
242 | if (!dev_priv->child_dev_num) | ||
243 | return 1; | ||
244 | |||
245 | if (hdmi_reg == SDVOB) | ||
246 | hdmi_port = DVO_B; | ||
247 | else if (hdmi_reg == SDVOC) | ||
248 | hdmi_port = DVO_C; | ||
249 | else if (hdmi_reg == HDMIB) | ||
250 | hdmi_port = DVO_B; | ||
251 | else if (hdmi_reg == HDMIC) | ||
252 | hdmi_port = DVO_C; | ||
253 | else if (hdmi_reg == HDMID) | ||
254 | hdmi_port = DVO_D; | ||
255 | else | ||
256 | return 0; | ||
257 | |||
258 | ret = 0; | ||
259 | for (i = 0; i < dev_priv->child_dev_num; i++) { | ||
260 | p_child = dev_priv->child_dev + i; | ||
261 | /* | ||
262 | * If the device type is not HDMI, continue. | ||
263 | */ | ||
264 | if (p_child->device_type != DEVICE_TYPE_HDMI) | ||
265 | continue; | ||
266 | /* Find the HDMI port */ | ||
267 | if (p_child->dvo_port == hdmi_port) { | ||
268 | ret = 1; | ||
269 | break; | ||
270 | } | ||
271 | } | ||
272 | return ret; | ||
273 | } | ||
274 | void intel_hdmi_init(struct drm_device *dev, int sdvox_reg) | 228 | void intel_hdmi_init(struct drm_device *dev, int sdvox_reg) |
275 | { | 229 | { |
276 | struct drm_i915_private *dev_priv = dev->dev_private; | 230 | struct drm_i915_private *dev_priv = dev->dev_private; |
@@ -278,10 +232,6 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg) | |||
278 | struct intel_output *intel_output; | 232 | struct intel_output *intel_output; |
279 | struct intel_hdmi_priv *hdmi_priv; | 233 | struct intel_hdmi_priv *hdmi_priv; |
280 | 234 | ||
281 | if (!hdmi_is_present_in_vbt(dev, sdvox_reg)) { | ||
282 | DRM_DEBUG_KMS("HDMI is not present. Ignored it \n"); | ||
283 | return; | ||
284 | } | ||
285 | intel_output = kcalloc(sizeof(struct intel_output) + | 235 | intel_output = kcalloc(sizeof(struct intel_output) + |
286 | sizeof(struct intel_hdmi_priv), 1, GFP_KERNEL); | 236 | sizeof(struct intel_hdmi_priv), 1, GFP_KERNEL); |
287 | if (!intel_output) | 237 | if (!intel_output) |
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index f4b4aa242df1..aa74e59bec61 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c | |||
@@ -602,6 +602,20 @@ static void intel_lvds_mode_set(struct drm_encoder *encoder, | |||
602 | /* Some lid devices report incorrect lid status, assume they're connected */ | 602 | /* Some lid devices report incorrect lid status, assume they're connected */ |
603 | static const struct dmi_system_id bad_lid_status[] = { | 603 | static const struct dmi_system_id bad_lid_status[] = { |
604 | { | 604 | { |
605 | .ident = "Compaq nx9020", | ||
606 | .matches = { | ||
607 | DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), | ||
608 | DMI_MATCH(DMI_BOARD_NAME, "3084"), | ||
609 | }, | ||
610 | }, | ||
611 | { | ||
612 | .ident = "Samsung SX20S", | ||
613 | .matches = { | ||
614 | DMI_MATCH(DMI_SYS_VENDOR, "Phoenix Technologies LTD"), | ||
615 | DMI_MATCH(DMI_BOARD_NAME, "SX20S"), | ||
616 | }, | ||
617 | }, | ||
618 | { | ||
605 | .ident = "Aspire One", | 619 | .ident = "Aspire One", |
606 | .matches = { | 620 | .matches = { |
607 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | 621 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), |
@@ -912,7 +926,8 @@ static void intel_find_lvds_downclock(struct drm_device *dev, | |||
912 | } | 926 | } |
913 | } | 927 | } |
914 | mutex_unlock(&dev->mode_config.mutex); | 928 | mutex_unlock(&dev->mode_config.mutex); |
915 | if (temp_downclock < panel_fixed_mode->clock) { | 929 | if (temp_downclock < panel_fixed_mode->clock && |
930 | i915_lvds_downclock) { | ||
916 | /* We found the downclock for LVDS. */ | 931 | /* We found the downclock for LVDS. */ |
917 | dev_priv->lvds_downclock_avail = 1; | 932 | dev_priv->lvds_downclock_avail = 1; |
918 | dev_priv->lvds_downclock = temp_downclock; | 933 | dev_priv->lvds_downclock = temp_downclock; |
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c index de5144c8c153..eaacfd0920df 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c | |||
@@ -462,14 +462,63 @@ static int intel_sdvo_get_pixel_multiplier(struct drm_display_mode *mode) | |||
462 | } | 462 | } |
463 | 463 | ||
464 | /** | 464 | /** |
465 | * Don't check status code from this as it switches the bus back to the | 465 | * Try to read the response after issuie the DDC switch command. But it |
466 | * SDVO chips which defeats the purpose of doing a bus switch in the first | 466 | * is noted that we must do the action of reading response and issuing DDC |
467 | * place. | 467 | * switch command in one I2C transaction. Otherwise when we try to start |
468 | * another I2C transaction after issuing the DDC bus switch, it will be | ||
469 | * switched to the internal SDVO register. | ||
468 | */ | 470 | */ |
469 | static void intel_sdvo_set_control_bus_switch(struct intel_output *intel_output, | 471 | static void intel_sdvo_set_control_bus_switch(struct intel_output *intel_output, |
470 | u8 target) | 472 | u8 target) |
471 | { | 473 | { |
472 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_SET_CONTROL_BUS_SWITCH, &target, 1); | 474 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; |
475 | u8 out_buf[2], cmd_buf[2], ret_value[2], ret; | ||
476 | struct i2c_msg msgs[] = { | ||
477 | { | ||
478 | .addr = sdvo_priv->slave_addr >> 1, | ||
479 | .flags = 0, | ||
480 | .len = 2, | ||
481 | .buf = out_buf, | ||
482 | }, | ||
483 | /* the following two are to read the response */ | ||
484 | { | ||
485 | .addr = sdvo_priv->slave_addr >> 1, | ||
486 | .flags = 0, | ||
487 | .len = 1, | ||
488 | .buf = cmd_buf, | ||
489 | }, | ||
490 | { | ||
491 | .addr = sdvo_priv->slave_addr >> 1, | ||
492 | .flags = I2C_M_RD, | ||
493 | .len = 1, | ||
494 | .buf = ret_value, | ||
495 | }, | ||
496 | }; | ||
497 | |||
498 | intel_sdvo_debug_write(intel_output, SDVO_CMD_SET_CONTROL_BUS_SWITCH, | ||
499 | &target, 1); | ||
500 | /* write the DDC switch command argument */ | ||
501 | intel_sdvo_write_byte(intel_output, SDVO_I2C_ARG_0, target); | ||
502 | |||
503 | out_buf[0] = SDVO_I2C_OPCODE; | ||
504 | out_buf[1] = SDVO_CMD_SET_CONTROL_BUS_SWITCH; | ||
505 | cmd_buf[0] = SDVO_I2C_CMD_STATUS; | ||
506 | cmd_buf[1] = 0; | ||
507 | ret_value[0] = 0; | ||
508 | ret_value[1] = 0; | ||
509 | |||
510 | ret = i2c_transfer(intel_output->i2c_bus, msgs, 3); | ||
511 | if (ret != 3) { | ||
512 | /* failure in I2C transfer */ | ||
513 | DRM_DEBUG_KMS("I2c transfer returned %d\n", ret); | ||
514 | return; | ||
515 | } | ||
516 | if (ret_value[0] != SDVO_CMD_STATUS_SUCCESS) { | ||
517 | DRM_DEBUG_KMS("DDC switch command returns response %d\n", | ||
518 | ret_value[0]); | ||
519 | return; | ||
520 | } | ||
521 | return; | ||
473 | } | 522 | } |
474 | 523 | ||
475 | static bool intel_sdvo_set_target_input(struct intel_output *intel_output, bool target_0, bool target_1) | 524 | static bool intel_sdvo_set_target_input(struct intel_output *intel_output, bool target_0, bool target_1) |
@@ -1579,6 +1628,32 @@ intel_sdvo_hdmi_sink_detect(struct drm_connector *connector, u16 response) | |||
1579 | edid = drm_get_edid(&intel_output->base, | 1628 | edid = drm_get_edid(&intel_output->base, |
1580 | intel_output->ddc_bus); | 1629 | intel_output->ddc_bus); |
1581 | 1630 | ||
1631 | /* This is only applied to SDVO cards with multiple outputs */ | ||
1632 | if (edid == NULL && intel_sdvo_multifunc_encoder(intel_output)) { | ||
1633 | uint8_t saved_ddc, temp_ddc; | ||
1634 | saved_ddc = sdvo_priv->ddc_bus; | ||
1635 | temp_ddc = sdvo_priv->ddc_bus >> 1; | ||
1636 | /* | ||
1637 | * Don't use the 1 as the argument of DDC bus switch to get | ||
1638 | * the EDID. It is used for SDVO SPD ROM. | ||
1639 | */ | ||
1640 | while(temp_ddc > 1) { | ||
1641 | sdvo_priv->ddc_bus = temp_ddc; | ||
1642 | edid = drm_get_edid(&intel_output->base, | ||
1643 | intel_output->ddc_bus); | ||
1644 | if (edid) { | ||
1645 | /* | ||
1646 | * When we can get the EDID, maybe it is the | ||
1647 | * correct DDC bus. Update it. | ||
1648 | */ | ||
1649 | sdvo_priv->ddc_bus = temp_ddc; | ||
1650 | break; | ||
1651 | } | ||
1652 | temp_ddc >>= 1; | ||
1653 | } | ||
1654 | if (edid == NULL) | ||
1655 | sdvo_priv->ddc_bus = saved_ddc; | ||
1656 | } | ||
1582 | /* when there is no edid and no monitor is connected with VGA | 1657 | /* when there is no edid and no monitor is connected with VGA |
1583 | * port, try to use the CRT ddc to read the EDID for DVI-connector | 1658 | * port, try to use the CRT ddc to read the EDID for DVI-connector |
1584 | */ | 1659 | */ |
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c index 1d5b9b7b033f..552ec110b741 100644 --- a/drivers/gpu/drm/i915/intel_tv.c +++ b/drivers/gpu/drm/i915/intel_tv.c | |||
@@ -1840,8 +1840,6 @@ intel_tv_init(struct drm_device *dev) | |||
1840 | drm_connector_attach_property(connector, | 1840 | drm_connector_attach_property(connector, |
1841 | dev->mode_config.tv_bottom_margin_property, | 1841 | dev->mode_config.tv_bottom_margin_property, |
1842 | tv_priv->margin[TV_MARGIN_BOTTOM]); | 1842 | tv_priv->margin[TV_MARGIN_BOTTOM]); |
1843 | |||
1844 | dev_priv->hotplug_supported_mask |= TV_HOTPLUG_INT_STATUS; | ||
1845 | out: | 1843 | out: |
1846 | drm_sysfs_connector_add(connector); | 1844 | drm_sysfs_connector_add(connector); |
1847 | } | 1845 | } |
diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c index ba143972769f..d7f8d8b4a4b8 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bios.c +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c | |||
@@ -310,63 +310,22 @@ valid_reg(struct nvbios *bios, uint32_t reg) | |||
310 | struct drm_device *dev = bios->dev; | 310 | struct drm_device *dev = bios->dev; |
311 | 311 | ||
312 | /* C51 has misaligned regs on purpose. Marvellous */ | 312 | /* C51 has misaligned regs on purpose. Marvellous */ |
313 | if (reg & 0x2 || (reg & 0x1 && dev_priv->VBIOS.pub.chip_version != 0x51)) { | 313 | if (reg & 0x2 || |
314 | NV_ERROR(dev, "========== misaligned reg 0x%08X ==========\n", | 314 | (reg & 0x1 && dev_priv->VBIOS.pub.chip_version != 0x51)) |
315 | reg); | 315 | NV_ERROR(dev, "======= misaligned reg 0x%08X =======\n", reg); |
316 | return 0; | 316 | |
317 | } | 317 | /* warn on C51 regs that haven't been verified accessible in tracing */ |
318 | /* | ||
319 | * Warn on C51 regs that have not been verified accessible in | ||
320 | * mmiotracing | ||
321 | */ | ||
322 | if (reg & 0x1 && dev_priv->VBIOS.pub.chip_version == 0x51 && | 318 | if (reg & 0x1 && dev_priv->VBIOS.pub.chip_version == 0x51 && |
323 | reg != 0x130d && reg != 0x1311 && reg != 0x60081d) | 319 | reg != 0x130d && reg != 0x1311 && reg != 0x60081d) |
324 | NV_WARN(dev, "=== C51 misaligned reg 0x%08X not verified ===\n", | 320 | NV_WARN(dev, "=== C51 misaligned reg 0x%08X not verified ===\n", |
325 | reg); | 321 | reg); |
326 | 322 | ||
327 | /* Trust the init scripts on G80 */ | 323 | if (reg >= (8*1024*1024)) { |
328 | if (dev_priv->card_type >= NV_50) | 324 | NV_ERROR(dev, "=== reg 0x%08x out of mapped bounds ===\n", reg); |
329 | return 1; | 325 | return 0; |
330 | |||
331 | #define WITHIN(x, y, z) ((x >= y) && (x < y + z)) | ||
332 | if (WITHIN(reg, NV_PMC_OFFSET, NV_PMC_SIZE)) | ||
333 | return 1; | ||
334 | if (WITHIN(reg, NV_PBUS_OFFSET, NV_PBUS_SIZE)) | ||
335 | return 1; | ||
336 | if (WITHIN(reg, NV_PFIFO_OFFSET, NV_PFIFO_SIZE)) | ||
337 | return 1; | ||
338 | if (dev_priv->VBIOS.pub.chip_version >= 0x30 && | ||
339 | (WITHIN(reg, 0x4000, 0x600) || reg == 0x00004600)) | ||
340 | return 1; | ||
341 | if (dev_priv->VBIOS.pub.chip_version >= 0x40 && | ||
342 | WITHIN(reg, 0xc000, 0x48)) | ||
343 | return 1; | ||
344 | if (dev_priv->VBIOS.pub.chip_version >= 0x17 && reg == 0x0000d204) | ||
345 | return 1; | ||
346 | if (dev_priv->VBIOS.pub.chip_version >= 0x40) { | ||
347 | if (reg == 0x00011014 || reg == 0x00020328) | ||
348 | return 1; | ||
349 | if (WITHIN(reg, 0x88000, NV_PBUS_SIZE)) /* new PBUS */ | ||
350 | return 1; | ||
351 | } | 326 | } |
352 | if (WITHIN(reg, NV_PFB_OFFSET, NV_PFB_SIZE)) | ||
353 | return 1; | ||
354 | if (WITHIN(reg, NV_PEXTDEV_OFFSET, NV_PEXTDEV_SIZE)) | ||
355 | return 1; | ||
356 | if (WITHIN(reg, NV_PCRTC0_OFFSET, NV_PCRTC0_SIZE * 2)) | ||
357 | return 1; | ||
358 | if (WITHIN(reg, NV_PRAMDAC0_OFFSET, NV_PRAMDAC0_SIZE * 2)) | ||
359 | return 1; | ||
360 | if (dev_priv->VBIOS.pub.chip_version >= 0x17 && reg == 0x0070fff0) | ||
361 | return 1; | ||
362 | if (dev_priv->VBIOS.pub.chip_version == 0x51 && | ||
363 | WITHIN(reg, NV_PRAMIN_OFFSET, NV_PRAMIN_SIZE)) | ||
364 | return 1; | ||
365 | #undef WITHIN | ||
366 | 327 | ||
367 | NV_ERROR(dev, "========== unknown reg 0x%08X ==========\n", reg); | 328 | return 1; |
368 | |||
369 | return 0; | ||
370 | } | 329 | } |
371 | 330 | ||
372 | static bool | 331 | static bool |
@@ -3196,16 +3155,25 @@ static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_entr | |||
3196 | } | 3155 | } |
3197 | #ifdef __powerpc__ | 3156 | #ifdef __powerpc__ |
3198 | /* Powerbook specific quirks */ | 3157 | /* Powerbook specific quirks */ |
3199 | if (script == LVDS_RESET && ((dev->pci_device & 0xffff) == 0x0179 || (dev->pci_device & 0xffff) == 0x0329)) | 3158 | if ((dev->pci_device & 0xffff) == 0x0179 || |
3200 | nv_write_tmds(dev, dcbent->or, 0, 0x02, 0x72); | 3159 | (dev->pci_device & 0xffff) == 0x0189 || |
3201 | if ((dev->pci_device & 0xffff) == 0x0179 || (dev->pci_device & 0xffff) == 0x0189 || (dev->pci_device & 0xffff) == 0x0329) { | 3160 | (dev->pci_device & 0xffff) == 0x0329) { |
3202 | if (script == LVDS_PANEL_ON) { | 3161 | if (script == LVDS_RESET) { |
3203 | bios_wr32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL, bios_rd32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL) | (1 << 31)); | 3162 | nv_write_tmds(dev, dcbent->or, 0, 0x02, 0x72); |
3204 | bios_wr32(bios, NV_PCRTC_GPIO_EXT, bios_rd32(bios, NV_PCRTC_GPIO_EXT) | 1); | 3163 | |
3205 | } | 3164 | } else if (script == LVDS_PANEL_ON) { |
3206 | if (script == LVDS_PANEL_OFF) { | 3165 | bios_wr32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL, |
3207 | bios_wr32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL, bios_rd32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL) & ~(1 << 31)); | 3166 | bios_rd32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL) |
3208 | bios_wr32(bios, NV_PCRTC_GPIO_EXT, bios_rd32(bios, NV_PCRTC_GPIO_EXT) & ~3); | 3167 | | (1 << 31)); |
3168 | bios_wr32(bios, NV_PCRTC_GPIO_EXT, | ||
3169 | bios_rd32(bios, NV_PCRTC_GPIO_EXT) | 1); | ||
3170 | |||
3171 | } else if (script == LVDS_PANEL_OFF) { | ||
3172 | bios_wr32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL, | ||
3173 | bios_rd32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL) | ||
3174 | & ~(1 << 31)); | ||
3175 | bios_wr32(bios, NV_PCRTC_GPIO_EXT, | ||
3176 | bios_rd32(bios, NV_PCRTC_GPIO_EXT) & ~3); | ||
3209 | } | 3177 | } |
3210 | } | 3178 | } |
3211 | #endif | 3179 | #endif |
@@ -5434,52 +5402,49 @@ static bool | |||
5434 | parse_dcb15_entry(struct drm_device *dev, struct parsed_dcb *dcb, | 5402 | parse_dcb15_entry(struct drm_device *dev, struct parsed_dcb *dcb, |
5435 | uint32_t conn, uint32_t conf, struct dcb_entry *entry) | 5403 | uint32_t conn, uint32_t conf, struct dcb_entry *entry) |
5436 | { | 5404 | { |
5437 | if (conn != 0xf0003f00 && conn != 0xf2247f10 && conn != 0xf2204001 && | 5405 | switch (conn & 0x0000000f) { |
5438 | conn != 0xf2204301 && conn != 0xf2204311 && conn != 0xf2208001 && | 5406 | case 0: |
5439 | conn != 0xf2244001 && conn != 0xf2244301 && conn != 0xf2244311 && | 5407 | entry->type = OUTPUT_ANALOG; |
5440 | conn != 0xf4204011 && conn != 0xf4208011 && conn != 0xf4248011 && | 5408 | break; |
5441 | conn != 0xf2045ff2 && conn != 0xf2045f14 && conn != 0xf207df14 && | 5409 | case 1: |
5442 | conn != 0xf2205004 && conn != 0xf2209004) { | 5410 | entry->type = OUTPUT_TV; |
5443 | NV_ERROR(dev, "Unknown DCB 1.5 entry, please report\n"); | 5411 | break; |
5444 | 5412 | case 2: | |
5445 | /* cause output setting to fail for !TV, so message is seen */ | 5413 | case 3: |
5446 | if ((conn & 0xf) != 0x1) | ||
5447 | dcb->entries = 0; | ||
5448 | |||
5449 | return false; | ||
5450 | } | ||
5451 | /* most of the below is a "best guess" atm */ | ||
5452 | entry->type = conn & 0xf; | ||
5453 | if (entry->type == 2) | ||
5454 | /* another way of specifying straps based lvds... */ | ||
5455 | entry->type = OUTPUT_LVDS; | 5414 | entry->type = OUTPUT_LVDS; |
5456 | if (entry->type == 4) { /* digital */ | 5415 | break; |
5457 | if (conn & 0x10) | 5416 | case 4: |
5458 | entry->type = OUTPUT_LVDS; | 5417 | switch ((conn & 0x000000f0) >> 4) { |
5459 | else | 5418 | case 0: |
5460 | entry->type = OUTPUT_TMDS; | 5419 | entry->type = OUTPUT_TMDS; |
5420 | break; | ||
5421 | case 1: | ||
5422 | entry->type = OUTPUT_LVDS; | ||
5423 | break; | ||
5424 | default: | ||
5425 | NV_ERROR(dev, "Unknown DCB subtype 4/%d\n", | ||
5426 | (conn & 0x000000f0) >> 4); | ||
5427 | return false; | ||
5428 | } | ||
5429 | break; | ||
5430 | default: | ||
5431 | NV_ERROR(dev, "Unknown DCB type %d\n", conn & 0x0000000f); | ||
5432 | return false; | ||
5461 | } | 5433 | } |
5462 | /* what's in bits 5-13? could be some encoder maker thing, in tv case */ | 5434 | |
5463 | entry->i2c_index = (conn >> 14) & 0xf; | 5435 | entry->i2c_index = (conn & 0x0003c000) >> 14; |
5464 | /* raw heads field is in range 0-1, so move to 1-2 */ | 5436 | entry->heads = ((conn & 0x001c0000) >> 18) + 1; |
5465 | entry->heads = ((conn >> 18) & 0x7) + 1; | 5437 | entry->or = entry->heads; /* same as heads, hopefully safe enough */ |
5466 | entry->location = (conn >> 21) & 0xf; | 5438 | entry->location = (conn & 0x01e00000) >> 21; |
5467 | /* unused: entry->bus = (conn >> 25) & 0x7; */ | 5439 | entry->bus = (conn & 0x0e000000) >> 25; |
5468 | /* set or to be same as heads -- hopefully safe enough */ | ||
5469 | entry->or = entry->heads; | ||
5470 | entry->duallink_possible = false; | 5440 | entry->duallink_possible = false; |
5471 | 5441 | ||
5472 | switch (entry->type) { | 5442 | switch (entry->type) { |
5473 | case OUTPUT_ANALOG: | 5443 | case OUTPUT_ANALOG: |
5474 | entry->crtconf.maxfreq = (conf & 0xffff) * 10; | 5444 | entry->crtconf.maxfreq = (conf & 0xffff) * 10; |
5475 | break; | 5445 | break; |
5476 | case OUTPUT_LVDS: | 5446 | case OUTPUT_TV: |
5477 | /* | 5447 | entry->tvconf.has_component_output = false; |
5478 | * This is probably buried in conn's unknown bits. | ||
5479 | * This will upset EDID-ful models, if they exist | ||
5480 | */ | ||
5481 | entry->lvdsconf.use_straps_for_mode = true; | ||
5482 | entry->lvdsconf.use_power_scripts = true; | ||
5483 | break; | 5448 | break; |
5484 | case OUTPUT_TMDS: | 5449 | case OUTPUT_TMDS: |
5485 | /* | 5450 | /* |
@@ -5488,8 +5453,12 @@ parse_dcb15_entry(struct drm_device *dev, struct parsed_dcb *dcb, | |||
5488 | */ | 5453 | */ |
5489 | fabricate_vga_output(dcb, entry->i2c_index, entry->heads); | 5454 | fabricate_vga_output(dcb, entry->i2c_index, entry->heads); |
5490 | break; | 5455 | break; |
5491 | case OUTPUT_TV: | 5456 | case OUTPUT_LVDS: |
5492 | entry->tvconf.has_component_output = false; | 5457 | if ((conn & 0x00003f00) != 0x10) |
5458 | entry->lvdsconf.use_straps_for_mode = true; | ||
5459 | entry->lvdsconf.use_power_scripts = true; | ||
5460 | break; | ||
5461 | default: | ||
5493 | break; | 5462 | break; |
5494 | } | 5463 | } |
5495 | 5464 | ||
@@ -5564,11 +5533,13 @@ void merge_like_dcb_entries(struct drm_device *dev, struct parsed_dcb *dcb) | |||
5564 | dcb->entries = newentries; | 5533 | dcb->entries = newentries; |
5565 | } | 5534 | } |
5566 | 5535 | ||
5567 | static int parse_dcb_table(struct drm_device *dev, struct nvbios *bios, bool twoHeads) | 5536 | static int |
5537 | parse_dcb_table(struct drm_device *dev, struct nvbios *bios, bool twoHeads) | ||
5568 | { | 5538 | { |
5539 | struct drm_nouveau_private *dev_priv = dev->dev_private; | ||
5569 | struct bios_parsed_dcb *bdcb = &bios->bdcb; | 5540 | struct bios_parsed_dcb *bdcb = &bios->bdcb; |
5570 | struct parsed_dcb *dcb; | 5541 | struct parsed_dcb *dcb; |
5571 | uint16_t dcbptr, i2ctabptr = 0; | 5542 | uint16_t dcbptr = 0, i2ctabptr = 0; |
5572 | uint8_t *dcbtable; | 5543 | uint8_t *dcbtable; |
5573 | uint8_t headerlen = 0x4, entries = DCB_MAX_NUM_ENTRIES; | 5544 | uint8_t headerlen = 0x4, entries = DCB_MAX_NUM_ENTRIES; |
5574 | bool configblock = true; | 5545 | bool configblock = true; |
@@ -5579,16 +5550,18 @@ static int parse_dcb_table(struct drm_device *dev, struct nvbios *bios, bool two | |||
5579 | dcb->entries = 0; | 5550 | dcb->entries = 0; |
5580 | 5551 | ||
5581 | /* get the offset from 0x36 */ | 5552 | /* get the offset from 0x36 */ |
5582 | dcbptr = ROM16(bios->data[0x36]); | 5553 | if (dev_priv->card_type > NV_04) { |
5554 | dcbptr = ROM16(bios->data[0x36]); | ||
5555 | if (dcbptr == 0x0000) | ||
5556 | NV_WARN(dev, "No output data (DCB) found in BIOS\n"); | ||
5557 | } | ||
5583 | 5558 | ||
5559 | /* this situation likely means a really old card, pre DCB */ | ||
5584 | if (dcbptr == 0x0) { | 5560 | if (dcbptr == 0x0) { |
5585 | NV_WARN(dev, "No output data (DCB) found in BIOS, " | 5561 | NV_INFO(dev, "Assuming a CRT output exists\n"); |
5586 | "assuming a CRT output exists\n"); | ||
5587 | /* this situation likely means a really old card, pre DCB */ | ||
5588 | fabricate_vga_output(dcb, LEGACY_I2C_CRT, 1); | 5562 | fabricate_vga_output(dcb, LEGACY_I2C_CRT, 1); |
5589 | 5563 | ||
5590 | if (nv04_tv_identify(dev, | 5564 | if (nv04_tv_identify(dev, bios->legacy.i2c_indices.tv) >= 0) |
5591 | bios->legacy.i2c_indices.tv) >= 0) | ||
5592 | fabricate_tv_output(dcb, twoHeads); | 5565 | fabricate_tv_output(dcb, twoHeads); |
5593 | 5566 | ||
5594 | return 0; | 5567 | return 0; |
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c index e342a418d434..db0ed4c13f98 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bo.c +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c | |||
@@ -469,6 +469,8 @@ nouveau_bo_move_accel_cleanup(struct nouveau_channel *chan, | |||
469 | 469 | ||
470 | ret = ttm_bo_move_accel_cleanup(&nvbo->bo, fence, NULL, | 470 | ret = ttm_bo_move_accel_cleanup(&nvbo->bo, fence, NULL, |
471 | evict, no_wait, new_mem); | 471 | evict, no_wait, new_mem); |
472 | if (nvbo->channel && nvbo->channel != chan) | ||
473 | ret = nouveau_fence_wait(fence, NULL, false, false); | ||
472 | nouveau_fence_unref((void *)&fence); | 474 | nouveau_fence_unref((void *)&fence); |
473 | return ret; | 475 | return ret; |
474 | } | 476 | } |
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c index 5a10deb8bdbd..7e6d673f3a23 100644 --- a/drivers/gpu/drm/nouveau/nouveau_connector.c +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c | |||
@@ -24,9 +24,12 @@ | |||
24 | * | 24 | * |
25 | */ | 25 | */ |
26 | 26 | ||
27 | #include <acpi/button.h> | ||
28 | |||
27 | #include "drmP.h" | 29 | #include "drmP.h" |
28 | #include "drm_edid.h" | 30 | #include "drm_edid.h" |
29 | #include "drm_crtc_helper.h" | 31 | #include "drm_crtc_helper.h" |
32 | |||
30 | #include "nouveau_reg.h" | 33 | #include "nouveau_reg.h" |
31 | #include "nouveau_drv.h" | 34 | #include "nouveau_drv.h" |
32 | #include "nouveau_encoder.h" | 35 | #include "nouveau_encoder.h" |
@@ -83,14 +86,16 @@ nouveau_encoder_connector_get(struct nouveau_encoder *encoder) | |||
83 | static void | 86 | static void |
84 | nouveau_connector_destroy(struct drm_connector *drm_connector) | 87 | nouveau_connector_destroy(struct drm_connector *drm_connector) |
85 | { | 88 | { |
86 | struct nouveau_connector *connector = nouveau_connector(drm_connector); | 89 | struct nouveau_connector *nv_connector = |
87 | struct drm_device *dev = connector->base.dev; | 90 | nouveau_connector(drm_connector); |
91 | struct drm_device *dev = nv_connector->base.dev; | ||
88 | 92 | ||
89 | NV_DEBUG_KMS(dev, "\n"); | 93 | NV_DEBUG_KMS(dev, "\n"); |
90 | 94 | ||
91 | if (!connector) | 95 | if (!nv_connector) |
92 | return; | 96 | return; |
93 | 97 | ||
98 | kfree(nv_connector->edid); | ||
94 | drm_sysfs_connector_remove(drm_connector); | 99 | drm_sysfs_connector_remove(drm_connector); |
95 | drm_connector_cleanup(drm_connector); | 100 | drm_connector_cleanup(drm_connector); |
96 | kfree(drm_connector); | 101 | kfree(drm_connector); |
@@ -233,10 +238,21 @@ nouveau_connector_detect(struct drm_connector *connector) | |||
233 | if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) | 238 | if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) |
234 | nv_encoder = find_encoder_by_type(connector, OUTPUT_LVDS); | 239 | nv_encoder = find_encoder_by_type(connector, OUTPUT_LVDS); |
235 | if (nv_encoder && nv_connector->native_mode) { | 240 | if (nv_encoder && nv_connector->native_mode) { |
241 | #ifdef CONFIG_ACPI | ||
242 | if (!nouveau_ignorelid && !acpi_lid_open()) | ||
243 | return connector_status_disconnected; | ||
244 | #endif | ||
236 | nouveau_connector_set_encoder(connector, nv_encoder); | 245 | nouveau_connector_set_encoder(connector, nv_encoder); |
237 | return connector_status_connected; | 246 | return connector_status_connected; |
238 | } | 247 | } |
239 | 248 | ||
249 | /* Cleanup the previous EDID block. */ | ||
250 | if (nv_connector->edid) { | ||
251 | drm_mode_connector_update_edid_property(connector, NULL); | ||
252 | kfree(nv_connector->edid); | ||
253 | nv_connector->edid = NULL; | ||
254 | } | ||
255 | |||
240 | i2c = nouveau_connector_ddc_detect(connector, &nv_encoder); | 256 | i2c = nouveau_connector_ddc_detect(connector, &nv_encoder); |
241 | if (i2c) { | 257 | if (i2c) { |
242 | nouveau_connector_ddc_prepare(connector, &flags); | 258 | nouveau_connector_ddc_prepare(connector, &flags); |
@@ -247,7 +263,7 @@ nouveau_connector_detect(struct drm_connector *connector) | |||
247 | if (!nv_connector->edid) { | 263 | if (!nv_connector->edid) { |
248 | NV_ERROR(dev, "DDC responded, but no EDID for %s\n", | 264 | NV_ERROR(dev, "DDC responded, but no EDID for %s\n", |
249 | drm_get_connector_name(connector)); | 265 | drm_get_connector_name(connector)); |
250 | return connector_status_disconnected; | 266 | goto detect_analog; |
251 | } | 267 | } |
252 | 268 | ||
253 | if (nv_encoder->dcb->type == OUTPUT_DP && | 269 | if (nv_encoder->dcb->type == OUTPUT_DP && |
@@ -281,6 +297,7 @@ nouveau_connector_detect(struct drm_connector *connector) | |||
281 | return connector_status_connected; | 297 | return connector_status_connected; |
282 | } | 298 | } |
283 | 299 | ||
300 | detect_analog: | ||
284 | nv_encoder = find_encoder_by_type(connector, OUTPUT_ANALOG); | 301 | nv_encoder = find_encoder_by_type(connector, OUTPUT_ANALOG); |
285 | if (!nv_encoder) | 302 | if (!nv_encoder) |
286 | nv_encoder = find_encoder_by_type(connector, OUTPUT_TV); | 303 | nv_encoder = find_encoder_by_type(connector, OUTPUT_TV); |
@@ -687,8 +704,12 @@ nouveau_connector_create_lvds(struct drm_device *dev, | |||
687 | */ | 704 | */ |
688 | if (!nv_connector->edid && !nv_connector->native_mode && | 705 | if (!nv_connector->edid && !nv_connector->native_mode && |
689 | !dev_priv->VBIOS.pub.fp_no_ddc) { | 706 | !dev_priv->VBIOS.pub.fp_no_ddc) { |
690 | nv_connector->edid = | 707 | struct edid *edid = |
691 | (struct edid *)nouveau_bios_embedded_edid(dev); | 708 | (struct edid *)nouveau_bios_embedded_edid(dev); |
709 | if (edid) { | ||
710 | nv_connector->edid = kmalloc(EDID_LENGTH, GFP_KERNEL); | ||
711 | *(nv_connector->edid) = *edid; | ||
712 | } | ||
692 | } | 713 | } |
693 | 714 | ||
694 | if (!nv_connector->edid) | 715 | if (!nv_connector->edid) |
diff --git a/drivers/gpu/drm/nouveau/nouveau_dma.c b/drivers/gpu/drm/nouveau/nouveau_dma.c index 7afbe8b40d51..50d9e67745af 100644 --- a/drivers/gpu/drm/nouveau/nouveau_dma.c +++ b/drivers/gpu/drm/nouveau/nouveau_dma.c | |||
@@ -126,47 +126,52 @@ OUT_RINGp(struct nouveau_channel *chan, const void *data, unsigned nr_dwords) | |||
126 | chan->dma.cur += nr_dwords; | 126 | chan->dma.cur += nr_dwords; |
127 | } | 127 | } |
128 | 128 | ||
129 | static inline bool | 129 | /* Fetch and adjust GPU GET pointer |
130 | READ_GET(struct nouveau_channel *chan, uint32_t *get) | 130 | * |
131 | * Returns: | ||
132 | * value >= 0, the adjusted GET pointer | ||
133 | * -EINVAL if GET pointer currently outside main push buffer | ||
134 | * -EBUSY if timeout exceeded | ||
135 | */ | ||
136 | static inline int | ||
137 | READ_GET(struct nouveau_channel *chan, uint32_t *prev_get, uint32_t *timeout) | ||
131 | { | 138 | { |
132 | uint32_t val; | 139 | uint32_t val; |
133 | 140 | ||
134 | val = nvchan_rd32(chan, chan->user_get); | 141 | val = nvchan_rd32(chan, chan->user_get); |
135 | if (val < chan->pushbuf_base || | 142 | |
136 | val > chan->pushbuf_base + (chan->dma.max << 2)) { | 143 | /* reset counter as long as GET is still advancing, this is |
137 | /* meaningless to dma_wait() except to know whether the | 144 | * to avoid misdetecting a GPU lockup if the GPU happens to |
138 | * GPU has stalled or not | 145 | * just be processing an operation that takes a long time |
139 | */ | 146 | */ |
140 | *get = val; | 147 | if (val != *prev_get) { |
141 | return false; | 148 | *prev_get = val; |
149 | *timeout = 0; | ||
150 | } | ||
151 | |||
152 | if ((++*timeout & 0xff) == 0) { | ||
153 | DRM_UDELAY(1); | ||
154 | if (*timeout > 100000) | ||
155 | return -EBUSY; | ||
142 | } | 156 | } |
143 | 157 | ||
144 | *get = (val - chan->pushbuf_base) >> 2; | 158 | if (val < chan->pushbuf_base || |
145 | return true; | 159 | val > chan->pushbuf_base + (chan->dma.max << 2)) |
160 | return -EINVAL; | ||
161 | |||
162 | return (val - chan->pushbuf_base) >> 2; | ||
146 | } | 163 | } |
147 | 164 | ||
148 | int | 165 | int |
149 | nouveau_dma_wait(struct nouveau_channel *chan, int size) | 166 | nouveau_dma_wait(struct nouveau_channel *chan, int size) |
150 | { | 167 | { |
151 | uint32_t get, prev_get = 0, cnt = 0; | 168 | uint32_t prev_get = 0, cnt = 0; |
152 | bool get_valid; | 169 | int get; |
153 | 170 | ||
154 | while (chan->dma.free < size) { | 171 | while (chan->dma.free < size) { |
155 | /* reset counter as long as GET is still advancing, this is | 172 | get = READ_GET(chan, &prev_get, &cnt); |
156 | * to avoid misdetecting a GPU lockup if the GPU happens to | 173 | if (unlikely(get == -EBUSY)) |
157 | * just be processing an operation that takes a long time | 174 | return -EBUSY; |
158 | */ | ||
159 | get_valid = READ_GET(chan, &get); | ||
160 | if (get != prev_get) { | ||
161 | prev_get = get; | ||
162 | cnt = 0; | ||
163 | } | ||
164 | |||
165 | if ((++cnt & 0xff) == 0) { | ||
166 | DRM_UDELAY(1); | ||
167 | if (cnt > 100000) | ||
168 | return -EBUSY; | ||
169 | } | ||
170 | 175 | ||
171 | /* loop until we have a usable GET pointer. the value | 176 | /* loop until we have a usable GET pointer. the value |
172 | * we read from the GPU may be outside the main ring if | 177 | * we read from the GPU may be outside the main ring if |
@@ -177,7 +182,7 @@ nouveau_dma_wait(struct nouveau_channel *chan, int size) | |||
177 | * from the SKIPS area, so the code below doesn't have to deal | 182 | * from the SKIPS area, so the code below doesn't have to deal |
178 | * with some fun corner cases. | 183 | * with some fun corner cases. |
179 | */ | 184 | */ |
180 | if (!get_valid || get < NOUVEAU_DMA_SKIPS) | 185 | if (unlikely(get == -EINVAL) || get < NOUVEAU_DMA_SKIPS) |
181 | continue; | 186 | continue; |
182 | 187 | ||
183 | if (get <= chan->dma.cur) { | 188 | if (get <= chan->dma.cur) { |
@@ -203,6 +208,19 @@ nouveau_dma_wait(struct nouveau_channel *chan, int size) | |||
203 | * after processing the currently pending commands. | 208 | * after processing the currently pending commands. |
204 | */ | 209 | */ |
205 | OUT_RING(chan, chan->pushbuf_base | 0x20000000); | 210 | OUT_RING(chan, chan->pushbuf_base | 0x20000000); |
211 | |||
212 | /* wait for GET to depart from the skips area. | ||
213 | * prevents writing GET==PUT and causing a race | ||
214 | * condition that causes us to think the GPU is | ||
215 | * idle when it's not. | ||
216 | */ | ||
217 | do { | ||
218 | get = READ_GET(chan, &prev_get, &cnt); | ||
219 | if (unlikely(get == -EBUSY)) | ||
220 | return -EBUSY; | ||
221 | if (unlikely(get == -EINVAL)) | ||
222 | continue; | ||
223 | } while (get <= NOUVEAU_DMA_SKIPS); | ||
206 | WRITE_PUT(NOUVEAU_DMA_SKIPS); | 224 | WRITE_PUT(NOUVEAU_DMA_SKIPS); |
207 | 225 | ||
208 | /* we're now submitting commands at the start of | 226 | /* we're now submitting commands at the start of |
diff --git a/drivers/gpu/drm/nouveau/nouveau_dp.c b/drivers/gpu/drm/nouveau/nouveau_dp.c index 9e2926c48579..dd4937224220 100644 --- a/drivers/gpu/drm/nouveau/nouveau_dp.c +++ b/drivers/gpu/drm/nouveau/nouveau_dp.c | |||
@@ -490,7 +490,8 @@ nouveau_dp_auxch(struct nouveau_i2c_chan *auxch, int cmd, int addr, | |||
490 | if (!nv_wait(NV50_AUXCH_CTRL(index), 0x00010000, 0x00000000)) { | 490 | if (!nv_wait(NV50_AUXCH_CTRL(index), 0x00010000, 0x00000000)) { |
491 | NV_ERROR(dev, "expected bit 16 == 0, got 0x%08x\n", | 491 | NV_ERROR(dev, "expected bit 16 == 0, got 0x%08x\n", |
492 | nv_rd32(dev, NV50_AUXCH_CTRL(index))); | 492 | nv_rd32(dev, NV50_AUXCH_CTRL(index))); |
493 | return -EBUSY; | 493 | ret = -EBUSY; |
494 | goto out; | ||
494 | } | 495 | } |
495 | 496 | ||
496 | udelay(400); | 497 | udelay(400); |
@@ -501,6 +502,11 @@ nouveau_dp_auxch(struct nouveau_i2c_chan *auxch, int cmd, int addr, | |||
501 | break; | 502 | break; |
502 | } | 503 | } |
503 | 504 | ||
505 | if ((stat & NV50_AUXCH_STAT_COUNT) != data_nr) { | ||
506 | ret = -EREMOTEIO; | ||
507 | goto out; | ||
508 | } | ||
509 | |||
504 | if (cmd & 1) { | 510 | if (cmd & 1) { |
505 | for (i = 0; i < 4; i++) { | 511 | for (i = 0; i < 4; i++) { |
506 | data32[i] = nv_rd32(dev, NV50_AUXCH_DATA_IN(index, i)); | 512 | data32[i] = nv_rd32(dev, NV50_AUXCH_DATA_IN(index, i)); |
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c index 06eb993e0883..343ab7f17ccc 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drv.c +++ b/drivers/gpu/drm/nouveau/nouveau_drv.c | |||
@@ -71,6 +71,10 @@ MODULE_PARM_DESC(uscript_tmds, "TMDS output script table ID (>=GeForce 8)"); | |||
71 | int nouveau_uscript_tmds = -1; | 71 | int nouveau_uscript_tmds = -1; |
72 | module_param_named(uscript_tmds, nouveau_uscript_tmds, int, 0400); | 72 | module_param_named(uscript_tmds, nouveau_uscript_tmds, int, 0400); |
73 | 73 | ||
74 | MODULE_PARM_DESC(ignorelid, "Ignore ACPI lid status"); | ||
75 | int nouveau_ignorelid = 0; | ||
76 | module_param_named(ignorelid, nouveau_ignorelid, int, 0400); | ||
77 | |||
74 | MODULE_PARM_DESC(tv_norm, "Default TV norm.\n" | 78 | MODULE_PARM_DESC(tv_norm, "Default TV norm.\n" |
75 | "\t\tSupported: PAL, PAL-M, PAL-N, PAL-Nc, NTSC-M, NTSC-J,\n" | 79 | "\t\tSupported: PAL, PAL-M, PAL-N, PAL-Nc, NTSC-M, NTSC-J,\n" |
76 | "\t\t\thd480i, hd480p, hd576i, hd576p, hd720p, hd1080i.\n" | 80 | "\t\t\thd480i, hd480p, hd576i, hd576p, hd720p, hd1080i.\n" |
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h index 026419fe8791..6b9690418bc7 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drv.h +++ b/drivers/gpu/drm/nouveau/nouveau_drv.h | |||
@@ -509,6 +509,8 @@ struct drm_nouveau_private { | |||
509 | void __iomem *ramin; | 509 | void __iomem *ramin; |
510 | uint32_t ramin_size; | 510 | uint32_t ramin_size; |
511 | 511 | ||
512 | struct nouveau_bo *vga_ram; | ||
513 | |||
512 | struct workqueue_struct *wq; | 514 | struct workqueue_struct *wq; |
513 | struct work_struct irq_work; | 515 | struct work_struct irq_work; |
514 | 516 | ||
@@ -675,6 +677,7 @@ extern char *nouveau_tv_norm; | |||
675 | extern int nouveau_reg_debug; | 677 | extern int nouveau_reg_debug; |
676 | extern char *nouveau_vbios; | 678 | extern char *nouveau_vbios; |
677 | extern int nouveau_ctxfw; | 679 | extern int nouveau_ctxfw; |
680 | extern int nouveau_ignorelid; | ||
678 | 681 | ||
679 | /* nouveau_state.c */ | 682 | /* nouveau_state.c */ |
680 | extern void nouveau_preclose(struct drm_device *dev, struct drm_file *); | 683 | extern void nouveau_preclose(struct drm_device *dev, struct drm_file *); |
diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c index 2009db2426c3..6ac804b0c9f9 100644 --- a/drivers/gpu/drm/nouveau/nouveau_gem.c +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c | |||
@@ -321,6 +321,7 @@ retry: | |||
321 | else { | 321 | else { |
322 | NV_ERROR(dev, "invalid valid domains: 0x%08x\n", | 322 | NV_ERROR(dev, "invalid valid domains: 0x%08x\n", |
323 | b->valid_domains); | 323 | b->valid_domains); |
324 | list_add_tail(&nvbo->entry, &op->both_list); | ||
324 | validate_fini(op, NULL); | 325 | validate_fini(op, NULL); |
325 | return -EINVAL; | 326 | return -EINVAL; |
326 | } | 327 | } |
@@ -466,13 +467,14 @@ u_memcpya(uint64_t user, unsigned nmemb, unsigned size) | |||
466 | static int | 467 | static int |
467 | nouveau_gem_pushbuf_reloc_apply(struct nouveau_channel *chan, int nr_bo, | 468 | nouveau_gem_pushbuf_reloc_apply(struct nouveau_channel *chan, int nr_bo, |
468 | struct drm_nouveau_gem_pushbuf_bo *bo, | 469 | struct drm_nouveau_gem_pushbuf_bo *bo, |
469 | int nr_relocs, uint64_t ptr_relocs, | 470 | unsigned nr_relocs, uint64_t ptr_relocs, |
470 | int nr_dwords, int first_dword, | 471 | unsigned nr_dwords, unsigned first_dword, |
471 | uint32_t *pushbuf, bool is_iomem) | 472 | uint32_t *pushbuf, bool is_iomem) |
472 | { | 473 | { |
473 | struct drm_nouveau_gem_pushbuf_reloc *reloc = NULL; | 474 | struct drm_nouveau_gem_pushbuf_reloc *reloc = NULL; |
474 | struct drm_device *dev = chan->dev; | 475 | struct drm_device *dev = chan->dev; |
475 | int ret = 0, i; | 476 | int ret = 0; |
477 | unsigned i; | ||
476 | 478 | ||
477 | reloc = u_memcpya(ptr_relocs, nr_relocs, sizeof(*reloc)); | 479 | reloc = u_memcpya(ptr_relocs, nr_relocs, sizeof(*reloc)); |
478 | if (IS_ERR(reloc)) | 480 | if (IS_ERR(reloc)) |
@@ -667,6 +669,18 @@ nouveau_gem_ioctl_pushbuf_call(struct drm_device *dev, void *data, | |||
667 | } | 669 | } |
668 | pbbo = nouveau_gem_object(gem); | 670 | pbbo = nouveau_gem_object(gem); |
669 | 671 | ||
672 | if ((req->offset & 3) || req->nr_dwords < 2 || | ||
673 | (unsigned long)req->offset > (unsigned long)pbbo->bo.mem.size || | ||
674 | (unsigned long)req->nr_dwords > | ||
675 | ((unsigned long)(pbbo->bo.mem.size - req->offset ) >> 2)) { | ||
676 | NV_ERROR(dev, "pb call misaligned or out of bounds: " | ||
677 | "%d + %d * 4 > %ld\n", | ||
678 | req->offset, req->nr_dwords, pbbo->bo.mem.size); | ||
679 | ret = -EINVAL; | ||
680 | drm_gem_object_unreference(gem); | ||
681 | goto out; | ||
682 | } | ||
683 | |||
670 | ret = ttm_bo_reserve(&pbbo->bo, false, false, true, | 684 | ret = ttm_bo_reserve(&pbbo->bo, false, false, true, |
671 | chan->fence.sequence); | 685 | chan->fence.sequence); |
672 | if (ret) { | 686 | if (ret) { |
diff --git a/drivers/gpu/drm/nouveau/nouveau_irq.c b/drivers/gpu/drm/nouveau/nouveau_irq.c index 919a619ca7fa..3b9bad66162a 100644 --- a/drivers/gpu/drm/nouveau/nouveau_irq.c +++ b/drivers/gpu/drm/nouveau/nouveau_irq.c | |||
@@ -483,6 +483,13 @@ nouveau_pgraph_intr_error(struct drm_device *dev, uint32_t nsource) | |||
483 | if (nsource & NV03_PGRAPH_NSOURCE_ILLEGAL_MTHD) { | 483 | if (nsource & NV03_PGRAPH_NSOURCE_ILLEGAL_MTHD) { |
484 | if (nouveau_pgraph_intr_swmthd(dev, &trap)) | 484 | if (nouveau_pgraph_intr_swmthd(dev, &trap)) |
485 | unhandled = 1; | 485 | unhandled = 1; |
486 | } else if (nsource & NV03_PGRAPH_NSOURCE_DMA_VTX_PROTECTION) { | ||
487 | uint32_t v = nv_rd32(dev, 0x402000); | ||
488 | nv_wr32(dev, 0x402000, v); | ||
489 | |||
490 | /* dump the error anyway for now: it's useful for | ||
491 | Gallium development */ | ||
492 | unhandled = 1; | ||
486 | } else { | 493 | } else { |
487 | unhandled = 1; | 494 | unhandled = 1; |
488 | } | 495 | } |
diff --git a/drivers/gpu/drm/nouveau/nouveau_mem.c b/drivers/gpu/drm/nouveau/nouveau_mem.c index fb9bdd6edf1f..8f3a12f614ed 100644 --- a/drivers/gpu/drm/nouveau/nouveau_mem.c +++ b/drivers/gpu/drm/nouveau/nouveau_mem.c | |||
@@ -383,9 +383,8 @@ void nouveau_mem_close(struct drm_device *dev) | |||
383 | { | 383 | { |
384 | struct drm_nouveau_private *dev_priv = dev->dev_private; | 384 | struct drm_nouveau_private *dev_priv = dev->dev_private; |
385 | 385 | ||
386 | if (dev_priv->ttm.bdev.man[TTM_PL_PRIV0].has_type) | 386 | nouveau_bo_unpin(dev_priv->vga_ram); |
387 | ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_PRIV0); | 387 | nouveau_bo_ref(NULL, &dev_priv->vga_ram); |
388 | ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_VRAM); | ||
389 | 388 | ||
390 | ttm_bo_device_release(&dev_priv->ttm.bdev); | 389 | ttm_bo_device_release(&dev_priv->ttm.bdev); |
391 | 390 | ||
@@ -622,6 +621,15 @@ nouveau_mem_init(struct drm_device *dev) | |||
622 | return ret; | 621 | return ret; |
623 | } | 622 | } |
624 | 623 | ||
624 | ret = nouveau_bo_new(dev, NULL, 256*1024, 0, TTM_PL_FLAG_VRAM, | ||
625 | 0, 0, true, true, &dev_priv->vga_ram); | ||
626 | if (ret == 0) | ||
627 | ret = nouveau_bo_pin(dev_priv->vga_ram, TTM_PL_FLAG_VRAM); | ||
628 | if (ret) { | ||
629 | NV_WARN(dev, "failed to reserve VGA memory\n"); | ||
630 | nouveau_bo_ref(NULL, &dev_priv->vga_ram); | ||
631 | } | ||
632 | |||
625 | /* GART */ | 633 | /* GART */ |
626 | #if !defined(__powerpc__) && !defined(__ia64__) | 634 | #if !defined(__powerpc__) && !defined(__ia64__) |
627 | if (drm_device_is_agp(dev) && dev->agp) { | 635 | if (drm_device_is_agp(dev) && dev->agp) { |
@@ -653,6 +661,7 @@ nouveau_mem_init(struct drm_device *dev) | |||
653 | dev_priv->fb_mtrr = drm_mtrr_add(drm_get_resource_start(dev, 1), | 661 | dev_priv->fb_mtrr = drm_mtrr_add(drm_get_resource_start(dev, 1), |
654 | drm_get_resource_len(dev, 1), | 662 | drm_get_resource_len(dev, 1), |
655 | DRM_MTRR_WC); | 663 | DRM_MTRR_WC); |
664 | |||
656 | return 0; | 665 | return 0; |
657 | } | 666 | } |
658 | 667 | ||
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c index 09b9a46dfc0e..f2d0187ba152 100644 --- a/drivers/gpu/drm/nouveau/nouveau_state.c +++ b/drivers/gpu/drm/nouveau/nouveau_state.c | |||
@@ -525,6 +525,7 @@ static void nouveau_card_takedown(struct drm_device *dev) | |||
525 | engine->mc.takedown(dev); | 525 | engine->mc.takedown(dev); |
526 | 526 | ||
527 | mutex_lock(&dev->struct_mutex); | 527 | mutex_lock(&dev->struct_mutex); |
528 | ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_VRAM); | ||
528 | ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_TT); | 529 | ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_TT); |
529 | mutex_unlock(&dev->struct_mutex); | 530 | mutex_unlock(&dev->struct_mutex); |
530 | nouveau_sgdma_takedown(dev); | 531 | nouveau_sgdma_takedown(dev); |
diff --git a/drivers/gpu/drm/nouveau/nv04_instmem.c b/drivers/gpu/drm/nouveau/nv04_instmem.c index a20c206625a2..a3b9563a6f60 100644 --- a/drivers/gpu/drm/nouveau/nv04_instmem.c +++ b/drivers/gpu/drm/nouveau/nv04_instmem.c | |||
@@ -30,7 +30,7 @@ nv04_instmem_determine_amount(struct drm_device *dev) | |||
30 | * of vram. For now, only reserve a small piece until we know | 30 | * of vram. For now, only reserve a small piece until we know |
31 | * more about what each chipset requires. | 31 | * more about what each chipset requires. |
32 | */ | 32 | */ |
33 | switch (dev_priv->chipset & 0xf0) { | 33 | switch (dev_priv->chipset) { |
34 | case 0x40: | 34 | case 0x40: |
35 | case 0x47: | 35 | case 0x47: |
36 | case 0x49: | 36 | case 0x49: |
diff --git a/drivers/gpu/drm/nouveau/nv50_crtc.c b/drivers/gpu/drm/nouveau/nv50_crtc.c index 118d3285fd8c..40b7360841f8 100644 --- a/drivers/gpu/drm/nouveau/nv50_crtc.c +++ b/drivers/gpu/drm/nouveau/nv50_crtc.c | |||
@@ -432,6 +432,7 @@ nv50_crtc_prepare(struct drm_crtc *crtc) | |||
432 | struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); | 432 | struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); |
433 | struct drm_device *dev = crtc->dev; | 433 | struct drm_device *dev = crtc->dev; |
434 | struct drm_encoder *encoder; | 434 | struct drm_encoder *encoder; |
435 | uint32_t dac = 0, sor = 0; | ||
435 | 436 | ||
436 | NV_DEBUG_KMS(dev, "index %d\n", nv_crtc->index); | 437 | NV_DEBUG_KMS(dev, "index %d\n", nv_crtc->index); |
437 | 438 | ||
@@ -439,9 +440,28 @@ nv50_crtc_prepare(struct drm_crtc *crtc) | |||
439 | list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { | 440 | list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { |
440 | struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder); | 441 | struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder); |
441 | 442 | ||
442 | if (drm_helper_encoder_in_use(encoder)) | 443 | if (!drm_helper_encoder_in_use(encoder)) |
443 | continue; | 444 | continue; |
444 | 445 | ||
446 | if (nv_encoder->dcb->type == OUTPUT_ANALOG || | ||
447 | nv_encoder->dcb->type == OUTPUT_TV) | ||
448 | dac |= (1 << nv_encoder->or); | ||
449 | else | ||
450 | sor |= (1 << nv_encoder->or); | ||
451 | } | ||
452 | |||
453 | list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { | ||
454 | struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder); | ||
455 | |||
456 | if (nv_encoder->dcb->type == OUTPUT_ANALOG || | ||
457 | nv_encoder->dcb->type == OUTPUT_TV) { | ||
458 | if (dac & (1 << nv_encoder->or)) | ||
459 | continue; | ||
460 | } else { | ||
461 | if (sor & (1 << nv_encoder->or)) | ||
462 | continue; | ||
463 | } | ||
464 | |||
445 | nv_encoder->disconnect(nv_encoder); | 465 | nv_encoder->disconnect(nv_encoder); |
446 | } | 466 | } |
447 | 467 | ||
diff --git a/drivers/gpu/drm/nouveau/nv50_fifo.c b/drivers/gpu/drm/nouveau/nv50_fifo.c index 39caf167587d..32b244bcb482 100644 --- a/drivers/gpu/drm/nouveau/nv50_fifo.c +++ b/drivers/gpu/drm/nouveau/nv50_fifo.c | |||
@@ -272,7 +272,7 @@ nv50_fifo_create_context(struct nouveau_channel *chan) | |||
272 | return ret; | 272 | return ret; |
273 | ramfc = chan->ramfc->gpuobj; | 273 | ramfc = chan->ramfc->gpuobj; |
274 | 274 | ||
275 | ret = nouveau_gpuobj_new_ref(dev, chan, NULL, 0, 4096, 256, | 275 | ret = nouveau_gpuobj_new_ref(dev, chan, NULL, 0, 4096, 1024, |
276 | 0, &chan->cache); | 276 | 0, &chan->cache); |
277 | if (ret) | 277 | if (ret) |
278 | return ret; | 278 | return ret; |
diff --git a/drivers/gpu/drm/nouveau/nv50_graph.c b/drivers/gpu/drm/nouveau/nv50_graph.c index ca79f32be44c..20319e59d368 100644 --- a/drivers/gpu/drm/nouveau/nv50_graph.c +++ b/drivers/gpu/drm/nouveau/nv50_graph.c | |||
@@ -84,7 +84,7 @@ nv50_graph_init_regs__nv(struct drm_device *dev) | |||
84 | nv_wr32(dev, 0x400804, 0xc0000000); | 84 | nv_wr32(dev, 0x400804, 0xc0000000); |
85 | nv_wr32(dev, 0x406800, 0xc0000000); | 85 | nv_wr32(dev, 0x406800, 0xc0000000); |
86 | nv_wr32(dev, 0x400c04, 0xc0000000); | 86 | nv_wr32(dev, 0x400c04, 0xc0000000); |
87 | nv_wr32(dev, 0x401804, 0xc0000000); | 87 | nv_wr32(dev, 0x401800, 0xc0000000); |
88 | nv_wr32(dev, 0x405018, 0xc0000000); | 88 | nv_wr32(dev, 0x405018, 0xc0000000); |
89 | nv_wr32(dev, 0x402000, 0xc0000000); | 89 | nv_wr32(dev, 0x402000, 0xc0000000); |
90 | 90 | ||
@@ -282,6 +282,7 @@ nv50_graph_unload_context(struct drm_device *dev) | |||
282 | return 0; | 282 | return 0; |
283 | inst &= NV50_PGRAPH_CTXCTL_CUR_INSTANCE; | 283 | inst &= NV50_PGRAPH_CTXCTL_CUR_INSTANCE; |
284 | 284 | ||
285 | nouveau_wait_for_idle(dev); | ||
285 | nv_wr32(dev, 0x400500, fifo & ~1); | 286 | nv_wr32(dev, 0x400500, fifo & ~1); |
286 | nv_wr32(dev, 0x400784, inst); | 287 | nv_wr32(dev, 0x400784, inst); |
287 | nv_wr32(dev, 0x400824, nv_rd32(dev, 0x400824) | 0x20); | 288 | nv_wr32(dev, 0x400824, nv_rd32(dev, 0x400824) | 0x20); |
diff --git a/drivers/gpu/drm/nouveau/nv50_sor.c b/drivers/gpu/drm/nouveau/nv50_sor.c index e395c16d30f5..ecf1936b8224 100644 --- a/drivers/gpu/drm/nouveau/nv50_sor.c +++ b/drivers/gpu/drm/nouveau/nv50_sor.c | |||
@@ -90,11 +90,24 @@ nv50_sor_dpms(struct drm_encoder *encoder, int mode) | |||
90 | { | 90 | { |
91 | struct drm_device *dev = encoder->dev; | 91 | struct drm_device *dev = encoder->dev; |
92 | struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder); | 92 | struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder); |
93 | struct drm_encoder *enc; | ||
93 | uint32_t val; | 94 | uint32_t val; |
94 | int or = nv_encoder->or; | 95 | int or = nv_encoder->or; |
95 | 96 | ||
96 | NV_DEBUG_KMS(dev, "or %d mode %d\n", or, mode); | 97 | NV_DEBUG_KMS(dev, "or %d mode %d\n", or, mode); |
97 | 98 | ||
99 | nv_encoder->last_dpms = mode; | ||
100 | list_for_each_entry(enc, &dev->mode_config.encoder_list, head) { | ||
101 | struct nouveau_encoder *nvenc = nouveau_encoder(enc); | ||
102 | |||
103 | if (nvenc == nv_encoder || | ||
104 | nvenc->dcb->or != nv_encoder->dcb->or) | ||
105 | continue; | ||
106 | |||
107 | if (nvenc->last_dpms == DRM_MODE_DPMS_ON) | ||
108 | return; | ||
109 | } | ||
110 | |||
98 | /* wait for it to be done */ | 111 | /* wait for it to be done */ |
99 | if (!nv_wait(NV50_PDISPLAY_SOR_DPMS_CTRL(or), | 112 | if (!nv_wait(NV50_PDISPLAY_SOR_DPMS_CTRL(or), |
100 | NV50_PDISPLAY_SOR_DPMS_CTRL_PENDING, 0)) { | 113 | NV50_PDISPLAY_SOR_DPMS_CTRL_PENDING, 0)) { |
diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c index 388140a7e651..e3b44562d265 100644 --- a/drivers/gpu/drm/radeon/atom.c +++ b/drivers/gpu/drm/radeon/atom.c | |||
@@ -246,6 +246,9 @@ static uint32_t atom_get_src_int(atom_exec_context *ctx, uint8_t attr, | |||
246 | case ATOM_WS_ATTRIBUTES: | 246 | case ATOM_WS_ATTRIBUTES: |
247 | val = gctx->io_attr; | 247 | val = gctx->io_attr; |
248 | break; | 248 | break; |
249 | case ATOM_WS_REGPTR: | ||
250 | val = gctx->reg_block; | ||
251 | break; | ||
249 | default: | 252 | default: |
250 | val = ctx->ws[idx]; | 253 | val = ctx->ws[idx]; |
251 | } | 254 | } |
@@ -385,6 +388,32 @@ static uint32_t atom_get_src(atom_exec_context *ctx, uint8_t attr, int *ptr) | |||
385 | return atom_get_src_int(ctx, attr, ptr, NULL, 1); | 388 | return atom_get_src_int(ctx, attr, ptr, NULL, 1); |
386 | } | 389 | } |
387 | 390 | ||
391 | static uint32_t atom_get_src_direct(atom_exec_context *ctx, uint8_t align, int *ptr) | ||
392 | { | ||
393 | uint32_t val = 0xCDCDCDCD; | ||
394 | |||
395 | switch (align) { | ||
396 | case ATOM_SRC_DWORD: | ||
397 | val = U32(*ptr); | ||
398 | (*ptr) += 4; | ||
399 | break; | ||
400 | case ATOM_SRC_WORD0: | ||
401 | case ATOM_SRC_WORD8: | ||
402 | case ATOM_SRC_WORD16: | ||
403 | val = U16(*ptr); | ||
404 | (*ptr) += 2; | ||
405 | break; | ||
406 | case ATOM_SRC_BYTE0: | ||
407 | case ATOM_SRC_BYTE8: | ||
408 | case ATOM_SRC_BYTE16: | ||
409 | case ATOM_SRC_BYTE24: | ||
410 | val = U8(*ptr); | ||
411 | (*ptr)++; | ||
412 | break; | ||
413 | } | ||
414 | return val; | ||
415 | } | ||
416 | |||
388 | static uint32_t atom_get_dst(atom_exec_context *ctx, int arg, uint8_t attr, | 417 | static uint32_t atom_get_dst(atom_exec_context *ctx, int arg, uint8_t attr, |
389 | int *ptr, uint32_t *saved, int print) | 418 | int *ptr, uint32_t *saved, int print) |
390 | { | 419 | { |
@@ -482,6 +511,9 @@ static void atom_put_dst(atom_exec_context *ctx, int arg, uint8_t attr, | |||
482 | case ATOM_WS_ATTRIBUTES: | 511 | case ATOM_WS_ATTRIBUTES: |
483 | gctx->io_attr = val; | 512 | gctx->io_attr = val; |
484 | break; | 513 | break; |
514 | case ATOM_WS_REGPTR: | ||
515 | gctx->reg_block = val; | ||
516 | break; | ||
485 | default: | 517 | default: |
486 | ctx->ws[idx] = val; | 518 | ctx->ws[idx] = val; |
487 | } | 519 | } |
@@ -677,7 +709,7 @@ static void atom_op_mask(atom_exec_context *ctx, int *ptr, int arg) | |||
677 | SDEBUG(" dst: "); | 709 | SDEBUG(" dst: "); |
678 | dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); | 710 | dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); |
679 | SDEBUG(" src1: "); | 711 | SDEBUG(" src1: "); |
680 | src1 = atom_get_src(ctx, attr, ptr); | 712 | src1 = atom_get_src_direct(ctx, ((attr >> 3) & 7), ptr); |
681 | SDEBUG(" src2: "); | 713 | SDEBUG(" src2: "); |
682 | src2 = atom_get_src(ctx, attr, ptr); | 714 | src2 = atom_get_src(ctx, attr, ptr); |
683 | dst &= src1; | 715 | dst &= src1; |
@@ -809,6 +841,38 @@ static void atom_op_setregblock(atom_exec_context *ctx, int *ptr, int arg) | |||
809 | SDEBUG(" base: 0x%04X\n", ctx->ctx->reg_block); | 841 | SDEBUG(" base: 0x%04X\n", ctx->ctx->reg_block); |
810 | } | 842 | } |
811 | 843 | ||
844 | static void atom_op_shift_left(atom_exec_context *ctx, int *ptr, int arg) | ||
845 | { | ||
846 | uint8_t attr = U8((*ptr)++), shift; | ||
847 | uint32_t saved, dst; | ||
848 | int dptr = *ptr; | ||
849 | attr &= 0x38; | ||
850 | attr |= atom_def_dst[attr >> 3] << 6; | ||
851 | SDEBUG(" dst: "); | ||
852 | dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); | ||
853 | shift = atom_get_src_direct(ctx, ATOM_SRC_BYTE0, ptr); | ||
854 | SDEBUG(" shift: %d\n", shift); | ||
855 | dst <<= shift; | ||
856 | SDEBUG(" dst: "); | ||
857 | atom_put_dst(ctx, arg, attr, &dptr, dst, saved); | ||
858 | } | ||
859 | |||
860 | static void atom_op_shift_right(atom_exec_context *ctx, int *ptr, int arg) | ||
861 | { | ||
862 | uint8_t attr = U8((*ptr)++), shift; | ||
863 | uint32_t saved, dst; | ||
864 | int dptr = *ptr; | ||
865 | attr &= 0x38; | ||
866 | attr |= atom_def_dst[attr >> 3] << 6; | ||
867 | SDEBUG(" dst: "); | ||
868 | dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); | ||
869 | shift = atom_get_src_direct(ctx, ATOM_SRC_BYTE0, ptr); | ||
870 | SDEBUG(" shift: %d\n", shift); | ||
871 | dst >>= shift; | ||
872 | SDEBUG(" dst: "); | ||
873 | atom_put_dst(ctx, arg, attr, &dptr, dst, saved); | ||
874 | } | ||
875 | |||
812 | static void atom_op_shl(atom_exec_context *ctx, int *ptr, int arg) | 876 | static void atom_op_shl(atom_exec_context *ctx, int *ptr, int arg) |
813 | { | 877 | { |
814 | uint8_t attr = U8((*ptr)++), shift; | 878 | uint8_t attr = U8((*ptr)++), shift; |
@@ -818,7 +882,7 @@ static void atom_op_shl(atom_exec_context *ctx, int *ptr, int arg) | |||
818 | attr |= atom_def_dst[attr >> 3] << 6; | 882 | attr |= atom_def_dst[attr >> 3] << 6; |
819 | SDEBUG(" dst: "); | 883 | SDEBUG(" dst: "); |
820 | dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); | 884 | dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); |
821 | shift = U8((*ptr)++); | 885 | shift = atom_get_src(ctx, attr, ptr); |
822 | SDEBUG(" shift: %d\n", shift); | 886 | SDEBUG(" shift: %d\n", shift); |
823 | dst <<= shift; | 887 | dst <<= shift; |
824 | SDEBUG(" dst: "); | 888 | SDEBUG(" dst: "); |
@@ -834,7 +898,7 @@ static void atom_op_shr(atom_exec_context *ctx, int *ptr, int arg) | |||
834 | attr |= atom_def_dst[attr >> 3] << 6; | 898 | attr |= atom_def_dst[attr >> 3] << 6; |
835 | SDEBUG(" dst: "); | 899 | SDEBUG(" dst: "); |
836 | dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); | 900 | dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); |
837 | shift = U8((*ptr)++); | 901 | shift = atom_get_src(ctx, attr, ptr); |
838 | SDEBUG(" shift: %d\n", shift); | 902 | SDEBUG(" shift: %d\n", shift); |
839 | dst >>= shift; | 903 | dst >>= shift; |
840 | SDEBUG(" dst: "); | 904 | SDEBUG(" dst: "); |
@@ -937,18 +1001,18 @@ static struct { | |||
937 | atom_op_or, ATOM_ARG_FB}, { | 1001 | atom_op_or, ATOM_ARG_FB}, { |
938 | atom_op_or, ATOM_ARG_PLL}, { | 1002 | atom_op_or, ATOM_ARG_PLL}, { |
939 | atom_op_or, ATOM_ARG_MC}, { | 1003 | atom_op_or, ATOM_ARG_MC}, { |
940 | atom_op_shl, ATOM_ARG_REG}, { | 1004 | atom_op_shift_left, ATOM_ARG_REG}, { |
941 | atom_op_shl, ATOM_ARG_PS}, { | 1005 | atom_op_shift_left, ATOM_ARG_PS}, { |
942 | atom_op_shl, ATOM_ARG_WS}, { | 1006 | atom_op_shift_left, ATOM_ARG_WS}, { |
943 | atom_op_shl, ATOM_ARG_FB}, { | 1007 | atom_op_shift_left, ATOM_ARG_FB}, { |
944 | atom_op_shl, ATOM_ARG_PLL}, { | 1008 | atom_op_shift_left, ATOM_ARG_PLL}, { |
945 | atom_op_shl, ATOM_ARG_MC}, { | 1009 | atom_op_shift_left, ATOM_ARG_MC}, { |
946 | atom_op_shr, ATOM_ARG_REG}, { | 1010 | atom_op_shift_right, ATOM_ARG_REG}, { |
947 | atom_op_shr, ATOM_ARG_PS}, { | 1011 | atom_op_shift_right, ATOM_ARG_PS}, { |
948 | atom_op_shr, ATOM_ARG_WS}, { | 1012 | atom_op_shift_right, ATOM_ARG_WS}, { |
949 | atom_op_shr, ATOM_ARG_FB}, { | 1013 | atom_op_shift_right, ATOM_ARG_FB}, { |
950 | atom_op_shr, ATOM_ARG_PLL}, { | 1014 | atom_op_shift_right, ATOM_ARG_PLL}, { |
951 | atom_op_shr, ATOM_ARG_MC}, { | 1015 | atom_op_shift_right, ATOM_ARG_MC}, { |
952 | atom_op_mul, ATOM_ARG_REG}, { | 1016 | atom_op_mul, ATOM_ARG_REG}, { |
953 | atom_op_mul, ATOM_ARG_PS}, { | 1017 | atom_op_mul, ATOM_ARG_PS}, { |
954 | atom_op_mul, ATOM_ARG_WS}, { | 1018 | atom_op_mul, ATOM_ARG_WS}, { |
@@ -1058,8 +1122,6 @@ static void atom_execute_table_locked(struct atom_context *ctx, int index, uint3 | |||
1058 | 1122 | ||
1059 | SDEBUG(">> execute %04X (len %d, WS %d, PS %d)\n", base, len, ws, ps); | 1123 | SDEBUG(">> execute %04X (len %d, WS %d, PS %d)\n", base, len, ws, ps); |
1060 | 1124 | ||
1061 | /* reset reg block */ | ||
1062 | ctx->reg_block = 0; | ||
1063 | ectx.ctx = ctx; | 1125 | ectx.ctx = ctx; |
1064 | ectx.ps_shift = ps / 4; | 1126 | ectx.ps_shift = ps / 4; |
1065 | ectx.start = base; | 1127 | ectx.start = base; |
@@ -1096,6 +1158,12 @@ static void atom_execute_table_locked(struct atom_context *ctx, int index, uint3 | |||
1096 | void atom_execute_table(struct atom_context *ctx, int index, uint32_t * params) | 1158 | void atom_execute_table(struct atom_context *ctx, int index, uint32_t * params) |
1097 | { | 1159 | { |
1098 | mutex_lock(&ctx->mutex); | 1160 | mutex_lock(&ctx->mutex); |
1161 | /* reset reg block */ | ||
1162 | ctx->reg_block = 0; | ||
1163 | /* reset fb window */ | ||
1164 | ctx->fb_base = 0; | ||
1165 | /* reset io mode */ | ||
1166 | ctx->io_mode = ATOM_IO_MM; | ||
1099 | atom_execute_table_locked(ctx, index, params); | 1167 | atom_execute_table_locked(ctx, index, params); |
1100 | mutex_unlock(&ctx->mutex); | 1168 | mutex_unlock(&ctx->mutex); |
1101 | } | 1169 | } |
diff --git a/drivers/gpu/drm/radeon/atom.h b/drivers/gpu/drm/radeon/atom.h index 47fd943f6d14..bc73781423a1 100644 --- a/drivers/gpu/drm/radeon/atom.h +++ b/drivers/gpu/drm/radeon/atom.h | |||
@@ -91,6 +91,7 @@ | |||
91 | #define ATOM_WS_AND_MASK 0x45 | 91 | #define ATOM_WS_AND_MASK 0x45 |
92 | #define ATOM_WS_FB_WINDOW 0x46 | 92 | #define ATOM_WS_FB_WINDOW 0x46 |
93 | #define ATOM_WS_ATTRIBUTES 0x47 | 93 | #define ATOM_WS_ATTRIBUTES 0x47 |
94 | #define ATOM_WS_REGPTR 0x48 | ||
94 | 95 | ||
95 | #define ATOM_IIO_NOP 0 | 96 | #define ATOM_IIO_NOP 0 |
96 | #define ATOM_IIO_START 1 | 97 | #define ATOM_IIO_START 1 |
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c index 260fcf59f00c..af464e351fbd 100644 --- a/drivers/gpu/drm/radeon/atombios_crtc.c +++ b/drivers/gpu/drm/radeon/atombios_crtc.c | |||
@@ -307,7 +307,6 @@ atombios_set_crtc_dtd_timing(struct drm_crtc *crtc, | |||
307 | args.susModeMiscInfo.usAccess = cpu_to_le16(misc); | 307 | args.susModeMiscInfo.usAccess = cpu_to_le16(misc); |
308 | args.ucCRTC = radeon_crtc->crtc_id; | 308 | args.ucCRTC = radeon_crtc->crtc_id; |
309 | 309 | ||
310 | printk("executing set crtc dtd timing\n"); | ||
311 | atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); | 310 | atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); |
312 | } | 311 | } |
313 | 312 | ||
@@ -347,7 +346,6 @@ static void atombios_crtc_set_timing(struct drm_crtc *crtc, | |||
347 | args.susModeMiscInfo.usAccess = cpu_to_le16(misc); | 346 | args.susModeMiscInfo.usAccess = cpu_to_le16(misc); |
348 | args.ucCRTC = radeon_crtc->crtc_id; | 347 | args.ucCRTC = radeon_crtc->crtc_id; |
349 | 348 | ||
350 | printk("executing set crtc timing\n"); | ||
351 | atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); | 349 | atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); |
352 | } | 350 | } |
353 | 351 | ||
@@ -409,59 +407,57 @@ static void atombios_set_ss(struct drm_crtc *crtc, int enable) | |||
409 | } | 407 | } |
410 | } | 408 | } |
411 | 409 | ||
412 | void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | 410 | union adjust_pixel_clock { |
411 | ADJUST_DISPLAY_PLL_PS_ALLOCATION v1; | ||
412 | }; | ||
413 | |||
414 | static u32 atombios_adjust_pll(struct drm_crtc *crtc, | ||
415 | struct drm_display_mode *mode, | ||
416 | struct radeon_pll *pll) | ||
413 | { | 417 | { |
414 | struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); | ||
415 | struct drm_device *dev = crtc->dev; | 418 | struct drm_device *dev = crtc->dev; |
416 | struct radeon_device *rdev = dev->dev_private; | 419 | struct radeon_device *rdev = dev->dev_private; |
417 | struct drm_encoder *encoder = NULL; | 420 | struct drm_encoder *encoder = NULL; |
418 | struct radeon_encoder *radeon_encoder = NULL; | 421 | struct radeon_encoder *radeon_encoder = NULL; |
419 | uint8_t frev, crev; | 422 | u32 adjusted_clock = mode->clock; |
420 | int index; | ||
421 | SET_PIXEL_CLOCK_PS_ALLOCATION args; | ||
422 | PIXEL_CLOCK_PARAMETERS *spc1_ptr; | ||
423 | PIXEL_CLOCK_PARAMETERS_V2 *spc2_ptr; | ||
424 | PIXEL_CLOCK_PARAMETERS_V3 *spc3_ptr; | ||
425 | uint32_t pll_clock = mode->clock; | ||
426 | uint32_t adjusted_clock; | ||
427 | uint32_t ref_div = 0, fb_div = 0, frac_fb_div = 0, post_div = 0; | ||
428 | struct radeon_pll *pll; | ||
429 | int pll_flags = 0; | ||
430 | 423 | ||
431 | memset(&args, 0, sizeof(args)); | 424 | /* reset the pll flags */ |
425 | pll->flags = 0; | ||
432 | 426 | ||
433 | if (ASIC_IS_AVIVO(rdev)) { | 427 | if (ASIC_IS_AVIVO(rdev)) { |
434 | if ((rdev->family == CHIP_RS600) || | 428 | if ((rdev->family == CHIP_RS600) || |
435 | (rdev->family == CHIP_RS690) || | 429 | (rdev->family == CHIP_RS690) || |
436 | (rdev->family == CHIP_RS740)) | 430 | (rdev->family == CHIP_RS740)) |
437 | pll_flags |= (RADEON_PLL_USE_FRAC_FB_DIV | | 431 | pll->flags |= (RADEON_PLL_USE_FRAC_FB_DIV | |
438 | RADEON_PLL_PREFER_CLOSEST_LOWER); | 432 | RADEON_PLL_PREFER_CLOSEST_LOWER); |
439 | 433 | ||
440 | if (ASIC_IS_DCE32(rdev) && mode->clock > 200000) /* range limits??? */ | 434 | if (ASIC_IS_DCE32(rdev) && mode->clock > 200000) /* range limits??? */ |
441 | pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; | 435 | pll->flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; |
442 | else | 436 | else |
443 | pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; | 437 | pll->flags |= RADEON_PLL_PREFER_LOW_REF_DIV; |
444 | } else { | 438 | } else { |
445 | pll_flags |= RADEON_PLL_LEGACY; | 439 | pll->flags |= RADEON_PLL_LEGACY; |
446 | 440 | ||
447 | if (mode->clock > 200000) /* range limits??? */ | 441 | if (mode->clock > 200000) /* range limits??? */ |
448 | pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; | 442 | pll->flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; |
449 | else | 443 | else |
450 | pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; | 444 | pll->flags |= RADEON_PLL_PREFER_LOW_REF_DIV; |
451 | 445 | ||
452 | } | 446 | } |
453 | 447 | ||
454 | list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { | 448 | list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { |
455 | if (encoder->crtc == crtc) { | 449 | if (encoder->crtc == crtc) { |
456 | if (!ASIC_IS_AVIVO(rdev)) { | ||
457 | if (encoder->encoder_type != | ||
458 | DRM_MODE_ENCODER_DAC) | ||
459 | pll_flags |= RADEON_PLL_NO_ODD_POST_DIV; | ||
460 | if (encoder->encoder_type == | ||
461 | DRM_MODE_ENCODER_LVDS) | ||
462 | pll_flags |= RADEON_PLL_USE_REF_DIV; | ||
463 | } | ||
464 | radeon_encoder = to_radeon_encoder(encoder); | 450 | radeon_encoder = to_radeon_encoder(encoder); |
451 | if (ASIC_IS_AVIVO(rdev)) { | ||
452 | /* DVO wants 2x pixel clock if the DVO chip is in 12 bit mode */ | ||
453 | if (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1) | ||
454 | adjusted_clock = mode->clock * 2; | ||
455 | } else { | ||
456 | if (encoder->encoder_type != DRM_MODE_ENCODER_DAC) | ||
457 | pll->flags |= RADEON_PLL_NO_ODD_POST_DIV; | ||
458 | if (encoder->encoder_type == DRM_MODE_ENCODER_LVDS) | ||
459 | pll->flags |= RADEON_PLL_USE_REF_DIV; | ||
460 | } | ||
465 | break; | 461 | break; |
466 | } | 462 | } |
467 | } | 463 | } |
@@ -471,46 +467,101 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
471 | * special hw requirements. | 467 | * special hw requirements. |
472 | */ | 468 | */ |
473 | if (ASIC_IS_DCE3(rdev)) { | 469 | if (ASIC_IS_DCE3(rdev)) { |
474 | ADJUST_DISPLAY_PLL_PS_ALLOCATION adjust_pll_args; | 470 | union adjust_pixel_clock args; |
471 | struct radeon_encoder_atom_dig *dig; | ||
472 | u8 frev, crev; | ||
473 | int index; | ||
475 | 474 | ||
476 | if (!encoder) | 475 | if (!radeon_encoder->enc_priv) |
477 | return; | 476 | return adjusted_clock; |
478 | 477 | dig = radeon_encoder->enc_priv; | |
479 | memset(&adjust_pll_args, 0, sizeof(adjust_pll_args)); | ||
480 | adjust_pll_args.usPixelClock = cpu_to_le16(mode->clock / 10); | ||
481 | adjust_pll_args.ucTransmitterID = radeon_encoder->encoder_id; | ||
482 | adjust_pll_args.ucEncodeMode = atombios_get_encoder_mode(encoder); | ||
483 | 478 | ||
484 | index = GetIndexIntoMasterTable(COMMAND, AdjustDisplayPll); | 479 | index = GetIndexIntoMasterTable(COMMAND, AdjustDisplayPll); |
485 | atom_execute_table(rdev->mode_info.atom_context, | 480 | atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, |
486 | index, (uint32_t *)&adjust_pll_args); | 481 | &crev); |
487 | adjusted_clock = le16_to_cpu(adjust_pll_args.usPixelClock) * 10; | 482 | |
488 | } else { | 483 | memset(&args, 0, sizeof(args)); |
489 | /* DVO wants 2x pixel clock if the DVO chip is in 12 bit mode */ | 484 | |
490 | if (ASIC_IS_AVIVO(rdev) && | 485 | switch (frev) { |
491 | (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1)) | 486 | case 1: |
492 | adjusted_clock = mode->clock * 2; | 487 | switch (crev) { |
493 | else | 488 | case 1: |
494 | adjusted_clock = mode->clock; | 489 | case 2: |
490 | args.v1.usPixelClock = cpu_to_le16(mode->clock / 10); | ||
491 | args.v1.ucTransmitterID = radeon_encoder->encoder_id; | ||
492 | args.v1.ucEncodeMode = atombios_get_encoder_mode(encoder); | ||
493 | |||
494 | atom_execute_table(rdev->mode_info.atom_context, | ||
495 | index, (uint32_t *)&args); | ||
496 | adjusted_clock = le16_to_cpu(args.v1.usPixelClock) * 10; | ||
497 | break; | ||
498 | default: | ||
499 | DRM_ERROR("Unknown table version %d %d\n", frev, crev); | ||
500 | return adjusted_clock; | ||
501 | } | ||
502 | break; | ||
503 | default: | ||
504 | DRM_ERROR("Unknown table version %d %d\n", frev, crev); | ||
505 | return adjusted_clock; | ||
506 | } | ||
495 | } | 507 | } |
508 | return adjusted_clock; | ||
509 | } | ||
510 | |||
511 | union set_pixel_clock { | ||
512 | SET_PIXEL_CLOCK_PS_ALLOCATION base; | ||
513 | PIXEL_CLOCK_PARAMETERS v1; | ||
514 | PIXEL_CLOCK_PARAMETERS_V2 v2; | ||
515 | PIXEL_CLOCK_PARAMETERS_V3 v3; | ||
516 | }; | ||
517 | |||
518 | void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | ||
519 | { | ||
520 | struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); | ||
521 | struct drm_device *dev = crtc->dev; | ||
522 | struct radeon_device *rdev = dev->dev_private; | ||
523 | struct drm_encoder *encoder = NULL; | ||
524 | struct radeon_encoder *radeon_encoder = NULL; | ||
525 | u8 frev, crev; | ||
526 | int index; | ||
527 | union set_pixel_clock args; | ||
528 | u32 pll_clock = mode->clock; | ||
529 | u32 ref_div = 0, fb_div = 0, frac_fb_div = 0, post_div = 0; | ||
530 | struct radeon_pll *pll; | ||
531 | u32 adjusted_clock; | ||
532 | |||
533 | memset(&args, 0, sizeof(args)); | ||
534 | |||
535 | list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { | ||
536 | if (encoder->crtc == crtc) { | ||
537 | radeon_encoder = to_radeon_encoder(encoder); | ||
538 | break; | ||
539 | } | ||
540 | } | ||
541 | |||
542 | if (!radeon_encoder) | ||
543 | return; | ||
496 | 544 | ||
497 | if (radeon_crtc->crtc_id == 0) | 545 | if (radeon_crtc->crtc_id == 0) |
498 | pll = &rdev->clock.p1pll; | 546 | pll = &rdev->clock.p1pll; |
499 | else | 547 | else |
500 | pll = &rdev->clock.p2pll; | 548 | pll = &rdev->clock.p2pll; |
501 | 549 | ||
550 | /* adjust pixel clock as needed */ | ||
551 | adjusted_clock = atombios_adjust_pll(crtc, mode, pll); | ||
552 | |||
502 | if (ASIC_IS_AVIVO(rdev)) { | 553 | if (ASIC_IS_AVIVO(rdev)) { |
503 | if (radeon_new_pll) | 554 | if (radeon_new_pll) |
504 | radeon_compute_pll_avivo(pll, adjusted_clock, &pll_clock, | 555 | radeon_compute_pll_avivo(pll, adjusted_clock, &pll_clock, |
505 | &fb_div, &frac_fb_div, | 556 | &fb_div, &frac_fb_div, |
506 | &ref_div, &post_div, pll_flags); | 557 | &ref_div, &post_div); |
507 | else | 558 | else |
508 | radeon_compute_pll(pll, adjusted_clock, &pll_clock, | 559 | radeon_compute_pll(pll, adjusted_clock, &pll_clock, |
509 | &fb_div, &frac_fb_div, | 560 | &fb_div, &frac_fb_div, |
510 | &ref_div, &post_div, pll_flags); | 561 | &ref_div, &post_div); |
511 | } else | 562 | } else |
512 | radeon_compute_pll(pll, adjusted_clock, &pll_clock, &fb_div, &frac_fb_div, | 563 | radeon_compute_pll(pll, adjusted_clock, &pll_clock, &fb_div, &frac_fb_div, |
513 | &ref_div, &post_div, pll_flags); | 564 | &ref_div, &post_div); |
514 | 565 | ||
515 | index = GetIndexIntoMasterTable(COMMAND, SetPixelClock); | 566 | index = GetIndexIntoMasterTable(COMMAND, SetPixelClock); |
516 | atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, | 567 | atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, |
@@ -520,45 +571,38 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
520 | case 1: | 571 | case 1: |
521 | switch (crev) { | 572 | switch (crev) { |
522 | case 1: | 573 | case 1: |
523 | spc1_ptr = (PIXEL_CLOCK_PARAMETERS *) & args.sPCLKInput; | 574 | args.v1.usPixelClock = cpu_to_le16(mode->clock / 10); |
524 | spc1_ptr->usPixelClock = cpu_to_le16(mode->clock / 10); | 575 | args.v1.usRefDiv = cpu_to_le16(ref_div); |
525 | spc1_ptr->usRefDiv = cpu_to_le16(ref_div); | 576 | args.v1.usFbDiv = cpu_to_le16(fb_div); |
526 | spc1_ptr->usFbDiv = cpu_to_le16(fb_div); | 577 | args.v1.ucFracFbDiv = frac_fb_div; |
527 | spc1_ptr->ucFracFbDiv = frac_fb_div; | 578 | args.v1.ucPostDiv = post_div; |
528 | spc1_ptr->ucPostDiv = post_div; | 579 | args.v1.ucPpll = |
529 | spc1_ptr->ucPpll = | ||
530 | radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1; | 580 | radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1; |
531 | spc1_ptr->ucCRTC = radeon_crtc->crtc_id; | 581 | args.v1.ucCRTC = radeon_crtc->crtc_id; |
532 | spc1_ptr->ucRefDivSrc = 1; | 582 | args.v1.ucRefDivSrc = 1; |
533 | break; | 583 | break; |
534 | case 2: | 584 | case 2: |
535 | spc2_ptr = | 585 | args.v2.usPixelClock = cpu_to_le16(mode->clock / 10); |
536 | (PIXEL_CLOCK_PARAMETERS_V2 *) & args.sPCLKInput; | 586 | args.v2.usRefDiv = cpu_to_le16(ref_div); |
537 | spc2_ptr->usPixelClock = cpu_to_le16(mode->clock / 10); | 587 | args.v2.usFbDiv = cpu_to_le16(fb_div); |
538 | spc2_ptr->usRefDiv = cpu_to_le16(ref_div); | 588 | args.v2.ucFracFbDiv = frac_fb_div; |
539 | spc2_ptr->usFbDiv = cpu_to_le16(fb_div); | 589 | args.v2.ucPostDiv = post_div; |
540 | spc2_ptr->ucFracFbDiv = frac_fb_div; | 590 | args.v2.ucPpll = |
541 | spc2_ptr->ucPostDiv = post_div; | ||
542 | spc2_ptr->ucPpll = | ||
543 | radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1; | 591 | radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1; |
544 | spc2_ptr->ucCRTC = radeon_crtc->crtc_id; | 592 | args.v2.ucCRTC = radeon_crtc->crtc_id; |
545 | spc2_ptr->ucRefDivSrc = 1; | 593 | args.v2.ucRefDivSrc = 1; |
546 | break; | 594 | break; |
547 | case 3: | 595 | case 3: |
548 | if (!encoder) | 596 | args.v3.usPixelClock = cpu_to_le16(mode->clock / 10); |
549 | return; | 597 | args.v3.usRefDiv = cpu_to_le16(ref_div); |
550 | spc3_ptr = | 598 | args.v3.usFbDiv = cpu_to_le16(fb_div); |
551 | (PIXEL_CLOCK_PARAMETERS_V3 *) & args.sPCLKInput; | 599 | args.v3.ucFracFbDiv = frac_fb_div; |
552 | spc3_ptr->usPixelClock = cpu_to_le16(mode->clock / 10); | 600 | args.v3.ucPostDiv = post_div; |
553 | spc3_ptr->usRefDiv = cpu_to_le16(ref_div); | 601 | args.v3.ucPpll = |
554 | spc3_ptr->usFbDiv = cpu_to_le16(fb_div); | ||
555 | spc3_ptr->ucFracFbDiv = frac_fb_div; | ||
556 | spc3_ptr->ucPostDiv = post_div; | ||
557 | spc3_ptr->ucPpll = | ||
558 | radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1; | 602 | radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1; |
559 | spc3_ptr->ucMiscInfo = (radeon_crtc->crtc_id << 2); | 603 | args.v3.ucMiscInfo = (radeon_crtc->crtc_id << 2); |
560 | spc3_ptr->ucTransmitterId = radeon_encoder->encoder_id; | 604 | args.v3.ucTransmitterId = radeon_encoder->encoder_id; |
561 | spc3_ptr->ucEncoderMode = | 605 | args.v3.ucEncoderMode = |
562 | atombios_get_encoder_mode(encoder); | 606 | atombios_get_encoder_mode(encoder); |
563 | break; | 607 | break; |
564 | default: | 608 | default: |
@@ -571,12 +615,11 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
571 | return; | 615 | return; |
572 | } | 616 | } |
573 | 617 | ||
574 | printk("executing set pll\n"); | ||
575 | atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); | 618 | atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); |
576 | } | 619 | } |
577 | 620 | ||
578 | int atombios_crtc_set_base(struct drm_crtc *crtc, int x, int y, | 621 | static int avivo_crtc_set_base(struct drm_crtc *crtc, int x, int y, |
579 | struct drm_framebuffer *old_fb) | 622 | struct drm_framebuffer *old_fb) |
580 | { | 623 | { |
581 | struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); | 624 | struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); |
582 | struct drm_device *dev = crtc->dev; | 625 | struct drm_device *dev = crtc->dev; |
@@ -706,6 +749,42 @@ int atombios_crtc_set_base(struct drm_crtc *crtc, int x, int y, | |||
706 | return 0; | 749 | return 0; |
707 | } | 750 | } |
708 | 751 | ||
752 | int atombios_crtc_set_base(struct drm_crtc *crtc, int x, int y, | ||
753 | struct drm_framebuffer *old_fb) | ||
754 | { | ||
755 | struct drm_device *dev = crtc->dev; | ||
756 | struct radeon_device *rdev = dev->dev_private; | ||
757 | |||
758 | if (ASIC_IS_AVIVO(rdev)) | ||
759 | return avivo_crtc_set_base(crtc, x, y, old_fb); | ||
760 | else | ||
761 | return radeon_crtc_set_base(crtc, x, y, old_fb); | ||
762 | } | ||
763 | |||
764 | /* properly set additional regs when using atombios */ | ||
765 | static void radeon_legacy_atom_fixup(struct drm_crtc *crtc) | ||
766 | { | ||
767 | struct drm_device *dev = crtc->dev; | ||
768 | struct radeon_device *rdev = dev->dev_private; | ||
769 | struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); | ||
770 | u32 disp_merge_cntl; | ||
771 | |||
772 | switch (radeon_crtc->crtc_id) { | ||
773 | case 0: | ||
774 | disp_merge_cntl = RREG32(RADEON_DISP_MERGE_CNTL); | ||
775 | disp_merge_cntl &= ~RADEON_DISP_RGB_OFFSET_EN; | ||
776 | WREG32(RADEON_DISP_MERGE_CNTL, disp_merge_cntl); | ||
777 | break; | ||
778 | case 1: | ||
779 | disp_merge_cntl = RREG32(RADEON_DISP2_MERGE_CNTL); | ||
780 | disp_merge_cntl &= ~RADEON_DISP2_RGB_OFFSET_EN; | ||
781 | WREG32(RADEON_DISP2_MERGE_CNTL, disp_merge_cntl); | ||
782 | WREG32(RADEON_FP_H2_SYNC_STRT_WID, RREG32(RADEON_CRTC2_H_SYNC_STRT_WID)); | ||
783 | WREG32(RADEON_FP_V2_SYNC_STRT_WID, RREG32(RADEON_CRTC2_V_SYNC_STRT_WID)); | ||
784 | break; | ||
785 | } | ||
786 | } | ||
787 | |||
709 | int atombios_crtc_mode_set(struct drm_crtc *crtc, | 788 | int atombios_crtc_mode_set(struct drm_crtc *crtc, |
710 | struct drm_display_mode *mode, | 789 | struct drm_display_mode *mode, |
711 | struct drm_display_mode *adjusted_mode, | 790 | struct drm_display_mode *adjusted_mode, |
@@ -727,8 +806,8 @@ int atombios_crtc_mode_set(struct drm_crtc *crtc, | |||
727 | else { | 806 | else { |
728 | if (radeon_crtc->crtc_id == 0) | 807 | if (radeon_crtc->crtc_id == 0) |
729 | atombios_set_crtc_dtd_timing(crtc, adjusted_mode); | 808 | atombios_set_crtc_dtd_timing(crtc, adjusted_mode); |
730 | radeon_crtc_set_base(crtc, x, y, old_fb); | 809 | atombios_crtc_set_base(crtc, x, y, old_fb); |
731 | radeon_legacy_atom_set_surface(crtc); | 810 | radeon_legacy_atom_fixup(crtc); |
732 | } | 811 | } |
733 | atombios_overscan_setup(crtc, mode, adjusted_mode); | 812 | atombios_overscan_setup(crtc, mode, adjusted_mode); |
734 | atombios_scaler_setup(crtc); | 813 | atombios_scaler_setup(crtc); |
@@ -746,8 +825,8 @@ static bool atombios_crtc_mode_fixup(struct drm_crtc *crtc, | |||
746 | 825 | ||
747 | static void atombios_crtc_prepare(struct drm_crtc *crtc) | 826 | static void atombios_crtc_prepare(struct drm_crtc *crtc) |
748 | { | 827 | { |
749 | atombios_crtc_dpms(crtc, DRM_MODE_DPMS_OFF); | ||
750 | atombios_lock_crtc(crtc, 1); | 828 | atombios_lock_crtc(crtc, 1); |
829 | atombios_crtc_dpms(crtc, DRM_MODE_DPMS_OFF); | ||
751 | } | 830 | } |
752 | 831 | ||
753 | static void atombios_crtc_commit(struct drm_crtc *crtc) | 832 | static void atombios_crtc_commit(struct drm_crtc *crtc) |
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c index 8760d66e058a..11c9a3fe6810 100644 --- a/drivers/gpu/drm/radeon/r100.c +++ b/drivers/gpu/drm/radeon/r100.c | |||
@@ -1504,6 +1504,7 @@ static int r100_packet3_check(struct radeon_cs_parser *p, | |||
1504 | DRM_ERROR("PRIM_WALK must be 3 for IMMD draw\n"); | 1504 | DRM_ERROR("PRIM_WALK must be 3 for IMMD draw\n"); |
1505 | return -EINVAL; | 1505 | return -EINVAL; |
1506 | } | 1506 | } |
1507 | track->vtx_size = r100_get_vtx_size(radeon_get_ib_value(p, idx + 0)); | ||
1507 | track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1); | 1508 | track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1); |
1508 | track->immd_dwords = pkt->count - 1; | 1509 | track->immd_dwords = pkt->count - 1; |
1509 | r = r100_cs_track_check(p->rdev, track); | 1510 | r = r100_cs_track_check(p->rdev, track); |
@@ -3399,9 +3400,7 @@ int r100_mc_init(struct radeon_device *rdev) | |||
3399 | if (rdev->flags & RADEON_IS_AGP) { | 3400 | if (rdev->flags & RADEON_IS_AGP) { |
3400 | r = radeon_agp_init(rdev); | 3401 | r = radeon_agp_init(rdev); |
3401 | if (r) { | 3402 | if (r) { |
3402 | printk(KERN_WARNING "[drm] Disabling AGP\n"); | 3403 | radeon_agp_disable(rdev); |
3403 | rdev->flags &= ~RADEON_IS_AGP; | ||
3404 | rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024; | ||
3405 | } else { | 3404 | } else { |
3406 | rdev->mc.gtt_location = rdev->mc.agp_base; | 3405 | rdev->mc.gtt_location = rdev->mc.agp_base; |
3407 | } | 3406 | } |
diff --git a/drivers/gpu/drm/radeon/r200.c b/drivers/gpu/drm/radeon/r200.c index 20942127c46b..ff1e0cd608bf 100644 --- a/drivers/gpu/drm/radeon/r200.c +++ b/drivers/gpu/drm/radeon/r200.c | |||
@@ -371,13 +371,16 @@ int r200_packet0_check(struct radeon_cs_parser *p, | |||
371 | case 5: | 371 | case 5: |
372 | case 6: | 372 | case 6: |
373 | case 7: | 373 | case 7: |
374 | /* 1D/2D */ | ||
374 | track->textures[i].tex_coord_type = 0; | 375 | track->textures[i].tex_coord_type = 0; |
375 | break; | 376 | break; |
376 | case 1: | 377 | case 1: |
377 | track->textures[i].tex_coord_type = 1; | 378 | /* CUBE */ |
379 | track->textures[i].tex_coord_type = 2; | ||
378 | break; | 380 | break; |
379 | case 2: | 381 | case 2: |
380 | track->textures[i].tex_coord_type = 2; | 382 | /* 3D */ |
383 | track->textures[i].tex_coord_type = 1; | ||
381 | break; | 384 | break; |
382 | } | 385 | } |
383 | break; | 386 | break; |
diff --git a/drivers/gpu/drm/radeon/r420.c b/drivers/gpu/drm/radeon/r420.c index 053404e71a9d..4526faaacca8 100644 --- a/drivers/gpu/drm/radeon/r420.c +++ b/drivers/gpu/drm/radeon/r420.c | |||
@@ -50,9 +50,7 @@ int r420_mc_init(struct radeon_device *rdev) | |||
50 | if (rdev->flags & RADEON_IS_AGP) { | 50 | if (rdev->flags & RADEON_IS_AGP) { |
51 | r = radeon_agp_init(rdev); | 51 | r = radeon_agp_init(rdev); |
52 | if (r) { | 52 | if (r) { |
53 | printk(KERN_WARNING "[drm] Disabling AGP\n"); | 53 | radeon_agp_disable(rdev); |
54 | rdev->flags &= ~RADEON_IS_AGP; | ||
55 | rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024; | ||
56 | } else { | 54 | } else { |
57 | rdev->mc.gtt_location = rdev->mc.agp_base; | 55 | rdev->mc.gtt_location = rdev->mc.agp_base; |
58 | } | 56 | } |
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index c0651991c3e4..da9aa3c31bcf 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c | |||
@@ -624,7 +624,6 @@ int r600_mc_init(struct radeon_device *rdev) | |||
624 | fixed20_12 a; | 624 | fixed20_12 a; |
625 | u32 tmp; | 625 | u32 tmp; |
626 | int chansize, numchan; | 626 | int chansize, numchan; |
627 | int r; | ||
628 | 627 | ||
629 | /* Get VRAM informations */ | 628 | /* Get VRAM informations */ |
630 | rdev->mc.vram_is_ddr = true; | 629 | rdev->mc.vram_is_ddr = true; |
@@ -667,9 +666,6 @@ int r600_mc_init(struct radeon_device *rdev) | |||
667 | rdev->mc.real_vram_size = rdev->mc.aper_size; | 666 | rdev->mc.real_vram_size = rdev->mc.aper_size; |
668 | 667 | ||
669 | if (rdev->flags & RADEON_IS_AGP) { | 668 | if (rdev->flags & RADEON_IS_AGP) { |
670 | r = radeon_agp_init(rdev); | ||
671 | if (r) | ||
672 | return r; | ||
673 | /* gtt_size is setup by radeon_agp_init */ | 669 | /* gtt_size is setup by radeon_agp_init */ |
674 | rdev->mc.gtt_location = rdev->mc.agp_base; | 670 | rdev->mc.gtt_location = rdev->mc.agp_base; |
675 | tmp = 0xFFFFFFFFUL - rdev->mc.agp_base - rdev->mc.gtt_size; | 671 | tmp = 0xFFFFFFFFUL - rdev->mc.agp_base - rdev->mc.gtt_size; |
@@ -1958,14 +1954,17 @@ int r600_suspend(struct radeon_device *rdev) | |||
1958 | /* FIXME: we should wait for ring to be empty */ | 1954 | /* FIXME: we should wait for ring to be empty */ |
1959 | r600_cp_stop(rdev); | 1955 | r600_cp_stop(rdev); |
1960 | rdev->cp.ready = false; | 1956 | rdev->cp.ready = false; |
1957 | r600_irq_suspend(rdev); | ||
1961 | r600_wb_disable(rdev); | 1958 | r600_wb_disable(rdev); |
1962 | r600_pcie_gart_disable(rdev); | 1959 | r600_pcie_gart_disable(rdev); |
1963 | /* unpin shaders bo */ | 1960 | /* unpin shaders bo */ |
1964 | r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); | 1961 | if (rdev->r600_blit.shader_obj) { |
1965 | if (unlikely(r != 0)) | 1962 | r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); |
1966 | return r; | 1963 | if (!r) { |
1967 | radeon_bo_unpin(rdev->r600_blit.shader_obj); | 1964 | radeon_bo_unpin(rdev->r600_blit.shader_obj); |
1968 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); | 1965 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); |
1966 | } | ||
1967 | } | ||
1969 | return 0; | 1968 | return 0; |
1970 | } | 1969 | } |
1971 | 1970 | ||
@@ -2026,6 +2025,11 @@ int r600_init(struct radeon_device *rdev) | |||
2026 | r = radeon_fence_driver_init(rdev); | 2025 | r = radeon_fence_driver_init(rdev); |
2027 | if (r) | 2026 | if (r) |
2028 | return r; | 2027 | return r; |
2028 | if (rdev->flags & RADEON_IS_AGP) { | ||
2029 | r = radeon_agp_init(rdev); | ||
2030 | if (r) | ||
2031 | radeon_agp_disable(rdev); | ||
2032 | } | ||
2029 | r = r600_mc_init(rdev); | 2033 | r = r600_mc_init(rdev); |
2030 | if (r) | 2034 | if (r) |
2031 | return r; | 2035 | return r; |
@@ -2060,13 +2064,14 @@ int r600_init(struct radeon_device *rdev) | |||
2060 | if (rdev->accel_working) { | 2064 | if (rdev->accel_working) { |
2061 | r = radeon_ib_pool_init(rdev); | 2065 | r = radeon_ib_pool_init(rdev); |
2062 | if (r) { | 2066 | if (r) { |
2063 | DRM_ERROR("radeon: failed initializing IB pool (%d).\n", r); | 2067 | dev_err(rdev->dev, "IB initialization failed (%d).\n", r); |
2064 | rdev->accel_working = false; | ||
2065 | } | ||
2066 | r = r600_ib_test(rdev); | ||
2067 | if (r) { | ||
2068 | DRM_ERROR("radeon: failed testing IB (%d).\n", r); | ||
2069 | rdev->accel_working = false; | 2068 | rdev->accel_working = false; |
2069 | } else { | ||
2070 | r = r600_ib_test(rdev); | ||
2071 | if (r) { | ||
2072 | dev_err(rdev->dev, "IB test failed (%d).\n", r); | ||
2073 | rdev->accel_working = false; | ||
2074 | } | ||
2070 | } | 2075 | } |
2071 | } | 2076 | } |
2072 | 2077 | ||
@@ -2197,14 +2202,14 @@ void r600_ih_ring_init(struct radeon_device *rdev, unsigned ring_size) | |||
2197 | rb_bufsz = drm_order(ring_size / 4); | 2202 | rb_bufsz = drm_order(ring_size / 4); |
2198 | ring_size = (1 << rb_bufsz) * 4; | 2203 | ring_size = (1 << rb_bufsz) * 4; |
2199 | rdev->ih.ring_size = ring_size; | 2204 | rdev->ih.ring_size = ring_size; |
2200 | rdev->ih.align_mask = 4 - 1; | 2205 | rdev->ih.ptr_mask = rdev->ih.ring_size - 1; |
2206 | rdev->ih.rptr = 0; | ||
2201 | } | 2207 | } |
2202 | 2208 | ||
2203 | static int r600_ih_ring_alloc(struct radeon_device *rdev, unsigned ring_size) | 2209 | static int r600_ih_ring_alloc(struct radeon_device *rdev) |
2204 | { | 2210 | { |
2205 | int r; | 2211 | int r; |
2206 | 2212 | ||
2207 | rdev->ih.ring_size = ring_size; | ||
2208 | /* Allocate ring buffer */ | 2213 | /* Allocate ring buffer */ |
2209 | if (rdev->ih.ring_obj == NULL) { | 2214 | if (rdev->ih.ring_obj == NULL) { |
2210 | r = radeon_bo_create(rdev, NULL, rdev->ih.ring_size, | 2215 | r = radeon_bo_create(rdev, NULL, rdev->ih.ring_size, |
@@ -2234,9 +2239,6 @@ static int r600_ih_ring_alloc(struct radeon_device *rdev, unsigned ring_size) | |||
2234 | return r; | 2239 | return r; |
2235 | } | 2240 | } |
2236 | } | 2241 | } |
2237 | rdev->ih.ptr_mask = (rdev->cp.ring_size / 4) - 1; | ||
2238 | rdev->ih.rptr = 0; | ||
2239 | |||
2240 | return 0; | 2242 | return 0; |
2241 | } | 2243 | } |
2242 | 2244 | ||
@@ -2386,7 +2388,7 @@ int r600_irq_init(struct radeon_device *rdev) | |||
2386 | u32 interrupt_cntl, ih_cntl, ih_rb_cntl; | 2388 | u32 interrupt_cntl, ih_cntl, ih_rb_cntl; |
2387 | 2389 | ||
2388 | /* allocate ring */ | 2390 | /* allocate ring */ |
2389 | ret = r600_ih_ring_alloc(rdev, rdev->ih.ring_size); | 2391 | ret = r600_ih_ring_alloc(rdev); |
2390 | if (ret) | 2392 | if (ret) |
2391 | return ret; | 2393 | return ret; |
2392 | 2394 | ||
@@ -2449,10 +2451,15 @@ int r600_irq_init(struct radeon_device *rdev) | |||
2449 | return ret; | 2451 | return ret; |
2450 | } | 2452 | } |
2451 | 2453 | ||
2452 | void r600_irq_fini(struct radeon_device *rdev) | 2454 | void r600_irq_suspend(struct radeon_device *rdev) |
2453 | { | 2455 | { |
2454 | r600_disable_interrupts(rdev); | 2456 | r600_disable_interrupts(rdev); |
2455 | r600_rlc_stop(rdev); | 2457 | r600_rlc_stop(rdev); |
2458 | } | ||
2459 | |||
2460 | void r600_irq_fini(struct radeon_device *rdev) | ||
2461 | { | ||
2462 | r600_irq_suspend(rdev); | ||
2456 | r600_ih_ring_fini(rdev); | 2463 | r600_ih_ring_fini(rdev); |
2457 | } | 2464 | } |
2458 | 2465 | ||
@@ -2467,8 +2474,12 @@ int r600_irq_set(struct radeon_device *rdev) | |||
2467 | return -EINVAL; | 2474 | return -EINVAL; |
2468 | } | 2475 | } |
2469 | /* don't enable anything if the ih is disabled */ | 2476 | /* don't enable anything if the ih is disabled */ |
2470 | if (!rdev->ih.enabled) | 2477 | if (!rdev->ih.enabled) { |
2478 | r600_disable_interrupts(rdev); | ||
2479 | /* force the active interrupt state to all disabled */ | ||
2480 | r600_disable_interrupt_state(rdev); | ||
2471 | return 0; | 2481 | return 0; |
2482 | } | ||
2472 | 2483 | ||
2473 | if (ASIC_IS_DCE3(rdev)) { | 2484 | if (ASIC_IS_DCE3(rdev)) { |
2474 | hpd1 = RREG32(DC_HPD1_INT_CONTROL) & ~DC_HPDx_INT_EN; | 2485 | hpd1 = RREG32(DC_HPD1_INT_CONTROL) & ~DC_HPDx_INT_EN; |
@@ -2638,16 +2649,18 @@ static inline u32 r600_get_ih_wptr(struct radeon_device *rdev) | |||
2638 | wptr = RREG32(IH_RB_WPTR); | 2649 | wptr = RREG32(IH_RB_WPTR); |
2639 | 2650 | ||
2640 | if (wptr & RB_OVERFLOW) { | 2651 | if (wptr & RB_OVERFLOW) { |
2641 | WARN_ON(1); | 2652 | /* When a ring buffer overflow happen start parsing interrupt |
2642 | /* XXX deal with overflow */ | 2653 | * from the last not overwritten vector (wptr + 16). Hopefully |
2643 | DRM_ERROR("IH RB overflow\n"); | 2654 | * this should allow us to catchup. |
2655 | */ | ||
2656 | dev_warn(rdev->dev, "IH ring buffer overflow (0x%08X, %d, %d)\n", | ||
2657 | wptr, rdev->ih.rptr, (wptr + 16) + rdev->ih.ptr_mask); | ||
2658 | rdev->ih.rptr = (wptr + 16) & rdev->ih.ptr_mask; | ||
2644 | tmp = RREG32(IH_RB_CNTL); | 2659 | tmp = RREG32(IH_RB_CNTL); |
2645 | tmp |= IH_WPTR_OVERFLOW_CLEAR; | 2660 | tmp |= IH_WPTR_OVERFLOW_CLEAR; |
2646 | WREG32(IH_RB_CNTL, tmp); | 2661 | WREG32(IH_RB_CNTL, tmp); |
2647 | } | 2662 | } |
2648 | wptr = wptr & WPTR_OFFSET_MASK; | 2663 | return (wptr & rdev->ih.ptr_mask); |
2649 | |||
2650 | return wptr; | ||
2651 | } | 2664 | } |
2652 | 2665 | ||
2653 | /* r600 IV Ring | 2666 | /* r600 IV Ring |
@@ -2683,12 +2696,13 @@ int r600_irq_process(struct radeon_device *rdev) | |||
2683 | u32 wptr = r600_get_ih_wptr(rdev); | 2696 | u32 wptr = r600_get_ih_wptr(rdev); |
2684 | u32 rptr = rdev->ih.rptr; | 2697 | u32 rptr = rdev->ih.rptr; |
2685 | u32 src_id, src_data; | 2698 | u32 src_id, src_data; |
2686 | u32 last_entry = rdev->ih.ring_size - 16; | ||
2687 | u32 ring_index, disp_int, disp_int_cont, disp_int_cont2; | 2699 | u32 ring_index, disp_int, disp_int_cont, disp_int_cont2; |
2688 | unsigned long flags; | 2700 | unsigned long flags; |
2689 | bool queue_hotplug = false; | 2701 | bool queue_hotplug = false; |
2690 | 2702 | ||
2691 | DRM_DEBUG("r600_irq_process start: rptr %d, wptr %d\n", rptr, wptr); | 2703 | DRM_DEBUG("r600_irq_process start: rptr %d, wptr %d\n", rptr, wptr); |
2704 | if (!rdev->ih.enabled) | ||
2705 | return IRQ_NONE; | ||
2692 | 2706 | ||
2693 | spin_lock_irqsave(&rdev->ih.lock, flags); | 2707 | spin_lock_irqsave(&rdev->ih.lock, flags); |
2694 | 2708 | ||
@@ -2729,7 +2743,7 @@ restart_ih: | |||
2729 | } | 2743 | } |
2730 | break; | 2744 | break; |
2731 | default: | 2745 | default: |
2732 | DRM_ERROR("Unhandled interrupt: %d %d\n", src_id, src_data); | 2746 | DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data); |
2733 | break; | 2747 | break; |
2734 | } | 2748 | } |
2735 | break; | 2749 | break; |
@@ -2749,7 +2763,7 @@ restart_ih: | |||
2749 | } | 2763 | } |
2750 | break; | 2764 | break; |
2751 | default: | 2765 | default: |
2752 | DRM_ERROR("Unhandled interrupt: %d %d\n", src_id, src_data); | 2766 | DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data); |
2753 | break; | 2767 | break; |
2754 | } | 2768 | } |
2755 | break; | 2769 | break; |
@@ -2798,7 +2812,7 @@ restart_ih: | |||
2798 | } | 2812 | } |
2799 | break; | 2813 | break; |
2800 | default: | 2814 | default: |
2801 | DRM_ERROR("Unhandled interrupt: %d %d\n", src_id, src_data); | 2815 | DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data); |
2802 | break; | 2816 | break; |
2803 | } | 2817 | } |
2804 | break; | 2818 | break; |
@@ -2812,15 +2826,13 @@ restart_ih: | |||
2812 | DRM_DEBUG("IH: CP EOP\n"); | 2826 | DRM_DEBUG("IH: CP EOP\n"); |
2813 | break; | 2827 | break; |
2814 | default: | 2828 | default: |
2815 | DRM_ERROR("Unhandled interrupt: %d %d\n", src_id, src_data); | 2829 | DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data); |
2816 | break; | 2830 | break; |
2817 | } | 2831 | } |
2818 | 2832 | ||
2819 | /* wptr/rptr are in bytes! */ | 2833 | /* wptr/rptr are in bytes! */ |
2820 | if (rptr == last_entry) | 2834 | rptr += 16; |
2821 | rptr = 0; | 2835 | rptr &= rdev->ih.ptr_mask; |
2822 | else | ||
2823 | rptr += 16; | ||
2824 | } | 2836 | } |
2825 | /* make sure wptr hasn't changed while processing */ | 2837 | /* make sure wptr hasn't changed while processing */ |
2826 | wptr = r600_get_ih_wptr(rdev); | 2838 | wptr = r600_get_ih_wptr(rdev); |
diff --git a/drivers/gpu/drm/radeon/r600_blit_kms.c b/drivers/gpu/drm/radeon/r600_blit_kms.c index 8787ea89dc6e..2bedce477a97 100644 --- a/drivers/gpu/drm/radeon/r600_blit_kms.c +++ b/drivers/gpu/drm/radeon/r600_blit_kms.c | |||
@@ -512,14 +512,16 @@ void r600_blit_fini(struct radeon_device *rdev) | |||
512 | { | 512 | { |
513 | int r; | 513 | int r; |
514 | 514 | ||
515 | if (rdev->r600_blit.shader_obj == NULL) | ||
516 | return; | ||
517 | /* If we can't reserve the bo, unref should be enough to destroy | ||
518 | * it when it becomes idle. | ||
519 | */ | ||
515 | r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); | 520 | r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); |
516 | if (unlikely(r != 0)) { | 521 | if (!r) { |
517 | dev_err(rdev->dev, "(%d) can't finish r600 blit\n", r); | 522 | radeon_bo_unpin(rdev->r600_blit.shader_obj); |
518 | goto out_unref; | 523 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); |
519 | } | 524 | } |
520 | radeon_bo_unpin(rdev->r600_blit.shader_obj); | ||
521 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); | ||
522 | out_unref: | ||
523 | radeon_bo_unref(&rdev->r600_blit.shader_obj); | 525 | radeon_bo_unref(&rdev->r600_blit.shader_obj); |
524 | } | 526 | } |
525 | 527 | ||
diff --git a/drivers/gpu/drm/radeon/r600_cs.c b/drivers/gpu/drm/radeon/r600_cs.c index 44060b92d9e6..e4c45ec16507 100644 --- a/drivers/gpu/drm/radeon/r600_cs.c +++ b/drivers/gpu/drm/radeon/r600_cs.c | |||
@@ -36,6 +36,10 @@ static int r600_cs_packet_next_reloc_nomm(struct radeon_cs_parser *p, | |||
36 | typedef int (*next_reloc_t)(struct radeon_cs_parser*, struct radeon_cs_reloc**); | 36 | typedef int (*next_reloc_t)(struct radeon_cs_parser*, struct radeon_cs_reloc**); |
37 | static next_reloc_t r600_cs_packet_next_reloc = &r600_cs_packet_next_reloc_mm; | 37 | static next_reloc_t r600_cs_packet_next_reloc = &r600_cs_packet_next_reloc_mm; |
38 | 38 | ||
39 | struct r600_cs_track { | ||
40 | u32 cb_color0_base_last; | ||
41 | }; | ||
42 | |||
39 | /** | 43 | /** |
40 | * r600_cs_packet_parse() - parse cp packet and point ib index to next packet | 44 | * r600_cs_packet_parse() - parse cp packet and point ib index to next packet |
41 | * @parser: parser structure holding parsing context. | 45 | * @parser: parser structure holding parsing context. |
@@ -177,6 +181,28 @@ static int r600_cs_packet_next_reloc_nomm(struct radeon_cs_parser *p, | |||
177 | } | 181 | } |
178 | 182 | ||
179 | /** | 183 | /** |
184 | * r600_cs_packet_next_is_pkt3_nop() - test if next packet is packet3 nop for reloc | ||
185 | * @parser: parser structure holding parsing context. | ||
186 | * | ||
187 | * Check next packet is relocation packet3, do bo validation and compute | ||
188 | * GPU offset using the provided start. | ||
189 | **/ | ||
190 | static inline int r600_cs_packet_next_is_pkt3_nop(struct radeon_cs_parser *p) | ||
191 | { | ||
192 | struct radeon_cs_packet p3reloc; | ||
193 | int r; | ||
194 | |||
195 | r = r600_cs_packet_parse(p, &p3reloc, p->idx); | ||
196 | if (r) { | ||
197 | return 0; | ||
198 | } | ||
199 | if (p3reloc.type != PACKET_TYPE3 || p3reloc.opcode != PACKET3_NOP) { | ||
200 | return 0; | ||
201 | } | ||
202 | return 1; | ||
203 | } | ||
204 | |||
205 | /** | ||
180 | * r600_cs_packet_next_vline() - parse userspace VLINE packet | 206 | * r600_cs_packet_next_vline() - parse userspace VLINE packet |
181 | * @parser: parser structure holding parsing context. | 207 | * @parser: parser structure holding parsing context. |
182 | * | 208 | * |
@@ -337,6 +363,7 @@ static int r600_packet3_check(struct radeon_cs_parser *p, | |||
337 | struct radeon_cs_packet *pkt) | 363 | struct radeon_cs_packet *pkt) |
338 | { | 364 | { |
339 | struct radeon_cs_reloc *reloc; | 365 | struct radeon_cs_reloc *reloc; |
366 | struct r600_cs_track *track; | ||
340 | volatile u32 *ib; | 367 | volatile u32 *ib; |
341 | unsigned idx; | 368 | unsigned idx; |
342 | unsigned i; | 369 | unsigned i; |
@@ -344,6 +371,7 @@ static int r600_packet3_check(struct radeon_cs_parser *p, | |||
344 | int r; | 371 | int r; |
345 | u32 idx_value; | 372 | u32 idx_value; |
346 | 373 | ||
374 | track = (struct r600_cs_track *)p->track; | ||
347 | ib = p->ib->ptr; | 375 | ib = p->ib->ptr; |
348 | idx = pkt->idx + 1; | 376 | idx = pkt->idx + 1; |
349 | idx_value = radeon_get_ib_value(p, idx); | 377 | idx_value = radeon_get_ib_value(p, idx); |
@@ -503,9 +531,60 @@ static int r600_packet3_check(struct radeon_cs_parser *p, | |||
503 | for (i = 0; i < pkt->count; i++) { | 531 | for (i = 0; i < pkt->count; i++) { |
504 | reg = start_reg + (4 * i); | 532 | reg = start_reg + (4 * i); |
505 | switch (reg) { | 533 | switch (reg) { |
534 | /* This register were added late, there is userspace | ||
535 | * which does provide relocation for those but set | ||
536 | * 0 offset. In order to avoid breaking old userspace | ||
537 | * we detect this and set address to point to last | ||
538 | * CB_COLOR0_BASE, note that if userspace doesn't set | ||
539 | * CB_COLOR0_BASE before this register we will report | ||
540 | * error. Old userspace always set CB_COLOR0_BASE | ||
541 | * before any of this. | ||
542 | */ | ||
543 | case R_0280E0_CB_COLOR0_FRAG: | ||
544 | case R_0280E4_CB_COLOR1_FRAG: | ||
545 | case R_0280E8_CB_COLOR2_FRAG: | ||
546 | case R_0280EC_CB_COLOR3_FRAG: | ||
547 | case R_0280F0_CB_COLOR4_FRAG: | ||
548 | case R_0280F4_CB_COLOR5_FRAG: | ||
549 | case R_0280F8_CB_COLOR6_FRAG: | ||
550 | case R_0280FC_CB_COLOR7_FRAG: | ||
551 | case R_0280C0_CB_COLOR0_TILE: | ||
552 | case R_0280C4_CB_COLOR1_TILE: | ||
553 | case R_0280C8_CB_COLOR2_TILE: | ||
554 | case R_0280CC_CB_COLOR3_TILE: | ||
555 | case R_0280D0_CB_COLOR4_TILE: | ||
556 | case R_0280D4_CB_COLOR5_TILE: | ||
557 | case R_0280D8_CB_COLOR6_TILE: | ||
558 | case R_0280DC_CB_COLOR7_TILE: | ||
559 | if (!r600_cs_packet_next_is_pkt3_nop(p)) { | ||
560 | if (!track->cb_color0_base_last) { | ||
561 | dev_err(p->dev, "Broken old userspace ? no cb_color0_base supplied before trying to write 0x%08X\n", reg); | ||
562 | return -EINVAL; | ||
563 | } | ||
564 | ib[idx+1+i] = track->cb_color0_base_last; | ||
565 | printk_once(KERN_WARNING "radeon: You have old & broken userspace " | ||
566 | "please consider updating mesa & xf86-video-ati\n"); | ||
567 | } else { | ||
568 | r = r600_cs_packet_next_reloc(p, &reloc); | ||
569 | if (r) { | ||
570 | dev_err(p->dev, "bad SET_CONTEXT_REG 0x%04X\n", reg); | ||
571 | return -EINVAL; | ||
572 | } | ||
573 | ib[idx+1+i] += (u32)((reloc->lobj.gpu_offset >> 8) & 0xffffffff); | ||
574 | } | ||
575 | break; | ||
506 | case DB_DEPTH_BASE: | 576 | case DB_DEPTH_BASE: |
507 | case DB_HTILE_DATA_BASE: | 577 | case DB_HTILE_DATA_BASE: |
508 | case CB_COLOR0_BASE: | 578 | case CB_COLOR0_BASE: |
579 | r = r600_cs_packet_next_reloc(p, &reloc); | ||
580 | if (r) { | ||
581 | DRM_ERROR("bad SET_CONTEXT_REG " | ||
582 | "0x%04X\n", reg); | ||
583 | return -EINVAL; | ||
584 | } | ||
585 | ib[idx+1+i] += (u32)((reloc->lobj.gpu_offset >> 8) & 0xffffffff); | ||
586 | track->cb_color0_base_last = ib[idx+1+i]; | ||
587 | break; | ||
509 | case CB_COLOR1_BASE: | 588 | case CB_COLOR1_BASE: |
510 | case CB_COLOR2_BASE: | 589 | case CB_COLOR2_BASE: |
511 | case CB_COLOR3_BASE: | 590 | case CB_COLOR3_BASE: |
@@ -678,8 +757,11 @@ static int r600_packet3_check(struct radeon_cs_parser *p, | |||
678 | int r600_cs_parse(struct radeon_cs_parser *p) | 757 | int r600_cs_parse(struct radeon_cs_parser *p) |
679 | { | 758 | { |
680 | struct radeon_cs_packet pkt; | 759 | struct radeon_cs_packet pkt; |
760 | struct r600_cs_track *track; | ||
681 | int r; | 761 | int r; |
682 | 762 | ||
763 | track = kzalloc(sizeof(*track), GFP_KERNEL); | ||
764 | p->track = track; | ||
683 | do { | 765 | do { |
684 | r = r600_cs_packet_parse(p, &pkt, p->idx); | 766 | r = r600_cs_packet_parse(p, &pkt, p->idx); |
685 | if (r) { | 767 | if (r) { |
@@ -757,6 +839,7 @@ int r600_cs_legacy(struct drm_device *dev, void *data, struct drm_file *filp, | |||
757 | /* initialize parser */ | 839 | /* initialize parser */ |
758 | memset(&parser, 0, sizeof(struct radeon_cs_parser)); | 840 | memset(&parser, 0, sizeof(struct radeon_cs_parser)); |
759 | parser.filp = filp; | 841 | parser.filp = filp; |
842 | parser.dev = &dev->pdev->dev; | ||
760 | parser.rdev = NULL; | 843 | parser.rdev = NULL; |
761 | parser.family = family; | 844 | parser.family = family; |
762 | parser.ib = &fake_ib; | 845 | parser.ib = &fake_ib; |
diff --git a/drivers/gpu/drm/radeon/r600d.h b/drivers/gpu/drm/radeon/r600d.h index 05894edadab4..30480881aed1 100644 --- a/drivers/gpu/drm/radeon/r600d.h +++ b/drivers/gpu/drm/radeon/r600d.h | |||
@@ -882,4 +882,29 @@ | |||
882 | #define S_000E60_SOFT_RESET_VMC(x) (((x) & 1) << 17) | 882 | #define S_000E60_SOFT_RESET_VMC(x) (((x) & 1) << 17) |
883 | 883 | ||
884 | #define R_005480_HDP_MEM_COHERENCY_FLUSH_CNTL 0x5480 | 884 | #define R_005480_HDP_MEM_COHERENCY_FLUSH_CNTL 0x5480 |
885 | |||
886 | #define R_0280E0_CB_COLOR0_FRAG 0x0280E0 | ||
887 | #define S_0280E0_BASE_256B(x) (((x) & 0xFFFFFFFF) << 0) | ||
888 | #define G_0280E0_BASE_256B(x) (((x) >> 0) & 0xFFFFFFFF) | ||
889 | #define C_0280E0_BASE_256B 0x00000000 | ||
890 | #define R_0280E4_CB_COLOR1_FRAG 0x0280E4 | ||
891 | #define R_0280E8_CB_COLOR2_FRAG 0x0280E8 | ||
892 | #define R_0280EC_CB_COLOR3_FRAG 0x0280EC | ||
893 | #define R_0280F0_CB_COLOR4_FRAG 0x0280F0 | ||
894 | #define R_0280F4_CB_COLOR5_FRAG 0x0280F4 | ||
895 | #define R_0280F8_CB_COLOR6_FRAG 0x0280F8 | ||
896 | #define R_0280FC_CB_COLOR7_FRAG 0x0280FC | ||
897 | #define R_0280C0_CB_COLOR0_TILE 0x0280C0 | ||
898 | #define S_0280C0_BASE_256B(x) (((x) & 0xFFFFFFFF) << 0) | ||
899 | #define G_0280C0_BASE_256B(x) (((x) >> 0) & 0xFFFFFFFF) | ||
900 | #define C_0280C0_BASE_256B 0x00000000 | ||
901 | #define R_0280C4_CB_COLOR1_TILE 0x0280C4 | ||
902 | #define R_0280C8_CB_COLOR2_TILE 0x0280C8 | ||
903 | #define R_0280CC_CB_COLOR3_TILE 0x0280CC | ||
904 | #define R_0280D0_CB_COLOR4_TILE 0x0280D0 | ||
905 | #define R_0280D4_CB_COLOR5_TILE 0x0280D4 | ||
906 | #define R_0280D8_CB_COLOR6_TILE 0x0280D8 | ||
907 | #define R_0280DC_CB_COLOR7_TILE 0x0280DC | ||
908 | |||
909 | |||
885 | #endif | 910 | #endif |
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index eb5f99b9469d..f7df1a7e4413 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
@@ -410,7 +410,6 @@ struct r600_ih { | |||
410 | unsigned wptr_old; | 410 | unsigned wptr_old; |
411 | unsigned ring_size; | 411 | unsigned ring_size; |
412 | uint64_t gpu_addr; | 412 | uint64_t gpu_addr; |
413 | uint32_t align_mask; | ||
414 | uint32_t ptr_mask; | 413 | uint32_t ptr_mask; |
415 | spinlock_t lock; | 414 | spinlock_t lock; |
416 | bool enabled; | 415 | bool enabled; |
@@ -465,6 +464,7 @@ struct radeon_cs_chunk { | |||
465 | }; | 464 | }; |
466 | 465 | ||
467 | struct radeon_cs_parser { | 466 | struct radeon_cs_parser { |
467 | struct device *dev; | ||
468 | struct radeon_device *rdev; | 468 | struct radeon_device *rdev; |
469 | struct drm_file *filp; | 469 | struct drm_file *filp; |
470 | /* chunks */ | 470 | /* chunks */ |
@@ -847,7 +847,7 @@ void r600_kms_blit_copy(struct radeon_device *rdev, | |||
847 | 847 | ||
848 | static inline uint32_t r100_mm_rreg(struct radeon_device *rdev, uint32_t reg) | 848 | static inline uint32_t r100_mm_rreg(struct radeon_device *rdev, uint32_t reg) |
849 | { | 849 | { |
850 | if (reg < 0x10000) | 850 | if (reg < rdev->rmmio_size) |
851 | return readl(((void __iomem *)rdev->rmmio) + reg); | 851 | return readl(((void __iomem *)rdev->rmmio) + reg); |
852 | else { | 852 | else { |
853 | writel(reg, ((void __iomem *)rdev->rmmio) + RADEON_MM_INDEX); | 853 | writel(reg, ((void __iomem *)rdev->rmmio) + RADEON_MM_INDEX); |
@@ -857,7 +857,7 @@ static inline uint32_t r100_mm_rreg(struct radeon_device *rdev, uint32_t reg) | |||
857 | 857 | ||
858 | static inline void r100_mm_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v) | 858 | static inline void r100_mm_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v) |
859 | { | 859 | { |
860 | if (reg < 0x10000) | 860 | if (reg < rdev->rmmio_size) |
861 | writel(v, ((void __iomem *)rdev->rmmio) + reg); | 861 | writel(v, ((void __iomem *)rdev->rmmio) + reg); |
862 | else { | 862 | else { |
863 | writel(reg, ((void __iomem *)rdev->rmmio) + RADEON_MM_INDEX); | 863 | writel(reg, ((void __iomem *)rdev->rmmio) + RADEON_MM_INDEX); |
@@ -1017,6 +1017,8 @@ static inline void radeon_ring_write(struct radeon_device *rdev, uint32_t v) | |||
1017 | #define radeon_hpd_set_polarity(rdev, hpd) (rdev)->asic->hpd_set_polarity((rdev), (hpd)) | 1017 | #define radeon_hpd_set_polarity(rdev, hpd) (rdev)->asic->hpd_set_polarity((rdev), (hpd)) |
1018 | 1018 | ||
1019 | /* Common functions */ | 1019 | /* Common functions */ |
1020 | /* AGP */ | ||
1021 | extern void radeon_agp_disable(struct radeon_device *rdev); | ||
1020 | extern int radeon_gart_table_vram_pin(struct radeon_device *rdev); | 1022 | extern int radeon_gart_table_vram_pin(struct radeon_device *rdev); |
1021 | extern int radeon_modeset_init(struct radeon_device *rdev); | 1023 | extern int radeon_modeset_init(struct radeon_device *rdev); |
1022 | extern void radeon_modeset_fini(struct radeon_device *rdev); | 1024 | extern void radeon_modeset_fini(struct radeon_device *rdev); |
@@ -1160,7 +1162,8 @@ extern int r600_irq_init(struct radeon_device *rdev); | |||
1160 | extern void r600_irq_fini(struct radeon_device *rdev); | 1162 | extern void r600_irq_fini(struct radeon_device *rdev); |
1161 | extern void r600_ih_ring_init(struct radeon_device *rdev, unsigned ring_size); | 1163 | extern void r600_ih_ring_init(struct radeon_device *rdev, unsigned ring_size); |
1162 | extern int r600_irq_set(struct radeon_device *rdev); | 1164 | extern int r600_irq_set(struct radeon_device *rdev); |
1163 | 1165 | extern void r600_irq_suspend(struct radeon_device *rdev); | |
1166 | /* r600 audio */ | ||
1164 | extern int r600_audio_init(struct radeon_device *rdev); | 1167 | extern int r600_audio_init(struct radeon_device *rdev); |
1165 | extern int r600_audio_tmds_index(struct drm_encoder *encoder); | 1168 | extern int r600_audio_tmds_index(struct drm_encoder *encoder); |
1166 | extern void r600_audio_set_clock(struct drm_encoder *encoder, int clock); | 1169 | extern void r600_audio_set_clock(struct drm_encoder *encoder, int clock); |
diff --git a/drivers/gpu/drm/radeon/radeon_agp.c b/drivers/gpu/drm/radeon/radeon_agp.c index 220f454ea9fa..c9ad7f5cc1ac 100644 --- a/drivers/gpu/drm/radeon/radeon_agp.c +++ b/drivers/gpu/drm/radeon/radeon_agp.c | |||
@@ -133,6 +133,13 @@ int radeon_agp_init(struct radeon_device *rdev) | |||
133 | bool is_v3; | 133 | bool is_v3; |
134 | int ret; | 134 | int ret; |
135 | 135 | ||
136 | if (rdev->ddev->agp->agp_info.aper_size < 32) { | ||
137 | dev_warn(rdev->dev, "AGP aperture to small (%dM) " | ||
138 | "need at least 32M, disabling AGP\n", | ||
139 | rdev->ddev->agp->agp_info.aper_size); | ||
140 | return -EINVAL; | ||
141 | } | ||
142 | |||
136 | /* Acquire AGP. */ | 143 | /* Acquire AGP. */ |
137 | if (!rdev->ddev->agp->acquired) { | 144 | if (!rdev->ddev->agp->acquired) { |
138 | ret = drm_agp_acquire(rdev->ddev); | 145 | ret = drm_agp_acquire(rdev->ddev); |
diff --git a/drivers/gpu/drm/radeon/radeon_clocks.c b/drivers/gpu/drm/radeon/radeon_clocks.c index 812f24dbc2a8..73c4405bf42f 100644 --- a/drivers/gpu/drm/radeon/radeon_clocks.c +++ b/drivers/gpu/drm/radeon/radeon_clocks.c | |||
@@ -56,7 +56,7 @@ uint32_t radeon_legacy_get_engine_clock(struct radeon_device *rdev) | |||
56 | else if (post_div == 3) | 56 | else if (post_div == 3) |
57 | sclk >>= 2; | 57 | sclk >>= 2; |
58 | else if (post_div == 4) | 58 | else if (post_div == 4) |
59 | sclk >>= 4; | 59 | sclk >>= 3; |
60 | 60 | ||
61 | return sclk; | 61 | return sclk; |
62 | } | 62 | } |
@@ -86,7 +86,7 @@ uint32_t radeon_legacy_get_memory_clock(struct radeon_device *rdev) | |||
86 | else if (post_div == 3) | 86 | else if (post_div == 3) |
87 | mclk >>= 2; | 87 | mclk >>= 2; |
88 | else if (post_div == 4) | 88 | else if (post_div == 4) |
89 | mclk >>= 4; | 89 | mclk >>= 3; |
90 | 90 | ||
91 | return mclk; | 91 | return mclk; |
92 | } | 92 | } |
diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c index 7914455c96ca..579c8920e081 100644 --- a/drivers/gpu/drm/radeon/radeon_combios.c +++ b/drivers/gpu/drm/radeon/radeon_combios.c | |||
@@ -687,6 +687,9 @@ radeon_combios_get_tv_info(struct radeon_device *rdev) | |||
687 | uint16_t tv_info; | 687 | uint16_t tv_info; |
688 | enum radeon_tv_std tv_std = TV_STD_NTSC; | 688 | enum radeon_tv_std tv_std = TV_STD_NTSC; |
689 | 689 | ||
690 | if (rdev->bios == NULL) | ||
691 | return tv_std; | ||
692 | |||
690 | tv_info = combios_get_table_offset(dev, COMBIOS_TV_INFO_TABLE); | 693 | tv_info = combios_get_table_offset(dev, COMBIOS_TV_INFO_TABLE); |
691 | if (tv_info) { | 694 | if (tv_info) { |
692 | if (RBIOS8(tv_info + 6) == 'T') { | 695 | if (RBIOS8(tv_info + 6) == 'T') { |
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c index 9da10dd5df80..55266416fa47 100644 --- a/drivers/gpu/drm/radeon/radeon_connectors.c +++ b/drivers/gpu/drm/radeon/radeon_connectors.c | |||
@@ -900,10 +900,18 @@ static void radeon_dvi_force(struct drm_connector *connector) | |||
900 | static int radeon_dvi_mode_valid(struct drm_connector *connector, | 900 | static int radeon_dvi_mode_valid(struct drm_connector *connector, |
901 | struct drm_display_mode *mode) | 901 | struct drm_display_mode *mode) |
902 | { | 902 | { |
903 | struct drm_device *dev = connector->dev; | ||
904 | struct radeon_device *rdev = dev->dev_private; | ||
903 | struct radeon_connector *radeon_connector = to_radeon_connector(connector); | 905 | struct radeon_connector *radeon_connector = to_radeon_connector(connector); |
904 | 906 | ||
905 | /* XXX check mode bandwidth */ | 907 | /* XXX check mode bandwidth */ |
906 | 908 | ||
909 | /* clocks over 135 MHz have heat issues with DVI on RV100 */ | ||
910 | if (radeon_connector->use_digital && | ||
911 | (rdev->family == CHIP_RV100) && | ||
912 | (mode->clock > 135000)) | ||
913 | return MODE_CLOCK_HIGH; | ||
914 | |||
907 | if (radeon_connector->use_digital && (mode->clock > 165000)) { | 915 | if (radeon_connector->use_digital && (mode->clock > 165000)) { |
908 | if ((radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I) || | 916 | if ((radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I) || |
909 | (radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D) || | 917 | (radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D) || |
diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index 65590a0f1d93..1496cb8658ef 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c | |||
@@ -231,6 +231,7 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) | |||
231 | memset(&parser, 0, sizeof(struct radeon_cs_parser)); | 231 | memset(&parser, 0, sizeof(struct radeon_cs_parser)); |
232 | parser.filp = filp; | 232 | parser.filp = filp; |
233 | parser.rdev = rdev; | 233 | parser.rdev = rdev; |
234 | parser.dev = rdev->dev; | ||
234 | r = radeon_cs_parser_init(&parser, data); | 235 | r = radeon_cs_parser_init(&parser, data); |
235 | if (r) { | 236 | if (r) { |
236 | DRM_ERROR("Failed to initialize parser !\n"); | 237 | DRM_ERROR("Failed to initialize parser !\n"); |
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index 0c51f8e46613..768b1509fa03 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c | |||
@@ -544,6 +544,7 @@ void radeon_agp_disable(struct radeon_device *rdev) | |||
544 | rdev->asic->gart_tlb_flush = &r100_pci_gart_tlb_flush; | 544 | rdev->asic->gart_tlb_flush = &r100_pci_gart_tlb_flush; |
545 | rdev->asic->gart_set_page = &r100_pci_gart_set_page; | 545 | rdev->asic->gart_set_page = &r100_pci_gart_set_page; |
546 | } | 546 | } |
547 | rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024; | ||
547 | } | 548 | } |
548 | 549 | ||
549 | void radeon_check_arguments(struct radeon_device *rdev) | 550 | void radeon_check_arguments(struct radeon_device *rdev) |
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c index 0ec491ead2ff..6a92f994cc26 100644 --- a/drivers/gpu/drm/radeon/radeon_display.c +++ b/drivers/gpu/drm/radeon/radeon_display.c | |||
@@ -357,7 +357,8 @@ int radeon_ddc_get_modes(struct radeon_connector *radeon_connector) | |||
357 | if ((radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_DisplayPort) || | 357 | if ((radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_DisplayPort) || |
358 | (radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_eDP)) { | 358 | (radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_eDP)) { |
359 | struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; | 359 | struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; |
360 | if (dig->dp_i2c_bus) | 360 | if ((dig->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT || |
361 | dig->dp_sink_type == CONNECTOR_OBJECT_ID_eDP) && dig->dp_i2c_bus) | ||
361 | radeon_connector->edid = drm_get_edid(&radeon_connector->base, &dig->dp_i2c_bus->adapter); | 362 | radeon_connector->edid = drm_get_edid(&radeon_connector->base, &dig->dp_i2c_bus->adapter); |
362 | } | 363 | } |
363 | if (!radeon_connector->ddc_bus) | 364 | if (!radeon_connector->ddc_bus) |
@@ -410,11 +411,12 @@ void radeon_compute_pll(struct radeon_pll *pll, | |||
410 | uint32_t *fb_div_p, | 411 | uint32_t *fb_div_p, |
411 | uint32_t *frac_fb_div_p, | 412 | uint32_t *frac_fb_div_p, |
412 | uint32_t *ref_div_p, | 413 | uint32_t *ref_div_p, |
413 | uint32_t *post_div_p, | 414 | uint32_t *post_div_p) |
414 | int flags) | ||
415 | { | 415 | { |
416 | uint32_t min_ref_div = pll->min_ref_div; | 416 | uint32_t min_ref_div = pll->min_ref_div; |
417 | uint32_t max_ref_div = pll->max_ref_div; | 417 | uint32_t max_ref_div = pll->max_ref_div; |
418 | uint32_t min_post_div = pll->min_post_div; | ||
419 | uint32_t max_post_div = pll->max_post_div; | ||
418 | uint32_t min_fractional_feed_div = 0; | 420 | uint32_t min_fractional_feed_div = 0; |
419 | uint32_t max_fractional_feed_div = 0; | 421 | uint32_t max_fractional_feed_div = 0; |
420 | uint32_t best_vco = pll->best_vco; | 422 | uint32_t best_vco = pll->best_vco; |
@@ -430,7 +432,7 @@ void radeon_compute_pll(struct radeon_pll *pll, | |||
430 | DRM_DEBUG("PLL freq %llu %u %u\n", freq, pll->min_ref_div, pll->max_ref_div); | 432 | DRM_DEBUG("PLL freq %llu %u %u\n", freq, pll->min_ref_div, pll->max_ref_div); |
431 | freq = freq * 1000; | 433 | freq = freq * 1000; |
432 | 434 | ||
433 | if (flags & RADEON_PLL_USE_REF_DIV) | 435 | if (pll->flags & RADEON_PLL_USE_REF_DIV) |
434 | min_ref_div = max_ref_div = pll->reference_div; | 436 | min_ref_div = max_ref_div = pll->reference_div; |
435 | else { | 437 | else { |
436 | while (min_ref_div < max_ref_div-1) { | 438 | while (min_ref_div < max_ref_div-1) { |
@@ -445,19 +447,22 @@ void radeon_compute_pll(struct radeon_pll *pll, | |||
445 | } | 447 | } |
446 | } | 448 | } |
447 | 449 | ||
448 | if (flags & RADEON_PLL_USE_FRAC_FB_DIV) { | 450 | if (pll->flags & RADEON_PLL_USE_POST_DIV) |
451 | min_post_div = max_post_div = pll->post_div; | ||
452 | |||
453 | if (pll->flags & RADEON_PLL_USE_FRAC_FB_DIV) { | ||
449 | min_fractional_feed_div = pll->min_frac_feedback_div; | 454 | min_fractional_feed_div = pll->min_frac_feedback_div; |
450 | max_fractional_feed_div = pll->max_frac_feedback_div; | 455 | max_fractional_feed_div = pll->max_frac_feedback_div; |
451 | } | 456 | } |
452 | 457 | ||
453 | for (post_div = pll->min_post_div; post_div <= pll->max_post_div; ++post_div) { | 458 | for (post_div = min_post_div; post_div <= max_post_div; ++post_div) { |
454 | uint32_t ref_div; | 459 | uint32_t ref_div; |
455 | 460 | ||
456 | if ((flags & RADEON_PLL_NO_ODD_POST_DIV) && (post_div & 1)) | 461 | if ((pll->flags & RADEON_PLL_NO_ODD_POST_DIV) && (post_div & 1)) |
457 | continue; | 462 | continue; |
458 | 463 | ||
459 | /* legacy radeons only have a few post_divs */ | 464 | /* legacy radeons only have a few post_divs */ |
460 | if (flags & RADEON_PLL_LEGACY) { | 465 | if (pll->flags & RADEON_PLL_LEGACY) { |
461 | if ((post_div == 5) || | 466 | if ((post_div == 5) || |
462 | (post_div == 7) || | 467 | (post_div == 7) || |
463 | (post_div == 9) || | 468 | (post_div == 9) || |
@@ -504,7 +509,7 @@ void radeon_compute_pll(struct radeon_pll *pll, | |||
504 | tmp += (uint64_t)pll->reference_freq * 1000 * frac_feedback_div; | 509 | tmp += (uint64_t)pll->reference_freq * 1000 * frac_feedback_div; |
505 | current_freq = radeon_div(tmp, ref_div * post_div); | 510 | current_freq = radeon_div(tmp, ref_div * post_div); |
506 | 511 | ||
507 | if (flags & RADEON_PLL_PREFER_CLOSEST_LOWER) { | 512 | if (pll->flags & RADEON_PLL_PREFER_CLOSEST_LOWER) { |
508 | error = freq - current_freq; | 513 | error = freq - current_freq; |
509 | error = error < 0 ? 0xffffffff : error; | 514 | error = error < 0 ? 0xffffffff : error; |
510 | } else | 515 | } else |
@@ -531,12 +536,12 @@ void radeon_compute_pll(struct radeon_pll *pll, | |||
531 | best_freq = current_freq; | 536 | best_freq = current_freq; |
532 | best_error = error; | 537 | best_error = error; |
533 | best_vco_diff = vco_diff; | 538 | best_vco_diff = vco_diff; |
534 | } else if (((flags & RADEON_PLL_PREFER_LOW_REF_DIV) && (ref_div < best_ref_div)) || | 539 | } else if (((pll->flags & RADEON_PLL_PREFER_LOW_REF_DIV) && (ref_div < best_ref_div)) || |
535 | ((flags & RADEON_PLL_PREFER_HIGH_REF_DIV) && (ref_div > best_ref_div)) || | 540 | ((pll->flags & RADEON_PLL_PREFER_HIGH_REF_DIV) && (ref_div > best_ref_div)) || |
536 | ((flags & RADEON_PLL_PREFER_LOW_FB_DIV) && (feedback_div < best_feedback_div)) || | 541 | ((pll->flags & RADEON_PLL_PREFER_LOW_FB_DIV) && (feedback_div < best_feedback_div)) || |
537 | ((flags & RADEON_PLL_PREFER_HIGH_FB_DIV) && (feedback_div > best_feedback_div)) || | 542 | ((pll->flags & RADEON_PLL_PREFER_HIGH_FB_DIV) && (feedback_div > best_feedback_div)) || |
538 | ((flags & RADEON_PLL_PREFER_LOW_POST_DIV) && (post_div < best_post_div)) || | 543 | ((pll->flags & RADEON_PLL_PREFER_LOW_POST_DIV) && (post_div < best_post_div)) || |
539 | ((flags & RADEON_PLL_PREFER_HIGH_POST_DIV) && (post_div > best_post_div))) { | 544 | ((pll->flags & RADEON_PLL_PREFER_HIGH_POST_DIV) && (post_div > best_post_div))) { |
540 | best_post_div = post_div; | 545 | best_post_div = post_div; |
541 | best_ref_div = ref_div; | 546 | best_ref_div = ref_div; |
542 | best_feedback_div = feedback_div; | 547 | best_feedback_div = feedback_div; |
@@ -572,8 +577,7 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll, | |||
572 | uint32_t *fb_div_p, | 577 | uint32_t *fb_div_p, |
573 | uint32_t *frac_fb_div_p, | 578 | uint32_t *frac_fb_div_p, |
574 | uint32_t *ref_div_p, | 579 | uint32_t *ref_div_p, |
575 | uint32_t *post_div_p, | 580 | uint32_t *post_div_p) |
576 | int flags) | ||
577 | { | 581 | { |
578 | fixed20_12 m, n, frac_n, p, f_vco, f_pclk, best_freq; | 582 | fixed20_12 m, n, frac_n, p, f_vco, f_pclk, best_freq; |
579 | fixed20_12 pll_out_max, pll_out_min; | 583 | fixed20_12 pll_out_max, pll_out_min; |
@@ -667,7 +671,6 @@ static void radeon_user_framebuffer_destroy(struct drm_framebuffer *fb) | |||
667 | radeonfb_remove(dev, fb); | 671 | radeonfb_remove(dev, fb); |
668 | 672 | ||
669 | if (radeon_fb->obj) { | 673 | if (radeon_fb->obj) { |
670 | radeon_gem_object_unpin(radeon_fb->obj); | ||
671 | mutex_lock(&dev->struct_mutex); | 674 | mutex_lock(&dev->struct_mutex); |
672 | drm_gem_object_unreference(radeon_fb->obj); | 675 | drm_gem_object_unreference(radeon_fb->obj); |
673 | mutex_unlock(&dev->struct_mutex); | 676 | mutex_unlock(&dev->struct_mutex); |
@@ -715,7 +718,11 @@ radeon_user_framebuffer_create(struct drm_device *dev, | |||
715 | struct drm_gem_object *obj; | 718 | struct drm_gem_object *obj; |
716 | 719 | ||
717 | obj = drm_gem_object_lookup(dev, file_priv, mode_cmd->handle); | 720 | obj = drm_gem_object_lookup(dev, file_priv, mode_cmd->handle); |
718 | 721 | if (obj == NULL) { | |
722 | dev_err(&dev->pdev->dev, "No GEM object associated to handle 0x%08X, " | ||
723 | "can't create framebuffer\n", mode_cmd->handle); | ||
724 | return NULL; | ||
725 | } | ||
719 | return radeon_framebuffer_create(dev, mode_cmd, obj); | 726 | return radeon_framebuffer_create(dev, mode_cmd, obj); |
720 | } | 727 | } |
721 | 728 | ||
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c index cc27485a07ad..b6d8081e1246 100644 --- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c +++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c | |||
@@ -339,69 +339,6 @@ void radeon_crtc_dpms(struct drm_crtc *crtc, int mode) | |||
339 | } | 339 | } |
340 | } | 340 | } |
341 | 341 | ||
342 | /* properly set crtc bpp when using atombios */ | ||
343 | void radeon_legacy_atom_set_surface(struct drm_crtc *crtc) | ||
344 | { | ||
345 | struct drm_device *dev = crtc->dev; | ||
346 | struct radeon_device *rdev = dev->dev_private; | ||
347 | struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); | ||
348 | int format; | ||
349 | uint32_t crtc_gen_cntl; | ||
350 | uint32_t disp_merge_cntl; | ||
351 | uint32_t crtc_pitch; | ||
352 | |||
353 | switch (crtc->fb->bits_per_pixel) { | ||
354 | case 8: | ||
355 | format = 2; | ||
356 | break; | ||
357 | case 15: /* 555 */ | ||
358 | format = 3; | ||
359 | break; | ||
360 | case 16: /* 565 */ | ||
361 | format = 4; | ||
362 | break; | ||
363 | case 24: /* RGB */ | ||
364 | format = 5; | ||
365 | break; | ||
366 | case 32: /* xRGB */ | ||
367 | format = 6; | ||
368 | break; | ||
369 | default: | ||
370 | return; | ||
371 | } | ||
372 | |||
373 | crtc_pitch = ((((crtc->fb->pitch / (crtc->fb->bits_per_pixel / 8)) * crtc->fb->bits_per_pixel) + | ||
374 | ((crtc->fb->bits_per_pixel * 8) - 1)) / | ||
375 | (crtc->fb->bits_per_pixel * 8)); | ||
376 | crtc_pitch |= crtc_pitch << 16; | ||
377 | |||
378 | WREG32(RADEON_CRTC_PITCH + radeon_crtc->crtc_offset, crtc_pitch); | ||
379 | |||
380 | switch (radeon_crtc->crtc_id) { | ||
381 | case 0: | ||
382 | disp_merge_cntl = RREG32(RADEON_DISP_MERGE_CNTL); | ||
383 | disp_merge_cntl &= ~RADEON_DISP_RGB_OFFSET_EN; | ||
384 | WREG32(RADEON_DISP_MERGE_CNTL, disp_merge_cntl); | ||
385 | |||
386 | crtc_gen_cntl = RREG32(RADEON_CRTC_GEN_CNTL) & 0xfffff0ff; | ||
387 | crtc_gen_cntl |= (format << 8); | ||
388 | crtc_gen_cntl |= RADEON_CRTC_EXT_DISP_EN; | ||
389 | WREG32(RADEON_CRTC_GEN_CNTL, crtc_gen_cntl); | ||
390 | break; | ||
391 | case 1: | ||
392 | disp_merge_cntl = RREG32(RADEON_DISP2_MERGE_CNTL); | ||
393 | disp_merge_cntl &= ~RADEON_DISP2_RGB_OFFSET_EN; | ||
394 | WREG32(RADEON_DISP2_MERGE_CNTL, disp_merge_cntl); | ||
395 | |||
396 | crtc_gen_cntl = RREG32(RADEON_CRTC2_GEN_CNTL) & 0xfffff0ff; | ||
397 | crtc_gen_cntl |= (format << 8); | ||
398 | WREG32(RADEON_CRTC2_GEN_CNTL, crtc_gen_cntl); | ||
399 | WREG32(RADEON_FP_H2_SYNC_STRT_WID, RREG32(RADEON_CRTC2_H_SYNC_STRT_WID)); | ||
400 | WREG32(RADEON_FP_V2_SYNC_STRT_WID, RREG32(RADEON_CRTC2_V_SYNC_STRT_WID)); | ||
401 | break; | ||
402 | } | ||
403 | } | ||
404 | |||
405 | int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y, | 342 | int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y, |
406 | struct drm_framebuffer *old_fb) | 343 | struct drm_framebuffer *old_fb) |
407 | { | 344 | { |
@@ -755,7 +692,6 @@ static void radeon_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
755 | uint32_t post_divider = 0; | 692 | uint32_t post_divider = 0; |
756 | uint32_t freq = 0; | 693 | uint32_t freq = 0; |
757 | uint8_t pll_gain; | 694 | uint8_t pll_gain; |
758 | int pll_flags = RADEON_PLL_LEGACY; | ||
759 | bool use_bios_divs = false; | 695 | bool use_bios_divs = false; |
760 | /* PLL registers */ | 696 | /* PLL registers */ |
761 | uint32_t pll_ref_div = 0; | 697 | uint32_t pll_ref_div = 0; |
@@ -789,10 +725,12 @@ static void radeon_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
789 | else | 725 | else |
790 | pll = &rdev->clock.p1pll; | 726 | pll = &rdev->clock.p1pll; |
791 | 727 | ||
728 | pll->flags = RADEON_PLL_LEGACY; | ||
729 | |||
792 | if (mode->clock > 200000) /* range limits??? */ | 730 | if (mode->clock > 200000) /* range limits??? */ |
793 | pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; | 731 | pll->flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; |
794 | else | 732 | else |
795 | pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; | 733 | pll->flags |= RADEON_PLL_PREFER_LOW_REF_DIV; |
796 | 734 | ||
797 | list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { | 735 | list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { |
798 | if (encoder->crtc == crtc) { | 736 | if (encoder->crtc == crtc) { |
@@ -804,7 +742,7 @@ static void radeon_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
804 | } | 742 | } |
805 | 743 | ||
806 | if (encoder->encoder_type != DRM_MODE_ENCODER_DAC) | 744 | if (encoder->encoder_type != DRM_MODE_ENCODER_DAC) |
807 | pll_flags |= RADEON_PLL_NO_ODD_POST_DIV; | 745 | pll->flags |= RADEON_PLL_NO_ODD_POST_DIV; |
808 | if (encoder->encoder_type == DRM_MODE_ENCODER_LVDS) { | 746 | if (encoder->encoder_type == DRM_MODE_ENCODER_LVDS) { |
809 | if (!rdev->is_atom_bios) { | 747 | if (!rdev->is_atom_bios) { |
810 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); | 748 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); |
@@ -819,7 +757,7 @@ static void radeon_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
819 | } | 757 | } |
820 | } | 758 | } |
821 | } | 759 | } |
822 | pll_flags |= RADEON_PLL_USE_REF_DIV; | 760 | pll->flags |= RADEON_PLL_USE_REF_DIV; |
823 | } | 761 | } |
824 | } | 762 | } |
825 | } | 763 | } |
@@ -829,8 +767,7 @@ static void radeon_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
829 | if (!use_bios_divs) { | 767 | if (!use_bios_divs) { |
830 | radeon_compute_pll(pll, mode->clock, | 768 | radeon_compute_pll(pll, mode->clock, |
831 | &freq, &feedback_div, &frac_fb_div, | 769 | &freq, &feedback_div, &frac_fb_div, |
832 | &reference_div, &post_divider, | 770 | &reference_div, &post_divider); |
833 | pll_flags); | ||
834 | 771 | ||
835 | for (post_div = &post_divs[0]; post_div->divider; ++post_div) { | 772 | for (post_div = &post_divs[0]; post_div->divider; ++post_div) { |
836 | if (post_div->divider == post_divider) | 773 | if (post_div->divider == post_divider) |
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c index 981508ff7037..38e45e231ef5 100644 --- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c +++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c | |||
@@ -46,6 +46,7 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode) | |||
46 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); | 46 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); |
47 | uint32_t lvds_gen_cntl, lvds_pll_cntl, pixclks_cntl, disp_pwr_man; | 47 | uint32_t lvds_gen_cntl, lvds_pll_cntl, pixclks_cntl, disp_pwr_man; |
48 | int panel_pwr_delay = 2000; | 48 | int panel_pwr_delay = 2000; |
49 | bool is_mac = false; | ||
49 | DRM_DEBUG("\n"); | 50 | DRM_DEBUG("\n"); |
50 | 51 | ||
51 | if (radeon_encoder->enc_priv) { | 52 | if (radeon_encoder->enc_priv) { |
@@ -58,6 +59,15 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode) | |||
58 | } | 59 | } |
59 | } | 60 | } |
60 | 61 | ||
62 | /* macs (and possibly some x86 oem systems?) wire up LVDS strangely | ||
63 | * Taken from radeonfb. | ||
64 | */ | ||
65 | if ((rdev->mode_info.connector_table == CT_IBOOK) || | ||
66 | (rdev->mode_info.connector_table == CT_POWERBOOK_EXTERNAL) || | ||
67 | (rdev->mode_info.connector_table == CT_POWERBOOK_INTERNAL) || | ||
68 | (rdev->mode_info.connector_table == CT_POWERBOOK_VGA)) | ||
69 | is_mac = true; | ||
70 | |||
61 | switch (mode) { | 71 | switch (mode) { |
62 | case DRM_MODE_DPMS_ON: | 72 | case DRM_MODE_DPMS_ON: |
63 | disp_pwr_man = RREG32(RADEON_DISP_PWR_MAN); | 73 | disp_pwr_man = RREG32(RADEON_DISP_PWR_MAN); |
@@ -74,6 +84,8 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode) | |||
74 | 84 | ||
75 | lvds_gen_cntl = RREG32(RADEON_LVDS_GEN_CNTL); | 85 | lvds_gen_cntl = RREG32(RADEON_LVDS_GEN_CNTL); |
76 | lvds_gen_cntl |= (RADEON_LVDS_ON | RADEON_LVDS_EN | RADEON_LVDS_DIGON | RADEON_LVDS_BLON); | 86 | lvds_gen_cntl |= (RADEON_LVDS_ON | RADEON_LVDS_EN | RADEON_LVDS_DIGON | RADEON_LVDS_BLON); |
87 | if (is_mac) | ||
88 | lvds_gen_cntl |= RADEON_LVDS_BL_MOD_EN; | ||
77 | lvds_gen_cntl &= ~(RADEON_LVDS_DISPLAY_DIS); | 89 | lvds_gen_cntl &= ~(RADEON_LVDS_DISPLAY_DIS); |
78 | udelay(panel_pwr_delay * 1000); | 90 | udelay(panel_pwr_delay * 1000); |
79 | WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl); | 91 | WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl); |
@@ -85,7 +97,14 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode) | |||
85 | WREG32_PLL_P(RADEON_PIXCLKS_CNTL, 0, ~RADEON_PIXCLK_LVDS_ALWAYS_ONb); | 97 | WREG32_PLL_P(RADEON_PIXCLKS_CNTL, 0, ~RADEON_PIXCLK_LVDS_ALWAYS_ONb); |
86 | lvds_gen_cntl = RREG32(RADEON_LVDS_GEN_CNTL); | 98 | lvds_gen_cntl = RREG32(RADEON_LVDS_GEN_CNTL); |
87 | lvds_gen_cntl |= RADEON_LVDS_DISPLAY_DIS; | 99 | lvds_gen_cntl |= RADEON_LVDS_DISPLAY_DIS; |
88 | lvds_gen_cntl &= ~(RADEON_LVDS_ON | RADEON_LVDS_BLON | RADEON_LVDS_EN | RADEON_LVDS_DIGON); | 100 | if (is_mac) { |
101 | lvds_gen_cntl &= ~RADEON_LVDS_BL_MOD_EN; | ||
102 | WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl); | ||
103 | lvds_gen_cntl &= ~(RADEON_LVDS_ON | RADEON_LVDS_EN); | ||
104 | } else { | ||
105 | WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl); | ||
106 | lvds_gen_cntl &= ~(RADEON_LVDS_ON | RADEON_LVDS_BLON | RADEON_LVDS_EN | RADEON_LVDS_DIGON); | ||
107 | } | ||
89 | udelay(panel_pwr_delay * 1000); | 108 | udelay(panel_pwr_delay * 1000); |
90 | WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl); | 109 | WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl); |
91 | WREG32_PLL(RADEON_PIXCLKS_CNTL, pixclks_cntl); | 110 | WREG32_PLL(RADEON_PIXCLKS_CNTL, pixclks_cntl); |
diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h index 91cb041cb40d..96b851f92f4c 100644 --- a/drivers/gpu/drm/radeon/radeon_mode.h +++ b/drivers/gpu/drm/radeon/radeon_mode.h | |||
@@ -125,16 +125,24 @@ struct radeon_tmds_pll { | |||
125 | #define RADEON_PLL_PREFER_HIGH_POST_DIV (1 << 9) | 125 | #define RADEON_PLL_PREFER_HIGH_POST_DIV (1 << 9) |
126 | #define RADEON_PLL_USE_FRAC_FB_DIV (1 << 10) | 126 | #define RADEON_PLL_USE_FRAC_FB_DIV (1 << 10) |
127 | #define RADEON_PLL_PREFER_CLOSEST_LOWER (1 << 11) | 127 | #define RADEON_PLL_PREFER_CLOSEST_LOWER (1 << 11) |
128 | #define RADEON_PLL_USE_POST_DIV (1 << 12) | ||
128 | 129 | ||
129 | struct radeon_pll { | 130 | struct radeon_pll { |
130 | uint16_t reference_freq; | 131 | /* reference frequency */ |
131 | uint16_t reference_div; | 132 | uint32_t reference_freq; |
133 | |||
134 | /* fixed dividers */ | ||
135 | uint32_t reference_div; | ||
136 | uint32_t post_div; | ||
137 | |||
138 | /* pll in/out limits */ | ||
132 | uint32_t pll_in_min; | 139 | uint32_t pll_in_min; |
133 | uint32_t pll_in_max; | 140 | uint32_t pll_in_max; |
134 | uint32_t pll_out_min; | 141 | uint32_t pll_out_min; |
135 | uint32_t pll_out_max; | 142 | uint32_t pll_out_max; |
136 | uint16_t xclk; | 143 | uint32_t best_vco; |
137 | 144 | ||
145 | /* divider limits */ | ||
138 | uint32_t min_ref_div; | 146 | uint32_t min_ref_div; |
139 | uint32_t max_ref_div; | 147 | uint32_t max_ref_div; |
140 | uint32_t min_post_div; | 148 | uint32_t min_post_div; |
@@ -143,7 +151,12 @@ struct radeon_pll { | |||
143 | uint32_t max_feedback_div; | 151 | uint32_t max_feedback_div; |
144 | uint32_t min_frac_feedback_div; | 152 | uint32_t min_frac_feedback_div; |
145 | uint32_t max_frac_feedback_div; | 153 | uint32_t max_frac_feedback_div; |
146 | uint32_t best_vco; | 154 | |
155 | /* flags for the current clock */ | ||
156 | uint32_t flags; | ||
157 | |||
158 | /* pll id */ | ||
159 | uint32_t id; | ||
147 | }; | 160 | }; |
148 | 161 | ||
149 | struct radeon_i2c_chan { | 162 | struct radeon_i2c_chan { |
@@ -417,8 +430,7 @@ extern void radeon_compute_pll(struct radeon_pll *pll, | |||
417 | uint32_t *fb_div_p, | 430 | uint32_t *fb_div_p, |
418 | uint32_t *frac_fb_div_p, | 431 | uint32_t *frac_fb_div_p, |
419 | uint32_t *ref_div_p, | 432 | uint32_t *ref_div_p, |
420 | uint32_t *post_div_p, | 433 | uint32_t *post_div_p); |
421 | int flags); | ||
422 | 434 | ||
423 | extern void radeon_compute_pll_avivo(struct radeon_pll *pll, | 435 | extern void radeon_compute_pll_avivo(struct radeon_pll *pll, |
424 | uint64_t freq, | 436 | uint64_t freq, |
@@ -426,8 +438,7 @@ extern void radeon_compute_pll_avivo(struct radeon_pll *pll, | |||
426 | uint32_t *fb_div_p, | 438 | uint32_t *fb_div_p, |
427 | uint32_t *frac_fb_div_p, | 439 | uint32_t *frac_fb_div_p, |
428 | uint32_t *ref_div_p, | 440 | uint32_t *ref_div_p, |
429 | uint32_t *post_div_p, | 441 | uint32_t *post_div_p); |
430 | int flags); | ||
431 | 442 | ||
432 | extern void radeon_setup_encoder_clones(struct drm_device *dev); | 443 | extern void radeon_setup_encoder_clones(struct drm_device *dev); |
433 | 444 | ||
@@ -453,7 +464,6 @@ extern void atombios_crtc_dpms(struct drm_crtc *crtc, int mode); | |||
453 | 464 | ||
454 | extern int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y, | 465 | extern int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y, |
455 | struct drm_framebuffer *old_fb); | 466 | struct drm_framebuffer *old_fb); |
456 | extern void radeon_legacy_atom_set_surface(struct drm_crtc *crtc); | ||
457 | 467 | ||
458 | extern int radeon_crtc_cursor_set(struct drm_crtc *crtc, | 468 | extern int radeon_crtc_cursor_set(struct drm_crtc *crtc, |
459 | struct drm_file *file_priv, | 469 | struct drm_file *file_priv, |
diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c index 4e636de877b2..d72a71bff218 100644 --- a/drivers/gpu/drm/radeon/radeon_object.c +++ b/drivers/gpu/drm/radeon/radeon_object.c | |||
@@ -220,7 +220,8 @@ int radeon_bo_unpin(struct radeon_bo *bo) | |||
220 | 220 | ||
221 | int radeon_bo_evict_vram(struct radeon_device *rdev) | 221 | int radeon_bo_evict_vram(struct radeon_device *rdev) |
222 | { | 222 | { |
223 | if (rdev->flags & RADEON_IS_IGP) { | 223 | /* late 2.6.33 fix IGP hibernate - we need pm ops to do this correct */ |
224 | if (0 && (rdev->flags & RADEON_IS_IGP)) { | ||
224 | if (rdev->mc.igp_sideport_enabled == false) | 225 | if (rdev->mc.igp_sideport_enabled == false) |
225 | /* Useless to evict on IGP chips */ | 226 | /* Useless to evict on IGP chips */ |
226 | return 0; | 227 | return 0; |
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c index 3b0c07b444a2..58b5adf974ca 100644 --- a/drivers/gpu/drm/radeon/radeon_ttm.c +++ b/drivers/gpu/drm/radeon/radeon_ttm.c | |||
@@ -215,7 +215,10 @@ static void radeon_evict_flags(struct ttm_buffer_object *bo, | |||
215 | rbo = container_of(bo, struct radeon_bo, tbo); | 215 | rbo = container_of(bo, struct radeon_bo, tbo); |
216 | switch (bo->mem.mem_type) { | 216 | switch (bo->mem.mem_type) { |
217 | case TTM_PL_VRAM: | 217 | case TTM_PL_VRAM: |
218 | radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_GTT); | 218 | if (rbo->rdev->cp.ready == false) |
219 | radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_CPU); | ||
220 | else | ||
221 | radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_GTT); | ||
219 | break; | 222 | break; |
220 | case TTM_PL_TT: | 223 | case TTM_PL_TT: |
221 | default: | 224 | default: |
diff --git a/drivers/gpu/drm/radeon/reg_srcs/r200 b/drivers/gpu/drm/radeon/reg_srcs/r200 index 6021c8849a16..c29ac434ac9c 100644 --- a/drivers/gpu/drm/radeon/reg_srcs/r200 +++ b/drivers/gpu/drm/radeon/reg_srcs/r200 | |||
@@ -91,6 +91,8 @@ r200 0x3294 | |||
91 | 0x22b8 SE_TCL_TEX_CYL_WRAP_CTL | 91 | 0x22b8 SE_TCL_TEX_CYL_WRAP_CTL |
92 | 0x22c0 SE_TCL_UCP_VERT_BLEND_CNTL | 92 | 0x22c0 SE_TCL_UCP_VERT_BLEND_CNTL |
93 | 0x22c4 SE_TCL_POINT_SPRITE_CNTL | 93 | 0x22c4 SE_TCL_POINT_SPRITE_CNTL |
94 | 0x22d0 SE_PVS_CNTL | ||
95 | 0x22d4 SE_PVS_CONST_CNTL | ||
94 | 0x2648 RE_POINTSIZE | 96 | 0x2648 RE_POINTSIZE |
95 | 0x26c0 RE_TOP_LEFT | 97 | 0x26c0 RE_TOP_LEFT |
96 | 0x26c4 RE_MISC | 98 | 0x26c4 RE_MISC |
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c index 59c71245fb91..55f6ffc4e58b 100644 --- a/drivers/gpu/drm/radeon/rv770.c +++ b/drivers/gpu/drm/radeon/rv770.c | |||
@@ -779,7 +779,6 @@ int rv770_mc_init(struct radeon_device *rdev) | |||
779 | fixed20_12 a; | 779 | fixed20_12 a; |
780 | u32 tmp; | 780 | u32 tmp; |
781 | int chansize, numchan; | 781 | int chansize, numchan; |
782 | int r; | ||
783 | 782 | ||
784 | /* Get VRAM informations */ | 783 | /* Get VRAM informations */ |
785 | rdev->mc.vram_is_ddr = true; | 784 | rdev->mc.vram_is_ddr = true; |
@@ -822,9 +821,6 @@ int rv770_mc_init(struct radeon_device *rdev) | |||
822 | rdev->mc.real_vram_size = rdev->mc.aper_size; | 821 | rdev->mc.real_vram_size = rdev->mc.aper_size; |
823 | 822 | ||
824 | if (rdev->flags & RADEON_IS_AGP) { | 823 | if (rdev->flags & RADEON_IS_AGP) { |
825 | r = radeon_agp_init(rdev); | ||
826 | if (r) | ||
827 | return r; | ||
828 | /* gtt_size is setup by radeon_agp_init */ | 824 | /* gtt_size is setup by radeon_agp_init */ |
829 | rdev->mc.gtt_location = rdev->mc.agp_base; | 825 | rdev->mc.gtt_location = rdev->mc.agp_base; |
830 | tmp = 0xFFFFFFFFUL - rdev->mc.agp_base - rdev->mc.gtt_size; | 826 | tmp = 0xFFFFFFFFUL - rdev->mc.agp_base - rdev->mc.gtt_size; |
@@ -972,13 +968,16 @@ int rv770_suspend(struct radeon_device *rdev) | |||
972 | /* FIXME: we should wait for ring to be empty */ | 968 | /* FIXME: we should wait for ring to be empty */ |
973 | r700_cp_stop(rdev); | 969 | r700_cp_stop(rdev); |
974 | rdev->cp.ready = false; | 970 | rdev->cp.ready = false; |
971 | r600_irq_suspend(rdev); | ||
975 | r600_wb_disable(rdev); | 972 | r600_wb_disable(rdev); |
976 | rv770_pcie_gart_disable(rdev); | 973 | rv770_pcie_gart_disable(rdev); |
977 | /* unpin shaders bo */ | 974 | /* unpin shaders bo */ |
978 | r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); | 975 | if (rdev->r600_blit.shader_obj) { |
979 | if (likely(r == 0)) { | 976 | r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); |
980 | radeon_bo_unpin(rdev->r600_blit.shader_obj); | 977 | if (likely(r == 0)) { |
981 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); | 978 | radeon_bo_unpin(rdev->r600_blit.shader_obj); |
979 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); | ||
980 | } | ||
982 | } | 981 | } |
983 | return 0; | 982 | return 0; |
984 | } | 983 | } |
@@ -1037,6 +1036,11 @@ int rv770_init(struct radeon_device *rdev) | |||
1037 | r = radeon_fence_driver_init(rdev); | 1036 | r = radeon_fence_driver_init(rdev); |
1038 | if (r) | 1037 | if (r) |
1039 | return r; | 1038 | return r; |
1039 | if (rdev->flags & RADEON_IS_AGP) { | ||
1040 | r = radeon_agp_init(rdev); | ||
1041 | if (r) | ||
1042 | radeon_agp_disable(rdev); | ||
1043 | } | ||
1040 | r = rv770_mc_init(rdev); | 1044 | r = rv770_mc_init(rdev); |
1041 | if (r) | 1045 | if (r) |
1042 | return r; | 1046 | return r; |
@@ -1071,13 +1075,14 @@ int rv770_init(struct radeon_device *rdev) | |||
1071 | if (rdev->accel_working) { | 1075 | if (rdev->accel_working) { |
1072 | r = radeon_ib_pool_init(rdev); | 1076 | r = radeon_ib_pool_init(rdev); |
1073 | if (r) { | 1077 | if (r) { |
1074 | DRM_ERROR("radeon: failed initializing IB pool (%d).\n", r); | 1078 | dev_err(rdev->dev, "IB initialization failed (%d).\n", r); |
1075 | rdev->accel_working = false; | ||
1076 | } | ||
1077 | r = r600_ib_test(rdev); | ||
1078 | if (r) { | ||
1079 | DRM_ERROR("radeon: failed testing IB (%d).\n", r); | ||
1080 | rdev->accel_working = false; | 1079 | rdev->accel_working = false; |
1080 | } else { | ||
1081 | r = r600_ib_test(rdev); | ||
1082 | if (r) { | ||
1083 | dev_err(rdev->dev, "IB test failed (%d).\n", r); | ||
1084 | rdev->accel_working = false; | ||
1085 | } | ||
1081 | } | 1086 | } |
1082 | } | 1087 | } |
1083 | return 0; | 1088 | return 0; |
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index 2920f9a279e1..1a3e909b7bba 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c | |||
@@ -426,7 +426,8 @@ moved: | |||
426 | bdev->man[bo->mem.mem_type].gpu_offset; | 426 | bdev->man[bo->mem.mem_type].gpu_offset; |
427 | bo->cur_placement = bo->mem.placement; | 427 | bo->cur_placement = bo->mem.placement; |
428 | spin_unlock(&bo->lock); | 428 | spin_unlock(&bo->lock); |
429 | } | 429 | } else |
430 | bo->offset = 0; | ||
430 | 431 | ||
431 | return 0; | 432 | return 0; |
432 | 433 | ||
@@ -523,52 +524,44 @@ static int ttm_bo_cleanup_refs(struct ttm_buffer_object *bo, bool remove_all) | |||
523 | static int ttm_bo_delayed_delete(struct ttm_bo_device *bdev, bool remove_all) | 524 | static int ttm_bo_delayed_delete(struct ttm_bo_device *bdev, bool remove_all) |
524 | { | 525 | { |
525 | struct ttm_bo_global *glob = bdev->glob; | 526 | struct ttm_bo_global *glob = bdev->glob; |
526 | struct ttm_buffer_object *entry, *nentry; | 527 | struct ttm_buffer_object *entry = NULL; |
527 | struct list_head *list, *next; | 528 | int ret = 0; |
528 | int ret; | ||
529 | 529 | ||
530 | spin_lock(&glob->lru_lock); | 530 | spin_lock(&glob->lru_lock); |
531 | list_for_each_safe(list, next, &bdev->ddestroy) { | 531 | if (list_empty(&bdev->ddestroy)) |
532 | entry = list_entry(list, struct ttm_buffer_object, ddestroy); | 532 | goto out_unlock; |
533 | nentry = NULL; | ||
534 | 533 | ||
535 | /* | 534 | entry = list_first_entry(&bdev->ddestroy, |
536 | * Protect the next list entry from destruction while we | 535 | struct ttm_buffer_object, ddestroy); |
537 | * unlock the lru_lock. | 536 | kref_get(&entry->list_kref); |
538 | */ | ||
539 | 537 | ||
540 | if (next != &bdev->ddestroy) { | 538 | for (;;) { |
541 | nentry = list_entry(next, struct ttm_buffer_object, | 539 | struct ttm_buffer_object *nentry = NULL; |
542 | ddestroy); | 540 | |
541 | if (entry->ddestroy.next != &bdev->ddestroy) { | ||
542 | nentry = list_first_entry(&entry->ddestroy, | ||
543 | struct ttm_buffer_object, ddestroy); | ||
543 | kref_get(&nentry->list_kref); | 544 | kref_get(&nentry->list_kref); |
544 | } | 545 | } |
545 | kref_get(&entry->list_kref); | ||
546 | 546 | ||
547 | spin_unlock(&glob->lru_lock); | 547 | spin_unlock(&glob->lru_lock); |
548 | ret = ttm_bo_cleanup_refs(entry, remove_all); | 548 | ret = ttm_bo_cleanup_refs(entry, remove_all); |
549 | kref_put(&entry->list_kref, ttm_bo_release_list); | 549 | kref_put(&entry->list_kref, ttm_bo_release_list); |
550 | entry = nentry; | ||
551 | |||
552 | if (ret || !entry) | ||
553 | goto out; | ||
550 | 554 | ||
551 | spin_lock(&glob->lru_lock); | 555 | spin_lock(&glob->lru_lock); |
552 | if (nentry) { | 556 | if (list_empty(&entry->ddestroy)) |
553 | bool next_onlist = !list_empty(next); | ||
554 | spin_unlock(&glob->lru_lock); | ||
555 | kref_put(&nentry->list_kref, ttm_bo_release_list); | ||
556 | spin_lock(&glob->lru_lock); | ||
557 | /* | ||
558 | * Someone might have raced us and removed the | ||
559 | * next entry from the list. We don't bother restarting | ||
560 | * list traversal. | ||
561 | */ | ||
562 | |||
563 | if (!next_onlist) | ||
564 | break; | ||
565 | } | ||
566 | if (ret) | ||
567 | break; | 557 | break; |
568 | } | 558 | } |
569 | ret = !list_empty(&bdev->ddestroy); | ||
570 | spin_unlock(&glob->lru_lock); | ||
571 | 559 | ||
560 | out_unlock: | ||
561 | spin_unlock(&glob->lru_lock); | ||
562 | out: | ||
563 | if (entry) | ||
564 | kref_put(&entry->list_kref, ttm_bo_release_list); | ||
572 | return ret; | 565 | return ret; |
573 | } | 566 | } |
574 | 567 | ||
@@ -950,6 +943,14 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo, | |||
950 | ttm_flag_masked(&cur_flags, placement->busy_placement[i], | 943 | ttm_flag_masked(&cur_flags, placement->busy_placement[i], |
951 | ~TTM_PL_MASK_MEMTYPE); | 944 | ~TTM_PL_MASK_MEMTYPE); |
952 | 945 | ||
946 | |||
947 | if (mem_type == TTM_PL_SYSTEM) { | ||
948 | mem->mem_type = mem_type; | ||
949 | mem->placement = cur_flags; | ||
950 | mem->mm_node = NULL; | ||
951 | return 0; | ||
952 | } | ||
953 | |||
953 | ret = ttm_bo_mem_force_space(bo, mem_type, placement, mem, | 954 | ret = ttm_bo_mem_force_space(bo, mem_type, placement, mem, |
954 | interruptible, no_wait); | 955 | interruptible, no_wait); |
955 | if (ret == 0 && mem->mm_node) { | 956 | if (ret == 0 && mem->mm_node) { |
@@ -1844,6 +1845,9 @@ static int ttm_bo_swapout(struct ttm_mem_shrink *shrink) | |||
1844 | * anyone tries to access a ttm page. | 1845 | * anyone tries to access a ttm page. |
1845 | */ | 1846 | */ |
1846 | 1847 | ||
1848 | if (bo->bdev->driver->swap_notify) | ||
1849 | bo->bdev->driver->swap_notify(bo); | ||
1850 | |||
1847 | ret = ttm_tt_swapout(bo->ttm, bo->persistant_swap_storage); | 1851 | ret = ttm_tt_swapout(bo->ttm, bo->persistant_swap_storage); |
1848 | out: | 1852 | out: |
1849 | 1853 | ||
@@ -1864,3 +1868,4 @@ void ttm_bo_swapout_all(struct ttm_bo_device *bdev) | |||
1864 | while (ttm_bo_swapout(&bdev->glob->shrink) == 0) | 1868 | while (ttm_bo_swapout(&bdev->glob->shrink) == 0) |
1865 | ; | 1869 | ; |
1866 | } | 1870 | } |
1871 | EXPORT_SYMBOL(ttm_bo_swapout_all); | ||
diff --git a/drivers/gpu/drm/ttm/ttm_lock.c b/drivers/gpu/drm/ttm/ttm_lock.c index f619ebcaa4ec..3d172ef04ee1 100644 --- a/drivers/gpu/drm/ttm/ttm_lock.c +++ b/drivers/gpu/drm/ttm/ttm_lock.c | |||
@@ -288,6 +288,7 @@ void ttm_suspend_unlock(struct ttm_lock *lock) | |||
288 | wake_up_all(&lock->queue); | 288 | wake_up_all(&lock->queue); |
289 | spin_unlock(&lock->lock); | 289 | spin_unlock(&lock->lock); |
290 | } | 290 | } |
291 | EXPORT_SYMBOL(ttm_suspend_unlock); | ||
291 | 292 | ||
292 | static bool __ttm_suspend_lock(struct ttm_lock *lock) | 293 | static bool __ttm_suspend_lock(struct ttm_lock *lock) |
293 | { | 294 | { |
@@ -309,3 +310,4 @@ void ttm_suspend_lock(struct ttm_lock *lock) | |||
309 | { | 310 | { |
310 | wait_event(lock->queue, __ttm_suspend_lock(lock)); | 311 | wait_event(lock->queue, __ttm_suspend_lock(lock)); |
311 | } | 312 | } |
313 | EXPORT_SYMBOL(ttm_suspend_lock); | ||
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c b/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c index d6f2d2b882e9..825ebe3d89d5 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c | |||
@@ -48,6 +48,15 @@ struct ttm_placement vmw_vram_placement = { | |||
48 | .busy_placement = &vram_placement_flags | 48 | .busy_placement = &vram_placement_flags |
49 | }; | 49 | }; |
50 | 50 | ||
51 | struct ttm_placement vmw_vram_sys_placement = { | ||
52 | .fpfn = 0, | ||
53 | .lpfn = 0, | ||
54 | .num_placement = 1, | ||
55 | .placement = &vram_placement_flags, | ||
56 | .num_busy_placement = 1, | ||
57 | .busy_placement = &sys_placement_flags | ||
58 | }; | ||
59 | |||
51 | struct ttm_placement vmw_vram_ne_placement = { | 60 | struct ttm_placement vmw_vram_ne_placement = { |
52 | .fpfn = 0, | 61 | .fpfn = 0, |
53 | .lpfn = 0, | 62 | .lpfn = 0, |
@@ -172,6 +181,18 @@ static int vmw_verify_access(struct ttm_buffer_object *bo, struct file *filp) | |||
172 | return 0; | 181 | return 0; |
173 | } | 182 | } |
174 | 183 | ||
184 | static void vmw_move_notify(struct ttm_buffer_object *bo, | ||
185 | struct ttm_mem_reg *new_mem) | ||
186 | { | ||
187 | if (new_mem->mem_type != TTM_PL_SYSTEM) | ||
188 | vmw_dmabuf_gmr_unbind(bo); | ||
189 | } | ||
190 | |||
191 | static void vmw_swap_notify(struct ttm_buffer_object *bo) | ||
192 | { | ||
193 | vmw_dmabuf_gmr_unbind(bo); | ||
194 | } | ||
195 | |||
175 | /** | 196 | /** |
176 | * FIXME: We're using the old vmware polling method to sync. | 197 | * FIXME: We're using the old vmware polling method to sync. |
177 | * Do this with fences instead. | 198 | * Do this with fences instead. |
@@ -225,5 +246,7 @@ struct ttm_bo_driver vmw_bo_driver = { | |||
225 | .sync_obj_wait = vmw_sync_obj_wait, | 246 | .sync_obj_wait = vmw_sync_obj_wait, |
226 | .sync_obj_flush = vmw_sync_obj_flush, | 247 | .sync_obj_flush = vmw_sync_obj_flush, |
227 | .sync_obj_unref = vmw_sync_obj_unref, | 248 | .sync_obj_unref = vmw_sync_obj_unref, |
228 | .sync_obj_ref = vmw_sync_obj_ref | 249 | .sync_obj_ref = vmw_sync_obj_ref, |
250 | .move_notify = vmw_move_notify, | ||
251 | .swap_notify = vmw_swap_notify | ||
229 | }; | 252 | }; |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c index 1db1ef30be2b..dedd121d8fe7 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | |||
@@ -147,6 +147,8 @@ static char *vmw_devname = "vmwgfx"; | |||
147 | 147 | ||
148 | static int vmw_probe(struct pci_dev *, const struct pci_device_id *); | 148 | static int vmw_probe(struct pci_dev *, const struct pci_device_id *); |
149 | static void vmw_master_init(struct vmw_master *); | 149 | static void vmw_master_init(struct vmw_master *); |
150 | static int vmwgfx_pm_notifier(struct notifier_block *nb, unsigned long val, | ||
151 | void *ptr); | ||
150 | 152 | ||
151 | static void vmw_print_capabilities(uint32_t capabilities) | 153 | static void vmw_print_capabilities(uint32_t capabilities) |
152 | { | 154 | { |
@@ -217,6 +219,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) | |||
217 | 219 | ||
218 | dev_priv->dev = dev; | 220 | dev_priv->dev = dev; |
219 | dev_priv->vmw_chipset = chipset; | 221 | dev_priv->vmw_chipset = chipset; |
222 | dev_priv->last_read_sequence = (uint32_t) -100; | ||
220 | mutex_init(&dev_priv->hw_mutex); | 223 | mutex_init(&dev_priv->hw_mutex); |
221 | mutex_init(&dev_priv->cmdbuf_mutex); | 224 | mutex_init(&dev_priv->cmdbuf_mutex); |
222 | rwlock_init(&dev_priv->resource_lock); | 225 | rwlock_init(&dev_priv->resource_lock); |
@@ -351,6 +354,9 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) | |||
351 | vmw_fb_init(dev_priv); | 354 | vmw_fb_init(dev_priv); |
352 | } | 355 | } |
353 | 356 | ||
357 | dev_priv->pm_nb.notifier_call = vmwgfx_pm_notifier; | ||
358 | register_pm_notifier(&dev_priv->pm_nb); | ||
359 | |||
354 | return 0; | 360 | return 0; |
355 | 361 | ||
356 | out_no_device: | 362 | out_no_device: |
@@ -385,6 +391,8 @@ static int vmw_driver_unload(struct drm_device *dev) | |||
385 | 391 | ||
386 | DRM_INFO(VMWGFX_DRIVER_NAME " unload.\n"); | 392 | DRM_INFO(VMWGFX_DRIVER_NAME " unload.\n"); |
387 | 393 | ||
394 | unregister_pm_notifier(&dev_priv->pm_nb); | ||
395 | |||
388 | if (!dev_priv->stealth) { | 396 | if (!dev_priv->stealth) { |
389 | vmw_fb_close(dev_priv); | 397 | vmw_fb_close(dev_priv); |
390 | vmw_kms_close(dev_priv); | 398 | vmw_kms_close(dev_priv); |
@@ -650,6 +658,57 @@ static void vmw_remove(struct pci_dev *pdev) | |||
650 | drm_put_dev(dev); | 658 | drm_put_dev(dev); |
651 | } | 659 | } |
652 | 660 | ||
661 | static int vmwgfx_pm_notifier(struct notifier_block *nb, unsigned long val, | ||
662 | void *ptr) | ||
663 | { | ||
664 | struct vmw_private *dev_priv = | ||
665 | container_of(nb, struct vmw_private, pm_nb); | ||
666 | struct vmw_master *vmaster = dev_priv->active_master; | ||
667 | |||
668 | switch (val) { | ||
669 | case PM_HIBERNATION_PREPARE: | ||
670 | case PM_SUSPEND_PREPARE: | ||
671 | ttm_suspend_lock(&vmaster->lock); | ||
672 | |||
673 | /** | ||
674 | * This empties VRAM and unbinds all GMR bindings. | ||
675 | * Buffer contents is moved to swappable memory. | ||
676 | */ | ||
677 | ttm_bo_swapout_all(&dev_priv->bdev); | ||
678 | break; | ||
679 | case PM_POST_HIBERNATION: | ||
680 | case PM_POST_SUSPEND: | ||
681 | ttm_suspend_unlock(&vmaster->lock); | ||
682 | break; | ||
683 | case PM_RESTORE_PREPARE: | ||
684 | break; | ||
685 | case PM_POST_RESTORE: | ||
686 | break; | ||
687 | default: | ||
688 | break; | ||
689 | } | ||
690 | return 0; | ||
691 | } | ||
692 | |||
693 | /** | ||
694 | * These might not be needed with the virtual SVGA device. | ||
695 | */ | ||
696 | |||
697 | int vmw_pci_suspend(struct pci_dev *pdev, pm_message_t state) | ||
698 | { | ||
699 | pci_save_state(pdev); | ||
700 | pci_disable_device(pdev); | ||
701 | pci_set_power_state(pdev, PCI_D3hot); | ||
702 | return 0; | ||
703 | } | ||
704 | |||
705 | int vmw_pci_resume(struct pci_dev *pdev) | ||
706 | { | ||
707 | pci_set_power_state(pdev, PCI_D0); | ||
708 | pci_restore_state(pdev); | ||
709 | return pci_enable_device(pdev); | ||
710 | } | ||
711 | |||
653 | static struct drm_driver driver = { | 712 | static struct drm_driver driver = { |
654 | .driver_features = DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | | 713 | .driver_features = DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | |
655 | DRIVER_MODESET, | 714 | DRIVER_MODESET, |
@@ -689,7 +748,9 @@ static struct drm_driver driver = { | |||
689 | .name = VMWGFX_DRIVER_NAME, | 748 | .name = VMWGFX_DRIVER_NAME, |
690 | .id_table = vmw_pci_id_list, | 749 | .id_table = vmw_pci_id_list, |
691 | .probe = vmw_probe, | 750 | .probe = vmw_probe, |
692 | .remove = vmw_remove | 751 | .remove = vmw_remove, |
752 | .suspend = vmw_pci_suspend, | ||
753 | .resume = vmw_pci_resume | ||
693 | }, | 754 | }, |
694 | .name = VMWGFX_DRIVER_NAME, | 755 | .name = VMWGFX_DRIVER_NAME, |
695 | .desc = VMWGFX_DRIVER_DESC, | 756 | .desc = VMWGFX_DRIVER_DESC, |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h index e61bd85b6975..50529a7f06fb 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | |||
@@ -32,6 +32,7 @@ | |||
32 | #include "drmP.h" | 32 | #include "drmP.h" |
33 | #include "vmwgfx_drm.h" | 33 | #include "vmwgfx_drm.h" |
34 | #include "drm_hashtab.h" | 34 | #include "drm_hashtab.h" |
35 | #include "linux/suspend.h" | ||
35 | #include "ttm/ttm_bo_driver.h" | 36 | #include "ttm/ttm_bo_driver.h" |
36 | #include "ttm/ttm_object.h" | 37 | #include "ttm/ttm_object.h" |
37 | #include "ttm/ttm_lock.h" | 38 | #include "ttm/ttm_lock.h" |
@@ -258,6 +259,7 @@ struct vmw_private { | |||
258 | 259 | ||
259 | struct vmw_master *active_master; | 260 | struct vmw_master *active_master; |
260 | struct vmw_master fbdev_master; | 261 | struct vmw_master fbdev_master; |
262 | struct notifier_block pm_nb; | ||
261 | }; | 263 | }; |
262 | 264 | ||
263 | static inline struct vmw_private *vmw_priv(struct drm_device *dev) | 265 | static inline struct vmw_private *vmw_priv(struct drm_device *dev) |
@@ -353,6 +355,7 @@ extern int vmw_dmabuf_to_start_of_vram(struct vmw_private *vmw_priv, | |||
353 | struct vmw_dma_buffer *bo); | 355 | struct vmw_dma_buffer *bo); |
354 | extern int vmw_dmabuf_from_vram(struct vmw_private *vmw_priv, | 356 | extern int vmw_dmabuf_from_vram(struct vmw_private *vmw_priv, |
355 | struct vmw_dma_buffer *bo); | 357 | struct vmw_dma_buffer *bo); |
358 | extern void vmw_dmabuf_gmr_unbind(struct ttm_buffer_object *bo); | ||
356 | extern int vmw_stream_claim_ioctl(struct drm_device *dev, void *data, | 359 | extern int vmw_stream_claim_ioctl(struct drm_device *dev, void *data, |
357 | struct drm_file *file_priv); | 360 | struct drm_file *file_priv); |
358 | extern int vmw_stream_unref_ioctl(struct drm_device *dev, void *data, | 361 | extern int vmw_stream_unref_ioctl(struct drm_device *dev, void *data, |
@@ -401,6 +404,7 @@ extern int vmw_mmap(struct file *filp, struct vm_area_struct *vma); | |||
401 | 404 | ||
402 | extern struct ttm_placement vmw_vram_placement; | 405 | extern struct ttm_placement vmw_vram_placement; |
403 | extern struct ttm_placement vmw_vram_ne_placement; | 406 | extern struct ttm_placement vmw_vram_ne_placement; |
407 | extern struct ttm_placement vmw_vram_sys_placement; | ||
404 | extern struct ttm_placement vmw_sys_placement; | 408 | extern struct ttm_placement vmw_sys_placement; |
405 | extern struct ttm_bo_driver vmw_bo_driver; | 409 | extern struct ttm_bo_driver vmw_bo_driver; |
406 | extern int vmw_dma_quiescent(struct drm_device *dev); | 410 | extern int vmw_dma_quiescent(struct drm_device *dev); |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c index 2e92da567403..d69caf92ffe7 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | |||
@@ -490,10 +490,29 @@ static int vmw_validate_single_buffer(struct vmw_private *dev_priv, | |||
490 | if (vmw_dmabuf_gmr(bo) != SVGA_GMR_NULL) | 490 | if (vmw_dmabuf_gmr(bo) != SVGA_GMR_NULL) |
491 | return 0; | 491 | return 0; |
492 | 492 | ||
493 | /** | ||
494 | * Put BO in VRAM, only if there is space. | ||
495 | */ | ||
496 | |||
497 | ret = ttm_bo_validate(bo, &vmw_vram_sys_placement, true, false); | ||
498 | if (unlikely(ret == -ERESTARTSYS)) | ||
499 | return ret; | ||
500 | |||
501 | /** | ||
502 | * Otherwise, set it up as GMR. | ||
503 | */ | ||
504 | |||
505 | if (vmw_dmabuf_gmr(bo) != SVGA_GMR_NULL) | ||
506 | return 0; | ||
507 | |||
493 | ret = vmw_gmr_bind(dev_priv, bo); | 508 | ret = vmw_gmr_bind(dev_priv, bo); |
494 | if (likely(ret == 0 || ret == -ERESTARTSYS)) | 509 | if (likely(ret == 0 || ret == -ERESTARTSYS)) |
495 | return ret; | 510 | return ret; |
496 | 511 | ||
512 | /** | ||
513 | * If that failed, try VRAM again, this time evicting | ||
514 | * previous contents. | ||
515 | */ | ||
497 | 516 | ||
498 | ret = ttm_bo_validate(bo, &vmw_vram_placement, true, false); | 517 | ret = ttm_bo_validate(bo, &vmw_vram_placement, true, false); |
499 | return ret; | 518 | return ret; |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c index 641dde76ada1..4f4f6432be8b 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c | |||
@@ -649,14 +649,6 @@ int vmw_dmabuf_to_start_of_vram(struct vmw_private *vmw_priv, | |||
649 | if (unlikely(ret != 0)) | 649 | if (unlikely(ret != 0)) |
650 | goto err_unlock; | 650 | goto err_unlock; |
651 | 651 | ||
652 | if (vmw_bo->gmr_bound) { | ||
653 | vmw_gmr_unbind(vmw_priv, vmw_bo->gmr_id); | ||
654 | spin_lock(&bo->glob->lru_lock); | ||
655 | ida_remove(&vmw_priv->gmr_ida, vmw_bo->gmr_id); | ||
656 | spin_unlock(&bo->glob->lru_lock); | ||
657 | vmw_bo->gmr_bound = NULL; | ||
658 | } | ||
659 | |||
660 | ret = ttm_bo_validate(bo, &ne_placement, false, false); | 652 | ret = ttm_bo_validate(bo, &ne_placement, false, false); |
661 | ttm_bo_unreserve(bo); | 653 | ttm_bo_unreserve(bo); |
662 | err_unlock: | 654 | err_unlock: |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c index 01feb48af333..f7d5f70b52dd 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c | |||
@@ -98,8 +98,7 @@ int vmw_fifo_init(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo) | |||
98 | (unsigned int) min, | 98 | (unsigned int) min, |
99 | (unsigned int) fifo->capabilities); | 99 | (unsigned int) fifo->capabilities); |
100 | 100 | ||
101 | dev_priv->fence_seq = (uint32_t) -100; | 101 | dev_priv->fence_seq = dev_priv->last_read_sequence; |
102 | dev_priv->last_read_sequence = (uint32_t) -100; | ||
103 | iowrite32(dev_priv->last_read_sequence, fifo_mem + SVGA_FIFO_FENCE); | 102 | iowrite32(dev_priv->last_read_sequence, fifo_mem + SVGA_FIFO_FENCE); |
104 | 103 | ||
105 | return vmw_fifo_send_fence(dev_priv, &dummy); | 104 | return vmw_fifo_send_fence(dev_priv, &dummy); |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c index b1af76e371c3..686692de209a 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | |||
@@ -553,9 +553,7 @@ int vmw_framebuffer_dmabuf_dirty(struct drm_framebuffer *framebuffer, | |||
553 | } *cmd; | 553 | } *cmd; |
554 | int i, increment = 1; | 554 | int i, increment = 1; |
555 | 555 | ||
556 | if (!num_clips || | 556 | if (!num_clips) { |
557 | !(dev_priv->fifo.capabilities & | ||
558 | SVGA_FIFO_CAP_SCREEN_OBJECT)) { | ||
559 | num_clips = 1; | 557 | num_clips = 1; |
560 | clips = &norect; | 558 | clips = &norect; |
561 | norect.x1 = norect.y1 = 0; | 559 | norect.x1 = norect.y1 = 0; |
@@ -574,10 +572,10 @@ int vmw_framebuffer_dmabuf_dirty(struct drm_framebuffer *framebuffer, | |||
574 | 572 | ||
575 | for (i = 0; i < num_clips; i++, clips += increment) { | 573 | for (i = 0; i < num_clips; i++, clips += increment) { |
576 | cmd[i].header = cpu_to_le32(SVGA_CMD_UPDATE); | 574 | cmd[i].header = cpu_to_le32(SVGA_CMD_UPDATE); |
577 | cmd[i].body.x = cpu_to_le32(clips[i].x1); | 575 | cmd[i].body.x = cpu_to_le32(clips->x1); |
578 | cmd[i].body.y = cpu_to_le32(clips[i].y1); | 576 | cmd[i].body.y = cpu_to_le32(clips->y1); |
579 | cmd[i].body.width = cpu_to_le32(clips[i].x2 - clips[i].x1); | 577 | cmd[i].body.width = cpu_to_le32(clips->x2 - clips->x1); |
580 | cmd[i].body.height = cpu_to_le32(clips[i].y2 - clips[i].y1); | 578 | cmd[i].body.height = cpu_to_le32(clips->y2 - clips->y1); |
581 | } | 579 | } |
582 | 580 | ||
583 | vmw_fifo_commit(dev_priv, sizeof(*cmd) * num_clips); | 581 | vmw_fifo_commit(dev_priv, sizeof(*cmd) * num_clips); |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c b/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c index bb6e6a096d25..5b6eabeb7f51 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c | |||
@@ -104,7 +104,6 @@ static int vmw_dmabuf_pin_in_vram(struct vmw_private *dev_priv, | |||
104 | bool pin, bool interruptible) | 104 | bool pin, bool interruptible) |
105 | { | 105 | { |
106 | struct ttm_buffer_object *bo = &buf->base; | 106 | struct ttm_buffer_object *bo = &buf->base; |
107 | struct ttm_bo_global *glob = bo->glob; | ||
108 | struct ttm_placement *overlay_placement = &vmw_vram_placement; | 107 | struct ttm_placement *overlay_placement = &vmw_vram_placement; |
109 | int ret; | 108 | int ret; |
110 | 109 | ||
@@ -116,14 +115,6 @@ static int vmw_dmabuf_pin_in_vram(struct vmw_private *dev_priv, | |||
116 | if (unlikely(ret != 0)) | 115 | if (unlikely(ret != 0)) |
117 | goto err; | 116 | goto err; |
118 | 117 | ||
119 | if (buf->gmr_bound) { | ||
120 | vmw_gmr_unbind(dev_priv, buf->gmr_id); | ||
121 | spin_lock(&glob->lru_lock); | ||
122 | ida_remove(&dev_priv->gmr_ida, buf->gmr_id); | ||
123 | spin_unlock(&glob->lru_lock); | ||
124 | buf->gmr_bound = NULL; | ||
125 | } | ||
126 | |||
127 | if (pin) | 118 | if (pin) |
128 | overlay_placement = &vmw_vram_ne_placement; | 119 | overlay_placement = &vmw_vram_ne_placement; |
129 | 120 | ||
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c index c012d5927f65..e01db120efff 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | |||
@@ -599,6 +599,27 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data, | |||
599 | if (unlikely(ret != 0)) | 599 | if (unlikely(ret != 0)) |
600 | goto out_err1; | 600 | goto out_err1; |
601 | 601 | ||
602 | |||
603 | if (srf->flags & (1 << 9) && | ||
604 | srf->num_sizes == 1 && | ||
605 | srf->sizes[0].width == 64 && | ||
606 | srf->sizes[0].height == 64 && | ||
607 | srf->format == SVGA3D_A8R8G8B8) { | ||
608 | |||
609 | srf->snooper.image = kmalloc(64 * 64 * 4, GFP_KERNEL); | ||
610 | /* clear the image */ | ||
611 | if (srf->snooper.image) { | ||
612 | memset(srf->snooper.image, 0x00, 64 * 64 * 4); | ||
613 | } else { | ||
614 | DRM_ERROR("Failed to allocate cursor_image\n"); | ||
615 | ret = -ENOMEM; | ||
616 | goto out_err1; | ||
617 | } | ||
618 | } else { | ||
619 | srf->snooper.image = NULL; | ||
620 | } | ||
621 | srf->snooper.crtc = NULL; | ||
622 | |||
602 | user_srf->base.shareable = false; | 623 | user_srf->base.shareable = false; |
603 | user_srf->base.tfile = NULL; | 624 | user_srf->base.tfile = NULL; |
604 | 625 | ||
@@ -622,24 +643,6 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data, | |||
622 | return ret; | 643 | return ret; |
623 | } | 644 | } |
624 | 645 | ||
625 | if (srf->flags & (1 << 9) && | ||
626 | srf->num_sizes == 1 && | ||
627 | srf->sizes[0].width == 64 && | ||
628 | srf->sizes[0].height == 64 && | ||
629 | srf->format == SVGA3D_A8R8G8B8) { | ||
630 | |||
631 | srf->snooper.image = kmalloc(64 * 64 * 4, GFP_KERNEL); | ||
632 | /* clear the image */ | ||
633 | if (srf->snooper.image) | ||
634 | memset(srf->snooper.image, 0x00, 64 * 64 * 4); | ||
635 | else | ||
636 | DRM_ERROR("Failed to allocate cursor_image\n"); | ||
637 | |||
638 | } else { | ||
639 | srf->snooper.image = NULL; | ||
640 | } | ||
641 | srf->snooper.crtc = NULL; | ||
642 | |||
643 | rep->sid = user_srf->base.hash.key; | 646 | rep->sid = user_srf->base.hash.key; |
644 | if (rep->sid == SVGA3D_INVALID_ID) | 647 | if (rep->sid == SVGA3D_INVALID_ID) |
645 | DRM_ERROR("Created bad Surface ID.\n"); | 648 | DRM_ERROR("Created bad Surface ID.\n"); |
@@ -754,20 +757,29 @@ static size_t vmw_dmabuf_acc_size(struct ttm_bo_global *glob, | |||
754 | return bo_user_size + page_array_size; | 757 | return bo_user_size + page_array_size; |
755 | } | 758 | } |
756 | 759 | ||
757 | void vmw_dmabuf_bo_free(struct ttm_buffer_object *bo) | 760 | void vmw_dmabuf_gmr_unbind(struct ttm_buffer_object *bo) |
758 | { | 761 | { |
759 | struct vmw_dma_buffer *vmw_bo = vmw_dma_buffer(bo); | 762 | struct vmw_dma_buffer *vmw_bo = vmw_dma_buffer(bo); |
760 | struct ttm_bo_global *glob = bo->glob; | 763 | struct ttm_bo_global *glob = bo->glob; |
761 | struct vmw_private *dev_priv = | 764 | struct vmw_private *dev_priv = |
762 | container_of(bo->bdev, struct vmw_private, bdev); | 765 | container_of(bo->bdev, struct vmw_private, bdev); |
763 | 766 | ||
764 | ttm_mem_global_free(glob->mem_glob, bo->acc_size); | ||
765 | if (vmw_bo->gmr_bound) { | 767 | if (vmw_bo->gmr_bound) { |
766 | vmw_gmr_unbind(dev_priv, vmw_bo->gmr_id); | 768 | vmw_gmr_unbind(dev_priv, vmw_bo->gmr_id); |
767 | spin_lock(&glob->lru_lock); | 769 | spin_lock(&glob->lru_lock); |
768 | ida_remove(&dev_priv->gmr_ida, vmw_bo->gmr_id); | 770 | ida_remove(&dev_priv->gmr_ida, vmw_bo->gmr_id); |
769 | spin_unlock(&glob->lru_lock); | 771 | spin_unlock(&glob->lru_lock); |
772 | vmw_bo->gmr_bound = false; | ||
770 | } | 773 | } |
774 | } | ||
775 | |||
776 | void vmw_dmabuf_bo_free(struct ttm_buffer_object *bo) | ||
777 | { | ||
778 | struct vmw_dma_buffer *vmw_bo = vmw_dma_buffer(bo); | ||
779 | struct ttm_bo_global *glob = bo->glob; | ||
780 | |||
781 | vmw_dmabuf_gmr_unbind(bo); | ||
782 | ttm_mem_global_free(glob->mem_glob, bo->acc_size); | ||
771 | kfree(vmw_bo); | 783 | kfree(vmw_bo); |
772 | } | 784 | } |
773 | 785 | ||
@@ -813,18 +825,10 @@ int vmw_dmabuf_init(struct vmw_private *dev_priv, | |||
813 | static void vmw_user_dmabuf_destroy(struct ttm_buffer_object *bo) | 825 | static void vmw_user_dmabuf_destroy(struct ttm_buffer_object *bo) |
814 | { | 826 | { |
815 | struct vmw_user_dma_buffer *vmw_user_bo = vmw_user_dma_buffer(bo); | 827 | struct vmw_user_dma_buffer *vmw_user_bo = vmw_user_dma_buffer(bo); |
816 | struct vmw_dma_buffer *vmw_bo = &vmw_user_bo->dma; | ||
817 | struct ttm_bo_global *glob = bo->glob; | 828 | struct ttm_bo_global *glob = bo->glob; |
818 | struct vmw_private *dev_priv = | ||
819 | container_of(bo->bdev, struct vmw_private, bdev); | ||
820 | 829 | ||
830 | vmw_dmabuf_gmr_unbind(bo); | ||
821 | ttm_mem_global_free(glob->mem_glob, bo->acc_size); | 831 | ttm_mem_global_free(glob->mem_glob, bo->acc_size); |
822 | if (vmw_bo->gmr_bound) { | ||
823 | vmw_gmr_unbind(dev_priv, vmw_bo->gmr_id); | ||
824 | spin_lock(&glob->lru_lock); | ||
825 | ida_remove(&dev_priv->gmr_ida, vmw_bo->gmr_id); | ||
826 | spin_unlock(&glob->lru_lock); | ||
827 | } | ||
828 | kfree(vmw_user_bo); | 832 | kfree(vmw_user_bo); |
829 | } | 833 | } |
830 | 834 | ||
@@ -868,7 +872,7 @@ int vmw_dmabuf_alloc_ioctl(struct drm_device *dev, void *data, | |||
868 | } | 872 | } |
869 | 873 | ||
870 | ret = vmw_dmabuf_init(dev_priv, &vmw_user_bo->dma, req->size, | 874 | ret = vmw_dmabuf_init(dev_priv, &vmw_user_bo->dma, req->size, |
871 | &vmw_vram_placement, true, | 875 | &vmw_vram_sys_placement, true, |
872 | &vmw_user_dmabuf_destroy); | 876 | &vmw_user_dmabuf_destroy); |
873 | if (unlikely(ret != 0)) | 877 | if (unlikely(ret != 0)) |
874 | return ret; | 878 | return ret; |
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c index 4b96e7a898cf..5b4d66dc1a05 100644 --- a/drivers/hid/hid-apple.c +++ b/drivers/hid/hid-apple.c | |||
@@ -431,6 +431,13 @@ static const struct hid_device_id apple_devices[] = { | |||
431 | .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, | 431 | .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, |
432 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS), | 432 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS), |
433 | .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS }, | 433 | .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS }, |
434 | { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI), | ||
435 | .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, | ||
436 | { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO), | ||
437 | .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN | | ||
438 | APPLE_ISO_KEYBOARD }, | ||
439 | { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS), | ||
440 | .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, | ||
434 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY), | 441 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY), |
435 | .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, | 442 | .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, |
436 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY), | 443 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY), |
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 80792d38d25c..eabe5f87c6c1 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c | |||
@@ -1285,6 +1285,9 @@ static const struct hid_device_id hid_blacklist[] = { | |||
1285 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) }, | 1285 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) }, |
1286 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) }, | 1286 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) }, |
1287 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) }, | 1287 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) }, |
1288 | { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) }, | ||
1289 | { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) }, | ||
1290 | { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) }, | ||
1288 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, | 1291 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, |
1289 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) }, | 1292 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) }, |
1290 | { HID_USB_DEVICE(USB_VENDOR_ID_BELKIN, USB_DEVICE_ID_FLIP_KVM) }, | 1293 | { HID_USB_DEVICE(USB_VENDOR_ID_BELKIN, USB_DEVICE_ID_FLIP_KVM) }, |
@@ -1553,6 +1556,7 @@ static const struct hid_device_id hid_ignore_list[] = { | |||
1553 | { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EARTHMATE) }, | 1556 | { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EARTHMATE) }, |
1554 | { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EM_LT20) }, | 1557 | { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EM_LT20) }, |
1555 | { HID_USB_DEVICE(USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5) }, | 1558 | { HID_USB_DEVICE(USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5) }, |
1559 | { HID_USB_DEVICE(USB_VENDOR_ID_ETT, USB_DEVICE_ID_TC5UH) }, | ||
1556 | { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0001) }, | 1560 | { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0001) }, |
1557 | { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0002) }, | 1561 | { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0002) }, |
1558 | { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0003) }, | 1562 | { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0003) }, |
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 3839340e293a..010368e649ed 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h | |||
@@ -88,6 +88,9 @@ | |||
88 | #define USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI 0x0236 | 88 | #define USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI 0x0236 |
89 | #define USB_DEVICE_ID_APPLE_WELLSPRING3_ISO 0x0237 | 89 | #define USB_DEVICE_ID_APPLE_WELLSPRING3_ISO 0x0237 |
90 | #define USB_DEVICE_ID_APPLE_WELLSPRING3_JIS 0x0238 | 90 | #define USB_DEVICE_ID_APPLE_WELLSPRING3_JIS 0x0238 |
91 | #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI 0x0239 | ||
92 | #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO 0x023a | ||
93 | #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b | ||
91 | #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a | 94 | #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a |
92 | #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b | 95 | #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b |
93 | #define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241 | 96 | #define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241 |
@@ -166,6 +169,9 @@ | |||
166 | #define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f | 169 | #define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f |
167 | #define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100 | 170 | #define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100 |
168 | 171 | ||
172 | #define USB_VENDOR_ID_ETT 0x0664 | ||
173 | #define USB_DEVICE_ID_TC5UH 0x0309 | ||
174 | |||
169 | #define USB_VENDOR_ID_EZKEY 0x0518 | 175 | #define USB_VENDOR_ID_EZKEY 0x0518 |
170 | #define USB_DEVICE_ID_BTC_8193 0x0002 | 176 | #define USB_DEVICE_ID_BTC_8193 0x0002 |
171 | 177 | ||
diff --git a/drivers/hid/hid-samsung.c b/drivers/hid/hid-samsung.c index 5b222eed0692..510dd1340597 100644 --- a/drivers/hid/hid-samsung.c +++ b/drivers/hid/hid-samsung.c | |||
@@ -39,7 +39,17 @@ | |||
39 | * | 39 | * |
40 | * 3. 135 byte report descriptor | 40 | * 3. 135 byte report descriptor |
41 | * Report #4 has an array field with logical range 0..17 instead of 1..14. | 41 | * Report #4 has an array field with logical range 0..17 instead of 1..14. |
42 | * | ||
43 | * 4. 171 byte report descriptor | ||
44 | * Report #3 has an array field with logical range 0..1 instead of 1..3. | ||
42 | */ | 45 | */ |
46 | static inline void samsung_dev_trace(struct hid_device *hdev, | ||
47 | unsigned int rsize) | ||
48 | { | ||
49 | dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " | ||
50 | "descriptor\n", rsize); | ||
51 | } | ||
52 | |||
43 | static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc, | 53 | static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc, |
44 | unsigned int rsize) | 54 | unsigned int rsize) |
45 | { | 55 | { |
@@ -47,8 +57,7 @@ static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc, | |||
47 | rdesc[177] == 0x75 && rdesc[178] == 0x30 && | 57 | rdesc[177] == 0x75 && rdesc[178] == 0x30 && |
48 | rdesc[179] == 0x95 && rdesc[180] == 0x01 && | 58 | rdesc[179] == 0x95 && rdesc[180] == 0x01 && |
49 | rdesc[182] == 0x40) { | 59 | rdesc[182] == 0x40) { |
50 | dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " | 60 | samsung_dev_trace(hdev, 184); |
51 | "descriptor\n", 184); | ||
52 | rdesc[176] = 0xff; | 61 | rdesc[176] = 0xff; |
53 | rdesc[178] = 0x08; | 62 | rdesc[178] = 0x08; |
54 | rdesc[180] = 0x06; | 63 | rdesc[180] = 0x06; |
@@ -56,17 +65,21 @@ static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc, | |||
56 | } else | 65 | } else |
57 | if (rsize == 203 && rdesc[192] == 0x15 && rdesc[193] == 0x0 && | 66 | if (rsize == 203 && rdesc[192] == 0x15 && rdesc[193] == 0x0 && |
58 | rdesc[194] == 0x25 && rdesc[195] == 0x12) { | 67 | rdesc[194] == 0x25 && rdesc[195] == 0x12) { |
59 | dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " | 68 | samsung_dev_trace(hdev, 203); |
60 | "descriptor\n", 203); | ||
61 | rdesc[193] = 0x1; | 69 | rdesc[193] = 0x1; |
62 | rdesc[195] = 0xf; | 70 | rdesc[195] = 0xf; |
63 | } else | 71 | } else |
64 | if (rsize == 135 && rdesc[124] == 0x15 && rdesc[125] == 0x0 && | 72 | if (rsize == 135 && rdesc[124] == 0x15 && rdesc[125] == 0x0 && |
65 | rdesc[126] == 0x25 && rdesc[127] == 0x11) { | 73 | rdesc[126] == 0x25 && rdesc[127] == 0x11) { |
66 | dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " | 74 | samsung_dev_trace(hdev, 135); |
67 | "descriptor\n", 135); | ||
68 | rdesc[125] = 0x1; | 75 | rdesc[125] = 0x1; |
69 | rdesc[127] = 0xe; | 76 | rdesc[127] = 0xe; |
77 | } else | ||
78 | if (rsize == 171 && rdesc[160] == 0x15 && rdesc[161] == 0x0 && | ||
79 | rdesc[162] == 0x25 && rdesc[163] == 0x01) { | ||
80 | samsung_dev_trace(hdev, 171); | ||
81 | rdesc[161] = 0x1; | ||
82 | rdesc[163] = 0x3; | ||
70 | } | 83 | } |
71 | } | 84 | } |
72 | 85 | ||
diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c index 747542172242..12dcda529201 100644 --- a/drivers/hid/hid-wacom.c +++ b/drivers/hid/hid-wacom.c | |||
@@ -142,6 +142,7 @@ static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report, | |||
142 | wdata->butstate = rw; | 142 | wdata->butstate = rw; |
143 | input_report_key(input, BTN_0, rw & 0x02); | 143 | input_report_key(input, BTN_0, rw & 0x02); |
144 | input_report_key(input, BTN_1, rw & 0x01); | 144 | input_report_key(input, BTN_1, rw & 0x01); |
145 | input_report_key(input, BTN_TOOL_FINGER, 0xf0); | ||
145 | input_event(input, EV_MSC, MSC_SERIAL, 0xf0); | 146 | input_event(input, EV_MSC, MSC_SERIAL, 0xf0); |
146 | input_sync(input); | 147 | input_sync(input); |
147 | } | 148 | } |
@@ -196,6 +197,9 @@ static int wacom_probe(struct hid_device *hdev, | |||
196 | /* Pad */ | 197 | /* Pad */ |
197 | input->evbit[0] |= BIT(EV_MSC); | 198 | input->evbit[0] |= BIT(EV_MSC); |
198 | input->mscbit[0] |= BIT(MSC_SERIAL); | 199 | input->mscbit[0] |= BIT(MSC_SERIAL); |
200 | set_bit(BTN_0, input->keybit); | ||
201 | set_bit(BTN_1, input->keybit); | ||
202 | set_bit(BTN_TOOL_FINGER, input->keybit); | ||
199 | 203 | ||
200 | /* Distance, rubber and mouse */ | 204 | /* Distance, rubber and mouse */ |
201 | input->absbit[0] |= BIT(ABS_DISTANCE); | 205 | input->absbit[0] |= BIT(ABS_DISTANCE); |
diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c index 1c89d922d619..fa9708c2d723 100644 --- a/drivers/hwmon/amc6821.c +++ b/drivers/hwmon/amc6821.c | |||
@@ -686,7 +686,6 @@ static ssize_t set_fan1_div( | |||
686 | data->fan1_div = 4; | 686 | data->fan1_div = 4; |
687 | break; | 687 | break; |
688 | default: | 688 | default: |
689 | mutex_unlock(&data->update_lock); | ||
690 | count = -EINVAL; | 689 | count = -EINVAL; |
691 | goto EXIT; | 690 | goto EXIT; |
692 | } | 691 | } |
diff --git a/drivers/hwmon/asus_atk0110.c b/drivers/hwmon/asus_atk0110.c index 6811346c1c62..028284f544e3 100644 --- a/drivers/hwmon/asus_atk0110.c +++ b/drivers/hwmon/asus_atk0110.c | |||
@@ -1329,17 +1329,16 @@ static int atk_add(struct acpi_device *device) | |||
1329 | &buf, ACPI_TYPE_PACKAGE); | 1329 | &buf, ACPI_TYPE_PACKAGE); |
1330 | if (ret != AE_OK) { | 1330 | if (ret != AE_OK) { |
1331 | dev_dbg(&device->dev, "atk: method MBIF not found\n"); | 1331 | dev_dbg(&device->dev, "atk: method MBIF not found\n"); |
1332 | err = -ENODEV; | 1332 | } else { |
1333 | goto out; | 1333 | obj = buf.pointer; |
1334 | } | 1334 | if (obj->package.count >= 2) { |
1335 | 1335 | union acpi_object *id = &obj->package.elements[1]; | |
1336 | obj = buf.pointer; | 1336 | if (id->type == ACPI_TYPE_STRING) |
1337 | if (obj->package.count >= 2 && | 1337 | dev_dbg(&device->dev, "board ID = %s\n", |
1338 | obj->package.elements[1].type == ACPI_TYPE_STRING) { | 1338 | id->string.pointer); |
1339 | dev_dbg(&device->dev, "board ID = %s\n", | 1339 | } |
1340 | obj->package.elements[1].string.pointer); | 1340 | ACPI_FREE(buf.pointer); |
1341 | } | 1341 | } |
1342 | ACPI_FREE(buf.pointer); | ||
1343 | 1342 | ||
1344 | err = atk_probe_if(data); | 1343 | err = atk_probe_if(data); |
1345 | if (err) { | 1344 | if (err) { |
diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c index bd0fc67e804b..fa0728232e71 100644 --- a/drivers/hwmon/fschmd.c +++ b/drivers/hwmon/fschmd.c | |||
@@ -768,6 +768,7 @@ leave: | |||
768 | static int watchdog_open(struct inode *inode, struct file *filp) | 768 | static int watchdog_open(struct inode *inode, struct file *filp) |
769 | { | 769 | { |
770 | struct fschmd_data *pos, *data = NULL; | 770 | struct fschmd_data *pos, *data = NULL; |
771 | int watchdog_is_open; | ||
771 | 772 | ||
772 | /* We get called from drivers/char/misc.c with misc_mtx hold, and we | 773 | /* We get called from drivers/char/misc.c with misc_mtx hold, and we |
773 | call misc_register() from fschmd_probe() with watchdog_data_mutex | 774 | call misc_register() from fschmd_probe() with watchdog_data_mutex |
@@ -782,10 +783,12 @@ static int watchdog_open(struct inode *inode, struct file *filp) | |||
782 | } | 783 | } |
783 | } | 784 | } |
784 | /* Note we can never not have found data, so we don't check for this */ | 785 | /* Note we can never not have found data, so we don't check for this */ |
785 | kref_get(&data->kref); | 786 | watchdog_is_open = test_and_set_bit(0, &data->watchdog_is_open); |
787 | if (!watchdog_is_open) | ||
788 | kref_get(&data->kref); | ||
786 | mutex_unlock(&watchdog_data_mutex); | 789 | mutex_unlock(&watchdog_data_mutex); |
787 | 790 | ||
788 | if (test_and_set_bit(0, &data->watchdog_is_open)) | 791 | if (watchdog_is_open) |
789 | return -EBUSY; | 792 | return -EBUSY; |
790 | 793 | ||
791 | /* Start the watchdog */ | 794 | /* Start the watchdog */ |
diff --git a/drivers/hwmon/smsc47m1.c b/drivers/hwmon/smsc47m1.c index 9ca97818bd4b..8fa462f2b570 100644 --- a/drivers/hwmon/smsc47m1.c +++ b/drivers/hwmon/smsc47m1.c | |||
@@ -488,7 +488,7 @@ static int __init smsc47m1_find(unsigned short *addr, | |||
488 | } | 488 | } |
489 | 489 | ||
490 | /* Restore device to its initial state */ | 490 | /* Restore device to its initial state */ |
491 | static void __init smsc47m1_restore(const struct smsc47m1_sio_data *sio_data) | 491 | static void smsc47m1_restore(const struct smsc47m1_sio_data *sio_data) |
492 | { | 492 | { |
493 | if ((sio_data->activate & 0x01) == 0) { | 493 | if ((sio_data->activate & 0x01) == 0) { |
494 | superio_enter(); | 494 | superio_enter(); |
diff --git a/drivers/i2c/busses/i2c-ali1563.c b/drivers/i2c/busses/i2c-ali1563.c index f70f46582c6c..4687af40dd50 100644 --- a/drivers/i2c/busses/i2c-ali1563.c +++ b/drivers/i2c/busses/i2c-ali1563.c | |||
@@ -87,9 +87,9 @@ static int ali1563_transaction(struct i2c_adapter * a, int size) | |||
87 | outb_p(inb_p(SMB_HST_CNTL2) | HST_CNTL2_START, SMB_HST_CNTL2); | 87 | outb_p(inb_p(SMB_HST_CNTL2) | HST_CNTL2_START, SMB_HST_CNTL2); |
88 | 88 | ||
89 | timeout = ALI1563_MAX_TIMEOUT; | 89 | timeout = ALI1563_MAX_TIMEOUT; |
90 | do | 90 | do { |
91 | msleep(1); | 91 | msleep(1); |
92 | while (((data = inb_p(SMB_HST_STS)) & HST_STS_BUSY) && --timeout); | 92 | } while (((data = inb_p(SMB_HST_STS)) & HST_STS_BUSY) && --timeout); |
93 | 93 | ||
94 | dev_dbg(&a->dev, "Transaction (post): STS=%02x, CNTL1=%02x, " | 94 | dev_dbg(&a->dev, "Transaction (post): STS=%02x, CNTL1=%02x, " |
95 | "CNTL2=%02x, CMD=%02x, ADD=%02x, DAT0=%02x, DAT1=%02x\n", | 95 | "CNTL2=%02x, CMD=%02x, ADD=%02x, DAT0=%02x, DAT1=%02x\n", |
@@ -157,9 +157,9 @@ static int ali1563_block_start(struct i2c_adapter * a) | |||
157 | outb_p(inb_p(SMB_HST_CNTL2) | HST_CNTL2_START, SMB_HST_CNTL2); | 157 | outb_p(inb_p(SMB_HST_CNTL2) | HST_CNTL2_START, SMB_HST_CNTL2); |
158 | 158 | ||
159 | timeout = ALI1563_MAX_TIMEOUT; | 159 | timeout = ALI1563_MAX_TIMEOUT; |
160 | do | 160 | do { |
161 | msleep(1); | 161 | msleep(1); |
162 | while (!((data = inb_p(SMB_HST_STS)) & HST_STS_DONE) && --timeout); | 162 | } while (!((data = inb_p(SMB_HST_STS)) & HST_STS_DONE) && --timeout); |
163 | 163 | ||
164 | dev_dbg(&a->dev, "Block (post): STS=%02x, CNTL1=%02x, " | 164 | dev_dbg(&a->dev, "Block (post): STS=%02x, CNTL1=%02x, " |
165 | "CNTL2=%02x, CMD=%02x, ADD=%02x, DAT0=%02x, DAT1=%02x\n", | 165 | "CNTL2=%02x, CMD=%02x, ADD=%02x, DAT0=%02x, DAT1=%02x\n", |
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c index e3654d683e15..75bf820e7ccb 100644 --- a/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c | |||
@@ -226,7 +226,6 @@ static void i2c_imx_stop(struct imx_i2c_struct *i2c_imx) | |||
226 | temp = readb(i2c_imx->base + IMX_I2C_I2CR); | 226 | temp = readb(i2c_imx->base + IMX_I2C_I2CR); |
227 | temp &= ~(I2CR_MSTA | I2CR_MTX); | 227 | temp &= ~(I2CR_MSTA | I2CR_MTX); |
228 | writeb(temp, i2c_imx->base + IMX_I2C_I2CR); | 228 | writeb(temp, i2c_imx->base + IMX_I2C_I2CR); |
229 | i2c_imx->stopped = 1; | ||
230 | } | 229 | } |
231 | if (cpu_is_mx1()) { | 230 | if (cpu_is_mx1()) { |
232 | /* | 231 | /* |
@@ -236,8 +235,10 @@ static void i2c_imx_stop(struct imx_i2c_struct *i2c_imx) | |||
236 | udelay(i2c_imx->disable_delay); | 235 | udelay(i2c_imx->disable_delay); |
237 | } | 236 | } |
238 | 237 | ||
239 | if (!i2c_imx->stopped) | 238 | if (!i2c_imx->stopped) { |
240 | i2c_imx_bus_busy(i2c_imx, 0); | 239 | i2c_imx_bus_busy(i2c_imx, 0); |
240 | i2c_imx->stopped = 1; | ||
241 | } | ||
241 | 242 | ||
242 | /* Disable I2C controller */ | 243 | /* Disable I2C controller */ |
243 | writeb(0, i2c_imx->base + IMX_I2C_I2CR); | 244 | writeb(0, i2c_imx->base + IMX_I2C_I2CR); |
@@ -496,22 +497,23 @@ static int __init i2c_imx_probe(struct platform_device *pdev) | |||
496 | } | 497 | } |
497 | 498 | ||
498 | res_size = resource_size(res); | 499 | res_size = resource_size(res); |
500 | |||
501 | if (!request_mem_region(res->start, res_size, DRIVER_NAME)) { | ||
502 | ret = -EBUSY; | ||
503 | goto fail0; | ||
504 | } | ||
505 | |||
499 | base = ioremap(res->start, res_size); | 506 | base = ioremap(res->start, res_size); |
500 | if (!base) { | 507 | if (!base) { |
501 | dev_err(&pdev->dev, "ioremap failed\n"); | 508 | dev_err(&pdev->dev, "ioremap failed\n"); |
502 | ret = -EIO; | 509 | ret = -EIO; |
503 | goto fail0; | 510 | goto fail1; |
504 | } | 511 | } |
505 | 512 | ||
506 | i2c_imx = kzalloc(sizeof(struct imx_i2c_struct), GFP_KERNEL); | 513 | i2c_imx = kzalloc(sizeof(struct imx_i2c_struct), GFP_KERNEL); |
507 | if (!i2c_imx) { | 514 | if (!i2c_imx) { |
508 | dev_err(&pdev->dev, "can't allocate interface\n"); | 515 | dev_err(&pdev->dev, "can't allocate interface\n"); |
509 | ret = -ENOMEM; | 516 | ret = -ENOMEM; |
510 | goto fail1; | ||
511 | } | ||
512 | |||
513 | if (!request_mem_region(res->start, res_size, DRIVER_NAME)) { | ||
514 | ret = -EBUSY; | ||
515 | goto fail2; | 517 | goto fail2; |
516 | } | 518 | } |
517 | 519 | ||
@@ -582,11 +584,11 @@ fail5: | |||
582 | fail4: | 584 | fail4: |
583 | clk_put(i2c_imx->clk); | 585 | clk_put(i2c_imx->clk); |
584 | fail3: | 586 | fail3: |
585 | release_mem_region(i2c_imx->res->start, resource_size(res)); | ||
586 | fail2: | ||
587 | kfree(i2c_imx); | 587 | kfree(i2c_imx); |
588 | fail1: | 588 | fail2: |
589 | iounmap(base); | 589 | iounmap(base); |
590 | fail1: | ||
591 | release_mem_region(res->start, resource_size(res)); | ||
590 | fail0: | 592 | fail0: |
591 | if (pdata && pdata->exit) | 593 | if (pdata && pdata->exit) |
592 | pdata->exit(&pdev->dev); | 594 | pdata->exit(&pdev->dev); |
@@ -618,8 +620,8 @@ static int __exit i2c_imx_remove(struct platform_device *pdev) | |||
618 | 620 | ||
619 | clk_put(i2c_imx->clk); | 621 | clk_put(i2c_imx->clk); |
620 | 622 | ||
621 | release_mem_region(i2c_imx->res->start, resource_size(i2c_imx->res)); | ||
622 | iounmap(i2c_imx->base); | 623 | iounmap(i2c_imx->base); |
624 | release_mem_region(i2c_imx->res->start, resource_size(i2c_imx->res)); | ||
623 | kfree(i2c_imx); | 625 | kfree(i2c_imx); |
624 | return 0; | 626 | return 0; |
625 | } | 627 | } |
diff --git a/drivers/i2c/busses/i2c-pca-isa.c b/drivers/i2c/busses/i2c-pca-isa.c index 0ed68e2ccd22..f7346a9bd95f 100644 --- a/drivers/i2c/busses/i2c-pca-isa.c +++ b/drivers/i2c/busses/i2c-pca-isa.c | |||
@@ -75,7 +75,7 @@ static int pca_isa_waitforcompletion(void *pd) | |||
75 | unsigned long timeout; | 75 | unsigned long timeout; |
76 | 76 | ||
77 | if (irq > -1) { | 77 | if (irq > -1) { |
78 | ret = wait_event_interruptible_timeout(pca_wait, | 78 | ret = wait_event_timeout(pca_wait, |
79 | pca_isa_readbyte(pd, I2C_PCA_CON) | 79 | pca_isa_readbyte(pd, I2C_PCA_CON) |
80 | & I2C_PCA_CON_SI, pca_isa_ops.timeout); | 80 | & I2C_PCA_CON_SI, pca_isa_ops.timeout); |
81 | } else { | 81 | } else { |
@@ -96,7 +96,7 @@ static void pca_isa_resetchip(void *pd) | |||
96 | } | 96 | } |
97 | 97 | ||
98 | static irqreturn_t pca_handler(int this_irq, void *dev_id) { | 98 | static irqreturn_t pca_handler(int this_irq, void *dev_id) { |
99 | wake_up_interruptible(&pca_wait); | 99 | wake_up(&pca_wait); |
100 | return IRQ_HANDLED; | 100 | return IRQ_HANDLED; |
101 | } | 101 | } |
102 | 102 | ||
diff --git a/drivers/i2c/busses/i2c-pca-platform.c b/drivers/i2c/busses/i2c-pca-platform.c index c4df9d411cd5..5b2213df5ed0 100644 --- a/drivers/i2c/busses/i2c-pca-platform.c +++ b/drivers/i2c/busses/i2c-pca-platform.c | |||
@@ -84,7 +84,7 @@ static int i2c_pca_pf_waitforcompletion(void *pd) | |||
84 | unsigned long timeout; | 84 | unsigned long timeout; |
85 | 85 | ||
86 | if (i2c->irq) { | 86 | if (i2c->irq) { |
87 | ret = wait_event_interruptible_timeout(i2c->wait, | 87 | ret = wait_event_timeout(i2c->wait, |
88 | i2c->algo_data.read_byte(i2c, I2C_PCA_CON) | 88 | i2c->algo_data.read_byte(i2c, I2C_PCA_CON) |
89 | & I2C_PCA_CON_SI, i2c->adap.timeout); | 89 | & I2C_PCA_CON_SI, i2c->adap.timeout); |
90 | } else { | 90 | } else { |
@@ -122,7 +122,7 @@ static irqreturn_t i2c_pca_pf_handler(int this_irq, void *dev_id) | |||
122 | if ((i2c->algo_data.read_byte(i2c, I2C_PCA_CON) & I2C_PCA_CON_SI) == 0) | 122 | if ((i2c->algo_data.read_byte(i2c, I2C_PCA_CON) & I2C_PCA_CON_SI) == 0) |
123 | return IRQ_NONE; | 123 | return IRQ_NONE; |
124 | 124 | ||
125 | wake_up_interruptible(&i2c->wait); | 125 | wake_up(&i2c->wait); |
126 | 126 | ||
127 | return IRQ_HANDLED; | 127 | return IRQ_HANDLED; |
128 | } | 128 | } |
diff --git a/drivers/i2c/busses/i2c-piix4.c b/drivers/i2c/busses/i2c-piix4.c index 1e245e9cad31..e56e4b6823ca 100644 --- a/drivers/i2c/busses/i2c-piix4.c +++ b/drivers/i2c/busses/i2c-piix4.c | |||
@@ -324,12 +324,12 @@ static int piix4_transaction(void) | |||
324 | else | 324 | else |
325 | msleep(1); | 325 | msleep(1); |
326 | 326 | ||
327 | while ((timeout++ < MAX_TIMEOUT) && | 327 | while ((++timeout < MAX_TIMEOUT) && |
328 | ((temp = inb_p(SMBHSTSTS)) & 0x01)) | 328 | ((temp = inb_p(SMBHSTSTS)) & 0x01)) |
329 | msleep(1); | 329 | msleep(1); |
330 | 330 | ||
331 | /* If the SMBus is still busy, we give up */ | 331 | /* If the SMBus is still busy, we give up */ |
332 | if (timeout >= MAX_TIMEOUT) { | 332 | if (timeout == MAX_TIMEOUT) { |
333 | dev_err(&piix4_adapter.dev, "SMBus Timeout!\n"); | 333 | dev_err(&piix4_adapter.dev, "SMBus Timeout!\n"); |
334 | result = -ETIMEDOUT; | 334 | result = -ETIMEDOUT; |
335 | } | 335 | } |
diff --git a/drivers/i2c/busses/i2c-viapro.c b/drivers/i2c/busses/i2c-viapro.c index e4b1543015af..a84a909e1234 100644 --- a/drivers/i2c/busses/i2c-viapro.c +++ b/drivers/i2c/busses/i2c-viapro.c | |||
@@ -165,10 +165,10 @@ static int vt596_transaction(u8 size) | |||
165 | do { | 165 | do { |
166 | msleep(1); | 166 | msleep(1); |
167 | temp = inb_p(SMBHSTSTS); | 167 | temp = inb_p(SMBHSTSTS); |
168 | } while ((temp & 0x01) && (timeout++ < MAX_TIMEOUT)); | 168 | } while ((temp & 0x01) && (++timeout < MAX_TIMEOUT)); |
169 | 169 | ||
170 | /* If the SMBus is still busy, we give up */ | 170 | /* If the SMBus is still busy, we give up */ |
171 | if (timeout >= MAX_TIMEOUT) { | 171 | if (timeout == MAX_TIMEOUT) { |
172 | result = -ETIMEDOUT; | 172 | result = -ETIMEDOUT; |
173 | dev_err(&vt596_adapter.dev, "SMBus timeout!\n"); | 173 | dev_err(&vt596_adapter.dev, "SMBus timeout!\n"); |
174 | } | 174 | } |
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index 0ac2f90ab840..10be7b5fbe97 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c | |||
@@ -248,7 +248,7 @@ static const struct attribute_group *i2c_dev_attr_groups[] = { | |||
248 | NULL | 248 | NULL |
249 | }; | 249 | }; |
250 | 250 | ||
251 | const static struct dev_pm_ops i2c_device_pm_ops = { | 251 | static const struct dev_pm_ops i2c_device_pm_ops = { |
252 | .suspend = i2c_device_pm_suspend, | 252 | .suspend = i2c_device_pm_suspend, |
253 | .resume = i2c_device_pm_resume, | 253 | .resume = i2c_device_pm_resume, |
254 | }; | 254 | }; |
@@ -843,6 +843,9 @@ int i2c_del_adapter(struct i2c_adapter *adap) | |||
843 | adap->dev.parent); | 843 | adap->dev.parent); |
844 | #endif | 844 | #endif |
845 | 845 | ||
846 | /* device name is gone after device_unregister */ | ||
847 | dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name); | ||
848 | |||
846 | /* clean up the sysfs representation */ | 849 | /* clean up the sysfs representation */ |
847 | init_completion(&adap->dev_released); | 850 | init_completion(&adap->dev_released); |
848 | device_unregister(&adap->dev); | 851 | device_unregister(&adap->dev); |
@@ -855,8 +858,6 @@ int i2c_del_adapter(struct i2c_adapter *adap) | |||
855 | idr_remove(&i2c_adapter_idr, adap->nr); | 858 | idr_remove(&i2c_adapter_idr, adap->nr); |
856 | mutex_unlock(&core_lock); | 859 | mutex_unlock(&core_lock); |
857 | 860 | ||
858 | dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name); | ||
859 | |||
860 | /* Clear the device structure in case this adapter is ever going to be | 861 | /* Clear the device structure in case this adapter is ever going to be |
861 | added again */ | 862 | added again */ |
862 | memset(&adap->dev, 0, sizeof(adap->dev)); | 863 | memset(&adap->dev, 0, sizeof(adap->dev)); |
diff --git a/drivers/infiniband/hw/ipath/ipath_fs.c b/drivers/infiniband/hw/ipath/ipath_fs.c index b3684060465e..100da8542bba 100644 --- a/drivers/infiniband/hw/ipath/ipath_fs.c +++ b/drivers/infiniband/hw/ipath/ipath_fs.c | |||
@@ -346,10 +346,8 @@ static int ipathfs_fill_super(struct super_block *sb, void *data, | |||
346 | list_for_each_entry_safe(dd, tmp, &ipath_dev_list, ipath_list) { | 346 | list_for_each_entry_safe(dd, tmp, &ipath_dev_list, ipath_list) { |
347 | spin_unlock_irqrestore(&ipath_devs_lock, flags); | 347 | spin_unlock_irqrestore(&ipath_devs_lock, flags); |
348 | ret = create_device_files(sb, dd); | 348 | ret = create_device_files(sb, dd); |
349 | if (ret) { | 349 | if (ret) |
350 | deactivate_locked_super(sb); | ||
351 | goto bail; | 350 | goto bail; |
352 | } | ||
353 | spin_lock_irqsave(&ipath_devs_lock, flags); | 351 | spin_lock_irqsave(&ipath_devs_lock, flags); |
354 | } | 352 | } |
355 | 353 | ||
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c index dee6706038aa..258c639571b5 100644 --- a/drivers/input/evdev.c +++ b/drivers/input/evdev.c | |||
@@ -59,7 +59,8 @@ static void evdev_pass_event(struct evdev_client *client, | |||
59 | client->head &= EVDEV_BUFFER_SIZE - 1; | 59 | client->head &= EVDEV_BUFFER_SIZE - 1; |
60 | spin_unlock(&client->buffer_lock); | 60 | spin_unlock(&client->buffer_lock); |
61 | 61 | ||
62 | kill_fasync(&client->fasync, SIGIO, POLL_IN); | 62 | if (event->type == EV_SYN) |
63 | kill_fasync(&client->fasync, SIGIO, POLL_IN); | ||
63 | } | 64 | } |
64 | 65 | ||
65 | /* | 66 | /* |
diff --git a/drivers/input/input.c b/drivers/input/input.c index ab060710688f..86cb2d2196ff 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/mutex.h> | 24 | #include <linux/mutex.h> |
25 | #include <linux/rcupdate.h> | 25 | #include <linux/rcupdate.h> |
26 | #include <linux/smp_lock.h> | 26 | #include <linux/smp_lock.h> |
27 | #include "input-compat.h" | ||
27 | 28 | ||
28 | MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>"); | 29 | MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>"); |
29 | MODULE_DESCRIPTION("Input core"); | 30 | MODULE_DESCRIPTION("Input core"); |
@@ -45,6 +46,7 @@ static unsigned int input_abs_bypass_init_data[] __initdata = { | |||
45 | ABS_MT_TOOL_TYPE, | 46 | ABS_MT_TOOL_TYPE, |
46 | ABS_MT_BLOB_ID, | 47 | ABS_MT_BLOB_ID, |
47 | ABS_MT_TRACKING_ID, | 48 | ABS_MT_TRACKING_ID, |
49 | ABS_MT_PRESSURE, | ||
48 | 0 | 50 | 0 |
49 | }; | 51 | }; |
50 | static unsigned long input_abs_bypass[BITS_TO_LONGS(ABS_CNT)]; | 52 | static unsigned long input_abs_bypass[BITS_TO_LONGS(ABS_CNT)]; |
@@ -764,6 +766,40 @@ static int input_attach_handler(struct input_dev *dev, struct input_handler *han | |||
764 | return error; | 766 | return error; |
765 | } | 767 | } |
766 | 768 | ||
769 | #ifdef CONFIG_COMPAT | ||
770 | |||
771 | static int input_bits_to_string(char *buf, int buf_size, | ||
772 | unsigned long bits, bool skip_empty) | ||
773 | { | ||
774 | int len = 0; | ||
775 | |||
776 | if (INPUT_COMPAT_TEST) { | ||
777 | u32 dword = bits >> 32; | ||
778 | if (dword || !skip_empty) | ||
779 | len += snprintf(buf, buf_size, "%x ", dword); | ||
780 | |||
781 | dword = bits & 0xffffffffUL; | ||
782 | if (dword || !skip_empty || len) | ||
783 | len += snprintf(buf + len, max(buf_size - len, 0), | ||
784 | "%x", dword); | ||
785 | } else { | ||
786 | if (bits || !skip_empty) | ||
787 | len += snprintf(buf, buf_size, "%lx", bits); | ||
788 | } | ||
789 | |||
790 | return len; | ||
791 | } | ||
792 | |||
793 | #else /* !CONFIG_COMPAT */ | ||
794 | |||
795 | static int input_bits_to_string(char *buf, int buf_size, | ||
796 | unsigned long bits, bool skip_empty) | ||
797 | { | ||
798 | return bits || !skip_empty ? | ||
799 | snprintf(buf, buf_size, "%lx", bits) : 0; | ||
800 | } | ||
801 | |||
802 | #endif | ||
767 | 803 | ||
768 | #ifdef CONFIG_PROC_FS | 804 | #ifdef CONFIG_PROC_FS |
769 | 805 | ||
@@ -832,14 +868,25 @@ static void input_seq_print_bitmap(struct seq_file *seq, const char *name, | |||
832 | unsigned long *bitmap, int max) | 868 | unsigned long *bitmap, int max) |
833 | { | 869 | { |
834 | int i; | 870 | int i; |
835 | 871 | bool skip_empty = true; | |
836 | for (i = BITS_TO_LONGS(max) - 1; i > 0; i--) | 872 | char buf[18]; |
837 | if (bitmap[i]) | ||
838 | break; | ||
839 | 873 | ||
840 | seq_printf(seq, "B: %s=", name); | 874 | seq_printf(seq, "B: %s=", name); |
841 | for (; i >= 0; i--) | 875 | |
842 | seq_printf(seq, "%lx%s", bitmap[i], i > 0 ? " " : ""); | 876 | for (i = BITS_TO_LONGS(max) - 1; i >= 0; i--) { |
877 | if (input_bits_to_string(buf, sizeof(buf), | ||
878 | bitmap[i], skip_empty)) { | ||
879 | skip_empty = false; | ||
880 | seq_printf(seq, "%s%s", buf, i > 0 ? " " : ""); | ||
881 | } | ||
882 | } | ||
883 | |||
884 | /* | ||
885 | * If no output was produced print a single 0. | ||
886 | */ | ||
887 | if (skip_empty) | ||
888 | seq_puts(seq, "0"); | ||
889 | |||
843 | seq_putc(seq, '\n'); | 890 | seq_putc(seq, '\n'); |
844 | } | 891 | } |
845 | 892 | ||
@@ -1128,14 +1175,23 @@ static int input_print_bitmap(char *buf, int buf_size, unsigned long *bitmap, | |||
1128 | { | 1175 | { |
1129 | int i; | 1176 | int i; |
1130 | int len = 0; | 1177 | int len = 0; |
1178 | bool skip_empty = true; | ||
1179 | |||
1180 | for (i = BITS_TO_LONGS(max) - 1; i >= 0; i--) { | ||
1181 | len += input_bits_to_string(buf + len, max(buf_size - len, 0), | ||
1182 | bitmap[i], skip_empty); | ||
1183 | if (len) { | ||
1184 | skip_empty = false; | ||
1185 | if (i > 0) | ||
1186 | len += snprintf(buf + len, max(buf_size - len, 0), " "); | ||
1187 | } | ||
1188 | } | ||
1131 | 1189 | ||
1132 | for (i = BITS_TO_LONGS(max) - 1; i > 0; i--) | 1190 | /* |
1133 | if (bitmap[i]) | 1191 | * If no output was produced print a single 0. |
1134 | break; | 1192 | */ |
1135 | 1193 | if (len == 0) | |
1136 | for (; i >= 0; i--) | 1194 | len = snprintf(buf, buf_size, "%d", 0); |
1137 | len += snprintf(buf + len, max(buf_size - len, 0), | ||
1138 | "%lx%s", bitmap[i], i > 0 ? " " : ""); | ||
1139 | 1195 | ||
1140 | if (add_cr) | 1196 | if (add_cr) |
1141 | len += snprintf(buf + len, max(buf_size - len, 0), "\n"); | 1197 | len += snprintf(buf + len, max(buf_size - len, 0), "\n"); |
@@ -1150,7 +1206,8 @@ static ssize_t input_dev_show_cap_##bm(struct device *dev, \ | |||
1150 | { \ | 1206 | { \ |
1151 | struct input_dev *input_dev = to_input_dev(dev); \ | 1207 | struct input_dev *input_dev = to_input_dev(dev); \ |
1152 | int len = input_print_bitmap(buf, PAGE_SIZE, \ | 1208 | int len = input_print_bitmap(buf, PAGE_SIZE, \ |
1153 | input_dev->bm##bit, ev##_MAX, 1); \ | 1209 | input_dev->bm##bit, ev##_MAX, \ |
1210 | true); \ | ||
1154 | return min_t(int, len, PAGE_SIZE); \ | 1211 | return min_t(int, len, PAGE_SIZE); \ |
1155 | } \ | 1212 | } \ |
1156 | static DEVICE_ATTR(bm, S_IRUGO, input_dev_show_cap_##bm, NULL) | 1213 | static DEVICE_ATTR(bm, S_IRUGO, input_dev_show_cap_##bm, NULL) |
@@ -1214,7 +1271,7 @@ static int input_add_uevent_bm_var(struct kobj_uevent_env *env, | |||
1214 | 1271 | ||
1215 | len = input_print_bitmap(&env->buf[env->buflen - 1], | 1272 | len = input_print_bitmap(&env->buf[env->buflen - 1], |
1216 | sizeof(env->buf) - env->buflen, | 1273 | sizeof(env->buf) - env->buflen, |
1217 | bitmap, max, 0); | 1274 | bitmap, max, false); |
1218 | if (len >= (sizeof(env->buf) - env->buflen)) | 1275 | if (len >= (sizeof(env->buf) - env->buflen)) |
1219 | return -ENOMEM; | 1276 | return -ENOMEM; |
1220 | 1277 | ||
diff --git a/drivers/input/joystick/gf2k.c b/drivers/input/joystick/gf2k.c index 67c207f5b1a1..45ac70eae0aa 100644 --- a/drivers/input/joystick/gf2k.c +++ b/drivers/input/joystick/gf2k.c | |||
@@ -277,7 +277,7 @@ static int gf2k_connect(struct gameport *gameport, struct gameport_driver *drv) | |||
277 | } | 277 | } |
278 | 278 | ||
279 | #ifdef RESET_WORKS | 279 | #ifdef RESET_WORKS |
280 | if ((gf2k->id != (GB(19,2,0) | GB(15,3,2) | GB(12,3,5))) || | 280 | if ((gf2k->id != (GB(19,2,0) | GB(15,3,2) | GB(12,3,5))) && |
281 | (gf2k->id != (GB(31,2,0) | GB(27,3,2) | GB(24,3,5)))) { | 281 | (gf2k->id != (GB(31,2,0) | GB(27,3,2) | GB(24,3,5)))) { |
282 | err = -ENODEV; | 282 | err = -ENODEV; |
283 | goto fail2; | 283 | goto fail2; |
diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index 482cb1204e43..8a28fb7846dc 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c | |||
@@ -446,7 +446,7 @@ static void xpad_irq_in(struct urb *urb) | |||
446 | } | 446 | } |
447 | 447 | ||
448 | exit: | 448 | exit: |
449 | retval = usb_submit_urb (urb, GFP_ATOMIC); | 449 | retval = usb_submit_urb(urb, GFP_ATOMIC); |
450 | if (retval) | 450 | if (retval) |
451 | err ("%s - usb_submit_urb failed with result %d", | 451 | err ("%s - usb_submit_urb failed with result %d", |
452 | __func__, retval); | 452 | __func__, retval); |
@@ -571,7 +571,7 @@ static int xpad_play_effect(struct input_dev *dev, void *data, | |||
571 | xpad->odata[6] = 0x00; | 571 | xpad->odata[6] = 0x00; |
572 | xpad->odata[7] = 0x00; | 572 | xpad->odata[7] = 0x00; |
573 | xpad->irq_out->transfer_buffer_length = 8; | 573 | xpad->irq_out->transfer_buffer_length = 8; |
574 | usb_submit_urb(xpad->irq_out, GFP_KERNEL); | 574 | usb_submit_urb(xpad->irq_out, GFP_ATOMIC); |
575 | } | 575 | } |
576 | 576 | ||
577 | return 0; | 577 | return 0; |
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c index 1f5e2ce327d6..7b4056292eaf 100644 --- a/drivers/input/keyboard/atkbd.c +++ b/drivers/input/keyboard/atkbd.c | |||
@@ -225,8 +225,10 @@ struct atkbd { | |||
225 | 225 | ||
226 | struct delayed_work event_work; | 226 | struct delayed_work event_work; |
227 | unsigned long event_jiffies; | 227 | unsigned long event_jiffies; |
228 | struct mutex event_mutex; | ||
229 | unsigned long event_mask; | 228 | unsigned long event_mask; |
229 | |||
230 | /* Serializes reconnect(), attr->set() and event work */ | ||
231 | struct mutex mutex; | ||
230 | }; | 232 | }; |
231 | 233 | ||
232 | /* | 234 | /* |
@@ -577,7 +579,7 @@ static void atkbd_event_work(struct work_struct *work) | |||
577 | { | 579 | { |
578 | struct atkbd *atkbd = container_of(work, struct atkbd, event_work.work); | 580 | struct atkbd *atkbd = container_of(work, struct atkbd, event_work.work); |
579 | 581 | ||
580 | mutex_lock(&atkbd->event_mutex); | 582 | mutex_lock(&atkbd->mutex); |
581 | 583 | ||
582 | if (!atkbd->enabled) { | 584 | if (!atkbd->enabled) { |
583 | /* | 585 | /* |
@@ -596,7 +598,7 @@ static void atkbd_event_work(struct work_struct *work) | |||
596 | atkbd_set_repeat_rate(atkbd); | 598 | atkbd_set_repeat_rate(atkbd); |
597 | } | 599 | } |
598 | 600 | ||
599 | mutex_unlock(&atkbd->event_mutex); | 601 | mutex_unlock(&atkbd->mutex); |
600 | } | 602 | } |
601 | 603 | ||
602 | /* | 604 | /* |
@@ -612,7 +614,7 @@ static void atkbd_schedule_event_work(struct atkbd *atkbd, int event_bit) | |||
612 | 614 | ||
613 | atkbd->event_jiffies = jiffies; | 615 | atkbd->event_jiffies = jiffies; |
614 | set_bit(event_bit, &atkbd->event_mask); | 616 | set_bit(event_bit, &atkbd->event_mask); |
615 | wmb(); | 617 | mb(); |
616 | schedule_delayed_work(&atkbd->event_work, delay); | 618 | schedule_delayed_work(&atkbd->event_work, delay); |
617 | } | 619 | } |
618 | 620 | ||
@@ -849,13 +851,20 @@ static void atkbd_disconnect(struct serio *serio) | |||
849 | { | 851 | { |
850 | struct atkbd *atkbd = serio_get_drvdata(serio); | 852 | struct atkbd *atkbd = serio_get_drvdata(serio); |
851 | 853 | ||
854 | sysfs_remove_group(&serio->dev.kobj, &atkbd_attribute_group); | ||
855 | |||
852 | atkbd_disable(atkbd); | 856 | atkbd_disable(atkbd); |
853 | 857 | ||
854 | /* make sure we don't have a command in flight */ | 858 | input_unregister_device(atkbd->dev); |
859 | |||
860 | /* | ||
861 | * Make sure we don't have a command in flight. | ||
862 | * Note that since atkbd->enabled is false event work will keep | ||
863 | * rescheduling itself until it gets canceled and will not try | ||
864 | * accessing freed input device or serio port. | ||
865 | */ | ||
855 | cancel_delayed_work_sync(&atkbd->event_work); | 866 | cancel_delayed_work_sync(&atkbd->event_work); |
856 | 867 | ||
857 | sysfs_remove_group(&serio->dev.kobj, &atkbd_attribute_group); | ||
858 | input_unregister_device(atkbd->dev); | ||
859 | serio_close(serio); | 868 | serio_close(serio); |
860 | serio_set_drvdata(serio, NULL); | 869 | serio_set_drvdata(serio, NULL); |
861 | kfree(atkbd); | 870 | kfree(atkbd); |
@@ -1087,7 +1096,7 @@ static int atkbd_connect(struct serio *serio, struct serio_driver *drv) | |||
1087 | atkbd->dev = dev; | 1096 | atkbd->dev = dev; |
1088 | ps2_init(&atkbd->ps2dev, serio); | 1097 | ps2_init(&atkbd->ps2dev, serio); |
1089 | INIT_DELAYED_WORK(&atkbd->event_work, atkbd_event_work); | 1098 | INIT_DELAYED_WORK(&atkbd->event_work, atkbd_event_work); |
1090 | mutex_init(&atkbd->event_mutex); | 1099 | mutex_init(&atkbd->mutex); |
1091 | 1100 | ||
1092 | switch (serio->id.type) { | 1101 | switch (serio->id.type) { |
1093 | 1102 | ||
@@ -1160,19 +1169,23 @@ static int atkbd_reconnect(struct serio *serio) | |||
1160 | { | 1169 | { |
1161 | struct atkbd *atkbd = serio_get_drvdata(serio); | 1170 | struct atkbd *atkbd = serio_get_drvdata(serio); |
1162 | struct serio_driver *drv = serio->drv; | 1171 | struct serio_driver *drv = serio->drv; |
1172 | int retval = -1; | ||
1163 | 1173 | ||
1164 | if (!atkbd || !drv) { | 1174 | if (!atkbd || !drv) { |
1165 | printk(KERN_DEBUG "atkbd: reconnect request, but serio is disconnected, ignoring...\n"); | 1175 | printk(KERN_DEBUG "atkbd: reconnect request, but serio is disconnected, ignoring...\n"); |
1166 | return -1; | 1176 | return -1; |
1167 | } | 1177 | } |
1168 | 1178 | ||
1179 | mutex_lock(&atkbd->mutex); | ||
1180 | |||
1169 | atkbd_disable(atkbd); | 1181 | atkbd_disable(atkbd); |
1170 | 1182 | ||
1171 | if (atkbd->write) { | 1183 | if (atkbd->write) { |
1172 | if (atkbd_probe(atkbd)) | 1184 | if (atkbd_probe(atkbd)) |
1173 | return -1; | 1185 | goto out; |
1186 | |||
1174 | if (atkbd->set != atkbd_select_set(atkbd, atkbd->set, atkbd->extra)) | 1187 | if (atkbd->set != atkbd_select_set(atkbd, atkbd->set, atkbd->extra)) |
1175 | return -1; | 1188 | goto out; |
1176 | 1189 | ||
1177 | atkbd_activate(atkbd); | 1190 | atkbd_activate(atkbd); |
1178 | 1191 | ||
@@ -1190,8 +1203,11 @@ static int atkbd_reconnect(struct serio *serio) | |||
1190 | } | 1203 | } |
1191 | 1204 | ||
1192 | atkbd_enable(atkbd); | 1205 | atkbd_enable(atkbd); |
1206 | retval = 0; | ||
1193 | 1207 | ||
1194 | return 0; | 1208 | out: |
1209 | mutex_unlock(&atkbd->mutex); | ||
1210 | return retval; | ||
1195 | } | 1211 | } |
1196 | 1212 | ||
1197 | static struct serio_device_id atkbd_serio_ids[] = { | 1213 | static struct serio_device_id atkbd_serio_ids[] = { |
@@ -1235,47 +1251,28 @@ static ssize_t atkbd_attr_show_helper(struct device *dev, char *buf, | |||
1235 | ssize_t (*handler)(struct atkbd *, char *)) | 1251 | ssize_t (*handler)(struct atkbd *, char *)) |
1236 | { | 1252 | { |
1237 | struct serio *serio = to_serio_port(dev); | 1253 | struct serio *serio = to_serio_port(dev); |
1238 | int retval; | 1254 | struct atkbd *atkbd = serio_get_drvdata(serio); |
1239 | |||
1240 | retval = serio_pin_driver(serio); | ||
1241 | if (retval) | ||
1242 | return retval; | ||
1243 | |||
1244 | if (serio->drv != &atkbd_drv) { | ||
1245 | retval = -ENODEV; | ||
1246 | goto out; | ||
1247 | } | ||
1248 | |||
1249 | retval = handler((struct atkbd *)serio_get_drvdata(serio), buf); | ||
1250 | 1255 | ||
1251 | out: | 1256 | return handler(atkbd, buf); |
1252 | serio_unpin_driver(serio); | ||
1253 | return retval; | ||
1254 | } | 1257 | } |
1255 | 1258 | ||
1256 | static ssize_t atkbd_attr_set_helper(struct device *dev, const char *buf, size_t count, | 1259 | static ssize_t atkbd_attr_set_helper(struct device *dev, const char *buf, size_t count, |
1257 | ssize_t (*handler)(struct atkbd *, const char *, size_t)) | 1260 | ssize_t (*handler)(struct atkbd *, const char *, size_t)) |
1258 | { | 1261 | { |
1259 | struct serio *serio = to_serio_port(dev); | 1262 | struct serio *serio = to_serio_port(dev); |
1260 | struct atkbd *atkbd; | 1263 | struct atkbd *atkbd = serio_get_drvdata(serio); |
1261 | int retval; | 1264 | int retval; |
1262 | 1265 | ||
1263 | retval = serio_pin_driver(serio); | 1266 | retval = mutex_lock_interruptible(&atkbd->mutex); |
1264 | if (retval) | 1267 | if (retval) |
1265 | return retval; | 1268 | return retval; |
1266 | 1269 | ||
1267 | if (serio->drv != &atkbd_drv) { | ||
1268 | retval = -ENODEV; | ||
1269 | goto out; | ||
1270 | } | ||
1271 | |||
1272 | atkbd = serio_get_drvdata(serio); | ||
1273 | atkbd_disable(atkbd); | 1270 | atkbd_disable(atkbd); |
1274 | retval = handler(atkbd, buf, count); | 1271 | retval = handler(atkbd, buf, count); |
1275 | atkbd_enable(atkbd); | 1272 | atkbd_enable(atkbd); |
1276 | 1273 | ||
1277 | out: | 1274 | mutex_unlock(&atkbd->mutex); |
1278 | serio_unpin_driver(serio); | 1275 | |
1279 | return retval; | 1276 | return retval; |
1280 | } | 1277 | } |
1281 | 1278 | ||
diff --git a/drivers/input/keyboard/davinci_keyscan.c b/drivers/input/keyboard/davinci_keyscan.c index 6e52d855f637..d410d7a52f1d 100644 --- a/drivers/input/keyboard/davinci_keyscan.c +++ b/drivers/input/keyboard/davinci_keyscan.c | |||
@@ -174,6 +174,14 @@ static int __init davinci_ks_probe(struct platform_device *pdev) | |||
174 | struct davinci_ks_platform_data *pdata = pdev->dev.platform_data; | 174 | struct davinci_ks_platform_data *pdata = pdev->dev.platform_data; |
175 | int error, i; | 175 | int error, i; |
176 | 176 | ||
177 | if (pdata->device_enable) { | ||
178 | error = pdata->device_enable(dev); | ||
179 | if (error < 0) { | ||
180 | dev_dbg(dev, "device enable function failed\n"); | ||
181 | return error; | ||
182 | } | ||
183 | } | ||
184 | |||
177 | if (!pdata->keymap) { | 185 | if (!pdata->keymap) { |
178 | dev_dbg(dev, "no keymap from pdata\n"); | 186 | dev_dbg(dev, "no keymap from pdata\n"); |
179 | return -EINVAL; | 187 | return -EINVAL; |
diff --git a/drivers/input/misc/winbond-cir.c b/drivers/input/misc/winbond-cir.c index 33309fe44e20..c8f5a9a3fa14 100644 --- a/drivers/input/misc/winbond-cir.c +++ b/drivers/input/misc/winbond-cir.c | |||
@@ -768,7 +768,7 @@ wbcir_parse_rc6(struct device *dev, struct wbcir_data *data) | |||
768 | return; | 768 | return; |
769 | } | 769 | } |
770 | 770 | ||
771 | dev_info(dev, "IR-RC6 ad 0x%02X cm 0x%02X cu 0x%04X " | 771 | dev_dbg(dev, "IR-RC6 ad 0x%02X cm 0x%02X cu 0x%04X " |
772 | "toggle %u mode %u scan 0x%08X\n", | 772 | "toggle %u mode %u scan 0x%08X\n", |
773 | address, | 773 | address, |
774 | command, | 774 | command, |
diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c index 0d1d33468b43..4f8fe0886b2a 100644 --- a/drivers/input/mouse/bcm5974.c +++ b/drivers/input/mouse/bcm5974.c | |||
@@ -139,6 +139,7 @@ struct tp_finger { | |||
139 | /* trackpad finger data size, empirically at least ten fingers */ | 139 | /* trackpad finger data size, empirically at least ten fingers */ |
140 | #define SIZEOF_FINGER sizeof(struct tp_finger) | 140 | #define SIZEOF_FINGER sizeof(struct tp_finger) |
141 | #define SIZEOF_ALL_FINGERS (16 * SIZEOF_FINGER) | 141 | #define SIZEOF_ALL_FINGERS (16 * SIZEOF_FINGER) |
142 | #define MAX_FINGER_ORIENTATION 16384 | ||
142 | 143 | ||
143 | /* device-specific parameters */ | 144 | /* device-specific parameters */ |
144 | struct bcm5974_param { | 145 | struct bcm5974_param { |
@@ -284,6 +285,26 @@ static void setup_events_to_report(struct input_dev *input_dev, | |||
284 | input_set_abs_params(input_dev, ABS_Y, | 285 | input_set_abs_params(input_dev, ABS_Y, |
285 | 0, cfg->y.dim, cfg->y.fuzz, 0); | 286 | 0, cfg->y.dim, cfg->y.fuzz, 0); |
286 | 287 | ||
288 | /* finger touch area */ | ||
289 | input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, | ||
290 | cfg->w.devmin, cfg->w.devmax, 0, 0); | ||
291 | input_set_abs_params(input_dev, ABS_MT_TOUCH_MINOR, | ||
292 | cfg->w.devmin, cfg->w.devmax, 0, 0); | ||
293 | /* finger approach area */ | ||
294 | input_set_abs_params(input_dev, ABS_MT_WIDTH_MAJOR, | ||
295 | cfg->w.devmin, cfg->w.devmax, 0, 0); | ||
296 | input_set_abs_params(input_dev, ABS_MT_WIDTH_MINOR, | ||
297 | cfg->w.devmin, cfg->w.devmax, 0, 0); | ||
298 | /* finger orientation */ | ||
299 | input_set_abs_params(input_dev, ABS_MT_ORIENTATION, | ||
300 | -MAX_FINGER_ORIENTATION, | ||
301 | MAX_FINGER_ORIENTATION, 0, 0); | ||
302 | /* finger position */ | ||
303 | input_set_abs_params(input_dev, ABS_MT_POSITION_X, | ||
304 | cfg->x.devmin, cfg->x.devmax, 0, 0); | ||
305 | input_set_abs_params(input_dev, ABS_MT_POSITION_Y, | ||
306 | cfg->y.devmin, cfg->y.devmax, 0, 0); | ||
307 | |||
287 | __set_bit(EV_KEY, input_dev->evbit); | 308 | __set_bit(EV_KEY, input_dev->evbit); |
288 | __set_bit(BTN_TOUCH, input_dev->keybit); | 309 | __set_bit(BTN_TOUCH, input_dev->keybit); |
289 | __set_bit(BTN_TOOL_FINGER, input_dev->keybit); | 310 | __set_bit(BTN_TOOL_FINGER, input_dev->keybit); |
@@ -310,13 +331,29 @@ static int report_bt_state(struct bcm5974 *dev, int size) | |||
310 | return 0; | 331 | return 0; |
311 | } | 332 | } |
312 | 333 | ||
334 | static void report_finger_data(struct input_dev *input, | ||
335 | const struct bcm5974_config *cfg, | ||
336 | const struct tp_finger *f) | ||
337 | { | ||
338 | input_report_abs(input, ABS_MT_TOUCH_MAJOR, raw2int(f->force_major)); | ||
339 | input_report_abs(input, ABS_MT_TOUCH_MINOR, raw2int(f->force_minor)); | ||
340 | input_report_abs(input, ABS_MT_WIDTH_MAJOR, raw2int(f->size_major)); | ||
341 | input_report_abs(input, ABS_MT_WIDTH_MINOR, raw2int(f->size_minor)); | ||
342 | input_report_abs(input, ABS_MT_ORIENTATION, | ||
343 | MAX_FINGER_ORIENTATION - raw2int(f->orientation)); | ||
344 | input_report_abs(input, ABS_MT_POSITION_X, raw2int(f->abs_x)); | ||
345 | input_report_abs(input, ABS_MT_POSITION_Y, | ||
346 | cfg->y.devmin + cfg->y.devmax - raw2int(f->abs_y)); | ||
347 | input_mt_sync(input); | ||
348 | } | ||
349 | |||
313 | /* report trackpad data as logical trackpad state */ | 350 | /* report trackpad data as logical trackpad state */ |
314 | static int report_tp_state(struct bcm5974 *dev, int size) | 351 | static int report_tp_state(struct bcm5974 *dev, int size) |
315 | { | 352 | { |
316 | const struct bcm5974_config *c = &dev->cfg; | 353 | const struct bcm5974_config *c = &dev->cfg; |
317 | const struct tp_finger *f; | 354 | const struct tp_finger *f; |
318 | struct input_dev *input = dev->input; | 355 | struct input_dev *input = dev->input; |
319 | int raw_p, raw_w, raw_x, raw_y, raw_n; | 356 | int raw_p, raw_w, raw_x, raw_y, raw_n, i; |
320 | int ptest, origin, ibt = 0, nmin = 0, nmax = 0; | 357 | int ptest, origin, ibt = 0, nmin = 0, nmax = 0; |
321 | int abs_p = 0, abs_w = 0, abs_x = 0, abs_y = 0; | 358 | int abs_p = 0, abs_w = 0, abs_x = 0, abs_y = 0; |
322 | 359 | ||
@@ -329,6 +366,11 @@ static int report_tp_state(struct bcm5974 *dev, int size) | |||
329 | 366 | ||
330 | /* always track the first finger; when detached, start over */ | 367 | /* always track the first finger; when detached, start over */ |
331 | if (raw_n) { | 368 | if (raw_n) { |
369 | |||
370 | /* report raw trackpad data */ | ||
371 | for (i = 0; i < raw_n; i++) | ||
372 | report_finger_data(input, c, &f[i]); | ||
373 | |||
332 | raw_p = raw2int(f->force_major); | 374 | raw_p = raw2int(f->force_major); |
333 | raw_w = raw2int(f->size_major); | 375 | raw_w = raw2int(f->size_major); |
334 | raw_x = raw2int(f->abs_x); | 376 | raw_x = raw2int(f->abs_x); |
diff --git a/drivers/input/mouse/lifebook.c b/drivers/input/mouse/lifebook.c index 6d7aa10d10f0..7c1d7d420ae3 100644 --- a/drivers/input/mouse/lifebook.c +++ b/drivers/input/mouse/lifebook.c | |||
@@ -53,6 +53,12 @@ static const struct dmi_system_id __initconst lifebook_dmi_table[] = { | |||
53 | { | 53 | { |
54 | /* LifeBook B */ | 54 | /* LifeBook B */ |
55 | .matches = { | 55 | .matches = { |
56 | DMI_MATCH(DMI_PRODUCT_NAME, "Lifebook B Series"), | ||
57 | }, | ||
58 | }, | ||
59 | { | ||
60 | /* LifeBook B */ | ||
61 | .matches = { | ||
56 | DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook B Series"), | 62 | DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook B Series"), |
57 | }, | 63 | }, |
58 | }, | 64 | }, |
diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c index 401ac6b6edd4..9774bdfaa482 100644 --- a/drivers/input/mouse/psmouse-base.c +++ b/drivers/input/mouse/psmouse-base.c | |||
@@ -627,8 +627,15 @@ static int psmouse_extensions(struct psmouse *psmouse, | |||
627 | synaptics_hardware = true; | 627 | synaptics_hardware = true; |
628 | 628 | ||
629 | if (max_proto > PSMOUSE_IMEX) { | 629 | if (max_proto > PSMOUSE_IMEX) { |
630 | if (!set_properties || synaptics_init(psmouse) == 0) | 630 | /* |
631 | * Try activating protocol, but check if support is enabled first, since | ||
632 | * we try detecting Synaptics even when protocol is disabled. | ||
633 | */ | ||
634 | if (synaptics_supported() && | ||
635 | (!set_properties || synaptics_init(psmouse) == 0)) { | ||
631 | return PSMOUSE_SYNAPTICS; | 636 | return PSMOUSE_SYNAPTICS; |
637 | } | ||
638 | |||
632 | /* | 639 | /* |
633 | * Some Synaptics touchpads can emulate extended protocols (like IMPS/2). | 640 | * Some Synaptics touchpads can emulate extended protocols (like IMPS/2). |
634 | * Unfortunately Logitech/Genius probes confuse some firmware versions so | 641 | * Unfortunately Logitech/Genius probes confuse some firmware versions so |
@@ -683,19 +690,6 @@ static int psmouse_extensions(struct psmouse *psmouse, | |||
683 | max_proto = PSMOUSE_IMEX; | 690 | max_proto = PSMOUSE_IMEX; |
684 | } | 691 | } |
685 | 692 | ||
686 | /* | ||
687 | * Try Finger Sensing Pad | ||
688 | */ | ||
689 | if (max_proto > PSMOUSE_IMEX) { | ||
690 | if (fsp_detect(psmouse, set_properties) == 0) { | ||
691 | if (!set_properties || fsp_init(psmouse) == 0) | ||
692 | return PSMOUSE_FSP; | ||
693 | /* | ||
694 | * Init failed, try basic relative protocols | ||
695 | */ | ||
696 | max_proto = PSMOUSE_IMEX; | ||
697 | } | ||
698 | } | ||
699 | 693 | ||
700 | if (max_proto > PSMOUSE_IMEX) { | 694 | if (max_proto > PSMOUSE_IMEX) { |
701 | if (genius_detect(psmouse, set_properties) == 0) | 695 | if (genius_detect(psmouse, set_properties) == 0) |
@@ -712,6 +706,21 @@ static int psmouse_extensions(struct psmouse *psmouse, | |||
712 | } | 706 | } |
713 | 707 | ||
714 | /* | 708 | /* |
709 | * Try Finger Sensing Pad. We do it here because its probe upsets | ||
710 | * Trackpoint devices (causing TP_READ_ID command to time out). | ||
711 | */ | ||
712 | if (max_proto > PSMOUSE_IMEX) { | ||
713 | if (fsp_detect(psmouse, set_properties) == 0) { | ||
714 | if (!set_properties || fsp_init(psmouse) == 0) | ||
715 | return PSMOUSE_FSP; | ||
716 | /* | ||
717 | * Init failed, try basic relative protocols | ||
718 | */ | ||
719 | max_proto = PSMOUSE_IMEX; | ||
720 | } | ||
721 | } | ||
722 | |||
723 | /* | ||
715 | * Reset to defaults in case the device got confused by extended | 724 | * Reset to defaults in case the device got confused by extended |
716 | * protocol probes. Note that we follow up with full reset because | 725 | * protocol probes. Note that we follow up with full reset because |
717 | * some mice put themselves to sleep when they see PSMOUSE_RESET_DIS. | 726 | * some mice put themselves to sleep when they see PSMOUSE_RESET_DIS. |
@@ -1450,24 +1459,10 @@ ssize_t psmouse_attr_show_helper(struct device *dev, struct device_attribute *de | |||
1450 | struct serio *serio = to_serio_port(dev); | 1459 | struct serio *serio = to_serio_port(dev); |
1451 | struct psmouse_attribute *attr = to_psmouse_attr(devattr); | 1460 | struct psmouse_attribute *attr = to_psmouse_attr(devattr); |
1452 | struct psmouse *psmouse; | 1461 | struct psmouse *psmouse; |
1453 | int retval; | ||
1454 | |||
1455 | retval = serio_pin_driver(serio); | ||
1456 | if (retval) | ||
1457 | return retval; | ||
1458 | |||
1459 | if (serio->drv != &psmouse_drv) { | ||
1460 | retval = -ENODEV; | ||
1461 | goto out; | ||
1462 | } | ||
1463 | 1462 | ||
1464 | psmouse = serio_get_drvdata(serio); | 1463 | psmouse = serio_get_drvdata(serio); |
1465 | 1464 | ||
1466 | retval = attr->show(psmouse, attr->data, buf); | 1465 | return attr->show(psmouse, attr->data, buf); |
1467 | |||
1468 | out: | ||
1469 | serio_unpin_driver(serio); | ||
1470 | return retval; | ||
1471 | } | 1466 | } |
1472 | 1467 | ||
1473 | ssize_t psmouse_attr_set_helper(struct device *dev, struct device_attribute *devattr, | 1468 | ssize_t psmouse_attr_set_helper(struct device *dev, struct device_attribute *devattr, |
@@ -1478,18 +1473,9 @@ ssize_t psmouse_attr_set_helper(struct device *dev, struct device_attribute *dev | |||
1478 | struct psmouse *psmouse, *parent = NULL; | 1473 | struct psmouse *psmouse, *parent = NULL; |
1479 | int retval; | 1474 | int retval; |
1480 | 1475 | ||
1481 | retval = serio_pin_driver(serio); | ||
1482 | if (retval) | ||
1483 | return retval; | ||
1484 | |||
1485 | if (serio->drv != &psmouse_drv) { | ||
1486 | retval = -ENODEV; | ||
1487 | goto out_unpin; | ||
1488 | } | ||
1489 | |||
1490 | retval = mutex_lock_interruptible(&psmouse_mutex); | 1476 | retval = mutex_lock_interruptible(&psmouse_mutex); |
1491 | if (retval) | 1477 | if (retval) |
1492 | goto out_unpin; | 1478 | goto out; |
1493 | 1479 | ||
1494 | psmouse = serio_get_drvdata(serio); | 1480 | psmouse = serio_get_drvdata(serio); |
1495 | 1481 | ||
@@ -1519,8 +1505,7 @@ ssize_t psmouse_attr_set_helper(struct device *dev, struct device_attribute *dev | |||
1519 | 1505 | ||
1520 | out_unlock: | 1506 | out_unlock: |
1521 | mutex_unlock(&psmouse_mutex); | 1507 | mutex_unlock(&psmouse_mutex); |
1522 | out_unpin: | 1508 | out: |
1523 | serio_unpin_driver(serio); | ||
1524 | return retval; | 1509 | return retval; |
1525 | } | 1510 | } |
1526 | 1511 | ||
@@ -1582,9 +1567,7 @@ static ssize_t psmouse_attr_set_protocol(struct psmouse *psmouse, void *data, co | |||
1582 | } | 1567 | } |
1583 | 1568 | ||
1584 | mutex_unlock(&psmouse_mutex); | 1569 | mutex_unlock(&psmouse_mutex); |
1585 | serio_unpin_driver(serio); | ||
1586 | serio_unregister_child_port(serio); | 1570 | serio_unregister_child_port(serio); |
1587 | serio_pin_driver_uninterruptible(serio); | ||
1588 | mutex_lock(&psmouse_mutex); | 1571 | mutex_lock(&psmouse_mutex); |
1589 | 1572 | ||
1590 | if (serio->drv != &psmouse_drv) { | 1573 | if (serio->drv != &psmouse_drv) { |
diff --git a/drivers/input/mouse/sentelic.c b/drivers/input/mouse/sentelic.c index 77b9fd0b3fbf..81a6b81cb2fe 100644 --- a/drivers/input/mouse/sentelic.c +++ b/drivers/input/mouse/sentelic.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * Finger Sensing Pad PS/2 mouse driver. | 2 | * Finger Sensing Pad PS/2 mouse driver. |
3 | * | 3 | * |
4 | * Copyright (C) 2005-2007 Asia Vital Components Co., Ltd. | 4 | * Copyright (C) 2005-2007 Asia Vital Components Co., Ltd. |
5 | * Copyright (C) 2005-2009 Tai-hwa Liang, Sentelic Corporation. | 5 | * Copyright (C) 2005-2010 Tai-hwa Liang, Sentelic Corporation. |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or | 7 | * This program is free software; you can redistribute it and/or |
8 | * modify it under the terms of the GNU General Public License | 8 | * modify it under the terms of the GNU General Public License |
@@ -658,9 +658,9 @@ static psmouse_ret_t fsp_process_byte(struct psmouse *psmouse) | |||
658 | if (packet[3] & BIT(1)) | 658 | if (packet[3] & BIT(1)) |
659 | button_status |= 0x0f; /* wheel up */ | 659 | button_status |= 0x0f; /* wheel up */ |
660 | if (packet[3] & BIT(2)) | 660 | if (packet[3] & BIT(2)) |
661 | button_status |= BIT(5);/* horizontal left */ | 661 | button_status |= BIT(4);/* horizontal left */ |
662 | if (packet[3] & BIT(3)) | 662 | if (packet[3] & BIT(3)) |
663 | button_status |= BIT(4);/* horizontal right */ | 663 | button_status |= BIT(5);/* horizontal right */ |
664 | /* push back to packet queue */ | 664 | /* push back to packet queue */ |
665 | if (button_status != 0) | 665 | if (button_status != 0) |
666 | packet[3] = button_status; | 666 | packet[3] = button_status; |
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c index 05689e732191..d3f5243fa093 100644 --- a/drivers/input/mouse/synaptics.c +++ b/drivers/input/mouse/synaptics.c | |||
@@ -743,6 +743,11 @@ int synaptics_init(struct psmouse *psmouse) | |||
743 | return -1; | 743 | return -1; |
744 | } | 744 | } |
745 | 745 | ||
746 | bool synaptics_supported(void) | ||
747 | { | ||
748 | return true; | ||
749 | } | ||
750 | |||
746 | #else /* CONFIG_MOUSE_PS2_SYNAPTICS */ | 751 | #else /* CONFIG_MOUSE_PS2_SYNAPTICS */ |
747 | 752 | ||
748 | void __init synaptics_module_init(void) | 753 | void __init synaptics_module_init(void) |
@@ -754,5 +759,10 @@ int synaptics_init(struct psmouse *psmouse) | |||
754 | return -ENOSYS; | 759 | return -ENOSYS; |
755 | } | 760 | } |
756 | 761 | ||
762 | bool synaptics_supported(void) | ||
763 | { | ||
764 | return false; | ||
765 | } | ||
766 | |||
757 | #endif /* CONFIG_MOUSE_PS2_SYNAPTICS */ | 767 | #endif /* CONFIG_MOUSE_PS2_SYNAPTICS */ |
758 | 768 | ||
diff --git a/drivers/input/mouse/synaptics.h b/drivers/input/mouse/synaptics.h index 838e7f2c9b30..f0f40a331dc8 100644 --- a/drivers/input/mouse/synaptics.h +++ b/drivers/input/mouse/synaptics.h | |||
@@ -109,5 +109,6 @@ void synaptics_module_init(void); | |||
109 | int synaptics_detect(struct psmouse *psmouse, bool set_properties); | 109 | int synaptics_detect(struct psmouse *psmouse, bool set_properties); |
110 | int synaptics_init(struct psmouse *psmouse); | 110 | int synaptics_init(struct psmouse *psmouse); |
111 | void synaptics_reset(struct psmouse *psmouse); | 111 | void synaptics_reset(struct psmouse *psmouse); |
112 | bool synaptics_supported(void); | ||
112 | 113 | ||
113 | #endif /* _SYNAPTICS_H */ | 114 | #endif /* _SYNAPTICS_H */ |
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h index 64b688daf48a..2a5982e532f8 100644 --- a/drivers/input/serio/i8042-x86ia64io.h +++ b/drivers/input/serio/i8042-x86ia64io.h | |||
@@ -524,6 +524,13 @@ static const struct dmi_system_id __initconst i8042_dmi_laptop_table[] = { | |||
524 | */ | 524 | */ |
525 | static const struct dmi_system_id __initconst i8042_dmi_dritek_table[] = { | 525 | static const struct dmi_system_id __initconst i8042_dmi_dritek_table[] = { |
526 | { | 526 | { |
527 | /* Acer Aspire 5610 */ | ||
528 | .matches = { | ||
529 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | ||
530 | DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5610"), | ||
531 | }, | ||
532 | }, | ||
533 | { | ||
527 | /* Acer Aspire 5630 */ | 534 | /* Acer Aspire 5630 */ |
528 | .matches = { | 535 | .matches = { |
529 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | 536 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), |
diff --git a/drivers/input/touchscreen/ad7879.c b/drivers/input/touchscreen/ad7879.c index c21e6d3a8844..794d070c6900 100644 --- a/drivers/input/touchscreen/ad7879.c +++ b/drivers/input/touchscreen/ad7879.c | |||
@@ -47,6 +47,7 @@ | |||
47 | #include <linux/workqueue.h> | 47 | #include <linux/workqueue.h> |
48 | #include <linux/spi/spi.h> | 48 | #include <linux/spi/spi.h> |
49 | #include <linux/i2c.h> | 49 | #include <linux/i2c.h> |
50 | #include <linux/gpio.h> | ||
50 | 51 | ||
51 | #include <linux/spi/ad7879.h> | 52 | #include <linux/spi/ad7879.h> |
52 | 53 | ||
@@ -132,7 +133,9 @@ struct ad7879 { | |||
132 | struct input_dev *input; | 133 | struct input_dev *input; |
133 | struct work_struct work; | 134 | struct work_struct work; |
134 | struct timer_list timer; | 135 | struct timer_list timer; |
135 | 136 | #ifdef CONFIG_GPIOLIB | |
137 | struct gpio_chip gc; | ||
138 | #endif | ||
136 | struct mutex mutex; | 139 | struct mutex mutex; |
137 | unsigned disabled:1; /* P: mutex */ | 140 | unsigned disabled:1; /* P: mutex */ |
138 | 141 | ||
@@ -150,11 +153,9 @@ struct ad7879 { | |||
150 | u8 median; | 153 | u8 median; |
151 | u16 x_plate_ohms; | 154 | u16 x_plate_ohms; |
152 | u16 pressure_max; | 155 | u16 pressure_max; |
153 | u16 gpio_init; | ||
154 | u16 cmd_crtl1; | 156 | u16 cmd_crtl1; |
155 | u16 cmd_crtl2; | 157 | u16 cmd_crtl2; |
156 | u16 cmd_crtl3; | 158 | u16 cmd_crtl3; |
157 | unsigned gpio:1; | ||
158 | }; | 159 | }; |
159 | 160 | ||
160 | static int ad7879_read(bus_device *, u8); | 161 | static int ad7879_read(bus_device *, u8); |
@@ -237,24 +238,6 @@ static irqreturn_t ad7879_irq(int irq, void *handle) | |||
237 | 238 | ||
238 | static void ad7879_setup(struct ad7879 *ts) | 239 | static void ad7879_setup(struct ad7879 *ts) |
239 | { | 240 | { |
240 | ts->cmd_crtl3 = AD7879_YPLUS_BIT | | ||
241 | AD7879_XPLUS_BIT | | ||
242 | AD7879_Z2_BIT | | ||
243 | AD7879_Z1_BIT | | ||
244 | AD7879_TEMPMASK_BIT | | ||
245 | AD7879_AUXVBATMASK_BIT | | ||
246 | AD7879_GPIOALERTMASK_BIT; | ||
247 | |||
248 | ts->cmd_crtl2 = AD7879_PM(AD7879_PM_DYN) | AD7879_DFR | | ||
249 | AD7879_AVG(ts->averaging) | | ||
250 | AD7879_MFS(ts->median) | | ||
251 | AD7879_FCD(ts->first_conversion_delay) | | ||
252 | ts->gpio_init; | ||
253 | |||
254 | ts->cmd_crtl1 = AD7879_MODE_INT | AD7879_MODE_SEQ1 | | ||
255 | AD7879_ACQ(ts->acquisition_time) | | ||
256 | AD7879_TMR(ts->pen_down_acc_interval); | ||
257 | |||
258 | ad7879_write(ts->bus, AD7879_REG_CTRL2, ts->cmd_crtl2); | 241 | ad7879_write(ts->bus, AD7879_REG_CTRL2, ts->cmd_crtl2); |
259 | ad7879_write(ts->bus, AD7879_REG_CTRL3, ts->cmd_crtl3); | 242 | ad7879_write(ts->bus, AD7879_REG_CTRL3, ts->cmd_crtl3); |
260 | ad7879_write(ts->bus, AD7879_REG_CTRL1, ts->cmd_crtl1); | 243 | ad7879_write(ts->bus, AD7879_REG_CTRL1, ts->cmd_crtl1); |
@@ -324,48 +307,132 @@ static ssize_t ad7879_disable_store(struct device *dev, | |||
324 | 307 | ||
325 | static DEVICE_ATTR(disable, 0664, ad7879_disable_show, ad7879_disable_store); | 308 | static DEVICE_ATTR(disable, 0664, ad7879_disable_show, ad7879_disable_store); |
326 | 309 | ||
327 | static ssize_t ad7879_gpio_show(struct device *dev, | 310 | static struct attribute *ad7879_attributes[] = { |
328 | struct device_attribute *attr, char *buf) | 311 | &dev_attr_disable.attr, |
312 | NULL | ||
313 | }; | ||
314 | |||
315 | static const struct attribute_group ad7879_attr_group = { | ||
316 | .attrs = ad7879_attributes, | ||
317 | }; | ||
318 | |||
319 | #ifdef CONFIG_GPIOLIB | ||
320 | static int ad7879_gpio_direction_input(struct gpio_chip *chip, | ||
321 | unsigned gpio) | ||
329 | { | 322 | { |
330 | struct ad7879 *ts = dev_get_drvdata(dev); | 323 | struct ad7879 *ts = container_of(chip, struct ad7879, gc); |
324 | int err; | ||
331 | 325 | ||
332 | return sprintf(buf, "%u\n", ts->gpio); | 326 | mutex_lock(&ts->mutex); |
327 | ts->cmd_crtl2 |= AD7879_GPIO_EN | AD7879_GPIODIR | AD7879_GPIOPOL; | ||
328 | err = ad7879_write(ts->bus, AD7879_REG_CTRL2, ts->cmd_crtl2); | ||
329 | mutex_unlock(&ts->mutex); | ||
330 | |||
331 | return err; | ||
333 | } | 332 | } |
334 | 333 | ||
335 | static ssize_t ad7879_gpio_store(struct device *dev, | 334 | static int ad7879_gpio_direction_output(struct gpio_chip *chip, |
336 | struct device_attribute *attr, | 335 | unsigned gpio, int level) |
337 | const char *buf, size_t count) | ||
338 | { | 336 | { |
339 | struct ad7879 *ts = dev_get_drvdata(dev); | 337 | struct ad7879 *ts = container_of(chip, struct ad7879, gc); |
340 | unsigned long val; | 338 | int err; |
341 | int error; | ||
342 | 339 | ||
343 | error = strict_strtoul(buf, 10, &val); | 340 | mutex_lock(&ts->mutex); |
344 | if (error) | 341 | ts->cmd_crtl2 &= ~AD7879_GPIODIR; |
345 | return error; | 342 | ts->cmd_crtl2 |= AD7879_GPIO_EN | AD7879_GPIOPOL; |
343 | if (level) | ||
344 | ts->cmd_crtl2 |= AD7879_GPIO_DATA; | ||
345 | else | ||
346 | ts->cmd_crtl2 &= ~AD7879_GPIO_DATA; | ||
347 | |||
348 | err = ad7879_write(ts->bus, AD7879_REG_CTRL2, ts->cmd_crtl2); | ||
349 | mutex_unlock(&ts->mutex); | ||
350 | |||
351 | return err; | ||
352 | } | ||
353 | |||
354 | static int ad7879_gpio_get_value(struct gpio_chip *chip, unsigned gpio) | ||
355 | { | ||
356 | struct ad7879 *ts = container_of(chip, struct ad7879, gc); | ||
357 | u16 val; | ||
346 | 358 | ||
347 | mutex_lock(&ts->mutex); | 359 | mutex_lock(&ts->mutex); |
348 | ts->gpio = !!val; | 360 | val = ad7879_read(ts->bus, AD7879_REG_CTRL2); |
349 | error = ad7879_write(ts->bus, AD7879_REG_CTRL2, | ||
350 | ts->gpio ? | ||
351 | ts->cmd_crtl2 & ~AD7879_GPIO_DATA : | ||
352 | ts->cmd_crtl2 | AD7879_GPIO_DATA); | ||
353 | mutex_unlock(&ts->mutex); | 361 | mutex_unlock(&ts->mutex); |
354 | 362 | ||
355 | return error ? : count; | 363 | return !!(val & AD7879_GPIO_DATA); |
356 | } | 364 | } |
357 | 365 | ||
358 | static DEVICE_ATTR(gpio, 0664, ad7879_gpio_show, ad7879_gpio_store); | 366 | static void ad7879_gpio_set_value(struct gpio_chip *chip, |
367 | unsigned gpio, int value) | ||
368 | { | ||
369 | struct ad7879 *ts = container_of(chip, struct ad7879, gc); | ||
359 | 370 | ||
360 | static struct attribute *ad7879_attributes[] = { | 371 | mutex_lock(&ts->mutex); |
361 | &dev_attr_disable.attr, | 372 | if (value) |
362 | &dev_attr_gpio.attr, | 373 | ts->cmd_crtl2 |= AD7879_GPIO_DATA; |
363 | NULL | 374 | else |
364 | }; | 375 | ts->cmd_crtl2 &= ~AD7879_GPIO_DATA; |
365 | 376 | ||
366 | static const struct attribute_group ad7879_attr_group = { | 377 | ad7879_write(ts->bus, AD7879_REG_CTRL2, ts->cmd_crtl2); |
367 | .attrs = ad7879_attributes, | 378 | mutex_unlock(&ts->mutex); |
368 | }; | 379 | } |
380 | |||
381 | static int __devinit ad7879_gpio_add(struct device *dev) | ||
382 | { | ||
383 | struct ad7879 *ts = dev_get_drvdata(dev); | ||
384 | struct ad7879_platform_data *pdata = dev->platform_data; | ||
385 | int ret = 0; | ||
386 | |||
387 | if (pdata->gpio_export) { | ||
388 | ts->gc.direction_input = ad7879_gpio_direction_input; | ||
389 | ts->gc.direction_output = ad7879_gpio_direction_output; | ||
390 | ts->gc.get = ad7879_gpio_get_value; | ||
391 | ts->gc.set = ad7879_gpio_set_value; | ||
392 | ts->gc.can_sleep = 1; | ||
393 | ts->gc.base = pdata->gpio_base; | ||
394 | ts->gc.ngpio = 1; | ||
395 | ts->gc.label = "AD7879-GPIO"; | ||
396 | ts->gc.owner = THIS_MODULE; | ||
397 | ts->gc.dev = dev; | ||
398 | |||
399 | ret = gpiochip_add(&ts->gc); | ||
400 | if (ret) | ||
401 | dev_err(dev, "failed to register gpio %d\n", | ||
402 | ts->gc.base); | ||
403 | } | ||
404 | |||
405 | return ret; | ||
406 | } | ||
407 | |||
408 | /* | ||
409 | * We mark ad7879_gpio_remove inline so there is a chance the code | ||
410 | * gets discarded when not needed. We can't do __devinit/__devexit | ||
411 | * markup since it is used in both probe and remove methods. | ||
412 | */ | ||
413 | static inline void ad7879_gpio_remove(struct device *dev) | ||
414 | { | ||
415 | struct ad7879 *ts = dev_get_drvdata(dev); | ||
416 | struct ad7879_platform_data *pdata = dev->platform_data; | ||
417 | int ret; | ||
418 | |||
419 | if (pdata->gpio_export) { | ||
420 | ret = gpiochip_remove(&ts->gc); | ||
421 | if (ret) | ||
422 | dev_err(dev, "failed to remove gpio %d\n", | ||
423 | ts->gc.base); | ||
424 | } | ||
425 | } | ||
426 | #else | ||
427 | static inline int ad7879_gpio_add(struct device *dev) | ||
428 | { | ||
429 | return 0; | ||
430 | } | ||
431 | |||
432 | static inline void ad7879_gpio_remove(struct device *dev) | ||
433 | { | ||
434 | } | ||
435 | #endif | ||
369 | 436 | ||
370 | static int __devinit ad7879_construct(bus_device *bus, struct ad7879 *ts) | 437 | static int __devinit ad7879_construct(bus_device *bus, struct ad7879 *ts) |
371 | { | 438 | { |
@@ -403,12 +470,6 @@ static int __devinit ad7879_construct(bus_device *bus, struct ad7879 *ts) | |||
403 | ts->pen_down_acc_interval = pdata->pen_down_acc_interval; | 470 | ts->pen_down_acc_interval = pdata->pen_down_acc_interval; |
404 | ts->median = pdata->median; | 471 | ts->median = pdata->median; |
405 | 472 | ||
406 | if (pdata->gpio_output) | ||
407 | ts->gpio_init = AD7879_GPIO_EN | | ||
408 | (pdata->gpio_default ? 0 : AD7879_GPIO_DATA); | ||
409 | else | ||
410 | ts->gpio_init = AD7879_GPIO_EN | AD7879_GPIODIR; | ||
411 | |||
412 | snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&bus->dev)); | 473 | snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&bus->dev)); |
413 | 474 | ||
414 | input_dev->name = "AD7879 Touchscreen"; | 475 | input_dev->name = "AD7879 Touchscreen"; |
@@ -446,6 +507,23 @@ static int __devinit ad7879_construct(bus_device *bus, struct ad7879 *ts) | |||
446 | goto err_free_mem; | 507 | goto err_free_mem; |
447 | } | 508 | } |
448 | 509 | ||
510 | ts->cmd_crtl3 = AD7879_YPLUS_BIT | | ||
511 | AD7879_XPLUS_BIT | | ||
512 | AD7879_Z2_BIT | | ||
513 | AD7879_Z1_BIT | | ||
514 | AD7879_TEMPMASK_BIT | | ||
515 | AD7879_AUXVBATMASK_BIT | | ||
516 | AD7879_GPIOALERTMASK_BIT; | ||
517 | |||
518 | ts->cmd_crtl2 = AD7879_PM(AD7879_PM_DYN) | AD7879_DFR | | ||
519 | AD7879_AVG(ts->averaging) | | ||
520 | AD7879_MFS(ts->median) | | ||
521 | AD7879_FCD(ts->first_conversion_delay); | ||
522 | |||
523 | ts->cmd_crtl1 = AD7879_MODE_INT | AD7879_MODE_SEQ1 | | ||
524 | AD7879_ACQ(ts->acquisition_time) | | ||
525 | AD7879_TMR(ts->pen_down_acc_interval); | ||
526 | |||
449 | ad7879_setup(ts); | 527 | ad7879_setup(ts); |
450 | 528 | ||
451 | err = request_irq(bus->irq, ad7879_irq, | 529 | err = request_irq(bus->irq, ad7879_irq, |
@@ -460,15 +538,21 @@ static int __devinit ad7879_construct(bus_device *bus, struct ad7879 *ts) | |||
460 | if (err) | 538 | if (err) |
461 | goto err_free_irq; | 539 | goto err_free_irq; |
462 | 540 | ||
463 | err = input_register_device(input_dev); | 541 | err = ad7879_gpio_add(&bus->dev); |
464 | if (err) | 542 | if (err) |
465 | goto err_remove_attr; | 543 | goto err_remove_attr; |
466 | 544 | ||
545 | err = input_register_device(input_dev); | ||
546 | if (err) | ||
547 | goto err_remove_gpio; | ||
548 | |||
467 | dev_info(&bus->dev, "Rev.%d touchscreen, irq %d\n", | 549 | dev_info(&bus->dev, "Rev.%d touchscreen, irq %d\n", |
468 | revid >> 8, bus->irq); | 550 | revid >> 8, bus->irq); |
469 | 551 | ||
470 | return 0; | 552 | return 0; |
471 | 553 | ||
554 | err_remove_gpio: | ||
555 | ad7879_gpio_remove(&bus->dev); | ||
472 | err_remove_attr: | 556 | err_remove_attr: |
473 | sysfs_remove_group(&bus->dev.kobj, &ad7879_attr_group); | 557 | sysfs_remove_group(&bus->dev.kobj, &ad7879_attr_group); |
474 | err_free_irq: | 558 | err_free_irq: |
@@ -481,6 +565,7 @@ err_free_mem: | |||
481 | 565 | ||
482 | static int __devexit ad7879_destroy(bus_device *bus, struct ad7879 *ts) | 566 | static int __devexit ad7879_destroy(bus_device *bus, struct ad7879 *ts) |
483 | { | 567 | { |
568 | ad7879_gpio_remove(&bus->dev); | ||
484 | ad7879_disable(ts); | 569 | ad7879_disable(ts); |
485 | sysfs_remove_group(&ts->bus->dev.kobj, &ad7879_attr_group); | 570 | sysfs_remove_group(&ts->bus->dev.kobj, &ad7879_attr_group); |
486 | free_irq(ts->bus->irq, ts); | 571 | free_irq(ts->bus->irq, ts); |
diff --git a/drivers/macintosh/smu.c b/drivers/macintosh/smu.c index 96faa799b82a..f96feeb6b9ce 100644 --- a/drivers/macintosh/smu.c +++ b/drivers/macintosh/smu.c | |||
@@ -660,7 +660,7 @@ static int smu_platform_probe(struct of_device* dev, | |||
660 | return 0; | 660 | return 0; |
661 | } | 661 | } |
662 | 662 | ||
663 | static struct of_device_id smu_platform_match[] = | 663 | static const struct of_device_id smu_platform_match[] = |
664 | { | 664 | { |
665 | { | 665 | { |
666 | .type = "smu", | 666 | .type = "smu", |
diff --git a/drivers/macintosh/therm_pm72.c b/drivers/macintosh/therm_pm72.c index ea32c7e5a9af..454bc501df3c 100644 --- a/drivers/macintosh/therm_pm72.c +++ b/drivers/macintosh/therm_pm72.c | |||
@@ -2211,7 +2211,7 @@ static int fcu_of_remove(struct of_device* dev) | |||
2211 | return 0; | 2211 | return 0; |
2212 | } | 2212 | } |
2213 | 2213 | ||
2214 | static struct of_device_id fcu_match[] = | 2214 | static const struct of_device_id fcu_match[] = |
2215 | { | 2215 | { |
2216 | { | 2216 | { |
2217 | .type = "fcu", | 2217 | .type = "fcu", |
diff --git a/drivers/macintosh/therm_windtunnel.c b/drivers/macintosh/therm_windtunnel.c index 3fbe41b0ac07..ba48fd76396e 100644 --- a/drivers/macintosh/therm_windtunnel.c +++ b/drivers/macintosh/therm_windtunnel.c | |||
@@ -457,7 +457,7 @@ therm_of_remove( struct of_device *dev ) | |||
457 | return 0; | 457 | return 0; |
458 | } | 458 | } |
459 | 459 | ||
460 | static struct of_device_id therm_of_match[] = {{ | 460 | static const struct of_device_id therm_of_match[] = {{ |
461 | .name = "fan", | 461 | .name = "fan", |
462 | .compatible = "adm1030" | 462 | .compatible = "adm1030" |
463 | }, {} | 463 | }, {} |
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c index be625475cf6d..4b22feb01a0c 100644 --- a/drivers/md/dm-table.c +++ b/drivers/md/dm-table.c | |||
@@ -503,16 +503,15 @@ int dm_set_device_limits(struct dm_target *ti, struct dm_dev *dev, | |||
503 | return 0; | 503 | return 0; |
504 | } | 504 | } |
505 | 505 | ||
506 | if (blk_stack_limits(limits, &q->limits, start << 9) < 0) | 506 | if (bdev_stack_limits(limits, bdev, start) < 0) |
507 | DMWARN("%s: target device %s is misaligned: " | 507 | DMWARN("%s: adding target device %s caused an alignment inconsistency: " |
508 | "physical_block_size=%u, logical_block_size=%u, " | 508 | "physical_block_size=%u, logical_block_size=%u, " |
509 | "alignment_offset=%u, start=%llu", | 509 | "alignment_offset=%u, start=%llu", |
510 | dm_device_name(ti->table->md), bdevname(bdev, b), | 510 | dm_device_name(ti->table->md), bdevname(bdev, b), |
511 | q->limits.physical_block_size, | 511 | q->limits.physical_block_size, |
512 | q->limits.logical_block_size, | 512 | q->limits.logical_block_size, |
513 | q->limits.alignment_offset, | 513 | q->limits.alignment_offset, |
514 | (unsigned long long) start << 9); | 514 | (unsigned long long) start << SECTOR_SHIFT); |
515 | |||
516 | 515 | ||
517 | /* | 516 | /* |
518 | * Check if merge fn is supported. | 517 | * Check if merge fn is supported. |
@@ -1026,9 +1025,9 @@ combine_limits: | |||
1026 | * for the table. | 1025 | * for the table. |
1027 | */ | 1026 | */ |
1028 | if (blk_stack_limits(limits, &ti_limits, 0) < 0) | 1027 | if (blk_stack_limits(limits, &ti_limits, 0) < 0) |
1029 | DMWARN("%s: target device " | 1028 | DMWARN("%s: adding target device " |
1030 | "(start sect %llu len %llu) " | 1029 | "(start sect %llu len %llu) " |
1031 | "is misaligned", | 1030 | "caused an alignment inconsistency", |
1032 | dm_device_name(table->md), | 1031 | dm_device_name(table->md), |
1033 | (unsigned long long) ti->begin, | 1032 | (unsigned long long) ti->begin, |
1034 | (unsigned long long) ti->len); | 1033 | (unsigned long long) ti->len); |
@@ -1080,15 +1079,6 @@ void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q, | |||
1080 | struct queue_limits *limits) | 1079 | struct queue_limits *limits) |
1081 | { | 1080 | { |
1082 | /* | 1081 | /* |
1083 | * Each target device in the table has a data area that should normally | ||
1084 | * be aligned such that the DM device's alignment_offset is 0. | ||
1085 | * FIXME: Propagate alignment_offsets up the stack and warn of | ||
1086 | * sub-optimal or inconsistent settings. | ||
1087 | */ | ||
1088 | limits->alignment_offset = 0; | ||
1089 | limits->misaligned = 0; | ||
1090 | |||
1091 | /* | ||
1092 | * Copy table's limits to the DM device's request_queue | 1082 | * Copy table's limits to the DM device's request_queue |
1093 | */ | 1083 | */ |
1094 | q->limits = *limits; | 1084 | q->limits = *limits; |
diff --git a/drivers/media/IR/ir-keytable.c b/drivers/media/IR/ir-keytable.c index bff7a5356037..b521ed9d6e2e 100644 --- a/drivers/media/IR/ir-keytable.c +++ b/drivers/media/IR/ir-keytable.c | |||
@@ -13,7 +13,7 @@ | |||
13 | */ | 13 | */ |
14 | 14 | ||
15 | 15 | ||
16 | #include <linux/usb/input.h> | 16 | #include <linux/input.h> |
17 | #include <media/ir-common.h> | 17 | #include <media/ir-common.h> |
18 | 18 | ||
19 | #define IR_TAB_MIN_SIZE 32 | 19 | #define IR_TAB_MIN_SIZE 32 |
diff --git a/drivers/media/common/tuners/tda8290.c b/drivers/media/common/tuners/tda8290.c index c190b0dedee4..2833137fa819 100644 --- a/drivers/media/common/tuners/tda8290.c +++ b/drivers/media/common/tuners/tda8290.c | |||
@@ -144,7 +144,8 @@ static void set_audio(struct dvb_frontend *fe, | |||
144 | } | 144 | } |
145 | 145 | ||
146 | if (params->mode == V4L2_TUNER_RADIO) { | 146 | if (params->mode == V4L2_TUNER_RADIO) { |
147 | priv->tda8290_easy_mode = 0x01; /* Start with MN values */ | 147 | /* Set TDA8295 to FM radio; Start TDA8290 with MN values */ |
148 | priv->tda8290_easy_mode = (priv->ver & TDA8295) ? 0x80 : 0x01; | ||
148 | tuner_dbg("setting to radio FM\n"); | 149 | tuner_dbg("setting to radio FM\n"); |
149 | } else { | 150 | } else { |
150 | tuner_dbg("setting tda829x to system %s\n", mode); | 151 | tuner_dbg("setting tda829x to system %s\n", mode); |
@@ -672,16 +673,19 @@ static int tda8290_probe(struct tuner_i2c_props *i2c_props) | |||
672 | static int tda8295_probe(struct tuner_i2c_props *i2c_props) | 673 | static int tda8295_probe(struct tuner_i2c_props *i2c_props) |
673 | { | 674 | { |
674 | #define TDA8295_ID 0x8a | 675 | #define TDA8295_ID 0x8a |
676 | #define TDA8295C2_ID 0x8b | ||
675 | unsigned char tda8295_id[] = { 0x2f, 0x00 }; | 677 | unsigned char tda8295_id[] = { 0x2f, 0x00 }; |
676 | 678 | ||
677 | /* detect tda8295 */ | 679 | /* detect tda8295 */ |
678 | tuner_i2c_xfer_send(i2c_props, &tda8295_id[0], 1); | 680 | tuner_i2c_xfer_send(i2c_props, &tda8295_id[0], 1); |
679 | tuner_i2c_xfer_recv(i2c_props, &tda8295_id[1], 1); | 681 | tuner_i2c_xfer_recv(i2c_props, &tda8295_id[1], 1); |
680 | 682 | ||
681 | if (tda8295_id[1] == TDA8295_ID) { | 683 | if ((tda8295_id[1] & 0xfe) == TDA8295_ID) { |
682 | if (debug) | 684 | if (debug) |
683 | printk(KERN_DEBUG "%s: tda8295 detected @ %d-%04x\n", | 685 | printk(KERN_DEBUG "%s: %s detected @ %d-%04x\n", |
684 | __func__, i2c_adapter_id(i2c_props->adap), | 686 | __func__, (tda8295_id[1] == TDA8295_ID) ? |
687 | "tda8295c1" : "tda8295c2", | ||
688 | i2c_adapter_id(i2c_props->adap), | ||
685 | i2c_props->addr); | 689 | i2c_props->addr); |
686 | return 0; | 690 | return 0; |
687 | } | 691 | } |
diff --git a/drivers/media/dvb/Kconfig b/drivers/media/dvb/Kconfig index 35d0817126e9..cf8f65f309da 100644 --- a/drivers/media/dvb/Kconfig +++ b/drivers/media/dvb/Kconfig | |||
@@ -72,6 +72,10 @@ comment "Supported Earthsoft PT1 Adapters" | |||
72 | depends on DVB_CORE && PCI && I2C | 72 | depends on DVB_CORE && PCI && I2C |
73 | source "drivers/media/dvb/pt1/Kconfig" | 73 | source "drivers/media/dvb/pt1/Kconfig" |
74 | 74 | ||
75 | comment "Supported Mantis Adapters" | ||
76 | depends on DVB_CORE && PCI && I2C | ||
77 | source "drivers/media/dvb/mantis/Kconfig" | ||
78 | |||
75 | comment "Supported DVB Frontends" | 79 | comment "Supported DVB Frontends" |
76 | depends on DVB_CORE | 80 | depends on DVB_CORE |
77 | source "drivers/media/dvb/frontends/Kconfig" | 81 | source "drivers/media/dvb/frontends/Kconfig" |
diff --git a/drivers/media/dvb/Makefile b/drivers/media/dvb/Makefile index 16d262ddb45d..c12922c3659b 100644 --- a/drivers/media/dvb/Makefile +++ b/drivers/media/dvb/Makefile | |||
@@ -2,6 +2,18 @@ | |||
2 | # Makefile for the kernel multimedia device drivers. | 2 | # Makefile for the kernel multimedia device drivers. |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := dvb-core/ frontends/ ttpci/ ttusb-dec/ ttusb-budget/ b2c2/ bt8xx/ dvb-usb/ pluto2/ siano/ dm1105/ pt1/ | 5 | obj-y := dvb-core/ \ |
6 | frontends/ \ | ||
7 | ttpci/ \ | ||
8 | ttusb-dec/ \ | ||
9 | ttusb-budget/ \ | ||
10 | b2c2/ \ | ||
11 | bt8xx/ \ | ||
12 | dvb-usb/ \ | ||
13 | pluto2/ \ | ||
14 | siano/ \ | ||
15 | dm1105/ \ | ||
16 | pt1/ \ | ||
17 | mantis/ | ||
6 | 18 | ||
7 | obj-$(CONFIG_DVB_FIREDTV) += firewire/ | 19 | obj-$(CONFIG_DVB_FIREDTV) += firewire/ |
diff --git a/drivers/media/dvb/frontends/Kconfig b/drivers/media/dvb/frontends/Kconfig index a3b8b697349b..cd7f9b7cbffa 100644 --- a/drivers/media/dvb/frontends/Kconfig +++ b/drivers/media/dvb/frontends/Kconfig | |||
@@ -208,6 +208,14 @@ config DVB_DS3000 | |||
208 | help | 208 | help |
209 | A DVB-S/S2 tuner module. Say Y when you want to support this frontend. | 209 | A DVB-S/S2 tuner module. Say Y when you want to support this frontend. |
210 | 210 | ||
211 | config DVB_MB86A16 | ||
212 | tristate "Fujitsu MB86A16 based" | ||
213 | depends on DVB_CORE && I2C | ||
214 | default m if DVB_FE_CUSTOMISE | ||
215 | help | ||
216 | A DVB-S/DSS Direct Conversion reveiver. | ||
217 | Say Y when you want to support this frontend. | ||
218 | |||
211 | comment "DVB-T (terrestrial) frontends" | 219 | comment "DVB-T (terrestrial) frontends" |
212 | depends on DVB_CORE | 220 | depends on DVB_CORE |
213 | 221 | ||
@@ -587,6 +595,17 @@ config DVB_ATBM8830 | |||
587 | help | 595 | help |
588 | A DMB-TH tuner module. Say Y when you want to support this frontend. | 596 | A DMB-TH tuner module. Say Y when you want to support this frontend. |
589 | 597 | ||
598 | config DVB_TDA665x | ||
599 | tristate "TDA665x tuner" | ||
600 | depends on DVB_CORE && I2C | ||
601 | default m if DVB_FE_CUSTOMISE | ||
602 | help | ||
603 | Support for tuner modules based on Philips TDA6650/TDA6651 chips. | ||
604 | Say Y when you want to support this chip. | ||
605 | |||
606 | Currently supported tuners: | ||
607 | * Panasonic ENV57H12D5 (ET-50DT) | ||
608 | |||
590 | comment "Tools to develop new frontends" | 609 | comment "Tools to develop new frontends" |
591 | 610 | ||
592 | config DVB_DUMMY_FE | 611 | config DVB_DUMMY_FE |
diff --git a/drivers/media/dvb/frontends/Makefile b/drivers/media/dvb/frontends/Makefile index 47575cc7b699..874e8ada4d1d 100644 --- a/drivers/media/dvb/frontends/Makefile +++ b/drivers/media/dvb/frontends/Makefile | |||
@@ -64,6 +64,7 @@ obj-$(CONFIG_DVB_TDA10048) += tda10048.o | |||
64 | obj-$(CONFIG_DVB_TUNER_CX24113) += cx24113.o | 64 | obj-$(CONFIG_DVB_TUNER_CX24113) += cx24113.o |
65 | obj-$(CONFIG_DVB_S5H1411) += s5h1411.o | 65 | obj-$(CONFIG_DVB_S5H1411) += s5h1411.o |
66 | obj-$(CONFIG_DVB_LGS8GL5) += lgs8gl5.o | 66 | obj-$(CONFIG_DVB_LGS8GL5) += lgs8gl5.o |
67 | obj-$(CONFIG_DVB_TDA665x) += tda665x.o | ||
67 | obj-$(CONFIG_DVB_LGS8GXX) += lgs8gxx.o | 68 | obj-$(CONFIG_DVB_LGS8GXX) += lgs8gxx.o |
68 | obj-$(CONFIG_DVB_ATBM8830) += atbm8830.o | 69 | obj-$(CONFIG_DVB_ATBM8830) += atbm8830.o |
69 | obj-$(CONFIG_DVB_DUMMY_FE) += dvb_dummy_fe.o | 70 | obj-$(CONFIG_DVB_DUMMY_FE) += dvb_dummy_fe.o |
@@ -80,3 +81,4 @@ obj-$(CONFIG_DVB_STV6110x) += stv6110x.o | |||
80 | obj-$(CONFIG_DVB_ISL6423) += isl6423.o | 81 | obj-$(CONFIG_DVB_ISL6423) += isl6423.o |
81 | obj-$(CONFIG_DVB_EC100) += ec100.o | 82 | obj-$(CONFIG_DVB_EC100) += ec100.o |
82 | obj-$(CONFIG_DVB_DS3000) += ds3000.o | 83 | obj-$(CONFIG_DVB_DS3000) += ds3000.o |
84 | obj-$(CONFIG_DVB_MB86A16) += mb86a16.o | ||
diff --git a/drivers/media/dvb/frontends/dib8000.h b/drivers/media/dvb/frontends/dib8000.h index d99619ae983c..b1ee20799639 100644 --- a/drivers/media/dvb/frontends/dib8000.h +++ b/drivers/media/dvb/frontends/dib8000.h | |||
@@ -100,7 +100,7 @@ static inline int dib8000_set_tune_state(struct dvb_frontend *fe, enum frontend_ | |||
100 | static inline enum frontend_tune_state dib8000_get_tune_state(struct dvb_frontend *fe) | 100 | static inline enum frontend_tune_state dib8000_get_tune_state(struct dvb_frontend *fe) |
101 | { | 101 | { |
102 | printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); | 102 | printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); |
103 | return CT_SHUTDOWN, | 103 | return CT_SHUTDOWN; |
104 | } | 104 | } |
105 | static inline void dib8000_pwm_agc_reset(struct dvb_frontend *fe) | 105 | static inline void dib8000_pwm_agc_reset(struct dvb_frontend *fe) |
106 | { | 106 | { |
diff --git a/drivers/media/dvb/frontends/lgdt3305.h b/drivers/media/dvb/frontends/lgdt3305.h index 4fa6e52d1fe8..9cb11c9cae53 100644 --- a/drivers/media/dvb/frontends/lgdt3305.h +++ b/drivers/media/dvb/frontends/lgdt3305.h | |||
@@ -54,13 +54,13 @@ struct lgdt3305_config { | |||
54 | u16 usref_qam256; /* default: 0x2a80 */ | 54 | u16 usref_qam256; /* default: 0x2a80 */ |
55 | 55 | ||
56 | /* disable i2c repeater - 0:repeater enabled 1:repeater disabled */ | 56 | /* disable i2c repeater - 0:repeater enabled 1:repeater disabled */ |
57 | int deny_i2c_rptr:1; | 57 | unsigned int deny_i2c_rptr:1; |
58 | 58 | ||
59 | /* spectral inversion - 0:disabled 1:enabled */ | 59 | /* spectral inversion - 0:disabled 1:enabled */ |
60 | int spectral_inversion:1; | 60 | unsigned int spectral_inversion:1; |
61 | 61 | ||
62 | /* use RF AGC loop - 0:disabled 1:enabled */ | 62 | /* use RF AGC loop - 0:disabled 1:enabled */ |
63 | int rf_agc_loop:1; | 63 | unsigned int rf_agc_loop:1; |
64 | 64 | ||
65 | enum lgdt3305_mpeg_mode mpeg_mode; | 65 | enum lgdt3305_mpeg_mode mpeg_mode; |
66 | enum lgdt3305_tp_clock_edge tpclk_edge; | 66 | enum lgdt3305_tp_clock_edge tpclk_edge; |
diff --git a/drivers/media/dvb/frontends/mb86a16.c b/drivers/media/dvb/frontends/mb86a16.c new file mode 100644 index 000000000000..d05f7500e0c5 --- /dev/null +++ b/drivers/media/dvb/frontends/mb86a16.c | |||
@@ -0,0 +1,1878 @@ | |||
1 | /* | ||
2 | Fujitsu MB86A16 DVB-S/DSS DC Receiver driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/init.h> | ||
22 | #include <linux/kernel.h> | ||
23 | #include <linux/module.h> | ||
24 | #include <linux/moduleparam.h> | ||
25 | |||
26 | #include "dvb_frontend.h" | ||
27 | #include "mb86a16.h" | ||
28 | #include "mb86a16_priv.h" | ||
29 | |||
30 | unsigned int verbose = 5; | ||
31 | module_param(verbose, int, 0644); | ||
32 | |||
33 | #define ABS(x) ((x) < 0 ? (-x) : (x)) | ||
34 | |||
35 | struct mb86a16_state { | ||
36 | struct i2c_adapter *i2c_adap; | ||
37 | const struct mb86a16_config *config; | ||
38 | struct dvb_frontend frontend; | ||
39 | |||
40 | /* tuning parameters */ | ||
41 | int frequency; | ||
42 | int srate; | ||
43 | |||
44 | /* Internal stuff */ | ||
45 | int master_clk; | ||
46 | int deci; | ||
47 | int csel; | ||
48 | int rsel; | ||
49 | }; | ||
50 | |||
51 | #define MB86A16_ERROR 0 | ||
52 | #define MB86A16_NOTICE 1 | ||
53 | #define MB86A16_INFO 2 | ||
54 | #define MB86A16_DEBUG 3 | ||
55 | |||
56 | #define dprintk(x, y, z, format, arg...) do { \ | ||
57 | if (z) { \ | ||
58 | if ((x > MB86A16_ERROR) && (x > y)) \ | ||
59 | printk(KERN_ERR "%s: " format "\n", __func__, ##arg); \ | ||
60 | else if ((x > MB86A16_NOTICE) && (x > y)) \ | ||
61 | printk(KERN_NOTICE "%s: " format "\n", __func__, ##arg); \ | ||
62 | else if ((x > MB86A16_INFO) && (x > y)) \ | ||
63 | printk(KERN_INFO "%s: " format "\n", __func__, ##arg); \ | ||
64 | else if ((x > MB86A16_DEBUG) && (x > y)) \ | ||
65 | printk(KERN_DEBUG "%s: " format "\n", __func__, ##arg); \ | ||
66 | } else { \ | ||
67 | if (x > y) \ | ||
68 | printk(format, ##arg); \ | ||
69 | } \ | ||
70 | } while (0) | ||
71 | |||
72 | #define TRACE_IN dprintk(verbose, MB86A16_DEBUG, 1, "-->()") | ||
73 | #define TRACE_OUT dprintk(verbose, MB86A16_DEBUG, 1, "()-->") | ||
74 | |||
75 | static int mb86a16_write(struct mb86a16_state *state, u8 reg, u8 val) | ||
76 | { | ||
77 | int ret; | ||
78 | u8 buf[] = { reg, val }; | ||
79 | |||
80 | struct i2c_msg msg = { | ||
81 | .addr = state->config->demod_address, | ||
82 | .flags = 0, | ||
83 | .buf = buf, | ||
84 | .len = 2 | ||
85 | }; | ||
86 | |||
87 | dprintk(verbose, MB86A16_DEBUG, 1, | ||
88 | "writing to [0x%02x],Reg[0x%02x],Data[0x%02x]", | ||
89 | state->config->demod_address, buf[0], buf[1]); | ||
90 | |||
91 | ret = i2c_transfer(state->i2c_adap, &msg, 1); | ||
92 | |||
93 | return (ret != 1) ? -EREMOTEIO : 0; | ||
94 | } | ||
95 | |||
96 | static int mb86a16_read(struct mb86a16_state *state, u8 reg, u8 *val) | ||
97 | { | ||
98 | int ret; | ||
99 | u8 b0[] = { reg }; | ||
100 | u8 b1[] = { 0 }; | ||
101 | |||
102 | struct i2c_msg msg[] = { | ||
103 | { | ||
104 | .addr = state->config->demod_address, | ||
105 | .flags = 0, | ||
106 | .buf = b0, | ||
107 | .len = 1 | ||
108 | }, { | ||
109 | .addr = state->config->demod_address, | ||
110 | .flags = I2C_M_RD, | ||
111 | .buf = b1, | ||
112 | .len = 1 | ||
113 | } | ||
114 | }; | ||
115 | ret = i2c_transfer(state->i2c_adap, msg, 2); | ||
116 | if (ret != 2) { | ||
117 | dprintk(verbose, MB86A16_ERROR, 1, "read error(reg=0x%02x, ret=0x%i)", | ||
118 | reg, ret); | ||
119 | |||
120 | return -EREMOTEIO; | ||
121 | } | ||
122 | *val = b1[0]; | ||
123 | |||
124 | return ret; | ||
125 | } | ||
126 | |||
127 | static int CNTM_set(struct mb86a16_state *state, | ||
128 | unsigned char timint1, | ||
129 | unsigned char timint2, | ||
130 | unsigned char cnext) | ||
131 | { | ||
132 | unsigned char val; | ||
133 | |||
134 | val = (timint1 << 4) | (timint2 << 2) | cnext; | ||
135 | if (mb86a16_write(state, MB86A16_CNTMR, val) < 0) | ||
136 | goto err; | ||
137 | |||
138 | return 0; | ||
139 | |||
140 | err: | ||
141 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
142 | return -EREMOTEIO; | ||
143 | } | ||
144 | |||
145 | static int smrt_set(struct mb86a16_state *state, int rate) | ||
146 | { | ||
147 | int tmp ; | ||
148 | int m ; | ||
149 | unsigned char STOFS0, STOFS1; | ||
150 | |||
151 | m = 1 << state->deci; | ||
152 | tmp = (8192 * state->master_clk - 2 * m * rate * 8192 + state->master_clk / 2) / state->master_clk; | ||
153 | |||
154 | STOFS0 = tmp & 0x0ff; | ||
155 | STOFS1 = (tmp & 0xf00) >> 8; | ||
156 | |||
157 | if (mb86a16_write(state, MB86A16_SRATE1, (state->deci << 2) | | ||
158 | (state->csel << 1) | | ||
159 | state->rsel) < 0) | ||
160 | goto err; | ||
161 | if (mb86a16_write(state, MB86A16_SRATE2, STOFS0) < 0) | ||
162 | goto err; | ||
163 | if (mb86a16_write(state, MB86A16_SRATE3, STOFS1) < 0) | ||
164 | goto err; | ||
165 | |||
166 | return 0; | ||
167 | err: | ||
168 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
169 | return -1; | ||
170 | } | ||
171 | |||
172 | static int srst(struct mb86a16_state *state) | ||
173 | { | ||
174 | if (mb86a16_write(state, MB86A16_RESET, 0x04) < 0) | ||
175 | goto err; | ||
176 | |||
177 | return 0; | ||
178 | err: | ||
179 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
180 | return -EREMOTEIO; | ||
181 | |||
182 | } | ||
183 | |||
184 | static int afcex_data_set(struct mb86a16_state *state, | ||
185 | unsigned char AFCEX_L, | ||
186 | unsigned char AFCEX_H) | ||
187 | { | ||
188 | if (mb86a16_write(state, MB86A16_AFCEXL, AFCEX_L) < 0) | ||
189 | goto err; | ||
190 | if (mb86a16_write(state, MB86A16_AFCEXH, AFCEX_H) < 0) | ||
191 | goto err; | ||
192 | |||
193 | return 0; | ||
194 | err: | ||
195 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
196 | |||
197 | return -1; | ||
198 | } | ||
199 | |||
200 | static int afcofs_data_set(struct mb86a16_state *state, | ||
201 | unsigned char AFCEX_L, | ||
202 | unsigned char AFCEX_H) | ||
203 | { | ||
204 | if (mb86a16_write(state, 0x58, AFCEX_L) < 0) | ||
205 | goto err; | ||
206 | if (mb86a16_write(state, 0x59, AFCEX_H) < 0) | ||
207 | goto err; | ||
208 | |||
209 | return 0; | ||
210 | err: | ||
211 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
212 | return -EREMOTEIO; | ||
213 | } | ||
214 | |||
215 | static int stlp_set(struct mb86a16_state *state, | ||
216 | unsigned char STRAS, | ||
217 | unsigned char STRBS) | ||
218 | { | ||
219 | if (mb86a16_write(state, MB86A16_STRFILTCOEF1, (STRBS << 3) | (STRAS)) < 0) | ||
220 | goto err; | ||
221 | |||
222 | return 0; | ||
223 | err: | ||
224 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
225 | return -EREMOTEIO; | ||
226 | } | ||
227 | |||
228 | static int Vi_set(struct mb86a16_state *state, unsigned char ETH, unsigned char VIA) | ||
229 | { | ||
230 | if (mb86a16_write(state, MB86A16_VISET2, 0x04) < 0) | ||
231 | goto err; | ||
232 | if (mb86a16_write(state, MB86A16_VISET3, 0xf5) < 0) | ||
233 | goto err; | ||
234 | |||
235 | return 0; | ||
236 | err: | ||
237 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
238 | return -EREMOTEIO; | ||
239 | } | ||
240 | |||
241 | static int initial_set(struct mb86a16_state *state) | ||
242 | { | ||
243 | if (stlp_set(state, 5, 7)) | ||
244 | goto err; | ||
245 | |||
246 | udelay(100); | ||
247 | if (afcex_data_set(state, 0, 0)) | ||
248 | goto err; | ||
249 | |||
250 | udelay(100); | ||
251 | if (afcofs_data_set(state, 0, 0)) | ||
252 | goto err; | ||
253 | |||
254 | udelay(100); | ||
255 | if (mb86a16_write(state, MB86A16_CRLFILTCOEF1, 0x16) < 0) | ||
256 | goto err; | ||
257 | if (mb86a16_write(state, 0x2f, 0x21) < 0) | ||
258 | goto err; | ||
259 | if (mb86a16_write(state, MB86A16_VIMAG, 0x38) < 0) | ||
260 | goto err; | ||
261 | if (mb86a16_write(state, MB86A16_FAGCS1, 0x00) < 0) | ||
262 | goto err; | ||
263 | if (mb86a16_write(state, MB86A16_FAGCS2, 0x1c) < 0) | ||
264 | goto err; | ||
265 | if (mb86a16_write(state, MB86A16_FAGCS3, 0x20) < 0) | ||
266 | goto err; | ||
267 | if (mb86a16_write(state, MB86A16_FAGCS4, 0x1e) < 0) | ||
268 | goto err; | ||
269 | if (mb86a16_write(state, MB86A16_FAGCS5, 0x23) < 0) | ||
270 | goto err; | ||
271 | if (mb86a16_write(state, 0x54, 0xff) < 0) | ||
272 | goto err; | ||
273 | if (mb86a16_write(state, MB86A16_TSOUT, 0x00) < 0) | ||
274 | goto err; | ||
275 | |||
276 | return 0; | ||
277 | |||
278 | err: | ||
279 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
280 | return -EREMOTEIO; | ||
281 | } | ||
282 | |||
283 | static int S01T_set(struct mb86a16_state *state, | ||
284 | unsigned char s1t, | ||
285 | unsigned s0t) | ||
286 | { | ||
287 | if (mb86a16_write(state, 0x33, (s1t << 3) | s0t) < 0) | ||
288 | goto err; | ||
289 | |||
290 | return 0; | ||
291 | err: | ||
292 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
293 | return -EREMOTEIO; | ||
294 | } | ||
295 | |||
296 | |||
297 | static int EN_set(struct mb86a16_state *state, | ||
298 | int cren, | ||
299 | int afcen) | ||
300 | { | ||
301 | unsigned char val; | ||
302 | |||
303 | val = 0x7a | (cren << 7) | (afcen << 2); | ||
304 | if (mb86a16_write(state, 0x49, val) < 0) | ||
305 | goto err; | ||
306 | |||
307 | return 0; | ||
308 | err: | ||
309 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
310 | return -EREMOTEIO; | ||
311 | } | ||
312 | |||
313 | static int AFCEXEN_set(struct mb86a16_state *state, | ||
314 | int afcexen, | ||
315 | int smrt) | ||
316 | { | ||
317 | unsigned char AFCA ; | ||
318 | |||
319 | if (smrt > 18875) | ||
320 | AFCA = 4; | ||
321 | else if (smrt > 9375) | ||
322 | AFCA = 3; | ||
323 | else if (smrt > 2250) | ||
324 | AFCA = 2; | ||
325 | else | ||
326 | AFCA = 1; | ||
327 | |||
328 | if (mb86a16_write(state, 0x2a, 0x02 | (afcexen << 5) | (AFCA << 2)) < 0) | ||
329 | goto err; | ||
330 | |||
331 | return 0; | ||
332 | |||
333 | err: | ||
334 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
335 | return -EREMOTEIO; | ||
336 | } | ||
337 | |||
338 | static int DAGC_data_set(struct mb86a16_state *state, | ||
339 | unsigned char DAGCA, | ||
340 | unsigned char DAGCW) | ||
341 | { | ||
342 | if (mb86a16_write(state, 0x2d, (DAGCA << 3) | DAGCW) < 0) | ||
343 | goto err; | ||
344 | |||
345 | return 0; | ||
346 | |||
347 | err: | ||
348 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
349 | return -EREMOTEIO; | ||
350 | } | ||
351 | |||
352 | static void smrt_info_get(struct mb86a16_state *state, int rate) | ||
353 | { | ||
354 | if (rate >= 37501) { | ||
355 | state->deci = 0; state->csel = 0; state->rsel = 0; | ||
356 | } else if (rate >= 30001) { | ||
357 | state->deci = 0; state->csel = 0; state->rsel = 1; | ||
358 | } else if (rate >= 26251) { | ||
359 | state->deci = 0; state->csel = 1; state->rsel = 0; | ||
360 | } else if (rate >= 22501) { | ||
361 | state->deci = 0; state->csel = 1; state->rsel = 1; | ||
362 | } else if (rate >= 18751) { | ||
363 | state->deci = 1; state->csel = 0; state->rsel = 0; | ||
364 | } else if (rate >= 15001) { | ||
365 | state->deci = 1; state->csel = 0; state->rsel = 1; | ||
366 | } else if (rate >= 13126) { | ||
367 | state->deci = 1; state->csel = 1; state->rsel = 0; | ||
368 | } else if (rate >= 11251) { | ||
369 | state->deci = 1; state->csel = 1; state->rsel = 1; | ||
370 | } else if (rate >= 9376) { | ||
371 | state->deci = 2; state->csel = 0; state->rsel = 0; | ||
372 | } else if (rate >= 7501) { | ||
373 | state->deci = 2; state->csel = 0; state->rsel = 1; | ||
374 | } else if (rate >= 6563) { | ||
375 | state->deci = 2; state->csel = 1; state->rsel = 0; | ||
376 | } else if (rate >= 5626) { | ||
377 | state->deci = 2; state->csel = 1; state->rsel = 1; | ||
378 | } else if (rate >= 4688) { | ||
379 | state->deci = 3; state->csel = 0; state->rsel = 0; | ||
380 | } else if (rate >= 3751) { | ||
381 | state->deci = 3; state->csel = 0; state->rsel = 1; | ||
382 | } else if (rate >= 3282) { | ||
383 | state->deci = 3; state->csel = 1; state->rsel = 0; | ||
384 | } else if (rate >= 2814) { | ||
385 | state->deci = 3; state->csel = 1; state->rsel = 1; | ||
386 | } else if (rate >= 2344) { | ||
387 | state->deci = 4; state->csel = 0; state->rsel = 0; | ||
388 | } else if (rate >= 1876) { | ||
389 | state->deci = 4; state->csel = 0; state->rsel = 1; | ||
390 | } else if (rate >= 1641) { | ||
391 | state->deci = 4; state->csel = 1; state->rsel = 0; | ||
392 | } else if (rate >= 1407) { | ||
393 | state->deci = 4; state->csel = 1; state->rsel = 1; | ||
394 | } else if (rate >= 1172) { | ||
395 | state->deci = 5; state->csel = 0; state->rsel = 0; | ||
396 | } else if (rate >= 939) { | ||
397 | state->deci = 5; state->csel = 0; state->rsel = 1; | ||
398 | } else if (rate >= 821) { | ||
399 | state->deci = 5; state->csel = 1; state->rsel = 0; | ||
400 | } else { | ||
401 | state->deci = 5; state->csel = 1; state->rsel = 1; | ||
402 | } | ||
403 | |||
404 | if (state->csel == 0) | ||
405 | state->master_clk = 92000; | ||
406 | else | ||
407 | state->master_clk = 61333; | ||
408 | |||
409 | } | ||
410 | |||
411 | static int signal_det(struct mb86a16_state *state, | ||
412 | int smrt, | ||
413 | unsigned char *SIG) | ||
414 | { | ||
415 | |||
416 | int ret ; | ||
417 | int smrtd ; | ||
418 | int wait_sym ; | ||
419 | |||
420 | u32 wait_t; | ||
421 | unsigned char S[3] ; | ||
422 | int i ; | ||
423 | |||
424 | if (*SIG > 45) { | ||
425 | if (CNTM_set(state, 2, 1, 2) < 0) { | ||
426 | dprintk(verbose, MB86A16_ERROR, 1, "CNTM set Error"); | ||
427 | return -1; | ||
428 | } | ||
429 | wait_sym = 40000; | ||
430 | } else { | ||
431 | if (CNTM_set(state, 3, 1, 2) < 0) { | ||
432 | dprintk(verbose, MB86A16_ERROR, 1, "CNTM set Error"); | ||
433 | return -1; | ||
434 | } | ||
435 | wait_sym = 80000; | ||
436 | } | ||
437 | for (i = 0; i < 3; i++) { | ||
438 | if (i == 0) | ||
439 | smrtd = smrt * 98 / 100; | ||
440 | else if (i == 1) | ||
441 | smrtd = smrt; | ||
442 | else | ||
443 | smrtd = smrt * 102 / 100; | ||
444 | smrt_info_get(state, smrtd); | ||
445 | smrt_set(state, smrtd); | ||
446 | srst(state); | ||
447 | wait_t = (wait_sym + 99 * smrtd / 100) / smrtd; | ||
448 | if (wait_t == 0) | ||
449 | wait_t = 1; | ||
450 | msleep_interruptible(10); | ||
451 | if (mb86a16_read(state, 0x37, &(S[i])) != 2) { | ||
452 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
453 | return -EREMOTEIO; | ||
454 | } | ||
455 | } | ||
456 | if ((S[1] > S[0] * 112 / 100) && | ||
457 | (S[1] > S[2] * 112 / 100)) { | ||
458 | |||
459 | ret = 1; | ||
460 | } else { | ||
461 | ret = 0; | ||
462 | } | ||
463 | *SIG = S[1]; | ||
464 | |||
465 | if (CNTM_set(state, 0, 1, 2) < 0) { | ||
466 | dprintk(verbose, MB86A16_ERROR, 1, "CNTM set Error"); | ||
467 | return -1; | ||
468 | } | ||
469 | |||
470 | return ret; | ||
471 | } | ||
472 | |||
473 | static int rf_val_set(struct mb86a16_state *state, | ||
474 | int f, | ||
475 | int smrt, | ||
476 | unsigned char R) | ||
477 | { | ||
478 | unsigned char C, F, B; | ||
479 | int M; | ||
480 | unsigned char rf_val[5]; | ||
481 | int ack = -1; | ||
482 | |||
483 | if (smrt > 37750) | ||
484 | C = 1; | ||
485 | else if (smrt > 18875) | ||
486 | C = 2; | ||
487 | else if (smrt > 5500) | ||
488 | C = 3; | ||
489 | else | ||
490 | C = 4; | ||
491 | |||
492 | if (smrt > 30500) | ||
493 | F = 3; | ||
494 | else if (smrt > 9375) | ||
495 | F = 1; | ||
496 | else if (smrt > 4625) | ||
497 | F = 0; | ||
498 | else | ||
499 | F = 2; | ||
500 | |||
501 | if (f < 1060) | ||
502 | B = 0; | ||
503 | else if (f < 1175) | ||
504 | B = 1; | ||
505 | else if (f < 1305) | ||
506 | B = 2; | ||
507 | else if (f < 1435) | ||
508 | B = 3; | ||
509 | else if (f < 1570) | ||
510 | B = 4; | ||
511 | else if (f < 1715) | ||
512 | B = 5; | ||
513 | else if (f < 1845) | ||
514 | B = 6; | ||
515 | else if (f < 1980) | ||
516 | B = 7; | ||
517 | else if (f < 2080) | ||
518 | B = 8; | ||
519 | else | ||
520 | B = 9; | ||
521 | |||
522 | M = f * (1 << R) / 2; | ||
523 | |||
524 | rf_val[0] = 0x01 | (C << 3) | (F << 1); | ||
525 | rf_val[1] = (R << 5) | ((M & 0x1f000) >> 12); | ||
526 | rf_val[2] = (M & 0x00ff0) >> 4; | ||
527 | rf_val[3] = ((M & 0x0000f) << 4) | B; | ||
528 | |||
529 | /* Frequency Set */ | ||
530 | if (mb86a16_write(state, 0x21, rf_val[0]) < 0) | ||
531 | ack = 0; | ||
532 | if (mb86a16_write(state, 0x22, rf_val[1]) < 0) | ||
533 | ack = 0; | ||
534 | if (mb86a16_write(state, 0x23, rf_val[2]) < 0) | ||
535 | ack = 0; | ||
536 | if (mb86a16_write(state, 0x24, rf_val[3]) < 0) | ||
537 | ack = 0; | ||
538 | if (mb86a16_write(state, 0x25, 0x01) < 0) | ||
539 | ack = 0; | ||
540 | if (ack == 0) { | ||
541 | dprintk(verbose, MB86A16_ERROR, 1, "RF Setup - I2C transfer error"); | ||
542 | return -EREMOTEIO; | ||
543 | } | ||
544 | |||
545 | return 0; | ||
546 | } | ||
547 | |||
548 | static int afcerr_chk(struct mb86a16_state *state) | ||
549 | { | ||
550 | unsigned char AFCM_L, AFCM_H ; | ||
551 | int AFCM ; | ||
552 | int afcm, afcerr ; | ||
553 | |||
554 | if (mb86a16_read(state, 0x0e, &AFCM_L) != 2) | ||
555 | goto err; | ||
556 | if (mb86a16_read(state, 0x0f, &AFCM_H) != 2) | ||
557 | goto err; | ||
558 | |||
559 | AFCM = (AFCM_H << 8) + AFCM_L; | ||
560 | |||
561 | if (AFCM > 2048) | ||
562 | afcm = AFCM - 4096; | ||
563 | else | ||
564 | afcm = AFCM; | ||
565 | afcerr = afcm * state->master_clk / 8192; | ||
566 | |||
567 | return afcerr; | ||
568 | |||
569 | err: | ||
570 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
571 | return -EREMOTEIO; | ||
572 | } | ||
573 | |||
574 | static int dagcm_val_get(struct mb86a16_state *state) | ||
575 | { | ||
576 | int DAGCM; | ||
577 | unsigned char DAGCM_H, DAGCM_L; | ||
578 | |||
579 | if (mb86a16_read(state, 0x45, &DAGCM_L) != 2) | ||
580 | goto err; | ||
581 | if (mb86a16_read(state, 0x46, &DAGCM_H) != 2) | ||
582 | goto err; | ||
583 | |||
584 | DAGCM = (DAGCM_H << 8) + DAGCM_L; | ||
585 | |||
586 | return DAGCM; | ||
587 | |||
588 | err: | ||
589 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
590 | return -EREMOTEIO; | ||
591 | } | ||
592 | |||
593 | static int mb86a16_read_status(struct dvb_frontend *fe, fe_status_t *status) | ||
594 | { | ||
595 | u8 stat, stat2; | ||
596 | struct mb86a16_state *state = fe->demodulator_priv; | ||
597 | |||
598 | *status = 0; | ||
599 | |||
600 | if (mb86a16_read(state, MB86A16_SIG1, &stat) != 2) | ||
601 | goto err; | ||
602 | if (mb86a16_read(state, MB86A16_SIG2, &stat2) != 2) | ||
603 | goto err; | ||
604 | if ((stat > 25) && (stat2 > 25)) | ||
605 | *status |= FE_HAS_SIGNAL; | ||
606 | if ((stat > 45) && (stat2 > 45)) | ||
607 | *status |= FE_HAS_CARRIER; | ||
608 | |||
609 | if (mb86a16_read(state, MB86A16_STATUS, &stat) != 2) | ||
610 | goto err; | ||
611 | |||
612 | if (stat & 0x01) | ||
613 | *status |= FE_HAS_SYNC; | ||
614 | if (stat & 0x01) | ||
615 | *status |= FE_HAS_VITERBI; | ||
616 | |||
617 | if (mb86a16_read(state, MB86A16_FRAMESYNC, &stat) != 2) | ||
618 | goto err; | ||
619 | |||
620 | if ((stat & 0x0f) && (*status & FE_HAS_VITERBI)) | ||
621 | *status |= FE_HAS_LOCK; | ||
622 | |||
623 | return 0; | ||
624 | |||
625 | err: | ||
626 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
627 | return -EREMOTEIO; | ||
628 | } | ||
629 | |||
630 | static int sync_chk(struct mb86a16_state *state, | ||
631 | unsigned char *VIRM) | ||
632 | { | ||
633 | unsigned char val; | ||
634 | int sync; | ||
635 | |||
636 | if (mb86a16_read(state, 0x0d, &val) != 2) | ||
637 | goto err; | ||
638 | |||
639 | dprintk(verbose, MB86A16_INFO, 1, "Status = %02x,", val); | ||
640 | sync = val & 0x01; | ||
641 | *VIRM = (val & 0x1c) >> 2; | ||
642 | |||
643 | return sync; | ||
644 | err: | ||
645 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
646 | return -EREMOTEIO; | ||
647 | |||
648 | } | ||
649 | |||
650 | static int freqerr_chk(struct mb86a16_state *state, | ||
651 | int fTP, | ||
652 | int smrt, | ||
653 | int unit) | ||
654 | { | ||
655 | unsigned char CRM, AFCML, AFCMH; | ||
656 | unsigned char temp1, temp2, temp3; | ||
657 | int crm, afcm, AFCM; | ||
658 | int crrerr, afcerr; /* kHz */ | ||
659 | int frqerr; /* MHz */ | ||
660 | int afcen, afcexen = 0; | ||
661 | int R, M, fOSC, fOSC_OFS; | ||
662 | |||
663 | if (mb86a16_read(state, 0x43, &CRM) != 2) | ||
664 | goto err; | ||
665 | |||
666 | if (CRM > 127) | ||
667 | crm = CRM - 256; | ||
668 | else | ||
669 | crm = CRM; | ||
670 | |||
671 | crrerr = smrt * crm / 256; | ||
672 | if (mb86a16_read(state, 0x49, &temp1) != 2) | ||
673 | goto err; | ||
674 | |||
675 | afcen = (temp1 & 0x04) >> 2; | ||
676 | if (afcen == 0) { | ||
677 | if (mb86a16_read(state, 0x2a, &temp1) != 2) | ||
678 | goto err; | ||
679 | afcexen = (temp1 & 0x20) >> 5; | ||
680 | } | ||
681 | |||
682 | if (afcen == 1) { | ||
683 | if (mb86a16_read(state, 0x0e, &AFCML) != 2) | ||
684 | goto err; | ||
685 | if (mb86a16_read(state, 0x0f, &AFCMH) != 2) | ||
686 | goto err; | ||
687 | } else if (afcexen == 1) { | ||
688 | if (mb86a16_read(state, 0x2b, &AFCML) != 2) | ||
689 | goto err; | ||
690 | if (mb86a16_read(state, 0x2c, &AFCMH) != 2) | ||
691 | goto err; | ||
692 | } | ||
693 | if ((afcen == 1) || (afcexen == 1)) { | ||
694 | smrt_info_get(state, smrt); | ||
695 | AFCM = ((AFCMH & 0x01) << 8) + AFCML; | ||
696 | if (AFCM > 255) | ||
697 | afcm = AFCM - 512; | ||
698 | else | ||
699 | afcm = AFCM; | ||
700 | |||
701 | afcerr = afcm * state->master_clk / 8192; | ||
702 | } else | ||
703 | afcerr = 0; | ||
704 | |||
705 | if (mb86a16_read(state, 0x22, &temp1) != 2) | ||
706 | goto err; | ||
707 | if (mb86a16_read(state, 0x23, &temp2) != 2) | ||
708 | goto err; | ||
709 | if (mb86a16_read(state, 0x24, &temp3) != 2) | ||
710 | goto err; | ||
711 | |||
712 | R = (temp1 & 0xe0) >> 5; | ||
713 | M = ((temp1 & 0x1f) << 12) + (temp2 << 4) + (temp3 >> 4); | ||
714 | if (R == 0) | ||
715 | fOSC = 2 * M; | ||
716 | else | ||
717 | fOSC = M; | ||
718 | |||
719 | fOSC_OFS = fOSC - fTP; | ||
720 | |||
721 | if (unit == 0) { /* MHz */ | ||
722 | if (crrerr + afcerr + fOSC_OFS * 1000 >= 0) | ||
723 | frqerr = (crrerr + afcerr + fOSC_OFS * 1000 + 500) / 1000; | ||
724 | else | ||
725 | frqerr = (crrerr + afcerr + fOSC_OFS * 1000 - 500) / 1000; | ||
726 | } else { /* kHz */ | ||
727 | frqerr = crrerr + afcerr + fOSC_OFS * 1000; | ||
728 | } | ||
729 | |||
730 | return frqerr; | ||
731 | err: | ||
732 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
733 | return -EREMOTEIO; | ||
734 | } | ||
735 | |||
736 | static unsigned char vco_dev_get(struct mb86a16_state *state, int smrt) | ||
737 | { | ||
738 | unsigned char R; | ||
739 | |||
740 | if (smrt > 9375) | ||
741 | R = 0; | ||
742 | else | ||
743 | R = 1; | ||
744 | |||
745 | return R; | ||
746 | } | ||
747 | |||
748 | static void swp_info_get(struct mb86a16_state *state, | ||
749 | int fOSC_start, | ||
750 | int smrt, | ||
751 | int v, int R, | ||
752 | int swp_ofs, | ||
753 | int *fOSC, | ||
754 | int *afcex_freq, | ||
755 | unsigned char *AFCEX_L, | ||
756 | unsigned char *AFCEX_H) | ||
757 | { | ||
758 | int AFCEX ; | ||
759 | int crnt_swp_freq ; | ||
760 | |||
761 | crnt_swp_freq = fOSC_start * 1000 + v * swp_ofs; | ||
762 | |||
763 | if (R == 0) | ||
764 | *fOSC = (crnt_swp_freq + 1000) / 2000 * 2; | ||
765 | else | ||
766 | *fOSC = (crnt_swp_freq + 500) / 1000; | ||
767 | |||
768 | if (*fOSC >= crnt_swp_freq) | ||
769 | *afcex_freq = *fOSC * 1000 - crnt_swp_freq; | ||
770 | else | ||
771 | *afcex_freq = crnt_swp_freq - *fOSC * 1000; | ||
772 | |||
773 | AFCEX = *afcex_freq * 8192 / state->master_clk; | ||
774 | *AFCEX_L = AFCEX & 0x00ff; | ||
775 | *AFCEX_H = (AFCEX & 0x0f00) >> 8; | ||
776 | } | ||
777 | |||
778 | |||
779 | static int swp_freq_calcuation(struct mb86a16_state *state, int i, int v, int *V, int vmax, int vmin, | ||
780 | int SIGMIN, int fOSC, int afcex_freq, int swp_ofs, unsigned char *SIG1) | ||
781 | { | ||
782 | int swp_freq ; | ||
783 | |||
784 | if ((i % 2 == 1) && (v <= vmax)) { | ||
785 | /* positive v (case 1) */ | ||
786 | if ((v - 1 == vmin) && | ||
787 | (*(V + 30 + v) >= 0) && | ||
788 | (*(V + 30 + v - 1) >= 0) && | ||
789 | (*(V + 30 + v - 1) > *(V + 30 + v)) && | ||
790 | (*(V + 30 + v - 1) > SIGMIN)) { | ||
791 | |||
792 | swp_freq = fOSC * 1000 + afcex_freq - swp_ofs; | ||
793 | *SIG1 = *(V + 30 + v - 1); | ||
794 | } else if ((v == vmax) && | ||
795 | (*(V + 30 + v) >= 0) && | ||
796 | (*(V + 30 + v - 1) >= 0) && | ||
797 | (*(V + 30 + v) > *(V + 30 + v - 1)) && | ||
798 | (*(V + 30 + v) > SIGMIN)) { | ||
799 | /* (case 2) */ | ||
800 | swp_freq = fOSC * 1000 + afcex_freq; | ||
801 | *SIG1 = *(V + 30 + v); | ||
802 | } else if ((*(V + 30 + v) > 0) && | ||
803 | (*(V + 30 + v - 1) > 0) && | ||
804 | (*(V + 30 + v - 2) > 0) && | ||
805 | (*(V + 30 + v - 3) > 0) && | ||
806 | (*(V + 30 + v - 1) > *(V + 30 + v)) && | ||
807 | (*(V + 30 + v - 2) > *(V + 30 + v - 3)) && | ||
808 | ((*(V + 30 + v - 1) > SIGMIN) || | ||
809 | (*(V + 30 + v - 2) > SIGMIN))) { | ||
810 | /* (case 3) */ | ||
811 | if (*(V + 30 + v - 1) >= *(V + 30 + v - 2)) { | ||
812 | swp_freq = fOSC * 1000 + afcex_freq - swp_ofs; | ||
813 | *SIG1 = *(V + 30 + v - 1); | ||
814 | } else { | ||
815 | swp_freq = fOSC * 1000 + afcex_freq - swp_ofs * 2; | ||
816 | *SIG1 = *(V + 30 + v - 2); | ||
817 | } | ||
818 | } else if ((v == vmax) && | ||
819 | (*(V + 30 + v) >= 0) && | ||
820 | (*(V + 30 + v - 1) >= 0) && | ||
821 | (*(V + 30 + v - 2) >= 0) && | ||
822 | (*(V + 30 + v) > *(V + 30 + v - 2)) && | ||
823 | (*(V + 30 + v - 1) > *(V + 30 + v - 2)) && | ||
824 | ((*(V + 30 + v) > SIGMIN) || | ||
825 | (*(V + 30 + v - 1) > SIGMIN))) { | ||
826 | /* (case 4) */ | ||
827 | if (*(V + 30 + v) >= *(V + 30 + v - 1)) { | ||
828 | swp_freq = fOSC * 1000 + afcex_freq; | ||
829 | *SIG1 = *(V + 30 + v); | ||
830 | } else { | ||
831 | swp_freq = fOSC * 1000 + afcex_freq - swp_ofs; | ||
832 | *SIG1 = *(V + 30 + v - 1); | ||
833 | } | ||
834 | } else { | ||
835 | swp_freq = -1 ; | ||
836 | } | ||
837 | } else if ((i % 2 == 0) && (v >= vmin)) { | ||
838 | /* Negative v (case 1) */ | ||
839 | if ((*(V + 30 + v) > 0) && | ||
840 | (*(V + 30 + v + 1) > 0) && | ||
841 | (*(V + 30 + v + 2) > 0) && | ||
842 | (*(V + 30 + v + 1) > *(V + 30 + v)) && | ||
843 | (*(V + 30 + v + 1) > *(V + 30 + v + 2)) && | ||
844 | (*(V + 30 + v + 1) > SIGMIN)) { | ||
845 | |||
846 | swp_freq = fOSC * 1000 + afcex_freq + swp_ofs; | ||
847 | *SIG1 = *(V + 30 + v + 1); | ||
848 | } else if ((v + 1 == vmax) && | ||
849 | (*(V + 30 + v) >= 0) && | ||
850 | (*(V + 30 + v + 1) >= 0) && | ||
851 | (*(V + 30 + v + 1) > *(V + 30 + v)) && | ||
852 | (*(V + 30 + v + 1) > SIGMIN)) { | ||
853 | /* (case 2) */ | ||
854 | swp_freq = fOSC * 1000 + afcex_freq + swp_ofs; | ||
855 | *SIG1 = *(V + 30 + v); | ||
856 | } else if ((v == vmin) && | ||
857 | (*(V + 30 + v) > 0) && | ||
858 | (*(V + 30 + v + 1) > 0) && | ||
859 | (*(V + 30 + v + 2) > 0) && | ||
860 | (*(V + 30 + v) > *(V + 30 + v + 1)) && | ||
861 | (*(V + 30 + v) > *(V + 30 + v + 2)) && | ||
862 | (*(V + 30 + v) > SIGMIN)) { | ||
863 | /* (case 3) */ | ||
864 | swp_freq = fOSC * 1000 + afcex_freq; | ||
865 | *SIG1 = *(V + 30 + v); | ||
866 | } else if ((*(V + 30 + v) >= 0) && | ||
867 | (*(V + 30 + v + 1) >= 0) && | ||
868 | (*(V + 30 + v + 2) >= 0) && | ||
869 | (*(V + 30 + v + 3) >= 0) && | ||
870 | (*(V + 30 + v + 1) > *(V + 30 + v)) && | ||
871 | (*(V + 30 + v + 2) > *(V + 30 + v + 3)) && | ||
872 | ((*(V + 30 + v + 1) > SIGMIN) || | ||
873 | (*(V + 30 + v + 2) > SIGMIN))) { | ||
874 | /* (case 4) */ | ||
875 | if (*(V + 30 + v + 1) >= *(V + 30 + v + 2)) { | ||
876 | swp_freq = fOSC * 1000 + afcex_freq + swp_ofs; | ||
877 | *SIG1 = *(V + 30 + v + 1); | ||
878 | } else { | ||
879 | swp_freq = fOSC * 1000 + afcex_freq + swp_ofs * 2; | ||
880 | *SIG1 = *(V + 30 + v + 2); | ||
881 | } | ||
882 | } else if ((*(V + 30 + v) >= 0) && | ||
883 | (*(V + 30 + v + 1) >= 0) && | ||
884 | (*(V + 30 + v + 2) >= 0) && | ||
885 | (*(V + 30 + v + 3) >= 0) && | ||
886 | (*(V + 30 + v) > *(V + 30 + v + 2)) && | ||
887 | (*(V + 30 + v + 1) > *(V + 30 + v + 2)) && | ||
888 | (*(V + 30 + v) > *(V + 30 + v + 3)) && | ||
889 | (*(V + 30 + v + 1) > *(V + 30 + v + 3)) && | ||
890 | ((*(V + 30 + v) > SIGMIN) || | ||
891 | (*(V + 30 + v + 1) > SIGMIN))) { | ||
892 | /* (case 5) */ | ||
893 | if (*(V + 30 + v) >= *(V + 30 + v + 1)) { | ||
894 | swp_freq = fOSC * 1000 + afcex_freq; | ||
895 | *SIG1 = *(V + 30 + v); | ||
896 | } else { | ||
897 | swp_freq = fOSC * 1000 + afcex_freq + swp_ofs; | ||
898 | *SIG1 = *(V + 30 + v + 1); | ||
899 | } | ||
900 | } else if ((v + 2 == vmin) && | ||
901 | (*(V + 30 + v) >= 0) && | ||
902 | (*(V + 30 + v + 1) >= 0) && | ||
903 | (*(V + 30 + v + 2) >= 0) && | ||
904 | (*(V + 30 + v + 1) > *(V + 30 + v)) && | ||
905 | (*(V + 30 + v + 2) > *(V + 30 + v)) && | ||
906 | ((*(V + 30 + v + 1) > SIGMIN) || | ||
907 | (*(V + 30 + v + 2) > SIGMIN))) { | ||
908 | /* (case 6) */ | ||
909 | if (*(V + 30 + v + 1) >= *(V + 30 + v + 2)) { | ||
910 | swp_freq = fOSC * 1000 + afcex_freq + swp_ofs; | ||
911 | *SIG1 = *(V + 30 + v + 1); | ||
912 | } else { | ||
913 | swp_freq = fOSC * 1000 + afcex_freq + swp_ofs * 2; | ||
914 | *SIG1 = *(V + 30 + v + 2); | ||
915 | } | ||
916 | } else if ((vmax == 0) && (vmin == 0) && (*(V + 30 + v) > SIGMIN)) { | ||
917 | swp_freq = fOSC * 1000; | ||
918 | *SIG1 = *(V + 30 + v); | ||
919 | } else | ||
920 | swp_freq = -1; | ||
921 | } else | ||
922 | swp_freq = -1; | ||
923 | |||
924 | return swp_freq; | ||
925 | } | ||
926 | |||
927 | static void swp_info_get2(struct mb86a16_state *state, | ||
928 | int smrt, | ||
929 | int R, | ||
930 | int swp_freq, | ||
931 | int *afcex_freq, | ||
932 | int *fOSC, | ||
933 | unsigned char *AFCEX_L, | ||
934 | unsigned char *AFCEX_H) | ||
935 | { | ||
936 | int AFCEX ; | ||
937 | |||
938 | if (R == 0) | ||
939 | *fOSC = (swp_freq + 1000) / 2000 * 2; | ||
940 | else | ||
941 | *fOSC = (swp_freq + 500) / 1000; | ||
942 | |||
943 | if (*fOSC >= swp_freq) | ||
944 | *afcex_freq = *fOSC * 1000 - swp_freq; | ||
945 | else | ||
946 | *afcex_freq = swp_freq - *fOSC * 1000; | ||
947 | |||
948 | AFCEX = *afcex_freq * 8192 / state->master_clk; | ||
949 | *AFCEX_L = AFCEX & 0x00ff; | ||
950 | *AFCEX_H = (AFCEX & 0x0f00) >> 8; | ||
951 | } | ||
952 | |||
953 | static void afcex_info_get(struct mb86a16_state *state, | ||
954 | int afcex_freq, | ||
955 | unsigned char *AFCEX_L, | ||
956 | unsigned char *AFCEX_H) | ||
957 | { | ||
958 | int AFCEX ; | ||
959 | |||
960 | AFCEX = afcex_freq * 8192 / state->master_clk; | ||
961 | *AFCEX_L = AFCEX & 0x00ff; | ||
962 | *AFCEX_H = (AFCEX & 0x0f00) >> 8; | ||
963 | } | ||
964 | |||
965 | static int SEQ_set(struct mb86a16_state *state, unsigned char loop) | ||
966 | { | ||
967 | /* SLOCK0 = 0 */ | ||
968 | if (mb86a16_write(state, 0x32, 0x02 | (loop << 2)) < 0) { | ||
969 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
970 | return -EREMOTEIO; | ||
971 | } | ||
972 | |||
973 | return 0; | ||
974 | } | ||
975 | |||
976 | static int iq_vt_set(struct mb86a16_state *state, unsigned char IQINV) | ||
977 | { | ||
978 | /* Viterbi Rate, IQ Settings */ | ||
979 | if (mb86a16_write(state, 0x06, 0xdf | (IQINV << 5)) < 0) { | ||
980 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
981 | return -EREMOTEIO; | ||
982 | } | ||
983 | |||
984 | return 0; | ||
985 | } | ||
986 | |||
987 | static int FEC_srst(struct mb86a16_state *state) | ||
988 | { | ||
989 | if (mb86a16_write(state, MB86A16_RESET, 0x02) < 0) { | ||
990 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
991 | return -EREMOTEIO; | ||
992 | } | ||
993 | |||
994 | return 0; | ||
995 | } | ||
996 | |||
997 | static int S2T_set(struct mb86a16_state *state, unsigned char S2T) | ||
998 | { | ||
999 | if (mb86a16_write(state, 0x34, 0x70 | S2T) < 0) { | ||
1000 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
1001 | return -EREMOTEIO; | ||
1002 | } | ||
1003 | |||
1004 | return 0; | ||
1005 | } | ||
1006 | |||
1007 | static int S45T_set(struct mb86a16_state *state, unsigned char S4T, unsigned char S5T) | ||
1008 | { | ||
1009 | if (mb86a16_write(state, 0x35, 0x00 | (S5T << 4) | S4T) < 0) { | ||
1010 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
1011 | return -EREMOTEIO; | ||
1012 | } | ||
1013 | |||
1014 | return 0; | ||
1015 | } | ||
1016 | |||
1017 | |||
1018 | static int mb86a16_set_fe(struct mb86a16_state *state) | ||
1019 | { | ||
1020 | u8 agcval, cnmval; | ||
1021 | |||
1022 | int i, j; | ||
1023 | int fOSC = 0; | ||
1024 | int fOSC_start = 0; | ||
1025 | int wait_t; | ||
1026 | int fcp; | ||
1027 | int swp_ofs; | ||
1028 | int V[60]; | ||
1029 | u8 SIG1MIN; | ||
1030 | |||
1031 | unsigned char CREN, AFCEN, AFCEXEN; | ||
1032 | unsigned char SIG1; | ||
1033 | unsigned char TIMINT1, TIMINT2, TIMEXT; | ||
1034 | unsigned char S0T, S1T; | ||
1035 | unsigned char S2T; | ||
1036 | /* unsigned char S2T, S3T; */ | ||
1037 | unsigned char S4T, S5T; | ||
1038 | unsigned char AFCEX_L, AFCEX_H; | ||
1039 | unsigned char R; | ||
1040 | unsigned char VIRM; | ||
1041 | unsigned char ETH, VIA; | ||
1042 | unsigned char junk; | ||
1043 | |||
1044 | int loop; | ||
1045 | int ftemp; | ||
1046 | int v, vmax, vmin; | ||
1047 | int vmax_his, vmin_his; | ||
1048 | int swp_freq, prev_swp_freq[20]; | ||
1049 | int prev_freq_num; | ||
1050 | int signal_dupl; | ||
1051 | int afcex_freq; | ||
1052 | int signal; | ||
1053 | int afcerr; | ||
1054 | int temp_freq, delta_freq; | ||
1055 | int dagcm[4]; | ||
1056 | int smrt_d; | ||
1057 | /* int freq_err; */ | ||
1058 | int n; | ||
1059 | int ret = -1; | ||
1060 | int sync; | ||
1061 | |||
1062 | dprintk(verbose, MB86A16_INFO, 1, "freq=%d Mhz, symbrt=%d Ksps", state->frequency, state->srate); | ||
1063 | |||
1064 | fcp = 3000; | ||
1065 | swp_ofs = state->srate / 4; | ||
1066 | |||
1067 | for (i = 0; i < 60; i++) | ||
1068 | V[i] = -1; | ||
1069 | |||
1070 | for (i = 0; i < 20; i++) | ||
1071 | prev_swp_freq[i] = 0; | ||
1072 | |||
1073 | SIG1MIN = 25; | ||
1074 | |||
1075 | for (n = 0; ((n < 3) && (ret == -1)); n++) { | ||
1076 | SEQ_set(state, 0); | ||
1077 | iq_vt_set(state, 0); | ||
1078 | |||
1079 | CREN = 0; | ||
1080 | AFCEN = 0; | ||
1081 | AFCEXEN = 1; | ||
1082 | TIMINT1 = 0; | ||
1083 | TIMINT2 = 1; | ||
1084 | TIMEXT = 2; | ||
1085 | S1T = 0; | ||
1086 | S0T = 0; | ||
1087 | |||
1088 | if (initial_set(state) < 0) { | ||
1089 | dprintk(verbose, MB86A16_ERROR, 1, "initial set failed"); | ||
1090 | return -1; | ||
1091 | } | ||
1092 | if (DAGC_data_set(state, 3, 2) < 0) { | ||
1093 | dprintk(verbose, MB86A16_ERROR, 1, "DAGC data set error"); | ||
1094 | return -1; | ||
1095 | } | ||
1096 | if (EN_set(state, CREN, AFCEN) < 0) { | ||
1097 | dprintk(verbose, MB86A16_ERROR, 1, "EN set error"); | ||
1098 | return -1; /* (0, 0) */ | ||
1099 | } | ||
1100 | if (AFCEXEN_set(state, AFCEXEN, state->srate) < 0) { | ||
1101 | dprintk(verbose, MB86A16_ERROR, 1, "AFCEXEN set error"); | ||
1102 | return -1; /* (1, smrt) = (1, symbolrate) */ | ||
1103 | } | ||
1104 | if (CNTM_set(state, TIMINT1, TIMINT2, TIMEXT) < 0) { | ||
1105 | dprintk(verbose, MB86A16_ERROR, 1, "CNTM set error"); | ||
1106 | return -1; /* (0, 1, 2) */ | ||
1107 | } | ||
1108 | if (S01T_set(state, S1T, S0T) < 0) { | ||
1109 | dprintk(verbose, MB86A16_ERROR, 1, "S01T set error"); | ||
1110 | return -1; /* (0, 0) */ | ||
1111 | } | ||
1112 | smrt_info_get(state, state->srate); | ||
1113 | if (smrt_set(state, state->srate) < 0) { | ||
1114 | dprintk(verbose, MB86A16_ERROR, 1, "smrt info get error"); | ||
1115 | return -1; | ||
1116 | } | ||
1117 | |||
1118 | R = vco_dev_get(state, state->srate); | ||
1119 | if (R == 1) | ||
1120 | fOSC_start = state->frequency; | ||
1121 | |||
1122 | else if (R == 0) { | ||
1123 | if (state->frequency % 2 == 0) { | ||
1124 | fOSC_start = state->frequency; | ||
1125 | } else { | ||
1126 | fOSC_start = state->frequency + 1; | ||
1127 | if (fOSC_start > 2150) | ||
1128 | fOSC_start = state->frequency - 1; | ||
1129 | } | ||
1130 | } | ||
1131 | loop = 1; | ||
1132 | ftemp = fOSC_start * 1000; | ||
1133 | vmax = 0 ; | ||
1134 | while (loop == 1) { | ||
1135 | ftemp = ftemp + swp_ofs; | ||
1136 | vmax++; | ||
1137 | |||
1138 | /* Upper bound */ | ||
1139 | if (ftemp > 2150000) { | ||
1140 | loop = 0; | ||
1141 | vmax--; | ||
1142 | } else { | ||
1143 | if ((ftemp == 2150000) || | ||
1144 | (ftemp - state->frequency * 1000 >= fcp + state->srate / 4)) | ||
1145 | loop = 0; | ||
1146 | } | ||
1147 | } | ||
1148 | |||
1149 | loop = 1; | ||
1150 | ftemp = fOSC_start * 1000; | ||
1151 | vmin = 0 ; | ||
1152 | while (loop == 1) { | ||
1153 | ftemp = ftemp - swp_ofs; | ||
1154 | vmin--; | ||
1155 | |||
1156 | /* Lower bound */ | ||
1157 | if (ftemp < 950000) { | ||
1158 | loop = 0; | ||
1159 | vmin++; | ||
1160 | } else { | ||
1161 | if ((ftemp == 950000) || | ||
1162 | (state->frequency * 1000 - ftemp >= fcp + state->srate / 4)) | ||
1163 | loop = 0; | ||
1164 | } | ||
1165 | } | ||
1166 | |||
1167 | wait_t = (8000 + state->srate / 2) / state->srate; | ||
1168 | if (wait_t == 0) | ||
1169 | wait_t = 1; | ||
1170 | |||
1171 | i = 0; | ||
1172 | j = 0; | ||
1173 | prev_freq_num = 0; | ||
1174 | loop = 1; | ||
1175 | signal = 0; | ||
1176 | vmax_his = 0; | ||
1177 | vmin_his = 0; | ||
1178 | v = 0; | ||
1179 | |||
1180 | while (loop == 1) { | ||
1181 | swp_info_get(state, fOSC_start, state->srate, | ||
1182 | v, R, swp_ofs, &fOSC, | ||
1183 | &afcex_freq, &AFCEX_L, &AFCEX_H); | ||
1184 | |||
1185 | udelay(100); | ||
1186 | if (rf_val_set(state, fOSC, state->srate, R) < 0) { | ||
1187 | dprintk(verbose, MB86A16_ERROR, 1, "rf val set error"); | ||
1188 | return -1; | ||
1189 | } | ||
1190 | udelay(100); | ||
1191 | if (afcex_data_set(state, AFCEX_L, AFCEX_H) < 0) { | ||
1192 | dprintk(verbose, MB86A16_ERROR, 1, "afcex data set error"); | ||
1193 | return -1; | ||
1194 | } | ||
1195 | if (srst(state) < 0) { | ||
1196 | dprintk(verbose, MB86A16_ERROR, 1, "srst error"); | ||
1197 | return -1; | ||
1198 | } | ||
1199 | msleep_interruptible(wait_t); | ||
1200 | |||
1201 | if (mb86a16_read(state, 0x37, &SIG1) != 2) { | ||
1202 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
1203 | return -1; | ||
1204 | } | ||
1205 | V[30 + v] = SIG1 ; | ||
1206 | swp_freq = swp_freq_calcuation(state, i, v, V, vmax, vmin, | ||
1207 | SIG1MIN, fOSC, afcex_freq, | ||
1208 | swp_ofs, &SIG1); /* changed */ | ||
1209 | |||
1210 | signal_dupl = 0; | ||
1211 | for (j = 0; j < prev_freq_num; j++) { | ||
1212 | if ((ABS(prev_swp_freq[j] - swp_freq)) < (swp_ofs * 3 / 2)) { | ||
1213 | signal_dupl = 1; | ||
1214 | dprintk(verbose, MB86A16_INFO, 1, "Probably Duplicate Signal, j = %d", j); | ||
1215 | } | ||
1216 | } | ||
1217 | if ((signal_dupl == 0) && (swp_freq > 0) && (ABS(swp_freq - state->frequency * 1000) < fcp + state->srate / 6)) { | ||
1218 | dprintk(verbose, MB86A16_DEBUG, 1, "------ Signal detect ------ [swp_freq=[%07d, srate=%05d]]", swp_freq, state->srate); | ||
1219 | prev_swp_freq[prev_freq_num] = swp_freq; | ||
1220 | prev_freq_num++; | ||
1221 | swp_info_get2(state, state->srate, R, swp_freq, | ||
1222 | &afcex_freq, &fOSC, | ||
1223 | &AFCEX_L, &AFCEX_H); | ||
1224 | |||
1225 | if (rf_val_set(state, fOSC, state->srate, R) < 0) { | ||
1226 | dprintk(verbose, MB86A16_ERROR, 1, "rf val set error"); | ||
1227 | return -1; | ||
1228 | } | ||
1229 | if (afcex_data_set(state, AFCEX_L, AFCEX_H) < 0) { | ||
1230 | dprintk(verbose, MB86A16_ERROR, 1, "afcex data set error"); | ||
1231 | return -1; | ||
1232 | } | ||
1233 | signal = signal_det(state, state->srate, &SIG1); | ||
1234 | if (signal == 1) { | ||
1235 | dprintk(verbose, MB86A16_ERROR, 1, "***** Signal Found *****"); | ||
1236 | loop = 0; | ||
1237 | } else { | ||
1238 | dprintk(verbose, MB86A16_ERROR, 1, "!!!!! No signal !!!!!, try again..."); | ||
1239 | smrt_info_get(state, state->srate); | ||
1240 | if (smrt_set(state, state->srate) < 0) { | ||
1241 | dprintk(verbose, MB86A16_ERROR, 1, "smrt set error"); | ||
1242 | return -1; | ||
1243 | } | ||
1244 | } | ||
1245 | } | ||
1246 | if (v > vmax) | ||
1247 | vmax_his = 1 ; | ||
1248 | if (v < vmin) | ||
1249 | vmin_his = 1 ; | ||
1250 | i++; | ||
1251 | |||
1252 | if ((i % 2 == 1) && (vmax_his == 1)) | ||
1253 | i++; | ||
1254 | if ((i % 2 == 0) && (vmin_his == 1)) | ||
1255 | i++; | ||
1256 | |||
1257 | if (i % 2 == 1) | ||
1258 | v = (i + 1) / 2; | ||
1259 | else | ||
1260 | v = -i / 2; | ||
1261 | |||
1262 | if ((vmax_his == 1) && (vmin_his == 1)) | ||
1263 | loop = 0 ; | ||
1264 | } | ||
1265 | |||
1266 | if (signal == 1) { | ||
1267 | dprintk(verbose, MB86A16_INFO, 1, " Start Freq Error Check"); | ||
1268 | S1T = 7 ; | ||
1269 | S0T = 1 ; | ||
1270 | CREN = 0 ; | ||
1271 | AFCEN = 1 ; | ||
1272 | AFCEXEN = 0 ; | ||
1273 | |||
1274 | if (S01T_set(state, S1T, S0T) < 0) { | ||
1275 | dprintk(verbose, MB86A16_ERROR, 1, "S01T set error"); | ||
1276 | return -1; | ||
1277 | } | ||
1278 | smrt_info_get(state, state->srate); | ||
1279 | if (smrt_set(state, state->srate) < 0) { | ||
1280 | dprintk(verbose, MB86A16_ERROR, 1, "smrt set error"); | ||
1281 | return -1; | ||
1282 | } | ||
1283 | if (EN_set(state, CREN, AFCEN) < 0) { | ||
1284 | dprintk(verbose, MB86A16_ERROR, 1, "EN set error"); | ||
1285 | return -1; | ||
1286 | } | ||
1287 | if (AFCEXEN_set(state, AFCEXEN, state->srate) < 0) { | ||
1288 | dprintk(verbose, MB86A16_ERROR, 1, "AFCEXEN set error"); | ||
1289 | return -1; | ||
1290 | } | ||
1291 | afcex_info_get(state, afcex_freq, &AFCEX_L, &AFCEX_H); | ||
1292 | if (afcofs_data_set(state, AFCEX_L, AFCEX_H) < 0) { | ||
1293 | dprintk(verbose, MB86A16_ERROR, 1, "AFCOFS data set error"); | ||
1294 | return -1; | ||
1295 | } | ||
1296 | if (srst(state) < 0) { | ||
1297 | dprintk(verbose, MB86A16_ERROR, 1, "srst error"); | ||
1298 | return -1; | ||
1299 | } | ||
1300 | /* delay 4~200 */ | ||
1301 | wait_t = 200000 / state->master_clk + 200000 / state->srate; | ||
1302 | msleep(wait_t); | ||
1303 | afcerr = afcerr_chk(state); | ||
1304 | if (afcerr == -1) | ||
1305 | return -1; | ||
1306 | |||
1307 | swp_freq = fOSC * 1000 + afcerr ; | ||
1308 | AFCEXEN = 1 ; | ||
1309 | if (state->srate >= 1500) | ||
1310 | smrt_d = state->srate / 3; | ||
1311 | else | ||
1312 | smrt_d = state->srate / 2; | ||
1313 | smrt_info_get(state, smrt_d); | ||
1314 | if (smrt_set(state, smrt_d) < 0) { | ||
1315 | dprintk(verbose, MB86A16_ERROR, 1, "smrt set error"); | ||
1316 | return -1; | ||
1317 | } | ||
1318 | if (AFCEXEN_set(state, AFCEXEN, smrt_d) < 0) { | ||
1319 | dprintk(verbose, MB86A16_ERROR, 1, "AFCEXEN set error"); | ||
1320 | return -1; | ||
1321 | } | ||
1322 | R = vco_dev_get(state, smrt_d); | ||
1323 | if (DAGC_data_set(state, 2, 0) < 0) { | ||
1324 | dprintk(verbose, MB86A16_ERROR, 1, "DAGC data set error"); | ||
1325 | return -1; | ||
1326 | } | ||
1327 | for (i = 0; i < 3; i++) { | ||
1328 | temp_freq = swp_freq + (i - 1) * state->srate / 8; | ||
1329 | swp_info_get2(state, smrt_d, R, temp_freq, &afcex_freq, &fOSC, &AFCEX_L, &AFCEX_H); | ||
1330 | if (rf_val_set(state, fOSC, smrt_d, R) < 0) { | ||
1331 | dprintk(verbose, MB86A16_ERROR, 1, "rf val set error"); | ||
1332 | return -1; | ||
1333 | } | ||
1334 | if (afcex_data_set(state, AFCEX_L, AFCEX_H) < 0) { | ||
1335 | dprintk(verbose, MB86A16_ERROR, 1, "afcex data set error"); | ||
1336 | return -1; | ||
1337 | } | ||
1338 | wait_t = 200000 / state->master_clk + 40000 / smrt_d; | ||
1339 | msleep(wait_t); | ||
1340 | dagcm[i] = dagcm_val_get(state); | ||
1341 | } | ||
1342 | if ((dagcm[0] > dagcm[1]) && | ||
1343 | (dagcm[0] > dagcm[2]) && | ||
1344 | (dagcm[0] - dagcm[1] > 2 * (dagcm[2] - dagcm[1]))) { | ||
1345 | |||
1346 | temp_freq = swp_freq - 2 * state->srate / 8; | ||
1347 | swp_info_get2(state, smrt_d, R, temp_freq, &afcex_freq, &fOSC, &AFCEX_L, &AFCEX_H); | ||
1348 | if (rf_val_set(state, fOSC, smrt_d, R) < 0) { | ||
1349 | dprintk(verbose, MB86A16_ERROR, 1, "rf val set error"); | ||
1350 | return -1; | ||
1351 | } | ||
1352 | if (afcex_data_set(state, AFCEX_L, AFCEX_H) < 0) { | ||
1353 | dprintk(verbose, MB86A16_ERROR, 1, "afcex data set"); | ||
1354 | return -1; | ||
1355 | } | ||
1356 | wait_t = 200000 / state->master_clk + 40000 / smrt_d; | ||
1357 | msleep(wait_t); | ||
1358 | dagcm[3] = dagcm_val_get(state); | ||
1359 | if (dagcm[3] > dagcm[1]) | ||
1360 | delta_freq = (dagcm[2] - dagcm[0] + dagcm[1] - dagcm[3]) * state->srate / 300; | ||
1361 | else | ||
1362 | delta_freq = 0; | ||
1363 | } else if ((dagcm[2] > dagcm[1]) && | ||
1364 | (dagcm[2] > dagcm[0]) && | ||
1365 | (dagcm[2] - dagcm[1] > 2 * (dagcm[0] - dagcm[1]))) { | ||
1366 | |||
1367 | temp_freq = swp_freq + 2 * state->srate / 8; | ||
1368 | swp_info_get2(state, smrt_d, R, temp_freq, &afcex_freq, &fOSC, &AFCEX_L, &AFCEX_H); | ||
1369 | if (rf_val_set(state, fOSC, smrt_d, R) < 0) { | ||
1370 | dprintk(verbose, MB86A16_ERROR, 1, "rf val set"); | ||
1371 | return -1; | ||
1372 | } | ||
1373 | if (afcex_data_set(state, AFCEX_L, AFCEX_H) < 0) { | ||
1374 | dprintk(verbose, MB86A16_ERROR, 1, "afcex data set"); | ||
1375 | return -1; | ||
1376 | } | ||
1377 | wait_t = 200000 / state->master_clk + 40000 / smrt_d; | ||
1378 | msleep(wait_t); | ||
1379 | dagcm[3] = dagcm_val_get(state); | ||
1380 | if (dagcm[3] > dagcm[1]) | ||
1381 | delta_freq = (dagcm[2] - dagcm[0] + dagcm[3] - dagcm[1]) * state->srate / 300; | ||
1382 | else | ||
1383 | delta_freq = 0 ; | ||
1384 | |||
1385 | } else { | ||
1386 | delta_freq = 0 ; | ||
1387 | } | ||
1388 | dprintk(verbose, MB86A16_INFO, 1, "SWEEP Frequency = %d", swp_freq); | ||
1389 | swp_freq += delta_freq; | ||
1390 | dprintk(verbose, MB86A16_INFO, 1, "Adjusting .., DELTA Freq = %d, SWEEP Freq=%d", delta_freq, swp_freq); | ||
1391 | if (ABS(state->frequency * 1000 - swp_freq) > 3800) { | ||
1392 | dprintk(verbose, MB86A16_INFO, 1, "NO -- SIGNAL !"); | ||
1393 | } else { | ||
1394 | |||
1395 | S1T = 0; | ||
1396 | S0T = 3; | ||
1397 | CREN = 1; | ||
1398 | AFCEN = 0; | ||
1399 | AFCEXEN = 1; | ||
1400 | |||
1401 | if (S01T_set(state, S1T, S0T) < 0) { | ||
1402 | dprintk(verbose, MB86A16_ERROR, 1, "S01T set error"); | ||
1403 | return -1; | ||
1404 | } | ||
1405 | if (DAGC_data_set(state, 0, 0) < 0) { | ||
1406 | dprintk(verbose, MB86A16_ERROR, 1, "DAGC data set error"); | ||
1407 | return -1; | ||
1408 | } | ||
1409 | R = vco_dev_get(state, state->srate); | ||
1410 | smrt_info_get(state, state->srate); | ||
1411 | if (smrt_set(state, state->srate) < 0) { | ||
1412 | dprintk(verbose, MB86A16_ERROR, 1, "smrt set error"); | ||
1413 | return -1; | ||
1414 | } | ||
1415 | if (EN_set(state, CREN, AFCEN) < 0) { | ||
1416 | dprintk(verbose, MB86A16_ERROR, 1, "EN set error"); | ||
1417 | return -1; | ||
1418 | } | ||
1419 | if (AFCEXEN_set(state, AFCEXEN, state->srate) < 0) { | ||
1420 | dprintk(verbose, MB86A16_ERROR, 1, "AFCEXEN set error"); | ||
1421 | return -1; | ||
1422 | } | ||
1423 | swp_info_get2(state, state->srate, R, swp_freq, &afcex_freq, &fOSC, &AFCEX_L, &AFCEX_H); | ||
1424 | if (rf_val_set(state, fOSC, state->srate, R) < 0) { | ||
1425 | dprintk(verbose, MB86A16_ERROR, 1, "rf val set error"); | ||
1426 | return -1; | ||
1427 | } | ||
1428 | if (afcex_data_set(state, AFCEX_L, AFCEX_H) < 0) { | ||
1429 | dprintk(verbose, MB86A16_ERROR, 1, "afcex data set error"); | ||
1430 | return -1; | ||
1431 | } | ||
1432 | if (srst(state) < 0) { | ||
1433 | dprintk(verbose, MB86A16_ERROR, 1, "srst error"); | ||
1434 | return -1; | ||
1435 | } | ||
1436 | wait_t = 7 + (10000 + state->srate / 2) / state->srate; | ||
1437 | if (wait_t == 0) | ||
1438 | wait_t = 1; | ||
1439 | msleep_interruptible(wait_t); | ||
1440 | if (mb86a16_read(state, 0x37, &SIG1) != 2) { | ||
1441 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
1442 | return -EREMOTEIO; | ||
1443 | } | ||
1444 | |||
1445 | if (SIG1 > 110) { | ||
1446 | S2T = 4; S4T = 1; S5T = 6; ETH = 4; VIA = 6; | ||
1447 | wait_t = 7 + (917504 + state->srate / 2) / state->srate; | ||
1448 | } else if (SIG1 > 105) { | ||
1449 | S2T = 4; S4T = 2; S5T = 8; ETH = 7; VIA = 2; | ||
1450 | wait_t = 7 + (1048576 + state->srate / 2) / state->srate; | ||
1451 | } else if (SIG1 > 85) { | ||
1452 | S2T = 5; S4T = 2; S5T = 8; ETH = 7; VIA = 2; | ||
1453 | wait_t = 7 + (1310720 + state->srate / 2) / state->srate; | ||
1454 | } else if (SIG1 > 65) { | ||
1455 | S2T = 6; S4T = 2; S5T = 8; ETH = 7; VIA = 2; | ||
1456 | wait_t = 7 + (1572864 + state->srate / 2) / state->srate; | ||
1457 | } else { | ||
1458 | S2T = 7; S4T = 2; S5T = 8; ETH = 7; VIA = 2; | ||
1459 | wait_t = 7 + (2097152 + state->srate / 2) / state->srate; | ||
1460 | } | ||
1461 | wait_t *= 2; /* FOS */ | ||
1462 | S2T_set(state, S2T); | ||
1463 | S45T_set(state, S4T, S5T); | ||
1464 | Vi_set(state, ETH, VIA); | ||
1465 | srst(state); | ||
1466 | msleep_interruptible(wait_t); | ||
1467 | sync = sync_chk(state, &VIRM); | ||
1468 | dprintk(verbose, MB86A16_INFO, 1, "-------- Viterbi=[%d] SYNC=[%d] ---------", VIRM, sync); | ||
1469 | if (VIRM) { | ||
1470 | if (VIRM == 4) { | ||
1471 | /* 5/6 */ | ||
1472 | if (SIG1 > 110) | ||
1473 | wait_t = (786432 + state->srate / 2) / state->srate; | ||
1474 | else | ||
1475 | wait_t = (1572864 + state->srate / 2) / state->srate; | ||
1476 | if (state->srate < 5000) | ||
1477 | /* FIXME ! , should be a long wait ! */ | ||
1478 | msleep_interruptible(wait_t); | ||
1479 | else | ||
1480 | msleep_interruptible(wait_t); | ||
1481 | |||
1482 | if (sync_chk(state, &junk) == 0) { | ||
1483 | iq_vt_set(state, 1); | ||
1484 | FEC_srst(state); | ||
1485 | } | ||
1486 | } | ||
1487 | /* 1/2, 2/3, 3/4, 7/8 */ | ||
1488 | if (SIG1 > 110) | ||
1489 | wait_t = (786432 + state->srate / 2) / state->srate; | ||
1490 | else | ||
1491 | wait_t = (1572864 + state->srate / 2) / state->srate; | ||
1492 | msleep_interruptible(wait_t); | ||
1493 | SEQ_set(state, 1); | ||
1494 | } else { | ||
1495 | dprintk(verbose, MB86A16_INFO, 1, "NO -- SYNC"); | ||
1496 | SEQ_set(state, 1); | ||
1497 | ret = -1; | ||
1498 | } | ||
1499 | } | ||
1500 | } else { | ||
1501 | dprintk(verbose, MB86A16_INFO, 1, "NO -- SIGNAL"); | ||
1502 | ret = -1; | ||
1503 | } | ||
1504 | |||
1505 | sync = sync_chk(state, &junk); | ||
1506 | if (sync) { | ||
1507 | dprintk(verbose, MB86A16_INFO, 1, "******* SYNC *******"); | ||
1508 | freqerr_chk(state, state->frequency, state->srate, 1); | ||
1509 | ret = 0; | ||
1510 | break; | ||
1511 | } | ||
1512 | } | ||
1513 | |||
1514 | mb86a16_read(state, 0x15, &agcval); | ||
1515 | mb86a16_read(state, 0x26, &cnmval); | ||
1516 | dprintk(verbose, MB86A16_INFO, 1, "AGC = %02x CNM = %02x", agcval, cnmval); | ||
1517 | |||
1518 | return ret; | ||
1519 | } | ||
1520 | |||
1521 | static int mb86a16_send_diseqc_msg(struct dvb_frontend *fe, | ||
1522 | struct dvb_diseqc_master_cmd *cmd) | ||
1523 | { | ||
1524 | struct mb86a16_state *state = fe->demodulator_priv; | ||
1525 | int i; | ||
1526 | u8 regs; | ||
1527 | |||
1528 | if (mb86a16_write(state, MB86A16_DCC1, MB86A16_DCC1_DISTA) < 0) | ||
1529 | goto err; | ||
1530 | if (mb86a16_write(state, MB86A16_DCCOUT, 0x00) < 0) | ||
1531 | goto err; | ||
1532 | if (mb86a16_write(state, MB86A16_TONEOUT2, 0x04) < 0) | ||
1533 | goto err; | ||
1534 | |||
1535 | regs = 0x18; | ||
1536 | |||
1537 | if (cmd->msg_len > 5 || cmd->msg_len < 4) | ||
1538 | return -EINVAL; | ||
1539 | |||
1540 | for (i = 0; i < cmd->msg_len; i++) { | ||
1541 | if (mb86a16_write(state, regs, cmd->msg[i]) < 0) | ||
1542 | goto err; | ||
1543 | |||
1544 | regs++; | ||
1545 | } | ||
1546 | i += 0x90; | ||
1547 | |||
1548 | msleep_interruptible(10); | ||
1549 | |||
1550 | if (mb86a16_write(state, MB86A16_DCC1, i) < 0) | ||
1551 | goto err; | ||
1552 | if (mb86a16_write(state, MB86A16_DCCOUT, MB86A16_DCCOUT_DISEN) < 0) | ||
1553 | goto err; | ||
1554 | |||
1555 | return 0; | ||
1556 | |||
1557 | err: | ||
1558 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
1559 | return -EREMOTEIO; | ||
1560 | } | ||
1561 | |||
1562 | static int mb86a16_send_diseqc_burst(struct dvb_frontend *fe, fe_sec_mini_cmd_t burst) | ||
1563 | { | ||
1564 | struct mb86a16_state *state = fe->demodulator_priv; | ||
1565 | |||
1566 | switch (burst) { | ||
1567 | case SEC_MINI_A: | ||
1568 | if (mb86a16_write(state, MB86A16_DCC1, MB86A16_DCC1_DISTA | | ||
1569 | MB86A16_DCC1_TBEN | | ||
1570 | MB86A16_DCC1_TBO) < 0) | ||
1571 | goto err; | ||
1572 | if (mb86a16_write(state, MB86A16_DCCOUT, MB86A16_DCCOUT_DISEN) < 0) | ||
1573 | goto err; | ||
1574 | break; | ||
1575 | case SEC_MINI_B: | ||
1576 | if (mb86a16_write(state, MB86A16_DCC1, MB86A16_DCC1_DISTA | | ||
1577 | MB86A16_DCC1_TBEN) < 0) | ||
1578 | goto err; | ||
1579 | if (mb86a16_write(state, MB86A16_DCCOUT, MB86A16_DCCOUT_DISEN) < 0) | ||
1580 | goto err; | ||
1581 | break; | ||
1582 | } | ||
1583 | |||
1584 | return 0; | ||
1585 | err: | ||
1586 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
1587 | return -EREMOTEIO; | ||
1588 | } | ||
1589 | |||
1590 | static int mb86a16_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone) | ||
1591 | { | ||
1592 | struct mb86a16_state *state = fe->demodulator_priv; | ||
1593 | |||
1594 | switch (tone) { | ||
1595 | case SEC_TONE_ON: | ||
1596 | if (mb86a16_write(state, MB86A16_TONEOUT2, 0x00) < 0) | ||
1597 | goto err; | ||
1598 | if (mb86a16_write(state, MB86A16_DCC1, MB86A16_DCC1_DISTA | | ||
1599 | MB86A16_DCC1_CTOE) < 0) | ||
1600 | |||
1601 | goto err; | ||
1602 | if (mb86a16_write(state, MB86A16_DCCOUT, MB86A16_DCCOUT_DISEN) < 0) | ||
1603 | goto err; | ||
1604 | break; | ||
1605 | case SEC_TONE_OFF: | ||
1606 | if (mb86a16_write(state, MB86A16_TONEOUT2, 0x04) < 0) | ||
1607 | goto err; | ||
1608 | if (mb86a16_write(state, MB86A16_DCC1, MB86A16_DCC1_DISTA) < 0) | ||
1609 | goto err; | ||
1610 | if (mb86a16_write(state, MB86A16_DCCOUT, 0x00) < 0) | ||
1611 | goto err; | ||
1612 | break; | ||
1613 | default: | ||
1614 | return -EINVAL; | ||
1615 | } | ||
1616 | return 0; | ||
1617 | |||
1618 | err: | ||
1619 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
1620 | return -EREMOTEIO; | ||
1621 | } | ||
1622 | |||
1623 | static enum dvbfe_search mb86a16_search(struct dvb_frontend *fe, | ||
1624 | struct dvb_frontend_parameters *p) | ||
1625 | { | ||
1626 | struct mb86a16_state *state = fe->demodulator_priv; | ||
1627 | |||
1628 | state->frequency = p->frequency / 1000; | ||
1629 | state->srate = p->u.qpsk.symbol_rate / 1000; | ||
1630 | |||
1631 | if (!mb86a16_set_fe(state)) { | ||
1632 | dprintk(verbose, MB86A16_ERROR, 1, "Succesfully acquired LOCK"); | ||
1633 | return DVBFE_ALGO_SEARCH_SUCCESS; | ||
1634 | } | ||
1635 | |||
1636 | dprintk(verbose, MB86A16_ERROR, 1, "Lock acquisition failed!"); | ||
1637 | return DVBFE_ALGO_SEARCH_FAILED; | ||
1638 | } | ||
1639 | |||
1640 | static void mb86a16_release(struct dvb_frontend *fe) | ||
1641 | { | ||
1642 | struct mb86a16_state *state = fe->demodulator_priv; | ||
1643 | kfree(state); | ||
1644 | } | ||
1645 | |||
1646 | static int mb86a16_init(struct dvb_frontend *fe) | ||
1647 | { | ||
1648 | return 0; | ||
1649 | } | ||
1650 | |||
1651 | static int mb86a16_sleep(struct dvb_frontend *fe) | ||
1652 | { | ||
1653 | return 0; | ||
1654 | } | ||
1655 | |||
1656 | static int mb86a16_read_ber(struct dvb_frontend *fe, u32 *ber) | ||
1657 | { | ||
1658 | u8 ber_mon, ber_tab, ber_lsb, ber_mid, ber_msb, ber_tim, ber_rst; | ||
1659 | u32 timer; | ||
1660 | |||
1661 | struct mb86a16_state *state = fe->demodulator_priv; | ||
1662 | |||
1663 | *ber = 0; | ||
1664 | if (mb86a16_read(state, MB86A16_BERMON, &ber_mon) != 2) | ||
1665 | goto err; | ||
1666 | if (mb86a16_read(state, MB86A16_BERTAB, &ber_tab) != 2) | ||
1667 | goto err; | ||
1668 | if (mb86a16_read(state, MB86A16_BERLSB, &ber_lsb) != 2) | ||
1669 | goto err; | ||
1670 | if (mb86a16_read(state, MB86A16_BERMID, &ber_mid) != 2) | ||
1671 | goto err; | ||
1672 | if (mb86a16_read(state, MB86A16_BERMSB, &ber_msb) != 2) | ||
1673 | goto err; | ||
1674 | /* BER monitor invalid when BER_EN = 0 */ | ||
1675 | if (ber_mon & 0x04) { | ||
1676 | /* coarse, fast calculation */ | ||
1677 | *ber = ber_tab & 0x1f; | ||
1678 | dprintk(verbose, MB86A16_DEBUG, 1, "BER coarse=[0x%02x]", *ber); | ||
1679 | if (ber_mon & 0x01) { | ||
1680 | /* | ||
1681 | * BER_SEL = 1, The monitored BER is the estimated | ||
1682 | * value with a Reed-Solomon decoder error amount at | ||
1683 | * the deinterleaver output. | ||
1684 | * monitored BER is expressed as a 20 bit output in total | ||
1685 | */ | ||
1686 | ber_rst = ber_mon >> 3; | ||
1687 | *ber = (((ber_msb << 8) | ber_mid) << 8) | ber_lsb; | ||
1688 | if (ber_rst == 0) | ||
1689 | timer = 12500000; | ||
1690 | if (ber_rst == 1) | ||
1691 | timer = 25000000; | ||
1692 | if (ber_rst == 2) | ||
1693 | timer = 50000000; | ||
1694 | if (ber_rst == 3) | ||
1695 | timer = 100000000; | ||
1696 | |||
1697 | *ber /= timer; | ||
1698 | dprintk(verbose, MB86A16_DEBUG, 1, "BER fine=[0x%02x]", *ber); | ||
1699 | } else { | ||
1700 | /* | ||
1701 | * BER_SEL = 0, The monitored BER is the estimated | ||
1702 | * value with a Viterbi decoder error amount at the | ||
1703 | * QPSK demodulator output. | ||
1704 | * monitored BER is expressed as a 24 bit output in total | ||
1705 | */ | ||
1706 | ber_tim = ber_mon >> 1; | ||
1707 | *ber = (((ber_msb << 8) | ber_mid) << 8) | ber_lsb; | ||
1708 | if (ber_tim == 0) | ||
1709 | timer = 16; | ||
1710 | if (ber_tim == 1) | ||
1711 | timer = 24; | ||
1712 | |||
1713 | *ber /= 2 ^ timer; | ||
1714 | dprintk(verbose, MB86A16_DEBUG, 1, "BER fine=[0x%02x]", *ber); | ||
1715 | } | ||
1716 | } | ||
1717 | return 0; | ||
1718 | err: | ||
1719 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
1720 | return -EREMOTEIO; | ||
1721 | } | ||
1722 | |||
1723 | static int mb86a16_read_signal_strength(struct dvb_frontend *fe, u16 *strength) | ||
1724 | { | ||
1725 | u8 agcm = 0; | ||
1726 | struct mb86a16_state *state = fe->demodulator_priv; | ||
1727 | |||
1728 | *strength = 0; | ||
1729 | if (mb86a16_read(state, MB86A16_AGCM, &agcm) != 2) { | ||
1730 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
1731 | return -EREMOTEIO; | ||
1732 | } | ||
1733 | |||
1734 | *strength = ((0xff - agcm) * 100) / 256; | ||
1735 | dprintk(verbose, MB86A16_DEBUG, 1, "Signal strength=[%d %%]", (u8) *strength); | ||
1736 | *strength = (0xffff - 0xff) + agcm; | ||
1737 | |||
1738 | return 0; | ||
1739 | } | ||
1740 | |||
1741 | struct cnr { | ||
1742 | u8 cn_reg; | ||
1743 | u8 cn_val; | ||
1744 | }; | ||
1745 | |||
1746 | static const struct cnr cnr_tab[] = { | ||
1747 | { 35, 2 }, | ||
1748 | { 40, 3 }, | ||
1749 | { 50, 4 }, | ||
1750 | { 60, 5 }, | ||
1751 | { 70, 6 }, | ||
1752 | { 80, 7 }, | ||
1753 | { 92, 8 }, | ||
1754 | { 103, 9 }, | ||
1755 | { 115, 10 }, | ||
1756 | { 138, 12 }, | ||
1757 | { 162, 15 }, | ||
1758 | { 180, 18 }, | ||
1759 | { 185, 19 }, | ||
1760 | { 189, 20 }, | ||
1761 | { 195, 22 }, | ||
1762 | { 199, 24 }, | ||
1763 | { 201, 25 }, | ||
1764 | { 202, 26 }, | ||
1765 | { 203, 27 }, | ||
1766 | { 205, 28 }, | ||
1767 | { 208, 30 } | ||
1768 | }; | ||
1769 | |||
1770 | static int mb86a16_read_snr(struct dvb_frontend *fe, u16 *snr) | ||
1771 | { | ||
1772 | struct mb86a16_state *state = fe->demodulator_priv; | ||
1773 | int i = 0; | ||
1774 | int low_tide = 2, high_tide = 30, q_level; | ||
1775 | u8 cn; | ||
1776 | |||
1777 | *snr = 0; | ||
1778 | if (mb86a16_read(state, 0x26, &cn) != 2) { | ||
1779 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
1780 | return -EREMOTEIO; | ||
1781 | } | ||
1782 | |||
1783 | for (i = 0; i < ARRAY_SIZE(cnr_tab); i++) { | ||
1784 | if (cn < cnr_tab[i].cn_reg) { | ||
1785 | *snr = cnr_tab[i].cn_val; | ||
1786 | break; | ||
1787 | } | ||
1788 | } | ||
1789 | q_level = (*snr * 100) / (high_tide - low_tide); | ||
1790 | dprintk(verbose, MB86A16_ERROR, 1, "SNR (Quality) = [%d dB], Level=%d %%", *snr, q_level); | ||
1791 | *snr = (0xffff - 0xff) + *snr; | ||
1792 | |||
1793 | return 0; | ||
1794 | } | ||
1795 | |||
1796 | static int mb86a16_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks) | ||
1797 | { | ||
1798 | u8 dist; | ||
1799 | struct mb86a16_state *state = fe->demodulator_priv; | ||
1800 | |||
1801 | if (mb86a16_read(state, MB86A16_DISTMON, &dist) != 2) { | ||
1802 | dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error"); | ||
1803 | return -EREMOTEIO; | ||
1804 | } | ||
1805 | *ucblocks = dist; | ||
1806 | |||
1807 | return 0; | ||
1808 | } | ||
1809 | |||
1810 | static enum dvbfe_algo mb86a16_frontend_algo(struct dvb_frontend *fe) | ||
1811 | { | ||
1812 | return DVBFE_ALGO_CUSTOM; | ||
1813 | } | ||
1814 | |||
1815 | static struct dvb_frontend_ops mb86a16_ops = { | ||
1816 | .info = { | ||
1817 | .name = "Fujitsu MB86A16 DVB-S", | ||
1818 | .type = FE_QPSK, | ||
1819 | .frequency_min = 950000, | ||
1820 | .frequency_max = 2150000, | ||
1821 | .frequency_stepsize = 3000, | ||
1822 | .frequency_tolerance = 0, | ||
1823 | .symbol_rate_min = 1000000, | ||
1824 | .symbol_rate_max = 45000000, | ||
1825 | .symbol_rate_tolerance = 500, | ||
1826 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | | ||
1827 | FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | | ||
1828 | FE_CAN_FEC_7_8 | FE_CAN_QPSK | | ||
1829 | FE_CAN_FEC_AUTO | ||
1830 | }, | ||
1831 | .release = mb86a16_release, | ||
1832 | |||
1833 | .get_frontend_algo = mb86a16_frontend_algo, | ||
1834 | .search = mb86a16_search, | ||
1835 | .read_status = mb86a16_read_status, | ||
1836 | .init = mb86a16_init, | ||
1837 | .sleep = mb86a16_sleep, | ||
1838 | .read_status = mb86a16_read_status, | ||
1839 | |||
1840 | .read_ber = mb86a16_read_ber, | ||
1841 | .read_signal_strength = mb86a16_read_signal_strength, | ||
1842 | .read_snr = mb86a16_read_snr, | ||
1843 | .read_ucblocks = mb86a16_read_ucblocks, | ||
1844 | |||
1845 | .diseqc_send_master_cmd = mb86a16_send_diseqc_msg, | ||
1846 | .diseqc_send_burst = mb86a16_send_diseqc_burst, | ||
1847 | .set_tone = mb86a16_set_tone, | ||
1848 | }; | ||
1849 | |||
1850 | struct dvb_frontend *mb86a16_attach(const struct mb86a16_config *config, | ||
1851 | struct i2c_adapter *i2c_adap) | ||
1852 | { | ||
1853 | u8 dev_id = 0; | ||
1854 | struct mb86a16_state *state = NULL; | ||
1855 | |||
1856 | state = kmalloc(sizeof(struct mb86a16_state), GFP_KERNEL); | ||
1857 | if (state == NULL) | ||
1858 | goto error; | ||
1859 | |||
1860 | state->config = config; | ||
1861 | state->i2c_adap = i2c_adap; | ||
1862 | |||
1863 | mb86a16_read(state, 0x7f, &dev_id); | ||
1864 | if (dev_id != 0xfe) | ||
1865 | goto error; | ||
1866 | |||
1867 | memcpy(&state->frontend.ops, &mb86a16_ops, sizeof(struct dvb_frontend_ops)); | ||
1868 | state->frontend.demodulator_priv = state; | ||
1869 | state->frontend.ops.set_voltage = state->config->set_voltage; | ||
1870 | |||
1871 | return &state->frontend; | ||
1872 | error: | ||
1873 | kfree(state); | ||
1874 | return NULL; | ||
1875 | } | ||
1876 | EXPORT_SYMBOL(mb86a16_attach); | ||
1877 | MODULE_LICENSE("GPL"); | ||
1878 | MODULE_AUTHOR("Manu Abraham"); | ||
diff --git a/drivers/media/dvb/frontends/mb86a16.h b/drivers/media/dvb/frontends/mb86a16.h new file mode 100644 index 000000000000..6ea8c376394f --- /dev/null +++ b/drivers/media/dvb/frontends/mb86a16.h | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | Fujitsu MB86A16 DVB-S/DSS DC Receiver driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MB86A16_H | ||
22 | #define __MB86A16_H | ||
23 | |||
24 | #include <linux/dvb/frontend.h> | ||
25 | #include "dvb_frontend.h" | ||
26 | |||
27 | |||
28 | struct mb86a16_config { | ||
29 | u8 demod_address; | ||
30 | |||
31 | int (*set_voltage)(struct dvb_frontend *fe, fe_sec_voltage_t voltage); | ||
32 | }; | ||
33 | |||
34 | |||
35 | |||
36 | #if defined(CONFIG_DVB_MB86A16) || (defined(CONFIG_DVB_MB86A16_MODULE) && defined(MODULE)) | ||
37 | |||
38 | extern struct dvb_frontend *mb86a16_attach(const struct mb86a16_config *config, | ||
39 | struct i2c_adapter *i2c_adap); | ||
40 | |||
41 | #else | ||
42 | |||
43 | static inline struct dvb_frontend *mb86a16_attach(const struct mb86a16_config *config, | ||
44 | struct i2c_adapter *i2c_adap) | ||
45 | { | ||
46 | printk(KERN_WARNING "%s: Driver disabled by Kconfig\n", __func__); | ||
47 | return NULL; | ||
48 | } | ||
49 | |||
50 | #endif /* CONFIG_DVB_MB86A16 */ | ||
51 | |||
52 | #endif /* __MB86A16_H */ | ||
diff --git a/drivers/media/dvb/frontends/mb86a16_priv.h b/drivers/media/dvb/frontends/mb86a16_priv.h new file mode 100644 index 000000000000..360a35acfe84 --- /dev/null +++ b/drivers/media/dvb/frontends/mb86a16_priv.h | |||
@@ -0,0 +1,151 @@ | |||
1 | /* | ||
2 | Fujitsu MB86A16 DVB-S/DSS DC Receiver driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MB86A16_PRIV_H | ||
22 | #define __MB86A16_PRIV_H | ||
23 | |||
24 | #define MB86A16_TSOUT 0x00 | ||
25 | #define MB86A16_TSOUT_HIZSEL (0x01 << 5) | ||
26 | #define MB86A16_TSOUT_HIZCNTI (0x01 << 4) | ||
27 | #define MB86A16_TSOUT_MODE (0x01 << 3) | ||
28 | #define MB86A16_TSOUT_ORDER (0x01 << 2) | ||
29 | #define MB86A16_TSOUT_ERROR (0x01 << 1) | ||
30 | #define Mb86A16_TSOUT_EDGE (0x01 << 0) | ||
31 | |||
32 | #define MB86A16_FEC 0x01 | ||
33 | #define MB86A16_FEC_FSYNC (0x01 << 5) | ||
34 | #define MB86A16_FEC_PCKB8 (0x01 << 4) | ||
35 | #define MB86A16_FEC_DVDS (0x01 << 3) | ||
36 | #define MB86A16_FEC_EREN (0x01 << 2) | ||
37 | #define Mb86A16_FEC_RSEN (0x01 << 1) | ||
38 | #define MB86A16_FEC_DIEN (0x01 << 0) | ||
39 | |||
40 | #define MB86A16_AGC 0x02 | ||
41 | #define MB86A16_AGC_AGMD (0x01 << 6) | ||
42 | #define MB86A16_AGC_AGCW (0x0f << 2) | ||
43 | #define MB86A16_AGC_AGCP (0x01 << 1) | ||
44 | #define MB86A16_AGC_AGCR (0x01 << 0) | ||
45 | |||
46 | #define MB86A16_SRATE1 0x03 | ||
47 | #define MB86A16_SRATE1_DECI (0x07 << 2) | ||
48 | #define MB86A16_SRATE1_CSEL (0x01 << 1) | ||
49 | #define MB86A16_SRATE1_RSEL (0x01 << 0) | ||
50 | |||
51 | #define MB86A16_SRATE2 0x04 | ||
52 | #define MB86A16_SRATE2_STOFSL (0xff << 0) | ||
53 | |||
54 | #define MB86A16_SRATE3 0x05 | ||
55 | #define MB86A16_SRATE2_STOFSH (0xff << 0) | ||
56 | |||
57 | #define MB86A16_VITERBI 0x06 | ||
58 | #define MB86A16_FRAMESYNC 0x07 | ||
59 | #define MB86A16_CRLFILTCOEF1 0x08 | ||
60 | #define MB86A16_CRLFILTCOEF2 0x09 | ||
61 | #define MB86A16_STRFILTCOEF1 0x0a | ||
62 | #define MB86A16_STRFILTCOEF2 0x0b | ||
63 | #define MB86A16_RESET 0x0c | ||
64 | #define MB86A16_STATUS 0x0d | ||
65 | #define MB86A16_AFCML 0x0e | ||
66 | #define MB86A16_AFCMH 0x0f | ||
67 | #define MB86A16_BERMON 0x10 | ||
68 | #define MB86A16_BERTAB 0x11 | ||
69 | #define MB86A16_BERLSB 0x12 | ||
70 | #define MB86A16_BERMID 0x13 | ||
71 | #define MB86A16_BERMSB 0x14 | ||
72 | #define MB86A16_AGCM 0x15 | ||
73 | |||
74 | #define MB86A16_DCC1 0x16 | ||
75 | #define MB86A16_DCC1_DISTA (0x01 << 7) | ||
76 | #define MB86A16_DCC1_PRTY (0x01 << 6) | ||
77 | #define MB86A16_DCC1_CTOE (0x01 << 5) | ||
78 | #define MB86A16_DCC1_TBEN (0x01 << 4) | ||
79 | #define MB86A16_DCC1_TBO (0x01 << 3) | ||
80 | #define MB86A16_DCC1_NUM (0x07 << 0) | ||
81 | |||
82 | #define MB86A16_DCC2 0x17 | ||
83 | #define MB86A16_DCC2_DCBST (0x01 << 0) | ||
84 | |||
85 | #define MB86A16_DCC3 0x18 | ||
86 | #define MB86A16_DCC3_CODE0 (0xff << 0) | ||
87 | |||
88 | #define MB86A16_DCC4 0x19 | ||
89 | #define MB86A16_DCC4_CODE1 (0xff << 0) | ||
90 | |||
91 | #define MB86A16_DCC5 0x1a | ||
92 | #define MB86A16_DCC5_CODE2 (0xff << 0) | ||
93 | |||
94 | #define MB86A16_DCC6 0x1b | ||
95 | #define MB86A16_DCC6_CODE3 (0xff << 0) | ||
96 | |||
97 | #define MB86A16_DCC7 0x1c | ||
98 | #define MB86A16_DCC7_CODE4 (0xff << 0) | ||
99 | |||
100 | #define MB86A16_DCC8 0x1d | ||
101 | #define MB86A16_DCC8_CODE5 (0xff << 0) | ||
102 | |||
103 | #define MB86A16_DCCOUT 0x1e | ||
104 | #define MB86A16_DCCOUT_DISEN (0x01 << 0) | ||
105 | |||
106 | #define MB86A16_TONEOUT1 0x1f | ||
107 | #define MB86A16_TONE_TDIVL (0xff << 0) | ||
108 | |||
109 | #define MB86A16_TONEOUT2 0x20 | ||
110 | #define MB86A16_TONE_TMD (0x03 << 2) | ||
111 | #define MB86A16_TONE_TDIVH (0x03 << 0) | ||
112 | |||
113 | #define MB86A16_FREQ1 0x21 | ||
114 | #define MB86A16_FREQ2 0x22 | ||
115 | #define MB86A16_FREQ3 0x23 | ||
116 | #define MB86A16_FREQ4 0x24 | ||
117 | #define MB86A16_FREQSET 0x25 | ||
118 | #define MB86A16_CNM 0x26 | ||
119 | #define MB86A16_PORT0 0x27 | ||
120 | #define MB86A16_PORT1 0x28 | ||
121 | #define MB86A16_DRCFILT 0x29 | ||
122 | #define MB86A16_AFC 0x2a | ||
123 | #define MB86A16_AFCEXL 0x2b | ||
124 | #define MB86A16_AFCEXH 0x2c | ||
125 | #define MB86A16_DAGC 0x2d | ||
126 | #define MB86A16_SEQMODE 0x32 | ||
127 | #define MB86A16_S0S1T 0x33 | ||
128 | #define MB86A16_S2S3T 0x34 | ||
129 | #define MB86A16_S4S5T 0x35 | ||
130 | #define MB86A16_CNTMR 0x36 | ||
131 | #define MB86A16_SIG1 0x37 | ||
132 | #define MB86A16_SIG2 0x38 | ||
133 | #define MB86A16_VIMAG 0x39 | ||
134 | #define MB86A16_VISET1 0x3a | ||
135 | #define MB86A16_VISET2 0x3b | ||
136 | #define MB86A16_VISET3 0x3c | ||
137 | #define MB86A16_FAGCS1 0x3d | ||
138 | #define MB86A16_FAGCS2 0x3e | ||
139 | #define MB86A16_FAGCS3 0x3f | ||
140 | #define MB86A16_FAGCS4 0x40 | ||
141 | #define MB86A16_FAGCS5 0x41 | ||
142 | #define MB86A16_FAGCS6 0x42 | ||
143 | #define MB86A16_CRM 0x43 | ||
144 | #define MB86A16_STRM 0x44 | ||
145 | #define MB86A16_DAGCML 0x45 | ||
146 | #define MB86A16_DAGCMH 0x46 | ||
147 | #define MB86A16_QPSKTST 0x49 | ||
148 | #define MB86A16_DISTMON 0x52 | ||
149 | #define MB86A16_VERSION 0x7f | ||
150 | |||
151 | #endif /* __MB86A16_PRIV_H */ | ||
diff --git a/drivers/media/dvb/frontends/tda10021.c b/drivers/media/dvb/frontends/tda10021.c index 6c1dbf9288d8..6ca533ea0f0e 100644 --- a/drivers/media/dvb/frontends/tda10021.c +++ b/drivers/media/dvb/frontends/tda10021.c | |||
@@ -426,6 +426,10 @@ struct dvb_frontend* tda10021_attach(const struct tda1002x_config* config, | |||
426 | id = tda10021_readreg(state, 0x1a); | 426 | id = tda10021_readreg(state, 0x1a); |
427 | if ((id & 0xf0) != 0x70) goto error; | 427 | if ((id & 0xf0) != 0x70) goto error; |
428 | 428 | ||
429 | /* Don't claim TDA10023 */ | ||
430 | if (id == 0x7d) | ||
431 | goto error; | ||
432 | |||
429 | printk("TDA10021: i2c-addr = 0x%02x, id = 0x%02x\n", | 433 | printk("TDA10021: i2c-addr = 0x%02x, id = 0x%02x\n", |
430 | state->config->demod_address, id); | 434 | state->config->demod_address, id); |
431 | 435 | ||
diff --git a/drivers/media/dvb/frontends/tda665x.c b/drivers/media/dvb/frontends/tda665x.c new file mode 100644 index 000000000000..87d52739c828 --- /dev/null +++ b/drivers/media/dvb/frontends/tda665x.c | |||
@@ -0,0 +1,257 @@ | |||
1 | /* | ||
2 | TDA665x tuner driver | ||
3 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
4 | |||
5 | This program is free software; you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published by | ||
7 | the Free Software Foundation; either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with this program; if not, write to the Free Software | ||
17 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
18 | */ | ||
19 | |||
20 | #include <linux/init.h> | ||
21 | #include <linux/kernel.h> | ||
22 | #include <linux/module.h> | ||
23 | |||
24 | #include "dvb_frontend.h" | ||
25 | #include "tda665x.h" | ||
26 | |||
27 | struct tda665x_state { | ||
28 | struct dvb_frontend *fe; | ||
29 | struct i2c_adapter *i2c; | ||
30 | const struct tda665x_config *config; | ||
31 | |||
32 | u32 frequency; | ||
33 | u32 bandwidth; | ||
34 | }; | ||
35 | |||
36 | static int tda665x_read(struct tda665x_state *state, u8 *buf) | ||
37 | { | ||
38 | const struct tda665x_config *config = state->config; | ||
39 | int err = 0; | ||
40 | struct i2c_msg msg = { .addr = config->addr, .flags = I2C_M_RD, .buf = buf, .len = 2 }; | ||
41 | |||
42 | err = i2c_transfer(state->i2c, &msg, 1); | ||
43 | if (err != 1) | ||
44 | goto exit; | ||
45 | |||
46 | return err; | ||
47 | exit: | ||
48 | printk(KERN_ERR "%s: I/O Error err=<%d>\n", __func__, err); | ||
49 | return err; | ||
50 | } | ||
51 | |||
52 | static int tda665x_write(struct tda665x_state *state, u8 *buf, u8 length) | ||
53 | { | ||
54 | const struct tda665x_config *config = state->config; | ||
55 | int err = 0; | ||
56 | struct i2c_msg msg = { .addr = config->addr, .flags = 0, .buf = buf, .len = length }; | ||
57 | |||
58 | err = i2c_transfer(state->i2c, &msg, 1); | ||
59 | if (err != 1) | ||
60 | goto exit; | ||
61 | |||
62 | return err; | ||
63 | exit: | ||
64 | printk(KERN_ERR "%s: I/O Error err=<%d>\n", __func__, err); | ||
65 | return err; | ||
66 | } | ||
67 | |||
68 | static int tda665x_get_state(struct dvb_frontend *fe, | ||
69 | enum tuner_param param, | ||
70 | struct tuner_state *tstate) | ||
71 | { | ||
72 | struct tda665x_state *state = fe->tuner_priv; | ||
73 | int err = 0; | ||
74 | |||
75 | switch (param) { | ||
76 | case DVBFE_TUNER_FREQUENCY: | ||
77 | tstate->frequency = state->frequency; | ||
78 | break; | ||
79 | case DVBFE_TUNER_BANDWIDTH: | ||
80 | break; | ||
81 | default: | ||
82 | printk(KERN_ERR "%s: Unknown parameter (param=%d)\n", __func__, param); | ||
83 | err = -EINVAL; | ||
84 | break; | ||
85 | } | ||
86 | |||
87 | return err; | ||
88 | } | ||
89 | |||
90 | static int tda665x_get_status(struct dvb_frontend *fe, u32 *status) | ||
91 | { | ||
92 | struct tda665x_state *state = fe->tuner_priv; | ||
93 | u8 result = 0; | ||
94 | int err = 0; | ||
95 | |||
96 | *status = 0; | ||
97 | |||
98 | err = tda665x_read(state, &result); | ||
99 | if (err < 0) | ||
100 | goto exit; | ||
101 | |||
102 | if ((result >> 6) & 0x01) { | ||
103 | printk(KERN_DEBUG "%s: Tuner Phase Locked\n", __func__); | ||
104 | *status = 1; | ||
105 | } | ||
106 | |||
107 | return err; | ||
108 | exit: | ||
109 | printk(KERN_ERR "%s: I/O Error\n", __func__); | ||
110 | return err; | ||
111 | } | ||
112 | |||
113 | static int tda665x_set_state(struct dvb_frontend *fe, | ||
114 | enum tuner_param param, | ||
115 | struct tuner_state *tstate) | ||
116 | { | ||
117 | struct tda665x_state *state = fe->tuner_priv; | ||
118 | const struct tda665x_config *config = state->config; | ||
119 | u32 frequency, status = 0; | ||
120 | u8 buf[4]; | ||
121 | int err = 0; | ||
122 | |||
123 | if (param & DVBFE_TUNER_FREQUENCY) { | ||
124 | |||
125 | frequency = tstate->frequency; | ||
126 | if ((frequency < config->frequency_max) || (frequency > config->frequency_min)) { | ||
127 | printk(KERN_ERR "%s: Frequency beyond limits, frequency=%d\n", __func__, frequency); | ||
128 | return -EINVAL; | ||
129 | } | ||
130 | |||
131 | frequency += config->frequency_offst; | ||
132 | frequency *= config->ref_multiplier; | ||
133 | frequency += config->ref_divider >> 1; | ||
134 | frequency /= config->ref_divider; | ||
135 | |||
136 | buf[0] = (u8) (frequency & 0x7f00) >> 8; | ||
137 | buf[1] = (u8) (frequency & 0x00ff) >> 0; | ||
138 | buf[2] = 0x80 | 0x40 | 0x02; | ||
139 | buf[3] = 0x00; | ||
140 | |||
141 | /* restore frequency */ | ||
142 | frequency = tstate->frequency; | ||
143 | |||
144 | if (frequency < 153000000) { | ||
145 | /* VHF-L */ | ||
146 | buf[3] |= 0x01; /* fc, Low Band, 47 - 153 MHz */ | ||
147 | if (frequency < 68000000) | ||
148 | buf[3] |= 0x40; /* 83uA */ | ||
149 | if (frequency < 1040000000) | ||
150 | buf[3] |= 0x60; /* 122uA */ | ||
151 | if (frequency < 1250000000) | ||
152 | buf[3] |= 0x80; /* 163uA */ | ||
153 | else | ||
154 | buf[3] |= 0xa0; /* 254uA */ | ||
155 | } else if (frequency < 438000000) { | ||
156 | /* VHF-H */ | ||
157 | buf[3] |= 0x02; /* fc, Mid Band, 153 - 438 MHz */ | ||
158 | if (frequency < 230000000) | ||
159 | buf[3] |= 0x40; | ||
160 | if (frequency < 300000000) | ||
161 | buf[3] |= 0x60; | ||
162 | else | ||
163 | buf[3] |= 0x80; | ||
164 | } else { | ||
165 | /* UHF */ | ||
166 | buf[3] |= 0x04; /* fc, High Band, 438 - 862 MHz */ | ||
167 | if (frequency < 470000000) | ||
168 | buf[3] |= 0x60; | ||
169 | if (frequency < 526000000) | ||
170 | buf[3] |= 0x80; | ||
171 | else | ||
172 | buf[3] |= 0xa0; | ||
173 | } | ||
174 | |||
175 | /* Set params */ | ||
176 | err = tda665x_write(state, buf, 5); | ||
177 | if (err < 0) | ||
178 | goto exit; | ||
179 | |||
180 | /* sleep for some time */ | ||
181 | printk(KERN_DEBUG "%s: Waiting to Phase LOCK\n", __func__); | ||
182 | msleep(20); | ||
183 | /* check status */ | ||
184 | err = tda665x_get_status(fe, &status); | ||
185 | if (err < 0) | ||
186 | goto exit; | ||
187 | |||
188 | if (status == 1) { | ||
189 | printk(KERN_DEBUG "%s: Tuner Phase locked: status=%d\n", __func__, status); | ||
190 | state->frequency = frequency; /* cache successful state */ | ||
191 | } else { | ||
192 | printk(KERN_ERR "%s: No Phase lock: status=%d\n", __func__, status); | ||
193 | } | ||
194 | } else { | ||
195 | printk(KERN_ERR "%s: Unknown parameter (param=%d)\n", __func__, param); | ||
196 | return -EINVAL; | ||
197 | } | ||
198 | |||
199 | return 0; | ||
200 | exit: | ||
201 | printk(KERN_ERR "%s: I/O Error\n", __func__); | ||
202 | return err; | ||
203 | } | ||
204 | |||
205 | static int tda665x_release(struct dvb_frontend *fe) | ||
206 | { | ||
207 | struct tda665x_state *state = fe->tuner_priv; | ||
208 | |||
209 | fe->tuner_priv = NULL; | ||
210 | kfree(state); | ||
211 | return 0; | ||
212 | } | ||
213 | |||
214 | static struct dvb_tuner_ops tda665x_ops = { | ||
215 | |||
216 | .set_state = tda665x_set_state, | ||
217 | .get_state = tda665x_get_state, | ||
218 | .get_status = tda665x_get_status, | ||
219 | .release = tda665x_release | ||
220 | }; | ||
221 | |||
222 | struct dvb_frontend *tda665x_attach(struct dvb_frontend *fe, | ||
223 | const struct tda665x_config *config, | ||
224 | struct i2c_adapter *i2c) | ||
225 | { | ||
226 | struct tda665x_state *state = NULL; | ||
227 | struct dvb_tuner_info *info; | ||
228 | |||
229 | state = kzalloc(sizeof(struct tda665x_state), GFP_KERNEL); | ||
230 | if (state == NULL) | ||
231 | goto exit; | ||
232 | |||
233 | state->config = config; | ||
234 | state->i2c = i2c; | ||
235 | state->fe = fe; | ||
236 | fe->tuner_priv = state; | ||
237 | fe->ops.tuner_ops = tda665x_ops; | ||
238 | info = &fe->ops.tuner_ops.info; | ||
239 | |||
240 | memcpy(info->name, config->name, sizeof(config->name)); | ||
241 | info->frequency_min = config->frequency_min; | ||
242 | info->frequency_max = config->frequency_max; | ||
243 | info->frequency_step = config->frequency_offst; | ||
244 | |||
245 | printk(KERN_DEBUG "%s: Attaching TDA665x (%s) tuner\n", __func__, info->name); | ||
246 | |||
247 | return fe; | ||
248 | |||
249 | exit: | ||
250 | kfree(state); | ||
251 | return NULL; | ||
252 | } | ||
253 | EXPORT_SYMBOL(tda665x_attach); | ||
254 | |||
255 | MODULE_DESCRIPTION("TDA665x driver"); | ||
256 | MODULE_AUTHOR("Manu Abraham"); | ||
257 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/media/dvb/frontends/tda665x.h b/drivers/media/dvb/frontends/tda665x.h new file mode 100644 index 000000000000..ec7927aa75ae --- /dev/null +++ b/drivers/media/dvb/frontends/tda665x.h | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | TDA665x tuner driver | ||
3 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
4 | |||
5 | This program is free software; you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published by | ||
7 | the Free Software Foundation; either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with this program; if not, write to the Free Software | ||
17 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
18 | */ | ||
19 | |||
20 | #ifndef __TDA665x_H | ||
21 | #define __TDA665x_H | ||
22 | |||
23 | struct tda665x_config { | ||
24 | char name[128]; | ||
25 | |||
26 | u8 addr; | ||
27 | u32 frequency_min; | ||
28 | u32 frequency_max; | ||
29 | u32 frequency_offst; | ||
30 | u32 ref_multiplier; | ||
31 | u32 ref_divider; | ||
32 | }; | ||
33 | |||
34 | #if defined(CONFIG_DVB_TDA665x) || (defined(CONFIG_DVB_TDA665x_MODULE) && defined(MODULE)) | ||
35 | |||
36 | extern struct dvb_frontend *tda665x_attach(struct dvb_frontend *fe, | ||
37 | const struct tda665x_config *config, | ||
38 | struct i2c_adapter *i2c); | ||
39 | |||
40 | #else | ||
41 | |||
42 | static inline struct dvb_frontend *tda665x_attach(struct dvb_frontend *fe, | ||
43 | const struct tda665x_config *config, | ||
44 | struct i2c_adapter *i2c) | ||
45 | { | ||
46 | printk(KERN_WARNING "%s: Driver disabled by Kconfig\n", __func__); | ||
47 | return NULL; | ||
48 | } | ||
49 | |||
50 | #endif /* CONFIG_DVB_TDA665x */ | ||
51 | |||
52 | #endif /* __TDA665x_H */ | ||
diff --git a/drivers/media/dvb/mantis/Kconfig b/drivers/media/dvb/mantis/Kconfig new file mode 100644 index 000000000000..f7b72a32adf3 --- /dev/null +++ b/drivers/media/dvb/mantis/Kconfig | |||
@@ -0,0 +1,32 @@ | |||
1 | config MANTIS_CORE | ||
2 | tristate "Mantis/Hopper PCI bridge based devices" | ||
3 | depends on PCI && I2C && INPUT | ||
4 | |||
5 | help | ||
6 | Support for PCI cards based on the Mantis and Hopper PCi bridge. | ||
7 | |||
8 | Say Y if you own such a device and want to use it. | ||
9 | |||
10 | config DVB_MANTIS | ||
11 | tristate "MANTIS based cards" | ||
12 | depends on MANTIS_CORE && DVB_CORE && PCI && I2C | ||
13 | select DVB_MB86A16 | ||
14 | select DVB_ZL10353 | ||
15 | select DVB_STV0299 | ||
16 | select DVB_PLL | ||
17 | help | ||
18 | Support for PCI cards based on the Mantis PCI bridge. | ||
19 | Say Y when you have a Mantis based DVB card and want to use it. | ||
20 | |||
21 | If unsure say N. | ||
22 | |||
23 | config DVB_HOPPER | ||
24 | tristate "HOPPER based cards" | ||
25 | depends on MANTIS_CORE && DVB_CORE && PCI && I2C | ||
26 | select DVB_ZL10353 | ||
27 | select DVB_PLL | ||
28 | help | ||
29 | Support for PCI cards based on the Hopper PCI bridge. | ||
30 | Say Y when you have a Hopper based DVB card and want to use it. | ||
31 | |||
32 | If unsure say N | ||
diff --git a/drivers/media/dvb/mantis/Makefile b/drivers/media/dvb/mantis/Makefile new file mode 100644 index 000000000000..98dc5cd258ac --- /dev/null +++ b/drivers/media/dvb/mantis/Makefile | |||
@@ -0,0 +1,28 @@ | |||
1 | mantis_core-objs := mantis_ioc.o \ | ||
2 | mantis_uart.o \ | ||
3 | mantis_dma.o \ | ||
4 | mantis_pci.o \ | ||
5 | mantis_i2c.o \ | ||
6 | mantis_dvb.o \ | ||
7 | mantis_evm.o \ | ||
8 | mantis_hif.o \ | ||
9 | mantis_ca.o \ | ||
10 | mantis_pcmcia.o \ | ||
11 | mantis_input.o | ||
12 | |||
13 | mantis-objs := mantis_cards.o \ | ||
14 | mantis_vp1033.o \ | ||
15 | mantis_vp1034.o \ | ||
16 | mantis_vp1041.o \ | ||
17 | mantis_vp2033.o \ | ||
18 | mantis_vp2040.o \ | ||
19 | mantis_vp3030.o | ||
20 | |||
21 | hopper-objs := hopper_cards.o \ | ||
22 | hopper_vp3028.o | ||
23 | |||
24 | obj-$(CONFIG_MANTIS_CORE) += mantis_core.o | ||
25 | obj-$(CONFIG_DVB_MANTIS) += mantis.o | ||
26 | obj-$(CONFIG_DVB_HOPPER) += hopper.o | ||
27 | |||
28 | EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/ | ||
diff --git a/drivers/media/dvb/mantis/hopper_cards.c b/drivers/media/dvb/mantis/hopper_cards.c new file mode 100644 index 000000000000..d073c61e3c0d --- /dev/null +++ b/drivers/media/dvb/mantis/hopper_cards.c | |||
@@ -0,0 +1,275 @@ | |||
1 | /* | ||
2 | Hopper PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/module.h> | ||
22 | #include <linux/moduleparam.h> | ||
23 | #include <linux/kernel.h> | ||
24 | #include <linux/pci.h> | ||
25 | #include <asm/irq.h> | ||
26 | #include <linux/interrupt.h> | ||
27 | |||
28 | #include "dmxdev.h" | ||
29 | #include "dvbdev.h" | ||
30 | #include "dvb_demux.h" | ||
31 | #include "dvb_frontend.h" | ||
32 | #include "dvb_net.h" | ||
33 | |||
34 | #include "mantis_common.h" | ||
35 | #include "hopper_vp3028.h" | ||
36 | #include "mantis_dma.h" | ||
37 | #include "mantis_dvb.h" | ||
38 | #include "mantis_uart.h" | ||
39 | #include "mantis_ioc.h" | ||
40 | #include "mantis_pci.h" | ||
41 | #include "mantis_i2c.h" | ||
42 | #include "mantis_reg.h" | ||
43 | |||
44 | static unsigned int verbose; | ||
45 | module_param(verbose, int, 0644); | ||
46 | MODULE_PARM_DESC(verbose, "verbose startup messages, default is 1 (yes)"); | ||
47 | |||
48 | #define DRIVER_NAME "Hopper" | ||
49 | |||
50 | static char *label[10] = { | ||
51 | "DMA", | ||
52 | "IRQ-0", | ||
53 | "IRQ-1", | ||
54 | "OCERR", | ||
55 | "PABRT", | ||
56 | "RIPRR", | ||
57 | "PPERR", | ||
58 | "FTRGT", | ||
59 | "RISCI", | ||
60 | "RACK" | ||
61 | }; | ||
62 | |||
63 | static int devs; | ||
64 | |||
65 | static irqreturn_t hopper_irq_handler(int irq, void *dev_id) | ||
66 | { | ||
67 | u32 stat = 0, mask = 0, lstat = 0, mstat = 0; | ||
68 | u32 rst_stat = 0, rst_mask = 0; | ||
69 | |||
70 | struct mantis_pci *mantis; | ||
71 | struct mantis_ca *ca; | ||
72 | |||
73 | mantis = (struct mantis_pci *) dev_id; | ||
74 | if (unlikely(mantis == NULL)) { | ||
75 | dprintk(MANTIS_ERROR, 1, "Mantis == NULL"); | ||
76 | return IRQ_NONE; | ||
77 | } | ||
78 | ca = mantis->mantis_ca; | ||
79 | |||
80 | stat = mmread(MANTIS_INT_STAT); | ||
81 | mask = mmread(MANTIS_INT_MASK); | ||
82 | mstat = lstat = stat & ~MANTIS_INT_RISCSTAT; | ||
83 | if (!(stat & mask)) | ||
84 | return IRQ_NONE; | ||
85 | |||
86 | rst_mask = MANTIS_GPIF_WRACK | | ||
87 | MANTIS_GPIF_OTHERR | | ||
88 | MANTIS_SBUF_WSTO | | ||
89 | MANTIS_GPIF_EXTIRQ; | ||
90 | |||
91 | rst_stat = mmread(MANTIS_GPIF_STATUS); | ||
92 | rst_stat &= rst_mask; | ||
93 | mmwrite(rst_stat, MANTIS_GPIF_STATUS); | ||
94 | |||
95 | mantis->mantis_int_stat = stat; | ||
96 | mantis->mantis_int_mask = mask; | ||
97 | dprintk(MANTIS_DEBUG, 0, "\n-- Stat=<%02x> Mask=<%02x> --", stat, mask); | ||
98 | if (stat & MANTIS_INT_RISCEN) { | ||
99 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[0]); | ||
100 | } | ||
101 | if (stat & MANTIS_INT_IRQ0) { | ||
102 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[1]); | ||
103 | mantis->gpif_status = rst_stat; | ||
104 | wake_up(&ca->hif_write_wq); | ||
105 | schedule_work(&ca->hif_evm_work); | ||
106 | } | ||
107 | if (stat & MANTIS_INT_IRQ1) { | ||
108 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]); | ||
109 | schedule_work(&mantis->uart_work); | ||
110 | } | ||
111 | if (stat & MANTIS_INT_OCERR) { | ||
112 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]); | ||
113 | } | ||
114 | if (stat & MANTIS_INT_PABORT) { | ||
115 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[4]); | ||
116 | } | ||
117 | if (stat & MANTIS_INT_RIPERR) { | ||
118 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[5]); | ||
119 | } | ||
120 | if (stat & MANTIS_INT_PPERR) { | ||
121 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[6]); | ||
122 | } | ||
123 | if (stat & MANTIS_INT_FTRGT) { | ||
124 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[7]); | ||
125 | } | ||
126 | if (stat & MANTIS_INT_RISCI) { | ||
127 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[8]); | ||
128 | mantis->finished_block = (stat & MANTIS_INT_RISCSTAT) >> 28; | ||
129 | tasklet_schedule(&mantis->tasklet); | ||
130 | } | ||
131 | if (stat & MANTIS_INT_I2CDONE) { | ||
132 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[9]); | ||
133 | wake_up(&mantis->i2c_wq); | ||
134 | } | ||
135 | mmwrite(stat, MANTIS_INT_STAT); | ||
136 | stat &= ~(MANTIS_INT_RISCEN | MANTIS_INT_I2CDONE | | ||
137 | MANTIS_INT_I2CRACK | MANTIS_INT_PCMCIA7 | | ||
138 | MANTIS_INT_PCMCIA6 | MANTIS_INT_PCMCIA5 | | ||
139 | MANTIS_INT_PCMCIA4 | MANTIS_INT_PCMCIA3 | | ||
140 | MANTIS_INT_PCMCIA2 | MANTIS_INT_PCMCIA1 | | ||
141 | MANTIS_INT_PCMCIA0 | MANTIS_INT_IRQ1 | | ||
142 | MANTIS_INT_IRQ0 | MANTIS_INT_OCERR | | ||
143 | MANTIS_INT_PABORT | MANTIS_INT_RIPERR | | ||
144 | MANTIS_INT_PPERR | MANTIS_INT_FTRGT | | ||
145 | MANTIS_INT_RISCI); | ||
146 | |||
147 | if (stat) | ||
148 | dprintk(MANTIS_DEBUG, 0, "<Unknown> Stat=<%02x> Mask=<%02x>", stat, mask); | ||
149 | |||
150 | dprintk(MANTIS_DEBUG, 0, "\n"); | ||
151 | return IRQ_HANDLED; | ||
152 | } | ||
153 | |||
154 | static int __devinit hopper_pci_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) | ||
155 | { | ||
156 | struct mantis_pci *mantis; | ||
157 | struct mantis_hwconfig *config; | ||
158 | int err = 0; | ||
159 | |||
160 | mantis = kzalloc(sizeof(struct mantis_pci), GFP_KERNEL); | ||
161 | if (mantis == NULL) { | ||
162 | printk(KERN_ERR "%s ERROR: Out of memory\n", __func__); | ||
163 | err = -ENOMEM; | ||
164 | goto fail0; | ||
165 | } | ||
166 | |||
167 | mantis->num = devs; | ||
168 | mantis->verbose = verbose; | ||
169 | mantis->pdev = pdev; | ||
170 | config = (struct mantis_hwconfig *) pci_id->driver_data; | ||
171 | config->irq_handler = &hopper_irq_handler; | ||
172 | mantis->hwconfig = config; | ||
173 | |||
174 | err = mantis_pci_init(mantis); | ||
175 | if (err) { | ||
176 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis PCI initialization failed <%d>", err); | ||
177 | goto fail1; | ||
178 | } | ||
179 | |||
180 | err = mantis_stream_control(mantis, STREAM_TO_HIF); | ||
181 | if (err < 0) { | ||
182 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis stream control failed <%d>", err); | ||
183 | goto fail1; | ||
184 | } | ||
185 | |||
186 | err = mantis_i2c_init(mantis); | ||
187 | if (err < 0) { | ||
188 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis I2C initialization failed <%d>", err); | ||
189 | goto fail2; | ||
190 | } | ||
191 | |||
192 | err = mantis_get_mac(mantis); | ||
193 | if (err < 0) { | ||
194 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis MAC address read failed <%d>", err); | ||
195 | goto fail2; | ||
196 | } | ||
197 | |||
198 | err = mantis_dma_init(mantis); | ||
199 | if (err < 0) { | ||
200 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DMA initialization failed <%d>", err); | ||
201 | goto fail3; | ||
202 | } | ||
203 | |||
204 | err = mantis_dvb_init(mantis); | ||
205 | if (err < 0) { | ||
206 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DVB initialization failed <%d>", err); | ||
207 | goto fail4; | ||
208 | } | ||
209 | devs++; | ||
210 | |||
211 | return err; | ||
212 | |||
213 | fail4: | ||
214 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DMA exit! <%d>", err); | ||
215 | mantis_dma_exit(mantis); | ||
216 | |||
217 | fail3: | ||
218 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis I2C exit! <%d>", err); | ||
219 | mantis_i2c_exit(mantis); | ||
220 | |||
221 | fail2: | ||
222 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis PCI exit! <%d>", err); | ||
223 | mantis_pci_exit(mantis); | ||
224 | |||
225 | fail1: | ||
226 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis free! <%d>", err); | ||
227 | kfree(mantis); | ||
228 | |||
229 | fail0: | ||
230 | return err; | ||
231 | } | ||
232 | |||
233 | static void __devexit hopper_pci_remove(struct pci_dev *pdev) | ||
234 | { | ||
235 | struct mantis_pci *mantis = pci_get_drvdata(pdev); | ||
236 | |||
237 | if (mantis) { | ||
238 | mantis_dvb_exit(mantis); | ||
239 | mantis_dma_exit(mantis); | ||
240 | mantis_i2c_exit(mantis); | ||
241 | mantis_pci_exit(mantis); | ||
242 | kfree(mantis); | ||
243 | } | ||
244 | return; | ||
245 | |||
246 | } | ||
247 | |||
248 | static struct pci_device_id hopper_pci_table[] = { | ||
249 | MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_3028_DVB_T, &vp3028_config), | ||
250 | { } | ||
251 | }; | ||
252 | |||
253 | static struct pci_driver hopper_pci_driver = { | ||
254 | .name = DRIVER_NAME, | ||
255 | .id_table = hopper_pci_table, | ||
256 | .probe = hopper_pci_probe, | ||
257 | .remove = hopper_pci_remove, | ||
258 | }; | ||
259 | |||
260 | static int __devinit hopper_init(void) | ||
261 | { | ||
262 | return pci_register_driver(&hopper_pci_driver); | ||
263 | } | ||
264 | |||
265 | static void __devexit hopper_exit(void) | ||
266 | { | ||
267 | return pci_unregister_driver(&hopper_pci_driver); | ||
268 | } | ||
269 | |||
270 | module_init(hopper_init); | ||
271 | module_exit(hopper_exit); | ||
272 | |||
273 | MODULE_DESCRIPTION("HOPPER driver"); | ||
274 | MODULE_AUTHOR("Manu Abraham"); | ||
275 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/media/dvb/mantis/hopper_vp3028.c b/drivers/media/dvb/mantis/hopper_vp3028.c new file mode 100644 index 000000000000..96674c78e86b --- /dev/null +++ b/drivers/media/dvb/mantis/hopper_vp3028.c | |||
@@ -0,0 +1,88 @@ | |||
1 | /* | ||
2 | Hopper VP-3028 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/signal.h> | ||
22 | #include <linux/sched.h> | ||
23 | #include <linux/interrupt.h> | ||
24 | |||
25 | #include "dmxdev.h" | ||
26 | #include "dvbdev.h" | ||
27 | #include "dvb_demux.h" | ||
28 | #include "dvb_frontend.h" | ||
29 | #include "dvb_net.h" | ||
30 | |||
31 | #include "zl10353.h" | ||
32 | #include "mantis_common.h" | ||
33 | #include "mantis_ioc.h" | ||
34 | #include "mantis_dvb.h" | ||
35 | #include "hopper_vp3028.h" | ||
36 | |||
37 | struct zl10353_config hopper_vp3028_config = { | ||
38 | .demod_address = 0x0f, | ||
39 | }; | ||
40 | |||
41 | #define MANTIS_MODEL_NAME "VP-3028" | ||
42 | #define MANTIS_DEV_TYPE "DVB-T" | ||
43 | |||
44 | static int vp3028_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe) | ||
45 | { | ||
46 | struct i2c_adapter *adapter = &mantis->adapter; | ||
47 | struct mantis_hwconfig *config = mantis->hwconfig; | ||
48 | int err = 0; | ||
49 | |||
50 | gpio_set_bits(mantis, config->reset, 0); | ||
51 | msleep(100); | ||
52 | err = mantis_frontend_power(mantis, POWER_ON); | ||
53 | msleep(100); | ||
54 | gpio_set_bits(mantis, config->reset, 1); | ||
55 | |||
56 | err = mantis_frontend_power(mantis, POWER_ON); | ||
57 | if (err == 0) { | ||
58 | msleep(250); | ||
59 | dprintk(MANTIS_ERROR, 1, "Probing for 10353 (DVB-T)"); | ||
60 | fe = zl10353_attach(&hopper_vp3028_config, adapter); | ||
61 | |||
62 | if (!fe) | ||
63 | return -1; | ||
64 | } else { | ||
65 | dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>", | ||
66 | adapter->name, | ||
67 | err); | ||
68 | |||
69 | return -EIO; | ||
70 | } | ||
71 | dprintk(MANTIS_ERROR, 1, "Done!"); | ||
72 | |||
73 | return 0; | ||
74 | } | ||
75 | |||
76 | struct mantis_hwconfig vp3028_config = { | ||
77 | .model_name = MANTIS_MODEL_NAME, | ||
78 | .dev_type = MANTIS_DEV_TYPE, | ||
79 | .ts_size = MANTIS_TS_188, | ||
80 | |||
81 | .baud_rate = MANTIS_BAUD_9600, | ||
82 | .parity = MANTIS_PARITY_NONE, | ||
83 | .bytes = 0, | ||
84 | |||
85 | .frontend_init = vp3028_frontend_init, | ||
86 | .power = GPIF_A00, | ||
87 | .reset = GPIF_A03, | ||
88 | }; | ||
diff --git a/drivers/media/dvb/mantis/hopper_vp3028.h b/drivers/media/dvb/mantis/hopper_vp3028.h new file mode 100644 index 000000000000..57239498bc87 --- /dev/null +++ b/drivers/media/dvb/mantis/hopper_vp3028.h | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | Hopper VP-3028 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_VP3028_H | ||
22 | #define __MANTIS_VP3028_H | ||
23 | |||
24 | #include "mantis_common.h" | ||
25 | |||
26 | #define MANTIS_VP_3028_DVB_T 0x0028 | ||
27 | |||
28 | extern struct mantis_hwconfig vp3028_config; | ||
29 | |||
30 | #endif /* __MANTIS_VP3028_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_ca.c b/drivers/media/dvb/mantis/mantis_ca.c new file mode 100644 index 000000000000..403ce043d00e --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_ca.c | |||
@@ -0,0 +1,207 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/signal.h> | ||
22 | #include <linux/sched.h> | ||
23 | #include <linux/interrupt.h> | ||
24 | |||
25 | #include "dmxdev.h" | ||
26 | #include "dvbdev.h" | ||
27 | #include "dvb_demux.h" | ||
28 | #include "dvb_frontend.h" | ||
29 | #include "dvb_net.h" | ||
30 | |||
31 | #include "mantis_common.h" | ||
32 | #include "mantis_link.h" | ||
33 | #include "mantis_hif.h" | ||
34 | #include "mantis_reg.h" | ||
35 | |||
36 | #include "mantis_ca.h" | ||
37 | |||
38 | static int mantis_ca_read_attr_mem(struct dvb_ca_en50221 *en50221, int slot, int addr) | ||
39 | { | ||
40 | struct mantis_ca *ca = en50221->data; | ||
41 | struct mantis_pci *mantis = ca->ca_priv; | ||
42 | |||
43 | dprintk(MANTIS_DEBUG, 1, "Slot(%d): Request Attribute Mem Read", slot); | ||
44 | |||
45 | if (slot != 0) | ||
46 | return -EINVAL; | ||
47 | |||
48 | return mantis_hif_read_mem(ca, addr); | ||
49 | } | ||
50 | |||
51 | static int mantis_ca_write_attr_mem(struct dvb_ca_en50221 *en50221, int slot, int addr, u8 data) | ||
52 | { | ||
53 | struct mantis_ca *ca = en50221->data; | ||
54 | struct mantis_pci *mantis = ca->ca_priv; | ||
55 | |||
56 | dprintk(MANTIS_DEBUG, 1, "Slot(%d): Request Attribute Mem Write", slot); | ||
57 | |||
58 | if (slot != 0) | ||
59 | return -EINVAL; | ||
60 | |||
61 | return mantis_hif_write_mem(ca, addr, data); | ||
62 | } | ||
63 | |||
64 | static int mantis_ca_read_cam_ctl(struct dvb_ca_en50221 *en50221, int slot, u8 addr) | ||
65 | { | ||
66 | struct mantis_ca *ca = en50221->data; | ||
67 | struct mantis_pci *mantis = ca->ca_priv; | ||
68 | |||
69 | dprintk(MANTIS_DEBUG, 1, "Slot(%d): Request CAM control Read", slot); | ||
70 | |||
71 | if (slot != 0) | ||
72 | return -EINVAL; | ||
73 | |||
74 | return mantis_hif_read_iom(ca, addr); | ||
75 | } | ||
76 | |||
77 | static int mantis_ca_write_cam_ctl(struct dvb_ca_en50221 *en50221, int slot, u8 addr, u8 data) | ||
78 | { | ||
79 | struct mantis_ca *ca = en50221->data; | ||
80 | struct mantis_pci *mantis = ca->ca_priv; | ||
81 | |||
82 | dprintk(MANTIS_DEBUG, 1, "Slot(%d): Request CAM control Write", slot); | ||
83 | |||
84 | if (slot != 0) | ||
85 | return -EINVAL; | ||
86 | |||
87 | return mantis_hif_write_iom(ca, addr, data); | ||
88 | } | ||
89 | |||
90 | static int mantis_ca_slot_reset(struct dvb_ca_en50221 *en50221, int slot) | ||
91 | { | ||
92 | struct mantis_ca *ca = en50221->data; | ||
93 | struct mantis_pci *mantis = ca->ca_priv; | ||
94 | |||
95 | dprintk(MANTIS_DEBUG, 1, "Slot(%d): Slot RESET", slot); | ||
96 | udelay(500); /* Wait.. */ | ||
97 | mmwrite(0xda, MANTIS_PCMCIA_RESET); /* Leading edge assert */ | ||
98 | udelay(500); | ||
99 | mmwrite(0x00, MANTIS_PCMCIA_RESET); /* Trailing edge deassert */ | ||
100 | msleep(1000); | ||
101 | dvb_ca_en50221_camready_irq(&ca->en50221, 0); | ||
102 | |||
103 | return 0; | ||
104 | } | ||
105 | |||
106 | static int mantis_ca_slot_shutdown(struct dvb_ca_en50221 *en50221, int slot) | ||
107 | { | ||
108 | struct mantis_ca *ca = en50221->data; | ||
109 | struct mantis_pci *mantis = ca->ca_priv; | ||
110 | |||
111 | dprintk(MANTIS_DEBUG, 1, "Slot(%d): Slot shutdown", slot); | ||
112 | |||
113 | return 0; | ||
114 | } | ||
115 | |||
116 | static int mantis_ts_control(struct dvb_ca_en50221 *en50221, int slot) | ||
117 | { | ||
118 | struct mantis_ca *ca = en50221->data; | ||
119 | struct mantis_pci *mantis = ca->ca_priv; | ||
120 | |||
121 | dprintk(MANTIS_DEBUG, 1, "Slot(%d): TS control", slot); | ||
122 | /* mantis_set_direction(mantis, 1); */ /* Enable TS through CAM */ | ||
123 | |||
124 | return 0; | ||
125 | } | ||
126 | |||
127 | static int mantis_slot_status(struct dvb_ca_en50221 *en50221, int slot, int open) | ||
128 | { | ||
129 | struct mantis_ca *ca = en50221->data; | ||
130 | struct mantis_pci *mantis = ca->ca_priv; | ||
131 | |||
132 | dprintk(MANTIS_DEBUG, 1, "Slot(%d): Poll Slot status", slot); | ||
133 | |||
134 | if (ca->slot_state == MODULE_INSERTED) { | ||
135 | dprintk(MANTIS_DEBUG, 1, "CA Module present and ready"); | ||
136 | return DVB_CA_EN50221_POLL_CAM_PRESENT | DVB_CA_EN50221_POLL_CAM_READY; | ||
137 | } else { | ||
138 | dprintk(MANTIS_DEBUG, 1, "CA Module not present or not ready"); | ||
139 | } | ||
140 | |||
141 | return 0; | ||
142 | } | ||
143 | |||
144 | int mantis_ca_init(struct mantis_pci *mantis) | ||
145 | { | ||
146 | struct dvb_adapter *dvb_adapter = &mantis->dvb_adapter; | ||
147 | struct mantis_ca *ca; | ||
148 | int ca_flags = 0, result; | ||
149 | |||
150 | dprintk(MANTIS_DEBUG, 1, "Initializing Mantis CA"); | ||
151 | ca = kzalloc(sizeof(struct mantis_ca), GFP_KERNEL); | ||
152 | if (!ca) { | ||
153 | dprintk(MANTIS_ERROR, 1, "Out of memory!, exiting .."); | ||
154 | result = -ENOMEM; | ||
155 | goto err; | ||
156 | } | ||
157 | |||
158 | ca->ca_priv = mantis; | ||
159 | mantis->mantis_ca = ca; | ||
160 | ca_flags = DVB_CA_EN50221_FLAG_IRQ_CAMCHANGE; | ||
161 | /* register CA interface */ | ||
162 | ca->en50221.owner = THIS_MODULE; | ||
163 | ca->en50221.read_attribute_mem = mantis_ca_read_attr_mem; | ||
164 | ca->en50221.write_attribute_mem = mantis_ca_write_attr_mem; | ||
165 | ca->en50221.read_cam_control = mantis_ca_read_cam_ctl; | ||
166 | ca->en50221.write_cam_control = mantis_ca_write_cam_ctl; | ||
167 | ca->en50221.slot_reset = mantis_ca_slot_reset; | ||
168 | ca->en50221.slot_shutdown = mantis_ca_slot_shutdown; | ||
169 | ca->en50221.slot_ts_enable = mantis_ts_control; | ||
170 | ca->en50221.poll_slot_status = mantis_slot_status; | ||
171 | ca->en50221.data = ca; | ||
172 | |||
173 | mutex_init(&ca->ca_lock); | ||
174 | |||
175 | init_waitqueue_head(&ca->hif_data_wq); | ||
176 | init_waitqueue_head(&ca->hif_opdone_wq); | ||
177 | init_waitqueue_head(&ca->hif_write_wq); | ||
178 | |||
179 | dprintk(MANTIS_ERROR, 1, "Registering EN50221 device"); | ||
180 | result = dvb_ca_en50221_init(dvb_adapter, &ca->en50221, ca_flags, 1); | ||
181 | if (result != 0) { | ||
182 | dprintk(MANTIS_ERROR, 1, "EN50221: Initialization failed <%d>", result); | ||
183 | goto err; | ||
184 | } | ||
185 | dprintk(MANTIS_ERROR, 1, "Registered EN50221 device"); | ||
186 | mantis_evmgr_init(ca); | ||
187 | return 0; | ||
188 | err: | ||
189 | kfree(ca); | ||
190 | return result; | ||
191 | } | ||
192 | EXPORT_SYMBOL_GPL(mantis_ca_init); | ||
193 | |||
194 | void mantis_ca_exit(struct mantis_pci *mantis) | ||
195 | { | ||
196 | struct mantis_ca *ca = mantis->mantis_ca; | ||
197 | |||
198 | dprintk(MANTIS_DEBUG, 1, "Mantis CA exit"); | ||
199 | |||
200 | mantis_evmgr_exit(ca); | ||
201 | dprintk(MANTIS_ERROR, 1, "Unregistering EN50221 device"); | ||
202 | if (ca) | ||
203 | dvb_ca_en50221_release(&ca->en50221); | ||
204 | |||
205 | kfree(ca); | ||
206 | } | ||
207 | EXPORT_SYMBOL_GPL(mantis_ca_exit); | ||
diff --git a/drivers/media/dvb/mantis/mantis_ca.h b/drivers/media/dvb/mantis/mantis_ca.h new file mode 100644 index 000000000000..dc63e55f7eca --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_ca.h | |||
@@ -0,0 +1,27 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_CA_H | ||
22 | #define __MANTIS_CA_H | ||
23 | |||
24 | extern int mantis_ca_init(struct mantis_pci *mantis); | ||
25 | extern void mantis_ca_exit(struct mantis_pci *mantis); | ||
26 | |||
27 | #endif /* __MANTIS_CA_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_cards.c b/drivers/media/dvb/mantis/mantis_cards.c new file mode 100644 index 000000000000..16f1708fd3bc --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_cards.c | |||
@@ -0,0 +1,305 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/module.h> | ||
22 | #include <linux/moduleparam.h> | ||
23 | #include <linux/kernel.h> | ||
24 | #include <linux/pci.h> | ||
25 | #include <asm/irq.h> | ||
26 | #include <linux/interrupt.h> | ||
27 | |||
28 | #include "dmxdev.h" | ||
29 | #include "dvbdev.h" | ||
30 | #include "dvb_demux.h" | ||
31 | #include "dvb_frontend.h" | ||
32 | #include "dvb_net.h" | ||
33 | |||
34 | #include "mantis_common.h" | ||
35 | |||
36 | #include "mantis_vp1033.h" | ||
37 | #include "mantis_vp1034.h" | ||
38 | #include "mantis_vp1041.h" | ||
39 | #include "mantis_vp2033.h" | ||
40 | #include "mantis_vp2040.h" | ||
41 | #include "mantis_vp3030.h" | ||
42 | |||
43 | #include "mantis_dma.h" | ||
44 | #include "mantis_ca.h" | ||
45 | #include "mantis_dvb.h" | ||
46 | #include "mantis_uart.h" | ||
47 | #include "mantis_ioc.h" | ||
48 | #include "mantis_pci.h" | ||
49 | #include "mantis_i2c.h" | ||
50 | #include "mantis_reg.h" | ||
51 | |||
52 | static unsigned int verbose; | ||
53 | module_param(verbose, int, 0644); | ||
54 | MODULE_PARM_DESC(verbose, "verbose startup messages, default is 1 (yes)"); | ||
55 | |||
56 | static int devs; | ||
57 | |||
58 | #define DRIVER_NAME "Mantis" | ||
59 | |||
60 | static char *label[10] = { | ||
61 | "DMA", | ||
62 | "IRQ-0", | ||
63 | "IRQ-1", | ||
64 | "OCERR", | ||
65 | "PABRT", | ||
66 | "RIPRR", | ||
67 | "PPERR", | ||
68 | "FTRGT", | ||
69 | "RISCI", | ||
70 | "RACK" | ||
71 | }; | ||
72 | |||
73 | static irqreturn_t mantis_irq_handler(int irq, void *dev_id) | ||
74 | { | ||
75 | u32 stat = 0, mask = 0, lstat = 0, mstat = 0; | ||
76 | u32 rst_stat = 0, rst_mask = 0; | ||
77 | |||
78 | struct mantis_pci *mantis; | ||
79 | struct mantis_ca *ca; | ||
80 | |||
81 | mantis = (struct mantis_pci *) dev_id; | ||
82 | if (unlikely(mantis == NULL)) { | ||
83 | dprintk(MANTIS_ERROR, 1, "Mantis == NULL"); | ||
84 | return IRQ_NONE; | ||
85 | } | ||
86 | ca = mantis->mantis_ca; | ||
87 | |||
88 | stat = mmread(MANTIS_INT_STAT); | ||
89 | mask = mmread(MANTIS_INT_MASK); | ||
90 | mstat = lstat = stat & ~MANTIS_INT_RISCSTAT; | ||
91 | if (!(stat & mask)) | ||
92 | return IRQ_NONE; | ||
93 | |||
94 | rst_mask = MANTIS_GPIF_WRACK | | ||
95 | MANTIS_GPIF_OTHERR | | ||
96 | MANTIS_SBUF_WSTO | | ||
97 | MANTIS_GPIF_EXTIRQ; | ||
98 | |||
99 | rst_stat = mmread(MANTIS_GPIF_STATUS); | ||
100 | rst_stat &= rst_mask; | ||
101 | mmwrite(rst_stat, MANTIS_GPIF_STATUS); | ||
102 | |||
103 | mantis->mantis_int_stat = stat; | ||
104 | mantis->mantis_int_mask = mask; | ||
105 | dprintk(MANTIS_DEBUG, 0, "\n-- Stat=<%02x> Mask=<%02x> --", stat, mask); | ||
106 | if (stat & MANTIS_INT_RISCEN) { | ||
107 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[0]); | ||
108 | } | ||
109 | if (stat & MANTIS_INT_IRQ0) { | ||
110 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[1]); | ||
111 | mantis->gpif_status = rst_stat; | ||
112 | wake_up(&ca->hif_write_wq); | ||
113 | schedule_work(&ca->hif_evm_work); | ||
114 | } | ||
115 | if (stat & MANTIS_INT_IRQ1) { | ||
116 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]); | ||
117 | schedule_work(&mantis->uart_work); | ||
118 | } | ||
119 | if (stat & MANTIS_INT_OCERR) { | ||
120 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]); | ||
121 | } | ||
122 | if (stat & MANTIS_INT_PABORT) { | ||
123 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[4]); | ||
124 | } | ||
125 | if (stat & MANTIS_INT_RIPERR) { | ||
126 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[5]); | ||
127 | } | ||
128 | if (stat & MANTIS_INT_PPERR) { | ||
129 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[6]); | ||
130 | } | ||
131 | if (stat & MANTIS_INT_FTRGT) { | ||
132 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[7]); | ||
133 | } | ||
134 | if (stat & MANTIS_INT_RISCI) { | ||
135 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[8]); | ||
136 | mantis->finished_block = (stat & MANTIS_INT_RISCSTAT) >> 28; | ||
137 | tasklet_schedule(&mantis->tasklet); | ||
138 | } | ||
139 | if (stat & MANTIS_INT_I2CDONE) { | ||
140 | dprintk(MANTIS_DEBUG, 0, "<%s>", label[9]); | ||
141 | wake_up(&mantis->i2c_wq); | ||
142 | } | ||
143 | mmwrite(stat, MANTIS_INT_STAT); | ||
144 | stat &= ~(MANTIS_INT_RISCEN | MANTIS_INT_I2CDONE | | ||
145 | MANTIS_INT_I2CRACK | MANTIS_INT_PCMCIA7 | | ||
146 | MANTIS_INT_PCMCIA6 | MANTIS_INT_PCMCIA5 | | ||
147 | MANTIS_INT_PCMCIA4 | MANTIS_INT_PCMCIA3 | | ||
148 | MANTIS_INT_PCMCIA2 | MANTIS_INT_PCMCIA1 | | ||
149 | MANTIS_INT_PCMCIA0 | MANTIS_INT_IRQ1 | | ||
150 | MANTIS_INT_IRQ0 | MANTIS_INT_OCERR | | ||
151 | MANTIS_INT_PABORT | MANTIS_INT_RIPERR | | ||
152 | MANTIS_INT_PPERR | MANTIS_INT_FTRGT | | ||
153 | MANTIS_INT_RISCI); | ||
154 | |||
155 | if (stat) | ||
156 | dprintk(MANTIS_DEBUG, 0, "<Unknown> Stat=<%02x> Mask=<%02x>", stat, mask); | ||
157 | |||
158 | dprintk(MANTIS_DEBUG, 0, "\n"); | ||
159 | return IRQ_HANDLED; | ||
160 | } | ||
161 | |||
162 | static int __devinit mantis_pci_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) | ||
163 | { | ||
164 | struct mantis_pci *mantis; | ||
165 | struct mantis_hwconfig *config; | ||
166 | int err = 0; | ||
167 | |||
168 | mantis = kzalloc(sizeof(struct mantis_pci), GFP_KERNEL); | ||
169 | if (mantis == NULL) { | ||
170 | printk(KERN_ERR "%s ERROR: Out of memory\n", __func__); | ||
171 | err = -ENOMEM; | ||
172 | goto fail0; | ||
173 | } | ||
174 | |||
175 | mantis->num = devs; | ||
176 | mantis->verbose = verbose; | ||
177 | mantis->pdev = pdev; | ||
178 | config = (struct mantis_hwconfig *) pci_id->driver_data; | ||
179 | config->irq_handler = &mantis_irq_handler; | ||
180 | mantis->hwconfig = config; | ||
181 | |||
182 | err = mantis_pci_init(mantis); | ||
183 | if (err) { | ||
184 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis PCI initialization failed <%d>", err); | ||
185 | goto fail1; | ||
186 | } | ||
187 | |||
188 | err = mantis_stream_control(mantis, STREAM_TO_HIF); | ||
189 | if (err < 0) { | ||
190 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis stream control failed <%d>", err); | ||
191 | goto fail1; | ||
192 | } | ||
193 | |||
194 | err = mantis_i2c_init(mantis); | ||
195 | if (err < 0) { | ||
196 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis I2C initialization failed <%d>", err); | ||
197 | goto fail2; | ||
198 | } | ||
199 | |||
200 | err = mantis_get_mac(mantis); | ||
201 | if (err < 0) { | ||
202 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis MAC address read failed <%d>", err); | ||
203 | goto fail2; | ||
204 | } | ||
205 | |||
206 | err = mantis_dma_init(mantis); | ||
207 | if (err < 0) { | ||
208 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DMA initialization failed <%d>", err); | ||
209 | goto fail3; | ||
210 | } | ||
211 | |||
212 | err = mantis_dvb_init(mantis); | ||
213 | if (err < 0) { | ||
214 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DVB initialization failed <%d>", err); | ||
215 | goto fail4; | ||
216 | } | ||
217 | err = mantis_uart_init(mantis); | ||
218 | if (err < 0) { | ||
219 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART initialization failed <%d>", err); | ||
220 | goto fail6; | ||
221 | } | ||
222 | |||
223 | devs++; | ||
224 | |||
225 | return err; | ||
226 | |||
227 | |||
228 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART exit! <%d>", err); | ||
229 | mantis_uart_exit(mantis); | ||
230 | |||
231 | fail6: | ||
232 | fail4: | ||
233 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DMA exit! <%d>", err); | ||
234 | mantis_dma_exit(mantis); | ||
235 | |||
236 | fail3: | ||
237 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis I2C exit! <%d>", err); | ||
238 | mantis_i2c_exit(mantis); | ||
239 | |||
240 | fail2: | ||
241 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis PCI exit! <%d>", err); | ||
242 | mantis_pci_exit(mantis); | ||
243 | |||
244 | fail1: | ||
245 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis free! <%d>", err); | ||
246 | kfree(mantis); | ||
247 | |||
248 | fail0: | ||
249 | return err; | ||
250 | } | ||
251 | |||
252 | static void __devexit mantis_pci_remove(struct pci_dev *pdev) | ||
253 | { | ||
254 | struct mantis_pci *mantis = pci_get_drvdata(pdev); | ||
255 | |||
256 | if (mantis) { | ||
257 | |||
258 | mantis_uart_exit(mantis); | ||
259 | mantis_dvb_exit(mantis); | ||
260 | mantis_dma_exit(mantis); | ||
261 | mantis_i2c_exit(mantis); | ||
262 | mantis_pci_exit(mantis); | ||
263 | kfree(mantis); | ||
264 | } | ||
265 | return; | ||
266 | } | ||
267 | |||
268 | static struct pci_device_id mantis_pci_table[] = { | ||
269 | MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_1033_DVB_S, &vp1033_config), | ||
270 | MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_1034_DVB_S, &vp1034_config), | ||
271 | MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_1041_DVB_S2, &vp1041_config), | ||
272 | MAKE_ENTRY(TECHNISAT, SKYSTAR_HD2_10, &vp1041_config), | ||
273 | MAKE_ENTRY(TECHNISAT, SKYSTAR_HD2_20, &vp1041_config), | ||
274 | MAKE_ENTRY(TERRATEC, CINERGY_S2_PCI_HD, &vp1041_config), | ||
275 | MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_2033_DVB_C, &vp2033_config), | ||
276 | MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_2040_DVB_C, &vp2040_config), | ||
277 | MAKE_ENTRY(TECHNISAT, CABLESTAR_HD2, &vp2040_config), | ||
278 | MAKE_ENTRY(TERRATEC, CINERGY_C, &vp2033_config), | ||
279 | MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_3030_DVB_T, &vp3030_config), | ||
280 | { } | ||
281 | }; | ||
282 | |||
283 | static struct pci_driver mantis_pci_driver = { | ||
284 | .name = DRIVER_NAME, | ||
285 | .id_table = mantis_pci_table, | ||
286 | .probe = mantis_pci_probe, | ||
287 | .remove = mantis_pci_remove, | ||
288 | }; | ||
289 | |||
290 | static int __devinit mantis_init(void) | ||
291 | { | ||
292 | return pci_register_driver(&mantis_pci_driver); | ||
293 | } | ||
294 | |||
295 | static void __devexit mantis_exit(void) | ||
296 | { | ||
297 | return pci_unregister_driver(&mantis_pci_driver); | ||
298 | } | ||
299 | |||
300 | module_init(mantis_init); | ||
301 | module_exit(mantis_exit); | ||
302 | |||
303 | MODULE_DESCRIPTION("MANTIS driver"); | ||
304 | MODULE_AUTHOR("Manu Abraham"); | ||
305 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/media/dvb/mantis/mantis_common.h b/drivers/media/dvb/mantis/mantis_common.h new file mode 100644 index 000000000000..d0b645a483c9 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_common.h | |||
@@ -0,0 +1,179 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_COMMON_H | ||
22 | #define __MANTIS_COMMON_H | ||
23 | |||
24 | #include <linux/mutex.h> | ||
25 | #include <linux/workqueue.h> | ||
26 | |||
27 | #include "mantis_uart.h" | ||
28 | |||
29 | #include "mantis_link.h" | ||
30 | |||
31 | #define MANTIS_ERROR 0 | ||
32 | #define MANTIS_NOTICE 1 | ||
33 | #define MANTIS_INFO 2 | ||
34 | #define MANTIS_DEBUG 3 | ||
35 | #define MANTIS_TMG 9 | ||
36 | |||
37 | #define dprintk(y, z, format, arg...) do { \ | ||
38 | if (z) { \ | ||
39 | if ((mantis->verbose > MANTIS_ERROR) && (mantis->verbose > y)) \ | ||
40 | printk(KERN_ERR "%s (%d): " format "\n" , __func__ , mantis->num , ##arg); \ | ||
41 | else if ((mantis->verbose > MANTIS_NOTICE) && (mantis->verbose > y)) \ | ||
42 | printk(KERN_NOTICE "%s (%d): " format "\n" , __func__ , mantis->num , ##arg); \ | ||
43 | else if ((mantis->verbose > MANTIS_INFO) && (mantis->verbose > y)) \ | ||
44 | printk(KERN_INFO "%s (%d): " format "\n" , __func__ , mantis->num , ##arg); \ | ||
45 | else if ((mantis->verbose > MANTIS_DEBUG) && (mantis->verbose > y)) \ | ||
46 | printk(KERN_DEBUG "%s (%d): " format "\n" , __func__ , mantis->num , ##arg); \ | ||
47 | else if ((mantis->verbose > MANTIS_TMG) && (mantis->verbose > y)) \ | ||
48 | printk(KERN_DEBUG "%s (%d): " format "\n" , __func__ , mantis->num , ##arg); \ | ||
49 | } else { \ | ||
50 | if (mantis->verbose > y) \ | ||
51 | printk(format , ##arg); \ | ||
52 | } \ | ||
53 | } while(0) | ||
54 | |||
55 | #define mwrite(dat, addr) writel((dat), addr) | ||
56 | #define mread(addr) readl(addr) | ||
57 | |||
58 | #define mmwrite(dat, addr) mwrite((dat), (mantis->mmio + (addr))) | ||
59 | #define mmread(addr) mread(mantis->mmio + (addr)) | ||
60 | |||
61 | #define MANTIS_TS_188 0 | ||
62 | #define MANTIS_TS_204 1 | ||
63 | |||
64 | #define TWINHAN_TECHNOLOGIES 0x1822 | ||
65 | #define MANTIS 0x4e35 | ||
66 | |||
67 | #define TECHNISAT 0x1ae4 | ||
68 | #define TERRATEC 0x153b | ||
69 | |||
70 | #define MAKE_ENTRY(__subven, __subdev, __configptr) { \ | ||
71 | .vendor = TWINHAN_TECHNOLOGIES, \ | ||
72 | .device = MANTIS, \ | ||
73 | .subvendor = (__subven), \ | ||
74 | .subdevice = (__subdev), \ | ||
75 | .driver_data = (unsigned long) (__configptr) \ | ||
76 | } | ||
77 | |||
78 | enum mantis_i2c_mode { | ||
79 | MANTIS_PAGE_MODE = 0, | ||
80 | MANTIS_BYTE_MODE, | ||
81 | }; | ||
82 | |||
83 | struct mantis_pci; | ||
84 | |||
85 | struct mantis_hwconfig { | ||
86 | char *model_name; | ||
87 | char *dev_type; | ||
88 | u32 ts_size; | ||
89 | |||
90 | enum mantis_baud baud_rate; | ||
91 | enum mantis_parity parity; | ||
92 | u32 bytes; | ||
93 | |||
94 | irqreturn_t (*irq_handler)(int irq, void *dev_id); | ||
95 | int (*frontend_init)(struct mantis_pci *mantis, struct dvb_frontend *fe); | ||
96 | |||
97 | u8 power; | ||
98 | u8 reset; | ||
99 | |||
100 | enum mantis_i2c_mode i2c_mode; | ||
101 | }; | ||
102 | |||
103 | struct mantis_pci { | ||
104 | unsigned int verbose; | ||
105 | |||
106 | /* PCI stuff */ | ||
107 | u16 vendor_id; | ||
108 | u16 device_id; | ||
109 | u16 subsystem_vendor; | ||
110 | u16 subsystem_device; | ||
111 | |||
112 | u8 latency; | ||
113 | |||
114 | struct pci_dev *pdev; | ||
115 | |||
116 | unsigned long mantis_addr; | ||
117 | void __iomem *mmio; | ||
118 | |||
119 | u8 irq; | ||
120 | u8 revision; | ||
121 | |||
122 | unsigned int num; | ||
123 | |||
124 | /* RISC Core */ | ||
125 | u32 finished_block; | ||
126 | u32 last_block; | ||
127 | u32 line_bytes; | ||
128 | u32 line_count; | ||
129 | u32 risc_pos; | ||
130 | u8 *buf_cpu; | ||
131 | dma_addr_t buf_dma; | ||
132 | u32 *risc_cpu; | ||
133 | dma_addr_t risc_dma; | ||
134 | |||
135 | struct tasklet_struct tasklet; | ||
136 | |||
137 | struct i2c_adapter adapter; | ||
138 | int i2c_rc; | ||
139 | wait_queue_head_t i2c_wq; | ||
140 | struct mutex i2c_lock; | ||
141 | |||
142 | /* DVB stuff */ | ||
143 | struct dvb_adapter dvb_adapter; | ||
144 | struct dvb_frontend *fe; | ||
145 | struct dvb_demux demux; | ||
146 | struct dmxdev dmxdev; | ||
147 | struct dmx_frontend fe_hw; | ||
148 | struct dmx_frontend fe_mem; | ||
149 | struct dvb_net dvbnet; | ||
150 | |||
151 | u8 feeds; | ||
152 | |||
153 | struct mantis_hwconfig *hwconfig; | ||
154 | |||
155 | u32 mantis_int_stat; | ||
156 | u32 mantis_int_mask; | ||
157 | |||
158 | /* board specific */ | ||
159 | u8 mac_address[8]; | ||
160 | u32 sub_vendor_id; | ||
161 | u32 sub_device_id; | ||
162 | |||
163 | /* A12 A13 A14 */ | ||
164 | u32 gpio_status; | ||
165 | |||
166 | u32 gpif_status; | ||
167 | |||
168 | struct mantis_ca *mantis_ca; | ||
169 | |||
170 | wait_queue_head_t uart_wq; | ||
171 | struct work_struct uart_work; | ||
172 | spinlock_t uart_lock; | ||
173 | |||
174 | struct input_dev *rc; | ||
175 | }; | ||
176 | |||
177 | #define MANTIS_HIF_STATUS (mantis->gpio_status) | ||
178 | |||
179 | #endif /* __MANTIS_COMMON_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_core.c b/drivers/media/dvb/mantis/mantis_core.c new file mode 100644 index 000000000000..8113b23ce448 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_core.c | |||
@@ -0,0 +1,238 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include "mantis_common.h" | ||
22 | #include "mantis_core.h" | ||
23 | #include "mantis_vp1033.h" | ||
24 | #include "mantis_vp1034.h" | ||
25 | #include "mantis_vp1041.h" | ||
26 | #include "mantis_vp2033.h" | ||
27 | #include "mantis_vp2040.h" | ||
28 | #include "mantis_vp3030.h" | ||
29 | |||
30 | static int read_eeprom_byte(struct mantis_pci *mantis, u8 *data, u8 length) | ||
31 | { | ||
32 | int err; | ||
33 | struct i2c_msg msg[] = { | ||
34 | { | ||
35 | .addr = 0x50, | ||
36 | .flags = 0, | ||
37 | .buf = data, | ||
38 | .len = 1 | ||
39 | }, { | ||
40 | .addr = 0x50, | ||
41 | .flags = I2C_M_RD, | ||
42 | .buf = data, | ||
43 | .len = length | ||
44 | }, | ||
45 | }; | ||
46 | |||
47 | err = i2c_transfer(&mantis->adapter, msg, 2); | ||
48 | if (err < 0) { | ||
49 | dprintk(verbose, MANTIS_ERROR, 1, | ||
50 | "ERROR: i2c read: < err=%i d0=0x%02x d1=0x%02x >", | ||
51 | err, data[0], data[1]); | ||
52 | |||
53 | return err; | ||
54 | } | ||
55 | |||
56 | return 0; | ||
57 | } | ||
58 | |||
59 | static int write_eeprom_byte(struct mantis_pci *mantis, u8 *data, u8 length) | ||
60 | { | ||
61 | int err; | ||
62 | |||
63 | struct i2c_msg msg = { | ||
64 | .addr = 0x50, | ||
65 | .flags = 0, | ||
66 | .buf = data, | ||
67 | .len = length | ||
68 | }; | ||
69 | |||
70 | err = i2c_transfer(&mantis->adapter, &msg, 1); | ||
71 | if (err < 0) { | ||
72 | dprintk(verbose, MANTIS_ERROR, 1, | ||
73 | "ERROR: i2c write: < err=%i length=0x%02x d0=0x%02x, d1=0x%02x >", | ||
74 | err, length, data[0], data[1]); | ||
75 | |||
76 | return err; | ||
77 | } | ||
78 | |||
79 | return 0; | ||
80 | } | ||
81 | |||
82 | static int get_mac_address(struct mantis_pci *mantis) | ||
83 | { | ||
84 | int err; | ||
85 | |||
86 | mantis->mac_address[0] = 0x08; | ||
87 | err = read_eeprom_byte(mantis, &mantis->mac_address[0], 6); | ||
88 | if (err < 0) { | ||
89 | dprintk(verbose, MANTIS_ERROR, 1, "Mantis EEPROM read error"); | ||
90 | |||
91 | return err; | ||
92 | } | ||
93 | dprintk(verbose, MANTIS_ERROR, 0, | ||
94 | " MAC Address=[%02x:%02x:%02x:%02x:%02x:%02x]\n", | ||
95 | mantis->mac_address[0], mantis->mac_address[1], | ||
96 | mantis->mac_address[2], mantis->mac_address[3], | ||
97 | mantis->mac_address[4], mantis->mac_address[5]); | ||
98 | |||
99 | return 0; | ||
100 | } | ||
101 | |||
102 | #define MANTIS_MODEL_UNKNOWN "UNKNOWN" | ||
103 | #define MANTIS_DEV_UNKNOWN "UNKNOWN" | ||
104 | |||
105 | struct mantis_hwconfig unknown_device = { | ||
106 | .model_name = MANTIS_MODEL_UNKNOWN, | ||
107 | .dev_type = MANTIS_DEV_UNKNOWN, | ||
108 | }; | ||
109 | |||
110 | static void mantis_load_config(struct mantis_pci *mantis) | ||
111 | { | ||
112 | switch (mantis->subsystem_device) { | ||
113 | case MANTIS_VP_1033_DVB_S: /* VP-1033 */ | ||
114 | mantis->hwconfig = &vp1033_mantis_config; | ||
115 | break; | ||
116 | case MANTIS_VP_1034_DVB_S: /* VP-1034 */ | ||
117 | mantis->hwconfig = &vp1034_mantis_config; | ||
118 | break; | ||
119 | case MANTIS_VP_1041_DVB_S2: /* VP-1041 */ | ||
120 | case TECHNISAT_SKYSTAR_HD2: | ||
121 | mantis->hwconfig = &vp1041_mantis_config; | ||
122 | break; | ||
123 | case MANTIS_VP_2033_DVB_C: /* VP-2033 */ | ||
124 | mantis->hwconfig = &vp2033_mantis_config; | ||
125 | break; | ||
126 | case MANTIS_VP_2040_DVB_C: /* VP-2040 */ | ||
127 | case TERRATEC_CINERGY_C_PCI: /* VP-2040 clone */ | ||
128 | case TECHNISAT_CABLESTAR_HD2: | ||
129 | mantis->hwconfig = &vp2040_mantis_config; | ||
130 | break; | ||
131 | case MANTIS_VP_3030_DVB_T: /* VP-3030 */ | ||
132 | mantis->hwconfig = &vp3030_mantis_config; | ||
133 | break; | ||
134 | default: | ||
135 | mantis->hwconfig = &unknown_device; | ||
136 | break; | ||
137 | } | ||
138 | } | ||
139 | |||
140 | int mantis_core_init(struct mantis_pci *mantis) | ||
141 | { | ||
142 | int err = 0; | ||
143 | |||
144 | mantis_load_config(mantis); | ||
145 | dprintk(verbose, MANTIS_ERROR, 0, "found a %s PCI %s device on (%02x:%02x.%x),\n", | ||
146 | mantis->hwconfig->model_name, mantis->hwconfig->dev_type, | ||
147 | mantis->pdev->bus->number, PCI_SLOT(mantis->pdev->devfn), PCI_FUNC(mantis->pdev->devfn)); | ||
148 | dprintk(verbose, MANTIS_ERROR, 0, " Mantis Rev %d [%04x:%04x], ", | ||
149 | mantis->revision, | ||
150 | mantis->subsystem_vendor, mantis->subsystem_device); | ||
151 | dprintk(verbose, MANTIS_ERROR, 0, | ||
152 | "irq: %d, latency: %d\n memory: 0x%lx, mmio: 0x%p\n", | ||
153 | mantis->pdev->irq, mantis->latency, | ||
154 | mantis->mantis_addr, mantis->mantis_mmio); | ||
155 | |||
156 | err = mantis_i2c_init(mantis); | ||
157 | if (err < 0) { | ||
158 | dprintk(verbose, MANTIS_ERROR, 1, "Mantis I2C init failed"); | ||
159 | return err; | ||
160 | } | ||
161 | err = get_mac_address(mantis); | ||
162 | if (err < 0) { | ||
163 | dprintk(verbose, MANTIS_ERROR, 1, "get MAC address failed"); | ||
164 | return err; | ||
165 | } | ||
166 | err = mantis_dma_init(mantis); | ||
167 | if (err < 0) { | ||
168 | dprintk(verbose, MANTIS_ERROR, 1, "Mantis DMA init failed"); | ||
169 | return err; | ||
170 | } | ||
171 | err = mantis_dvb_init(mantis); | ||
172 | if (err < 0) { | ||
173 | dprintk(verbose, MANTIS_DEBUG, 1, "Mantis DVB init failed"); | ||
174 | return err; | ||
175 | } | ||
176 | err = mantis_uart_init(mantis); | ||
177 | if (err < 0) { | ||
178 | dprintk(verbose, MANTIS_DEBUG, 1, "Mantis UART init failed"); | ||
179 | return err; | ||
180 | } | ||
181 | |||
182 | return 0; | ||
183 | } | ||
184 | |||
185 | int mantis_core_exit(struct mantis_pci *mantis) | ||
186 | { | ||
187 | mantis_dma_stop(mantis); | ||
188 | dprintk(verbose, MANTIS_ERROR, 1, "DMA engine stopping"); | ||
189 | |||
190 | mantis_uart_exit(mantis); | ||
191 | dprintk(verbose, MANTIS_ERROR, 1, "UART exit failed"); | ||
192 | |||
193 | if (mantis_dma_exit(mantis) < 0) | ||
194 | dprintk(verbose, MANTIS_ERROR, 1, "DMA exit failed"); | ||
195 | if (mantis_dvb_exit(mantis) < 0) | ||
196 | dprintk(verbose, MANTIS_ERROR, 1, "DVB exit failed"); | ||
197 | if (mantis_i2c_exit(mantis) < 0) | ||
198 | dprintk(verbose, MANTIS_ERROR, 1, "I2C adapter delete.. failed"); | ||
199 | |||
200 | return 0; | ||
201 | } | ||
202 | |||
203 | /* Turn the given bit on or off. */ | ||
204 | void gpio_set_bits(struct mantis_pci *mantis, u32 bitpos, u8 value) | ||
205 | { | ||
206 | u32 cur; | ||
207 | |||
208 | cur = mmread(MANTIS_GPIF_ADDR); | ||
209 | if (value) | ||
210 | mantis->gpio_status = cur | (1 << bitpos); | ||
211 | else | ||
212 | mantis->gpio_status = cur & (~(1 << bitpos)); | ||
213 | |||
214 | mmwrite(mantis->gpio_status, MANTIS_GPIF_ADDR); | ||
215 | mmwrite(0x00, MANTIS_GPIF_DOUT); | ||
216 | udelay(100); | ||
217 | } | ||
218 | |||
219 | /* direction = 0 , no CI passthrough ; 1 , CI passthrough */ | ||
220 | void mantis_set_direction(struct mantis_pci *mantis, int direction) | ||
221 | { | ||
222 | u32 reg; | ||
223 | |||
224 | reg = mmread(0x28); | ||
225 | dprintk(verbose, MANTIS_DEBUG, 1, "TS direction setup"); | ||
226 | if (direction == 0x01) { | ||
227 | /* to CI */ | ||
228 | reg |= 0x04; | ||
229 | mmwrite(reg, 0x28); | ||
230 | reg &= 0xff - 0x04; | ||
231 | mmwrite(reg, 0x28); | ||
232 | } else { | ||
233 | reg &= 0xff - 0x04; | ||
234 | mmwrite(reg, 0x28); | ||
235 | reg |= 0x04; | ||
236 | mmwrite(reg, 0x28); | ||
237 | } | ||
238 | } | ||
diff --git a/drivers/media/dvb/mantis/mantis_core.h b/drivers/media/dvb/mantis/mantis_core.h new file mode 100644 index 000000000000..833ee42e694e --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_core.h | |||
@@ -0,0 +1,57 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_CORE_H | ||
22 | #define __MANTIS_CORE_H | ||
23 | |||
24 | #include "mantis_common.h" | ||
25 | |||
26 | |||
27 | #define FE_TYPE_SAT 0 | ||
28 | #define FE_TYPE_CAB 1 | ||
29 | #define FE_TYPE_TER 2 | ||
30 | |||
31 | #define FE_TYPE_TS204 0 | ||
32 | #define FE_TYPE_TS188 1 | ||
33 | |||
34 | |||
35 | struct vendorname { | ||
36 | u8 *sub_vendor_name; | ||
37 | u32 sub_vendor_id; | ||
38 | }; | ||
39 | |||
40 | struct devicetype { | ||
41 | u8 *sub_device_name; | ||
42 | u32 sub_device_id; | ||
43 | u8 device_type; | ||
44 | u32 type_flags; | ||
45 | }; | ||
46 | |||
47 | |||
48 | extern int mantis_dma_init(struct mantis_pci *mantis); | ||
49 | extern int mantis_dma_exit(struct mantis_pci *mantis); | ||
50 | extern void mantis_dma_start(struct mantis_pci *mantis); | ||
51 | extern void mantis_dma_stop(struct mantis_pci *mantis); | ||
52 | extern int mantis_i2c_init(struct mantis_pci *mantis); | ||
53 | extern int mantis_i2c_exit(struct mantis_pci *mantis); | ||
54 | extern int mantis_core_init(struct mantis_pci *mantis); | ||
55 | extern int mantis_core_exit(struct mantis_pci *mantis); | ||
56 | |||
57 | #endif /* __MANTIS_CORE_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_dma.c b/drivers/media/dvb/mantis/mantis_dma.c new file mode 100644 index 000000000000..46202a4012aa --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_dma.c | |||
@@ -0,0 +1,256 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/kernel.h> | ||
22 | #include <asm/page.h> | ||
23 | #include <linux/vmalloc.h> | ||
24 | #include <linux/pci.h> | ||
25 | |||
26 | #include <asm/irq.h> | ||
27 | #include <linux/signal.h> | ||
28 | #include <linux/sched.h> | ||
29 | #include <linux/interrupt.h> | ||
30 | |||
31 | #include "dmxdev.h" | ||
32 | #include "dvbdev.h" | ||
33 | #include "dvb_demux.h" | ||
34 | #include "dvb_frontend.h" | ||
35 | #include "dvb_net.h" | ||
36 | |||
37 | #include "mantis_common.h" | ||
38 | #include "mantis_reg.h" | ||
39 | #include "mantis_dma.h" | ||
40 | |||
41 | #define RISC_WRITE (0x01 << 28) | ||
42 | #define RISC_JUMP (0x07 << 28) | ||
43 | #define RISC_IRQ (0x01 << 24) | ||
44 | |||
45 | #define RISC_STATUS(status) ((((~status) & 0x0f) << 20) | ((status & 0x0f) << 16)) | ||
46 | #define RISC_FLUSH() (mantis->risc_pos = 0) | ||
47 | #define RISC_INSTR(opcode) (mantis->risc_cpu[mantis->risc_pos++] = cpu_to_le32(opcode)) | ||
48 | |||
49 | #define MANTIS_BUF_SIZE (64 * 1024) | ||
50 | #define MANTIS_BLOCK_BYTES (MANTIS_BUF_SIZE >> 4) | ||
51 | #define MANTIS_BLOCK_COUNT (1 << 4) | ||
52 | #define MANTIS_RISC_SIZE PAGE_SIZE | ||
53 | |||
54 | int mantis_dma_exit(struct mantis_pci *mantis) | ||
55 | { | ||
56 | if (mantis->buf_cpu) { | ||
57 | dprintk(MANTIS_ERROR, 1, | ||
58 | "DMA=0x%lx cpu=0x%p size=%d", | ||
59 | (unsigned long) mantis->buf_dma, | ||
60 | mantis->buf_cpu, | ||
61 | MANTIS_BUF_SIZE); | ||
62 | |||
63 | pci_free_consistent(mantis->pdev, MANTIS_BUF_SIZE, | ||
64 | mantis->buf_cpu, mantis->buf_dma); | ||
65 | |||
66 | mantis->buf_cpu = NULL; | ||
67 | } | ||
68 | if (mantis->risc_cpu) { | ||
69 | dprintk(MANTIS_ERROR, 1, | ||
70 | "RISC=0x%lx cpu=0x%p size=%lx", | ||
71 | (unsigned long) mantis->risc_dma, | ||
72 | mantis->risc_cpu, | ||
73 | MANTIS_RISC_SIZE); | ||
74 | |||
75 | pci_free_consistent(mantis->pdev, MANTIS_RISC_SIZE, | ||
76 | mantis->risc_cpu, mantis->risc_dma); | ||
77 | |||
78 | mantis->risc_cpu = NULL; | ||
79 | } | ||
80 | |||
81 | return 0; | ||
82 | } | ||
83 | EXPORT_SYMBOL_GPL(mantis_dma_exit); | ||
84 | |||
85 | static inline int mantis_alloc_buffers(struct mantis_pci *mantis) | ||
86 | { | ||
87 | if (!mantis->buf_cpu) { | ||
88 | mantis->buf_cpu = pci_alloc_consistent(mantis->pdev, | ||
89 | MANTIS_BUF_SIZE, | ||
90 | &mantis->buf_dma); | ||
91 | if (!mantis->buf_cpu) { | ||
92 | dprintk(MANTIS_ERROR, 1, | ||
93 | "DMA buffer allocation failed"); | ||
94 | |||
95 | goto err; | ||
96 | } | ||
97 | dprintk(MANTIS_ERROR, 1, | ||
98 | "DMA=0x%lx cpu=0x%p size=%d", | ||
99 | (unsigned long) mantis->buf_dma, | ||
100 | mantis->buf_cpu, MANTIS_BUF_SIZE); | ||
101 | } | ||
102 | if (!mantis->risc_cpu) { | ||
103 | mantis->risc_cpu = pci_alloc_consistent(mantis->pdev, | ||
104 | MANTIS_RISC_SIZE, | ||
105 | &mantis->risc_dma); | ||
106 | |||
107 | if (!mantis->risc_cpu) { | ||
108 | dprintk(MANTIS_ERROR, 1, | ||
109 | "RISC program allocation failed"); | ||
110 | |||
111 | mantis_dma_exit(mantis); | ||
112 | |||
113 | goto err; | ||
114 | } | ||
115 | dprintk(MANTIS_ERROR, 1, | ||
116 | "RISC=0x%lx cpu=0x%p size=%lx", | ||
117 | (unsigned long) mantis->risc_dma, | ||
118 | mantis->risc_cpu, MANTIS_RISC_SIZE); | ||
119 | } | ||
120 | |||
121 | return 0; | ||
122 | err: | ||
123 | dprintk(MANTIS_ERROR, 1, "Out of memory (?) ....."); | ||
124 | return -ENOMEM; | ||
125 | } | ||
126 | |||
127 | static inline int mantis_calc_lines(struct mantis_pci *mantis) | ||
128 | { | ||
129 | mantis->line_bytes = MANTIS_BLOCK_BYTES; | ||
130 | mantis->line_count = MANTIS_BLOCK_COUNT; | ||
131 | |||
132 | while (mantis->line_bytes > 4095) { | ||
133 | mantis->line_bytes >>= 1; | ||
134 | mantis->line_count <<= 1; | ||
135 | } | ||
136 | |||
137 | dprintk(MANTIS_DEBUG, 1, "Mantis RISC block bytes=[%d], line bytes=[%d], line count=[%d]", | ||
138 | MANTIS_BLOCK_BYTES, mantis->line_bytes, mantis->line_count); | ||
139 | |||
140 | if (mantis->line_count > 255) { | ||
141 | dprintk(MANTIS_ERROR, 1, "Buffer size error"); | ||
142 | return -EINVAL; | ||
143 | } | ||
144 | |||
145 | return 0; | ||
146 | } | ||
147 | |||
148 | int mantis_dma_init(struct mantis_pci *mantis) | ||
149 | { | ||
150 | int err = 0; | ||
151 | |||
152 | dprintk(MANTIS_DEBUG, 1, "Mantis DMA init"); | ||
153 | if (mantis_alloc_buffers(mantis) < 0) { | ||
154 | dprintk(MANTIS_ERROR, 1, "Error allocating DMA buffer"); | ||
155 | |||
156 | /* Stop RISC Engine */ | ||
157 | mmwrite(0, MANTIS_DMA_CTL); | ||
158 | |||
159 | goto err; | ||
160 | } | ||
161 | err = mantis_calc_lines(mantis); | ||
162 | if (err < 0) { | ||
163 | dprintk(MANTIS_ERROR, 1, "Mantis calc lines failed"); | ||
164 | |||
165 | goto err; | ||
166 | } | ||
167 | |||
168 | return 0; | ||
169 | err: | ||
170 | return err; | ||
171 | } | ||
172 | EXPORT_SYMBOL_GPL(mantis_dma_init); | ||
173 | |||
174 | static inline void mantis_risc_program(struct mantis_pci *mantis) | ||
175 | { | ||
176 | u32 buf_pos = 0; | ||
177 | u32 line; | ||
178 | |||
179 | dprintk(MANTIS_DEBUG, 1, "Mantis create RISC program"); | ||
180 | RISC_FLUSH(); | ||
181 | |||
182 | dprintk(MANTIS_DEBUG, 1, "risc len lines %u, bytes per line %u", | ||
183 | mantis->line_count, mantis->line_bytes); | ||
184 | |||
185 | for (line = 0; line < mantis->line_count; line++) { | ||
186 | dprintk(MANTIS_DEBUG, 1, "RISC PROG line=[%d]", line); | ||
187 | if (!(buf_pos % MANTIS_BLOCK_BYTES)) { | ||
188 | RISC_INSTR(RISC_WRITE | | ||
189 | RISC_IRQ | | ||
190 | RISC_STATUS(((buf_pos / MANTIS_BLOCK_BYTES) + | ||
191 | (MANTIS_BLOCK_COUNT - 1)) % | ||
192 | MANTIS_BLOCK_COUNT) | | ||
193 | mantis->line_bytes); | ||
194 | } else { | ||
195 | RISC_INSTR(RISC_WRITE | mantis->line_bytes); | ||
196 | } | ||
197 | RISC_INSTR(mantis->buf_dma + buf_pos); | ||
198 | buf_pos += mantis->line_bytes; | ||
199 | } | ||
200 | RISC_INSTR(RISC_JUMP); | ||
201 | RISC_INSTR(mantis->risc_dma); | ||
202 | } | ||
203 | |||
204 | void mantis_dma_start(struct mantis_pci *mantis) | ||
205 | { | ||
206 | dprintk(MANTIS_DEBUG, 1, "Mantis Start DMA engine"); | ||
207 | |||
208 | mantis_risc_program(mantis); | ||
209 | mmwrite(mantis->risc_dma, MANTIS_RISC_START); | ||
210 | mmwrite(mmread(MANTIS_GPIF_ADDR) | MANTIS_GPIF_HIFRDWRN, MANTIS_GPIF_ADDR); | ||
211 | |||
212 | mmwrite(0, MANTIS_DMA_CTL); | ||
213 | mantis->last_block = mantis->finished_block = 0; | ||
214 | |||
215 | mmwrite(mmread(MANTIS_INT_MASK) | MANTIS_INT_RISCI, MANTIS_INT_MASK); | ||
216 | |||
217 | mmwrite(MANTIS_FIFO_EN | MANTIS_DCAP_EN | ||
218 | | MANTIS_RISC_EN, MANTIS_DMA_CTL); | ||
219 | |||
220 | } | ||
221 | |||
222 | void mantis_dma_stop(struct mantis_pci *mantis) | ||
223 | { | ||
224 | u32 stat = 0, mask = 0; | ||
225 | |||
226 | stat = mmread(MANTIS_INT_STAT); | ||
227 | mask = mmread(MANTIS_INT_MASK); | ||
228 | dprintk(MANTIS_DEBUG, 1, "Mantis Stop DMA engine"); | ||
229 | |||
230 | mmwrite((mmread(MANTIS_GPIF_ADDR) & (~(MANTIS_GPIF_HIFRDWRN))), MANTIS_GPIF_ADDR); | ||
231 | |||
232 | mmwrite((mmread(MANTIS_DMA_CTL) & ~(MANTIS_FIFO_EN | | ||
233 | MANTIS_DCAP_EN | | ||
234 | MANTIS_RISC_EN)), MANTIS_DMA_CTL); | ||
235 | |||
236 | mmwrite(mmread(MANTIS_INT_STAT), MANTIS_INT_STAT); | ||
237 | |||
238 | mmwrite(mmread(MANTIS_INT_MASK) & ~(MANTIS_INT_RISCI | | ||
239 | MANTIS_INT_RISCEN), MANTIS_INT_MASK); | ||
240 | } | ||
241 | |||
242 | |||
243 | void mantis_dma_xfer(unsigned long data) | ||
244 | { | ||
245 | struct mantis_pci *mantis = (struct mantis_pci *) data; | ||
246 | struct mantis_hwconfig *config = mantis->hwconfig; | ||
247 | |||
248 | while (mantis->last_block != mantis->finished_block) { | ||
249 | dprintk(MANTIS_DEBUG, 1, "last block=[%d] finished block=[%d]", | ||
250 | mantis->last_block, mantis->finished_block); | ||
251 | |||
252 | (config->ts_size ? dvb_dmx_swfilter_204 : dvb_dmx_swfilter) | ||
253 | (&mantis->demux, &mantis->buf_cpu[mantis->last_block * MANTIS_BLOCK_BYTES], MANTIS_BLOCK_BYTES); | ||
254 | mantis->last_block = (mantis->last_block + 1) % MANTIS_BLOCK_COUNT; | ||
255 | } | ||
256 | } | ||
diff --git a/drivers/media/dvb/mantis/mantis_dma.h b/drivers/media/dvb/mantis/mantis_dma.h new file mode 100644 index 000000000000..6be00fa82094 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_dma.h | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_DMA_H | ||
22 | #define __MANTIS_DMA_H | ||
23 | |||
24 | extern int mantis_dma_init(struct mantis_pci *mantis); | ||
25 | extern int mantis_dma_exit(struct mantis_pci *mantis); | ||
26 | extern void mantis_dma_start(struct mantis_pci *mantis); | ||
27 | extern void mantis_dma_stop(struct mantis_pci *mantis); | ||
28 | extern void mantis_dma_xfer(unsigned long data); | ||
29 | |||
30 | #endif /* __MANTIS_DMA_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_dvb.c b/drivers/media/dvb/mantis/mantis_dvb.c new file mode 100644 index 000000000000..99d82eec3b03 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_dvb.c | |||
@@ -0,0 +1,296 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
4 | |||
5 | This program is free software; you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published by | ||
7 | the Free Software Foundation; either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with this program; if not, write to the Free Software | ||
17 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
18 | */ | ||
19 | |||
20 | #include <linux/kernel.h> | ||
21 | #include <linux/bitops.h> | ||
22 | |||
23 | #include <linux/signal.h> | ||
24 | #include <linux/sched.h> | ||
25 | #include <linux/interrupt.h> | ||
26 | #include <linux/pci.h> | ||
27 | #include <linux/i2c.h> | ||
28 | |||
29 | #include "dmxdev.h" | ||
30 | #include "dvbdev.h" | ||
31 | #include "dvb_demux.h" | ||
32 | #include "dvb_frontend.h" | ||
33 | #include "dvb_net.h" | ||
34 | |||
35 | #include "mantis_common.h" | ||
36 | #include "mantis_dma.h" | ||
37 | #include "mantis_ca.h" | ||
38 | #include "mantis_ioc.h" | ||
39 | #include "mantis_dvb.h" | ||
40 | |||
41 | DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); | ||
42 | |||
43 | int mantis_frontend_power(struct mantis_pci *mantis, enum mantis_power power) | ||
44 | { | ||
45 | struct mantis_hwconfig *config = mantis->hwconfig; | ||
46 | |||
47 | switch (power) { | ||
48 | case POWER_ON: | ||
49 | dprintk(MANTIS_DEBUG, 1, "Power ON"); | ||
50 | gpio_set_bits(mantis, config->power, POWER_ON); | ||
51 | msleep(100); | ||
52 | gpio_set_bits(mantis, config->power, POWER_ON); | ||
53 | msleep(100); | ||
54 | break; | ||
55 | |||
56 | case POWER_OFF: | ||
57 | dprintk(MANTIS_DEBUG, 1, "Power OFF"); | ||
58 | gpio_set_bits(mantis, config->power, POWER_OFF); | ||
59 | msleep(100); | ||
60 | break; | ||
61 | |||
62 | default: | ||
63 | dprintk(MANTIS_DEBUG, 1, "Unknown state <%02x>", power); | ||
64 | return -1; | ||
65 | } | ||
66 | |||
67 | return 0; | ||
68 | } | ||
69 | EXPORT_SYMBOL_GPL(mantis_frontend_power); | ||
70 | |||
71 | void mantis_frontend_soft_reset(struct mantis_pci *mantis) | ||
72 | { | ||
73 | struct mantis_hwconfig *config = mantis->hwconfig; | ||
74 | |||
75 | dprintk(MANTIS_DEBUG, 1, "Frontend RESET"); | ||
76 | gpio_set_bits(mantis, config->reset, 0); | ||
77 | msleep(100); | ||
78 | gpio_set_bits(mantis, config->reset, 0); | ||
79 | msleep(100); | ||
80 | gpio_set_bits(mantis, config->reset, 1); | ||
81 | msleep(100); | ||
82 | gpio_set_bits(mantis, config->reset, 1); | ||
83 | msleep(100); | ||
84 | |||
85 | return; | ||
86 | } | ||
87 | EXPORT_SYMBOL_GPL(mantis_frontend_soft_reset); | ||
88 | |||
89 | static int mantis_frontend_shutdown(struct mantis_pci *mantis) | ||
90 | { | ||
91 | int err; | ||
92 | |||
93 | mantis_frontend_soft_reset(mantis); | ||
94 | err = mantis_frontend_power(mantis, POWER_OFF); | ||
95 | if (err != 0) { | ||
96 | dprintk(MANTIS_ERROR, 1, "Frontend POWER OFF failed! <%d>", err); | ||
97 | return 1; | ||
98 | } | ||
99 | |||
100 | return 0; | ||
101 | } | ||
102 | |||
103 | static int mantis_dvb_start_feed(struct dvb_demux_feed *dvbdmxfeed) | ||
104 | { | ||
105 | struct dvb_demux *dvbdmx = dvbdmxfeed->demux; | ||
106 | struct mantis_pci *mantis = dvbdmx->priv; | ||
107 | |||
108 | dprintk(MANTIS_DEBUG, 1, "Mantis DVB Start feed"); | ||
109 | if (!dvbdmx->dmx.frontend) { | ||
110 | dprintk(MANTIS_DEBUG, 1, "no frontend ?"); | ||
111 | return -EINVAL; | ||
112 | } | ||
113 | |||
114 | mantis->feeds++; | ||
115 | dprintk(MANTIS_DEBUG, 1, "mantis start feed, feeds=%d", mantis->feeds); | ||
116 | |||
117 | if (mantis->feeds == 1) { | ||
118 | dprintk(MANTIS_DEBUG, 1, "mantis start feed & dma"); | ||
119 | mantis_dma_start(mantis); | ||
120 | } | ||
121 | |||
122 | return mantis->feeds; | ||
123 | } | ||
124 | |||
125 | static int mantis_dvb_stop_feed(struct dvb_demux_feed *dvbdmxfeed) | ||
126 | { | ||
127 | struct dvb_demux *dvbdmx = dvbdmxfeed->demux; | ||
128 | struct mantis_pci *mantis = dvbdmx->priv; | ||
129 | |||
130 | dprintk(MANTIS_DEBUG, 1, "Mantis DVB Stop feed"); | ||
131 | if (!dvbdmx->dmx.frontend) { | ||
132 | dprintk(MANTIS_DEBUG, 1, "no frontend ?"); | ||
133 | return -EINVAL; | ||
134 | } | ||
135 | |||
136 | mantis->feeds--; | ||
137 | if (mantis->feeds == 0) { | ||
138 | dprintk(MANTIS_DEBUG, 1, "mantis stop feed and dma"); | ||
139 | mantis_dma_stop(mantis); | ||
140 | } | ||
141 | |||
142 | return 0; | ||
143 | } | ||
144 | |||
145 | int __devinit mantis_dvb_init(struct mantis_pci *mantis) | ||
146 | { | ||
147 | struct mantis_hwconfig *config = mantis->hwconfig; | ||
148 | int result = -1; | ||
149 | |||
150 | dprintk(MANTIS_DEBUG, 1, "dvb_register_adapter"); | ||
151 | |||
152 | result = dvb_register_adapter(&mantis->dvb_adapter, | ||
153 | "Mantis DVB adapter", | ||
154 | THIS_MODULE, | ||
155 | &mantis->pdev->dev, | ||
156 | adapter_nr); | ||
157 | |||
158 | if (result < 0) { | ||
159 | |||
160 | dprintk(MANTIS_ERROR, 1, "Error registering adapter"); | ||
161 | return -ENODEV; | ||
162 | } | ||
163 | |||
164 | mantis->dvb_adapter.priv = mantis; | ||
165 | mantis->demux.dmx.capabilities = DMX_TS_FILTERING | | ||
166 | DMX_SECTION_FILTERING | | ||
167 | DMX_MEMORY_BASED_FILTERING; | ||
168 | |||
169 | mantis->demux.priv = mantis; | ||
170 | mantis->demux.filternum = 256; | ||
171 | mantis->demux.feednum = 256; | ||
172 | mantis->demux.start_feed = mantis_dvb_start_feed; | ||
173 | mantis->demux.stop_feed = mantis_dvb_stop_feed; | ||
174 | mantis->demux.write_to_decoder = NULL; | ||
175 | |||
176 | dprintk(MANTIS_DEBUG, 1, "dvb_dmx_init"); | ||
177 | result = dvb_dmx_init(&mantis->demux); | ||
178 | if (result < 0) { | ||
179 | dprintk(MANTIS_ERROR, 1, "dvb_dmx_init failed, ERROR=%d", result); | ||
180 | |||
181 | goto err0; | ||
182 | } | ||
183 | |||
184 | mantis->dmxdev.filternum = 256; | ||
185 | mantis->dmxdev.demux = &mantis->demux.dmx; | ||
186 | mantis->dmxdev.capabilities = 0; | ||
187 | dprintk(MANTIS_DEBUG, 1, "dvb_dmxdev_init"); | ||
188 | |||
189 | result = dvb_dmxdev_init(&mantis->dmxdev, &mantis->dvb_adapter); | ||
190 | if (result < 0) { | ||
191 | |||
192 | dprintk(MANTIS_ERROR, 1, "dvb_dmxdev_init failed, ERROR=%d", result); | ||
193 | goto err1; | ||
194 | } | ||
195 | |||
196 | mantis->fe_hw.source = DMX_FRONTEND_0; | ||
197 | result = mantis->demux.dmx.add_frontend(&mantis->demux.dmx, &mantis->fe_hw); | ||
198 | if (result < 0) { | ||
199 | |||
200 | dprintk(MANTIS_ERROR, 1, "dvb_dmx_init failed, ERROR=%d", result); | ||
201 | goto err2; | ||
202 | } | ||
203 | |||
204 | mantis->fe_mem.source = DMX_MEMORY_FE; | ||
205 | result = mantis->demux.dmx.add_frontend(&mantis->demux.dmx, &mantis->fe_mem); | ||
206 | if (result < 0) { | ||
207 | dprintk(MANTIS_ERROR, 1, "dvb_dmx_init failed, ERROR=%d", result); | ||
208 | goto err3; | ||
209 | } | ||
210 | |||
211 | result = mantis->demux.dmx.connect_frontend(&mantis->demux.dmx, &mantis->fe_hw); | ||
212 | if (result < 0) { | ||
213 | dprintk(MANTIS_ERROR, 1, "dvb_dmx_init failed, ERROR=%d", result); | ||
214 | goto err4; | ||
215 | } | ||
216 | |||
217 | dvb_net_init(&mantis->dvb_adapter, &mantis->dvbnet, &mantis->demux.dmx); | ||
218 | tasklet_init(&mantis->tasklet, mantis_dma_xfer, (unsigned long) mantis); | ||
219 | if (mantis->hwconfig) { | ||
220 | result = config->frontend_init(mantis, mantis->fe); | ||
221 | if (result < 0) { | ||
222 | dprintk(MANTIS_ERROR, 1, "!!! NO Frontends found !!!"); | ||
223 | goto err5; | ||
224 | } else { | ||
225 | if (mantis->fe == NULL) { | ||
226 | dprintk(MANTIS_ERROR, 1, "FE <NULL>"); | ||
227 | goto err5; | ||
228 | } | ||
229 | |||
230 | if (dvb_register_frontend(&mantis->dvb_adapter, mantis->fe)) { | ||
231 | dprintk(MANTIS_ERROR, 1, "ERROR: Frontend registration failed"); | ||
232 | |||
233 | if (mantis->fe->ops.release) | ||
234 | mantis->fe->ops.release(mantis->fe); | ||
235 | |||
236 | mantis->fe = NULL; | ||
237 | goto err5; | ||
238 | } | ||
239 | } | ||
240 | } | ||
241 | |||
242 | return 0; | ||
243 | |||
244 | /* Error conditions .. */ | ||
245 | err5: | ||
246 | tasklet_kill(&mantis->tasklet); | ||
247 | dvb_net_release(&mantis->dvbnet); | ||
248 | dvb_unregister_frontend(mantis->fe); | ||
249 | dvb_frontend_detach(mantis->fe); | ||
250 | err4: | ||
251 | mantis->demux.dmx.remove_frontend(&mantis->demux.dmx, &mantis->fe_mem); | ||
252 | |||
253 | err3: | ||
254 | mantis->demux.dmx.remove_frontend(&mantis->demux.dmx, &mantis->fe_hw); | ||
255 | |||
256 | err2: | ||
257 | dvb_dmxdev_release(&mantis->dmxdev); | ||
258 | |||
259 | err1: | ||
260 | dvb_dmx_release(&mantis->demux); | ||
261 | |||
262 | err0: | ||
263 | dvb_unregister_adapter(&mantis->dvb_adapter); | ||
264 | |||
265 | return result; | ||
266 | } | ||
267 | EXPORT_SYMBOL_GPL(mantis_dvb_init); | ||
268 | |||
269 | int __devexit mantis_dvb_exit(struct mantis_pci *mantis) | ||
270 | { | ||
271 | int err; | ||
272 | |||
273 | if (mantis->fe) { | ||
274 | /* mantis_ca_exit(mantis); */ | ||
275 | err = mantis_frontend_shutdown(mantis); | ||
276 | if (err != 0) | ||
277 | dprintk(MANTIS_ERROR, 1, "Frontend exit while POWER ON! <%d>", err); | ||
278 | dvb_unregister_frontend(mantis->fe); | ||
279 | dvb_frontend_detach(mantis->fe); | ||
280 | } | ||
281 | |||
282 | tasklet_kill(&mantis->tasklet); | ||
283 | dvb_net_release(&mantis->dvbnet); | ||
284 | |||
285 | mantis->demux.dmx.remove_frontend(&mantis->demux.dmx, &mantis->fe_mem); | ||
286 | mantis->demux.dmx.remove_frontend(&mantis->demux.dmx, &mantis->fe_hw); | ||
287 | |||
288 | dvb_dmxdev_release(&mantis->dmxdev); | ||
289 | dvb_dmx_release(&mantis->demux); | ||
290 | |||
291 | dprintk(MANTIS_DEBUG, 1, "dvb_unregister_adapter"); | ||
292 | dvb_unregister_adapter(&mantis->dvb_adapter); | ||
293 | |||
294 | return 0; | ||
295 | } | ||
296 | EXPORT_SYMBOL_GPL(mantis_dvb_exit); | ||
diff --git a/drivers/media/dvb/mantis/mantis_dvb.h b/drivers/media/dvb/mantis/mantis_dvb.h new file mode 100644 index 000000000000..464199db304e --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_dvb.h | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_DVB_H | ||
22 | #define __MANTIS_DVB_H | ||
23 | |||
24 | enum mantis_power { | ||
25 | POWER_OFF = 0, | ||
26 | POWER_ON = 1 | ||
27 | }; | ||
28 | |||
29 | extern int mantis_frontend_power(struct mantis_pci *mantis, enum mantis_power power); | ||
30 | extern void mantis_frontend_soft_reset(struct mantis_pci *mantis); | ||
31 | |||
32 | extern int mantis_dvb_init(struct mantis_pci *mantis); | ||
33 | extern int mantis_dvb_exit(struct mantis_pci *mantis); | ||
34 | |||
35 | #endif /* __MANTIS_DVB_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_evm.c b/drivers/media/dvb/mantis/mantis_evm.c new file mode 100644 index 000000000000..a7b369a439d6 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_evm.c | |||
@@ -0,0 +1,117 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/kernel.h> | ||
22 | |||
23 | #include <linux/signal.h> | ||
24 | #include <linux/sched.h> | ||
25 | #include <linux/interrupt.h> | ||
26 | |||
27 | #include "dmxdev.h" | ||
28 | #include "dvbdev.h" | ||
29 | #include "dvb_demux.h" | ||
30 | #include "dvb_frontend.h" | ||
31 | #include "dvb_net.h" | ||
32 | |||
33 | #include "mantis_common.h" | ||
34 | #include "mantis_link.h" | ||
35 | #include "mantis_hif.h" | ||
36 | #include "mantis_reg.h" | ||
37 | |||
38 | static void mantis_hifevm_work(struct work_struct *work) | ||
39 | { | ||
40 | struct mantis_ca *ca = container_of(work, struct mantis_ca, hif_evm_work); | ||
41 | struct mantis_pci *mantis = ca->ca_priv; | ||
42 | |||
43 | u32 gpif_stat, gpif_mask; | ||
44 | |||
45 | gpif_stat = mmread(MANTIS_GPIF_STATUS); | ||
46 | gpif_mask = mmread(MANTIS_GPIF_IRQCFG); | ||
47 | |||
48 | if (gpif_stat & MANTIS_GPIF_DETSTAT) { | ||
49 | if (gpif_stat & MANTIS_CARD_PLUGIN) { | ||
50 | dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): CAM Plugin", mantis->num); | ||
51 | mmwrite(0xdada0000, MANTIS_CARD_RESET); | ||
52 | mantis_event_cam_plugin(ca); | ||
53 | dvb_ca_en50221_camchange_irq(&ca->en50221, | ||
54 | 0, | ||
55 | DVB_CA_EN50221_CAMCHANGE_INSERTED); | ||
56 | } | ||
57 | } else { | ||
58 | if (gpif_stat & MANTIS_CARD_PLUGOUT) { | ||
59 | dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): CAM Unplug", mantis->num); | ||
60 | mmwrite(0xdada0000, MANTIS_CARD_RESET); | ||
61 | mantis_event_cam_unplug(ca); | ||
62 | dvb_ca_en50221_camchange_irq(&ca->en50221, | ||
63 | 0, | ||
64 | DVB_CA_EN50221_CAMCHANGE_REMOVED); | ||
65 | } | ||
66 | } | ||
67 | |||
68 | if (mantis->gpif_status & MANTIS_GPIF_EXTIRQ) | ||
69 | dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Ext IRQ", mantis->num); | ||
70 | |||
71 | if (mantis->gpif_status & MANTIS_SBUF_WSTO) | ||
72 | dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer Timeout", mantis->num); | ||
73 | |||
74 | if (mantis->gpif_status & MANTIS_GPIF_OTHERR) | ||
75 | dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Alignment Error", mantis->num); | ||
76 | |||
77 | if (gpif_stat & MANTIS_SBUF_OVFLW) | ||
78 | dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer Overflow", mantis->num); | ||
79 | |||
80 | if (gpif_stat & MANTIS_GPIF_BRRDY) | ||
81 | dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer Read Ready", mantis->num); | ||
82 | |||
83 | if (gpif_stat & MANTIS_GPIF_INTSTAT) | ||
84 | dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): GPIF IRQ", mantis->num); | ||
85 | |||
86 | if (gpif_stat & MANTIS_SBUF_EMPTY) | ||
87 | dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer Empty", mantis->num); | ||
88 | |||
89 | if (gpif_stat & MANTIS_SBUF_OPDONE) { | ||
90 | dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer operation complete", mantis->num); | ||
91 | ca->sbuf_status = MANTIS_SBUF_DATA_AVAIL; | ||
92 | ca->hif_event = MANTIS_SBUF_OPDONE; | ||
93 | wake_up(&ca->hif_opdone_wq); | ||
94 | } | ||
95 | } | ||
96 | |||
97 | int mantis_evmgr_init(struct mantis_ca *ca) | ||
98 | { | ||
99 | struct mantis_pci *mantis = ca->ca_priv; | ||
100 | |||
101 | dprintk(MANTIS_DEBUG, 1, "Initializing Mantis Host I/F Event manager"); | ||
102 | INIT_WORK(&ca->hif_evm_work, mantis_hifevm_work); | ||
103 | mantis_pcmcia_init(ca); | ||
104 | schedule_work(&ca->hif_evm_work); | ||
105 | mantis_hif_init(ca); | ||
106 | return 0; | ||
107 | } | ||
108 | |||
109 | void mantis_evmgr_exit(struct mantis_ca *ca) | ||
110 | { | ||
111 | struct mantis_pci *mantis = ca->ca_priv; | ||
112 | |||
113 | dprintk(MANTIS_DEBUG, 1, "Mantis Host I/F Event manager exiting"); | ||
114 | flush_scheduled_work(); | ||
115 | mantis_hif_exit(ca); | ||
116 | mantis_pcmcia_exit(ca); | ||
117 | } | ||
diff --git a/drivers/media/dvb/mantis/mantis_hif.c b/drivers/media/dvb/mantis/mantis_hif.c new file mode 100644 index 000000000000..7477dac628b4 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_hif.c | |||
@@ -0,0 +1,240 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/kernel.h> | ||
22 | #include <linux/signal.h> | ||
23 | #include <linux/sched.h> | ||
24 | |||
25 | #include <linux/signal.h> | ||
26 | #include <linux/sched.h> | ||
27 | #include <linux/interrupt.h> | ||
28 | |||
29 | #include "dmxdev.h" | ||
30 | #include "dvbdev.h" | ||
31 | #include "dvb_demux.h" | ||
32 | #include "dvb_frontend.h" | ||
33 | #include "dvb_net.h" | ||
34 | |||
35 | #include "mantis_common.h" | ||
36 | |||
37 | #include "mantis_hif.h" | ||
38 | #include "mantis_link.h" /* temporary due to physical layer stuff */ | ||
39 | |||
40 | #include "mantis_reg.h" | ||
41 | |||
42 | |||
43 | static int mantis_hif_sbuf_opdone_wait(struct mantis_ca *ca) | ||
44 | { | ||
45 | struct mantis_pci *mantis = ca->ca_priv; | ||
46 | int rc = 0; | ||
47 | |||
48 | if (wait_event_timeout(ca->hif_opdone_wq, | ||
49 | ca->hif_event & MANTIS_SBUF_OPDONE, | ||
50 | msecs_to_jiffies(500)) == -ERESTARTSYS) { | ||
51 | |||
52 | dprintk(MANTIS_ERROR, 1, "Adapter(%d) Slot(0): Smart buffer operation timeout !", mantis->num); | ||
53 | rc = -EREMOTEIO; | ||
54 | } | ||
55 | dprintk(MANTIS_DEBUG, 1, "Smart Buffer Operation complete"); | ||
56 | ca->hif_event &= ~MANTIS_SBUF_OPDONE; | ||
57 | return rc; | ||
58 | } | ||
59 | |||
60 | static int mantis_hif_write_wait(struct mantis_ca *ca) | ||
61 | { | ||
62 | struct mantis_pci *mantis = ca->ca_priv; | ||
63 | u32 opdone = 0, timeout = 0; | ||
64 | int rc = 0; | ||
65 | |||
66 | if (wait_event_timeout(ca->hif_write_wq, | ||
67 | mantis->gpif_status & MANTIS_GPIF_WRACK, | ||
68 | msecs_to_jiffies(500)) == -ERESTARTSYS) { | ||
69 | |||
70 | dprintk(MANTIS_ERROR, 1, "Adapter(%d) Slot(0): Write ACK timed out !", mantis->num); | ||
71 | rc = -EREMOTEIO; | ||
72 | } | ||
73 | dprintk(MANTIS_DEBUG, 1, "Write Acknowledged"); | ||
74 | mantis->gpif_status &= ~MANTIS_GPIF_WRACK; | ||
75 | while (!opdone) { | ||
76 | opdone = (mmread(MANTIS_GPIF_STATUS) & MANTIS_SBUF_OPDONE); | ||
77 | udelay(500); | ||
78 | timeout++; | ||
79 | if (timeout > 100) { | ||
80 | dprintk(MANTIS_ERROR, 1, "Adater(%d) Slot(0): Write operation timed out!", mantis->num); | ||
81 | rc = -ETIMEDOUT; | ||
82 | break; | ||
83 | } | ||
84 | } | ||
85 | dprintk(MANTIS_DEBUG, 1, "HIF Write success"); | ||
86 | return rc; | ||
87 | } | ||
88 | |||
89 | |||
90 | int mantis_hif_read_mem(struct mantis_ca *ca, u32 addr) | ||
91 | { | ||
92 | struct mantis_pci *mantis = ca->ca_priv; | ||
93 | u32 hif_addr = 0, data, count = 4; | ||
94 | |||
95 | dprintk(MANTIS_DEBUG, 1, "Adapter(%d) Slot(0): Request HIF Mem Read", mantis->num); | ||
96 | mutex_lock(&ca->ca_lock); | ||
97 | hif_addr &= ~MANTIS_GPIF_PCMCIAREG; | ||
98 | hif_addr &= ~MANTIS_GPIF_PCMCIAIOM; | ||
99 | hif_addr |= MANTIS_HIF_STATUS; | ||
100 | hif_addr |= addr; | ||
101 | |||
102 | mmwrite(hif_addr, MANTIS_GPIF_BRADDR); | ||
103 | mmwrite(count, MANTIS_GPIF_BRBYTES); | ||
104 | udelay(20); | ||
105 | mmwrite(hif_addr | MANTIS_GPIF_HIFRDWRN, MANTIS_GPIF_ADDR); | ||
106 | |||
107 | if (mantis_hif_sbuf_opdone_wait(ca) != 0) { | ||
108 | dprintk(MANTIS_ERROR, 1, "Adapter(%d) Slot(0): GPIF Smart Buffer operation failed", mantis->num); | ||
109 | mutex_unlock(&ca->ca_lock); | ||
110 | return -EREMOTEIO; | ||
111 | } | ||
112 | data = mmread(MANTIS_GPIF_DIN); | ||
113 | mutex_unlock(&ca->ca_lock); | ||
114 | dprintk(MANTIS_DEBUG, 1, "Mem Read: 0x%02x", data); | ||
115 | return (data >> 24) & 0xff; | ||
116 | } | ||
117 | |||
118 | int mantis_hif_write_mem(struct mantis_ca *ca, u32 addr, u8 data) | ||
119 | { | ||
120 | struct mantis_slot *slot = ca->slot; | ||
121 | struct mantis_pci *mantis = ca->ca_priv; | ||
122 | u32 hif_addr = 0; | ||
123 | |||
124 | dprintk(MANTIS_DEBUG, 1, "Adapter(%d) Slot(0): Request HIF Mem Write", mantis->num); | ||
125 | mutex_lock(&ca->ca_lock); | ||
126 | hif_addr &= ~MANTIS_GPIF_HIFRDWRN; | ||
127 | hif_addr &= ~MANTIS_GPIF_PCMCIAREG; | ||
128 | hif_addr &= ~MANTIS_GPIF_PCMCIAIOM; | ||
129 | hif_addr |= MANTIS_HIF_STATUS; | ||
130 | hif_addr |= addr; | ||
131 | |||
132 | mmwrite(slot->slave_cfg, MANTIS_GPIF_CFGSLA); /* Slot0 alone for now */ | ||
133 | mmwrite(hif_addr, MANTIS_GPIF_ADDR); | ||
134 | mmwrite(data, MANTIS_GPIF_DOUT); | ||
135 | |||
136 | if (mantis_hif_write_wait(ca) != 0) { | ||
137 | dprintk(MANTIS_ERROR, 1, "Adapter(%d) Slot(0): HIF Smart Buffer operation failed", mantis->num); | ||
138 | mutex_unlock(&ca->ca_lock); | ||
139 | return -EREMOTEIO; | ||
140 | } | ||
141 | dprintk(MANTIS_DEBUG, 1, "Mem Write: (0x%02x to 0x%02x)", data, addr); | ||
142 | mutex_unlock(&ca->ca_lock); | ||
143 | |||
144 | return 0; | ||
145 | } | ||
146 | |||
147 | int mantis_hif_read_iom(struct mantis_ca *ca, u32 addr) | ||
148 | { | ||
149 | struct mantis_pci *mantis = ca->ca_priv; | ||
150 | u32 data, hif_addr = 0; | ||
151 | |||
152 | dprintk(MANTIS_DEBUG, 1, "Adapter(%d) Slot(0): Request HIF I/O Read", mantis->num); | ||
153 | mutex_lock(&ca->ca_lock); | ||
154 | hif_addr &= ~MANTIS_GPIF_PCMCIAREG; | ||
155 | hif_addr |= MANTIS_GPIF_PCMCIAIOM; | ||
156 | hif_addr |= MANTIS_HIF_STATUS; | ||
157 | hif_addr |= addr; | ||
158 | |||
159 | mmwrite(hif_addr, MANTIS_GPIF_BRADDR); | ||
160 | mmwrite(1, MANTIS_GPIF_BRBYTES); | ||
161 | udelay(20); | ||
162 | mmwrite(hif_addr | MANTIS_GPIF_HIFRDWRN, MANTIS_GPIF_ADDR); | ||
163 | |||
164 | if (mantis_hif_sbuf_opdone_wait(ca) != 0) { | ||
165 | dprintk(MANTIS_ERROR, 1, "Adapter(%d) Slot(0): HIF Smart Buffer operation failed", mantis->num); | ||
166 | mutex_unlock(&ca->ca_lock); | ||
167 | return -EREMOTEIO; | ||
168 | } | ||
169 | data = mmread(MANTIS_GPIF_DIN); | ||
170 | dprintk(MANTIS_DEBUG, 1, "I/O Read: 0x%02x", data); | ||
171 | udelay(50); | ||
172 | mutex_unlock(&ca->ca_lock); | ||
173 | |||
174 | return (u8) data; | ||
175 | } | ||
176 | |||
177 | int mantis_hif_write_iom(struct mantis_ca *ca, u32 addr, u8 data) | ||
178 | { | ||
179 | struct mantis_pci *mantis = ca->ca_priv; | ||
180 | u32 hif_addr = 0; | ||
181 | |||
182 | dprintk(MANTIS_DEBUG, 1, "Adapter(%d) Slot(0): Request HIF I/O Write", mantis->num); | ||
183 | mutex_lock(&ca->ca_lock); | ||
184 | hif_addr &= ~MANTIS_GPIF_PCMCIAREG; | ||
185 | hif_addr &= ~MANTIS_GPIF_HIFRDWRN; | ||
186 | hif_addr |= MANTIS_GPIF_PCMCIAIOM; | ||
187 | hif_addr |= MANTIS_HIF_STATUS; | ||
188 | hif_addr |= addr; | ||
189 | |||
190 | mmwrite(hif_addr, MANTIS_GPIF_ADDR); | ||
191 | mmwrite(data, MANTIS_GPIF_DOUT); | ||
192 | |||
193 | if (mantis_hif_write_wait(ca) != 0) { | ||
194 | dprintk(MANTIS_ERROR, 1, "Adapter(%d) Slot(0): HIF Smart Buffer operation failed", mantis->num); | ||
195 | mutex_unlock(&ca->ca_lock); | ||
196 | return -EREMOTEIO; | ||
197 | } | ||
198 | dprintk(MANTIS_DEBUG, 1, "I/O Write: (0x%02x to 0x%02x)", data, addr); | ||
199 | mutex_unlock(&ca->ca_lock); | ||
200 | udelay(50); | ||
201 | |||
202 | return 0; | ||
203 | } | ||
204 | |||
205 | int mantis_hif_init(struct mantis_ca *ca) | ||
206 | { | ||
207 | struct mantis_slot *slot = ca->slot; | ||
208 | struct mantis_pci *mantis = ca->ca_priv; | ||
209 | u32 irqcfg; | ||
210 | |||
211 | slot[0].slave_cfg = 0x70773028; | ||
212 | dprintk(MANTIS_ERROR, 1, "Adapter(%d) Initializing Mantis Host Interface", mantis->num); | ||
213 | |||
214 | mutex_lock(&ca->ca_lock); | ||
215 | irqcfg = mmread(MANTIS_GPIF_IRQCFG); | ||
216 | irqcfg = MANTIS_MASK_BRRDY | | ||
217 | MANTIS_MASK_WRACK | | ||
218 | MANTIS_MASK_EXTIRQ | | ||
219 | MANTIS_MASK_WSTO | | ||
220 | MANTIS_MASK_OTHERR | | ||
221 | MANTIS_MASK_OVFLW; | ||
222 | |||
223 | mmwrite(irqcfg, MANTIS_GPIF_IRQCFG); | ||
224 | mutex_unlock(&ca->ca_lock); | ||
225 | |||
226 | return 0; | ||
227 | } | ||
228 | |||
229 | void mantis_hif_exit(struct mantis_ca *ca) | ||
230 | { | ||
231 | struct mantis_pci *mantis = ca->ca_priv; | ||
232 | u32 irqcfg; | ||
233 | |||
234 | dprintk(MANTIS_ERROR, 1, "Adapter(%d) Exiting Mantis Host Interface", mantis->num); | ||
235 | mutex_lock(&ca->ca_lock); | ||
236 | irqcfg = mmread(MANTIS_GPIF_IRQCFG); | ||
237 | irqcfg &= ~MANTIS_MASK_BRRDY; | ||
238 | mmwrite(irqcfg, MANTIS_GPIF_IRQCFG); | ||
239 | mutex_unlock(&ca->ca_lock); | ||
240 | } | ||
diff --git a/drivers/media/dvb/mantis/mantis_hif.h b/drivers/media/dvb/mantis/mantis_hif.h new file mode 100644 index 000000000000..9094f9ed2362 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_hif.h | |||
@@ -0,0 +1,29 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_HIF_H | ||
22 | #define __MANTIS_HIF_H | ||
23 | |||
24 | #define MANTIS_HIF_MEMRD 1 | ||
25 | #define MANTIS_HIF_MEMWR 2 | ||
26 | #define MANTIS_HIF_IOMRD 3 | ||
27 | #define MANTIS_HIF_IOMWR 4 | ||
28 | |||
29 | #endif /* __MANTIS_HIF_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_i2c.c b/drivers/media/dvb/mantis/mantis_i2c.c new file mode 100644 index 000000000000..7870bcf9689a --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_i2c.c | |||
@@ -0,0 +1,267 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <asm/io.h> | ||
22 | #include <linux/ioport.h> | ||
23 | #include <linux/pci.h> | ||
24 | #include <linux/i2c.h> | ||
25 | |||
26 | #include "dmxdev.h" | ||
27 | #include "dvbdev.h" | ||
28 | #include "dvb_demux.h" | ||
29 | #include "dvb_frontend.h" | ||
30 | #include "dvb_net.h" | ||
31 | |||
32 | #include "mantis_common.h" | ||
33 | #include "mantis_reg.h" | ||
34 | #include "mantis_i2c.h" | ||
35 | |||
36 | #define TRIALS 10000 | ||
37 | |||
38 | static int mantis_i2c_read(struct mantis_pci *mantis, const struct i2c_msg *msg) | ||
39 | { | ||
40 | u32 rxd, i, stat, trials; | ||
41 | |||
42 | dprintk(MANTIS_INFO, 0, " %s: Address=[0x%02x] <R>[ ", | ||
43 | __func__, msg->addr); | ||
44 | |||
45 | for (i = 0; i < msg->len; i++) { | ||
46 | rxd = (msg->addr << 25) | (1 << 24) | ||
47 | | MANTIS_I2C_RATE_3 | ||
48 | | MANTIS_I2C_STOP | ||
49 | | MANTIS_I2C_PGMODE; | ||
50 | |||
51 | if (i == (msg->len - 1)) | ||
52 | rxd &= ~MANTIS_I2C_STOP; | ||
53 | |||
54 | mmwrite(MANTIS_INT_I2CDONE, MANTIS_INT_STAT); | ||
55 | mmwrite(rxd, MANTIS_I2CDATA_CTL); | ||
56 | |||
57 | /* wait for xfer completion */ | ||
58 | for (trials = 0; trials < TRIALS; trials++) { | ||
59 | stat = mmread(MANTIS_INT_STAT); | ||
60 | if (stat & MANTIS_INT_I2CDONE) | ||
61 | break; | ||
62 | } | ||
63 | |||
64 | dprintk(MANTIS_TMG, 0, "I2CDONE: trials=%d\n", trials); | ||
65 | |||
66 | /* wait for xfer completion */ | ||
67 | for (trials = 0; trials < TRIALS; trials++) { | ||
68 | stat = mmread(MANTIS_INT_STAT); | ||
69 | if (stat & MANTIS_INT_I2CRACK) | ||
70 | break; | ||
71 | } | ||
72 | |||
73 | dprintk(MANTIS_TMG, 0, "I2CRACK: trials=%d\n", trials); | ||
74 | |||
75 | rxd = mmread(MANTIS_I2CDATA_CTL); | ||
76 | msg->buf[i] = (u8)((rxd >> 8) & 0xFF); | ||
77 | dprintk(MANTIS_INFO, 0, "%02x ", msg->buf[i]); | ||
78 | } | ||
79 | dprintk(MANTIS_INFO, 0, "]\n"); | ||
80 | |||
81 | return 0; | ||
82 | } | ||
83 | |||
84 | static int mantis_i2c_write(struct mantis_pci *mantis, const struct i2c_msg *msg) | ||
85 | { | ||
86 | int i; | ||
87 | u32 txd = 0, stat, trials; | ||
88 | |||
89 | dprintk(MANTIS_INFO, 0, " %s: Address=[0x%02x] <W>[ ", | ||
90 | __func__, msg->addr); | ||
91 | |||
92 | for (i = 0; i < msg->len; i++) { | ||
93 | dprintk(MANTIS_INFO, 0, "%02x ", msg->buf[i]); | ||
94 | txd = (msg->addr << 25) | (msg->buf[i] << 8) | ||
95 | | MANTIS_I2C_RATE_3 | ||
96 | | MANTIS_I2C_STOP | ||
97 | | MANTIS_I2C_PGMODE; | ||
98 | |||
99 | if (i == (msg->len - 1)) | ||
100 | txd &= ~MANTIS_I2C_STOP; | ||
101 | |||
102 | mmwrite(MANTIS_INT_I2CDONE, MANTIS_INT_STAT); | ||
103 | mmwrite(txd, MANTIS_I2CDATA_CTL); | ||
104 | |||
105 | /* wait for xfer completion */ | ||
106 | for (trials = 0; trials < TRIALS; trials++) { | ||
107 | stat = mmread(MANTIS_INT_STAT); | ||
108 | if (stat & MANTIS_INT_I2CDONE) | ||
109 | break; | ||
110 | } | ||
111 | |||
112 | dprintk(MANTIS_TMG, 0, "I2CDONE: trials=%d\n", trials); | ||
113 | |||
114 | /* wait for xfer completion */ | ||
115 | for (trials = 0; trials < TRIALS; trials++) { | ||
116 | stat = mmread(MANTIS_INT_STAT); | ||
117 | if (stat & MANTIS_INT_I2CRACK) | ||
118 | break; | ||
119 | } | ||
120 | |||
121 | dprintk(MANTIS_TMG, 0, "I2CRACK: trials=%d\n", trials); | ||
122 | } | ||
123 | dprintk(MANTIS_INFO, 0, "]\n"); | ||
124 | |||
125 | return 0; | ||
126 | } | ||
127 | |||
128 | static int mantis_i2c_xfer(struct i2c_adapter *adapter, struct i2c_msg *msgs, int num) | ||
129 | { | ||
130 | int ret = 0, i = 0, trials; | ||
131 | u32 stat, data, txd; | ||
132 | struct mantis_pci *mantis; | ||
133 | struct mantis_hwconfig *config; | ||
134 | |||
135 | mantis = i2c_get_adapdata(adapter); | ||
136 | BUG_ON(!mantis); | ||
137 | config = mantis->hwconfig; | ||
138 | BUG_ON(!config); | ||
139 | |||
140 | dprintk(MANTIS_DEBUG, 1, "Messages:%d", num); | ||
141 | mutex_lock(&mantis->i2c_lock); | ||
142 | |||
143 | while (i < num) { | ||
144 | /* Byte MODE */ | ||
145 | if ((config->i2c_mode & MANTIS_BYTE_MODE) && | ||
146 | ((i + 1) < num) && | ||
147 | (msgs[i].len < 2) && | ||
148 | (msgs[i + 1].len < 2) && | ||
149 | (msgs[i + 1].flags & I2C_M_RD)) { | ||
150 | |||
151 | dprintk(MANTIS_DEBUG, 0, " Byte MODE:\n"); | ||
152 | |||
153 | /* Read operation */ | ||
154 | txd = msgs[i].addr << 25 | (0x1 << 24) | ||
155 | | (msgs[i].buf[0] << 16) | ||
156 | | MANTIS_I2C_RATE_3; | ||
157 | |||
158 | mmwrite(txd, MANTIS_I2CDATA_CTL); | ||
159 | /* wait for xfer completion */ | ||
160 | for (trials = 0; trials < TRIALS; trials++) { | ||
161 | stat = mmread(MANTIS_INT_STAT); | ||
162 | if (stat & MANTIS_INT_I2CDONE) | ||
163 | break; | ||
164 | } | ||
165 | |||
166 | /* check for xfer completion */ | ||
167 | if (stat & MANTIS_INT_I2CDONE) { | ||
168 | /* check xfer was acknowledged */ | ||
169 | if (stat & MANTIS_INT_I2CRACK) { | ||
170 | data = mmread(MANTIS_I2CDATA_CTL); | ||
171 | msgs[i + 1].buf[0] = (data >> 8) & 0xff; | ||
172 | dprintk(MANTIS_DEBUG, 0, " Byte <%d> RXD=0x%02x [%02x]\n", 0x0, data, msgs[i + 1].buf[0]); | ||
173 | } else { | ||
174 | /* I/O error */ | ||
175 | dprintk(MANTIS_ERROR, 1, " I/O error, LINE:%d", __LINE__); | ||
176 | ret = -EIO; | ||
177 | break; | ||
178 | } | ||
179 | } else { | ||
180 | /* I/O error */ | ||
181 | dprintk(MANTIS_ERROR, 1, " I/O error, LINE:%d", __LINE__); | ||
182 | ret = -EIO; | ||
183 | break; | ||
184 | } | ||
185 | i += 2; /* Write/Read operation in one go */ | ||
186 | } | ||
187 | |||
188 | if (i < num) { | ||
189 | if (msgs[i].flags & I2C_M_RD) | ||
190 | ret = mantis_i2c_read(mantis, &msgs[i]); | ||
191 | else | ||
192 | ret = mantis_i2c_write(mantis, &msgs[i]); | ||
193 | |||
194 | i++; | ||
195 | if (ret < 0) | ||
196 | goto bail_out; | ||
197 | } | ||
198 | |||
199 | } | ||
200 | |||
201 | mutex_unlock(&mantis->i2c_lock); | ||
202 | |||
203 | return num; | ||
204 | |||
205 | bail_out: | ||
206 | mutex_unlock(&mantis->i2c_lock); | ||
207 | return ret; | ||
208 | } | ||
209 | |||
210 | static u32 mantis_i2c_func(struct i2c_adapter *adapter) | ||
211 | { | ||
212 | return I2C_FUNC_SMBUS_EMUL; | ||
213 | } | ||
214 | |||
215 | static struct i2c_algorithm mantis_algo = { | ||
216 | .master_xfer = mantis_i2c_xfer, | ||
217 | .functionality = mantis_i2c_func, | ||
218 | }; | ||
219 | |||
220 | int __devinit mantis_i2c_init(struct mantis_pci *mantis) | ||
221 | { | ||
222 | u32 intstat, intmask; | ||
223 | struct i2c_adapter *i2c_adapter = &mantis->adapter; | ||
224 | struct pci_dev *pdev = mantis->pdev; | ||
225 | |||
226 | init_waitqueue_head(&mantis->i2c_wq); | ||
227 | mutex_init(&mantis->i2c_lock); | ||
228 | strncpy(i2c_adapter->name, "Mantis I2C", sizeof(i2c_adapter->name)); | ||
229 | i2c_set_adapdata(i2c_adapter, mantis); | ||
230 | |||
231 | i2c_adapter->owner = THIS_MODULE; | ||
232 | i2c_adapter->class = I2C_CLASS_TV_DIGITAL; | ||
233 | i2c_adapter->algo = &mantis_algo; | ||
234 | i2c_adapter->algo_data = NULL; | ||
235 | i2c_adapter->timeout = 500; | ||
236 | i2c_adapter->retries = 3; | ||
237 | i2c_adapter->dev.parent = &pdev->dev; | ||
238 | |||
239 | mantis->i2c_rc = i2c_add_adapter(i2c_adapter); | ||
240 | if (mantis->i2c_rc < 0) | ||
241 | return mantis->i2c_rc; | ||
242 | |||
243 | dprintk(MANTIS_DEBUG, 1, "Initializing I2C .."); | ||
244 | |||
245 | intstat = mmread(MANTIS_INT_STAT); | ||
246 | intmask = mmread(MANTIS_INT_MASK); | ||
247 | mmwrite(intstat, MANTIS_INT_STAT); | ||
248 | dprintk(MANTIS_DEBUG, 1, "Disabling I2C interrupt"); | ||
249 | intmask = mmread(MANTIS_INT_MASK); | ||
250 | mmwrite((intmask & ~MANTIS_INT_I2CDONE), MANTIS_INT_MASK); | ||
251 | |||
252 | return 0; | ||
253 | } | ||
254 | EXPORT_SYMBOL_GPL(mantis_i2c_init); | ||
255 | |||
256 | int mantis_i2c_exit(struct mantis_pci *mantis) | ||
257 | { | ||
258 | u32 intmask; | ||
259 | |||
260 | dprintk(MANTIS_DEBUG, 1, "Disabling I2C interrupt"); | ||
261 | intmask = mmread(MANTIS_INT_MASK); | ||
262 | mmwrite((intmask & ~MANTIS_INT_I2CDONE), MANTIS_INT_MASK); | ||
263 | |||
264 | dprintk(MANTIS_DEBUG, 1, "Removing I2C adapter"); | ||
265 | return i2c_del_adapter(&mantis->adapter); | ||
266 | } | ||
267 | EXPORT_SYMBOL_GPL(mantis_i2c_exit); | ||
diff --git a/drivers/media/dvb/mantis/mantis_i2c.h b/drivers/media/dvb/mantis/mantis_i2c.h new file mode 100644 index 000000000000..1342df2faed8 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_i2c.h | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_I2C_H | ||
22 | #define __MANTIS_I2C_H | ||
23 | |||
24 | #define I2C_STOP (1 << 0) | ||
25 | #define I2C_READ (1 << 1) | ||
26 | |||
27 | extern int mantis_i2c_init(struct mantis_pci *mantis); | ||
28 | extern int mantis_i2c_exit(struct mantis_pci *mantis); | ||
29 | |||
30 | #endif /* __MANTIS_I2C_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_input.c b/drivers/media/dvb/mantis/mantis_input.c new file mode 100644 index 000000000000..6a9df779441f --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_input.c | |||
@@ -0,0 +1,148 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/input.h> | ||
22 | #include <media/ir-common.h> | ||
23 | #include <linux/pci.h> | ||
24 | |||
25 | #include "dmxdev.h" | ||
26 | #include "dvbdev.h" | ||
27 | #include "dvb_demux.h" | ||
28 | #include "dvb_frontend.h" | ||
29 | #include "dvb_net.h" | ||
30 | |||
31 | #include "mantis_common.h" | ||
32 | #include "mantis_reg.h" | ||
33 | #include "mantis_uart.h" | ||
34 | |||
35 | static struct ir_scancode mantis_ir_table[] = { | ||
36 | { 0x29, KEY_POWER }, | ||
37 | { 0x28, KEY_FAVORITES }, | ||
38 | { 0x30, KEY_TEXT }, | ||
39 | { 0x17, KEY_INFO }, /* Preview */ | ||
40 | { 0x23, KEY_EPG }, | ||
41 | { 0x3b, KEY_F22 }, /* Record List */ | ||
42 | { 0x3c, KEY_1 }, | ||
43 | { 0x3e, KEY_2 }, | ||
44 | { 0x39, KEY_3 }, | ||
45 | { 0x36, KEY_4 }, | ||
46 | { 0x22, KEY_5 }, | ||
47 | { 0x20, KEY_6 }, | ||
48 | { 0x32, KEY_7 }, | ||
49 | { 0x26, KEY_8 }, | ||
50 | { 0x24, KEY_9 }, | ||
51 | { 0x2a, KEY_0 }, | ||
52 | |||
53 | { 0x33, KEY_CANCEL }, | ||
54 | { 0x2c, KEY_BACK }, | ||
55 | { 0x15, KEY_CLEAR }, | ||
56 | { 0x3f, KEY_TAB }, | ||
57 | { 0x10, KEY_ENTER }, | ||
58 | { 0x14, KEY_UP }, | ||
59 | { 0x0d, KEY_RIGHT }, | ||
60 | { 0x0e, KEY_DOWN }, | ||
61 | { 0x11, KEY_LEFT }, | ||
62 | |||
63 | { 0x21, KEY_VOLUMEUP }, | ||
64 | { 0x35, KEY_VOLUMEDOWN }, | ||
65 | { 0x3d, KEY_CHANNELDOWN }, | ||
66 | { 0x3a, KEY_CHANNELUP }, | ||
67 | { 0x2e, KEY_RECORD }, | ||
68 | { 0x2b, KEY_PLAY }, | ||
69 | { 0x13, KEY_PAUSE }, | ||
70 | { 0x25, KEY_STOP }, | ||
71 | |||
72 | { 0x1f, KEY_REWIND }, | ||
73 | { 0x2d, KEY_FASTFORWARD }, | ||
74 | { 0x1e, KEY_PREVIOUS }, /* Replay |< */ | ||
75 | { 0x1d, KEY_NEXT }, /* Skip >| */ | ||
76 | |||
77 | { 0x0b, KEY_CAMERA }, /* Capture */ | ||
78 | { 0x0f, KEY_LANGUAGE }, /* SAP */ | ||
79 | { 0x18, KEY_MODE }, /* PIP */ | ||
80 | { 0x12, KEY_ZOOM }, /* Full screen */ | ||
81 | { 0x1c, KEY_SUBTITLE }, | ||
82 | { 0x2f, KEY_MUTE }, | ||
83 | { 0x16, KEY_F20 }, /* L/R */ | ||
84 | { 0x38, KEY_F21 }, /* Hibernate */ | ||
85 | |||
86 | { 0x37, KEY_SWITCHVIDEOMODE }, /* A/V */ | ||
87 | { 0x31, KEY_AGAIN }, /* Recall */ | ||
88 | { 0x1a, KEY_KPPLUS }, /* Zoom+ */ | ||
89 | { 0x19, KEY_KPMINUS }, /* Zoom- */ | ||
90 | { 0x27, KEY_RED }, | ||
91 | { 0x0C, KEY_GREEN }, | ||
92 | { 0x01, KEY_YELLOW }, | ||
93 | { 0x00, KEY_BLUE }, | ||
94 | }; | ||
95 | |||
96 | struct ir_scancode_table ir_mantis = { | ||
97 | .scan = mantis_ir_table, | ||
98 | .size = ARRAY_SIZE(mantis_ir_table), | ||
99 | }; | ||
100 | EXPORT_SYMBOL_GPL(ir_mantis); | ||
101 | |||
102 | int mantis_input_init(struct mantis_pci *mantis) | ||
103 | { | ||
104 | struct input_dev *rc; | ||
105 | struct ir_input_state rc_state; | ||
106 | char name[80], dev[80]; | ||
107 | int err; | ||
108 | |||
109 | rc = input_allocate_device(); | ||
110 | if (!rc) { | ||
111 | dprintk(MANTIS_ERROR, 1, "Input device allocate failed"); | ||
112 | return -ENOMEM; | ||
113 | } | ||
114 | |||
115 | sprintf(name, "Mantis %s IR receiver", mantis->hwconfig->model_name); | ||
116 | sprintf(dev, "pci-%s/ir0", pci_name(mantis->pdev)); | ||
117 | |||
118 | rc->name = name; | ||
119 | rc->phys = dev; | ||
120 | |||
121 | ir_input_init(rc, &rc_state, IR_TYPE_OTHER); | ||
122 | |||
123 | rc->id.bustype = BUS_PCI; | ||
124 | rc->id.vendor = mantis->vendor_id; | ||
125 | rc->id.product = mantis->device_id; | ||
126 | rc->id.version = 1; | ||
127 | rc->dev = mantis->pdev->dev; | ||
128 | |||
129 | err = ir_input_register(rc, &ir_mantis); | ||
130 | if (err) { | ||
131 | dprintk(MANTIS_ERROR, 1, "IR device registration failed, ret = %d", err); | ||
132 | input_free_device(rc); | ||
133 | return -ENODEV; | ||
134 | } | ||
135 | |||
136 | mantis->rc = rc; | ||
137 | |||
138 | return 0; | ||
139 | } | ||
140 | |||
141 | int mantis_exit(struct mantis_pci *mantis) | ||
142 | { | ||
143 | struct input_dev *rc = mantis->rc; | ||
144 | |||
145 | ir_input_unregister(rc); | ||
146 | |||
147 | return 0; | ||
148 | } | ||
diff --git a/drivers/media/dvb/mantis/mantis_ioc.c b/drivers/media/dvb/mantis/mantis_ioc.c new file mode 100644 index 000000000000..de148ded52d8 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_ioc.c | |||
@@ -0,0 +1,130 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/kernel.h> | ||
22 | #include <linux/i2c.h> | ||
23 | |||
24 | #include <linux/signal.h> | ||
25 | #include <linux/sched.h> | ||
26 | #include <linux/interrupt.h> | ||
27 | |||
28 | #include "dmxdev.h" | ||
29 | #include "dvbdev.h" | ||
30 | #include "dvb_demux.h" | ||
31 | #include "dvb_frontend.h" | ||
32 | #include "dvb_net.h" | ||
33 | |||
34 | #include "mantis_common.h" | ||
35 | #include "mantis_reg.h" | ||
36 | #include "mantis_ioc.h" | ||
37 | |||
38 | static int read_eeprom_bytes(struct mantis_pci *mantis, u8 reg, u8 *data, u8 length) | ||
39 | { | ||
40 | struct i2c_adapter *adapter = &mantis->adapter; | ||
41 | int err; | ||
42 | u8 buf = reg; | ||
43 | |||
44 | struct i2c_msg msg[] = { | ||
45 | { .addr = 0x50, .flags = 0, .buf = &buf, .len = 1 }, | ||
46 | { .addr = 0x50, .flags = I2C_M_RD, .buf = data, .len = length }, | ||
47 | }; | ||
48 | |||
49 | err = i2c_transfer(adapter, msg, 2); | ||
50 | if (err < 0) { | ||
51 | dprintk(MANTIS_ERROR, 1, "ERROR: i2c read: < err=%i d0=0x%02x d1=0x%02x >", | ||
52 | err, data[0], data[1]); | ||
53 | |||
54 | return err; | ||
55 | } | ||
56 | |||
57 | return 0; | ||
58 | } | ||
59 | int mantis_get_mac(struct mantis_pci *mantis) | ||
60 | { | ||
61 | int err; | ||
62 | u8 mac_addr[6] = {0}; | ||
63 | |||
64 | err = read_eeprom_bytes(mantis, 0x08, mac_addr, 6); | ||
65 | if (err < 0) { | ||
66 | dprintk(MANTIS_ERROR, 1, "ERROR: Mantis EEPROM read error <%d>", err); | ||
67 | |||
68 | return err; | ||
69 | } | ||
70 | |||
71 | dprintk(MANTIS_ERROR, 0, | ||
72 | " MAC Address=[%02x:%02x:%02x:%02x:%02x:%02x]\n", | ||
73 | mac_addr[0], | ||
74 | mac_addr[1], | ||
75 | mac_addr[2], | ||
76 | mac_addr[3], | ||
77 | mac_addr[4], | ||
78 | mac_addr[5]); | ||
79 | |||
80 | return 0; | ||
81 | } | ||
82 | EXPORT_SYMBOL_GPL(mantis_get_mac); | ||
83 | |||
84 | /* Turn the given bit on or off. */ | ||
85 | void gpio_set_bits(struct mantis_pci *mantis, u32 bitpos, u8 value) | ||
86 | { | ||
87 | u32 cur; | ||
88 | |||
89 | dprintk(MANTIS_DEBUG, 1, "Set Bit <%d> to <%d>", bitpos, value); | ||
90 | cur = mmread(MANTIS_GPIF_ADDR); | ||
91 | if (value) | ||
92 | mantis->gpio_status = cur | (1 << bitpos); | ||
93 | else | ||
94 | mantis->gpio_status = cur & (~(1 << bitpos)); | ||
95 | |||
96 | dprintk(MANTIS_DEBUG, 1, "GPIO Value <%02x>", mantis->gpio_status); | ||
97 | mmwrite(mantis->gpio_status, MANTIS_GPIF_ADDR); | ||
98 | mmwrite(0x00, MANTIS_GPIF_DOUT); | ||
99 | } | ||
100 | EXPORT_SYMBOL_GPL(gpio_set_bits); | ||
101 | |||
102 | int mantis_stream_control(struct mantis_pci *mantis, enum mantis_stream_control stream_ctl) | ||
103 | { | ||
104 | u32 reg; | ||
105 | |||
106 | reg = mmread(MANTIS_CONTROL); | ||
107 | switch (stream_ctl) { | ||
108 | case STREAM_TO_HIF: | ||
109 | dprintk(MANTIS_DEBUG, 1, "Set stream to HIF"); | ||
110 | reg &= 0xff - MANTIS_BYPASS; | ||
111 | mmwrite(reg, MANTIS_CONTROL); | ||
112 | reg |= MANTIS_BYPASS; | ||
113 | mmwrite(reg, MANTIS_CONTROL); | ||
114 | break; | ||
115 | |||
116 | case STREAM_TO_CAM: | ||
117 | dprintk(MANTIS_DEBUG, 1, "Set stream to CAM"); | ||
118 | reg |= MANTIS_BYPASS; | ||
119 | mmwrite(reg, MANTIS_CONTROL); | ||
120 | reg &= 0xff - MANTIS_BYPASS; | ||
121 | mmwrite(reg, MANTIS_CONTROL); | ||
122 | break; | ||
123 | default: | ||
124 | dprintk(MANTIS_ERROR, 1, "Unknown MODE <%02x>", stream_ctl); | ||
125 | return -1; | ||
126 | } | ||
127 | |||
128 | return 0; | ||
129 | } | ||
130 | EXPORT_SYMBOL_GPL(mantis_stream_control); | ||
diff --git a/drivers/media/dvb/mantis/mantis_ioc.h b/drivers/media/dvb/mantis/mantis_ioc.h new file mode 100644 index 000000000000..188fe5a81614 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_ioc.h | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_IOC_H | ||
22 | #define __MANTIS_IOC_H | ||
23 | |||
24 | #define GPIF_A00 0x00 | ||
25 | #define GPIF_A01 0x01 | ||
26 | #define GPIF_A02 0x02 | ||
27 | #define GPIF_A03 0x03 | ||
28 | #define GPIF_A04 0x04 | ||
29 | #define GPIF_A05 0x05 | ||
30 | #define GPIF_A06 0x06 | ||
31 | #define GPIF_A07 0x07 | ||
32 | #define GPIF_A08 0x08 | ||
33 | #define GPIF_A09 0x09 | ||
34 | #define GPIF_A10 0x0a | ||
35 | #define GPIF_A11 0x0b | ||
36 | |||
37 | #define GPIF_A12 0x0c | ||
38 | #define GPIF_A13 0x0d | ||
39 | #define GPIF_A14 0x0e | ||
40 | |||
41 | enum mantis_stream_control { | ||
42 | STREAM_TO_HIF = 0, | ||
43 | STREAM_TO_CAM | ||
44 | }; | ||
45 | |||
46 | extern int mantis_get_mac(struct mantis_pci *mantis); | ||
47 | extern void gpio_set_bits(struct mantis_pci *mantis, u32 bitpos, u8 value); | ||
48 | |||
49 | extern int mantis_stream_control(struct mantis_pci *mantis, enum mantis_stream_control stream_ctl); | ||
50 | |||
51 | #endif /* __MANTIS_IOC_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_link.h b/drivers/media/dvb/mantis/mantis_link.h new file mode 100644 index 000000000000..2a814774a001 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_link.h | |||
@@ -0,0 +1,83 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_LINK_H | ||
22 | #define __MANTIS_LINK_H | ||
23 | |||
24 | #include <linux/mutex.h> | ||
25 | #include <linux/workqueue.h> | ||
26 | #include "dvb_ca_en50221.h" | ||
27 | |||
28 | enum mantis_sbuf_status { | ||
29 | MANTIS_SBUF_DATA_AVAIL = 1, | ||
30 | MANTIS_SBUF_DATA_EMPTY = 2, | ||
31 | MANTIS_SBUF_DATA_OVFLW = 3 | ||
32 | }; | ||
33 | |||
34 | struct mantis_slot { | ||
35 | u32 timeout; | ||
36 | u32 slave_cfg; | ||
37 | u32 bar; | ||
38 | }; | ||
39 | |||
40 | /* Physical layer */ | ||
41 | enum mantis_slot_state { | ||
42 | MODULE_INSERTED = 3, | ||
43 | MODULE_XTRACTED = 4 | ||
44 | }; | ||
45 | |||
46 | struct mantis_ca { | ||
47 | struct mantis_slot slot[4]; | ||
48 | |||
49 | struct work_struct hif_evm_work; | ||
50 | |||
51 | u32 hif_event; | ||
52 | wait_queue_head_t hif_opdone_wq; | ||
53 | wait_queue_head_t hif_brrdyw_wq; | ||
54 | wait_queue_head_t hif_data_wq; | ||
55 | wait_queue_head_t hif_write_wq; /* HIF Write op */ | ||
56 | |||
57 | enum mantis_sbuf_status sbuf_status; | ||
58 | |||
59 | enum mantis_slot_state slot_state; | ||
60 | |||
61 | void *ca_priv; | ||
62 | |||
63 | struct dvb_ca_en50221 en50221; | ||
64 | struct mutex ca_lock; | ||
65 | }; | ||
66 | |||
67 | /* CA */ | ||
68 | extern void mantis_event_cam_plugin(struct mantis_ca *ca); | ||
69 | extern void mantis_event_cam_unplug(struct mantis_ca *ca); | ||
70 | extern int mantis_pcmcia_init(struct mantis_ca *ca); | ||
71 | extern void mantis_pcmcia_exit(struct mantis_ca *ca); | ||
72 | extern int mantis_evmgr_init(struct mantis_ca *ca); | ||
73 | extern void mantis_evmgr_exit(struct mantis_ca *ca); | ||
74 | |||
75 | /* HIF */ | ||
76 | extern int mantis_hif_init(struct mantis_ca *ca); | ||
77 | extern void mantis_hif_exit(struct mantis_ca *ca); | ||
78 | extern int mantis_hif_read_mem(struct mantis_ca *ca, u32 addr); | ||
79 | extern int mantis_hif_write_mem(struct mantis_ca *ca, u32 addr, u8 data); | ||
80 | extern int mantis_hif_read_iom(struct mantis_ca *ca, u32 addr); | ||
81 | extern int mantis_hif_write_iom(struct mantis_ca *ca, u32 addr, u8 data); | ||
82 | |||
83 | #endif /* __MANTIS_LINK_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_pci.c b/drivers/media/dvb/mantis/mantis_pci.c new file mode 100644 index 000000000000..6c7534af6b44 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_pci.c | |||
@@ -0,0 +1,177 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/module.h> | ||
22 | #include <linux/moduleparam.h> | ||
23 | #include <linux/kernel.h> | ||
24 | #include <asm/io.h> | ||
25 | #include <asm/pgtable.h> | ||
26 | #include <asm/page.h> | ||
27 | #include <linux/kmod.h> | ||
28 | #include <linux/vmalloc.h> | ||
29 | #include <linux/init.h> | ||
30 | #include <linux/device.h> | ||
31 | #include <linux/pci.h> | ||
32 | |||
33 | #include <asm/irq.h> | ||
34 | #include <linux/signal.h> | ||
35 | #include <linux/sched.h> | ||
36 | #include <linux/interrupt.h> | ||
37 | |||
38 | #include "dmxdev.h" | ||
39 | #include "dvbdev.h" | ||
40 | #include "dvb_demux.h" | ||
41 | #include "dvb_frontend.h" | ||
42 | #include "dvb_net.h" | ||
43 | |||
44 | #include <asm/irq.h> | ||
45 | #include <linux/signal.h> | ||
46 | #include <linux/sched.h> | ||
47 | #include <linux/interrupt.h> | ||
48 | |||
49 | #include "mantis_common.h" | ||
50 | #include "mantis_reg.h" | ||
51 | #include "mantis_pci.h" | ||
52 | |||
53 | #define DRIVER_NAME "Mantis Core" | ||
54 | |||
55 | int __devinit mantis_pci_init(struct mantis_pci *mantis) | ||
56 | { | ||
57 | u8 revision, latency; | ||
58 | struct mantis_hwconfig *config = mantis->hwconfig; | ||
59 | struct pci_dev *pdev = mantis->pdev; | ||
60 | int err, ret = 0; | ||
61 | |||
62 | dprintk(MANTIS_ERROR, 0, "found a %s PCI %s device on (%02x:%02x.%x),\n", | ||
63 | config->model_name, | ||
64 | config->dev_type, | ||
65 | mantis->pdev->bus->number, | ||
66 | PCI_SLOT(mantis->pdev->devfn), | ||
67 | PCI_FUNC(mantis->pdev->devfn)); | ||
68 | |||
69 | err = pci_enable_device(pdev); | ||
70 | if (err != 0) { | ||
71 | ret = -ENODEV; | ||
72 | dprintk(MANTIS_ERROR, 1, "ERROR: PCI enable failed <%i>", err); | ||
73 | goto fail0; | ||
74 | } | ||
75 | |||
76 | err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)); | ||
77 | if (err != 0) { | ||
78 | dprintk(MANTIS_ERROR, 1, "ERROR: Unable to obtain 32 bit DMA <%i>", err); | ||
79 | ret = -ENOMEM; | ||
80 | goto fail1; | ||
81 | } | ||
82 | |||
83 | pci_set_master(pdev); | ||
84 | |||
85 | if (!request_mem_region(pci_resource_start(pdev, 0), | ||
86 | pci_resource_len(pdev, 0), | ||
87 | DRIVER_NAME)) { | ||
88 | |||
89 | dprintk(MANTIS_ERROR, 1, "ERROR: BAR0 Request failed !"); | ||
90 | ret = -ENODEV; | ||
91 | goto fail1; | ||
92 | } | ||
93 | |||
94 | mantis->mmio = ioremap(pci_resource_start(pdev, 0), | ||
95 | pci_resource_len(pdev, 0)); | ||
96 | |||
97 | if (!mantis->mmio) { | ||
98 | dprintk(MANTIS_ERROR, 1, "ERROR: BAR0 remap failed !"); | ||
99 | ret = -ENODEV; | ||
100 | goto fail2; | ||
101 | } | ||
102 | |||
103 | pci_read_config_byte(pdev, PCI_LATENCY_TIMER, &latency); | ||
104 | pci_read_config_byte(pdev, PCI_CLASS_REVISION, &revision); | ||
105 | mantis->latency = latency; | ||
106 | mantis->revision = revision; | ||
107 | |||
108 | dprintk(MANTIS_ERROR, 0, " Mantis Rev %d [%04x:%04x], ", | ||
109 | mantis->revision, | ||
110 | mantis->pdev->subsystem_vendor, | ||
111 | mantis->pdev->subsystem_device); | ||
112 | |||
113 | dprintk(MANTIS_ERROR, 0, | ||
114 | "irq: %d, latency: %d\n memory: 0x%lx, mmio: 0x%p\n", | ||
115 | mantis->pdev->irq, | ||
116 | mantis->latency, | ||
117 | mantis->mantis_addr, | ||
118 | mantis->mmio); | ||
119 | |||
120 | err = request_irq(pdev->irq, | ||
121 | config->irq_handler, | ||
122 | IRQF_SHARED, | ||
123 | DRIVER_NAME, | ||
124 | mantis); | ||
125 | |||
126 | if (err != 0) { | ||
127 | |||
128 | dprintk(MANTIS_ERROR, 1, "ERROR: IRQ registration failed ! <%d>", err); | ||
129 | ret = -ENODEV; | ||
130 | goto fail3; | ||
131 | } | ||
132 | |||
133 | pci_set_drvdata(pdev, mantis); | ||
134 | return ret; | ||
135 | |||
136 | /* Error conditions */ | ||
137 | fail3: | ||
138 | dprintk(MANTIS_ERROR, 1, "ERROR: <%d> I/O unmap", ret); | ||
139 | if (mantis->mmio) | ||
140 | iounmap(mantis->mmio); | ||
141 | |||
142 | fail2: | ||
143 | dprintk(MANTIS_ERROR, 1, "ERROR: <%d> releasing regions", ret); | ||
144 | release_mem_region(pci_resource_start(pdev, 0), | ||
145 | pci_resource_len(pdev, 0)); | ||
146 | |||
147 | fail1: | ||
148 | dprintk(MANTIS_ERROR, 1, "ERROR: <%d> disabling device", ret); | ||
149 | pci_disable_device(pdev); | ||
150 | |||
151 | fail0: | ||
152 | dprintk(MANTIS_ERROR, 1, "ERROR: <%d> exiting", ret); | ||
153 | pci_set_drvdata(pdev, NULL); | ||
154 | return ret; | ||
155 | } | ||
156 | EXPORT_SYMBOL_GPL(mantis_pci_init); | ||
157 | |||
158 | void mantis_pci_exit(struct mantis_pci *mantis) | ||
159 | { | ||
160 | struct pci_dev *pdev = mantis->pdev; | ||
161 | |||
162 | dprintk(MANTIS_NOTICE, 1, " mem: 0x%p", mantis->mmio); | ||
163 | free_irq(pdev->irq, mantis); | ||
164 | if (mantis->mmio) { | ||
165 | iounmap(mantis->mmio); | ||
166 | release_mem_region(pci_resource_start(pdev, 0), | ||
167 | pci_resource_len(pdev, 0)); | ||
168 | } | ||
169 | |||
170 | pci_disable_device(pdev); | ||
171 | pci_set_drvdata(pdev, NULL); | ||
172 | } | ||
173 | EXPORT_SYMBOL_GPL(mantis_pci_exit); | ||
174 | |||
175 | MODULE_DESCRIPTION("Mantis PCI DTV bridge driver"); | ||
176 | MODULE_AUTHOR("Manu Abraham"); | ||
177 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/media/dvb/mantis/mantis_pci.h b/drivers/media/dvb/mantis/mantis_pci.h new file mode 100644 index 000000000000..65f004519086 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_pci.h | |||
@@ -0,0 +1,27 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_PCI_H | ||
22 | #define __MANTIS_PCI_H | ||
23 | |||
24 | extern int mantis_pci_init(struct mantis_pci *mantis); | ||
25 | extern void mantis_pci_exit(struct mantis_pci *mantis); | ||
26 | |||
27 | #endif /* __MANTIS_PCI_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_pcmcia.c b/drivers/media/dvb/mantis/mantis_pcmcia.c new file mode 100644 index 000000000000..5cb545b913f6 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_pcmcia.c | |||
@@ -0,0 +1,120 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/kernel.h> | ||
22 | |||
23 | #include <linux/signal.h> | ||
24 | #include <linux/sched.h> | ||
25 | #include <linux/interrupt.h> | ||
26 | |||
27 | #include "dmxdev.h" | ||
28 | #include "dvbdev.h" | ||
29 | #include "dvb_demux.h" | ||
30 | #include "dvb_frontend.h" | ||
31 | #include "dvb_net.h" | ||
32 | |||
33 | #include "mantis_common.h" | ||
34 | #include "mantis_link.h" /* temporary due to physical layer stuff */ | ||
35 | #include "mantis_reg.h" | ||
36 | |||
37 | /* | ||
38 | * If Slot state is already PLUG_IN event and we are called | ||
39 | * again, definitely it is jitter alone | ||
40 | */ | ||
41 | void mantis_event_cam_plugin(struct mantis_ca *ca) | ||
42 | { | ||
43 | struct mantis_pci *mantis = ca->ca_priv; | ||
44 | |||
45 | u32 gpif_irqcfg; | ||
46 | |||
47 | if (ca->slot_state == MODULE_XTRACTED) { | ||
48 | dprintk(MANTIS_DEBUG, 1, "Event: CAM Plugged IN: Adapter(%d) Slot(0)", mantis->num); | ||
49 | udelay(50); | ||
50 | mmwrite(0xda000000, MANTIS_CARD_RESET); | ||
51 | gpif_irqcfg = mmread(MANTIS_GPIF_IRQCFG); | ||
52 | gpif_irqcfg |= MANTIS_MASK_PLUGOUT; | ||
53 | gpif_irqcfg &= ~MANTIS_MASK_PLUGIN; | ||
54 | mmwrite(gpif_irqcfg, MANTIS_GPIF_IRQCFG); | ||
55 | udelay(500); | ||
56 | ca->slot_state = MODULE_INSERTED; | ||
57 | } | ||
58 | udelay(100); | ||
59 | } | ||
60 | |||
61 | /* | ||
62 | * If Slot state is already UN_PLUG event and we are called | ||
63 | * again, definitely it is jitter alone | ||
64 | */ | ||
65 | void mantis_event_cam_unplug(struct mantis_ca *ca) | ||
66 | { | ||
67 | struct mantis_pci *mantis = ca->ca_priv; | ||
68 | |||
69 | u32 gpif_irqcfg; | ||
70 | |||
71 | if (ca->slot_state == MODULE_INSERTED) { | ||
72 | dprintk(MANTIS_DEBUG, 1, "Event: CAM Unplugged: Adapter(%d) Slot(0)", mantis->num); | ||
73 | udelay(50); | ||
74 | mmwrite(0x00da0000, MANTIS_CARD_RESET); | ||
75 | gpif_irqcfg = mmread(MANTIS_GPIF_IRQCFG); | ||
76 | gpif_irqcfg |= MANTIS_MASK_PLUGIN; | ||
77 | gpif_irqcfg &= ~MANTIS_MASK_PLUGOUT; | ||
78 | mmwrite(gpif_irqcfg, MANTIS_GPIF_IRQCFG); | ||
79 | udelay(500); | ||
80 | ca->slot_state = MODULE_XTRACTED; | ||
81 | } | ||
82 | udelay(100); | ||
83 | } | ||
84 | |||
85 | int mantis_pcmcia_init(struct mantis_ca *ca) | ||
86 | { | ||
87 | struct mantis_pci *mantis = ca->ca_priv; | ||
88 | |||
89 | u32 gpif_stat, card_stat; | ||
90 | |||
91 | mmwrite(mmread(MANTIS_INT_MASK) | MANTIS_INT_IRQ0, MANTIS_INT_MASK); | ||
92 | gpif_stat = mmread(MANTIS_GPIF_STATUS); | ||
93 | card_stat = mmread(MANTIS_GPIF_IRQCFG); | ||
94 | |||
95 | if (gpif_stat & MANTIS_GPIF_DETSTAT) { | ||
96 | dprintk(MANTIS_DEBUG, 1, "CAM found on Adapter(%d) Slot(0)", mantis->num); | ||
97 | mmwrite(card_stat | MANTIS_MASK_PLUGOUT, MANTIS_GPIF_IRQCFG); | ||
98 | ca->slot_state = MODULE_INSERTED; | ||
99 | dvb_ca_en50221_camchange_irq(&ca->en50221, | ||
100 | 0, | ||
101 | DVB_CA_EN50221_CAMCHANGE_INSERTED); | ||
102 | } else { | ||
103 | dprintk(MANTIS_DEBUG, 1, "Empty Slot on Adapter(%d) Slot(0)", mantis->num); | ||
104 | mmwrite(card_stat | MANTIS_MASK_PLUGIN, MANTIS_GPIF_IRQCFG); | ||
105 | ca->slot_state = MODULE_XTRACTED; | ||
106 | dvb_ca_en50221_camchange_irq(&ca->en50221, | ||
107 | 0, | ||
108 | DVB_CA_EN50221_CAMCHANGE_REMOVED); | ||
109 | } | ||
110 | |||
111 | return 0; | ||
112 | } | ||
113 | |||
114 | void mantis_pcmcia_exit(struct mantis_ca *ca) | ||
115 | { | ||
116 | struct mantis_pci *mantis = ca->ca_priv; | ||
117 | |||
118 | mmwrite(mmread(MANTIS_GPIF_STATUS) & (~MANTIS_CARD_PLUGOUT | ~MANTIS_CARD_PLUGIN), MANTIS_GPIF_STATUS); | ||
119 | mmwrite(mmread(MANTIS_INT_MASK) & ~MANTIS_INT_IRQ0, MANTIS_INT_MASK); | ||
120 | } | ||
diff --git a/drivers/media/dvb/mantis/mantis_reg.h b/drivers/media/dvb/mantis/mantis_reg.h new file mode 100644 index 000000000000..7761f9dc7fe0 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_reg.h | |||
@@ -0,0 +1,197 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_REG_H | ||
22 | #define __MANTIS_REG_H | ||
23 | |||
24 | /* Interrupts */ | ||
25 | #define MANTIS_INT_STAT 0x00 | ||
26 | #define MANTIS_INT_MASK 0x04 | ||
27 | |||
28 | #define MANTIS_INT_RISCSTAT (0x0f << 28) | ||
29 | #define MANTIS_INT_RISCEN (0x01 << 27) | ||
30 | #define MANTIS_INT_I2CRACK (0x01 << 26) | ||
31 | |||
32 | /* #define MANTIS_INT_GPIF (0xff << 12) */ | ||
33 | |||
34 | #define MANTIS_INT_PCMCIA7 (0x01 << 19) | ||
35 | #define MANTIS_INT_PCMCIA6 (0x01 << 18) | ||
36 | #define MANTIS_INT_PCMCIA5 (0x01 << 17) | ||
37 | #define MANTIS_INT_PCMCIA4 (0x01 << 16) | ||
38 | #define MANTIS_INT_PCMCIA3 (0x01 << 15) | ||
39 | #define MANTIS_INT_PCMCIA2 (0x01 << 14) | ||
40 | #define MANTIS_INT_PCMCIA1 (0x01 << 13) | ||
41 | #define MANTIS_INT_PCMCIA0 (0x01 << 12) | ||
42 | #define MANTIS_INT_IRQ1 (0x01 << 11) | ||
43 | #define MANTIS_INT_IRQ0 (0x01 << 10) | ||
44 | #define MANTIS_INT_OCERR (0x01 << 8) | ||
45 | #define MANTIS_INT_PABORT (0x01 << 7) | ||
46 | #define MANTIS_INT_RIPERR (0x01 << 6) | ||
47 | #define MANTIS_INT_PPERR (0x01 << 5) | ||
48 | #define MANTIS_INT_FTRGT (0x01 << 3) | ||
49 | #define MANTIS_INT_RISCI (0x01 << 1) | ||
50 | #define MANTIS_INT_I2CDONE (0x01 << 0) | ||
51 | |||
52 | /* DMA */ | ||
53 | #define MANTIS_DMA_CTL 0x08 | ||
54 | #define MANTIS_GPIF_RD (0xff << 24) | ||
55 | #define MANTIS_GPIF_WR (0xff << 16) | ||
56 | #define MANTIS_CPU_DO (0x01 << 10) | ||
57 | #define MANTIS_DRV_DO (0x01 << 9) | ||
58 | #define MANTIS_I2C_RD (0x01 << 7) | ||
59 | #define MANTIS_I2C_WR (0x01 << 6) | ||
60 | #define MANTIS_DCAP_MODE (0x01 << 5) | ||
61 | #define MANTIS_FIFO_TP_4 (0x00 << 3) | ||
62 | #define MANTIS_FIFO_TP_8 (0x01 << 3) | ||
63 | #define MANTIS_FIFO_TP_16 (0x02 << 3) | ||
64 | #define MANTIS_FIFO_EN (0x01 << 2) | ||
65 | #define MANTIS_DCAP_EN (0x01 << 1) | ||
66 | #define MANTIS_RISC_EN (0x01 << 0) | ||
67 | |||
68 | /* DEBUG */ | ||
69 | #define MANTIS_DEBUGREG 0x0c | ||
70 | #define MANTIS_DATINV (0x0e << 7) | ||
71 | #define MANTIS_TOP_DEBUGSEL (0x07 << 4) | ||
72 | #define MANTIS_PCMCIA_DEBUGSEL (0x0f << 0) | ||
73 | |||
74 | #define MANTIS_RISC_START 0x10 | ||
75 | #define MANTIS_RISC_PC 0x14 | ||
76 | |||
77 | /* I2C */ | ||
78 | #define MANTIS_I2CDATA_CTL 0x18 | ||
79 | #define MANTIS_I2C_RATE_1 (0x00 << 6) | ||
80 | #define MANTIS_I2C_RATE_2 (0x01 << 6) | ||
81 | #define MANTIS_I2C_RATE_3 (0x02 << 6) | ||
82 | #define MANTIS_I2C_RATE_4 (0x03 << 6) | ||
83 | #define MANTIS_I2C_STOP (0x01 << 5) | ||
84 | #define MANTIS_I2C_PGMODE (0x01 << 3) | ||
85 | |||
86 | /* DATA */ | ||
87 | #define MANTIS_CMD_DATA_R1 0x20 | ||
88 | #define MANTIS_CMD_DATA_3 (0xff << 24) | ||
89 | #define MANTIS_CMD_DATA_2 (0xff << 16) | ||
90 | #define MANTIS_CMD_DATA_1 (0xff << 8) | ||
91 | #define MANTIS_CMD_DATA_0 (0xff << 0) | ||
92 | |||
93 | #define MANTIS_CMD_DATA_R2 0x24 | ||
94 | #define MANTIS_CMD_DATA_7 (0xff << 24) | ||
95 | #define MANTIS_CMD_DATA_6 (0xff << 16) | ||
96 | #define MANTIS_CMD_DATA_5 (0xff << 8) | ||
97 | #define MANTIS_CMD_DATA_4 (0xff << 0) | ||
98 | |||
99 | #define MANTIS_CONTROL 0x28 | ||
100 | #define MANTIS_DET (0x01 << 7) | ||
101 | #define MANTIS_DAT_CF_EN (0x01 << 6) | ||
102 | #define MANTIS_ACS (0x03 << 4) | ||
103 | #define MANTIS_VCCEN (0x01 << 3) | ||
104 | #define MANTIS_BYPASS (0x01 << 2) | ||
105 | #define MANTIS_MRST (0x01 << 1) | ||
106 | #define MANTIS_CRST_INT (0x01 << 0) | ||
107 | |||
108 | #define MANTIS_GPIF_CFGSLA 0x84 | ||
109 | #define MANTIS_GPIF_WAITSMPL (0x07 << 28) | ||
110 | #define MANTIS_GPIF_BYTEADDRSUB (0x01 << 25) | ||
111 | #define MANTIS_GPIF_WAITPOL (0x01 << 24) | ||
112 | #define MANTIS_GPIF_NCDELAY (0x07 << 20) | ||
113 | #define MANTIS_GPIF_RW2CSDELAY (0x07 << 16) | ||
114 | #define MANTIS_GPIF_SLFTIMEDMODE (0x01 << 15) | ||
115 | #define MANTIS_GPIF_SLFTIMEDDELY (0x7f << 8) | ||
116 | #define MANTIS_GPIF_DEVTYPE (0x07 << 4) | ||
117 | #define MANTIS_GPIF_BIGENDIAN (0x01 << 3) | ||
118 | #define MANTIS_GPIF_FETCHCMD (0x03 << 1) | ||
119 | #define MANTIS_GPIF_HWORDDEV (0x01 << 0) | ||
120 | |||
121 | #define MANTIS_GPIF_WSTOPER 0x90 | ||
122 | #define MANTIS_GPIF_WSTOPERWREN3 (0x01 << 31) | ||
123 | #define MANTIS_GPIF_PARBOOTN (0x01 << 29) | ||
124 | #define MANTIS_GPIF_WSTOPERSLID3 (0x1f << 24) | ||
125 | #define MANTIS_GPIF_WSTOPERWREN2 (0x01 << 23) | ||
126 | #define MANTIS_GPIF_WSTOPERSLID2 (0x1f << 16) | ||
127 | #define MANTIS_GPIF_WSTOPERWREN1 (0x01 << 15) | ||
128 | #define MANTIS_GPIF_WSTOPERSLID1 (0x1f << 8) | ||
129 | #define MANTIS_GPIF_WSTOPERWREN0 (0x01 << 7) | ||
130 | #define MANTIS_GPIF_WSTOPERSLID0 (0x1f << 0) | ||
131 | |||
132 | #define MANTIS_GPIF_CS2RW 0x94 | ||
133 | #define MANTIS_GPIF_CS2RWWREN3 (0x01 << 31) | ||
134 | #define MANTIS_GPIF_CS2RWDELY3 (0x3f << 24) | ||
135 | #define MANTIS_GPIF_CS2RWWREN2 (0x01 << 23) | ||
136 | #define MANTIS_GPIF_CS2RWDELY2 (0x3f << 16) | ||
137 | #define MANTIS_GPIF_CS2RWWREN1 (0x01 << 15) | ||
138 | #define MANTIS_GPIF_CS2RWDELY1 (0x3f << 8) | ||
139 | #define MANTIS_GPIF_CS2RWWREN0 (0x01 << 7) | ||
140 | #define MANTIS_GPIF_CS2RWDELY0 (0x3f << 0) | ||
141 | |||
142 | #define MANTIS_GPIF_IRQCFG 0x98 | ||
143 | #define MANTIS_GPIF_IRQPOL (0x01 << 8) | ||
144 | #define MANTIS_MASK_WRACK (0x01 << 7) | ||
145 | #define MANTIS_MASK_BRRDY (0x01 << 6) | ||
146 | #define MANTIS_MASK_OVFLW (0x01 << 5) | ||
147 | #define MANTIS_MASK_OTHERR (0x01 << 4) | ||
148 | #define MANTIS_MASK_WSTO (0x01 << 3) | ||
149 | #define MANTIS_MASK_EXTIRQ (0x01 << 2) | ||
150 | #define MANTIS_MASK_PLUGIN (0x01 << 1) | ||
151 | #define MANTIS_MASK_PLUGOUT (0x01 << 0) | ||
152 | |||
153 | #define MANTIS_GPIF_STATUS 0x9c | ||
154 | #define MANTIS_SBUF_KILLOP (0x01 << 15) | ||
155 | #define MANTIS_SBUF_OPDONE (0x01 << 14) | ||
156 | #define MANTIS_SBUF_EMPTY (0x01 << 13) | ||
157 | #define MANTIS_GPIF_DETSTAT (0x01 << 9) | ||
158 | #define MANTIS_GPIF_INTSTAT (0x01 << 8) | ||
159 | #define MANTIS_GPIF_WRACK (0x01 << 7) | ||
160 | #define MANTIS_GPIF_BRRDY (0x01 << 6) | ||
161 | #define MANTIS_SBUF_OVFLW (0x01 << 5) | ||
162 | #define MANTIS_GPIF_OTHERR (0x01 << 4) | ||
163 | #define MANTIS_SBUF_WSTO (0x01 << 3) | ||
164 | #define MANTIS_GPIF_EXTIRQ (0x01 << 2) | ||
165 | #define MANTIS_CARD_PLUGIN (0x01 << 1) | ||
166 | #define MANTIS_CARD_PLUGOUT (0x01 << 0) | ||
167 | |||
168 | #define MANTIS_GPIF_BRADDR 0xa0 | ||
169 | #define MANTIS_GPIF_PCMCIAREG (0x01 << 27) | ||
170 | #define MANTIS_GPIF_PCMCIAIOM (0x01 << 26) | ||
171 | #define MANTIS_GPIF_BR_ADDR (0xfffffff << 0) | ||
172 | |||
173 | #define MANTIS_GPIF_BRBYTES 0xa4 | ||
174 | #define MANTIS_GPIF_BRCNT (0xfff << 0) | ||
175 | |||
176 | #define MANTIS_PCMCIA_RESET 0xa8 | ||
177 | #define MANTIS_PCMCIA_RSTVAL (0xff << 0) | ||
178 | |||
179 | #define MANTIS_CARD_RESET 0xac | ||
180 | |||
181 | #define MANTIS_GPIF_ADDR 0xb0 | ||
182 | #define MANTIS_GPIF_HIFRDWRN (0x01 << 31) | ||
183 | #define MANTIS_GPIF_PCMCIAREG (0x01 << 27) | ||
184 | #define MANTIS_GPIF_PCMCIAIOM (0x01 << 26) | ||
185 | #define MANTIS_GPIF_HIFADDR (0xfffffff << 0) | ||
186 | |||
187 | #define MANTIS_GPIF_DOUT 0xb4 | ||
188 | #define MANTIS_GPIF_HIFDOUT (0xfffffff << 0) | ||
189 | |||
190 | #define MANTIS_GPIF_DIN 0xb8 | ||
191 | #define MANTIS_GPIF_HIFDIN (0xfffffff << 0) | ||
192 | |||
193 | #define MANTIS_GPIF_SPARE 0xbc | ||
194 | #define MANTIS_GPIF_LOGICRD (0xffff << 16) | ||
195 | #define MANTIS_GPIF_LOGICRW (0xffff << 0) | ||
196 | |||
197 | #endif /* __MANTIS_REG_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_uart.c b/drivers/media/dvb/mantis/mantis_uart.c new file mode 100644 index 000000000000..7d2f2398fa8b --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_uart.c | |||
@@ -0,0 +1,186 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/kernel.h> | ||
22 | #include <linux/spinlock.h> | ||
23 | |||
24 | #include <linux/signal.h> | ||
25 | #include <linux/sched.h> | ||
26 | #include <linux/interrupt.h> | ||
27 | |||
28 | #include "dmxdev.h" | ||
29 | #include "dvbdev.h" | ||
30 | #include "dvb_demux.h" | ||
31 | #include "dvb_frontend.h" | ||
32 | #include "dvb_net.h" | ||
33 | |||
34 | #include "mantis_common.h" | ||
35 | #include "mantis_reg.h" | ||
36 | #include "mantis_uart.h" | ||
37 | |||
38 | struct mantis_uart_params { | ||
39 | enum mantis_baud baud_rate; | ||
40 | enum mantis_parity parity; | ||
41 | }; | ||
42 | |||
43 | static struct { | ||
44 | char string[7]; | ||
45 | } rates[5] = { | ||
46 | { "9600" }, | ||
47 | { "19200" }, | ||
48 | { "38400" }, | ||
49 | { "57600" }, | ||
50 | { "115200" } | ||
51 | }; | ||
52 | |||
53 | static struct { | ||
54 | char string[5]; | ||
55 | } parity[3] = { | ||
56 | { "NONE" }, | ||
57 | { "ODD" }, | ||
58 | { "EVEN" } | ||
59 | }; | ||
60 | |||
61 | #define UART_MAX_BUF 16 | ||
62 | |||
63 | int mantis_uart_read(struct mantis_pci *mantis, u8 *data) | ||
64 | { | ||
65 | struct mantis_hwconfig *config = mantis->hwconfig; | ||
66 | u32 stat = 0, i; | ||
67 | |||
68 | /* get data */ | ||
69 | for (i = 0; i < (config->bytes + 1); i++) { | ||
70 | |||
71 | stat = mmread(MANTIS_UART_STAT); | ||
72 | |||
73 | if (stat & MANTIS_UART_RXFIFO_FULL) { | ||
74 | dprintk(MANTIS_ERROR, 1, "RX Fifo FULL"); | ||
75 | } | ||
76 | data[i] = mmread(MANTIS_UART_RXD) & 0x3f; | ||
77 | |||
78 | dprintk(MANTIS_DEBUG, 1, "Reading ... <%02x>", data[i] & 0x3f); | ||
79 | |||
80 | if (data[i] & (1 << 7)) { | ||
81 | dprintk(MANTIS_ERROR, 1, "UART framing error"); | ||
82 | return -EINVAL; | ||
83 | } | ||
84 | if (data[i] & (1 << 6)) { | ||
85 | dprintk(MANTIS_ERROR, 1, "UART parity error"); | ||
86 | return -EINVAL; | ||
87 | } | ||
88 | } | ||
89 | |||
90 | return 0; | ||
91 | } | ||
92 | |||
93 | static void mantis_uart_work(struct work_struct *work) | ||
94 | { | ||
95 | struct mantis_pci *mantis = container_of(work, struct mantis_pci, uart_work); | ||
96 | struct mantis_hwconfig *config = mantis->hwconfig; | ||
97 | u8 buf[16]; | ||
98 | int i; | ||
99 | |||
100 | mantis_uart_read(mantis, buf); | ||
101 | |||
102 | for (i = 0; i < (config->bytes + 1); i++) | ||
103 | dprintk(MANTIS_INFO, 1, "UART BUF:%d <%02x> ", i, buf[i]); | ||
104 | |||
105 | dprintk(MANTIS_DEBUG, 0, "\n"); | ||
106 | } | ||
107 | |||
108 | static int mantis_uart_setup(struct mantis_pci *mantis, | ||
109 | struct mantis_uart_params *params) | ||
110 | { | ||
111 | u32 reg; | ||
112 | |||
113 | mmwrite((mmread(MANTIS_UART_CTL) | (params->parity & 0x3)), MANTIS_UART_CTL); | ||
114 | |||
115 | reg = mmread(MANTIS_UART_BAUD); | ||
116 | |||
117 | switch (params->baud_rate) { | ||
118 | case MANTIS_BAUD_9600: | ||
119 | reg |= 0xd8; | ||
120 | break; | ||
121 | case MANTIS_BAUD_19200: | ||
122 | reg |= 0x6c; | ||
123 | break; | ||
124 | case MANTIS_BAUD_38400: | ||
125 | reg |= 0x36; | ||
126 | break; | ||
127 | case MANTIS_BAUD_57600: | ||
128 | reg |= 0x23; | ||
129 | break; | ||
130 | case MANTIS_BAUD_115200: | ||
131 | reg |= 0x11; | ||
132 | break; | ||
133 | default: | ||
134 | return -EINVAL; | ||
135 | } | ||
136 | |||
137 | mmwrite(reg, MANTIS_UART_BAUD); | ||
138 | |||
139 | return 0; | ||
140 | } | ||
141 | |||
142 | int mantis_uart_init(struct mantis_pci *mantis) | ||
143 | { | ||
144 | struct mantis_hwconfig *config = mantis->hwconfig; | ||
145 | struct mantis_uart_params params; | ||
146 | |||
147 | /* default parity: */ | ||
148 | params.baud_rate = config->baud_rate; | ||
149 | params.parity = config->parity; | ||
150 | dprintk(MANTIS_INFO, 1, "Initializing UART @ %sbps parity:%s", | ||
151 | rates[params.baud_rate].string, | ||
152 | parity[params.parity].string); | ||
153 | |||
154 | init_waitqueue_head(&mantis->uart_wq); | ||
155 | spin_lock_init(&mantis->uart_lock); | ||
156 | |||
157 | INIT_WORK(&mantis->uart_work, mantis_uart_work); | ||
158 | |||
159 | /* disable interrupt */ | ||
160 | mmwrite(mmread(MANTIS_UART_CTL) & 0xffef, MANTIS_UART_CTL); | ||
161 | |||
162 | mantis_uart_setup(mantis, ¶ms); | ||
163 | |||
164 | /* default 1 byte */ | ||
165 | mmwrite((mmread(MANTIS_UART_BAUD) | (config->bytes << 8)), MANTIS_UART_BAUD); | ||
166 | |||
167 | /* flush buffer */ | ||
168 | mmwrite((mmread(MANTIS_UART_CTL) | MANTIS_UART_RXFLUSH), MANTIS_UART_CTL); | ||
169 | |||
170 | /* enable interrupt */ | ||
171 | mmwrite(mmread(MANTIS_INT_MASK) | 0x800, MANTIS_INT_MASK); | ||
172 | mmwrite(mmread(MANTIS_UART_CTL) | MANTIS_UART_RXINT, MANTIS_UART_CTL); | ||
173 | |||
174 | schedule_work(&mantis->uart_work); | ||
175 | dprintk(MANTIS_DEBUG, 1, "UART succesfully initialized"); | ||
176 | |||
177 | return 0; | ||
178 | } | ||
179 | EXPORT_SYMBOL_GPL(mantis_uart_init); | ||
180 | |||
181 | void mantis_uart_exit(struct mantis_pci *mantis) | ||
182 | { | ||
183 | /* disable interrupt */ | ||
184 | mmwrite(mmread(MANTIS_UART_CTL) & 0xffef, MANTIS_UART_CTL); | ||
185 | } | ||
186 | EXPORT_SYMBOL_GPL(mantis_uart_exit); | ||
diff --git a/drivers/media/dvb/mantis/mantis_uart.h b/drivers/media/dvb/mantis/mantis_uart.h new file mode 100644 index 000000000000..ffb62a0a5a13 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_uart.h | |||
@@ -0,0 +1,58 @@ | |||
1 | /* | ||
2 | Mantis PCI bridge driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_UART_H | ||
22 | #define __MANTIS_UART_H | ||
23 | |||
24 | #define MANTIS_UART_CTL 0xe0 | ||
25 | #define MANTIS_UART_RXINT (1 << 4) | ||
26 | #define MANTIS_UART_RXFLUSH (1 << 2) | ||
27 | |||
28 | #define MANTIS_UART_RXD 0xe8 | ||
29 | #define MANTIS_UART_BAUD 0xec | ||
30 | |||
31 | #define MANTIS_UART_STAT 0xf0 | ||
32 | #define MANTIS_UART_RXFIFO_DATA (1 << 7) | ||
33 | #define MANTIS_UART_RXFIFO_EMPTY (1 << 6) | ||
34 | #define MANTIS_UART_RXFIFO_FULL (1 << 3) | ||
35 | #define MANTIS_UART_FRAME_ERR (1 << 2) | ||
36 | #define MANTIS_UART_PARITY_ERR (1 << 1) | ||
37 | #define MANTIS_UART_RXTHRESH_INT (1 << 0) | ||
38 | |||
39 | enum mantis_baud { | ||
40 | MANTIS_BAUD_9600 = 0, | ||
41 | MANTIS_BAUD_19200, | ||
42 | MANTIS_BAUD_38400, | ||
43 | MANTIS_BAUD_57600, | ||
44 | MANTIS_BAUD_115200 | ||
45 | }; | ||
46 | |||
47 | enum mantis_parity { | ||
48 | MANTIS_PARITY_NONE = 0, | ||
49 | MANTIS_PARITY_EVEN, | ||
50 | MANTIS_PARITY_ODD, | ||
51 | }; | ||
52 | |||
53 | struct mantis_pci; | ||
54 | |||
55 | extern int mantis_uart_init(struct mantis_pci *mantis); | ||
56 | extern void mantis_uart_exit(struct mantis_pci *mantis); | ||
57 | |||
58 | #endif /* __MANTIS_UART_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp1033.c b/drivers/media/dvb/mantis/mantis_vp1033.c new file mode 100644 index 000000000000..4a723bda0031 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp1033.c | |||
@@ -0,0 +1,212 @@ | |||
1 | /* | ||
2 | Mantis VP-1033 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/signal.h> | ||
22 | #include <linux/sched.h> | ||
23 | #include <linux/interrupt.h> | ||
24 | |||
25 | #include "dmxdev.h" | ||
26 | #include "dvbdev.h" | ||
27 | #include "dvb_demux.h" | ||
28 | #include "dvb_frontend.h" | ||
29 | #include "dvb_net.h" | ||
30 | |||
31 | #include "stv0299.h" | ||
32 | #include "mantis_common.h" | ||
33 | #include "mantis_ioc.h" | ||
34 | #include "mantis_dvb.h" | ||
35 | #include "mantis_vp1033.h" | ||
36 | #include "mantis_reg.h" | ||
37 | |||
38 | u8 lgtdqcs001f_inittab[] = { | ||
39 | 0x01, 0x15, | ||
40 | 0x02, 0x00, | ||
41 | 0x03, 0x00, | ||
42 | 0x04, 0x2a, | ||
43 | 0x05, 0x85, | ||
44 | 0x06, 0x02, | ||
45 | 0x07, 0x00, | ||
46 | 0x08, 0x00, | ||
47 | 0x0c, 0x01, | ||
48 | 0x0d, 0x81, | ||
49 | 0x0e, 0x44, | ||
50 | 0x0f, 0x94, | ||
51 | 0x10, 0x3c, | ||
52 | 0x11, 0x84, | ||
53 | 0x12, 0xb9, | ||
54 | 0x13, 0xb5, | ||
55 | 0x14, 0x4f, | ||
56 | 0x15, 0xc9, | ||
57 | 0x16, 0x80, | ||
58 | 0x17, 0x36, | ||
59 | 0x18, 0xfb, | ||
60 | 0x19, 0xcf, | ||
61 | 0x1a, 0xbc, | ||
62 | 0x1c, 0x2b, | ||
63 | 0x1d, 0x27, | ||
64 | 0x1e, 0x00, | ||
65 | 0x1f, 0x0b, | ||
66 | 0x20, 0xa1, | ||
67 | 0x21, 0x60, | ||
68 | 0x22, 0x00, | ||
69 | 0x23, 0x00, | ||
70 | 0x28, 0x00, | ||
71 | 0x29, 0x28, | ||
72 | 0x2a, 0x14, | ||
73 | 0x2b, 0x0f, | ||
74 | 0x2c, 0x09, | ||
75 | 0x2d, 0x05, | ||
76 | 0x31, 0x1f, | ||
77 | 0x32, 0x19, | ||
78 | 0x33, 0xfc, | ||
79 | 0x34, 0x13, | ||
80 | 0xff, 0xff, | ||
81 | }; | ||
82 | |||
83 | #define MANTIS_MODEL_NAME "VP-1033" | ||
84 | #define MANTIS_DEV_TYPE "DVB-S/DSS" | ||
85 | |||
86 | int lgtdqcs001f_tuner_set(struct dvb_frontend *fe, | ||
87 | struct dvb_frontend_parameters *params) | ||
88 | { | ||
89 | struct mantis_pci *mantis = fe->dvb->priv; | ||
90 | struct i2c_adapter *adapter = &mantis->adapter; | ||
91 | |||
92 | u8 buf[4]; | ||
93 | u32 div; | ||
94 | |||
95 | |||
96 | struct i2c_msg msg = {.addr = 0x61, .flags = 0, .buf = buf, .len = sizeof(buf)}; | ||
97 | |||
98 | div = params->frequency / 250; | ||
99 | |||
100 | buf[0] = (div >> 8) & 0x7f; | ||
101 | buf[1] = div & 0xff; | ||
102 | buf[2] = 0x83; | ||
103 | buf[3] = 0xc0; | ||
104 | |||
105 | if (params->frequency < 1531000) | ||
106 | buf[3] |= 0x04; | ||
107 | else | ||
108 | buf[3] &= ~0x04; | ||
109 | if (i2c_transfer(adapter, &msg, 1) < 0) { | ||
110 | dprintk(MANTIS_ERROR, 1, "Write: I2C Transfer failed"); | ||
111 | return -EIO; | ||
112 | } | ||
113 | msleep_interruptible(100); | ||
114 | |||
115 | return 0; | ||
116 | } | ||
117 | |||
118 | int lgtdqcs001f_set_symbol_rate(struct dvb_frontend *fe, | ||
119 | u32 srate, u32 ratio) | ||
120 | { | ||
121 | u8 aclk = 0; | ||
122 | u8 bclk = 0; | ||
123 | |||
124 | if (srate < 1500000) { | ||
125 | aclk = 0xb7; | ||
126 | bclk = 0x47; | ||
127 | } else if (srate < 3000000) { | ||
128 | aclk = 0xb7; | ||
129 | bclk = 0x4b; | ||
130 | } else if (srate < 7000000) { | ||
131 | aclk = 0xb7; | ||
132 | bclk = 0x4f; | ||
133 | } else if (srate < 14000000) { | ||
134 | aclk = 0xb7; | ||
135 | bclk = 0x53; | ||
136 | } else if (srate < 30000000) { | ||
137 | aclk = 0xb6; | ||
138 | bclk = 0x53; | ||
139 | } else if (srate < 45000000) { | ||
140 | aclk = 0xb4; | ||
141 | bclk = 0x51; | ||
142 | } | ||
143 | stv0299_writereg(fe, 0x13, aclk); | ||
144 | stv0299_writereg(fe, 0x14, bclk); | ||
145 | |||
146 | stv0299_writereg(fe, 0x1f, (ratio >> 16) & 0xff); | ||
147 | stv0299_writereg(fe, 0x20, (ratio >> 8) & 0xff); | ||
148 | stv0299_writereg(fe, 0x21, ratio & 0xf0); | ||
149 | |||
150 | return 0; | ||
151 | } | ||
152 | |||
153 | struct stv0299_config lgtdqcs001f_config = { | ||
154 | .demod_address = 0x68, | ||
155 | .inittab = lgtdqcs001f_inittab, | ||
156 | .mclk = 88000000UL, | ||
157 | .invert = 0, | ||
158 | .skip_reinit = 0, | ||
159 | .volt13_op0_op1 = STV0299_VOLT13_OP0, | ||
160 | .min_delay_ms = 100, | ||
161 | .set_symbol_rate = lgtdqcs001f_set_symbol_rate, | ||
162 | }; | ||
163 | |||
164 | static int vp1033_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe) | ||
165 | { | ||
166 | struct i2c_adapter *adapter = &mantis->adapter; | ||
167 | |||
168 | int err = 0; | ||
169 | |||
170 | err = mantis_frontend_power(mantis, POWER_ON); | ||
171 | if (err == 0) { | ||
172 | mantis_frontend_soft_reset(mantis); | ||
173 | msleep(250); | ||
174 | |||
175 | dprintk(MANTIS_ERROR, 1, "Probing for STV0299 (DVB-S)"); | ||
176 | fe = stv0299_attach(&lgtdqcs001f_config, adapter); | ||
177 | |||
178 | if (fe) { | ||
179 | fe->ops.tuner_ops.set_params = lgtdqcs001f_tuner_set; | ||
180 | dprintk(MANTIS_ERROR, 1, "found STV0299 DVB-S frontend @ 0x%02x", | ||
181 | lgtdqcs001f_config.demod_address); | ||
182 | |||
183 | dprintk(MANTIS_ERROR, 1, "Mantis DVB-S STV0299 frontend attach success"); | ||
184 | } else { | ||
185 | return -1; | ||
186 | } | ||
187 | } else { | ||
188 | dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>", | ||
189 | adapter->name, | ||
190 | err); | ||
191 | |||
192 | return -EIO; | ||
193 | } | ||
194 | mantis->fe = fe; | ||
195 | dprintk(MANTIS_ERROR, 1, "Done!"); | ||
196 | |||
197 | return 0; | ||
198 | } | ||
199 | |||
200 | struct mantis_hwconfig vp1033_config = { | ||
201 | .model_name = MANTIS_MODEL_NAME, | ||
202 | .dev_type = MANTIS_DEV_TYPE, | ||
203 | .ts_size = MANTIS_TS_204, | ||
204 | |||
205 | .baud_rate = MANTIS_BAUD_9600, | ||
206 | .parity = MANTIS_PARITY_NONE, | ||
207 | .bytes = 0, | ||
208 | |||
209 | .frontend_init = vp1033_frontend_init, | ||
210 | .power = GPIF_A12, | ||
211 | .reset = GPIF_A13, | ||
212 | }; | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp1033.h b/drivers/media/dvb/mantis/mantis_vp1033.h new file mode 100644 index 000000000000..7daaa1bf127d --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp1033.h | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | Mantis VP-1033 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_VP1033_H | ||
22 | #define __MANTIS_VP1033_H | ||
23 | |||
24 | #include "mantis_common.h" | ||
25 | |||
26 | #define MANTIS_VP_1033_DVB_S 0x0016 | ||
27 | |||
28 | extern struct mantis_hwconfig vp1033_config; | ||
29 | |||
30 | #endif /* __MANTIS_VP1033_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp1034.c b/drivers/media/dvb/mantis/mantis_vp1034.c new file mode 100644 index 000000000000..8e6ae558ee57 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp1034.c | |||
@@ -0,0 +1,119 @@ | |||
1 | /* | ||
2 | Mantis VP-1034 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/signal.h> | ||
22 | #include <linux/sched.h> | ||
23 | #include <linux/interrupt.h> | ||
24 | |||
25 | #include "dmxdev.h" | ||
26 | #include "dvbdev.h" | ||
27 | #include "dvb_demux.h" | ||
28 | #include "dvb_frontend.h" | ||
29 | #include "dvb_net.h" | ||
30 | |||
31 | #include "mb86a16.h" | ||
32 | #include "mantis_common.h" | ||
33 | #include "mantis_ioc.h" | ||
34 | #include "mantis_dvb.h" | ||
35 | #include "mantis_vp1034.h" | ||
36 | #include "mantis_reg.h" | ||
37 | |||
38 | struct mb86a16_config vp1034_mb86a16_config = { | ||
39 | .demod_address = 0x08, | ||
40 | .set_voltage = vp1034_set_voltage, | ||
41 | }; | ||
42 | |||
43 | #define MANTIS_MODEL_NAME "VP-1034" | ||
44 | #define MANTIS_DEV_TYPE "DVB-S/DSS" | ||
45 | |||
46 | int vp1034_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) | ||
47 | { | ||
48 | struct mantis_pci *mantis = fe->dvb->priv; | ||
49 | |||
50 | switch (voltage) { | ||
51 | case SEC_VOLTAGE_13: | ||
52 | dprintk(MANTIS_ERROR, 1, "Polarization=[13V]"); | ||
53 | gpio_set_bits(mantis, 13, 1); | ||
54 | gpio_set_bits(mantis, 14, 0); | ||
55 | break; | ||
56 | case SEC_VOLTAGE_18: | ||
57 | dprintk(MANTIS_ERROR, 1, "Polarization=[18V]"); | ||
58 | gpio_set_bits(mantis, 13, 1); | ||
59 | gpio_set_bits(mantis, 14, 1); | ||
60 | break; | ||
61 | case SEC_VOLTAGE_OFF: | ||
62 | dprintk(MANTIS_ERROR, 1, "Frontend (dummy) POWERDOWN"); | ||
63 | break; | ||
64 | default: | ||
65 | dprintk(MANTIS_ERROR, 1, "Invalid = (%d)", (u32) voltage); | ||
66 | return -EINVAL; | ||
67 | } | ||
68 | mmwrite(0x00, MANTIS_GPIF_DOUT); | ||
69 | |||
70 | return 0; | ||
71 | } | ||
72 | |||
73 | static int vp1034_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe) | ||
74 | { | ||
75 | struct i2c_adapter *adapter = &mantis->adapter; | ||
76 | |||
77 | int err = 0; | ||
78 | |||
79 | err = mantis_frontend_power(mantis, POWER_ON); | ||
80 | if (err == 0) { | ||
81 | mantis_frontend_soft_reset(mantis); | ||
82 | msleep(250); | ||
83 | |||
84 | dprintk(MANTIS_ERROR, 1, "Probing for MB86A16 (DVB-S/DSS)"); | ||
85 | fe = mb86a16_attach(&vp1034_mb86a16_config, adapter); | ||
86 | if (fe) { | ||
87 | dprintk(MANTIS_ERROR, 1, | ||
88 | "found MB86A16 DVB-S/DSS frontend @0x%02x", | ||
89 | vp1034_mb86a16_config.demod_address); | ||
90 | |||
91 | } else { | ||
92 | return -1; | ||
93 | } | ||
94 | } else { | ||
95 | dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>", | ||
96 | adapter->name, | ||
97 | err); | ||
98 | |||
99 | return -EIO; | ||
100 | } | ||
101 | mantis->fe = fe; | ||
102 | dprintk(MANTIS_ERROR, 1, "Done!"); | ||
103 | |||
104 | return 0; | ||
105 | } | ||
106 | |||
107 | struct mantis_hwconfig vp1034_config = { | ||
108 | .model_name = MANTIS_MODEL_NAME, | ||
109 | .dev_type = MANTIS_DEV_TYPE, | ||
110 | .ts_size = MANTIS_TS_204, | ||
111 | |||
112 | .baud_rate = MANTIS_BAUD_9600, | ||
113 | .parity = MANTIS_PARITY_NONE, | ||
114 | .bytes = 0, | ||
115 | |||
116 | .frontend_init = vp1034_frontend_init, | ||
117 | .power = GPIF_A12, | ||
118 | .reset = GPIF_A13, | ||
119 | }; | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp1034.h b/drivers/media/dvb/mantis/mantis_vp1034.h new file mode 100644 index 000000000000..323f38ef8e3d --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp1034.h | |||
@@ -0,0 +1,33 @@ | |||
1 | /* | ||
2 | Mantis VP-1034 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_VP1034_H | ||
22 | #define __MANTIS_VP1034_H | ||
23 | |||
24 | #include "dvb_frontend.h" | ||
25 | #include "mantis_common.h" | ||
26 | |||
27 | |||
28 | #define MANTIS_VP_1034_DVB_S 0x0014 | ||
29 | |||
30 | extern struct mantis_hwconfig vp1034_config; | ||
31 | extern int vp1034_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage); | ||
32 | |||
33 | #endif /* __MANTIS_VP1034_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp1041.c b/drivers/media/dvb/mantis/mantis_vp1041.c new file mode 100644 index 000000000000..515346dd31d0 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp1041.c | |||
@@ -0,0 +1,358 @@ | |||
1 | /* | ||
2 | Mantis VP-1041 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/signal.h> | ||
22 | #include <linux/sched.h> | ||
23 | #include <linux/interrupt.h> | ||
24 | |||
25 | #include "dmxdev.h" | ||
26 | #include "dvbdev.h" | ||
27 | #include "dvb_demux.h" | ||
28 | #include "dvb_frontend.h" | ||
29 | #include "dvb_net.h" | ||
30 | |||
31 | #include "mantis_common.h" | ||
32 | #include "mantis_ioc.h" | ||
33 | #include "mantis_dvb.h" | ||
34 | #include "mantis_vp1041.h" | ||
35 | #include "stb0899_reg.h" | ||
36 | #include "stb0899_drv.h" | ||
37 | #include "stb0899_cfg.h" | ||
38 | #include "stb6100_cfg.h" | ||
39 | #include "stb6100.h" | ||
40 | #include "lnbp21.h" | ||
41 | |||
42 | #define MANTIS_MODEL_NAME "VP-1041" | ||
43 | #define MANTIS_DEV_TYPE "DSS/DVB-S/DVB-S2" | ||
44 | |||
45 | static const struct stb0899_s1_reg vp1041_stb0899_s1_init_1[] = { | ||
46 | |||
47 | /* 0x0000000b, *//* SYSREG */ | ||
48 | { STB0899_DEV_ID , 0x30 }, | ||
49 | { STB0899_DISCNTRL1 , 0x32 }, | ||
50 | { STB0899_DISCNTRL2 , 0x80 }, | ||
51 | { STB0899_DISRX_ST0 , 0x04 }, | ||
52 | { STB0899_DISRX_ST1 , 0x00 }, | ||
53 | { STB0899_DISPARITY , 0x00 }, | ||
54 | { STB0899_DISFIFO , 0x00 }, | ||
55 | { STB0899_DISSTATUS , 0x20 }, | ||
56 | { STB0899_DISF22 , 0x99 }, | ||
57 | { STB0899_DISF22RX , 0xa8 }, | ||
58 | /* SYSREG ? */ | ||
59 | { STB0899_ACRPRESC , 0x11 }, | ||
60 | { STB0899_ACRDIV1 , 0x0a }, | ||
61 | { STB0899_ACRDIV2 , 0x05 }, | ||
62 | { STB0899_DACR1 , 0x00 }, | ||
63 | { STB0899_DACR2 , 0x00 }, | ||
64 | { STB0899_OUTCFG , 0x00 }, | ||
65 | { STB0899_MODECFG , 0x00 }, | ||
66 | { STB0899_IRQSTATUS_3 , 0xfe }, | ||
67 | { STB0899_IRQSTATUS_2 , 0x03 }, | ||
68 | { STB0899_IRQSTATUS_1 , 0x7c }, | ||
69 | { STB0899_IRQSTATUS_0 , 0xf4 }, | ||
70 | { STB0899_IRQMSK_3 , 0xf3 }, | ||
71 | { STB0899_IRQMSK_2 , 0xfc }, | ||
72 | { STB0899_IRQMSK_1 , 0xff }, | ||
73 | { STB0899_IRQMSK_0 , 0xff }, | ||
74 | { STB0899_IRQCFG , 0x00 }, | ||
75 | { STB0899_I2CCFG , 0x88 }, | ||
76 | { STB0899_I2CRPT , 0x58 }, | ||
77 | { STB0899_IOPVALUE5 , 0x00 }, | ||
78 | { STB0899_IOPVALUE4 , 0x33 }, | ||
79 | { STB0899_IOPVALUE3 , 0x6d }, | ||
80 | { STB0899_IOPVALUE2 , 0x90 }, | ||
81 | { STB0899_IOPVALUE1 , 0x60 }, | ||
82 | { STB0899_IOPVALUE0 , 0x00 }, | ||
83 | { STB0899_GPIO00CFG , 0x82 }, | ||
84 | { STB0899_GPIO01CFG , 0x82 }, | ||
85 | { STB0899_GPIO02CFG , 0x82 }, | ||
86 | { STB0899_GPIO03CFG , 0x82 }, | ||
87 | { STB0899_GPIO04CFG , 0x82 }, | ||
88 | { STB0899_GPIO05CFG , 0x82 }, | ||
89 | { STB0899_GPIO06CFG , 0x82 }, | ||
90 | { STB0899_GPIO07CFG , 0x82 }, | ||
91 | { STB0899_GPIO08CFG , 0x82 }, | ||
92 | { STB0899_GPIO09CFG , 0x82 }, | ||
93 | { STB0899_GPIO10CFG , 0x82 }, | ||
94 | { STB0899_GPIO11CFG , 0x82 }, | ||
95 | { STB0899_GPIO12CFG , 0x82 }, | ||
96 | { STB0899_GPIO13CFG , 0x82 }, | ||
97 | { STB0899_GPIO14CFG , 0x82 }, | ||
98 | { STB0899_GPIO15CFG , 0x82 }, | ||
99 | { STB0899_GPIO16CFG , 0x82 }, | ||
100 | { STB0899_GPIO17CFG , 0x82 }, | ||
101 | { STB0899_GPIO18CFG , 0x82 }, | ||
102 | { STB0899_GPIO19CFG , 0x82 }, | ||
103 | { STB0899_GPIO20CFG , 0x82 }, | ||
104 | { STB0899_SDATCFG , 0xb8 }, | ||
105 | { STB0899_SCLTCFG , 0xba }, | ||
106 | { STB0899_AGCRFCFG , 0x1c }, /* 0x11 */ | ||
107 | { STB0899_GPIO22 , 0x82 }, /* AGCBB2CFG */ | ||
108 | { STB0899_GPIO21 , 0x91 }, /* AGCBB1CFG */ | ||
109 | { STB0899_DIRCLKCFG , 0x82 }, | ||
110 | { STB0899_CLKOUT27CFG , 0x7e }, | ||
111 | { STB0899_STDBYCFG , 0x82 }, | ||
112 | { STB0899_CS0CFG , 0x82 }, | ||
113 | { STB0899_CS1CFG , 0x82 }, | ||
114 | { STB0899_DISEQCOCFG , 0x20 }, | ||
115 | { STB0899_GPIO32CFG , 0x82 }, | ||
116 | { STB0899_GPIO33CFG , 0x82 }, | ||
117 | { STB0899_GPIO34CFG , 0x82 }, | ||
118 | { STB0899_GPIO35CFG , 0x82 }, | ||
119 | { STB0899_GPIO36CFG , 0x82 }, | ||
120 | { STB0899_GPIO37CFG , 0x82 }, | ||
121 | { STB0899_GPIO38CFG , 0x82 }, | ||
122 | { STB0899_GPIO39CFG , 0x82 }, | ||
123 | { STB0899_NCOARSE , 0x17 }, /* 0x15 = 27 Mhz Clock, F/3 = 198MHz, F/6 = 99MHz */ | ||
124 | { STB0899_SYNTCTRL , 0x02 }, /* 0x00 = CLK from CLKI, 0x02 = CLK from XTALI */ | ||
125 | { STB0899_FILTCTRL , 0x00 }, | ||
126 | { STB0899_SYSCTRL , 0x01 }, | ||
127 | { STB0899_STOPCLK1 , 0x20 }, | ||
128 | { STB0899_STOPCLK2 , 0x00 }, | ||
129 | { STB0899_INTBUFSTATUS , 0x00 }, | ||
130 | { STB0899_INTBUFCTRL , 0x0a }, | ||
131 | { 0xffff , 0xff }, | ||
132 | }; | ||
133 | |||
134 | static const struct stb0899_s1_reg vp1041_stb0899_s1_init_3[] = { | ||
135 | { STB0899_DEMOD , 0x00 }, | ||
136 | { STB0899_RCOMPC , 0xc9 }, | ||
137 | { STB0899_AGC1CN , 0x01 }, | ||
138 | { STB0899_AGC1REF , 0x10 }, | ||
139 | { STB0899_RTC , 0x23 }, | ||
140 | { STB0899_TMGCFG , 0x4e }, | ||
141 | { STB0899_AGC2REF , 0x34 }, | ||
142 | { STB0899_TLSR , 0x84 }, | ||
143 | { STB0899_CFD , 0xf7 }, | ||
144 | { STB0899_ACLC , 0x87 }, | ||
145 | { STB0899_BCLC , 0x94 }, | ||
146 | { STB0899_EQON , 0x41 }, | ||
147 | { STB0899_LDT , 0xf1 }, | ||
148 | { STB0899_LDT2 , 0xe3 }, | ||
149 | { STB0899_EQUALREF , 0xb4 }, | ||
150 | { STB0899_TMGRAMP , 0x10 }, | ||
151 | { STB0899_TMGTHD , 0x30 }, | ||
152 | { STB0899_IDCCOMP , 0xfd }, | ||
153 | { STB0899_QDCCOMP , 0xff }, | ||
154 | { STB0899_POWERI , 0x0c }, | ||
155 | { STB0899_POWERQ , 0x0f }, | ||
156 | { STB0899_RCOMP , 0x6c }, | ||
157 | { STB0899_AGCIQIN , 0x80 }, | ||
158 | { STB0899_AGC2I1 , 0x06 }, | ||
159 | { STB0899_AGC2I2 , 0x00 }, | ||
160 | { STB0899_TLIR , 0x30 }, | ||
161 | { STB0899_RTF , 0x7f }, | ||
162 | { STB0899_DSTATUS , 0x00 }, | ||
163 | { STB0899_LDI , 0xbc }, | ||
164 | { STB0899_CFRM , 0xea }, | ||
165 | { STB0899_CFRL , 0x31 }, | ||
166 | { STB0899_NIRM , 0x2b }, | ||
167 | { STB0899_NIRL , 0x80 }, | ||
168 | { STB0899_ISYMB , 0x1d }, | ||
169 | { STB0899_QSYMB , 0xa6 }, | ||
170 | { STB0899_SFRH , 0x2f }, | ||
171 | { STB0899_SFRM , 0x68 }, | ||
172 | { STB0899_SFRL , 0x40 }, | ||
173 | { STB0899_SFRUPH , 0x2f }, | ||
174 | { STB0899_SFRUPM , 0x68 }, | ||
175 | { STB0899_SFRUPL , 0x40 }, | ||
176 | { STB0899_EQUAI1 , 0x02 }, | ||
177 | { STB0899_EQUAQ1 , 0xff }, | ||
178 | { STB0899_EQUAI2 , 0x04 }, | ||
179 | { STB0899_EQUAQ2 , 0x05 }, | ||
180 | { STB0899_EQUAI3 , 0x02 }, | ||
181 | { STB0899_EQUAQ3 , 0xfd }, | ||
182 | { STB0899_EQUAI4 , 0x03 }, | ||
183 | { STB0899_EQUAQ4 , 0x07 }, | ||
184 | { STB0899_EQUAI5 , 0x08 }, | ||
185 | { STB0899_EQUAQ5 , 0xf5 }, | ||
186 | { STB0899_DSTATUS2 , 0x00 }, | ||
187 | { STB0899_VSTATUS , 0x00 }, | ||
188 | { STB0899_VERROR , 0x86 }, | ||
189 | { STB0899_IQSWAP , 0x2a }, | ||
190 | { STB0899_ECNT1M , 0x00 }, | ||
191 | { STB0899_ECNT1L , 0x00 }, | ||
192 | { STB0899_ECNT2M , 0x00 }, | ||
193 | { STB0899_ECNT2L , 0x00 }, | ||
194 | { STB0899_ECNT3M , 0x0a }, | ||
195 | { STB0899_ECNT3L , 0xad }, | ||
196 | { STB0899_FECAUTO1 , 0x06 }, | ||
197 | { STB0899_FECM , 0x01 }, | ||
198 | { STB0899_VTH12 , 0xb0 }, | ||
199 | { STB0899_VTH23 , 0x7a }, | ||
200 | { STB0899_VTH34 , 0x58 }, | ||
201 | { STB0899_VTH56 , 0x38 }, | ||
202 | { STB0899_VTH67 , 0x34 }, | ||
203 | { STB0899_VTH78 , 0x24 }, | ||
204 | { STB0899_PRVIT , 0xff }, | ||
205 | { STB0899_VITSYNC , 0x19 }, | ||
206 | { STB0899_RSULC , 0xb1 }, /* DVB = 0xb1, DSS = 0xa1 */ | ||
207 | { STB0899_TSULC , 0x42 }, | ||
208 | { STB0899_RSLLC , 0x41 }, | ||
209 | { STB0899_TSLPL , 0x12 }, | ||
210 | { STB0899_TSCFGH , 0x0c }, | ||
211 | { STB0899_TSCFGM , 0x00 }, | ||
212 | { STB0899_TSCFGL , 0x00 }, | ||
213 | { STB0899_TSOUT , 0x69 }, /* 0x0d for CAM */ | ||
214 | { STB0899_RSSYNCDEL , 0x00 }, | ||
215 | { STB0899_TSINHDELH , 0x02 }, | ||
216 | { STB0899_TSINHDELM , 0x00 }, | ||
217 | { STB0899_TSINHDELL , 0x00 }, | ||
218 | { STB0899_TSLLSTKM , 0x1b }, | ||
219 | { STB0899_TSLLSTKL , 0xb3 }, | ||
220 | { STB0899_TSULSTKM , 0x00 }, | ||
221 | { STB0899_TSULSTKL , 0x00 }, | ||
222 | { STB0899_PCKLENUL , 0xbc }, | ||
223 | { STB0899_PCKLENLL , 0xcc }, | ||
224 | { STB0899_RSPCKLEN , 0xbd }, | ||
225 | { STB0899_TSSTATUS , 0x90 }, | ||
226 | { STB0899_ERRCTRL1 , 0xb6 }, | ||
227 | { STB0899_ERRCTRL2 , 0x95 }, | ||
228 | { STB0899_ERRCTRL3 , 0x8d }, | ||
229 | { STB0899_DMONMSK1 , 0x27 }, | ||
230 | { STB0899_DMONMSK0 , 0x03 }, | ||
231 | { STB0899_DEMAPVIT , 0x5c }, | ||
232 | { STB0899_PLPARM , 0x19 }, | ||
233 | { STB0899_PDELCTRL , 0x48 }, | ||
234 | { STB0899_PDELCTRL2 , 0x00 }, | ||
235 | { STB0899_BBHCTRL1 , 0x00 }, | ||
236 | { STB0899_BBHCTRL2 , 0x00 }, | ||
237 | { STB0899_HYSTTHRESH , 0x77 }, | ||
238 | { STB0899_MATCSTM , 0x00 }, | ||
239 | { STB0899_MATCSTL , 0x00 }, | ||
240 | { STB0899_UPLCSTM , 0x00 }, | ||
241 | { STB0899_UPLCSTL , 0x00 }, | ||
242 | { STB0899_DFLCSTM , 0x00 }, | ||
243 | { STB0899_DFLCSTL , 0x00 }, | ||
244 | { STB0899_SYNCCST , 0x00 }, | ||
245 | { STB0899_SYNCDCSTM , 0x00 }, | ||
246 | { STB0899_SYNCDCSTL , 0x00 }, | ||
247 | { STB0899_ISI_ENTRY , 0x00 }, | ||
248 | { STB0899_ISI_BIT_EN , 0x00 }, | ||
249 | { STB0899_MATSTRM , 0xf0 }, | ||
250 | { STB0899_MATSTRL , 0x02 }, | ||
251 | { STB0899_UPLSTRM , 0x45 }, | ||
252 | { STB0899_UPLSTRL , 0x60 }, | ||
253 | { STB0899_DFLSTRM , 0xe3 }, | ||
254 | { STB0899_DFLSTRL , 0x00 }, | ||
255 | { STB0899_SYNCSTR , 0x47 }, | ||
256 | { STB0899_SYNCDSTRM , 0x05 }, | ||
257 | { STB0899_SYNCDSTRL , 0x18 }, | ||
258 | { STB0899_CFGPDELSTATUS1 , 0x19 }, | ||
259 | { STB0899_CFGPDELSTATUS2 , 0x2b }, | ||
260 | { STB0899_BBFERRORM , 0x00 }, | ||
261 | { STB0899_BBFERRORL , 0x01 }, | ||
262 | { STB0899_UPKTERRORM , 0x00 }, | ||
263 | { STB0899_UPKTERRORL , 0x00 }, | ||
264 | { 0xffff , 0xff }, | ||
265 | }; | ||
266 | |||
267 | struct stb0899_config vp1041_stb0899_config = { | ||
268 | .init_dev = vp1041_stb0899_s1_init_1, | ||
269 | .init_s2_demod = stb0899_s2_init_2, | ||
270 | .init_s1_demod = vp1041_stb0899_s1_init_3, | ||
271 | .init_s2_fec = stb0899_s2_init_4, | ||
272 | .init_tst = stb0899_s1_init_5, | ||
273 | |||
274 | .demod_address = 0x68, /* 0xd0 >> 1 */ | ||
275 | |||
276 | .xtal_freq = 27000000, | ||
277 | .inversion = IQ_SWAP_ON, /* 1 */ | ||
278 | |||
279 | .lo_clk = 76500000, | ||
280 | .hi_clk = 99000000, | ||
281 | |||
282 | .esno_ave = STB0899_DVBS2_ESNO_AVE, | ||
283 | .esno_quant = STB0899_DVBS2_ESNO_QUANT, | ||
284 | .avframes_coarse = STB0899_DVBS2_AVFRAMES_COARSE, | ||
285 | .avframes_fine = STB0899_DVBS2_AVFRAMES_FINE, | ||
286 | .miss_threshold = STB0899_DVBS2_MISS_THRESHOLD, | ||
287 | .uwp_threshold_acq = STB0899_DVBS2_UWP_THRESHOLD_ACQ, | ||
288 | .uwp_threshold_track = STB0899_DVBS2_UWP_THRESHOLD_TRACK, | ||
289 | .uwp_threshold_sof = STB0899_DVBS2_UWP_THRESHOLD_SOF, | ||
290 | .sof_search_timeout = STB0899_DVBS2_SOF_SEARCH_TIMEOUT, | ||
291 | |||
292 | .btr_nco_bits = STB0899_DVBS2_BTR_NCO_BITS, | ||
293 | .btr_gain_shift_offset = STB0899_DVBS2_BTR_GAIN_SHIFT_OFFSET, | ||
294 | .crl_nco_bits = STB0899_DVBS2_CRL_NCO_BITS, | ||
295 | .ldpc_max_iter = STB0899_DVBS2_LDPC_MAX_ITER, | ||
296 | |||
297 | .tuner_get_frequency = stb6100_get_frequency, | ||
298 | .tuner_set_frequency = stb6100_set_frequency, | ||
299 | .tuner_set_bandwidth = stb6100_set_bandwidth, | ||
300 | .tuner_get_bandwidth = stb6100_get_bandwidth, | ||
301 | .tuner_set_rfsiggain = NULL, | ||
302 | }; | ||
303 | |||
304 | struct stb6100_config vp1041_stb6100_config = { | ||
305 | .tuner_address = 0x60, | ||
306 | .refclock = 27000000, | ||
307 | }; | ||
308 | |||
309 | static int vp1041_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe) | ||
310 | { | ||
311 | struct i2c_adapter *adapter = &mantis->adapter; | ||
312 | |||
313 | int err = 0; | ||
314 | |||
315 | err = mantis_frontend_power(mantis, POWER_ON); | ||
316 | if (err == 0) { | ||
317 | mantis_frontend_soft_reset(mantis); | ||
318 | msleep(250); | ||
319 | mantis->fe = stb0899_attach(&vp1041_stb0899_config, adapter); | ||
320 | if (mantis->fe) { | ||
321 | dprintk(MANTIS_ERROR, 1, | ||
322 | "found STB0899 DVB-S/DVB-S2 frontend @0x%02x", | ||
323 | vp1041_stb0899_config.demod_address); | ||
324 | |||
325 | if (stb6100_attach(mantis->fe, &vp1041_stb6100_config, adapter)) { | ||
326 | if (!lnbp21_attach(mantis->fe, adapter, 0, 0)) | ||
327 | dprintk(MANTIS_ERROR, 1, "No LNBP21 found!"); | ||
328 | } | ||
329 | } else { | ||
330 | return -EREMOTEIO; | ||
331 | } | ||
332 | } else { | ||
333 | dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>", | ||
334 | adapter->name, | ||
335 | err); | ||
336 | |||
337 | return -EIO; | ||
338 | } | ||
339 | |||
340 | |||
341 | dprintk(MANTIS_ERROR, 1, "Done!"); | ||
342 | |||
343 | return 0; | ||
344 | } | ||
345 | |||
346 | struct mantis_hwconfig vp1041_config = { | ||
347 | .model_name = MANTIS_MODEL_NAME, | ||
348 | .dev_type = MANTIS_DEV_TYPE, | ||
349 | .ts_size = MANTIS_TS_188, | ||
350 | |||
351 | .baud_rate = MANTIS_BAUD_9600, | ||
352 | .parity = MANTIS_PARITY_NONE, | ||
353 | .bytes = 0, | ||
354 | |||
355 | .frontend_init = vp1041_frontend_init, | ||
356 | .power = GPIF_A12, | ||
357 | .reset = GPIF_A13, | ||
358 | }; | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp1041.h b/drivers/media/dvb/mantis/mantis_vp1041.h new file mode 100644 index 000000000000..1ae5b3de8081 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp1041.h | |||
@@ -0,0 +1,33 @@ | |||
1 | /* | ||
2 | Mantis VP-1041 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_VP1041_H | ||
22 | #define __MANTIS_VP1041_H | ||
23 | |||
24 | #include "mantis_common.h" | ||
25 | |||
26 | #define MANTIS_VP_1041_DVB_S2 0x0031 | ||
27 | #define SKYSTAR_HD2_10 0x0001 | ||
28 | #define SKYSTAR_HD2_20 0x0003 | ||
29 | #define CINERGY_S2_PCI_HD 0x1179 | ||
30 | |||
31 | extern struct mantis_hwconfig vp1041_config; | ||
32 | |||
33 | #endif /* __MANTIS_VP1041_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp2033.c b/drivers/media/dvb/mantis/mantis_vp2033.c new file mode 100644 index 000000000000..10ce81790a8c --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp2033.c | |||
@@ -0,0 +1,187 @@ | |||
1 | /* | ||
2 | Mantis VP-2033 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/signal.h> | ||
22 | #include <linux/sched.h> | ||
23 | #include <linux/interrupt.h> | ||
24 | |||
25 | #include "dmxdev.h" | ||
26 | #include "dvbdev.h" | ||
27 | #include "dvb_demux.h" | ||
28 | #include "dvb_frontend.h" | ||
29 | #include "dvb_net.h" | ||
30 | |||
31 | #include "tda1002x.h" | ||
32 | #include "mantis_common.h" | ||
33 | #include "mantis_ioc.h" | ||
34 | #include "mantis_dvb.h" | ||
35 | #include "mantis_vp2033.h" | ||
36 | |||
37 | #define MANTIS_MODEL_NAME "VP-2033" | ||
38 | #define MANTIS_DEV_TYPE "DVB-C" | ||
39 | |||
40 | struct tda1002x_config vp2033_tda1002x_cu1216_config = { | ||
41 | .demod_address = 0x18 >> 1, | ||
42 | .invert = 1, | ||
43 | }; | ||
44 | |||
45 | struct tda10023_config vp2033_tda10023_cu1216_config = { | ||
46 | .demod_address = 0x18 >> 1, | ||
47 | .invert = 1, | ||
48 | }; | ||
49 | |||
50 | static u8 read_pwm(struct mantis_pci *mantis) | ||
51 | { | ||
52 | struct i2c_adapter *adapter = &mantis->adapter; | ||
53 | |||
54 | u8 b = 0xff; | ||
55 | u8 pwm; | ||
56 | struct i2c_msg msg[] = { | ||
57 | {.addr = 0x50, .flags = 0, .buf = &b, .len = 1}, | ||
58 | {.addr = 0x50, .flags = I2C_M_RD, .buf = &pwm, .len = 1} | ||
59 | }; | ||
60 | |||
61 | if ((i2c_transfer(adapter, msg, 2) != 2) | ||
62 | || (pwm == 0xff)) | ||
63 | pwm = 0x48; | ||
64 | |||
65 | return pwm; | ||
66 | } | ||
67 | |||
68 | static int tda1002x_cu1216_tuner_set(struct dvb_frontend *fe, struct dvb_frontend_parameters *params) | ||
69 | { | ||
70 | struct mantis_pci *mantis = fe->dvb->priv; | ||
71 | struct i2c_adapter *adapter = &mantis->adapter; | ||
72 | |||
73 | u8 buf[6]; | ||
74 | struct i2c_msg msg = {.addr = 0x60, .flags = 0, .buf = buf, .len = sizeof(buf)}; | ||
75 | int i; | ||
76 | |||
77 | #define CU1216_IF 36125000 | ||
78 | #define TUNER_MUL 62500 | ||
79 | |||
80 | u32 div = (params->frequency + CU1216_IF + TUNER_MUL / 2) / TUNER_MUL; | ||
81 | |||
82 | buf[0] = (div >> 8) & 0x7f; | ||
83 | buf[1] = div & 0xff; | ||
84 | buf[2] = 0xce; | ||
85 | buf[3] = (params->frequency < 150000000 ? 0x01 : | ||
86 | params->frequency < 445000000 ? 0x02 : 0x04); | ||
87 | buf[4] = 0xde; | ||
88 | buf[5] = 0x20; | ||
89 | |||
90 | if (fe->ops.i2c_gate_ctrl) | ||
91 | fe->ops.i2c_gate_ctrl(fe, 1); | ||
92 | |||
93 | if (i2c_transfer(adapter, &msg, 1) != 1) | ||
94 | return -EIO; | ||
95 | |||
96 | /* wait for the pll lock */ | ||
97 | msg.flags = I2C_M_RD; | ||
98 | msg.len = 1; | ||
99 | for (i = 0; i < 20; i++) { | ||
100 | if (fe->ops.i2c_gate_ctrl) | ||
101 | fe->ops.i2c_gate_ctrl(fe, 1); | ||
102 | |||
103 | if (i2c_transfer(adapter, &msg, 1) == 1 && (buf[0] & 0x40)) | ||
104 | break; | ||
105 | |||
106 | msleep(10); | ||
107 | } | ||
108 | |||
109 | /* switch the charge pump to the lower current */ | ||
110 | msg.flags = 0; | ||
111 | msg.len = 2; | ||
112 | msg.buf = &buf[2]; | ||
113 | buf[2] &= ~0x40; | ||
114 | if (fe->ops.i2c_gate_ctrl) | ||
115 | fe->ops.i2c_gate_ctrl(fe, 1); | ||
116 | |||
117 | if (i2c_transfer(adapter, &msg, 1) != 1) | ||
118 | return -EIO; | ||
119 | |||
120 | return 0; | ||
121 | } | ||
122 | |||
123 | static int vp2033_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe) | ||
124 | { | ||
125 | struct i2c_adapter *adapter = &mantis->adapter; | ||
126 | |||
127 | int err = 0; | ||
128 | |||
129 | err = mantis_frontend_power(mantis, POWER_ON); | ||
130 | if (err == 0) { | ||
131 | mantis_frontend_soft_reset(mantis); | ||
132 | msleep(250); | ||
133 | |||
134 | dprintk(MANTIS_ERROR, 1, "Probing for CU1216 (DVB-C)"); | ||
135 | fe = tda10021_attach(&vp2033_tda1002x_cu1216_config, | ||
136 | adapter, | ||
137 | read_pwm(mantis)); | ||
138 | |||
139 | if (fe) { | ||
140 | dprintk(MANTIS_ERROR, 1, | ||
141 | "found Philips CU1216 DVB-C frontend (TDA10021) @ 0x%02x", | ||
142 | vp2033_tda1002x_cu1216_config.demod_address); | ||
143 | } else { | ||
144 | fe = tda10023_attach(&vp2033_tda10023_cu1216_config, | ||
145 | adapter, | ||
146 | read_pwm(mantis)); | ||
147 | |||
148 | if (fe) { | ||
149 | dprintk(MANTIS_ERROR, 1, | ||
150 | "found Philips CU1216 DVB-C frontend (TDA10023) @ 0x%02x", | ||
151 | vp2033_tda1002x_cu1216_config.demod_address); | ||
152 | } | ||
153 | } | ||
154 | |||
155 | if (fe) { | ||
156 | fe->ops.tuner_ops.set_params = tda1002x_cu1216_tuner_set; | ||
157 | dprintk(MANTIS_ERROR, 1, "Mantis DVB-C Philips CU1216 frontend attach success"); | ||
158 | } else { | ||
159 | return -1; | ||
160 | } | ||
161 | } else { | ||
162 | dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>", | ||
163 | adapter->name, | ||
164 | err); | ||
165 | |||
166 | return -EIO; | ||
167 | } | ||
168 | |||
169 | mantis->fe = fe; | ||
170 | dprintk(MANTIS_DEBUG, 1, "Done!"); | ||
171 | |||
172 | return 0; | ||
173 | } | ||
174 | |||
175 | struct mantis_hwconfig vp2033_config = { | ||
176 | .model_name = MANTIS_MODEL_NAME, | ||
177 | .dev_type = MANTIS_DEV_TYPE, | ||
178 | .ts_size = MANTIS_TS_204, | ||
179 | |||
180 | .baud_rate = MANTIS_BAUD_9600, | ||
181 | .parity = MANTIS_PARITY_NONE, | ||
182 | .bytes = 0, | ||
183 | |||
184 | .frontend_init = vp2033_frontend_init, | ||
185 | .power = GPIF_A12, | ||
186 | .reset = GPIF_A13, | ||
187 | }; | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp2033.h b/drivers/media/dvb/mantis/mantis_vp2033.h new file mode 100644 index 000000000000..c55242b79d54 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp2033.h | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | Mantis VP-2033 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_VP2033_H | ||
22 | #define __MANTIS_VP2033_H | ||
23 | |||
24 | #include "mantis_common.h" | ||
25 | |||
26 | #define MANTIS_VP_2033_DVB_C 0x0008 | ||
27 | |||
28 | extern struct mantis_hwconfig vp2033_config; | ||
29 | |||
30 | #endif /* __MANTIS_VP2033_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp2040.c b/drivers/media/dvb/mantis/mantis_vp2040.c new file mode 100644 index 000000000000..a7ca233e800b --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp2040.c | |||
@@ -0,0 +1,186 @@ | |||
1 | /* | ||
2 | Mantis VP-2040 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/signal.h> | ||
22 | #include <linux/sched.h> | ||
23 | #include <linux/interrupt.h> | ||
24 | |||
25 | #include "dmxdev.h" | ||
26 | #include "dvbdev.h" | ||
27 | #include "dvb_demux.h" | ||
28 | #include "dvb_frontend.h" | ||
29 | #include "dvb_net.h" | ||
30 | |||
31 | #include "tda1002x.h" | ||
32 | #include "mantis_common.h" | ||
33 | #include "mantis_ioc.h" | ||
34 | #include "mantis_dvb.h" | ||
35 | #include "mantis_vp2040.h" | ||
36 | |||
37 | #define MANTIS_MODEL_NAME "VP-2040" | ||
38 | #define MANTIS_DEV_TYPE "DVB-C" | ||
39 | |||
40 | struct tda1002x_config vp2040_tda1002x_cu1216_config = { | ||
41 | .demod_address = 0x18 >> 1, | ||
42 | .invert = 1, | ||
43 | }; | ||
44 | |||
45 | struct tda10023_config vp2040_tda10023_cu1216_config = { | ||
46 | .demod_address = 0x18 >> 1, | ||
47 | .invert = 1, | ||
48 | }; | ||
49 | |||
50 | static int tda1002x_cu1216_tuner_set(struct dvb_frontend *fe, struct dvb_frontend_parameters *params) | ||
51 | { | ||
52 | struct mantis_pci *mantis = fe->dvb->priv; | ||
53 | struct i2c_adapter *adapter = &mantis->adapter; | ||
54 | |||
55 | u8 buf[6]; | ||
56 | struct i2c_msg msg = {.addr = 0x60, .flags = 0, .buf = buf, .len = sizeof(buf)}; | ||
57 | int i; | ||
58 | |||
59 | #define CU1216_IF 36125000 | ||
60 | #define TUNER_MUL 62500 | ||
61 | |||
62 | u32 div = (params->frequency + CU1216_IF + TUNER_MUL / 2) / TUNER_MUL; | ||
63 | |||
64 | buf[0] = (div >> 8) & 0x7f; | ||
65 | buf[1] = div & 0xff; | ||
66 | buf[2] = 0xce; | ||
67 | buf[3] = (params->frequency < 150000000 ? 0x01 : | ||
68 | params->frequency < 445000000 ? 0x02 : 0x04); | ||
69 | buf[4] = 0xde; | ||
70 | buf[5] = 0x20; | ||
71 | |||
72 | if (fe->ops.i2c_gate_ctrl) | ||
73 | fe->ops.i2c_gate_ctrl(fe, 1); | ||
74 | |||
75 | if (i2c_transfer(adapter, &msg, 1) != 1) | ||
76 | return -EIO; | ||
77 | |||
78 | /* wait for the pll lock */ | ||
79 | msg.flags = I2C_M_RD; | ||
80 | msg.len = 1; | ||
81 | for (i = 0; i < 20; i++) { | ||
82 | if (fe->ops.i2c_gate_ctrl) | ||
83 | fe->ops.i2c_gate_ctrl(fe, 1); | ||
84 | |||
85 | if (i2c_transfer(adapter, &msg, 1) == 1 && (buf[0] & 0x40)) | ||
86 | break; | ||
87 | |||
88 | msleep(10); | ||
89 | } | ||
90 | |||
91 | /* switch the charge pump to the lower current */ | ||
92 | msg.flags = 0; | ||
93 | msg.len = 2; | ||
94 | msg.buf = &buf[2]; | ||
95 | buf[2] &= ~0x40; | ||
96 | if (fe->ops.i2c_gate_ctrl) | ||
97 | fe->ops.i2c_gate_ctrl(fe, 1); | ||
98 | |||
99 | if (i2c_transfer(adapter, &msg, 1) != 1) | ||
100 | return -EIO; | ||
101 | |||
102 | return 0; | ||
103 | } | ||
104 | |||
105 | static u8 read_pwm(struct mantis_pci *mantis) | ||
106 | { | ||
107 | struct i2c_adapter *adapter = &mantis->adapter; | ||
108 | |||
109 | u8 b = 0xff; | ||
110 | u8 pwm; | ||
111 | struct i2c_msg msg[] = { | ||
112 | {.addr = 0x50, .flags = 0, .buf = &b, .len = 1}, | ||
113 | {.addr = 0x50, .flags = I2C_M_RD, .buf = &pwm, .len = 1} | ||
114 | }; | ||
115 | |||
116 | if ((i2c_transfer(adapter, msg, 2) != 2) | ||
117 | || (pwm == 0xff)) | ||
118 | pwm = 0x48; | ||
119 | |||
120 | return pwm; | ||
121 | } | ||
122 | |||
123 | static int vp2040_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe) | ||
124 | { | ||
125 | struct i2c_adapter *adapter = &mantis->adapter; | ||
126 | |||
127 | int err = 0; | ||
128 | |||
129 | err = mantis_frontend_power(mantis, POWER_ON); | ||
130 | if (err == 0) { | ||
131 | mantis_frontend_soft_reset(mantis); | ||
132 | msleep(250); | ||
133 | |||
134 | dprintk(MANTIS_ERROR, 1, "Probing for CU1216 (DVB-C)"); | ||
135 | fe = tda10021_attach(&vp2040_tda1002x_cu1216_config, | ||
136 | adapter, | ||
137 | read_pwm(mantis)); | ||
138 | |||
139 | if (fe) { | ||
140 | dprintk(MANTIS_ERROR, 1, | ||
141 | "found Philips CU1216 DVB-C frontend (TDA10021) @ 0x%02x", | ||
142 | vp2040_tda1002x_cu1216_config.demod_address); | ||
143 | } else { | ||
144 | fe = tda10023_attach(&vp2040_tda10023_cu1216_config, | ||
145 | adapter, | ||
146 | read_pwm(mantis)); | ||
147 | |||
148 | if (fe) { | ||
149 | dprintk(MANTIS_ERROR, 1, | ||
150 | "found Philips CU1216 DVB-C frontend (TDA10023) @ 0x%02x", | ||
151 | vp2040_tda1002x_cu1216_config.demod_address); | ||
152 | } | ||
153 | } | ||
154 | |||
155 | if (fe) { | ||
156 | fe->ops.tuner_ops.set_params = tda1002x_cu1216_tuner_set; | ||
157 | dprintk(MANTIS_ERROR, 1, "Mantis DVB-C Philips CU1216 frontend attach success"); | ||
158 | } else { | ||
159 | return -1; | ||
160 | } | ||
161 | } else { | ||
162 | dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>", | ||
163 | adapter->name, | ||
164 | err); | ||
165 | |||
166 | return -EIO; | ||
167 | } | ||
168 | mantis->fe = fe; | ||
169 | dprintk(MANTIS_DEBUG, 1, "Done!"); | ||
170 | |||
171 | return 0; | ||
172 | } | ||
173 | |||
174 | struct mantis_hwconfig vp2040_config = { | ||
175 | .model_name = MANTIS_MODEL_NAME, | ||
176 | .dev_type = MANTIS_DEV_TYPE, | ||
177 | .ts_size = MANTIS_TS_204, | ||
178 | |||
179 | .baud_rate = MANTIS_BAUD_9600, | ||
180 | .parity = MANTIS_PARITY_NONE, | ||
181 | .bytes = 0, | ||
182 | |||
183 | .frontend_init = vp2040_frontend_init, | ||
184 | .power = GPIF_A12, | ||
185 | .reset = GPIF_A13, | ||
186 | }; | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp2040.h b/drivers/media/dvb/mantis/mantis_vp2040.h new file mode 100644 index 000000000000..d125e219b685 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp2040.h | |||
@@ -0,0 +1,32 @@ | |||
1 | /* | ||
2 | Mantis VP-2040 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_VP2040_H | ||
22 | #define __MANTIS_VP2040_H | ||
23 | |||
24 | #include "mantis_common.h" | ||
25 | |||
26 | #define MANTIS_VP_2040_DVB_C 0x0043 | ||
27 | #define CINERGY_C 0x1178 | ||
28 | #define CABLESTAR_HD2 0x0002 | ||
29 | |||
30 | extern struct mantis_hwconfig vp2040_config; | ||
31 | |||
32 | #endif /* __MANTIS_VP2040_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp3028.c b/drivers/media/dvb/mantis/mantis_vp3028.c new file mode 100644 index 000000000000..4155c838a18a --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp3028.c | |||
@@ -0,0 +1,38 @@ | |||
1 | /* | ||
2 | Mantis VP-3028 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include "mantis_common.h" | ||
22 | #include "mantis_vp3028.h" | ||
23 | |||
24 | struct zl10353_config mantis_vp3028_config = { | ||
25 | .demod_address = 0x0f, | ||
26 | }; | ||
27 | |||
28 | #define MANTIS_MODEL_NAME "VP-3028" | ||
29 | #define MANTIS_DEV_TYPE "DVB-T" | ||
30 | |||
31 | struct mantis_hwconfig vp3028_mantis_config = { | ||
32 | .model_name = MANTIS_MODEL_NAME, | ||
33 | .dev_type = MANTIS_DEV_TYPE, | ||
34 | .ts_size = MANTIS_TS_188, | ||
35 | .baud_rate = MANTIS_BAUD_9600, | ||
36 | .parity = MANTIS_PARITY_NONE, | ||
37 | .bytes = 0, | ||
38 | }; | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp3028.h b/drivers/media/dvb/mantis/mantis_vp3028.h new file mode 100644 index 000000000000..b07be6adc522 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp3028.h | |||
@@ -0,0 +1,33 @@ | |||
1 | /* | ||
2 | Mantis VP-3028 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_VP3028_H | ||
22 | #define __MANTIS_VP3028_H | ||
23 | |||
24 | #include "dvb_frontend.h" | ||
25 | #include "mantis_common.h" | ||
26 | #include "zl10353.h" | ||
27 | |||
28 | #define MANTIS_VP_3028_DVB_T 0x0028 | ||
29 | |||
30 | extern struct zl10353_config mantis_vp3028_config; | ||
31 | extern struct mantis_hwconfig vp3028_mantis_config; | ||
32 | |||
33 | #endif /* __MANTIS_VP3028_H */ | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp3030.c b/drivers/media/dvb/mantis/mantis_vp3030.c new file mode 100644 index 000000000000..1f4334214953 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp3030.c | |||
@@ -0,0 +1,105 @@ | |||
1 | /* | ||
2 | Mantis VP-3030 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #include <linux/signal.h> | ||
22 | #include <linux/sched.h> | ||
23 | #include <linux/interrupt.h> | ||
24 | |||
25 | #include "dmxdev.h" | ||
26 | #include "dvbdev.h" | ||
27 | #include "dvb_demux.h" | ||
28 | #include "dvb_frontend.h" | ||
29 | #include "dvb_net.h" | ||
30 | |||
31 | #include "zl10353.h" | ||
32 | #include "tda665x.h" | ||
33 | #include "mantis_common.h" | ||
34 | #include "mantis_ioc.h" | ||
35 | #include "mantis_dvb.h" | ||
36 | #include "mantis_vp3030.h" | ||
37 | |||
38 | struct zl10353_config mantis_vp3030_config = { | ||
39 | .demod_address = 0x0f, | ||
40 | }; | ||
41 | |||
42 | struct tda665x_config env57h12d5_config = { | ||
43 | .name = "ENV57H12D5 (ET-50DT)", | ||
44 | .addr = 0x60, | ||
45 | .frequency_min = 47000000, | ||
46 | .frequency_max = 862000000, | ||
47 | .frequency_offst = 3616667, | ||
48 | .ref_multiplier = 6, /* 1/6 MHz */ | ||
49 | .ref_divider = 100000, /* 1/6 MHz */ | ||
50 | }; | ||
51 | |||
52 | #define MANTIS_MODEL_NAME "VP-3030" | ||
53 | #define MANTIS_DEV_TYPE "DVB-T" | ||
54 | |||
55 | |||
56 | static int vp3030_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe) | ||
57 | { | ||
58 | struct i2c_adapter *adapter = &mantis->adapter; | ||
59 | struct mantis_hwconfig *config = mantis->hwconfig; | ||
60 | int err = 0; | ||
61 | |||
62 | gpio_set_bits(mantis, config->reset, 0); | ||
63 | msleep(100); | ||
64 | err = mantis_frontend_power(mantis, POWER_ON); | ||
65 | msleep(100); | ||
66 | gpio_set_bits(mantis, config->reset, 1); | ||
67 | |||
68 | if (err == 0) { | ||
69 | msleep(250); | ||
70 | dprintk(MANTIS_ERROR, 1, "Probing for 10353 (DVB-T)"); | ||
71 | fe = zl10353_attach(&mantis_vp3030_config, adapter); | ||
72 | |||
73 | if (!fe) | ||
74 | return -1; | ||
75 | |||
76 | tda665x_attach(fe, &env57h12d5_config, adapter); | ||
77 | } else { | ||
78 | dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>", | ||
79 | adapter->name, | ||
80 | err); | ||
81 | |||
82 | return -EIO; | ||
83 | |||
84 | } | ||
85 | mantis->fe = fe; | ||
86 | dprintk(MANTIS_ERROR, 1, "Done!"); | ||
87 | |||
88 | return 0; | ||
89 | } | ||
90 | |||
91 | struct mantis_hwconfig vp3030_config = { | ||
92 | .model_name = MANTIS_MODEL_NAME, | ||
93 | .dev_type = MANTIS_DEV_TYPE, | ||
94 | .ts_size = MANTIS_TS_188, | ||
95 | |||
96 | .baud_rate = MANTIS_BAUD_9600, | ||
97 | .parity = MANTIS_PARITY_NONE, | ||
98 | .bytes = 0, | ||
99 | |||
100 | .frontend_init = vp3030_frontend_init, | ||
101 | .power = GPIF_A12, | ||
102 | .reset = GPIF_A13, | ||
103 | |||
104 | .i2c_mode = MANTIS_BYTE_MODE | ||
105 | }; | ||
diff --git a/drivers/media/dvb/mantis/mantis_vp3030.h b/drivers/media/dvb/mantis/mantis_vp3030.h new file mode 100644 index 000000000000..5f12c4266277 --- /dev/null +++ b/drivers/media/dvb/mantis/mantis_vp3030.h | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | Mantis VP-3030 driver | ||
3 | |||
4 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __MANTIS_VP3030_H | ||
22 | #define __MANTIS_VP3030_H | ||
23 | |||
24 | #include "mantis_common.h" | ||
25 | |||
26 | #define MANTIS_VP_3030_DVB_T 0x0024 | ||
27 | |||
28 | extern struct mantis_hwconfig vp3030_config; | ||
29 | |||
30 | #endif /* __MANTIS_VP3030_H */ | ||
diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c index e930a67d526b..bd6214d4ab3b 100644 --- a/drivers/media/video/gspca/gspca.c +++ b/drivers/media/video/gspca/gspca.c | |||
@@ -1815,6 +1815,8 @@ static int vidioc_qbuf(struct file *file, void *priv, | |||
1815 | /* put the buffer in the 'queued' queue */ | 1815 | /* put the buffer in the 'queued' queue */ |
1816 | i = gspca_dev->fr_q; | 1816 | i = gspca_dev->fr_q; |
1817 | gspca_dev->fr_queue[i] = index; | 1817 | gspca_dev->fr_queue[i] = index; |
1818 | if (gspca_dev->fr_i == i) | ||
1819 | gspca_dev->cur_frame = frame; | ||
1818 | gspca_dev->fr_q = (i + 1) % gspca_dev->nframes; | 1820 | gspca_dev->fr_q = (i + 1) % gspca_dev->nframes; |
1819 | PDEBUG(D_FRAM, "qbuf q:%d i:%d o:%d", | 1821 | PDEBUG(D_FRAM, "qbuf q:%d i:%d o:%d", |
1820 | gspca_dev->fr_q, | 1822 | gspca_dev->fr_q, |
diff --git a/drivers/media/video/gspca/m5602/m5602_s5k4aa.c b/drivers/media/video/gspca/m5602/m5602_s5k4aa.c index aa2f3c7e2cb5..1b536f7d30cf 100644 --- a/drivers/media/video/gspca/m5602/m5602_s5k4aa.c +++ b/drivers/media/video/gspca/m5602/m5602_s5k4aa.c | |||
@@ -48,6 +48,12 @@ static | |||
48 | DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Xa 2528") | 48 | DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Xa 2528") |
49 | } | 49 | } |
50 | }, { | 50 | }, { |
51 | .ident = "Fujitsu-Siemens Amilo Xi 2428", | ||
52 | .matches = { | ||
53 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), | ||
54 | DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Xi 2428") | ||
55 | } | ||
56 | }, { | ||
51 | .ident = "Fujitsu-Siemens Amilo Xi 2528", | 57 | .ident = "Fujitsu-Siemens Amilo Xi 2528", |
52 | .matches = { | 58 | .matches = { |
53 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), | 59 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), |
diff --git a/drivers/media/video/gspca/ov534.c b/drivers/media/video/gspca/ov534.c index 4dbb882c83dc..0a6b8f07a69d 100644 --- a/drivers/media/video/gspca/ov534.c +++ b/drivers/media/video/gspca/ov534.c | |||
@@ -1533,7 +1533,7 @@ static void setexposure_96(struct gspca_dev *gspca_dev) | |||
1533 | static void setsharpness_96(struct gspca_dev *gspca_dev) | 1533 | static void setsharpness_96(struct gspca_dev *gspca_dev) |
1534 | { | 1534 | { |
1535 | struct sd *sd = (struct sd *) gspca_dev; | 1535 | struct sd *sd = (struct sd *) gspca_dev; |
1536 | u8 val; | 1536 | s8 val; |
1537 | 1537 | ||
1538 | val = sd->sharpness; | 1538 | val = sd->sharpness; |
1539 | if (val < 0) { /* auto */ | 1539 | if (val < 0) { /* auto */ |
diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c index 4cff8035614f..0ca1c06652b1 100644 --- a/drivers/media/video/gspca/sn9c20x.c +++ b/drivers/media/video/gspca/sn9c20x.c | |||
@@ -2319,7 +2319,7 @@ static void do_autogain(struct gspca_dev *gspca_dev, u16 avg_lum) | |||
2319 | } | 2319 | } |
2320 | } | 2320 | } |
2321 | if (avg_lum > MAX_AVG_LUM) { | 2321 | if (avg_lum > MAX_AVG_LUM) { |
2322 | if (sd->gain - 1 >= 0) { | 2322 | if (sd->gain >= 1) { |
2323 | sd->gain--; | 2323 | sd->gain--; |
2324 | set_gain(gspca_dev); | 2324 | set_gain(gspca_dev); |
2325 | } | 2325 | } |
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.h b/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.h index 487d40555343..96c61926d372 100644 --- a/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.h +++ b/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.h | |||
@@ -228,6 +228,7 @@ static const struct stv_init stv_bridge_init[] = { | |||
228 | /* This reg is written twice. Some kind of reset? */ | 228 | /* This reg is written twice. Some kind of reset? */ |
229 | {NULL, 0x1620, 0x80}, | 229 | {NULL, 0x1620, 0x80}, |
230 | {NULL, 0x1620, 0x00}, | 230 | {NULL, 0x1620, 0x00}, |
231 | {NULL, 0x1443, 0x00}, | ||
231 | {NULL, 0x1423, 0x04}, | 232 | {NULL, 0x1423, 0x04}, |
232 | {x1500, 0x1500, ARRAY_SIZE(x1500)}, | 233 | {x1500, 0x1500, ARRAY_SIZE(x1500)}, |
233 | {x1536, 0x1536, ARRAY_SIZE(x1536)}, | 234 | {x1536, 0x1536, ARRAY_SIZE(x1536)}, |
diff --git a/drivers/media/video/gspca/sunplus.c b/drivers/media/video/gspca/sunplus.c index 716df6b15fc5..306b7d75b4aa 100644 --- a/drivers/media/video/gspca/sunplus.c +++ b/drivers/media/video/gspca/sunplus.c | |||
@@ -709,7 +709,7 @@ static void spca504B_SetSizeType(struct gspca_dev *gspca_dev) | |||
709 | spca504B_PollingDataReady(gspca_dev); | 709 | spca504B_PollingDataReady(gspca_dev); |
710 | 710 | ||
711 | /* Init the cam width height with some values get on init ? */ | 711 | /* Init the cam width height with some values get on init ? */ |
712 | reg_w_riv(gspca_dev, 0x31, 0, 0x04); | 712 | reg_w_riv(gspca_dev, 0x31, 0x0004, 0x00); |
713 | spca504B_WaitCmdStatus(gspca_dev); | 713 | spca504B_WaitCmdStatus(gspca_dev); |
714 | spca504B_PollingDataReady(gspca_dev); | 714 | spca504B_PollingDataReady(gspca_dev); |
715 | break; | 715 | break; |
@@ -807,14 +807,14 @@ static void init_ctl_reg(struct gspca_dev *gspca_dev) | |||
807 | default: | 807 | default: |
808 | /* case BRIDGE_SPCA533: */ | 808 | /* case BRIDGE_SPCA533: */ |
809 | /* case BRIDGE_SPCA504B: */ | 809 | /* case BRIDGE_SPCA504B: */ |
810 | reg_w_riv(gspca_dev, 0, 0x00, 0x21ad); /* hue */ | 810 | reg_w_riv(gspca_dev, 0, 0x21ad, 0x00); /* hue */ |
811 | reg_w_riv(gspca_dev, 0, 0x01, 0x21ac); /* sat/hue */ | 811 | reg_w_riv(gspca_dev, 0, 0x21ac, 0x01); /* sat/hue */ |
812 | reg_w_riv(gspca_dev, 0, 0x00, 0x21a3); /* gamma */ | 812 | reg_w_riv(gspca_dev, 0, 0x21a3, 0x00); /* gamma */ |
813 | break; | 813 | break; |
814 | case BRIDGE_SPCA536: | 814 | case BRIDGE_SPCA536: |
815 | reg_w_riv(gspca_dev, 0, 0x40, 0x20f5); | 815 | reg_w_riv(gspca_dev, 0, 0x20f5, 0x40); |
816 | reg_w_riv(gspca_dev, 0, 0x01, 0x20f4); | 816 | reg_w_riv(gspca_dev, 0, 0x20f4, 0x01); |
817 | reg_w_riv(gspca_dev, 0, 0x00, 0x2089); | 817 | reg_w_riv(gspca_dev, 0, 0x2089, 0x00); |
818 | break; | 818 | break; |
819 | } | 819 | } |
820 | if (pollreg) | 820 | if (pollreg) |
@@ -887,11 +887,11 @@ static int sd_init(struct gspca_dev *gspca_dev) | |||
887 | switch (sd->bridge) { | 887 | switch (sd->bridge) { |
888 | case BRIDGE_SPCA504B: | 888 | case BRIDGE_SPCA504B: |
889 | reg_w_riv(gspca_dev, 0x1d, 0x00, 0); | 889 | reg_w_riv(gspca_dev, 0x1d, 0x00, 0); |
890 | reg_w_riv(gspca_dev, 0, 0x01, 0x2306); | 890 | reg_w_riv(gspca_dev, 0x00, 0x2306, 0x01); |
891 | reg_w_riv(gspca_dev, 0, 0x00, 0x0d04); | 891 | reg_w_riv(gspca_dev, 0x00, 0x0d04, 0x00); |
892 | reg_w_riv(gspca_dev, 0, 0x00, 0x2000); | 892 | reg_w_riv(gspca_dev, 0x00, 0x2000, 0x00); |
893 | reg_w_riv(gspca_dev, 0, 0x13, 0x2301); | 893 | reg_w_riv(gspca_dev, 0x00, 0x2301, 0x13); |
894 | reg_w_riv(gspca_dev, 0, 0x00, 0x2306); | 894 | reg_w_riv(gspca_dev, 0x00, 0x2306, 0x00); |
895 | /* fall thru */ | 895 | /* fall thru */ |
896 | case BRIDGE_SPCA533: | 896 | case BRIDGE_SPCA533: |
897 | spca504B_PollingDataReady(gspca_dev); | 897 | spca504B_PollingDataReady(gspca_dev); |
@@ -1000,7 +1000,7 @@ static int sd_start(struct gspca_dev *gspca_dev) | |||
1000 | spca504B_WaitCmdStatus(gspca_dev); | 1000 | spca504B_WaitCmdStatus(gspca_dev); |
1001 | break; | 1001 | break; |
1002 | default: | 1002 | default: |
1003 | reg_w_riv(gspca_dev, 0x31, 0, 0x04); | 1003 | reg_w_riv(gspca_dev, 0x31, 0x0004, 0x00); |
1004 | spca504B_WaitCmdStatus(gspca_dev); | 1004 | spca504B_WaitCmdStatus(gspca_dev); |
1005 | spca504B_PollingDataReady(gspca_dev); | 1005 | spca504B_PollingDataReady(gspca_dev); |
1006 | break; | 1006 | break; |
diff --git a/drivers/media/video/gspca/vc032x.c b/drivers/media/video/gspca/vc032x.c index c090efcd8045..71921c878424 100644 --- a/drivers/media/video/gspca/vc032x.c +++ b/drivers/media/video/gspca/vc032x.c | |||
@@ -3009,6 +3009,10 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, | |||
3009 | int l; | 3009 | int l; |
3010 | 3010 | ||
3011 | frame = gspca_get_i_frame(gspca_dev); | 3011 | frame = gspca_get_i_frame(gspca_dev); |
3012 | if (frame == NULL) { | ||
3013 | gspca_dev->last_packet_type = DISCARD_PACKET; | ||
3014 | return; | ||
3015 | } | ||
3012 | l = frame->data_end - frame->data; | 3016 | l = frame->data_end - frame->data; |
3013 | if (len > frame->v4l2_buf.length - l) | 3017 | if (len > frame->v4l2_buf.length - l) |
3014 | len = frame->v4l2_buf.length - l; | 3018 | len = frame->v4l2_buf.length - l; |
diff --git a/drivers/media/video/mx1_camera.c b/drivers/media/video/mx1_camera.c index 2ba14fb5b031..c167cc3de492 100644 --- a/drivers/media/video/mx1_camera.c +++ b/drivers/media/video/mx1_camera.c | |||
@@ -718,7 +718,7 @@ static int __init mx1_camera_probe(struct platform_device *pdev) | |||
718 | 718 | ||
719 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 719 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
720 | irq = platform_get_irq(pdev, 0); | 720 | irq = platform_get_irq(pdev, 0); |
721 | if (!res || !irq) { | 721 | if (!res || (int)irq <= 0) { |
722 | err = -ENODEV; | 722 | err = -ENODEV; |
723 | goto exit; | 723 | goto exit; |
724 | } | 724 | } |
diff --git a/drivers/media/video/rj54n1cb0c.c b/drivers/media/video/rj54n1cb0c.c index 7e42989ce0e4..805226e0d9c1 100644 --- a/drivers/media/video/rj54n1cb0c.c +++ b/drivers/media/video/rj54n1cb0c.c | |||
@@ -563,7 +563,7 @@ static int rj54n1_s_crop(struct v4l2_subdev *sd, struct v4l2_crop *a) | |||
563 | struct i2c_client *client = sd->priv; | 563 | struct i2c_client *client = sd->priv; |
564 | struct rj54n1 *rj54n1 = to_rj54n1(client); | 564 | struct rj54n1 *rj54n1 = to_rj54n1(client); |
565 | struct v4l2_rect *rect = &a->c; | 565 | struct v4l2_rect *rect = &a->c; |
566 | unsigned int dummy, output_w, output_h, | 566 | unsigned int dummy = 0, output_w, output_h, |
567 | input_w = rect->width, input_h = rect->height; | 567 | input_w = rect->width, input_h = rect->height; |
568 | int ret; | 568 | int ret; |
569 | 569 | ||
diff --git a/drivers/media/video/saa7134/saa7134-core.c b/drivers/media/video/saa7134/saa7134-core.c index 9f85e917f9f3..a7ad7810fddc 100644 --- a/drivers/media/video/saa7134/saa7134-core.c +++ b/drivers/media/video/saa7134/saa7134-core.c | |||
@@ -420,19 +420,6 @@ int saa7134_set_dmabits(struct saa7134_dev *dev) | |||
420 | ctrl |= SAA7134_MAIN_CTRL_TE5; | 420 | ctrl |= SAA7134_MAIN_CTRL_TE5; |
421 | irq |= SAA7134_IRQ1_INTE_RA2_1 | | 421 | irq |= SAA7134_IRQ1_INTE_RA2_1 | |
422 | SAA7134_IRQ1_INTE_RA2_0; | 422 | SAA7134_IRQ1_INTE_RA2_0; |
423 | |||
424 | /* dma: setup channel 5 (= TS) */ | ||
425 | |||
426 | saa_writeb(SAA7134_TS_DMA0, (dev->ts.nr_packets - 1) & 0xff); | ||
427 | saa_writeb(SAA7134_TS_DMA1, | ||
428 | ((dev->ts.nr_packets - 1) >> 8) & 0xff); | ||
429 | /* TSNOPIT=0, TSCOLAP=0 */ | ||
430 | saa_writeb(SAA7134_TS_DMA2, | ||
431 | (((dev->ts.nr_packets - 1) >> 16) & 0x3f) | 0x00); | ||
432 | saa_writel(SAA7134_RS_PITCH(5), TS_PACKET_SIZE); | ||
433 | saa_writel(SAA7134_RS_CONTROL(5), SAA7134_RS_CONTROL_BURST_16 | | ||
434 | SAA7134_RS_CONTROL_ME | | ||
435 | (dev->ts.pt_ts.dma >> 12)); | ||
436 | } | 423 | } |
437 | 424 | ||
438 | /* set task conditions + field handling */ | 425 | /* set task conditions + field handling */ |
diff --git a/drivers/media/video/saa7134/saa7134-ts.c b/drivers/media/video/saa7134/saa7134-ts.c index 03488ba4c99c..b9817d74943f 100644 --- a/drivers/media/video/saa7134/saa7134-ts.c +++ b/drivers/media/video/saa7134/saa7134-ts.c | |||
@@ -250,6 +250,19 @@ int saa7134_ts_start(struct saa7134_dev *dev) | |||
250 | 250 | ||
251 | BUG_ON(dev->ts_started); | 251 | BUG_ON(dev->ts_started); |
252 | 252 | ||
253 | /* dma: setup channel 5 (= TS) */ | ||
254 | saa_writeb(SAA7134_TS_DMA0, (dev->ts.nr_packets - 1) & 0xff); | ||
255 | saa_writeb(SAA7134_TS_DMA1, | ||
256 | ((dev->ts.nr_packets - 1) >> 8) & 0xff); | ||
257 | /* TSNOPIT=0, TSCOLAP=0 */ | ||
258 | saa_writeb(SAA7134_TS_DMA2, | ||
259 | (((dev->ts.nr_packets - 1) >> 16) & 0x3f) | 0x00); | ||
260 | saa_writel(SAA7134_RS_PITCH(5), TS_PACKET_SIZE); | ||
261 | saa_writel(SAA7134_RS_CONTROL(5), SAA7134_RS_CONTROL_BURST_16 | | ||
262 | SAA7134_RS_CONTROL_ME | | ||
263 | (dev->ts.pt_ts.dma >> 12)); | ||
264 | |||
265 | /* reset hardware TS buffers */ | ||
253 | saa_writeb(SAA7134_TS_SERIAL1, 0x00); | 266 | saa_writeb(SAA7134_TS_SERIAL1, 0x00); |
254 | saa_writeb(SAA7134_TS_SERIAL1, 0x03); | 267 | saa_writeb(SAA7134_TS_SERIAL1, 0x03); |
255 | saa_writeb(SAA7134_TS_SERIAL1, 0x00); | 268 | saa_writeb(SAA7134_TS_SERIAL1, 0x00); |
diff --git a/drivers/media/video/sh_mobile_ceu_camera.c b/drivers/media/video/sh_mobile_ceu_camera.c index d69363f0d8c9..f09c7140d6b2 100644 --- a/drivers/media/video/sh_mobile_ceu_camera.c +++ b/drivers/media/video/sh_mobile_ceu_camera.c | |||
@@ -1827,7 +1827,7 @@ static int __devinit sh_mobile_ceu_probe(struct platform_device *pdev) | |||
1827 | 1827 | ||
1828 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1828 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
1829 | irq = platform_get_irq(pdev, 0); | 1829 | irq = platform_get_irq(pdev, 0); |
1830 | if (!res || !irq) { | 1830 | if (!res || (int)irq <= 0) { |
1831 | dev_err(&pdev->dev, "Not enough CEU platform resources.\n"); | 1831 | dev_err(&pdev->dev, "Not enough CEU platform resources.\n"); |
1832 | err = -ENODEV; | 1832 | err = -ENODEV; |
1833 | goto exit; | 1833 | goto exit; |
diff --git a/drivers/media/video/uvc/uvc_ctrl.c b/drivers/media/video/uvc/uvc_ctrl.c index 0469d7a876a8..ec8ef8c5560a 100644 --- a/drivers/media/video/uvc/uvc_ctrl.c +++ b/drivers/media/video/uvc/uvc_ctrl.c | |||
@@ -1393,7 +1393,7 @@ uvc_ctrl_prune_entity(struct uvc_device *dev, struct uvc_entity *entity) | |||
1393 | size = entity->processing.bControlSize; | 1393 | size = entity->processing.bControlSize; |
1394 | 1394 | ||
1395 | for (i = 0; i < ARRAY_SIZE(blacklist); ++i) { | 1395 | for (i = 0; i < ARRAY_SIZE(blacklist); ++i) { |
1396 | if (!usb_match_id(dev->intf, &blacklist[i].id)) | 1396 | if (!usb_match_one_id(dev->intf, &blacklist[i].id)) |
1397 | continue; | 1397 | continue; |
1398 | 1398 | ||
1399 | if (blacklist[i].index >= 8 * size || | 1399 | if (blacklist[i].index >= 8 * size || |
diff --git a/drivers/media/video/uvc/uvc_queue.c b/drivers/media/video/uvc/uvc_queue.c index f854698c4061..ea11839cba4a 100644 --- a/drivers/media/video/uvc/uvc_queue.c +++ b/drivers/media/video/uvc/uvc_queue.c | |||
@@ -59,9 +59,9 @@ | |||
59 | * returns immediately. | 59 | * returns immediately. |
60 | * | 60 | * |
61 | * When the buffer is full, the completion handler removes it from the irq | 61 | * When the buffer is full, the completion handler removes it from the irq |
62 | * queue, marks it as ready (UVC_BUF_STATE_DONE) and wakes its wait queue. | 62 | * queue, marks it as done (UVC_BUF_STATE_DONE) and wakes its wait queue. |
63 | * At that point, any process waiting on the buffer will be woken up. If a | 63 | * At that point, any process waiting on the buffer will be woken up. If a |
64 | * process tries to dequeue a buffer after it has been marked ready, the | 64 | * process tries to dequeue a buffer after it has been marked done, the |
65 | * dequeing will succeed immediately. | 65 | * dequeing will succeed immediately. |
66 | * | 66 | * |
67 | * 2. Buffers are queued, user is waiting on a buffer and the device gets | 67 | * 2. Buffers are queued, user is waiting on a buffer and the device gets |
@@ -201,6 +201,7 @@ static void __uvc_query_buffer(struct uvc_buffer *buf, | |||
201 | break; | 201 | break; |
202 | case UVC_BUF_STATE_QUEUED: | 202 | case UVC_BUF_STATE_QUEUED: |
203 | case UVC_BUF_STATE_ACTIVE: | 203 | case UVC_BUF_STATE_ACTIVE: |
204 | case UVC_BUF_STATE_READY: | ||
204 | v4l2_buf->flags |= V4L2_BUF_FLAG_QUEUED; | 205 | v4l2_buf->flags |= V4L2_BUF_FLAG_QUEUED; |
205 | break; | 206 | break; |
206 | case UVC_BUF_STATE_IDLE: | 207 | case UVC_BUF_STATE_IDLE: |
@@ -295,13 +296,15 @@ static int uvc_queue_waiton(struct uvc_buffer *buf, int nonblocking) | |||
295 | { | 296 | { |
296 | if (nonblocking) { | 297 | if (nonblocking) { |
297 | return (buf->state != UVC_BUF_STATE_QUEUED && | 298 | return (buf->state != UVC_BUF_STATE_QUEUED && |
298 | buf->state != UVC_BUF_STATE_ACTIVE) | 299 | buf->state != UVC_BUF_STATE_ACTIVE && |
300 | buf->state != UVC_BUF_STATE_READY) | ||
299 | ? 0 : -EAGAIN; | 301 | ? 0 : -EAGAIN; |
300 | } | 302 | } |
301 | 303 | ||
302 | return wait_event_interruptible(buf->wait, | 304 | return wait_event_interruptible(buf->wait, |
303 | buf->state != UVC_BUF_STATE_QUEUED && | 305 | buf->state != UVC_BUF_STATE_QUEUED && |
304 | buf->state != UVC_BUF_STATE_ACTIVE); | 306 | buf->state != UVC_BUF_STATE_ACTIVE && |
307 | buf->state != UVC_BUF_STATE_READY); | ||
305 | } | 308 | } |
306 | 309 | ||
307 | /* | 310 | /* |
@@ -348,6 +351,7 @@ int uvc_dequeue_buffer(struct uvc_video_queue *queue, | |||
348 | case UVC_BUF_STATE_IDLE: | 351 | case UVC_BUF_STATE_IDLE: |
349 | case UVC_BUF_STATE_QUEUED: | 352 | case UVC_BUF_STATE_QUEUED: |
350 | case UVC_BUF_STATE_ACTIVE: | 353 | case UVC_BUF_STATE_ACTIVE: |
354 | case UVC_BUF_STATE_READY: | ||
351 | default: | 355 | default: |
352 | uvc_trace(UVC_TRACE_CAPTURE, "[E] Invalid buffer state %u " | 356 | uvc_trace(UVC_TRACE_CAPTURE, "[E] Invalid buffer state %u " |
353 | "(driver bug?).\n", buf->state); | 357 | "(driver bug?).\n", buf->state); |
@@ -489,6 +493,7 @@ struct uvc_buffer *uvc_queue_next_buffer(struct uvc_video_queue *queue, | |||
489 | 493 | ||
490 | spin_lock_irqsave(&queue->irqlock, flags); | 494 | spin_lock_irqsave(&queue->irqlock, flags); |
491 | list_del(&buf->queue); | 495 | list_del(&buf->queue); |
496 | buf->state = UVC_BUF_STATE_DONE; | ||
492 | if (!list_empty(&queue->irqqueue)) | 497 | if (!list_empty(&queue->irqqueue)) |
493 | nextbuf = list_first_entry(&queue->irqqueue, struct uvc_buffer, | 498 | nextbuf = list_first_entry(&queue->irqqueue, struct uvc_buffer, |
494 | queue); | 499 | queue); |
diff --git a/drivers/media/video/uvc/uvc_video.c b/drivers/media/video/uvc/uvc_video.c index 9a9802830d41..7dcf534a0cf3 100644 --- a/drivers/media/video/uvc/uvc_video.c +++ b/drivers/media/video/uvc/uvc_video.c | |||
@@ -441,7 +441,7 @@ static int uvc_video_decode_start(struct uvc_streaming *stream, | |||
441 | if (fid != stream->last_fid && buf->buf.bytesused != 0) { | 441 | if (fid != stream->last_fid && buf->buf.bytesused != 0) { |
442 | uvc_trace(UVC_TRACE_FRAME, "Frame complete (FID bit " | 442 | uvc_trace(UVC_TRACE_FRAME, "Frame complete (FID bit " |
443 | "toggled).\n"); | 443 | "toggled).\n"); |
444 | buf->state = UVC_BUF_STATE_DONE; | 444 | buf->state = UVC_BUF_STATE_READY; |
445 | return -EAGAIN; | 445 | return -EAGAIN; |
446 | } | 446 | } |
447 | 447 | ||
@@ -470,7 +470,7 @@ static void uvc_video_decode_data(struct uvc_streaming *stream, | |||
470 | /* Complete the current frame if the buffer size was exceeded. */ | 470 | /* Complete the current frame if the buffer size was exceeded. */ |
471 | if (len > maxlen) { | 471 | if (len > maxlen) { |
472 | uvc_trace(UVC_TRACE_FRAME, "Frame complete (overflow).\n"); | 472 | uvc_trace(UVC_TRACE_FRAME, "Frame complete (overflow).\n"); |
473 | buf->state = UVC_BUF_STATE_DONE; | 473 | buf->state = UVC_BUF_STATE_READY; |
474 | } | 474 | } |
475 | } | 475 | } |
476 | 476 | ||
@@ -482,7 +482,7 @@ static void uvc_video_decode_end(struct uvc_streaming *stream, | |||
482 | uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n"); | 482 | uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n"); |
483 | if (data[0] == len) | 483 | if (data[0] == len) |
484 | uvc_trace(UVC_TRACE_FRAME, "EOF in empty payload.\n"); | 484 | uvc_trace(UVC_TRACE_FRAME, "EOF in empty payload.\n"); |
485 | buf->state = UVC_BUF_STATE_DONE; | 485 | buf->state = UVC_BUF_STATE_READY; |
486 | if (stream->dev->quirks & UVC_QUIRK_STREAM_NO_FID) | 486 | if (stream->dev->quirks & UVC_QUIRK_STREAM_NO_FID) |
487 | stream->last_fid ^= UVC_STREAM_FID; | 487 | stream->last_fid ^= UVC_STREAM_FID; |
488 | } | 488 | } |
@@ -568,8 +568,7 @@ static void uvc_video_decode_isoc(struct urb *urb, struct uvc_streaming *stream, | |||
568 | uvc_video_decode_end(stream, buf, mem, | 568 | uvc_video_decode_end(stream, buf, mem, |
569 | urb->iso_frame_desc[i].actual_length); | 569 | urb->iso_frame_desc[i].actual_length); |
570 | 570 | ||
571 | if (buf->state == UVC_BUF_STATE_DONE || | 571 | if (buf->state == UVC_BUF_STATE_READY) |
572 | buf->state == UVC_BUF_STATE_ERROR) | ||
573 | buf = uvc_queue_next_buffer(&stream->queue, buf); | 572 | buf = uvc_queue_next_buffer(&stream->queue, buf); |
574 | } | 573 | } |
575 | } | 574 | } |
@@ -627,8 +626,7 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, | |||
627 | if (!stream->bulk.skip_payload && buf != NULL) { | 626 | if (!stream->bulk.skip_payload && buf != NULL) { |
628 | uvc_video_decode_end(stream, buf, stream->bulk.header, | 627 | uvc_video_decode_end(stream, buf, stream->bulk.header, |
629 | stream->bulk.payload_size); | 628 | stream->bulk.payload_size); |
630 | if (buf->state == UVC_BUF_STATE_DONE || | 629 | if (buf->state == UVC_BUF_STATE_READY) |
631 | buf->state == UVC_BUF_STATE_ERROR) | ||
632 | buf = uvc_queue_next_buffer(&stream->queue, | 630 | buf = uvc_queue_next_buffer(&stream->queue, |
633 | buf); | 631 | buf); |
634 | } | 632 | } |
@@ -669,7 +667,7 @@ static void uvc_video_encode_bulk(struct urb *urb, struct uvc_streaming *stream, | |||
669 | stream->bulk.payload_size == stream->bulk.max_payload_size) { | 667 | stream->bulk.payload_size == stream->bulk.max_payload_size) { |
670 | if (buf->buf.bytesused == stream->queue.buf_used) { | 668 | if (buf->buf.bytesused == stream->queue.buf_used) { |
671 | stream->queue.buf_used = 0; | 669 | stream->queue.buf_used = 0; |
672 | buf->state = UVC_BUF_STATE_DONE; | 670 | buf->state = UVC_BUF_STATE_READY; |
673 | uvc_queue_next_buffer(&stream->queue, buf); | 671 | uvc_queue_next_buffer(&stream->queue, buf); |
674 | stream->last_fid ^= UVC_STREAM_FID; | 672 | stream->last_fid ^= UVC_STREAM_FID; |
675 | } | 673 | } |
@@ -924,10 +922,8 @@ static int uvc_init_video_bulk(struct uvc_streaming *stream, | |||
924 | static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags) | 922 | static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags) |
925 | { | 923 | { |
926 | struct usb_interface *intf = stream->intf; | 924 | struct usb_interface *intf = stream->intf; |
927 | struct usb_host_interface *alts; | 925 | struct usb_host_endpoint *ep; |
928 | struct usb_host_endpoint *ep = NULL; | 926 | unsigned int i; |
929 | int intfnum = stream->intfnum; | ||
930 | unsigned int bandwidth, psize, i; | ||
931 | int ret; | 927 | int ret; |
932 | 928 | ||
933 | stream->last_fid = -1; | 929 | stream->last_fid = -1; |
@@ -936,6 +932,12 @@ static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags) | |||
936 | stream->bulk.payload_size = 0; | 932 | stream->bulk.payload_size = 0; |
937 | 933 | ||
938 | if (intf->num_altsetting > 1) { | 934 | if (intf->num_altsetting > 1) { |
935 | struct usb_host_endpoint *best_ep = NULL; | ||
936 | unsigned int best_psize = 3 * 1024; | ||
937 | unsigned int bandwidth; | ||
938 | unsigned int uninitialized_var(altsetting); | ||
939 | int intfnum = stream->intfnum; | ||
940 | |||
939 | /* Isochronous endpoint, select the alternate setting. */ | 941 | /* Isochronous endpoint, select the alternate setting. */ |
940 | bandwidth = stream->ctrl.dwMaxPayloadTransferSize; | 942 | bandwidth = stream->ctrl.dwMaxPayloadTransferSize; |
941 | 943 | ||
@@ -949,6 +951,9 @@ static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags) | |||
949 | } | 951 | } |
950 | 952 | ||
951 | for (i = 0; i < intf->num_altsetting; ++i) { | 953 | for (i = 0; i < intf->num_altsetting; ++i) { |
954 | struct usb_host_interface *alts; | ||
955 | unsigned int psize; | ||
956 | |||
952 | alts = &intf->altsetting[i]; | 957 | alts = &intf->altsetting[i]; |
953 | ep = uvc_find_endpoint(alts, | 958 | ep = uvc_find_endpoint(alts, |
954 | stream->header.bEndpointAddress); | 959 | stream->header.bEndpointAddress); |
@@ -958,21 +963,27 @@ static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags) | |||
958 | /* Check if the bandwidth is high enough. */ | 963 | /* Check if the bandwidth is high enough. */ |
959 | psize = le16_to_cpu(ep->desc.wMaxPacketSize); | 964 | psize = le16_to_cpu(ep->desc.wMaxPacketSize); |
960 | psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3)); | 965 | psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3)); |
961 | if (psize >= bandwidth) | 966 | if (psize >= bandwidth && psize <= best_psize) { |
962 | break; | 967 | altsetting = i; |
968 | best_psize = psize; | ||
969 | best_ep = ep; | ||
970 | } | ||
963 | } | 971 | } |
964 | 972 | ||
965 | if (i >= intf->num_altsetting) { | 973 | if (best_ep == NULL) { |
966 | uvc_trace(UVC_TRACE_VIDEO, "No fast enough alt setting " | 974 | uvc_trace(UVC_TRACE_VIDEO, "No fast enough alt setting " |
967 | "for requested bandwidth.\n"); | 975 | "for requested bandwidth.\n"); |
968 | return -EIO; | 976 | return -EIO; |
969 | } | 977 | } |
970 | 978 | ||
971 | ret = usb_set_interface(stream->dev->udev, intfnum, i); | 979 | uvc_trace(UVC_TRACE_VIDEO, "Selecting alternate setting %u " |
980 | "(%u B/frame bandwidth).\n", altsetting, best_psize); | ||
981 | |||
982 | ret = usb_set_interface(stream->dev->udev, intfnum, altsetting); | ||
972 | if (ret < 0) | 983 | if (ret < 0) |
973 | return ret; | 984 | return ret; |
974 | 985 | ||
975 | ret = uvc_init_video_isoc(stream, ep, gfp_flags); | 986 | ret = uvc_init_video_isoc(stream, best_ep, gfp_flags); |
976 | } else { | 987 | } else { |
977 | /* Bulk endpoint, proceed to URB initialization. */ | 988 | /* Bulk endpoint, proceed to URB initialization. */ |
978 | ep = uvc_find_endpoint(&intf->altsetting[0], | 989 | ep = uvc_find_endpoint(&intf->altsetting[0], |
diff --git a/drivers/media/video/uvc/uvcvideo.h b/drivers/media/video/uvc/uvcvideo.h index 7ec9a04ced50..2337585001ea 100644 --- a/drivers/media/video/uvc/uvcvideo.h +++ b/drivers/media/video/uvc/uvcvideo.h | |||
@@ -365,8 +365,9 @@ enum uvc_buffer_state { | |||
365 | UVC_BUF_STATE_IDLE = 0, | 365 | UVC_BUF_STATE_IDLE = 0, |
366 | UVC_BUF_STATE_QUEUED = 1, | 366 | UVC_BUF_STATE_QUEUED = 1, |
367 | UVC_BUF_STATE_ACTIVE = 2, | 367 | UVC_BUF_STATE_ACTIVE = 2, |
368 | UVC_BUF_STATE_DONE = 3, | 368 | UVC_BUF_STATE_READY = 3, |
369 | UVC_BUF_STATE_ERROR = 4, | 369 | UVC_BUF_STATE_DONE = 4, |
370 | UVC_BUF_STATE_ERROR = 5, | ||
370 | }; | 371 | }; |
371 | 372 | ||
372 | struct uvc_buffer { | 373 | struct uvc_buffer { |
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c index 85bc6a685e36..44d2037e9e56 100644 --- a/drivers/message/fusion/mptbase.c +++ b/drivers/message/fusion/mptbase.c | |||
@@ -4330,6 +4330,8 @@ initChainBuffers(MPT_ADAPTER *ioc) | |||
4330 | 4330 | ||
4331 | if (ioc->bus_type == SPI) | 4331 | if (ioc->bus_type == SPI) |
4332 | num_chain *= MPT_SCSI_CAN_QUEUE; | 4332 | num_chain *= MPT_SCSI_CAN_QUEUE; |
4333 | else if (ioc->bus_type == SAS) | ||
4334 | num_chain *= MPT_SAS_CAN_QUEUE; | ||
4333 | else | 4335 | else |
4334 | num_chain *= MPT_FC_CAN_QUEUE; | 4336 | num_chain *= MPT_FC_CAN_QUEUE; |
4335 | 4337 | ||
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index ca2f2c4ff05e..e09eb4870db6 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile | |||
@@ -3,7 +3,7 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | obj-$(CONFIG_MFD_SM501) += sm501.o | 5 | obj-$(CONFIG_MFD_SM501) += sm501.o |
6 | obj-$(CONFIG_MFD_ASIC3) += asic3.o | 6 | obj-$(CONFIG_MFD_ASIC3) += asic3.o tmio_core.o |
7 | obj-$(CONFIG_MFD_SH_MOBILE_SDHI) += sh_mobile_sdhi.o | 7 | obj-$(CONFIG_MFD_SH_MOBILE_SDHI) += sh_mobile_sdhi.o |
8 | 8 | ||
9 | obj-$(CONFIG_HTC_EGPIO) += htc-egpio.o | 9 | obj-$(CONFIG_HTC_EGPIO) += htc-egpio.o |
@@ -11,9 +11,9 @@ obj-$(CONFIG_HTC_PASIC3) += htc-pasic3.o | |||
11 | 11 | ||
12 | obj-$(CONFIG_MFD_DM355EVM_MSP) += dm355evm_msp.o | 12 | obj-$(CONFIG_MFD_DM355EVM_MSP) += dm355evm_msp.o |
13 | 13 | ||
14 | obj-$(CONFIG_MFD_T7L66XB) += t7l66xb.o | 14 | obj-$(CONFIG_MFD_T7L66XB) += t7l66xb.o tmio_core.o |
15 | obj-$(CONFIG_MFD_TC6387XB) += tc6387xb.o | 15 | obj-$(CONFIG_MFD_TC6387XB) += tc6387xb.o tmio_core.o |
16 | obj-$(CONFIG_MFD_TC6393XB) += tc6393xb.o | 16 | obj-$(CONFIG_MFD_TC6393XB) += tc6393xb.o tmio_core.o |
17 | 17 | ||
18 | obj-$(CONFIG_MFD_WM8400) += wm8400-core.o | 18 | obj-$(CONFIG_MFD_WM8400) += wm8400-core.o |
19 | wm831x-objs := wm831x-core.o wm831x-irq.o wm831x-otp.o | 19 | wm831x-objs := wm831x-core.o wm831x-irq.o wm831x-otp.o |
diff --git a/drivers/mfd/asic3.c b/drivers/mfd/asic3.c index e22128c3e9a8..95c1e6bd1729 100644 --- a/drivers/mfd/asic3.c +++ b/drivers/mfd/asic3.c | |||
@@ -80,6 +80,7 @@ struct asic3 { | |||
80 | u16 irq_bothedge[4]; | 80 | u16 irq_bothedge[4]; |
81 | struct gpio_chip gpio; | 81 | struct gpio_chip gpio; |
82 | struct device *dev; | 82 | struct device *dev; |
83 | void __iomem *tmio_cnf; | ||
83 | 84 | ||
84 | struct asic3_clk clocks[ARRAY_SIZE(asic3_clk_init)]; | 85 | struct asic3_clk clocks[ARRAY_SIZE(asic3_clk_init)]; |
85 | }; | 86 | }; |
@@ -685,8 +686,24 @@ static struct mfd_cell asic3_cell_ds1wm = { | |||
685 | .resources = ds1wm_resources, | 686 | .resources = ds1wm_resources, |
686 | }; | 687 | }; |
687 | 688 | ||
689 | static void asic3_mmc_pwr(struct platform_device *pdev, int state) | ||
690 | { | ||
691 | struct asic3 *asic = dev_get_drvdata(pdev->dev.parent); | ||
692 | |||
693 | tmio_core_mmc_pwr(asic->tmio_cnf, 1 - asic->bus_shift, state); | ||
694 | } | ||
695 | |||
696 | static void asic3_mmc_clk_div(struct platform_device *pdev, int state) | ||
697 | { | ||
698 | struct asic3 *asic = dev_get_drvdata(pdev->dev.parent); | ||
699 | |||
700 | tmio_core_mmc_clk_div(asic->tmio_cnf, 1 - asic->bus_shift, state); | ||
701 | } | ||
702 | |||
688 | static struct tmio_mmc_data asic3_mmc_data = { | 703 | static struct tmio_mmc_data asic3_mmc_data = { |
689 | .hclk = 24576000, | 704 | .hclk = 24576000, |
705 | .set_pwr = asic3_mmc_pwr, | ||
706 | .set_clk_div = asic3_mmc_clk_div, | ||
690 | }; | 707 | }; |
691 | 708 | ||
692 | static struct resource asic3_mmc_resources[] = { | 709 | static struct resource asic3_mmc_resources[] = { |
@@ -696,11 +713,6 @@ static struct resource asic3_mmc_resources[] = { | |||
696 | .flags = IORESOURCE_MEM, | 713 | .flags = IORESOURCE_MEM, |
697 | }, | 714 | }, |
698 | { | 715 | { |
699 | .start = ASIC3_SD_CONFIG_BASE, | ||
700 | .end = ASIC3_SD_CONFIG_BASE + 0x1ff, | ||
701 | .flags = IORESOURCE_MEM, | ||
702 | }, | ||
703 | { | ||
704 | .start = 0, | 716 | .start = 0, |
705 | .end = 0, | 717 | .end = 0, |
706 | .flags = IORESOURCE_IRQ, | 718 | .flags = IORESOURCE_IRQ, |
@@ -743,6 +755,10 @@ static int asic3_mmc_enable(struct platform_device *pdev) | |||
743 | asic3_set_register(asic, ASIC3_OFFSET(SDHWCTRL, SDCONF), | 755 | asic3_set_register(asic, ASIC3_OFFSET(SDHWCTRL, SDCONF), |
744 | ASIC3_SDHWCTRL_SDPWR, 1); | 756 | ASIC3_SDHWCTRL_SDPWR, 1); |
745 | 757 | ||
758 | /* ASIC3_SD_CTRL_BASE assumes 32-bit addressing, TMIO is 16-bit */ | ||
759 | tmio_core_mmc_enable(asic->tmio_cnf, 1 - asic->bus_shift, | ||
760 | ASIC3_SD_CTRL_BASE >> 1); | ||
761 | |||
746 | return 0; | 762 | return 0; |
747 | } | 763 | } |
748 | 764 | ||
@@ -797,10 +813,15 @@ static int __init asic3_mfd_probe(struct platform_device *pdev, | |||
797 | asic3_cell_ds1wm.data_size = sizeof(asic3_cell_ds1wm); | 813 | asic3_cell_ds1wm.data_size = sizeof(asic3_cell_ds1wm); |
798 | 814 | ||
799 | /* MMC */ | 815 | /* MMC */ |
816 | asic->tmio_cnf = ioremap((ASIC3_SD_CONFIG_BASE >> asic->bus_shift) + | ||
817 | mem_sdio->start, 0x400 >> asic->bus_shift); | ||
818 | if (!asic->tmio_cnf) { | ||
819 | ret = -ENOMEM; | ||
820 | dev_dbg(asic->dev, "Couldn't ioremap SD_CONFIG\n"); | ||
821 | goto out; | ||
822 | } | ||
800 | asic3_mmc_resources[0].start >>= asic->bus_shift; | 823 | asic3_mmc_resources[0].start >>= asic->bus_shift; |
801 | asic3_mmc_resources[0].end >>= asic->bus_shift; | 824 | asic3_mmc_resources[0].end >>= asic->bus_shift; |
802 | asic3_mmc_resources[1].start >>= asic->bus_shift; | ||
803 | asic3_mmc_resources[1].end >>= asic->bus_shift; | ||
804 | 825 | ||
805 | asic3_cell_mmc.platform_data = &asic3_cell_mmc; | 826 | asic3_cell_mmc.platform_data = &asic3_cell_mmc; |
806 | asic3_cell_mmc.data_size = sizeof(asic3_cell_mmc); | 827 | asic3_cell_mmc.data_size = sizeof(asic3_cell_mmc); |
@@ -820,7 +841,10 @@ static int __init asic3_mfd_probe(struct platform_device *pdev, | |||
820 | 841 | ||
821 | static void asic3_mfd_remove(struct platform_device *pdev) | 842 | static void asic3_mfd_remove(struct platform_device *pdev) |
822 | { | 843 | { |
844 | struct asic3 *asic = platform_get_drvdata(pdev); | ||
845 | |||
823 | mfd_remove_devices(&pdev->dev); | 846 | mfd_remove_devices(&pdev->dev); |
847 | iounmap(asic->tmio_cnf); | ||
824 | } | 848 | } |
825 | 849 | ||
826 | /* Core */ | 850 | /* Core */ |
diff --git a/drivers/mfd/mc13783-core.c b/drivers/mfd/mc13783-core.c index a1ade2324ea9..735c8a4d164f 100644 --- a/drivers/mfd/mc13783-core.c +++ b/drivers/mfd/mc13783-core.c | |||
@@ -619,6 +619,8 @@ err_revision: | |||
619 | } | 619 | } |
620 | /* This should go away (END) */ | 620 | /* This should go away (END) */ |
621 | 621 | ||
622 | mc13783_unlock(mc13783); | ||
623 | |||
622 | if (pdata->flags & MC13783_USE_ADC) | 624 | if (pdata->flags & MC13783_USE_ADC) |
623 | mc13783_add_subdevice(mc13783, "mc13783-adc"); | 625 | mc13783_add_subdevice(mc13783, "mc13783-adc"); |
624 | 626 | ||
@@ -641,8 +643,6 @@ err_revision: | |||
641 | if (pdata->flags & MC13783_USE_TOUCHSCREEN) | 643 | if (pdata->flags & MC13783_USE_TOUCHSCREEN) |
642 | mc13783_add_subdevice(mc13783, "mc13783-ts"); | 644 | mc13783_add_subdevice(mc13783, "mc13783-ts"); |
643 | 645 | ||
644 | mc13783_unlock(mc13783); | ||
645 | |||
646 | return 0; | 646 | return 0; |
647 | } | 647 | } |
648 | 648 | ||
diff --git a/drivers/mfd/t7l66xb.c b/drivers/mfd/t7l66xb.c index 0a255c1f1ce7..bcf4687d4af5 100644 --- a/drivers/mfd/t7l66xb.c +++ b/drivers/mfd/t7l66xb.c | |||
@@ -38,6 +38,19 @@ enum { | |||
38 | T7L66XB_CELL_MMC, | 38 | T7L66XB_CELL_MMC, |
39 | }; | 39 | }; |
40 | 40 | ||
41 | static const struct resource t7l66xb_mmc_resources[] = { | ||
42 | { | ||
43 | .start = 0x800, | ||
44 | .end = 0x9ff, | ||
45 | .flags = IORESOURCE_MEM, | ||
46 | }, | ||
47 | { | ||
48 | .start = IRQ_T7L66XB_MMC, | ||
49 | .end = IRQ_T7L66XB_MMC, | ||
50 | .flags = IORESOURCE_IRQ, | ||
51 | }, | ||
52 | }; | ||
53 | |||
41 | #define SCR_REVID 0x08 /* b Revision ID */ | 54 | #define SCR_REVID 0x08 /* b Revision ID */ |
42 | #define SCR_IMR 0x42 /* b Interrupt Mask */ | 55 | #define SCR_IMR 0x42 /* b Interrupt Mask */ |
43 | #define SCR_DEV_CTL 0xe0 /* b Device control */ | 56 | #define SCR_DEV_CTL 0xe0 /* b Device control */ |
@@ -83,6 +96,9 @@ static int t7l66xb_mmc_enable(struct platform_device *mmc) | |||
83 | 96 | ||
84 | spin_unlock_irqrestore(&t7l66xb->lock, flags); | 97 | spin_unlock_irqrestore(&t7l66xb->lock, flags); |
85 | 98 | ||
99 | tmio_core_mmc_enable(t7l66xb->scr + 0x200, 0, | ||
100 | t7l66xb_mmc_resources[0].start & 0xfffe); | ||
101 | |||
86 | return 0; | 102 | return 0; |
87 | } | 103 | } |
88 | 104 | ||
@@ -106,28 +122,28 @@ static int t7l66xb_mmc_disable(struct platform_device *mmc) | |||
106 | return 0; | 122 | return 0; |
107 | } | 123 | } |
108 | 124 | ||
125 | static void t7l66xb_mmc_pwr(struct platform_device *mmc, int state) | ||
126 | { | ||
127 | struct platform_device *dev = to_platform_device(mmc->dev.parent); | ||
128 | struct t7l66xb *t7l66xb = platform_get_drvdata(dev); | ||
129 | |||
130 | tmio_core_mmc_pwr(t7l66xb->scr + 0x200, 0, state); | ||
131 | } | ||
132 | |||
133 | static void t7l66xb_mmc_clk_div(struct platform_device *mmc, int state) | ||
134 | { | ||
135 | struct platform_device *dev = to_platform_device(mmc->dev.parent); | ||
136 | struct t7l66xb *t7l66xb = platform_get_drvdata(dev); | ||
137 | |||
138 | tmio_core_mmc_clk_div(t7l66xb->scr + 0x200, 0, state); | ||
139 | } | ||
140 | |||
109 | /*--------------------------------------------------------------------------*/ | 141 | /*--------------------------------------------------------------------------*/ |
110 | 142 | ||
111 | static struct tmio_mmc_data t7166xb_mmc_data = { | 143 | static struct tmio_mmc_data t7166xb_mmc_data = { |
112 | .hclk = 24000000, | 144 | .hclk = 24000000, |
113 | }; | 145 | .set_pwr = t7l66xb_mmc_pwr, |
114 | 146 | .set_clk_div = t7l66xb_mmc_clk_div, | |
115 | static const struct resource t7l66xb_mmc_resources[] = { | ||
116 | { | ||
117 | .start = 0x800, | ||
118 | .end = 0x9ff, | ||
119 | .flags = IORESOURCE_MEM, | ||
120 | }, | ||
121 | { | ||
122 | .start = 0x200, | ||
123 | .end = 0x2ff, | ||
124 | .flags = IORESOURCE_MEM, | ||
125 | }, | ||
126 | { | ||
127 | .start = IRQ_T7L66XB_MMC, | ||
128 | .end = IRQ_T7L66XB_MMC, | ||
129 | .flags = IORESOURCE_IRQ, | ||
130 | }, | ||
131 | }; | 147 | }; |
132 | 148 | ||
133 | static const struct resource t7l66xb_nand_resources[] = { | 149 | static const struct resource t7l66xb_nand_resources[] = { |
@@ -282,6 +298,9 @@ static int t7l66xb_resume(struct platform_device *dev) | |||
282 | if (pdata && pdata->resume) | 298 | if (pdata && pdata->resume) |
283 | pdata->resume(dev); | 299 | pdata->resume(dev); |
284 | 300 | ||
301 | tmio_core_mmc_enable(t7l66xb->scr + 0x200, 0, | ||
302 | t7l66xb_mmc_resources[0].start & 0xfffe); | ||
303 | |||
285 | return 0; | 304 | return 0; |
286 | } | 305 | } |
287 | #else | 306 | #else |
diff --git a/drivers/mfd/tc6387xb.c b/drivers/mfd/tc6387xb.c index 3280ab33f88a..5c7f04343d5c 100644 --- a/drivers/mfd/tc6387xb.c +++ b/drivers/mfd/tc6387xb.c | |||
@@ -22,28 +22,52 @@ enum { | |||
22 | TC6387XB_CELL_MMC, | 22 | TC6387XB_CELL_MMC, |
23 | }; | 23 | }; |
24 | 24 | ||
25 | struct tc6387xb { | ||
26 | void __iomem *scr; | ||
27 | struct clk *clk32k; | ||
28 | struct resource rscr; | ||
29 | }; | ||
30 | |||
31 | static struct resource tc6387xb_mmc_resources[] = { | ||
32 | { | ||
33 | .start = 0x800, | ||
34 | .end = 0x9ff, | ||
35 | .flags = IORESOURCE_MEM, | ||
36 | }, | ||
37 | { | ||
38 | .start = 0, | ||
39 | .end = 0, | ||
40 | .flags = IORESOURCE_IRQ, | ||
41 | }, | ||
42 | }; | ||
43 | |||
44 | /*--------------------------------------------------------------------------*/ | ||
45 | |||
25 | #ifdef CONFIG_PM | 46 | #ifdef CONFIG_PM |
26 | static int tc6387xb_suspend(struct platform_device *dev, pm_message_t state) | 47 | static int tc6387xb_suspend(struct platform_device *dev, pm_message_t state) |
27 | { | 48 | { |
28 | struct clk *clk32k = platform_get_drvdata(dev); | 49 | struct tc6387xb *tc6387xb = platform_get_drvdata(dev); |
29 | struct tc6387xb_platform_data *pdata = dev->dev.platform_data; | 50 | struct tc6387xb_platform_data *pdata = dev->dev.platform_data; |
30 | 51 | ||
31 | if (pdata && pdata->suspend) | 52 | if (pdata && pdata->suspend) |
32 | pdata->suspend(dev); | 53 | pdata->suspend(dev); |
33 | clk_disable(clk32k); | 54 | clk_disable(tc6387xb->clk32k); |
34 | 55 | ||
35 | return 0; | 56 | return 0; |
36 | } | 57 | } |
37 | 58 | ||
38 | static int tc6387xb_resume(struct platform_device *dev) | 59 | static int tc6387xb_resume(struct platform_device *dev) |
39 | { | 60 | { |
40 | struct clk *clk32k = platform_get_drvdata(dev); | 61 | struct tc6387xb *tc6387xb = platform_get_drvdata(dev); |
41 | struct tc6387xb_platform_data *pdata = dev->dev.platform_data; | 62 | struct tc6387xb_platform_data *pdata = dev->dev.platform_data; |
42 | 63 | ||
43 | clk_enable(clk32k); | 64 | clk_enable(tc6387xb->clk32k); |
44 | if (pdata && pdata->resume) | 65 | if (pdata && pdata->resume) |
45 | pdata->resume(dev); | 66 | pdata->resume(dev); |
46 | 67 | ||
68 | tmio_core_mmc_resume(tc6387xb->scr + 0x200, 0, | ||
69 | tc6387xb_mmc_resources[0].start & 0xfffe); | ||
70 | |||
47 | return 0; | 71 | return 0; |
48 | } | 72 | } |
49 | #else | 73 | #else |
@@ -53,12 +77,32 @@ static int tc6387xb_resume(struct platform_device *dev) | |||
53 | 77 | ||
54 | /*--------------------------------------------------------------------------*/ | 78 | /*--------------------------------------------------------------------------*/ |
55 | 79 | ||
80 | static void tc6387xb_mmc_pwr(struct platform_device *mmc, int state) | ||
81 | { | ||
82 | struct platform_device *dev = to_platform_device(mmc->dev.parent); | ||
83 | struct tc6387xb *tc6387xb = platform_get_drvdata(dev); | ||
84 | |||
85 | tmio_core_mmc_pwr(tc6387xb->scr + 0x200, 0, state); | ||
86 | } | ||
87 | |||
88 | static void tc6387xb_mmc_clk_div(struct platform_device *mmc, int state) | ||
89 | { | ||
90 | struct platform_device *dev = to_platform_device(mmc->dev.parent); | ||
91 | struct tc6387xb *tc6387xb = platform_get_drvdata(dev); | ||
92 | |||
93 | tmio_core_mmc_clk_div(tc6387xb->scr + 0x200, 0, state); | ||
94 | } | ||
95 | |||
96 | |||
56 | static int tc6387xb_mmc_enable(struct platform_device *mmc) | 97 | static int tc6387xb_mmc_enable(struct platform_device *mmc) |
57 | { | 98 | { |
58 | struct platform_device *dev = to_platform_device(mmc->dev.parent); | 99 | struct platform_device *dev = to_platform_device(mmc->dev.parent); |
59 | struct clk *clk32k = platform_get_drvdata(dev); | 100 | struct tc6387xb *tc6387xb = platform_get_drvdata(dev); |
60 | 101 | ||
61 | clk_enable(clk32k); | 102 | clk_enable(tc6387xb->clk32k); |
103 | |||
104 | tmio_core_mmc_enable(tc6387xb->scr + 0x200, 0, | ||
105 | tc6387xb_mmc_resources[0].start & 0xfffe); | ||
62 | 106 | ||
63 | return 0; | 107 | return 0; |
64 | } | 108 | } |
@@ -66,36 +110,20 @@ static int tc6387xb_mmc_enable(struct platform_device *mmc) | |||
66 | static int tc6387xb_mmc_disable(struct platform_device *mmc) | 110 | static int tc6387xb_mmc_disable(struct platform_device *mmc) |
67 | { | 111 | { |
68 | struct platform_device *dev = to_platform_device(mmc->dev.parent); | 112 | struct platform_device *dev = to_platform_device(mmc->dev.parent); |
69 | struct clk *clk32k = platform_get_drvdata(dev); | 113 | struct tc6387xb *tc6387xb = platform_get_drvdata(dev); |
70 | 114 | ||
71 | clk_disable(clk32k); | 115 | clk_disable(tc6387xb->clk32k); |
72 | 116 | ||
73 | return 0; | 117 | return 0; |
74 | } | 118 | } |
75 | 119 | ||
76 | /*--------------------------------------------------------------------------*/ | ||
77 | |||
78 | static struct tmio_mmc_data tc6387xb_mmc_data = { | 120 | static struct tmio_mmc_data tc6387xb_mmc_data = { |
79 | .hclk = 24000000, | 121 | .hclk = 24000000, |
122 | .set_pwr = tc6387xb_mmc_pwr, | ||
123 | .set_clk_div = tc6387xb_mmc_clk_div, | ||
80 | }; | 124 | }; |
81 | 125 | ||
82 | static struct resource tc6387xb_mmc_resources[] = { | 126 | /*--------------------------------------------------------------------------*/ |
83 | { | ||
84 | .start = 0x800, | ||
85 | .end = 0x9ff, | ||
86 | .flags = IORESOURCE_MEM, | ||
87 | }, | ||
88 | { | ||
89 | .start = 0x200, | ||
90 | .end = 0x2ff, | ||
91 | .flags = IORESOURCE_MEM, | ||
92 | }, | ||
93 | { | ||
94 | .start = 0, | ||
95 | .end = 0, | ||
96 | .flags = IORESOURCE_IRQ, | ||
97 | }, | ||
98 | }; | ||
99 | 127 | ||
100 | static struct mfd_cell tc6387xb_cells[] = { | 128 | static struct mfd_cell tc6387xb_cells[] = { |
101 | [TC6387XB_CELL_MMC] = { | 129 | [TC6387XB_CELL_MMC] = { |
@@ -111,8 +139,9 @@ static struct mfd_cell tc6387xb_cells[] = { | |||
111 | static int tc6387xb_probe(struct platform_device *dev) | 139 | static int tc6387xb_probe(struct platform_device *dev) |
112 | { | 140 | { |
113 | struct tc6387xb_platform_data *pdata = dev->dev.platform_data; | 141 | struct tc6387xb_platform_data *pdata = dev->dev.platform_data; |
114 | struct resource *iomem; | 142 | struct resource *iomem, *rscr; |
115 | struct clk *clk32k; | 143 | struct clk *clk32k; |
144 | struct tc6387xb *tc6387xb; | ||
116 | int irq, ret; | 145 | int irq, ret; |
117 | 146 | ||
118 | iomem = platform_get_resource(dev, IORESOURCE_MEM, 0); | 147 | iomem = platform_get_resource(dev, IORESOURCE_MEM, 0); |
@@ -120,18 +149,40 @@ static int tc6387xb_probe(struct platform_device *dev) | |||
120 | return -EINVAL; | 149 | return -EINVAL; |
121 | } | 150 | } |
122 | 151 | ||
152 | tc6387xb = kzalloc(sizeof *tc6387xb, GFP_KERNEL); | ||
153 | if (!tc6387xb) | ||
154 | return -ENOMEM; | ||
155 | |||
123 | ret = platform_get_irq(dev, 0); | 156 | ret = platform_get_irq(dev, 0); |
124 | if (ret >= 0) | 157 | if (ret >= 0) |
125 | irq = ret; | 158 | irq = ret; |
126 | else | 159 | else |
127 | goto err_resource; | 160 | goto err_no_irq; |
128 | 161 | ||
129 | clk32k = clk_get(&dev->dev, "CLK_CK32K"); | 162 | clk32k = clk_get(&dev->dev, "CLK_CK32K"); |
130 | if (IS_ERR(clk32k)) { | 163 | if (IS_ERR(clk32k)) { |
131 | ret = PTR_ERR(clk32k); | 164 | ret = PTR_ERR(clk32k); |
165 | goto err_no_clk; | ||
166 | } | ||
167 | |||
168 | rscr = &tc6387xb->rscr; | ||
169 | rscr->name = "tc6387xb-core"; | ||
170 | rscr->start = iomem->start; | ||
171 | rscr->end = iomem->start + 0xff; | ||
172 | rscr->flags = IORESOURCE_MEM; | ||
173 | |||
174 | ret = request_resource(iomem, rscr); | ||
175 | if (ret) | ||
132 | goto err_resource; | 176 | goto err_resource; |
177 | |||
178 | tc6387xb->scr = ioremap(rscr->start, rscr->end - rscr->start + 1); | ||
179 | if (!tc6387xb->scr) { | ||
180 | ret = -ENOMEM; | ||
181 | goto err_ioremap; | ||
133 | } | 182 | } |
134 | platform_set_drvdata(dev, clk32k); | 183 | |
184 | tc6387xb->clk32k = clk32k; | ||
185 | platform_set_drvdata(dev, tc6387xb); | ||
135 | 186 | ||
136 | if (pdata && pdata->enable) | 187 | if (pdata && pdata->enable) |
137 | pdata->enable(dev); | 188 | pdata->enable(dev); |
@@ -149,8 +200,13 @@ static int tc6387xb_probe(struct platform_device *dev) | |||
149 | if (!ret) | 200 | if (!ret) |
150 | return 0; | 201 | return 0; |
151 | 202 | ||
152 | clk_put(clk32k); | 203 | err_ioremap: |
204 | release_resource(&tc6387xb->rscr); | ||
153 | err_resource: | 205 | err_resource: |
206 | clk_put(clk32k); | ||
207 | err_no_clk: | ||
208 | err_no_irq: | ||
209 | kfree(tc6387xb); | ||
154 | return ret; | 210 | return ret; |
155 | } | 211 | } |
156 | 212 | ||
@@ -195,3 +251,4 @@ MODULE_DESCRIPTION("Toshiba TC6387XB core driver"); | |||
195 | MODULE_LICENSE("GPL v2"); | 251 | MODULE_LICENSE("GPL v2"); |
196 | MODULE_AUTHOR("Ian Molton"); | 252 | MODULE_AUTHOR("Ian Molton"); |
197 | MODULE_ALIAS("platform:tc6387xb"); | 253 | MODULE_ALIAS("platform:tc6387xb"); |
254 | |||
diff --git a/drivers/mfd/tc6393xb.c b/drivers/mfd/tc6393xb.c index 1429a7341a9a..4bc5a08a2b09 100644 --- a/drivers/mfd/tc6393xb.c +++ b/drivers/mfd/tc6393xb.c | |||
@@ -136,10 +136,6 @@ static int tc6393xb_nand_enable(struct platform_device *nand) | |||
136 | return 0; | 136 | return 0; |
137 | } | 137 | } |
138 | 138 | ||
139 | static struct tmio_mmc_data tc6393xb_mmc_data = { | ||
140 | .hclk = 24000000, | ||
141 | }; | ||
142 | |||
143 | static struct resource __devinitdata tc6393xb_nand_resources[] = { | 139 | static struct resource __devinitdata tc6393xb_nand_resources[] = { |
144 | { | 140 | { |
145 | .start = 0x1000, | 141 | .start = 0x1000, |
@@ -165,11 +161,6 @@ static struct resource __devinitdata tc6393xb_mmc_resources[] = { | |||
165 | .flags = IORESOURCE_MEM, | 161 | .flags = IORESOURCE_MEM, |
166 | }, | 162 | }, |
167 | { | 163 | { |
168 | .start = 0x200, | ||
169 | .end = 0x2ff, | ||
170 | .flags = IORESOURCE_MEM, | ||
171 | }, | ||
172 | { | ||
173 | .start = IRQ_TC6393_MMC, | 164 | .start = IRQ_TC6393_MMC, |
174 | .end = IRQ_TC6393_MMC, | 165 | .end = IRQ_TC6393_MMC, |
175 | .flags = IORESOURCE_IRQ, | 166 | .flags = IORESOURCE_IRQ, |
@@ -346,6 +337,50 @@ int tc6393xb_lcd_mode(struct platform_device *fb, | |||
346 | } | 337 | } |
347 | EXPORT_SYMBOL(tc6393xb_lcd_mode); | 338 | EXPORT_SYMBOL(tc6393xb_lcd_mode); |
348 | 339 | ||
340 | static int tc6393xb_mmc_enable(struct platform_device *mmc) | ||
341 | { | ||
342 | struct platform_device *dev = to_platform_device(mmc->dev.parent); | ||
343 | struct tc6393xb *tc6393xb = platform_get_drvdata(dev); | ||
344 | |||
345 | tmio_core_mmc_enable(tc6393xb->scr + 0x200, 0, | ||
346 | tc6393xb_mmc_resources[0].start & 0xfffe); | ||
347 | |||
348 | return 0; | ||
349 | } | ||
350 | |||
351 | static int tc6393xb_mmc_resume(struct platform_device *mmc) | ||
352 | { | ||
353 | struct platform_device *dev = to_platform_device(mmc->dev.parent); | ||
354 | struct tc6393xb *tc6393xb = platform_get_drvdata(dev); | ||
355 | |||
356 | tmio_core_mmc_resume(tc6393xb->scr + 0x200, 0, | ||
357 | tc6393xb_mmc_resources[0].start & 0xfffe); | ||
358 | |||
359 | return 0; | ||
360 | } | ||
361 | |||
362 | static void tc6393xb_mmc_pwr(struct platform_device *mmc, int state) | ||
363 | { | ||
364 | struct platform_device *dev = to_platform_device(mmc->dev.parent); | ||
365 | struct tc6393xb *tc6393xb = platform_get_drvdata(dev); | ||
366 | |||
367 | tmio_core_mmc_pwr(tc6393xb->scr + 0x200, 0, state); | ||
368 | } | ||
369 | |||
370 | static void tc6393xb_mmc_clk_div(struct platform_device *mmc, int state) | ||
371 | { | ||
372 | struct platform_device *dev = to_platform_device(mmc->dev.parent); | ||
373 | struct tc6393xb *tc6393xb = platform_get_drvdata(dev); | ||
374 | |||
375 | tmio_core_mmc_clk_div(tc6393xb->scr + 0x200, 0, state); | ||
376 | } | ||
377 | |||
378 | static struct tmio_mmc_data tc6393xb_mmc_data = { | ||
379 | .hclk = 24000000, | ||
380 | .set_pwr = tc6393xb_mmc_pwr, | ||
381 | .set_clk_div = tc6393xb_mmc_clk_div, | ||
382 | }; | ||
383 | |||
349 | static struct mfd_cell __devinitdata tc6393xb_cells[] = { | 384 | static struct mfd_cell __devinitdata tc6393xb_cells[] = { |
350 | [TC6393XB_CELL_NAND] = { | 385 | [TC6393XB_CELL_NAND] = { |
351 | .name = "tmio-nand", | 386 | .name = "tmio-nand", |
@@ -355,6 +390,8 @@ static struct mfd_cell __devinitdata tc6393xb_cells[] = { | |||
355 | }, | 390 | }, |
356 | [TC6393XB_CELL_MMC] = { | 391 | [TC6393XB_CELL_MMC] = { |
357 | .name = "tmio-mmc", | 392 | .name = "tmio-mmc", |
393 | .enable = tc6393xb_mmc_enable, | ||
394 | .resume = tc6393xb_mmc_resume, | ||
358 | .driver_data = &tc6393xb_mmc_data, | 395 | .driver_data = &tc6393xb_mmc_data, |
359 | .num_resources = ARRAY_SIZE(tc6393xb_mmc_resources), | 396 | .num_resources = ARRAY_SIZE(tc6393xb_mmc_resources), |
360 | .resources = tc6393xb_mmc_resources, | 397 | .resources = tc6393xb_mmc_resources, |
@@ -836,3 +873,4 @@ MODULE_LICENSE("GPL v2"); | |||
836 | MODULE_AUTHOR("Ian Molton, Dmitry Baryshkov and Dirk Opfer"); | 873 | MODULE_AUTHOR("Ian Molton, Dmitry Baryshkov and Dirk Opfer"); |
837 | MODULE_DESCRIPTION("tc6393xb Toshiba Mobile IO Controller"); | 874 | MODULE_DESCRIPTION("tc6393xb Toshiba Mobile IO Controller"); |
838 | MODULE_ALIAS("platform:tc6393xb"); | 875 | MODULE_ALIAS("platform:tc6393xb"); |
876 | |||
diff --git a/drivers/mfd/tmio_core.c b/drivers/mfd/tmio_core.c new file mode 100644 index 000000000000..eddc19ae464b --- /dev/null +++ b/drivers/mfd/tmio_core.c | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | * Copyright(c) 2009 Ian Molton <spyro@f2s.com> | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #include <linux/mfd/tmio.h> | ||
10 | |||
11 | int tmio_core_mmc_enable(void __iomem *cnf, int shift, unsigned long base) | ||
12 | { | ||
13 | /* Enable the MMC/SD Control registers */ | ||
14 | sd_config_write16(cnf, shift, CNF_CMD, SDCREN); | ||
15 | sd_config_write32(cnf, shift, CNF_CTL_BASE, base & 0xfffe); | ||
16 | |||
17 | /* Disable SD power during suspend */ | ||
18 | sd_config_write8(cnf, shift, CNF_PWR_CTL_3, 0x01); | ||
19 | |||
20 | /* The below is required but why? FIXME */ | ||
21 | sd_config_write8(cnf, shift, CNF_STOP_CLK_CTL, 0x1f); | ||
22 | |||
23 | /* Power down SD bus */ | ||
24 | sd_config_write8(cnf, shift, CNF_PWR_CTL_2, 0x00); | ||
25 | |||
26 | return 0; | ||
27 | } | ||
28 | EXPORT_SYMBOL(tmio_core_mmc_enable); | ||
29 | |||
30 | int tmio_core_mmc_resume(void __iomem *cnf, int shift, unsigned long base) | ||
31 | { | ||
32 | |||
33 | /* Enable the MMC/SD Control registers */ | ||
34 | sd_config_write16(cnf, shift, CNF_CMD, SDCREN); | ||
35 | sd_config_write32(cnf, shift, CNF_CTL_BASE, base & 0xfffe); | ||
36 | |||
37 | return 0; | ||
38 | } | ||
39 | EXPORT_SYMBOL(tmio_core_mmc_resume); | ||
40 | |||
41 | void tmio_core_mmc_pwr(void __iomem *cnf, int shift, int state) | ||
42 | { | ||
43 | sd_config_write8(cnf, shift, CNF_PWR_CTL_2, state ? 0x02 : 0x00); | ||
44 | } | ||
45 | EXPORT_SYMBOL(tmio_core_mmc_pwr); | ||
46 | |||
47 | void tmio_core_mmc_clk_div(void __iomem *cnf, int shift, int state) | ||
48 | { | ||
49 | sd_config_write8(cnf, shift, CNF_SD_CLK_MODE, state ? 1 : 0); | ||
50 | } | ||
51 | EXPORT_SYMBOL(tmio_core_mmc_clk_div); | ||
52 | |||
diff --git a/drivers/mfd/wm8350-core.c b/drivers/mfd/wm8350-core.c index 8485a7018060..9a970bd68775 100644 --- a/drivers/mfd/wm8350-core.c +++ b/drivers/mfd/wm8350-core.c | |||
@@ -134,8 +134,7 @@ static inline int is_reg_locked(struct wm8350 *wm8350, u8 reg) | |||
134 | wm8350->reg_cache[WM8350_SECURITY] == WM8350_UNLOCK_KEY) | 134 | wm8350->reg_cache[WM8350_SECURITY] == WM8350_UNLOCK_KEY) |
135 | return 0; | 135 | return 0; |
136 | 136 | ||
137 | if ((reg == WM8350_GPIO_CONFIGURATION_I_O) || | 137 | if ((reg >= WM8350_GPIO_FUNCTION_SELECT_1 && |
138 | (reg >= WM8350_GPIO_FUNCTION_SELECT_1 && | ||
139 | reg <= WM8350_GPIO_FUNCTION_SELECT_4) || | 138 | reg <= WM8350_GPIO_FUNCTION_SELECT_4) || |
140 | (reg >= WM8350_BATTERY_CHARGER_CONTROL_1 && | 139 | (reg >= WM8350_BATTERY_CHARGER_CONTROL_1 && |
141 | reg <= WM8350_BATTERY_CHARGER_CONTROL_3)) | 140 | reg <= WM8350_BATTERY_CHARGER_CONTROL_3)) |
diff --git a/drivers/mfd/wm8350-irq.c b/drivers/mfd/wm8350-irq.c index c8df547c4747..9025f29e2707 100644 --- a/drivers/mfd/wm8350-irq.c +++ b/drivers/mfd/wm8350-irq.c | |||
@@ -434,7 +434,7 @@ int wm8350_register_irq(struct wm8350 *wm8350, int irq, | |||
434 | irq_handler_t handler, unsigned long flags, | 434 | irq_handler_t handler, unsigned long flags, |
435 | const char *name, void *data) | 435 | const char *name, void *data) |
436 | { | 436 | { |
437 | if (irq < 0 || irq > WM8350_NUM_IRQ || !handler) | 437 | if (irq < 0 || irq >= WM8350_NUM_IRQ || !handler) |
438 | return -EINVAL; | 438 | return -EINVAL; |
439 | 439 | ||
440 | if (wm8350->irq[irq].handler) | 440 | if (wm8350->irq[irq].handler) |
@@ -453,7 +453,7 @@ EXPORT_SYMBOL_GPL(wm8350_register_irq); | |||
453 | 453 | ||
454 | int wm8350_free_irq(struct wm8350 *wm8350, int irq) | 454 | int wm8350_free_irq(struct wm8350 *wm8350, int irq) |
455 | { | 455 | { |
456 | if (irq < 0 || irq > WM8350_NUM_IRQ) | 456 | if (irq < 0 || irq >= WM8350_NUM_IRQ) |
457 | return -EINVAL; | 457 | return -EINVAL; |
458 | 458 | ||
459 | wm8350_mask_irq(wm8350, irq); | 459 | wm8350_mask_irq(wm8350, irq); |
diff --git a/drivers/mmc/host/tmio_mmc.c b/drivers/mmc/host/tmio_mmc.c index 7cccc8523747..e22c3fa3516a 100644 --- a/drivers/mmc/host/tmio_mmc.c +++ b/drivers/mmc/host/tmio_mmc.c | |||
@@ -46,7 +46,9 @@ static void tmio_mmc_set_clock(struct tmio_mmc_host *host, int new_clock) | |||
46 | clk |= 0x100; | 46 | clk |= 0x100; |
47 | } | 47 | } |
48 | 48 | ||
49 | sd_config_write8(host, CNF_SD_CLK_MODE, clk >> 22); | 49 | if (host->set_clk_div) |
50 | host->set_clk_div(host->pdev, (clk>>22) & 1); | ||
51 | |||
50 | sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, clk & 0x1ff); | 52 | sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, clk & 0x1ff); |
51 | } | 53 | } |
52 | 54 | ||
@@ -427,12 +429,13 @@ static void tmio_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) | |||
427 | /* Power sequence - OFF -> ON -> UP */ | 429 | /* Power sequence - OFF -> ON -> UP */ |
428 | switch (ios->power_mode) { | 430 | switch (ios->power_mode) { |
429 | case MMC_POWER_OFF: /* power down SD bus */ | 431 | case MMC_POWER_OFF: /* power down SD bus */ |
430 | sd_config_write8(host, CNF_PWR_CTL_2, 0x00); | 432 | if (host->set_pwr) |
433 | host->set_pwr(host->pdev, 0); | ||
431 | tmio_mmc_clk_stop(host); | 434 | tmio_mmc_clk_stop(host); |
432 | break; | 435 | break; |
433 | case MMC_POWER_ON: /* power up SD bus */ | 436 | case MMC_POWER_ON: /* power up SD bus */ |
434 | 437 | if (host->set_pwr) | |
435 | sd_config_write8(host, CNF_PWR_CTL_2, 0x02); | 438 | host->set_pwr(host->pdev, 1); |
436 | break; | 439 | break; |
437 | case MMC_POWER_UP: /* start bus clock */ | 440 | case MMC_POWER_UP: /* start bus clock */ |
438 | tmio_mmc_clk_start(host); | 441 | tmio_mmc_clk_start(host); |
@@ -485,21 +488,15 @@ static int tmio_mmc_resume(struct platform_device *dev) | |||
485 | { | 488 | { |
486 | struct mfd_cell *cell = (struct mfd_cell *)dev->dev.platform_data; | 489 | struct mfd_cell *cell = (struct mfd_cell *)dev->dev.platform_data; |
487 | struct mmc_host *mmc = platform_get_drvdata(dev); | 490 | struct mmc_host *mmc = platform_get_drvdata(dev); |
488 | struct tmio_mmc_host *host = mmc_priv(mmc); | ||
489 | int ret = 0; | 491 | int ret = 0; |
490 | 492 | ||
491 | /* Tell the MFD core we are ready to be enabled */ | 493 | /* Tell the MFD core we are ready to be enabled */ |
492 | if (cell->enable) { | 494 | if (cell->resume) { |
493 | ret = cell->enable(dev); | 495 | ret = cell->resume(dev); |
494 | if (ret) | 496 | if (ret) |
495 | goto out; | 497 | goto out; |
496 | } | 498 | } |
497 | 499 | ||
498 | /* Enable the MMC/SD Control registers */ | ||
499 | sd_config_write16(host, CNF_CMD, SDCREN); | ||
500 | sd_config_write32(host, CNF_CTL_BASE, | ||
501 | (dev->resource[0].start >> host->bus_shift) & 0xfffe); | ||
502 | |||
503 | mmc_resume_host(mmc); | 500 | mmc_resume_host(mmc); |
504 | 501 | ||
505 | out: | 502 | out: |
@@ -514,17 +511,16 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev) | |||
514 | { | 511 | { |
515 | struct mfd_cell *cell = (struct mfd_cell *)dev->dev.platform_data; | 512 | struct mfd_cell *cell = (struct mfd_cell *)dev->dev.platform_data; |
516 | struct tmio_mmc_data *pdata; | 513 | struct tmio_mmc_data *pdata; |
517 | struct resource *res_ctl, *res_cnf; | 514 | struct resource *res_ctl; |
518 | struct tmio_mmc_host *host; | 515 | struct tmio_mmc_host *host; |
519 | struct mmc_host *mmc; | 516 | struct mmc_host *mmc; |
520 | int ret = -EINVAL; | 517 | int ret = -EINVAL; |
521 | 518 | ||
522 | if (dev->num_resources != 3) | 519 | if (dev->num_resources != 2) |
523 | goto out; | 520 | goto out; |
524 | 521 | ||
525 | res_ctl = platform_get_resource(dev, IORESOURCE_MEM, 0); | 522 | res_ctl = platform_get_resource(dev, IORESOURCE_MEM, 0); |
526 | res_cnf = platform_get_resource(dev, IORESOURCE_MEM, 1); | 523 | if (!res_ctl) |
527 | if (!res_ctl || !res_cnf) | ||
528 | goto out; | 524 | goto out; |
529 | 525 | ||
530 | pdata = cell->driver_data; | 526 | pdata = cell->driver_data; |
@@ -539,8 +535,12 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev) | |||
539 | 535 | ||
540 | host = mmc_priv(mmc); | 536 | host = mmc_priv(mmc); |
541 | host->mmc = mmc; | 537 | host->mmc = mmc; |
538 | host->pdev = dev; | ||
542 | platform_set_drvdata(dev, mmc); | 539 | platform_set_drvdata(dev, mmc); |
543 | 540 | ||
541 | host->set_pwr = pdata->set_pwr; | ||
542 | host->set_clk_div = pdata->set_clk_div; | ||
543 | |||
544 | /* SD control register space size is 0x200, 0x400 for bus_shift=1 */ | 544 | /* SD control register space size is 0x200, 0x400 for bus_shift=1 */ |
545 | host->bus_shift = resource_size(res_ctl) >> 10; | 545 | host->bus_shift = resource_size(res_ctl) >> 10; |
546 | 546 | ||
@@ -548,10 +548,6 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev) | |||
548 | if (!host->ctl) | 548 | if (!host->ctl) |
549 | goto host_free; | 549 | goto host_free; |
550 | 550 | ||
551 | host->cnf = ioremap(res_cnf->start, resource_size(res_cnf)); | ||
552 | if (!host->cnf) | ||
553 | goto unmap_ctl; | ||
554 | |||
555 | mmc->ops = &tmio_mmc_ops; | 551 | mmc->ops = &tmio_mmc_ops; |
556 | mmc->caps = MMC_CAP_4_BIT_DATA; | 552 | mmc->caps = MMC_CAP_4_BIT_DATA; |
557 | mmc->f_max = pdata->hclk; | 553 | mmc->f_max = pdata->hclk; |
@@ -562,23 +558,9 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev) | |||
562 | if (cell->enable) { | 558 | if (cell->enable) { |
563 | ret = cell->enable(dev); | 559 | ret = cell->enable(dev); |
564 | if (ret) | 560 | if (ret) |
565 | goto unmap_cnf; | 561 | goto unmap_ctl; |
566 | } | 562 | } |
567 | 563 | ||
568 | /* Enable the MMC/SD Control registers */ | ||
569 | sd_config_write16(host, CNF_CMD, SDCREN); | ||
570 | sd_config_write32(host, CNF_CTL_BASE, | ||
571 | (dev->resource[0].start >> host->bus_shift) & 0xfffe); | ||
572 | |||
573 | /* Disable SD power during suspend */ | ||
574 | sd_config_write8(host, CNF_PWR_CTL_3, 0x01); | ||
575 | |||
576 | /* The below is required but why? FIXME */ | ||
577 | sd_config_write8(host, CNF_STOP_CLK_CTL, 0x1f); | ||
578 | |||
579 | /* Power down SD bus*/ | ||
580 | sd_config_write8(host, CNF_PWR_CTL_2, 0x00); | ||
581 | |||
582 | tmio_mmc_clk_stop(host); | 564 | tmio_mmc_clk_stop(host); |
583 | reset(host); | 565 | reset(host); |
584 | 566 | ||
@@ -586,14 +568,14 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev) | |||
586 | if (ret >= 0) | 568 | if (ret >= 0) |
587 | host->irq = ret; | 569 | host->irq = ret; |
588 | else | 570 | else |
589 | goto unmap_cnf; | 571 | goto unmap_ctl; |
590 | 572 | ||
591 | disable_mmc_irqs(host, TMIO_MASK_ALL); | 573 | disable_mmc_irqs(host, TMIO_MASK_ALL); |
592 | 574 | ||
593 | ret = request_irq(host->irq, tmio_mmc_irq, IRQF_DISABLED | | 575 | ret = request_irq(host->irq, tmio_mmc_irq, IRQF_DISABLED | |
594 | IRQF_TRIGGER_FALLING, dev_name(&dev->dev), host); | 576 | IRQF_TRIGGER_FALLING, dev_name(&dev->dev), host); |
595 | if (ret) | 577 | if (ret) |
596 | goto unmap_cnf; | 578 | goto unmap_ctl; |
597 | 579 | ||
598 | mmc_add_host(mmc); | 580 | mmc_add_host(mmc); |
599 | 581 | ||
@@ -605,8 +587,6 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev) | |||
605 | 587 | ||
606 | return 0; | 588 | return 0; |
607 | 589 | ||
608 | unmap_cnf: | ||
609 | iounmap(host->cnf); | ||
610 | unmap_ctl: | 590 | unmap_ctl: |
611 | iounmap(host->ctl); | 591 | iounmap(host->ctl); |
612 | host_free: | 592 | host_free: |
@@ -626,7 +606,6 @@ static int __devexit tmio_mmc_remove(struct platform_device *dev) | |||
626 | mmc_remove_host(mmc); | 606 | mmc_remove_host(mmc); |
627 | free_irq(host->irq, host); | 607 | free_irq(host->irq, host); |
628 | iounmap(host->ctl); | 608 | iounmap(host->ctl); |
629 | iounmap(host->cnf); | ||
630 | mmc_free_host(mmc); | 609 | mmc_free_host(mmc); |
631 | } | 610 | } |
632 | 611 | ||
diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h index 9fa998594974..692dc23363b9 100644 --- a/drivers/mmc/host/tmio_mmc.h +++ b/drivers/mmc/host/tmio_mmc.h | |||
@@ -11,26 +11,6 @@ | |||
11 | 11 | ||
12 | #include <linux/highmem.h> | 12 | #include <linux/highmem.h> |
13 | 13 | ||
14 | #define CNF_CMD 0x04 | ||
15 | #define CNF_CTL_BASE 0x10 | ||
16 | #define CNF_INT_PIN 0x3d | ||
17 | #define CNF_STOP_CLK_CTL 0x40 | ||
18 | #define CNF_GCLK_CTL 0x41 | ||
19 | #define CNF_SD_CLK_MODE 0x42 | ||
20 | #define CNF_PIN_STATUS 0x44 | ||
21 | #define CNF_PWR_CTL_1 0x48 | ||
22 | #define CNF_PWR_CTL_2 0x49 | ||
23 | #define CNF_PWR_CTL_3 0x4a | ||
24 | #define CNF_CARD_DETECT_MODE 0x4c | ||
25 | #define CNF_SD_SLOT 0x50 | ||
26 | #define CNF_EXT_GCLK_CTL_1 0xf0 | ||
27 | #define CNF_EXT_GCLK_CTL_2 0xf1 | ||
28 | #define CNF_EXT_GCLK_CTL_3 0xf9 | ||
29 | #define CNF_SD_LED_EN_1 0xfa | ||
30 | #define CNF_SD_LED_EN_2 0xfe | ||
31 | |||
32 | #define SDCREN 0x2 /* Enable access to MMC CTL regs. (flag in COMMAND_REG)*/ | ||
33 | |||
34 | #define CTL_SD_CMD 0x00 | 14 | #define CTL_SD_CMD 0x00 |
35 | #define CTL_ARG_REG 0x04 | 15 | #define CTL_ARG_REG 0x04 |
36 | #define CTL_STOP_INTERNAL_ACTION 0x08 | 16 | #define CTL_STOP_INTERNAL_ACTION 0x08 |
@@ -110,7 +90,6 @@ | |||
110 | 90 | ||
111 | 91 | ||
112 | struct tmio_mmc_host { | 92 | struct tmio_mmc_host { |
113 | void __iomem *cnf; | ||
114 | void __iomem *ctl; | 93 | void __iomem *ctl; |
115 | unsigned long bus_shift; | 94 | unsigned long bus_shift; |
116 | struct mmc_command *cmd; | 95 | struct mmc_command *cmd; |
@@ -119,10 +98,16 @@ struct tmio_mmc_host { | |||
119 | struct mmc_host *mmc; | 98 | struct mmc_host *mmc; |
120 | int irq; | 99 | int irq; |
121 | 100 | ||
101 | /* Callbacks for clock / power control */ | ||
102 | void (*set_pwr)(struct platform_device *host, int state); | ||
103 | void (*set_clk_div)(struct platform_device *host, int state); | ||
104 | |||
122 | /* pio related stuff */ | 105 | /* pio related stuff */ |
123 | struct scatterlist *sg_ptr; | 106 | struct scatterlist *sg_ptr; |
124 | unsigned int sg_len; | 107 | unsigned int sg_len; |
125 | unsigned int sg_off; | 108 | unsigned int sg_off; |
109 | |||
110 | struct platform_device *pdev; | ||
126 | }; | 111 | }; |
127 | 112 | ||
128 | #include <linux/io.h> | 113 | #include <linux/io.h> |
@@ -163,25 +148,6 @@ static inline void sd_ctrl_write32(struct tmio_mmc_host *host, int addr, | |||
163 | writew(val >> 16, host->ctl + ((addr + 2) << host->bus_shift)); | 148 | writew(val >> 16, host->ctl + ((addr + 2) << host->bus_shift)); |
164 | } | 149 | } |
165 | 150 | ||
166 | static inline void sd_config_write8(struct tmio_mmc_host *host, int addr, | ||
167 | u8 val) | ||
168 | { | ||
169 | writeb(val, host->cnf + (addr << host->bus_shift)); | ||
170 | } | ||
171 | |||
172 | static inline void sd_config_write16(struct tmio_mmc_host *host, int addr, | ||
173 | u16 val) | ||
174 | { | ||
175 | writew(val, host->cnf + (addr << host->bus_shift)); | ||
176 | } | ||
177 | |||
178 | static inline void sd_config_write32(struct tmio_mmc_host *host, int addr, | ||
179 | u32 val) | ||
180 | { | ||
181 | writew(val, host->cnf + (addr << host->bus_shift)); | ||
182 | writew(val >> 16, host->cnf + ((addr + 2) << host->bus_shift)); | ||
183 | } | ||
184 | |||
185 | #include <linux/scatterlist.h> | 151 | #include <linux/scatterlist.h> |
186 | #include <linux/blkdev.h> | 152 | #include <linux/blkdev.h> |
187 | 153 | ||
diff --git a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig index 4c364d44ad59..2de0cc823d60 100644 --- a/drivers/mtd/maps/Kconfig +++ b/drivers/mtd/maps/Kconfig | |||
@@ -549,4 +549,21 @@ config MTD_VMU | |||
549 | To build this as a module select M here, the module will be called | 549 | To build this as a module select M here, the module will be called |
550 | vmu-flash. | 550 | vmu-flash. |
551 | 551 | ||
552 | config MTD_PISMO | ||
553 | tristate "MTD discovery driver for PISMO modules" | ||
554 | depends on I2C | ||
555 | depends on ARCH_VERSATILE | ||
556 | help | ||
557 | This driver allows for discovery of PISMO modules - see | ||
558 | <http://www.pismoworld.org/>. These are small modules containing | ||
559 | up to five memory devices (eg, SRAM, flash, DOC) described by an | ||
560 | I2C EEPROM. | ||
561 | |||
562 | This driver does not create any MTD maps itself; instead it | ||
563 | creates MTD physmap and MTD SRAM platform devices. If you | ||
564 | enable this option, you should consider enabling MTD_PHYSMAP | ||
565 | and/or MTD_PLATRAM according to the devices on your module. | ||
566 | |||
567 | When built as a module, it will be called pismo.ko | ||
568 | |||
552 | endmenu | 569 | endmenu |
diff --git a/drivers/mtd/maps/pismo.c b/drivers/mtd/maps/pismo.c new file mode 100644 index 000000000000..c48cad271f5d --- /dev/null +++ b/drivers/mtd/maps/pismo.c | |||
@@ -0,0 +1,320 @@ | |||
1 | /* | ||
2 | * PISMO memory driver - http://www.pismoworld.org/ | ||
3 | * | ||
4 | * For ARM Realview and Versatile platforms | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License. | ||
9 | */ | ||
10 | #include <linux/init.h> | ||
11 | #include <linux/module.h> | ||
12 | #include <linux/i2c.h> | ||
13 | #include <linux/platform_device.h> | ||
14 | #include <linux/spinlock.h> | ||
15 | #include <linux/mutex.h> | ||
16 | #include <linux/mtd/physmap.h> | ||
17 | #include <linux/mtd/plat-ram.h> | ||
18 | #include <linux/mtd/pismo.h> | ||
19 | |||
20 | #define PISMO_NUM_CS 5 | ||
21 | |||
22 | struct pismo_cs_block { | ||
23 | u8 type; | ||
24 | u8 width; | ||
25 | __le16 access; | ||
26 | __le32 size; | ||
27 | u32 reserved[2]; | ||
28 | char device[32]; | ||
29 | } __packed; | ||
30 | |||
31 | struct pismo_eeprom { | ||
32 | struct pismo_cs_block cs[PISMO_NUM_CS]; | ||
33 | char board[15]; | ||
34 | u8 sum; | ||
35 | } __packed; | ||
36 | |||
37 | struct pismo_mem { | ||
38 | phys_addr_t base; | ||
39 | u32 size; | ||
40 | u16 access; | ||
41 | u8 width; | ||
42 | u8 type; | ||
43 | }; | ||
44 | |||
45 | struct pismo_data { | ||
46 | struct i2c_client *client; | ||
47 | void (*vpp)(void *, int); | ||
48 | void *vpp_data; | ||
49 | struct platform_device *dev[PISMO_NUM_CS]; | ||
50 | }; | ||
51 | |||
52 | /* FIXME: set_vpp could do with a better calling convention */ | ||
53 | static struct pismo_data *vpp_pismo; | ||
54 | static DEFINE_MUTEX(pismo_mutex); | ||
55 | |||
56 | static int pismo_setvpp_probe_fix(struct pismo_data *pismo) | ||
57 | { | ||
58 | mutex_lock(&pismo_mutex); | ||
59 | if (vpp_pismo) { | ||
60 | mutex_unlock(&pismo_mutex); | ||
61 | kfree(pismo); | ||
62 | return -EBUSY; | ||
63 | } | ||
64 | vpp_pismo = pismo; | ||
65 | mutex_unlock(&pismo_mutex); | ||
66 | return 0; | ||
67 | } | ||
68 | |||
69 | static void pismo_setvpp_remove_fix(struct pismo_data *pismo) | ||
70 | { | ||
71 | mutex_lock(&pismo_mutex); | ||
72 | if (vpp_pismo == pismo) | ||
73 | vpp_pismo = NULL; | ||
74 | mutex_unlock(&pismo_mutex); | ||
75 | } | ||
76 | |||
77 | static void pismo_set_vpp(struct map_info *map, int on) | ||
78 | { | ||
79 | struct pismo_data *pismo = vpp_pismo; | ||
80 | |||
81 | pismo->vpp(pismo->vpp_data, on); | ||
82 | } | ||
83 | /* end of hack */ | ||
84 | |||
85 | |||
86 | static unsigned int __devinit pismo_width_to_bytes(unsigned int width) | ||
87 | { | ||
88 | width &= 15; | ||
89 | if (width > 2) | ||
90 | return 0; | ||
91 | return 1 << width; | ||
92 | } | ||
93 | |||
94 | static int __devinit pismo_eeprom_read(struct i2c_client *client, void *buf, | ||
95 | u8 addr, size_t size) | ||
96 | { | ||
97 | int ret; | ||
98 | struct i2c_msg msg[] = { | ||
99 | { | ||
100 | .addr = client->addr, | ||
101 | .len = sizeof(addr), | ||
102 | .buf = &addr, | ||
103 | }, { | ||
104 | .addr = client->addr, | ||
105 | .flags = I2C_M_RD, | ||
106 | .len = size, | ||
107 | .buf = buf, | ||
108 | }, | ||
109 | }; | ||
110 | |||
111 | ret = i2c_transfer(client->adapter, msg, ARRAY_SIZE(msg)); | ||
112 | |||
113 | return ret == ARRAY_SIZE(msg) ? size : -EIO; | ||
114 | } | ||
115 | |||
116 | static int __devinit pismo_add_device(struct pismo_data *pismo, int i, | ||
117 | struct pismo_mem *region, const char *name, void *pdata, size_t psize) | ||
118 | { | ||
119 | struct platform_device *dev; | ||
120 | struct resource res = { }; | ||
121 | phys_addr_t base = region.base; | ||
122 | int ret; | ||
123 | |||
124 | if (base == ~0) | ||
125 | return -ENXIO; | ||
126 | |||
127 | res.start = base; | ||
128 | res.end = base + region->size - 1; | ||
129 | res.flags = IORESOURCE_MEM; | ||
130 | |||
131 | dev = platform_device_alloc(name, i); | ||
132 | if (!dev) | ||
133 | return -ENOMEM; | ||
134 | dev->dev.parent = &pismo->client->dev; | ||
135 | |||
136 | do { | ||
137 | ret = platform_device_add_resources(dev, &res, 1); | ||
138 | if (ret) | ||
139 | break; | ||
140 | |||
141 | ret = platform_device_add_data(dev, pdata, psize); | ||
142 | if (ret) | ||
143 | break; | ||
144 | |||
145 | ret = platform_device_add(dev); | ||
146 | if (ret) | ||
147 | break; | ||
148 | |||
149 | pismo->dev[i] = dev; | ||
150 | return 0; | ||
151 | } while (0); | ||
152 | |||
153 | platform_device_put(dev); | ||
154 | return ret; | ||
155 | } | ||
156 | |||
157 | static int __devinit pismo_add_nor(struct pismo_data *pismo, int i, | ||
158 | struct pismo_mem *region) | ||
159 | { | ||
160 | struct physmap_flash_data data = { | ||
161 | .width = region->width, | ||
162 | }; | ||
163 | |||
164 | if (pismo->vpp) | ||
165 | data.set_vpp = pismo_set_vpp; | ||
166 | |||
167 | return pismo_add_device(pismo, i, region, "physmap-flash", | ||
168 | &data, sizeof(data)); | ||
169 | } | ||
170 | |||
171 | static int __devinit pismo_add_sram(struct pismo_data *pismo, int i, | ||
172 | struct pismo_mem *region) | ||
173 | { | ||
174 | struct platdata_mtd_ram data = { | ||
175 | .bankwidth = region->width, | ||
176 | }; | ||
177 | |||
178 | return pismo_add_device(pismo, i, region, "mtd-ram", | ||
179 | &data, sizeof(data)); | ||
180 | } | ||
181 | |||
182 | static void __devinit pismo_add_one(struct pismo_data *pismo, int i, | ||
183 | const struct pismo_cs_block *cs, phys_addr_t base) | ||
184 | { | ||
185 | struct device *dev = &pismo->client->dev; | ||
186 | struct pismo_mem region; | ||
187 | |||
188 | region.base = base; | ||
189 | region.type = cs->type; | ||
190 | region.width = pismo_width_to_bytes(cs->width); | ||
191 | region.access = le16_to_cpu(cs->access); | ||
192 | region.size = le32_to_cpu(cs->size); | ||
193 | |||
194 | if (region.width == 0) { | ||
195 | dev_err(dev, "cs%u: bad width: %02x, ignoring\n", i, cs->width); | ||
196 | return; | ||
197 | } | ||
198 | |||
199 | /* | ||
200 | * FIXME: may need to the platforms memory controller here, but at | ||
201 | * the moment we assume that it has already been correctly setup. | ||
202 | * The memory controller can also tell us the base address as well. | ||
203 | */ | ||
204 | |||
205 | dev_info(dev, "cs%u: %.32s: type %02x access %u00ps size %uK\n", | ||
206 | i, cs->device, region.type, region.access, region.size / 1024); | ||
207 | |||
208 | switch (region.type) { | ||
209 | case 0: | ||
210 | break; | ||
211 | case 1: | ||
212 | /* static DOC */ | ||
213 | break; | ||
214 | case 2: | ||
215 | /* static NOR */ | ||
216 | pismo_add_nor(pismo, i, ®ion); | ||
217 | break; | ||
218 | case 3: | ||
219 | /* static RAM */ | ||
220 | pismo_add_sram(pismo, i, ®ion); | ||
221 | break; | ||
222 | } | ||
223 | } | ||
224 | |||
225 | static int __devexit pismo_remove(struct i2c_client *client) | ||
226 | { | ||
227 | struct pismo_data *pismo = i2c_get_clientdata(client); | ||
228 | int i; | ||
229 | |||
230 | for (i = 0; i < ARRAY_SIZE(pismo->dev); i++) | ||
231 | platform_device_unregister(pismo->dev[i]); | ||
232 | |||
233 | /* FIXME: set_vpp needs saner arguments */ | ||
234 | pismo_setvpp_remove_fix(pismo); | ||
235 | |||
236 | kfree(pismo); | ||
237 | |||
238 | return 0; | ||
239 | } | ||
240 | |||
241 | static int __devinit pismo_probe(struct i2c_client *client, | ||
242 | const struct i2c_device_id *id) | ||
243 | { | ||
244 | struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent); | ||
245 | struct pismo_pdata *pdata = client->dev.platform_data; | ||
246 | struct pismo_eeprom eeprom; | ||
247 | struct pismo_data *pismo; | ||
248 | int ret, i; | ||
249 | |||
250 | if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) { | ||
251 | dev_err(&client->dev, "functionality mismatch\n"); | ||
252 | return -EIO; | ||
253 | } | ||
254 | |||
255 | pismo = kzalloc(sizeof(*pismo), GFP_KERNEL); | ||
256 | if (!pismo) | ||
257 | return -ENOMEM; | ||
258 | |||
259 | /* FIXME: set_vpp needs saner arguments */ | ||
260 | ret = pismo_setvpp_probe_fix(pismo); | ||
261 | if (ret) | ||
262 | return ret; | ||
263 | |||
264 | pismo->client = client; | ||
265 | if (pdata) { | ||
266 | pismo->vpp = pdata->set_vpp; | ||
267 | pismo->vpp_data = pdata->vpp_data; | ||
268 | } | ||
269 | i2c_set_clientdata(client, pismo); | ||
270 | |||
271 | ret = pismo_eeprom_read(client, &eeprom, 0, sizeof(eeprom)); | ||
272 | if (ret < 0) { | ||
273 | dev_err(&client->dev, "error reading EEPROM: %d\n", ret); | ||
274 | return ret; | ||
275 | } | ||
276 | |||
277 | dev_info(&client->dev, "%.15s board found\n", eeprom.board); | ||
278 | |||
279 | for (i = 0; i < ARRAY_SIZE(eeprom.cs); i++) | ||
280 | if (eeprom.cs[i].type != 0xff) | ||
281 | pismo_add_one(pismo, i, &eeprom.cs[i], | ||
282 | pdata->cs_addrs[i]); | ||
283 | |||
284 | return 0; | ||
285 | } | ||
286 | |||
287 | static const struct i2c_device_id pismo_id[] = { | ||
288 | { "pismo" }, | ||
289 | { }, | ||
290 | }; | ||
291 | MODULE_DEVICE_TABLE(i2c, pismo_id); | ||
292 | |||
293 | static struct i2c_driver pismo_driver = { | ||
294 | .driver = { | ||
295 | .name = "pismo", | ||
296 | .owner = THIS_MODULE, | ||
297 | }, | ||
298 | .probe = pismo_probe, | ||
299 | .remove = __devexit_p(pismo_remove), | ||
300 | .id_table = pismo_id, | ||
301 | }; | ||
302 | |||
303 | static int __init pismo_init(void) | ||
304 | { | ||
305 | BUILD_BUG_ON(sizeof(struct pismo_cs_block) != 48); | ||
306 | BUILD_BUG_ON(sizeof(struct pismo_eeprom) != 256); | ||
307 | |||
308 | return i2c_add_driver(&pismo_driver); | ||
309 | } | ||
310 | module_init(pismo_init); | ||
311 | |||
312 | static void __exit pismo_exit(void) | ||
313 | { | ||
314 | i2c_del_driver(&pismo_driver); | ||
315 | } | ||
316 | module_exit(pismo_exit); | ||
317 | |||
318 | MODULE_AUTHOR("Russell King <linux@arm.linux.org.uk>"); | ||
319 | MODULE_DESCRIPTION("PISMO memory driver"); | ||
320 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/mtd/mtdoops.c b/drivers/mtd/mtdoops.c index a714ec482761..92e12df0917f 100644 --- a/drivers/mtd/mtdoops.c +++ b/drivers/mtd/mtdoops.c | |||
@@ -322,7 +322,7 @@ static void mtdoops_do_dump(struct kmsg_dumper *dumper, | |||
322 | memcpy(dst + l1_cpy, s2 + s2_start, l2_cpy); | 322 | memcpy(dst + l1_cpy, s2 + s2_start, l2_cpy); |
323 | 323 | ||
324 | /* Panics must be written immediately */ | 324 | /* Panics must be written immediately */ |
325 | if (reason == KMSG_DUMP_PANIC) { | 325 | if (reason != KMSG_DUMP_OOPS) { |
326 | if (!cxt->mtd->panic_write) | 326 | if (!cxt->mtd->panic_write) |
327 | printk(KERN_ERR "mtdoops: Cannot write from panic without panic_write\n"); | 327 | printk(KERN_ERR "mtdoops: Cannot write from panic without panic_write\n"); |
328 | else | 328 | else |
diff --git a/drivers/mtd/tests/mtd_readtest.c b/drivers/mtd/tests/mtd_readtest.c index 79fc4530987b..25c5dd03a837 100644 --- a/drivers/mtd/tests/mtd_readtest.c +++ b/drivers/mtd/tests/mtd_readtest.c | |||
@@ -147,6 +147,10 @@ static int scan_for_bad_eraseblocks(void) | |||
147 | } | 147 | } |
148 | memset(bbt, 0 , ebcnt); | 148 | memset(bbt, 0 , ebcnt); |
149 | 149 | ||
150 | /* NOR flash does not implement block_isbad */ | ||
151 | if (mtd->block_isbad == NULL) | ||
152 | return 0; | ||
153 | |||
150 | printk(PRINT_PREF "scanning for bad eraseblocks\n"); | 154 | printk(PRINT_PREF "scanning for bad eraseblocks\n"); |
151 | for (i = 0; i < ebcnt; ++i) { | 155 | for (i = 0; i < ebcnt; ++i) { |
152 | bbt[i] = is_block_bad(i) ? 1 : 0; | 156 | bbt[i] = is_block_bad(i) ? 1 : 0; |
@@ -184,7 +188,7 @@ static int __init mtd_readtest_init(void) | |||
184 | tmp = mtd->size; | 188 | tmp = mtd->size; |
185 | do_div(tmp, mtd->erasesize); | 189 | do_div(tmp, mtd->erasesize); |
186 | ebcnt = tmp; | 190 | ebcnt = tmp; |
187 | pgcnt = mtd->erasesize / mtd->writesize; | 191 | pgcnt = mtd->erasesize / pgsize; |
188 | 192 | ||
189 | printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, " | 193 | printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, " |
190 | "page size %u, count of eraseblocks %u, pages per " | 194 | "page size %u, count of eraseblocks %u, pages per " |
diff --git a/drivers/mtd/tests/mtd_speedtest.c b/drivers/mtd/tests/mtd_speedtest.c index 141363a7e805..7fbb51d4eabe 100644 --- a/drivers/mtd/tests/mtd_speedtest.c +++ b/drivers/mtd/tests/mtd_speedtest.c | |||
@@ -301,6 +301,10 @@ static int scan_for_bad_eraseblocks(void) | |||
301 | } | 301 | } |
302 | memset(bbt, 0 , ebcnt); | 302 | memset(bbt, 0 , ebcnt); |
303 | 303 | ||
304 | /* NOR flash does not implement block_isbad */ | ||
305 | if (mtd->block_isbad == NULL) | ||
306 | goto out; | ||
307 | |||
304 | printk(PRINT_PREF "scanning for bad eraseblocks\n"); | 308 | printk(PRINT_PREF "scanning for bad eraseblocks\n"); |
305 | for (i = 0; i < ebcnt; ++i) { | 309 | for (i = 0; i < ebcnt; ++i) { |
306 | bbt[i] = is_block_bad(i) ? 1 : 0; | 310 | bbt[i] = is_block_bad(i) ? 1 : 0; |
@@ -309,6 +313,7 @@ static int scan_for_bad_eraseblocks(void) | |||
309 | cond_resched(); | 313 | cond_resched(); |
310 | } | 314 | } |
311 | printk(PRINT_PREF "scanned %d eraseblocks, %d are bad\n", i, bad); | 315 | printk(PRINT_PREF "scanned %d eraseblocks, %d are bad\n", i, bad); |
316 | out: | ||
312 | goodebcnt = ebcnt - bad; | 317 | goodebcnt = ebcnt - bad; |
313 | return 0; | 318 | return 0; |
314 | } | 319 | } |
@@ -340,7 +345,7 @@ static int __init mtd_speedtest_init(void) | |||
340 | tmp = mtd->size; | 345 | tmp = mtd->size; |
341 | do_div(tmp, mtd->erasesize); | 346 | do_div(tmp, mtd->erasesize); |
342 | ebcnt = tmp; | 347 | ebcnt = tmp; |
343 | pgcnt = mtd->erasesize / mtd->writesize; | 348 | pgcnt = mtd->erasesize / pgsize; |
344 | 349 | ||
345 | printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, " | 350 | printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, " |
346 | "page size %u, count of eraseblocks %u, pages per " | 351 | "page size %u, count of eraseblocks %u, pages per " |
diff --git a/drivers/mtd/tests/mtd_stresstest.c b/drivers/mtd/tests/mtd_stresstest.c index 63920476b57a..a99d3cd737d8 100644 --- a/drivers/mtd/tests/mtd_stresstest.c +++ b/drivers/mtd/tests/mtd_stresstest.c | |||
@@ -227,6 +227,10 @@ static int scan_for_bad_eraseblocks(void) | |||
227 | } | 227 | } |
228 | memset(bbt, 0 , ebcnt); | 228 | memset(bbt, 0 , ebcnt); |
229 | 229 | ||
230 | /* NOR flash does not implement block_isbad */ | ||
231 | if (mtd->block_isbad == NULL) | ||
232 | return 0; | ||
233 | |||
230 | printk(PRINT_PREF "scanning for bad eraseblocks\n"); | 234 | printk(PRINT_PREF "scanning for bad eraseblocks\n"); |
231 | for (i = 0; i < ebcnt; ++i) { | 235 | for (i = 0; i < ebcnt; ++i) { |
232 | bbt[i] = is_block_bad(i) ? 1 : 0; | 236 | bbt[i] = is_block_bad(i) ? 1 : 0; |
@@ -265,7 +269,7 @@ static int __init mtd_stresstest_init(void) | |||
265 | tmp = mtd->size; | 269 | tmp = mtd->size; |
266 | do_div(tmp, mtd->erasesize); | 270 | do_div(tmp, mtd->erasesize); |
267 | ebcnt = tmp; | 271 | ebcnt = tmp; |
268 | pgcnt = mtd->erasesize / mtd->writesize; | 272 | pgcnt = mtd->erasesize / pgsize; |
269 | 273 | ||
270 | printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, " | 274 | printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, " |
271 | "page size %u, count of eraseblocks %u, pages per " | 275 | "page size %u, count of eraseblocks %u, pages per " |
diff --git a/drivers/mtd/ubi/cdev.c b/drivers/mtd/ubi/cdev.c index f237ddbb2713..111ea41c4ecd 100644 --- a/drivers/mtd/ubi/cdev.c +++ b/drivers/mtd/ubi/cdev.c | |||
@@ -853,7 +853,6 @@ static long ubi_cdev_ioctl(struct file *file, unsigned int cmd, | |||
853 | break; | 853 | break; |
854 | } | 854 | } |
855 | 855 | ||
856 | req.name[req.name_len] = '\0'; | ||
857 | err = verify_mkvol_req(ubi, &req); | 856 | err = verify_mkvol_req(ubi, &req); |
858 | if (err) | 857 | if (err) |
859 | break; | 858 | break; |
diff --git a/drivers/mtd/ubi/kapi.c b/drivers/mtd/ubi/kapi.c index 277786ebaa2c..1361574e2b00 100644 --- a/drivers/mtd/ubi/kapi.c +++ b/drivers/mtd/ubi/kapi.c | |||
@@ -291,8 +291,7 @@ EXPORT_SYMBOL_GPL(ubi_open_volume_nm); | |||
291 | */ | 291 | */ |
292 | struct ubi_volume_desc *ubi_open_volume_path(const char *pathname, int mode) | 292 | struct ubi_volume_desc *ubi_open_volume_path(const char *pathname, int mode) |
293 | { | 293 | { |
294 | int error, ubi_num, vol_id; | 294 | int error, ubi_num, vol_id, mod; |
295 | struct ubi_volume_desc *ret; | ||
296 | struct inode *inode; | 295 | struct inode *inode; |
297 | struct path path; | 296 | struct path path; |
298 | 297 | ||
@@ -306,16 +305,16 @@ struct ubi_volume_desc *ubi_open_volume_path(const char *pathname, int mode) | |||
306 | return ERR_PTR(error); | 305 | return ERR_PTR(error); |
307 | 306 | ||
308 | inode = path.dentry->d_inode; | 307 | inode = path.dentry->d_inode; |
308 | mod = inode->i_mode; | ||
309 | ubi_num = ubi_major2num(imajor(inode)); | 309 | ubi_num = ubi_major2num(imajor(inode)); |
310 | vol_id = iminor(inode) - 1; | 310 | vol_id = iminor(inode) - 1; |
311 | path_put(&path); | ||
311 | 312 | ||
313 | if (!S_ISCHR(mod)) | ||
314 | return ERR_PTR(-EINVAL); | ||
312 | if (vol_id >= 0 && ubi_num >= 0) | 315 | if (vol_id >= 0 && ubi_num >= 0) |
313 | ret = ubi_open_volume(ubi_num, vol_id, mode); | 316 | return ubi_open_volume(ubi_num, vol_id, mode); |
314 | else | 317 | return ERR_PTR(-ENODEV); |
315 | ret = ERR_PTR(-ENODEV); | ||
316 | |||
317 | path_put(&path); | ||
318 | return ret; | ||
319 | } | 318 | } |
320 | EXPORT_SYMBOL_GPL(ubi_open_volume_path); | 319 | EXPORT_SYMBOL_GPL(ubi_open_volume_path); |
321 | 320 | ||
diff --git a/drivers/mtd/ubi/upd.c b/drivers/mtd/ubi/upd.c index c1d7b880c795..425bf5a3edd4 100644 --- a/drivers/mtd/ubi/upd.c +++ b/drivers/mtd/ubi/upd.c | |||
@@ -155,6 +155,7 @@ int ubi_start_update(struct ubi_device *ubi, struct ubi_volume *vol, | |||
155 | if (err) | 155 | if (err) |
156 | return err; | 156 | return err; |
157 | vol->updating = 0; | 157 | vol->updating = 0; |
158 | return 0; | ||
158 | } | 159 | } |
159 | 160 | ||
160 | vol->upd_buf = vmalloc(ubi->leb_size); | 161 | vol->upd_buf = vmalloc(ubi->leb_size); |
diff --git a/drivers/mtd/ubi/vtbl.c b/drivers/mtd/ubi/vtbl.c index 1afc61e7455d..40044028d682 100644 --- a/drivers/mtd/ubi/vtbl.c +++ b/drivers/mtd/ubi/vtbl.c | |||
@@ -566,6 +566,7 @@ static int init_volumes(struct ubi_device *ubi, const struct ubi_scan_info *si, | |||
566 | vol->reserved_pebs = be32_to_cpu(vtbl[i].reserved_pebs); | 566 | vol->reserved_pebs = be32_to_cpu(vtbl[i].reserved_pebs); |
567 | vol->alignment = be32_to_cpu(vtbl[i].alignment); | 567 | vol->alignment = be32_to_cpu(vtbl[i].alignment); |
568 | vol->data_pad = be32_to_cpu(vtbl[i].data_pad); | 568 | vol->data_pad = be32_to_cpu(vtbl[i].data_pad); |
569 | vol->upd_marker = vtbl[i].upd_marker; | ||
569 | vol->vol_type = vtbl[i].vol_type == UBI_VID_DYNAMIC ? | 570 | vol->vol_type = vtbl[i].vol_type == UBI_VID_DYNAMIC ? |
570 | UBI_DYNAMIC_VOLUME : UBI_STATIC_VOLUME; | 571 | UBI_DYNAMIC_VOLUME : UBI_STATIC_VOLUME; |
571 | vol->name_len = be16_to_cpu(vtbl[i].name_len); | 572 | vol->name_len = be16_to_cpu(vtbl[i].name_len); |
diff --git a/drivers/net/benet/be_cmds.c b/drivers/net/benet/be_cmds.c index 102ade134165..fee6eee7ae5b 100644 --- a/drivers/net/benet/be_cmds.c +++ b/drivers/net/benet/be_cmds.c | |||
@@ -286,7 +286,7 @@ static void be_wrb_hdr_prepare(struct be_mcc_wrb *wrb, int payload_len, | |||
286 | MCC_WRB_SGE_CNT_SHIFT; | 286 | MCC_WRB_SGE_CNT_SHIFT; |
287 | wrb->payload_length = payload_len; | 287 | wrb->payload_length = payload_len; |
288 | wrb->tag0 = opcode; | 288 | wrb->tag0 = opcode; |
289 | be_dws_cpu_to_le(wrb, 20); | 289 | be_dws_cpu_to_le(wrb, 8); |
290 | } | 290 | } |
291 | 291 | ||
292 | /* Don't touch the hdr after it's prepared */ | 292 | /* Don't touch the hdr after it's prepared */ |
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c index 3a1f7902c16d..33ab8c7f14fe 100644 --- a/drivers/net/benet/be_main.c +++ b/drivers/net/benet/be_main.c | |||
@@ -910,7 +910,7 @@ static inline struct page *be_alloc_pages(u32 size) | |||
910 | static void be_post_rx_frags(struct be_adapter *adapter) | 910 | static void be_post_rx_frags(struct be_adapter *adapter) |
911 | { | 911 | { |
912 | struct be_rx_page_info *page_info_tbl = adapter->rx_obj.page_info_tbl; | 912 | struct be_rx_page_info *page_info_tbl = adapter->rx_obj.page_info_tbl; |
913 | struct be_rx_page_info *page_info = NULL; | 913 | struct be_rx_page_info *page_info = NULL, *prev_page_info = NULL; |
914 | struct be_queue_info *rxq = &adapter->rx_obj.q; | 914 | struct be_queue_info *rxq = &adapter->rx_obj.q; |
915 | struct page *pagep = NULL; | 915 | struct page *pagep = NULL; |
916 | struct be_eth_rx_d *rxd; | 916 | struct be_eth_rx_d *rxd; |
@@ -941,7 +941,6 @@ static void be_post_rx_frags(struct be_adapter *adapter) | |||
941 | rxd = queue_head_node(rxq); | 941 | rxd = queue_head_node(rxq); |
942 | rxd->fragpa_lo = cpu_to_le32(frag_dmaaddr & 0xFFFFFFFF); | 942 | rxd->fragpa_lo = cpu_to_le32(frag_dmaaddr & 0xFFFFFFFF); |
943 | rxd->fragpa_hi = cpu_to_le32(upper_32_bits(frag_dmaaddr)); | 943 | rxd->fragpa_hi = cpu_to_le32(upper_32_bits(frag_dmaaddr)); |
944 | queue_head_inc(rxq); | ||
945 | 944 | ||
946 | /* Any space left in the current big page for another frag? */ | 945 | /* Any space left in the current big page for another frag? */ |
947 | if ((page_offset + rx_frag_size + rx_frag_size) > | 946 | if ((page_offset + rx_frag_size + rx_frag_size) > |
@@ -949,10 +948,13 @@ static void be_post_rx_frags(struct be_adapter *adapter) | |||
949 | pagep = NULL; | 948 | pagep = NULL; |
950 | page_info->last_page_user = true; | 949 | page_info->last_page_user = true; |
951 | } | 950 | } |
951 | |||
952 | prev_page_info = page_info; | ||
953 | queue_head_inc(rxq); | ||
952 | page_info = &page_info_tbl[rxq->head]; | 954 | page_info = &page_info_tbl[rxq->head]; |
953 | } | 955 | } |
954 | if (pagep) | 956 | if (pagep) |
955 | page_info->last_page_user = true; | 957 | prev_page_info->last_page_user = true; |
956 | 958 | ||
957 | if (posted) { | 959 | if (posted) { |
958 | atomic_add(posted, &rxq->used); | 960 | atomic_add(posted, &rxq->used); |
diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c index 8ffea3990d07..0b23bc4f56c6 100644 --- a/drivers/net/bfin_mac.c +++ b/drivers/net/bfin_mac.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <asm/dma.h> | 33 | #include <asm/dma.h> |
34 | #include <linux/dma-mapping.h> | 34 | #include <linux/dma-mapping.h> |
35 | 35 | ||
36 | #include <asm/dpmc.h> | ||
36 | #include <asm/blackfin.h> | 37 | #include <asm/blackfin.h> |
37 | #include <asm/cacheflush.h> | 38 | #include <asm/cacheflush.h> |
38 | #include <asm/portmux.h> | 39 | #include <asm/portmux.h> |
@@ -386,8 +387,8 @@ static int mii_probe(struct net_device *dev) | |||
386 | u32 sclk, mdc_div; | 387 | u32 sclk, mdc_div; |
387 | 388 | ||
388 | /* Enable PHY output early */ | 389 | /* Enable PHY output early */ |
389 | if (!(bfin_read_VR_CTL() & PHYCLKOE)) | 390 | if (!(bfin_read_VR_CTL() & CLKBUFOE)) |
390 | bfin_write_VR_CTL(bfin_read_VR_CTL() | PHYCLKOE); | 391 | bfin_write_VR_CTL(bfin_read_VR_CTL() | CLKBUFOE); |
391 | 392 | ||
392 | sclk = get_sclk(); | 393 | sclk = get_sclk(); |
393 | mdc_div = ((sclk / MDC_CLK) / 2) - 1; | 394 | mdc_div = ((sclk / MDC_CLK) / 2) - 1; |
diff --git a/drivers/net/e1000/e1000.h b/drivers/net/e1000/e1000.h index 2a567df3ea71..e8932db7ee77 100644 --- a/drivers/net/e1000/e1000.h +++ b/drivers/net/e1000/e1000.h | |||
@@ -326,6 +326,8 @@ struct e1000_adapter { | |||
326 | /* for ioport free */ | 326 | /* for ioport free */ |
327 | int bars; | 327 | int bars; |
328 | int need_ioport; | 328 | int need_ioport; |
329 | |||
330 | bool discarding; | ||
329 | }; | 331 | }; |
330 | 332 | ||
331 | enum e1000_state_t { | 333 | enum e1000_state_t { |
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 7e855f9bbd97..d29bb532eccf 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
@@ -1698,18 +1698,6 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter) | |||
1698 | rctl &= ~E1000_RCTL_SZ_4096; | 1698 | rctl &= ~E1000_RCTL_SZ_4096; |
1699 | rctl |= E1000_RCTL_BSEX; | 1699 | rctl |= E1000_RCTL_BSEX; |
1700 | switch (adapter->rx_buffer_len) { | 1700 | switch (adapter->rx_buffer_len) { |
1701 | case E1000_RXBUFFER_256: | ||
1702 | rctl |= E1000_RCTL_SZ_256; | ||
1703 | rctl &= ~E1000_RCTL_BSEX; | ||
1704 | break; | ||
1705 | case E1000_RXBUFFER_512: | ||
1706 | rctl |= E1000_RCTL_SZ_512; | ||
1707 | rctl &= ~E1000_RCTL_BSEX; | ||
1708 | break; | ||
1709 | case E1000_RXBUFFER_1024: | ||
1710 | rctl |= E1000_RCTL_SZ_1024; | ||
1711 | rctl &= ~E1000_RCTL_BSEX; | ||
1712 | break; | ||
1713 | case E1000_RXBUFFER_2048: | 1701 | case E1000_RXBUFFER_2048: |
1714 | default: | 1702 | default: |
1715 | rctl |= E1000_RCTL_SZ_2048; | 1703 | rctl |= E1000_RCTL_SZ_2048; |
@@ -2802,13 +2790,13 @@ static int e1000_tx_map(struct e1000_adapter *adapter, | |||
2802 | dma_error: | 2790 | dma_error: |
2803 | dev_err(&pdev->dev, "TX DMA map failed\n"); | 2791 | dev_err(&pdev->dev, "TX DMA map failed\n"); |
2804 | buffer_info->dma = 0; | 2792 | buffer_info->dma = 0; |
2805 | count--; | 2793 | if (count) |
2806 | |||
2807 | while (count >= 0) { | ||
2808 | count--; | 2794 | count--; |
2809 | i--; | 2795 | |
2810 | if (i < 0) | 2796 | while (count--) { |
2797 | if (i==0) | ||
2811 | i += tx_ring->count; | 2798 | i += tx_ring->count; |
2799 | i--; | ||
2812 | buffer_info = &tx_ring->buffer_info[i]; | 2800 | buffer_info = &tx_ring->buffer_info[i]; |
2813 | e1000_unmap_and_free_tx_resource(adapter, buffer_info); | 2801 | e1000_unmap_and_free_tx_resource(adapter, buffer_info); |
2814 | } | 2802 | } |
@@ -3176,13 +3164,7 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu) | |||
3176 | * however with the new *_jumbo_rx* routines, jumbo receives will use | 3164 | * however with the new *_jumbo_rx* routines, jumbo receives will use |
3177 | * fragmented skbs */ | 3165 | * fragmented skbs */ |
3178 | 3166 | ||
3179 | if (max_frame <= E1000_RXBUFFER_256) | 3167 | if (max_frame <= E1000_RXBUFFER_2048) |
3180 | adapter->rx_buffer_len = E1000_RXBUFFER_256; | ||
3181 | else if (max_frame <= E1000_RXBUFFER_512) | ||
3182 | adapter->rx_buffer_len = E1000_RXBUFFER_512; | ||
3183 | else if (max_frame <= E1000_RXBUFFER_1024) | ||
3184 | adapter->rx_buffer_len = E1000_RXBUFFER_1024; | ||
3185 | else if (max_frame <= E1000_RXBUFFER_2048) | ||
3186 | adapter->rx_buffer_len = E1000_RXBUFFER_2048; | 3168 | adapter->rx_buffer_len = E1000_RXBUFFER_2048; |
3187 | else | 3169 | else |
3188 | #if (PAGE_SIZE >= E1000_RXBUFFER_16384) | 3170 | #if (PAGE_SIZE >= E1000_RXBUFFER_16384) |
@@ -3850,13 +3832,22 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter, | |||
3850 | 3832 | ||
3851 | length = le16_to_cpu(rx_desc->length); | 3833 | length = le16_to_cpu(rx_desc->length); |
3852 | /* !EOP means multiple descriptors were used to store a single | 3834 | /* !EOP means multiple descriptors were used to store a single |
3853 | * packet, also make sure the frame isn't just CRC only */ | 3835 | * packet, if thats the case we need to toss it. In fact, we |
3854 | if (unlikely(!(status & E1000_RXD_STAT_EOP) || (length <= 4))) { | 3836 | * to toss every packet with the EOP bit clear and the next |
3837 | * frame that _does_ have the EOP bit set, as it is by | ||
3838 | * definition only a frame fragment | ||
3839 | */ | ||
3840 | if (unlikely(!(status & E1000_RXD_STAT_EOP))) | ||
3841 | adapter->discarding = true; | ||
3842 | |||
3843 | if (adapter->discarding) { | ||
3855 | /* All receives must fit into a single buffer */ | 3844 | /* All receives must fit into a single buffer */ |
3856 | E1000_DBG("%s: Receive packet consumed multiple" | 3845 | E1000_DBG("%s: Receive packet consumed multiple" |
3857 | " buffers\n", netdev->name); | 3846 | " buffers\n", netdev->name); |
3858 | /* recycle */ | 3847 | /* recycle */ |
3859 | buffer_info->skb = skb; | 3848 | buffer_info->skb = skb; |
3849 | if (status & E1000_RXD_STAT_EOP) | ||
3850 | adapter->discarding = false; | ||
3860 | goto next_desc; | 3851 | goto next_desc; |
3861 | } | 3852 | } |
3862 | 3853 | ||
diff --git a/drivers/net/e1000e/e1000.h b/drivers/net/e1000e/e1000.h index cebbd9079d53..d236efaf7478 100644 --- a/drivers/net/e1000e/e1000.h +++ b/drivers/net/e1000e/e1000.h | |||
@@ -421,6 +421,7 @@ struct e1000_info { | |||
421 | /* CRC Stripping defines */ | 421 | /* CRC Stripping defines */ |
422 | #define FLAG2_CRC_STRIPPING (1 << 0) | 422 | #define FLAG2_CRC_STRIPPING (1 << 0) |
423 | #define FLAG2_HAS_PHY_WAKEUP (1 << 1) | 423 | #define FLAG2_HAS_PHY_WAKEUP (1 << 1) |
424 | #define FLAG2_IS_DISCARDING (1 << 2) | ||
424 | 425 | ||
425 | #define E1000_RX_DESC_PS(R, i) \ | 426 | #define E1000_RX_DESC_PS(R, i) \ |
426 | (&(((union e1000_rx_desc_packet_split *)((R).desc))[i])) | 427 | (&(((union e1000_rx_desc_packet_split *)((R).desc))[i])) |
@@ -582,7 +583,6 @@ extern s32 e1000_read_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset, | |||
582 | extern s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data); | 583 | extern s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data); |
583 | extern s32 e1000_write_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset, | 584 | extern s32 e1000_write_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset, |
584 | u16 data); | 585 | u16 data); |
585 | extern s32 e1000_set_mdio_slow_mode_hv(struct e1000_hw *hw, bool slow); | ||
586 | extern s32 e1000_link_stall_workaround_hv(struct e1000_hw *hw); | 586 | extern s32 e1000_link_stall_workaround_hv(struct e1000_hw *hw); |
587 | extern s32 e1000_copper_link_setup_82577(struct e1000_hw *hw); | 587 | extern s32 e1000_copper_link_setup_82577(struct e1000_hw *hw); |
588 | extern s32 e1000_check_polarity_82577(struct e1000_hw *hw); | 588 | extern s32 e1000_check_polarity_82577(struct e1000_hw *hw); |
diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/e1000e/ich8lan.c index ad08cf3f40c0..8b6ecd127889 100644 --- a/drivers/net/e1000e/ich8lan.c +++ b/drivers/net/e1000e/ich8lan.c | |||
@@ -138,6 +138,10 @@ | |||
138 | #define E1000_NVM_K1_CONFIG 0x1B /* NVM K1 Config Word */ | 138 | #define E1000_NVM_K1_CONFIG 0x1B /* NVM K1 Config Word */ |
139 | #define E1000_NVM_K1_ENABLE 0x1 /* NVM Enable K1 bit */ | 139 | #define E1000_NVM_K1_ENABLE 0x1 /* NVM Enable K1 bit */ |
140 | 140 | ||
141 | /* KMRN Mode Control */ | ||
142 | #define HV_KMRN_MODE_CTRL PHY_REG(769, 16) | ||
143 | #define HV_KMRN_MDIO_SLOW 0x0400 | ||
144 | |||
141 | /* ICH GbE Flash Hardware Sequencing Flash Status Register bit breakdown */ | 145 | /* ICH GbE Flash Hardware Sequencing Flash Status Register bit breakdown */ |
142 | /* Offset 04h HSFSTS */ | 146 | /* Offset 04h HSFSTS */ |
143 | union ich8_hws_flash_status { | 147 | union ich8_hws_flash_status { |
@@ -219,6 +223,7 @@ static s32 e1000_set_lplu_state_pchlan(struct e1000_hw *hw, bool active); | |||
219 | static void e1000_power_down_phy_copper_ich8lan(struct e1000_hw *hw); | 223 | static void e1000_power_down_phy_copper_ich8lan(struct e1000_hw *hw); |
220 | static void e1000_lan_init_done_ich8lan(struct e1000_hw *hw); | 224 | static void e1000_lan_init_done_ich8lan(struct e1000_hw *hw); |
221 | static s32 e1000_k1_gig_workaround_hv(struct e1000_hw *hw, bool link); | 225 | static s32 e1000_k1_gig_workaround_hv(struct e1000_hw *hw, bool link); |
226 | static s32 e1000_set_mdio_slow_mode_hv(struct e1000_hw *hw); | ||
222 | 227 | ||
223 | static inline u16 __er16flash(struct e1000_hw *hw, unsigned long reg) | 228 | static inline u16 __er16flash(struct e1000_hw *hw, unsigned long reg) |
224 | { | 229 | { |
@@ -270,7 +275,21 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw) | |||
270 | phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT; | 275 | phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT; |
271 | 276 | ||
272 | phy->id = e1000_phy_unknown; | 277 | phy->id = e1000_phy_unknown; |
273 | e1000e_get_phy_id(hw); | 278 | ret_val = e1000e_get_phy_id(hw); |
279 | if (ret_val) | ||
280 | goto out; | ||
281 | if ((phy->id == 0) || (phy->id == PHY_REVISION_MASK)) { | ||
282 | /* | ||
283 | * In case the PHY needs to be in mdio slow mode (eg. 82577), | ||
284 | * set slow mode and try to get the PHY id again. | ||
285 | */ | ||
286 | ret_val = e1000_set_mdio_slow_mode_hv(hw); | ||
287 | if (ret_val) | ||
288 | goto out; | ||
289 | ret_val = e1000e_get_phy_id(hw); | ||
290 | if (ret_val) | ||
291 | goto out; | ||
292 | } | ||
274 | phy->type = e1000e_get_phy_type_from_id(phy->id); | 293 | phy->type = e1000e_get_phy_type_from_id(phy->id); |
275 | 294 | ||
276 | switch (phy->type) { | 295 | switch (phy->type) { |
@@ -292,6 +311,7 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw) | |||
292 | break; | 311 | break; |
293 | } | 312 | } |
294 | 313 | ||
314 | out: | ||
295 | return ret_val; | 315 | return ret_val; |
296 | } | 316 | } |
297 | 317 | ||
@@ -1076,16 +1096,44 @@ out: | |||
1076 | 1096 | ||
1077 | 1097 | ||
1078 | /** | 1098 | /** |
1099 | * e1000_set_mdio_slow_mode_hv - Set slow MDIO access mode | ||
1100 | * @hw: pointer to the HW structure | ||
1101 | **/ | ||
1102 | static s32 e1000_set_mdio_slow_mode_hv(struct e1000_hw *hw) | ||
1103 | { | ||
1104 | s32 ret_val; | ||
1105 | u16 data; | ||
1106 | |||
1107 | ret_val = e1e_rphy(hw, HV_KMRN_MODE_CTRL, &data); | ||
1108 | if (ret_val) | ||
1109 | return ret_val; | ||
1110 | |||
1111 | data |= HV_KMRN_MDIO_SLOW; | ||
1112 | |||
1113 | ret_val = e1e_wphy(hw, HV_KMRN_MODE_CTRL, data); | ||
1114 | |||
1115 | return ret_val; | ||
1116 | } | ||
1117 | |||
1118 | /** | ||
1079 | * e1000_hv_phy_workarounds_ich8lan - A series of Phy workarounds to be | 1119 | * e1000_hv_phy_workarounds_ich8lan - A series of Phy workarounds to be |
1080 | * done after every PHY reset. | 1120 | * done after every PHY reset. |
1081 | **/ | 1121 | **/ |
1082 | static s32 e1000_hv_phy_workarounds_ich8lan(struct e1000_hw *hw) | 1122 | static s32 e1000_hv_phy_workarounds_ich8lan(struct e1000_hw *hw) |
1083 | { | 1123 | { |
1084 | s32 ret_val = 0; | 1124 | s32 ret_val = 0; |
1125 | u16 phy_data; | ||
1085 | 1126 | ||
1086 | if (hw->mac.type != e1000_pchlan) | 1127 | if (hw->mac.type != e1000_pchlan) |
1087 | return ret_val; | 1128 | return ret_val; |
1088 | 1129 | ||
1130 | /* Set MDIO slow mode before any other MDIO access */ | ||
1131 | if (hw->phy.type == e1000_phy_82577) { | ||
1132 | ret_val = e1000_set_mdio_slow_mode_hv(hw); | ||
1133 | if (ret_val) | ||
1134 | goto out; | ||
1135 | } | ||
1136 | |||
1089 | if (((hw->phy.type == e1000_phy_82577) && | 1137 | if (((hw->phy.type == e1000_phy_82577) && |
1090 | ((hw->phy.revision == 1) || (hw->phy.revision == 2))) || | 1138 | ((hw->phy.revision == 1) || (hw->phy.revision == 2))) || |
1091 | ((hw->phy.type == e1000_phy_82578) && (hw->phy.revision == 1))) { | 1139 | ((hw->phy.type == e1000_phy_82578) && (hw->phy.revision == 1))) { |
@@ -1118,16 +1166,32 @@ static s32 e1000_hv_phy_workarounds_ich8lan(struct e1000_hw *hw) | |||
1118 | 1166 | ||
1119 | hw->phy.addr = 1; | 1167 | hw->phy.addr = 1; |
1120 | ret_val = e1000e_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT, 0); | 1168 | ret_val = e1000e_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT, 0); |
1169 | hw->phy.ops.release(hw); | ||
1121 | if (ret_val) | 1170 | if (ret_val) |
1122 | goto out; | 1171 | goto out; |
1123 | hw->phy.ops.release(hw); | ||
1124 | 1172 | ||
1125 | /* | 1173 | /* |
1126 | * Configure the K1 Si workaround during phy reset assuming there is | 1174 | * Configure the K1 Si workaround during phy reset assuming there is |
1127 | * link so that it disables K1 if link is in 1Gbps. | 1175 | * link so that it disables K1 if link is in 1Gbps. |
1128 | */ | 1176 | */ |
1129 | ret_val = e1000_k1_gig_workaround_hv(hw, true); | 1177 | ret_val = e1000_k1_gig_workaround_hv(hw, true); |
1178 | if (ret_val) | ||
1179 | goto out; | ||
1130 | 1180 | ||
1181 | /* Workaround for link disconnects on a busy hub in half duplex */ | ||
1182 | ret_val = hw->phy.ops.acquire(hw); | ||
1183 | if (ret_val) | ||
1184 | goto out; | ||
1185 | ret_val = hw->phy.ops.read_reg_locked(hw, | ||
1186 | PHY_REG(BM_PORT_CTRL_PAGE, 17), | ||
1187 | &phy_data); | ||
1188 | if (ret_val) | ||
1189 | goto release; | ||
1190 | ret_val = hw->phy.ops.write_reg_locked(hw, | ||
1191 | PHY_REG(BM_PORT_CTRL_PAGE, 17), | ||
1192 | phy_data & 0x00FF); | ||
1193 | release: | ||
1194 | hw->phy.ops.release(hw); | ||
1131 | out: | 1195 | out: |
1132 | return ret_val; | 1196 | return ret_val; |
1133 | } | 1197 | } |
@@ -1184,6 +1248,7 @@ static s32 e1000_phy_hw_reset_ich8lan(struct e1000_hw *hw) | |||
1184 | /* Allow time for h/w to get to a quiescent state after reset */ | 1248 | /* Allow time for h/w to get to a quiescent state after reset */ |
1185 | mdelay(10); | 1249 | mdelay(10); |
1186 | 1250 | ||
1251 | /* Perform any necessary post-reset workarounds */ | ||
1187 | if (hw->mac.type == e1000_pchlan) { | 1252 | if (hw->mac.type == e1000_pchlan) { |
1188 | ret_val = e1000_hv_phy_workarounds_ich8lan(hw); | 1253 | ret_val = e1000_hv_phy_workarounds_ich8lan(hw); |
1189 | if (ret_val) | 1254 | if (ret_val) |
@@ -2484,6 +2549,10 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw) | |||
2484 | if (!ret_val) | 2549 | if (!ret_val) |
2485 | e1000_release_swflag_ich8lan(hw); | 2550 | e1000_release_swflag_ich8lan(hw); |
2486 | 2551 | ||
2552 | /* Perform any necessary post-reset workarounds */ | ||
2553 | if (hw->mac.type == e1000_pchlan) | ||
2554 | ret_val = e1000_hv_phy_workarounds_ich8lan(hw); | ||
2555 | |||
2487 | if (ctrl & E1000_CTRL_PHY_RST) | 2556 | if (ctrl & E1000_CTRL_PHY_RST) |
2488 | ret_val = hw->phy.ops.get_cfg_done(hw); | 2557 | ret_val = hw->phy.ops.get_cfg_done(hw); |
2489 | 2558 | ||
@@ -2528,9 +2597,6 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw) | |||
2528 | kab |= E1000_KABGTXD_BGSQLBIAS; | 2597 | kab |= E1000_KABGTXD_BGSQLBIAS; |
2529 | ew32(KABGTXD, kab); | 2598 | ew32(KABGTXD, kab); |
2530 | 2599 | ||
2531 | if (hw->mac.type == e1000_pchlan) | ||
2532 | ret_val = e1000_hv_phy_workarounds_ich8lan(hw); | ||
2533 | |||
2534 | out: | 2600 | out: |
2535 | return ret_val; | 2601 | return ret_val; |
2536 | } | 2602 | } |
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c index c45965a256b6..57f149b75fbe 100644 --- a/drivers/net/e1000e/netdev.c +++ b/drivers/net/e1000e/netdev.c | |||
@@ -450,13 +450,23 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter, | |||
450 | 450 | ||
451 | length = le16_to_cpu(rx_desc->length); | 451 | length = le16_to_cpu(rx_desc->length); |
452 | 452 | ||
453 | /* !EOP means multiple descriptors were used to store a single | 453 | /* |
454 | * packet, also make sure the frame isn't just CRC only */ | 454 | * !EOP means multiple descriptors were used to store a single |
455 | if (!(status & E1000_RXD_STAT_EOP) || (length <= 4)) { | 455 | * packet, if that's the case we need to toss it. In fact, we |
456 | * need to toss every packet with the EOP bit clear and the | ||
457 | * next frame that _does_ have the EOP bit set, as it is by | ||
458 | * definition only a frame fragment | ||
459 | */ | ||
460 | if (unlikely(!(status & E1000_RXD_STAT_EOP))) | ||
461 | adapter->flags2 |= FLAG2_IS_DISCARDING; | ||
462 | |||
463 | if (adapter->flags2 & FLAG2_IS_DISCARDING) { | ||
456 | /* All receives must fit into a single buffer */ | 464 | /* All receives must fit into a single buffer */ |
457 | e_dbg("Receive packet consumed multiple buffers\n"); | 465 | e_dbg("Receive packet consumed multiple buffers\n"); |
458 | /* recycle */ | 466 | /* recycle */ |
459 | buffer_info->skb = skb; | 467 | buffer_info->skb = skb; |
468 | if (status & E1000_RXD_STAT_EOP) | ||
469 | adapter->flags2 &= ~FLAG2_IS_DISCARDING; | ||
460 | goto next_desc; | 470 | goto next_desc; |
461 | } | 471 | } |
462 | 472 | ||
@@ -745,10 +755,16 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter, | |||
745 | PCI_DMA_FROMDEVICE); | 755 | PCI_DMA_FROMDEVICE); |
746 | buffer_info->dma = 0; | 756 | buffer_info->dma = 0; |
747 | 757 | ||
748 | if (!(staterr & E1000_RXD_STAT_EOP)) { | 758 | /* see !EOP comment in other rx routine */ |
759 | if (!(staterr & E1000_RXD_STAT_EOP)) | ||
760 | adapter->flags2 |= FLAG2_IS_DISCARDING; | ||
761 | |||
762 | if (adapter->flags2 & FLAG2_IS_DISCARDING) { | ||
749 | e_dbg("Packet Split buffers didn't pick up the full " | 763 | e_dbg("Packet Split buffers didn't pick up the full " |
750 | "packet\n"); | 764 | "packet\n"); |
751 | dev_kfree_skb_irq(skb); | 765 | dev_kfree_skb_irq(skb); |
766 | if (staterr & E1000_RXD_STAT_EOP) | ||
767 | adapter->flags2 &= ~FLAG2_IS_DISCARDING; | ||
752 | goto next_desc; | 768 | goto next_desc; |
753 | } | 769 | } |
754 | 770 | ||
@@ -1118,6 +1134,7 @@ static void e1000_clean_rx_ring(struct e1000_adapter *adapter) | |||
1118 | 1134 | ||
1119 | rx_ring->next_to_clean = 0; | 1135 | rx_ring->next_to_clean = 0; |
1120 | rx_ring->next_to_use = 0; | 1136 | rx_ring->next_to_use = 0; |
1137 | adapter->flags2 &= ~FLAG2_IS_DISCARDING; | ||
1121 | 1138 | ||
1122 | writel(0, adapter->hw.hw_addr + rx_ring->head); | 1139 | writel(0, adapter->hw.hw_addr + rx_ring->head); |
1123 | writel(0, adapter->hw.hw_addr + rx_ring->tail); | 1140 | writel(0, adapter->hw.hw_addr + rx_ring->tail); |
@@ -2333,18 +2350,6 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter) | |||
2333 | rctl &= ~E1000_RCTL_SZ_4096; | 2350 | rctl &= ~E1000_RCTL_SZ_4096; |
2334 | rctl |= E1000_RCTL_BSEX; | 2351 | rctl |= E1000_RCTL_BSEX; |
2335 | switch (adapter->rx_buffer_len) { | 2352 | switch (adapter->rx_buffer_len) { |
2336 | case 256: | ||
2337 | rctl |= E1000_RCTL_SZ_256; | ||
2338 | rctl &= ~E1000_RCTL_BSEX; | ||
2339 | break; | ||
2340 | case 512: | ||
2341 | rctl |= E1000_RCTL_SZ_512; | ||
2342 | rctl &= ~E1000_RCTL_BSEX; | ||
2343 | break; | ||
2344 | case 1024: | ||
2345 | rctl |= E1000_RCTL_SZ_1024; | ||
2346 | rctl &= ~E1000_RCTL_BSEX; | ||
2347 | break; | ||
2348 | case 2048: | 2353 | case 2048: |
2349 | default: | 2354 | default: |
2350 | rctl |= E1000_RCTL_SZ_2048; | 2355 | rctl |= E1000_RCTL_SZ_2048; |
@@ -3781,7 +3786,7 @@ static int e1000_tso(struct e1000_adapter *adapter, | |||
3781 | 0, IPPROTO_TCP, 0); | 3786 | 0, IPPROTO_TCP, 0); |
3782 | cmd_length = E1000_TXD_CMD_IP; | 3787 | cmd_length = E1000_TXD_CMD_IP; |
3783 | ipcse = skb_transport_offset(skb) - 1; | 3788 | ipcse = skb_transport_offset(skb) - 1; |
3784 | } else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) { | 3789 | } else if (skb_is_gso_v6(skb)) { |
3785 | ipv6_hdr(skb)->payload_len = 0; | 3790 | ipv6_hdr(skb)->payload_len = 0; |
3786 | tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, | 3791 | tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, |
3787 | &ipv6_hdr(skb)->daddr, | 3792 | &ipv6_hdr(skb)->daddr, |
@@ -3962,13 +3967,13 @@ static int e1000_tx_map(struct e1000_adapter *adapter, | |||
3962 | dma_error: | 3967 | dma_error: |
3963 | dev_err(&pdev->dev, "TX DMA map failed\n"); | 3968 | dev_err(&pdev->dev, "TX DMA map failed\n"); |
3964 | buffer_info->dma = 0; | 3969 | buffer_info->dma = 0; |
3965 | count--; | 3970 | if (count) |
3966 | |||
3967 | while (count >= 0) { | ||
3968 | count--; | 3971 | count--; |
3969 | i--; | 3972 | |
3970 | if (i < 0) | 3973 | while (count--) { |
3974 | if (i==0) | ||
3971 | i += tx_ring->count; | 3975 | i += tx_ring->count; |
3976 | i--; | ||
3972 | buffer_info = &tx_ring->buffer_info[i]; | 3977 | buffer_info = &tx_ring->buffer_info[i]; |
3973 | e1000_put_txbuf(adapter, buffer_info);; | 3978 | e1000_put_txbuf(adapter, buffer_info);; |
3974 | } | 3979 | } |
@@ -4317,13 +4322,7 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu) | |||
4317 | * fragmented skbs | 4322 | * fragmented skbs |
4318 | */ | 4323 | */ |
4319 | 4324 | ||
4320 | if (max_frame <= 256) | 4325 | if (max_frame <= 2048) |
4321 | adapter->rx_buffer_len = 256; | ||
4322 | else if (max_frame <= 512) | ||
4323 | adapter->rx_buffer_len = 512; | ||
4324 | else if (max_frame <= 1024) | ||
4325 | adapter->rx_buffer_len = 1024; | ||
4326 | else if (max_frame <= 2048) | ||
4327 | adapter->rx_buffer_len = 2048; | 4326 | adapter->rx_buffer_len = 2048; |
4328 | else | 4327 | else |
4329 | adapter->rx_buffer_len = 4096; | 4328 | adapter->rx_buffer_len = 4096; |
diff --git a/drivers/net/e1000e/phy.c b/drivers/net/e1000e/phy.c index 55a2c0acfee7..7f3ceb9dad6a 100644 --- a/drivers/net/e1000e/phy.c +++ b/drivers/net/e1000e/phy.c | |||
@@ -152,32 +152,9 @@ s32 e1000e_get_phy_id(struct e1000_hw *hw) | |||
152 | if (phy->id != 0 && phy->id != PHY_REVISION_MASK) | 152 | if (phy->id != 0 && phy->id != PHY_REVISION_MASK) |
153 | goto out; | 153 | goto out; |
154 | 154 | ||
155 | /* | ||
156 | * If the PHY ID is still unknown, we may have an 82577 | ||
157 | * without link. We will try again after setting Slow MDIC | ||
158 | * mode. No harm in trying again in this case since the PHY | ||
159 | * ID is unknown at this point anyway. | ||
160 | */ | ||
161 | ret_val = phy->ops.acquire(hw); | ||
162 | if (ret_val) | ||
163 | goto out; | ||
164 | ret_val = e1000_set_mdio_slow_mode_hv(hw, true); | ||
165 | if (ret_val) | ||
166 | goto out; | ||
167 | phy->ops.release(hw); | ||
168 | |||
169 | retry_count++; | 155 | retry_count++; |
170 | } | 156 | } |
171 | out: | 157 | out: |
172 | /* Revert to MDIO fast mode, if applicable */ | ||
173 | if (retry_count) { | ||
174 | ret_val = phy->ops.acquire(hw); | ||
175 | if (ret_val) | ||
176 | return ret_val; | ||
177 | ret_val = e1000_set_mdio_slow_mode_hv(hw, false); | ||
178 | phy->ops.release(hw); | ||
179 | } | ||
180 | |||
181 | return ret_val; | 158 | return ret_val; |
182 | } | 159 | } |
183 | 160 | ||
@@ -2791,38 +2768,6 @@ static s32 e1000_set_d0_lplu_state(struct e1000_hw *hw, bool active) | |||
2791 | } | 2768 | } |
2792 | 2769 | ||
2793 | /** | 2770 | /** |
2794 | * e1000_set_mdio_slow_mode_hv - Set slow MDIO access mode | ||
2795 | * @hw: pointer to the HW structure | ||
2796 | * @slow: true for slow mode, false for normal mode | ||
2797 | * | ||
2798 | * Assumes semaphore already acquired. | ||
2799 | **/ | ||
2800 | s32 e1000_set_mdio_slow_mode_hv(struct e1000_hw *hw, bool slow) | ||
2801 | { | ||
2802 | s32 ret_val = 0; | ||
2803 | u16 data = 0; | ||
2804 | |||
2805 | /* Set MDIO mode - page 769, register 16: 0x2580==slow, 0x2180==fast */ | ||
2806 | hw->phy.addr = 1; | ||
2807 | ret_val = e1000e_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT, | ||
2808 | (BM_PORT_CTRL_PAGE << IGP_PAGE_SHIFT)); | ||
2809 | if (ret_val) | ||
2810 | goto out; | ||
2811 | |||
2812 | ret_val = e1000e_write_phy_reg_mdic(hw, BM_CS_CTRL1, | ||
2813 | (0x2180 | (slow << 10))); | ||
2814 | if (ret_val) | ||
2815 | goto out; | ||
2816 | |||
2817 | /* dummy read when reverting to fast mode - throw away result */ | ||
2818 | if (!slow) | ||
2819 | ret_val = e1000e_read_phy_reg_mdic(hw, BM_CS_CTRL1, &data); | ||
2820 | |||
2821 | out: | ||
2822 | return ret_val; | ||
2823 | } | ||
2824 | |||
2825 | /** | ||
2826 | * __e1000_read_phy_reg_hv - Read HV PHY register | 2771 | * __e1000_read_phy_reg_hv - Read HV PHY register |
2827 | * @hw: pointer to the HW structure | 2772 | * @hw: pointer to the HW structure |
2828 | * @offset: register offset to be read | 2773 | * @offset: register offset to be read |
@@ -2839,7 +2784,6 @@ static s32 __e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data, | |||
2839 | s32 ret_val; | 2784 | s32 ret_val; |
2840 | u16 page = BM_PHY_REG_PAGE(offset); | 2785 | u16 page = BM_PHY_REG_PAGE(offset); |
2841 | u16 reg = BM_PHY_REG_NUM(offset); | 2786 | u16 reg = BM_PHY_REG_NUM(offset); |
2842 | bool in_slow_mode = false; | ||
2843 | 2787 | ||
2844 | if (!locked) { | 2788 | if (!locked) { |
2845 | ret_val = hw->phy.ops.acquire(hw); | 2789 | ret_val = hw->phy.ops.acquire(hw); |
@@ -2847,16 +2791,6 @@ static s32 __e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data, | |||
2847 | return ret_val; | 2791 | return ret_val; |
2848 | } | 2792 | } |
2849 | 2793 | ||
2850 | /* Workaround failure in MDIO access while cable is disconnected */ | ||
2851 | if ((hw->phy.type == e1000_phy_82577) && | ||
2852 | !(er32(STATUS) & E1000_STATUS_LU)) { | ||
2853 | ret_val = e1000_set_mdio_slow_mode_hv(hw, true); | ||
2854 | if (ret_val) | ||
2855 | goto out; | ||
2856 | |||
2857 | in_slow_mode = true; | ||
2858 | } | ||
2859 | |||
2860 | /* Page 800 works differently than the rest so it has its own func */ | 2794 | /* Page 800 works differently than the rest so it has its own func */ |
2861 | if (page == BM_WUC_PAGE) { | 2795 | if (page == BM_WUC_PAGE) { |
2862 | ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, | 2796 | ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, |
@@ -2893,10 +2827,6 @@ static s32 __e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data, | |||
2893 | ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & reg, | 2827 | ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & reg, |
2894 | data); | 2828 | data); |
2895 | out: | 2829 | out: |
2896 | /* Revert to MDIO fast mode, if applicable */ | ||
2897 | if ((hw->phy.type == e1000_phy_82577) && in_slow_mode) | ||
2898 | ret_val |= e1000_set_mdio_slow_mode_hv(hw, false); | ||
2899 | |||
2900 | if (!locked) | 2830 | if (!locked) |
2901 | hw->phy.ops.release(hw); | 2831 | hw->phy.ops.release(hw); |
2902 | 2832 | ||
@@ -2948,7 +2878,6 @@ static s32 __e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data, | |||
2948 | s32 ret_val; | 2878 | s32 ret_val; |
2949 | u16 page = BM_PHY_REG_PAGE(offset); | 2879 | u16 page = BM_PHY_REG_PAGE(offset); |
2950 | u16 reg = BM_PHY_REG_NUM(offset); | 2880 | u16 reg = BM_PHY_REG_NUM(offset); |
2951 | bool in_slow_mode = false; | ||
2952 | 2881 | ||
2953 | if (!locked) { | 2882 | if (!locked) { |
2954 | ret_val = hw->phy.ops.acquire(hw); | 2883 | ret_val = hw->phy.ops.acquire(hw); |
@@ -2956,16 +2885,6 @@ static s32 __e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data, | |||
2956 | return ret_val; | 2885 | return ret_val; |
2957 | } | 2886 | } |
2958 | 2887 | ||
2959 | /* Workaround failure in MDIO access while cable is disconnected */ | ||
2960 | if ((hw->phy.type == e1000_phy_82577) && | ||
2961 | !(er32(STATUS) & E1000_STATUS_LU)) { | ||
2962 | ret_val = e1000_set_mdio_slow_mode_hv(hw, true); | ||
2963 | if (ret_val) | ||
2964 | goto out; | ||
2965 | |||
2966 | in_slow_mode = true; | ||
2967 | } | ||
2968 | |||
2969 | /* Page 800 works differently than the rest so it has its own func */ | 2888 | /* Page 800 works differently than the rest so it has its own func */ |
2970 | if (page == BM_WUC_PAGE) { | 2889 | if (page == BM_WUC_PAGE) { |
2971 | ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, | 2890 | ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, |
@@ -3019,10 +2938,6 @@ static s32 __e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data, | |||
3019 | data); | 2938 | data); |
3020 | 2939 | ||
3021 | out: | 2940 | out: |
3022 | /* Revert to MDIO fast mode, if applicable */ | ||
3023 | if ((hw->phy.type == e1000_phy_82577) && in_slow_mode) | ||
3024 | ret_val |= e1000_set_mdio_slow_mode_hv(hw, false); | ||
3025 | |||
3026 | if (!locked) | 2941 | if (!locked) |
3027 | hw->phy.ops.release(hw); | 2942 | hw->phy.ops.release(hw); |
3028 | 2943 | ||
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index 933c64ff2465..997124d2992a 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
@@ -3422,7 +3422,7 @@ static inline int igb_tso_adv(struct igb_ring *tx_ring, | |||
3422 | iph->daddr, 0, | 3422 | iph->daddr, 0, |
3423 | IPPROTO_TCP, | 3423 | IPPROTO_TCP, |
3424 | 0); | 3424 | 0); |
3425 | } else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) { | 3425 | } else if (skb_is_gso_v6(skb)) { |
3426 | ipv6_hdr(skb)->payload_len = 0; | 3426 | ipv6_hdr(skb)->payload_len = 0; |
3427 | tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, | 3427 | tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, |
3428 | &ipv6_hdr(skb)->daddr, | 3428 | &ipv6_hdr(skb)->daddr, |
@@ -3584,6 +3584,7 @@ static inline int igb_tx_map_adv(struct igb_ring *tx_ring, struct sk_buff *skb, | |||
3584 | for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) { | 3584 | for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) { |
3585 | struct skb_frag_struct *frag; | 3585 | struct skb_frag_struct *frag; |
3586 | 3586 | ||
3587 | count++; | ||
3587 | i++; | 3588 | i++; |
3588 | if (i == tx_ring->count) | 3589 | if (i == tx_ring->count) |
3589 | i = 0; | 3590 | i = 0; |
@@ -3605,7 +3606,6 @@ static inline int igb_tx_map_adv(struct igb_ring *tx_ring, struct sk_buff *skb, | |||
3605 | if (pci_dma_mapping_error(pdev, buffer_info->dma)) | 3606 | if (pci_dma_mapping_error(pdev, buffer_info->dma)) |
3606 | goto dma_error; | 3607 | goto dma_error; |
3607 | 3608 | ||
3608 | count++; | ||
3609 | } | 3609 | } |
3610 | 3610 | ||
3611 | tx_ring->buffer_info[i].skb = skb; | 3611 | tx_ring->buffer_info[i].skb = skb; |
diff --git a/drivers/net/igbvf/netdev.c b/drivers/net/igbvf/netdev.c index 0dbd0320023a..297a5ddd77f0 100644 --- a/drivers/net/igbvf/netdev.c +++ b/drivers/net/igbvf/netdev.c | |||
@@ -1963,7 +1963,7 @@ static int igbvf_tso(struct igbvf_adapter *adapter, | |||
1963 | iph->daddr, 0, | 1963 | iph->daddr, 0, |
1964 | IPPROTO_TCP, | 1964 | IPPROTO_TCP, |
1965 | 0); | 1965 | 0); |
1966 | } else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) { | 1966 | } else if (skb_is_gso_v6(skb)) { |
1967 | ipv6_hdr(skb)->payload_len = 0; | 1967 | ipv6_hdr(skb)->payload_len = 0; |
1968 | tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, | 1968 | tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, |
1969 | &ipv6_hdr(skb)->daddr, | 1969 | &ipv6_hdr(skb)->daddr, |
@@ -2126,6 +2126,7 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter, | |||
2126 | for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) { | 2126 | for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) { |
2127 | struct skb_frag_struct *frag; | 2127 | struct skb_frag_struct *frag; |
2128 | 2128 | ||
2129 | count++; | ||
2129 | i++; | 2130 | i++; |
2130 | if (i == tx_ring->count) | 2131 | if (i == tx_ring->count) |
2131 | i = 0; | 2132 | i = 0; |
@@ -2146,7 +2147,6 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter, | |||
2146 | PCI_DMA_TODEVICE); | 2147 | PCI_DMA_TODEVICE); |
2147 | if (pci_dma_mapping_error(pdev, buffer_info->dma)) | 2148 | if (pci_dma_mapping_error(pdev, buffer_info->dma)) |
2148 | goto dma_error; | 2149 | goto dma_error; |
2149 | count++; | ||
2150 | } | 2150 | } |
2151 | 2151 | ||
2152 | tx_ring->buffer_info[i].skb = skb; | 2152 | tx_ring->buffer_info[i].skb = skb; |
@@ -2163,14 +2163,14 @@ dma_error: | |||
2163 | buffer_info->length = 0; | 2163 | buffer_info->length = 0; |
2164 | buffer_info->next_to_watch = 0; | 2164 | buffer_info->next_to_watch = 0; |
2165 | buffer_info->mapped_as_page = false; | 2165 | buffer_info->mapped_as_page = false; |
2166 | count--; | 2166 | if (count) |
2167 | count--; | ||
2167 | 2168 | ||
2168 | /* clear timestamp and dma mappings for remaining portion of packet */ | 2169 | /* clear timestamp and dma mappings for remaining portion of packet */ |
2169 | while (count >= 0) { | 2170 | while (count--) { |
2170 | count--; | 2171 | if (i==0) |
2171 | i--; | ||
2172 | if (i < 0) | ||
2173 | i += tx_ring->count; | 2172 | i += tx_ring->count; |
2173 | i--; | ||
2174 | buffer_info = &tx_ring->buffer_info[i]; | 2174 | buffer_info = &tx_ring->buffer_info[i]; |
2175 | igbvf_put_txbuf(adapter, buffer_info); | 2175 | igbvf_put_txbuf(adapter, buffer_info); |
2176 | } | 2176 | } |
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c index bcd0f01d5feb..593d1a4f217c 100644 --- a/drivers/net/ixgb/ixgb_main.c +++ b/drivers/net/ixgb/ixgb_main.c | |||
@@ -1363,13 +1363,13 @@ ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb, | |||
1363 | dma_error: | 1363 | dma_error: |
1364 | dev_err(&pdev->dev, "TX DMA map failed\n"); | 1364 | dev_err(&pdev->dev, "TX DMA map failed\n"); |
1365 | buffer_info->dma = 0; | 1365 | buffer_info->dma = 0; |
1366 | count--; | 1366 | if (count) |
1367 | |||
1368 | while (count >= 0) { | ||
1369 | count--; | 1367 | count--; |
1370 | i--; | 1368 | |
1371 | if (i < 0) | 1369 | while (count--) { |
1370 | if (i==0) | ||
1372 | i += tx_ring->count; | 1371 | i += tx_ring->count; |
1372 | i--; | ||
1373 | buffer_info = &tx_ring->buffer_info[i]; | 1373 | buffer_info = &tx_ring->buffer_info[i]; |
1374 | ixgb_unmap_and_free_tx_resource(adapter, buffer_info); | 1374 | ixgb_unmap_and_free_tx_resource(adapter, buffer_info); |
1375 | } | 1375 | } |
diff --git a/drivers/net/ixgbe/Makefile b/drivers/net/ixgbe/Makefile index 21b41f42b61c..bfef0ebcba9a 100644 --- a/drivers/net/ixgbe/Makefile +++ b/drivers/net/ixgbe/Makefile | |||
@@ -1,7 +1,7 @@ | |||
1 | ################################################################################ | 1 | ################################################################################ |
2 | # | 2 | # |
3 | # Intel 10 Gigabit PCI Express Linux driver | 3 | # Intel 10 Gigabit PCI Express Linux driver |
4 | # Copyright(c) 1999 - 2009 Intel Corporation. | 4 | # Copyright(c) 1999 - 2010 Intel Corporation. |
5 | # | 5 | # |
6 | # This program is free software; you can redistribute it and/or modify it | 6 | # This program is free software; you can redistribute it and/or modify it |
7 | # under the terms and conditions of the GNU General Public License, | 7 | # under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe.h b/drivers/net/ixgbe/ixgbe.h index 8da8eb535084..303e7bd39b67 100644 --- a/drivers/net/ixgbe/ixgbe.h +++ b/drivers/net/ixgbe/ixgbe.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_82598.c b/drivers/net/ixgbe/ixgbe_82598.c index 204177d78cec..3103f4165311 100644 --- a/drivers/net/ixgbe/ixgbe_82598.c +++ b/drivers/net/ixgbe/ixgbe_82598.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_82599.c b/drivers/net/ixgbe/ixgbe_82599.c index 538340527aa6..b49bd6b9feb7 100644 --- a/drivers/net/ixgbe/ixgbe_82599.c +++ b/drivers/net/ixgbe/ixgbe_82599.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_common.c b/drivers/net/ixgbe/ixgbe_common.c index 688b8ca5da32..21f158f79dd0 100644 --- a/drivers/net/ixgbe/ixgbe_common.c +++ b/drivers/net/ixgbe/ixgbe_common.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_common.h b/drivers/net/ixgbe/ixgbe_common.h index 27f3214bed2e..dfff0ffaa502 100644 --- a/drivers/net/ixgbe/ixgbe_common.h +++ b/drivers/net/ixgbe/ixgbe_common.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_dcb.c b/drivers/net/ixgbe/ixgbe_dcb.c index a1562287342f..9aea4f04bbd2 100644 --- a/drivers/net/ixgbe/ixgbe_dcb.c +++ b/drivers/net/ixgbe/ixgbe_dcb.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_dcb.h b/drivers/net/ixgbe/ixgbe_dcb.h index 64a9fa15c059..5caafd4afbc3 100644 --- a/drivers/net/ixgbe/ixgbe_dcb.h +++ b/drivers/net/ixgbe/ixgbe_dcb.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_dcb_82598.c b/drivers/net/ixgbe/ixgbe_dcb_82598.c index f30263898ebc..f0e9279d4669 100644 --- a/drivers/net/ixgbe/ixgbe_dcb_82598.c +++ b/drivers/net/ixgbe/ixgbe_dcb_82598.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_dcb_82598.h b/drivers/net/ixgbe/ixgbe_dcb_82598.h index ebbe53c352a7..cc728fa092e2 100644 --- a/drivers/net/ixgbe/ixgbe_dcb_82598.h +++ b/drivers/net/ixgbe/ixgbe_dcb_82598.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_dcb_82599.c b/drivers/net/ixgbe/ixgbe_dcb_82599.c index ec8a252636d3..4f7a26ab411e 100644 --- a/drivers/net/ixgbe/ixgbe_dcb_82599.c +++ b/drivers/net/ixgbe/ixgbe_dcb_82599.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_dcb_82599.h b/drivers/net/ixgbe/ixgbe_dcb_82599.h index 9e5e2827e4af..0f3f791e1e1d 100644 --- a/drivers/net/ixgbe/ixgbe_dcb_82599.h +++ b/drivers/net/ixgbe/ixgbe_dcb_82599.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_dcb_nl.c b/drivers/net/ixgbe/ixgbe_dcb_nl.c index 3c7a79a7d7c6..56f37f66b696 100644 --- a/drivers/net/ixgbe/ixgbe_dcb_nl.c +++ b/drivers/net/ixgbe/ixgbe_dcb_nl.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_ethtool.c b/drivers/net/ixgbe/ixgbe_ethtool.c index 0bd49d3b9f65..d77961fc75f9 100644 --- a/drivers/net/ixgbe/ixgbe_ethtool.c +++ b/drivers/net/ixgbe/ixgbe_ethtool.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_fcoe.c b/drivers/net/ixgbe/ixgbe_fcoe.c index da32a108a7b4..e9a20c88c155 100644 --- a/drivers/net/ixgbe/ixgbe_fcoe.c +++ b/drivers/net/ixgbe/ixgbe_fcoe.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_fcoe.h b/drivers/net/ixgbe/ixgbe_fcoe.h index de8ff53187da..abf4b2b3f252 100644 --- a/drivers/net/ixgbe/ixgbe_fcoe.h +++ b/drivers/net/ixgbe/ixgbe_fcoe.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 2ad754c864cf..b5f64ad67975 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
@@ -52,7 +52,7 @@ static const char ixgbe_driver_string[] = | |||
52 | 52 | ||
53 | #define DRV_VERSION "2.0.44-k2" | 53 | #define DRV_VERSION "2.0.44-k2" |
54 | const char ixgbe_driver_version[] = DRV_VERSION; | 54 | const char ixgbe_driver_version[] = DRV_VERSION; |
55 | static char ixgbe_copyright[] = "Copyright (c) 1999-2009 Intel Corporation."; | 55 | static char ixgbe_copyright[] = "Copyright (c) 1999-2010 Intel Corporation."; |
56 | 56 | ||
57 | static const struct ixgbe_info *ixgbe_info_tbl[] = { | 57 | static const struct ixgbe_info *ixgbe_info_tbl[] = { |
58 | [board_82598] = &ixgbe_82598_info, | 58 | [board_82598] = &ixgbe_82598_info, |
@@ -4928,7 +4928,7 @@ static int ixgbe_tso(struct ixgbe_adapter *adapter, | |||
4928 | iph->daddr, 0, | 4928 | iph->daddr, 0, |
4929 | IPPROTO_TCP, | 4929 | IPPROTO_TCP, |
4930 | 0); | 4930 | 0); |
4931 | } else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) { | 4931 | } else if (skb_is_gso_v6(skb)) { |
4932 | ipv6_hdr(skb)->payload_len = 0; | 4932 | ipv6_hdr(skb)->payload_len = 0; |
4933 | tcp_hdr(skb)->check = | 4933 | tcp_hdr(skb)->check = |
4934 | ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, | 4934 | ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, |
@@ -5167,14 +5167,14 @@ dma_error: | |||
5167 | tx_buffer_info->dma = 0; | 5167 | tx_buffer_info->dma = 0; |
5168 | tx_buffer_info->time_stamp = 0; | 5168 | tx_buffer_info->time_stamp = 0; |
5169 | tx_buffer_info->next_to_watch = 0; | 5169 | tx_buffer_info->next_to_watch = 0; |
5170 | count--; | 5170 | if (count) |
5171 | count--; | ||
5171 | 5172 | ||
5172 | /* clear timestamp and dma mappings for remaining portion of packet */ | 5173 | /* clear timestamp and dma mappings for remaining portion of packet */ |
5173 | while (count >= 0) { | 5174 | while (count--) { |
5174 | count--; | 5175 | if (i==0) |
5175 | i--; | ||
5176 | if (i < 0) | ||
5177 | i += tx_ring->count; | 5176 | i += tx_ring->count; |
5177 | i--; | ||
5178 | tx_buffer_info = &tx_ring->tx_buffer_info[i]; | 5178 | tx_buffer_info = &tx_ring->tx_buffer_info[i]; |
5179 | ixgbe_unmap_and_free_tx_resource(adapter, tx_buffer_info); | 5179 | ixgbe_unmap_and_free_tx_resource(adapter, tx_buffer_info); |
5180 | } | 5180 | } |
@@ -5576,6 +5576,10 @@ static void ixgbe_netpoll(struct net_device *netdev) | |||
5576 | struct ixgbe_adapter *adapter = netdev_priv(netdev); | 5576 | struct ixgbe_adapter *adapter = netdev_priv(netdev); |
5577 | int i; | 5577 | int i; |
5578 | 5578 | ||
5579 | /* if interface is down do nothing */ | ||
5580 | if (test_bit(__IXGBE_DOWN, &adapter->state)) | ||
5581 | return; | ||
5582 | |||
5579 | adapter->flags |= IXGBE_FLAG_IN_NETPOLL; | 5583 | adapter->flags |= IXGBE_FLAG_IN_NETPOLL; |
5580 | if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED) { | 5584 | if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED) { |
5581 | int num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS; | 5585 | int num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS; |
diff --git a/drivers/net/ixgbe/ixgbe_phy.c b/drivers/net/ixgbe/ixgbe_phy.c index 9ecad17522c3..1c1efd386956 100644 --- a/drivers/net/ixgbe/ixgbe_phy.c +++ b/drivers/net/ixgbe/ixgbe_phy.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_phy.h b/drivers/net/ixgbe/ixgbe_phy.h index 9b700f5bf1ed..9cf5f3b4cc5d 100644 --- a/drivers/net/ixgbe/ixgbe_phy.h +++ b/drivers/net/ixgbe/ixgbe_phy.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/ixgbe/ixgbe_type.h b/drivers/net/ixgbe/ixgbe_type.h index 84650c6ebe03..9eafddfa1b97 100644 --- a/drivers/net/ixgbe/ixgbe_type.h +++ b/drivers/net/ixgbe/ixgbe_type.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
diff --git a/drivers/net/pcmcia/fmvj18x_cs.c b/drivers/net/pcmcia/fmvj18x_cs.c index 813aca3fc433..7b17404d0858 100644 --- a/drivers/net/pcmcia/fmvj18x_cs.c +++ b/drivers/net/pcmcia/fmvj18x_cs.c | |||
@@ -717,6 +717,7 @@ static struct pcmcia_device_id fmvj18x_ids[] = { | |||
717 | PCMCIA_PFC_DEVICE_PROD_ID12(0, "NEC", "PK-UG-J001" ,0x18df0ba0 ,0x831b1064), | 717 | PCMCIA_PFC_DEVICE_PROD_ID12(0, "NEC", "PK-UG-J001" ,0x18df0ba0 ,0x831b1064), |
718 | PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0105, 0x0d0a), | 718 | PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0105, 0x0d0a), |
719 | PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0105, 0x0e0a), | 719 | PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0105, 0x0e0a), |
720 | PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x0e01), | ||
720 | PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x0a05), | 721 | PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x0a05), |
721 | PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x1101), | 722 | PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x1101), |
722 | PCMCIA_DEVICE_NULL, | 723 | PCMCIA_DEVICE_NULL, |
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index b0e9f9c51721..0295097d6c44 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c | |||
@@ -410,7 +410,6 @@ EXPORT_SYMBOL(phy_start_aneg); | |||
410 | 410 | ||
411 | 411 | ||
412 | static void phy_change(struct work_struct *work); | 412 | static void phy_change(struct work_struct *work); |
413 | static void phy_state_machine(struct work_struct *work); | ||
414 | 413 | ||
415 | /** | 414 | /** |
416 | * phy_start_machine - start PHY state machine tracking | 415 | * phy_start_machine - start PHY state machine tracking |
@@ -430,7 +429,6 @@ void phy_start_machine(struct phy_device *phydev, | |||
430 | { | 429 | { |
431 | phydev->adjust_state = handler; | 430 | phydev->adjust_state = handler; |
432 | 431 | ||
433 | INIT_DELAYED_WORK(&phydev->state_queue, phy_state_machine); | ||
434 | schedule_delayed_work(&phydev->state_queue, HZ); | 432 | schedule_delayed_work(&phydev->state_queue, HZ); |
435 | } | 433 | } |
436 | 434 | ||
@@ -761,7 +759,7 @@ EXPORT_SYMBOL(phy_start); | |||
761 | * phy_state_machine - Handle the state machine | 759 | * phy_state_machine - Handle the state machine |
762 | * @work: work_struct that describes the work to be done | 760 | * @work: work_struct that describes the work to be done |
763 | */ | 761 | */ |
764 | static void phy_state_machine(struct work_struct *work) | 762 | void phy_state_machine(struct work_struct *work) |
765 | { | 763 | { |
766 | struct delayed_work *dwork = to_delayed_work(work); | 764 | struct delayed_work *dwork = to_delayed_work(work); |
767 | struct phy_device *phydev = | 765 | struct phy_device *phydev = |
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 8212b2b93422..adbc0fded130 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c | |||
@@ -177,6 +177,7 @@ struct phy_device* phy_device_create(struct mii_bus *bus, int addr, int phy_id) | |||
177 | dev->state = PHY_DOWN; | 177 | dev->state = PHY_DOWN; |
178 | 178 | ||
179 | mutex_init(&dev->lock); | 179 | mutex_init(&dev->lock); |
180 | INIT_DELAYED_WORK(&dev->state_queue, phy_state_machine); | ||
180 | 181 | ||
181 | return dev; | 182 | return dev; |
182 | } | 183 | } |
diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c index 707b391afa02..894a7c84faef 100644 --- a/drivers/net/qlge/qlge_main.c +++ b/drivers/net/qlge/qlge_main.c | |||
@@ -4119,7 +4119,7 @@ static int __devinit ql_init_device(struct pci_dev *pdev, | |||
4119 | err = pcie_set_readrq(pdev, 4096); | 4119 | err = pcie_set_readrq(pdev, 4096); |
4120 | if (err) { | 4120 | if (err) { |
4121 | dev_err(&pdev->dev, "Set readrq failed.\n"); | 4121 | dev_err(&pdev->dev, "Set readrq failed.\n"); |
4122 | goto err_out; | 4122 | goto err_out1; |
4123 | } | 4123 | } |
4124 | 4124 | ||
4125 | err = pci_request_regions(pdev, DRV_NAME); | 4125 | err = pci_request_regions(pdev, DRV_NAME); |
@@ -4140,7 +4140,7 @@ static int __devinit ql_init_device(struct pci_dev *pdev, | |||
4140 | 4140 | ||
4141 | if (err) { | 4141 | if (err) { |
4142 | dev_err(&pdev->dev, "No usable DMA configuration.\n"); | 4142 | dev_err(&pdev->dev, "No usable DMA configuration.\n"); |
4143 | goto err_out; | 4143 | goto err_out2; |
4144 | } | 4144 | } |
4145 | 4145 | ||
4146 | /* Set PCIe reset type for EEH to fundamental. */ | 4146 | /* Set PCIe reset type for EEH to fundamental. */ |
@@ -4152,7 +4152,7 @@ static int __devinit ql_init_device(struct pci_dev *pdev, | |||
4152 | if (!qdev->reg_base) { | 4152 | if (!qdev->reg_base) { |
4153 | dev_err(&pdev->dev, "Register mapping failed.\n"); | 4153 | dev_err(&pdev->dev, "Register mapping failed.\n"); |
4154 | err = -ENOMEM; | 4154 | err = -ENOMEM; |
4155 | goto err_out; | 4155 | goto err_out2; |
4156 | } | 4156 | } |
4157 | 4157 | ||
4158 | qdev->doorbell_area_size = pci_resource_len(pdev, 3); | 4158 | qdev->doorbell_area_size = pci_resource_len(pdev, 3); |
@@ -4162,14 +4162,14 @@ static int __devinit ql_init_device(struct pci_dev *pdev, | |||
4162 | if (!qdev->doorbell_area) { | 4162 | if (!qdev->doorbell_area) { |
4163 | dev_err(&pdev->dev, "Doorbell register mapping failed.\n"); | 4163 | dev_err(&pdev->dev, "Doorbell register mapping failed.\n"); |
4164 | err = -ENOMEM; | 4164 | err = -ENOMEM; |
4165 | goto err_out; | 4165 | goto err_out2; |
4166 | } | 4166 | } |
4167 | 4167 | ||
4168 | err = ql_get_board_info(qdev); | 4168 | err = ql_get_board_info(qdev); |
4169 | if (err) { | 4169 | if (err) { |
4170 | dev_err(&pdev->dev, "Register access failed.\n"); | 4170 | dev_err(&pdev->dev, "Register access failed.\n"); |
4171 | err = -EIO; | 4171 | err = -EIO; |
4172 | goto err_out; | 4172 | goto err_out2; |
4173 | } | 4173 | } |
4174 | qdev->msg_enable = netif_msg_init(debug, default_msg); | 4174 | qdev->msg_enable = netif_msg_init(debug, default_msg); |
4175 | spin_lock_init(&qdev->hw_lock); | 4175 | spin_lock_init(&qdev->hw_lock); |
@@ -4179,7 +4179,7 @@ static int __devinit ql_init_device(struct pci_dev *pdev, | |||
4179 | err = qdev->nic_ops->get_flash(qdev); | 4179 | err = qdev->nic_ops->get_flash(qdev); |
4180 | if (err) { | 4180 | if (err) { |
4181 | dev_err(&pdev->dev, "Invalid FLASH.\n"); | 4181 | dev_err(&pdev->dev, "Invalid FLASH.\n"); |
4182 | goto err_out; | 4182 | goto err_out2; |
4183 | } | 4183 | } |
4184 | 4184 | ||
4185 | memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len); | 4185 | memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len); |
@@ -4212,8 +4212,9 @@ static int __devinit ql_init_device(struct pci_dev *pdev, | |||
4212 | DRV_NAME, DRV_VERSION); | 4212 | DRV_NAME, DRV_VERSION); |
4213 | } | 4213 | } |
4214 | return 0; | 4214 | return 0; |
4215 | err_out: | 4215 | err_out2: |
4216 | ql_release_all(pdev); | 4216 | ql_release_all(pdev); |
4217 | err_out1: | ||
4217 | pci_disable_device(pdev); | 4218 | pci_disable_device(pdev); |
4218 | return err; | 4219 | return err; |
4219 | } | 4220 | } |
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c index cc4218667cba..3c4836d0898f 100644 --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c | |||
@@ -3421,7 +3421,7 @@ static int wait_for_cmd_complete(void __iomem *addr, u64 busy_bit, | |||
3421 | break; | 3421 | break; |
3422 | } | 3422 | } |
3423 | } else { | 3423 | } else { |
3424 | if (!(val64 & busy_bit)) { | 3424 | if (val64 & busy_bit) { |
3425 | ret = SUCCESS; | 3425 | ret = SUCCESS; |
3426 | break; | 3426 | break; |
3427 | } | 3427 | } |
diff --git a/drivers/net/sfc/mcdi.c b/drivers/net/sfc/mcdi.c index 683353b904c7..9f035b9f0350 100644 --- a/drivers/net/sfc/mcdi.c +++ b/drivers/net/sfc/mcdi.c | |||
@@ -142,8 +142,9 @@ static int efx_mcdi_poll(struct efx_nic *efx) | |||
142 | if (spins != 0) { | 142 | if (spins != 0) { |
143 | --spins; | 143 | --spins; |
144 | udelay(1); | 144 | udelay(1); |
145 | } else | 145 | } else { |
146 | schedule(); | 146 | schedule_timeout_uninterruptible(1); |
147 | } | ||
147 | 148 | ||
148 | time = get_seconds(); | 149 | time = get_seconds(); |
149 | 150 | ||
@@ -803,7 +804,7 @@ int efx_mcdi_nvram_read(struct efx_nic *efx, unsigned int type, | |||
803 | loff_t offset, u8 *buffer, size_t length) | 804 | loff_t offset, u8 *buffer, size_t length) |
804 | { | 805 | { |
805 | u8 inbuf[MC_CMD_NVRAM_READ_IN_LEN]; | 806 | u8 inbuf[MC_CMD_NVRAM_READ_IN_LEN]; |
806 | u8 outbuf[MC_CMD_NVRAM_READ_OUT_LEN(length)]; | 807 | u8 outbuf[MC_CMD_NVRAM_READ_OUT_LEN(EFX_MCDI_NVRAM_LEN_MAX)]; |
807 | size_t outlen; | 808 | size_t outlen; |
808 | int rc; | 809 | int rc; |
809 | 810 | ||
@@ -827,7 +828,7 @@ fail: | |||
827 | int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, | 828 | int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, |
828 | loff_t offset, const u8 *buffer, size_t length) | 829 | loff_t offset, const u8 *buffer, size_t length) |
829 | { | 830 | { |
830 | u8 inbuf[MC_CMD_NVRAM_WRITE_IN_LEN(length)]; | 831 | u8 inbuf[MC_CMD_NVRAM_WRITE_IN_LEN(EFX_MCDI_NVRAM_LEN_MAX)]; |
831 | int rc; | 832 | int rc; |
832 | 833 | ||
833 | MCDI_SET_DWORD(inbuf, NVRAM_WRITE_IN_TYPE, type); | 834 | MCDI_SET_DWORD(inbuf, NVRAM_WRITE_IN_TYPE, type); |
@@ -837,7 +838,8 @@ int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, | |||
837 | 838 | ||
838 | BUILD_BUG_ON(MC_CMD_NVRAM_WRITE_OUT_LEN != 0); | 839 | BUILD_BUG_ON(MC_CMD_NVRAM_WRITE_OUT_LEN != 0); |
839 | 840 | ||
840 | rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_WRITE, inbuf, sizeof(inbuf), | 841 | rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_WRITE, inbuf, |
842 | ALIGN(MC_CMD_NVRAM_WRITE_IN_LEN(length), 4), | ||
841 | NULL, 0, NULL); | 843 | NULL, 0, NULL); |
842 | if (rc) | 844 | if (rc) |
843 | goto fail; | 845 | goto fail; |
diff --git a/drivers/net/sfc/mcdi.h b/drivers/net/sfc/mcdi.h index de916728c2e3..10ce98f4c0fb 100644 --- a/drivers/net/sfc/mcdi.h +++ b/drivers/net/sfc/mcdi.h | |||
@@ -111,6 +111,7 @@ extern int efx_mcdi_nvram_read(struct efx_nic *efx, unsigned int type, | |||
111 | extern int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, | 111 | extern int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, |
112 | loff_t offset, const u8 *buffer, | 112 | loff_t offset, const u8 *buffer, |
113 | size_t length); | 113 | size_t length); |
114 | #define EFX_MCDI_NVRAM_LEN_MAX 128 | ||
114 | extern int efx_mcdi_nvram_erase(struct efx_nic *efx, unsigned int type, | 115 | extern int efx_mcdi_nvram_erase(struct efx_nic *efx, unsigned int type, |
115 | loff_t offset, size_t length); | 116 | loff_t offset, size_t length); |
116 | extern int efx_mcdi_nvram_update_finish(struct efx_nic *efx, | 117 | extern int efx_mcdi_nvram_update_finish(struct efx_nic *efx, |
diff --git a/drivers/net/sfc/mcdi_pcol.h b/drivers/net/sfc/mcdi_pcol.h index 2a85360a46f0..73e71f420624 100644 --- a/drivers/net/sfc/mcdi_pcol.h +++ b/drivers/net/sfc/mcdi_pcol.h | |||
@@ -1090,8 +1090,10 @@ | |||
1090 | #define MC_CMD_MAC_RX_LANES01_DISP_ERR 57 | 1090 | #define MC_CMD_MAC_RX_LANES01_DISP_ERR 57 |
1091 | #define MC_CMD_MAC_RX_LANES23_DISP_ERR 58 | 1091 | #define MC_CMD_MAC_RX_LANES23_DISP_ERR 58 |
1092 | #define MC_CMD_MAC_RX_MATCH_FAULT 59 | 1092 | #define MC_CMD_MAC_RX_MATCH_FAULT 59 |
1093 | #define MC_CMD_GMAC_DMABUF_START 64 | ||
1094 | #define MC_CMD_GMAC_DMABUF_END 95 | ||
1093 | /* Insert new members here. */ | 1095 | /* Insert new members here. */ |
1094 | #define MC_CMD_MAC_GENERATION_END 60 | 1096 | #define MC_CMD_MAC_GENERATION_END 96 |
1095 | #define MC_CMD_MAC_NSTATS (MC_CMD_MAC_GENERATION_END+1) | 1097 | #define MC_CMD_MAC_NSTATS (MC_CMD_MAC_GENERATION_END+1) |
1096 | 1098 | ||
1097 | /* MC_CMD_MAC_STATS: | 1099 | /* MC_CMD_MAC_STATS: |
diff --git a/drivers/net/sfc/mtd.c b/drivers/net/sfc/mtd.c index 3a464529a46b..407bbaddfea6 100644 --- a/drivers/net/sfc/mtd.c +++ b/drivers/net/sfc/mtd.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include "mcdi_pcol.h" | 23 | #include "mcdi_pcol.h" |
24 | 24 | ||
25 | #define EFX_SPI_VERIFY_BUF_LEN 16 | 25 | #define EFX_SPI_VERIFY_BUF_LEN 16 |
26 | #define EFX_MCDI_CHUNK_LEN 128 | ||
27 | 26 | ||
28 | struct efx_mtd_partition { | 27 | struct efx_mtd_partition { |
29 | struct mtd_info mtd; | 28 | struct mtd_info mtd; |
@@ -428,7 +427,7 @@ static int siena_mtd_read(struct mtd_info *mtd, loff_t start, | |||
428 | int rc = 0; | 427 | int rc = 0; |
429 | 428 | ||
430 | while (offset < end) { | 429 | while (offset < end) { |
431 | chunk = min_t(size_t, end - offset, EFX_MCDI_CHUNK_LEN); | 430 | chunk = min_t(size_t, end - offset, EFX_MCDI_NVRAM_LEN_MAX); |
432 | rc = efx_mcdi_nvram_read(efx, part->mcdi.nvram_type, offset, | 431 | rc = efx_mcdi_nvram_read(efx, part->mcdi.nvram_type, offset, |
433 | buffer, chunk); | 432 | buffer, chunk); |
434 | if (rc) | 433 | if (rc) |
@@ -491,7 +490,7 @@ static int siena_mtd_write(struct mtd_info *mtd, loff_t start, | |||
491 | } | 490 | } |
492 | 491 | ||
493 | while (offset < end) { | 492 | while (offset < end) { |
494 | chunk = min_t(size_t, end - offset, EFX_MCDI_CHUNK_LEN); | 493 | chunk = min_t(size_t, end - offset, EFX_MCDI_NVRAM_LEN_MAX); |
495 | rc = efx_mcdi_nvram_write(efx, part->mcdi.nvram_type, offset, | 494 | rc = efx_mcdi_nvram_write(efx, part->mcdi.nvram_type, offset, |
496 | buffer, chunk); | 495 | buffer, chunk); |
497 | if (rc) | 496 | if (rc) |
diff --git a/drivers/net/sfc/qt202x_phy.c b/drivers/net/sfc/qt202x_phy.c index ff8f0a417fa3..e0d13a451019 100644 --- a/drivers/net/sfc/qt202x_phy.c +++ b/drivers/net/sfc/qt202x_phy.c | |||
@@ -318,12 +318,6 @@ static int qt202x_reset_phy(struct efx_nic *efx) | |||
318 | /* Wait 250ms for the PHY to complete bootup */ | 318 | /* Wait 250ms for the PHY to complete bootup */ |
319 | msleep(250); | 319 | msleep(250); |
320 | 320 | ||
321 | /* Check that all the MMDs we expect are present and responding. We | ||
322 | * expect faults on some if the link is down, but not on the PHY XS */ | ||
323 | rc = efx_mdio_check_mmds(efx, QT202X_REQUIRED_DEVS, MDIO_DEVS_PHYXS); | ||
324 | if (rc < 0) | ||
325 | goto fail; | ||
326 | |||
327 | falcon_board(efx)->type->init_phy(efx); | 321 | falcon_board(efx)->type->init_phy(efx); |
328 | 322 | ||
329 | return rc; | 323 | return rc; |
diff --git a/drivers/net/sfc/selftest.c b/drivers/net/sfc/selftest.c index af3933579790..250c8827b842 100644 --- a/drivers/net/sfc/selftest.c +++ b/drivers/net/sfc/selftest.c | |||
@@ -79,10 +79,14 @@ struct efx_loopback_state { | |||
79 | static int efx_test_mdio(struct efx_nic *efx, struct efx_self_tests *tests) | 79 | static int efx_test_mdio(struct efx_nic *efx, struct efx_self_tests *tests) |
80 | { | 80 | { |
81 | int rc = 0; | 81 | int rc = 0; |
82 | int devad = __ffs(efx->mdio.mmds); | 82 | int devad; |
83 | u16 physid1, physid2; | 83 | u16 physid1, physid2; |
84 | 84 | ||
85 | if (efx->phy_type == PHY_TYPE_NONE) | 85 | if (efx->mdio.mode_support & MDIO_SUPPORTS_C45) |
86 | devad = __ffs(efx->mdio.mmds); | ||
87 | else if (efx->mdio.mode_support & MDIO_SUPPORTS_C22) | ||
88 | devad = MDIO_DEVAD_NONE; | ||
89 | else | ||
86 | return 0; | 90 | return 0; |
87 | 91 | ||
88 | mutex_lock(&efx->mac_lock); | 92 | mutex_lock(&efx->mac_lock); |
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index 37f486b65f63..d760650c5c04 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c | |||
@@ -644,6 +644,7 @@ static void sky2_phy_power_up(struct sky2_hw *hw, unsigned port) | |||
644 | { | 644 | { |
645 | u32 reg1; | 645 | u32 reg1; |
646 | 646 | ||
647 | sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON); | ||
647 | reg1 = sky2_pci_read32(hw, PCI_DEV_REG1); | 648 | reg1 = sky2_pci_read32(hw, PCI_DEV_REG1); |
648 | reg1 &= ~phy_power[port]; | 649 | reg1 &= ~phy_power[port]; |
649 | 650 | ||
@@ -651,6 +652,7 @@ static void sky2_phy_power_up(struct sky2_hw *hw, unsigned port) | |||
651 | reg1 |= coma_mode[port]; | 652 | reg1 |= coma_mode[port]; |
652 | 653 | ||
653 | sky2_pci_write32(hw, PCI_DEV_REG1, reg1); | 654 | sky2_pci_write32(hw, PCI_DEV_REG1, reg1); |
655 | sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF); | ||
654 | sky2_pci_read32(hw, PCI_DEV_REG1); | 656 | sky2_pci_read32(hw, PCI_DEV_REG1); |
655 | 657 | ||
656 | if (hw->chip_id == CHIP_ID_YUKON_FE) | 658 | if (hw->chip_id == CHIP_ID_YUKON_FE) |
@@ -707,9 +709,11 @@ static void sky2_phy_power_down(struct sky2_hw *hw, unsigned port) | |||
707 | gm_phy_write(hw, port, PHY_MARV_CTRL, PHY_CT_PDOWN); | 709 | gm_phy_write(hw, port, PHY_MARV_CTRL, PHY_CT_PDOWN); |
708 | } | 710 | } |
709 | 711 | ||
712 | sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON); | ||
710 | reg1 = sky2_pci_read32(hw, PCI_DEV_REG1); | 713 | reg1 = sky2_pci_read32(hw, PCI_DEV_REG1); |
711 | reg1 |= phy_power[port]; /* set PHY to PowerDown/COMA Mode */ | 714 | reg1 |= phy_power[port]; /* set PHY to PowerDown/COMA Mode */ |
712 | sky2_pci_write32(hw, PCI_DEV_REG1, reg1); | 715 | sky2_pci_write32(hw, PCI_DEV_REG1, reg1); |
716 | sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF); | ||
713 | } | 717 | } |
714 | 718 | ||
715 | /* Force a renegotiation */ | 719 | /* Force a renegotiation */ |
@@ -2149,7 +2153,9 @@ static void sky2_qlink_intr(struct sky2_hw *hw) | |||
2149 | 2153 | ||
2150 | /* reset PHY Link Detect */ | 2154 | /* reset PHY Link Detect */ |
2151 | phy = sky2_pci_read16(hw, PSM_CONFIG_REG4); | 2155 | phy = sky2_pci_read16(hw, PSM_CONFIG_REG4); |
2156 | sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON); | ||
2152 | sky2_pci_write16(hw, PSM_CONFIG_REG4, phy | 1); | 2157 | sky2_pci_write16(hw, PSM_CONFIG_REG4, phy | 1); |
2158 | sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF); | ||
2153 | 2159 | ||
2154 | sky2_link_up(sky2); | 2160 | sky2_link_up(sky2); |
2155 | } | 2161 | } |
@@ -2640,6 +2646,7 @@ static void sky2_hw_intr(struct sky2_hw *hw) | |||
2640 | if (status & (Y2_IS_MST_ERR | Y2_IS_IRQ_STAT)) { | 2646 | if (status & (Y2_IS_MST_ERR | Y2_IS_IRQ_STAT)) { |
2641 | u16 pci_err; | 2647 | u16 pci_err; |
2642 | 2648 | ||
2649 | sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON); | ||
2643 | pci_err = sky2_pci_read16(hw, PCI_STATUS); | 2650 | pci_err = sky2_pci_read16(hw, PCI_STATUS); |
2644 | if (net_ratelimit()) | 2651 | if (net_ratelimit()) |
2645 | dev_err(&pdev->dev, "PCI hardware error (0x%x)\n", | 2652 | dev_err(&pdev->dev, "PCI hardware error (0x%x)\n", |
@@ -2647,12 +2654,14 @@ static void sky2_hw_intr(struct sky2_hw *hw) | |||
2647 | 2654 | ||
2648 | sky2_pci_write16(hw, PCI_STATUS, | 2655 | sky2_pci_write16(hw, PCI_STATUS, |
2649 | pci_err | PCI_STATUS_ERROR_BITS); | 2656 | pci_err | PCI_STATUS_ERROR_BITS); |
2657 | sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF); | ||
2650 | } | 2658 | } |
2651 | 2659 | ||
2652 | if (status & Y2_IS_PCI_EXP) { | 2660 | if (status & Y2_IS_PCI_EXP) { |
2653 | /* PCI-Express uncorrectable Error occurred */ | 2661 | /* PCI-Express uncorrectable Error occurred */ |
2654 | u32 err; | 2662 | u32 err; |
2655 | 2663 | ||
2664 | sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON); | ||
2656 | err = sky2_read32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS); | 2665 | err = sky2_read32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS); |
2657 | sky2_write32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS, | 2666 | sky2_write32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS, |
2658 | 0xfffffffful); | 2667 | 0xfffffffful); |
@@ -2660,6 +2669,7 @@ static void sky2_hw_intr(struct sky2_hw *hw) | |||
2660 | dev_err(&pdev->dev, "PCI Express error (0x%x)\n", err); | 2669 | dev_err(&pdev->dev, "PCI Express error (0x%x)\n", err); |
2661 | 2670 | ||
2662 | sky2_read32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS); | 2671 | sky2_read32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS); |
2672 | sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF); | ||
2663 | } | 2673 | } |
2664 | 2674 | ||
2665 | if (status & Y2_HWE_L1_MASK) | 2675 | if (status & Y2_HWE_L1_MASK) |
@@ -3038,6 +3048,7 @@ static void sky2_reset(struct sky2_hw *hw) | |||
3038 | } | 3048 | } |
3039 | 3049 | ||
3040 | sky2_power_on(hw); | 3050 | sky2_power_on(hw); |
3051 | sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF); | ||
3041 | 3052 | ||
3042 | for (i = 0; i < hw->ports; i++) { | 3053 | for (i = 0; i < hw->ports; i++) { |
3043 | sky2_write8(hw, SK_REG(i, GMAC_LINK_CTRL), GMLC_RST_SET); | 3054 | sky2_write8(hw, SK_REG(i, GMAC_LINK_CTRL), GMLC_RST_SET); |
@@ -3074,6 +3085,7 @@ static void sky2_reset(struct sky2_hw *hw) | |||
3074 | reg <<= PSM_CONFIG_REG4_TIMER_PHY_LINK_DETECT_BASE; | 3085 | reg <<= PSM_CONFIG_REG4_TIMER_PHY_LINK_DETECT_BASE; |
3075 | 3086 | ||
3076 | /* reset PHY Link Detect */ | 3087 | /* reset PHY Link Detect */ |
3088 | sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON); | ||
3077 | sky2_pci_write16(hw, PSM_CONFIG_REG4, | 3089 | sky2_pci_write16(hw, PSM_CONFIG_REG4, |
3078 | reg | PSM_CONFIG_REG4_RST_PHY_LINK_DETECT); | 3090 | reg | PSM_CONFIG_REG4_RST_PHY_LINK_DETECT); |
3079 | sky2_pci_write16(hw, PSM_CONFIG_REG4, reg); | 3091 | sky2_pci_write16(hw, PSM_CONFIG_REG4, reg); |
@@ -3091,6 +3103,7 @@ static void sky2_reset(struct sky2_hw *hw) | |||
3091 | /* restore the PCIe Link Control register */ | 3103 | /* restore the PCIe Link Control register */ |
3092 | sky2_pci_write16(hw, cap + PCI_EXP_LNKCTL, reg); | 3104 | sky2_pci_write16(hw, cap + PCI_EXP_LNKCTL, reg); |
3093 | } | 3105 | } |
3106 | sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF); | ||
3094 | 3107 | ||
3095 | /* re-enable PEX PM in PEX PHY debug reg. 8 (clear bit 12) */ | 3108 | /* re-enable PEX PM in PEX PHY debug reg. 8 (clear bit 12) */ |
3096 | sky2_write32(hw, Y2_PEX_PHY_DATA, PEX_DB_ACCESS | (0x08UL << 16)); | 3109 | sky2_write32(hw, Y2_PEX_PHY_DATA, PEX_DB_ACCESS | (0x08UL << 16)); |
@@ -3228,6 +3241,27 @@ static inline u8 sky2_wol_supported(const struct sky2_hw *hw) | |||
3228 | return sky2_is_copper(hw) ? (WAKE_PHY | WAKE_MAGIC) : 0; | 3241 | return sky2_is_copper(hw) ? (WAKE_PHY | WAKE_MAGIC) : 0; |
3229 | } | 3242 | } |
3230 | 3243 | ||
3244 | static void sky2_hw_set_wol(struct sky2_hw *hw) | ||
3245 | { | ||
3246 | int wol = 0; | ||
3247 | int i; | ||
3248 | |||
3249 | for (i = 0; i < hw->ports; i++) { | ||
3250 | struct net_device *dev = hw->dev[i]; | ||
3251 | struct sky2_port *sky2 = netdev_priv(dev); | ||
3252 | |||
3253 | if (sky2->wol) | ||
3254 | wol = 1; | ||
3255 | } | ||
3256 | |||
3257 | if (hw->chip_id == CHIP_ID_YUKON_EC_U || | ||
3258 | hw->chip_id == CHIP_ID_YUKON_EX || | ||
3259 | hw->chip_id == CHIP_ID_YUKON_FE_P) | ||
3260 | sky2_write32(hw, B0_CTST, wol ? Y2_HW_WOL_ON : Y2_HW_WOL_OFF); | ||
3261 | |||
3262 | device_set_wakeup_enable(&hw->pdev->dev, wol); | ||
3263 | } | ||
3264 | |||
3231 | static void sky2_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) | 3265 | static void sky2_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) |
3232 | { | 3266 | { |
3233 | const struct sky2_port *sky2 = netdev_priv(dev); | 3267 | const struct sky2_port *sky2 = netdev_priv(dev); |
@@ -3247,13 +3281,7 @@ static int sky2_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) | |||
3247 | 3281 | ||
3248 | sky2->wol = wol->wolopts; | 3282 | sky2->wol = wol->wolopts; |
3249 | 3283 | ||
3250 | if (hw->chip_id == CHIP_ID_YUKON_EC_U || | 3284 | sky2_hw_set_wol(hw); |
3251 | hw->chip_id == CHIP_ID_YUKON_EX || | ||
3252 | hw->chip_id == CHIP_ID_YUKON_FE_P) | ||
3253 | sky2_write32(hw, B0_CTST, sky2->wol | ||
3254 | ? Y2_HW_WOL_ON : Y2_HW_WOL_OFF); | ||
3255 | |||
3256 | device_set_wakeup_enable(&hw->pdev->dev, sky2->wol); | ||
3257 | 3285 | ||
3258 | if (!netif_running(dev)) | 3286 | if (!netif_running(dev)) |
3259 | sky2_wol_init(sky2); | 3287 | sky2_wol_init(sky2); |
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 3a74d2168598..7f82b0238e08 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * Copyright (C) 2001, 2002, 2003, 2004 David S. Miller (davem@redhat.com) | 4 | * Copyright (C) 2001, 2002, 2003, 2004 David S. Miller (davem@redhat.com) |
5 | * Copyright (C) 2001, 2002, 2003 Jeff Garzik (jgarzik@pobox.com) | 5 | * Copyright (C) 2001, 2002, 2003 Jeff Garzik (jgarzik@pobox.com) |
6 | * Copyright (C) 2004 Sun Microsystems Inc. | 6 | * Copyright (C) 2004 Sun Microsystems Inc. |
7 | * Copyright (C) 2005-2009 Broadcom Corporation. | 7 | * Copyright (C) 2005-2010 Broadcom Corporation. |
8 | * | 8 | * |
9 | * Firmware is: | 9 | * Firmware is: |
10 | * Derived from proprietary unpublished source code, | 10 | * Derived from proprietary unpublished source code, |
@@ -68,8 +68,8 @@ | |||
68 | 68 | ||
69 | #define DRV_MODULE_NAME "tg3" | 69 | #define DRV_MODULE_NAME "tg3" |
70 | #define PFX DRV_MODULE_NAME ": " | 70 | #define PFX DRV_MODULE_NAME ": " |
71 | #define DRV_MODULE_VERSION "3.105" | 71 | #define DRV_MODULE_VERSION "3.106" |
72 | #define DRV_MODULE_RELDATE "December 2, 2009" | 72 | #define DRV_MODULE_RELDATE "January 12, 2010" |
73 | 73 | ||
74 | #define TG3_DEF_MAC_MODE 0 | 74 | #define TG3_DEF_MAC_MODE 0 |
75 | #define TG3_DEF_RX_MODE 0 | 75 | #define TG3_DEF_RX_MODE 0 |
@@ -1037,7 +1037,11 @@ static void tg3_mdio_start(struct tg3 *tp) | |||
1037 | else | 1037 | else |
1038 | tp->phy_addr = 1; | 1038 | tp->phy_addr = 1; |
1039 | 1039 | ||
1040 | is_serdes = tr32(SG_DIG_STATUS) & SG_DIG_IS_SERDES; | 1040 | if (tp->pci_chip_rev_id != CHIPREV_ID_5717_A0) |
1041 | is_serdes = tr32(SG_DIG_STATUS) & SG_DIG_IS_SERDES; | ||
1042 | else | ||
1043 | is_serdes = tr32(TG3_CPMU_PHY_STRAP) & | ||
1044 | TG3_CPMU_PHY_STRAP_IS_SERDES; | ||
1041 | if (is_serdes) | 1045 | if (is_serdes) |
1042 | tp->phy_addr += 7; | 1046 | tp->phy_addr += 7; |
1043 | } else | 1047 | } else |
@@ -4693,8 +4697,9 @@ next_pkt: | |||
4693 | (*post_ptr)++; | 4697 | (*post_ptr)++; |
4694 | 4698 | ||
4695 | if (unlikely(rx_std_posted >= tp->rx_std_max_post)) { | 4699 | if (unlikely(rx_std_posted >= tp->rx_std_max_post)) { |
4696 | u32 idx = *post_ptr % TG3_RX_RING_SIZE; | 4700 | tpr->rx_std_prod_idx = std_prod_idx % TG3_RX_RING_SIZE; |
4697 | tw32_rx_mbox(TG3_RX_STD_PROD_IDX_REG, idx); | 4701 | tw32_rx_mbox(TG3_RX_STD_PROD_IDX_REG, |
4702 | tpr->rx_std_prod_idx); | ||
4698 | work_mask &= ~RXD_OPAQUE_RING_STD; | 4703 | work_mask &= ~RXD_OPAQUE_RING_STD; |
4699 | rx_std_posted = 0; | 4704 | rx_std_posted = 0; |
4700 | } | 4705 | } |
@@ -7742,7 +7747,7 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy) | |||
7742 | ((u64) tpr->rx_std_mapping >> 32)); | 7747 | ((u64) tpr->rx_std_mapping >> 32)); |
7743 | tw32(RCVDBDI_STD_BD + TG3_BDINFO_HOST_ADDR + TG3_64BIT_REG_LOW, | 7748 | tw32(RCVDBDI_STD_BD + TG3_BDINFO_HOST_ADDR + TG3_64BIT_REG_LOW, |
7744 | ((u64) tpr->rx_std_mapping & 0xffffffff)); | 7749 | ((u64) tpr->rx_std_mapping & 0xffffffff)); |
7745 | if (!(tp->tg3_flags3 & TG3_FLG3_5755_PLUS)) | 7750 | if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5717) |
7746 | tw32(RCVDBDI_STD_BD + TG3_BDINFO_NIC_ADDR, | 7751 | tw32(RCVDBDI_STD_BD + TG3_BDINFO_NIC_ADDR, |
7747 | NIC_SRAM_RX_BUFFER_DESC); | 7752 | NIC_SRAM_RX_BUFFER_DESC); |
7748 | 7753 | ||
@@ -12122,7 +12127,8 @@ static void __devinit tg3_get_eeprom_hw_cfg(struct tg3 *tp) | |||
12122 | 12127 | ||
12123 | tp->phy_id = eeprom_phy_id; | 12128 | tp->phy_id = eeprom_phy_id; |
12124 | if (eeprom_phy_serdes) { | 12129 | if (eeprom_phy_serdes) { |
12125 | if (tp->tg3_flags2 & TG3_FLG2_5780_CLASS) | 12130 | if ((tp->tg3_flags2 & TG3_FLG2_5780_CLASS) || |
12131 | GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717) | ||
12126 | tp->tg3_flags2 |= TG3_FLG2_MII_SERDES; | 12132 | tp->tg3_flags2 |= TG3_FLG2_MII_SERDES; |
12127 | else | 12133 | else |
12128 | tp->tg3_flags2 |= TG3_FLG2_PHY_SERDES; | 12134 | tp->tg3_flags2 |= TG3_FLG2_PHY_SERDES; |
@@ -13384,6 +13390,11 @@ static int __devinit tg3_get_invariants(struct tg3 *tp) | |||
13384 | if (err) | 13390 | if (err) |
13385 | return err; | 13391 | return err; |
13386 | 13392 | ||
13393 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 && | ||
13394 | (tp->pci_chip_rev_id != CHIPREV_ID_5717_A0 || | ||
13395 | (tp->tg3_flags2 & TG3_FLG2_MII_SERDES))) | ||
13396 | return -ENOTSUPP; | ||
13397 | |||
13387 | /* Initialize data/descriptor byte/word swapping. */ | 13398 | /* Initialize data/descriptor byte/word swapping. */ |
13388 | val = tr32(GRC_MODE); | 13399 | val = tr32(GRC_MODE); |
13389 | val &= GRC_MODE_HOST_STACKUP; | 13400 | val &= GRC_MODE_HOST_STACKUP; |
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h index cd30889650f8..8a167912902b 100644 --- a/drivers/net/tg3.h +++ b/drivers/net/tg3.h | |||
@@ -4,6 +4,7 @@ | |||
4 | * Copyright (C) 2001, 2002, 2003, 2004 David S. Miller (davem@redhat.com) | 4 | * Copyright (C) 2001, 2002, 2003, 2004 David S. Miller (davem@redhat.com) |
5 | * Copyright (C) 2001 Jeff Garzik (jgarzik@pobox.com) | 5 | * Copyright (C) 2001 Jeff Garzik (jgarzik@pobox.com) |
6 | * Copyright (C) 2004 Sun Microsystems Inc. | 6 | * Copyright (C) 2004 Sun Microsystems Inc. |
7 | * Copyright (C) 2007-2010 Broadcom Corporation. | ||
7 | */ | 8 | */ |
8 | 9 | ||
9 | #ifndef _T3_H | 10 | #ifndef _T3_H |
@@ -1054,6 +1055,8 @@ | |||
1054 | #define CPMU_MUTEX_REQ_DRIVER 0x00001000 | 1055 | #define CPMU_MUTEX_REQ_DRIVER 0x00001000 |
1055 | #define TG3_CPMU_MUTEX_GNT 0x00003660 | 1056 | #define TG3_CPMU_MUTEX_GNT 0x00003660 |
1056 | #define CPMU_MUTEX_GNT_DRIVER 0x00001000 | 1057 | #define CPMU_MUTEX_GNT_DRIVER 0x00001000 |
1058 | #define TG3_CPMU_PHY_STRAP 0x00003664 | ||
1059 | #define TG3_CPMU_PHY_STRAP_IS_SERDES 0x00000020 | ||
1057 | /* 0x3664 --> 0x3800 unused */ | 1060 | /* 0x3664 --> 0x3800 unused */ |
1058 | 1061 | ||
1059 | /* Mbuf cluster free registers */ | 1062 | /* Mbuf cluster free registers */ |
diff --git a/drivers/net/tulip/tulip_core.c b/drivers/net/tulip/tulip_core.c index 595777dcadb1..20696b5d60a5 100644 --- a/drivers/net/tulip/tulip_core.c +++ b/drivers/net/tulip/tulip_core.c | |||
@@ -249,6 +249,7 @@ static struct pci_device_id tulip_pci_tbl[] = { | |||
249 | { 0x17B3, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, | 249 | { 0x17B3, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, |
250 | { 0x10b7, 0x9300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* 3Com 3CSOHO100B-TX */ | 250 | { 0x10b7, 0x9300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* 3Com 3CSOHO100B-TX */ |
251 | { 0x14ea, 0xab08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* Planex FNW-3602-TX */ | 251 | { 0x14ea, 0xab08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* Planex FNW-3602-TX */ |
252 | { 0x1414, 0x0001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* Microsoft MN-120 */ | ||
252 | { 0x1414, 0x0002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, | 253 | { 0x1414, 0x0002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, |
253 | { } /* terminate list */ | 254 | { } /* terminate list */ |
254 | }; | 255 | }; |
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c index 96bdc0b43889..eb8fe7e16c6c 100644 --- a/drivers/net/ucc_geth.c +++ b/drivers/net/ucc_geth.c | |||
@@ -3279,13 +3279,12 @@ static int ucc_geth_tx(struct net_device *dev, u8 txQ) | |||
3279 | /* Handle the transmitted buffer and release */ | 3279 | /* Handle the transmitted buffer and release */ |
3280 | /* the BD to be used with the current frame */ | 3280 | /* the BD to be used with the current frame */ |
3281 | 3281 | ||
3282 | if (bd == ugeth->txBd[txQ]) /* queue empty? */ | 3282 | skb = ugeth->tx_skbuff[txQ][ugeth->skb_dirtytx[txQ]]; |
3283 | if (!skb) | ||
3283 | break; | 3284 | break; |
3284 | 3285 | ||
3285 | dev->stats.tx_packets++; | 3286 | dev->stats.tx_packets++; |
3286 | 3287 | ||
3287 | skb = ugeth->tx_skbuff[txQ][ugeth->skb_dirtytx[txQ]]; | ||
3288 | |||
3289 | if (skb_queue_len(&ugeth->rx_recycle) < RX_BD_RING_LEN && | 3288 | if (skb_queue_len(&ugeth->rx_recycle) < RX_BD_RING_LEN && |
3290 | skb_recycle_check(skb, | 3289 | skb_recycle_check(skb, |
3291 | ugeth->ug_info->uf_info.max_rx_buf_length + | 3290 | ugeth->ug_info->uf_info.max_rx_buf_length + |
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index c708ecc3cb2e..9ead30bd00c4 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c | |||
@@ -395,8 +395,7 @@ static void refill_work(struct work_struct *work) | |||
395 | 395 | ||
396 | vi = container_of(work, struct virtnet_info, refill.work); | 396 | vi = container_of(work, struct virtnet_info, refill.work); |
397 | napi_disable(&vi->napi); | 397 | napi_disable(&vi->napi); |
398 | try_fill_recv(vi, GFP_KERNEL); | 398 | still_empty = !try_fill_recv(vi, GFP_KERNEL); |
399 | still_empty = (vi->num == 0); | ||
400 | napi_enable(&vi->napi); | 399 | napi_enable(&vi->napi); |
401 | 400 | ||
402 | /* In theory, this can happen: if we don't get any buffers in | 401 | /* In theory, this can happen: if we don't get any buffers in |
diff --git a/drivers/net/wimax/i2400m/i2400m-usb.h b/drivers/net/wimax/i2400m/i2400m-usb.h index 5cc0f279417e..2d7c96d7e865 100644 --- a/drivers/net/wimax/i2400m/i2400m-usb.h +++ b/drivers/net/wimax/i2400m/i2400m-usb.h | |||
@@ -151,6 +151,7 @@ enum { | |||
151 | 151 | ||
152 | /* Device IDs */ | 152 | /* Device IDs */ |
153 | USB_DEVICE_ID_I6050 = 0x0186, | 153 | USB_DEVICE_ID_I6050 = 0x0186, |
154 | USB_DEVICE_ID_I6050_2 = 0x0188, | ||
154 | }; | 155 | }; |
155 | 156 | ||
156 | 157 | ||
@@ -234,6 +235,7 @@ struct i2400mu { | |||
234 | u8 rx_size_auto_shrink; | 235 | u8 rx_size_auto_shrink; |
235 | 236 | ||
236 | struct dentry *debugfs_dentry; | 237 | struct dentry *debugfs_dentry; |
238 | unsigned i6050:1; /* 1 if this is a 6050 based SKU */ | ||
237 | }; | 239 | }; |
238 | 240 | ||
239 | 241 | ||
diff --git a/drivers/net/wimax/i2400m/usb.c b/drivers/net/wimax/i2400m/usb.c index 3b48681f8a0d..98f4f8c5fb68 100644 --- a/drivers/net/wimax/i2400m/usb.c +++ b/drivers/net/wimax/i2400m/usb.c | |||
@@ -478,7 +478,16 @@ int i2400mu_probe(struct usb_interface *iface, | |||
478 | i2400m->bus_bm_wait_for_ack = i2400mu_bus_bm_wait_for_ack; | 478 | i2400m->bus_bm_wait_for_ack = i2400mu_bus_bm_wait_for_ack; |
479 | i2400m->bus_bm_mac_addr_impaired = 0; | 479 | i2400m->bus_bm_mac_addr_impaired = 0; |
480 | 480 | ||
481 | if (id->idProduct == USB_DEVICE_ID_I6050) { | 481 | switch (id->idProduct) { |
482 | case USB_DEVICE_ID_I6050: | ||
483 | case USB_DEVICE_ID_I6050_2: | ||
484 | i2400mu->i6050 = 1; | ||
485 | break; | ||
486 | default: | ||
487 | break; | ||
488 | } | ||
489 | |||
490 | if (i2400mu->i6050) { | ||
482 | i2400m->bus_fw_names = i2400mu_bus_fw_names_6050; | 491 | i2400m->bus_fw_names = i2400mu_bus_fw_names_6050; |
483 | i2400mu->endpoint_cfg.bulk_out = 0; | 492 | i2400mu->endpoint_cfg.bulk_out = 0; |
484 | i2400mu->endpoint_cfg.notification = 3; | 493 | i2400mu->endpoint_cfg.notification = 3; |
@@ -719,6 +728,7 @@ int i2400mu_post_reset(struct usb_interface *iface) | |||
719 | static | 728 | static |
720 | struct usb_device_id i2400mu_id_table[] = { | 729 | struct usb_device_id i2400mu_id_table[] = { |
721 | { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050) }, | 730 | { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050) }, |
731 | { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050_2) }, | ||
722 | { USB_DEVICE(0x8086, 0x0181) }, | 732 | { USB_DEVICE(0x8086, 0x0181) }, |
723 | { USB_DEVICE(0x8086, 0x1403) }, | 733 | { USB_DEVICE(0x8086, 0x1403) }, |
724 | { USB_DEVICE(0x8086, 0x1405) }, | 734 | { USB_DEVICE(0x8086, 0x1405) }, |
diff --git a/drivers/net/wireless/ath/ath5k/eeprom.c b/drivers/net/wireless/ath/ath5k/eeprom.c index 5d1c8677f180..6a3f4da7fb48 100644 --- a/drivers/net/wireless/ath/ath5k/eeprom.c +++ b/drivers/net/wireless/ath/ath5k/eeprom.c | |||
@@ -97,7 +97,7 @@ ath5k_eeprom_init_header(struct ath5k_hw *ah) | |||
97 | struct ath5k_eeprom_info *ee = &ah->ah_capabilities.cap_eeprom; | 97 | struct ath5k_eeprom_info *ee = &ah->ah_capabilities.cap_eeprom; |
98 | int ret; | 98 | int ret; |
99 | u16 val; | 99 | u16 val; |
100 | u32 cksum, offset; | 100 | u32 cksum, offset, eep_max = AR5K_EEPROM_INFO_MAX; |
101 | 101 | ||
102 | /* | 102 | /* |
103 | * Read values from EEPROM and store them in the capability structure | 103 | * Read values from EEPROM and store them in the capability structure |
@@ -116,12 +116,38 @@ ath5k_eeprom_init_header(struct ath5k_hw *ah) | |||
116 | * Validate the checksum of the EEPROM date. There are some | 116 | * Validate the checksum of the EEPROM date. There are some |
117 | * devices with invalid EEPROMs. | 117 | * devices with invalid EEPROMs. |
118 | */ | 118 | */ |
119 | for (cksum = 0, offset = 0; offset < AR5K_EEPROM_INFO_MAX; offset++) { | 119 | AR5K_EEPROM_READ(AR5K_EEPROM_SIZE_UPPER, val); |
120 | if (val) { | ||
121 | eep_max = (val & AR5K_EEPROM_SIZE_UPPER_MASK) << | ||
122 | AR5K_EEPROM_SIZE_ENDLOC_SHIFT; | ||
123 | AR5K_EEPROM_READ(AR5K_EEPROM_SIZE_LOWER, val); | ||
124 | eep_max = (eep_max | val) - AR5K_EEPROM_INFO_BASE; | ||
125 | |||
126 | /* | ||
127 | * Fail safe check to prevent stupid loops due | ||
128 | * to busted EEPROMs. XXX: This value is likely too | ||
129 | * big still, waiting on a better value. | ||
130 | */ | ||
131 | if (eep_max > (3 * AR5K_EEPROM_INFO_MAX)) { | ||
132 | ATH5K_ERR(ah->ah_sc, "Invalid max custom EEPROM size: " | ||
133 | "%d (0x%04x) max expected: %d (0x%04x)\n", | ||
134 | eep_max, eep_max, | ||
135 | 3 * AR5K_EEPROM_INFO_MAX, | ||
136 | 3 * AR5K_EEPROM_INFO_MAX); | ||
137 | return -EIO; | ||
138 | } | ||
139 | } | ||
140 | |||
141 | for (cksum = 0, offset = 0; offset < eep_max; offset++) { | ||
120 | AR5K_EEPROM_READ(AR5K_EEPROM_INFO(offset), val); | 142 | AR5K_EEPROM_READ(AR5K_EEPROM_INFO(offset), val); |
121 | cksum ^= val; | 143 | cksum ^= val; |
122 | } | 144 | } |
123 | if (cksum != AR5K_EEPROM_INFO_CKSUM) { | 145 | if (cksum != AR5K_EEPROM_INFO_CKSUM) { |
124 | ATH5K_ERR(ah->ah_sc, "Invalid EEPROM checksum 0x%04x\n", cksum); | 146 | ATH5K_ERR(ah->ah_sc, "Invalid EEPROM " |
147 | "checksum: 0x%04x eep_max: 0x%04x (%s)\n", | ||
148 | cksum, eep_max, | ||
149 | eep_max == AR5K_EEPROM_INFO_MAX ? | ||
150 | "default size" : "custom size"); | ||
125 | return -EIO; | 151 | return -EIO; |
126 | } | 152 | } |
127 | 153 | ||
diff --git a/drivers/net/wireless/ath/ath5k/eeprom.h b/drivers/net/wireless/ath/ath5k/eeprom.h index 0123f3521a0b..473a483bb9c3 100644 --- a/drivers/net/wireless/ath/ath5k/eeprom.h +++ b/drivers/net/wireless/ath/ath5k/eeprom.h | |||
@@ -37,6 +37,14 @@ | |||
37 | #define AR5K_EEPROM_RFKILL_POLARITY_S 1 | 37 | #define AR5K_EEPROM_RFKILL_POLARITY_S 1 |
38 | 38 | ||
39 | #define AR5K_EEPROM_REG_DOMAIN 0x00bf /* EEPROM regdom */ | 39 | #define AR5K_EEPROM_REG_DOMAIN 0x00bf /* EEPROM regdom */ |
40 | |||
41 | /* FLASH(EEPROM) Defines for AR531X chips */ | ||
42 | #define AR5K_EEPROM_SIZE_LOWER 0x1b /* size info -- lower */ | ||
43 | #define AR5K_EEPROM_SIZE_UPPER 0x1c /* size info -- upper */ | ||
44 | #define AR5K_EEPROM_SIZE_UPPER_MASK 0xfff0 | ||
45 | #define AR5K_EEPROM_SIZE_UPPER_SHIFT 4 | ||
46 | #define AR5K_EEPROM_SIZE_ENDLOC_SHIFT 12 | ||
47 | |||
40 | #define AR5K_EEPROM_CHECKSUM 0x00c0 /* EEPROM checksum */ | 48 | #define AR5K_EEPROM_CHECKSUM 0x00c0 /* EEPROM checksum */ |
41 | #define AR5K_EEPROM_INFO_BASE 0x00c0 /* EEPROM header */ | 49 | #define AR5K_EEPROM_INFO_BASE 0x00c0 /* EEPROM header */ |
42 | #define AR5K_EEPROM_INFO_MAX (0x400 - AR5K_EEPROM_INFO_BASE) | 50 | #define AR5K_EEPROM_INFO_MAX (0x400 - AR5K_EEPROM_INFO_BASE) |
diff --git a/drivers/net/wireless/ath/ath9k/Kconfig b/drivers/net/wireless/ath/ath9k/Kconfig index 03a1106ad725..5774cea23a3b 100644 --- a/drivers/net/wireless/ath/ath9k/Kconfig +++ b/drivers/net/wireless/ath/ath9k/Kconfig | |||
@@ -25,7 +25,7 @@ config ATH9K | |||
25 | 25 | ||
26 | config ATH9K_DEBUGFS | 26 | config ATH9K_DEBUGFS |
27 | bool "Atheros ath9k debugging" | 27 | bool "Atheros ath9k debugging" |
28 | depends on ATH9K | 28 | depends on ATH9K && DEBUG_FS |
29 | ---help--- | 29 | ---help--- |
30 | Say Y, if you need access to ath9k's statistics for | 30 | Say Y, if you need access to ath9k's statistics for |
31 | interrupts, rate control, etc. | 31 | interrupts, rate control, etc. |
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h index e2cef2ff5d8f..1597a42731ed 100644 --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h | |||
@@ -33,11 +33,11 @@ struct ath_node; | |||
33 | 33 | ||
34 | /* Macro to expand scalars to 64-bit objects */ | 34 | /* Macro to expand scalars to 64-bit objects */ |
35 | 35 | ||
36 | #define ito64(x) (sizeof(x) == 8) ? \ | 36 | #define ito64(x) (sizeof(x) == 1) ? \ |
37 | (((unsigned long long int)(x)) & (0xff)) : \ | 37 | (((unsigned long long int)(x)) & (0xff)) : \ |
38 | (sizeof(x) == 16) ? \ | 38 | (sizeof(x) == 2) ? \ |
39 | (((unsigned long long int)(x)) & 0xffff) : \ | 39 | (((unsigned long long int)(x)) & 0xffff) : \ |
40 | ((sizeof(x) == 32) ? \ | 40 | ((sizeof(x) == 4) ? \ |
41 | (((unsigned long long int)(x)) & 0xffffffff) : \ | 41 | (((unsigned long long int)(x)) & 0xffffffff) : \ |
42 | (unsigned long long int)(x)) | 42 | (unsigned long long int)(x)) |
43 | 43 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c index 484c5fdf7c2a..9b4b8b5c7574 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965.c | |||
@@ -1961,7 +1961,7 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv, | |||
1961 | struct ieee80211_tx_info *info; | 1961 | struct ieee80211_tx_info *info; |
1962 | struct iwl4965_tx_resp *tx_resp = (void *)&pkt->u.raw[0]; | 1962 | struct iwl4965_tx_resp *tx_resp = (void *)&pkt->u.raw[0]; |
1963 | u32 status = le32_to_cpu(tx_resp->u.status); | 1963 | u32 status = le32_to_cpu(tx_resp->u.status); |
1964 | int tid = MAX_TID_COUNT; | 1964 | int uninitialized_var(tid); |
1965 | int sta_id; | 1965 | int sta_id; |
1966 | int freed; | 1966 | int freed; |
1967 | u8 *qc = NULL; | 1967 | u8 *qc = NULL; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c index 33a5866538e7..de45f308b744 100644 --- a/drivers/net/wireless/iwlwifi/iwl-5000.c +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c | |||
@@ -1598,6 +1598,7 @@ struct iwl_cfg iwl5300_agn_cfg = { | |||
1598 | .use_bsm = false, | 1598 | .use_bsm = false, |
1599 | .ht_greenfield_support = true, | 1599 | .ht_greenfield_support = true, |
1600 | .led_compensation = 51, | 1600 | .led_compensation = 51, |
1601 | .use_rts_for_ht = true, /* use rts/cts protection */ | ||
1601 | .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, | 1602 | .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, |
1602 | .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED, | 1603 | .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED, |
1603 | }; | 1604 | }; |
@@ -1622,6 +1623,7 @@ struct iwl_cfg iwl5100_bgn_cfg = { | |||
1622 | .use_bsm = false, | 1623 | .use_bsm = false, |
1623 | .ht_greenfield_support = true, | 1624 | .ht_greenfield_support = true, |
1624 | .led_compensation = 51, | 1625 | .led_compensation = 51, |
1626 | .use_rts_for_ht = true, /* use rts/cts protection */ | ||
1625 | .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, | 1627 | .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, |
1626 | }; | 1628 | }; |
1627 | 1629 | ||
@@ -1667,6 +1669,7 @@ struct iwl_cfg iwl5100_agn_cfg = { | |||
1667 | .use_bsm = false, | 1669 | .use_bsm = false, |
1668 | .ht_greenfield_support = true, | 1670 | .ht_greenfield_support = true, |
1669 | .led_compensation = 51, | 1671 | .led_compensation = 51, |
1672 | .use_rts_for_ht = true, /* use rts/cts protection */ | ||
1670 | .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, | 1673 | .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, |
1671 | .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED, | 1674 | .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED, |
1672 | }; | 1675 | }; |
@@ -1691,6 +1694,7 @@ struct iwl_cfg iwl5350_agn_cfg = { | |||
1691 | .use_bsm = false, | 1694 | .use_bsm = false, |
1692 | .ht_greenfield_support = true, | 1695 | .ht_greenfield_support = true, |
1693 | .led_compensation = 51, | 1696 | .led_compensation = 51, |
1697 | .use_rts_for_ht = true, /* use rts/cts protection */ | ||
1694 | .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, | 1698 | .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, |
1695 | .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED, | 1699 | .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED, |
1696 | }; | 1700 | }; |
@@ -1715,6 +1719,7 @@ struct iwl_cfg iwl5150_agn_cfg = { | |||
1715 | .use_bsm = false, | 1719 | .use_bsm = false, |
1716 | .ht_greenfield_support = true, | 1720 | .ht_greenfield_support = true, |
1717 | .led_compensation = 51, | 1721 | .led_compensation = 51, |
1722 | .use_rts_for_ht = true, /* use rts/cts protection */ | ||
1718 | .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, | 1723 | .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, |
1719 | .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED, | 1724 | .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED, |
1720 | }; | 1725 | }; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c index 574d36658702..5461f105bd2d 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.c +++ b/drivers/net/wireless/iwlwifi/iwl-core.c | |||
@@ -2344,6 +2344,21 @@ static void iwl_ht_conf(struct iwl_priv *priv, | |||
2344 | IWL_DEBUG_MAC80211(priv, "leave\n"); | 2344 | IWL_DEBUG_MAC80211(priv, "leave\n"); |
2345 | } | 2345 | } |
2346 | 2346 | ||
2347 | static inline void iwl_set_no_assoc(struct iwl_priv *priv) | ||
2348 | { | ||
2349 | priv->assoc_id = 0; | ||
2350 | iwl_led_disassociate(priv); | ||
2351 | /* | ||
2352 | * inform the ucode that there is no longer an | ||
2353 | * association and that no more packets should be | ||
2354 | * sent | ||
2355 | */ | ||
2356 | priv->staging_rxon.filter_flags &= | ||
2357 | ~RXON_FILTER_ASSOC_MSK; | ||
2358 | priv->staging_rxon.assoc_id = 0; | ||
2359 | iwlcore_commit_rxon(priv); | ||
2360 | } | ||
2361 | |||
2347 | #define IWL_DELAY_NEXT_SCAN_AFTER_ASSOC (HZ*6) | 2362 | #define IWL_DELAY_NEXT_SCAN_AFTER_ASSOC (HZ*6) |
2348 | void iwl_bss_info_changed(struct ieee80211_hw *hw, | 2363 | void iwl_bss_info_changed(struct ieee80211_hw *hw, |
2349 | struct ieee80211_vif *vif, | 2364 | struct ieee80211_vif *vif, |
@@ -2475,20 +2490,8 @@ void iwl_bss_info_changed(struct ieee80211_hw *hw, | |||
2475 | IWL_DELAY_NEXT_SCAN_AFTER_ASSOC; | 2490 | IWL_DELAY_NEXT_SCAN_AFTER_ASSOC; |
2476 | if (!iwl_is_rfkill(priv)) | 2491 | if (!iwl_is_rfkill(priv)) |
2477 | priv->cfg->ops->lib->post_associate(priv); | 2492 | priv->cfg->ops->lib->post_associate(priv); |
2478 | } else { | 2493 | } else |
2479 | priv->assoc_id = 0; | 2494 | iwl_set_no_assoc(priv); |
2480 | iwl_led_disassociate(priv); | ||
2481 | |||
2482 | /* | ||
2483 | * inform the ucode that there is no longer an | ||
2484 | * association and that no more packets should be | ||
2485 | * send | ||
2486 | */ | ||
2487 | priv->staging_rxon.filter_flags &= | ||
2488 | ~RXON_FILTER_ASSOC_MSK; | ||
2489 | priv->staging_rxon.assoc_id = 0; | ||
2490 | iwlcore_commit_rxon(priv); | ||
2491 | } | ||
2492 | } | 2495 | } |
2493 | 2496 | ||
2494 | if (changes && iwl_is_associated(priv) && priv->assoc_id) { | 2497 | if (changes && iwl_is_associated(priv) && priv->assoc_id) { |
@@ -2503,12 +2506,14 @@ void iwl_bss_info_changed(struct ieee80211_hw *hw, | |||
2503 | } | 2506 | } |
2504 | } | 2507 | } |
2505 | 2508 | ||
2506 | if ((changes & BSS_CHANGED_BEACON_ENABLED) && | 2509 | if (changes & BSS_CHANGED_BEACON_ENABLED) { |
2507 | vif->bss_conf.enable_beacon) { | 2510 | if (vif->bss_conf.enable_beacon) { |
2508 | memcpy(priv->staging_rxon.bssid_addr, | 2511 | memcpy(priv->staging_rxon.bssid_addr, |
2509 | bss_conf->bssid, ETH_ALEN); | 2512 | bss_conf->bssid, ETH_ALEN); |
2510 | memcpy(priv->bssid, bss_conf->bssid, ETH_ALEN); | 2513 | memcpy(priv->bssid, bss_conf->bssid, ETH_ALEN); |
2511 | iwlcore_config_ap(priv); | 2514 | iwlcore_config_ap(priv); |
2515 | } else | ||
2516 | iwl_set_no_assoc(priv); | ||
2512 | } | 2517 | } |
2513 | 2518 | ||
2514 | mutex_unlock(&priv->mutex); | 2519 | mutex_unlock(&priv->mutex); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h index 165d1f6e2dd9..3822cf53e368 100644 --- a/drivers/net/wireless/iwlwifi/iwl-dev.h +++ b/drivers/net/wireless/iwlwifi/iwl-dev.h | |||
@@ -711,7 +711,7 @@ extern void iwl_txq_ctx_stop(struct iwl_priv *priv); | |||
711 | extern int iwl_queue_space(const struct iwl_queue *q); | 711 | extern int iwl_queue_space(const struct iwl_queue *q); |
712 | static inline int iwl_queue_used(const struct iwl_queue *q, int i) | 712 | static inline int iwl_queue_used(const struct iwl_queue *q, int i) |
713 | { | 713 | { |
714 | return q->write_ptr > q->read_ptr ? | 714 | return q->write_ptr >= q->read_ptr ? |
715 | (i >= q->read_ptr && i < q->write_ptr) : | 715 | (i >= q->read_ptr && i < q->write_ptr) : |
716 | !(i < q->read_ptr && i >= q->write_ptr); | 716 | !(i < q->read_ptr && i >= q->write_ptr); |
717 | } | 717 | } |
diff --git a/drivers/net/wireless/iwlwifi/iwl-devtrace.c b/drivers/net/wireless/iwlwifi/iwl-devtrace.c index e7d88d1da15d..83cc4e500a96 100644 --- a/drivers/net/wireless/iwlwifi/iwl-devtrace.c +++ b/drivers/net/wireless/iwlwifi/iwl-devtrace.c | |||
@@ -1,3 +1,29 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Copyright(c) 2009 - 2010 Intel Corporation. All rights reserved. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it | ||
6 | * under the terms of version 2 of the GNU General Public License as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, but WITHOUT | ||
10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
12 | * more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License along with | ||
15 | * this program; if not, write to the Free Software Foundation, Inc., | ||
16 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA | ||
17 | * | ||
18 | * The full GNU General Public License is included in this distribution in the | ||
19 | * file called LICENSE. | ||
20 | * | ||
21 | * Contact Information: | ||
22 | * Intel Linux Wireless <ilw@linux.intel.com> | ||
23 | * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 | ||
24 | * | ||
25 | *****************************************************************************/ | ||
26 | |||
1 | #include <linux/module.h> | 27 | #include <linux/module.h> |
2 | 28 | ||
3 | /* sparse doesn't like tracepoint macros */ | 29 | /* sparse doesn't like tracepoint macros */ |
diff --git a/drivers/net/wireless/iwlwifi/iwl-devtrace.h b/drivers/net/wireless/iwlwifi/iwl-devtrace.h index 21361968ab7e..d9c7363b1bbb 100644 --- a/drivers/net/wireless/iwlwifi/iwl-devtrace.h +++ b/drivers/net/wireless/iwlwifi/iwl-devtrace.h | |||
@@ -1,3 +1,29 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Copyright(c) 2009 - 2010 Intel Corporation. All rights reserved. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it | ||
6 | * under the terms of version 2 of the GNU General Public License as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, but WITHOUT | ||
10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
12 | * more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License along with | ||
15 | * this program; if not, write to the Free Software Foundation, Inc., | ||
16 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA | ||
17 | * | ||
18 | * The full GNU General Public License is included in this distribution in the | ||
19 | * file called LICENSE. | ||
20 | * | ||
21 | * Contact Information: | ||
22 | * Intel Linux Wireless <ilw@linux.intel.com> | ||
23 | * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 | ||
24 | * | ||
25 | *****************************************************************************/ | ||
26 | |||
1 | #if !defined(__IWLWIFI_DEVICE_TRACE) || defined(TRACE_HEADER_MULTI_READ) | 27 | #if !defined(__IWLWIFI_DEVICE_TRACE) || defined(TRACE_HEADER_MULTI_READ) |
2 | #define __IWLWIFI_DEVICE_TRACE | 28 | #define __IWLWIFI_DEVICE_TRACE |
3 | 29 | ||
diff --git a/drivers/net/wireless/iwmc3200wifi/commands.c b/drivers/net/wireless/iwmc3200wifi/commands.c index 777584d76a88..1e41ad0fcad5 100644 --- a/drivers/net/wireless/iwmc3200wifi/commands.c +++ b/drivers/net/wireless/iwmc3200wifi/commands.c | |||
@@ -973,6 +973,10 @@ int iwm_send_pmkid_update(struct iwm_priv *iwm, | |||
973 | 973 | ||
974 | memset(&update, 0, sizeof(struct iwm_umac_pmkid_update)); | 974 | memset(&update, 0, sizeof(struct iwm_umac_pmkid_update)); |
975 | 975 | ||
976 | update.hdr.oid = UMAC_WIFI_IF_CMD_PMKID_UPDATE; | ||
977 | update.hdr.buf_size = cpu_to_le16(sizeof(struct iwm_umac_pmkid_update) - | ||
978 | sizeof(struct iwm_umac_wifi_if)); | ||
979 | |||
976 | update.command = cpu_to_le32(command); | 980 | update.command = cpu_to_le32(command); |
977 | if (pmksa->bssid) | 981 | if (pmksa->bssid) |
978 | memcpy(&update.bssid, pmksa->bssid, ETH_ALEN); | 982 | memcpy(&update.bssid, pmksa->bssid, ETH_ALEN); |
diff --git a/drivers/net/wireless/iwmc3200wifi/commands.h b/drivers/net/wireless/iwmc3200wifi/commands.h index 06af0552cd75..3dfd9f0e9003 100644 --- a/drivers/net/wireless/iwmc3200wifi/commands.h +++ b/drivers/net/wireless/iwmc3200wifi/commands.h | |||
@@ -463,6 +463,7 @@ struct iwm_umac_cmd_stop_resume_tx { | |||
463 | #define IWM_CMD_PMKID_FLUSH 3 | 463 | #define IWM_CMD_PMKID_FLUSH 3 |
464 | 464 | ||
465 | struct iwm_umac_pmkid_update { | 465 | struct iwm_umac_pmkid_update { |
466 | struct iwm_umac_wifi_if hdr; | ||
466 | __le32 command; | 467 | __le32 command; |
467 | u8 bssid[ETH_ALEN]; | 468 | u8 bssid[ETH_ALEN]; |
468 | __le16 reserved; | 469 | __le16 reserved; |
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c index 59d49159cf2a..59f92105b0c2 100644 --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c | |||
@@ -3157,8 +3157,10 @@ static void mwl8k_configure_filter(struct ieee80211_hw *hw, | |||
3157 | /* Clear unsupported feature flags */ | 3157 | /* Clear unsupported feature flags */ |
3158 | *total_flags &= FIF_ALLMULTI | FIF_BCN_PRBRESP_PROMISC; | 3158 | *total_flags &= FIF_ALLMULTI | FIF_BCN_PRBRESP_PROMISC; |
3159 | 3159 | ||
3160 | if (mwl8k_fw_lock(hw)) | 3160 | if (mwl8k_fw_lock(hw)) { |
3161 | kfree(cmd); | ||
3161 | return; | 3162 | return; |
3163 | } | ||
3162 | 3164 | ||
3163 | if (priv->sniffer_enabled) { | 3165 | if (priv->sniffer_enabled) { |
3164 | mwl8k_enable_sniffer(hw, 0); | 3166 | mwl8k_enable_sniffer(hw, 0); |
diff --git a/drivers/net/wireless/p54/p54pci.c b/drivers/net/wireless/p54/p54pci.c index a15962a19b2a..a72f7c2577de 100644 --- a/drivers/net/wireless/p54/p54pci.c +++ b/drivers/net/wireless/p54/p54pci.c | |||
@@ -197,6 +197,14 @@ static void p54p_check_rx_ring(struct ieee80211_hw *dev, u32 *index, | |||
197 | i %= ring_limit; | 197 | i %= ring_limit; |
198 | continue; | 198 | continue; |
199 | } | 199 | } |
200 | |||
201 | if (unlikely(len > priv->common.rx_mtu)) { | ||
202 | if (net_ratelimit()) | ||
203 | dev_err(&priv->pdev->dev, "rx'd frame size " | ||
204 | "exceeds length threshold.\n"); | ||
205 | |||
206 | len = priv->common.rx_mtu; | ||
207 | } | ||
200 | skb_put(skb, len); | 208 | skb_put(skb, len); |
201 | 209 | ||
202 | if (p54_rx(dev, skb)) { | 210 | if (p54_rx(dev, skb)) { |
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c index 27bf887f1453..9deae41cb784 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c | |||
@@ -340,7 +340,7 @@ static int rt2800_blink_set(struct led_classdev *led_cdev, | |||
340 | rt2x00_set_field32(®, LED_CFG_OFF_PERIOD, *delay_off); | 340 | rt2x00_set_field32(®, LED_CFG_OFF_PERIOD, *delay_off); |
341 | rt2x00_set_field32(®, LED_CFG_SLOW_BLINK_PERIOD, 3); | 341 | rt2x00_set_field32(®, LED_CFG_SLOW_BLINK_PERIOD, 3); |
342 | rt2x00_set_field32(®, LED_CFG_R_LED_MODE, 3); | 342 | rt2x00_set_field32(®, LED_CFG_R_LED_MODE, 3); |
343 | rt2x00_set_field32(®, LED_CFG_G_LED_MODE, 12); | 343 | rt2x00_set_field32(®, LED_CFG_G_LED_MODE, 3); |
344 | rt2x00_set_field32(®, LED_CFG_Y_LED_MODE, 3); | 344 | rt2x00_set_field32(®, LED_CFG_Y_LED_MODE, 3); |
345 | rt2x00_set_field32(®, LED_CFG_LED_POLAR, 1); | 345 | rt2x00_set_field32(®, LED_CFG_LED_POLAR, 1); |
346 | rt2800_register_write(led->rt2x00dev, LED_CFG, reg); | 346 | rt2800_register_write(led->rt2x00dev, LED_CFG, reg); |
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index 4d841c07c970..dcfc8c25d1a7 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
@@ -113,6 +113,12 @@ | |||
113 | ( ((unsigned long)((__skb)->data + (__header))) & 3 ) | 113 | ( ((unsigned long)((__skb)->data + (__header))) & 3 ) |
114 | 114 | ||
115 | /* | 115 | /* |
116 | * Constants for extra TX headroom for alignment purposes. | ||
117 | */ | ||
118 | #define RT2X00_ALIGN_SIZE 4 /* Only whole frame needs alignment */ | ||
119 | #define RT2X00_L2PAD_SIZE 8 /* Both header & payload need alignment */ | ||
120 | |||
121 | /* | ||
116 | * Standard timing and size defines. | 122 | * Standard timing and size defines. |
117 | * These values should follow the ieee80211 specifications. | 123 | * These values should follow the ieee80211 specifications. |
118 | */ | 124 | */ |
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index 06c43ca39bf8..265e66dba552 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
@@ -686,7 +686,17 @@ static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev) | |||
686 | /* | 686 | /* |
687 | * Initialize extra TX headroom required. | 687 | * Initialize extra TX headroom required. |
688 | */ | 688 | */ |
689 | rt2x00dev->hw->extra_tx_headroom = rt2x00dev->ops->extra_tx_headroom; | 689 | rt2x00dev->hw->extra_tx_headroom = |
690 | max_t(unsigned int, IEEE80211_TX_STATUS_HEADROOM, | ||
691 | rt2x00dev->ops->extra_tx_headroom); | ||
692 | |||
693 | /* | ||
694 | * Take TX headroom required for alignment into account. | ||
695 | */ | ||
696 | if (test_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags)) | ||
697 | rt2x00dev->hw->extra_tx_headroom += RT2X00_L2PAD_SIZE; | ||
698 | else if (test_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags)) | ||
699 | rt2x00dev->hw->extra_tx_headroom += RT2X00_ALIGN_SIZE; | ||
690 | 700 | ||
691 | /* | 701 | /* |
692 | * Register HW. | 702 | * Register HW. |
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c index 239afc7a9c0b..9915a09141ef 100644 --- a/drivers/net/wireless/rt2x00/rt2x00queue.c +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c | |||
@@ -104,7 +104,7 @@ void rt2x00queue_map_txskb(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb) | |||
104 | * is also mapped to the DMA so it can be used for transfering | 104 | * is also mapped to the DMA so it can be used for transfering |
105 | * additional descriptor information to the hardware. | 105 | * additional descriptor information to the hardware. |
106 | */ | 106 | */ |
107 | skb_push(skb, rt2x00dev->hw->extra_tx_headroom); | 107 | skb_push(skb, rt2x00dev->ops->extra_tx_headroom); |
108 | 108 | ||
109 | skbdesc->skb_dma = | 109 | skbdesc->skb_dma = |
110 | dma_map_single(rt2x00dev->dev, skb->data, skb->len, DMA_TO_DEVICE); | 110 | dma_map_single(rt2x00dev->dev, skb->data, skb->len, DMA_TO_DEVICE); |
@@ -112,7 +112,7 @@ void rt2x00queue_map_txskb(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb) | |||
112 | /* | 112 | /* |
113 | * Restore data pointer to original location again. | 113 | * Restore data pointer to original location again. |
114 | */ | 114 | */ |
115 | skb_pull(skb, rt2x00dev->hw->extra_tx_headroom); | 115 | skb_pull(skb, rt2x00dev->ops->extra_tx_headroom); |
116 | 116 | ||
117 | skbdesc->flags |= SKBDESC_DMA_MAPPED_TX; | 117 | skbdesc->flags |= SKBDESC_DMA_MAPPED_TX; |
118 | } | 118 | } |
@@ -134,7 +134,7 @@ void rt2x00queue_unmap_skb(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb) | |||
134 | * by the driver, but it was actually mapped to DMA. | 134 | * by the driver, but it was actually mapped to DMA. |
135 | */ | 135 | */ |
136 | dma_unmap_single(rt2x00dev->dev, skbdesc->skb_dma, | 136 | dma_unmap_single(rt2x00dev->dev, skbdesc->skb_dma, |
137 | skb->len + rt2x00dev->hw->extra_tx_headroom, | 137 | skb->len + rt2x00dev->ops->extra_tx_headroom, |
138 | DMA_TO_DEVICE); | 138 | DMA_TO_DEVICE); |
139 | skbdesc->flags &= ~SKBDESC_DMA_MAPPED_TX; | 139 | skbdesc->flags &= ~SKBDESC_DMA_MAPPED_TX; |
140 | } | 140 | } |
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c index 8ebf5c33955d..f14deb0c8514 100644 --- a/drivers/net/wireless/zd1211rw/zd_mac.c +++ b/drivers/net/wireless/zd1211rw/zd_mac.c | |||
@@ -987,12 +987,13 @@ static void zd_op_configure_filter(struct ieee80211_hw *hw, | |||
987 | changed_flags &= SUPPORTED_FIF_FLAGS; | 987 | changed_flags &= SUPPORTED_FIF_FLAGS; |
988 | *new_flags &= SUPPORTED_FIF_FLAGS; | 988 | *new_flags &= SUPPORTED_FIF_FLAGS; |
989 | 989 | ||
990 | /* changed_flags is always populated but this driver | 990 | /* |
991 | * doesn't support all FIF flags so its possible we don't | 991 | * If multicast parameter (as returned by zd_op_prepare_multicast) |
992 | * need to do anything */ | 992 | * has changed, no bit in changed_flags is set. To handle this |
993 | if (!changed_flags) | 993 | * situation, we do not return if changed_flags is 0. If we do so, |
994 | return; | 994 | * we will have some issue with IPv6 which uses multicast for link |
995 | 995 | * layer address resolution. | |
996 | */ | ||
996 | if (*new_flags & (FIF_PROMISC_IN_BSS | FIF_ALLMULTI)) | 997 | if (*new_flags & (FIF_PROMISC_IN_BSS | FIF_ALLMULTI)) |
997 | zd_mc_add_all(&hash); | 998 | zd_mc_add_all(&hash); |
998 | 999 | ||
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c index ac19ecd19cfe..72d3e437e190 100644 --- a/drivers/net/wireless/zd1211rw/zd_usb.c +++ b/drivers/net/wireless/zd1211rw/zd_usb.c | |||
@@ -62,6 +62,7 @@ static struct usb_device_id usb_ids[] = { | |||
62 | { USB_DEVICE(0x6891, 0xa727), .driver_info = DEVICE_ZD1211 }, | 62 | { USB_DEVICE(0x6891, 0xa727), .driver_info = DEVICE_ZD1211 }, |
63 | /* ZD1211B */ | 63 | /* ZD1211B */ |
64 | { USB_DEVICE(0x0053, 0x5301), .driver_info = DEVICE_ZD1211B }, | 64 | { USB_DEVICE(0x0053, 0x5301), .driver_info = DEVICE_ZD1211B }, |
65 | { USB_DEVICE(0x0409, 0x0248), .driver_info = DEVICE_ZD1211B }, | ||
65 | { USB_DEVICE(0x0411, 0x00da), .driver_info = DEVICE_ZD1211B }, | 66 | { USB_DEVICE(0x0411, 0x00da), .driver_info = DEVICE_ZD1211B }, |
66 | { USB_DEVICE(0x0471, 0x1236), .driver_info = DEVICE_ZD1211B }, | 67 | { USB_DEVICE(0x0471, 0x1236), .driver_info = DEVICE_ZD1211B }, |
67 | { USB_DEVICE(0x0471, 0x1237), .driver_info = DEVICE_ZD1211B }, | 68 | { USB_DEVICE(0x0471, 0x1237), .driver_info = DEVICE_ZD1211B }, |
diff --git a/drivers/pci/pcie/aer/aer_inject.c b/drivers/pci/pcie/aer/aer_inject.c index 8c30a9544d61..223052b73563 100644 --- a/drivers/pci/pcie/aer/aer_inject.c +++ b/drivers/pci/pcie/aer/aer_inject.c | |||
@@ -321,7 +321,7 @@ static int aer_inject(struct aer_error_inj *einj) | |||
321 | unsigned long flags; | 321 | unsigned long flags; |
322 | unsigned int devfn = PCI_DEVFN(einj->dev, einj->fn); | 322 | unsigned int devfn = PCI_DEVFN(einj->dev, einj->fn); |
323 | int pos_cap_err, rp_pos_cap_err; | 323 | int pos_cap_err, rp_pos_cap_err; |
324 | u32 sever, mask; | 324 | u32 sever, cor_mask, uncor_mask; |
325 | int ret = 0; | 325 | int ret = 0; |
326 | 326 | ||
327 | dev = pci_get_domain_bus_and_slot((int)einj->domain, einj->bus, devfn); | 327 | dev = pci_get_domain_bus_and_slot((int)einj->domain, einj->bus, devfn); |
@@ -339,6 +339,9 @@ static int aer_inject(struct aer_error_inj *einj) | |||
339 | goto out_put; | 339 | goto out_put; |
340 | } | 340 | } |
341 | pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_SEVER, &sever); | 341 | pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_SEVER, &sever); |
342 | pci_read_config_dword(dev, pos_cap_err + PCI_ERR_COR_MASK, &cor_mask); | ||
343 | pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_MASK, | ||
344 | &uncor_mask); | ||
342 | 345 | ||
343 | rp_pos_cap_err = pci_find_ext_capability(rpdev, PCI_EXT_CAP_ID_ERR); | 346 | rp_pos_cap_err = pci_find_ext_capability(rpdev, PCI_EXT_CAP_ID_ERR); |
344 | if (!rp_pos_cap_err) { | 347 | if (!rp_pos_cap_err) { |
@@ -374,17 +377,14 @@ static int aer_inject(struct aer_error_inj *einj) | |||
374 | err->header_log2 = einj->header_log2; | 377 | err->header_log2 = einj->header_log2; |
375 | err->header_log3 = einj->header_log3; | 378 | err->header_log3 = einj->header_log3; |
376 | 379 | ||
377 | pci_read_config_dword(dev, pos_cap_err + PCI_ERR_COR_MASK, &mask); | 380 | if (einj->cor_status && !(einj->cor_status & ~cor_mask)) { |
378 | if (einj->cor_status && !(einj->cor_status & ~mask)) { | ||
379 | ret = -EINVAL; | 381 | ret = -EINVAL; |
380 | printk(KERN_WARNING "The correctable error(s) is masked " | 382 | printk(KERN_WARNING "The correctable error(s) is masked " |
381 | "by device\n"); | 383 | "by device\n"); |
382 | spin_unlock_irqrestore(&inject_lock, flags); | 384 | spin_unlock_irqrestore(&inject_lock, flags); |
383 | goto out_put; | 385 | goto out_put; |
384 | } | 386 | } |
385 | 387 | if (einj->uncor_status && !(einj->uncor_status & ~uncor_mask)) { | |
386 | pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_MASK, &mask); | ||
387 | if (einj->uncor_status && !(einj->uncor_status & ~mask)) { | ||
388 | ret = -EINVAL; | 388 | ret = -EINVAL; |
389 | printk(KERN_WARNING "The uncorrectable error(s) is masked " | 389 | printk(KERN_WARNING "The uncorrectable error(s) is masked " |
390 | "by device\n"); | 390 | "by device\n"); |
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig index db32c25e3605..f526e735c5ab 100644 --- a/drivers/platform/x86/Kconfig +++ b/drivers/platform/x86/Kconfig | |||
@@ -364,6 +364,7 @@ config EEEPC_LAPTOP | |||
364 | select HWMON | 364 | select HWMON |
365 | select LEDS_CLASS | 365 | select LEDS_CLASS |
366 | select NEW_LEDS | 366 | select NEW_LEDS |
367 | select INPUT_SPARSEKMAP | ||
367 | ---help--- | 368 | ---help--- |
368 | This driver supports the Fn-Fx keys on Eee PC laptops. | 369 | This driver supports the Fn-Fx keys on Eee PC laptops. |
369 | 370 | ||
diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c index 5838c69b2fb3..e2be6bb33d92 100644 --- a/drivers/platform/x86/eeepc-laptop.c +++ b/drivers/platform/x86/eeepc-laptop.c | |||
@@ -31,10 +31,12 @@ | |||
31 | #include <acpi/acpi_bus.h> | 31 | #include <acpi/acpi_bus.h> |
32 | #include <linux/uaccess.h> | 32 | #include <linux/uaccess.h> |
33 | #include <linux/input.h> | 33 | #include <linux/input.h> |
34 | #include <linux/input/sparse-keymap.h> | ||
34 | #include <linux/rfkill.h> | 35 | #include <linux/rfkill.h> |
35 | #include <linux/pci.h> | 36 | #include <linux/pci.h> |
36 | #include <linux/pci_hotplug.h> | 37 | #include <linux/pci_hotplug.h> |
37 | #include <linux/leds.h> | 38 | #include <linux/leds.h> |
39 | #include <linux/dmi.h> | ||
38 | 40 | ||
39 | #define EEEPC_LAPTOP_VERSION "0.1" | 41 | #define EEEPC_LAPTOP_VERSION "0.1" |
40 | #define EEEPC_LAPTOP_NAME "Eee PC Hotkey Driver" | 42 | #define EEEPC_LAPTOP_NAME "Eee PC Hotkey Driver" |
@@ -48,6 +50,14 @@ MODULE_AUTHOR("Corentin Chary, Eric Cooper"); | |||
48 | MODULE_DESCRIPTION(EEEPC_LAPTOP_NAME); | 50 | MODULE_DESCRIPTION(EEEPC_LAPTOP_NAME); |
49 | MODULE_LICENSE("GPL"); | 51 | MODULE_LICENSE("GPL"); |
50 | 52 | ||
53 | static bool hotplug_disabled; | ||
54 | |||
55 | module_param(hotplug_disabled, bool, 0644); | ||
56 | MODULE_PARM_DESC(hotplug_disabled, | ||
57 | "Disable hotplug for wireless device. " | ||
58 | "If your laptop need that, please report to " | ||
59 | "acpi4asus-user@lists.sourceforge.net."); | ||
60 | |||
51 | /* | 61 | /* |
52 | * Definitions for Asus EeePC | 62 | * Definitions for Asus EeePC |
53 | */ | 63 | */ |
@@ -120,38 +130,28 @@ static const char *cm_setv[] = { | |||
120 | NULL, NULL, "PBPS", "TPDS" | 130 | NULL, NULL, "PBPS", "TPDS" |
121 | }; | 131 | }; |
122 | 132 | ||
123 | struct key_entry { | ||
124 | char type; | ||
125 | u8 code; | ||
126 | u16 keycode; | ||
127 | }; | ||
128 | |||
129 | enum { KE_KEY, KE_END }; | ||
130 | |||
131 | static const struct key_entry eeepc_keymap[] = { | 133 | static const struct key_entry eeepc_keymap[] = { |
132 | /* Sleep already handled via generic ACPI code */ | 134 | { KE_KEY, 0x10, { KEY_WLAN } }, |
133 | {KE_KEY, 0x10, KEY_WLAN }, | 135 | { KE_KEY, 0x11, { KEY_WLAN } }, |
134 | {KE_KEY, 0x11, KEY_WLAN }, | 136 | { KE_KEY, 0x12, { KEY_PROG1 } }, |
135 | {KE_KEY, 0x12, KEY_PROG1 }, | 137 | { KE_KEY, 0x13, { KEY_MUTE } }, |
136 | {KE_KEY, 0x13, KEY_MUTE }, | 138 | { KE_KEY, 0x14, { KEY_VOLUMEDOWN } }, |
137 | {KE_KEY, 0x14, KEY_VOLUMEDOWN }, | 139 | { KE_KEY, 0x15, { KEY_VOLUMEUP } }, |
138 | {KE_KEY, 0x15, KEY_VOLUMEUP }, | 140 | { KE_KEY, 0x16, { KEY_DISPLAY_OFF } }, |
139 | {KE_KEY, 0x16, KEY_DISPLAY_OFF }, | 141 | { KE_KEY, 0x1a, { KEY_COFFEE } }, |
140 | {KE_KEY, 0x1a, KEY_COFFEE }, | 142 | { KE_KEY, 0x1b, { KEY_ZOOM } }, |
141 | {KE_KEY, 0x1b, KEY_ZOOM }, | 143 | { KE_KEY, 0x1c, { KEY_PROG2 } }, |
142 | {KE_KEY, 0x1c, KEY_PROG2 }, | 144 | { KE_KEY, 0x1d, { KEY_PROG3 } }, |
143 | {KE_KEY, 0x1d, KEY_PROG3 }, | 145 | { KE_KEY, NOTIFY_BRN_MIN, { KEY_BRIGHTNESSDOWN } }, |
144 | {KE_KEY, NOTIFY_BRN_MIN, KEY_BRIGHTNESSDOWN }, | 146 | { KE_KEY, NOTIFY_BRN_MAX, { KEY_BRIGHTNESSUP } }, |
145 | {KE_KEY, NOTIFY_BRN_MAX, KEY_BRIGHTNESSUP }, | 147 | { KE_KEY, 0x30, { KEY_SWITCHVIDEOMODE } }, |
146 | {KE_KEY, 0x30, KEY_SWITCHVIDEOMODE }, | 148 | { KE_KEY, 0x31, { KEY_SWITCHVIDEOMODE } }, |
147 | {KE_KEY, 0x31, KEY_SWITCHVIDEOMODE }, | 149 | { KE_KEY, 0x32, { KEY_SWITCHVIDEOMODE } }, |
148 | {KE_KEY, 0x32, KEY_SWITCHVIDEOMODE }, | 150 | { KE_KEY, 0x37, { KEY_F13 } }, /* Disable Touchpad */ |
149 | {KE_KEY, 0x37, KEY_F13 }, /* Disable Touchpad */ | 151 | { KE_KEY, 0x38, { KEY_F14 } }, |
150 | {KE_KEY, 0x38, KEY_F14 }, | 152 | { KE_END, 0 }, |
151 | {KE_END, 0}, | ||
152 | }; | 153 | }; |
153 | 154 | ||
154 | |||
155 | /* | 155 | /* |
156 | * This is the main structure, we can use it to store useful information | 156 | * This is the main structure, we can use it to store useful information |
157 | */ | 157 | */ |
@@ -159,6 +159,8 @@ struct eeepc_laptop { | |||
159 | acpi_handle handle; /* the handle of the acpi device */ | 159 | acpi_handle handle; /* the handle of the acpi device */ |
160 | u32 cm_supported; /* the control methods supported | 160 | u32 cm_supported; /* the control methods supported |
161 | by this BIOS */ | 161 | by this BIOS */ |
162 | bool cpufv_disabled; | ||
163 | bool hotplug_disabled; | ||
162 | u16 event_count[128]; /* count for each event */ | 164 | u16 event_count[128]; /* count for each event */ |
163 | 165 | ||
164 | struct platform_device *platform_device; | 166 | struct platform_device *platform_device; |
@@ -378,6 +380,8 @@ static ssize_t store_cpufv(struct device *dev, | |||
378 | struct eeepc_cpufv c; | 380 | struct eeepc_cpufv c; |
379 | int rv, value; | 381 | int rv, value; |
380 | 382 | ||
383 | if (eeepc->cpufv_disabled) | ||
384 | return -EPERM; | ||
381 | if (get_cpufv(eeepc, &c)) | 385 | if (get_cpufv(eeepc, &c)) |
382 | return -ENODEV; | 386 | return -ENODEV; |
383 | rv = parse_arg(buf, count, &value); | 387 | rv = parse_arg(buf, count, &value); |
@@ -389,6 +393,41 @@ static ssize_t store_cpufv(struct device *dev, | |||
389 | return rv; | 393 | return rv; |
390 | } | 394 | } |
391 | 395 | ||
396 | static ssize_t show_cpufv_disabled(struct device *dev, | ||
397 | struct device_attribute *attr, | ||
398 | char *buf) | ||
399 | { | ||
400 | struct eeepc_laptop *eeepc = dev_get_drvdata(dev); | ||
401 | |||
402 | return sprintf(buf, "%d\n", eeepc->cpufv_disabled); | ||
403 | } | ||
404 | |||
405 | static ssize_t store_cpufv_disabled(struct device *dev, | ||
406 | struct device_attribute *attr, | ||
407 | const char *buf, size_t count) | ||
408 | { | ||
409 | struct eeepc_laptop *eeepc = dev_get_drvdata(dev); | ||
410 | int rv, value; | ||
411 | |||
412 | rv = parse_arg(buf, count, &value); | ||
413 | if (rv < 0) | ||
414 | return rv; | ||
415 | |||
416 | switch (value) { | ||
417 | case 0: | ||
418 | if (eeepc->cpufv_disabled) | ||
419 | pr_warning("cpufv enabled (not officially supported " | ||
420 | "on this model)\n"); | ||
421 | eeepc->cpufv_disabled = false; | ||
422 | return rv; | ||
423 | case 1: | ||
424 | return -EPERM; | ||
425 | default: | ||
426 | return -EINVAL; | ||
427 | } | ||
428 | } | ||
429 | |||
430 | |||
392 | static struct device_attribute dev_attr_cpufv = { | 431 | static struct device_attribute dev_attr_cpufv = { |
393 | .attr = { | 432 | .attr = { |
394 | .name = "cpufv", | 433 | .name = "cpufv", |
@@ -404,12 +443,22 @@ static struct device_attribute dev_attr_available_cpufv = { | |||
404 | .show = show_available_cpufv | 443 | .show = show_available_cpufv |
405 | }; | 444 | }; |
406 | 445 | ||
446 | static struct device_attribute dev_attr_cpufv_disabled = { | ||
447 | .attr = { | ||
448 | .name = "cpufv_disabled", | ||
449 | .mode = 0644 }, | ||
450 | .show = show_cpufv_disabled, | ||
451 | .store = store_cpufv_disabled | ||
452 | }; | ||
453 | |||
454 | |||
407 | static struct attribute *platform_attributes[] = { | 455 | static struct attribute *platform_attributes[] = { |
408 | &dev_attr_camera.attr, | 456 | &dev_attr_camera.attr, |
409 | &dev_attr_cardr.attr, | 457 | &dev_attr_cardr.attr, |
410 | &dev_attr_disp.attr, | 458 | &dev_attr_disp.attr, |
411 | &dev_attr_cpufv.attr, | 459 | &dev_attr_cpufv.attr, |
412 | &dev_attr_available_cpufv.attr, | 460 | &dev_attr_available_cpufv.attr, |
461 | &dev_attr_cpufv_disabled.attr, | ||
413 | NULL | 462 | NULL |
414 | }; | 463 | }; |
415 | 464 | ||
@@ -796,6 +845,9 @@ static int eeepc_rfkill_init(struct eeepc_laptop *eeepc) | |||
796 | if (result && result != -ENODEV) | 845 | if (result && result != -ENODEV) |
797 | goto exit; | 846 | goto exit; |
798 | 847 | ||
848 | if (eeepc->hotplug_disabled) | ||
849 | return 0; | ||
850 | |||
799 | result = eeepc_setup_pci_hotplug(eeepc); | 851 | result = eeepc_setup_pci_hotplug(eeepc); |
800 | /* | 852 | /* |
801 | * If we get -EBUSY then something else is handling the PCI hotplug - | 853 | * If we get -EBUSY then something else is handling the PCI hotplug - |
@@ -1090,120 +1142,42 @@ static void eeepc_backlight_exit(struct eeepc_laptop *eeepc) | |||
1090 | /* | 1142 | /* |
1091 | * Input device (i.e. hotkeys) | 1143 | * Input device (i.e. hotkeys) |
1092 | */ | 1144 | */ |
1093 | static struct key_entry *eeepc_get_entry_by_scancode( | 1145 | static int eeepc_input_init(struct eeepc_laptop *eeepc) |
1094 | struct eeepc_laptop *eeepc, | ||
1095 | int code) | ||
1096 | { | 1146 | { |
1097 | struct key_entry *key; | 1147 | struct input_dev *input; |
1148 | int error; | ||
1098 | 1149 | ||
1099 | for (key = eeepc->keymap; key->type != KE_END; key++) | 1150 | input = input_allocate_device(); |
1100 | if (code == key->code) | 1151 | if (!input) { |
1101 | return key; | 1152 | pr_info("Unable to allocate input device\n"); |
1102 | 1153 | return -ENOMEM; | |
1103 | return NULL; | ||
1104 | } | ||
1105 | |||
1106 | static void eeepc_input_notify(struct eeepc_laptop *eeepc, int event) | ||
1107 | { | ||
1108 | static struct key_entry *key; | ||
1109 | |||
1110 | key = eeepc_get_entry_by_scancode(eeepc, event); | ||
1111 | if (key) { | ||
1112 | switch (key->type) { | ||
1113 | case KE_KEY: | ||
1114 | input_report_key(eeepc->inputdev, key->keycode, | ||
1115 | 1); | ||
1116 | input_sync(eeepc->inputdev); | ||
1117 | input_report_key(eeepc->inputdev, key->keycode, | ||
1118 | 0); | ||
1119 | input_sync(eeepc->inputdev); | ||
1120 | break; | ||
1121 | } | ||
1122 | } | 1154 | } |
1123 | } | ||
1124 | |||
1125 | static struct key_entry *eeepc_get_entry_by_keycode( | ||
1126 | struct eeepc_laptop *eeepc, int code) | ||
1127 | { | ||
1128 | struct key_entry *key; | ||
1129 | |||
1130 | for (key = eeepc->keymap; key->type != KE_END; key++) | ||
1131 | if (code == key->keycode && key->type == KE_KEY) | ||
1132 | return key; | ||
1133 | 1155 | ||
1134 | return NULL; | 1156 | input->name = "Asus EeePC extra buttons"; |
1135 | } | 1157 | input->phys = EEEPC_LAPTOP_FILE "/input0"; |
1158 | input->id.bustype = BUS_HOST; | ||
1159 | input->dev.parent = &eeepc->platform_device->dev; | ||
1136 | 1160 | ||
1137 | static int eeepc_getkeycode(struct input_dev *dev, int scancode, int *keycode) | 1161 | error = sparse_keymap_setup(input, eeepc_keymap, NULL); |
1138 | { | 1162 | if (error) { |
1139 | struct eeepc_laptop *eeepc = input_get_drvdata(dev); | 1163 | pr_err("Unable to setup input device keymap\n"); |
1140 | struct key_entry *key = eeepc_get_entry_by_scancode(eeepc, scancode); | 1164 | goto err_free_dev; |
1141 | |||
1142 | if (key && key->type == KE_KEY) { | ||
1143 | *keycode = key->keycode; | ||
1144 | return 0; | ||
1145 | } | 1165 | } |
1146 | 1166 | ||
1147 | return -EINVAL; | 1167 | error = input_register_device(input); |
1148 | } | 1168 | if (error) { |
1149 | 1169 | pr_err("Unable to register input device\n"); | |
1150 | static int eeepc_setkeycode(struct input_dev *dev, int scancode, int keycode) | 1170 | goto err_free_keymap; |
1151 | { | ||
1152 | struct eeepc_laptop *eeepc = input_get_drvdata(dev); | ||
1153 | struct key_entry *key; | ||
1154 | int old_keycode; | ||
1155 | |||
1156 | if (keycode < 0 || keycode > KEY_MAX) | ||
1157 | return -EINVAL; | ||
1158 | |||
1159 | key = eeepc_get_entry_by_scancode(eeepc, scancode); | ||
1160 | if (key && key->type == KE_KEY) { | ||
1161 | old_keycode = key->keycode; | ||
1162 | key->keycode = keycode; | ||
1163 | set_bit(keycode, dev->keybit); | ||
1164 | if (!eeepc_get_entry_by_keycode(eeepc, old_keycode)) | ||
1165 | clear_bit(old_keycode, dev->keybit); | ||
1166 | return 0; | ||
1167 | } | 1171 | } |
1168 | 1172 | ||
1169 | return -EINVAL; | 1173 | eeepc->inputdev = input; |
1170 | } | ||
1171 | |||
1172 | static int eeepc_input_init(struct eeepc_laptop *eeepc) | ||
1173 | { | ||
1174 | const struct key_entry *key; | ||
1175 | int result; | ||
1176 | |||
1177 | eeepc->inputdev = input_allocate_device(); | ||
1178 | if (!eeepc->inputdev) { | ||
1179 | pr_info("Unable to allocate input device\n"); | ||
1180 | return -ENOMEM; | ||
1181 | } | ||
1182 | eeepc->inputdev->name = "Asus EeePC extra buttons"; | ||
1183 | eeepc->inputdev->dev.parent = &eeepc->platform_device->dev; | ||
1184 | eeepc->inputdev->phys = EEEPC_LAPTOP_FILE "/input0"; | ||
1185 | eeepc->inputdev->id.bustype = BUS_HOST; | ||
1186 | eeepc->inputdev->getkeycode = eeepc_getkeycode; | ||
1187 | eeepc->inputdev->setkeycode = eeepc_setkeycode; | ||
1188 | input_set_drvdata(eeepc->inputdev, eeepc); | ||
1189 | |||
1190 | eeepc->keymap = kmemdup(eeepc_keymap, sizeof(eeepc_keymap), | ||
1191 | GFP_KERNEL); | ||
1192 | for (key = eeepc_keymap; key->type != KE_END; key++) { | ||
1193 | switch (key->type) { | ||
1194 | case KE_KEY: | ||
1195 | set_bit(EV_KEY, eeepc->inputdev->evbit); | ||
1196 | set_bit(key->keycode, eeepc->inputdev->keybit); | ||
1197 | break; | ||
1198 | } | ||
1199 | } | ||
1200 | result = input_register_device(eeepc->inputdev); | ||
1201 | if (result) { | ||
1202 | pr_info("Unable to register input device\n"); | ||
1203 | input_free_device(eeepc->inputdev); | ||
1204 | return result; | ||
1205 | } | ||
1206 | return 0; | 1174 | return 0; |
1175 | |||
1176 | err_free_keymap: | ||
1177 | sparse_keymap_free(input); | ||
1178 | err_free_dev: | ||
1179 | input_free_device(input); | ||
1180 | return error; | ||
1207 | } | 1181 | } |
1208 | 1182 | ||
1209 | static void eeepc_input_exit(struct eeepc_laptop *eeepc) | 1183 | static void eeepc_input_exit(struct eeepc_laptop *eeepc) |
@@ -1253,11 +1227,59 @@ static void eeepc_acpi_notify(struct acpi_device *device, u32 event) | |||
1253 | * event will be desired value (or else ignored) | 1227 | * event will be desired value (or else ignored) |
1254 | */ | 1228 | */ |
1255 | } | 1229 | } |
1256 | eeepc_input_notify(eeepc, event); | 1230 | sparse_keymap_report_event(eeepc->inputdev, event, |
1231 | 1, true); | ||
1257 | } | 1232 | } |
1258 | } else { | 1233 | } else { |
1259 | /* Everything else is a bona-fide keypress event */ | 1234 | /* Everything else is a bona-fide keypress event */ |
1260 | eeepc_input_notify(eeepc, event); | 1235 | sparse_keymap_report_event(eeepc->inputdev, event, 1, true); |
1236 | } | ||
1237 | } | ||
1238 | |||
1239 | static void eeepc_dmi_check(struct eeepc_laptop *eeepc) | ||
1240 | { | ||
1241 | const char *model; | ||
1242 | |||
1243 | model = dmi_get_system_info(DMI_PRODUCT_NAME); | ||
1244 | if (!model) | ||
1245 | return; | ||
1246 | |||
1247 | /* | ||
1248 | * Blacklist for setting cpufv (cpu speed). | ||
1249 | * | ||
1250 | * EeePC 4G ("701") implements CFVS, but it is not supported | ||
1251 | * by the pre-installed OS, and the original option to change it | ||
1252 | * in the BIOS setup screen was removed in later versions. | ||
1253 | * | ||
1254 | * Judging by the lack of "Super Hybrid Engine" on Asus product pages, | ||
1255 | * this applies to all "701" models (4G/4G Surf/2G Surf). | ||
1256 | * | ||
1257 | * So Asus made a deliberate decision not to support it on this model. | ||
1258 | * We have several reports that using it can cause the system to hang | ||
1259 | * | ||
1260 | * The hang has also been reported on a "702" (Model name "8G"?). | ||
1261 | * | ||
1262 | * We avoid dmi_check_system() / dmi_match(), because they use | ||
1263 | * substring matching. We don't want to affect the "701SD" | ||
1264 | * and "701SDX" models, because they do support S.H.E. | ||
1265 | */ | ||
1266 | if (strcmp(model, "701") == 0 || strcmp(model, "702") == 0) { | ||
1267 | eeepc->cpufv_disabled = true; | ||
1268 | pr_info("model %s does not officially support setting cpu " | ||
1269 | "speed\n", model); | ||
1270 | pr_info("cpufv disabled to avoid instability\n"); | ||
1271 | } | ||
1272 | |||
1273 | /* | ||
1274 | * Blacklist for wlan hotplug | ||
1275 | * | ||
1276 | * Eeepc 1005HA doesn't work like others models and don't need the | ||
1277 | * hotplug code. In fact, current hotplug code seems to unplug another | ||
1278 | * device... | ||
1279 | */ | ||
1280 | if (strcmp(model, "1005HA") == 0 || strcmp(model, "1201N") == 0) { | ||
1281 | eeepc->hotplug_disabled = true; | ||
1282 | pr_info("wlan hotplug disabled\n"); | ||
1261 | } | 1283 | } |
1262 | } | 1284 | } |
1263 | 1285 | ||
@@ -1342,6 +1364,10 @@ static int __devinit eeepc_acpi_add(struct acpi_device *device) | |||
1342 | strcpy(acpi_device_class(device), EEEPC_ACPI_CLASS); | 1364 | strcpy(acpi_device_class(device), EEEPC_ACPI_CLASS); |
1343 | device->driver_data = eeepc; | 1365 | device->driver_data = eeepc; |
1344 | 1366 | ||
1367 | eeepc->hotplug_disabled = hotplug_disabled; | ||
1368 | |||
1369 | eeepc_dmi_check(eeepc); | ||
1370 | |||
1345 | result = eeepc_acpi_init(eeepc, device); | 1371 | result = eeepc_acpi_init(eeepc, device); |
1346 | if (result) | 1372 | if (result) |
1347 | goto fail_platform; | 1373 | goto fail_platform; |
@@ -1452,10 +1478,12 @@ static int __init eeepc_laptop_init(void) | |||
1452 | result = acpi_bus_register_driver(&eeepc_acpi_driver); | 1478 | result = acpi_bus_register_driver(&eeepc_acpi_driver); |
1453 | if (result < 0) | 1479 | if (result < 0) |
1454 | goto fail_acpi_driver; | 1480 | goto fail_acpi_driver; |
1481 | |||
1455 | if (!eeepc_device_present) { | 1482 | if (!eeepc_device_present) { |
1456 | result = -ENODEV; | 1483 | result = -ENODEV; |
1457 | goto fail_no_device; | 1484 | goto fail_no_device; |
1458 | } | 1485 | } |
1486 | |||
1459 | return 0; | 1487 | return 0; |
1460 | 1488 | ||
1461 | fail_no_device: | 1489 | fail_no_device: |
diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c index 5af53340da6f..3f71a605a492 100644 --- a/drivers/platform/x86/sony-laptop.c +++ b/drivers/platform/x86/sony-laptop.c | |||
@@ -1201,9 +1201,12 @@ static void sony_nc_rfkill_setup(struct acpi_device *device) | |||
1201 | /* the buffer is filled with magic numbers describing the devices | 1201 | /* the buffer is filled with magic numbers describing the devices |
1202 | * available, 0xff terminates the enumeration | 1202 | * available, 0xff terminates the enumeration |
1203 | */ | 1203 | */ |
1204 | while ((dev_code = *(device_enum->buffer.pointer + i)) != 0xff && | 1204 | for (i = 0; i < device_enum->buffer.length; i++) { |
1205 | i < device_enum->buffer.length) { | 1205 | |
1206 | i++; | 1206 | dev_code = *(device_enum->buffer.pointer + i); |
1207 | if (dev_code == 0xff) | ||
1208 | break; | ||
1209 | |||
1207 | dprintk("Radio devices, looking at 0x%.2x\n", dev_code); | 1210 | dprintk("Radio devices, looking at 0x%.2x\n", dev_code); |
1208 | 1211 | ||
1209 | if (dev_code == 0 && !sony_rfkill_devices[SONY_WIFI]) | 1212 | if (dev_code == 0 && !sony_rfkill_devices[SONY_WIFI]) |
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index fdb2e7c14506..5905936c7c60 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c | |||
@@ -1004,8 +1004,8 @@ static void dasd_handle_killed_request(struct ccw_device *cdev, | |||
1004 | if (device == NULL || | 1004 | if (device == NULL || |
1005 | device != dasd_device_from_cdev_locked(cdev) || | 1005 | device != dasd_device_from_cdev_locked(cdev) || |
1006 | strncmp(device->discipline->ebcname, (char *) &cqr->magic, 4)) { | 1006 | strncmp(device->discipline->ebcname, (char *) &cqr->magic, 4)) { |
1007 | DBF_DEV_EVENT(DBF_DEBUG, device, "invalid device in request: " | 1007 | DBF_EVENT_DEVID(DBF_DEBUG, cdev, "%s", |
1008 | "bus_id %s", dev_name(&cdev->dev)); | 1008 | "invalid device in request"); |
1009 | return; | 1009 | return; |
1010 | } | 1010 | } |
1011 | 1011 | ||
@@ -1078,8 +1078,8 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm, | |||
1078 | device = (struct dasd_device *) cqr->startdev; | 1078 | device = (struct dasd_device *) cqr->startdev; |
1079 | if (!device || | 1079 | if (!device || |
1080 | strncmp(device->discipline->ebcname, (char *) &cqr->magic, 4)) { | 1080 | strncmp(device->discipline->ebcname, (char *) &cqr->magic, 4)) { |
1081 | DBF_DEV_EVENT(DBF_DEBUG, device, "invalid device in request: " | 1081 | DBF_EVENT_DEVID(DBF_DEBUG, cdev, "%s", |
1082 | "bus_id %s", dev_name(&cdev->dev)); | 1082 | "invalid device in request"); |
1083 | return; | 1083 | return; |
1084 | } | 1084 | } |
1085 | 1085 | ||
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index 5819dc02a143..1cca21aafaba 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <asm/debug.h> | 23 | #include <asm/debug.h> |
24 | #include <asm/idals.h> | 24 | #include <asm/idals.h> |
25 | #include <asm/ebcdic.h> | 25 | #include <asm/ebcdic.h> |
26 | #include <asm/compat.h> | ||
26 | #include <asm/io.h> | 27 | #include <asm/io.h> |
27 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
28 | #include <asm/cio.h> | 29 | #include <asm/cio.h> |
@@ -2844,13 +2845,16 @@ static int dasd_symm_io(struct dasd_device *device, void __user *argp) | |||
2844 | rc = -EFAULT; | 2845 | rc = -EFAULT; |
2845 | if (copy_from_user(&usrparm, argp, sizeof(usrparm))) | 2846 | if (copy_from_user(&usrparm, argp, sizeof(usrparm))) |
2846 | goto out; | 2847 | goto out; |
2847 | #ifndef CONFIG_64BIT | 2848 | if (is_compat_task() || sizeof(long) == 4) { |
2848 | /* Make sure pointers are sane even on 31 bit. */ | 2849 | /* Make sure pointers are sane even on 31 bit. */ |
2849 | if ((usrparm.psf_data >> 32) != 0 || (usrparm.rssd_result >> 32) != 0) { | ||
2850 | rc = -EINVAL; | 2850 | rc = -EINVAL; |
2851 | goto out; | 2851 | if ((usrparm.psf_data >> 32) != 0) |
2852 | goto out; | ||
2853 | if ((usrparm.rssd_result >> 32) != 0) | ||
2854 | goto out; | ||
2855 | usrparm.psf_data &= 0x7fffffffULL; | ||
2856 | usrparm.rssd_result &= 0x7fffffffULL; | ||
2852 | } | 2857 | } |
2853 | #endif | ||
2854 | /* alloc I/O data area */ | 2858 | /* alloc I/O data area */ |
2855 | psf_data = kzalloc(usrparm.psf_data_len, GFP_KERNEL | GFP_DMA); | 2859 | psf_data = kzalloc(usrparm.psf_data_len, GFP_KERNEL | GFP_DMA); |
2856 | rssd_result = kzalloc(usrparm.rssd_result_len, GFP_KERNEL | GFP_DMA); | 2860 | rssd_result = kzalloc(usrparm.rssd_result_len, GFP_KERNEL | GFP_DMA); |
@@ -3029,7 +3033,7 @@ static void dasd_eckd_dump_sense_ccw(struct dasd_device *device, | |||
3029 | len += sprintf(page + len, KERN_ERR PRINTK_HEADER | 3033 | len += sprintf(page + len, KERN_ERR PRINTK_HEADER |
3030 | " in req: %p CS: 0x%02X DS: 0x%02X CC: 0x%02X RC: %d\n", | 3034 | " in req: %p CS: 0x%02X DS: 0x%02X CC: 0x%02X RC: %d\n", |
3031 | req, scsw_cstat(&irb->scsw), scsw_dstat(&irb->scsw), | 3035 | req, scsw_cstat(&irb->scsw), scsw_dstat(&irb->scsw), |
3032 | scsw_cc(&irb->scsw), req->intrc); | 3036 | scsw_cc(&irb->scsw), req ? req->intrc : 0); |
3033 | len += sprintf(page + len, KERN_ERR PRINTK_HEADER | 3037 | len += sprintf(page + len, KERN_ERR PRINTK_HEADER |
3034 | " device %s: Failing CCW: %p\n", | 3038 | " device %s: Failing CCW: %p\n", |
3035 | dev_name(&device->cdev->dev), | 3039 | dev_name(&device->cdev->dev), |
diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c index 478bcdb90b6f..7039d9cf0fb4 100644 --- a/drivers/s390/block/dasd_ioctl.c +++ b/drivers/s390/block/dasd_ioctl.c | |||
@@ -17,7 +17,7 @@ | |||
17 | #include <linux/fs.h> | 17 | #include <linux/fs.h> |
18 | #include <linux/blkpg.h> | 18 | #include <linux/blkpg.h> |
19 | #include <linux/smp_lock.h> | 19 | #include <linux/smp_lock.h> |
20 | 20 | #include <asm/compat.h> | |
21 | #include <asm/ccwdev.h> | 21 | #include <asm/ccwdev.h> |
22 | #include <asm/cmb.h> | 22 | #include <asm/cmb.h> |
23 | #include <asm/uaccess.h> | 23 | #include <asm/uaccess.h> |
@@ -260,7 +260,7 @@ static int dasd_ioctl_information(struct dasd_block *block, | |||
260 | struct ccw_dev_id dev_id; | 260 | struct ccw_dev_id dev_id; |
261 | 261 | ||
262 | base = block->base; | 262 | base = block->base; |
263 | if (!base->discipline->fill_info) | 263 | if (!base->discipline || !base->discipline->fill_info) |
264 | return -EINVAL; | 264 | return -EINVAL; |
265 | 265 | ||
266 | dasd_info = kzalloc(sizeof(struct dasd_information2_t), GFP_KERNEL); | 266 | dasd_info = kzalloc(sizeof(struct dasd_information2_t), GFP_KERNEL); |
@@ -303,10 +303,7 @@ static int dasd_ioctl_information(struct dasd_block *block, | |||
303 | dasd_info->features |= | 303 | dasd_info->features |= |
304 | ((base->features & DASD_FEATURE_READONLY) != 0); | 304 | ((base->features & DASD_FEATURE_READONLY) != 0); |
305 | 305 | ||
306 | if (base->discipline) | 306 | memcpy(dasd_info->type, base->discipline->name, 4); |
307 | memcpy(dasd_info->type, base->discipline->name, 4); | ||
308 | else | ||
309 | memcpy(dasd_info->type, "none", 4); | ||
310 | 307 | ||
311 | if (block->request_queue->request_fn) { | 308 | if (block->request_queue->request_fn) { |
312 | struct list_head *l; | 309 | struct list_head *l; |
@@ -358,9 +355,8 @@ dasd_ioctl_set_ro(struct block_device *bdev, void __user *argp) | |||
358 | } | 355 | } |
359 | 356 | ||
360 | static int dasd_ioctl_readall_cmb(struct dasd_block *block, unsigned int cmd, | 357 | static int dasd_ioctl_readall_cmb(struct dasd_block *block, unsigned int cmd, |
361 | unsigned long arg) | 358 | struct cmbdata __user *argp) |
362 | { | 359 | { |
363 | struct cmbdata __user *argp = (void __user *) arg; | ||
364 | size_t size = _IOC_SIZE(cmd); | 360 | size_t size = _IOC_SIZE(cmd); |
365 | struct cmbdata data; | 361 | struct cmbdata data; |
366 | int ret; | 362 | int ret; |
@@ -376,7 +372,12 @@ dasd_do_ioctl(struct block_device *bdev, fmode_t mode, | |||
376 | unsigned int cmd, unsigned long arg) | 372 | unsigned int cmd, unsigned long arg) |
377 | { | 373 | { |
378 | struct dasd_block *block = bdev->bd_disk->private_data; | 374 | struct dasd_block *block = bdev->bd_disk->private_data; |
379 | void __user *argp = (void __user *)arg; | 375 | void __user *argp; |
376 | |||
377 | if (is_compat_task()) | ||
378 | argp = compat_ptr(arg); | ||
379 | else | ||
380 | argp = (void __user *)arg; | ||
380 | 381 | ||
381 | if (!block) | 382 | if (!block) |
382 | return -ENODEV; | 383 | return -ENODEV; |
@@ -414,7 +415,7 @@ dasd_do_ioctl(struct block_device *bdev, fmode_t mode, | |||
414 | case BIODASDCMFDISABLE: | 415 | case BIODASDCMFDISABLE: |
415 | return disable_cmf(block->base->cdev); | 416 | return disable_cmf(block->base->cdev); |
416 | case BIODASDREADALLCMB: | 417 | case BIODASDREADALLCMB: |
417 | return dasd_ioctl_readall_cmb(block, cmd, arg); | 418 | return dasd_ioctl_readall_cmb(block, cmd, argp); |
418 | default: | 419 | default: |
419 | /* if the discipline has an ioctl method try it. */ | 420 | /* if the discipline has an ioctl method try it. */ |
420 | if (block->base->discipline->ioctl) { | 421 | if (block->base->discipline->ioctl) { |
diff --git a/drivers/s390/block/dasd_proc.c b/drivers/s390/block/dasd_proc.c index 6315fbd8e68b..71f95f54866f 100644 --- a/drivers/s390/block/dasd_proc.c +++ b/drivers/s390/block/dasd_proc.c | |||
@@ -72,7 +72,7 @@ dasd_devices_show(struct seq_file *m, void *v) | |||
72 | /* Print device number. */ | 72 | /* Print device number. */ |
73 | seq_printf(m, "%s", dev_name(&device->cdev->dev)); | 73 | seq_printf(m, "%s", dev_name(&device->cdev->dev)); |
74 | /* Print discipline string. */ | 74 | /* Print discipline string. */ |
75 | if (device != NULL && device->discipline != NULL) | 75 | if (device->discipline != NULL) |
76 | seq_printf(m, "(%s)", device->discipline->name); | 76 | seq_printf(m, "(%s)", device->discipline->name); |
77 | else | 77 | else |
78 | seq_printf(m, "(none)"); | 78 | seq_printf(m, "(none)"); |
@@ -92,10 +92,7 @@ dasd_devices_show(struct seq_file *m, void *v) | |||
92 | substr = (device->features & DASD_FEATURE_READONLY) ? "(ro)" : " "; | 92 | substr = (device->features & DASD_FEATURE_READONLY) ? "(ro)" : " "; |
93 | seq_printf(m, "%4s: ", substr); | 93 | seq_printf(m, "%4s: ", substr); |
94 | /* Print device status information. */ | 94 | /* Print device status information. */ |
95 | switch ((device != NULL) ? device->state : -1) { | 95 | switch (device->state) { |
96 | case -1: | ||
97 | seq_printf(m, "unknown"); | ||
98 | break; | ||
99 | case DASD_STATE_NEW: | 96 | case DASD_STATE_NEW: |
100 | seq_printf(m, "new"); | 97 | seq_printf(m, "new"); |
101 | break; | 98 | break; |
diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c index 9d61683b5633..59ec073724bf 100644 --- a/drivers/s390/char/con3215.c +++ b/drivers/s390/char/con3215.c | |||
@@ -1037,22 +1037,6 @@ static void tty3215_flush_buffer(struct tty_struct *tty) | |||
1037 | } | 1037 | } |
1038 | 1038 | ||
1039 | /* | 1039 | /* |
1040 | * Currently we don't have any io controls for 3215 ttys | ||
1041 | */ | ||
1042 | static int tty3215_ioctl(struct tty_struct *tty, struct file * file, | ||
1043 | unsigned int cmd, unsigned long arg) | ||
1044 | { | ||
1045 | if (tty->flags & (1 << TTY_IO_ERROR)) | ||
1046 | return -EIO; | ||
1047 | |||
1048 | switch (cmd) { | ||
1049 | default: | ||
1050 | return -ENOIOCTLCMD; | ||
1051 | } | ||
1052 | return 0; | ||
1053 | } | ||
1054 | |||
1055 | /* | ||
1056 | * Disable reading from a 3215 tty | 1040 | * Disable reading from a 3215 tty |
1057 | */ | 1041 | */ |
1058 | static void tty3215_throttle(struct tty_struct * tty) | 1042 | static void tty3215_throttle(struct tty_struct * tty) |
@@ -1117,7 +1101,6 @@ static const struct tty_operations tty3215_ops = { | |||
1117 | .write_room = tty3215_write_room, | 1101 | .write_room = tty3215_write_room, |
1118 | .chars_in_buffer = tty3215_chars_in_buffer, | 1102 | .chars_in_buffer = tty3215_chars_in_buffer, |
1119 | .flush_buffer = tty3215_flush_buffer, | 1103 | .flush_buffer = tty3215_flush_buffer, |
1120 | .ioctl = tty3215_ioctl, | ||
1121 | .throttle = tty3215_throttle, | 1104 | .throttle = tty3215_throttle, |
1122 | .unthrottle = tty3215_unthrottle, | 1105 | .unthrottle = tty3215_unthrottle, |
1123 | .stop = tty3215_stop, | 1106 | .stop = tty3215_stop, |
diff --git a/drivers/s390/char/fs3270.c b/drivers/s390/char/fs3270.c index 247b2b934728..31c59b0d6df0 100644 --- a/drivers/s390/char/fs3270.c +++ b/drivers/s390/char/fs3270.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | #include <linux/smp_lock.h> | 16 | #include <linux/smp_lock.h> |
17 | 17 | ||
18 | #include <asm/compat.h> | ||
18 | #include <asm/ccwdev.h> | 19 | #include <asm/ccwdev.h> |
19 | #include <asm/cio.h> | 20 | #include <asm/cio.h> |
20 | #include <asm/ebcdic.h> | 21 | #include <asm/ebcdic.h> |
@@ -322,6 +323,7 @@ fs3270_write(struct file *filp, const char __user *data, size_t count, loff_t *o | |||
322 | static long | 323 | static long |
323 | fs3270_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | 324 | fs3270_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) |
324 | { | 325 | { |
326 | char __user *argp; | ||
325 | struct fs3270 *fp; | 327 | struct fs3270 *fp; |
326 | struct raw3270_iocb iocb; | 328 | struct raw3270_iocb iocb; |
327 | int rc; | 329 | int rc; |
@@ -329,6 +331,10 @@ fs3270_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
329 | fp = filp->private_data; | 331 | fp = filp->private_data; |
330 | if (!fp) | 332 | if (!fp) |
331 | return -ENODEV; | 333 | return -ENODEV; |
334 | if (is_compat_task()) | ||
335 | argp = compat_ptr(arg); | ||
336 | else | ||
337 | argp = (char __user *)arg; | ||
332 | rc = 0; | 338 | rc = 0; |
333 | mutex_lock(&fs3270_mutex); | 339 | mutex_lock(&fs3270_mutex); |
334 | switch (cmd) { | 340 | switch (cmd) { |
@@ -339,10 +345,10 @@ fs3270_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
339 | fp->write_command = arg; | 345 | fp->write_command = arg; |
340 | break; | 346 | break; |
341 | case TUBGETI: | 347 | case TUBGETI: |
342 | rc = put_user(fp->read_command, (char __user *) arg); | 348 | rc = put_user(fp->read_command, argp); |
343 | break; | 349 | break; |
344 | case TUBGETO: | 350 | case TUBGETO: |
345 | rc = put_user(fp->write_command,(char __user *) arg); | 351 | rc = put_user(fp->write_command, argp); |
346 | break; | 352 | break; |
347 | case TUBGETMOD: | 353 | case TUBGETMOD: |
348 | iocb.model = fp->view.model; | 354 | iocb.model = fp->view.model; |
@@ -351,8 +357,7 @@ fs3270_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
351 | iocb.pf_cnt = 24; | 357 | iocb.pf_cnt = 24; |
352 | iocb.re_cnt = 20; | 358 | iocb.re_cnt = 20; |
353 | iocb.map = 0; | 359 | iocb.map = 0; |
354 | if (copy_to_user((char __user *) arg, &iocb, | 360 | if (copy_to_user(argp, &iocb, sizeof(struct raw3270_iocb))) |
355 | sizeof(struct raw3270_iocb))) | ||
356 | rc = -EFAULT; | 361 | rc = -EFAULT; |
357 | break; | 362 | break; |
358 | } | 363 | } |
@@ -511,8 +516,8 @@ static const struct file_operations fs3270_fops = { | |||
511 | .write = fs3270_write, /* write */ | 516 | .write = fs3270_write, /* write */ |
512 | .unlocked_ioctl = fs3270_ioctl, /* ioctl */ | 517 | .unlocked_ioctl = fs3270_ioctl, /* ioctl */ |
513 | .compat_ioctl = fs3270_ioctl, /* ioctl */ | 518 | .compat_ioctl = fs3270_ioctl, /* ioctl */ |
514 | .open = fs3270_open, /* open */ | 519 | .open = fs3270_open, /* open */ |
515 | .release = fs3270_close, /* release */ | 520 | .release = fs3270_close, /* release */ |
516 | }; | 521 | }; |
517 | 522 | ||
518 | /* | 523 | /* |
diff --git a/drivers/s390/char/sclp_vt220.c b/drivers/s390/char/sclp_vt220.c index b9d2a007e93b..3796ffdb8479 100644 --- a/drivers/s390/char/sclp_vt220.c +++ b/drivers/s390/char/sclp_vt220.c | |||
@@ -495,6 +495,10 @@ sclp_vt220_open(struct tty_struct *tty, struct file *filp) | |||
495 | if (tty->driver_data == NULL) | 495 | if (tty->driver_data == NULL) |
496 | return -ENOMEM; | 496 | return -ENOMEM; |
497 | tty->low_latency = 0; | 497 | tty->low_latency = 0; |
498 | if (!tty->winsize.ws_row && !tty->winsize.ws_col) { | ||
499 | tty->winsize.ws_row = 24; | ||
500 | tty->winsize.ws_col = 80; | ||
501 | } | ||
498 | } | 502 | } |
499 | return 0; | 503 | return 0; |
500 | } | 504 | } |
diff --git a/drivers/s390/char/tape_block.c b/drivers/s390/char/tape_block.c index 96816149368a..8d3d720737da 100644 --- a/drivers/s390/char/tape_block.c +++ b/drivers/s390/char/tape_block.c | |||
@@ -46,8 +46,6 @@ | |||
46 | */ | 46 | */ |
47 | static int tapeblock_open(struct block_device *, fmode_t); | 47 | static int tapeblock_open(struct block_device *, fmode_t); |
48 | static int tapeblock_release(struct gendisk *, fmode_t); | 48 | static int tapeblock_release(struct gendisk *, fmode_t); |
49 | static int tapeblock_ioctl(struct block_device *, fmode_t, unsigned int, | ||
50 | unsigned long); | ||
51 | static int tapeblock_medium_changed(struct gendisk *); | 49 | static int tapeblock_medium_changed(struct gendisk *); |
52 | static int tapeblock_revalidate_disk(struct gendisk *); | 50 | static int tapeblock_revalidate_disk(struct gendisk *); |
53 | 51 | ||
@@ -55,7 +53,6 @@ static const struct block_device_operations tapeblock_fops = { | |||
55 | .owner = THIS_MODULE, | 53 | .owner = THIS_MODULE, |
56 | .open = tapeblock_open, | 54 | .open = tapeblock_open, |
57 | .release = tapeblock_release, | 55 | .release = tapeblock_release, |
58 | .ioctl = tapeblock_ioctl, | ||
59 | .media_changed = tapeblock_medium_changed, | 56 | .media_changed = tapeblock_medium_changed, |
60 | .revalidate_disk = tapeblock_revalidate_disk, | 57 | .revalidate_disk = tapeblock_revalidate_disk, |
61 | }; | 58 | }; |
@@ -416,42 +413,6 @@ tapeblock_release(struct gendisk *disk, fmode_t mode) | |||
416 | } | 413 | } |
417 | 414 | ||
418 | /* | 415 | /* |
419 | * Support of some generic block device IOCTLs. | ||
420 | */ | ||
421 | static int | ||
422 | tapeblock_ioctl( | ||
423 | struct block_device * bdev, | ||
424 | fmode_t mode, | ||
425 | unsigned int command, | ||
426 | unsigned long arg | ||
427 | ) { | ||
428 | int rc; | ||
429 | int minor; | ||
430 | struct gendisk *disk = bdev->bd_disk; | ||
431 | struct tape_device *device; | ||
432 | |||
433 | rc = 0; | ||
434 | BUG_ON(!disk); | ||
435 | device = disk->private_data; | ||
436 | BUG_ON(!device); | ||
437 | minor = MINOR(bdev->bd_dev); | ||
438 | |||
439 | DBF_LH(6, "tapeblock_ioctl(0x%0x)\n", command); | ||
440 | DBF_LH(6, "device = %d:%d\n", tapeblock_major, minor); | ||
441 | |||
442 | switch (command) { | ||
443 | /* Refuse some IOCTL calls without complaining (mount). */ | ||
444 | case 0x5310: /* CDROMMULTISESSION */ | ||
445 | rc = -EINVAL; | ||
446 | break; | ||
447 | default: | ||
448 | rc = -EINVAL; | ||
449 | } | ||
450 | |||
451 | return rc; | ||
452 | } | ||
453 | |||
454 | /* | ||
455 | * Initialize block device frontend. | 416 | * Initialize block device frontend. |
456 | */ | 417 | */ |
457 | int | 418 | int |
diff --git a/drivers/s390/char/tape_char.c b/drivers/s390/char/tape_char.c index 2125ec7d95f0..539045acaad4 100644 --- a/drivers/s390/char/tape_char.c +++ b/drivers/s390/char/tape_char.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/proc_fs.h> | 18 | #include <linux/proc_fs.h> |
19 | #include <linux/mtio.h> | 19 | #include <linux/mtio.h> |
20 | #include <linux/smp_lock.h> | 20 | #include <linux/smp_lock.h> |
21 | #include <linux/compat.h> | ||
21 | 22 | ||
22 | #include <asm/uaccess.h> | 23 | #include <asm/uaccess.h> |
23 | 24 | ||
@@ -37,8 +38,9 @@ static ssize_t tapechar_write(struct file *, const char __user *, size_t, loff_t | |||
37 | static int tapechar_open(struct inode *,struct file *); | 38 | static int tapechar_open(struct inode *,struct file *); |
38 | static int tapechar_release(struct inode *,struct file *); | 39 | static int tapechar_release(struct inode *,struct file *); |
39 | static long tapechar_ioctl(struct file *, unsigned int, unsigned long); | 40 | static long tapechar_ioctl(struct file *, unsigned int, unsigned long); |
40 | static long tapechar_compat_ioctl(struct file *, unsigned int, | 41 | #ifdef CONFIG_COMPAT |
41 | unsigned long); | 42 | static long tapechar_compat_ioctl(struct file *, unsigned int, unsigned long); |
43 | #endif | ||
42 | 44 | ||
43 | static const struct file_operations tape_fops = | 45 | static const struct file_operations tape_fops = |
44 | { | 46 | { |
@@ -46,7 +48,9 @@ static const struct file_operations tape_fops = | |||
46 | .read = tapechar_read, | 48 | .read = tapechar_read, |
47 | .write = tapechar_write, | 49 | .write = tapechar_write, |
48 | .unlocked_ioctl = tapechar_ioctl, | 50 | .unlocked_ioctl = tapechar_ioctl, |
51 | #ifdef CONFIG_COMPAT | ||
49 | .compat_ioctl = tapechar_compat_ioctl, | 52 | .compat_ioctl = tapechar_compat_ioctl, |
53 | #endif | ||
50 | .open = tapechar_open, | 54 | .open = tapechar_open, |
51 | .release = tapechar_release, | 55 | .release = tapechar_release, |
52 | }; | 56 | }; |
@@ -457,15 +461,22 @@ tapechar_ioctl(struct file *filp, unsigned int no, unsigned long data) | |||
457 | return rc; | 461 | return rc; |
458 | } | 462 | } |
459 | 463 | ||
464 | #ifdef CONFIG_COMPAT | ||
460 | static long | 465 | static long |
461 | tapechar_compat_ioctl(struct file *filp, unsigned int no, unsigned long data) | 466 | tapechar_compat_ioctl(struct file *filp, unsigned int no, unsigned long data) |
462 | { | 467 | { |
463 | struct tape_device *device = filp->private_data; | 468 | struct tape_device *device = filp->private_data; |
464 | int rval = -ENOIOCTLCMD; | 469 | int rval = -ENOIOCTLCMD; |
470 | unsigned long argp; | ||
465 | 471 | ||
472 | /* The 'arg' argument of any ioctl function may only be used for | ||
473 | * pointers because of the compat pointer conversion. | ||
474 | * Consider this when adding new ioctls. | ||
475 | */ | ||
476 | argp = (unsigned long) compat_ptr(data); | ||
466 | if (device->discipline->ioctl_fn) { | 477 | if (device->discipline->ioctl_fn) { |
467 | mutex_lock(&device->mutex); | 478 | mutex_lock(&device->mutex); |
468 | rval = device->discipline->ioctl_fn(device, no, data); | 479 | rval = device->discipline->ioctl_fn(device, no, argp); |
469 | mutex_unlock(&device->mutex); | 480 | mutex_unlock(&device->mutex); |
470 | if (rval == -EINVAL) | 481 | if (rval == -EINVAL) |
471 | rval = -ENOIOCTLCMD; | 482 | rval = -ENOIOCTLCMD; |
@@ -473,6 +484,7 @@ tapechar_compat_ioctl(struct file *filp, unsigned int no, unsigned long data) | |||
473 | 484 | ||
474 | return rval; | 485 | return rval; |
475 | } | 486 | } |
487 | #endif /* CONFIG_COMPAT */ | ||
476 | 488 | ||
477 | /* | 489 | /* |
478 | * Initialize character device frontend. | 490 | * Initialize character device frontend. |
diff --git a/drivers/s390/char/vmcp.c b/drivers/s390/char/vmcp.c index a6087cec55b4..921dcda77676 100644 --- a/drivers/s390/char/vmcp.c +++ b/drivers/s390/char/vmcp.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
20 | #include <linux/miscdevice.h> | 20 | #include <linux/miscdevice.h> |
21 | #include <linux/module.h> | 21 | #include <linux/module.h> |
22 | #include <asm/compat.h> | ||
22 | #include <asm/cpcmd.h> | 23 | #include <asm/cpcmd.h> |
23 | #include <asm/debug.h> | 24 | #include <asm/debug.h> |
24 | #include <asm/uaccess.h> | 25 | #include <asm/uaccess.h> |
@@ -139,21 +140,26 @@ vmcp_write(struct file *file, const char __user *buff, size_t count, | |||
139 | static long vmcp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | 140 | static long vmcp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
140 | { | 141 | { |
141 | struct vmcp_session *session; | 142 | struct vmcp_session *session; |
143 | int __user *argp; | ||
142 | int temp; | 144 | int temp; |
143 | 145 | ||
144 | session = (struct vmcp_session *)file->private_data; | 146 | session = (struct vmcp_session *)file->private_data; |
147 | if (is_compat_task()) | ||
148 | argp = compat_ptr(arg); | ||
149 | else | ||
150 | argp = (int __user *)arg; | ||
145 | if (mutex_lock_interruptible(&session->mutex)) | 151 | if (mutex_lock_interruptible(&session->mutex)) |
146 | return -ERESTARTSYS; | 152 | return -ERESTARTSYS; |
147 | switch (cmd) { | 153 | switch (cmd) { |
148 | case VMCP_GETCODE: | 154 | case VMCP_GETCODE: |
149 | temp = session->resp_code; | 155 | temp = session->resp_code; |
150 | mutex_unlock(&session->mutex); | 156 | mutex_unlock(&session->mutex); |
151 | return put_user(temp, (int __user *)arg); | 157 | return put_user(temp, argp); |
152 | case VMCP_SETBUF: | 158 | case VMCP_SETBUF: |
153 | free_pages((unsigned long)session->response, | 159 | free_pages((unsigned long)session->response, |
154 | get_order(session->bufsize)); | 160 | get_order(session->bufsize)); |
155 | session->response=NULL; | 161 | session->response=NULL; |
156 | temp = get_user(session->bufsize, (int __user *)arg); | 162 | temp = get_user(session->bufsize, argp); |
157 | if (get_order(session->bufsize) > 8) { | 163 | if (get_order(session->bufsize) > 8) { |
158 | session->bufsize = PAGE_SIZE; | 164 | session->bufsize = PAGE_SIZE; |
159 | temp = -EINVAL; | 165 | temp = -EINVAL; |
@@ -163,7 +169,7 @@ static long vmcp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
163 | case VMCP_GETSIZE: | 169 | case VMCP_GETSIZE: |
164 | temp = session->resp_size; | 170 | temp = session->resp_size; |
165 | mutex_unlock(&session->mutex); | 171 | mutex_unlock(&session->mutex); |
166 | return put_user(temp, (int __user *)arg); | 172 | return put_user(temp, argp); |
167 | default: | 173 | default: |
168 | mutex_unlock(&session->mutex); | 174 | mutex_unlock(&session->mutex); |
169 | return -ENOIOCTLCMD; | 175 | return -ENOIOCTLCMD; |
diff --git a/drivers/s390/cio/chsc_sch.c b/drivers/s390/cio/chsc_sch.c index cc5144b6f9d9..c84ac9443079 100644 --- a/drivers/s390/cio/chsc_sch.c +++ b/drivers/s390/cio/chsc_sch.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/uaccess.h> | 12 | #include <linux/uaccess.h> |
13 | #include <linux/miscdevice.h> | 13 | #include <linux/miscdevice.h> |
14 | 14 | ||
15 | #include <asm/compat.h> | ||
15 | #include <asm/cio.h> | 16 | #include <asm/cio.h> |
16 | #include <asm/chsc.h> | 17 | #include <asm/chsc.h> |
17 | #include <asm/isc.h> | 18 | #include <asm/isc.h> |
@@ -770,24 +771,30 @@ out_free: | |||
770 | static long chsc_ioctl(struct file *filp, unsigned int cmd, | 771 | static long chsc_ioctl(struct file *filp, unsigned int cmd, |
771 | unsigned long arg) | 772 | unsigned long arg) |
772 | { | 773 | { |
774 | void __user *argp; | ||
775 | |||
773 | CHSC_MSG(2, "chsc_ioctl called, cmd=%x\n", cmd); | 776 | CHSC_MSG(2, "chsc_ioctl called, cmd=%x\n", cmd); |
777 | if (is_compat_task()) | ||
778 | argp = compat_ptr(arg); | ||
779 | else | ||
780 | argp = (void __user *)arg; | ||
774 | switch (cmd) { | 781 | switch (cmd) { |
775 | case CHSC_START: | 782 | case CHSC_START: |
776 | return chsc_ioctl_start((void __user *)arg); | 783 | return chsc_ioctl_start(argp); |
777 | case CHSC_INFO_CHANNEL_PATH: | 784 | case CHSC_INFO_CHANNEL_PATH: |
778 | return chsc_ioctl_info_channel_path((void __user *)arg); | 785 | return chsc_ioctl_info_channel_path(argp); |
779 | case CHSC_INFO_CU: | 786 | case CHSC_INFO_CU: |
780 | return chsc_ioctl_info_cu((void __user *)arg); | 787 | return chsc_ioctl_info_cu(argp); |
781 | case CHSC_INFO_SCH_CU: | 788 | case CHSC_INFO_SCH_CU: |
782 | return chsc_ioctl_info_sch_cu((void __user *)arg); | 789 | return chsc_ioctl_info_sch_cu(argp); |
783 | case CHSC_INFO_CI: | 790 | case CHSC_INFO_CI: |
784 | return chsc_ioctl_conf_info((void __user *)arg); | 791 | return chsc_ioctl_conf_info(argp); |
785 | case CHSC_INFO_CCL: | 792 | case CHSC_INFO_CCL: |
786 | return chsc_ioctl_conf_comp_list((void __user *)arg); | 793 | return chsc_ioctl_conf_comp_list(argp); |
787 | case CHSC_INFO_CPD: | 794 | case CHSC_INFO_CPD: |
788 | return chsc_ioctl_chpd((void __user *)arg); | 795 | return chsc_ioctl_chpd(argp); |
789 | case CHSC_INFO_DCAL: | 796 | case CHSC_INFO_DCAL: |
790 | return chsc_ioctl_dcal((void __user *)arg); | 797 | return chsc_ioctl_dcal(argp); |
791 | default: /* unknown ioctl number */ | 798 | default: /* unknown ioctl number */ |
792 | return -ENOIOCTLCMD; | 799 | return -ENOIOCTLCMD; |
793 | } | 800 | } |
diff --git a/drivers/s390/crypto/zcrypt_api.c b/drivers/s390/crypto/zcrypt_api.c index 0d4d18bdd45c..c68be24e27d9 100644 --- a/drivers/s390/crypto/zcrypt_api.c +++ b/drivers/s390/crypto/zcrypt_api.c | |||
@@ -393,10 +393,12 @@ static long zcrypt_rsa_crt(struct ica_rsa_modexpo_crt *crt) | |||
393 | * u_mult_inv > 128 bytes. | 393 | * u_mult_inv > 128 bytes. |
394 | */ | 394 | */ |
395 | if (copied == 0) { | 395 | if (copied == 0) { |
396 | int len; | 396 | unsigned int len; |
397 | spin_unlock_bh(&zcrypt_device_lock); | 397 | spin_unlock_bh(&zcrypt_device_lock); |
398 | /* len is max 256 / 2 - 120 = 8 */ | 398 | /* len is max 256 / 2 - 120 = 8 */ |
399 | len = crt->inputdatalength / 2 - 120; | 399 | len = crt->inputdatalength / 2 - 120; |
400 | if (len > sizeof(z1)) | ||
401 | return -EFAULT; | ||
400 | z1 = z2 = z3 = 0; | 402 | z1 = z2 = z3 = 0; |
401 | if (copy_from_user(&z1, crt->np_prime, len) || | 403 | if (copy_from_user(&z1, crt->np_prime, len) || |
402 | copy_from_user(&z2, crt->bp_key, len) || | 404 | copy_from_user(&z2, crt->bp_key, len) || |
diff --git a/drivers/s390/crypto/zcrypt_pcicc.c b/drivers/s390/crypto/zcrypt_pcicc.c index a23726a0735c..142f72a2ca5a 100644 --- a/drivers/s390/crypto/zcrypt_pcicc.c +++ b/drivers/s390/crypto/zcrypt_pcicc.c | |||
@@ -373,6 +373,8 @@ static int convert_type86(struct zcrypt_device *zdev, | |||
373 | zdev->max_mod_size = PCICC_MAX_MOD_SIZE_OLD; | 373 | zdev->max_mod_size = PCICC_MAX_MOD_SIZE_OLD; |
374 | return -EAGAIN; | 374 | return -EAGAIN; |
375 | } | 375 | } |
376 | if (service_rc == 8 && service_rs == 72) | ||
377 | return -EINVAL; | ||
376 | zdev->online = 0; | 378 | zdev->online = 0; |
377 | return -EAGAIN; /* repeat the request on a different device. */ | 379 | return -EAGAIN; /* repeat the request on a different device. */ |
378 | } | 380 | } |
diff --git a/drivers/s390/crypto/zcrypt_pcixcc.c b/drivers/s390/crypto/zcrypt_pcixcc.c index 79c120578e61..68f3e6204db8 100644 --- a/drivers/s390/crypto/zcrypt_pcixcc.c +++ b/drivers/s390/crypto/zcrypt_pcixcc.c | |||
@@ -470,6 +470,8 @@ static int convert_type86_ica(struct zcrypt_device *zdev, | |||
470 | } | 470 | } |
471 | if (service_rc == 12 && service_rs == 769) | 471 | if (service_rc == 12 && service_rs == 769) |
472 | return -EINVAL; | 472 | return -EINVAL; |
473 | if (service_rc == 8 && service_rs == 72) | ||
474 | return -EINVAL; | ||
473 | zdev->online = 0; | 475 | zdev->online = 0; |
474 | return -EAGAIN; /* repeat the request on a different device. */ | 476 | return -EAGAIN; /* repeat the request on a different device. */ |
475 | } | 477 | } |
diff --git a/drivers/s390/scsi/zfcp_cfdc.c b/drivers/s390/scsi/zfcp_cfdc.c index f932400e980a..0eb6eefd2c1a 100644 --- a/drivers/s390/scsi/zfcp_cfdc.c +++ b/drivers/s390/scsi/zfcp_cfdc.c | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #include <linux/types.h> | 13 | #include <linux/types.h> |
14 | #include <linux/miscdevice.h> | 14 | #include <linux/miscdevice.h> |
15 | #include <asm/compat.h> | ||
15 | #include <asm/ccwdev.h> | 16 | #include <asm/ccwdev.h> |
16 | #include "zfcp_def.h" | 17 | #include "zfcp_def.h" |
17 | #include "zfcp_ext.h" | 18 | #include "zfcp_ext.h" |
@@ -163,7 +164,7 @@ static void zfcp_cfdc_req_to_sense(struct zfcp_cfdc_data *data, | |||
163 | } | 164 | } |
164 | 165 | ||
165 | static long zfcp_cfdc_dev_ioctl(struct file *file, unsigned int command, | 166 | static long zfcp_cfdc_dev_ioctl(struct file *file, unsigned int command, |
166 | unsigned long buffer) | 167 | unsigned long arg) |
167 | { | 168 | { |
168 | struct zfcp_cfdc_data *data; | 169 | struct zfcp_cfdc_data *data; |
169 | struct zfcp_cfdc_data __user *data_user; | 170 | struct zfcp_cfdc_data __user *data_user; |
@@ -175,7 +176,11 @@ static long zfcp_cfdc_dev_ioctl(struct file *file, unsigned int command, | |||
175 | if (command != ZFCP_CFDC_IOC) | 176 | if (command != ZFCP_CFDC_IOC) |
176 | return -ENOTTY; | 177 | return -ENOTTY; |
177 | 178 | ||
178 | data_user = (void __user *) buffer; | 179 | if (is_compat_task()) |
180 | data_user = compat_ptr(arg); | ||
181 | else | ||
182 | data_user = (void __user *)arg; | ||
183 | |||
179 | if (!data_user) | 184 | if (!data_user) |
180 | return -EINVAL; | 185 | return -EINVAL; |
181 | 186 | ||
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c index 84450955ae11..7369c8911bcf 100644 --- a/drivers/s390/scsi/zfcp_dbf.c +++ b/drivers/s390/scsi/zfcp_dbf.c | |||
@@ -327,7 +327,7 @@ static void zfcp_dbf_hba_view_response(char **p, | |||
327 | break; | 327 | break; |
328 | zfcp_dbf_out(p, "scsi_cmnd", "0x%0Lx", r->u.fcp.cmnd); | 328 | zfcp_dbf_out(p, "scsi_cmnd", "0x%0Lx", r->u.fcp.cmnd); |
329 | zfcp_dbf_out(p, "scsi_serial", "0x%016Lx", r->u.fcp.serial); | 329 | zfcp_dbf_out(p, "scsi_serial", "0x%016Lx", r->u.fcp.serial); |
330 | p += sprintf(*p, "\n"); | 330 | *p += sprintf(*p, "\n"); |
331 | break; | 331 | break; |
332 | 332 | ||
333 | case FSF_QTCB_OPEN_PORT_WITH_DID: | 333 | case FSF_QTCB_OPEN_PORT_WITH_DID: |
diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h index 03dec832b465..66bdb34143cb 100644 --- a/drivers/s390/scsi/zfcp_ext.h +++ b/drivers/s390/scsi/zfcp_ext.h | |||
@@ -108,6 +108,7 @@ extern void zfcp_fc_wka_ports_force_offline(struct zfcp_fc_wka_ports *); | |||
108 | extern int zfcp_fc_gs_setup(struct zfcp_adapter *); | 108 | extern int zfcp_fc_gs_setup(struct zfcp_adapter *); |
109 | extern void zfcp_fc_gs_destroy(struct zfcp_adapter *); | 109 | extern void zfcp_fc_gs_destroy(struct zfcp_adapter *); |
110 | extern int zfcp_fc_exec_bsg_job(struct fc_bsg_job *); | 110 | extern int zfcp_fc_exec_bsg_job(struct fc_bsg_job *); |
111 | extern int zfcp_fc_timeout_bsg_job(struct fc_bsg_job *); | ||
111 | 112 | ||
112 | /* zfcp_fsf.c */ | 113 | /* zfcp_fsf.c */ |
113 | extern int zfcp_fsf_open_port(struct zfcp_erp_action *); | 114 | extern int zfcp_fsf_open_port(struct zfcp_erp_action *); |
@@ -129,9 +130,9 @@ extern void zfcp_fsf_req_dismiss_all(struct zfcp_adapter *); | |||
129 | extern int zfcp_fsf_status_read(struct zfcp_qdio *); | 130 | extern int zfcp_fsf_status_read(struct zfcp_qdio *); |
130 | extern int zfcp_status_read_refill(struct zfcp_adapter *adapter); | 131 | extern int zfcp_status_read_refill(struct zfcp_adapter *adapter); |
131 | extern int zfcp_fsf_send_ct(struct zfcp_fc_wka_port *, struct zfcp_fsf_ct_els *, | 132 | extern int zfcp_fsf_send_ct(struct zfcp_fc_wka_port *, struct zfcp_fsf_ct_els *, |
132 | mempool_t *); | 133 | mempool_t *, unsigned int); |
133 | extern int zfcp_fsf_send_els(struct zfcp_adapter *, u32, | 134 | extern int zfcp_fsf_send_els(struct zfcp_adapter *, u32, |
134 | struct zfcp_fsf_ct_els *); | 135 | struct zfcp_fsf_ct_els *, unsigned int); |
135 | extern int zfcp_fsf_send_fcp_command_task(struct zfcp_unit *, | 136 | extern int zfcp_fsf_send_fcp_command_task(struct zfcp_unit *, |
136 | struct scsi_cmnd *); | 137 | struct scsi_cmnd *); |
137 | extern void zfcp_fsf_req_free(struct zfcp_fsf_req *); | 138 | extern void zfcp_fsf_req_free(struct zfcp_fsf_req *); |
diff --git a/drivers/s390/scsi/zfcp_fc.c b/drivers/s390/scsi/zfcp_fc.c index ac5e3b7a3576..0f7b493fb105 100644 --- a/drivers/s390/scsi/zfcp_fc.c +++ b/drivers/s390/scsi/zfcp_fc.c | |||
@@ -258,7 +258,8 @@ static int zfcp_fc_ns_gid_pn_request(struct zfcp_port *port, | |||
258 | gid_pn->gid_pn_req.gid_pn.fn_wwpn = port->wwpn; | 258 | gid_pn->gid_pn_req.gid_pn.fn_wwpn = port->wwpn; |
259 | 259 | ||
260 | ret = zfcp_fsf_send_ct(&adapter->gs->ds, &gid_pn->ct, | 260 | ret = zfcp_fsf_send_ct(&adapter->gs->ds, &gid_pn->ct, |
261 | adapter->pool.gid_pn_req); | 261 | adapter->pool.gid_pn_req, |
262 | ZFCP_FC_CTELS_TMO); | ||
262 | if (!ret) { | 263 | if (!ret) { |
263 | wait_for_completion(&completion); | 264 | wait_for_completion(&completion); |
264 | zfcp_fc_ns_gid_pn_eval(gid_pn); | 265 | zfcp_fc_ns_gid_pn_eval(gid_pn); |
@@ -421,7 +422,8 @@ static int zfcp_fc_adisc(struct zfcp_port *port) | |||
421 | hton24(adisc->adisc_req.adisc_port_id, | 422 | hton24(adisc->adisc_req.adisc_port_id, |
422 | fc_host_port_id(adapter->scsi_host)); | 423 | fc_host_port_id(adapter->scsi_host)); |
423 | 424 | ||
424 | ret = zfcp_fsf_send_els(adapter, port->d_id, &adisc->els); | 425 | ret = zfcp_fsf_send_els(adapter, port->d_id, &adisc->els, |
426 | ZFCP_FC_CTELS_TMO); | ||
425 | if (ret) | 427 | if (ret) |
426 | kmem_cache_free(zfcp_data.adisc_cache, adisc); | 428 | kmem_cache_free(zfcp_data.adisc_cache, adisc); |
427 | 429 | ||
@@ -532,7 +534,8 @@ static int zfcp_fc_send_gpn_ft(struct zfcp_fc_gpn_ft *gpn_ft, | |||
532 | ct->req = &gpn_ft->sg_req; | 534 | ct->req = &gpn_ft->sg_req; |
533 | ct->resp = gpn_ft->sg_resp; | 535 | ct->resp = gpn_ft->sg_resp; |
534 | 536 | ||
535 | ret = zfcp_fsf_send_ct(&adapter->gs->ds, ct, NULL); | 537 | ret = zfcp_fsf_send_ct(&adapter->gs->ds, ct, NULL, |
538 | ZFCP_FC_CTELS_TMO); | ||
536 | if (!ret) | 539 | if (!ret) |
537 | wait_for_completion(&completion); | 540 | wait_for_completion(&completion); |
538 | return ret; | 541 | return ret; |
@@ -677,6 +680,44 @@ static void zfcp_fc_ct_els_job_handler(void *data) | |||
677 | job->job_done(job); | 680 | job->job_done(job); |
678 | } | 681 | } |
679 | 682 | ||
683 | static struct zfcp_fc_wka_port *zfcp_fc_job_wka_port(struct fc_bsg_job *job) | ||
684 | { | ||
685 | u32 preamble_word1; | ||
686 | u8 gs_type; | ||
687 | struct zfcp_adapter *adapter; | ||
688 | |||
689 | preamble_word1 = job->request->rqst_data.r_ct.preamble_word1; | ||
690 | gs_type = (preamble_word1 & 0xff000000) >> 24; | ||
691 | |||
692 | adapter = (struct zfcp_adapter *) job->shost->hostdata[0]; | ||
693 | |||
694 | switch (gs_type) { | ||
695 | case FC_FST_ALIAS: | ||
696 | return &adapter->gs->as; | ||
697 | case FC_FST_MGMT: | ||
698 | return &adapter->gs->ms; | ||
699 | case FC_FST_TIME: | ||
700 | return &adapter->gs->ts; | ||
701 | break; | ||
702 | case FC_FST_DIR: | ||
703 | return &adapter->gs->ds; | ||
704 | break; | ||
705 | default: | ||
706 | return NULL; | ||
707 | } | ||
708 | } | ||
709 | |||
710 | static void zfcp_fc_ct_job_handler(void *data) | ||
711 | { | ||
712 | struct fc_bsg_job *job = data; | ||
713 | struct zfcp_fc_wka_port *wka_port; | ||
714 | |||
715 | wka_port = zfcp_fc_job_wka_port(job); | ||
716 | zfcp_fc_wka_port_put(wka_port); | ||
717 | |||
718 | zfcp_fc_ct_els_job_handler(data); | ||
719 | } | ||
720 | |||
680 | static int zfcp_fc_exec_els_job(struct fc_bsg_job *job, | 721 | static int zfcp_fc_exec_els_job(struct fc_bsg_job *job, |
681 | struct zfcp_adapter *adapter) | 722 | struct zfcp_adapter *adapter) |
682 | { | 723 | { |
@@ -695,43 +736,27 @@ static int zfcp_fc_exec_els_job(struct fc_bsg_job *job, | |||
695 | } else | 736 | } else |
696 | d_id = ntoh24(job->request->rqst_data.h_els.port_id); | 737 | d_id = ntoh24(job->request->rqst_data.h_els.port_id); |
697 | 738 | ||
698 | return zfcp_fsf_send_els(adapter, d_id, els); | 739 | els->handler = zfcp_fc_ct_els_job_handler; |
740 | return zfcp_fsf_send_els(adapter, d_id, els, job->req->timeout / HZ); | ||
699 | } | 741 | } |
700 | 742 | ||
701 | static int zfcp_fc_exec_ct_job(struct fc_bsg_job *job, | 743 | static int zfcp_fc_exec_ct_job(struct fc_bsg_job *job, |
702 | struct zfcp_adapter *adapter) | 744 | struct zfcp_adapter *adapter) |
703 | { | 745 | { |
704 | int ret; | 746 | int ret; |
705 | u8 gs_type; | ||
706 | struct zfcp_fsf_ct_els *ct = job->dd_data; | 747 | struct zfcp_fsf_ct_els *ct = job->dd_data; |
707 | struct zfcp_fc_wka_port *wka_port; | 748 | struct zfcp_fc_wka_port *wka_port; |
708 | u32 preamble_word1; | ||
709 | 749 | ||
710 | preamble_word1 = job->request->rqst_data.r_ct.preamble_word1; | 750 | wka_port = zfcp_fc_job_wka_port(job); |
711 | gs_type = (preamble_word1 & 0xff000000) >> 24; | 751 | if (!wka_port) |
712 | 752 | return -EINVAL; | |
713 | switch (gs_type) { | ||
714 | case FC_FST_ALIAS: | ||
715 | wka_port = &adapter->gs->as; | ||
716 | break; | ||
717 | case FC_FST_MGMT: | ||
718 | wka_port = &adapter->gs->ms; | ||
719 | break; | ||
720 | case FC_FST_TIME: | ||
721 | wka_port = &adapter->gs->ts; | ||
722 | break; | ||
723 | case FC_FST_DIR: | ||
724 | wka_port = &adapter->gs->ds; | ||
725 | break; | ||
726 | default: | ||
727 | return -EINVAL; /* no such service */ | ||
728 | } | ||
729 | 753 | ||
730 | ret = zfcp_fc_wka_port_get(wka_port); | 754 | ret = zfcp_fc_wka_port_get(wka_port); |
731 | if (ret) | 755 | if (ret) |
732 | return ret; | 756 | return ret; |
733 | 757 | ||
734 | ret = zfcp_fsf_send_ct(wka_port, ct, NULL); | 758 | ct->handler = zfcp_fc_ct_job_handler; |
759 | ret = zfcp_fsf_send_ct(wka_port, ct, NULL, job->req->timeout / HZ); | ||
735 | if (ret) | 760 | if (ret) |
736 | zfcp_fc_wka_port_put(wka_port); | 761 | zfcp_fc_wka_port_put(wka_port); |
737 | 762 | ||
@@ -752,7 +777,6 @@ int zfcp_fc_exec_bsg_job(struct fc_bsg_job *job) | |||
752 | 777 | ||
753 | ct_els->req = job->request_payload.sg_list; | 778 | ct_els->req = job->request_payload.sg_list; |
754 | ct_els->resp = job->reply_payload.sg_list; | 779 | ct_els->resp = job->reply_payload.sg_list; |
755 | ct_els->handler = zfcp_fc_ct_els_job_handler; | ||
756 | ct_els->handler_data = job; | 780 | ct_els->handler_data = job; |
757 | 781 | ||
758 | switch (job->request->msgcode) { | 782 | switch (job->request->msgcode) { |
@@ -767,6 +791,12 @@ int zfcp_fc_exec_bsg_job(struct fc_bsg_job *job) | |||
767 | } | 791 | } |
768 | } | 792 | } |
769 | 793 | ||
794 | int zfcp_fc_timeout_bsg_job(struct fc_bsg_job *job) | ||
795 | { | ||
796 | /* hardware tracks timeout, reset bsg timeout to not interfere */ | ||
797 | return -EAGAIN; | ||
798 | } | ||
799 | |||
770 | int zfcp_fc_gs_setup(struct zfcp_adapter *adapter) | 800 | int zfcp_fc_gs_setup(struct zfcp_adapter *adapter) |
771 | { | 801 | { |
772 | struct zfcp_fc_wka_ports *wka_ports; | 802 | struct zfcp_fc_wka_ports *wka_ports; |
diff --git a/drivers/s390/scsi/zfcp_fc.h b/drivers/s390/scsi/zfcp_fc.h index cb2a3669a384..0747b087390d 100644 --- a/drivers/s390/scsi/zfcp_fc.h +++ b/drivers/s390/scsi/zfcp_fc.h | |||
@@ -27,6 +27,8 @@ | |||
27 | #define ZFCP_FC_GPN_FT_MAX_ENT (ZFCP_FC_GPN_FT_NUM_BUFS * \ | 27 | #define ZFCP_FC_GPN_FT_MAX_ENT (ZFCP_FC_GPN_FT_NUM_BUFS * \ |
28 | (ZFCP_FC_GPN_FT_ENT_PAGE + 1)) | 28 | (ZFCP_FC_GPN_FT_ENT_PAGE + 1)) |
29 | 29 | ||
30 | #define ZFCP_FC_CTELS_TMO (2 * FC_DEF_R_A_TOV / 1000) | ||
31 | |||
30 | /** | 32 | /** |
31 | * struct zfcp_fc_gid_pn_req - container for ct header plus gid_pn request | 33 | * struct zfcp_fc_gid_pn_req - container for ct header plus gid_pn request |
32 | * @ct_hdr: FC GS common transport header | 34 | * @ct_hdr: FC GS common transport header |
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c index 482dcd97aa5d..e8fb4d9baa8b 100644 --- a/drivers/s390/scsi/zfcp_fsf.c +++ b/drivers/s390/scsi/zfcp_fsf.c | |||
@@ -1068,20 +1068,20 @@ static int zfcp_fsf_setup_ct_els_sbals(struct zfcp_fsf_req *req, | |||
1068 | static int zfcp_fsf_setup_ct_els(struct zfcp_fsf_req *req, | 1068 | static int zfcp_fsf_setup_ct_els(struct zfcp_fsf_req *req, |
1069 | struct scatterlist *sg_req, | 1069 | struct scatterlist *sg_req, |
1070 | struct scatterlist *sg_resp, | 1070 | struct scatterlist *sg_resp, |
1071 | int max_sbals) | 1071 | int max_sbals, unsigned int timeout) |
1072 | { | 1072 | { |
1073 | int ret; | 1073 | int ret; |
1074 | unsigned int fcp_chan_timeout; | ||
1075 | 1074 | ||
1076 | ret = zfcp_fsf_setup_ct_els_sbals(req, sg_req, sg_resp, max_sbals); | 1075 | ret = zfcp_fsf_setup_ct_els_sbals(req, sg_req, sg_resp, max_sbals); |
1077 | if (ret) | 1076 | if (ret) |
1078 | return ret; | 1077 | return ret; |
1079 | 1078 | ||
1080 | /* common settings for ct/gs and els requests */ | 1079 | /* common settings for ct/gs and els requests */ |
1081 | fcp_chan_timeout = 2 * FC_DEF_R_A_TOV / 1000; | 1080 | if (timeout > 255) |
1081 | timeout = 255; /* max value accepted by hardware */ | ||
1082 | req->qtcb->bottom.support.service_class = FSF_CLASS_3; | 1082 | req->qtcb->bottom.support.service_class = FSF_CLASS_3; |
1083 | req->qtcb->bottom.support.timeout = fcp_chan_timeout; | 1083 | req->qtcb->bottom.support.timeout = timeout; |
1084 | zfcp_fsf_start_timer(req, (fcp_chan_timeout + 10) * HZ); | 1084 | zfcp_fsf_start_timer(req, (timeout + 10) * HZ); |
1085 | 1085 | ||
1086 | return 0; | 1086 | return 0; |
1087 | } | 1087 | } |
@@ -1092,7 +1092,8 @@ static int zfcp_fsf_setup_ct_els(struct zfcp_fsf_req *req, | |||
1092 | * @pool: if non-null this mempool is used to allocate struct zfcp_fsf_req | 1092 | * @pool: if non-null this mempool is used to allocate struct zfcp_fsf_req |
1093 | */ | 1093 | */ |
1094 | int zfcp_fsf_send_ct(struct zfcp_fc_wka_port *wka_port, | 1094 | int zfcp_fsf_send_ct(struct zfcp_fc_wka_port *wka_port, |
1095 | struct zfcp_fsf_ct_els *ct, mempool_t *pool) | 1095 | struct zfcp_fsf_ct_els *ct, mempool_t *pool, |
1096 | unsigned int timeout) | ||
1096 | { | 1097 | { |
1097 | struct zfcp_qdio *qdio = wka_port->adapter->qdio; | 1098 | struct zfcp_qdio *qdio = wka_port->adapter->qdio; |
1098 | struct zfcp_fsf_req *req; | 1099 | struct zfcp_fsf_req *req; |
@@ -1111,7 +1112,7 @@ int zfcp_fsf_send_ct(struct zfcp_fc_wka_port *wka_port, | |||
1111 | 1112 | ||
1112 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; | 1113 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; |
1113 | ret = zfcp_fsf_setup_ct_els(req, ct->req, ct->resp, | 1114 | ret = zfcp_fsf_setup_ct_els(req, ct->req, ct->resp, |
1114 | FSF_MAX_SBALS_PER_REQ); | 1115 | FSF_MAX_SBALS_PER_REQ, timeout); |
1115 | if (ret) | 1116 | if (ret) |
1116 | goto failed_send; | 1117 | goto failed_send; |
1117 | 1118 | ||
@@ -1188,7 +1189,7 @@ skip_fsfstatus: | |||
1188 | * @els: pointer to struct zfcp_send_els with data for the command | 1189 | * @els: pointer to struct zfcp_send_els with data for the command |
1189 | */ | 1190 | */ |
1190 | int zfcp_fsf_send_els(struct zfcp_adapter *adapter, u32 d_id, | 1191 | int zfcp_fsf_send_els(struct zfcp_adapter *adapter, u32 d_id, |
1191 | struct zfcp_fsf_ct_els *els) | 1192 | struct zfcp_fsf_ct_els *els, unsigned int timeout) |
1192 | { | 1193 | { |
1193 | struct zfcp_fsf_req *req; | 1194 | struct zfcp_fsf_req *req; |
1194 | struct zfcp_qdio *qdio = adapter->qdio; | 1195 | struct zfcp_qdio *qdio = adapter->qdio; |
@@ -1206,7 +1207,7 @@ int zfcp_fsf_send_els(struct zfcp_adapter *adapter, u32 d_id, | |||
1206 | } | 1207 | } |
1207 | 1208 | ||
1208 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; | 1209 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; |
1209 | ret = zfcp_fsf_setup_ct_els(req, els->req, els->resp, 2); | 1210 | ret = zfcp_fsf_setup_ct_els(req, els->req, els->resp, 2, timeout); |
1210 | 1211 | ||
1211 | if (ret) | 1212 | if (ret) |
1212 | goto failed_send; | 1213 | goto failed_send; |
diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c index 771cc536a989..8e6fc68d6bd4 100644 --- a/drivers/s390/scsi/zfcp_scsi.c +++ b/drivers/s390/scsi/zfcp_scsi.c | |||
@@ -652,6 +652,7 @@ struct fc_function_template zfcp_transport_functions = { | |||
652 | .show_host_port_state = 1, | 652 | .show_host_port_state = 1, |
653 | .show_host_active_fc4s = 1, | 653 | .show_host_active_fc4s = 1, |
654 | .bsg_request = zfcp_fc_exec_bsg_job, | 654 | .bsg_request = zfcp_fc_exec_bsg_job, |
655 | .bsg_timeout = zfcp_fc_timeout_bsg_job, | ||
655 | /* no functions registered for following dynamic attributes but | 656 | /* no functions registered for following dynamic attributes but |
656 | directly set by LLDD */ | 657 | directly set by LLDD */ |
657 | .show_host_port_type = 1, | 658 | .show_host_port_type = 1, |
diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c index 2a889853a106..7e26ebc26661 100644 --- a/drivers/scsi/aacraid/aachba.c +++ b/drivers/scsi/aacraid/aachba.c | |||
@@ -293,7 +293,10 @@ int aac_get_config_status(struct aac_dev *dev, int commit_flag) | |||
293 | status = -EINVAL; | 293 | status = -EINVAL; |
294 | } | 294 | } |
295 | } | 295 | } |
296 | aac_fib_complete(fibptr); | 296 | /* Do not set XferState to zero unless receives a response from F/W */ |
297 | if (status >= 0) | ||
298 | aac_fib_complete(fibptr); | ||
299 | |||
297 | /* Send a CT_COMMIT_CONFIG to enable discovery of devices */ | 300 | /* Send a CT_COMMIT_CONFIG to enable discovery of devices */ |
298 | if (status >= 0) { | 301 | if (status >= 0) { |
299 | if ((aac_commit == 1) || commit_flag) { | 302 | if ((aac_commit == 1) || commit_flag) { |
@@ -310,13 +313,18 @@ int aac_get_config_status(struct aac_dev *dev, int commit_flag) | |||
310 | FsaNormal, | 313 | FsaNormal, |
311 | 1, 1, | 314 | 1, 1, |
312 | NULL, NULL); | 315 | NULL, NULL); |
313 | aac_fib_complete(fibptr); | 316 | /* Do not set XferState to zero unless |
317 | * receives a response from F/W */ | ||
318 | if (status >= 0) | ||
319 | aac_fib_complete(fibptr); | ||
314 | } else if (aac_commit == 0) { | 320 | } else if (aac_commit == 0) { |
315 | printk(KERN_WARNING | 321 | printk(KERN_WARNING |
316 | "aac_get_config_status: Foreign device configurations are being ignored\n"); | 322 | "aac_get_config_status: Foreign device configurations are being ignored\n"); |
317 | } | 323 | } |
318 | } | 324 | } |
319 | aac_fib_free(fibptr); | 325 | /* FIB should be freed only after getting the response from the F/W */ |
326 | if (status != -ERESTARTSYS) | ||
327 | aac_fib_free(fibptr); | ||
320 | return status; | 328 | return status; |
321 | } | 329 | } |
322 | 330 | ||
@@ -355,7 +363,9 @@ int aac_get_containers(struct aac_dev *dev) | |||
355 | maximum_num_containers = le32_to_cpu(dresp->ContainerSwitchEntries); | 363 | maximum_num_containers = le32_to_cpu(dresp->ContainerSwitchEntries); |
356 | aac_fib_complete(fibptr); | 364 | aac_fib_complete(fibptr); |
357 | } | 365 | } |
358 | aac_fib_free(fibptr); | 366 | /* FIB should be freed only after getting the response from the F/W */ |
367 | if (status != -ERESTARTSYS) | ||
368 | aac_fib_free(fibptr); | ||
359 | 369 | ||
360 | if (maximum_num_containers < MAXIMUM_NUM_CONTAINERS) | 370 | if (maximum_num_containers < MAXIMUM_NUM_CONTAINERS) |
361 | maximum_num_containers = MAXIMUM_NUM_CONTAINERS; | 371 | maximum_num_containers = MAXIMUM_NUM_CONTAINERS; |
@@ -1245,8 +1255,12 @@ int aac_get_adapter_info(struct aac_dev* dev) | |||
1245 | NULL); | 1255 | NULL); |
1246 | 1256 | ||
1247 | if (rcode < 0) { | 1257 | if (rcode < 0) { |
1248 | aac_fib_complete(fibptr); | 1258 | /* FIB should be freed only after |
1249 | aac_fib_free(fibptr); | 1259 | * getting the response from the F/W */ |
1260 | if (rcode != -ERESTARTSYS) { | ||
1261 | aac_fib_complete(fibptr); | ||
1262 | aac_fib_free(fibptr); | ||
1263 | } | ||
1250 | return rcode; | 1264 | return rcode; |
1251 | } | 1265 | } |
1252 | memcpy(&dev->adapter_info, info, sizeof(*info)); | 1266 | memcpy(&dev->adapter_info, info, sizeof(*info)); |
@@ -1270,6 +1284,12 @@ int aac_get_adapter_info(struct aac_dev* dev) | |||
1270 | 1284 | ||
1271 | if (rcode >= 0) | 1285 | if (rcode >= 0) |
1272 | memcpy(&dev->supplement_adapter_info, sinfo, sizeof(*sinfo)); | 1286 | memcpy(&dev->supplement_adapter_info, sinfo, sizeof(*sinfo)); |
1287 | if (rcode == -ERESTARTSYS) { | ||
1288 | fibptr = aac_fib_alloc(dev); | ||
1289 | if (!fibptr) | ||
1290 | return -ENOMEM; | ||
1291 | } | ||
1292 | |||
1273 | } | 1293 | } |
1274 | 1294 | ||
1275 | 1295 | ||
@@ -1470,9 +1490,11 @@ int aac_get_adapter_info(struct aac_dev* dev) | |||
1470 | (dev->scsi_host_ptr->sg_tablesize * 8) + 112; | 1490 | (dev->scsi_host_ptr->sg_tablesize * 8) + 112; |
1471 | } | 1491 | } |
1472 | } | 1492 | } |
1473 | 1493 | /* FIB should be freed only after getting the response from the F/W */ | |
1474 | aac_fib_complete(fibptr); | 1494 | if (rcode != -ERESTARTSYS) { |
1475 | aac_fib_free(fibptr); | 1495 | aac_fib_complete(fibptr); |
1496 | aac_fib_free(fibptr); | ||
1497 | } | ||
1476 | 1498 | ||
1477 | return rcode; | 1499 | return rcode; |
1478 | } | 1500 | } |
@@ -1633,6 +1655,7 @@ static int aac_read(struct scsi_cmnd * scsicmd) | |||
1633 | * Alocate and initialize a Fib | 1655 | * Alocate and initialize a Fib |
1634 | */ | 1656 | */ |
1635 | if (!(cmd_fibcontext = aac_fib_alloc(dev))) { | 1657 | if (!(cmd_fibcontext = aac_fib_alloc(dev))) { |
1658 | printk(KERN_WARNING "aac_read: fib allocation failed\n"); | ||
1636 | return -1; | 1659 | return -1; |
1637 | } | 1660 | } |
1638 | 1661 | ||
@@ -1712,9 +1735,14 @@ static int aac_write(struct scsi_cmnd * scsicmd) | |||
1712 | * Allocate and initialize a Fib then setup a BlockWrite command | 1735 | * Allocate and initialize a Fib then setup a BlockWrite command |
1713 | */ | 1736 | */ |
1714 | if (!(cmd_fibcontext = aac_fib_alloc(dev))) { | 1737 | if (!(cmd_fibcontext = aac_fib_alloc(dev))) { |
1715 | scsicmd->result = DID_ERROR << 16; | 1738 | /* FIB temporarily unavailable,not catastrophic failure */ |
1716 | scsicmd->scsi_done(scsicmd); | 1739 | |
1717 | return 0; | 1740 | /* scsicmd->result = DID_ERROR << 16; |
1741 | * scsicmd->scsi_done(scsicmd); | ||
1742 | * return 0; | ||
1743 | */ | ||
1744 | printk(KERN_WARNING "aac_write: fib allocation failed\n"); | ||
1745 | return -1; | ||
1718 | } | 1746 | } |
1719 | 1747 | ||
1720 | status = aac_adapter_write(cmd_fibcontext, scsicmd, lba, count, fua); | 1748 | status = aac_adapter_write(cmd_fibcontext, scsicmd, lba, count, fua); |
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h index 83986ed86556..619c02d9c862 100644 --- a/drivers/scsi/aacraid/aacraid.h +++ b/drivers/scsi/aacraid/aacraid.h | |||
@@ -12,7 +12,7 @@ | |||
12 | *----------------------------------------------------------------------------*/ | 12 | *----------------------------------------------------------------------------*/ |
13 | 13 | ||
14 | #ifndef AAC_DRIVER_BUILD | 14 | #ifndef AAC_DRIVER_BUILD |
15 | # define AAC_DRIVER_BUILD 2461 | 15 | # define AAC_DRIVER_BUILD 24702 |
16 | # define AAC_DRIVER_BRANCH "-ms" | 16 | # define AAC_DRIVER_BRANCH "-ms" |
17 | #endif | 17 | #endif |
18 | #define MAXIMUM_NUM_CONTAINERS 32 | 18 | #define MAXIMUM_NUM_CONTAINERS 32 |
@@ -1036,6 +1036,9 @@ struct aac_dev | |||
1036 | u8 printf_enabled; | 1036 | u8 printf_enabled; |
1037 | u8 in_reset; | 1037 | u8 in_reset; |
1038 | u8 msi; | 1038 | u8 msi; |
1039 | int management_fib_count; | ||
1040 | spinlock_t manage_lock; | ||
1041 | |||
1039 | }; | 1042 | }; |
1040 | 1043 | ||
1041 | #define aac_adapter_interrupt(dev) \ | 1044 | #define aac_adapter_interrupt(dev) \ |
diff --git a/drivers/scsi/aacraid/commctrl.c b/drivers/scsi/aacraid/commctrl.c index 0391d759dfdb..9c0c91178538 100644 --- a/drivers/scsi/aacraid/commctrl.c +++ b/drivers/scsi/aacraid/commctrl.c | |||
@@ -153,7 +153,7 @@ cleanup: | |||
153 | fibptr->hw_fib_pa = hw_fib_pa; | 153 | fibptr->hw_fib_pa = hw_fib_pa; |
154 | fibptr->hw_fib_va = hw_fib; | 154 | fibptr->hw_fib_va = hw_fib; |
155 | } | 155 | } |
156 | if (retval != -EINTR) | 156 | if (retval != -ERESTARTSYS) |
157 | aac_fib_free(fibptr); | 157 | aac_fib_free(fibptr); |
158 | return retval; | 158 | return retval; |
159 | } | 159 | } |
@@ -322,7 +322,7 @@ return_fib: | |||
322 | } | 322 | } |
323 | if (f.wait) { | 323 | if (f.wait) { |
324 | if(down_interruptible(&fibctx->wait_sem) < 0) { | 324 | if(down_interruptible(&fibctx->wait_sem) < 0) { |
325 | status = -EINTR; | 325 | status = -ERESTARTSYS; |
326 | } else { | 326 | } else { |
327 | /* Lock again and retry */ | 327 | /* Lock again and retry */ |
328 | spin_lock_irqsave(&dev->fib_lock, flags); | 328 | spin_lock_irqsave(&dev->fib_lock, flags); |
@@ -593,10 +593,10 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg) | |||
593 | u64 addr; | 593 | u64 addr; |
594 | void* p; | 594 | void* p; |
595 | if (upsg->sg[i].count > | 595 | if (upsg->sg[i].count > |
596 | (dev->adapter_info.options & | 596 | ((dev->adapter_info.options & |
597 | AAC_OPT_NEW_COMM) ? | 597 | AAC_OPT_NEW_COMM) ? |
598 | (dev->scsi_host_ptr->max_sectors << 9) : | 598 | (dev->scsi_host_ptr->max_sectors << 9) : |
599 | 65536) { | 599 | 65536)) { |
600 | rcode = -EINVAL; | 600 | rcode = -EINVAL; |
601 | goto cleanup; | 601 | goto cleanup; |
602 | } | 602 | } |
@@ -645,10 +645,10 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg) | |||
645 | u64 addr; | 645 | u64 addr; |
646 | void* p; | 646 | void* p; |
647 | if (usg->sg[i].count > | 647 | if (usg->sg[i].count > |
648 | (dev->adapter_info.options & | 648 | ((dev->adapter_info.options & |
649 | AAC_OPT_NEW_COMM) ? | 649 | AAC_OPT_NEW_COMM) ? |
650 | (dev->scsi_host_ptr->max_sectors << 9) : | 650 | (dev->scsi_host_ptr->max_sectors << 9) : |
651 | 65536) { | 651 | 65536)) { |
652 | rcode = -EINVAL; | 652 | rcode = -EINVAL; |
653 | goto cleanup; | 653 | goto cleanup; |
654 | } | 654 | } |
@@ -695,10 +695,10 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg) | |||
695 | uintptr_t addr; | 695 | uintptr_t addr; |
696 | void* p; | 696 | void* p; |
697 | if (usg->sg[i].count > | 697 | if (usg->sg[i].count > |
698 | (dev->adapter_info.options & | 698 | ((dev->adapter_info.options & |
699 | AAC_OPT_NEW_COMM) ? | 699 | AAC_OPT_NEW_COMM) ? |
700 | (dev->scsi_host_ptr->max_sectors << 9) : | 700 | (dev->scsi_host_ptr->max_sectors << 9) : |
701 | 65536) { | 701 | 65536)) { |
702 | rcode = -EINVAL; | 702 | rcode = -EINVAL; |
703 | goto cleanup; | 703 | goto cleanup; |
704 | } | 704 | } |
@@ -734,10 +734,10 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg) | |||
734 | dma_addr_t addr; | 734 | dma_addr_t addr; |
735 | void* p; | 735 | void* p; |
736 | if (upsg->sg[i].count > | 736 | if (upsg->sg[i].count > |
737 | (dev->adapter_info.options & | 737 | ((dev->adapter_info.options & |
738 | AAC_OPT_NEW_COMM) ? | 738 | AAC_OPT_NEW_COMM) ? |
739 | (dev->scsi_host_ptr->max_sectors << 9) : | 739 | (dev->scsi_host_ptr->max_sectors << 9) : |
740 | 65536) { | 740 | 65536)) { |
741 | rcode = -EINVAL; | 741 | rcode = -EINVAL; |
742 | goto cleanup; | 742 | goto cleanup; |
743 | } | 743 | } |
@@ -772,8 +772,8 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg) | |||
772 | psg->count = cpu_to_le32(sg_indx+1); | 772 | psg->count = cpu_to_le32(sg_indx+1); |
773 | status = aac_fib_send(ScsiPortCommand, srbfib, actual_fibsize, FsaNormal, 1, 1, NULL, NULL); | 773 | status = aac_fib_send(ScsiPortCommand, srbfib, actual_fibsize, FsaNormal, 1, 1, NULL, NULL); |
774 | } | 774 | } |
775 | if (status == -EINTR) { | 775 | if (status == -ERESTARTSYS) { |
776 | rcode = -EINTR; | 776 | rcode = -ERESTARTSYS; |
777 | goto cleanup; | 777 | goto cleanup; |
778 | } | 778 | } |
779 | 779 | ||
@@ -810,7 +810,7 @@ cleanup: | |||
810 | for(i=0; i <= sg_indx; i++){ | 810 | for(i=0; i <= sg_indx; i++){ |
811 | kfree(sg_list[i]); | 811 | kfree(sg_list[i]); |
812 | } | 812 | } |
813 | if (rcode != -EINTR) { | 813 | if (rcode != -ERESTARTSYS) { |
814 | aac_fib_complete(srbfib); | 814 | aac_fib_complete(srbfib); |
815 | aac_fib_free(srbfib); | 815 | aac_fib_free(srbfib); |
816 | } | 816 | } |
@@ -848,7 +848,7 @@ int aac_do_ioctl(struct aac_dev * dev, int cmd, void __user *arg) | |||
848 | */ | 848 | */ |
849 | 849 | ||
850 | status = aac_dev_ioctl(dev, cmd, arg); | 850 | status = aac_dev_ioctl(dev, cmd, arg); |
851 | if(status != -ENOTTY) | 851 | if (status != -ENOTTY) |
852 | return status; | 852 | return status; |
853 | 853 | ||
854 | switch (cmd) { | 854 | switch (cmd) { |
diff --git a/drivers/scsi/aacraid/comminit.c b/drivers/scsi/aacraid/comminit.c index 666d5151d628..a7261486ccd4 100644 --- a/drivers/scsi/aacraid/comminit.c +++ b/drivers/scsi/aacraid/comminit.c | |||
@@ -194,7 +194,9 @@ int aac_send_shutdown(struct aac_dev * dev) | |||
194 | 194 | ||
195 | if (status >= 0) | 195 | if (status >= 0) |
196 | aac_fib_complete(fibctx); | 196 | aac_fib_complete(fibctx); |
197 | aac_fib_free(fibctx); | 197 | /* FIB should be freed only after getting the response from the F/W */ |
198 | if (status != -ERESTARTSYS) | ||
199 | aac_fib_free(fibctx); | ||
198 | return status; | 200 | return status; |
199 | } | 201 | } |
200 | 202 | ||
@@ -304,6 +306,8 @@ struct aac_dev *aac_init_adapter(struct aac_dev *dev) | |||
304 | /* | 306 | /* |
305 | * Check the preferred comm settings, defaults from template. | 307 | * Check the preferred comm settings, defaults from template. |
306 | */ | 308 | */ |
309 | dev->management_fib_count = 0; | ||
310 | spin_lock_init(&dev->manage_lock); | ||
307 | dev->max_fib_size = sizeof(struct hw_fib); | 311 | dev->max_fib_size = sizeof(struct hw_fib); |
308 | dev->sg_tablesize = host->sg_tablesize = (dev->max_fib_size | 312 | dev->sg_tablesize = host->sg_tablesize = (dev->max_fib_size |
309 | - sizeof(struct aac_fibhdr) | 313 | - sizeof(struct aac_fibhdr) |
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c index 956261f25181..94d2954d79ae 100644 --- a/drivers/scsi/aacraid/commsup.c +++ b/drivers/scsi/aacraid/commsup.c | |||
@@ -189,7 +189,14 @@ struct fib *aac_fib_alloc(struct aac_dev *dev) | |||
189 | 189 | ||
190 | void aac_fib_free(struct fib *fibptr) | 190 | void aac_fib_free(struct fib *fibptr) |
191 | { | 191 | { |
192 | unsigned long flags; | 192 | unsigned long flags, flagsv; |
193 | |||
194 | spin_lock_irqsave(&fibptr->event_lock, flagsv); | ||
195 | if (fibptr->done == 2) { | ||
196 | spin_unlock_irqrestore(&fibptr->event_lock, flagsv); | ||
197 | return; | ||
198 | } | ||
199 | spin_unlock_irqrestore(&fibptr->event_lock, flagsv); | ||
193 | 200 | ||
194 | spin_lock_irqsave(&fibptr->dev->fib_lock, flags); | 201 | spin_lock_irqsave(&fibptr->dev->fib_lock, flags); |
195 | if (unlikely(fibptr->flags & FIB_CONTEXT_FLAG_TIMED_OUT)) | 202 | if (unlikely(fibptr->flags & FIB_CONTEXT_FLAG_TIMED_OUT)) |
@@ -390,6 +397,8 @@ int aac_fib_send(u16 command, struct fib *fibptr, unsigned long size, | |||
390 | struct hw_fib * hw_fib = fibptr->hw_fib_va; | 397 | struct hw_fib * hw_fib = fibptr->hw_fib_va; |
391 | unsigned long flags = 0; | 398 | unsigned long flags = 0; |
392 | unsigned long qflags; | 399 | unsigned long qflags; |
400 | unsigned long mflags = 0; | ||
401 | |||
393 | 402 | ||
394 | if (!(hw_fib->header.XferState & cpu_to_le32(HostOwned))) | 403 | if (!(hw_fib->header.XferState & cpu_to_le32(HostOwned))) |
395 | return -EBUSY; | 404 | return -EBUSY; |
@@ -471,9 +480,31 @@ int aac_fib_send(u16 command, struct fib *fibptr, unsigned long size, | |||
471 | if (!dev->queues) | 480 | if (!dev->queues) |
472 | return -EBUSY; | 481 | return -EBUSY; |
473 | 482 | ||
474 | if(wait) | 483 | if (wait) { |
484 | |||
485 | spin_lock_irqsave(&dev->manage_lock, mflags); | ||
486 | if (dev->management_fib_count >= AAC_NUM_MGT_FIB) { | ||
487 | printk(KERN_INFO "No management Fibs Available:%d\n", | ||
488 | dev->management_fib_count); | ||
489 | spin_unlock_irqrestore(&dev->manage_lock, mflags); | ||
490 | return -EBUSY; | ||
491 | } | ||
492 | dev->management_fib_count++; | ||
493 | spin_unlock_irqrestore(&dev->manage_lock, mflags); | ||
475 | spin_lock_irqsave(&fibptr->event_lock, flags); | 494 | spin_lock_irqsave(&fibptr->event_lock, flags); |
476 | aac_adapter_deliver(fibptr); | 495 | } |
496 | |||
497 | if (aac_adapter_deliver(fibptr) != 0) { | ||
498 | printk(KERN_ERR "aac_fib_send: returned -EBUSY\n"); | ||
499 | if (wait) { | ||
500 | spin_unlock_irqrestore(&fibptr->event_lock, flags); | ||
501 | spin_lock_irqsave(&dev->manage_lock, mflags); | ||
502 | dev->management_fib_count--; | ||
503 | spin_unlock_irqrestore(&dev->manage_lock, mflags); | ||
504 | } | ||
505 | return -EBUSY; | ||
506 | } | ||
507 | |||
477 | 508 | ||
478 | /* | 509 | /* |
479 | * If the caller wanted us to wait for response wait now. | 510 | * If the caller wanted us to wait for response wait now. |
@@ -516,14 +547,15 @@ int aac_fib_send(u16 command, struct fib *fibptr, unsigned long size, | |||
516 | udelay(5); | 547 | udelay(5); |
517 | } | 548 | } |
518 | } else if (down_interruptible(&fibptr->event_wait)) { | 549 | } else if (down_interruptible(&fibptr->event_wait)) { |
519 | fibptr->done = 2; | 550 | /* Do nothing ... satisfy |
520 | up(&fibptr->event_wait); | 551 | * down_interruptible must_check */ |
521 | } | 552 | } |
553 | |||
522 | spin_lock_irqsave(&fibptr->event_lock, flags); | 554 | spin_lock_irqsave(&fibptr->event_lock, flags); |
523 | if ((fibptr->done == 0) || (fibptr->done == 2)) { | 555 | if (fibptr->done == 0) { |
524 | fibptr->done = 2; /* Tell interrupt we aborted */ | 556 | fibptr->done = 2; /* Tell interrupt we aborted */ |
525 | spin_unlock_irqrestore(&fibptr->event_lock, flags); | 557 | spin_unlock_irqrestore(&fibptr->event_lock, flags); |
526 | return -EINTR; | 558 | return -ERESTARTSYS; |
527 | } | 559 | } |
528 | spin_unlock_irqrestore(&fibptr->event_lock, flags); | 560 | spin_unlock_irqrestore(&fibptr->event_lock, flags); |
529 | BUG_ON(fibptr->done == 0); | 561 | BUG_ON(fibptr->done == 0); |
@@ -689,6 +721,7 @@ int aac_fib_adapter_complete(struct fib *fibptr, unsigned short size) | |||
689 | 721 | ||
690 | int aac_fib_complete(struct fib *fibptr) | 722 | int aac_fib_complete(struct fib *fibptr) |
691 | { | 723 | { |
724 | unsigned long flags; | ||
692 | struct hw_fib * hw_fib = fibptr->hw_fib_va; | 725 | struct hw_fib * hw_fib = fibptr->hw_fib_va; |
693 | 726 | ||
694 | /* | 727 | /* |
@@ -709,6 +742,13 @@ int aac_fib_complete(struct fib *fibptr) | |||
709 | * command is complete that we had sent to the adapter and this | 742 | * command is complete that we had sent to the adapter and this |
710 | * cdb could be reused. | 743 | * cdb could be reused. |
711 | */ | 744 | */ |
745 | spin_lock_irqsave(&fibptr->event_lock, flags); | ||
746 | if (fibptr->done == 2) { | ||
747 | spin_unlock_irqrestore(&fibptr->event_lock, flags); | ||
748 | return 0; | ||
749 | } | ||
750 | spin_unlock_irqrestore(&fibptr->event_lock, flags); | ||
751 | |||
712 | if((hw_fib->header.XferState & cpu_to_le32(SentFromHost)) && | 752 | if((hw_fib->header.XferState & cpu_to_le32(SentFromHost)) && |
713 | (hw_fib->header.XferState & cpu_to_le32(AdapterProcessed))) | 753 | (hw_fib->header.XferState & cpu_to_le32(AdapterProcessed))) |
714 | { | 754 | { |
@@ -1355,7 +1395,10 @@ int aac_reset_adapter(struct aac_dev * aac, int forced) | |||
1355 | 1395 | ||
1356 | if (status >= 0) | 1396 | if (status >= 0) |
1357 | aac_fib_complete(fibctx); | 1397 | aac_fib_complete(fibctx); |
1358 | aac_fib_free(fibctx); | 1398 | /* FIB should be freed only after getting |
1399 | * the response from the F/W */ | ||
1400 | if (status != -ERESTARTSYS) | ||
1401 | aac_fib_free(fibctx); | ||
1359 | } | 1402 | } |
1360 | } | 1403 | } |
1361 | 1404 | ||
@@ -1759,6 +1802,7 @@ int aac_command_thread(void *data) | |||
1759 | struct fib *fibptr; | 1802 | struct fib *fibptr; |
1760 | 1803 | ||
1761 | if ((fibptr = aac_fib_alloc(dev))) { | 1804 | if ((fibptr = aac_fib_alloc(dev))) { |
1805 | int status; | ||
1762 | __le32 *info; | 1806 | __le32 *info; |
1763 | 1807 | ||
1764 | aac_fib_init(fibptr); | 1808 | aac_fib_init(fibptr); |
@@ -1769,15 +1813,21 @@ int aac_command_thread(void *data) | |||
1769 | 1813 | ||
1770 | *info = cpu_to_le32(now.tv_sec); | 1814 | *info = cpu_to_le32(now.tv_sec); |
1771 | 1815 | ||
1772 | (void)aac_fib_send(SendHostTime, | 1816 | status = aac_fib_send(SendHostTime, |
1773 | fibptr, | 1817 | fibptr, |
1774 | sizeof(*info), | 1818 | sizeof(*info), |
1775 | FsaNormal, | 1819 | FsaNormal, |
1776 | 1, 1, | 1820 | 1, 1, |
1777 | NULL, | 1821 | NULL, |
1778 | NULL); | 1822 | NULL); |
1779 | aac_fib_complete(fibptr); | 1823 | /* Do not set XferState to zero unless |
1780 | aac_fib_free(fibptr); | 1824 | * receives a response from F/W */ |
1825 | if (status >= 0) | ||
1826 | aac_fib_complete(fibptr); | ||
1827 | /* FIB should be freed only after | ||
1828 | * getting the response from the F/W */ | ||
1829 | if (status != -ERESTARTSYS) | ||
1830 | aac_fib_free(fibptr); | ||
1781 | } | 1831 | } |
1782 | difference = (long)(unsigned)update_interval*HZ; | 1832 | difference = (long)(unsigned)update_interval*HZ; |
1783 | } else { | 1833 | } else { |
diff --git a/drivers/scsi/aacraid/dpcsup.c b/drivers/scsi/aacraid/dpcsup.c index abc9ef5d1b10..9c7408fe8c7d 100644 --- a/drivers/scsi/aacraid/dpcsup.c +++ b/drivers/scsi/aacraid/dpcsup.c | |||
@@ -57,9 +57,9 @@ unsigned int aac_response_normal(struct aac_queue * q) | |||
57 | struct hw_fib * hwfib; | 57 | struct hw_fib * hwfib; |
58 | struct fib * fib; | 58 | struct fib * fib; |
59 | int consumed = 0; | 59 | int consumed = 0; |
60 | unsigned long flags; | 60 | unsigned long flags, mflags; |
61 | 61 | ||
62 | spin_lock_irqsave(q->lock, flags); | 62 | spin_lock_irqsave(q->lock, flags); |
63 | /* | 63 | /* |
64 | * Keep pulling response QEs off the response queue and waking | 64 | * Keep pulling response QEs off the response queue and waking |
65 | * up the waiters until there are no more QEs. We then return | 65 | * up the waiters until there are no more QEs. We then return |
@@ -125,12 +125,21 @@ unsigned int aac_response_normal(struct aac_queue * q) | |||
125 | } else { | 125 | } else { |
126 | unsigned long flagv; | 126 | unsigned long flagv; |
127 | spin_lock_irqsave(&fib->event_lock, flagv); | 127 | spin_lock_irqsave(&fib->event_lock, flagv); |
128 | if (!fib->done) | 128 | if (!fib->done) { |
129 | fib->done = 1; | 129 | fib->done = 1; |
130 | up(&fib->event_wait); | 130 | up(&fib->event_wait); |
131 | } | ||
131 | spin_unlock_irqrestore(&fib->event_lock, flagv); | 132 | spin_unlock_irqrestore(&fib->event_lock, flagv); |
133 | |||
134 | spin_lock_irqsave(&dev->manage_lock, mflags); | ||
135 | dev->management_fib_count--; | ||
136 | spin_unlock_irqrestore(&dev->manage_lock, mflags); | ||
137 | |||
132 | FIB_COUNTER_INCREMENT(aac_config.NormalRecved); | 138 | FIB_COUNTER_INCREMENT(aac_config.NormalRecved); |
133 | if (fib->done == 2) { | 139 | if (fib->done == 2) { |
140 | spin_lock_irqsave(&fib->event_lock, flagv); | ||
141 | fib->done = 0; | ||
142 | spin_unlock_irqrestore(&fib->event_lock, flagv); | ||
134 | aac_fib_complete(fib); | 143 | aac_fib_complete(fib); |
135 | aac_fib_free(fib); | 144 | aac_fib_free(fib); |
136 | } | 145 | } |
@@ -232,6 +241,7 @@ unsigned int aac_command_normal(struct aac_queue *q) | |||
232 | 241 | ||
233 | unsigned int aac_intr_normal(struct aac_dev * dev, u32 index) | 242 | unsigned int aac_intr_normal(struct aac_dev * dev, u32 index) |
234 | { | 243 | { |
244 | unsigned long mflags; | ||
235 | dprintk((KERN_INFO "aac_intr_normal(%p,%x)\n", dev, index)); | 245 | dprintk((KERN_INFO "aac_intr_normal(%p,%x)\n", dev, index)); |
236 | if ((index & 0x00000002L)) { | 246 | if ((index & 0x00000002L)) { |
237 | struct hw_fib * hw_fib; | 247 | struct hw_fib * hw_fib; |
@@ -320,11 +330,25 @@ unsigned int aac_intr_normal(struct aac_dev * dev, u32 index) | |||
320 | unsigned long flagv; | 330 | unsigned long flagv; |
321 | dprintk((KERN_INFO "event_wait up\n")); | 331 | dprintk((KERN_INFO "event_wait up\n")); |
322 | spin_lock_irqsave(&fib->event_lock, flagv); | 332 | spin_lock_irqsave(&fib->event_lock, flagv); |
323 | if (!fib->done) | 333 | if (!fib->done) { |
324 | fib->done = 1; | 334 | fib->done = 1; |
325 | up(&fib->event_wait); | 335 | up(&fib->event_wait); |
336 | } | ||
326 | spin_unlock_irqrestore(&fib->event_lock, flagv); | 337 | spin_unlock_irqrestore(&fib->event_lock, flagv); |
338 | |||
339 | spin_lock_irqsave(&dev->manage_lock, mflags); | ||
340 | dev->management_fib_count--; | ||
341 | spin_unlock_irqrestore(&dev->manage_lock, mflags); | ||
342 | |||
327 | FIB_COUNTER_INCREMENT(aac_config.NormalRecved); | 343 | FIB_COUNTER_INCREMENT(aac_config.NormalRecved); |
344 | if (fib->done == 2) { | ||
345 | spin_lock_irqsave(&fib->event_lock, flagv); | ||
346 | fib->done = 0; | ||
347 | spin_unlock_irqrestore(&fib->event_lock, flagv); | ||
348 | aac_fib_complete(fib); | ||
349 | aac_fib_free(fib); | ||
350 | } | ||
351 | |||
328 | } | 352 | } |
329 | return 0; | 353 | return 0; |
330 | } | 354 | } |
diff --git a/drivers/scsi/aic7xxx/aic79xx_core.c b/drivers/scsi/aic7xxx/aic79xx_core.c index 4d419c155ce9..78971db5b60e 100644 --- a/drivers/scsi/aic7xxx/aic79xx_core.c +++ b/drivers/scsi/aic7xxx/aic79xx_core.c | |||
@@ -3171,13 +3171,16 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd) | |||
3171 | tinfo->curr.transport_version = 2; | 3171 | tinfo->curr.transport_version = 2; |
3172 | tinfo->goal.transport_version = 2; | 3172 | tinfo->goal.transport_version = 2; |
3173 | tinfo->goal.ppr_options = 0; | 3173 | tinfo->goal.ppr_options = 0; |
3174 | /* | 3174 | if (scb != NULL) { |
3175 | * Remove any SCBs in the waiting for selection | 3175 | /* |
3176 | * queue that may also be for this target so | 3176 | * Remove any SCBs in the waiting |
3177 | * that command ordering is preserved. | 3177 | * for selection queue that may |
3178 | */ | 3178 | * also be for this target so that |
3179 | ahd_freeze_devq(ahd, scb); | 3179 | * command ordering is preserved. |
3180 | ahd_qinfifo_requeue_tail(ahd, scb); | 3180 | */ |
3181 | ahd_freeze_devq(ahd, scb); | ||
3182 | ahd_qinfifo_requeue_tail(ahd, scb); | ||
3183 | } | ||
3181 | printerror = 0; | 3184 | printerror = 0; |
3182 | } | 3185 | } |
3183 | } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_WDTR, FALSE) | 3186 | } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_WDTR, FALSE) |
@@ -3194,13 +3197,16 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd) | |||
3194 | MSG_EXT_WDTR_BUS_8_BIT, | 3197 | MSG_EXT_WDTR_BUS_8_BIT, |
3195 | AHD_TRANS_CUR|AHD_TRANS_GOAL, | 3198 | AHD_TRANS_CUR|AHD_TRANS_GOAL, |
3196 | /*paused*/TRUE); | 3199 | /*paused*/TRUE); |
3197 | /* | 3200 | if (scb != NULL) { |
3198 | * Remove any SCBs in the waiting for selection | 3201 | /* |
3199 | * queue that may also be for this target so that | 3202 | * Remove any SCBs in the waiting for |
3200 | * command ordering is preserved. | 3203 | * selection queue that may also be for |
3201 | */ | 3204 | * this target so that command ordering |
3202 | ahd_freeze_devq(ahd, scb); | 3205 | * is preserved. |
3203 | ahd_qinfifo_requeue_tail(ahd, scb); | 3206 | */ |
3207 | ahd_freeze_devq(ahd, scb); | ||
3208 | ahd_qinfifo_requeue_tail(ahd, scb); | ||
3209 | } | ||
3204 | printerror = 0; | 3210 | printerror = 0; |
3205 | } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_SDTR, FALSE) | 3211 | } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_SDTR, FALSE) |
3206 | && ppr_busfree == 0) { | 3212 | && ppr_busfree == 0) { |
@@ -3217,13 +3223,16 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd) | |||
3217 | /*ppr_options*/0, | 3223 | /*ppr_options*/0, |
3218 | AHD_TRANS_CUR|AHD_TRANS_GOAL, | 3224 | AHD_TRANS_CUR|AHD_TRANS_GOAL, |
3219 | /*paused*/TRUE); | 3225 | /*paused*/TRUE); |
3220 | /* | 3226 | if (scb != NULL) { |
3221 | * Remove any SCBs in the waiting for selection | 3227 | /* |
3222 | * queue that may also be for this target so that | 3228 | * Remove any SCBs in the waiting for |
3223 | * command ordering is preserved. | 3229 | * selection queue that may also be for |
3224 | */ | 3230 | * this target so that command ordering |
3225 | ahd_freeze_devq(ahd, scb); | 3231 | * is preserved. |
3226 | ahd_qinfifo_requeue_tail(ahd, scb); | 3232 | */ |
3233 | ahd_freeze_devq(ahd, scb); | ||
3234 | ahd_qinfifo_requeue_tail(ahd, scb); | ||
3235 | } | ||
3227 | printerror = 0; | 3236 | printerror = 0; |
3228 | } else if ((ahd->msg_flags & MSG_FLAG_EXPECT_IDE_BUSFREE) != 0 | 3237 | } else if ((ahd->msg_flags & MSG_FLAG_EXPECT_IDE_BUSFREE) != 0 |
3229 | && ahd_sent_msg(ahd, AHDMSG_1B, | 3238 | && ahd_sent_msg(ahd, AHDMSG_1B, |
@@ -3251,7 +3260,7 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd) | |||
3251 | * the message phases. We check it last in case we | 3260 | * the message phases. We check it last in case we |
3252 | * had to send some other message that caused a busfree. | 3261 | * had to send some other message that caused a busfree. |
3253 | */ | 3262 | */ |
3254 | if (printerror != 0 | 3263 | if (scb != NULL && printerror != 0 |
3255 | && (lastphase == P_MESGIN || lastphase == P_MESGOUT) | 3264 | && (lastphase == P_MESGIN || lastphase == P_MESGOUT) |
3256 | && ((ahd->msg_flags & MSG_FLAG_EXPECT_PPR_BUSFREE) != 0)) { | 3265 | && ((ahd->msg_flags & MSG_FLAG_EXPECT_PPR_BUSFREE) != 0)) { |
3257 | 3266 | ||
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c index 2445e399fd60..2445e399fd60 100755..100644 --- a/drivers/scsi/lpfc/lpfc_hbadisc.c +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c | |||
diff --git a/drivers/scsi/lpfc/lpfc_hw4.h b/drivers/scsi/lpfc/lpfc_hw4.h index 8a2a1c5935c6..8a2a1c5935c6 100755..100644 --- a/drivers/scsi/lpfc/lpfc_hw4.h +++ b/drivers/scsi/lpfc/lpfc_hw4.h | |||
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 608e675f68c8..1263d9796e89 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h | |||
@@ -1586,8 +1586,7 @@ typedef struct fc_port { | |||
1586 | */ | 1586 | */ |
1587 | #define FCF_FABRIC_DEVICE BIT_0 | 1587 | #define FCF_FABRIC_DEVICE BIT_0 |
1588 | #define FCF_LOGIN_NEEDED BIT_1 | 1588 | #define FCF_LOGIN_NEEDED BIT_1 |
1589 | #define FCF_TAPE_PRESENT BIT_2 | 1589 | #define FCF_FCP2_DEVICE BIT_2 |
1590 | #define FCF_FCP2_DEVICE BIT_3 | ||
1591 | 1590 | ||
1592 | /* No loop ID flag. */ | 1591 | /* No loop ID flag. */ |
1593 | #define FC_NO_LOOP_ID 0x1000 | 1592 | #define FC_NO_LOOP_ID 0x1000 |
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index b4a0eac8f96d..3f8e8495b743 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c | |||
@@ -205,7 +205,7 @@ qla2x00_async_login_done(struct scsi_qla_host *vha, fc_port_t *fcport, | |||
205 | 205 | ||
206 | switch (data[0]) { | 206 | switch (data[0]) { |
207 | case MBS_COMMAND_COMPLETE: | 207 | case MBS_COMMAND_COMPLETE: |
208 | if (fcport->flags & FCF_TAPE_PRESENT) | 208 | if (fcport->flags & FCF_FCP2_DEVICE) |
209 | opts |= BIT_1; | 209 | opts |= BIT_1; |
210 | rval = qla2x00_get_port_database(vha, fcport, opts); | 210 | rval = qla2x00_get_port_database(vha, fcport, opts); |
211 | if (rval != QLA_SUCCESS) | 211 | if (rval != QLA_SUCCESS) |
@@ -2726,7 +2726,7 @@ qla2x00_configure_fabric(scsi_qla_host_t *vha) | |||
2726 | 2726 | ||
2727 | /* | 2727 | /* |
2728 | * Logout all previous fabric devices marked lost, except | 2728 | * Logout all previous fabric devices marked lost, except |
2729 | * tape devices. | 2729 | * FCP2 devices. |
2730 | */ | 2730 | */ |
2731 | list_for_each_entry(fcport, &vha->vp_fcports, list) { | 2731 | list_for_each_entry(fcport, &vha->vp_fcports, list) { |
2732 | if (test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags)) | 2732 | if (test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags)) |
@@ -2739,7 +2739,7 @@ qla2x00_configure_fabric(scsi_qla_host_t *vha) | |||
2739 | qla2x00_mark_device_lost(vha, fcport, | 2739 | qla2x00_mark_device_lost(vha, fcport, |
2740 | ql2xplogiabsentdevice, 0); | 2740 | ql2xplogiabsentdevice, 0); |
2741 | if (fcport->loop_id != FC_NO_LOOP_ID && | 2741 | if (fcport->loop_id != FC_NO_LOOP_ID && |
2742 | (fcport->flags & FCF_TAPE_PRESENT) == 0 && | 2742 | (fcport->flags & FCF_FCP2_DEVICE) == 0 && |
2743 | fcport->port_type != FCT_INITIATOR && | 2743 | fcport->port_type != FCT_INITIATOR && |
2744 | fcport->port_type != FCT_BROADCAST) { | 2744 | fcport->port_type != FCT_BROADCAST) { |
2745 | ha->isp_ops->fabric_logout(vha, | 2745 | ha->isp_ops->fabric_logout(vha, |
@@ -3018,7 +3018,7 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *vha, | |||
3018 | fcport->d_id.b24 = new_fcport->d_id.b24; | 3018 | fcport->d_id.b24 = new_fcport->d_id.b24; |
3019 | fcport->flags |= FCF_LOGIN_NEEDED; | 3019 | fcport->flags |= FCF_LOGIN_NEEDED; |
3020 | if (fcport->loop_id != FC_NO_LOOP_ID && | 3020 | if (fcport->loop_id != FC_NO_LOOP_ID && |
3021 | (fcport->flags & FCF_TAPE_PRESENT) == 0 && | 3021 | (fcport->flags & FCF_FCP2_DEVICE) == 0 && |
3022 | fcport->port_type != FCT_INITIATOR && | 3022 | fcport->port_type != FCT_INITIATOR && |
3023 | fcport->port_type != FCT_BROADCAST) { | 3023 | fcport->port_type != FCT_BROADCAST) { |
3024 | ha->isp_ops->fabric_logout(vha, fcport->loop_id, | 3024 | ha->isp_ops->fabric_logout(vha, fcport->loop_id, |
@@ -3272,9 +3272,9 @@ qla2x00_fabric_dev_login(scsi_qla_host_t *vha, fc_port_t *fcport, | |||
3272 | 3272 | ||
3273 | rval = qla2x00_fabric_login(vha, fcport, next_loopid); | 3273 | rval = qla2x00_fabric_login(vha, fcport, next_loopid); |
3274 | if (rval == QLA_SUCCESS) { | 3274 | if (rval == QLA_SUCCESS) { |
3275 | /* Send an ADISC to tape devices.*/ | 3275 | /* Send an ADISC to FCP2 devices.*/ |
3276 | opts = 0; | 3276 | opts = 0; |
3277 | if (fcport->flags & FCF_TAPE_PRESENT) | 3277 | if (fcport->flags & FCF_FCP2_DEVICE) |
3278 | opts |= BIT_1; | 3278 | opts |= BIT_1; |
3279 | rval = qla2x00_get_port_database(vha, fcport, opts); | 3279 | rval = qla2x00_get_port_database(vha, fcport, opts); |
3280 | if (rval != QLA_SUCCESS) { | 3280 | if (rval != QLA_SUCCESS) { |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 209f50e788a1..8529eb1f3cd4 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -1188,7 +1188,6 @@ qla2xxx_slave_configure(struct scsi_device *sdev) | |||
1188 | scsi_qla_host_t *vha = shost_priv(sdev->host); | 1188 | scsi_qla_host_t *vha = shost_priv(sdev->host); |
1189 | struct qla_hw_data *ha = vha->hw; | 1189 | struct qla_hw_data *ha = vha->hw; |
1190 | struct fc_rport *rport = starget_to_rport(sdev->sdev_target); | 1190 | struct fc_rport *rport = starget_to_rport(sdev->sdev_target); |
1191 | fc_port_t *fcport = *(fc_port_t **)rport->dd_data; | ||
1192 | struct req_que *req = vha->req; | 1191 | struct req_que *req = vha->req; |
1193 | 1192 | ||
1194 | if (sdev->tagged_supported) | 1193 | if (sdev->tagged_supported) |
@@ -1197,8 +1196,6 @@ qla2xxx_slave_configure(struct scsi_device *sdev) | |||
1197 | scsi_deactivate_tcq(sdev, req->max_q_depth); | 1196 | scsi_deactivate_tcq(sdev, req->max_q_depth); |
1198 | 1197 | ||
1199 | rport->dev_loss_tmo = ha->port_down_retry_count; | 1198 | rport->dev_loss_tmo = ha->port_down_retry_count; |
1200 | if (sdev->type == TYPE_TAPE) | ||
1201 | fcport->flags |= FCF_TAPE_PRESENT; | ||
1202 | 1199 | ||
1203 | return 0; | 1200 | return 0; |
1204 | } | 1201 | } |
@@ -2805,7 +2802,7 @@ void qla2x00_relogin(struct scsi_qla_host *vha) | |||
2805 | 2802 | ||
2806 | fcport->login_retry--; | 2803 | fcport->login_retry--; |
2807 | if (fcport->flags & FCF_FABRIC_DEVICE) { | 2804 | if (fcport->flags & FCF_FABRIC_DEVICE) { |
2808 | if (fcport->flags & FCF_TAPE_PRESENT) | 2805 | if (fcport->flags & FCF_FCP2_DEVICE) |
2809 | ha->isp_ops->fabric_logout(vha, | 2806 | ha->isp_ops->fabric_logout(vha, |
2810 | fcport->loop_id, | 2807 | fcport->loop_id, |
2811 | fcport->d_id.b.domain, | 2808 | fcport->d_id.b.domain, |
@@ -3141,7 +3138,10 @@ qla2x00_timer(scsi_qla_host_t *vha) | |||
3141 | if (!IS_QLA2100(ha) && vha->link_down_timeout) | 3138 | if (!IS_QLA2100(ha) && vha->link_down_timeout) |
3142 | atomic_set(&vha->loop_state, LOOP_DEAD); | 3139 | atomic_set(&vha->loop_state, LOOP_DEAD); |
3143 | 3140 | ||
3144 | /* Schedule an ISP abort to return any tape commands. */ | 3141 | /* |
3142 | * Schedule an ISP abort to return any FCP2-device | ||
3143 | * commands. | ||
3144 | */ | ||
3145 | /* NPIV - scan physical port only */ | 3145 | /* NPIV - scan physical port only */ |
3146 | if (!vha->vp_idx) { | 3146 | if (!vha->vp_idx) { |
3147 | spin_lock_irqsave(&ha->hardware_lock, | 3147 | spin_lock_irqsave(&ha->hardware_lock, |
@@ -3158,7 +3158,7 @@ qla2x00_timer(scsi_qla_host_t *vha) | |||
3158 | if (sp->ctx) | 3158 | if (sp->ctx) |
3159 | continue; | 3159 | continue; |
3160 | sfcp = sp->fcport; | 3160 | sfcp = sp->fcport; |
3161 | if (!(sfcp->flags & FCF_TAPE_PRESENT)) | 3161 | if (!(sfcp->flags & FCF_FCP2_DEVICE)) |
3162 | continue; | 3162 | continue; |
3163 | 3163 | ||
3164 | set_bit(ISP_ABORT_NEEDED, | 3164 | set_bit(ISP_ABORT_NEEDED, |
diff --git a/drivers/scsi/qla2xxx/qla_sup.c b/drivers/scsi/qla2xxx/qla_sup.c index 010e69b29afe..371dc895972a 100644 --- a/drivers/scsi/qla2xxx/qla_sup.c +++ b/drivers/scsi/qla2xxx/qla_sup.c | |||
@@ -2292,11 +2292,14 @@ qla25xx_read_optrom_data(struct scsi_qla_host *vha, uint8_t *buf, | |||
2292 | uint32_t faddr, left, burst; | 2292 | uint32_t faddr, left, burst; |
2293 | struct qla_hw_data *ha = vha->hw; | 2293 | struct qla_hw_data *ha = vha->hw; |
2294 | 2294 | ||
2295 | if (IS_QLA25XX(ha) || IS_QLA81XX(ha)) | ||
2296 | goto try_fast; | ||
2295 | if (offset & 0xfff) | 2297 | if (offset & 0xfff) |
2296 | goto slow_read; | 2298 | goto slow_read; |
2297 | if (length < OPTROM_BURST_SIZE) | 2299 | if (length < OPTROM_BURST_SIZE) |
2298 | goto slow_read; | 2300 | goto slow_read; |
2299 | 2301 | ||
2302 | try_fast: | ||
2300 | optrom = dma_alloc_coherent(&ha->pdev->dev, OPTROM_BURST_SIZE, | 2303 | optrom = dma_alloc_coherent(&ha->pdev->dev, OPTROM_BURST_SIZE, |
2301 | &optrom_dma, GFP_KERNEL); | 2304 | &optrom_dma, GFP_KERNEL); |
2302 | if (!optrom) { | 2305 | if (!optrom) { |
diff --git a/drivers/scsi/qla2xxx/qla_version.h b/drivers/scsi/qla2xxx/qla_version.h index a65dd95507c6..ed36279a33c1 100644 --- a/drivers/scsi/qla2xxx/qla_version.h +++ b/drivers/scsi/qla2xxx/qla_version.h | |||
@@ -7,7 +7,7 @@ | |||
7 | /* | 7 | /* |
8 | * Driver version | 8 | * Driver version |
9 | */ | 9 | */ |
10 | #define QLA2XXX_VERSION "8.03.01-k9" | 10 | #define QLA2XXX_VERSION "8.03.01-k10" |
11 | 11 | ||
12 | #define QLA_DRIVER_MAJOR_VER 8 | 12 | #define QLA_DRIVER_MAJOR_VER 8 |
13 | #define QLA_DRIVER_MINOR_VER 3 | 13 | #define QLA_DRIVER_MINOR_VER 3 |
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index d8927681ec88..c6642423cc67 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -749,9 +749,9 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes) | |||
749 | */ | 749 | */ |
750 | req->next_rq->resid_len = scsi_in(cmd)->resid; | 750 | req->next_rq->resid_len = scsi_in(cmd)->resid; |
751 | 751 | ||
752 | scsi_release_buffers(cmd); | ||
752 | blk_end_request_all(req, 0); | 753 | blk_end_request_all(req, 0); |
753 | 754 | ||
754 | scsi_release_buffers(cmd); | ||
755 | scsi_next_command(cmd); | 755 | scsi_next_command(cmd); |
756 | return; | 756 | return; |
757 | } | 757 | } |
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c index ddfcecd5099f..653f22a8deb9 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c | |||
@@ -3527,7 +3527,10 @@ fc_bsg_job_timeout(struct request *req) | |||
3527 | if (!done && i->f->bsg_timeout) { | 3527 | if (!done && i->f->bsg_timeout) { |
3528 | /* call LLDD to abort the i/o as it has timed out */ | 3528 | /* call LLDD to abort the i/o as it has timed out */ |
3529 | err = i->f->bsg_timeout(job); | 3529 | err = i->f->bsg_timeout(job); |
3530 | if (err) | 3530 | if (err == -EAGAIN) { |
3531 | job->ref_cnt--; | ||
3532 | return BLK_EH_RESET_TIMER; | ||
3533 | } else if (err) | ||
3531 | printk(KERN_ERR "ERROR: FC BSG request timeout - LLD " | 3534 | printk(KERN_ERR "ERROR: FC BSG request timeout - LLD " |
3532 | "abort failed with status %d\n", err); | 3535 | "abort failed with status %d\n", err); |
3533 | } | 3536 | } |
diff --git a/drivers/serial/8250_pnp.c b/drivers/serial/8250_pnp.c index 36ede02ceacf..24485cc62ff8 100644 --- a/drivers/serial/8250_pnp.c +++ b/drivers/serial/8250_pnp.c | |||
@@ -328,15 +328,7 @@ static const struct pnp_device_id pnp_dev_table[] = { | |||
328 | /* U.S. Robotics 56K Voice INT PnP*/ | 328 | /* U.S. Robotics 56K Voice INT PnP*/ |
329 | { "USR9190", 0 }, | 329 | { "USR9190", 0 }, |
330 | /* Wacom tablets */ | 330 | /* Wacom tablets */ |
331 | { "WACF004", 0 }, | 331 | { "WACFXXX", 0 }, |
332 | { "WACF005", 0 }, | ||
333 | { "WACF006", 0 }, | ||
334 | { "WACF007", 0 }, | ||
335 | { "WACF008", 0 }, | ||
336 | { "WACF009", 0 }, | ||
337 | { "WACF00A", 0 }, | ||
338 | { "WACF00B", 0 }, | ||
339 | { "WACF00C", 0 }, | ||
340 | /* Compaq touchscreen */ | 332 | /* Compaq touchscreen */ |
341 | { "FPI2002", 0 }, | 333 | { "FPI2002", 0 }, |
342 | /* Fujitsu Stylistic touchscreens */ | 334 | /* Fujitsu Stylistic touchscreens */ |
@@ -354,6 +346,8 @@ static const struct pnp_device_id pnp_dev_table[] = { | |||
354 | { "FUJ02E5", 0 }, | 346 | { "FUJ02E5", 0 }, |
355 | /* Fujitsu P-series tablet PC device */ | 347 | /* Fujitsu P-series tablet PC device */ |
356 | { "FUJ02E6", 0 }, | 348 | { "FUJ02E6", 0 }, |
349 | /* Fujitsu Wacom 2FGT Tablet PC device */ | ||
350 | { "FUJ02E7", 0 }, | ||
357 | /* | 351 | /* |
358 | * LG C1 EXPRESS DUAL (C1-PB11A3) touch screen (actually a FUJ02E6 in | 352 | * LG C1 EXPRESS DUAL (C1-PB11A3) touch screen (actually a FUJ02E6 in |
359 | * disguise) | 353 | * disguise) |
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index 18130f11238e..60d665a17a88 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
@@ -1088,7 +1088,7 @@ imx_console_get_options(struct imx_port *sport, int *baud, | |||
1088 | int *parity, int *bits) | 1088 | int *parity, int *bits) |
1089 | { | 1089 | { |
1090 | 1090 | ||
1091 | if ( readl(sport->port.membase + UCR1) | UCR1_UARTEN ) { | 1091 | if (readl(sport->port.membase + UCR1) & UCR1_UARTEN) { |
1092 | /* ok, the port was enabled */ | 1092 | /* ok, the port was enabled */ |
1093 | unsigned int ucr2, ubir,ubmr, uartclk; | 1093 | unsigned int ucr2, ubir,ubmr, uartclk; |
1094 | unsigned int baud_raw; | 1094 | unsigned int baud_raw; |
diff --git a/drivers/serial/pmac_zilog.c b/drivers/serial/pmac_zilog.c index 0700cd10b97c..683e66f18e8c 100644 --- a/drivers/serial/pmac_zilog.c +++ b/drivers/serial/pmac_zilog.c | |||
@@ -411,6 +411,17 @@ static void pmz_transmit_chars(struct uart_pmac_port *uap) | |||
411 | goto ack_tx_int; | 411 | goto ack_tx_int; |
412 | } | 412 | } |
413 | 413 | ||
414 | /* Under some circumstances, we see interrupts reported for | ||
415 | * a closed channel. The interrupt mask in R1 is clear, but | ||
416 | * R3 still signals the interrupts and we see them when taking | ||
417 | * an interrupt for the other channel (this could be a qemu | ||
418 | * bug but since the ESCC doc doesn't specify precsiely whether | ||
419 | * R3 interrup status bits are masked by R1 interrupt enable | ||
420 | * bits, better safe than sorry). --BenH. | ||
421 | */ | ||
422 | if (!ZS_IS_OPEN(uap)) | ||
423 | goto ack_tx_int; | ||
424 | |||
414 | if (uap->port.x_char) { | 425 | if (uap->port.x_char) { |
415 | uap->flags |= PMACZILOG_FLAG_TX_ACTIVE; | 426 | uap->flags |= PMACZILOG_FLAG_TX_ACTIVE; |
416 | write_zsdata(uap, uap->port.x_char); | 427 | write_zsdata(uap, uap->port.x_char); |
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c index 047530b285bb..7f2830709512 100644 --- a/drivers/serial/serial_core.c +++ b/drivers/serial/serial_core.c | |||
@@ -385,13 +385,20 @@ uart_get_baud_rate(struct uart_port *port, struct ktermios *termios, | |||
385 | } | 385 | } |
386 | 386 | ||
387 | /* | 387 | /* |
388 | * As a last resort, if the quotient is zero, | 388 | * As a last resort, if the range cannot be met then clip to |
389 | * default to 9600 bps | 389 | * the nearest chip supported rate. |
390 | */ | 390 | */ |
391 | if (!hung_up) | 391 | if (!hung_up) { |
392 | tty_termios_encode_baud_rate(termios, 9600, 9600); | 392 | if (baud <= min) |
393 | tty_termios_encode_baud_rate(termios, | ||
394 | min + 1, min + 1); | ||
395 | else | ||
396 | tty_termios_encode_baud_rate(termios, | ||
397 | max - 1, max - 1); | ||
398 | } | ||
393 | } | 399 | } |
394 | 400 | /* Should never happen */ | |
401 | WARN_ON(1); | ||
395 | return 0; | 402 | return 0; |
396 | } | 403 | } |
397 | 404 | ||
@@ -2006,12 +2013,6 @@ int uart_suspend_port(struct uart_driver *drv, struct uart_port *uport) | |||
2006 | 2013 | ||
2007 | mutex_lock(&port->mutex); | 2014 | mutex_lock(&port->mutex); |
2008 | 2015 | ||
2009 | if (!console_suspend_enabled && uart_console(uport)) { | ||
2010 | /* we're going to avoid suspending serial console */ | ||
2011 | mutex_unlock(&port->mutex); | ||
2012 | return 0; | ||
2013 | } | ||
2014 | |||
2015 | tty_dev = device_find_child(uport->dev, &match, serial_match_port); | 2016 | tty_dev = device_find_child(uport->dev, &match, serial_match_port); |
2016 | if (device_may_wakeup(tty_dev)) { | 2017 | if (device_may_wakeup(tty_dev)) { |
2017 | enable_irq_wake(uport->irq); | 2018 | enable_irq_wake(uport->irq); |
@@ -2019,20 +2020,23 @@ int uart_suspend_port(struct uart_driver *drv, struct uart_port *uport) | |||
2019 | mutex_unlock(&port->mutex); | 2020 | mutex_unlock(&port->mutex); |
2020 | return 0; | 2021 | return 0; |
2021 | } | 2022 | } |
2022 | uport->suspended = 1; | 2023 | if (console_suspend_enabled || !uart_console(uport)) |
2024 | uport->suspended = 1; | ||
2023 | 2025 | ||
2024 | if (port->flags & ASYNC_INITIALIZED) { | 2026 | if (port->flags & ASYNC_INITIALIZED) { |
2025 | const struct uart_ops *ops = uport->ops; | 2027 | const struct uart_ops *ops = uport->ops; |
2026 | int tries; | 2028 | int tries; |
2027 | 2029 | ||
2028 | set_bit(ASYNCB_SUSPENDED, &port->flags); | 2030 | if (console_suspend_enabled || !uart_console(uport)) { |
2029 | clear_bit(ASYNCB_INITIALIZED, &port->flags); | 2031 | set_bit(ASYNCB_SUSPENDED, &port->flags); |
2032 | clear_bit(ASYNCB_INITIALIZED, &port->flags); | ||
2030 | 2033 | ||
2031 | spin_lock_irq(&uport->lock); | 2034 | spin_lock_irq(&uport->lock); |
2032 | ops->stop_tx(uport); | 2035 | ops->stop_tx(uport); |
2033 | ops->set_mctrl(uport, 0); | 2036 | ops->set_mctrl(uport, 0); |
2034 | ops->stop_rx(uport); | 2037 | ops->stop_rx(uport); |
2035 | spin_unlock_irq(&uport->lock); | 2038 | spin_unlock_irq(&uport->lock); |
2039 | } | ||
2036 | 2040 | ||
2037 | /* | 2041 | /* |
2038 | * Wait for the transmitter to empty. | 2042 | * Wait for the transmitter to empty. |
@@ -2047,16 +2051,18 @@ int uart_suspend_port(struct uart_driver *drv, struct uart_port *uport) | |||
2047 | drv->dev_name, | 2051 | drv->dev_name, |
2048 | drv->tty_driver->name_base + uport->line); | 2052 | drv->tty_driver->name_base + uport->line); |
2049 | 2053 | ||
2050 | ops->shutdown(uport); | 2054 | if (console_suspend_enabled || !uart_console(uport)) |
2055 | ops->shutdown(uport); | ||
2051 | } | 2056 | } |
2052 | 2057 | ||
2053 | /* | 2058 | /* |
2054 | * Disable the console device before suspending. | 2059 | * Disable the console device before suspending. |
2055 | */ | 2060 | */ |
2056 | if (uart_console(uport)) | 2061 | if (console_suspend_enabled && uart_console(uport)) |
2057 | console_stop(uport->cons); | 2062 | console_stop(uport->cons); |
2058 | 2063 | ||
2059 | uart_change_pm(state, 3); | 2064 | if (console_suspend_enabled || !uart_console(uport)) |
2065 | uart_change_pm(state, 3); | ||
2060 | 2066 | ||
2061 | mutex_unlock(&port->mutex); | 2067 | mutex_unlock(&port->mutex); |
2062 | 2068 | ||
@@ -2073,29 +2079,6 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *uport) | |||
2073 | 2079 | ||
2074 | mutex_lock(&port->mutex); | 2080 | mutex_lock(&port->mutex); |
2075 | 2081 | ||
2076 | if (!console_suspend_enabled && uart_console(uport)) { | ||
2077 | /* no need to resume serial console, it wasn't suspended */ | ||
2078 | /* | ||
2079 | * First try to use the console cflag setting. | ||
2080 | */ | ||
2081 | memset(&termios, 0, sizeof(struct ktermios)); | ||
2082 | termios.c_cflag = uport->cons->cflag; | ||
2083 | /* | ||
2084 | * If that's unset, use the tty termios setting. | ||
2085 | */ | ||
2086 | if (termios.c_cflag == 0) | ||
2087 | termios = *state->port.tty->termios; | ||
2088 | else { | ||
2089 | termios.c_ispeed = termios.c_ospeed = | ||
2090 | tty_termios_input_baud_rate(&termios); | ||
2091 | termios.c_ispeed = termios.c_ospeed = | ||
2092 | tty_termios_baud_rate(&termios); | ||
2093 | } | ||
2094 | uport->ops->set_termios(uport, &termios, NULL); | ||
2095 | mutex_unlock(&port->mutex); | ||
2096 | return 0; | ||
2097 | } | ||
2098 | |||
2099 | tty_dev = device_find_child(uport->dev, &match, serial_match_port); | 2082 | tty_dev = device_find_child(uport->dev, &match, serial_match_port); |
2100 | if (!uport->suspended && device_may_wakeup(tty_dev)) { | 2083 | if (!uport->suspended && device_may_wakeup(tty_dev)) { |
2101 | disable_irq_wake(uport->irq); | 2084 | disable_irq_wake(uport->irq); |
@@ -2121,21 +2104,23 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *uport) | |||
2121 | spin_lock_irq(&uport->lock); | 2104 | spin_lock_irq(&uport->lock); |
2122 | ops->set_mctrl(uport, 0); | 2105 | ops->set_mctrl(uport, 0); |
2123 | spin_unlock_irq(&uport->lock); | 2106 | spin_unlock_irq(&uport->lock); |
2124 | ret = ops->startup(uport); | 2107 | if (console_suspend_enabled || !uart_console(uport)) { |
2125 | if (ret == 0) { | 2108 | ret = ops->startup(uport); |
2126 | uart_change_speed(state, NULL); | 2109 | if (ret == 0) { |
2127 | spin_lock_irq(&uport->lock); | 2110 | uart_change_speed(state, NULL); |
2128 | ops->set_mctrl(uport, uport->mctrl); | 2111 | spin_lock_irq(&uport->lock); |
2129 | ops->start_tx(uport); | 2112 | ops->set_mctrl(uport, uport->mctrl); |
2130 | spin_unlock_irq(&uport->lock); | 2113 | ops->start_tx(uport); |
2131 | set_bit(ASYNCB_INITIALIZED, &port->flags); | 2114 | spin_unlock_irq(&uport->lock); |
2132 | } else { | 2115 | set_bit(ASYNCB_INITIALIZED, &port->flags); |
2133 | /* | 2116 | } else { |
2134 | * Failed to resume - maybe hardware went away? | 2117 | /* |
2135 | * Clear the "initialized" flag so we won't try | 2118 | * Failed to resume - maybe hardware went away? |
2136 | * to call the low level drivers shutdown method. | 2119 | * Clear the "initialized" flag so we won't try |
2137 | */ | 2120 | * to call the low level drivers shutdown method. |
2138 | uart_shutdown(state); | 2121 | */ |
2122 | uart_shutdown(state); | ||
2123 | } | ||
2139 | } | 2124 | } |
2140 | 2125 | ||
2141 | clear_bit(ASYNCB_SUSPENDED, &port->flags); | 2126 | clear_bit(ASYNCB_SUSPENDED, &port->flags); |
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c index 0ee7239c5d69..95421fa3b304 100644 --- a/drivers/serial/serial_cs.c +++ b/drivers/serial/serial_cs.c | |||
@@ -146,7 +146,8 @@ static void quirk_wakeup_oxsemi(struct pcmcia_device *link) | |||
146 | { | 146 | { |
147 | struct serial_info *info = link->priv; | 147 | struct serial_info *info = link->priv; |
148 | 148 | ||
149 | outb(12, info->c950ctrl + 1); | 149 | if (info->c950ctrl) |
150 | outb(12, info->c950ctrl + 1); | ||
150 | } | 151 | } |
151 | 152 | ||
152 | /* request_region? oxsemi branch does no request_region too... */ | 153 | /* request_region? oxsemi branch does no request_region too... */ |
@@ -757,6 +758,7 @@ static struct pcmcia_device_id serial_ids[] = { | |||
757 | PCMCIA_PFC_DEVICE_PROD_ID12(1, "PCMCIAs", "LanModem", 0xdcfe12d3, 0xc67c648f), | 758 | PCMCIA_PFC_DEVICE_PROD_ID12(1, "PCMCIAs", "LanModem", 0xdcfe12d3, 0xc67c648f), |
758 | PCMCIA_PFC_DEVICE_PROD_ID12(1, "TDK", "GlobalNetworker 3410/3412", 0x1eae9475, 0xd9a93bed), | 759 | PCMCIA_PFC_DEVICE_PROD_ID12(1, "TDK", "GlobalNetworker 3410/3412", 0x1eae9475, 0xd9a93bed), |
759 | PCMCIA_PFC_DEVICE_PROD_ID12(1, "Xircom", "CreditCard Ethernet+Modem II", 0x2e3ee845, 0xeca401bf), | 760 | PCMCIA_PFC_DEVICE_PROD_ID12(1, "Xircom", "CreditCard Ethernet+Modem II", 0x2e3ee845, 0xeca401bf), |
761 | PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x0e01), | ||
760 | PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x0a05), | 762 | PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x0a05), |
761 | PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x1101), | 763 | PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x1101), |
762 | PCMCIA_MFC_DEVICE_MANF_CARD(0, 0x0104, 0x0070), | 764 | PCMCIA_MFC_DEVICE_MANF_CARD(0, 0x0104, 0x0070), |
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index 37f0de9dd9ce..42f3333c4ad0 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
@@ -1052,7 +1052,18 @@ static void __devinit sci_init_single(struct platform_device *dev, | |||
1052 | sci_port->port.ops = &sci_uart_ops; | 1052 | sci_port->port.ops = &sci_uart_ops; |
1053 | sci_port->port.iotype = UPIO_MEM; | 1053 | sci_port->port.iotype = UPIO_MEM; |
1054 | sci_port->port.line = index; | 1054 | sci_port->port.line = index; |
1055 | sci_port->port.fifosize = 1; | 1055 | |
1056 | switch (p->type) { | ||
1057 | case PORT_SCIFA: | ||
1058 | sci_port->port.fifosize = 64; | ||
1059 | break; | ||
1060 | case PORT_SCIF: | ||
1061 | sci_port->port.fifosize = 16; | ||
1062 | break; | ||
1063 | default: | ||
1064 | sci_port->port.fifosize = 1; | ||
1065 | break; | ||
1066 | } | ||
1056 | 1067 | ||
1057 | if (dev) { | 1068 | if (dev) { |
1058 | sci_port->iclk = p->clk ? clk_get(&dev->dev, p->clk) : NULL; | 1069 | sci_port->iclk = p->clk ? clk_get(&dev->dev, p->clk) : NULL; |
diff --git a/drivers/staging/asus_oled/asus_oled.c b/drivers/staging/asus_oled/asus_oled.c index f4c26572c7df..43c57b7688ab 100644 --- a/drivers/staging/asus_oled/asus_oled.c +++ b/drivers/staging/asus_oled/asus_oled.c | |||
@@ -194,9 +194,11 @@ static ssize_t set_enabled(struct device *dev, struct device_attribute *attr, | |||
194 | { | 194 | { |
195 | struct usb_interface *intf = to_usb_interface(dev); | 195 | struct usb_interface *intf = to_usb_interface(dev); |
196 | struct asus_oled_dev *odev = usb_get_intfdata(intf); | 196 | struct asus_oled_dev *odev = usb_get_intfdata(intf); |
197 | int temp = strict_strtoul(buf, 10, NULL); | 197 | unsigned long value; |
198 | if (strict_strtoul(buf, 10, &value)) | ||
199 | return -EINVAL; | ||
198 | 200 | ||
199 | enable_oled(odev, temp); | 201 | enable_oled(odev, value); |
200 | 202 | ||
201 | return count; | 203 | return count; |
202 | } | 204 | } |
@@ -207,10 +209,12 @@ static ssize_t class_set_enabled(struct device *device, | |||
207 | { | 209 | { |
208 | struct asus_oled_dev *odev = | 210 | struct asus_oled_dev *odev = |
209 | (struct asus_oled_dev *) dev_get_drvdata(device); | 211 | (struct asus_oled_dev *) dev_get_drvdata(device); |
212 | unsigned long value; | ||
210 | 213 | ||
211 | int temp = strict_strtoul(buf, 10, NULL); | 214 | if (strict_strtoul(buf, 10, &value)) |
215 | return -EINVAL; | ||
212 | 216 | ||
213 | enable_oled(odev, temp); | 217 | enable_oled(odev, value); |
214 | 218 | ||
215 | return count; | 219 | return count; |
216 | } | 220 | } |
diff --git a/drivers/staging/cx25821/cx25821-medusa-video.c b/drivers/staging/cx25821/cx25821-medusa-video.c index e4df8134f059..1eb079b3d429 100644 --- a/drivers/staging/cx25821/cx25821-medusa-video.c +++ b/drivers/staging/cx25821/cx25821-medusa-video.c | |||
@@ -860,10 +860,8 @@ int medusa_video_init(struct cx25821_dev *dev) | |||
860 | 860 | ||
861 | ret_val = medusa_set_videostandard(dev); | 861 | ret_val = medusa_set_videostandard(dev); |
862 | 862 | ||
863 | if (ret_val < 0) { | 863 | if (ret_val < 0) |
864 | mutex_unlock(&dev->lock); | ||
865 | return -EINVAL; | 864 | return -EINVAL; |
866 | } | ||
867 | 865 | ||
868 | return 1; | 866 | return 1; |
869 | } | 867 | } |
diff --git a/drivers/staging/et131x/et1310_address_map.h b/drivers/staging/et131x/et1310_address_map.h index 6da843cc343c..e715e4dcb523 100644 --- a/drivers/staging/et131x/et1310_address_map.h +++ b/drivers/staging/et131x/et1310_address_map.h | |||
@@ -203,11 +203,14 @@ typedef struct _GLOBAL_t { /* Location: */ | |||
203 | * 9-0: pr ndes | 203 | * 9-0: pr ndes |
204 | */ | 204 | */ |
205 | 205 | ||
206 | #define ET_DMA10_MASK 0x3FF /* 10 bit mask for DMA10W types */ | 206 | #define ET_DMA12_MASK 0x0FFF /* 12 bit mask for DMA12W types */ |
207 | #define ET_DMA10_WRAP 0x400 | 207 | #define ET_DMA12_WRAP 0x1000 |
208 | #define ET_DMA4_MASK 0x00F /* 4 bit mask for DMA4W types */ | 208 | #define ET_DMA10_MASK 0x03FF /* 10 bit mask for DMA10W types */ |
209 | #define ET_DMA4_WRAP 0x010 | 209 | #define ET_DMA10_WRAP 0x0400 |
210 | 210 | #define ET_DMA4_MASK 0x000F /* 4 bit mask for DMA4W types */ | |
211 | #define ET_DMA4_WRAP 0x0010 | ||
212 | |||
213 | #define INDEX12(x) ((x) & ET_DMA12_MASK) | ||
211 | #define INDEX10(x) ((x) & ET_DMA10_MASK) | 214 | #define INDEX10(x) ((x) & ET_DMA10_MASK) |
212 | #define INDEX4(x) ((x) & ET_DMA4_MASK) | 215 | #define INDEX4(x) ((x) & ET_DMA4_MASK) |
213 | 216 | ||
@@ -216,6 +219,11 @@ extern inline void add_10bit(u32 *v, int n) | |||
216 | *v = INDEX10(*v + n) | (*v & ET_DMA10_WRAP); | 219 | *v = INDEX10(*v + n) | (*v & ET_DMA10_WRAP); |
217 | } | 220 | } |
218 | 221 | ||
222 | extern inline void add_12bit(u32 *v, int n) | ||
223 | { | ||
224 | *v = INDEX12(*v + n) | (*v & ET_DMA12_WRAP); | ||
225 | } | ||
226 | |||
219 | /* | 227 | /* |
220 | * 10bit DMA with wrap | 228 | * 10bit DMA with wrap |
221 | * txdma tx queue write address reg in txdma address map at 0x1010 | 229 | * txdma tx queue write address reg in txdma address map at 0x1010 |
diff --git a/drivers/staging/et131x/et1310_rx.c b/drivers/staging/et131x/et1310_rx.c index 3ddc9b12b8db..81c1a7478ad6 100644 --- a/drivers/staging/et131x/et1310_rx.c +++ b/drivers/staging/et131x/et1310_rx.c | |||
@@ -831,10 +831,10 @@ PMP_RFD nic_rx_pkts(struct et131x_adapter *etdev) | |||
831 | 831 | ||
832 | /* Indicate that we have used this PSR entry. */ | 832 | /* Indicate that we have used this PSR entry. */ |
833 | /* FIXME wrap 12 */ | 833 | /* FIXME wrap 12 */ |
834 | rx_local->local_psr_full = (rx_local->local_psr_full + 1) & 0xFFF; | 834 | add_12bit(&rx_local->local_psr_full, 1); |
835 | if (rx_local->local_psr_full > rx_local->PsrNumEntries - 1) { | 835 | if ((rx_local->local_psr_full & 0xFFF) > rx_local->PsrNumEntries - 1) { |
836 | /* Clear psr full and toggle the wrap bit */ | 836 | /* Clear psr full and toggle the wrap bit */ |
837 | rx_local->local_psr_full &= 0xFFF; | 837 | rx_local->local_psr_full &= ~0xFFF; |
838 | rx_local->local_psr_full ^= 0x1000; | 838 | rx_local->local_psr_full ^= 0x1000; |
839 | } | 839 | } |
840 | 840 | ||
diff --git a/drivers/staging/hv/Hv.c b/drivers/staging/hv/Hv.c index c5b6613f2f2f..c2809f2a2ce0 100644 --- a/drivers/staging/hv/Hv.c +++ b/drivers/staging/hv/Hv.c | |||
@@ -386,7 +386,7 @@ u16 HvSignalEvent(void) | |||
386 | * retrieve the initialized message and event pages. Otherwise, we create and | 386 | * retrieve the initialized message and event pages. Otherwise, we create and |
387 | * initialize the message and event pages. | 387 | * initialize the message and event pages. |
388 | */ | 388 | */ |
389 | int HvSynicInit(u32 irqVector) | 389 | void HvSynicInit(void *irqarg) |
390 | { | 390 | { |
391 | u64 version; | 391 | u64 version; |
392 | union hv_synic_simp simp; | 392 | union hv_synic_simp simp; |
@@ -394,13 +394,14 @@ int HvSynicInit(u32 irqVector) | |||
394 | union hv_synic_sint sharedSint; | 394 | union hv_synic_sint sharedSint; |
395 | union hv_synic_scontrol sctrl; | 395 | union hv_synic_scontrol sctrl; |
396 | u64 guestID; | 396 | u64 guestID; |
397 | int ret = 0; | 397 | u32 irqVector = *((u32 *)(irqarg)); |
398 | int cpu = smp_processor_id(); | ||
398 | 399 | ||
399 | DPRINT_ENTER(VMBUS); | 400 | DPRINT_ENTER(VMBUS); |
400 | 401 | ||
401 | if (!gHvContext.HypercallPage) { | 402 | if (!gHvContext.HypercallPage) { |
402 | DPRINT_EXIT(VMBUS); | 403 | DPRINT_EXIT(VMBUS); |
403 | return ret; | 404 | return; |
404 | } | 405 | } |
405 | 406 | ||
406 | /* Check the version */ | 407 | /* Check the version */ |
@@ -425,27 +426,27 @@ int HvSynicInit(u32 irqVector) | |||
425 | */ | 426 | */ |
426 | rdmsrl(HV_X64_MSR_GUEST_OS_ID, guestID); | 427 | rdmsrl(HV_X64_MSR_GUEST_OS_ID, guestID); |
427 | if (guestID == HV_LINUX_GUEST_ID) { | 428 | if (guestID == HV_LINUX_GUEST_ID) { |
428 | gHvContext.synICMessagePage[0] = | 429 | gHvContext.synICMessagePage[cpu] = |
429 | phys_to_virt(simp.BaseSimpGpa << PAGE_SHIFT); | 430 | phys_to_virt(simp.BaseSimpGpa << PAGE_SHIFT); |
430 | gHvContext.synICEventPage[0] = | 431 | gHvContext.synICEventPage[cpu] = |
431 | phys_to_virt(siefp.BaseSiefpGpa << PAGE_SHIFT); | 432 | phys_to_virt(siefp.BaseSiefpGpa << PAGE_SHIFT); |
432 | } else { | 433 | } else { |
433 | DPRINT_ERR(VMBUS, "unknown guest id!!"); | 434 | DPRINT_ERR(VMBUS, "unknown guest id!!"); |
434 | goto Cleanup; | 435 | goto Cleanup; |
435 | } | 436 | } |
436 | DPRINT_DBG(VMBUS, "MAPPED: Simp: %p, Sifep: %p", | 437 | DPRINT_DBG(VMBUS, "MAPPED: Simp: %p, Sifep: %p", |
437 | gHvContext.synICMessagePage[0], | 438 | gHvContext.synICMessagePage[cpu], |
438 | gHvContext.synICEventPage[0]); | 439 | gHvContext.synICEventPage[cpu]); |
439 | } else { | 440 | } else { |
440 | gHvContext.synICMessagePage[0] = osd_PageAlloc(1); | 441 | gHvContext.synICMessagePage[cpu] = (void *)get_zeroed_page(GFP_ATOMIC); |
441 | if (gHvContext.synICMessagePage[0] == NULL) { | 442 | if (gHvContext.synICMessagePage[cpu] == NULL) { |
442 | DPRINT_ERR(VMBUS, | 443 | DPRINT_ERR(VMBUS, |
443 | "unable to allocate SYNIC message page!!"); | 444 | "unable to allocate SYNIC message page!!"); |
444 | goto Cleanup; | 445 | goto Cleanup; |
445 | } | 446 | } |
446 | 447 | ||
447 | gHvContext.synICEventPage[0] = osd_PageAlloc(1); | 448 | gHvContext.synICEventPage[cpu] = (void *)get_zeroed_page(GFP_ATOMIC); |
448 | if (gHvContext.synICEventPage[0] == NULL) { | 449 | if (gHvContext.synICEventPage[cpu] == NULL) { |
449 | DPRINT_ERR(VMBUS, | 450 | DPRINT_ERR(VMBUS, |
450 | "unable to allocate SYNIC event page!!"); | 451 | "unable to allocate SYNIC event page!!"); |
451 | goto Cleanup; | 452 | goto Cleanup; |
@@ -454,7 +455,7 @@ int HvSynicInit(u32 irqVector) | |||
454 | /* Setup the Synic's message page */ | 455 | /* Setup the Synic's message page */ |
455 | rdmsrl(HV_X64_MSR_SIMP, simp.AsUINT64); | 456 | rdmsrl(HV_X64_MSR_SIMP, simp.AsUINT64); |
456 | simp.SimpEnabled = 1; | 457 | simp.SimpEnabled = 1; |
457 | simp.BaseSimpGpa = virt_to_phys(gHvContext.synICMessagePage[0]) | 458 | simp.BaseSimpGpa = virt_to_phys(gHvContext.synICMessagePage[cpu]) |
458 | >> PAGE_SHIFT; | 459 | >> PAGE_SHIFT; |
459 | 460 | ||
460 | DPRINT_DBG(VMBUS, "HV_X64_MSR_SIMP msr set to: %llx", | 461 | DPRINT_DBG(VMBUS, "HV_X64_MSR_SIMP msr set to: %llx", |
@@ -465,7 +466,7 @@ int HvSynicInit(u32 irqVector) | |||
465 | /* Setup the Synic's event page */ | 466 | /* Setup the Synic's event page */ |
466 | rdmsrl(HV_X64_MSR_SIEFP, siefp.AsUINT64); | 467 | rdmsrl(HV_X64_MSR_SIEFP, siefp.AsUINT64); |
467 | siefp.SiefpEnabled = 1; | 468 | siefp.SiefpEnabled = 1; |
468 | siefp.BaseSiefpGpa = virt_to_phys(gHvContext.synICEventPage[0]) | 469 | siefp.BaseSiefpGpa = virt_to_phys(gHvContext.synICEventPage[cpu]) |
469 | >> PAGE_SHIFT; | 470 | >> PAGE_SHIFT; |
470 | 471 | ||
471 | DPRINT_DBG(VMBUS, "HV_X64_MSR_SIEFP msr set to: %llx", | 472 | DPRINT_DBG(VMBUS, "HV_X64_MSR_SIEFP msr set to: %llx", |
@@ -501,32 +502,30 @@ int HvSynicInit(u32 irqVector) | |||
501 | 502 | ||
502 | DPRINT_EXIT(VMBUS); | 503 | DPRINT_EXIT(VMBUS); |
503 | 504 | ||
504 | return ret; | 505 | return; |
505 | 506 | ||
506 | Cleanup: | 507 | Cleanup: |
507 | ret = -1; | ||
508 | |||
509 | if (gHvContext.GuestId == HV_LINUX_GUEST_ID) { | 508 | if (gHvContext.GuestId == HV_LINUX_GUEST_ID) { |
510 | if (gHvContext.synICEventPage[0]) | 509 | if (gHvContext.synICEventPage[cpu]) |
511 | osd_PageFree(gHvContext.synICEventPage[0], 1); | 510 | osd_PageFree(gHvContext.synICEventPage[cpu], 1); |
512 | 511 | ||
513 | if (gHvContext.synICMessagePage[0]) | 512 | if (gHvContext.synICMessagePage[cpu]) |
514 | osd_PageFree(gHvContext.synICMessagePage[0], 1); | 513 | osd_PageFree(gHvContext.synICMessagePage[cpu], 1); |
515 | } | 514 | } |
516 | 515 | ||
517 | DPRINT_EXIT(VMBUS); | 516 | DPRINT_EXIT(VMBUS); |
518 | 517 | return; | |
519 | return ret; | ||
520 | } | 518 | } |
521 | 519 | ||
522 | /** | 520 | /** |
523 | * HvSynicCleanup - Cleanup routine for HvSynicInit(). | 521 | * HvSynicCleanup - Cleanup routine for HvSynicInit(). |
524 | */ | 522 | */ |
525 | void HvSynicCleanup(void) | 523 | void HvSynicCleanup(void *arg) |
526 | { | 524 | { |
527 | union hv_synic_sint sharedSint; | 525 | union hv_synic_sint sharedSint; |
528 | union hv_synic_simp simp; | 526 | union hv_synic_simp simp; |
529 | union hv_synic_siefp siefp; | 527 | union hv_synic_siefp siefp; |
528 | int cpu = smp_processor_id(); | ||
530 | 529 | ||
531 | DPRINT_ENTER(VMBUS); | 530 | DPRINT_ENTER(VMBUS); |
532 | 531 | ||
@@ -539,6 +538,7 @@ void HvSynicCleanup(void) | |||
539 | 538 | ||
540 | sharedSint.Masked = 1; | 539 | sharedSint.Masked = 1; |
541 | 540 | ||
541 | /* Need to correctly cleanup in the case of SMP!!! */ | ||
542 | /* Disable the interrupt */ | 542 | /* Disable the interrupt */ |
543 | wrmsrl(HV_X64_MSR_SINT0 + VMBUS_MESSAGE_SINT, sharedSint.AsUINT64); | 543 | wrmsrl(HV_X64_MSR_SINT0 + VMBUS_MESSAGE_SINT, sharedSint.AsUINT64); |
544 | 544 | ||
@@ -560,8 +560,8 @@ void HvSynicCleanup(void) | |||
560 | 560 | ||
561 | wrmsrl(HV_X64_MSR_SIEFP, siefp.AsUINT64); | 561 | wrmsrl(HV_X64_MSR_SIEFP, siefp.AsUINT64); |
562 | 562 | ||
563 | osd_PageFree(gHvContext.synICMessagePage[0], 1); | 563 | osd_PageFree(gHvContext.synICMessagePage[cpu], 1); |
564 | osd_PageFree(gHvContext.synICEventPage[0], 1); | 564 | osd_PageFree(gHvContext.synICEventPage[cpu], 1); |
565 | } | 565 | } |
566 | 566 | ||
567 | DPRINT_EXIT(VMBUS); | 567 | DPRINT_EXIT(VMBUS); |
diff --git a/drivers/staging/hv/Hv.h b/drivers/staging/hv/Hv.h index 5379e4bfc56e..fce4b5cdac30 100644 --- a/drivers/staging/hv/Hv.h +++ b/drivers/staging/hv/Hv.h | |||
@@ -93,7 +93,7 @@ static const struct hv_guid VMBUS_SERVICE_ID = { | |||
93 | }, | 93 | }, |
94 | }; | 94 | }; |
95 | 95 | ||
96 | #define MAX_NUM_CPUS 1 | 96 | #define MAX_NUM_CPUS 32 |
97 | 97 | ||
98 | 98 | ||
99 | struct hv_input_signal_event_buffer { | 99 | struct hv_input_signal_event_buffer { |
@@ -137,8 +137,8 @@ extern u16 HvPostMessage(union hv_connection_id connectionId, | |||
137 | 137 | ||
138 | extern u16 HvSignalEvent(void); | 138 | extern u16 HvSignalEvent(void); |
139 | 139 | ||
140 | extern int HvSynicInit(u32 irqVector); | 140 | extern void HvSynicInit(void *irqarg); |
141 | 141 | ||
142 | extern void HvSynicCleanup(void); | 142 | extern void HvSynicCleanup(void *arg); |
143 | 143 | ||
144 | #endif /* __HV_H__ */ | 144 | #endif /* __HV_H__ */ |
diff --git a/drivers/staging/hv/Vmbus.c b/drivers/staging/hv/Vmbus.c index a4dd06f6d459..35a023e9f9d1 100644 --- a/drivers/staging/hv/Vmbus.c +++ b/drivers/staging/hv/Vmbus.c | |||
@@ -129,7 +129,7 @@ static int VmbusOnDeviceAdd(struct hv_device *dev, void *AdditionalInfo) | |||
129 | 129 | ||
130 | /* strcpy(dev->name, "vmbus"); */ | 130 | /* strcpy(dev->name, "vmbus"); */ |
131 | /* SynIC setup... */ | 131 | /* SynIC setup... */ |
132 | ret = HvSynicInit(*irqvector); | 132 | on_each_cpu(HvSynicInit, (void *)irqvector, 1); |
133 | 133 | ||
134 | /* Connect to VMBus in the root partition */ | 134 | /* Connect to VMBus in the root partition */ |
135 | ret = VmbusConnect(); | 135 | ret = VmbusConnect(); |
@@ -150,7 +150,7 @@ static int VmbusOnDeviceRemove(struct hv_device *dev) | |||
150 | DPRINT_ENTER(VMBUS); | 150 | DPRINT_ENTER(VMBUS); |
151 | VmbusChannelReleaseUnattachedChannels(); | 151 | VmbusChannelReleaseUnattachedChannels(); |
152 | VmbusDisconnect(); | 152 | VmbusDisconnect(); |
153 | HvSynicCleanup(); | 153 | on_each_cpu(HvSynicCleanup, NULL, 1); |
154 | DPRINT_EXIT(VMBUS); | 154 | DPRINT_EXIT(VMBUS); |
155 | 155 | ||
156 | return ret; | 156 | return ret; |
@@ -173,7 +173,8 @@ static void VmbusOnCleanup(struct hv_driver *drv) | |||
173 | */ | 173 | */ |
174 | static void VmbusOnMsgDPC(struct hv_driver *drv) | 174 | static void VmbusOnMsgDPC(struct hv_driver *drv) |
175 | { | 175 | { |
176 | void *page_addr = gHvContext.synICMessagePage[0]; | 176 | int cpu = smp_processor_id(); |
177 | void *page_addr = gHvContext.synICMessagePage[cpu]; | ||
177 | struct hv_message *msg = (struct hv_message *)page_addr + | 178 | struct hv_message *msg = (struct hv_message *)page_addr + |
178 | VMBUS_MESSAGE_SINT; | 179 | VMBUS_MESSAGE_SINT; |
179 | struct hv_message *copied; | 180 | struct hv_message *copied; |
@@ -230,11 +231,12 @@ static void VmbusOnEventDPC(struct hv_driver *drv) | |||
230 | static int VmbusOnISR(struct hv_driver *drv) | 231 | static int VmbusOnISR(struct hv_driver *drv) |
231 | { | 232 | { |
232 | int ret = 0; | 233 | int ret = 0; |
234 | int cpu = smp_processor_id(); | ||
233 | void *page_addr; | 235 | void *page_addr; |
234 | struct hv_message *msg; | 236 | struct hv_message *msg; |
235 | union hv_synic_event_flags *event; | 237 | union hv_synic_event_flags *event; |
236 | 238 | ||
237 | page_addr = gHvContext.synICMessagePage[0]; | 239 | page_addr = gHvContext.synICMessagePage[cpu]; |
238 | msg = (struct hv_message *)page_addr + VMBUS_MESSAGE_SINT; | 240 | msg = (struct hv_message *)page_addr + VMBUS_MESSAGE_SINT; |
239 | 241 | ||
240 | DPRINT_ENTER(VMBUS); | 242 | DPRINT_ENTER(VMBUS); |
@@ -248,7 +250,7 @@ static int VmbusOnISR(struct hv_driver *drv) | |||
248 | } | 250 | } |
249 | 251 | ||
250 | /* TODO: Check if there are events to be process */ | 252 | /* TODO: Check if there are events to be process */ |
251 | page_addr = gHvContext.synICEventPage[0]; | 253 | page_addr = gHvContext.synICEventPage[cpu]; |
252 | event = (union hv_synic_event_flags *)page_addr + VMBUS_MESSAGE_SINT; | 254 | event = (union hv_synic_event_flags *)page_addr + VMBUS_MESSAGE_SINT; |
253 | 255 | ||
254 | /* Since we are a child, we only need to check bit 0 */ | 256 | /* Since we are a child, we only need to check bit 0 */ |
diff --git a/drivers/usb/core/devices.c b/drivers/usb/core/devices.c index 96f11715cd26..355dffcc23b0 100644 --- a/drivers/usb/core/devices.c +++ b/drivers/usb/core/devices.c | |||
@@ -494,7 +494,7 @@ static ssize_t usb_device_dump(char __user **buffer, size_t *nbytes, | |||
494 | return 0; | 494 | return 0; |
495 | /* allocate 2^1 pages = 8K (on i386); | 495 | /* allocate 2^1 pages = 8K (on i386); |
496 | * should be more than enough for one device */ | 496 | * should be more than enough for one device */ |
497 | pages_start = (char *)__get_free_pages(GFP_KERNEL, 1); | 497 | pages_start = (char *)__get_free_pages(GFP_NOIO, 1); |
498 | if (!pages_start) | 498 | if (!pages_start) |
499 | return -ENOMEM; | 499 | return -ENOMEM; |
500 | 500 | ||
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index 0495fa651225..80995ef0868c 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c | |||
@@ -1684,6 +1684,24 @@ int usb_hcd_alloc_bandwidth(struct usb_device *udev, | |||
1684 | } | 1684 | } |
1685 | } | 1685 | } |
1686 | if (cur_alt && new_alt) { | 1686 | if (cur_alt && new_alt) { |
1687 | struct usb_interface *iface = usb_ifnum_to_if(udev, | ||
1688 | cur_alt->desc.bInterfaceNumber); | ||
1689 | |||
1690 | if (iface->resetting_device) { | ||
1691 | /* | ||
1692 | * The USB core just reset the device, so the xHCI host | ||
1693 | * and the device will think alt setting 0 is installed. | ||
1694 | * However, the USB core will pass in the alternate | ||
1695 | * setting installed before the reset as cur_alt. Dig | ||
1696 | * out the alternate setting 0 structure, or the first | ||
1697 | * alternate setting if a broken device doesn't have alt | ||
1698 | * setting 0. | ||
1699 | */ | ||
1700 | cur_alt = usb_altnum_to_altsetting(iface, 0); | ||
1701 | if (!cur_alt) | ||
1702 | cur_alt = &iface->altsetting[0]; | ||
1703 | } | ||
1704 | |||
1687 | /* Drop all the endpoints in the current alt setting */ | 1705 | /* Drop all the endpoints in the current alt setting */ |
1688 | for (i = 0; i < cur_alt->desc.bNumEndpoints; i++) { | 1706 | for (i = 0; i < cur_alt->desc.bNumEndpoints; i++) { |
1689 | ret = hcd->driver->drop_endpoint(hcd, udev, | 1707 | ret = hcd->driver->drop_endpoint(hcd, udev, |
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 0cec6caf6e9b..35cc8b9ba1f5 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
@@ -3347,6 +3347,9 @@ static void hub_events(void) | |||
3347 | USB_PORT_FEAT_C_SUSPEND); | 3347 | USB_PORT_FEAT_C_SUSPEND); |
3348 | udev = hdev->children[i-1]; | 3348 | udev = hdev->children[i-1]; |
3349 | if (udev) { | 3349 | if (udev) { |
3350 | /* TRSMRCY = 10 msec */ | ||
3351 | msleep(10); | ||
3352 | |||
3350 | usb_lock_device(udev); | 3353 | usb_lock_device(udev); |
3351 | ret = remote_wakeup(hdev-> | 3354 | ret = remote_wakeup(hdev-> |
3352 | children[i-1]); | 3355 | children[i-1]); |
@@ -3692,19 +3695,14 @@ static int usb_reset_and_verify_device(struct usb_device *udev) | |||
3692 | usb_enable_interface(udev, intf, true); | 3695 | usb_enable_interface(udev, intf, true); |
3693 | ret = 0; | 3696 | ret = 0; |
3694 | } else { | 3697 | } else { |
3695 | /* We've just reset the device, so it will think alt | 3698 | /* Let the bandwidth allocation function know that this |
3696 | * setting 0 is installed. For usb_set_interface() to | 3699 | * device has been reset, and it will have to use |
3697 | * work properly, we need to set the current alternate | 3700 | * alternate setting 0 as the current alternate setting. |
3698 | * interface setting to 0 (or the first alt setting, if | ||
3699 | * the device doesn't have alt setting 0). | ||
3700 | */ | 3701 | */ |
3701 | intf->cur_altsetting = | 3702 | intf->resetting_device = 1; |
3702 | usb_find_alt_setting(config, i, 0); | ||
3703 | if (!intf->cur_altsetting) | ||
3704 | intf->cur_altsetting = | ||
3705 | &config->intf_cache[i]->altsetting[0]; | ||
3706 | ret = usb_set_interface(udev, desc->bInterfaceNumber, | 3703 | ret = usb_set_interface(udev, desc->bInterfaceNumber, |
3707 | desc->bAlternateSetting); | 3704 | desc->bAlternateSetting); |
3705 | intf->resetting_device = 0; | ||
3708 | } | 3706 | } |
3709 | if (ret < 0) { | 3707 | if (ret < 0) { |
3710 | dev_err(&udev->dev, "failed to restore interface %d " | 3708 | dev_err(&udev->dev, "failed to restore interface %d " |
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c index 1b994846e8e0..9bc95fec793f 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c | |||
@@ -906,11 +906,11 @@ char *usb_cache_string(struct usb_device *udev, int index) | |||
906 | if (index <= 0) | 906 | if (index <= 0) |
907 | return NULL; | 907 | return NULL; |
908 | 908 | ||
909 | buf = kmalloc(MAX_USB_STRING_SIZE, GFP_KERNEL); | 909 | buf = kmalloc(MAX_USB_STRING_SIZE, GFP_NOIO); |
910 | if (buf) { | 910 | if (buf) { |
911 | len = usb_string(udev, index, buf, MAX_USB_STRING_SIZE); | 911 | len = usb_string(udev, index, buf, MAX_USB_STRING_SIZE); |
912 | if (len > 0) { | 912 | if (len > 0) { |
913 | smallbuf = kmalloc(++len, GFP_KERNEL); | 913 | smallbuf = kmalloc(++len, GFP_NOIO); |
914 | if (!smallbuf) | 914 | if (!smallbuf) |
915 | return buf; | 915 | return buf; |
916 | memcpy(smallbuf, buf, len); | 916 | memcpy(smallbuf, buf, len); |
@@ -1731,7 +1731,7 @@ int usb_set_configuration(struct usb_device *dev, int configuration) | |||
1731 | if (cp) { | 1731 | if (cp) { |
1732 | nintf = cp->desc.bNumInterfaces; | 1732 | nintf = cp->desc.bNumInterfaces; |
1733 | new_interfaces = kmalloc(nintf * sizeof(*new_interfaces), | 1733 | new_interfaces = kmalloc(nintf * sizeof(*new_interfaces), |
1734 | GFP_KERNEL); | 1734 | GFP_NOIO); |
1735 | if (!new_interfaces) { | 1735 | if (!new_interfaces) { |
1736 | dev_err(&dev->dev, "Out of memory\n"); | 1736 | dev_err(&dev->dev, "Out of memory\n"); |
1737 | return -ENOMEM; | 1737 | return -ENOMEM; |
@@ -1740,7 +1740,7 @@ int usb_set_configuration(struct usb_device *dev, int configuration) | |||
1740 | for (; n < nintf; ++n) { | 1740 | for (; n < nintf; ++n) { |
1741 | new_interfaces[n] = kzalloc( | 1741 | new_interfaces[n] = kzalloc( |
1742 | sizeof(struct usb_interface), | 1742 | sizeof(struct usb_interface), |
1743 | GFP_KERNEL); | 1743 | GFP_NOIO); |
1744 | if (!new_interfaces[n]) { | 1744 | if (!new_interfaces[n]) { |
1745 | dev_err(&dev->dev, "Out of memory\n"); | 1745 | dev_err(&dev->dev, "Out of memory\n"); |
1746 | ret = -ENOMEM; | 1746 | ret = -ENOMEM; |
diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c index 485edf937f25..5f3908f6e2dc 100644 --- a/drivers/usb/core/sysfs.c +++ b/drivers/usb/core/sysfs.c | |||
@@ -115,6 +115,12 @@ show_speed(struct device *dev, struct device_attribute *attr, char *buf) | |||
115 | case USB_SPEED_HIGH: | 115 | case USB_SPEED_HIGH: |
116 | speed = "480"; | 116 | speed = "480"; |
117 | break; | 117 | break; |
118 | case USB_SPEED_VARIABLE: | ||
119 | speed = "480"; | ||
120 | break; | ||
121 | case USB_SPEED_SUPER: | ||
122 | speed = "5000"; | ||
123 | break; | ||
118 | default: | 124 | default: |
119 | speed = "unknown"; | 125 | speed = "unknown"; |
120 | } | 126 | } |
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index 5859522d6edd..1ec3857f22e6 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c | |||
@@ -787,9 +787,10 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd) | |||
787 | 787 | ||
788 | /* start 20 msec resume signaling from this port, | 788 | /* start 20 msec resume signaling from this port, |
789 | * and make khubd collect PORT_STAT_C_SUSPEND to | 789 | * and make khubd collect PORT_STAT_C_SUSPEND to |
790 | * stop that signaling. | 790 | * stop that signaling. Use 5 ms extra for safety, |
791 | * like usb_port_resume() does. | ||
791 | */ | 792 | */ |
792 | ehci->reset_done [i] = jiffies + msecs_to_jiffies (20); | 793 | ehci->reset_done[i] = jiffies + msecs_to_jiffies(25); |
793 | ehci_dbg (ehci, "port %d remote wakeup\n", i + 1); | 794 | ehci_dbg (ehci, "port %d remote wakeup\n", i + 1); |
794 | mod_timer(&hcd->rh_timer, ehci->reset_done[i]); | 795 | mod_timer(&hcd->rh_timer, ehci->reset_done[i]); |
795 | } | 796 | } |
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index 2c6571c05f35..c75d9270c752 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c | |||
@@ -120,9 +120,26 @@ static int ehci_bus_suspend (struct usb_hcd *hcd) | |||
120 | del_timer_sync(&ehci->watchdog); | 120 | del_timer_sync(&ehci->watchdog); |
121 | del_timer_sync(&ehci->iaa_watchdog); | 121 | del_timer_sync(&ehci->iaa_watchdog); |
122 | 122 | ||
123 | port = HCS_N_PORTS (ehci->hcs_params); | ||
124 | spin_lock_irq (&ehci->lock); | 123 | spin_lock_irq (&ehci->lock); |
125 | 124 | ||
125 | /* Once the controller is stopped, port resumes that are already | ||
126 | * in progress won't complete. Hence if remote wakeup is enabled | ||
127 | * for the root hub and any ports are in the middle of a resume or | ||
128 | * remote wakeup, we must fail the suspend. | ||
129 | */ | ||
130 | if (hcd->self.root_hub->do_remote_wakeup) { | ||
131 | port = HCS_N_PORTS(ehci->hcs_params); | ||
132 | while (port--) { | ||
133 | if (ehci->reset_done[port] != 0) { | ||
134 | spin_unlock_irq(&ehci->lock); | ||
135 | ehci_dbg(ehci, "suspend failed because " | ||
136 | "port %d is resuming\n", | ||
137 | port + 1); | ||
138 | return -EBUSY; | ||
139 | } | ||
140 | } | ||
141 | } | ||
142 | |||
126 | /* stop schedules, clean any completed work */ | 143 | /* stop schedules, clean any completed work */ |
127 | if (HC_IS_RUNNING(hcd->state)) { | 144 | if (HC_IS_RUNNING(hcd->state)) { |
128 | ehci_quiesce (ehci); | 145 | ehci_quiesce (ehci); |
@@ -138,6 +155,7 @@ static int ehci_bus_suspend (struct usb_hcd *hcd) | |||
138 | */ | 155 | */ |
139 | ehci->bus_suspended = 0; | 156 | ehci->bus_suspended = 0; |
140 | ehci->owned_ports = 0; | 157 | ehci->owned_ports = 0; |
158 | port = HCS_N_PORTS(ehci->hcs_params); | ||
141 | while (port--) { | 159 | while (port--) { |
142 | u32 __iomem *reg = &ehci->regs->port_status [port]; | 160 | u32 __iomem *reg = &ehci->regs->port_status [port]; |
143 | u32 t1 = ehci_readl(ehci, reg) & ~PORT_RWC_BITS; | 161 | u32 t1 = ehci_readl(ehci, reg) & ~PORT_RWC_BITS; |
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c index a427d3b00634..89521775c567 100644 --- a/drivers/usb/host/ehci-q.c +++ b/drivers/usb/host/ehci-q.c | |||
@@ -849,9 +849,10 @@ qh_make ( | |||
849 | * But interval 1 scheduling is simpler, and | 849 | * But interval 1 scheduling is simpler, and |
850 | * includes high bandwidth. | 850 | * includes high bandwidth. |
851 | */ | 851 | */ |
852 | dbg ("intr period %d uframes, NYET!", | 852 | urb->interval = 1; |
853 | urb->interval); | 853 | } else if (qh->period > ehci->periodic_size) { |
854 | goto done; | 854 | qh->period = ehci->periodic_size; |
855 | urb->interval = qh->period << 3; | ||
855 | } | 856 | } |
856 | } else { | 857 | } else { |
857 | int think_time; | 858 | int think_time; |
@@ -874,6 +875,10 @@ qh_make ( | |||
874 | usb_calc_bus_time (urb->dev->speed, | 875 | usb_calc_bus_time (urb->dev->speed, |
875 | is_input, 0, max_packet (maxp))); | 876 | is_input, 0, max_packet (maxp))); |
876 | qh->period = urb->interval; | 877 | qh->period = urb->interval; |
878 | if (qh->period > ehci->periodic_size) { | ||
879 | qh->period = ehci->periodic_size; | ||
880 | urb->interval = qh->period; | ||
881 | } | ||
877 | } | 882 | } |
878 | } | 883 | } |
879 | 884 | ||
diff --git a/drivers/usb/host/fhci-hcd.c b/drivers/usb/host/fhci-hcd.c index 0951818ef93b..78e7c3cfcb72 100644 --- a/drivers/usb/host/fhci-hcd.c +++ b/drivers/usb/host/fhci-hcd.c | |||
@@ -242,9 +242,10 @@ err: | |||
242 | static void fhci_usb_free(void *lld) | 242 | static void fhci_usb_free(void *lld) |
243 | { | 243 | { |
244 | struct fhci_usb *usb = lld; | 244 | struct fhci_usb *usb = lld; |
245 | struct fhci_hcd *fhci = usb->fhci; | 245 | struct fhci_hcd *fhci; |
246 | 246 | ||
247 | if (usb) { | 247 | if (usb) { |
248 | fhci = usb->fhci; | ||
248 | fhci_config_transceiver(fhci, FHCI_PORT_POWER_OFF); | 249 | fhci_config_transceiver(fhci, FHCI_PORT_POWER_OFF); |
249 | fhci_ep0_free(usb); | 250 | fhci_ep0_free(usb); |
250 | kfree(usb->actual_frame); | 251 | kfree(usb->actual_frame); |
diff --git a/drivers/usb/host/isp1362-hcd.c b/drivers/usb/host/isp1362-hcd.c index 73352f3739b5..42971657fde2 100644 --- a/drivers/usb/host/isp1362-hcd.c +++ b/drivers/usb/host/isp1362-hcd.c | |||
@@ -2270,10 +2270,10 @@ static int isp1362_mem_config(struct usb_hcd *hcd) | |||
2270 | dev_info(hcd->self.controller, "ISP1362 Memory usage:\n"); | 2270 | dev_info(hcd->self.controller, "ISP1362 Memory usage:\n"); |
2271 | dev_info(hcd->self.controller, " ISTL: 2 * %4d: %4d @ $%04x:$%04x\n", | 2271 | dev_info(hcd->self.controller, " ISTL: 2 * %4d: %4d @ $%04x:$%04x\n", |
2272 | istl_size / 2, istl_size, 0, istl_size / 2); | 2272 | istl_size / 2, istl_size, 0, istl_size / 2); |
2273 | dev_info(hcd->self.controller, " INTL: %4d * (%3lu+8): %4d @ $%04x\n", | 2273 | dev_info(hcd->self.controller, " INTL: %4d * (%3zu+8): %4d @ $%04x\n", |
2274 | ISP1362_INTL_BUFFERS, intl_blksize - PTD_HEADER_SIZE, | 2274 | ISP1362_INTL_BUFFERS, intl_blksize - PTD_HEADER_SIZE, |
2275 | intl_size, istl_size); | 2275 | intl_size, istl_size); |
2276 | dev_info(hcd->self.controller, " ATL : %4d * (%3lu+8): %4d @ $%04x\n", | 2276 | dev_info(hcd->self.controller, " ATL : %4d * (%3zu+8): %4d @ $%04x\n", |
2277 | atl_buffers, atl_blksize - PTD_HEADER_SIZE, | 2277 | atl_buffers, atl_blksize - PTD_HEADER_SIZE, |
2278 | atl_size, istl_size + intl_size); | 2278 | atl_size, istl_size + intl_size); |
2279 | dev_info(hcd->self.controller, " USED/FREE: %4d %4d\n", total, | 2279 | dev_info(hcd->self.controller, " USED/FREE: %4d %4d\n", total, |
@@ -2697,6 +2697,8 @@ static int __init isp1362_probe(struct platform_device *pdev) | |||
2697 | void __iomem *data_reg; | 2697 | void __iomem *data_reg; |
2698 | int irq; | 2698 | int irq; |
2699 | int retval = 0; | 2699 | int retval = 0; |
2700 | struct resource *irq_res; | ||
2701 | unsigned int irq_flags = 0; | ||
2700 | 2702 | ||
2701 | /* basic sanity checks first. board-specific init logic should | 2703 | /* basic sanity checks first. board-specific init logic should |
2702 | * have initialized this the three resources and probably board | 2704 | * have initialized this the three resources and probably board |
@@ -2710,11 +2712,12 @@ static int __init isp1362_probe(struct platform_device *pdev) | |||
2710 | 2712 | ||
2711 | data = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 2713 | data = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
2712 | addr = platform_get_resource(pdev, IORESOURCE_MEM, 1); | 2714 | addr = platform_get_resource(pdev, IORESOURCE_MEM, 1); |
2713 | irq = platform_get_irq(pdev, 0); | 2715 | irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
2714 | if (!addr || !data || irq < 0) { | 2716 | if (!addr || !data || !irq_res) { |
2715 | retval = -ENODEV; | 2717 | retval = -ENODEV; |
2716 | goto err1; | 2718 | goto err1; |
2717 | } | 2719 | } |
2720 | irq = irq_res->start; | ||
2718 | 2721 | ||
2719 | #ifdef CONFIG_USB_HCD_DMA | 2722 | #ifdef CONFIG_USB_HCD_DMA |
2720 | if (pdev->dev.dma_mask) { | 2723 | if (pdev->dev.dma_mask) { |
@@ -2781,12 +2784,16 @@ static int __init isp1362_probe(struct platform_device *pdev) | |||
2781 | } | 2784 | } |
2782 | #endif | 2785 | #endif |
2783 | 2786 | ||
2784 | #ifdef CONFIG_ARM | 2787 | if (irq_res->flags & IORESOURCE_IRQ_HIGHEDGE) |
2785 | if (isp1362_hcd->board) | 2788 | irq_flags |= IRQF_TRIGGER_RISING; |
2786 | set_irq_type(irq, isp1362_hcd->board->int_act_high ? IRQT_RISING : IRQT_FALLING); | 2789 | if (irq_res->flags & IORESOURCE_IRQ_LOWEDGE) |
2787 | #endif | 2790 | irq_flags |= IRQF_TRIGGER_FALLING; |
2791 | if (irq_res->flags & IORESOURCE_IRQ_HIGHLEVEL) | ||
2792 | irq_flags |= IRQF_TRIGGER_HIGH; | ||
2793 | if (irq_res->flags & IORESOURCE_IRQ_LOWLEVEL) | ||
2794 | irq_flags |= IRQF_TRIGGER_LOW; | ||
2788 | 2795 | ||
2789 | retval = usb_add_hcd(hcd, irq, IRQF_TRIGGER_LOW | IRQF_DISABLED | IRQF_SHARED); | 2796 | retval = usb_add_hcd(hcd, irq, irq_flags | IRQF_DISABLED | IRQF_SHARED); |
2790 | if (retval != 0) | 2797 | if (retval != 0) |
2791 | goto err6; | 2798 | goto err6; |
2792 | pr_info("%s, irq %d\n", hcd->product_desc, irq); | 2799 | pr_info("%s, irq %d\n", hcd->product_desc, irq); |
diff --git a/drivers/usb/host/isp1760-hcd.c b/drivers/usb/host/isp1760-hcd.c index 9600a58299db..27b8f7cb4471 100644 --- a/drivers/usb/host/isp1760-hcd.c +++ b/drivers/usb/host/isp1760-hcd.c | |||
@@ -1039,12 +1039,12 @@ static void do_atl_int(struct usb_hcd *usb_hcd) | |||
1039 | if (!nakcount && (dw3 & DW3_QTD_ACTIVE)) { | 1039 | if (!nakcount && (dw3 & DW3_QTD_ACTIVE)) { |
1040 | u32 buffstatus; | 1040 | u32 buffstatus; |
1041 | 1041 | ||
1042 | /* XXX | 1042 | /* |
1043 | * NAKs are handled in HW by the chip. Usually if the | 1043 | * NAKs are handled in HW by the chip. Usually if the |
1044 | * device is not able to send data fast enough. | 1044 | * device is not able to send data fast enough. |
1045 | * This did not trigger for a long time now. | 1045 | * This happens mostly on slower hardware. |
1046 | */ | 1046 | */ |
1047 | printk(KERN_ERR "Reloading ptd %p/%p... qh %p readed: " | 1047 | printk(KERN_NOTICE "Reloading ptd %p/%p... qh %p read: " |
1048 | "%d of %zu done: %08x cur: %08x\n", qtd, | 1048 | "%d of %zu done: %08x cur: %08x\n", qtd, |
1049 | urb, qh, PTD_XFERRED_LENGTH(dw3), | 1049 | urb, qh, PTD_XFERRED_LENGTH(dw3), |
1050 | qtd->length, done_map, | 1050 | qtd->length, done_map, |
diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c index 5cd0e48f67fb..99cd00fd3514 100644 --- a/drivers/usb/host/uhci-hcd.c +++ b/drivers/usb/host/uhci-hcd.c | |||
@@ -749,7 +749,20 @@ static int uhci_rh_suspend(struct usb_hcd *hcd) | |||
749 | spin_lock_irq(&uhci->lock); | 749 | spin_lock_irq(&uhci->lock); |
750 | if (!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags)) | 750 | if (!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags)) |
751 | rc = -ESHUTDOWN; | 751 | rc = -ESHUTDOWN; |
752 | else if (!uhci->dead) | 752 | else if (uhci->dead) |
753 | ; /* Dead controllers tell no tales */ | ||
754 | |||
755 | /* Once the controller is stopped, port resumes that are already | ||
756 | * in progress won't complete. Hence if remote wakeup is enabled | ||
757 | * for the root hub and any ports are in the middle of a resume or | ||
758 | * remote wakeup, we must fail the suspend. | ||
759 | */ | ||
760 | else if (hcd->self.root_hub->do_remote_wakeup && | ||
761 | uhci->resuming_ports) { | ||
762 | dev_dbg(uhci_dev(uhci), "suspend failed because a port " | ||
763 | "is resuming\n"); | ||
764 | rc = -EBUSY; | ||
765 | } else | ||
753 | suspend_rh(uhci, UHCI_RH_SUSPENDED); | 766 | suspend_rh(uhci, UHCI_RH_SUSPENDED); |
754 | spin_unlock_irq(&uhci->lock); | 767 | spin_unlock_irq(&uhci->lock); |
755 | return rc; | 768 | return rc; |
diff --git a/drivers/usb/host/uhci-hub.c b/drivers/usb/host/uhci-hub.c index 885b585360b9..8270055848ca 100644 --- a/drivers/usb/host/uhci-hub.c +++ b/drivers/usb/host/uhci-hub.c | |||
@@ -167,7 +167,7 @@ static void uhci_check_ports(struct uhci_hcd *uhci) | |||
167 | /* Port received a wakeup request */ | 167 | /* Port received a wakeup request */ |
168 | set_bit(port, &uhci->resuming_ports); | 168 | set_bit(port, &uhci->resuming_ports); |
169 | uhci->ports_timeout = jiffies + | 169 | uhci->ports_timeout = jiffies + |
170 | msecs_to_jiffies(20); | 170 | msecs_to_jiffies(25); |
171 | 171 | ||
172 | /* Make sure we see the port again | 172 | /* Make sure we see the port again |
173 | * after the resuming period is over. */ | 173 | * after the resuming period is over. */ |
diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c index f1ea3a33b6e6..83443d6306d6 100644 --- a/drivers/usb/serial/generic.c +++ b/drivers/usb/serial/generic.c | |||
@@ -386,12 +386,12 @@ int usb_serial_generic_chars_in_buffer(struct tty_struct *tty) | |||
386 | 386 | ||
387 | dbg("%s - port %d", __func__, port->number); | 387 | dbg("%s - port %d", __func__, port->number); |
388 | 388 | ||
389 | if (serial->type->max_in_flight_urbs) { | 389 | spin_lock_irqsave(&port->lock, flags); |
390 | spin_lock_irqsave(&port->lock, flags); | 390 | if (serial->type->max_in_flight_urbs) |
391 | chars = port->tx_bytes_flight; | 391 | chars = port->tx_bytes_flight; |
392 | spin_unlock_irqrestore(&port->lock, flags); | 392 | else if (serial->num_bulk_out) |
393 | } else if (serial->num_bulk_out) | ||
394 | chars = kfifo_len(&port->write_fifo); | 393 | chars = kfifo_len(&port->write_fifo); |
394 | spin_unlock_irqrestore(&port->lock, flags); | ||
395 | 395 | ||
396 | dbg("%s - returns %d", __func__, chars); | 396 | dbg("%s - returns %d", __func__, chars); |
397 | return chars; | 397 | return chars; |
@@ -489,6 +489,8 @@ void usb_serial_generic_write_bulk_callback(struct urb *urb) | |||
489 | dbg("%s - port %d", __func__, port->number); | 489 | dbg("%s - port %d", __func__, port->number); |
490 | 490 | ||
491 | if (port->serial->type->max_in_flight_urbs) { | 491 | if (port->serial->type->max_in_flight_urbs) { |
492 | kfree(urb->transfer_buffer); | ||
493 | |||
492 | spin_lock_irqsave(&port->lock, flags); | 494 | spin_lock_irqsave(&port->lock, flags); |
493 | --port->urbs_in_flight; | 495 | --port->urbs_in_flight; |
494 | port->tx_bytes_flight -= urb->transfer_buffer_length; | 496 | port->tx_bytes_flight -= urb->transfer_buffer_length; |
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index 64a0a2c27e12..c932f9053188 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h | |||
@@ -1807,13 +1807,6 @@ UNUSUAL_DEV( 0x2735, 0x100b, 0x0000, 0x9999, | |||
1807 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 1807 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
1808 | US_FL_GO_SLOW ), | 1808 | US_FL_GO_SLOW ), |
1809 | 1809 | ||
1810 | /* Reported by Rohan Hart <rohan.hart17@gmail.com> */ | ||
1811 | UNUSUAL_DEV( 0x2770, 0x915d, 0x0010, 0x0010, | ||
1812 | "INTOVA", | ||
1813 | "Pixtreme", | ||
1814 | US_SC_DEVICE, US_PR_DEVICE, NULL, | ||
1815 | US_FL_FIX_CAPACITY ), | ||
1816 | |||
1817 | /* Reported by Frederic Marchal <frederic.marchal@wowcompany.com> | 1810 | /* Reported by Frederic Marchal <frederic.marchal@wowcompany.com> |
1818 | * Mio Moov 330 | 1811 | * Mio Moov 330 |
1819 | */ | 1812 | */ |
diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c index 5a53d4f0dd11..e9f995486ec1 100644 --- a/drivers/usb/storage/usb.c +++ b/drivers/usb/storage/usb.c | |||
@@ -434,7 +434,8 @@ static void adjust_quirks(struct us_data *us) | |||
434 | u16 vid = le16_to_cpu(us->pusb_dev->descriptor.idVendor); | 434 | u16 vid = le16_to_cpu(us->pusb_dev->descriptor.idVendor); |
435 | u16 pid = le16_to_cpu(us->pusb_dev->descriptor.idProduct); | 435 | u16 pid = le16_to_cpu(us->pusb_dev->descriptor.idProduct); |
436 | unsigned f = 0; | 436 | unsigned f = 0; |
437 | unsigned int mask = (US_FL_SANE_SENSE | US_FL_FIX_CAPACITY | | 437 | unsigned int mask = (US_FL_SANE_SENSE | US_FL_BAD_SENSE | |
438 | US_FL_FIX_CAPACITY | | ||
438 | US_FL_CAPACITY_HEURISTICS | US_FL_IGNORE_DEVICE | | 439 | US_FL_CAPACITY_HEURISTICS | US_FL_IGNORE_DEVICE | |
439 | US_FL_NOT_LOCKABLE | US_FL_MAX_SECTORS_64 | | 440 | US_FL_NOT_LOCKABLE | US_FL_MAX_SECTORS_64 | |
440 | US_FL_CAPACITY_OK | US_FL_IGNORE_RESIDUE | | 441 | US_FL_CAPACITY_OK | US_FL_IGNORE_RESIDUE | |
diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c index adf9632c6b1f..53cb722c45a0 100644 --- a/drivers/video/s3c-fb.c +++ b/drivers/video/s3c-fb.c | |||
@@ -211,21 +211,23 @@ static int s3c_fb_check_var(struct fb_var_screeninfo *var, | |||
211 | 211 | ||
212 | /** | 212 | /** |
213 | * s3c_fb_calc_pixclk() - calculate the divider to create the pixel clock. | 213 | * s3c_fb_calc_pixclk() - calculate the divider to create the pixel clock. |
214 | * @id: window id. | ||
215 | * @sfb: The hardware state. | 214 | * @sfb: The hardware state. |
216 | * @pixclock: The pixel clock wanted, in picoseconds. | 215 | * @pixclock: The pixel clock wanted, in picoseconds. |
217 | * | 216 | * |
218 | * Given the specified pixel clock, work out the necessary divider to get | 217 | * Given the specified pixel clock, work out the necessary divider to get |
219 | * close to the output frequency. | 218 | * close to the output frequency. |
220 | */ | 219 | */ |
221 | static int s3c_fb_calc_pixclk(unsigned char id, struct s3c_fb *sfb, unsigned int pixclk) | 220 | static int s3c_fb_calc_pixclk(struct s3c_fb *sfb, unsigned int pixclk) |
222 | { | 221 | { |
223 | struct s3c_fb_pd_win *win = sfb->pdata->win[id]; | ||
224 | unsigned long clk = clk_get_rate(sfb->bus_clk); | 222 | unsigned long clk = clk_get_rate(sfb->bus_clk); |
223 | unsigned long long tmp; | ||
225 | unsigned int result; | 224 | unsigned int result; |
226 | 225 | ||
227 | pixclk *= win->win_mode.refresh; | 226 | tmp = (unsigned long long)clk; |
228 | result = clk / pixclk; | 227 | tmp *= pixclk; |
228 | |||
229 | do_div(tmp, 1000000000UL); | ||
230 | result = (unsigned int)tmp / 1000; | ||
229 | 231 | ||
230 | dev_dbg(sfb->dev, "pixclk=%u, clk=%lu, div=%d (%lu)\n", | 232 | dev_dbg(sfb->dev, "pixclk=%u, clk=%lu, div=%d (%lu)\n", |
231 | pixclk, clk, result, clk / result); | 233 | pixclk, clk, result, clk / result); |
@@ -301,7 +303,7 @@ static int s3c_fb_set_par(struct fb_info *info) | |||
301 | /* use window 0 as the basis for the lcd output timings */ | 303 | /* use window 0 as the basis for the lcd output timings */ |
302 | 304 | ||
303 | if (win_no == 0) { | 305 | if (win_no == 0) { |
304 | clkdiv = s3c_fb_calc_pixclk(win_no, sfb, var->pixclock); | 306 | clkdiv = s3c_fb_calc_pixclk(sfb, var->pixclock); |
305 | 307 | ||
306 | data = sfb->pdata->vidcon0; | 308 | data = sfb->pdata->vidcon0; |
307 | data &= ~(VIDCON0_CLKVAL_F_MASK | VIDCON0_CLKDIR); | 309 | data &= ~(VIDCON0_CLKVAL_F_MASK | VIDCON0_CLKDIR); |
diff --git a/drivers/video/via/accel.c b/drivers/video/via/accel.c index 9d4f3a49ba4a..d5077dfa9e00 100644 --- a/drivers/video/via/accel.c +++ b/drivers/video/via/accel.c | |||
@@ -137,7 +137,7 @@ static int hw_bitblt_1(void __iomem *engine, u8 op, u32 width, u32 height, | |||
137 | tmp, dst_pitch); | 137 | tmp, dst_pitch); |
138 | return -EINVAL; | 138 | return -EINVAL; |
139 | } | 139 | } |
140 | tmp = (tmp >> 3) | (dst_pitch << (16 - 3)); | 140 | tmp = VIA_PITCH_ENABLE | (tmp >> 3) | (dst_pitch << (16 - 3)); |
141 | writel(tmp, engine + 0x38); | 141 | writel(tmp, engine + 0x38); |
142 | 142 | ||
143 | if (op == VIA_BITBLT_FILL) | 143 | if (op == VIA_BITBLT_FILL) |
@@ -352,6 +352,9 @@ int viafb_init_engine(struct fb_info *info) | |||
352 | viapar->shared->vq_vram_addr = viapar->fbmem_free; | 352 | viapar->shared->vq_vram_addr = viapar->fbmem_free; |
353 | viapar->fbmem_used += VQ_SIZE; | 353 | viapar->fbmem_used += VQ_SIZE; |
354 | 354 | ||
355 | /* Init 2D engine reg to reset 2D engine */ | ||
356 | writel(0x0, engine + VIA_REG_KEYCONTROL); | ||
357 | |||
355 | /* Init AGP and VQ regs */ | 358 | /* Init AGP and VQ regs */ |
356 | switch (chip_name) { | 359 | switch (chip_name) { |
357 | case UNICHROME_K8M890: | 360 | case UNICHROME_K8M890: |
diff --git a/drivers/video/via/viafbdev.c b/drivers/video/via/viafbdev.c index d8df17a7d5fc..3028e7ddc3b5 100644 --- a/drivers/video/via/viafbdev.c +++ b/drivers/video/via/viafbdev.c | |||
@@ -177,16 +177,15 @@ static int viafb_set_par(struct fb_info *info) | |||
177 | } | 177 | } |
178 | 178 | ||
179 | if (vmode_index != VIA_RES_INVALID) { | 179 | if (vmode_index != VIA_RES_INVALID) { |
180 | viafb_setmode(vmode_index, info->var.xres, info->var.yres, | ||
181 | info->var.bits_per_pixel, vmode_index1, | ||
182 | viafb_second_xres, viafb_second_yres, viafb_bpp1); | ||
183 | |||
184 | viafb_update_fix(info); | 180 | viafb_update_fix(info); |
185 | viafb_bpp = info->var.bits_per_pixel; | 181 | viafb_bpp = info->var.bits_per_pixel; |
186 | if (info->var.accel_flags & FB_ACCELF_TEXT) | 182 | if (info->var.accel_flags & FB_ACCELF_TEXT) |
187 | info->flags &= ~FBINFO_HWACCEL_DISABLED; | 183 | info->flags &= ~FBINFO_HWACCEL_DISABLED; |
188 | else | 184 | else |
189 | info->flags |= FBINFO_HWACCEL_DISABLED; | 185 | info->flags |= FBINFO_HWACCEL_DISABLED; |
186 | viafb_setmode(vmode_index, info->var.xres, info->var.yres, | ||
187 | info->var.bits_per_pixel, vmode_index1, | ||
188 | viafb_second_xres, viafb_second_yres, viafb_bpp1); | ||
190 | } | 189 | } |
191 | 190 | ||
192 | return 0; | 191 | return 0; |
@@ -872,7 +871,9 @@ static int viafb_cursor(struct fb_info *info, struct fb_cursor *cursor) | |||
872 | if (info->flags & FBINFO_HWACCEL_DISABLED || info != viafbinfo) | 871 | if (info->flags & FBINFO_HWACCEL_DISABLED || info != viafbinfo) |
873 | return -ENODEV; | 872 | return -ENODEV; |
874 | 873 | ||
875 | if (chip_name == UNICHROME_CLE266 && viapar->iga_path == IGA2) | 874 | /* LCD ouput does not support hw cursors (at least on VN896) */ |
875 | if ((chip_name == UNICHROME_CLE266 && viapar->iga_path == IGA2) || | ||
876 | viafb_LCD_ON) | ||
876 | return -ENODEV; | 877 | return -ENODEV; |
877 | 878 | ||
878 | viafb_show_hw_cursor(info, HW_Cursor_OFF); | 879 | viafb_show_hw_cursor(info, HW_Cursor_OFF); |
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 9dd588042880..505be88c82ae 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c | |||
@@ -266,7 +266,7 @@ static void __devexit virtballoon_remove(struct virtio_device *vdev) | |||
266 | 266 | ||
267 | static unsigned int features[] = { VIRTIO_BALLOON_F_MUST_TELL_HOST }; | 267 | static unsigned int features[] = { VIRTIO_BALLOON_F_MUST_TELL_HOST }; |
268 | 268 | ||
269 | static struct virtio_driver virtio_balloon = { | 269 | static struct virtio_driver virtio_balloon_driver = { |
270 | .feature_table = features, | 270 | .feature_table = features, |
271 | .feature_table_size = ARRAY_SIZE(features), | 271 | .feature_table_size = ARRAY_SIZE(features), |
272 | .driver.name = KBUILD_MODNAME, | 272 | .driver.name = KBUILD_MODNAME, |
@@ -279,12 +279,12 @@ static struct virtio_driver virtio_balloon = { | |||
279 | 279 | ||
280 | static int __init init(void) | 280 | static int __init init(void) |
281 | { | 281 | { |
282 | return register_virtio_driver(&virtio_balloon); | 282 | return register_virtio_driver(&virtio_balloon_driver); |
283 | } | 283 | } |
284 | 284 | ||
285 | static void __exit fini(void) | 285 | static void __exit fini(void) |
286 | { | 286 | { |
287 | unregister_virtio_driver(&virtio_balloon); | 287 | unregister_virtio_driver(&virtio_balloon_driver); |
288 | } | 288 | } |
289 | module_init(init); | 289 | module_init(init); |
290 | module_exit(fini); | 290 | module_exit(fini); |
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index 088f32f29a6e..050ee147592f 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig | |||
@@ -396,8 +396,8 @@ config SBC_FITPC2_WATCHDOG | |||
396 | tristate "Compulab SBC-FITPC2 watchdog" | 396 | tristate "Compulab SBC-FITPC2 watchdog" |
397 | depends on X86 | 397 | depends on X86 |
398 | ---help--- | 398 | ---help--- |
399 | This is the driver for the built-in watchdog timer on the fit-PC2 | 399 | This is the driver for the built-in watchdog timer on the fit-PC2, |
400 | Single-board computer made by Compulab. | 400 | fit-PC2i, CM-iAM single-board computers made by Compulab. |
401 | 401 | ||
402 | It`s possible to enable watchdog timer either from BIOS (F2) or from booted Linux. | 402 | It`s possible to enable watchdog timer either from BIOS (F2) or from booted Linux. |
403 | When "Watchdog Timer Value" enabled one can set 31-255 s operational range. | 403 | When "Watchdog Timer Value" enabled one can set 31-255 s operational range. |
diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c index c8a3bec26830..4bdb7f1a9077 100644 --- a/drivers/watchdog/iTCO_wdt.c +++ b/drivers/watchdog/iTCO_wdt.c | |||
@@ -29,8 +29,9 @@ | |||
29 | * document number 313056-003, 313057-017: 82801H (ICH8) | 29 | * document number 313056-003, 313057-017: 82801H (ICH8) |
30 | * document number 316972-004, 316973-012: 82801I (ICH9) | 30 | * document number 316972-004, 316973-012: 82801I (ICH9) |
31 | * document number 319973-002, 319974-002: 82801J (ICH10) | 31 | * document number 319973-002, 319974-002: 82801J (ICH10) |
32 | * document number 322169-001, 322170-001: 5 Series, 3400 Series (PCH) | 32 | * document number 322169-001, 322170-003: 5 Series, 3400 Series (PCH) |
33 | * document number 320066-003, 320257-008: EP80597 (IICH) | 33 | * document number 320066-003, 320257-008: EP80597 (IICH) |
34 | * document number TBD : Cougar Point (CPT) | ||
34 | */ | 35 | */ |
35 | 36 | ||
36 | /* | 37 | /* |
@@ -100,8 +101,22 @@ enum iTCO_chipsets { | |||
100 | TCO_ICH10DO, /* ICH10DO */ | 101 | TCO_ICH10DO, /* ICH10DO */ |
101 | TCO_PCH, /* PCH Desktop Full Featured */ | 102 | TCO_PCH, /* PCH Desktop Full Featured */ |
102 | TCO_PCHM, /* PCH Mobile Full Featured */ | 103 | TCO_PCHM, /* PCH Mobile Full Featured */ |
104 | TCO_P55, /* P55 */ | ||
105 | TCO_PM55, /* PM55 */ | ||
106 | TCO_H55, /* H55 */ | ||
107 | TCO_QM57, /* QM57 */ | ||
108 | TCO_H57, /* H57 */ | ||
109 | TCO_HM55, /* HM55 */ | ||
110 | TCO_Q57, /* Q57 */ | ||
111 | TCO_HM57, /* HM57 */ | ||
103 | TCO_PCHMSFF, /* PCH Mobile SFF Full Featured */ | 112 | TCO_PCHMSFF, /* PCH Mobile SFF Full Featured */ |
113 | TCO_QS57, /* QS57 */ | ||
114 | TCO_3400, /* 3400 */ | ||
115 | TCO_3420, /* 3420 */ | ||
116 | TCO_3450, /* 3450 */ | ||
104 | TCO_EP80579, /* EP80579 */ | 117 | TCO_EP80579, /* EP80579 */ |
118 | TCO_CPTD, /* CPT Desktop */ | ||
119 | TCO_CPTM, /* CPT Mobile */ | ||
105 | }; | 120 | }; |
106 | 121 | ||
107 | static struct { | 122 | static struct { |
@@ -144,8 +159,22 @@ static struct { | |||
144 | {"ICH10DO", 2}, | 159 | {"ICH10DO", 2}, |
145 | {"PCH Desktop Full Featured", 2}, | 160 | {"PCH Desktop Full Featured", 2}, |
146 | {"PCH Mobile Full Featured", 2}, | 161 | {"PCH Mobile Full Featured", 2}, |
162 | {"P55", 2}, | ||
163 | {"PM55", 2}, | ||
164 | {"H55", 2}, | ||
165 | {"QM57", 2}, | ||
166 | {"H57", 2}, | ||
167 | {"HM55", 2}, | ||
168 | {"Q57", 2}, | ||
169 | {"HM57", 2}, | ||
147 | {"PCH Mobile SFF Full Featured", 2}, | 170 | {"PCH Mobile SFF Full Featured", 2}, |
171 | {"QS57", 2}, | ||
172 | {"3400", 2}, | ||
173 | {"3420", 2}, | ||
174 | {"3450", 2}, | ||
148 | {"EP80579", 2}, | 175 | {"EP80579", 2}, |
176 | {"CPT Desktop", 2}, | ||
177 | {"CPT Mobile", 2}, | ||
149 | {NULL, 0} | 178 | {NULL, 0} |
150 | }; | 179 | }; |
151 | 180 | ||
@@ -216,8 +245,22 @@ static struct pci_device_id iTCO_wdt_pci_tbl[] = { | |||
216 | { ITCO_PCI_DEVICE(0x3a14, TCO_ICH10DO)}, | 245 | { ITCO_PCI_DEVICE(0x3a14, TCO_ICH10DO)}, |
217 | { ITCO_PCI_DEVICE(0x3b00, TCO_PCH)}, | 246 | { ITCO_PCI_DEVICE(0x3b00, TCO_PCH)}, |
218 | { ITCO_PCI_DEVICE(0x3b01, TCO_PCHM)}, | 247 | { ITCO_PCI_DEVICE(0x3b01, TCO_PCHM)}, |
248 | { ITCO_PCI_DEVICE(0x3b02, TCO_P55)}, | ||
249 | { ITCO_PCI_DEVICE(0x3b03, TCO_PM55)}, | ||
250 | { ITCO_PCI_DEVICE(0x3b06, TCO_H55)}, | ||
251 | { ITCO_PCI_DEVICE(0x3b07, TCO_QM57)}, | ||
252 | { ITCO_PCI_DEVICE(0x3b08, TCO_H57)}, | ||
253 | { ITCO_PCI_DEVICE(0x3b09, TCO_HM55)}, | ||
254 | { ITCO_PCI_DEVICE(0x3b0a, TCO_Q57)}, | ||
255 | { ITCO_PCI_DEVICE(0x3b0b, TCO_HM57)}, | ||
219 | { ITCO_PCI_DEVICE(0x3b0d, TCO_PCHMSFF)}, | 256 | { ITCO_PCI_DEVICE(0x3b0d, TCO_PCHMSFF)}, |
257 | { ITCO_PCI_DEVICE(0x3b0f, TCO_QS57)}, | ||
258 | { ITCO_PCI_DEVICE(0x3b12, TCO_3400)}, | ||
259 | { ITCO_PCI_DEVICE(0x3b14, TCO_3420)}, | ||
260 | { ITCO_PCI_DEVICE(0x3b16, TCO_3450)}, | ||
220 | { ITCO_PCI_DEVICE(0x5031, TCO_EP80579)}, | 261 | { ITCO_PCI_DEVICE(0x5031, TCO_EP80579)}, |
262 | { ITCO_PCI_DEVICE(0x1c42, TCO_CPTD)}, | ||
263 | { ITCO_PCI_DEVICE(0x1c43, TCO_CPTM)}, | ||
221 | { 0, }, /* End of list */ | 264 | { 0, }, /* End of list */ |
222 | }; | 265 | }; |
223 | MODULE_DEVICE_TABLE(pci, iTCO_wdt_pci_tbl); | 266 | MODULE_DEVICE_TABLE(pci, iTCO_wdt_pci_tbl); |
diff --git a/drivers/watchdog/ixp2000_wdt.c b/drivers/watchdog/ixp2000_wdt.c index 4f4b35a20d84..3c79dc587958 100644 --- a/drivers/watchdog/ixp2000_wdt.c +++ b/drivers/watchdog/ixp2000_wdt.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
20 | #include <linux/moduleparam.h> | 20 | #include <linux/moduleparam.h> |
21 | #include <linux/types.h> | 21 | #include <linux/types.h> |
22 | #include <linux/timer.h> | ||
22 | #include <linux/kernel.h> | 23 | #include <linux/kernel.h> |
23 | #include <linux/fs.h> | 24 | #include <linux/fs.h> |
24 | #include <linux/miscdevice.h> | 25 | #include <linux/miscdevice.h> |
diff --git a/drivers/watchdog/sbc_fitpc2_wdt.c b/drivers/watchdog/sbc_fitpc2_wdt.c index 91430a89107c..e6763d2a567b 100644 --- a/drivers/watchdog/sbc_fitpc2_wdt.c +++ b/drivers/watchdog/sbc_fitpc2_wdt.c | |||
@@ -46,9 +46,9 @@ static DEFINE_SPINLOCK(wdt_lock); | |||
46 | static void wdt_send_data(unsigned char command, unsigned char data) | 46 | static void wdt_send_data(unsigned char command, unsigned char data) |
47 | { | 47 | { |
48 | outb(command, COMMAND_PORT); | 48 | outb(command, COMMAND_PORT); |
49 | mdelay(100); | 49 | msleep(100); |
50 | outb(data, DATA_PORT); | 50 | outb(data, DATA_PORT); |
51 | mdelay(200); | 51 | msleep(200); |
52 | } | 52 | } |
53 | 53 | ||
54 | static void wdt_enable(void) | 54 | static void wdt_enable(void) |
@@ -202,11 +202,10 @@ static int __init fitpc2_wdt_init(void) | |||
202 | { | 202 | { |
203 | int err; | 203 | int err; |
204 | 204 | ||
205 | if (strcmp("SBC-FITPC2", dmi_get_system_info(DMI_BOARD_NAME))) { | 205 | if (!strstr(dmi_get_system_info(DMI_BOARD_NAME), "SBC-FITPC2")) |
206 | pr_info("board name is: %s. Should be SBC-FITPC2\n", | ||
207 | dmi_get_system_info(DMI_BOARD_NAME)); | ||
208 | return -ENODEV; | 206 | return -ENODEV; |
209 | } | 207 | |
208 | pr_info("%s found\n", dmi_get_system_info(DMI_BOARD_NAME)); | ||
210 | 209 | ||
211 | if (!request_region(COMMAND_PORT, 1, WATCHDOG_NAME)) { | 210 | if (!request_region(COMMAND_PORT, 1, WATCHDOG_NAME)) { |
212 | pr_err("I/O address 0x%04x already in use\n", COMMAND_PORT); | 211 | pr_err("I/O address 0x%04x already in use\n", COMMAND_PORT); |
diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c index c4997930afc7..5d42d55e299b 100644 --- a/drivers/xen/manage.c +++ b/drivers/xen/manage.c | |||
@@ -102,15 +102,15 @@ static void do_suspend(void) | |||
102 | goto out_thaw; | 102 | goto out_thaw; |
103 | } | 103 | } |
104 | 104 | ||
105 | printk(KERN_DEBUG "suspending xenstore...\n"); | ||
106 | xs_suspend(); | ||
107 | |||
105 | err = dpm_suspend_noirq(PMSG_SUSPEND); | 108 | err = dpm_suspend_noirq(PMSG_SUSPEND); |
106 | if (err) { | 109 | if (err) { |
107 | printk(KERN_ERR "dpm_suspend_noirq failed: %d\n", err); | 110 | printk(KERN_ERR "dpm_suspend_noirq failed: %d\n", err); |
108 | goto out_resume; | 111 | goto out_resume; |
109 | } | 112 | } |
110 | 113 | ||
111 | printk(KERN_DEBUG "suspending xenstore...\n"); | ||
112 | xs_suspend(); | ||
113 | |||
114 | err = stop_machine(xen_suspend, &cancelled, cpumask_of(0)); | 114 | err = stop_machine(xen_suspend, &cancelled, cpumask_of(0)); |
115 | 115 | ||
116 | dpm_resume_noirq(PMSG_RESUME); | 116 | dpm_resume_noirq(PMSG_RESUME); |
@@ -120,13 +120,13 @@ static void do_suspend(void) | |||
120 | cancelled = 1; | 120 | cancelled = 1; |
121 | } | 121 | } |
122 | 122 | ||
123 | out_resume: | ||
123 | if (!cancelled) { | 124 | if (!cancelled) { |
124 | xen_arch_resume(); | 125 | xen_arch_resume(); |
125 | xs_resume(); | 126 | xs_resume(); |
126 | } else | 127 | } else |
127 | xs_suspend_cancel(); | 128 | xs_suspend_cancel(); |
128 | 129 | ||
129 | out_resume: | ||
130 | dpm_resume_end(PMSG_RESUME); | 130 | dpm_resume_end(PMSG_RESUME); |
131 | 131 | ||
132 | /* Make sure timer events get retriggered on all CPUs */ | 132 | /* Make sure timer events get retriggered on all CPUs */ |
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 18f74ec4dce9..9d03d1ebca6f 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c | |||
@@ -1001,44 +1001,6 @@ done: | |||
1001 | } | 1001 | } |
1002 | 1002 | ||
1003 | /** | 1003 | /** |
1004 | * v9fs_vfs_readlink - read a symlink's location | ||
1005 | * @dentry: dentry for symlink | ||
1006 | * @buffer: buffer to load symlink location into | ||
1007 | * @buflen: length of buffer | ||
1008 | * | ||
1009 | */ | ||
1010 | |||
1011 | static int v9fs_vfs_readlink(struct dentry *dentry, char __user * buffer, | ||
1012 | int buflen) | ||
1013 | { | ||
1014 | int retval; | ||
1015 | int ret; | ||
1016 | char *link = __getname(); | ||
1017 | |||
1018 | if (unlikely(!link)) | ||
1019 | return -ENOMEM; | ||
1020 | |||
1021 | if (buflen > PATH_MAX) | ||
1022 | buflen = PATH_MAX; | ||
1023 | |||
1024 | P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name, | ||
1025 | dentry); | ||
1026 | |||
1027 | retval = v9fs_readlink(dentry, link, buflen); | ||
1028 | |||
1029 | if (retval > 0) { | ||
1030 | if ((ret = copy_to_user(buffer, link, retval)) != 0) { | ||
1031 | P9_DPRINTK(P9_DEBUG_ERROR, | ||
1032 | "problem copying to user: %d\n", ret); | ||
1033 | retval = ret; | ||
1034 | } | ||
1035 | } | ||
1036 | |||
1037 | __putname(link); | ||
1038 | return retval; | ||
1039 | } | ||
1040 | |||
1041 | /** | ||
1042 | * v9fs_vfs_follow_link - follow a symlink path | 1004 | * v9fs_vfs_follow_link - follow a symlink path |
1043 | * @dentry: dentry for symlink | 1005 | * @dentry: dentry for symlink |
1044 | * @nd: nameidata | 1006 | * @nd: nameidata |
@@ -1230,7 +1192,6 @@ static const struct inode_operations v9fs_dir_inode_operations_ext = { | |||
1230 | .rmdir = v9fs_vfs_rmdir, | 1192 | .rmdir = v9fs_vfs_rmdir, |
1231 | .mknod = v9fs_vfs_mknod, | 1193 | .mknod = v9fs_vfs_mknod, |
1232 | .rename = v9fs_vfs_rename, | 1194 | .rename = v9fs_vfs_rename, |
1233 | .readlink = v9fs_vfs_readlink, | ||
1234 | .getattr = v9fs_vfs_getattr, | 1195 | .getattr = v9fs_vfs_getattr, |
1235 | .setattr = v9fs_vfs_setattr, | 1196 | .setattr = v9fs_vfs_setattr, |
1236 | }; | 1197 | }; |
@@ -1253,7 +1214,7 @@ static const struct inode_operations v9fs_file_inode_operations = { | |||
1253 | }; | 1214 | }; |
1254 | 1215 | ||
1255 | static const struct inode_operations v9fs_symlink_inode_operations = { | 1216 | static const struct inode_operations v9fs_symlink_inode_operations = { |
1256 | .readlink = v9fs_vfs_readlink, | 1217 | .readlink = generic_readlink, |
1257 | .follow_link = v9fs_vfs_follow_link, | 1218 | .follow_link = v9fs_vfs_follow_link, |
1258 | .put_link = v9fs_vfs_put_link, | 1219 | .put_link = v9fs_vfs_put_link, |
1259 | .getattr = v9fs_vfs_getattr, | 1220 | .getattr = v9fs_vfs_getattr, |
diff --git a/fs/9p/vfs_super.c b/fs/9p/vfs_super.c index 14a86448572c..69357c0d9899 100644 --- a/fs/9p/vfs_super.c +++ b/fs/9p/vfs_super.c | |||
@@ -188,7 +188,8 @@ static void v9fs_kill_super(struct super_block *s) | |||
188 | 188 | ||
189 | P9_DPRINTK(P9_DEBUG_VFS, " %p\n", s); | 189 | P9_DPRINTK(P9_DEBUG_VFS, " %p\n", s); |
190 | 190 | ||
191 | v9fs_dentry_release(s->s_root); /* clunk root */ | 191 | if (s->s_root) |
192 | v9fs_dentry_release(s->s_root); /* clunk root */ | ||
192 | 193 | ||
193 | kill_anon_super(s); | 194 | kill_anon_super(s); |
194 | 195 | ||
diff --git a/fs/affs/affs.h b/fs/affs/affs.h index e511dc621a2e..0e40caaba456 100644 --- a/fs/affs/affs.h +++ b/fs/affs/affs.h | |||
@@ -106,8 +106,8 @@ struct affs_sb_info { | |||
106 | u32 s_last_bmap; | 106 | u32 s_last_bmap; |
107 | struct buffer_head *s_bmap_bh; | 107 | struct buffer_head *s_bmap_bh; |
108 | char *s_prefix; /* Prefix for volumes and assigns. */ | 108 | char *s_prefix; /* Prefix for volumes and assigns. */ |
109 | int s_prefix_len; /* Length of prefix. */ | ||
110 | char s_volume[32]; /* Volume prefix for absolute symlinks. */ | 109 | char s_volume[32]; /* Volume prefix for absolute symlinks. */ |
110 | spinlock_t symlink_lock; /* protects the previous two */ | ||
111 | }; | 111 | }; |
112 | 112 | ||
113 | #define SF_INTL 0x0001 /* International filesystem. */ | 113 | #define SF_INTL 0x0001 /* International filesystem. */ |
diff --git a/fs/affs/namei.c b/fs/affs/namei.c index 960d336ec694..d70bbbac6b7b 100644 --- a/fs/affs/namei.c +++ b/fs/affs/namei.c | |||
@@ -341,10 +341,13 @@ affs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) | |||
341 | p = (char *)AFFS_HEAD(bh)->table; | 341 | p = (char *)AFFS_HEAD(bh)->table; |
342 | lc = '/'; | 342 | lc = '/'; |
343 | if (*symname == '/') { | 343 | if (*symname == '/') { |
344 | struct affs_sb_info *sbi = AFFS_SB(sb); | ||
344 | while (*symname == '/') | 345 | while (*symname == '/') |
345 | symname++; | 346 | symname++; |
346 | while (AFFS_SB(sb)->s_volume[i]) /* Cannot overflow */ | 347 | spin_lock(&sbi->symlink_lock); |
347 | *p++ = AFFS_SB(sb)->s_volume[i++]; | 348 | while (sbi->s_volume[i]) /* Cannot overflow */ |
349 | *p++ = sbi->s_volume[i++]; | ||
350 | spin_unlock(&sbi->symlink_lock); | ||
348 | } | 351 | } |
349 | while (i < maxlen && (c = *symname++)) { | 352 | while (i < maxlen && (c = *symname++)) { |
350 | if (c == '.' && lc == '/' && *symname == '.' && symname[1] == '/') { | 353 | if (c == '.' && lc == '/' && *symname == '.' && symname[1] == '/') { |
diff --git a/fs/affs/super.c b/fs/affs/super.c index 104fdcb3a7fc..d41e9673cd97 100644 --- a/fs/affs/super.c +++ b/fs/affs/super.c | |||
@@ -203,7 +203,7 @@ parse_options(char *options, uid_t *uid, gid_t *gid, int *mode, int *reserved, s | |||
203 | switch (token) { | 203 | switch (token) { |
204 | case Opt_bs: | 204 | case Opt_bs: |
205 | if (match_int(&args[0], &n)) | 205 | if (match_int(&args[0], &n)) |
206 | return -EINVAL; | 206 | return 0; |
207 | if (n != 512 && n != 1024 && n != 2048 | 207 | if (n != 512 && n != 1024 && n != 2048 |
208 | && n != 4096) { | 208 | && n != 4096) { |
209 | printk ("AFFS: Invalid blocksize (512, 1024, 2048, 4096 allowed)\n"); | 209 | printk ("AFFS: Invalid blocksize (512, 1024, 2048, 4096 allowed)\n"); |
@@ -213,7 +213,7 @@ parse_options(char *options, uid_t *uid, gid_t *gid, int *mode, int *reserved, s | |||
213 | break; | 213 | break; |
214 | case Opt_mode: | 214 | case Opt_mode: |
215 | if (match_octal(&args[0], &option)) | 215 | if (match_octal(&args[0], &option)) |
216 | return 1; | 216 | return 0; |
217 | *mode = option & 0777; | 217 | *mode = option & 0777; |
218 | *mount_opts |= SF_SETMODE; | 218 | *mount_opts |= SF_SETMODE; |
219 | break; | 219 | break; |
@@ -221,8 +221,6 @@ parse_options(char *options, uid_t *uid, gid_t *gid, int *mode, int *reserved, s | |||
221 | *mount_opts |= SF_MUFS; | 221 | *mount_opts |= SF_MUFS; |
222 | break; | 222 | break; |
223 | case Opt_prefix: | 223 | case Opt_prefix: |
224 | /* Free any previous prefix */ | ||
225 | kfree(*prefix); | ||
226 | *prefix = match_strdup(&args[0]); | 224 | *prefix = match_strdup(&args[0]); |
227 | if (!*prefix) | 225 | if (!*prefix) |
228 | return 0; | 226 | return 0; |
@@ -233,21 +231,21 @@ parse_options(char *options, uid_t *uid, gid_t *gid, int *mode, int *reserved, s | |||
233 | break; | 231 | break; |
234 | case Opt_reserved: | 232 | case Opt_reserved: |
235 | if (match_int(&args[0], reserved)) | 233 | if (match_int(&args[0], reserved)) |
236 | return 1; | 234 | return 0; |
237 | break; | 235 | break; |
238 | case Opt_root: | 236 | case Opt_root: |
239 | if (match_int(&args[0], root)) | 237 | if (match_int(&args[0], root)) |
240 | return 1; | 238 | return 0; |
241 | break; | 239 | break; |
242 | case Opt_setgid: | 240 | case Opt_setgid: |
243 | if (match_int(&args[0], &option)) | 241 | if (match_int(&args[0], &option)) |
244 | return 1; | 242 | return 0; |
245 | *gid = option; | 243 | *gid = option; |
246 | *mount_opts |= SF_SETGID; | 244 | *mount_opts |= SF_SETGID; |
247 | break; | 245 | break; |
248 | case Opt_setuid: | 246 | case Opt_setuid: |
249 | if (match_int(&args[0], &option)) | 247 | if (match_int(&args[0], &option)) |
250 | return -EINVAL; | 248 | return 0; |
251 | *uid = option; | 249 | *uid = option; |
252 | *mount_opts |= SF_SETUID; | 250 | *mount_opts |= SF_SETUID; |
253 | break; | 251 | break; |
@@ -311,11 +309,14 @@ static int affs_fill_super(struct super_block *sb, void *data, int silent) | |||
311 | return -ENOMEM; | 309 | return -ENOMEM; |
312 | sb->s_fs_info = sbi; | 310 | sb->s_fs_info = sbi; |
313 | mutex_init(&sbi->s_bmlock); | 311 | mutex_init(&sbi->s_bmlock); |
312 | spin_lock_init(&sbi->symlink_lock); | ||
314 | 313 | ||
315 | if (!parse_options(data,&uid,&gid,&i,&reserved,&root_block, | 314 | if (!parse_options(data,&uid,&gid,&i,&reserved,&root_block, |
316 | &blocksize,&sbi->s_prefix, | 315 | &blocksize,&sbi->s_prefix, |
317 | sbi->s_volume, &mount_flags)) { | 316 | sbi->s_volume, &mount_flags)) { |
318 | printk(KERN_ERR "AFFS: Error parsing options\n"); | 317 | printk(KERN_ERR "AFFS: Error parsing options\n"); |
318 | kfree(sbi->s_prefix); | ||
319 | kfree(sbi); | ||
319 | return -EINVAL; | 320 | return -EINVAL; |
320 | } | 321 | } |
321 | /* N.B. after this point s_prefix must be released */ | 322 | /* N.B. after this point s_prefix must be released */ |
@@ -516,14 +517,18 @@ affs_remount(struct super_block *sb, int *flags, char *data) | |||
516 | unsigned long mount_flags; | 517 | unsigned long mount_flags; |
517 | int res = 0; | 518 | int res = 0; |
518 | char *new_opts = kstrdup(data, GFP_KERNEL); | 519 | char *new_opts = kstrdup(data, GFP_KERNEL); |
520 | char volume[32]; | ||
521 | char *prefix = NULL; | ||
519 | 522 | ||
520 | pr_debug("AFFS: remount(flags=0x%x,opts=\"%s\")\n",*flags,data); | 523 | pr_debug("AFFS: remount(flags=0x%x,opts=\"%s\")\n",*flags,data); |
521 | 524 | ||
522 | *flags |= MS_NODIRATIME; | 525 | *flags |= MS_NODIRATIME; |
523 | 526 | ||
527 | memcpy(volume, sbi->s_volume, 32); | ||
524 | if (!parse_options(data, &uid, &gid, &mode, &reserved, &root_block, | 528 | if (!parse_options(data, &uid, &gid, &mode, &reserved, &root_block, |
525 | &blocksize, &sbi->s_prefix, sbi->s_volume, | 529 | &blocksize, &prefix, volume, |
526 | &mount_flags)) { | 530 | &mount_flags)) { |
531 | kfree(prefix); | ||
527 | kfree(new_opts); | 532 | kfree(new_opts); |
528 | return -EINVAL; | 533 | return -EINVAL; |
529 | } | 534 | } |
@@ -534,6 +539,14 @@ affs_remount(struct super_block *sb, int *flags, char *data) | |||
534 | sbi->s_mode = mode; | 539 | sbi->s_mode = mode; |
535 | sbi->s_uid = uid; | 540 | sbi->s_uid = uid; |
536 | sbi->s_gid = gid; | 541 | sbi->s_gid = gid; |
542 | /* protect against readers */ | ||
543 | spin_lock(&sbi->symlink_lock); | ||
544 | if (prefix) { | ||
545 | kfree(sbi->s_prefix); | ||
546 | sbi->s_prefix = prefix; | ||
547 | } | ||
548 | memcpy(sbi->s_volume, volume, 32); | ||
549 | spin_unlock(&sbi->symlink_lock); | ||
537 | 550 | ||
538 | if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) { | 551 | if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) { |
539 | unlock_kernel(); | 552 | unlock_kernel(); |
diff --git a/fs/affs/symlink.c b/fs/affs/symlink.c index 41782539c907..ee00f08c4f53 100644 --- a/fs/affs/symlink.c +++ b/fs/affs/symlink.c | |||
@@ -20,7 +20,6 @@ static int affs_symlink_readpage(struct file *file, struct page *page) | |||
20 | int i, j; | 20 | int i, j; |
21 | char c; | 21 | char c; |
22 | char lc; | 22 | char lc; |
23 | char *pf; | ||
24 | 23 | ||
25 | pr_debug("AFFS: follow_link(ino=%lu)\n",inode->i_ino); | 24 | pr_debug("AFFS: follow_link(ino=%lu)\n",inode->i_ino); |
26 | 25 | ||
@@ -32,11 +31,15 @@ static int affs_symlink_readpage(struct file *file, struct page *page) | |||
32 | j = 0; | 31 | j = 0; |
33 | lf = (struct slink_front *)bh->b_data; | 32 | lf = (struct slink_front *)bh->b_data; |
34 | lc = 0; | 33 | lc = 0; |
35 | pf = AFFS_SB(inode->i_sb)->s_prefix ? AFFS_SB(inode->i_sb)->s_prefix : "/"; | ||
36 | 34 | ||
37 | if (strchr(lf->symname,':')) { /* Handle assign or volume name */ | 35 | if (strchr(lf->symname,':')) { /* Handle assign or volume name */ |
36 | struct affs_sb_info *sbi = AFFS_SB(inode->i_sb); | ||
37 | char *pf; | ||
38 | spin_lock(&sbi->symlink_lock); | ||
39 | pf = sbi->s_prefix ? sbi->s_prefix : "/"; | ||
38 | while (i < 1023 && (c = pf[i])) | 40 | while (i < 1023 && (c = pf[i])) |
39 | link[i++] = c; | 41 | link[i++] = c; |
42 | spin_unlock(&sbi->symlink_lock); | ||
40 | while (i < 1023 && lf->symname[j] != ':') | 43 | while (i < 1023 && lf->symname[j] != ':') |
41 | link[i++] = lf->symname[j++]; | 44 | link[i++] = lf->symname[j++]; |
42 | if (i < 1023) | 45 | if (i < 1023) |
diff --git a/fs/bfs/inode.c b/fs/bfs/inode.c index 6f60336c6628..8f3d9fd89604 100644 --- a/fs/bfs/inode.c +++ b/fs/bfs/inode.c | |||
@@ -353,35 +353,35 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent) | |||
353 | struct inode *inode; | 353 | struct inode *inode; |
354 | unsigned i, imap_len; | 354 | unsigned i, imap_len; |
355 | struct bfs_sb_info *info; | 355 | struct bfs_sb_info *info; |
356 | long ret = -EINVAL; | 356 | int ret = -EINVAL; |
357 | unsigned long i_sblock, i_eblock, i_eoff, s_size; | 357 | unsigned long i_sblock, i_eblock, i_eoff, s_size; |
358 | 358 | ||
359 | info = kzalloc(sizeof(*info), GFP_KERNEL); | 359 | info = kzalloc(sizeof(*info), GFP_KERNEL); |
360 | if (!info) | 360 | if (!info) |
361 | return -ENOMEM; | 361 | return -ENOMEM; |
362 | mutex_init(&info->bfs_lock); | ||
362 | s->s_fs_info = info; | 363 | s->s_fs_info = info; |
363 | 364 | ||
364 | sb_set_blocksize(s, BFS_BSIZE); | 365 | sb_set_blocksize(s, BFS_BSIZE); |
365 | 366 | ||
366 | bh = sb_bread(s, 0); | 367 | info->si_sbh = sb_bread(s, 0); |
367 | if(!bh) | 368 | if (!info->si_sbh) |
368 | goto out; | 369 | goto out; |
369 | bfs_sb = (struct bfs_super_block *)bh->b_data; | 370 | bfs_sb = (struct bfs_super_block *)info->si_sbh->b_data; |
370 | if (le32_to_cpu(bfs_sb->s_magic) != BFS_MAGIC) { | 371 | if (le32_to_cpu(bfs_sb->s_magic) != BFS_MAGIC) { |
371 | if (!silent) | 372 | if (!silent) |
372 | printf("No BFS filesystem on %s (magic=%08x)\n", | 373 | printf("No BFS filesystem on %s (magic=%08x)\n", |
373 | s->s_id, le32_to_cpu(bfs_sb->s_magic)); | 374 | s->s_id, le32_to_cpu(bfs_sb->s_magic)); |
374 | goto out; | 375 | goto out1; |
375 | } | 376 | } |
376 | if (BFS_UNCLEAN(bfs_sb, s) && !silent) | 377 | if (BFS_UNCLEAN(bfs_sb, s) && !silent) |
377 | printf("%s is unclean, continuing\n", s->s_id); | 378 | printf("%s is unclean, continuing\n", s->s_id); |
378 | 379 | ||
379 | s->s_magic = BFS_MAGIC; | 380 | s->s_magic = BFS_MAGIC; |
380 | info->si_sbh = bh; | ||
381 | 381 | ||
382 | if (le32_to_cpu(bfs_sb->s_start) > le32_to_cpu(bfs_sb->s_end)) { | 382 | if (le32_to_cpu(bfs_sb->s_start) > le32_to_cpu(bfs_sb->s_end)) { |
383 | printf("Superblock is corrupted\n"); | 383 | printf("Superblock is corrupted\n"); |
384 | goto out; | 384 | goto out1; |
385 | } | 385 | } |
386 | 386 | ||
387 | info->si_lasti = (le32_to_cpu(bfs_sb->s_start) - BFS_BSIZE) / | 387 | info->si_lasti = (le32_to_cpu(bfs_sb->s_start) - BFS_BSIZE) / |
@@ -390,7 +390,7 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent) | |||
390 | imap_len = (info->si_lasti / 8) + 1; | 390 | imap_len = (info->si_lasti / 8) + 1; |
391 | info->si_imap = kzalloc(imap_len, GFP_KERNEL); | 391 | info->si_imap = kzalloc(imap_len, GFP_KERNEL); |
392 | if (!info->si_imap) | 392 | if (!info->si_imap) |
393 | goto out; | 393 | goto out1; |
394 | for (i = 0; i < BFS_ROOT_INO; i++) | 394 | for (i = 0; i < BFS_ROOT_INO; i++) |
395 | set_bit(i, info->si_imap); | 395 | set_bit(i, info->si_imap); |
396 | 396 | ||
@@ -398,15 +398,13 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent) | |||
398 | inode = bfs_iget(s, BFS_ROOT_INO); | 398 | inode = bfs_iget(s, BFS_ROOT_INO); |
399 | if (IS_ERR(inode)) { | 399 | if (IS_ERR(inode)) { |
400 | ret = PTR_ERR(inode); | 400 | ret = PTR_ERR(inode); |
401 | kfree(info->si_imap); | 401 | goto out2; |
402 | goto out; | ||
403 | } | 402 | } |
404 | s->s_root = d_alloc_root(inode); | 403 | s->s_root = d_alloc_root(inode); |
405 | if (!s->s_root) { | 404 | if (!s->s_root) { |
406 | iput(inode); | 405 | iput(inode); |
407 | ret = -ENOMEM; | 406 | ret = -ENOMEM; |
408 | kfree(info->si_imap); | 407 | goto out2; |
409 | goto out; | ||
410 | } | 408 | } |
411 | 409 | ||
412 | info->si_blocks = (le32_to_cpu(bfs_sb->s_end) + 1) >> BFS_BSIZE_BITS; | 410 | info->si_blocks = (le32_to_cpu(bfs_sb->s_end) + 1) >> BFS_BSIZE_BITS; |
@@ -419,10 +417,8 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent) | |||
419 | bh = sb_bread(s, info->si_blocks - 1); | 417 | bh = sb_bread(s, info->si_blocks - 1); |
420 | if (!bh) { | 418 | if (!bh) { |
421 | printf("Last block not available: %lu\n", info->si_blocks - 1); | 419 | printf("Last block not available: %lu\n", info->si_blocks - 1); |
422 | iput(inode); | ||
423 | ret = -EIO; | 420 | ret = -EIO; |
424 | kfree(info->si_imap); | 421 | goto out3; |
425 | goto out; | ||
426 | } | 422 | } |
427 | brelse(bh); | 423 | brelse(bh); |
428 | 424 | ||
@@ -459,11 +455,8 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent) | |||
459 | printf("Inode 0x%08x corrupted\n", i); | 455 | printf("Inode 0x%08x corrupted\n", i); |
460 | 456 | ||
461 | brelse(bh); | 457 | brelse(bh); |
462 | s->s_root = NULL; | 458 | ret = -EIO; |
463 | kfree(info->si_imap); | 459 | goto out3; |
464 | kfree(info); | ||
465 | s->s_fs_info = NULL; | ||
466 | return -EIO; | ||
467 | } | 460 | } |
468 | 461 | ||
469 | if (!di->i_ino) { | 462 | if (!di->i_ino) { |
@@ -483,11 +476,17 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent) | |||
483 | s->s_dirt = 1; | 476 | s->s_dirt = 1; |
484 | } | 477 | } |
485 | dump_imap("read_super", s); | 478 | dump_imap("read_super", s); |
486 | mutex_init(&info->bfs_lock); | ||
487 | return 0; | 479 | return 0; |
488 | 480 | ||
481 | out3: | ||
482 | dput(s->s_root); | ||
483 | s->s_root = NULL; | ||
484 | out2: | ||
485 | kfree(info->si_imap); | ||
486 | out1: | ||
487 | brelse(info->si_sbh); | ||
489 | out: | 488 | out: |
490 | brelse(bh); | 489 | mutex_destroy(&info->bfs_lock); |
491 | kfree(info); | 490 | kfree(info); |
492 | s->s_fs_info = NULL; | 491 | s->s_fs_info = NULL; |
493 | return ret; | 492 | return ret; |
diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c index 346b69405363..fdd397099172 100644 --- a/fs/binfmt_aout.c +++ b/fs/binfmt_aout.c | |||
@@ -264,6 +264,7 @@ static int load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs) | |||
264 | #else | 264 | #else |
265 | set_personality(PER_LINUX); | 265 | set_personality(PER_LINUX); |
266 | #endif | 266 | #endif |
267 | setup_new_exec(bprm); | ||
267 | 268 | ||
268 | current->mm->end_code = ex.a_text + | 269 | current->mm->end_code = ex.a_text + |
269 | (current->mm->start_code = N_TXTADDR(ex)); | 270 | (current->mm->start_code = N_TXTADDR(ex)); |
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index edd90c49003c..fd5b2ea5d299 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c | |||
@@ -662,27 +662,6 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) | |||
662 | if (elf_interpreter[elf_ppnt->p_filesz - 1] != '\0') | 662 | if (elf_interpreter[elf_ppnt->p_filesz - 1] != '\0') |
663 | goto out_free_interp; | 663 | goto out_free_interp; |
664 | 664 | ||
665 | /* | ||
666 | * The early SET_PERSONALITY here is so that the lookup | ||
667 | * for the interpreter happens in the namespace of the | ||
668 | * to-be-execed image. SET_PERSONALITY can select an | ||
669 | * alternate root. | ||
670 | * | ||
671 | * However, SET_PERSONALITY is NOT allowed to switch | ||
672 | * this task into the new images's memory mapping | ||
673 | * policy - that is, TASK_SIZE must still evaluate to | ||
674 | * that which is appropriate to the execing application. | ||
675 | * This is because exit_mmap() needs to have TASK_SIZE | ||
676 | * evaluate to the size of the old image. | ||
677 | * | ||
678 | * So if (say) a 64-bit application is execing a 32-bit | ||
679 | * application it is the architecture's responsibility | ||
680 | * to defer changing the value of TASK_SIZE until the | ||
681 | * switch really is going to happen - do this in | ||
682 | * flush_thread(). - akpm | ||
683 | */ | ||
684 | SET_PERSONALITY(loc->elf_ex); | ||
685 | |||
686 | interpreter = open_exec(elf_interpreter); | 665 | interpreter = open_exec(elf_interpreter); |
687 | retval = PTR_ERR(interpreter); | 666 | retval = PTR_ERR(interpreter); |
688 | if (IS_ERR(interpreter)) | 667 | if (IS_ERR(interpreter)) |
@@ -730,9 +709,6 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) | |||
730 | /* Verify the interpreter has a valid arch */ | 709 | /* Verify the interpreter has a valid arch */ |
731 | if (!elf_check_arch(&loc->interp_elf_ex)) | 710 | if (!elf_check_arch(&loc->interp_elf_ex)) |
732 | goto out_free_dentry; | 711 | goto out_free_dentry; |
733 | } else { | ||
734 | /* Executables without an interpreter also need a personality */ | ||
735 | SET_PERSONALITY(loc->elf_ex); | ||
736 | } | 712 | } |
737 | 713 | ||
738 | /* Flush all traces of the currently running executable */ | 714 | /* Flush all traces of the currently running executable */ |
@@ -752,7 +728,8 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) | |||
752 | 728 | ||
753 | if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space) | 729 | if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space) |
754 | current->flags |= PF_RANDOMIZE; | 730 | current->flags |= PF_RANDOMIZE; |
755 | arch_pick_mmap_layout(current->mm); | 731 | |
732 | setup_new_exec(bprm); | ||
756 | 733 | ||
757 | /* Do this so that we can load the interpreter, if need be. We will | 734 | /* Do this so that we can load the interpreter, if need be. We will |
758 | change some of these later */ | 735 | change some of these later */ |
diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c index c57d9ce5ff7e..18d77297ccc8 100644 --- a/fs/binfmt_elf_fdpic.c +++ b/fs/binfmt_elf_fdpic.c | |||
@@ -321,6 +321,9 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm, | |||
321 | set_personality(PER_LINUX_FDPIC); | 321 | set_personality(PER_LINUX_FDPIC); |
322 | if (elf_read_implies_exec(&exec_params.hdr, executable_stack)) | 322 | if (elf_read_implies_exec(&exec_params.hdr, executable_stack)) |
323 | current->personality |= READ_IMPLIES_EXEC; | 323 | current->personality |= READ_IMPLIES_EXEC; |
324 | |||
325 | setup_new_exec(bprm); | ||
326 | |||
324 | set_binfmt(&elf_fdpic_format); | 327 | set_binfmt(&elf_fdpic_format); |
325 | 328 | ||
326 | current->mm->start_code = 0; | 329 | current->mm->start_code = 0; |
diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c index d4a00ea1054c..42c6b4a54445 100644 --- a/fs/binfmt_flat.c +++ b/fs/binfmt_flat.c | |||
@@ -519,6 +519,7 @@ static int load_flat_file(struct linux_binprm * bprm, | |||
519 | 519 | ||
520 | /* OK, This is the point of no return */ | 520 | /* OK, This is the point of no return */ |
521 | set_personality(PER_LINUX_32BIT); | 521 | set_personality(PER_LINUX_32BIT); |
522 | setup_new_exec(bprm); | ||
522 | } | 523 | } |
523 | 524 | ||
524 | /* | 525 | /* |
diff --git a/fs/binfmt_som.c b/fs/binfmt_som.c index 2a9b5330cc5e..cc8560f6c9b0 100644 --- a/fs/binfmt_som.c +++ b/fs/binfmt_som.c | |||
@@ -227,6 +227,7 @@ load_som_binary(struct linux_binprm * bprm, struct pt_regs * regs) | |||
227 | /* OK, This is the point of no return */ | 227 | /* OK, This is the point of no return */ |
228 | current->flags &= ~PF_FORKNOEXEC; | 228 | current->flags &= ~PF_FORKNOEXEC; |
229 | current->personality = PER_HPUX; | 229 | current->personality = PER_HPUX; |
230 | setup_new_exec(bprm); | ||
230 | 231 | ||
231 | /* Set the task size for HP-UX processes such that | 232 | /* Set the task size for HP-UX processes such that |
232 | * the gateway page is outside the address space. | 233 | * the gateway page is outside the address space. |
@@ -78,7 +78,7 @@ static struct kmem_cache *bio_find_or_create_slab(unsigned int extra_size) | |||
78 | 78 | ||
79 | i = 0; | 79 | i = 0; |
80 | while (i < bio_slab_nr) { | 80 | while (i < bio_slab_nr) { |
81 | struct bio_slab *bslab = &bio_slabs[i]; | 81 | bslab = &bio_slabs[i]; |
82 | 82 | ||
83 | if (!bslab->slab && entry == -1) | 83 | if (!bslab->slab && entry == -1) |
84 | entry = i; | 84 | entry = i; |
diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c index 2e9e69987a82..6df6d6ed74fd 100644 --- a/fs/btrfs/acl.c +++ b/fs/btrfs/acl.c | |||
@@ -112,12 +112,14 @@ static int btrfs_set_acl(struct btrfs_trans_handle *trans, | |||
112 | switch (type) { | 112 | switch (type) { |
113 | case ACL_TYPE_ACCESS: | 113 | case ACL_TYPE_ACCESS: |
114 | mode = inode->i_mode; | 114 | mode = inode->i_mode; |
115 | ret = posix_acl_equiv_mode(acl, &mode); | ||
116 | if (ret < 0) | ||
117 | return ret; | ||
118 | ret = 0; | ||
119 | inode->i_mode = mode; | ||
120 | name = POSIX_ACL_XATTR_ACCESS; | 115 | name = POSIX_ACL_XATTR_ACCESS; |
116 | if (acl) { | ||
117 | ret = posix_acl_equiv_mode(acl, &mode); | ||
118 | if (ret < 0) | ||
119 | return ret; | ||
120 | inode->i_mode = mode; | ||
121 | } | ||
122 | ret = 0; | ||
121 | break; | 123 | break; |
122 | case ACL_TYPE_DEFAULT: | 124 | case ACL_TYPE_DEFAULT: |
123 | if (!S_ISDIR(inode->i_mode)) | 125 | if (!S_ISDIR(inode->i_mode)) |
@@ -242,6 +244,7 @@ int btrfs_init_acl(struct btrfs_trans_handle *trans, | |||
242 | ACL_TYPE_ACCESS); | 244 | ACL_TYPE_ACCESS); |
243 | } | 245 | } |
244 | } | 246 | } |
247 | posix_acl_release(clone); | ||
245 | } | 248 | } |
246 | failed: | 249 | failed: |
247 | posix_acl_release(acl); | 250 | posix_acl_release(acl); |
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 9f806dd04c27..2aa8ec6a0981 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
@@ -1161,6 +1161,7 @@ struct btrfs_root { | |||
1161 | #define BTRFS_MOUNT_SSD_SPREAD (1 << 8) | 1161 | #define BTRFS_MOUNT_SSD_SPREAD (1 << 8) |
1162 | #define BTRFS_MOUNT_NOSSD (1 << 9) | 1162 | #define BTRFS_MOUNT_NOSSD (1 << 9) |
1163 | #define BTRFS_MOUNT_DISCARD (1 << 10) | 1163 | #define BTRFS_MOUNT_DISCARD (1 << 10) |
1164 | #define BTRFS_MOUNT_FORCE_COMPRESS (1 << 11) | ||
1164 | 1165 | ||
1165 | #define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt) | 1166 | #define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt) |
1166 | #define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt) | 1167 | #define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt) |
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 009e3bd18f23..87b25543d7d1 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -1993,6 +1993,12 @@ struct btrfs_root *open_ctree(struct super_block *sb, | |||
1993 | if (!fs_info->fs_root) | 1993 | if (!fs_info->fs_root) |
1994 | goto fail_trans_kthread; | 1994 | goto fail_trans_kthread; |
1995 | 1995 | ||
1996 | if (!(sb->s_flags & MS_RDONLY)) { | ||
1997 | down_read(&fs_info->cleanup_work_sem); | ||
1998 | btrfs_orphan_cleanup(fs_info->fs_root); | ||
1999 | up_read(&fs_info->cleanup_work_sem); | ||
2000 | } | ||
2001 | |||
1996 | return tree_root; | 2002 | return tree_root; |
1997 | 2003 | ||
1998 | fail_trans_kthread: | 2004 | fail_trans_kthread: |
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 56e50137d0e6..432a2da4641e 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -83,6 +83,17 @@ static int block_group_bits(struct btrfs_block_group_cache *cache, u64 bits) | |||
83 | return (cache->flags & bits) == bits; | 83 | return (cache->flags & bits) == bits; |
84 | } | 84 | } |
85 | 85 | ||
86 | void btrfs_get_block_group(struct btrfs_block_group_cache *cache) | ||
87 | { | ||
88 | atomic_inc(&cache->count); | ||
89 | } | ||
90 | |||
91 | void btrfs_put_block_group(struct btrfs_block_group_cache *cache) | ||
92 | { | ||
93 | if (atomic_dec_and_test(&cache->count)) | ||
94 | kfree(cache); | ||
95 | } | ||
96 | |||
86 | /* | 97 | /* |
87 | * this adds the block group to the fs_info rb tree for the block group | 98 | * this adds the block group to the fs_info rb tree for the block group |
88 | * cache | 99 | * cache |
@@ -156,7 +167,7 @@ block_group_cache_tree_search(struct btrfs_fs_info *info, u64 bytenr, | |||
156 | } | 167 | } |
157 | } | 168 | } |
158 | if (ret) | 169 | if (ret) |
159 | atomic_inc(&ret->count); | 170 | btrfs_get_block_group(ret); |
160 | spin_unlock(&info->block_group_cache_lock); | 171 | spin_unlock(&info->block_group_cache_lock); |
161 | 172 | ||
162 | return ret; | 173 | return ret; |
@@ -407,6 +418,8 @@ err: | |||
407 | 418 | ||
408 | put_caching_control(caching_ctl); | 419 | put_caching_control(caching_ctl); |
409 | atomic_dec(&block_group->space_info->caching_threads); | 420 | atomic_dec(&block_group->space_info->caching_threads); |
421 | btrfs_put_block_group(block_group); | ||
422 | |||
410 | return 0; | 423 | return 0; |
411 | } | 424 | } |
412 | 425 | ||
@@ -447,6 +460,7 @@ static int cache_block_group(struct btrfs_block_group_cache *cache) | |||
447 | up_write(&fs_info->extent_commit_sem); | 460 | up_write(&fs_info->extent_commit_sem); |
448 | 461 | ||
449 | atomic_inc(&cache->space_info->caching_threads); | 462 | atomic_inc(&cache->space_info->caching_threads); |
463 | btrfs_get_block_group(cache); | ||
450 | 464 | ||
451 | tsk = kthread_run(caching_kthread, cache, "btrfs-cache-%llu\n", | 465 | tsk = kthread_run(caching_kthread, cache, "btrfs-cache-%llu\n", |
452 | cache->key.objectid); | 466 | cache->key.objectid); |
@@ -486,12 +500,6 @@ struct btrfs_block_group_cache *btrfs_lookup_block_group( | |||
486 | return cache; | 500 | return cache; |
487 | } | 501 | } |
488 | 502 | ||
489 | void btrfs_put_block_group(struct btrfs_block_group_cache *cache) | ||
490 | { | ||
491 | if (atomic_dec_and_test(&cache->count)) | ||
492 | kfree(cache); | ||
493 | } | ||
494 | |||
495 | static struct btrfs_space_info *__find_space_info(struct btrfs_fs_info *info, | 503 | static struct btrfs_space_info *__find_space_info(struct btrfs_fs_info *info, |
496 | u64 flags) | 504 | u64 flags) |
497 | { | 505 | { |
@@ -2582,7 +2590,7 @@ next_block_group(struct btrfs_root *root, | |||
2582 | if (node) { | 2590 | if (node) { |
2583 | cache = rb_entry(node, struct btrfs_block_group_cache, | 2591 | cache = rb_entry(node, struct btrfs_block_group_cache, |
2584 | cache_node); | 2592 | cache_node); |
2585 | atomic_inc(&cache->count); | 2593 | btrfs_get_block_group(cache); |
2586 | } else | 2594 | } else |
2587 | cache = NULL; | 2595 | cache = NULL; |
2588 | spin_unlock(&root->fs_info->block_group_cache_lock); | 2596 | spin_unlock(&root->fs_info->block_group_cache_lock); |
@@ -4227,7 +4235,7 @@ search: | |||
4227 | u64 offset; | 4235 | u64 offset; |
4228 | int cached; | 4236 | int cached; |
4229 | 4237 | ||
4230 | atomic_inc(&block_group->count); | 4238 | btrfs_get_block_group(block_group); |
4231 | search_start = block_group->key.objectid; | 4239 | search_start = block_group->key.objectid; |
4232 | 4240 | ||
4233 | have_block_group: | 4241 | have_block_group: |
@@ -4315,7 +4323,7 @@ have_block_group: | |||
4315 | 4323 | ||
4316 | btrfs_put_block_group(block_group); | 4324 | btrfs_put_block_group(block_group); |
4317 | block_group = last_ptr->block_group; | 4325 | block_group = last_ptr->block_group; |
4318 | atomic_inc(&block_group->count); | 4326 | btrfs_get_block_group(block_group); |
4319 | spin_unlock(&last_ptr->lock); | 4327 | spin_unlock(&last_ptr->lock); |
4320 | spin_unlock(&last_ptr->refill_lock); | 4328 | spin_unlock(&last_ptr->refill_lock); |
4321 | 4329 | ||
@@ -7395,9 +7403,7 @@ int btrfs_free_block_groups(struct btrfs_fs_info *info) | |||
7395 | wait_block_group_cache_done(block_group); | 7403 | wait_block_group_cache_done(block_group); |
7396 | 7404 | ||
7397 | btrfs_remove_free_space_cache(block_group); | 7405 | btrfs_remove_free_space_cache(block_group); |
7398 | 7406 | btrfs_put_block_group(block_group); | |
7399 | WARN_ON(atomic_read(&block_group->count) != 1); | ||
7400 | kfree(block_group); | ||
7401 | 7407 | ||
7402 | spin_lock(&info->block_group_cache_lock); | 7408 | spin_lock(&info->block_group_cache_lock); |
7403 | } | 7409 | } |
diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c index 46bea0f4dc7b..428fcac45f90 100644 --- a/fs/btrfs/extent_map.c +++ b/fs/btrfs/extent_map.c | |||
@@ -155,20 +155,6 @@ static struct rb_node *__tree_search(struct rb_root *root, u64 offset, | |||
155 | return NULL; | 155 | return NULL; |
156 | } | 156 | } |
157 | 157 | ||
158 | /* | ||
159 | * look for an offset in the tree, and if it can't be found, return | ||
160 | * the first offset we can find smaller than 'offset'. | ||
161 | */ | ||
162 | static inline struct rb_node *tree_search(struct rb_root *root, u64 offset) | ||
163 | { | ||
164 | struct rb_node *prev; | ||
165 | struct rb_node *ret; | ||
166 | ret = __tree_search(root, offset, &prev, NULL); | ||
167 | if (!ret) | ||
168 | return prev; | ||
169 | return ret; | ||
170 | } | ||
171 | |||
172 | /* check to see if two extent_map structs are adjacent and safe to merge */ | 158 | /* check to see if two extent_map structs are adjacent and safe to merge */ |
173 | static int mergable_maps(struct extent_map *prev, struct extent_map *next) | 159 | static int mergable_maps(struct extent_map *prev, struct extent_map *next) |
174 | { | 160 | { |
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index feaa13b105d9..c02033596f02 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c | |||
@@ -506,7 +506,8 @@ next_slot: | |||
506 | } | 506 | } |
507 | 507 | ||
508 | static int extent_mergeable(struct extent_buffer *leaf, int slot, | 508 | static int extent_mergeable(struct extent_buffer *leaf, int slot, |
509 | u64 objectid, u64 bytenr, u64 *start, u64 *end) | 509 | u64 objectid, u64 bytenr, u64 orig_offset, |
510 | u64 *start, u64 *end) | ||
510 | { | 511 | { |
511 | struct btrfs_file_extent_item *fi; | 512 | struct btrfs_file_extent_item *fi; |
512 | struct btrfs_key key; | 513 | struct btrfs_key key; |
@@ -522,6 +523,7 @@ static int extent_mergeable(struct extent_buffer *leaf, int slot, | |||
522 | fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item); | 523 | fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item); |
523 | if (btrfs_file_extent_type(leaf, fi) != BTRFS_FILE_EXTENT_REG || | 524 | if (btrfs_file_extent_type(leaf, fi) != BTRFS_FILE_EXTENT_REG || |
524 | btrfs_file_extent_disk_bytenr(leaf, fi) != bytenr || | 525 | btrfs_file_extent_disk_bytenr(leaf, fi) != bytenr || |
526 | btrfs_file_extent_offset(leaf, fi) != key.offset - orig_offset || | ||
525 | btrfs_file_extent_compression(leaf, fi) || | 527 | btrfs_file_extent_compression(leaf, fi) || |
526 | btrfs_file_extent_encryption(leaf, fi) || | 528 | btrfs_file_extent_encryption(leaf, fi) || |
527 | btrfs_file_extent_other_encoding(leaf, fi)) | 529 | btrfs_file_extent_other_encoding(leaf, fi)) |
@@ -561,6 +563,7 @@ int btrfs_mark_extent_written(struct btrfs_trans_handle *trans, | |||
561 | u64 split; | 563 | u64 split; |
562 | int del_nr = 0; | 564 | int del_nr = 0; |
563 | int del_slot = 0; | 565 | int del_slot = 0; |
566 | int recow; | ||
564 | int ret; | 567 | int ret; |
565 | 568 | ||
566 | btrfs_drop_extent_cache(inode, start, end - 1, 0); | 569 | btrfs_drop_extent_cache(inode, start, end - 1, 0); |
@@ -568,6 +571,7 @@ int btrfs_mark_extent_written(struct btrfs_trans_handle *trans, | |||
568 | path = btrfs_alloc_path(); | 571 | path = btrfs_alloc_path(); |
569 | BUG_ON(!path); | 572 | BUG_ON(!path); |
570 | again: | 573 | again: |
574 | recow = 0; | ||
571 | split = start; | 575 | split = start; |
572 | key.objectid = inode->i_ino; | 576 | key.objectid = inode->i_ino; |
573 | key.type = BTRFS_EXTENT_DATA_KEY; | 577 | key.type = BTRFS_EXTENT_DATA_KEY; |
@@ -591,12 +595,60 @@ again: | |||
591 | bytenr = btrfs_file_extent_disk_bytenr(leaf, fi); | 595 | bytenr = btrfs_file_extent_disk_bytenr(leaf, fi); |
592 | num_bytes = btrfs_file_extent_disk_num_bytes(leaf, fi); | 596 | num_bytes = btrfs_file_extent_disk_num_bytes(leaf, fi); |
593 | orig_offset = key.offset - btrfs_file_extent_offset(leaf, fi); | 597 | orig_offset = key.offset - btrfs_file_extent_offset(leaf, fi); |
598 | memcpy(&new_key, &key, sizeof(new_key)); | ||
599 | |||
600 | if (start == key.offset && end < extent_end) { | ||
601 | other_start = 0; | ||
602 | other_end = start; | ||
603 | if (extent_mergeable(leaf, path->slots[0] - 1, | ||
604 | inode->i_ino, bytenr, orig_offset, | ||
605 | &other_start, &other_end)) { | ||
606 | new_key.offset = end; | ||
607 | btrfs_set_item_key_safe(trans, root, path, &new_key); | ||
608 | fi = btrfs_item_ptr(leaf, path->slots[0], | ||
609 | struct btrfs_file_extent_item); | ||
610 | btrfs_set_file_extent_num_bytes(leaf, fi, | ||
611 | extent_end - end); | ||
612 | btrfs_set_file_extent_offset(leaf, fi, | ||
613 | end - orig_offset); | ||
614 | fi = btrfs_item_ptr(leaf, path->slots[0] - 1, | ||
615 | struct btrfs_file_extent_item); | ||
616 | btrfs_set_file_extent_num_bytes(leaf, fi, | ||
617 | end - other_start); | ||
618 | btrfs_mark_buffer_dirty(leaf); | ||
619 | goto out; | ||
620 | } | ||
621 | } | ||
622 | |||
623 | if (start > key.offset && end == extent_end) { | ||
624 | other_start = end; | ||
625 | other_end = 0; | ||
626 | if (extent_mergeable(leaf, path->slots[0] + 1, | ||
627 | inode->i_ino, bytenr, orig_offset, | ||
628 | &other_start, &other_end)) { | ||
629 | fi = btrfs_item_ptr(leaf, path->slots[0], | ||
630 | struct btrfs_file_extent_item); | ||
631 | btrfs_set_file_extent_num_bytes(leaf, fi, | ||
632 | start - key.offset); | ||
633 | path->slots[0]++; | ||
634 | new_key.offset = start; | ||
635 | btrfs_set_item_key_safe(trans, root, path, &new_key); | ||
636 | |||
637 | fi = btrfs_item_ptr(leaf, path->slots[0], | ||
638 | struct btrfs_file_extent_item); | ||
639 | btrfs_set_file_extent_num_bytes(leaf, fi, | ||
640 | other_end - start); | ||
641 | btrfs_set_file_extent_offset(leaf, fi, | ||
642 | start - orig_offset); | ||
643 | btrfs_mark_buffer_dirty(leaf); | ||
644 | goto out; | ||
645 | } | ||
646 | } | ||
594 | 647 | ||
595 | while (start > key.offset || end < extent_end) { | 648 | while (start > key.offset || end < extent_end) { |
596 | if (key.offset == start) | 649 | if (key.offset == start) |
597 | split = end; | 650 | split = end; |
598 | 651 | ||
599 | memcpy(&new_key, &key, sizeof(new_key)); | ||
600 | new_key.offset = split; | 652 | new_key.offset = split; |
601 | ret = btrfs_duplicate_item(trans, root, path, &new_key); | 653 | ret = btrfs_duplicate_item(trans, root, path, &new_key); |
602 | if (ret == -EAGAIN) { | 654 | if (ret == -EAGAIN) { |
@@ -631,15 +683,18 @@ again: | |||
631 | path->slots[0]--; | 683 | path->slots[0]--; |
632 | extent_end = end; | 684 | extent_end = end; |
633 | } | 685 | } |
686 | recow = 1; | ||
634 | } | 687 | } |
635 | 688 | ||
636 | fi = btrfs_item_ptr(leaf, path->slots[0], | ||
637 | struct btrfs_file_extent_item); | ||
638 | |||
639 | other_start = end; | 689 | other_start = end; |
640 | other_end = 0; | 690 | other_end = 0; |
641 | if (extent_mergeable(leaf, path->slots[0] + 1, inode->i_ino, | 691 | if (extent_mergeable(leaf, path->slots[0] + 1, |
642 | bytenr, &other_start, &other_end)) { | 692 | inode->i_ino, bytenr, orig_offset, |
693 | &other_start, &other_end)) { | ||
694 | if (recow) { | ||
695 | btrfs_release_path(root, path); | ||
696 | goto again; | ||
697 | } | ||
643 | extent_end = other_end; | 698 | extent_end = other_end; |
644 | del_slot = path->slots[0] + 1; | 699 | del_slot = path->slots[0] + 1; |
645 | del_nr++; | 700 | del_nr++; |
@@ -650,8 +705,13 @@ again: | |||
650 | } | 705 | } |
651 | other_start = 0; | 706 | other_start = 0; |
652 | other_end = start; | 707 | other_end = start; |
653 | if (extent_mergeable(leaf, path->slots[0] - 1, inode->i_ino, | 708 | if (extent_mergeable(leaf, path->slots[0] - 1, |
654 | bytenr, &other_start, &other_end)) { | 709 | inode->i_ino, bytenr, orig_offset, |
710 | &other_start, &other_end)) { | ||
711 | if (recow) { | ||
712 | btrfs_release_path(root, path); | ||
713 | goto again; | ||
714 | } | ||
655 | key.offset = other_start; | 715 | key.offset = other_start; |
656 | del_slot = path->slots[0]; | 716 | del_slot = path->slots[0]; |
657 | del_nr++; | 717 | del_nr++; |
@@ -660,22 +720,22 @@ again: | |||
660 | inode->i_ino, orig_offset); | 720 | inode->i_ino, orig_offset); |
661 | BUG_ON(ret); | 721 | BUG_ON(ret); |
662 | } | 722 | } |
723 | fi = btrfs_item_ptr(leaf, path->slots[0], | ||
724 | struct btrfs_file_extent_item); | ||
663 | if (del_nr == 0) { | 725 | if (del_nr == 0) { |
664 | btrfs_set_file_extent_type(leaf, fi, | 726 | btrfs_set_file_extent_type(leaf, fi, |
665 | BTRFS_FILE_EXTENT_REG); | 727 | BTRFS_FILE_EXTENT_REG); |
666 | btrfs_mark_buffer_dirty(leaf); | 728 | btrfs_mark_buffer_dirty(leaf); |
667 | goto out; | 729 | } else { |
668 | } | 730 | btrfs_set_file_extent_type(leaf, fi, |
669 | 731 | BTRFS_FILE_EXTENT_REG); | |
670 | fi = btrfs_item_ptr(leaf, del_slot - 1, | 732 | btrfs_set_file_extent_num_bytes(leaf, fi, |
671 | struct btrfs_file_extent_item); | 733 | extent_end - key.offset); |
672 | btrfs_set_file_extent_type(leaf, fi, BTRFS_FILE_EXTENT_REG); | 734 | btrfs_mark_buffer_dirty(leaf); |
673 | btrfs_set_file_extent_num_bytes(leaf, fi, | ||
674 | extent_end - key.offset); | ||
675 | btrfs_mark_buffer_dirty(leaf); | ||
676 | 735 | ||
677 | ret = btrfs_del_items(trans, root, path, del_slot, del_nr); | 736 | ret = btrfs_del_items(trans, root, path, del_slot, del_nr); |
678 | BUG_ON(ret); | 737 | BUG_ON(ret); |
738 | } | ||
679 | out: | 739 | out: |
680 | btrfs_free_path(path); | 740 | btrfs_free_path(path); |
681 | return 0; | 741 | return 0; |
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 5440bab23635..8cd109972fa6 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -483,7 +483,8 @@ again: | |||
483 | nr_pages_ret = 0; | 483 | nr_pages_ret = 0; |
484 | 484 | ||
485 | /* flag the file so we don't compress in the future */ | 485 | /* flag the file so we don't compress in the future */ |
486 | BTRFS_I(inode)->flags |= BTRFS_INODE_NOCOMPRESS; | 486 | if (!btrfs_test_opt(root, FORCE_COMPRESS)) |
487 | BTRFS_I(inode)->flags |= BTRFS_INODE_NOCOMPRESS; | ||
487 | } | 488 | } |
488 | if (will_compress) { | 489 | if (will_compress) { |
489 | *num_added += 1; | 490 | *num_added += 1; |
@@ -3995,7 +3996,11 @@ skip: | |||
3995 | 3996 | ||
3996 | /* Reached end of directory/root. Bump pos past the last item. */ | 3997 | /* Reached end of directory/root. Bump pos past the last item. */ |
3997 | if (key_type == BTRFS_DIR_INDEX_KEY) | 3998 | if (key_type == BTRFS_DIR_INDEX_KEY) |
3998 | filp->f_pos = INT_LIMIT(off_t); | 3999 | /* |
4000 | * 32-bit glibc will use getdents64, but then strtol - | ||
4001 | * so the last number we can serve is this. | ||
4002 | */ | ||
4003 | filp->f_pos = 0x7fffffff; | ||
3999 | else | 4004 | else |
4000 | filp->f_pos++; | 4005 | filp->f_pos++; |
4001 | nopos: | 4006 | nopos: |
@@ -5789,7 +5794,7 @@ out_fail: | |||
5789 | } | 5794 | } |
5790 | 5795 | ||
5791 | static int prealloc_file_range(struct inode *inode, u64 start, u64 end, | 5796 | static int prealloc_file_range(struct inode *inode, u64 start, u64 end, |
5792 | u64 alloc_hint, int mode) | 5797 | u64 alloc_hint, int mode, loff_t actual_len) |
5793 | { | 5798 | { |
5794 | struct btrfs_trans_handle *trans; | 5799 | struct btrfs_trans_handle *trans; |
5795 | struct btrfs_root *root = BTRFS_I(inode)->root; | 5800 | struct btrfs_root *root = BTRFS_I(inode)->root; |
@@ -5798,6 +5803,7 @@ static int prealloc_file_range(struct inode *inode, u64 start, u64 end, | |||
5798 | u64 cur_offset = start; | 5803 | u64 cur_offset = start; |
5799 | u64 num_bytes = end - start; | 5804 | u64 num_bytes = end - start; |
5800 | int ret = 0; | 5805 | int ret = 0; |
5806 | u64 i_size; | ||
5801 | 5807 | ||
5802 | while (num_bytes > 0) { | 5808 | while (num_bytes > 0) { |
5803 | alloc_size = min(num_bytes, root->fs_info->max_extent); | 5809 | alloc_size = min(num_bytes, root->fs_info->max_extent); |
@@ -5836,8 +5842,12 @@ static int prealloc_file_range(struct inode *inode, u64 start, u64 end, | |||
5836 | BTRFS_I(inode)->flags |= BTRFS_INODE_PREALLOC; | 5842 | BTRFS_I(inode)->flags |= BTRFS_INODE_PREALLOC; |
5837 | if (!(mode & FALLOC_FL_KEEP_SIZE) && | 5843 | if (!(mode & FALLOC_FL_KEEP_SIZE) && |
5838 | cur_offset > inode->i_size) { | 5844 | cur_offset > inode->i_size) { |
5839 | i_size_write(inode, cur_offset); | 5845 | if (cur_offset > actual_len) |
5840 | btrfs_ordered_update_i_size(inode, cur_offset, NULL); | 5846 | i_size = actual_len; |
5847 | else | ||
5848 | i_size = cur_offset; | ||
5849 | i_size_write(inode, i_size); | ||
5850 | btrfs_ordered_update_i_size(inode, i_size, NULL); | ||
5841 | } | 5851 | } |
5842 | 5852 | ||
5843 | ret = btrfs_update_inode(trans, root, inode); | 5853 | ret = btrfs_update_inode(trans, root, inode); |
@@ -5930,7 +5940,7 @@ static long btrfs_fallocate(struct inode *inode, int mode, | |||
5930 | !test_bit(EXTENT_FLAG_PREALLOC, &em->flags))) { | 5940 | !test_bit(EXTENT_FLAG_PREALLOC, &em->flags))) { |
5931 | ret = prealloc_file_range(inode, | 5941 | ret = prealloc_file_range(inode, |
5932 | cur_offset, last_byte, | 5942 | cur_offset, last_byte, |
5933 | alloc_hint, mode); | 5943 | alloc_hint, mode, offset+len); |
5934 | if (ret < 0) { | 5944 | if (ret < 0) { |
5935 | free_extent_map(em); | 5945 | free_extent_map(em); |
5936 | break; | 5946 | break; |
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c index b10a49d4bc6a..5c2a9e78a949 100644 --- a/fs/btrfs/ordered-data.c +++ b/fs/btrfs/ordered-data.c | |||
@@ -626,6 +626,8 @@ int btrfs_ordered_update_i_size(struct inode *inode, u64 offset, | |||
626 | 626 | ||
627 | if (ordered) | 627 | if (ordered) |
628 | offset = entry_end(ordered); | 628 | offset = entry_end(ordered); |
629 | else | ||
630 | offset = ALIGN(offset, BTRFS_I(inode)->root->sectorsize); | ||
629 | 631 | ||
630 | mutex_lock(&tree->mutex); | 632 | mutex_lock(&tree->mutex); |
631 | disk_i_size = BTRFS_I(inode)->disk_i_size; | 633 | disk_i_size = BTRFS_I(inode)->disk_i_size; |
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index a9728680eca8..ed3e4a2ec2c8 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c | |||
@@ -3281,8 +3281,10 @@ static noinline_for_stack int relocate_block_group(struct reloc_control *rc) | |||
3281 | return -ENOMEM; | 3281 | return -ENOMEM; |
3282 | 3282 | ||
3283 | path = btrfs_alloc_path(); | 3283 | path = btrfs_alloc_path(); |
3284 | if (!path) | 3284 | if (!path) { |
3285 | kfree(cluster); | ||
3285 | return -ENOMEM; | 3286 | return -ENOMEM; |
3287 | } | ||
3286 | 3288 | ||
3287 | rc->extents_found = 0; | 3289 | rc->extents_found = 0; |
3288 | rc->extents_skipped = 0; | 3290 | rc->extents_skipped = 0; |
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 3f9b45704fcd..8a1ea6e64575 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c | |||
@@ -66,7 +66,8 @@ enum { | |||
66 | Opt_degraded, Opt_subvol, Opt_device, Opt_nodatasum, Opt_nodatacow, | 66 | Opt_degraded, Opt_subvol, Opt_device, Opt_nodatasum, Opt_nodatacow, |
67 | Opt_max_extent, Opt_max_inline, Opt_alloc_start, Opt_nobarrier, | 67 | Opt_max_extent, Opt_max_inline, Opt_alloc_start, Opt_nobarrier, |
68 | Opt_ssd, Opt_nossd, Opt_ssd_spread, Opt_thread_pool, Opt_noacl, | 68 | Opt_ssd, Opt_nossd, Opt_ssd_spread, Opt_thread_pool, Opt_noacl, |
69 | Opt_compress, Opt_notreelog, Opt_ratio, Opt_flushoncommit, | 69 | Opt_compress, Opt_compress_force, Opt_notreelog, Opt_ratio, |
70 | Opt_flushoncommit, | ||
70 | Opt_discard, Opt_err, | 71 | Opt_discard, Opt_err, |
71 | }; | 72 | }; |
72 | 73 | ||
@@ -82,6 +83,7 @@ static match_table_t tokens = { | |||
82 | {Opt_alloc_start, "alloc_start=%s"}, | 83 | {Opt_alloc_start, "alloc_start=%s"}, |
83 | {Opt_thread_pool, "thread_pool=%d"}, | 84 | {Opt_thread_pool, "thread_pool=%d"}, |
84 | {Opt_compress, "compress"}, | 85 | {Opt_compress, "compress"}, |
86 | {Opt_compress_force, "compress-force"}, | ||
85 | {Opt_ssd, "ssd"}, | 87 | {Opt_ssd, "ssd"}, |
86 | {Opt_ssd_spread, "ssd_spread"}, | 88 | {Opt_ssd_spread, "ssd_spread"}, |
87 | {Opt_nossd, "nossd"}, | 89 | {Opt_nossd, "nossd"}, |
@@ -173,6 +175,11 @@ int btrfs_parse_options(struct btrfs_root *root, char *options) | |||
173 | printk(KERN_INFO "btrfs: use compression\n"); | 175 | printk(KERN_INFO "btrfs: use compression\n"); |
174 | btrfs_set_opt(info->mount_opt, COMPRESS); | 176 | btrfs_set_opt(info->mount_opt, COMPRESS); |
175 | break; | 177 | break; |
178 | case Opt_compress_force: | ||
179 | printk(KERN_INFO "btrfs: forcing compression\n"); | ||
180 | btrfs_set_opt(info->mount_opt, FORCE_COMPRESS); | ||
181 | btrfs_set_opt(info->mount_opt, COMPRESS); | ||
182 | break; | ||
176 | case Opt_ssd: | 183 | case Opt_ssd: |
177 | printk(KERN_INFO "btrfs: use ssd allocation scheme\n"); | 184 | printk(KERN_INFO "btrfs: use ssd allocation scheme\n"); |
178 | btrfs_set_opt(info->mount_opt, SSD); | 185 | btrfs_set_opt(info->mount_opt, SSD); |
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 198cff28766d..41ecbb2347f2 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c | |||
@@ -1135,7 +1135,7 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path) | |||
1135 | root->fs_info->avail_metadata_alloc_bits; | 1135 | root->fs_info->avail_metadata_alloc_bits; |
1136 | 1136 | ||
1137 | if ((all_avail & BTRFS_BLOCK_GROUP_RAID10) && | 1137 | if ((all_avail & BTRFS_BLOCK_GROUP_RAID10) && |
1138 | root->fs_info->fs_devices->rw_devices <= 4) { | 1138 | root->fs_info->fs_devices->num_devices <= 4) { |
1139 | printk(KERN_ERR "btrfs: unable to go below four devices " | 1139 | printk(KERN_ERR "btrfs: unable to go below four devices " |
1140 | "on raid10\n"); | 1140 | "on raid10\n"); |
1141 | ret = -EINVAL; | 1141 | ret = -EINVAL; |
@@ -1143,7 +1143,7 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path) | |||
1143 | } | 1143 | } |
1144 | 1144 | ||
1145 | if ((all_avail & BTRFS_BLOCK_GROUP_RAID1) && | 1145 | if ((all_avail & BTRFS_BLOCK_GROUP_RAID1) && |
1146 | root->fs_info->fs_devices->rw_devices <= 2) { | 1146 | root->fs_info->fs_devices->num_devices <= 2) { |
1147 | printk(KERN_ERR "btrfs: unable to go below two " | 1147 | printk(KERN_ERR "btrfs: unable to go below two " |
1148 | "devices on raid1\n"); | 1148 | "devices on raid1\n"); |
1149 | ret = -EINVAL; | 1149 | ret = -EINVAL; |
@@ -1434,8 +1434,8 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path) | |||
1434 | return -EINVAL; | 1434 | return -EINVAL; |
1435 | 1435 | ||
1436 | bdev = open_bdev_exclusive(device_path, 0, root->fs_info->bdev_holder); | 1436 | bdev = open_bdev_exclusive(device_path, 0, root->fs_info->bdev_holder); |
1437 | if (!bdev) | 1437 | if (IS_ERR(bdev)) |
1438 | return -EIO; | 1438 | return PTR_ERR(bdev); |
1439 | 1439 | ||
1440 | if (root->fs_info->fs_devices->seeding) { | 1440 | if (root->fs_info->fs_devices->seeding) { |
1441 | seeding_dev = 1; | 1441 | seeding_dev = 1; |
@@ -2538,6 +2538,11 @@ int btrfs_chunk_readonly(struct btrfs_root *root, u64 chunk_offset) | |||
2538 | if (!em) | 2538 | if (!em) |
2539 | return 1; | 2539 | return 1; |
2540 | 2540 | ||
2541 | if (btrfs_test_opt(root, DEGRADED)) { | ||
2542 | free_extent_map(em); | ||
2543 | return 0; | ||
2544 | } | ||
2545 | |||
2541 | map = (struct map_lookup *)em->bdev; | 2546 | map = (struct map_lookup *)em->bdev; |
2542 | for (i = 0; i < map->num_stripes; i++) { | 2547 | for (i = 0; i < map->num_stripes; i++) { |
2543 | if (!map->stripes[i].dev->writeable) { | 2548 | if (!map->stripes[i].dev->writeable) { |
@@ -2649,8 +2654,10 @@ again: | |||
2649 | em = lookup_extent_mapping(em_tree, logical, *length); | 2654 | em = lookup_extent_mapping(em_tree, logical, *length); |
2650 | read_unlock(&em_tree->lock); | 2655 | read_unlock(&em_tree->lock); |
2651 | 2656 | ||
2652 | if (!em && unplug_page) | 2657 | if (!em && unplug_page) { |
2658 | kfree(multi); | ||
2653 | return 0; | 2659 | return 0; |
2660 | } | ||
2654 | 2661 | ||
2655 | if (!em) { | 2662 | if (!em) { |
2656 | printk(KERN_CRIT "unable to find logical %llu len %llu\n", | 2663 | printk(KERN_CRIT "unable to find logical %llu len %llu\n", |
diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c index fea9e898c4ba..b44ce0a0711c 100644 --- a/fs/cifs/cifs_dfs_ref.c +++ b/fs/cifs/cifs_dfs_ref.c | |||
@@ -269,7 +269,7 @@ static int add_mount_helper(struct vfsmount *newmnt, struct nameidata *nd, | |||
269 | int err; | 269 | int err; |
270 | 270 | ||
271 | mntget(newmnt); | 271 | mntget(newmnt); |
272 | err = do_add_mount(newmnt, &nd->path, nd->path.mnt->mnt_flags, mntlist); | 272 | err = do_add_mount(newmnt, &nd->path, nd->path.mnt->mnt_flags | MNT_SHRINKABLE, mntlist); |
273 | switch (err) { | 273 | switch (err) { |
274 | case 0: | 274 | case 0: |
275 | path_put(&nd->path); | 275 | path_put(&nd->path); |
@@ -371,7 +371,6 @@ cifs_dfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd) | |||
371 | if (IS_ERR(mnt)) | 371 | if (IS_ERR(mnt)) |
372 | goto out_err; | 372 | goto out_err; |
373 | 373 | ||
374 | nd->path.mnt->mnt_flags |= MNT_SHRINKABLE; | ||
375 | rc = add_mount_helper(mnt, nd, &cifs_dfs_automount_list); | 374 | rc = add_mount_helper(mnt, nd, &cifs_dfs_automount_list); |
376 | 375 | ||
377 | out: | 376 | out: |
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c index 332dd00f0894..c5c45de1a2ee 100644 --- a/fs/compat_ioctl.c +++ b/fs/compat_ioctl.c | |||
@@ -1005,6 +1005,9 @@ COMPATIBLE_IOCTL(SCSI_IOCTL_SEND_COMMAND) | |||
1005 | COMPATIBLE_IOCTL(SCSI_IOCTL_PROBE_HOST) | 1005 | COMPATIBLE_IOCTL(SCSI_IOCTL_PROBE_HOST) |
1006 | COMPATIBLE_IOCTL(SCSI_IOCTL_GET_PCI) | 1006 | COMPATIBLE_IOCTL(SCSI_IOCTL_GET_PCI) |
1007 | #endif | 1007 | #endif |
1008 | /* Big V (don't complain on serial console) */ | ||
1009 | IGNORE_IOCTL(VT_OPENQRY) | ||
1010 | IGNORE_IOCTL(VT_GETMODE) | ||
1008 | /* Little p (/dev/rtc, /dev/envctrl, etc.) */ | 1011 | /* Little p (/dev/rtc, /dev/envctrl, etc.) */ |
1009 | COMPATIBLE_IOCTL(RTC_AIE_ON) | 1012 | COMPATIBLE_IOCTL(RTC_AIE_ON) |
1010 | COMPATIBLE_IOCTL(RTC_AIE_OFF) | 1013 | COMPATIBLE_IOCTL(RTC_AIE_OFF) |
diff --git a/fs/configfs/symlink.c b/fs/configfs/symlink.c index c8afa6b1d91d..32a5f46b1157 100644 --- a/fs/configfs/symlink.c +++ b/fs/configfs/symlink.c | |||
@@ -121,8 +121,10 @@ static int get_target(const char *symname, struct path *path, | |||
121 | ret = -ENOENT; | 121 | ret = -ENOENT; |
122 | path_put(path); | 122 | path_put(path); |
123 | } | 123 | } |
124 | } else | 124 | } else { |
125 | ret = -EPERM; | 125 | ret = -EPERM; |
126 | path_put(path); | ||
127 | } | ||
126 | } | 128 | } |
127 | 129 | ||
128 | return ret; | 130 | return ret; |
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c index b486169f42bf..274ac865bae8 100644 --- a/fs/debugfs/inode.c +++ b/fs/debugfs/inode.c | |||
@@ -160,15 +160,8 @@ static int debugfs_create_by_name(const char *name, mode_t mode, | |||
160 | * block. A pointer to that is in the struct vfsmount that we | 160 | * block. A pointer to that is in the struct vfsmount that we |
161 | * have around. | 161 | * have around. |
162 | */ | 162 | */ |
163 | if (!parent) { | 163 | if (!parent) |
164 | if (debugfs_mount && debugfs_mount->mnt_sb) { | 164 | parent = debugfs_mount->mnt_sb->s_root; |
165 | parent = debugfs_mount->mnt_sb->s_root; | ||
166 | } | ||
167 | } | ||
168 | if (!parent) { | ||
169 | pr_debug("debugfs: Ah! can not find a parent!\n"); | ||
170 | return -EFAULT; | ||
171 | } | ||
172 | 165 | ||
173 | *dentry = NULL; | 166 | *dentry = NULL; |
174 | mutex_lock(&parent->d_inode->i_mutex); | 167 | mutex_lock(&parent->d_inode->i_mutex); |
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c index fbb6e5eed697..7cb0a59f4b9d 100644 --- a/fs/ecryptfs/crypto.c +++ b/fs/ecryptfs/crypto.c | |||
@@ -1748,7 +1748,7 @@ ecryptfs_process_key_cipher(struct crypto_blkcipher **key_tfm, | |||
1748 | char *cipher_name, size_t *key_size) | 1748 | char *cipher_name, size_t *key_size) |
1749 | { | 1749 | { |
1750 | char dummy_key[ECRYPTFS_MAX_KEY_BYTES]; | 1750 | char dummy_key[ECRYPTFS_MAX_KEY_BYTES]; |
1751 | char *full_alg_name; | 1751 | char *full_alg_name = NULL; |
1752 | int rc; | 1752 | int rc; |
1753 | 1753 | ||
1754 | *key_tfm = NULL; | 1754 | *key_tfm = NULL; |
@@ -1763,7 +1763,6 @@ ecryptfs_process_key_cipher(struct crypto_blkcipher **key_tfm, | |||
1763 | if (rc) | 1763 | if (rc) |
1764 | goto out; | 1764 | goto out; |
1765 | *key_tfm = crypto_alloc_blkcipher(full_alg_name, 0, CRYPTO_ALG_ASYNC); | 1765 | *key_tfm = crypto_alloc_blkcipher(full_alg_name, 0, CRYPTO_ALG_ASYNC); |
1766 | kfree(full_alg_name); | ||
1767 | if (IS_ERR(*key_tfm)) { | 1766 | if (IS_ERR(*key_tfm)) { |
1768 | rc = PTR_ERR(*key_tfm); | 1767 | rc = PTR_ERR(*key_tfm); |
1769 | printk(KERN_ERR "Unable to allocate crypto cipher with name " | 1768 | printk(KERN_ERR "Unable to allocate crypto cipher with name " |
@@ -1786,6 +1785,7 @@ ecryptfs_process_key_cipher(struct crypto_blkcipher **key_tfm, | |||
1786 | goto out; | 1785 | goto out; |
1787 | } | 1786 | } |
1788 | out: | 1787 | out: |
1788 | kfree(full_alg_name); | ||
1789 | return rc; | 1789 | return rc; |
1790 | } | 1790 | } |
1791 | 1791 | ||
diff --git a/fs/ecryptfs/file.c b/fs/ecryptfs/file.c index 9e944057001b..678172b61be2 100644 --- a/fs/ecryptfs/file.c +++ b/fs/ecryptfs/file.c | |||
@@ -158,7 +158,7 @@ static int ecryptfs_open(struct inode *inode, struct file *file) | |||
158 | struct dentry *ecryptfs_dentry = file->f_path.dentry; | 158 | struct dentry *ecryptfs_dentry = file->f_path.dentry; |
159 | /* Private value of ecryptfs_dentry allocated in | 159 | /* Private value of ecryptfs_dentry allocated in |
160 | * ecryptfs_lookup() */ | 160 | * ecryptfs_lookup() */ |
161 | struct dentry *lower_dentry = ecryptfs_dentry_to_lower(ecryptfs_dentry); | 161 | struct dentry *lower_dentry; |
162 | struct ecryptfs_file_info *file_info; | 162 | struct ecryptfs_file_info *file_info; |
163 | 163 | ||
164 | mount_crypt_stat = &ecryptfs_superblock_to_private( | 164 | mount_crypt_stat = &ecryptfs_superblock_to_private( |
@@ -191,13 +191,6 @@ static int ecryptfs_open(struct inode *inode, struct file *file) | |||
191 | | ECRYPTFS_ENCRYPTED); | 191 | | ECRYPTFS_ENCRYPTED); |
192 | } | 192 | } |
193 | mutex_unlock(&crypt_stat->cs_mutex); | 193 | mutex_unlock(&crypt_stat->cs_mutex); |
194 | if ((ecryptfs_inode_to_private(inode)->lower_file->f_flags & O_RDONLY) | ||
195 | && !(file->f_flags & O_RDONLY)) { | ||
196 | rc = -EPERM; | ||
197 | printk(KERN_WARNING "%s: Lower persistent file is RO; eCryptfs " | ||
198 | "file must hence be opened RO\n", __func__); | ||
199 | goto out; | ||
200 | } | ||
201 | if (!ecryptfs_inode_to_private(inode)->lower_file) { | 194 | if (!ecryptfs_inode_to_private(inode)->lower_file) { |
202 | rc = ecryptfs_init_persistent_file(ecryptfs_dentry); | 195 | rc = ecryptfs_init_persistent_file(ecryptfs_dentry); |
203 | if (rc) { | 196 | if (rc) { |
@@ -208,6 +201,13 @@ static int ecryptfs_open(struct inode *inode, struct file *file) | |||
208 | goto out; | 201 | goto out; |
209 | } | 202 | } |
210 | } | 203 | } |
204 | if ((ecryptfs_inode_to_private(inode)->lower_file->f_flags & O_RDONLY) | ||
205 | && !(file->f_flags & O_RDONLY)) { | ||
206 | rc = -EPERM; | ||
207 | printk(KERN_WARNING "%s: Lower persistent file is RO; eCryptfs " | ||
208 | "file must hence be opened RO\n", __func__); | ||
209 | goto out; | ||
210 | } | ||
211 | ecryptfs_set_file_lower( | 211 | ecryptfs_set_file_lower( |
212 | file, ecryptfs_inode_to_private(inode)->lower_file); | 212 | file, ecryptfs_inode_to_private(inode)->lower_file); |
213 | if (S_ISDIR(ecryptfs_dentry->d_inode->i_mode)) { | 213 | if (S_ISDIR(ecryptfs_dentry->d_inode->i_mode)) { |
@@ -299,7 +299,6 @@ static int ecryptfs_ioctl(struct inode *inode, struct file *file, | |||
299 | const struct file_operations ecryptfs_dir_fops = { | 299 | const struct file_operations ecryptfs_dir_fops = { |
300 | .readdir = ecryptfs_readdir, | 300 | .readdir = ecryptfs_readdir, |
301 | .ioctl = ecryptfs_ioctl, | 301 | .ioctl = ecryptfs_ioctl, |
302 | .mmap = generic_file_mmap, | ||
303 | .open = ecryptfs_open, | 302 | .open = ecryptfs_open, |
304 | .flush = ecryptfs_flush, | 303 | .flush = ecryptfs_flush, |
305 | .release = ecryptfs_release, | 304 | .release = ecryptfs_release, |
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c index 429ca0b3ba08..4a430ab4115c 100644 --- a/fs/ecryptfs/inode.c +++ b/fs/ecryptfs/inode.c | |||
@@ -282,7 +282,8 @@ int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry, | |||
282 | goto out; | 282 | goto out; |
283 | } | 283 | } |
284 | rc = ecryptfs_interpose(lower_dentry, ecryptfs_dentry, | 284 | rc = ecryptfs_interpose(lower_dentry, ecryptfs_dentry, |
285 | ecryptfs_dir_inode->i_sb, 1); | 285 | ecryptfs_dir_inode->i_sb, |
286 | ECRYPTFS_INTERPOSE_FLAG_D_ADD); | ||
286 | if (rc) { | 287 | if (rc) { |
287 | printk(KERN_ERR "%s: Error interposing; rc = [%d]\n", | 288 | printk(KERN_ERR "%s: Error interposing; rc = [%d]\n", |
288 | __func__, rc); | 289 | __func__, rc); |
@@ -463,9 +464,6 @@ out_lock: | |||
463 | unlock_dir(lower_dir_dentry); | 464 | unlock_dir(lower_dir_dentry); |
464 | dput(lower_new_dentry); | 465 | dput(lower_new_dentry); |
465 | dput(lower_old_dentry); | 466 | dput(lower_old_dentry); |
466 | d_drop(lower_old_dentry); | ||
467 | d_drop(new_dentry); | ||
468 | d_drop(old_dentry); | ||
469 | return rc; | 467 | return rc; |
470 | } | 468 | } |
471 | 469 | ||
@@ -614,6 +612,7 @@ ecryptfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
614 | struct dentry *lower_new_dentry; | 612 | struct dentry *lower_new_dentry; |
615 | struct dentry *lower_old_dir_dentry; | 613 | struct dentry *lower_old_dir_dentry; |
616 | struct dentry *lower_new_dir_dentry; | 614 | struct dentry *lower_new_dir_dentry; |
615 | struct dentry *trap = NULL; | ||
617 | 616 | ||
618 | lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry); | 617 | lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry); |
619 | lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry); | 618 | lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry); |
@@ -621,7 +620,17 @@ ecryptfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
621 | dget(lower_new_dentry); | 620 | dget(lower_new_dentry); |
622 | lower_old_dir_dentry = dget_parent(lower_old_dentry); | 621 | lower_old_dir_dentry = dget_parent(lower_old_dentry); |
623 | lower_new_dir_dentry = dget_parent(lower_new_dentry); | 622 | lower_new_dir_dentry = dget_parent(lower_new_dentry); |
624 | lock_rename(lower_old_dir_dentry, lower_new_dir_dentry); | 623 | trap = lock_rename(lower_old_dir_dentry, lower_new_dir_dentry); |
624 | /* source should not be ancestor of target */ | ||
625 | if (trap == lower_old_dentry) { | ||
626 | rc = -EINVAL; | ||
627 | goto out_lock; | ||
628 | } | ||
629 | /* target should not be ancestor of source */ | ||
630 | if (trap == lower_new_dentry) { | ||
631 | rc = -ENOTEMPTY; | ||
632 | goto out_lock; | ||
633 | } | ||
625 | rc = vfs_rename(lower_old_dir_dentry->d_inode, lower_old_dentry, | 634 | rc = vfs_rename(lower_old_dir_dentry->d_inode, lower_old_dentry, |
626 | lower_new_dir_dentry->d_inode, lower_new_dentry); | 635 | lower_new_dir_dentry->d_inode, lower_new_dentry); |
627 | if (rc) | 636 | if (rc) |
@@ -715,31 +724,31 @@ static void *ecryptfs_follow_link(struct dentry *dentry, struct nameidata *nd) | |||
715 | /* Released in ecryptfs_put_link(); only release here on error */ | 724 | /* Released in ecryptfs_put_link(); only release here on error */ |
716 | buf = kmalloc(len, GFP_KERNEL); | 725 | buf = kmalloc(len, GFP_KERNEL); |
717 | if (!buf) { | 726 | if (!buf) { |
718 | rc = -ENOMEM; | 727 | buf = ERR_PTR(-ENOMEM); |
719 | goto out; | 728 | goto out; |
720 | } | 729 | } |
721 | old_fs = get_fs(); | 730 | old_fs = get_fs(); |
722 | set_fs(get_ds()); | 731 | set_fs(get_ds()); |
723 | rc = dentry->d_inode->i_op->readlink(dentry, (char __user *)buf, len); | 732 | rc = dentry->d_inode->i_op->readlink(dentry, (char __user *)buf, len); |
724 | set_fs(old_fs); | 733 | set_fs(old_fs); |
725 | if (rc < 0) | 734 | if (rc < 0) { |
726 | goto out_free; | 735 | kfree(buf); |
727 | else | 736 | buf = ERR_PTR(rc); |
737 | } else | ||
728 | buf[rc] = '\0'; | 738 | buf[rc] = '\0'; |
729 | rc = 0; | ||
730 | nd_set_link(nd, buf); | ||
731 | goto out; | ||
732 | out_free: | ||
733 | kfree(buf); | ||
734 | out: | 739 | out: |
735 | return ERR_PTR(rc); | 740 | nd_set_link(nd, buf); |
741 | return NULL; | ||
736 | } | 742 | } |
737 | 743 | ||
738 | static void | 744 | static void |
739 | ecryptfs_put_link(struct dentry *dentry, struct nameidata *nd, void *ptr) | 745 | ecryptfs_put_link(struct dentry *dentry, struct nameidata *nd, void *ptr) |
740 | { | 746 | { |
741 | /* Free the char* */ | 747 | char *buf = nd_get_link(nd); |
742 | kfree(nd_get_link(nd)); | 748 | if (!IS_ERR(buf)) { |
749 | /* Free the char* */ | ||
750 | kfree(buf); | ||
751 | } | ||
743 | } | 752 | } |
744 | 753 | ||
745 | /** | 754 | /** |
@@ -772,18 +781,23 @@ upper_size_to_lower_size(struct ecryptfs_crypt_stat *crypt_stat, | |||
772 | } | 781 | } |
773 | 782 | ||
774 | /** | 783 | /** |
775 | * ecryptfs_truncate | 784 | * truncate_upper |
776 | * @dentry: The ecryptfs layer dentry | 785 | * @dentry: The ecryptfs layer dentry |
777 | * @new_length: The length to expand the file to | 786 | * @ia: Address of the ecryptfs inode's attributes |
787 | * @lower_ia: Address of the lower inode's attributes | ||
778 | * | 788 | * |
779 | * Function to handle truncations modifying the size of the file. Note | 789 | * Function to handle truncations modifying the size of the file. Note |
780 | * that the file sizes are interpolated. When expanding, we are simply | 790 | * that the file sizes are interpolated. When expanding, we are simply |
781 | * writing strings of 0's out. When truncating, we need to modify the | 791 | * writing strings of 0's out. When truncating, we truncate the upper |
782 | * underlying file size according to the page index interpolations. | 792 | * inode and update the lower_ia according to the page index |
793 | * interpolations. If ATTR_SIZE is set in lower_ia->ia_valid upon return, | ||
794 | * the caller must use lower_ia in a call to notify_change() to perform | ||
795 | * the truncation of the lower inode. | ||
783 | * | 796 | * |
784 | * Returns zero on success; non-zero otherwise | 797 | * Returns zero on success; non-zero otherwise |
785 | */ | 798 | */ |
786 | int ecryptfs_truncate(struct dentry *dentry, loff_t new_length) | 799 | static int truncate_upper(struct dentry *dentry, struct iattr *ia, |
800 | struct iattr *lower_ia) | ||
787 | { | 801 | { |
788 | int rc = 0; | 802 | int rc = 0; |
789 | struct inode *inode = dentry->d_inode; | 803 | struct inode *inode = dentry->d_inode; |
@@ -794,8 +808,10 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length) | |||
794 | loff_t lower_size_before_truncate; | 808 | loff_t lower_size_before_truncate; |
795 | loff_t lower_size_after_truncate; | 809 | loff_t lower_size_after_truncate; |
796 | 810 | ||
797 | if (unlikely((new_length == i_size))) | 811 | if (unlikely((ia->ia_size == i_size))) { |
812 | lower_ia->ia_valid &= ~ATTR_SIZE; | ||
798 | goto out; | 813 | goto out; |
814 | } | ||
799 | crypt_stat = &ecryptfs_inode_to_private(dentry->d_inode)->crypt_stat; | 815 | crypt_stat = &ecryptfs_inode_to_private(dentry->d_inode)->crypt_stat; |
800 | /* Set up a fake ecryptfs file, this is used to interface with | 816 | /* Set up a fake ecryptfs file, this is used to interface with |
801 | * the file in the underlying filesystem so that the | 817 | * the file in the underlying filesystem so that the |
@@ -815,28 +831,30 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length) | |||
815 | &fake_ecryptfs_file, | 831 | &fake_ecryptfs_file, |
816 | ecryptfs_inode_to_private(dentry->d_inode)->lower_file); | 832 | ecryptfs_inode_to_private(dentry->d_inode)->lower_file); |
817 | /* Switch on growing or shrinking file */ | 833 | /* Switch on growing or shrinking file */ |
818 | if (new_length > i_size) { | 834 | if (ia->ia_size > i_size) { |
819 | char zero[] = { 0x00 }; | 835 | char zero[] = { 0x00 }; |
820 | 836 | ||
837 | lower_ia->ia_valid &= ~ATTR_SIZE; | ||
821 | /* Write a single 0 at the last position of the file; | 838 | /* Write a single 0 at the last position of the file; |
822 | * this triggers code that will fill in 0's throughout | 839 | * this triggers code that will fill in 0's throughout |
823 | * the intermediate portion of the previous end of the | 840 | * the intermediate portion of the previous end of the |
824 | * file and the new and of the file */ | 841 | * file and the new and of the file */ |
825 | rc = ecryptfs_write(&fake_ecryptfs_file, zero, | 842 | rc = ecryptfs_write(&fake_ecryptfs_file, zero, |
826 | (new_length - 1), 1); | 843 | (ia->ia_size - 1), 1); |
827 | } else { /* new_length < i_size_read(inode) */ | 844 | } else { /* ia->ia_size < i_size_read(inode) */ |
828 | /* We're chopping off all the pages down do the page | 845 | /* We're chopping off all the pages down to the page |
829 | * in which new_length is located. Fill in the end of | 846 | * in which ia->ia_size is located. Fill in the end of |
830 | * that page from (new_length & ~PAGE_CACHE_MASK) to | 847 | * that page from (ia->ia_size & ~PAGE_CACHE_MASK) to |
831 | * PAGE_CACHE_SIZE with zeros. */ | 848 | * PAGE_CACHE_SIZE with zeros. */ |
832 | size_t num_zeros = (PAGE_CACHE_SIZE | 849 | size_t num_zeros = (PAGE_CACHE_SIZE |
833 | - (new_length & ~PAGE_CACHE_MASK)); | 850 | - (ia->ia_size & ~PAGE_CACHE_MASK)); |
834 | 851 | ||
835 | if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) { | 852 | if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) { |
836 | rc = vmtruncate(inode, new_length); | 853 | rc = vmtruncate(inode, ia->ia_size); |
837 | if (rc) | 854 | if (rc) |
838 | goto out_free; | 855 | goto out_free; |
839 | rc = vmtruncate(lower_dentry->d_inode, new_length); | 856 | lower_ia->ia_size = ia->ia_size; |
857 | lower_ia->ia_valid |= ATTR_SIZE; | ||
840 | goto out_free; | 858 | goto out_free; |
841 | } | 859 | } |
842 | if (num_zeros) { | 860 | if (num_zeros) { |
@@ -848,7 +866,7 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length) | |||
848 | goto out_free; | 866 | goto out_free; |
849 | } | 867 | } |
850 | rc = ecryptfs_write(&fake_ecryptfs_file, zeros_virt, | 868 | rc = ecryptfs_write(&fake_ecryptfs_file, zeros_virt, |
851 | new_length, num_zeros); | 869 | ia->ia_size, num_zeros); |
852 | kfree(zeros_virt); | 870 | kfree(zeros_virt); |
853 | if (rc) { | 871 | if (rc) { |
854 | printk(KERN_ERR "Error attempting to zero out " | 872 | printk(KERN_ERR "Error attempting to zero out " |
@@ -857,7 +875,7 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length) | |||
857 | goto out_free; | 875 | goto out_free; |
858 | } | 876 | } |
859 | } | 877 | } |
860 | vmtruncate(inode, new_length); | 878 | vmtruncate(inode, ia->ia_size); |
861 | rc = ecryptfs_write_inode_size_to_metadata(inode); | 879 | rc = ecryptfs_write_inode_size_to_metadata(inode); |
862 | if (rc) { | 880 | if (rc) { |
863 | printk(KERN_ERR "Problem with " | 881 | printk(KERN_ERR "Problem with " |
@@ -870,10 +888,12 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length) | |||
870 | lower_size_before_truncate = | 888 | lower_size_before_truncate = |
871 | upper_size_to_lower_size(crypt_stat, i_size); | 889 | upper_size_to_lower_size(crypt_stat, i_size); |
872 | lower_size_after_truncate = | 890 | lower_size_after_truncate = |
873 | upper_size_to_lower_size(crypt_stat, new_length); | 891 | upper_size_to_lower_size(crypt_stat, ia->ia_size); |
874 | if (lower_size_after_truncate < lower_size_before_truncate) | 892 | if (lower_size_after_truncate < lower_size_before_truncate) { |
875 | vmtruncate(lower_dentry->d_inode, | 893 | lower_ia->ia_size = lower_size_after_truncate; |
876 | lower_size_after_truncate); | 894 | lower_ia->ia_valid |= ATTR_SIZE; |
895 | } else | ||
896 | lower_ia->ia_valid &= ~ATTR_SIZE; | ||
877 | } | 897 | } |
878 | out_free: | 898 | out_free: |
879 | if (ecryptfs_file_to_private(&fake_ecryptfs_file)) | 899 | if (ecryptfs_file_to_private(&fake_ecryptfs_file)) |
@@ -883,6 +903,33 @@ out: | |||
883 | return rc; | 903 | return rc; |
884 | } | 904 | } |
885 | 905 | ||
906 | /** | ||
907 | * ecryptfs_truncate | ||
908 | * @dentry: The ecryptfs layer dentry | ||
909 | * @new_length: The length to expand the file to | ||
910 | * | ||
911 | * Simple function that handles the truncation of an eCryptfs inode and | ||
912 | * its corresponding lower inode. | ||
913 | * | ||
914 | * Returns zero on success; non-zero otherwise | ||
915 | */ | ||
916 | int ecryptfs_truncate(struct dentry *dentry, loff_t new_length) | ||
917 | { | ||
918 | struct iattr ia = { .ia_valid = ATTR_SIZE, .ia_size = new_length }; | ||
919 | struct iattr lower_ia = { .ia_valid = 0 }; | ||
920 | int rc; | ||
921 | |||
922 | rc = truncate_upper(dentry, &ia, &lower_ia); | ||
923 | if (!rc && lower_ia.ia_valid & ATTR_SIZE) { | ||
924 | struct dentry *lower_dentry = ecryptfs_dentry_to_lower(dentry); | ||
925 | |||
926 | mutex_lock(&lower_dentry->d_inode->i_mutex); | ||
927 | rc = notify_change(lower_dentry, &lower_ia); | ||
928 | mutex_unlock(&lower_dentry->d_inode->i_mutex); | ||
929 | } | ||
930 | return rc; | ||
931 | } | ||
932 | |||
886 | static int | 933 | static int |
887 | ecryptfs_permission(struct inode *inode, int mask) | 934 | ecryptfs_permission(struct inode *inode, int mask) |
888 | { | 935 | { |
@@ -905,6 +952,7 @@ static int ecryptfs_setattr(struct dentry *dentry, struct iattr *ia) | |||
905 | { | 952 | { |
906 | int rc = 0; | 953 | int rc = 0; |
907 | struct dentry *lower_dentry; | 954 | struct dentry *lower_dentry; |
955 | struct iattr lower_ia; | ||
908 | struct inode *inode; | 956 | struct inode *inode; |
909 | struct inode *lower_inode; | 957 | struct inode *lower_inode; |
910 | struct ecryptfs_crypt_stat *crypt_stat; | 958 | struct ecryptfs_crypt_stat *crypt_stat; |
@@ -943,15 +991,11 @@ static int ecryptfs_setattr(struct dentry *dentry, struct iattr *ia) | |||
943 | } | 991 | } |
944 | } | 992 | } |
945 | mutex_unlock(&crypt_stat->cs_mutex); | 993 | mutex_unlock(&crypt_stat->cs_mutex); |
994 | memcpy(&lower_ia, ia, sizeof(lower_ia)); | ||
995 | if (ia->ia_valid & ATTR_FILE) | ||
996 | lower_ia.ia_file = ecryptfs_file_to_lower(ia->ia_file); | ||
946 | if (ia->ia_valid & ATTR_SIZE) { | 997 | if (ia->ia_valid & ATTR_SIZE) { |
947 | ecryptfs_printk(KERN_DEBUG, | 998 | rc = truncate_upper(dentry, ia, &lower_ia); |
948 | "ia->ia_valid = [0x%x] ATTR_SIZE" " = [0x%x]\n", | ||
949 | ia->ia_valid, ATTR_SIZE); | ||
950 | rc = ecryptfs_truncate(dentry, ia->ia_size); | ||
951 | /* ecryptfs_truncate handles resizing of the lower file */ | ||
952 | ia->ia_valid &= ~ATTR_SIZE; | ||
953 | ecryptfs_printk(KERN_DEBUG, "ia->ia_valid = [%x]\n", | ||
954 | ia->ia_valid); | ||
955 | if (rc < 0) | 999 | if (rc < 0) |
956 | goto out; | 1000 | goto out; |
957 | } | 1001 | } |
@@ -960,17 +1004,32 @@ static int ecryptfs_setattr(struct dentry *dentry, struct iattr *ia) | |||
960 | * mode change is for clearing setuid/setgid bits. Allow lower fs | 1004 | * mode change is for clearing setuid/setgid bits. Allow lower fs |
961 | * to interpret this in its own way. | 1005 | * to interpret this in its own way. |
962 | */ | 1006 | */ |
963 | if (ia->ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID)) | 1007 | if (lower_ia.ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID)) |
964 | ia->ia_valid &= ~ATTR_MODE; | 1008 | lower_ia.ia_valid &= ~ATTR_MODE; |
965 | 1009 | ||
966 | mutex_lock(&lower_dentry->d_inode->i_mutex); | 1010 | mutex_lock(&lower_dentry->d_inode->i_mutex); |
967 | rc = notify_change(lower_dentry, ia); | 1011 | rc = notify_change(lower_dentry, &lower_ia); |
968 | mutex_unlock(&lower_dentry->d_inode->i_mutex); | 1012 | mutex_unlock(&lower_dentry->d_inode->i_mutex); |
969 | out: | 1013 | out: |
970 | fsstack_copy_attr_all(inode, lower_inode); | 1014 | fsstack_copy_attr_all(inode, lower_inode); |
971 | return rc; | 1015 | return rc; |
972 | } | 1016 | } |
973 | 1017 | ||
1018 | int ecryptfs_getattr(struct vfsmount *mnt, struct dentry *dentry, | ||
1019 | struct kstat *stat) | ||
1020 | { | ||
1021 | struct kstat lower_stat; | ||
1022 | int rc; | ||
1023 | |||
1024 | rc = vfs_getattr(ecryptfs_dentry_to_lower_mnt(dentry), | ||
1025 | ecryptfs_dentry_to_lower(dentry), &lower_stat); | ||
1026 | if (!rc) { | ||
1027 | generic_fillattr(dentry->d_inode, stat); | ||
1028 | stat->blocks = lower_stat.blocks; | ||
1029 | } | ||
1030 | return rc; | ||
1031 | } | ||
1032 | |||
974 | int | 1033 | int |
975 | ecryptfs_setxattr(struct dentry *dentry, const char *name, const void *value, | 1034 | ecryptfs_setxattr(struct dentry *dentry, const char *name, const void *value, |
976 | size_t size, int flags) | 1035 | size_t size, int flags) |
@@ -1100,6 +1159,7 @@ const struct inode_operations ecryptfs_dir_iops = { | |||
1100 | const struct inode_operations ecryptfs_main_iops = { | 1159 | const struct inode_operations ecryptfs_main_iops = { |
1101 | .permission = ecryptfs_permission, | 1160 | .permission = ecryptfs_permission, |
1102 | .setattr = ecryptfs_setattr, | 1161 | .setattr = ecryptfs_setattr, |
1162 | .getattr = ecryptfs_getattr, | ||
1103 | .setxattr = ecryptfs_setxattr, | 1163 | .setxattr = ecryptfs_setxattr, |
1104 | .getxattr = ecryptfs_getxattr, | 1164 | .getxattr = ecryptfs_getxattr, |
1105 | .listxattr = ecryptfs_listxattr, | 1165 | .listxattr = ecryptfs_listxattr, |
diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c index 567bc4b9f70a..ea2f92101dfe 100644 --- a/fs/ecryptfs/main.c +++ b/fs/ecryptfs/main.c | |||
@@ -585,8 +585,8 @@ out: | |||
585 | * with as much information as it can before needing | 585 | * with as much information as it can before needing |
586 | * the lower filesystem. | 586 | * the lower filesystem. |
587 | * ecryptfs_read_super(): this accesses the lower filesystem and uses | 587 | * ecryptfs_read_super(): this accesses the lower filesystem and uses |
588 | * ecryptfs_interpolate to perform most of the linking | 588 | * ecryptfs_interpose to perform most of the linking |
589 | * ecryptfs_interpolate(): links the lower filesystem into ecryptfs | 589 | * ecryptfs_interpose(): links the lower filesystem into ecryptfs (inode.c) |
590 | */ | 590 | */ |
591 | static int ecryptfs_get_sb(struct file_system_type *fs_type, int flags, | 591 | static int ecryptfs_get_sb(struct file_system_type *fs_type, int flags, |
592 | const char *dev_name, void *raw_data, | 592 | const char *dev_name, void *raw_data, |
diff --git a/fs/eventfd.c b/fs/eventfd.c index d26402ff06ea..7758cc382ef0 100644 --- a/fs/eventfd.c +++ b/fs/eventfd.c | |||
@@ -135,26 +135,71 @@ static unsigned int eventfd_poll(struct file *file, poll_table *wait) | |||
135 | return events; | 135 | return events; |
136 | } | 136 | } |
137 | 137 | ||
138 | static ssize_t eventfd_read(struct file *file, char __user *buf, size_t count, | 138 | static void eventfd_ctx_do_read(struct eventfd_ctx *ctx, __u64 *cnt) |
139 | loff_t *ppos) | 139 | { |
140 | *cnt = (ctx->flags & EFD_SEMAPHORE) ? 1 : ctx->count; | ||
141 | ctx->count -= *cnt; | ||
142 | } | ||
143 | |||
144 | /** | ||
145 | * eventfd_ctx_remove_wait_queue - Read the current counter and removes wait queue. | ||
146 | * @ctx: [in] Pointer to eventfd context. | ||
147 | * @wait: [in] Wait queue to be removed. | ||
148 | * @cnt: [out] Pointer to the 64bit conter value. | ||
149 | * | ||
150 | * Returns zero if successful, or the following error codes: | ||
151 | * | ||
152 | * -EAGAIN : The operation would have blocked. | ||
153 | * | ||
154 | * This is used to atomically remove a wait queue entry from the eventfd wait | ||
155 | * queue head, and read/reset the counter value. | ||
156 | */ | ||
157 | int eventfd_ctx_remove_wait_queue(struct eventfd_ctx *ctx, wait_queue_t *wait, | ||
158 | __u64 *cnt) | ||
159 | { | ||
160 | unsigned long flags; | ||
161 | |||
162 | spin_lock_irqsave(&ctx->wqh.lock, flags); | ||
163 | eventfd_ctx_do_read(ctx, cnt); | ||
164 | __remove_wait_queue(&ctx->wqh, wait); | ||
165 | if (*cnt != 0 && waitqueue_active(&ctx->wqh)) | ||
166 | wake_up_locked_poll(&ctx->wqh, POLLOUT); | ||
167 | spin_unlock_irqrestore(&ctx->wqh.lock, flags); | ||
168 | |||
169 | return *cnt != 0 ? 0 : -EAGAIN; | ||
170 | } | ||
171 | EXPORT_SYMBOL_GPL(eventfd_ctx_remove_wait_queue); | ||
172 | |||
173 | /** | ||
174 | * eventfd_ctx_read - Reads the eventfd counter or wait if it is zero. | ||
175 | * @ctx: [in] Pointer to eventfd context. | ||
176 | * @no_wait: [in] Different from zero if the operation should not block. | ||
177 | * @cnt: [out] Pointer to the 64bit conter value. | ||
178 | * | ||
179 | * Returns zero if successful, or the following error codes: | ||
180 | * | ||
181 | * -EAGAIN : The operation would have blocked but @no_wait was nonzero. | ||
182 | * -ERESTARTSYS : A signal interrupted the wait operation. | ||
183 | * | ||
184 | * If @no_wait is zero, the function might sleep until the eventfd internal | ||
185 | * counter becomes greater than zero. | ||
186 | */ | ||
187 | ssize_t eventfd_ctx_read(struct eventfd_ctx *ctx, int no_wait, __u64 *cnt) | ||
140 | { | 188 | { |
141 | struct eventfd_ctx *ctx = file->private_data; | ||
142 | ssize_t res; | 189 | ssize_t res; |
143 | __u64 ucnt = 0; | ||
144 | DECLARE_WAITQUEUE(wait, current); | 190 | DECLARE_WAITQUEUE(wait, current); |
145 | 191 | ||
146 | if (count < sizeof(ucnt)) | ||
147 | return -EINVAL; | ||
148 | spin_lock_irq(&ctx->wqh.lock); | 192 | spin_lock_irq(&ctx->wqh.lock); |
193 | *cnt = 0; | ||
149 | res = -EAGAIN; | 194 | res = -EAGAIN; |
150 | if (ctx->count > 0) | 195 | if (ctx->count > 0) |
151 | res = sizeof(ucnt); | 196 | res = 0; |
152 | else if (!(file->f_flags & O_NONBLOCK)) { | 197 | else if (!no_wait) { |
153 | __add_wait_queue(&ctx->wqh, &wait); | 198 | __add_wait_queue(&ctx->wqh, &wait); |
154 | for (res = 0;;) { | 199 | for (;;) { |
155 | set_current_state(TASK_INTERRUPTIBLE); | 200 | set_current_state(TASK_INTERRUPTIBLE); |
156 | if (ctx->count > 0) { | 201 | if (ctx->count > 0) { |
157 | res = sizeof(ucnt); | 202 | res = 0; |
158 | break; | 203 | break; |
159 | } | 204 | } |
160 | if (signal_pending(current)) { | 205 | if (signal_pending(current)) { |
@@ -168,18 +213,32 @@ static ssize_t eventfd_read(struct file *file, char __user *buf, size_t count, | |||
168 | __remove_wait_queue(&ctx->wqh, &wait); | 213 | __remove_wait_queue(&ctx->wqh, &wait); |
169 | __set_current_state(TASK_RUNNING); | 214 | __set_current_state(TASK_RUNNING); |
170 | } | 215 | } |
171 | if (likely(res > 0)) { | 216 | if (likely(res == 0)) { |
172 | ucnt = (ctx->flags & EFD_SEMAPHORE) ? 1 : ctx->count; | 217 | eventfd_ctx_do_read(ctx, cnt); |
173 | ctx->count -= ucnt; | ||
174 | if (waitqueue_active(&ctx->wqh)) | 218 | if (waitqueue_active(&ctx->wqh)) |
175 | wake_up_locked_poll(&ctx->wqh, POLLOUT); | 219 | wake_up_locked_poll(&ctx->wqh, POLLOUT); |
176 | } | 220 | } |
177 | spin_unlock_irq(&ctx->wqh.lock); | 221 | spin_unlock_irq(&ctx->wqh.lock); |
178 | if (res > 0 && put_user(ucnt, (__u64 __user *) buf)) | ||
179 | return -EFAULT; | ||
180 | 222 | ||
181 | return res; | 223 | return res; |
182 | } | 224 | } |
225 | EXPORT_SYMBOL_GPL(eventfd_ctx_read); | ||
226 | |||
227 | static ssize_t eventfd_read(struct file *file, char __user *buf, size_t count, | ||
228 | loff_t *ppos) | ||
229 | { | ||
230 | struct eventfd_ctx *ctx = file->private_data; | ||
231 | ssize_t res; | ||
232 | __u64 cnt; | ||
233 | |||
234 | if (count < sizeof(cnt)) | ||
235 | return -EINVAL; | ||
236 | res = eventfd_ctx_read(ctx, file->f_flags & O_NONBLOCK, &cnt); | ||
237 | if (res < 0) | ||
238 | return res; | ||
239 | |||
240 | return put_user(cnt, (__u64 __user *) buf) ? -EFAULT : sizeof(cnt); | ||
241 | } | ||
183 | 242 | ||
184 | static ssize_t eventfd_write(struct file *file, const char __user *buf, size_t count, | 243 | static ssize_t eventfd_write(struct file *file, const char __user *buf, size_t count, |
185 | loff_t *ppos) | 244 | loff_t *ppos) |
@@ -941,9 +941,7 @@ void set_task_comm(struct task_struct *tsk, char *buf) | |||
941 | 941 | ||
942 | int flush_old_exec(struct linux_binprm * bprm) | 942 | int flush_old_exec(struct linux_binprm * bprm) |
943 | { | 943 | { |
944 | char * name; | 944 | int retval; |
945 | int i, ch, retval; | ||
946 | char tcomm[sizeof(current->comm)]; | ||
947 | 945 | ||
948 | /* | 946 | /* |
949 | * Make sure we have a private signal table and that | 947 | * Make sure we have a private signal table and that |
@@ -963,6 +961,20 @@ int flush_old_exec(struct linux_binprm * bprm) | |||
963 | goto out; | 961 | goto out; |
964 | 962 | ||
965 | bprm->mm = NULL; /* We're using it now */ | 963 | bprm->mm = NULL; /* We're using it now */ |
964 | return 0; | ||
965 | |||
966 | out: | ||
967 | return retval; | ||
968 | } | ||
969 | EXPORT_SYMBOL(flush_old_exec); | ||
970 | |||
971 | void setup_new_exec(struct linux_binprm * bprm) | ||
972 | { | ||
973 | int i, ch; | ||
974 | char * name; | ||
975 | char tcomm[sizeof(current->comm)]; | ||
976 | |||
977 | arch_pick_mmap_layout(current->mm); | ||
966 | 978 | ||
967 | /* This is the point of no return */ | 979 | /* This is the point of no return */ |
968 | current->sas_ss_sp = current->sas_ss_size = 0; | 980 | current->sas_ss_sp = current->sas_ss_size = 0; |
@@ -1019,14 +1031,8 @@ int flush_old_exec(struct linux_binprm * bprm) | |||
1019 | 1031 | ||
1020 | flush_signal_handlers(current, 0); | 1032 | flush_signal_handlers(current, 0); |
1021 | flush_old_files(current->files); | 1033 | flush_old_files(current->files); |
1022 | |||
1023 | return 0; | ||
1024 | |||
1025 | out: | ||
1026 | return retval; | ||
1027 | } | 1034 | } |
1028 | 1035 | EXPORT_SYMBOL(setup_new_exec); | |
1029 | EXPORT_SYMBOL(flush_old_exec); | ||
1030 | 1036 | ||
1031 | /* | 1037 | /* |
1032 | * Prepare credentials and lock ->cred_guard_mutex. | 1038 | * Prepare credentials and lock ->cred_guard_mutex. |
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index af7b62699ea9..874d169a193e 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h | |||
@@ -361,14 +361,11 @@ struct ext4_new_group_data { | |||
361 | so set the magic i_delalloc_reserve_flag after taking the | 361 | so set the magic i_delalloc_reserve_flag after taking the |
362 | inode allocation semaphore for */ | 362 | inode allocation semaphore for */ |
363 | #define EXT4_GET_BLOCKS_DELALLOC_RESERVE 0x0004 | 363 | #define EXT4_GET_BLOCKS_DELALLOC_RESERVE 0x0004 |
364 | /* Call ext4_da_update_reserve_space() after successfully | ||
365 | allocating the blocks */ | ||
366 | #define EXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE 0x0008 | ||
367 | /* caller is from the direct IO path, request to creation of an | 364 | /* caller is from the direct IO path, request to creation of an |
368 | unitialized extents if not allocated, split the uninitialized | 365 | unitialized extents if not allocated, split the uninitialized |
369 | extent if blocks has been preallocated already*/ | 366 | extent if blocks has been preallocated already*/ |
370 | #define EXT4_GET_BLOCKS_DIO 0x0010 | 367 | #define EXT4_GET_BLOCKS_DIO 0x0008 |
371 | #define EXT4_GET_BLOCKS_CONVERT 0x0020 | 368 | #define EXT4_GET_BLOCKS_CONVERT 0x0010 |
372 | #define EXT4_GET_BLOCKS_DIO_CREATE_EXT (EXT4_GET_BLOCKS_DIO|\ | 369 | #define EXT4_GET_BLOCKS_DIO_CREATE_EXT (EXT4_GET_BLOCKS_DIO|\ |
373 | EXT4_GET_BLOCKS_CREATE_UNINIT_EXT) | 370 | EXT4_GET_BLOCKS_CREATE_UNINIT_EXT) |
374 | /* Convert extent to initialized after direct IO complete */ | 371 | /* Convert extent to initialized after direct IO complete */ |
@@ -1443,6 +1440,8 @@ extern int ext4_block_truncate_page(handle_t *handle, | |||
1443 | extern int ext4_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf); | 1440 | extern int ext4_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf); |
1444 | extern qsize_t *ext4_get_reserved_space(struct inode *inode); | 1441 | extern qsize_t *ext4_get_reserved_space(struct inode *inode); |
1445 | extern int flush_aio_dio_completed_IO(struct inode *inode); | 1442 | extern int flush_aio_dio_completed_IO(struct inode *inode); |
1443 | extern void ext4_da_update_reserve_space(struct inode *inode, | ||
1444 | int used, int quota_claim); | ||
1446 | /* ioctl.c */ | 1445 | /* ioctl.c */ |
1447 | extern long ext4_ioctl(struct file *, unsigned int, unsigned long); | 1446 | extern long ext4_ioctl(struct file *, unsigned int, unsigned long); |
1448 | extern long ext4_compat_ioctl(struct file *, unsigned int, unsigned long); | 1447 | extern long ext4_compat_ioctl(struct file *, unsigned int, unsigned long); |
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 7d7b74e94687..765a4826b118 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c | |||
@@ -3132,7 +3132,19 @@ out: | |||
3132 | unmap_underlying_metadata_blocks(inode->i_sb->s_bdev, | 3132 | unmap_underlying_metadata_blocks(inode->i_sb->s_bdev, |
3133 | newblock + max_blocks, | 3133 | newblock + max_blocks, |
3134 | allocated - max_blocks); | 3134 | allocated - max_blocks); |
3135 | allocated = max_blocks; | ||
3135 | } | 3136 | } |
3137 | |||
3138 | /* | ||
3139 | * If we have done fallocate with the offset that is already | ||
3140 | * delayed allocated, we would have block reservation | ||
3141 | * and quota reservation done in the delayed write path. | ||
3142 | * But fallocate would have already updated quota and block | ||
3143 | * count for this offset. So cancel these reservation | ||
3144 | */ | ||
3145 | if (flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE) | ||
3146 | ext4_da_update_reserve_space(inode, allocated, 0); | ||
3147 | |||
3136 | map_out: | 3148 | map_out: |
3137 | set_buffer_mapped(bh_result); | 3149 | set_buffer_mapped(bh_result); |
3138 | out1: | 3150 | out1: |
@@ -3368,9 +3380,18 @@ int ext4_ext_get_blocks(handle_t *handle, struct inode *inode, | |||
3368 | /* previous routine could use block we allocated */ | 3380 | /* previous routine could use block we allocated */ |
3369 | newblock = ext_pblock(&newex); | 3381 | newblock = ext_pblock(&newex); |
3370 | allocated = ext4_ext_get_actual_len(&newex); | 3382 | allocated = ext4_ext_get_actual_len(&newex); |
3383 | if (allocated > max_blocks) | ||
3384 | allocated = max_blocks; | ||
3371 | set_buffer_new(bh_result); | 3385 | set_buffer_new(bh_result); |
3372 | 3386 | ||
3373 | /* | 3387 | /* |
3388 | * Update reserved blocks/metadata blocks after successful | ||
3389 | * block allocation which had been deferred till now. | ||
3390 | */ | ||
3391 | if (flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE) | ||
3392 | ext4_da_update_reserve_space(inode, allocated, 1); | ||
3393 | |||
3394 | /* | ||
3374 | * Cache the extent and update transaction to commit on fdatasync only | 3395 | * Cache the extent and update transaction to commit on fdatasync only |
3375 | * when it is _not_ an uninitialized extent. | 3396 | * when it is _not_ an uninitialized extent. |
3376 | */ | 3397 | */ |
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index c818972c8302..e11952404e02 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
@@ -1053,11 +1053,12 @@ static int ext4_calc_metadata_amount(struct inode *inode, sector_t lblock) | |||
1053 | * Called with i_data_sem down, which is important since we can call | 1053 | * Called with i_data_sem down, which is important since we can call |
1054 | * ext4_discard_preallocations() from here. | 1054 | * ext4_discard_preallocations() from here. |
1055 | */ | 1055 | */ |
1056 | static void ext4_da_update_reserve_space(struct inode *inode, int used) | 1056 | void ext4_da_update_reserve_space(struct inode *inode, |
1057 | int used, int quota_claim) | ||
1057 | { | 1058 | { |
1058 | struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); | 1059 | struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); |
1059 | struct ext4_inode_info *ei = EXT4_I(inode); | 1060 | struct ext4_inode_info *ei = EXT4_I(inode); |
1060 | int mdb_free = 0; | 1061 | int mdb_free = 0, allocated_meta_blocks = 0; |
1061 | 1062 | ||
1062 | spin_lock(&ei->i_block_reservation_lock); | 1063 | spin_lock(&ei->i_block_reservation_lock); |
1063 | if (unlikely(used > ei->i_reserved_data_blocks)) { | 1064 | if (unlikely(used > ei->i_reserved_data_blocks)) { |
@@ -1073,6 +1074,7 @@ static void ext4_da_update_reserve_space(struct inode *inode, int used) | |||
1073 | ei->i_reserved_data_blocks -= used; | 1074 | ei->i_reserved_data_blocks -= used; |
1074 | used += ei->i_allocated_meta_blocks; | 1075 | used += ei->i_allocated_meta_blocks; |
1075 | ei->i_reserved_meta_blocks -= ei->i_allocated_meta_blocks; | 1076 | ei->i_reserved_meta_blocks -= ei->i_allocated_meta_blocks; |
1077 | allocated_meta_blocks = ei->i_allocated_meta_blocks; | ||
1076 | ei->i_allocated_meta_blocks = 0; | 1078 | ei->i_allocated_meta_blocks = 0; |
1077 | percpu_counter_sub(&sbi->s_dirtyblocks_counter, used); | 1079 | percpu_counter_sub(&sbi->s_dirtyblocks_counter, used); |
1078 | 1080 | ||
@@ -1090,9 +1092,23 @@ static void ext4_da_update_reserve_space(struct inode *inode, int used) | |||
1090 | spin_unlock(&EXT4_I(inode)->i_block_reservation_lock); | 1092 | spin_unlock(&EXT4_I(inode)->i_block_reservation_lock); |
1091 | 1093 | ||
1092 | /* Update quota subsystem */ | 1094 | /* Update quota subsystem */ |
1093 | vfs_dq_claim_block(inode, used); | 1095 | if (quota_claim) { |
1094 | if (mdb_free) | 1096 | vfs_dq_claim_block(inode, used); |
1095 | vfs_dq_release_reservation_block(inode, mdb_free); | 1097 | if (mdb_free) |
1098 | vfs_dq_release_reservation_block(inode, mdb_free); | ||
1099 | } else { | ||
1100 | /* | ||
1101 | * We did fallocate with an offset that is already delayed | ||
1102 | * allocated. So on delayed allocated writeback we should | ||
1103 | * not update the quota for allocated blocks. But then | ||
1104 | * converting an fallocate region to initialized region would | ||
1105 | * have caused a metadata allocation. So claim quota for | ||
1106 | * that | ||
1107 | */ | ||
1108 | if (allocated_meta_blocks) | ||
1109 | vfs_dq_claim_block(inode, allocated_meta_blocks); | ||
1110 | vfs_dq_release_reservation_block(inode, mdb_free + used); | ||
1111 | } | ||
1096 | 1112 | ||
1097 | /* | 1113 | /* |
1098 | * If we have done all the pending block allocations and if | 1114 | * If we have done all the pending block allocations and if |
@@ -1292,18 +1308,20 @@ int ext4_get_blocks(handle_t *handle, struct inode *inode, sector_t block, | |||
1292 | */ | 1308 | */ |
1293 | EXT4_I(inode)->i_state &= ~EXT4_STATE_EXT_MIGRATE; | 1309 | EXT4_I(inode)->i_state &= ~EXT4_STATE_EXT_MIGRATE; |
1294 | } | 1310 | } |
1295 | } | ||
1296 | 1311 | ||
1312 | /* | ||
1313 | * Update reserved blocks/metadata blocks after successful | ||
1314 | * block allocation which had been deferred till now. We don't | ||
1315 | * support fallocate for non extent files. So we can update | ||
1316 | * reserve space here. | ||
1317 | */ | ||
1318 | if ((retval > 0) && | ||
1319 | (flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE)) | ||
1320 | ext4_da_update_reserve_space(inode, retval, 1); | ||
1321 | } | ||
1297 | if (flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE) | 1322 | if (flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE) |
1298 | EXT4_I(inode)->i_delalloc_reserved_flag = 0; | 1323 | EXT4_I(inode)->i_delalloc_reserved_flag = 0; |
1299 | 1324 | ||
1300 | /* | ||
1301 | * Update reserved blocks/metadata blocks after successful | ||
1302 | * block allocation which had been deferred till now. | ||
1303 | */ | ||
1304 | if ((retval > 0) && (flags & EXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE)) | ||
1305 | ext4_da_update_reserve_space(inode, retval); | ||
1306 | |||
1307 | up_write((&EXT4_I(inode)->i_data_sem)); | 1325 | up_write((&EXT4_I(inode)->i_data_sem)); |
1308 | if (retval > 0 && buffer_mapped(bh)) { | 1326 | if (retval > 0 && buffer_mapped(bh)) { |
1309 | int ret = check_block_validity(inode, "file system " | 1327 | int ret = check_block_validity(inode, "file system " |
@@ -1835,24 +1853,12 @@ repeat: | |||
1835 | * later. Real quota accounting is done at pages writeout | 1853 | * later. Real quota accounting is done at pages writeout |
1836 | * time. | 1854 | * time. |
1837 | */ | 1855 | */ |
1838 | if (vfs_dq_reserve_block(inode, md_needed + 1)) { | 1856 | if (vfs_dq_reserve_block(inode, md_needed + 1)) |
1839 | /* | ||
1840 | * We tend to badly over-estimate the amount of | ||
1841 | * metadata blocks which are needed, so if we have | ||
1842 | * reserved any metadata blocks, try to force out the | ||
1843 | * inode and see if we have any better luck. | ||
1844 | */ | ||
1845 | if (md_reserved && retries++ <= 3) | ||
1846 | goto retry; | ||
1847 | return -EDQUOT; | 1857 | return -EDQUOT; |
1848 | } | ||
1849 | 1858 | ||
1850 | if (ext4_claim_free_blocks(sbi, md_needed + 1)) { | 1859 | if (ext4_claim_free_blocks(sbi, md_needed + 1)) { |
1851 | vfs_dq_release_reservation_block(inode, md_needed + 1); | 1860 | vfs_dq_release_reservation_block(inode, md_needed + 1); |
1852 | if (ext4_should_retry_alloc(inode->i_sb, &retries)) { | 1861 | if (ext4_should_retry_alloc(inode->i_sb, &retries)) { |
1853 | retry: | ||
1854 | if (md_reserved) | ||
1855 | write_inode_now(inode, (retries == 3)); | ||
1856 | yield(); | 1862 | yield(); |
1857 | goto repeat; | 1863 | goto repeat; |
1858 | } | 1864 | } |
@@ -2213,10 +2219,10 @@ static int mpage_da_map_blocks(struct mpage_da_data *mpd) | |||
2213 | * variables are updated after the blocks have been allocated. | 2219 | * variables are updated after the blocks have been allocated. |
2214 | */ | 2220 | */ |
2215 | new.b_state = 0; | 2221 | new.b_state = 0; |
2216 | get_blocks_flags = (EXT4_GET_BLOCKS_CREATE | | 2222 | get_blocks_flags = EXT4_GET_BLOCKS_CREATE; |
2217 | EXT4_GET_BLOCKS_DELALLOC_RESERVE); | ||
2218 | if (mpd->b_state & (1 << BH_Delay)) | 2223 | if (mpd->b_state & (1 << BH_Delay)) |
2219 | get_blocks_flags |= EXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE; | 2224 | get_blocks_flags |= EXT4_GET_BLOCKS_DELALLOC_RESERVE; |
2225 | |||
2220 | blks = ext4_get_blocks(handle, mpd->inode, next, max_blocks, | 2226 | blks = ext4_get_blocks(handle, mpd->inode, next, max_blocks, |
2221 | &new, get_blocks_flags); | 2227 | &new, get_blocks_flags); |
2222 | if (blks < 0) { | 2228 | if (blks < 0) { |
@@ -3032,7 +3038,7 @@ static int ext4_da_write_begin(struct file *file, struct address_space *mapping, | |||
3032 | loff_t pos, unsigned len, unsigned flags, | 3038 | loff_t pos, unsigned len, unsigned flags, |
3033 | struct page **pagep, void **fsdata) | 3039 | struct page **pagep, void **fsdata) |
3034 | { | 3040 | { |
3035 | int ret, retries = 0; | 3041 | int ret, retries = 0, quota_retries = 0; |
3036 | struct page *page; | 3042 | struct page *page; |
3037 | pgoff_t index; | 3043 | pgoff_t index; |
3038 | unsigned from, to; | 3044 | unsigned from, to; |
@@ -3091,6 +3097,22 @@ retry: | |||
3091 | 3097 | ||
3092 | if (ret == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries)) | 3098 | if (ret == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries)) |
3093 | goto retry; | 3099 | goto retry; |
3100 | |||
3101 | if ((ret == -EDQUOT) && | ||
3102 | EXT4_I(inode)->i_reserved_meta_blocks && | ||
3103 | (quota_retries++ < 3)) { | ||
3104 | /* | ||
3105 | * Since we often over-estimate the number of meta | ||
3106 | * data blocks required, we may sometimes get a | ||
3107 | * spurios out of quota error even though there would | ||
3108 | * be enough space once we write the data blocks and | ||
3109 | * find out how many meta data blocks were _really_ | ||
3110 | * required. So try forcing the inode write to see if | ||
3111 | * that helps. | ||
3112 | */ | ||
3113 | write_inode_now(inode, (quota_retries == 3)); | ||
3114 | goto retry; | ||
3115 | } | ||
3094 | out: | 3116 | out: |
3095 | return ret; | 3117 | return ret; |
3096 | } | 3118 | } |
diff --git a/fs/fcntl.c b/fs/fcntl.c index 2cf93ec40a67..5ef953e6f908 100644 --- a/fs/fcntl.c +++ b/fs/fcntl.c | |||
@@ -199,7 +199,9 @@ static int setfl(int fd, struct file * filp, unsigned long arg) | |||
199 | static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, | 199 | static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, |
200 | int force) | 200 | int force) |
201 | { | 201 | { |
202 | write_lock_irq(&filp->f_owner.lock); | 202 | unsigned long flags; |
203 | |||
204 | write_lock_irqsave(&filp->f_owner.lock, flags); | ||
203 | if (force || !filp->f_owner.pid) { | 205 | if (force || !filp->f_owner.pid) { |
204 | put_pid(filp->f_owner.pid); | 206 | put_pid(filp->f_owner.pid); |
205 | filp->f_owner.pid = get_pid(pid); | 207 | filp->f_owner.pid = get_pid(pid); |
@@ -211,7 +213,7 @@ static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, | |||
211 | filp->f_owner.euid = cred->euid; | 213 | filp->f_owner.euid = cred->euid; |
212 | } | 214 | } |
213 | } | 215 | } |
214 | write_unlock_irq(&filp->f_owner.lock); | 216 | write_unlock_irqrestore(&filp->f_owner.lock, flags); |
215 | } | 217 | } |
216 | 218 | ||
217 | int __f_setown(struct file *filp, struct pid *pid, enum pid_type type, | 219 | int __f_setown(struct file *filp, struct pid *pid, enum pid_type type, |
@@ -618,60 +620,90 @@ static DEFINE_RWLOCK(fasync_lock); | |||
618 | static struct kmem_cache *fasync_cache __read_mostly; | 620 | static struct kmem_cache *fasync_cache __read_mostly; |
619 | 621 | ||
620 | /* | 622 | /* |
621 | * fasync_helper() is used by almost all character device drivers | 623 | * Remove a fasync entry. If successfully removed, return |
622 | * to set up the fasync queue. It returns negative on error, 0 if it did | 624 | * positive and clear the FASYNC flag. If no entry exists, |
623 | * no changes and positive if it added/deleted the entry. | 625 | * do nothing and return 0. |
626 | * | ||
627 | * NOTE! It is very important that the FASYNC flag always | ||
628 | * match the state "is the filp on a fasync list". | ||
629 | * | ||
630 | * We always take the 'filp->f_lock', in since fasync_lock | ||
631 | * needs to be irq-safe. | ||
624 | */ | 632 | */ |
625 | int fasync_helper(int fd, struct file * filp, int on, struct fasync_struct **fapp) | 633 | static int fasync_remove_entry(struct file *filp, struct fasync_struct **fapp) |
626 | { | 634 | { |
627 | struct fasync_struct *fa, **fp; | 635 | struct fasync_struct *fa, **fp; |
628 | struct fasync_struct *new = NULL; | ||
629 | int result = 0; | 636 | int result = 0; |
630 | 637 | ||
631 | if (on) { | 638 | spin_lock(&filp->f_lock); |
632 | new = kmem_cache_alloc(fasync_cache, GFP_KERNEL); | 639 | write_lock_irq(&fasync_lock); |
633 | if (!new) | 640 | for (fp = fapp; (fa = *fp) != NULL; fp = &fa->fa_next) { |
634 | return -ENOMEM; | 641 | if (fa->fa_file != filp) |
642 | continue; | ||
643 | *fp = fa->fa_next; | ||
644 | kmem_cache_free(fasync_cache, fa); | ||
645 | filp->f_flags &= ~FASYNC; | ||
646 | result = 1; | ||
647 | break; | ||
635 | } | 648 | } |
649 | write_unlock_irq(&fasync_lock); | ||
650 | spin_unlock(&filp->f_lock); | ||
651 | return result; | ||
652 | } | ||
653 | |||
654 | /* | ||
655 | * Add a fasync entry. Return negative on error, positive if | ||
656 | * added, and zero if did nothing but change an existing one. | ||
657 | * | ||
658 | * NOTE! It is very important that the FASYNC flag always | ||
659 | * match the state "is the filp on a fasync list". | ||
660 | */ | ||
661 | static int fasync_add_entry(int fd, struct file *filp, struct fasync_struct **fapp) | ||
662 | { | ||
663 | struct fasync_struct *new, *fa, **fp; | ||
664 | int result = 0; | ||
665 | |||
666 | new = kmem_cache_alloc(fasync_cache, GFP_KERNEL); | ||
667 | if (!new) | ||
668 | return -ENOMEM; | ||
636 | 669 | ||
637 | /* | ||
638 | * We need to take f_lock first since it's not an IRQ-safe | ||
639 | * lock. | ||
640 | */ | ||
641 | spin_lock(&filp->f_lock); | 670 | spin_lock(&filp->f_lock); |
642 | write_lock_irq(&fasync_lock); | 671 | write_lock_irq(&fasync_lock); |
643 | for (fp = fapp; (fa = *fp) != NULL; fp = &fa->fa_next) { | 672 | for (fp = fapp; (fa = *fp) != NULL; fp = &fa->fa_next) { |
644 | if (fa->fa_file == filp) { | 673 | if (fa->fa_file != filp) |
645 | if(on) { | 674 | continue; |
646 | fa->fa_fd = fd; | 675 | fa->fa_fd = fd; |
647 | kmem_cache_free(fasync_cache, new); | 676 | kmem_cache_free(fasync_cache, new); |
648 | } else { | 677 | goto out; |
649 | *fp = fa->fa_next; | ||
650 | kmem_cache_free(fasync_cache, fa); | ||
651 | result = 1; | ||
652 | } | ||
653 | goto out; | ||
654 | } | ||
655 | } | 678 | } |
656 | 679 | ||
657 | if (on) { | 680 | new->magic = FASYNC_MAGIC; |
658 | new->magic = FASYNC_MAGIC; | 681 | new->fa_file = filp; |
659 | new->fa_file = filp; | 682 | new->fa_fd = fd; |
660 | new->fa_fd = fd; | 683 | new->fa_next = *fapp; |
661 | new->fa_next = *fapp; | 684 | *fapp = new; |
662 | *fapp = new; | 685 | result = 1; |
663 | result = 1; | 686 | filp->f_flags |= FASYNC; |
664 | } | 687 | |
665 | out: | 688 | out: |
666 | if (on) | ||
667 | filp->f_flags |= FASYNC; | ||
668 | else | ||
669 | filp->f_flags &= ~FASYNC; | ||
670 | write_unlock_irq(&fasync_lock); | 689 | write_unlock_irq(&fasync_lock); |
671 | spin_unlock(&filp->f_lock); | 690 | spin_unlock(&filp->f_lock); |
672 | return result; | 691 | return result; |
673 | } | 692 | } |
674 | 693 | ||
694 | /* | ||
695 | * fasync_helper() is used by almost all character device drivers | ||
696 | * to set up the fasync queue, and for regular files by the file | ||
697 | * lease code. It returns negative on error, 0 if it did no changes | ||
698 | * and positive if it added/deleted the entry. | ||
699 | */ | ||
700 | int fasync_helper(int fd, struct file * filp, int on, struct fasync_struct **fapp) | ||
701 | { | ||
702 | if (!on) | ||
703 | return fasync_remove_entry(filp, fapp); | ||
704 | return fasync_add_entry(fd, filp, fapp); | ||
705 | } | ||
706 | |||
675 | EXPORT_SYMBOL(fasync_helper); | 707 | EXPORT_SYMBOL(fasync_helper); |
676 | 708 | ||
677 | void __kill_fasync(struct fasync_struct *fa, int sig, int band) | 709 | void __kill_fasync(struct fasync_struct *fa, int sig, int band) |
diff --git a/fs/hppfs/hppfs.c b/fs/hppfs/hppfs.c index a5089a6dd67a..7239efc690d8 100644 --- a/fs/hppfs/hppfs.c +++ b/fs/hppfs/hppfs.c | |||
@@ -646,22 +646,27 @@ static const struct super_operations hppfs_sbops = { | |||
646 | static int hppfs_readlink(struct dentry *dentry, char __user *buffer, | 646 | static int hppfs_readlink(struct dentry *dentry, char __user *buffer, |
647 | int buflen) | 647 | int buflen) |
648 | { | 648 | { |
649 | struct dentry *proc_dentry; | 649 | struct dentry *proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry; |
650 | |||
651 | proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry; | ||
652 | return proc_dentry->d_inode->i_op->readlink(proc_dentry, buffer, | 650 | return proc_dentry->d_inode->i_op->readlink(proc_dentry, buffer, |
653 | buflen); | 651 | buflen); |
654 | } | 652 | } |
655 | 653 | ||
656 | static void *hppfs_follow_link(struct dentry *dentry, struct nameidata *nd) | 654 | static void *hppfs_follow_link(struct dentry *dentry, struct nameidata *nd) |
657 | { | 655 | { |
658 | struct dentry *proc_dentry; | 656 | struct dentry *proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry; |
659 | |||
660 | proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry; | ||
661 | 657 | ||
662 | return proc_dentry->d_inode->i_op->follow_link(proc_dentry, nd); | 658 | return proc_dentry->d_inode->i_op->follow_link(proc_dentry, nd); |
663 | } | 659 | } |
664 | 660 | ||
661 | static void hppfs_put_link(struct dentry *dentry, struct nameidata *nd, | ||
662 | void *cookie) | ||
663 | { | ||
664 | struct dentry *proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry; | ||
665 | |||
666 | if (proc_dentry->d_inode->i_op->put_link) | ||
667 | proc_dentry->d_inode->i_op->put_link(proc_dentry, nd, cookie); | ||
668 | } | ||
669 | |||
665 | static const struct inode_operations hppfs_dir_iops = { | 670 | static const struct inode_operations hppfs_dir_iops = { |
666 | .lookup = hppfs_lookup, | 671 | .lookup = hppfs_lookup, |
667 | }; | 672 | }; |
@@ -669,6 +674,7 @@ static const struct inode_operations hppfs_dir_iops = { | |||
669 | static const struct inode_operations hppfs_link_iops = { | 674 | static const struct inode_operations hppfs_link_iops = { |
670 | .readlink = hppfs_readlink, | 675 | .readlink = hppfs_readlink, |
671 | .follow_link = hppfs_follow_link, | 676 | .follow_link = hppfs_follow_link, |
677 | .put_link = hppfs_put_link, | ||
672 | }; | 678 | }; |
673 | 679 | ||
674 | static struct inode *get_inode(struct super_block *sb, struct dentry *dentry) | 680 | static struct inode *get_inode(struct super_block *sb, struct dentry *dentry) |
diff --git a/fs/namei.c b/fs/namei.c index b55440baf7ab..94a5e60779f9 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
@@ -561,6 +561,7 @@ static __always_inline int __do_follow_link(struct path *path, struct nameidata | |||
561 | dget(dentry); | 561 | dget(dentry); |
562 | } | 562 | } |
563 | mntget(path->mnt); | 563 | mntget(path->mnt); |
564 | nd->last_type = LAST_BIND; | ||
564 | cookie = dentry->d_inode->i_op->follow_link(dentry, nd); | 565 | cookie = dentry->d_inode->i_op->follow_link(dentry, nd); |
565 | error = PTR_ERR(cookie); | 566 | error = PTR_ERR(cookie); |
566 | if (!IS_ERR(cookie)) { | 567 | if (!IS_ERR(cookie)) { |
@@ -1603,11 +1604,12 @@ struct file *do_filp_open(int dfd, const char *pathname, | |||
1603 | struct file *filp; | 1604 | struct file *filp; |
1604 | struct nameidata nd; | 1605 | struct nameidata nd; |
1605 | int error; | 1606 | int error; |
1606 | struct path path, save; | 1607 | struct path path; |
1607 | struct dentry *dir; | 1608 | struct dentry *dir; |
1608 | int count = 0; | 1609 | int count = 0; |
1609 | int will_truncate; | 1610 | int will_truncate; |
1610 | int flag = open_to_namei_flags(open_flag); | 1611 | int flag = open_to_namei_flags(open_flag); |
1612 | int force_reval = 0; | ||
1611 | 1613 | ||
1612 | /* | 1614 | /* |
1613 | * O_SYNC is implemented as __O_SYNC|O_DSYNC. As many places only | 1615 | * O_SYNC is implemented as __O_SYNC|O_DSYNC. As many places only |
@@ -1619,7 +1621,7 @@ struct file *do_filp_open(int dfd, const char *pathname, | |||
1619 | open_flag |= O_DSYNC; | 1621 | open_flag |= O_DSYNC; |
1620 | 1622 | ||
1621 | if (!acc_mode) | 1623 | if (!acc_mode) |
1622 | acc_mode = MAY_OPEN | ACC_MODE(flag); | 1624 | acc_mode = MAY_OPEN | ACC_MODE(open_flag); |
1623 | 1625 | ||
1624 | /* O_TRUNC implies we need access checks for write permissions */ | 1626 | /* O_TRUNC implies we need access checks for write permissions */ |
1625 | if (flag & O_TRUNC) | 1627 | if (flag & O_TRUNC) |
@@ -1659,9 +1661,12 @@ struct file *do_filp_open(int dfd, const char *pathname, | |||
1659 | /* | 1661 | /* |
1660 | * Create - we need to know the parent. | 1662 | * Create - we need to know the parent. |
1661 | */ | 1663 | */ |
1664 | reval: | ||
1662 | error = path_init(dfd, pathname, LOOKUP_PARENT, &nd); | 1665 | error = path_init(dfd, pathname, LOOKUP_PARENT, &nd); |
1663 | if (error) | 1666 | if (error) |
1664 | return ERR_PTR(error); | 1667 | return ERR_PTR(error); |
1668 | if (force_reval) | ||
1669 | nd.flags |= LOOKUP_REVAL; | ||
1665 | error = path_walk(pathname, &nd); | 1670 | error = path_walk(pathname, &nd); |
1666 | if (error) { | 1671 | if (error) { |
1667 | if (nd.root.mnt) | 1672 | if (nd.root.mnt) |
@@ -1853,17 +1858,7 @@ do_link: | |||
1853 | error = security_inode_follow_link(path.dentry, &nd); | 1858 | error = security_inode_follow_link(path.dentry, &nd); |
1854 | if (error) | 1859 | if (error) |
1855 | goto exit_dput; | 1860 | goto exit_dput; |
1856 | save = nd.path; | ||
1857 | path_get(&save); | ||
1858 | error = __do_follow_link(&path, &nd); | 1861 | error = __do_follow_link(&path, &nd); |
1859 | if (error == -ESTALE) { | ||
1860 | /* nd.path had been dropped */ | ||
1861 | nd.path = save; | ||
1862 | path_get(&nd.path); | ||
1863 | nd.flags |= LOOKUP_REVAL; | ||
1864 | error = __do_follow_link(&path, &nd); | ||
1865 | } | ||
1866 | path_put(&save); | ||
1867 | path_put(&path); | 1862 | path_put(&path); |
1868 | if (error) { | 1863 | if (error) { |
1869 | /* Does someone understand code flow here? Or it is only | 1864 | /* Does someone understand code flow here? Or it is only |
@@ -1873,6 +1868,10 @@ do_link: | |||
1873 | release_open_intent(&nd); | 1868 | release_open_intent(&nd); |
1874 | if (nd.root.mnt) | 1869 | if (nd.root.mnt) |
1875 | path_put(&nd.root); | 1870 | path_put(&nd.root); |
1871 | if (error == -ESTALE && !force_reval) { | ||
1872 | force_reval = 1; | ||
1873 | goto reval; | ||
1874 | } | ||
1876 | return ERR_PTR(error); | 1875 | return ERR_PTR(error); |
1877 | } | 1876 | } |
1878 | nd.flags &= ~LOOKUP_PARENT; | 1877 | nd.flags &= ~LOOKUP_PARENT; |
diff --git a/fs/namespace.c b/fs/namespace.c index 7d70d63ceb29..c768f733c8d6 100644 --- a/fs/namespace.c +++ b/fs/namespace.c | |||
@@ -965,10 +965,12 @@ EXPORT_SYMBOL(may_umount_tree); | |||
965 | int may_umount(struct vfsmount *mnt) | 965 | int may_umount(struct vfsmount *mnt) |
966 | { | 966 | { |
967 | int ret = 1; | 967 | int ret = 1; |
968 | down_read(&namespace_sem); | ||
968 | spin_lock(&vfsmount_lock); | 969 | spin_lock(&vfsmount_lock); |
969 | if (propagate_mount_busy(mnt, 2)) | 970 | if (propagate_mount_busy(mnt, 2)) |
970 | ret = 0; | 971 | ret = 0; |
971 | spin_unlock(&vfsmount_lock); | 972 | spin_unlock(&vfsmount_lock); |
973 | up_read(&namespace_sem); | ||
972 | return ret; | 974 | return ret; |
973 | } | 975 | } |
974 | 976 | ||
@@ -1352,12 +1354,12 @@ static int attach_recursive_mnt(struct vfsmount *source_mnt, | |||
1352 | if (err) | 1354 | if (err) |
1353 | goto out_cleanup_ids; | 1355 | goto out_cleanup_ids; |
1354 | 1356 | ||
1357 | spin_lock(&vfsmount_lock); | ||
1358 | |||
1355 | if (IS_MNT_SHARED(dest_mnt)) { | 1359 | if (IS_MNT_SHARED(dest_mnt)) { |
1356 | for (p = source_mnt; p; p = next_mnt(p, source_mnt)) | 1360 | for (p = source_mnt; p; p = next_mnt(p, source_mnt)) |
1357 | set_mnt_shared(p); | 1361 | set_mnt_shared(p); |
1358 | } | 1362 | } |
1359 | |||
1360 | spin_lock(&vfsmount_lock); | ||
1361 | if (parent_path) { | 1363 | if (parent_path) { |
1362 | detach_mnt(source_mnt, parent_path); | 1364 | detach_mnt(source_mnt, parent_path); |
1363 | attach_mnt(source_mnt, path); | 1365 | attach_mnt(source_mnt, path); |
@@ -1534,8 +1536,12 @@ static int do_remount(struct path *path, int flags, int mnt_flags, | |||
1534 | err = change_mount_flags(path->mnt, flags); | 1536 | err = change_mount_flags(path->mnt, flags); |
1535 | else | 1537 | else |
1536 | err = do_remount_sb(sb, flags, data, 0); | 1538 | err = do_remount_sb(sb, flags, data, 0); |
1537 | if (!err) | 1539 | if (!err) { |
1540 | spin_lock(&vfsmount_lock); | ||
1541 | mnt_flags |= path->mnt->mnt_flags & MNT_PNODE_MASK; | ||
1538 | path->mnt->mnt_flags = mnt_flags; | 1542 | path->mnt->mnt_flags = mnt_flags; |
1543 | spin_unlock(&vfsmount_lock); | ||
1544 | } | ||
1539 | up_write(&sb->s_umount); | 1545 | up_write(&sb->s_umount); |
1540 | if (!err) { | 1546 | if (!err) { |
1541 | security_sb_post_remount(path->mnt, flags, data); | 1547 | security_sb_post_remount(path->mnt, flags, data); |
@@ -1665,6 +1671,8 @@ int do_add_mount(struct vfsmount *newmnt, struct path *path, | |||
1665 | { | 1671 | { |
1666 | int err; | 1672 | int err; |
1667 | 1673 | ||
1674 | mnt_flags &= ~(MNT_SHARED | MNT_WRITE_HOLD); | ||
1675 | |||
1668 | down_write(&namespace_sem); | 1676 | down_write(&namespace_sem); |
1669 | /* Something was mounted here while we slept */ | 1677 | /* Something was mounted here while we slept */ |
1670 | while (d_mountpoint(path->dentry) && | 1678 | while (d_mountpoint(path->dentry) && |
diff --git a/fs/notify/inotify/inotify_fsnotify.c b/fs/notify/inotify/inotify_fsnotify.c index c9ee67b442e1..1afb0a10229f 100644 --- a/fs/notify/inotify/inotify_fsnotify.c +++ b/fs/notify/inotify/inotify_fsnotify.c | |||
@@ -121,7 +121,7 @@ static int idr_callback(int id, void *p, void *data) | |||
121 | if (warned) | 121 | if (warned) |
122 | return 0; | 122 | return 0; |
123 | 123 | ||
124 | warned = false; | 124 | warned = true; |
125 | entry = p; | 125 | entry = p; |
126 | ientry = container_of(entry, struct inotify_inode_mark_entry, fsn_entry); | 126 | ientry = container_of(entry, struct inotify_inode_mark_entry, fsn_entry); |
127 | 127 | ||
diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c index 8271cf05c957..a94e8bd8eb1f 100644 --- a/fs/notify/inotify/inotify_user.c +++ b/fs/notify/inotify/inotify_user.c | |||
@@ -552,7 +552,7 @@ retry: | |||
552 | 552 | ||
553 | spin_lock(&group->inotify_data.idr_lock); | 553 | spin_lock(&group->inotify_data.idr_lock); |
554 | ret = idr_get_new_above(&group->inotify_data.idr, &tmp_ientry->fsn_entry, | 554 | ret = idr_get_new_above(&group->inotify_data.idr, &tmp_ientry->fsn_entry, |
555 | group->inotify_data.last_wd, | 555 | group->inotify_data.last_wd+1, |
556 | &tmp_ientry->wd); | 556 | &tmp_ientry->wd); |
557 | spin_unlock(&group->inotify_data.idr_lock); | 557 | spin_unlock(&group->inotify_data.idr_lock); |
558 | if (ret) { | 558 | if (ret) { |
@@ -632,7 +632,7 @@ static struct fsnotify_group *inotify_new_group(struct user_struct *user, unsign | |||
632 | 632 | ||
633 | spin_lock_init(&group->inotify_data.idr_lock); | 633 | spin_lock_init(&group->inotify_data.idr_lock); |
634 | idr_init(&group->inotify_data.idr); | 634 | idr_init(&group->inotify_data.idr); |
635 | group->inotify_data.last_wd = 1; | 635 | group->inotify_data.last_wd = 0; |
636 | group->inotify_data.user = user; | 636 | group->inotify_data.user = user; |
637 | group->inotify_data.fa = NULL; | 637 | group->inotify_data.fa = NULL; |
638 | 638 | ||
diff --git a/fs/proc/base.c b/fs/proc/base.c index 18d5cc62d8ed..e42bbd843ed1 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c | |||
@@ -1419,7 +1419,6 @@ static void *proc_pid_follow_link(struct dentry *dentry, struct nameidata *nd) | |||
1419 | goto out; | 1419 | goto out; |
1420 | 1420 | ||
1421 | error = PROC_I(inode)->op.proc_get_link(inode, &nd->path); | 1421 | error = PROC_I(inode)->op.proc_get_link(inode, &nd->path); |
1422 | nd->last_type = LAST_BIND; | ||
1423 | out: | 1422 | out: |
1424 | return ERR_PTR(error); | 1423 | return ERR_PTR(error); |
1425 | } | 1424 | } |
diff --git a/fs/ramfs/file-nommu.c b/fs/ramfs/file-nommu.c index 2efc57173fd7..1739a4aba25f 100644 --- a/fs/ramfs/file-nommu.c +++ b/fs/ramfs/file-nommu.c | |||
@@ -123,30 +123,6 @@ add_error: | |||
123 | 123 | ||
124 | /*****************************************************************************/ | 124 | /*****************************************************************************/ |
125 | /* | 125 | /* |
126 | * check that file shrinkage doesn't leave any VMAs dangling in midair | ||
127 | */ | ||
128 | static int ramfs_nommu_check_mappings(struct inode *inode, | ||
129 | size_t newsize, size_t size) | ||
130 | { | ||
131 | struct vm_area_struct *vma; | ||
132 | struct prio_tree_iter iter; | ||
133 | |||
134 | /* search for VMAs that fall within the dead zone */ | ||
135 | vma_prio_tree_foreach(vma, &iter, &inode->i_mapping->i_mmap, | ||
136 | newsize >> PAGE_SHIFT, | ||
137 | (size + PAGE_SIZE - 1) >> PAGE_SHIFT | ||
138 | ) { | ||
139 | /* found one - only interested if it's shared out of the page | ||
140 | * cache */ | ||
141 | if (vma->vm_flags & VM_SHARED) | ||
142 | return -ETXTBSY; /* not quite true, but near enough */ | ||
143 | } | ||
144 | |||
145 | return 0; | ||
146 | } | ||
147 | |||
148 | /*****************************************************************************/ | ||
149 | /* | ||
150 | * | 126 | * |
151 | */ | 127 | */ |
152 | static int ramfs_nommu_resize(struct inode *inode, loff_t newsize, loff_t size) | 128 | static int ramfs_nommu_resize(struct inode *inode, loff_t newsize, loff_t size) |
@@ -164,7 +140,7 @@ static int ramfs_nommu_resize(struct inode *inode, loff_t newsize, loff_t size) | |||
164 | 140 | ||
165 | /* check that a decrease in size doesn't cut off any shared mappings */ | 141 | /* check that a decrease in size doesn't cut off any shared mappings */ |
166 | if (newsize < size) { | 142 | if (newsize < size) { |
167 | ret = ramfs_nommu_check_mappings(inode, newsize, size); | 143 | ret = nommu_shrink_inode_mappings(inode, size, newsize); |
168 | if (ret < 0) | 144 | if (ret < 0) |
169 | return ret; | 145 | return ret; |
170 | } | 146 | } |
diff --git a/fs/romfs/super.c b/fs/romfs/super.c index c117fa80d1e9..42d213546894 100644 --- a/fs/romfs/super.c +++ b/fs/romfs/super.c | |||
@@ -544,6 +544,7 @@ error: | |||
544 | error_rsb_inval: | 544 | error_rsb_inval: |
545 | ret = -EINVAL; | 545 | ret = -EINVAL; |
546 | error_rsb: | 546 | error_rsb: |
547 | kfree(rsb); | ||
547 | return ret; | 548 | return ret; |
548 | } | 549 | } |
549 | 550 | ||
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 09783cc444ac..77414db10dc2 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c | |||
@@ -954,16 +954,14 @@ xfs_fs_destroy_inode( | |||
954 | ASSERT_ALWAYS(!xfs_iflags_test(ip, XFS_IRECLAIM)); | 954 | ASSERT_ALWAYS(!xfs_iflags_test(ip, XFS_IRECLAIM)); |
955 | 955 | ||
956 | /* | 956 | /* |
957 | * If we have nothing to flush with this inode then complete the | 957 | * We always use background reclaim here because even if the |
958 | * teardown now, otherwise delay the flush operation. | 958 | * inode is clean, it still may be under IO and hence we have |
959 | * to take the flush lock. The background reclaim path handles | ||
960 | * this more efficiently than we can here, so simply let background | ||
961 | * reclaim tear down all inodes. | ||
959 | */ | 962 | */ |
960 | if (!xfs_inode_clean(ip)) { | ||
961 | xfs_inode_set_reclaim_tag(ip); | ||
962 | return; | ||
963 | } | ||
964 | |||
965 | out_reclaim: | 963 | out_reclaim: |
966 | xfs_ireclaim(ip); | 964 | xfs_inode_set_reclaim_tag(ip); |
967 | } | 965 | } |
968 | 966 | ||
969 | /* | 967 | /* |
diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 6fed97a8cd3e..1f5e4bb5e970 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c | |||
@@ -65,7 +65,6 @@ xfs_inode_ag_lookup( | |||
65 | * as the tree is sparse and a gang lookup walks to find | 65 | * as the tree is sparse and a gang lookup walks to find |
66 | * the number of objects requested. | 66 | * the number of objects requested. |
67 | */ | 67 | */ |
68 | read_lock(&pag->pag_ici_lock); | ||
69 | if (tag == XFS_ICI_NO_TAG) { | 68 | if (tag == XFS_ICI_NO_TAG) { |
70 | nr_found = radix_tree_gang_lookup(&pag->pag_ici_root, | 69 | nr_found = radix_tree_gang_lookup(&pag->pag_ici_root, |
71 | (void **)&ip, *first_index, 1); | 70 | (void **)&ip, *first_index, 1); |
@@ -74,7 +73,7 @@ xfs_inode_ag_lookup( | |||
74 | (void **)&ip, *first_index, 1, tag); | 73 | (void **)&ip, *first_index, 1, tag); |
75 | } | 74 | } |
76 | if (!nr_found) | 75 | if (!nr_found) |
77 | goto unlock; | 76 | return NULL; |
78 | 77 | ||
79 | /* | 78 | /* |
80 | * Update the index for the next lookup. Catch overflows | 79 | * Update the index for the next lookup. Catch overflows |
@@ -84,13 +83,8 @@ xfs_inode_ag_lookup( | |||
84 | */ | 83 | */ |
85 | *first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1); | 84 | *first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1); |
86 | if (*first_index < XFS_INO_TO_AGINO(mp, ip->i_ino)) | 85 | if (*first_index < XFS_INO_TO_AGINO(mp, ip->i_ino)) |
87 | goto unlock; | 86 | return NULL; |
88 | |||
89 | return ip; | 87 | return ip; |
90 | |||
91 | unlock: | ||
92 | read_unlock(&pag->pag_ici_lock); | ||
93 | return NULL; | ||
94 | } | 88 | } |
95 | 89 | ||
96 | STATIC int | 90 | STATIC int |
@@ -100,7 +94,8 @@ xfs_inode_ag_walk( | |||
100 | int (*execute)(struct xfs_inode *ip, | 94 | int (*execute)(struct xfs_inode *ip, |
101 | struct xfs_perag *pag, int flags), | 95 | struct xfs_perag *pag, int flags), |
102 | int flags, | 96 | int flags, |
103 | int tag) | 97 | int tag, |
98 | int exclusive) | ||
104 | { | 99 | { |
105 | struct xfs_perag *pag = &mp->m_perag[ag]; | 100 | struct xfs_perag *pag = &mp->m_perag[ag]; |
106 | uint32_t first_index; | 101 | uint32_t first_index; |
@@ -114,10 +109,20 @@ restart: | |||
114 | int error = 0; | 109 | int error = 0; |
115 | xfs_inode_t *ip; | 110 | xfs_inode_t *ip; |
116 | 111 | ||
112 | if (exclusive) | ||
113 | write_lock(&pag->pag_ici_lock); | ||
114 | else | ||
115 | read_lock(&pag->pag_ici_lock); | ||
117 | ip = xfs_inode_ag_lookup(mp, pag, &first_index, tag); | 116 | ip = xfs_inode_ag_lookup(mp, pag, &first_index, tag); |
118 | if (!ip) | 117 | if (!ip) { |
118 | if (exclusive) | ||
119 | write_unlock(&pag->pag_ici_lock); | ||
120 | else | ||
121 | read_unlock(&pag->pag_ici_lock); | ||
119 | break; | 122 | break; |
123 | } | ||
120 | 124 | ||
125 | /* execute releases pag->pag_ici_lock */ | ||
121 | error = execute(ip, pag, flags); | 126 | error = execute(ip, pag, flags); |
122 | if (error == EAGAIN) { | 127 | if (error == EAGAIN) { |
123 | skipped++; | 128 | skipped++; |
@@ -125,9 +130,8 @@ restart: | |||
125 | } | 130 | } |
126 | if (error) | 131 | if (error) |
127 | last_error = error; | 132 | last_error = error; |
128 | /* | 133 | |
129 | * bail out if the filesystem is corrupted. | 134 | /* bail out if the filesystem is corrupted. */ |
130 | */ | ||
131 | if (error == EFSCORRUPTED) | 135 | if (error == EFSCORRUPTED) |
132 | break; | 136 | break; |
133 | 137 | ||
@@ -148,7 +152,8 @@ xfs_inode_ag_iterator( | |||
148 | int (*execute)(struct xfs_inode *ip, | 152 | int (*execute)(struct xfs_inode *ip, |
149 | struct xfs_perag *pag, int flags), | 153 | struct xfs_perag *pag, int flags), |
150 | int flags, | 154 | int flags, |
151 | int tag) | 155 | int tag, |
156 | int exclusive) | ||
152 | { | 157 | { |
153 | int error = 0; | 158 | int error = 0; |
154 | int last_error = 0; | 159 | int last_error = 0; |
@@ -157,7 +162,8 @@ xfs_inode_ag_iterator( | |||
157 | for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) { | 162 | for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) { |
158 | if (!mp->m_perag[ag].pag_ici_init) | 163 | if (!mp->m_perag[ag].pag_ici_init) |
159 | continue; | 164 | continue; |
160 | error = xfs_inode_ag_walk(mp, ag, execute, flags, tag); | 165 | error = xfs_inode_ag_walk(mp, ag, execute, flags, tag, |
166 | exclusive); | ||
161 | if (error) { | 167 | if (error) { |
162 | last_error = error; | 168 | last_error = error; |
163 | if (error == EFSCORRUPTED) | 169 | if (error == EFSCORRUPTED) |
@@ -174,30 +180,31 @@ xfs_sync_inode_valid( | |||
174 | struct xfs_perag *pag) | 180 | struct xfs_perag *pag) |
175 | { | 181 | { |
176 | struct inode *inode = VFS_I(ip); | 182 | struct inode *inode = VFS_I(ip); |
183 | int error = EFSCORRUPTED; | ||
177 | 184 | ||
178 | /* nothing to sync during shutdown */ | 185 | /* nothing to sync during shutdown */ |
179 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { | 186 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) |
180 | read_unlock(&pag->pag_ici_lock); | 187 | goto out_unlock; |
181 | return EFSCORRUPTED; | ||
182 | } | ||
183 | 188 | ||
184 | /* | 189 | /* avoid new or reclaimable inodes. Leave for reclaim code to flush */ |
185 | * If we can't get a reference on the inode, it must be in reclaim. | 190 | error = ENOENT; |
186 | * Leave it for the reclaim code to flush. Also avoid inodes that | 191 | if (xfs_iflags_test(ip, XFS_INEW | XFS_IRECLAIMABLE | XFS_IRECLAIM)) |
187 | * haven't been fully initialised. | 192 | goto out_unlock; |
188 | */ | ||
189 | if (!igrab(inode)) { | ||
190 | read_unlock(&pag->pag_ici_lock); | ||
191 | return ENOENT; | ||
192 | } | ||
193 | read_unlock(&pag->pag_ici_lock); | ||
194 | 193 | ||
195 | if (is_bad_inode(inode) || xfs_iflags_test(ip, XFS_INEW)) { | 194 | /* If we can't grab the inode, it must on it's way to reclaim. */ |
195 | if (!igrab(inode)) | ||
196 | goto out_unlock; | ||
197 | |||
198 | if (is_bad_inode(inode)) { | ||
196 | IRELE(ip); | 199 | IRELE(ip); |
197 | return ENOENT; | 200 | goto out_unlock; |
198 | } | 201 | } |
199 | 202 | ||
200 | return 0; | 203 | /* inode is valid */ |
204 | error = 0; | ||
205 | out_unlock: | ||
206 | read_unlock(&pag->pag_ici_lock); | ||
207 | return error; | ||
201 | } | 208 | } |
202 | 209 | ||
203 | STATIC int | 210 | STATIC int |
@@ -282,7 +289,7 @@ xfs_sync_data( | |||
282 | ASSERT((flags & ~(SYNC_TRYLOCK|SYNC_WAIT)) == 0); | 289 | ASSERT((flags & ~(SYNC_TRYLOCK|SYNC_WAIT)) == 0); |
283 | 290 | ||
284 | error = xfs_inode_ag_iterator(mp, xfs_sync_inode_data, flags, | 291 | error = xfs_inode_ag_iterator(mp, xfs_sync_inode_data, flags, |
285 | XFS_ICI_NO_TAG); | 292 | XFS_ICI_NO_TAG, 0); |
286 | if (error) | 293 | if (error) |
287 | return XFS_ERROR(error); | 294 | return XFS_ERROR(error); |
288 | 295 | ||
@@ -304,7 +311,7 @@ xfs_sync_attr( | |||
304 | ASSERT((flags & ~SYNC_WAIT) == 0); | 311 | ASSERT((flags & ~SYNC_WAIT) == 0); |
305 | 312 | ||
306 | return xfs_inode_ag_iterator(mp, xfs_sync_inode_attr, flags, | 313 | return xfs_inode_ag_iterator(mp, xfs_sync_inode_attr, flags, |
307 | XFS_ICI_NO_TAG); | 314 | XFS_ICI_NO_TAG, 0); |
308 | } | 315 | } |
309 | 316 | ||
310 | STATIC int | 317 | STATIC int |
@@ -664,60 +671,6 @@ xfs_syncd_stop( | |||
664 | kthread_stop(mp->m_sync_task); | 671 | kthread_stop(mp->m_sync_task); |
665 | } | 672 | } |
666 | 673 | ||
667 | STATIC int | ||
668 | xfs_reclaim_inode( | ||
669 | xfs_inode_t *ip, | ||
670 | int sync_mode) | ||
671 | { | ||
672 | xfs_perag_t *pag = xfs_get_perag(ip->i_mount, ip->i_ino); | ||
673 | |||
674 | /* The hash lock here protects a thread in xfs_iget_core from | ||
675 | * racing with us on linking the inode back with a vnode. | ||
676 | * Once we have the XFS_IRECLAIM flag set it will not touch | ||
677 | * us. | ||
678 | */ | ||
679 | write_lock(&pag->pag_ici_lock); | ||
680 | spin_lock(&ip->i_flags_lock); | ||
681 | if (__xfs_iflags_test(ip, XFS_IRECLAIM) || | ||
682 | !__xfs_iflags_test(ip, XFS_IRECLAIMABLE)) { | ||
683 | spin_unlock(&ip->i_flags_lock); | ||
684 | write_unlock(&pag->pag_ici_lock); | ||
685 | return -EAGAIN; | ||
686 | } | ||
687 | __xfs_iflags_set(ip, XFS_IRECLAIM); | ||
688 | spin_unlock(&ip->i_flags_lock); | ||
689 | write_unlock(&pag->pag_ici_lock); | ||
690 | xfs_put_perag(ip->i_mount, pag); | ||
691 | |||
692 | /* | ||
693 | * If the inode is still dirty, then flush it out. If the inode | ||
694 | * is not in the AIL, then it will be OK to flush it delwri as | ||
695 | * long as xfs_iflush() does not keep any references to the inode. | ||
696 | * We leave that decision up to xfs_iflush() since it has the | ||
697 | * knowledge of whether it's OK to simply do a delwri flush of | ||
698 | * the inode or whether we need to wait until the inode is | ||
699 | * pulled from the AIL. | ||
700 | * We get the flush lock regardless, though, just to make sure | ||
701 | * we don't free it while it is being flushed. | ||
702 | */ | ||
703 | xfs_ilock(ip, XFS_ILOCK_EXCL); | ||
704 | xfs_iflock(ip); | ||
705 | |||
706 | /* | ||
707 | * In the case of a forced shutdown we rely on xfs_iflush() to | ||
708 | * wait for the inode to be unpinned before returning an error. | ||
709 | */ | ||
710 | if (!is_bad_inode(VFS_I(ip)) && xfs_iflush(ip, sync_mode) == 0) { | ||
711 | /* synchronize with xfs_iflush_done */ | ||
712 | xfs_iflock(ip); | ||
713 | xfs_ifunlock(ip); | ||
714 | } | ||
715 | |||
716 | xfs_iunlock(ip, XFS_ILOCK_EXCL); | ||
717 | xfs_ireclaim(ip); | ||
718 | return 0; | ||
719 | } | ||
720 | |||
721 | void | 674 | void |
722 | __xfs_inode_set_reclaim_tag( | 675 | __xfs_inode_set_reclaim_tag( |
723 | struct xfs_perag *pag, | 676 | struct xfs_perag *pag, |
@@ -760,19 +713,55 @@ __xfs_inode_clear_reclaim_tag( | |||
760 | } | 713 | } |
761 | 714 | ||
762 | STATIC int | 715 | STATIC int |
763 | xfs_reclaim_inode_now( | 716 | xfs_reclaim_inode( |
764 | struct xfs_inode *ip, | 717 | struct xfs_inode *ip, |
765 | struct xfs_perag *pag, | 718 | struct xfs_perag *pag, |
766 | int flags) | 719 | int sync_mode) |
767 | { | 720 | { |
768 | /* ignore if already under reclaim */ | 721 | /* |
769 | if (xfs_iflags_test(ip, XFS_IRECLAIM)) { | 722 | * The radix tree lock here protects a thread in xfs_iget from racing |
770 | read_unlock(&pag->pag_ici_lock); | 723 | * with us starting reclaim on the inode. Once we have the |
724 | * XFS_IRECLAIM flag set it will not touch us. | ||
725 | */ | ||
726 | spin_lock(&ip->i_flags_lock); | ||
727 | ASSERT_ALWAYS(__xfs_iflags_test(ip, XFS_IRECLAIMABLE)); | ||
728 | if (__xfs_iflags_test(ip, XFS_IRECLAIM)) { | ||
729 | /* ignore as it is already under reclaim */ | ||
730 | spin_unlock(&ip->i_flags_lock); | ||
731 | write_unlock(&pag->pag_ici_lock); | ||
771 | return 0; | 732 | return 0; |
772 | } | 733 | } |
773 | read_unlock(&pag->pag_ici_lock); | 734 | __xfs_iflags_set(ip, XFS_IRECLAIM); |
735 | spin_unlock(&ip->i_flags_lock); | ||
736 | write_unlock(&pag->pag_ici_lock); | ||
774 | 737 | ||
775 | return xfs_reclaim_inode(ip, flags); | 738 | /* |
739 | * If the inode is still dirty, then flush it out. If the inode | ||
740 | * is not in the AIL, then it will be OK to flush it delwri as | ||
741 | * long as xfs_iflush() does not keep any references to the inode. | ||
742 | * We leave that decision up to xfs_iflush() since it has the | ||
743 | * knowledge of whether it's OK to simply do a delwri flush of | ||
744 | * the inode or whether we need to wait until the inode is | ||
745 | * pulled from the AIL. | ||
746 | * We get the flush lock regardless, though, just to make sure | ||
747 | * we don't free it while it is being flushed. | ||
748 | */ | ||
749 | xfs_ilock(ip, XFS_ILOCK_EXCL); | ||
750 | xfs_iflock(ip); | ||
751 | |||
752 | /* | ||
753 | * In the case of a forced shutdown we rely on xfs_iflush() to | ||
754 | * wait for the inode to be unpinned before returning an error. | ||
755 | */ | ||
756 | if (!is_bad_inode(VFS_I(ip)) && xfs_iflush(ip, sync_mode) == 0) { | ||
757 | /* synchronize with xfs_iflush_done */ | ||
758 | xfs_iflock(ip); | ||
759 | xfs_ifunlock(ip); | ||
760 | } | ||
761 | |||
762 | xfs_iunlock(ip, XFS_ILOCK_EXCL); | ||
763 | xfs_ireclaim(ip); | ||
764 | return 0; | ||
776 | } | 765 | } |
777 | 766 | ||
778 | int | 767 | int |
@@ -780,6 +769,6 @@ xfs_reclaim_inodes( | |||
780 | xfs_mount_t *mp, | 769 | xfs_mount_t *mp, |
781 | int mode) | 770 | int mode) |
782 | { | 771 | { |
783 | return xfs_inode_ag_iterator(mp, xfs_reclaim_inode_now, mode, | 772 | return xfs_inode_ag_iterator(mp, xfs_reclaim_inode, mode, |
784 | XFS_ICI_RECLAIM_TAG); | 773 | XFS_ICI_RECLAIM_TAG, 1); |
785 | } | 774 | } |
diff --git a/fs/xfs/linux-2.6/xfs_sync.h b/fs/xfs/linux-2.6/xfs_sync.h index a500b4d91835..ea932b43335d 100644 --- a/fs/xfs/linux-2.6/xfs_sync.h +++ b/fs/xfs/linux-2.6/xfs_sync.h | |||
@@ -54,6 +54,6 @@ void __xfs_inode_clear_reclaim_tag(struct xfs_mount *mp, struct xfs_perag *pag, | |||
54 | int xfs_sync_inode_valid(struct xfs_inode *ip, struct xfs_perag *pag); | 54 | int xfs_sync_inode_valid(struct xfs_inode *ip, struct xfs_perag *pag); |
55 | int xfs_inode_ag_iterator(struct xfs_mount *mp, | 55 | int xfs_inode_ag_iterator(struct xfs_mount *mp, |
56 | int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), | 56 | int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), |
57 | int flags, int tag); | 57 | int flags, int tag, int write_lock); |
58 | 58 | ||
59 | #endif | 59 | #endif |
diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c index 71af76fe8a23..873e07e29074 100644 --- a/fs/xfs/quota/xfs_qm_syscalls.c +++ b/fs/xfs/quota/xfs_qm_syscalls.c | |||
@@ -891,7 +891,7 @@ xfs_qm_dqrele_all_inodes( | |||
891 | uint flags) | 891 | uint flags) |
892 | { | 892 | { |
893 | ASSERT(mp->m_quotainfo); | 893 | ASSERT(mp->m_quotainfo); |
894 | xfs_inode_ag_iterator(mp, xfs_dqrele_inode, flags, XFS_ICI_NO_TAG); | 894 | xfs_inode_ag_iterator(mp, xfs_dqrele_inode, flags, XFS_ICI_NO_TAG, 0); |
895 | } | 895 | } |
896 | 896 | ||
897 | /*------------------------------------------------------------------------*/ | 897 | /*------------------------------------------------------------------------*/ |
diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c index d1483a4f71b8..84ca1cf16a1e 100644 --- a/fs/xfs/xfs_dfrag.c +++ b/fs/xfs/xfs_dfrag.c | |||
@@ -114,10 +114,82 @@ xfs_swapext( | |||
114 | return error; | 114 | return error; |
115 | } | 115 | } |
116 | 116 | ||
117 | /* | ||
118 | * We need to check that the format of the data fork in the temporary inode is | ||
119 | * valid for the target inode before doing the swap. This is not a problem with | ||
120 | * attr1 because of the fixed fork offset, but attr2 has a dynamically sized | ||
121 | * data fork depending on the space the attribute fork is taking so we can get | ||
122 | * invalid formats on the target inode. | ||
123 | * | ||
124 | * E.g. target has space for 7 extents in extent format, temp inode only has | ||
125 | * space for 6. If we defragment down to 7 extents, then the tmp format is a | ||
126 | * btree, but when swapped it needs to be in extent format. Hence we can't just | ||
127 | * blindly swap data forks on attr2 filesystems. | ||
128 | * | ||
129 | * Note that we check the swap in both directions so that we don't end up with | ||
130 | * a corrupt temporary inode, either. | ||
131 | * | ||
132 | * Note that fixing the way xfs_fsr sets up the attribute fork in the source | ||
133 | * inode will prevent this situation from occurring, so all we do here is | ||
134 | * reject and log the attempt. basically we are putting the responsibility on | ||
135 | * userspace to get this right. | ||
136 | */ | ||
137 | static int | ||
138 | xfs_swap_extents_check_format( | ||
139 | xfs_inode_t *ip, /* target inode */ | ||
140 | xfs_inode_t *tip) /* tmp inode */ | ||
141 | { | ||
142 | |||
143 | /* Should never get a local format */ | ||
144 | if (ip->i_d.di_format == XFS_DINODE_FMT_LOCAL || | ||
145 | tip->i_d.di_format == XFS_DINODE_FMT_LOCAL) | ||
146 | return EINVAL; | ||
147 | |||
148 | /* | ||
149 | * if the target inode has less extents that then temporary inode then | ||
150 | * why did userspace call us? | ||
151 | */ | ||
152 | if (ip->i_d.di_nextents < tip->i_d.di_nextents) | ||
153 | return EINVAL; | ||
154 | |||
155 | /* | ||
156 | * if the target inode is in extent form and the temp inode is in btree | ||
157 | * form then we will end up with the target inode in the wrong format | ||
158 | * as we already know there are less extents in the temp inode. | ||
159 | */ | ||
160 | if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && | ||
161 | tip->i_d.di_format == XFS_DINODE_FMT_BTREE) | ||
162 | return EINVAL; | ||
163 | |||
164 | /* Check temp in extent form to max in target */ | ||
165 | if (tip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && | ||
166 | XFS_IFORK_NEXTENTS(tip, XFS_DATA_FORK) > ip->i_df.if_ext_max) | ||
167 | return EINVAL; | ||
168 | |||
169 | /* Check target in extent form to max in temp */ | ||
170 | if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && | ||
171 | XFS_IFORK_NEXTENTS(ip, XFS_DATA_FORK) > tip->i_df.if_ext_max) | ||
172 | return EINVAL; | ||
173 | |||
174 | /* Check root block of temp in btree form to max in target */ | ||
175 | if (tip->i_d.di_format == XFS_DINODE_FMT_BTREE && | ||
176 | XFS_IFORK_BOFF(ip) && | ||
177 | tip->i_df.if_broot_bytes > XFS_IFORK_BOFF(ip)) | ||
178 | return EINVAL; | ||
179 | |||
180 | /* Check root block of target in btree form to max in temp */ | ||
181 | if (ip->i_d.di_format == XFS_DINODE_FMT_BTREE && | ||
182 | XFS_IFORK_BOFF(tip) && | ||
183 | ip->i_df.if_broot_bytes > XFS_IFORK_BOFF(tip)) | ||
184 | return EINVAL; | ||
185 | |||
186 | return 0; | ||
187 | } | ||
188 | |||
117 | int | 189 | int |
118 | xfs_swap_extents( | 190 | xfs_swap_extents( |
119 | xfs_inode_t *ip, | 191 | xfs_inode_t *ip, /* target inode */ |
120 | xfs_inode_t *tip, | 192 | xfs_inode_t *tip, /* tmp inode */ |
121 | xfs_swapext_t *sxp) | 193 | xfs_swapext_t *sxp) |
122 | { | 194 | { |
123 | xfs_mount_t *mp; | 195 | xfs_mount_t *mp; |
@@ -161,13 +233,6 @@ xfs_swap_extents( | |||
161 | goto out_unlock; | 233 | goto out_unlock; |
162 | } | 234 | } |
163 | 235 | ||
164 | /* Should never get a local format */ | ||
165 | if (ip->i_d.di_format == XFS_DINODE_FMT_LOCAL || | ||
166 | tip->i_d.di_format == XFS_DINODE_FMT_LOCAL) { | ||
167 | error = XFS_ERROR(EINVAL); | ||
168 | goto out_unlock; | ||
169 | } | ||
170 | |||
171 | if (VN_CACHED(VFS_I(tip)) != 0) { | 236 | if (VN_CACHED(VFS_I(tip)) != 0) { |
172 | error = xfs_flushinval_pages(tip, 0, -1, | 237 | error = xfs_flushinval_pages(tip, 0, -1, |
173 | FI_REMAPF_LOCKED); | 238 | FI_REMAPF_LOCKED); |
@@ -189,13 +254,12 @@ xfs_swap_extents( | |||
189 | goto out_unlock; | 254 | goto out_unlock; |
190 | } | 255 | } |
191 | 256 | ||
192 | /* | 257 | /* check inode formats now that data is flushed */ |
193 | * If the target has extended attributes, the tmp file | 258 | error = xfs_swap_extents_check_format(ip, tip); |
194 | * must also in order to ensure the correct data fork | 259 | if (error) { |
195 | * format. | 260 | xfs_fs_cmn_err(CE_NOTE, mp, |
196 | */ | 261 | "%s: inode 0x%llx format is incompatible for exchanging.", |
197 | if ( XFS_IFORK_Q(ip) != XFS_IFORK_Q(tip) ) { | 262 | __FILE__, ip->i_ino); |
198 | error = XFS_ERROR(EINVAL); | ||
199 | goto out_unlock; | 263 | goto out_unlock; |
200 | } | 264 | } |
201 | 265 | ||
@@ -276,6 +340,16 @@ xfs_swap_extents( | |||
276 | *tifp = *tempifp; /* struct copy */ | 340 | *tifp = *tempifp; /* struct copy */ |
277 | 341 | ||
278 | /* | 342 | /* |
343 | * Fix the in-memory data fork values that are dependent on the fork | ||
344 | * offset in the inode. We can't assume they remain the same as attr2 | ||
345 | * has dynamic fork offsets. | ||
346 | */ | ||
347 | ifp->if_ext_max = XFS_IFORK_SIZE(ip, XFS_DATA_FORK) / | ||
348 | (uint)sizeof(xfs_bmbt_rec_t); | ||
349 | tifp->if_ext_max = XFS_IFORK_SIZE(tip, XFS_DATA_FORK) / | ||
350 | (uint)sizeof(xfs_bmbt_rec_t); | ||
351 | |||
352 | /* | ||
279 | * Fix the on-disk inode values | 353 | * Fix the on-disk inode values |
280 | */ | 354 | */ |
281 | tmp = (__uint64_t)ip->i_d.di_nblocks; | 355 | tmp = (__uint64_t)ip->i_d.di_nblocks; |
diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index fa402a6bbbcf..155e798f30a1 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c | |||
@@ -73,7 +73,6 @@ xfs_inode_alloc( | |||
73 | ASSERT(atomic_read(&ip->i_pincount) == 0); | 73 | ASSERT(atomic_read(&ip->i_pincount) == 0); |
74 | ASSERT(!spin_is_locked(&ip->i_flags_lock)); | 74 | ASSERT(!spin_is_locked(&ip->i_flags_lock)); |
75 | ASSERT(completion_done(&ip->i_flush)); | 75 | ASSERT(completion_done(&ip->i_flush)); |
76 | ASSERT(!rwsem_is_locked(&ip->i_iolock.mr_lock)); | ||
77 | 76 | ||
78 | mrlock_init(&ip->i_iolock, MRLOCK_BARRIER, "xfsio", ip->i_ino); | 77 | mrlock_init(&ip->i_iolock, MRLOCK_BARRIER, "xfsio", ip->i_ino); |
79 | 78 | ||
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 391d36b0e68c..ef77fd88c8e3 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c | |||
@@ -2842,13 +2842,9 @@ xfs_iflush( | |||
2842 | 2842 | ||
2843 | /* | 2843 | /* |
2844 | * If the inode isn't dirty, then just release the inode flush lock and | 2844 | * If the inode isn't dirty, then just release the inode flush lock and |
2845 | * do nothing. Treat stale inodes the same; we cannot rely on the | 2845 | * do nothing. |
2846 | * backing buffer remaining stale in cache for the remaining life of | ||
2847 | * the stale inode and so xfs_itobp() below may give us a buffer that | ||
2848 | * no longer contains inodes below. Doing this stale check here also | ||
2849 | * avoids forcing the log on pinned, stale inodes. | ||
2850 | */ | 2846 | */ |
2851 | if (xfs_inode_clean(ip) || xfs_iflags_test(ip, XFS_ISTALE)) { | 2847 | if (xfs_inode_clean(ip)) { |
2852 | xfs_ifunlock(ip); | 2848 | xfs_ifunlock(ip); |
2853 | return 0; | 2849 | return 0; |
2854 | } | 2850 | } |
@@ -2872,6 +2868,19 @@ xfs_iflush( | |||
2872 | xfs_iunpin_wait(ip); | 2868 | xfs_iunpin_wait(ip); |
2873 | 2869 | ||
2874 | /* | 2870 | /* |
2871 | * For stale inodes we cannot rely on the backing buffer remaining | ||
2872 | * stale in cache for the remaining life of the stale inode and so | ||
2873 | * xfs_itobp() below may give us a buffer that no longer contains | ||
2874 | * inodes below. We have to check this after ensuring the inode is | ||
2875 | * unpinned so that it is safe to reclaim the stale inode after the | ||
2876 | * flush call. | ||
2877 | */ | ||
2878 | if (xfs_iflags_test(ip, XFS_ISTALE)) { | ||
2879 | xfs_ifunlock(ip); | ||
2880 | return 0; | ||
2881 | } | ||
2882 | |||
2883 | /* | ||
2875 | * This may have been unpinned because the filesystem is shutting | 2884 | * This may have been unpinned because the filesystem is shutting |
2876 | * down forcibly. If that's the case we must not write this inode | 2885 | * down forcibly. If that's the case we must not write this inode |
2877 | * to disk, because the log record didn't make it to disk! | 2886 | * to disk, because the log record didn't make it to disk! |
diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c index 9e15a1185362..6be05f756d59 100644 --- a/fs/xfs/xfs_rtalloc.c +++ b/fs/xfs/xfs_rtalloc.c | |||
@@ -1517,6 +1517,8 @@ xfs_rtfree_range( | |||
1517 | */ | 1517 | */ |
1518 | error = xfs_rtfind_forw(mp, tp, end, mp->m_sb.sb_rextents - 1, | 1518 | error = xfs_rtfind_forw(mp, tp, end, mp->m_sb.sb_rextents - 1, |
1519 | &postblock); | 1519 | &postblock); |
1520 | if (error) | ||
1521 | return error; | ||
1520 | /* | 1522 | /* |
1521 | * If there are blocks not being freed at the front of the | 1523 | * If there are blocks not being freed at the front of the |
1522 | * old extent, add summary data for them to be allocated. | 1524 | * old extent, add summary data for them to be allocated. |
diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h index 9d7febde10a1..09469971472f 100644 --- a/include/acpi/platform/aclinux.h +++ b/include/acpi/platform/aclinux.h | |||
@@ -152,7 +152,7 @@ static inline void *acpi_os_acquire_object(acpi_cache_t * cache) | |||
152 | #include <linux/hardirq.h> | 152 | #include <linux/hardirq.h> |
153 | #define ACPI_PREEMPTION_POINT() \ | 153 | #define ACPI_PREEMPTION_POINT() \ |
154 | do { \ | 154 | do { \ |
155 | if (!in_atomic_preempt_off()) \ | 155 | if (!in_atomic_preempt_off() && !irqs_disabled()) \ |
156 | cond_resched(); \ | 156 | cond_resched(); \ |
157 | } while (0) | 157 | } while (0) |
158 | 158 | ||
diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h index ff7664e0c3cd..4c4e0f8375b3 100644 --- a/include/drm/ttm/ttm_bo_driver.h +++ b/include/drm/ttm/ttm_bo_driver.h | |||
@@ -353,6 +353,11 @@ struct ttm_bo_driver { | |||
353 | /* notify the driver we are taking a fault on this BO | 353 | /* notify the driver we are taking a fault on this BO |
354 | * and have reserved it */ | 354 | * and have reserved it */ |
355 | void (*fault_reserve_notify)(struct ttm_buffer_object *bo); | 355 | void (*fault_reserve_notify)(struct ttm_buffer_object *bo); |
356 | |||
357 | /** | ||
358 | * notify the driver that we're about to swap out this bo | ||
359 | */ | ||
360 | void (*swap_notify) (struct ttm_buffer_object *bo); | ||
356 | }; | 361 | }; |
357 | 362 | ||
358 | /** | 363 | /** |
diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 36924255c0d5..b926afe8c03e 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h | |||
@@ -80,7 +80,7 @@ char * __acpi_map_table (unsigned long phys_addr, unsigned long size); | |||
80 | void __acpi_unmap_table(char *map, unsigned long size); | 80 | void __acpi_unmap_table(char *map, unsigned long size); |
81 | int early_acpi_boot_init(void); | 81 | int early_acpi_boot_init(void); |
82 | int acpi_boot_init (void); | 82 | int acpi_boot_init (void); |
83 | int acpi_boot_table_init (void); | 83 | void acpi_boot_table_init (void); |
84 | int acpi_mps_check (void); | 84 | int acpi_mps_check (void); |
85 | int acpi_numa_init (void); | 85 | int acpi_numa_init (void); |
86 | 86 | ||
@@ -321,9 +321,9 @@ static inline int acpi_boot_init(void) | |||
321 | return 0; | 321 | return 0; |
322 | } | 322 | } |
323 | 323 | ||
324 | static inline int acpi_boot_table_init(void) | 324 | static inline void acpi_boot_table_init(void) |
325 | { | 325 | { |
326 | return 0; | 326 | return; |
327 | } | 327 | } |
328 | 328 | ||
329 | static inline int acpi_mps_check(void) | 329 | static inline int acpi_mps_check(void) |
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h index cd4349bdc34e..89c6249fc561 100644 --- a/include/linux/binfmts.h +++ b/include/linux/binfmts.h | |||
@@ -109,6 +109,7 @@ extern int prepare_binprm(struct linux_binprm *); | |||
109 | extern int __must_check remove_arg_zero(struct linux_binprm *); | 109 | extern int __must_check remove_arg_zero(struct linux_binprm *); |
110 | extern int search_binary_handler(struct linux_binprm *,struct pt_regs *); | 110 | extern int search_binary_handler(struct linux_binprm *,struct pt_regs *); |
111 | extern int flush_old_exec(struct linux_binprm * bprm); | 111 | extern int flush_old_exec(struct linux_binprm * bprm); |
112 | extern void setup_new_exec(struct linux_binprm * bprm); | ||
112 | 113 | ||
113 | extern int suid_dumpable; | 114 | extern int suid_dumpable; |
114 | #define SUID_DUMP_DISABLE 0 /* No setuid dumping */ | 115 | #define SUID_DUMP_DISABLE 0 /* No setuid dumping */ |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 9b98173a8184..5c8018977efa 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -938,6 +938,8 @@ extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt); | |||
938 | extern void blk_set_default_limits(struct queue_limits *lim); | 938 | extern void blk_set_default_limits(struct queue_limits *lim); |
939 | extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, | 939 | extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, |
940 | sector_t offset); | 940 | sector_t offset); |
941 | extern int bdev_stack_limits(struct queue_limits *t, struct block_device *bdev, | ||
942 | sector_t offset); | ||
941 | extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, | 943 | extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, |
942 | sector_t offset); | 944 | sector_t offset); |
943 | extern void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b); | 945 | extern void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b); |
@@ -1148,8 +1150,11 @@ static inline int queue_discard_alignment(struct request_queue *q) | |||
1148 | static inline int queue_sector_discard_alignment(struct request_queue *q, | 1150 | static inline int queue_sector_discard_alignment(struct request_queue *q, |
1149 | sector_t sector) | 1151 | sector_t sector) |
1150 | { | 1152 | { |
1151 | return ((sector << 9) - q->limits.discard_alignment) | 1153 | struct queue_limits *lim = &q->limits; |
1152 | & (q->limits.discard_granularity - 1); | 1154 | unsigned int alignment = (sector << 9) & (lim->discard_granularity - 1); |
1155 | |||
1156 | return (lim->discard_granularity + lim->discard_alignment - alignment) | ||
1157 | & (lim->discard_granularity - 1); | ||
1153 | } | 1158 | } |
1154 | 1159 | ||
1155 | static inline unsigned int queue_discard_zeroes_data(struct request_queue *q) | 1160 | static inline unsigned int queue_discard_zeroes_data(struct request_queue *q) |
diff --git a/include/linux/drbd.h b/include/linux/drbd.h index e84f4733cb55..78962272338a 100644 --- a/include/linux/drbd.h +++ b/include/linux/drbd.h | |||
@@ -53,7 +53,7 @@ | |||
53 | 53 | ||
54 | 54 | ||
55 | extern const char *drbd_buildtag(void); | 55 | extern const char *drbd_buildtag(void); |
56 | #define REL_VERSION "8.3.6" | 56 | #define REL_VERSION "8.3.7" |
57 | #define API_VERSION 88 | 57 | #define API_VERSION 88 |
58 | #define PRO_VERSION_MIN 86 | 58 | #define PRO_VERSION_MIN 86 |
59 | #define PRO_VERSION_MAX 91 | 59 | #define PRO_VERSION_MAX 91 |
diff --git a/include/linux/drbd_nl.h b/include/linux/drbd_nl.h index db5721ad50d1..a4d82f895994 100644 --- a/include/linux/drbd_nl.h +++ b/include/linux/drbd_nl.h | |||
@@ -69,6 +69,7 @@ NL_PACKET(disconnect, 6, ) | |||
69 | 69 | ||
70 | NL_PACKET(resize, 7, | 70 | NL_PACKET(resize, 7, |
71 | NL_INT64( 29, T_MAY_IGNORE, resize_size) | 71 | NL_INT64( 29, T_MAY_IGNORE, resize_size) |
72 | NL_BIT( 68, T_MAY_IGNORE, resize_force) | ||
72 | ) | 73 | ) |
73 | 74 | ||
74 | NL_PACKET(syncer_conf, 8, | 75 | NL_PACKET(syncer_conf, 8, |
diff --git a/include/linux/eventfd.h b/include/linux/eventfd.h index 94dd10366a78..91bb4f27238c 100644 --- a/include/linux/eventfd.h +++ b/include/linux/eventfd.h | |||
@@ -10,6 +10,7 @@ | |||
10 | 10 | ||
11 | #include <linux/fcntl.h> | 11 | #include <linux/fcntl.h> |
12 | #include <linux/file.h> | 12 | #include <linux/file.h> |
13 | #include <linux/wait.h> | ||
13 | 14 | ||
14 | /* | 15 | /* |
15 | * CAREFUL: Check include/asm-generic/fcntl.h when defining | 16 | * CAREFUL: Check include/asm-generic/fcntl.h when defining |
@@ -34,6 +35,9 @@ struct file *eventfd_fget(int fd); | |||
34 | struct eventfd_ctx *eventfd_ctx_fdget(int fd); | 35 | struct eventfd_ctx *eventfd_ctx_fdget(int fd); |
35 | struct eventfd_ctx *eventfd_ctx_fileget(struct file *file); | 36 | struct eventfd_ctx *eventfd_ctx_fileget(struct file *file); |
36 | int eventfd_signal(struct eventfd_ctx *ctx, int n); | 37 | int eventfd_signal(struct eventfd_ctx *ctx, int n); |
38 | ssize_t eventfd_ctx_read(struct eventfd_ctx *ctx, int no_wait, __u64 *cnt); | ||
39 | int eventfd_ctx_remove_wait_queue(struct eventfd_ctx *ctx, wait_queue_t *wait, | ||
40 | __u64 *cnt); | ||
37 | 41 | ||
38 | #else /* CONFIG_EVENTFD */ | 42 | #else /* CONFIG_EVENTFD */ |
39 | 43 | ||
@@ -61,6 +65,18 @@ static inline void eventfd_ctx_put(struct eventfd_ctx *ctx) | |||
61 | 65 | ||
62 | } | 66 | } |
63 | 67 | ||
68 | static inline ssize_t eventfd_ctx_read(struct eventfd_ctx *ctx, int no_wait, | ||
69 | __u64 *cnt) | ||
70 | { | ||
71 | return -ENOSYS; | ||
72 | } | ||
73 | |||
74 | static inline int eventfd_ctx_remove_wait_queue(struct eventfd_ctx *ctx, | ||
75 | wait_queue_t *wait, __u64 *cnt) | ||
76 | { | ||
77 | return -ENOSYS; | ||
78 | } | ||
79 | |||
64 | #endif | 80 | #endif |
65 | 81 | ||
66 | #endif /* _LINUX_EVENTFD_H */ | 82 | #endif /* _LINUX_EVENTFD_H */ |
diff --git a/include/linux/firewire-cdev.h b/include/linux/firewire-cdev.h index 1f716d9f714b..520ecf86cbb3 100644 --- a/include/linux/firewire-cdev.h +++ b/include/linux/firewire-cdev.h | |||
@@ -380,7 +380,7 @@ struct fw_cdev_initiate_bus_reset { | |||
380 | * @immediate: If non-zero, immediate key to insert before pointer | 380 | * @immediate: If non-zero, immediate key to insert before pointer |
381 | * @key: Upper 8 bits of root directory pointer | 381 | * @key: Upper 8 bits of root directory pointer |
382 | * @data: Userspace pointer to contents of descriptor block | 382 | * @data: Userspace pointer to contents of descriptor block |
383 | * @length: Length of descriptor block data, in bytes | 383 | * @length: Length of descriptor block data, in quadlets |
384 | * @handle: Handle to the descriptor, written by the kernel | 384 | * @handle: Handle to the descriptor, written by the kernel |
385 | * | 385 | * |
386 | * Add a descriptor block and optionally a preceding immediate key to the local | 386 | * Add a descriptor block and optionally a preceding immediate key to the local |
@@ -394,6 +394,8 @@ struct fw_cdev_initiate_bus_reset { | |||
394 | * If not 0, the @immediate field specifies an immediate key which will be | 394 | * If not 0, the @immediate field specifies an immediate key which will be |
395 | * inserted before the root directory pointer. | 395 | * inserted before the root directory pointer. |
396 | * | 396 | * |
397 | * @immediate, @key, and @data array elements are CPU-endian quadlets. | ||
398 | * | ||
397 | * If successful, the kernel adds the descriptor and writes back a handle to the | 399 | * If successful, the kernel adds the descriptor and writes back a handle to the |
398 | * kernel-side object to be used for later removal of the descriptor block and | 400 | * kernel-side object to be used for later removal of the descriptor block and |
399 | * immediate key. | 401 | * immediate key. |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 9147ca88f253..b1bcb275b596 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -2463,7 +2463,7 @@ int proc_nr_files(struct ctl_table *table, int write, | |||
2463 | 2463 | ||
2464 | int __init get_filesystem_list(char *buf); | 2464 | int __init get_filesystem_list(char *buf); |
2465 | 2465 | ||
2466 | #define ACC_MODE(x) ("\000\004\002\006"[(x)&O_ACCMODE]) | 2466 | #define ACC_MODE(x) ("\004\002\006\006"[(x)&O_ACCMODE]) |
2467 | #define OPEN_FMODE(flag) ((__force fmode_t)((flag + 1) & O_ACCMODE)) | 2467 | #define OPEN_FMODE(flag) ((__force fmode_t)((flag + 1) & O_ACCMODE)) |
2468 | 2468 | ||
2469 | #endif /* __KERNEL__ */ | 2469 | #endif /* __KERNEL__ */ |
diff --git a/include/linux/genhd.h b/include/linux/genhd.h index c6c0c41af35f..9717081c75ad 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h | |||
@@ -256,9 +256,9 @@ extern struct hd_struct *disk_map_sector_rcu(struct gendisk *disk, | |||
256 | #define part_stat_read(part, field) \ | 256 | #define part_stat_read(part, field) \ |
257 | ({ \ | 257 | ({ \ |
258 | typeof((part)->dkstats->field) res = 0; \ | 258 | typeof((part)->dkstats->field) res = 0; \ |
259 | int i; \ | 259 | unsigned int _cpu; \ |
260 | for_each_possible_cpu(i) \ | 260 | for_each_possible_cpu(_cpu) \ |
261 | res += per_cpu_ptr((part)->dkstats, i)->field; \ | 261 | res += per_cpu_ptr((part)->dkstats, _cpu)->field; \ |
262 | res; \ | 262 | res; \ |
263 | }) | 263 | }) |
264 | 264 | ||
diff --git a/include/linux/input.h b/include/linux/input.h index 7be8a6537b57..735ceaf1bc2d 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -660,6 +660,7 @@ struct input_absinfo { | |||
660 | #define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */ | 660 | #define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */ |
661 | #define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */ | 661 | #define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */ |
662 | #define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */ | 662 | #define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */ |
663 | #define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */ | ||
663 | 664 | ||
664 | #define ABS_MAX 0x3f | 665 | #define ABS_MAX 0x3f |
665 | #define ABS_CNT (ABS_MAX+1) | 666 | #define ABS_CNT (ABS_MAX+1) |
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h index a63235996309..78ef023227d4 100644 --- a/include/linux/iocontext.h +++ b/include/linux/iocontext.h | |||
@@ -4,32 +4,6 @@ | |||
4 | #include <linux/radix-tree.h> | 4 | #include <linux/radix-tree.h> |
5 | #include <linux/rcupdate.h> | 5 | #include <linux/rcupdate.h> |
6 | 6 | ||
7 | /* | ||
8 | * This is the per-process anticipatory I/O scheduler state. | ||
9 | */ | ||
10 | struct as_io_context { | ||
11 | spinlock_t lock; | ||
12 | |||
13 | void (*dtor)(struct as_io_context *aic); /* destructor */ | ||
14 | void (*exit)(struct as_io_context *aic); /* called on task exit */ | ||
15 | |||
16 | unsigned long state; | ||
17 | atomic_t nr_queued; /* queued reads & sync writes */ | ||
18 | atomic_t nr_dispatched; /* number of requests gone to the drivers */ | ||
19 | |||
20 | /* IO History tracking */ | ||
21 | /* Thinktime */ | ||
22 | unsigned long last_end_request; | ||
23 | unsigned long ttime_total; | ||
24 | unsigned long ttime_samples; | ||
25 | unsigned long ttime_mean; | ||
26 | /* Layout pattern */ | ||
27 | unsigned int seek_samples; | ||
28 | sector_t last_request_pos; | ||
29 | u64 seek_total; | ||
30 | sector_t seek_mean; | ||
31 | }; | ||
32 | |||
33 | struct cfq_queue; | 7 | struct cfq_queue; |
34 | struct cfq_io_context { | 8 | struct cfq_io_context { |
35 | void *key; | 9 | void *key; |
@@ -78,7 +52,6 @@ struct io_context { | |||
78 | unsigned long last_waited; /* Time last woken after wait for request */ | 52 | unsigned long last_waited; /* Time last woken after wait for request */ |
79 | int nr_batch_requests; /* Number of requests left in the batch */ | 53 | int nr_batch_requests; /* Number of requests left in the batch */ |
80 | 54 | ||
81 | struct as_io_context *aic; | ||
82 | struct radix_tree_root radix_root; | 55 | struct radix_tree_root radix_root; |
83 | struct hlist_head cic_list; | 56 | struct hlist_head cic_list; |
84 | void *ioc_data; | 57 | void *ioc_data; |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 3fc9f5aab5f8..328bca609b9b 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
@@ -734,6 +734,10 @@ struct sysinfo { | |||
734 | /* Force a compilation error if condition is constant and true */ | 734 | /* Force a compilation error if condition is constant and true */ |
735 | #define MAYBE_BUILD_BUG_ON(cond) ((void)sizeof(char[1 - 2 * !!(cond)])) | 735 | #define MAYBE_BUILD_BUG_ON(cond) ((void)sizeof(char[1 - 2 * !!(cond)])) |
736 | 736 | ||
737 | /* Force a compilation error if a constant expression is not a power of 2 */ | ||
738 | #define BUILD_BUG_ON_NOT_POWER_OF_2(n) \ | ||
739 | BUILD_BUG_ON((n) == 0 || (((n) & ((n) - 1)) != 0)) | ||
740 | |||
737 | /* Force a compilation error if condition is true, but also produce a | 741 | /* Force a compilation error if condition is true, but also produce a |
738 | result (of value 0 and type size_t), so the expression can be used | 742 | result (of value 0 and type size_t), so the expression can be used |
739 | e.g. in a structure initializer (or where-ever else comma expressions | 743 | e.g. in a structure initializer (or where-ever else comma expressions |
diff --git a/include/linux/kfifo.h b/include/linux/kfifo.h index 7c6b32a1421c..6f6c5f300af6 100644 --- a/include/linux/kfifo.h +++ b/include/linux/kfifo.h | |||
@@ -67,7 +67,7 @@ struct kfifo { | |||
67 | /** | 67 | /** |
68 | * DECLARE_KFIFO - macro to declare a kfifo and the associated buffer | 68 | * DECLARE_KFIFO - macro to declare a kfifo and the associated buffer |
69 | * @name: name of the declared kfifo datatype | 69 | * @name: name of the declared kfifo datatype |
70 | * @size: size of the fifo buffer | 70 | * @size: size of the fifo buffer. Must be a power of two. |
71 | * | 71 | * |
72 | * Note1: the macro can be used inside struct or union declaration | 72 | * Note1: the macro can be used inside struct or union declaration |
73 | * Note2: the macro creates two objects: | 73 | * Note2: the macro creates two objects: |
@@ -91,7 +91,7 @@ union { \ | |||
91 | /** | 91 | /** |
92 | * DEFINE_KFIFO - macro to define and initialize a kfifo | 92 | * DEFINE_KFIFO - macro to define and initialize a kfifo |
93 | * @name: name of the declared kfifo datatype | 93 | * @name: name of the declared kfifo datatype |
94 | * @size: size of the fifo buffer | 94 | * @size: size of the fifo buffer. Must be a power of two. |
95 | * | 95 | * |
96 | * Note1: the macro can be used for global and local kfifo data type variables | 96 | * Note1: the macro can be used for global and local kfifo data type variables |
97 | * Note2: the macro creates two objects: | 97 | * Note2: the macro creates two objects: |
@@ -104,15 +104,28 @@ union { \ | |||
104 | 104 | ||
105 | #undef __kfifo_initializer | 105 | #undef __kfifo_initializer |
106 | 106 | ||
107 | extern void kfifo_init(struct kfifo *fifo, unsigned char *buffer, | 107 | extern void kfifo_init(struct kfifo *fifo, void *buffer, |
108 | unsigned int size); | 108 | unsigned int size); |
109 | extern __must_check int kfifo_alloc(struct kfifo *fifo, unsigned int size, | 109 | extern __must_check int kfifo_alloc(struct kfifo *fifo, unsigned int size, |
110 | gfp_t gfp_mask); | 110 | gfp_t gfp_mask); |
111 | extern void kfifo_free(struct kfifo *fifo); | 111 | extern void kfifo_free(struct kfifo *fifo); |
112 | extern unsigned int kfifo_in(struct kfifo *fifo, | 112 | extern unsigned int kfifo_in(struct kfifo *fifo, |
113 | const unsigned char *from, unsigned int len); | 113 | const void *from, unsigned int len); |
114 | extern __must_check unsigned int kfifo_out(struct kfifo *fifo, | 114 | extern __must_check unsigned int kfifo_out(struct kfifo *fifo, |
115 | unsigned char *to, unsigned int len); | 115 | void *to, unsigned int len); |
116 | extern __must_check unsigned int kfifo_out_peek(struct kfifo *fifo, | ||
117 | void *to, unsigned int len, unsigned offset); | ||
118 | |||
119 | /** | ||
120 | * kfifo_initialized - Check if kfifo is initialized. | ||
121 | * @fifo: fifo to check | ||
122 | * Return %true if FIFO is initialized, otherwise %false. | ||
123 | * Assumes the fifo was 0 before. | ||
124 | */ | ||
125 | static inline bool kfifo_initialized(struct kfifo *fifo) | ||
126 | { | ||
127 | return fifo->buffer != 0; | ||
128 | } | ||
116 | 129 | ||
117 | /** | 130 | /** |
118 | * kfifo_reset - removes the entire FIFO contents | 131 | * kfifo_reset - removes the entire FIFO contents |
@@ -194,7 +207,7 @@ static inline __must_check unsigned int kfifo_avail(struct kfifo *fifo) | |||
194 | * bytes copied. | 207 | * bytes copied. |
195 | */ | 208 | */ |
196 | static inline unsigned int kfifo_in_locked(struct kfifo *fifo, | 209 | static inline unsigned int kfifo_in_locked(struct kfifo *fifo, |
197 | const unsigned char *from, unsigned int n, spinlock_t *lock) | 210 | const void *from, unsigned int n, spinlock_t *lock) |
198 | { | 211 | { |
199 | unsigned long flags; | 212 | unsigned long flags; |
200 | unsigned int ret; | 213 | unsigned int ret; |
@@ -219,7 +232,7 @@ static inline unsigned int kfifo_in_locked(struct kfifo *fifo, | |||
219 | * @to buffer and returns the number of copied bytes. | 232 | * @to buffer and returns the number of copied bytes. |
220 | */ | 233 | */ |
221 | static inline __must_check unsigned int kfifo_out_locked(struct kfifo *fifo, | 234 | static inline __must_check unsigned int kfifo_out_locked(struct kfifo *fifo, |
222 | unsigned char *to, unsigned int n, spinlock_t *lock) | 235 | void *to, unsigned int n, spinlock_t *lock) |
223 | { | 236 | { |
224 | unsigned long flags; | 237 | unsigned long flags; |
225 | unsigned int ret; | 238 | unsigned int ret; |
@@ -228,13 +241,6 @@ static inline __must_check unsigned int kfifo_out_locked(struct kfifo *fifo, | |||
228 | 241 | ||
229 | ret = kfifo_out(fifo, to, n); | 242 | ret = kfifo_out(fifo, to, n); |
230 | 243 | ||
231 | /* | ||
232 | * optimization: if the FIFO is empty, set the indices to 0 | ||
233 | * so we don't wrap the next time | ||
234 | */ | ||
235 | if (kfifo_is_empty(fifo)) | ||
236 | kfifo_reset(fifo); | ||
237 | |||
238 | spin_unlock_irqrestore(lock, flags); | 244 | spin_unlock_irqrestore(lock, flags); |
239 | 245 | ||
240 | return ret; | 246 | return ret; |
@@ -242,11 +248,11 @@ static inline __must_check unsigned int kfifo_out_locked(struct kfifo *fifo, | |||
242 | 248 | ||
243 | extern void kfifo_skip(struct kfifo *fifo, unsigned int len); | 249 | extern void kfifo_skip(struct kfifo *fifo, unsigned int len); |
244 | 250 | ||
245 | extern __must_check unsigned int kfifo_from_user(struct kfifo *fifo, | 251 | extern __must_check int kfifo_from_user(struct kfifo *fifo, |
246 | const void __user *from, unsigned int n); | 252 | const void __user *from, unsigned int n, unsigned *lenout); |
247 | 253 | ||
248 | extern __must_check unsigned int kfifo_to_user(struct kfifo *fifo, | 254 | extern __must_check int kfifo_to_user(struct kfifo *fifo, |
249 | void __user *to, unsigned int n); | 255 | void __user *to, unsigned int n, unsigned *lenout); |
250 | 256 | ||
251 | /* | 257 | /* |
252 | * __kfifo_add_out internal helper function for updating the out offset | 258 | * __kfifo_add_out internal helper function for updating the out offset |
diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h index e32aa268efac..24b44145a886 100644 --- a/include/linux/kmsg_dump.h +++ b/include/linux/kmsg_dump.h | |||
@@ -17,6 +17,7 @@ | |||
17 | enum kmsg_dump_reason { | 17 | enum kmsg_dump_reason { |
18 | KMSG_DUMP_OOPS, | 18 | KMSG_DUMP_OOPS, |
19 | KMSG_DUMP_PANIC, | 19 | KMSG_DUMP_PANIC, |
20 | KMSG_DUMP_KEXEC, | ||
20 | }; | 21 | }; |
21 | 22 | ||
22 | /** | 23 | /** |
diff --git a/include/linux/mfd/tmio.h b/include/linux/mfd/tmio.h index 6b9c5d06690c..9cb1834deffa 100644 --- a/include/linux/mfd/tmio.h +++ b/include/linux/mfd/tmio.h | |||
@@ -2,6 +2,8 @@ | |||
2 | #define MFD_TMIO_H | 2 | #define MFD_TMIO_H |
3 | 3 | ||
4 | #include <linux/fb.h> | 4 | #include <linux/fb.h> |
5 | #include <linux/io.h> | ||
6 | #include <linux/platform_device.h> | ||
5 | 7 | ||
6 | #define tmio_ioread8(addr) readb(addr) | 8 | #define tmio_ioread8(addr) readb(addr) |
7 | #define tmio_ioread16(addr) readw(addr) | 9 | #define tmio_ioread16(addr) readw(addr) |
@@ -18,11 +20,48 @@ | |||
18 | writew((val) >> 16, (addr) + 2); \ | 20 | writew((val) >> 16, (addr) + 2); \ |
19 | } while (0) | 21 | } while (0) |
20 | 22 | ||
23 | #define CNF_CMD 0x04 | ||
24 | #define CNF_CTL_BASE 0x10 | ||
25 | #define CNF_INT_PIN 0x3d | ||
26 | #define CNF_STOP_CLK_CTL 0x40 | ||
27 | #define CNF_GCLK_CTL 0x41 | ||
28 | #define CNF_SD_CLK_MODE 0x42 | ||
29 | #define CNF_PIN_STATUS 0x44 | ||
30 | #define CNF_PWR_CTL_1 0x48 | ||
31 | #define CNF_PWR_CTL_2 0x49 | ||
32 | #define CNF_PWR_CTL_3 0x4a | ||
33 | #define CNF_CARD_DETECT_MODE 0x4c | ||
34 | #define CNF_SD_SLOT 0x50 | ||
35 | #define CNF_EXT_GCLK_CTL_1 0xf0 | ||
36 | #define CNF_EXT_GCLK_CTL_2 0xf1 | ||
37 | #define CNF_EXT_GCLK_CTL_3 0xf9 | ||
38 | #define CNF_SD_LED_EN_1 0xfa | ||
39 | #define CNF_SD_LED_EN_2 0xfe | ||
40 | |||
41 | #define SDCREN 0x2 /* Enable access to MMC CTL regs. (flag in COMMAND_REG)*/ | ||
42 | |||
43 | #define sd_config_write8(base, shift, reg, val) \ | ||
44 | tmio_iowrite8((val), (base) + ((reg) << (shift))) | ||
45 | #define sd_config_write16(base, shift, reg, val) \ | ||
46 | tmio_iowrite16((val), (base) + ((reg) << (shift))) | ||
47 | #define sd_config_write32(base, shift, reg, val) \ | ||
48 | do { \ | ||
49 | tmio_iowrite16((val), (base) + ((reg) << (shift))); \ | ||
50 | tmio_iowrite16((val) >> 16, (base) + ((reg + 2) << (shift))); \ | ||
51 | } while (0) | ||
52 | |||
53 | int tmio_core_mmc_enable(void __iomem *cnf, int shift, unsigned long base); | ||
54 | int tmio_core_mmc_resume(void __iomem *cnf, int shift, unsigned long base); | ||
55 | void tmio_core_mmc_pwr(void __iomem *cnf, int shift, int state); | ||
56 | void tmio_core_mmc_clk_div(void __iomem *cnf, int shift, int state); | ||
57 | |||
21 | /* | 58 | /* |
22 | * data for the MMC controller | 59 | * data for the MMC controller |
23 | */ | 60 | */ |
24 | struct tmio_mmc_data { | 61 | struct tmio_mmc_data { |
25 | const unsigned int hclk; | 62 | const unsigned int hclk; |
63 | void (*set_pwr)(struct platform_device *host, int state); | ||
64 | void (*set_clk_div)(struct platform_device *host, int state); | ||
26 | }; | 65 | }; |
27 | 66 | ||
28 | /* | 67 | /* |
diff --git a/include/linux/mfd/wm8350/pmic.h b/include/linux/mfd/wm8350/pmic.h index be3264e286e0..e786fe9841ef 100644 --- a/include/linux/mfd/wm8350/pmic.h +++ b/include/linux/mfd/wm8350/pmic.h | |||
@@ -666,20 +666,20 @@ | |||
666 | #define WM8350_ISINK_FLASH_DUR_64MS (1 << 8) | 666 | #define WM8350_ISINK_FLASH_DUR_64MS (1 << 8) |
667 | #define WM8350_ISINK_FLASH_DUR_96MS (2 << 8) | 667 | #define WM8350_ISINK_FLASH_DUR_96MS (2 << 8) |
668 | #define WM8350_ISINK_FLASH_DUR_1024MS (3 << 8) | 668 | #define WM8350_ISINK_FLASH_DUR_1024MS (3 << 8) |
669 | #define WM8350_ISINK_FLASH_ON_INSTANT (0 << 4) | 669 | #define WM8350_ISINK_FLASH_ON_INSTANT (0 << 0) |
670 | #define WM8350_ISINK_FLASH_ON_0_25S (1 << 4) | 670 | #define WM8350_ISINK_FLASH_ON_0_25S (1 << 0) |
671 | #define WM8350_ISINK_FLASH_ON_0_50S (2 << 4) | 671 | #define WM8350_ISINK_FLASH_ON_0_50S (2 << 0) |
672 | #define WM8350_ISINK_FLASH_ON_1_00S (3 << 4) | 672 | #define WM8350_ISINK_FLASH_ON_1_00S (3 << 0) |
673 | #define WM8350_ISINK_FLASH_ON_1_95S (1 << 4) | 673 | #define WM8350_ISINK_FLASH_ON_1_95S (1 << 0) |
674 | #define WM8350_ISINK_FLASH_ON_3_91S (2 << 4) | 674 | #define WM8350_ISINK_FLASH_ON_3_91S (2 << 0) |
675 | #define WM8350_ISINK_FLASH_ON_7_80S (3 << 4) | 675 | #define WM8350_ISINK_FLASH_ON_7_80S (3 << 0) |
676 | #define WM8350_ISINK_FLASH_OFF_INSTANT (0 << 0) | 676 | #define WM8350_ISINK_FLASH_OFF_INSTANT (0 << 4) |
677 | #define WM8350_ISINK_FLASH_OFF_0_25S (1 << 0) | 677 | #define WM8350_ISINK_FLASH_OFF_0_25S (1 << 4) |
678 | #define WM8350_ISINK_FLASH_OFF_0_50S (2 << 0) | 678 | #define WM8350_ISINK_FLASH_OFF_0_50S (2 << 4) |
679 | #define WM8350_ISINK_FLASH_OFF_1_00S (3 << 0) | 679 | #define WM8350_ISINK_FLASH_OFF_1_00S (3 << 4) |
680 | #define WM8350_ISINK_FLASH_OFF_1_95S (1 << 0) | 680 | #define WM8350_ISINK_FLASH_OFF_1_95S (1 << 4) |
681 | #define WM8350_ISINK_FLASH_OFF_3_91S (2 << 0) | 681 | #define WM8350_ISINK_FLASH_OFF_3_91S (2 << 4) |
682 | #define WM8350_ISINK_FLASH_OFF_7_80S (3 << 0) | 682 | #define WM8350_ISINK_FLASH_OFF_7_80S (3 << 4) |
683 | 683 | ||
684 | /* | 684 | /* |
685 | * Regulator Interrupts. | 685 | * Regulator Interrupts. |
diff --git a/include/linux/mm.h b/include/linux/mm.h index 2265f28eb47a..60c467bfbabd 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -1089,6 +1089,7 @@ extern void zone_pcp_update(struct zone *zone); | |||
1089 | 1089 | ||
1090 | /* nommu.c */ | 1090 | /* nommu.c */ |
1091 | extern atomic_long_t mmap_pages_allocated; | 1091 | extern atomic_long_t mmap_pages_allocated; |
1092 | extern int nommu_shrink_inode_mappings(struct inode *, size_t, size_t); | ||
1092 | 1093 | ||
1093 | /* prio_tree.c */ | 1094 | /* prio_tree.c */ |
1094 | void vma_prio_tree_add(struct vm_area_struct *, struct vm_area_struct *old); | 1095 | void vma_prio_tree_add(struct vm_area_struct *, struct vm_area_struct *old); |
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 84d020bed083..36f96271306c 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h | |||
@@ -122,7 +122,7 @@ struct vm_region { | |||
122 | unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ | 122 | unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ |
123 | struct file *vm_file; /* the backing file or NULL */ | 123 | struct file *vm_file; /* the backing file or NULL */ |
124 | 124 | ||
125 | atomic_t vm_usage; /* region usage count */ | 125 | int vm_usage; /* region usage count (access under nommu_region_sem) */ |
126 | bool vm_icache_flushed : 1; /* true if the icache has been flushed for | 126 | bool vm_icache_flushed : 1; /* true if the icache has been flushed for |
127 | * this region */ | 127 | * this region */ |
128 | }; | 128 | }; |
@@ -205,10 +205,12 @@ struct mm_struct { | |||
205 | struct vm_area_struct * mmap; /* list of VMAs */ | 205 | struct vm_area_struct * mmap; /* list of VMAs */ |
206 | struct rb_root mm_rb; | 206 | struct rb_root mm_rb; |
207 | struct vm_area_struct * mmap_cache; /* last find_vma result */ | 207 | struct vm_area_struct * mmap_cache; /* last find_vma result */ |
208 | #ifdef CONFIG_MMU | ||
208 | unsigned long (*get_unmapped_area) (struct file *filp, | 209 | unsigned long (*get_unmapped_area) (struct file *filp, |
209 | unsigned long addr, unsigned long len, | 210 | unsigned long addr, unsigned long len, |
210 | unsigned long pgoff, unsigned long flags); | 211 | unsigned long pgoff, unsigned long flags); |
211 | void (*unmap_area) (struct mm_struct *mm, unsigned long addr); | 212 | void (*unmap_area) (struct mm_struct *mm, unsigned long addr); |
213 | #endif | ||
212 | unsigned long mmap_base; /* base of mmap area */ | 214 | unsigned long mmap_base; /* base of mmap area */ |
213 | unsigned long task_size; /* size of task vm space */ | 215 | unsigned long task_size; /* size of task vm space */ |
214 | unsigned long cached_hole_size; /* if non-zero, the largest hole below free_area_cache */ | 216 | unsigned long cached_hole_size; /* if non-zero, the largest hole below free_area_cache */ |
diff --git a/include/linux/mtd/pismo.h b/include/linux/mtd/pismo.h new file mode 100644 index 000000000000..8dfb7e1421c5 --- /dev/null +++ b/include/linux/mtd/pismo.h | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * PISMO memory driver - http://www.pismoworld.org/ | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License. | ||
7 | */ | ||
8 | #ifndef __LINUX_MTD_PISMO_H | ||
9 | #define __LINUX_MTD_PISMO_H | ||
10 | |||
11 | struct pismo_pdata { | ||
12 | void (*set_vpp)(void *, int); | ||
13 | void *vpp_data; | ||
14 | phys_addr_t cs_addrs[5]; | ||
15 | }; | ||
16 | |||
17 | #endif | ||
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index ed5d7501e181..3c62ed408492 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h | |||
@@ -253,6 +253,8 @@ extern struct page * read_cache_page_async(struct address_space *mapping, | |||
253 | extern struct page * read_cache_page(struct address_space *mapping, | 253 | extern struct page * read_cache_page(struct address_space *mapping, |
254 | pgoff_t index, filler_t *filler, | 254 | pgoff_t index, filler_t *filler, |
255 | void *data); | 255 | void *data); |
256 | extern struct page * read_cache_page_gfp(struct address_space *mapping, | ||
257 | pgoff_t index, gfp_t gfp_mask); | ||
256 | extern int read_cache_pages(struct address_space *mapping, | 258 | extern int read_cache_pages(struct address_space *mapping, |
257 | struct list_head *pages, filler_t *filler, void *data); | 259 | struct list_head *pages, filler_t *filler, void *data); |
258 | 260 | ||
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index c66b34f75eea..8fa71874113f 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h | |||
@@ -814,9 +814,14 @@ extern int perf_event_overflow(struct perf_event *event, int nmi, | |||
814 | */ | 814 | */ |
815 | static inline int is_software_event(struct perf_event *event) | 815 | static inline int is_software_event(struct perf_event *event) |
816 | { | 816 | { |
817 | return (event->attr.type != PERF_TYPE_RAW) && | 817 | switch (event->attr.type) { |
818 | (event->attr.type != PERF_TYPE_HARDWARE) && | 818 | case PERF_TYPE_SOFTWARE: |
819 | (event->attr.type != PERF_TYPE_HW_CACHE); | 819 | case PERF_TYPE_TRACEPOINT: |
820 | /* for now the breakpoint stuff also works as software event */ | ||
821 | case PERF_TYPE_BREAKPOINT: | ||
822 | return 1; | ||
823 | } | ||
824 | return 0; | ||
820 | } | 825 | } |
821 | 826 | ||
822 | extern atomic_t perf_swevent_enabled[PERF_COUNT_SW_MAX]; | 827 | extern atomic_t perf_swevent_enabled[PERF_COUNT_SW_MAX]; |
diff --git a/include/linux/phy.h b/include/linux/phy.h index 7968defd2fa7..6a7eb402165d 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h | |||
@@ -485,6 +485,7 @@ void phy_driver_unregister(struct phy_driver *drv); | |||
485 | int phy_driver_register(struct phy_driver *new_driver); | 485 | int phy_driver_register(struct phy_driver *new_driver); |
486 | void phy_prepare_link(struct phy_device *phydev, | 486 | void phy_prepare_link(struct phy_device *phydev, |
487 | void (*adjust_link)(struct net_device *)); | 487 | void (*adjust_link)(struct net_device *)); |
488 | void phy_state_machine(struct work_struct *work); | ||
488 | void phy_start_machine(struct phy_device *phydev, | 489 | void phy_start_machine(struct phy_device *phydev, |
489 | void (*handler)(struct net_device *)); | 490 | void (*handler)(struct net_device *)); |
490 | void phy_stop_machine(struct phy_device *phydev); | 491 | void phy_stop_machine(struct phy_device *phydev); |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 8d4991be9d53..abdfacc58653 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -377,6 +377,8 @@ extern int sysctl_max_map_count; | |||
377 | 377 | ||
378 | #include <linux/aio.h> | 378 | #include <linux/aio.h> |
379 | 379 | ||
380 | #ifdef CONFIG_MMU | ||
381 | extern void arch_pick_mmap_layout(struct mm_struct *mm); | ||
380 | extern unsigned long | 382 | extern unsigned long |
381 | arch_get_unmapped_area(struct file *, unsigned long, unsigned long, | 383 | arch_get_unmapped_area(struct file *, unsigned long, unsigned long, |
382 | unsigned long, unsigned long); | 384 | unsigned long, unsigned long); |
@@ -386,6 +388,9 @@ arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr, | |||
386 | unsigned long flags); | 388 | unsigned long flags); |
387 | extern void arch_unmap_area(struct mm_struct *, unsigned long); | 389 | extern void arch_unmap_area(struct mm_struct *, unsigned long); |
388 | extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long); | 390 | extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long); |
391 | #else | ||
392 | static inline void arch_pick_mmap_layout(struct mm_struct *mm) {} | ||
393 | #endif | ||
389 | 394 | ||
390 | #if USE_SPLIT_PTLOCKS | 395 | #if USE_SPLIT_PTLOCKS |
391 | /* | 396 | /* |
@@ -1364,7 +1369,7 @@ struct task_struct { | |||
1364 | char comm[TASK_COMM_LEN]; /* executable name excluding path | 1369 | char comm[TASK_COMM_LEN]; /* executable name excluding path |
1365 | - access with [gs]et_task_comm (which lock | 1370 | - access with [gs]et_task_comm (which lock |
1366 | it with task_lock()) | 1371 | it with task_lock()) |
1367 | - initialized normally by flush_old_exec */ | 1372 | - initialized normally by setup_new_exec */ |
1368 | /* file system info */ | 1373 | /* file system info */ |
1369 | int link_count, total_link_count; | 1374 | int link_count, total_link_count; |
1370 | #ifdef CONFIG_SYSVIPC | 1375 | #ifdef CONFIG_SYSVIPC |
@@ -2491,8 +2496,6 @@ static inline void set_task_cpu(struct task_struct *p, unsigned int cpu) | |||
2491 | 2496 | ||
2492 | #endif /* CONFIG_SMP */ | 2497 | #endif /* CONFIG_SMP */ |
2493 | 2498 | ||
2494 | extern void arch_pick_mmap_layout(struct mm_struct *mm); | ||
2495 | |||
2496 | #ifdef CONFIG_TRACING | 2499 | #ifdef CONFIG_TRACING |
2497 | extern void | 2500 | extern void |
2498 | __trace_special(void *__tr, void *__data, | 2501 | __trace_special(void *__tr, void *__data, |
diff --git a/include/linux/serio.h b/include/linux/serio.h index e2f3044d4a4a..813d26c247ec 100644 --- a/include/linux/serio.h +++ b/include/linux/serio.h | |||
@@ -136,25 +136,6 @@ static inline void serio_continue_rx(struct serio *serio) | |||
136 | spin_unlock_irq(&serio->lock); | 136 | spin_unlock_irq(&serio->lock); |
137 | } | 137 | } |
138 | 138 | ||
139 | /* | ||
140 | * Use the following functions to pin serio's driver in process context | ||
141 | */ | ||
142 | static inline int serio_pin_driver(struct serio *serio) | ||
143 | { | ||
144 | return mutex_lock_interruptible(&serio->drv_mutex); | ||
145 | } | ||
146 | |||
147 | static inline void serio_pin_driver_uninterruptible(struct serio *serio) | ||
148 | { | ||
149 | mutex_lock(&serio->drv_mutex); | ||
150 | } | ||
151 | |||
152 | static inline void serio_unpin_driver(struct serio *serio) | ||
153 | { | ||
154 | mutex_unlock(&serio->drv_mutex); | ||
155 | } | ||
156 | |||
157 | |||
158 | #endif | 139 | #endif |
159 | 140 | ||
160 | /* | 141 | /* |
diff --git a/include/linux/spi/ad7879.h b/include/linux/spi/ad7879.h index 4231104c9afa..6334cee1a3be 100644 --- a/include/linux/spi/ad7879.h +++ b/include/linux/spi/ad7879.h | |||
@@ -28,8 +28,12 @@ struct ad7879_platform_data { | |||
28 | * 1 = 4, 2 = 8, 3 = 16 (median > averaging) | 28 | * 1 = 4, 2 = 8, 3 = 16 (median > averaging) |
29 | */ | 29 | */ |
30 | u8 median; | 30 | u8 median; |
31 | /* 1 = AUX/VBAT/GPIO set to GPIO Output */ | 31 | /* 1 = AUX/VBAT/GPIO export GPIO to gpiolib |
32 | u8 gpio_output; | 32 | * requires CONFIG_GPIOLIB |
33 | /* Initial GPIO pin state (valid if gpio_output = 1) */ | 33 | */ |
34 | u8 gpio_default; | 34 | bool gpio_export; |
35 | /* identifies the first GPIO number handled by this chip; | ||
36 | * or, if negative, requests dynamic ID allocation. | ||
37 | */ | ||
38 | s32 gpio_base; | ||
35 | }; | 39 | }; |
diff --git a/include/linux/string.h b/include/linux/string.h index 651839a2a755..a716ee2a8adb 100644 --- a/include/linux/string.h +++ b/include/linux/string.h | |||
@@ -72,7 +72,10 @@ static inline __must_check char *strstrip(char *str) | |||
72 | } | 72 | } |
73 | 73 | ||
74 | #ifndef __HAVE_ARCH_STRSTR | 74 | #ifndef __HAVE_ARCH_STRSTR |
75 | extern char * strstr(const char *,const char *); | 75 | extern char * strstr(const char *, const char *); |
76 | #endif | ||
77 | #ifndef __HAVE_ARCH_STRNSTR | ||
78 | extern char * strnstr(const char *, const char *, size_t); | ||
76 | #endif | 79 | #endif |
77 | #ifndef __HAVE_ARCH_STRLEN | 80 | #ifndef __HAVE_ARCH_STRLEN |
78 | extern __kernel_size_t strlen(const char *); | 81 | extern __kernel_size_t strlen(const char *); |
diff --git a/include/linux/topology.h b/include/linux/topology.h index 57e63579bfdd..5b81156780b1 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h | |||
@@ -99,7 +99,7 @@ int arch_update_cpu_topology(void); | |||
99 | | 1*SD_WAKE_AFFINE \ | 99 | | 1*SD_WAKE_AFFINE \ |
100 | | 1*SD_SHARE_CPUPOWER \ | 100 | | 1*SD_SHARE_CPUPOWER \ |
101 | | 0*SD_POWERSAVINGS_BALANCE \ | 101 | | 0*SD_POWERSAVINGS_BALANCE \ |
102 | | 0*SD_SHARE_PKG_RESOURCES \ | 102 | | 1*SD_SHARE_PKG_RESOURCES \ |
103 | | 0*SD_SERIALIZE \ | 103 | | 0*SD_SERIALIZE \ |
104 | | 0*SD_PREFER_SIBLING \ | 104 | | 0*SD_PREFER_SIBLING \ |
105 | , \ | 105 | , \ |
diff --git a/include/linux/tty.h b/include/linux/tty.h index ef3a2947b102..6abfcf5b5887 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
@@ -464,7 +464,7 @@ extern int tty_port_alloc_xmit_buf(struct tty_port *port); | |||
464 | extern void tty_port_free_xmit_buf(struct tty_port *port); | 464 | extern void tty_port_free_xmit_buf(struct tty_port *port); |
465 | extern void tty_port_put(struct tty_port *port); | 465 | extern void tty_port_put(struct tty_port *port); |
466 | 466 | ||
467 | extern inline struct tty_port *tty_port_get(struct tty_port *port) | 467 | static inline struct tty_port *tty_port_get(struct tty_port *port) |
468 | { | 468 | { |
469 | if (port) | 469 | if (port) |
470 | kref_get(&port->kref); | 470 | kref_get(&port->kref); |
@@ -486,7 +486,7 @@ extern void tty_port_close(struct tty_port *port, | |||
486 | struct tty_struct *tty, struct file *filp); | 486 | struct tty_struct *tty, struct file *filp); |
487 | extern int tty_port_open(struct tty_port *port, | 487 | extern int tty_port_open(struct tty_port *port, |
488 | struct tty_struct *tty, struct file *filp); | 488 | struct tty_struct *tty, struct file *filp); |
489 | extern inline int tty_port_users(struct tty_port *port) | 489 | static inline int tty_port_users(struct tty_port *port) |
490 | { | 490 | { |
491 | return port->count + port->blocked_open; | 491 | return port->count + port->blocked_open; |
492 | } | 492 | } |
diff --git a/include/linux/usb.h b/include/linux/usb.h index e101a2d04d75..d7ace1b80f09 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
@@ -192,6 +192,7 @@ struct usb_interface { | |||
192 | unsigned needs_altsetting0:1; /* switch to altsetting 0 is pending */ | 192 | unsigned needs_altsetting0:1; /* switch to altsetting 0 is pending */ |
193 | unsigned needs_binding:1; /* needs delayed unbind/rebind */ | 193 | unsigned needs_binding:1; /* needs delayed unbind/rebind */ |
194 | unsigned reset_running:1; | 194 | unsigned reset_running:1; |
195 | unsigned resetting_device:1; /* true: bandwidth alloc after reset */ | ||
195 | 196 | ||
196 | struct device dev; /* interface specific device info */ | 197 | struct device dev; /* interface specific device info */ |
197 | struct device *usb_dev; | 198 | struct device *usb_dev; |
diff --git a/include/net/ip.h b/include/net/ip.h index d9a0e74d8923..fb63371c07a8 100644 --- a/include/net/ip.h +++ b/include/net/ip.h | |||
@@ -338,7 +338,7 @@ static inline int sk_mc_loop(struct sock *sk) | |||
338 | return inet6_sk(sk)->mc_loop; | 338 | return inet6_sk(sk)->mc_loop; |
339 | #endif | 339 | #endif |
340 | } | 340 | } |
341 | __WARN(); | 341 | WARN_ON(1); |
342 | return 1; | 342 | return 1; |
343 | } | 343 | } |
344 | 344 | ||
diff --git a/include/net/netns/xfrm.h b/include/net/netns/xfrm.h index 56f8e5585df7..74f119a2829a 100644 --- a/include/net/netns/xfrm.h +++ b/include/net/netns/xfrm.h | |||
@@ -5,6 +5,7 @@ | |||
5 | #include <linux/wait.h> | 5 | #include <linux/wait.h> |
6 | #include <linux/workqueue.h> | 6 | #include <linux/workqueue.h> |
7 | #include <linux/xfrm.h> | 7 | #include <linux/xfrm.h> |
8 | #include <net/dst_ops.h> | ||
8 | 9 | ||
9 | struct ctl_table_header; | 10 | struct ctl_table_header; |
10 | 11 | ||
@@ -42,6 +43,11 @@ struct netns_xfrm { | |||
42 | unsigned int policy_count[XFRM_POLICY_MAX * 2]; | 43 | unsigned int policy_count[XFRM_POLICY_MAX * 2]; |
43 | struct work_struct policy_hash_work; | 44 | struct work_struct policy_hash_work; |
44 | 45 | ||
46 | struct dst_ops xfrm4_dst_ops; | ||
47 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | ||
48 | struct dst_ops xfrm6_dst_ops; | ||
49 | #endif | ||
50 | |||
45 | struct sock *nlsk; | 51 | struct sock *nlsk; |
46 | struct sock *nlsk_stash; | 52 | struct sock *nlsk_stash; |
47 | 53 | ||
diff --git a/include/net/netrom.h b/include/net/netrom.h index 15696b1fd30f..ab170a60e7d3 100644 --- a/include/net/netrom.h +++ b/include/net/netrom.h | |||
@@ -132,6 +132,8 @@ static __inline__ void nr_node_put(struct nr_node *nr_node) | |||
132 | static __inline__ void nr_neigh_put(struct nr_neigh *nr_neigh) | 132 | static __inline__ void nr_neigh_put(struct nr_neigh *nr_neigh) |
133 | { | 133 | { |
134 | if (atomic_dec_and_test(&nr_neigh->refcount)) { | 134 | if (atomic_dec_and_test(&nr_neigh->refcount)) { |
135 | if (nr_neigh->ax25) | ||
136 | ax25_cb_put(nr_neigh->ax25); | ||
135 | kfree(nr_neigh->digipeat); | 137 | kfree(nr_neigh->digipeat); |
136 | kfree(nr_neigh); | 138 | kfree(nr_neigh); |
137 | } | 139 | } |
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 6d85861ab990..60c27706e7b9 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -1367,8 +1367,8 @@ struct xfrmk_spdinfo { | |||
1367 | extern struct xfrm_state *xfrm_find_acq_byseq(struct net *net, u32 seq); | 1367 | extern struct xfrm_state *xfrm_find_acq_byseq(struct net *net, u32 seq); |
1368 | extern int xfrm_state_delete(struct xfrm_state *x); | 1368 | extern int xfrm_state_delete(struct xfrm_state *x); |
1369 | extern int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info); | 1369 | extern int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info); |
1370 | extern void xfrm_sad_getinfo(struct xfrmk_sadinfo *si); | 1370 | extern void xfrm_sad_getinfo(struct net *net, struct xfrmk_sadinfo *si); |
1371 | extern void xfrm_spd_getinfo(struct xfrmk_spdinfo *si); | 1371 | extern void xfrm_spd_getinfo(struct net *net, struct xfrmk_spdinfo *si); |
1372 | extern int xfrm_replay_check(struct xfrm_state *x, | 1372 | extern int xfrm_replay_check(struct xfrm_state *x, |
1373 | struct sk_buff *skb, __be32 seq); | 1373 | struct sk_buff *skb, __be32 seq); |
1374 | extern void xfrm_replay_advance(struct xfrm_state *x, __be32 seq); | 1374 | extern void xfrm_replay_advance(struct xfrm_state *x, __be32 seq); |
diff --git a/include/scsi/scsi_bsg_fc.h b/include/scsi/scsi_bsg_fc.h index a4b233318179..91a4e4ff9a9b 100644 --- a/include/scsi/scsi_bsg_fc.h +++ b/include/scsi/scsi_bsg_fc.h | |||
@@ -292,7 +292,7 @@ struct fc_bsg_request { | |||
292 | struct fc_bsg_rport_els r_els; | 292 | struct fc_bsg_rport_els r_els; |
293 | struct fc_bsg_rport_ct r_ct; | 293 | struct fc_bsg_rport_ct r_ct; |
294 | } rqst_data; | 294 | } rqst_data; |
295 | }; | 295 | } __attribute__((packed)); |
296 | 296 | ||
297 | 297 | ||
298 | /* response (request sense data) structure of the sg_io_v4 */ | 298 | /* response (request sense data) structure of the sg_io_v4 */ |
@@ -298,6 +298,9 @@ static const struct file_operations shm_file_operations = { | |||
298 | .mmap = shm_mmap, | 298 | .mmap = shm_mmap, |
299 | .fsync = shm_fsync, | 299 | .fsync = shm_fsync, |
300 | .release = shm_release, | 300 | .release = shm_release, |
301 | #ifndef CONFIG_MMU | ||
302 | .get_unmapped_area = shm_get_unmapped_area, | ||
303 | #endif | ||
301 | }; | 304 | }; |
302 | 305 | ||
303 | static const struct file_operations shm_file_operations_huge = { | 306 | static const struct file_operations shm_file_operations_huge = { |
diff --git a/kernel/futex.c b/kernel/futex.c index 8e3c3ffe1b9a..d9b3a2228f9d 100644 --- a/kernel/futex.c +++ b/kernel/futex.c | |||
@@ -203,8 +203,6 @@ static void drop_futex_key_refs(union futex_key *key) | |||
203 | * @uaddr: virtual address of the futex | 203 | * @uaddr: virtual address of the futex |
204 | * @fshared: 0 for a PROCESS_PRIVATE futex, 1 for PROCESS_SHARED | 204 | * @fshared: 0 for a PROCESS_PRIVATE futex, 1 for PROCESS_SHARED |
205 | * @key: address where result is stored. | 205 | * @key: address where result is stored. |
206 | * @rw: mapping needs to be read/write (values: VERIFY_READ, | ||
207 | * VERIFY_WRITE) | ||
208 | * | 206 | * |
209 | * Returns a negative error code or 0 | 207 | * Returns a negative error code or 0 |
210 | * The key words are stored in *key on success. | 208 | * The key words are stored in *key on success. |
@@ -216,7 +214,7 @@ static void drop_futex_key_refs(union futex_key *key) | |||
216 | * lock_page() might sleep, the caller should not hold a spinlock. | 214 | * lock_page() might sleep, the caller should not hold a spinlock. |
217 | */ | 215 | */ |
218 | static int | 216 | static int |
219 | get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw) | 217 | get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key) |
220 | { | 218 | { |
221 | unsigned long address = (unsigned long)uaddr; | 219 | unsigned long address = (unsigned long)uaddr; |
222 | struct mm_struct *mm = current->mm; | 220 | struct mm_struct *mm = current->mm; |
@@ -239,7 +237,7 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw) | |||
239 | * but access_ok() should be faster than find_vma() | 237 | * but access_ok() should be faster than find_vma() |
240 | */ | 238 | */ |
241 | if (!fshared) { | 239 | if (!fshared) { |
242 | if (unlikely(!access_ok(rw, uaddr, sizeof(u32)))) | 240 | if (unlikely(!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))) |
243 | return -EFAULT; | 241 | return -EFAULT; |
244 | key->private.mm = mm; | 242 | key->private.mm = mm; |
245 | key->private.address = address; | 243 | key->private.address = address; |
@@ -248,7 +246,7 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw) | |||
248 | } | 246 | } |
249 | 247 | ||
250 | again: | 248 | again: |
251 | err = get_user_pages_fast(address, 1, rw == VERIFY_WRITE, &page); | 249 | err = get_user_pages_fast(address, 1, 1, &page); |
252 | if (err < 0) | 250 | if (err < 0) |
253 | return err; | 251 | return err; |
254 | 252 | ||
@@ -867,7 +865,7 @@ static int futex_wake(u32 __user *uaddr, int fshared, int nr_wake, u32 bitset) | |||
867 | if (!bitset) | 865 | if (!bitset) |
868 | return -EINVAL; | 866 | return -EINVAL; |
869 | 867 | ||
870 | ret = get_futex_key(uaddr, fshared, &key, VERIFY_READ); | 868 | ret = get_futex_key(uaddr, fshared, &key); |
871 | if (unlikely(ret != 0)) | 869 | if (unlikely(ret != 0)) |
872 | goto out; | 870 | goto out; |
873 | 871 | ||
@@ -913,10 +911,10 @@ futex_wake_op(u32 __user *uaddr1, int fshared, u32 __user *uaddr2, | |||
913 | int ret, op_ret; | 911 | int ret, op_ret; |
914 | 912 | ||
915 | retry: | 913 | retry: |
916 | ret = get_futex_key(uaddr1, fshared, &key1, VERIFY_READ); | 914 | ret = get_futex_key(uaddr1, fshared, &key1); |
917 | if (unlikely(ret != 0)) | 915 | if (unlikely(ret != 0)) |
918 | goto out; | 916 | goto out; |
919 | ret = get_futex_key(uaddr2, fshared, &key2, VERIFY_WRITE); | 917 | ret = get_futex_key(uaddr2, fshared, &key2); |
920 | if (unlikely(ret != 0)) | 918 | if (unlikely(ret != 0)) |
921 | goto out_put_key1; | 919 | goto out_put_key1; |
922 | 920 | ||
@@ -1175,11 +1173,10 @@ retry: | |||
1175 | pi_state = NULL; | 1173 | pi_state = NULL; |
1176 | } | 1174 | } |
1177 | 1175 | ||
1178 | ret = get_futex_key(uaddr1, fshared, &key1, VERIFY_READ); | 1176 | ret = get_futex_key(uaddr1, fshared, &key1); |
1179 | if (unlikely(ret != 0)) | 1177 | if (unlikely(ret != 0)) |
1180 | goto out; | 1178 | goto out; |
1181 | ret = get_futex_key(uaddr2, fshared, &key2, | 1179 | ret = get_futex_key(uaddr2, fshared, &key2); |
1182 | requeue_pi ? VERIFY_WRITE : VERIFY_READ); | ||
1183 | if (unlikely(ret != 0)) | 1180 | if (unlikely(ret != 0)) |
1184 | goto out_put_key1; | 1181 | goto out_put_key1; |
1185 | 1182 | ||
@@ -1738,7 +1735,7 @@ static int futex_wait_setup(u32 __user *uaddr, u32 val, int fshared, | |||
1738 | */ | 1735 | */ |
1739 | retry: | 1736 | retry: |
1740 | q->key = FUTEX_KEY_INIT; | 1737 | q->key = FUTEX_KEY_INIT; |
1741 | ret = get_futex_key(uaddr, fshared, &q->key, VERIFY_READ); | 1738 | ret = get_futex_key(uaddr, fshared, &q->key); |
1742 | if (unlikely(ret != 0)) | 1739 | if (unlikely(ret != 0)) |
1743 | return ret; | 1740 | return ret; |
1744 | 1741 | ||
@@ -1904,7 +1901,7 @@ static int futex_lock_pi(u32 __user *uaddr, int fshared, | |||
1904 | q.requeue_pi_key = NULL; | 1901 | q.requeue_pi_key = NULL; |
1905 | retry: | 1902 | retry: |
1906 | q.key = FUTEX_KEY_INIT; | 1903 | q.key = FUTEX_KEY_INIT; |
1907 | ret = get_futex_key(uaddr, fshared, &q.key, VERIFY_WRITE); | 1904 | ret = get_futex_key(uaddr, fshared, &q.key); |
1908 | if (unlikely(ret != 0)) | 1905 | if (unlikely(ret != 0)) |
1909 | goto out; | 1906 | goto out; |
1910 | 1907 | ||
@@ -2023,7 +2020,7 @@ retry: | |||
2023 | if ((uval & FUTEX_TID_MASK) != task_pid_vnr(current)) | 2020 | if ((uval & FUTEX_TID_MASK) != task_pid_vnr(current)) |
2024 | return -EPERM; | 2021 | return -EPERM; |
2025 | 2022 | ||
2026 | ret = get_futex_key(uaddr, fshared, &key, VERIFY_WRITE); | 2023 | ret = get_futex_key(uaddr, fshared, &key); |
2027 | if (unlikely(ret != 0)) | 2024 | if (unlikely(ret != 0)) |
2028 | goto out; | 2025 | goto out; |
2029 | 2026 | ||
@@ -2215,7 +2212,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, int fshared, | |||
2215 | rt_waiter.task = NULL; | 2212 | rt_waiter.task = NULL; |
2216 | 2213 | ||
2217 | key2 = FUTEX_KEY_INIT; | 2214 | key2 = FUTEX_KEY_INIT; |
2218 | ret = get_futex_key(uaddr2, fshared, &key2, VERIFY_WRITE); | 2215 | ret = get_futex_key(uaddr2, fshared, &key2); |
2219 | if (unlikely(ret != 0)) | 2216 | if (unlikely(ret != 0)) |
2220 | goto out; | 2217 | goto out; |
2221 | 2218 | ||
diff --git a/kernel/kexec.c b/kernel/kexec.c index a9a93d9ee7a7..ef077fb73155 100644 --- a/kernel/kexec.c +++ b/kernel/kexec.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/console.h> | 32 | #include <linux/console.h> |
33 | #include <linux/vmalloc.h> | 33 | #include <linux/vmalloc.h> |
34 | #include <linux/swap.h> | 34 | #include <linux/swap.h> |
35 | #include <linux/kmsg_dump.h> | ||
35 | 36 | ||
36 | #include <asm/page.h> | 37 | #include <asm/page.h> |
37 | #include <asm/uaccess.h> | 38 | #include <asm/uaccess.h> |
@@ -1074,6 +1075,9 @@ void crash_kexec(struct pt_regs *regs) | |||
1074 | if (mutex_trylock(&kexec_mutex)) { | 1075 | if (mutex_trylock(&kexec_mutex)) { |
1075 | if (kexec_crash_image) { | 1076 | if (kexec_crash_image) { |
1076 | struct pt_regs fixed_regs; | 1077 | struct pt_regs fixed_regs; |
1078 | |||
1079 | kmsg_dump(KMSG_DUMP_KEXEC); | ||
1080 | |||
1077 | crash_setup_regs(&fixed_regs, regs); | 1081 | crash_setup_regs(&fixed_regs, regs); |
1078 | crash_save_vmcoreinfo(); | 1082 | crash_save_vmcoreinfo(); |
1079 | machine_crash_shutdown(&fixed_regs); | 1083 | machine_crash_shutdown(&fixed_regs); |
diff --git a/kernel/kfifo.c b/kernel/kfifo.c index e92d519f93b1..32c5c15d750d 100644 --- a/kernel/kfifo.c +++ b/kernel/kfifo.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #include <linux/log2.h> | 28 | #include <linux/log2.h> |
29 | #include <linux/uaccess.h> | 29 | #include <linux/uaccess.h> |
30 | 30 | ||
31 | static void _kfifo_init(struct kfifo *fifo, unsigned char *buffer, | 31 | static void _kfifo_init(struct kfifo *fifo, void *buffer, |
32 | unsigned int size) | 32 | unsigned int size) |
33 | { | 33 | { |
34 | fifo->buffer = buffer; | 34 | fifo->buffer = buffer; |
@@ -41,10 +41,10 @@ static void _kfifo_init(struct kfifo *fifo, unsigned char *buffer, | |||
41 | * kfifo_init - initialize a FIFO using a preallocated buffer | 41 | * kfifo_init - initialize a FIFO using a preallocated buffer |
42 | * @fifo: the fifo to assign the buffer | 42 | * @fifo: the fifo to assign the buffer |
43 | * @buffer: the preallocated buffer to be used. | 43 | * @buffer: the preallocated buffer to be used. |
44 | * @size: the size of the internal buffer, this have to be a power of 2. | 44 | * @size: the size of the internal buffer, this has to be a power of 2. |
45 | * | 45 | * |
46 | */ | 46 | */ |
47 | void kfifo_init(struct kfifo *fifo, unsigned char *buffer, unsigned int size) | 47 | void kfifo_init(struct kfifo *fifo, void *buffer, unsigned int size) |
48 | { | 48 | { |
49 | /* size must be a power of 2 */ | 49 | /* size must be a power of 2 */ |
50 | BUG_ON(!is_power_of_2(size)); | 50 | BUG_ON(!is_power_of_2(size)); |
@@ -159,8 +159,9 @@ static inline void __kfifo_out_data(struct kfifo *fifo, | |||
159 | memcpy(to + l, fifo->buffer, len - l); | 159 | memcpy(to + l, fifo->buffer, len - l); |
160 | } | 160 | } |
161 | 161 | ||
162 | static inline unsigned int __kfifo_from_user_data(struct kfifo *fifo, | 162 | static inline int __kfifo_from_user_data(struct kfifo *fifo, |
163 | const void __user *from, unsigned int len, unsigned int off) | 163 | const void __user *from, unsigned int len, unsigned int off, |
164 | unsigned *lenout) | ||
164 | { | 165 | { |
165 | unsigned int l; | 166 | unsigned int l; |
166 | int ret; | 167 | int ret; |
@@ -177,16 +178,20 @@ static inline unsigned int __kfifo_from_user_data(struct kfifo *fifo, | |||
177 | /* first put the data starting from fifo->in to buffer end */ | 178 | /* first put the data starting from fifo->in to buffer end */ |
178 | l = min(len, fifo->size - off); | 179 | l = min(len, fifo->size - off); |
179 | ret = copy_from_user(fifo->buffer + off, from, l); | 180 | ret = copy_from_user(fifo->buffer + off, from, l); |
180 | 181 | if (unlikely(ret)) { | |
181 | if (unlikely(ret)) | 182 | *lenout = ret; |
182 | return ret + len - l; | 183 | return -EFAULT; |
184 | } | ||
185 | *lenout = l; | ||
183 | 186 | ||
184 | /* then put the rest (if any) at the beginning of the buffer */ | 187 | /* then put the rest (if any) at the beginning of the buffer */ |
185 | return copy_from_user(fifo->buffer, from + l, len - l); | 188 | ret = copy_from_user(fifo->buffer, from + l, len - l); |
189 | *lenout += ret ? ret : len - l; | ||
190 | return ret ? -EFAULT : 0; | ||
186 | } | 191 | } |
187 | 192 | ||
188 | static inline unsigned int __kfifo_to_user_data(struct kfifo *fifo, | 193 | static inline int __kfifo_to_user_data(struct kfifo *fifo, |
189 | void __user *to, unsigned int len, unsigned int off) | 194 | void __user *to, unsigned int len, unsigned int off, unsigned *lenout) |
190 | { | 195 | { |
191 | unsigned int l; | 196 | unsigned int l; |
192 | int ret; | 197 | int ret; |
@@ -203,12 +208,21 @@ static inline unsigned int __kfifo_to_user_data(struct kfifo *fifo, | |||
203 | /* first get the data from fifo->out until the end of the buffer */ | 208 | /* first get the data from fifo->out until the end of the buffer */ |
204 | l = min(len, fifo->size - off); | 209 | l = min(len, fifo->size - off); |
205 | ret = copy_to_user(to, fifo->buffer + off, l); | 210 | ret = copy_to_user(to, fifo->buffer + off, l); |
206 | 211 | *lenout = l; | |
207 | if (unlikely(ret)) | 212 | if (unlikely(ret)) { |
208 | return ret + len - l; | 213 | *lenout -= ret; |
214 | return -EFAULT; | ||
215 | } | ||
209 | 216 | ||
210 | /* then get the rest (if any) from the beginning of the buffer */ | 217 | /* then get the rest (if any) from the beginning of the buffer */ |
211 | return copy_to_user(to + l, fifo->buffer, len - l); | 218 | len -= l; |
219 | ret = copy_to_user(to + l, fifo->buffer, len); | ||
220 | if (unlikely(ret)) { | ||
221 | *lenout += len - ret; | ||
222 | return -EFAULT; | ||
223 | } | ||
224 | *lenout += len; | ||
225 | return 0; | ||
212 | } | 226 | } |
213 | 227 | ||
214 | unsigned int __kfifo_in_n(struct kfifo *fifo, | 228 | unsigned int __kfifo_in_n(struct kfifo *fifo, |
@@ -235,7 +249,7 @@ EXPORT_SYMBOL(__kfifo_in_n); | |||
235 | * Note that with only one concurrent reader and one concurrent | 249 | * Note that with only one concurrent reader and one concurrent |
236 | * writer, you don't need extra locking to use these functions. | 250 | * writer, you don't need extra locking to use these functions. |
237 | */ | 251 | */ |
238 | unsigned int kfifo_in(struct kfifo *fifo, const unsigned char *from, | 252 | unsigned int kfifo_in(struct kfifo *fifo, const void *from, |
239 | unsigned int len) | 253 | unsigned int len) |
240 | { | 254 | { |
241 | len = min(kfifo_avail(fifo), len); | 255 | len = min(kfifo_avail(fifo), len); |
@@ -277,7 +291,7 @@ EXPORT_SYMBOL(__kfifo_out_n); | |||
277 | * Note that with only one concurrent reader and one concurrent | 291 | * Note that with only one concurrent reader and one concurrent |
278 | * writer, you don't need extra locking to use these functions. | 292 | * writer, you don't need extra locking to use these functions. |
279 | */ | 293 | */ |
280 | unsigned int kfifo_out(struct kfifo *fifo, unsigned char *to, unsigned int len) | 294 | unsigned int kfifo_out(struct kfifo *fifo, void *to, unsigned int len) |
281 | { | 295 | { |
282 | len = min(kfifo_len(fifo), len); | 296 | len = min(kfifo_len(fifo), len); |
283 | 297 | ||
@@ -288,6 +302,27 @@ unsigned int kfifo_out(struct kfifo *fifo, unsigned char *to, unsigned int len) | |||
288 | } | 302 | } |
289 | EXPORT_SYMBOL(kfifo_out); | 303 | EXPORT_SYMBOL(kfifo_out); |
290 | 304 | ||
305 | /** | ||
306 | * kfifo_out_peek - copy some data from the FIFO, but do not remove it | ||
307 | * @fifo: the fifo to be used. | ||
308 | * @to: where the data must be copied. | ||
309 | * @len: the size of the destination buffer. | ||
310 | * @offset: offset into the fifo | ||
311 | * | ||
312 | * This function copies at most @len bytes at @offset from the FIFO | ||
313 | * into the @to buffer and returns the number of copied bytes. | ||
314 | * The data is not removed from the FIFO. | ||
315 | */ | ||
316 | unsigned int kfifo_out_peek(struct kfifo *fifo, void *to, unsigned int len, | ||
317 | unsigned offset) | ||
318 | { | ||
319 | len = min(kfifo_len(fifo), len + offset); | ||
320 | |||
321 | __kfifo_out_data(fifo, to, len, offset); | ||
322 | return len; | ||
323 | } | ||
324 | EXPORT_SYMBOL(kfifo_out_peek); | ||
325 | |||
291 | unsigned int __kfifo_out_generic(struct kfifo *fifo, | 326 | unsigned int __kfifo_out_generic(struct kfifo *fifo, |
292 | void *to, unsigned int len, unsigned int recsize, | 327 | void *to, unsigned int len, unsigned int recsize, |
293 | unsigned int *total) | 328 | unsigned int *total) |
@@ -299,10 +334,13 @@ EXPORT_SYMBOL(__kfifo_out_generic); | |||
299 | unsigned int __kfifo_from_user_n(struct kfifo *fifo, | 334 | unsigned int __kfifo_from_user_n(struct kfifo *fifo, |
300 | const void __user *from, unsigned int len, unsigned int recsize) | 335 | const void __user *from, unsigned int len, unsigned int recsize) |
301 | { | 336 | { |
337 | unsigned total; | ||
338 | |||
302 | if (kfifo_avail(fifo) < len + recsize) | 339 | if (kfifo_avail(fifo) < len + recsize) |
303 | return len + 1; | 340 | return len + 1; |
304 | 341 | ||
305 | return __kfifo_from_user_data(fifo, from, len, recsize); | 342 | __kfifo_from_user_data(fifo, from, len, recsize, &total); |
343 | return total; | ||
306 | } | 344 | } |
307 | EXPORT_SYMBOL(__kfifo_from_user_n); | 345 | EXPORT_SYMBOL(__kfifo_from_user_n); |
308 | 346 | ||
@@ -313,18 +351,21 @@ EXPORT_SYMBOL(__kfifo_from_user_n); | |||
313 | * @len: the length of the data to be added. | 351 | * @len: the length of the data to be added. |
314 | * | 352 | * |
315 | * This function copies at most @len bytes from the @from into the | 353 | * This function copies at most @len bytes from the @from into the |
316 | * FIFO depending and returns the number of copied bytes. | 354 | * FIFO depending and returns -EFAULT/0. |
317 | * | 355 | * |
318 | * Note that with only one concurrent reader and one concurrent | 356 | * Note that with only one concurrent reader and one concurrent |
319 | * writer, you don't need extra locking to use these functions. | 357 | * writer, you don't need extra locking to use these functions. |
320 | */ | 358 | */ |
321 | unsigned int kfifo_from_user(struct kfifo *fifo, | 359 | int kfifo_from_user(struct kfifo *fifo, |
322 | const void __user *from, unsigned int len) | 360 | const void __user *from, unsigned int len, unsigned *total) |
323 | { | 361 | { |
362 | int ret; | ||
324 | len = min(kfifo_avail(fifo), len); | 363 | len = min(kfifo_avail(fifo), len); |
325 | len -= __kfifo_from_user_data(fifo, from, len, 0); | 364 | ret = __kfifo_from_user_data(fifo, from, len, 0, total); |
365 | if (ret) | ||
366 | return ret; | ||
326 | __kfifo_add_in(fifo, len); | 367 | __kfifo_add_in(fifo, len); |
327 | return len; | 368 | return 0; |
328 | } | 369 | } |
329 | EXPORT_SYMBOL(kfifo_from_user); | 370 | EXPORT_SYMBOL(kfifo_from_user); |
330 | 371 | ||
@@ -339,17 +380,17 @@ unsigned int __kfifo_to_user_n(struct kfifo *fifo, | |||
339 | void __user *to, unsigned int len, unsigned int reclen, | 380 | void __user *to, unsigned int len, unsigned int reclen, |
340 | unsigned int recsize) | 381 | unsigned int recsize) |
341 | { | 382 | { |
342 | unsigned int ret; | 383 | unsigned int ret, total; |
343 | 384 | ||
344 | if (kfifo_len(fifo) < reclen + recsize) | 385 | if (kfifo_len(fifo) < reclen + recsize) |
345 | return len; | 386 | return len; |
346 | 387 | ||
347 | ret = __kfifo_to_user_data(fifo, to, reclen, recsize); | 388 | ret = __kfifo_to_user_data(fifo, to, reclen, recsize, &total); |
348 | 389 | ||
349 | if (likely(ret == 0)) | 390 | if (likely(ret == 0)) |
350 | __kfifo_add_out(fifo, reclen + recsize); | 391 | __kfifo_add_out(fifo, reclen + recsize); |
351 | 392 | ||
352 | return ret; | 393 | return total; |
353 | } | 394 | } |
354 | EXPORT_SYMBOL(__kfifo_to_user_n); | 395 | EXPORT_SYMBOL(__kfifo_to_user_n); |
355 | 396 | ||
@@ -358,20 +399,22 @@ EXPORT_SYMBOL(__kfifo_to_user_n); | |||
358 | * @fifo: the fifo to be used. | 399 | * @fifo: the fifo to be used. |
359 | * @to: where the data must be copied. | 400 | * @to: where the data must be copied. |
360 | * @len: the size of the destination buffer. | 401 | * @len: the size of the destination buffer. |
402 | @ @lenout: pointer to output variable with copied data | ||
361 | * | 403 | * |
362 | * This function copies at most @len bytes from the FIFO into the | 404 | * This function copies at most @len bytes from the FIFO into the |
363 | * @to buffer and returns the number of copied bytes. | 405 | * @to buffer and 0 or -EFAULT. |
364 | * | 406 | * |
365 | * Note that with only one concurrent reader and one concurrent | 407 | * Note that with only one concurrent reader and one concurrent |
366 | * writer, you don't need extra locking to use these functions. | 408 | * writer, you don't need extra locking to use these functions. |
367 | */ | 409 | */ |
368 | unsigned int kfifo_to_user(struct kfifo *fifo, | 410 | int kfifo_to_user(struct kfifo *fifo, |
369 | void __user *to, unsigned int len) | 411 | void __user *to, unsigned int len, unsigned *lenout) |
370 | { | 412 | { |
413 | int ret; | ||
371 | len = min(kfifo_len(fifo), len); | 414 | len = min(kfifo_len(fifo), len); |
372 | len -= __kfifo_to_user_data(fifo, to, len, 0); | 415 | ret = __kfifo_to_user_data(fifo, to, len, 0, lenout); |
373 | __kfifo_add_out(fifo, len); | 416 | __kfifo_add_out(fifo, *lenout); |
374 | return len; | 417 | return ret; |
375 | } | 418 | } |
376 | EXPORT_SYMBOL(kfifo_to_user); | 419 | EXPORT_SYMBOL(kfifo_to_user); |
377 | 420 | ||
diff --git a/kernel/panic.c b/kernel/panic.c index 5827f7b97254..c787333282b8 100644 --- a/kernel/panic.c +++ b/kernel/panic.c | |||
@@ -75,7 +75,6 @@ NORET_TYPE void panic(const char * fmt, ...) | |||
75 | dump_stack(); | 75 | dump_stack(); |
76 | #endif | 76 | #endif |
77 | 77 | ||
78 | kmsg_dump(KMSG_DUMP_PANIC); | ||
79 | /* | 78 | /* |
80 | * If we have crashed and we have a crash kernel loaded let it handle | 79 | * If we have crashed and we have a crash kernel loaded let it handle |
81 | * everything else. | 80 | * everything else. |
@@ -83,6 +82,8 @@ NORET_TYPE void panic(const char * fmt, ...) | |||
83 | */ | 82 | */ |
84 | crash_kexec(NULL); | 83 | crash_kexec(NULL); |
85 | 84 | ||
85 | kmsg_dump(KMSG_DUMP_PANIC); | ||
86 | |||
86 | /* | 87 | /* |
87 | * Note smp_send_stop is the usual smp shutdown function, which | 88 | * Note smp_send_stop is the usual smp shutdown function, which |
88 | * unfortunately means it may not be hardened to work in a panic | 89 | * unfortunately means it may not be hardened to work in a panic |
diff --git a/kernel/perf_event.c b/kernel/perf_event.c index 603c0d8b5df1..d27746bd3a06 100644 --- a/kernel/perf_event.c +++ b/kernel/perf_event.c | |||
@@ -3268,6 +3268,9 @@ static void perf_event_task_output(struct perf_event *event, | |||
3268 | 3268 | ||
3269 | static int perf_event_task_match(struct perf_event *event) | 3269 | static int perf_event_task_match(struct perf_event *event) |
3270 | { | 3270 | { |
3271 | if (event->state != PERF_EVENT_STATE_ACTIVE) | ||
3272 | return 0; | ||
3273 | |||
3271 | if (event->cpu != -1 && event->cpu != smp_processor_id()) | 3274 | if (event->cpu != -1 && event->cpu != smp_processor_id()) |
3272 | return 0; | 3275 | return 0; |
3273 | 3276 | ||
@@ -3377,6 +3380,9 @@ static void perf_event_comm_output(struct perf_event *event, | |||
3377 | 3380 | ||
3378 | static int perf_event_comm_match(struct perf_event *event) | 3381 | static int perf_event_comm_match(struct perf_event *event) |
3379 | { | 3382 | { |
3383 | if (event->state != PERF_EVENT_STATE_ACTIVE) | ||
3384 | return 0; | ||
3385 | |||
3380 | if (event->cpu != -1 && event->cpu != smp_processor_id()) | 3386 | if (event->cpu != -1 && event->cpu != smp_processor_id()) |
3381 | return 0; | 3387 | return 0; |
3382 | 3388 | ||
@@ -3494,6 +3500,9 @@ static void perf_event_mmap_output(struct perf_event *event, | |||
3494 | static int perf_event_mmap_match(struct perf_event *event, | 3500 | static int perf_event_mmap_match(struct perf_event *event, |
3495 | struct perf_mmap_event *mmap_event) | 3501 | struct perf_mmap_event *mmap_event) |
3496 | { | 3502 | { |
3503 | if (event->state != PERF_EVENT_STATE_ACTIVE) | ||
3504 | return 0; | ||
3505 | |||
3497 | if (event->cpu != -1 && event->cpu != smp_processor_id()) | 3506 | if (event->cpu != -1 && event->cpu != smp_processor_id()) |
3498 | return 0; | 3507 | return 0; |
3499 | 3508 | ||
diff --git a/kernel/printk.c b/kernel/printk.c index 17463ca2e229..1751c456b71f 100644 --- a/kernel/printk.c +++ b/kernel/printk.c | |||
@@ -1467,6 +1467,7 @@ EXPORT_SYMBOL_GPL(kmsg_dump_unregister); | |||
1467 | static const char const *kmsg_reasons[] = { | 1467 | static const char const *kmsg_reasons[] = { |
1468 | [KMSG_DUMP_OOPS] = "oops", | 1468 | [KMSG_DUMP_OOPS] = "oops", |
1469 | [KMSG_DUMP_PANIC] = "panic", | 1469 | [KMSG_DUMP_PANIC] = "panic", |
1470 | [KMSG_DUMP_KEXEC] = "kexec", | ||
1470 | }; | 1471 | }; |
1471 | 1472 | ||
1472 | static const char *kmsg_to_str(enum kmsg_dump_reason reason) | 1473 | static const char *kmsg_to_str(enum kmsg_dump_reason reason) |
diff --git a/kernel/sched.c b/kernel/sched.c index c535cc4f6428..4508fe7048be 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -5530,8 +5530,11 @@ need_resched_nonpreemptible: | |||
5530 | 5530 | ||
5531 | post_schedule(rq); | 5531 | post_schedule(rq); |
5532 | 5532 | ||
5533 | if (unlikely(reacquire_kernel_lock(current) < 0)) | 5533 | if (unlikely(reacquire_kernel_lock(current) < 0)) { |
5534 | prev = rq->curr; | ||
5535 | switch_count = &prev->nivcsw; | ||
5534 | goto need_resched_nonpreemptible; | 5536 | goto need_resched_nonpreemptible; |
5537 | } | ||
5535 | 5538 | ||
5536 | preempt_enable_no_resched(); | 5539 | preempt_enable_no_resched(); |
5537 | if (need_resched()) | 5540 | if (need_resched()) |
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 42ac3c9f66f6..8fe7ee81c552 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
@@ -1508,7 +1508,7 @@ static int select_task_rq_fair(struct task_struct *p, int sd_flag, int wake_flag | |||
1508 | * If there's an idle sibling in this domain, make that | 1508 | * If there's an idle sibling in this domain, make that |
1509 | * the wake_affine target instead of the current cpu. | 1509 | * the wake_affine target instead of the current cpu. |
1510 | */ | 1510 | */ |
1511 | if (tmp->flags & SD_PREFER_SIBLING) | 1511 | if (tmp->flags & SD_SHARE_PKG_RESOURCES) |
1512 | target = select_idle_sibling(p, tmp, target); | 1512 | target = select_idle_sibling(p, tmp, target); |
1513 | 1513 | ||
1514 | if (target >= 0) { | 1514 | if (target >= 0) { |
diff --git a/kernel/smp.c b/kernel/smp.c index de735a6637d0..f10408422444 100644 --- a/kernel/smp.c +++ b/kernel/smp.c | |||
@@ -347,7 +347,7 @@ int smp_call_function_any(const struct cpumask *mask, | |||
347 | goto call; | 347 | goto call; |
348 | 348 | ||
349 | /* Try for same node. */ | 349 | /* Try for same node. */ |
350 | nodemask = cpumask_of_node(cpu); | 350 | nodemask = cpumask_of_node(cpu_to_node(cpu)); |
351 | for (cpu = cpumask_first_and(nodemask, mask); cpu < nr_cpu_ids; | 351 | for (cpu = cpumask_first_and(nodemask, mask); cpu < nr_cpu_ids; |
352 | cpu = cpumask_next_and(cpu, nodemask, mask)) { | 352 | cpu = cpumask_next_and(cpu, nodemask, mask)) { |
353 | if (cpu_online(cpu)) | 353 | if (cpu_online(cpu)) |
diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c index 6f740d9f0948..d7395fdfb9f3 100644 --- a/kernel/time/clockevents.c +++ b/kernel/time/clockevents.c | |||
@@ -259,7 +259,8 @@ void clockevents_notify(unsigned long reason, void *arg) | |||
259 | cpu = *((int *)arg); | 259 | cpu = *((int *)arg); |
260 | list_for_each_entry_safe(dev, tmp, &clockevent_devices, list) { | 260 | list_for_each_entry_safe(dev, tmp, &clockevent_devices, list) { |
261 | if (cpumask_test_cpu(cpu, dev->cpumask) && | 261 | if (cpumask_test_cpu(cpu, dev->cpumask) && |
262 | cpumask_weight(dev->cpumask) == 1) { | 262 | cpumask_weight(dev->cpumask) == 1 && |
263 | !tick_is_broadcast_device(dev)) { | ||
263 | BUG_ON(dev->mode != CLOCK_EVT_MODE_UNUSED); | 264 | BUG_ON(dev->mode != CLOCK_EVT_MODE_UNUSED); |
264 | list_del(&dev->list); | 265 | list_del(&dev->list); |
265 | } | 266 | } |
diff --git a/kernel/timer.c b/kernel/timer.c index 15533b792397..c61a7949387f 100644 --- a/kernel/timer.c +++ b/kernel/timer.c | |||
@@ -1198,6 +1198,7 @@ void update_process_times(int user_tick) | |||
1198 | run_local_timers(); | 1198 | run_local_timers(); |
1199 | rcu_check_callbacks(cpu, user_tick); | 1199 | rcu_check_callbacks(cpu, user_tick); |
1200 | printk_tick(); | 1200 | printk_tick(); |
1201 | perf_event_do_pending(); | ||
1201 | scheduler_tick(); | 1202 | scheduler_tick(); |
1202 | run_posix_cpu_timers(p); | 1203 | run_posix_cpu_timers(p); |
1203 | } | 1204 | } |
@@ -1209,8 +1210,6 @@ static void run_timer_softirq(struct softirq_action *h) | |||
1209 | { | 1210 | { |
1210 | struct tvec_base *base = __get_cpu_var(tvec_bases); | 1211 | struct tvec_base *base = __get_cpu_var(tvec_bases); |
1211 | 1212 | ||
1212 | perf_event_do_pending(); | ||
1213 | |||
1214 | hrtimer_run_pending(); | 1213 | hrtimer_run_pending(); |
1215 | 1214 | ||
1216 | if (time_after_eq(jiffies, base->timer_jiffies)) | 1215 | if (time_after_eq(jiffies, base->timer_jiffies)) |
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 7968762c8167..1e6640f80454 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c | |||
@@ -1690,7 +1690,7 @@ ftrace_regex_lseek(struct file *file, loff_t offset, int origin) | |||
1690 | static int ftrace_match(char *str, char *regex, int len, int type) | 1690 | static int ftrace_match(char *str, char *regex, int len, int type) |
1691 | { | 1691 | { |
1692 | int matched = 0; | 1692 | int matched = 0; |
1693 | char *ptr; | 1693 | int slen; |
1694 | 1694 | ||
1695 | switch (type) { | 1695 | switch (type) { |
1696 | case MATCH_FULL: | 1696 | case MATCH_FULL: |
@@ -1706,8 +1706,8 @@ static int ftrace_match(char *str, char *regex, int len, int type) | |||
1706 | matched = 1; | 1706 | matched = 1; |
1707 | break; | 1707 | break; |
1708 | case MATCH_END_ONLY: | 1708 | case MATCH_END_ONLY: |
1709 | ptr = strstr(str, regex); | 1709 | slen = strlen(str); |
1710 | if (ptr && (ptr[len] == 0)) | 1710 | if (slen >= len && memcmp(str + slen - len, regex, len) == 0) |
1711 | matched = 1; | 1711 | matched = 1; |
1712 | break; | 1712 | break; |
1713 | } | 1713 | } |
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 2326b04c95c4..edefe3b2801b 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c | |||
@@ -2869,7 +2869,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) | |||
2869 | * Splice the empty reader page into the list around the head. | 2869 | * Splice the empty reader page into the list around the head. |
2870 | */ | 2870 | */ |
2871 | reader = rb_set_head_page(cpu_buffer); | 2871 | reader = rb_set_head_page(cpu_buffer); |
2872 | cpu_buffer->reader_page->list.next = reader->list.next; | 2872 | cpu_buffer->reader_page->list.next = rb_list_head(reader->list.next); |
2873 | cpu_buffer->reader_page->list.prev = reader->list.prev; | 2873 | cpu_buffer->reader_page->list.prev = reader->list.prev; |
2874 | 2874 | ||
2875 | /* | 2875 | /* |
@@ -2906,7 +2906,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) | |||
2906 | * | 2906 | * |
2907 | * Now make the new head point back to the reader page. | 2907 | * Now make the new head point back to the reader page. |
2908 | */ | 2908 | */ |
2909 | reader->list.next->prev = &cpu_buffer->reader_page->list; | 2909 | rb_list_head(reader->list.next)->prev = &cpu_buffer->reader_page->list; |
2910 | rb_inc_page(cpu_buffer, &cpu_buffer->head_page); | 2910 | rb_inc_page(cpu_buffer, &cpu_buffer->head_page); |
2911 | 2911 | ||
2912 | /* Finally update the reader page to the new head */ | 2912 | /* Finally update the reader page to the new head */ |
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c index 50504cb228de..e42af9aad69f 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c | |||
@@ -211,8 +211,9 @@ static int filter_pred_pchar(struct filter_pred *pred, void *event, | |||
211 | { | 211 | { |
212 | char **addr = (char **)(event + pred->offset); | 212 | char **addr = (char **)(event + pred->offset); |
213 | int cmp, match; | 213 | int cmp, match; |
214 | int len = strlen(*addr) + 1; /* including tailing '\0' */ | ||
214 | 215 | ||
215 | cmp = pred->regex.match(*addr, &pred->regex, pred->regex.field_len); | 216 | cmp = pred->regex.match(*addr, &pred->regex, len); |
216 | 217 | ||
217 | match = cmp ^ pred->not; | 218 | match = cmp ^ pred->not; |
218 | 219 | ||
@@ -251,7 +252,18 @@ static int filter_pred_none(struct filter_pred *pred, void *event, | |||
251 | return 0; | 252 | return 0; |
252 | } | 253 | } |
253 | 254 | ||
254 | /* Basic regex callbacks */ | 255 | /* |
256 | * regex_match_foo - Basic regex callbacks | ||
257 | * | ||
258 | * @str: the string to be searched | ||
259 | * @r: the regex structure containing the pattern string | ||
260 | * @len: the length of the string to be searched (including '\0') | ||
261 | * | ||
262 | * Note: | ||
263 | * - @str might not be NULL-terminated if it's of type DYN_STRING | ||
264 | * or STATIC_STRING | ||
265 | */ | ||
266 | |||
255 | static int regex_match_full(char *str, struct regex *r, int len) | 267 | static int regex_match_full(char *str, struct regex *r, int len) |
256 | { | 268 | { |
257 | if (strncmp(str, r->pattern, len) == 0) | 269 | if (strncmp(str, r->pattern, len) == 0) |
@@ -261,23 +273,24 @@ static int regex_match_full(char *str, struct regex *r, int len) | |||
261 | 273 | ||
262 | static int regex_match_front(char *str, struct regex *r, int len) | 274 | static int regex_match_front(char *str, struct regex *r, int len) |
263 | { | 275 | { |
264 | if (strncmp(str, r->pattern, len) == 0) | 276 | if (strncmp(str, r->pattern, r->len) == 0) |
265 | return 1; | 277 | return 1; |
266 | return 0; | 278 | return 0; |
267 | } | 279 | } |
268 | 280 | ||
269 | static int regex_match_middle(char *str, struct regex *r, int len) | 281 | static int regex_match_middle(char *str, struct regex *r, int len) |
270 | { | 282 | { |
271 | if (strstr(str, r->pattern)) | 283 | if (strnstr(str, r->pattern, len)) |
272 | return 1; | 284 | return 1; |
273 | return 0; | 285 | return 0; |
274 | } | 286 | } |
275 | 287 | ||
276 | static int regex_match_end(char *str, struct regex *r, int len) | 288 | static int regex_match_end(char *str, struct regex *r, int len) |
277 | { | 289 | { |
278 | char *ptr = strstr(str, r->pattern); | 290 | int strlen = len - 1; |
279 | 291 | ||
280 | if (ptr && (ptr[r->len] == 0)) | 292 | if (strlen >= r->len && |
293 | memcmp(str + strlen - r->len, r->pattern, r->len) == 0) | ||
281 | return 1; | 294 | return 1; |
282 | return 0; | 295 | return 0; |
283 | } | 296 | } |
@@ -781,10 +794,8 @@ static int filter_add_pred(struct filter_parse_state *ps, | |||
781 | pred->regex.field_len = field->size; | 794 | pred->regex.field_len = field->size; |
782 | } else if (field->filter_type == FILTER_DYN_STRING) | 795 | } else if (field->filter_type == FILTER_DYN_STRING) |
783 | fn = filter_pred_strloc; | 796 | fn = filter_pred_strloc; |
784 | else { | 797 | else |
785 | fn = filter_pred_pchar; | 798 | fn = filter_pred_pchar; |
786 | pred->regex.field_len = strlen(pred->regex.pattern); | ||
787 | } | ||
788 | } else { | 799 | } else { |
789 | if (field->is_signed) | 800 | if (field->is_signed) |
790 | ret = strict_strtoll(pred->regex.pattern, 0, &val); | 801 | ret = strict_strtoll(pred->regex.pattern, 0, &val); |
diff --git a/lib/string.c b/lib/string.c index 9f75b4ec50b8..a1cdcfcc42d0 100644 --- a/lib/string.c +++ b/lib/string.c | |||
@@ -667,7 +667,7 @@ EXPORT_SYMBOL(memscan); | |||
667 | */ | 667 | */ |
668 | char *strstr(const char *s1, const char *s2) | 668 | char *strstr(const char *s1, const char *s2) |
669 | { | 669 | { |
670 | int l1, l2; | 670 | size_t l1, l2; |
671 | 671 | ||
672 | l2 = strlen(s2); | 672 | l2 = strlen(s2); |
673 | if (!l2) | 673 | if (!l2) |
@@ -684,6 +684,31 @@ char *strstr(const char *s1, const char *s2) | |||
684 | EXPORT_SYMBOL(strstr); | 684 | EXPORT_SYMBOL(strstr); |
685 | #endif | 685 | #endif |
686 | 686 | ||
687 | #ifndef __HAVE_ARCH_STRNSTR | ||
688 | /** | ||
689 | * strnstr - Find the first substring in a length-limited string | ||
690 | * @s1: The string to be searched | ||
691 | * @s2: The string to search for | ||
692 | * @len: the maximum number of characters to search | ||
693 | */ | ||
694 | char *strnstr(const char *s1, const char *s2, size_t len) | ||
695 | { | ||
696 | size_t l1 = len, l2; | ||
697 | |||
698 | l2 = strlen(s2); | ||
699 | if (!l2) | ||
700 | return (char *)s1; | ||
701 | while (l1 >= l2) { | ||
702 | l1--; | ||
703 | if (!memcmp(s1, s2, l2)) | ||
704 | return (char *)s1; | ||
705 | s1++; | ||
706 | } | ||
707 | return NULL; | ||
708 | } | ||
709 | EXPORT_SYMBOL(strnstr); | ||
710 | #endif | ||
711 | |||
687 | #ifndef __HAVE_ARCH_MEMCHR | 712 | #ifndef __HAVE_ARCH_MEMCHR |
688 | /** | 713 | /** |
689 | * memchr - Find a character in an area of memory. | 714 | * memchr - Find a character in an area of memory. |
diff --git a/lib/zlib_inflate/inffast.c b/lib/zlib_inflate/inffast.c index 05e1559fa156..215447c55261 100644 --- a/lib/zlib_inflate/inffast.c +++ b/lib/zlib_inflate/inffast.c | |||
@@ -4,12 +4,25 @@ | |||
4 | */ | 4 | */ |
5 | 5 | ||
6 | #include <linux/zutil.h> | 6 | #include <linux/zutil.h> |
7 | #include <asm/unaligned.h> | ||
8 | #include <asm/byteorder.h> | ||
9 | #include "inftrees.h" | 7 | #include "inftrees.h" |
10 | #include "inflate.h" | 8 | #include "inflate.h" |
11 | #include "inffast.h" | 9 | #include "inffast.h" |
12 | 10 | ||
11 | /* Only do the unaligned "Faster" variant when | ||
12 | * CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is set | ||
13 | * | ||
14 | * On powerpc, it won't be as we don't include autoconf.h | ||
15 | * automatically for the boot wrapper, which is intended as | ||
16 | * we run in an environment where we may not be able to deal | ||
17 | * with (even rare) alignment faults. In addition, we do not | ||
18 | * define __KERNEL__ for arch/powerpc/boot unlike x86 | ||
19 | */ | ||
20 | |||
21 | #ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS | ||
22 | #include <asm/unaligned.h> | ||
23 | #include <asm/byteorder.h> | ||
24 | #endif | ||
25 | |||
13 | #ifndef ASMINF | 26 | #ifndef ASMINF |
14 | 27 | ||
15 | /* Allow machine dependent optimization for post-increment or pre-increment. | 28 | /* Allow machine dependent optimization for post-increment or pre-increment. |
@@ -243,6 +256,7 @@ void inflate_fast(z_streamp strm, unsigned start) | |||
243 | } | 256 | } |
244 | } | 257 | } |
245 | else { | 258 | else { |
259 | #ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS | ||
246 | unsigned short *sout; | 260 | unsigned short *sout; |
247 | unsigned long loops; | 261 | unsigned long loops; |
248 | 262 | ||
@@ -284,6 +298,20 @@ void inflate_fast(z_streamp strm, unsigned start) | |||
284 | } | 298 | } |
285 | if (len & 1) | 299 | if (len & 1) |
286 | PUP(out) = PUP(from); | 300 | PUP(out) = PUP(from); |
301 | #else /* CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS */ | ||
302 | from = out - dist; /* copy direct from output */ | ||
303 | do { /* minimum length is three */ | ||
304 | PUP(out) = PUP(from); | ||
305 | PUP(out) = PUP(from); | ||
306 | PUP(out) = PUP(from); | ||
307 | len -= 3; | ||
308 | } while (len > 2); | ||
309 | if (len) { | ||
310 | PUP(out) = PUP(from); | ||
311 | if (len > 1) | ||
312 | PUP(out) = PUP(from); | ||
313 | } | ||
314 | #endif /* !CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS */ | ||
287 | } | 315 | } |
288 | } | 316 | } |
289 | else if ((op & 64) == 0) { /* 2nd level distance code */ | 317 | else if ((op & 64) == 0) { /* 2nd level distance code */ |
diff --git a/mm/filemap.c b/mm/filemap.c index 96ac6b0eb6cb..e3736923220e 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
@@ -1634,14 +1634,15 @@ EXPORT_SYMBOL(generic_file_readonly_mmap); | |||
1634 | static struct page *__read_cache_page(struct address_space *mapping, | 1634 | static struct page *__read_cache_page(struct address_space *mapping, |
1635 | pgoff_t index, | 1635 | pgoff_t index, |
1636 | int (*filler)(void *,struct page*), | 1636 | int (*filler)(void *,struct page*), |
1637 | void *data) | 1637 | void *data, |
1638 | gfp_t gfp) | ||
1638 | { | 1639 | { |
1639 | struct page *page; | 1640 | struct page *page; |
1640 | int err; | 1641 | int err; |
1641 | repeat: | 1642 | repeat: |
1642 | page = find_get_page(mapping, index); | 1643 | page = find_get_page(mapping, index); |
1643 | if (!page) { | 1644 | if (!page) { |
1644 | page = page_cache_alloc_cold(mapping); | 1645 | page = __page_cache_alloc(gfp | __GFP_COLD); |
1645 | if (!page) | 1646 | if (!page) |
1646 | return ERR_PTR(-ENOMEM); | 1647 | return ERR_PTR(-ENOMEM); |
1647 | err = add_to_page_cache_lru(page, mapping, index, GFP_KERNEL); | 1648 | err = add_to_page_cache_lru(page, mapping, index, GFP_KERNEL); |
@@ -1661,31 +1662,18 @@ repeat: | |||
1661 | return page; | 1662 | return page; |
1662 | } | 1663 | } |
1663 | 1664 | ||
1664 | /** | 1665 | static struct page *do_read_cache_page(struct address_space *mapping, |
1665 | * read_cache_page_async - read into page cache, fill it if needed | ||
1666 | * @mapping: the page's address_space | ||
1667 | * @index: the page index | ||
1668 | * @filler: function to perform the read | ||
1669 | * @data: destination for read data | ||
1670 | * | ||
1671 | * Same as read_cache_page, but don't wait for page to become unlocked | ||
1672 | * after submitting it to the filler. | ||
1673 | * | ||
1674 | * Read into the page cache. If a page already exists, and PageUptodate() is | ||
1675 | * not set, try to fill the page but don't wait for it to become unlocked. | ||
1676 | * | ||
1677 | * If the page does not get brought uptodate, return -EIO. | ||
1678 | */ | ||
1679 | struct page *read_cache_page_async(struct address_space *mapping, | ||
1680 | pgoff_t index, | 1666 | pgoff_t index, |
1681 | int (*filler)(void *,struct page*), | 1667 | int (*filler)(void *,struct page*), |
1682 | void *data) | 1668 | void *data, |
1669 | gfp_t gfp) | ||
1670 | |||
1683 | { | 1671 | { |
1684 | struct page *page; | 1672 | struct page *page; |
1685 | int err; | 1673 | int err; |
1686 | 1674 | ||
1687 | retry: | 1675 | retry: |
1688 | page = __read_cache_page(mapping, index, filler, data); | 1676 | page = __read_cache_page(mapping, index, filler, data, gfp); |
1689 | if (IS_ERR(page)) | 1677 | if (IS_ERR(page)) |
1690 | return page; | 1678 | return page; |
1691 | if (PageUptodate(page)) | 1679 | if (PageUptodate(page)) |
@@ -1710,8 +1698,67 @@ out: | |||
1710 | mark_page_accessed(page); | 1698 | mark_page_accessed(page); |
1711 | return page; | 1699 | return page; |
1712 | } | 1700 | } |
1701 | |||
1702 | /** | ||
1703 | * read_cache_page_async - read into page cache, fill it if needed | ||
1704 | * @mapping: the page's address_space | ||
1705 | * @index: the page index | ||
1706 | * @filler: function to perform the read | ||
1707 | * @data: destination for read data | ||
1708 | * | ||
1709 | * Same as read_cache_page, but don't wait for page to become unlocked | ||
1710 | * after submitting it to the filler. | ||
1711 | * | ||
1712 | * Read into the page cache. If a page already exists, and PageUptodate() is | ||
1713 | * not set, try to fill the page but don't wait for it to become unlocked. | ||
1714 | * | ||
1715 | * If the page does not get brought uptodate, return -EIO. | ||
1716 | */ | ||
1717 | struct page *read_cache_page_async(struct address_space *mapping, | ||
1718 | pgoff_t index, | ||
1719 | int (*filler)(void *,struct page*), | ||
1720 | void *data) | ||
1721 | { | ||
1722 | return do_read_cache_page(mapping, index, filler, data, mapping_gfp_mask(mapping)); | ||
1723 | } | ||
1713 | EXPORT_SYMBOL(read_cache_page_async); | 1724 | EXPORT_SYMBOL(read_cache_page_async); |
1714 | 1725 | ||
1726 | static struct page *wait_on_page_read(struct page *page) | ||
1727 | { | ||
1728 | if (!IS_ERR(page)) { | ||
1729 | wait_on_page_locked(page); | ||
1730 | if (!PageUptodate(page)) { | ||
1731 | page_cache_release(page); | ||
1732 | page = ERR_PTR(-EIO); | ||
1733 | } | ||
1734 | } | ||
1735 | return page; | ||
1736 | } | ||
1737 | |||
1738 | /** | ||
1739 | * read_cache_page_gfp - read into page cache, using specified page allocation flags. | ||
1740 | * @mapping: the page's address_space | ||
1741 | * @index: the page index | ||
1742 | * @gfp: the page allocator flags to use if allocating | ||
1743 | * | ||
1744 | * This is the same as "read_mapping_page(mapping, index, NULL)", but with | ||
1745 | * any new page allocations done using the specified allocation flags. Note | ||
1746 | * that the Radix tree operations will still use GFP_KERNEL, so you can't | ||
1747 | * expect to do this atomically or anything like that - but you can pass in | ||
1748 | * other page requirements. | ||
1749 | * | ||
1750 | * If the page does not get brought uptodate, return -EIO. | ||
1751 | */ | ||
1752 | struct page *read_cache_page_gfp(struct address_space *mapping, | ||
1753 | pgoff_t index, | ||
1754 | gfp_t gfp) | ||
1755 | { | ||
1756 | filler_t *filler = (filler_t *)mapping->a_ops->readpage; | ||
1757 | |||
1758 | return wait_on_page_read(do_read_cache_page(mapping, index, filler, NULL, gfp)); | ||
1759 | } | ||
1760 | EXPORT_SYMBOL(read_cache_page_gfp); | ||
1761 | |||
1715 | /** | 1762 | /** |
1716 | * read_cache_page - read into page cache, fill it if needed | 1763 | * read_cache_page - read into page cache, fill it if needed |
1717 | * @mapping: the page's address_space | 1764 | * @mapping: the page's address_space |
@@ -1729,18 +1776,7 @@ struct page *read_cache_page(struct address_space *mapping, | |||
1729 | int (*filler)(void *,struct page*), | 1776 | int (*filler)(void *,struct page*), |
1730 | void *data) | 1777 | void *data) |
1731 | { | 1778 | { |
1732 | struct page *page; | 1779 | return wait_on_page_read(read_cache_page_async(mapping, index, filler, data)); |
1733 | |||
1734 | page = read_cache_page_async(mapping, index, filler, data); | ||
1735 | if (IS_ERR(page)) | ||
1736 | goto out; | ||
1737 | wait_on_page_locked(page); | ||
1738 | if (!PageUptodate(page)) { | ||
1739 | page_cache_release(page); | ||
1740 | page = ERR_PTR(-EIO); | ||
1741 | } | ||
1742 | out: | ||
1743 | return page; | ||
1744 | } | 1780 | } |
1745 | EXPORT_SYMBOL(read_cache_page); | 1781 | EXPORT_SYMBOL(read_cache_page); |
1746 | 1782 | ||
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 488b644e0e8e..954032b80bed 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -2586,7 +2586,7 @@ static int mem_cgroup_force_empty(struct mem_cgroup *mem, bool free_all) | |||
2586 | if (free_all) | 2586 | if (free_all) |
2587 | goto try_to_free; | 2587 | goto try_to_free; |
2588 | move_account: | 2588 | move_account: |
2589 | while (mem->res.usage > 0) { | 2589 | do { |
2590 | ret = -EBUSY; | 2590 | ret = -EBUSY; |
2591 | if (cgroup_task_count(cgrp) || !list_empty(&cgrp->children)) | 2591 | if (cgroup_task_count(cgrp) || !list_empty(&cgrp->children)) |
2592 | goto out; | 2592 | goto out; |
@@ -2614,8 +2614,8 @@ move_account: | |||
2614 | if (ret == -ENOMEM) | 2614 | if (ret == -ENOMEM) |
2615 | goto try_to_free; | 2615 | goto try_to_free; |
2616 | cond_resched(); | 2616 | cond_resched(); |
2617 | } | 2617 | /* "ret" should also be checked to ensure all lists are empty. */ |
2618 | ret = 0; | 2618 | } while (mem->res.usage > 0 || ret); |
2619 | out: | 2619 | out: |
2620 | css_put(&mem->css); | 2620 | css_put(&mem->css); |
2621 | return ret; | 2621 | return ret; |
@@ -2648,10 +2648,7 @@ try_to_free: | |||
2648 | } | 2648 | } |
2649 | lru_add_drain(); | 2649 | lru_add_drain(); |
2650 | /* try move_account...there may be some *locked* pages. */ | 2650 | /* try move_account...there may be some *locked* pages. */ |
2651 | if (mem->res.usage) | 2651 | goto move_account; |
2652 | goto move_account; | ||
2653 | ret = 0; | ||
2654 | goto out; | ||
2655 | } | 2652 | } |
2656 | 2653 | ||
2657 | int mem_cgroup_force_empty_write(struct cgroup *cont, unsigned int event) | 2654 | int mem_cgroup_force_empty_write(struct cgroup *cont, unsigned int event) |
diff --git a/mm/nommu.c b/mm/nommu.c index 17773862619b..48a2ecfaf059 100644 --- a/mm/nommu.c +++ b/mm/nommu.c | |||
@@ -552,11 +552,11 @@ static void free_page_series(unsigned long from, unsigned long to) | |||
552 | static void __put_nommu_region(struct vm_region *region) | 552 | static void __put_nommu_region(struct vm_region *region) |
553 | __releases(nommu_region_sem) | 553 | __releases(nommu_region_sem) |
554 | { | 554 | { |
555 | kenter("%p{%d}", region, atomic_read(®ion->vm_usage)); | 555 | kenter("%p{%d}", region, region->vm_usage); |
556 | 556 | ||
557 | BUG_ON(!nommu_region_tree.rb_node); | 557 | BUG_ON(!nommu_region_tree.rb_node); |
558 | 558 | ||
559 | if (atomic_dec_and_test(®ion->vm_usage)) { | 559 | if (--region->vm_usage == 0) { |
560 | if (region->vm_top > region->vm_start) | 560 | if (region->vm_top > region->vm_start) |
561 | delete_nommu_region(region); | 561 | delete_nommu_region(region); |
562 | up_write(&nommu_region_sem); | 562 | up_write(&nommu_region_sem); |
@@ -1205,7 +1205,7 @@ unsigned long do_mmap_pgoff(struct file *file, | |||
1205 | if (!vma) | 1205 | if (!vma) |
1206 | goto error_getting_vma; | 1206 | goto error_getting_vma; |
1207 | 1207 | ||
1208 | atomic_set(®ion->vm_usage, 1); | 1208 | region->vm_usage = 1; |
1209 | region->vm_flags = vm_flags; | 1209 | region->vm_flags = vm_flags; |
1210 | region->vm_pgoff = pgoff; | 1210 | region->vm_pgoff = pgoff; |
1211 | 1211 | ||
@@ -1272,7 +1272,7 @@ unsigned long do_mmap_pgoff(struct file *file, | |||
1272 | } | 1272 | } |
1273 | 1273 | ||
1274 | /* we've found a region we can share */ | 1274 | /* we've found a region we can share */ |
1275 | atomic_inc(&pregion->vm_usage); | 1275 | pregion->vm_usage++; |
1276 | vma->vm_region = pregion; | 1276 | vma->vm_region = pregion; |
1277 | start = pregion->vm_start; | 1277 | start = pregion->vm_start; |
1278 | start += (pgoff - pregion->vm_pgoff) << PAGE_SHIFT; | 1278 | start += (pgoff - pregion->vm_pgoff) << PAGE_SHIFT; |
@@ -1289,7 +1289,7 @@ unsigned long do_mmap_pgoff(struct file *file, | |||
1289 | vma->vm_region = NULL; | 1289 | vma->vm_region = NULL; |
1290 | vma->vm_start = 0; | 1290 | vma->vm_start = 0; |
1291 | vma->vm_end = 0; | 1291 | vma->vm_end = 0; |
1292 | atomic_dec(&pregion->vm_usage); | 1292 | pregion->vm_usage--; |
1293 | pregion = NULL; | 1293 | pregion = NULL; |
1294 | goto error_just_free; | 1294 | goto error_just_free; |
1295 | } | 1295 | } |
@@ -1441,10 +1441,9 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, | |||
1441 | 1441 | ||
1442 | kenter(""); | 1442 | kenter(""); |
1443 | 1443 | ||
1444 | /* we're only permitted to split anonymous regions that have a single | 1444 | /* we're only permitted to split anonymous regions (these should have |
1445 | * owner */ | 1445 | * only a single usage on the region) */ |
1446 | if (vma->vm_file || | 1446 | if (vma->vm_file) |
1447 | atomic_read(&vma->vm_region->vm_usage) != 1) | ||
1448 | return -ENOMEM; | 1447 | return -ENOMEM; |
1449 | 1448 | ||
1450 | if (mm->map_count >= sysctl_max_map_count) | 1449 | if (mm->map_count >= sysctl_max_map_count) |
@@ -1518,7 +1517,7 @@ static int shrink_vma(struct mm_struct *mm, | |||
1518 | 1517 | ||
1519 | /* cut the backing region down to size */ | 1518 | /* cut the backing region down to size */ |
1520 | region = vma->vm_region; | 1519 | region = vma->vm_region; |
1521 | BUG_ON(atomic_read(®ion->vm_usage) != 1); | 1520 | BUG_ON(region->vm_usage != 1); |
1522 | 1521 | ||
1523 | down_write(&nommu_region_sem); | 1522 | down_write(&nommu_region_sem); |
1524 | delete_nommu_region(region); | 1523 | delete_nommu_region(region); |
@@ -1762,27 +1761,6 @@ void unmap_mapping_range(struct address_space *mapping, | |||
1762 | EXPORT_SYMBOL(unmap_mapping_range); | 1761 | EXPORT_SYMBOL(unmap_mapping_range); |
1763 | 1762 | ||
1764 | /* | 1763 | /* |
1765 | * ask for an unmapped area at which to create a mapping on a file | ||
1766 | */ | ||
1767 | unsigned long get_unmapped_area(struct file *file, unsigned long addr, | ||
1768 | unsigned long len, unsigned long pgoff, | ||
1769 | unsigned long flags) | ||
1770 | { | ||
1771 | unsigned long (*get_area)(struct file *, unsigned long, unsigned long, | ||
1772 | unsigned long, unsigned long); | ||
1773 | |||
1774 | get_area = current->mm->get_unmapped_area; | ||
1775 | if (file && file->f_op && file->f_op->get_unmapped_area) | ||
1776 | get_area = file->f_op->get_unmapped_area; | ||
1777 | |||
1778 | if (!get_area) | ||
1779 | return -ENOSYS; | ||
1780 | |||
1781 | return get_area(file, addr, len, pgoff, flags); | ||
1782 | } | ||
1783 | EXPORT_SYMBOL(get_unmapped_area); | ||
1784 | |||
1785 | /* | ||
1786 | * Check that a process has enough memory to allocate a new virtual | 1764 | * Check that a process has enough memory to allocate a new virtual |
1787 | * mapping. 0 means there is enough memory for the allocation to | 1765 | * mapping. 0 means there is enough memory for the allocation to |
1788 | * succeed and -ENOMEM implies there is not. | 1766 | * succeed and -ENOMEM implies there is not. |
@@ -1936,3 +1914,65 @@ int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, in | |||
1936 | mmput(mm); | 1914 | mmput(mm); |
1937 | return len; | 1915 | return len; |
1938 | } | 1916 | } |
1917 | |||
1918 | /** | ||
1919 | * nommu_shrink_inode_mappings - Shrink the shared mappings on an inode | ||
1920 | * @inode: The inode to check | ||
1921 | * @size: The current filesize of the inode | ||
1922 | * @newsize: The proposed filesize of the inode | ||
1923 | * | ||
1924 | * Check the shared mappings on an inode on behalf of a shrinking truncate to | ||
1925 | * make sure that that any outstanding VMAs aren't broken and then shrink the | ||
1926 | * vm_regions that extend that beyond so that do_mmap_pgoff() doesn't | ||
1927 | * automatically grant mappings that are too large. | ||
1928 | */ | ||
1929 | int nommu_shrink_inode_mappings(struct inode *inode, size_t size, | ||
1930 | size_t newsize) | ||
1931 | { | ||
1932 | struct vm_area_struct *vma; | ||
1933 | struct prio_tree_iter iter; | ||
1934 | struct vm_region *region; | ||
1935 | pgoff_t low, high; | ||
1936 | size_t r_size, r_top; | ||
1937 | |||
1938 | low = newsize >> PAGE_SHIFT; | ||
1939 | high = (size + PAGE_SIZE - 1) >> PAGE_SHIFT; | ||
1940 | |||
1941 | down_write(&nommu_region_sem); | ||
1942 | |||
1943 | /* search for VMAs that fall within the dead zone */ | ||
1944 | vma_prio_tree_foreach(vma, &iter, &inode->i_mapping->i_mmap, | ||
1945 | low, high) { | ||
1946 | /* found one - only interested if it's shared out of the page | ||
1947 | * cache */ | ||
1948 | if (vma->vm_flags & VM_SHARED) { | ||
1949 | up_write(&nommu_region_sem); | ||
1950 | return -ETXTBSY; /* not quite true, but near enough */ | ||
1951 | } | ||
1952 | } | ||
1953 | |||
1954 | /* reduce any regions that overlap the dead zone - if in existence, | ||
1955 | * these will be pointed to by VMAs that don't overlap the dead zone | ||
1956 | * | ||
1957 | * we don't check for any regions that start beyond the EOF as there | ||
1958 | * shouldn't be any | ||
1959 | */ | ||
1960 | vma_prio_tree_foreach(vma, &iter, &inode->i_mapping->i_mmap, | ||
1961 | 0, ULONG_MAX) { | ||
1962 | if (!(vma->vm_flags & VM_SHARED)) | ||
1963 | continue; | ||
1964 | |||
1965 | region = vma->vm_region; | ||
1966 | r_size = region->vm_top - region->vm_start; | ||
1967 | r_top = (region->vm_pgoff << PAGE_SHIFT) + r_size; | ||
1968 | |||
1969 | if (r_top > newsize) { | ||
1970 | region->vm_top -= r_top - newsize; | ||
1971 | if (region->vm_end > region->vm_top) | ||
1972 | region->vm_end = region->vm_top; | ||
1973 | } | ||
1974 | } | ||
1975 | |||
1976 | up_write(&nommu_region_sem); | ||
1977 | return 0; | ||
1978 | } | ||
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 4e9f5cc5fb59..8deb9d0fd5b1 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -556,8 +556,9 @@ static void free_pcppages_bulk(struct zone *zone, int count, | |||
556 | page = list_entry(list->prev, struct page, lru); | 556 | page = list_entry(list->prev, struct page, lru); |
557 | /* must delete as __free_one_page list manipulates */ | 557 | /* must delete as __free_one_page list manipulates */ |
558 | list_del(&page->lru); | 558 | list_del(&page->lru); |
559 | __free_one_page(page, zone, 0, migratetype); | 559 | /* MIGRATE_MOVABLE list may include MIGRATE_RESERVEs */ |
560 | trace_mm_page_pcpu_drain(page, 0, migratetype); | 560 | __free_one_page(page, zone, 0, page_private(page)); |
561 | trace_mm_page_pcpu_drain(page, 0, page_private(page)); | ||
561 | } while (--count && --batch_free && !list_empty(list)); | 562 | } while (--count && --batch_free && !list_empty(list)); |
562 | } | 563 | } |
563 | spin_unlock(&zone->lock); | 564 | spin_unlock(&zone->lock); |
@@ -1222,10 +1223,10 @@ again: | |||
1222 | } | 1223 | } |
1223 | spin_lock_irqsave(&zone->lock, flags); | 1224 | spin_lock_irqsave(&zone->lock, flags); |
1224 | page = __rmqueue(zone, order, migratetype); | 1225 | page = __rmqueue(zone, order, migratetype); |
1225 | __mod_zone_page_state(zone, NR_FREE_PAGES, -(1 << order)); | ||
1226 | spin_unlock(&zone->lock); | 1226 | spin_unlock(&zone->lock); |
1227 | if (!page) | 1227 | if (!page) |
1228 | goto failed; | 1228 | goto failed; |
1229 | __mod_zone_page_state(zone, NR_FREE_PAGES, -(1 << order)); | ||
1229 | } | 1230 | } |
1230 | 1231 | ||
1231 | __count_zone_vm_events(PGALLOC, zone, 1 << order); | 1232 | __count_zone_vm_events(PGALLOC, zone, 1 << order); |
@@ -3998,7 +3999,7 @@ void __init add_active_range(unsigned int nid, unsigned long start_pfn, | |||
3998 | } | 3999 | } |
3999 | 4000 | ||
4000 | /* Merge backward if suitable */ | 4001 | /* Merge backward if suitable */ |
4001 | if (start_pfn < early_node_map[i].end_pfn && | 4002 | if (start_pfn < early_node_map[i].start_pfn && |
4002 | end_pfn >= early_node_map[i].start_pfn) { | 4003 | end_pfn >= early_node_map[i].start_pfn) { |
4003 | early_node_map[i].start_pfn = start_pfn; | 4004 | early_node_map[i].start_pfn = start_pfn; |
4004 | return; | 4005 | return; |
diff --git a/mm/truncate.c b/mm/truncate.c index 342deee22684..e87e37244829 100644 --- a/mm/truncate.c +++ b/mm/truncate.c | |||
@@ -522,22 +522,20 @@ EXPORT_SYMBOL_GPL(invalidate_inode_pages2); | |||
522 | */ | 522 | */ |
523 | void truncate_pagecache(struct inode *inode, loff_t old, loff_t new) | 523 | void truncate_pagecache(struct inode *inode, loff_t old, loff_t new) |
524 | { | 524 | { |
525 | if (new < old) { | 525 | struct address_space *mapping = inode->i_mapping; |
526 | struct address_space *mapping = inode->i_mapping; | 526 | |
527 | 527 | /* | |
528 | /* | 528 | * unmap_mapping_range is called twice, first simply for |
529 | * unmap_mapping_range is called twice, first simply for | 529 | * efficiency so that truncate_inode_pages does fewer |
530 | * efficiency so that truncate_inode_pages does fewer | 530 | * single-page unmaps. However after this first call, and |
531 | * single-page unmaps. However after this first call, and | 531 | * before truncate_inode_pages finishes, it is possible for |
532 | * before truncate_inode_pages finishes, it is possible for | 532 | * private pages to be COWed, which remain after |
533 | * private pages to be COWed, which remain after | 533 | * truncate_inode_pages finishes, hence the second |
534 | * truncate_inode_pages finishes, hence the second | 534 | * unmap_mapping_range call must be made for correctness. |
535 | * unmap_mapping_range call must be made for correctness. | 535 | */ |
536 | */ | 536 | unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1); |
537 | unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1); | 537 | truncate_inode_pages(mapping, new); |
538 | truncate_inode_pages(mapping, new); | 538 | unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1); |
539 | unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1); | ||
540 | } | ||
541 | } | 539 | } |
542 | EXPORT_SYMBOL(truncate_pagecache); | 540 | EXPORT_SYMBOL(truncate_pagecache); |
543 | 541 | ||
@@ -220,7 +220,7 @@ char *strndup_user(const char __user *s, long n) | |||
220 | } | 220 | } |
221 | EXPORT_SYMBOL(strndup_user); | 221 | EXPORT_SYMBOL(strndup_user); |
222 | 222 | ||
223 | #ifndef HAVE_ARCH_PICK_MMAP_LAYOUT | 223 | #if defined(CONFIG_MMU) && !defined(HAVE_ARCH_PICK_MMAP_LAYOUT) |
224 | void arch_pick_mmap_layout(struct mm_struct *mm) | 224 | void arch_pick_mmap_layout(struct mm_struct *mm) |
225 | { | 225 | { |
226 | mm->mmap_base = TASK_UNMAPPED_BASE; | 226 | mm->mmap_base = TASK_UNMAPPED_BASE; |
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 37e69295f250..d55d905463eb 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c | |||
@@ -555,10 +555,8 @@ static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end, | |||
555 | } | 555 | } |
556 | rcu_read_unlock(); | 556 | rcu_read_unlock(); |
557 | 557 | ||
558 | if (nr) { | 558 | if (nr) |
559 | BUG_ON(nr > atomic_read(&vmap_lazy_nr)); | ||
560 | atomic_sub(nr, &vmap_lazy_nr); | 559 | atomic_sub(nr, &vmap_lazy_nr); |
561 | } | ||
562 | 560 | ||
563 | if (nr || force_flush) | 561 | if (nr || force_flush) |
564 | flush_tlb_kernel_range(*start, *end); | 562 | flush_tlb_kernel_range(*start, *end); |
diff --git a/mm/vmscan.c b/mm/vmscan.c index 885207a6b6b7..c26986c85ce0 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -1922,6 +1922,9 @@ static int sleeping_prematurely(pg_data_t *pgdat, int order, long remaining) | |||
1922 | if (!populated_zone(zone)) | 1922 | if (!populated_zone(zone)) |
1923 | continue; | 1923 | continue; |
1924 | 1924 | ||
1925 | if (zone_is_all_unreclaimable(zone)) | ||
1926 | continue; | ||
1927 | |||
1925 | if (!zone_watermark_ok(zone, order, high_wmark_pages(zone), | 1928 | if (!zone_watermark_ok(zone, order, high_wmark_pages(zone), |
1926 | 0, 0)) | 1929 | 0, 0)) |
1927 | return 1; | 1930 | return 1; |
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index b7889782047e..c1b92cab46c7 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c | |||
@@ -163,7 +163,7 @@ int vlan_skb_recv(struct sk_buff *skb, struct net_device *dev, | |||
163 | goto err_unlock; | 163 | goto err_unlock; |
164 | } | 164 | } |
165 | 165 | ||
166 | rx_stats = per_cpu_ptr(vlan_dev_info(dev)->vlan_rx_stats, | 166 | rx_stats = per_cpu_ptr(vlan_dev_info(skb->dev)->vlan_rx_stats, |
167 | smp_processor_id()); | 167 | smp_processor_id()); |
168 | rx_stats->rx_packets++; | 168 | rx_stats->rx_packets++; |
169 | rx_stats->rx_bytes += skb->len; | 169 | rx_stats->rx_bytes += skb->len; |
diff --git a/net/appletalk/aarp.c b/net/appletalk/aarp.c index 9d4adfd22757..f2b3b56aa779 100644 --- a/net/appletalk/aarp.c +++ b/net/appletalk/aarp.c | |||
@@ -819,7 +819,7 @@ static int aarp_rcv(struct sk_buff *skb, struct net_device *dev, | |||
819 | ma = &ifa->address; | 819 | ma = &ifa->address; |
820 | else { /* We need to make a copy of the entry. */ | 820 | else { /* We need to make a copy of the entry. */ |
821 | da.s_node = sa.s_node; | 821 | da.s_node = sa.s_node; |
822 | da.s_net = da.s_net; | 822 | da.s_net = sa.s_net; |
823 | ma = &da; | 823 | ma = &da; |
824 | } | 824 | } |
825 | 825 | ||
diff --git a/net/ax25/ax25_out.c b/net/ax25/ax25_out.c index bf706f83a5c9..14912600ec57 100644 --- a/net/ax25/ax25_out.c +++ b/net/ax25/ax25_out.c | |||
@@ -92,6 +92,12 @@ ax25_cb *ax25_send_frame(struct sk_buff *skb, int paclen, ax25_address *src, ax2 | |||
92 | #endif | 92 | #endif |
93 | } | 93 | } |
94 | 94 | ||
95 | /* | ||
96 | * There is one ref for the state machine; a caller needs | ||
97 | * one more to put it back, just like with the existing one. | ||
98 | */ | ||
99 | ax25_cb_hold(ax25); | ||
100 | |||
95 | ax25_cb_add(ax25); | 101 | ax25_cb_add(ax25); |
96 | 102 | ||
97 | ax25->state = AX25_STATE_1; | 103 | ax25->state = AX25_STATE_1; |
diff --git a/net/dccp/ccid.c b/net/dccp/ccid.c index f3e9ba1cfd01..57dfb9c8c4f2 100644 --- a/net/dccp/ccid.c +++ b/net/dccp/ccid.c | |||
@@ -77,34 +77,24 @@ int ccid_getsockopt_builtin_ccids(struct sock *sk, int len, | |||
77 | return err; | 77 | return err; |
78 | } | 78 | } |
79 | 79 | ||
80 | static struct kmem_cache *ccid_kmem_cache_create(int obj_size, const char *fmt,...) | 80 | static struct kmem_cache *ccid_kmem_cache_create(int obj_size, char *slab_name_fmt, const char *fmt,...) |
81 | { | 81 | { |
82 | struct kmem_cache *slab; | 82 | struct kmem_cache *slab; |
83 | char slab_name_fmt[32], *slab_name; | ||
84 | va_list args; | 83 | va_list args; |
85 | 84 | ||
86 | va_start(args, fmt); | 85 | va_start(args, fmt); |
87 | vsnprintf(slab_name_fmt, sizeof(slab_name_fmt), fmt, args); | 86 | vsnprintf(slab_name_fmt, sizeof(slab_name_fmt), fmt, args); |
88 | va_end(args); | 87 | va_end(args); |
89 | 88 | ||
90 | slab_name = kstrdup(slab_name_fmt, GFP_KERNEL); | 89 | slab = kmem_cache_create(slab_name_fmt, sizeof(struct ccid) + obj_size, 0, |
91 | if (slab_name == NULL) | ||
92 | return NULL; | ||
93 | slab = kmem_cache_create(slab_name, sizeof(struct ccid) + obj_size, 0, | ||
94 | SLAB_HWCACHE_ALIGN, NULL); | 90 | SLAB_HWCACHE_ALIGN, NULL); |
95 | if (slab == NULL) | ||
96 | kfree(slab_name); | ||
97 | return slab; | 91 | return slab; |
98 | } | 92 | } |
99 | 93 | ||
100 | static void ccid_kmem_cache_destroy(struct kmem_cache *slab) | 94 | static void ccid_kmem_cache_destroy(struct kmem_cache *slab) |
101 | { | 95 | { |
102 | if (slab != NULL) { | 96 | if (slab != NULL) |
103 | const char *name = kmem_cache_name(slab); | ||
104 | |||
105 | kmem_cache_destroy(slab); | 97 | kmem_cache_destroy(slab); |
106 | kfree(name); | ||
107 | } | ||
108 | } | 98 | } |
109 | 99 | ||
110 | static int ccid_activate(struct ccid_operations *ccid_ops) | 100 | static int ccid_activate(struct ccid_operations *ccid_ops) |
@@ -113,6 +103,7 @@ static int ccid_activate(struct ccid_operations *ccid_ops) | |||
113 | 103 | ||
114 | ccid_ops->ccid_hc_rx_slab = | 104 | ccid_ops->ccid_hc_rx_slab = |
115 | ccid_kmem_cache_create(ccid_ops->ccid_hc_rx_obj_size, | 105 | ccid_kmem_cache_create(ccid_ops->ccid_hc_rx_obj_size, |
106 | ccid_ops->ccid_hc_rx_slab_name, | ||
116 | "ccid%u_hc_rx_sock", | 107 | "ccid%u_hc_rx_sock", |
117 | ccid_ops->ccid_id); | 108 | ccid_ops->ccid_id); |
118 | if (ccid_ops->ccid_hc_rx_slab == NULL) | 109 | if (ccid_ops->ccid_hc_rx_slab == NULL) |
@@ -120,6 +111,7 @@ static int ccid_activate(struct ccid_operations *ccid_ops) | |||
120 | 111 | ||
121 | ccid_ops->ccid_hc_tx_slab = | 112 | ccid_ops->ccid_hc_tx_slab = |
122 | ccid_kmem_cache_create(ccid_ops->ccid_hc_tx_obj_size, | 113 | ccid_kmem_cache_create(ccid_ops->ccid_hc_tx_obj_size, |
114 | ccid_ops->ccid_hc_tx_slab_name, | ||
123 | "ccid%u_hc_tx_sock", | 115 | "ccid%u_hc_tx_sock", |
124 | ccid_ops->ccid_id); | 116 | ccid_ops->ccid_id); |
125 | if (ccid_ops->ccid_hc_tx_slab == NULL) | 117 | if (ccid_ops->ccid_hc_tx_slab == NULL) |
diff --git a/net/dccp/ccid.h b/net/dccp/ccid.h index facedd20b531..269958bf7fe9 100644 --- a/net/dccp/ccid.h +++ b/net/dccp/ccid.h | |||
@@ -49,6 +49,8 @@ struct ccid_operations { | |||
49 | const char *ccid_name; | 49 | const char *ccid_name; |
50 | struct kmem_cache *ccid_hc_rx_slab, | 50 | struct kmem_cache *ccid_hc_rx_slab, |
51 | *ccid_hc_tx_slab; | 51 | *ccid_hc_tx_slab; |
52 | char ccid_hc_rx_slab_name[32]; | ||
53 | char ccid_hc_tx_slab_name[32]; | ||
52 | __u32 ccid_hc_rx_obj_size, | 54 | __u32 ccid_hc_rx_obj_size, |
53 | ccid_hc_tx_obj_size; | 55 | ccid_hc_tx_obj_size; |
54 | /* Interface Routines */ | 56 | /* Interface Routines */ |
diff --git a/net/dccp/probe.c b/net/dccp/probe.c index a1362dc8abb0..bace1d8cbcfd 100644 --- a/net/dccp/probe.c +++ b/net/dccp/probe.c | |||
@@ -161,7 +161,8 @@ static __init int dccpprobe_init(void) | |||
161 | if (!proc_net_fops_create(&init_net, procname, S_IRUSR, &dccpprobe_fops)) | 161 | if (!proc_net_fops_create(&init_net, procname, S_IRUSR, &dccpprobe_fops)) |
162 | goto err0; | 162 | goto err0; |
163 | 163 | ||
164 | ret = register_jprobe(&dccp_send_probe); | 164 | ret = try_then_request_module((register_jprobe(&dccp_send_probe) == 0), |
165 | "dccp"); | ||
165 | if (ret) | 166 | if (ret) |
166 | goto err1; | 167 | goto err1; |
167 | 168 | ||
diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c index bdb78dd180ce..1aaa8110d84b 100644 --- a/net/ipv4/inet_diag.c +++ b/net/ipv4/inet_diag.c | |||
@@ -368,7 +368,7 @@ static int inet_diag_bc_run(const void *bc, int len, | |||
368 | yes = entry->sport >= op[1].no; | 368 | yes = entry->sport >= op[1].no; |
369 | break; | 369 | break; |
370 | case INET_DIAG_BC_S_LE: | 370 | case INET_DIAG_BC_S_LE: |
371 | yes = entry->dport <= op[1].no; | 371 | yes = entry->sport <= op[1].no; |
372 | break; | 372 | break; |
373 | case INET_DIAG_BC_D_GE: | 373 | case INET_DIAG_BC_D_GE: |
374 | yes = entry->dport >= op[1].no; | 374 | yes = entry->dport >= op[1].no; |
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index e446496f564f..d62b05d33384 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c | |||
@@ -586,7 +586,9 @@ static void __net_exit ip_rt_do_proc_exit(struct net *net) | |||
586 | { | 586 | { |
587 | remove_proc_entry("rt_cache", net->proc_net_stat); | 587 | remove_proc_entry("rt_cache", net->proc_net_stat); |
588 | remove_proc_entry("rt_cache", net->proc_net); | 588 | remove_proc_entry("rt_cache", net->proc_net); |
589 | #ifdef CONFIG_NET_CLS_ROUTE | ||
589 | remove_proc_entry("rt_acct", net->proc_net); | 590 | remove_proc_entry("rt_acct", net->proc_net); |
591 | #endif | ||
590 | } | 592 | } |
591 | 593 | ||
592 | static struct pernet_operations ip_rt_proc_ops __net_initdata = { | 594 | static struct pernet_operations ip_rt_proc_ops __net_initdata = { |
diff --git a/net/ipv4/tcp_probe.c b/net/ipv4/tcp_probe.c index bb110c5ce1d2..9bc805df95d2 100644 --- a/net/ipv4/tcp_probe.c +++ b/net/ipv4/tcp_probe.c | |||
@@ -39,9 +39,9 @@ static int port __read_mostly = 0; | |||
39 | MODULE_PARM_DESC(port, "Port to match (0=all)"); | 39 | MODULE_PARM_DESC(port, "Port to match (0=all)"); |
40 | module_param(port, int, 0); | 40 | module_param(port, int, 0); |
41 | 41 | ||
42 | static int bufsize __read_mostly = 4096; | 42 | static unsigned int bufsize __read_mostly = 4096; |
43 | MODULE_PARM_DESC(bufsize, "Log buffer size in packets (4096)"); | 43 | MODULE_PARM_DESC(bufsize, "Log buffer size in packets (4096)"); |
44 | module_param(bufsize, int, 0); | 44 | module_param(bufsize, uint, 0); |
45 | 45 | ||
46 | static int full __read_mostly; | 46 | static int full __read_mostly; |
47 | MODULE_PARM_DESC(full, "Full log (1=every ack packet received, 0=only cwnd changes)"); | 47 | MODULE_PARM_DESC(full, "Full log (1=every ack packet received, 0=only cwnd changes)"); |
@@ -75,12 +75,12 @@ static struct { | |||
75 | 75 | ||
76 | static inline int tcp_probe_used(void) | 76 | static inline int tcp_probe_used(void) |
77 | { | 77 | { |
78 | return (tcp_probe.head - tcp_probe.tail) % bufsize; | 78 | return (tcp_probe.head - tcp_probe.tail) & (bufsize - 1); |
79 | } | 79 | } |
80 | 80 | ||
81 | static inline int tcp_probe_avail(void) | 81 | static inline int tcp_probe_avail(void) |
82 | { | 82 | { |
83 | return bufsize - tcp_probe_used(); | 83 | return bufsize - tcp_probe_used() - 1; |
84 | } | 84 | } |
85 | 85 | ||
86 | /* | 86 | /* |
@@ -116,7 +116,7 @@ static int jtcp_rcv_established(struct sock *sk, struct sk_buff *skb, | |||
116 | p->ssthresh = tcp_current_ssthresh(sk); | 116 | p->ssthresh = tcp_current_ssthresh(sk); |
117 | p->srtt = tp->srtt >> 3; | 117 | p->srtt = tp->srtt >> 3; |
118 | 118 | ||
119 | tcp_probe.head = (tcp_probe.head + 1) % bufsize; | 119 | tcp_probe.head = (tcp_probe.head + 1) & (bufsize - 1); |
120 | } | 120 | } |
121 | tcp_probe.lastcwnd = tp->snd_cwnd; | 121 | tcp_probe.lastcwnd = tp->snd_cwnd; |
122 | spin_unlock(&tcp_probe.lock); | 122 | spin_unlock(&tcp_probe.lock); |
@@ -149,7 +149,7 @@ static int tcpprobe_open(struct inode * inode, struct file * file) | |||
149 | static int tcpprobe_sprint(char *tbuf, int n) | 149 | static int tcpprobe_sprint(char *tbuf, int n) |
150 | { | 150 | { |
151 | const struct tcp_log *p | 151 | const struct tcp_log *p |
152 | = tcp_probe.log + tcp_probe.tail % bufsize; | 152 | = tcp_probe.log + tcp_probe.tail; |
153 | struct timespec tv | 153 | struct timespec tv |
154 | = ktime_to_timespec(ktime_sub(p->tstamp, tcp_probe.start)); | 154 | = ktime_to_timespec(ktime_sub(p->tstamp, tcp_probe.start)); |
155 | 155 | ||
@@ -192,7 +192,7 @@ static ssize_t tcpprobe_read(struct file *file, char __user *buf, | |||
192 | width = tcpprobe_sprint(tbuf, sizeof(tbuf)); | 192 | width = tcpprobe_sprint(tbuf, sizeof(tbuf)); |
193 | 193 | ||
194 | if (cnt + width < len) | 194 | if (cnt + width < len) |
195 | tcp_probe.tail = (tcp_probe.tail + 1) % bufsize; | 195 | tcp_probe.tail = (tcp_probe.tail + 1) & (bufsize - 1); |
196 | 196 | ||
197 | spin_unlock_bh(&tcp_probe.lock); | 197 | spin_unlock_bh(&tcp_probe.lock); |
198 | 198 | ||
@@ -222,9 +222,10 @@ static __init int tcpprobe_init(void) | |||
222 | init_waitqueue_head(&tcp_probe.wait); | 222 | init_waitqueue_head(&tcp_probe.wait); |
223 | spin_lock_init(&tcp_probe.lock); | 223 | spin_lock_init(&tcp_probe.lock); |
224 | 224 | ||
225 | if (bufsize < 0) | 225 | if (bufsize == 0) |
226 | return -EINVAL; | 226 | return -EINVAL; |
227 | 227 | ||
228 | bufsize = roundup_pow_of_two(bufsize); | ||
228 | tcp_probe.log = kcalloc(bufsize, sizeof(struct tcp_log), GFP_KERNEL); | 229 | tcp_probe.log = kcalloc(bufsize, sizeof(struct tcp_log), GFP_KERNEL); |
229 | if (!tcp_probe.log) | 230 | if (!tcp_probe.log) |
230 | goto err0; | 231 | goto err0; |
@@ -236,7 +237,7 @@ static __init int tcpprobe_init(void) | |||
236 | if (ret) | 237 | if (ret) |
237 | goto err1; | 238 | goto err1; |
238 | 239 | ||
239 | pr_info("TCP probe registered (port=%d)\n", port); | 240 | pr_info("TCP probe registered (port=%d) bufsize=%u\n", port, bufsize); |
240 | return 0; | 241 | return 0; |
241 | err1: | 242 | err1: |
242 | proc_net_remove(&init_net, procname); | 243 | proc_net_remove(&init_net, procname); |
diff --git a/net/ipv4/xfrm4_policy.c b/net/ipv4/xfrm4_policy.c index 8c08a28d8f83..67107d63c1cd 100644 --- a/net/ipv4/xfrm4_policy.c +++ b/net/ipv4/xfrm4_policy.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <net/xfrm.h> | 15 | #include <net/xfrm.h> |
16 | #include <net/ip.h> | 16 | #include <net/ip.h> |
17 | 17 | ||
18 | static struct dst_ops xfrm4_dst_ops; | ||
19 | static struct xfrm_policy_afinfo xfrm4_policy_afinfo; | 18 | static struct xfrm_policy_afinfo xfrm4_policy_afinfo; |
20 | 19 | ||
21 | static struct dst_entry *xfrm4_dst_lookup(struct net *net, int tos, | 20 | static struct dst_entry *xfrm4_dst_lookup(struct net *net, int tos, |
@@ -190,8 +189,10 @@ _decode_session4(struct sk_buff *skb, struct flowi *fl, int reverse) | |||
190 | 189 | ||
191 | static inline int xfrm4_garbage_collect(struct dst_ops *ops) | 190 | static inline int xfrm4_garbage_collect(struct dst_ops *ops) |
192 | { | 191 | { |
193 | xfrm4_policy_afinfo.garbage_collect(&init_net); | 192 | struct net *net = container_of(ops, struct net, xfrm.xfrm4_dst_ops); |
194 | return (atomic_read(&xfrm4_dst_ops.entries) > xfrm4_dst_ops.gc_thresh*2); | 193 | |
194 | xfrm4_policy_afinfo.garbage_collect(net); | ||
195 | return (atomic_read(&ops->entries) > ops->gc_thresh * 2); | ||
195 | } | 196 | } |
196 | 197 | ||
197 | static void xfrm4_update_pmtu(struct dst_entry *dst, u32 mtu) | 198 | static void xfrm4_update_pmtu(struct dst_entry *dst, u32 mtu) |
@@ -268,7 +269,7 @@ static struct xfrm_policy_afinfo xfrm4_policy_afinfo = { | |||
268 | static struct ctl_table xfrm4_policy_table[] = { | 269 | static struct ctl_table xfrm4_policy_table[] = { |
269 | { | 270 | { |
270 | .procname = "xfrm4_gc_thresh", | 271 | .procname = "xfrm4_gc_thresh", |
271 | .data = &xfrm4_dst_ops.gc_thresh, | 272 | .data = &init_net.xfrm.xfrm4_dst_ops.gc_thresh, |
272 | .maxlen = sizeof(int), | 273 | .maxlen = sizeof(int), |
273 | .mode = 0644, | 274 | .mode = 0644, |
274 | .proc_handler = proc_dointvec, | 275 | .proc_handler = proc_dointvec, |
@@ -295,8 +296,6 @@ static void __exit xfrm4_policy_fini(void) | |||
295 | 296 | ||
296 | void __init xfrm4_init(int rt_max_size) | 297 | void __init xfrm4_init(int rt_max_size) |
297 | { | 298 | { |
298 | xfrm4_state_init(); | ||
299 | xfrm4_policy_init(); | ||
300 | /* | 299 | /* |
301 | * Select a default value for the gc_thresh based on the main route | 300 | * Select a default value for the gc_thresh based on the main route |
302 | * table hash size. It seems to me the worst case scenario is when | 301 | * table hash size. It seems to me the worst case scenario is when |
@@ -308,6 +307,9 @@ void __init xfrm4_init(int rt_max_size) | |||
308 | * and start cleaning when were 1/2 full | 307 | * and start cleaning when were 1/2 full |
309 | */ | 308 | */ |
310 | xfrm4_dst_ops.gc_thresh = rt_max_size/2; | 309 | xfrm4_dst_ops.gc_thresh = rt_max_size/2; |
310 | |||
311 | xfrm4_state_init(); | ||
312 | xfrm4_policy_init(); | ||
311 | #ifdef CONFIG_SYSCTL | 313 | #ifdef CONFIG_SYSCTL |
312 | sysctl_hdr = register_net_sysctl_table(&init_net, net_ipv4_ctl_path, | 314 | sysctl_hdr = register_net_sysctl_table(&init_net, net_ipv4_ctl_path, |
313 | xfrm4_policy_table); | 315 | xfrm4_policy_table); |
diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c index df159fffe4bc..4bac362b1335 100644 --- a/net/ipv6/exthdrs.c +++ b/net/ipv6/exthdrs.c | |||
@@ -559,6 +559,11 @@ static inline struct inet6_dev *ipv6_skb_idev(struct sk_buff *skb) | |||
559 | return skb_dst(skb) ? ip6_dst_idev(skb_dst(skb)) : __in6_dev_get(skb->dev); | 559 | return skb_dst(skb) ? ip6_dst_idev(skb_dst(skb)) : __in6_dev_get(skb->dev); |
560 | } | 560 | } |
561 | 561 | ||
562 | static inline struct net *ipv6_skb_net(struct sk_buff *skb) | ||
563 | { | ||
564 | return skb_dst(skb) ? dev_net(skb_dst(skb)->dev) : dev_net(skb->dev); | ||
565 | } | ||
566 | |||
562 | /* Router Alert as of RFC 2711 */ | 567 | /* Router Alert as of RFC 2711 */ |
563 | 568 | ||
564 | static int ipv6_hop_ra(struct sk_buff *skb, int optoff) | 569 | static int ipv6_hop_ra(struct sk_buff *skb, int optoff) |
@@ -580,8 +585,8 @@ static int ipv6_hop_ra(struct sk_buff *skb, int optoff) | |||
580 | static int ipv6_hop_jumbo(struct sk_buff *skb, int optoff) | 585 | static int ipv6_hop_jumbo(struct sk_buff *skb, int optoff) |
581 | { | 586 | { |
582 | const unsigned char *nh = skb_network_header(skb); | 587 | const unsigned char *nh = skb_network_header(skb); |
588 | struct net *net = ipv6_skb_net(skb); | ||
583 | u32 pkt_len; | 589 | u32 pkt_len; |
584 | struct net *net = dev_net(skb_dst(skb)->dev); | ||
585 | 590 | ||
586 | if (nh[optoff + 1] != 4 || (optoff & 3) != 2) { | 591 | if (nh[optoff + 1] != 4 || (optoff & 3) != 2) { |
587 | LIMIT_NETDEBUG(KERN_DEBUG "ipv6_hop_jumbo: wrong jumbo opt length/alignment %d\n", | 592 | LIMIT_NETDEBUG(KERN_DEBUG "ipv6_hop_jumbo: wrong jumbo opt length/alignment %d\n", |
diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c index 7254e3f899a7..dbdc696f5fc5 100644 --- a/net/ipv6/xfrm6_policy.c +++ b/net/ipv6/xfrm6_policy.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <net/mip6.h> | 24 | #include <net/mip6.h> |
25 | #endif | 25 | #endif |
26 | 26 | ||
27 | static struct dst_ops xfrm6_dst_ops; | ||
28 | static struct xfrm_policy_afinfo xfrm6_policy_afinfo; | 27 | static struct xfrm_policy_afinfo xfrm6_policy_afinfo; |
29 | 28 | ||
30 | static struct dst_entry *xfrm6_dst_lookup(struct net *net, int tos, | 29 | static struct dst_entry *xfrm6_dst_lookup(struct net *net, int tos, |
@@ -224,8 +223,10 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse) | |||
224 | 223 | ||
225 | static inline int xfrm6_garbage_collect(struct dst_ops *ops) | 224 | static inline int xfrm6_garbage_collect(struct dst_ops *ops) |
226 | { | 225 | { |
227 | xfrm6_policy_afinfo.garbage_collect(&init_net); | 226 | struct net *net = container_of(ops, struct net, xfrm.xfrm6_dst_ops); |
228 | return (atomic_read(&xfrm6_dst_ops.entries) > xfrm6_dst_ops.gc_thresh*2); | 227 | |
228 | xfrm6_policy_afinfo.garbage_collect(net); | ||
229 | return (atomic_read(&ops->entries) > ops->gc_thresh * 2); | ||
229 | } | 230 | } |
230 | 231 | ||
231 | static void xfrm6_update_pmtu(struct dst_entry *dst, u32 mtu) | 232 | static void xfrm6_update_pmtu(struct dst_entry *dst, u32 mtu) |
@@ -310,7 +311,7 @@ static void xfrm6_policy_fini(void) | |||
310 | static struct ctl_table xfrm6_policy_table[] = { | 311 | static struct ctl_table xfrm6_policy_table[] = { |
311 | { | 312 | { |
312 | .procname = "xfrm6_gc_thresh", | 313 | .procname = "xfrm6_gc_thresh", |
313 | .data = &xfrm6_dst_ops.gc_thresh, | 314 | .data = &init_net.xfrm.xfrm6_dst_ops.gc_thresh, |
314 | .maxlen = sizeof(int), | 315 | .maxlen = sizeof(int), |
315 | .mode = 0644, | 316 | .mode = 0644, |
316 | .proc_handler = proc_dointvec, | 317 | .proc_handler = proc_dointvec, |
@@ -326,13 +327,6 @@ int __init xfrm6_init(void) | |||
326 | int ret; | 327 | int ret; |
327 | unsigned int gc_thresh; | 328 | unsigned int gc_thresh; |
328 | 329 | ||
329 | ret = xfrm6_policy_init(); | ||
330 | if (ret) | ||
331 | goto out; | ||
332 | |||
333 | ret = xfrm6_state_init(); | ||
334 | if (ret) | ||
335 | goto out_policy; | ||
336 | /* | 330 | /* |
337 | * We need a good default value for the xfrm6 gc threshold. | 331 | * We need a good default value for the xfrm6 gc threshold. |
338 | * In ipv4 we set it to the route hash table size * 8, which | 332 | * In ipv4 we set it to the route hash table size * 8, which |
@@ -346,6 +340,15 @@ int __init xfrm6_init(void) | |||
346 | */ | 340 | */ |
347 | gc_thresh = FIB6_TABLE_HASHSZ * 8; | 341 | gc_thresh = FIB6_TABLE_HASHSZ * 8; |
348 | xfrm6_dst_ops.gc_thresh = (gc_thresh < 1024) ? 1024 : gc_thresh; | 342 | xfrm6_dst_ops.gc_thresh = (gc_thresh < 1024) ? 1024 : gc_thresh; |
343 | |||
344 | ret = xfrm6_policy_init(); | ||
345 | if (ret) | ||
346 | goto out; | ||
347 | |||
348 | ret = xfrm6_state_init(); | ||
349 | if (ret) | ||
350 | goto out_policy; | ||
351 | |||
349 | #ifdef CONFIG_SYSCTL | 352 | #ifdef CONFIG_SYSCTL |
350 | sysctl_hdr = register_net_sysctl_table(&init_net, net_ipv6_ctl_path, | 353 | sysctl_hdr = register_net_sysctl_table(&init_net, net_ipv6_ctl_path, |
351 | xfrm6_policy_table); | 354 | xfrm6_policy_table); |
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 6dc3579c0ac5..9ae1a4760b58 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c | |||
@@ -1331,6 +1331,9 @@ static int ieee80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *dev, | |||
1331 | struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); | 1331 | struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); |
1332 | struct ieee80211_conf *conf = &local->hw.conf; | 1332 | struct ieee80211_conf *conf = &local->hw.conf; |
1333 | 1333 | ||
1334 | if (sdata->vif.type != NL80211_IFTYPE_STATION) | ||
1335 | return -EOPNOTSUPP; | ||
1336 | |||
1334 | if (!(local->hw.flags & IEEE80211_HW_SUPPORTS_PS)) | 1337 | if (!(local->hw.flags & IEEE80211_HW_SUPPORTS_PS)) |
1335 | return -EOPNOTSUPP; | 1338 | return -EOPNOTSUPP; |
1336 | 1339 | ||
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index 80c16f6e2af6..32abae3ce32a 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c | |||
@@ -15,12 +15,14 @@ | |||
15 | #include <linux/netdevice.h> | 15 | #include <linux/netdevice.h> |
16 | #include <linux/rtnetlink.h> | 16 | #include <linux/rtnetlink.h> |
17 | #include <net/mac80211.h> | 17 | #include <net/mac80211.h> |
18 | #include <net/ieee80211_radiotap.h> | ||
18 | #include "ieee80211_i.h" | 19 | #include "ieee80211_i.h" |
19 | #include "sta_info.h" | 20 | #include "sta_info.h" |
20 | #include "debugfs_netdev.h" | 21 | #include "debugfs_netdev.h" |
21 | #include "mesh.h" | 22 | #include "mesh.h" |
22 | #include "led.h" | 23 | #include "led.h" |
23 | #include "driver-ops.h" | 24 | #include "driver-ops.h" |
25 | #include "wme.h" | ||
24 | 26 | ||
25 | /** | 27 | /** |
26 | * DOC: Interface list locking | 28 | * DOC: Interface list locking |
@@ -314,7 +316,7 @@ static int ieee80211_open(struct net_device *dev) | |||
314 | if (sdata->vif.type == NL80211_IFTYPE_STATION) | 316 | if (sdata->vif.type == NL80211_IFTYPE_STATION) |
315 | ieee80211_queue_work(&local->hw, &sdata->u.mgd.work); | 317 | ieee80211_queue_work(&local->hw, &sdata->u.mgd.work); |
316 | 318 | ||
317 | netif_start_queue(dev); | 319 | netif_tx_start_all_queues(dev); |
318 | 320 | ||
319 | return 0; | 321 | return 0; |
320 | err_del_interface: | 322 | err_del_interface: |
@@ -343,7 +345,7 @@ static int ieee80211_stop(struct net_device *dev) | |||
343 | /* | 345 | /* |
344 | * Stop TX on this interface first. | 346 | * Stop TX on this interface first. |
345 | */ | 347 | */ |
346 | netif_stop_queue(dev); | 348 | netif_tx_stop_all_queues(dev); |
347 | 349 | ||
348 | /* | 350 | /* |
349 | * Now delete all active aggregation sessions. | 351 | * Now delete all active aggregation sessions. |
@@ -644,6 +646,12 @@ static void ieee80211_teardown_sdata(struct net_device *dev) | |||
644 | WARN_ON(flushed); | 646 | WARN_ON(flushed); |
645 | } | 647 | } |
646 | 648 | ||
649 | static u16 ieee80211_netdev_select_queue(struct net_device *dev, | ||
650 | struct sk_buff *skb) | ||
651 | { | ||
652 | return ieee80211_select_queue(IEEE80211_DEV_TO_SUB_IF(dev), skb); | ||
653 | } | ||
654 | |||
647 | static const struct net_device_ops ieee80211_dataif_ops = { | 655 | static const struct net_device_ops ieee80211_dataif_ops = { |
648 | .ndo_open = ieee80211_open, | 656 | .ndo_open = ieee80211_open, |
649 | .ndo_stop = ieee80211_stop, | 657 | .ndo_stop = ieee80211_stop, |
@@ -652,8 +660,38 @@ static const struct net_device_ops ieee80211_dataif_ops = { | |||
652 | .ndo_set_multicast_list = ieee80211_set_multicast_list, | 660 | .ndo_set_multicast_list = ieee80211_set_multicast_list, |
653 | .ndo_change_mtu = ieee80211_change_mtu, | 661 | .ndo_change_mtu = ieee80211_change_mtu, |
654 | .ndo_set_mac_address = eth_mac_addr, | 662 | .ndo_set_mac_address = eth_mac_addr, |
663 | .ndo_select_queue = ieee80211_netdev_select_queue, | ||
655 | }; | 664 | }; |
656 | 665 | ||
666 | static u16 ieee80211_monitor_select_queue(struct net_device *dev, | ||
667 | struct sk_buff *skb) | ||
668 | { | ||
669 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); | ||
670 | struct ieee80211_local *local = sdata->local; | ||
671 | struct ieee80211_hdr *hdr; | ||
672 | struct ieee80211_radiotap_header *rtap = (void *)skb->data; | ||
673 | u8 *p; | ||
674 | |||
675 | if (local->hw.queues < 4) | ||
676 | return 0; | ||
677 | |||
678 | if (skb->len < 4 || | ||
679 | skb->len < le16_to_cpu(rtap->it_len) + 2 /* frame control */) | ||
680 | return 0; /* doesn't matter, frame will be dropped */ | ||
681 | |||
682 | hdr = (void *)((u8 *)skb->data + le16_to_cpu(rtap->it_len)); | ||
683 | |||
684 | if (!ieee80211_is_data_qos(hdr->frame_control)) { | ||
685 | skb->priority = 7; | ||
686 | return ieee802_1d_to_ac[skb->priority]; | ||
687 | } | ||
688 | |||
689 | p = ieee80211_get_qos_ctl(hdr); | ||
690 | skb->priority = *p & IEEE80211_QOS_CTL_TAG1D_MASK; | ||
691 | |||
692 | return ieee80211_downgrade_queue(local, skb); | ||
693 | } | ||
694 | |||
657 | static const struct net_device_ops ieee80211_monitorif_ops = { | 695 | static const struct net_device_ops ieee80211_monitorif_ops = { |
658 | .ndo_open = ieee80211_open, | 696 | .ndo_open = ieee80211_open, |
659 | .ndo_stop = ieee80211_stop, | 697 | .ndo_stop = ieee80211_stop, |
@@ -662,6 +700,7 @@ static const struct net_device_ops ieee80211_monitorif_ops = { | |||
662 | .ndo_set_multicast_list = ieee80211_set_multicast_list, | 700 | .ndo_set_multicast_list = ieee80211_set_multicast_list, |
663 | .ndo_change_mtu = ieee80211_change_mtu, | 701 | .ndo_change_mtu = ieee80211_change_mtu, |
664 | .ndo_set_mac_address = eth_mac_addr, | 702 | .ndo_set_mac_address = eth_mac_addr, |
703 | .ndo_select_queue = ieee80211_monitor_select_queue, | ||
665 | }; | 704 | }; |
666 | 705 | ||
667 | static void ieee80211_if_setup(struct net_device *dev) | 706 | static void ieee80211_if_setup(struct net_device *dev) |
@@ -768,8 +807,8 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name, | |||
768 | 807 | ||
769 | ASSERT_RTNL(); | 808 | ASSERT_RTNL(); |
770 | 809 | ||
771 | ndev = alloc_netdev(sizeof(*sdata) + local->hw.vif_data_size, | 810 | ndev = alloc_netdev_mq(sizeof(*sdata) + local->hw.vif_data_size, |
772 | name, ieee80211_if_setup); | 811 | name, ieee80211_if_setup, local->hw.queues); |
773 | if (!ndev) | 812 | if (!ndev) |
774 | return -ENOMEM; | 813 | return -ENOMEM; |
775 | dev_net_set(ndev, wiphy_net(local->hw.wiphy)); | 814 | dev_net_set(ndev, wiphy_net(local->hw.wiphy)); |
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index c79e59f82fd9..05a18f43e1bf 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -942,7 +942,7 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata, | |||
942 | ieee80211_recalc_ps(local, -1); | 942 | ieee80211_recalc_ps(local, -1); |
943 | mutex_unlock(&local->iflist_mtx); | 943 | mutex_unlock(&local->iflist_mtx); |
944 | 944 | ||
945 | netif_start_queue(sdata->dev); | 945 | netif_tx_start_all_queues(sdata->dev); |
946 | netif_carrier_on(sdata->dev); | 946 | netif_carrier_on(sdata->dev); |
947 | } | 947 | } |
948 | 948 | ||
@@ -1074,7 +1074,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, | |||
1074 | * time -- we don't want the scan code to enable queues. | 1074 | * time -- we don't want the scan code to enable queues. |
1075 | */ | 1075 | */ |
1076 | 1076 | ||
1077 | netif_stop_queue(sdata->dev); | 1077 | netif_tx_stop_all_queues(sdata->dev); |
1078 | netif_carrier_off(sdata->dev); | 1078 | netif_carrier_off(sdata->dev); |
1079 | 1079 | ||
1080 | rcu_read_lock(); | 1080 | rcu_read_lock(); |
@@ -1963,7 +1963,9 @@ static void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, | |||
1963 | rma = ieee80211_rx_mgmt_disassoc(sdata, mgmt, skb->len); | 1963 | rma = ieee80211_rx_mgmt_disassoc(sdata, mgmt, skb->len); |
1964 | break; | 1964 | break; |
1965 | case IEEE80211_STYPE_ACTION: | 1965 | case IEEE80211_STYPE_ACTION: |
1966 | /* XXX: differentiate, can only happen for CSA now! */ | 1966 | if (mgmt->u.action.category != WLAN_CATEGORY_SPECTRUM_MGMT) |
1967 | break; | ||
1968 | |||
1967 | ieee80211_sta_process_chanswitch(sdata, | 1969 | ieee80211_sta_process_chanswitch(sdata, |
1968 | &mgmt->u.action.u.chan_switch.sw_elem, | 1970 | &mgmt->u.action.u.chan_switch.sw_elem, |
1969 | ifmgd->associated); | 1971 | ifmgd->associated); |
diff --git a/net/mac80211/rc80211_pid_algo.c b/net/mac80211/rc80211_pid_algo.c index 699d3ed869c4..29bc4c516238 100644 --- a/net/mac80211/rc80211_pid_algo.c +++ b/net/mac80211/rc80211_pid_algo.c | |||
@@ -190,7 +190,7 @@ static void rate_control_pid_sample(struct rc_pid_info *pinfo, | |||
190 | rate_control_pid_normalize(pinfo, sband->n_bitrates); | 190 | rate_control_pid_normalize(pinfo, sband->n_bitrates); |
191 | 191 | ||
192 | /* Compute the proportional, integral and derivative errors. */ | 192 | /* Compute the proportional, integral and derivative errors. */ |
193 | err_prop = (pinfo->target << RC_PID_ARITH_SHIFT) - pf; | 193 | err_prop = (pinfo->target - pf) << RC_PID_ARITH_SHIFT; |
194 | 194 | ||
195 | err_avg = spinfo->err_avg_sc >> pinfo->smoothing_shift; | 195 | err_avg = spinfo->err_avg_sc >> pinfo->smoothing_shift; |
196 | spinfo->err_avg_sc = spinfo->err_avg_sc - err_avg + err_prop; | 196 | spinfo->err_avg_sc = spinfo->err_avg_sc - err_avg + err_prop; |
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 9f2807aeaf52..82a30c1bf3ab 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -1746,7 +1746,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx) | |||
1746 | memset(info, 0, sizeof(*info)); | 1746 | memset(info, 0, sizeof(*info)); |
1747 | info->flags |= IEEE80211_TX_INTFL_NEED_TXPROCESSING; | 1747 | info->flags |= IEEE80211_TX_INTFL_NEED_TXPROCESSING; |
1748 | info->control.vif = &rx->sdata->vif; | 1748 | info->control.vif = &rx->sdata->vif; |
1749 | ieee80211_select_queue(local, fwd_skb); | 1749 | skb_set_queue_mapping(skb, |
1750 | ieee80211_select_queue(rx->sdata, fwd_skb)); | ||
1751 | ieee80211_set_qos_hdr(local, skb); | ||
1750 | if (is_multicast_ether_addr(fwd_hdr->addr1)) | 1752 | if (is_multicast_ether_addr(fwd_hdr->addr1)) |
1751 | IEEE80211_IFSTA_MESH_CTR_INC(&sdata->u.mesh, | 1753 | IEEE80211_IFSTA_MESH_CTR_INC(&sdata->u.mesh, |
1752 | fwded_mcast); | 1754 | fwded_mcast); |
@@ -2013,6 +2015,10 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx) | |||
2013 | } | 2015 | } |
2014 | break; | 2016 | break; |
2015 | default: | 2017 | default: |
2018 | /* do not process rejected action frames */ | ||
2019 | if (mgmt->u.action.category & 0x80) | ||
2020 | return RX_DROP_MONITOR; | ||
2021 | |||
2016 | return RX_CONTINUE; | 2022 | return RX_CONTINUE; |
2017 | } | 2023 | } |
2018 | 2024 | ||
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c index f1a4c7160300..f934c9620b73 100644 --- a/net/mac80211/scan.c +++ b/net/mac80211/scan.c | |||
@@ -353,10 +353,10 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted) | |||
353 | if (sdata->vif.type == NL80211_IFTYPE_STATION) { | 353 | if (sdata->vif.type == NL80211_IFTYPE_STATION) { |
354 | if (sdata->u.mgd.associated) { | 354 | if (sdata->u.mgd.associated) { |
355 | ieee80211_scan_ps_disable(sdata); | 355 | ieee80211_scan_ps_disable(sdata); |
356 | netif_wake_queue(sdata->dev); | 356 | netif_tx_wake_all_queues(sdata->dev); |
357 | } | 357 | } |
358 | } else | 358 | } else |
359 | netif_wake_queue(sdata->dev); | 359 | netif_tx_wake_all_queues(sdata->dev); |
360 | 360 | ||
361 | /* re-enable beaconing */ | 361 | /* re-enable beaconing */ |
362 | if (sdata->vif.type == NL80211_IFTYPE_AP || | 362 | if (sdata->vif.type == NL80211_IFTYPE_AP || |
@@ -411,7 +411,7 @@ static int ieee80211_start_sw_scan(struct ieee80211_local *local) | |||
411 | * are handled in the scan state machine | 411 | * are handled in the scan state machine |
412 | */ | 412 | */ |
413 | if (sdata->vif.type != NL80211_IFTYPE_STATION) | 413 | if (sdata->vif.type != NL80211_IFTYPE_STATION) |
414 | netif_stop_queue(sdata->dev); | 414 | netif_tx_stop_all_queues(sdata->dev); |
415 | } | 415 | } |
416 | mutex_unlock(&local->iflist_mtx); | 416 | mutex_unlock(&local->iflist_mtx); |
417 | 417 | ||
@@ -575,7 +575,7 @@ static void ieee80211_scan_state_leave_oper_channel(struct ieee80211_local *loca | |||
575 | continue; | 575 | continue; |
576 | 576 | ||
577 | if (sdata->vif.type == NL80211_IFTYPE_STATION) { | 577 | if (sdata->vif.type == NL80211_IFTYPE_STATION) { |
578 | netif_stop_queue(sdata->dev); | 578 | netif_tx_stop_all_queues(sdata->dev); |
579 | if (sdata->u.mgd.associated) | 579 | if (sdata->u.mgd.associated) |
580 | ieee80211_scan_ps_enable(sdata); | 580 | ieee80211_scan_ps_enable(sdata); |
581 | } | 581 | } |
@@ -610,7 +610,7 @@ static void ieee80211_scan_state_enter_oper_channel(struct ieee80211_local *loca | |||
610 | if (sdata->vif.type == NL80211_IFTYPE_STATION) { | 610 | if (sdata->vif.type == NL80211_IFTYPE_STATION) { |
611 | if (sdata->u.mgd.associated) | 611 | if (sdata->u.mgd.associated) |
612 | ieee80211_scan_ps_disable(sdata); | 612 | ieee80211_scan_ps_disable(sdata); |
613 | netif_wake_queue(sdata->dev); | 613 | netif_tx_wake_all_queues(sdata->dev); |
614 | } | 614 | } |
615 | } | 615 | } |
616 | mutex_unlock(&local->iflist_mtx); | 616 | mutex_unlock(&local->iflist_mtx); |
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 27ceaefd7bc8..ac210b586702 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -1512,7 +1512,7 @@ static void ieee80211_xmit(struct ieee80211_sub_if_data *sdata, | |||
1512 | return; | 1512 | return; |
1513 | } | 1513 | } |
1514 | 1514 | ||
1515 | ieee80211_select_queue(local, skb); | 1515 | ieee80211_set_qos_hdr(local, skb); |
1516 | ieee80211_tx(sdata, skb, false); | 1516 | ieee80211_tx(sdata, skb, false); |
1517 | rcu_read_unlock(); | 1517 | rcu_read_unlock(); |
1518 | } | 1518 | } |
@@ -2291,6 +2291,9 @@ void ieee80211_tx_skb(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb) | |||
2291 | skb_set_network_header(skb, 0); | 2291 | skb_set_network_header(skb, 0); |
2292 | skb_set_transport_header(skb, 0); | 2292 | skb_set_transport_header(skb, 0); |
2293 | 2293 | ||
2294 | /* send all internal mgmt frames on VO */ | ||
2295 | skb_set_queue_mapping(skb, 0); | ||
2296 | |||
2294 | /* | 2297 | /* |
2295 | * The other path calling ieee80211_xmit is from the tasklet, | 2298 | * The other path calling ieee80211_xmit is from the tasklet, |
2296 | * and while we can handle concurrent transmissions locking | 2299 | * and while we can handle concurrent transmissions locking |
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index dc76267e436e..3848140313f5 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -269,6 +269,7 @@ static void __ieee80211_wake_queue(struct ieee80211_hw *hw, int queue, | |||
269 | enum queue_stop_reason reason) | 269 | enum queue_stop_reason reason) |
270 | { | 270 | { |
271 | struct ieee80211_local *local = hw_to_local(hw); | 271 | struct ieee80211_local *local = hw_to_local(hw); |
272 | struct ieee80211_sub_if_data *sdata; | ||
272 | 273 | ||
273 | if (WARN_ON(queue >= hw->queues)) | 274 | if (WARN_ON(queue >= hw->queues)) |
274 | return; | 275 | return; |
@@ -281,6 +282,11 @@ static void __ieee80211_wake_queue(struct ieee80211_hw *hw, int queue, | |||
281 | 282 | ||
282 | if (!skb_queue_empty(&local->pending[queue])) | 283 | if (!skb_queue_empty(&local->pending[queue])) |
283 | tasklet_schedule(&local->tx_pending_tasklet); | 284 | tasklet_schedule(&local->tx_pending_tasklet); |
285 | |||
286 | rcu_read_lock(); | ||
287 | list_for_each_entry_rcu(sdata, &local->interfaces, list) | ||
288 | netif_tx_wake_queue(netdev_get_tx_queue(sdata->dev, queue)); | ||
289 | rcu_read_unlock(); | ||
284 | } | 290 | } |
285 | 291 | ||
286 | void ieee80211_wake_queue_by_reason(struct ieee80211_hw *hw, int queue, | 292 | void ieee80211_wake_queue_by_reason(struct ieee80211_hw *hw, int queue, |
@@ -305,11 +311,17 @@ static void __ieee80211_stop_queue(struct ieee80211_hw *hw, int queue, | |||
305 | enum queue_stop_reason reason) | 311 | enum queue_stop_reason reason) |
306 | { | 312 | { |
307 | struct ieee80211_local *local = hw_to_local(hw); | 313 | struct ieee80211_local *local = hw_to_local(hw); |
314 | struct ieee80211_sub_if_data *sdata; | ||
308 | 315 | ||
309 | if (WARN_ON(queue >= hw->queues)) | 316 | if (WARN_ON(queue >= hw->queues)) |
310 | return; | 317 | return; |
311 | 318 | ||
312 | __set_bit(reason, &local->queue_stop_reasons[queue]); | 319 | __set_bit(reason, &local->queue_stop_reasons[queue]); |
320 | |||
321 | rcu_read_lock(); | ||
322 | list_for_each_entry_rcu(sdata, &local->interfaces, list) | ||
323 | netif_tx_stop_queue(netdev_get_tx_queue(sdata->dev, queue)); | ||
324 | rcu_read_unlock(); | ||
313 | } | 325 | } |
314 | 326 | ||
315 | void ieee80211_stop_queue_by_reason(struct ieee80211_hw *hw, int queue, | 327 | void ieee80211_stop_queue_by_reason(struct ieee80211_hw *hw, int queue, |
diff --git a/net/mac80211/wme.c b/net/mac80211/wme.c index b19b7696f3a2..79d887dae738 100644 --- a/net/mac80211/wme.c +++ b/net/mac80211/wme.c | |||
@@ -44,22 +44,69 @@ static int wme_downgrade_ac(struct sk_buff *skb) | |||
44 | } | 44 | } |
45 | 45 | ||
46 | 46 | ||
47 | /* Indicate which queue to use. */ | 47 | /* Indicate which queue to use. */ |
48 | static u16 classify80211(struct ieee80211_local *local, struct sk_buff *skb) | 48 | u16 ieee80211_select_queue(struct ieee80211_sub_if_data *sdata, |
49 | struct sk_buff *skb) | ||
49 | { | 50 | { |
50 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; | 51 | struct ieee80211_local *local = sdata->local; |
52 | struct sta_info *sta = NULL; | ||
53 | u32 sta_flags = 0; | ||
54 | const u8 *ra = NULL; | ||
55 | bool qos = false; | ||
51 | 56 | ||
52 | if (!ieee80211_is_data(hdr->frame_control)) { | 57 | if (local->hw.queues < 4 || skb->len < 6) { |
53 | /* management frames go on AC_VO queue, but are sent | 58 | skb->priority = 0; /* required for correct WPA/11i MIC */ |
54 | * without QoS control fields */ | 59 | return min_t(u16, local->hw.queues - 1, |
55 | return 0; | 60 | ieee802_1d_to_ac[skb->priority]); |
61 | } | ||
62 | |||
63 | rcu_read_lock(); | ||
64 | switch (sdata->vif.type) { | ||
65 | case NL80211_IFTYPE_AP_VLAN: | ||
66 | rcu_read_lock(); | ||
67 | sta = rcu_dereference(sdata->u.vlan.sta); | ||
68 | if (sta) | ||
69 | sta_flags = get_sta_flags(sta); | ||
70 | rcu_read_unlock(); | ||
71 | if (sta) | ||
72 | break; | ||
73 | case NL80211_IFTYPE_AP: | ||
74 | ra = skb->data; | ||
75 | break; | ||
76 | case NL80211_IFTYPE_WDS: | ||
77 | ra = sdata->u.wds.remote_addr; | ||
78 | break; | ||
79 | #ifdef CONFIG_MAC80211_MESH | ||
80 | case NL80211_IFTYPE_MESH_POINT: | ||
81 | /* | ||
82 | * XXX: This is clearly broken ... but already was before, | ||
83 | * because ieee80211_fill_mesh_addresses() would clear A1 | ||
84 | * except for multicast addresses. | ||
85 | */ | ||
86 | break; | ||
87 | #endif | ||
88 | case NL80211_IFTYPE_STATION: | ||
89 | ra = sdata->u.mgd.bssid; | ||
90 | break; | ||
91 | case NL80211_IFTYPE_ADHOC: | ||
92 | ra = skb->data; | ||
93 | break; | ||
94 | default: | ||
95 | break; | ||
56 | } | 96 | } |
57 | 97 | ||
58 | if (0 /* injected */) { | 98 | if (!sta && ra && !is_multicast_ether_addr(ra)) { |
59 | /* use AC from radiotap */ | 99 | sta = sta_info_get(local, ra); |
100 | if (sta) | ||
101 | sta_flags = get_sta_flags(sta); | ||
60 | } | 102 | } |
61 | 103 | ||
62 | if (!ieee80211_is_data_qos(hdr->frame_control)) { | 104 | if (sta_flags & WLAN_STA_WME) |
105 | qos = true; | ||
106 | |||
107 | rcu_read_unlock(); | ||
108 | |||
109 | if (!qos) { | ||
63 | skb->priority = 0; /* required for correct WPA/11i MIC */ | 110 | skb->priority = 0; /* required for correct WPA/11i MIC */ |
64 | return ieee802_1d_to_ac[skb->priority]; | 111 | return ieee802_1d_to_ac[skb->priority]; |
65 | } | 112 | } |
@@ -68,6 +115,12 @@ static u16 classify80211(struct ieee80211_local *local, struct sk_buff *skb) | |||
68 | * data frame has */ | 115 | * data frame has */ |
69 | skb->priority = cfg80211_classify8021d(skb); | 116 | skb->priority = cfg80211_classify8021d(skb); |
70 | 117 | ||
118 | return ieee80211_downgrade_queue(local, skb); | ||
119 | } | ||
120 | |||
121 | u16 ieee80211_downgrade_queue(struct ieee80211_local *local, | ||
122 | struct sk_buff *skb) | ||
123 | { | ||
71 | /* in case we are a client verify acm is not set for this ac */ | 124 | /* in case we are a client verify acm is not set for this ac */ |
72 | while (unlikely(local->wmm_acm & BIT(skb->priority))) { | 125 | while (unlikely(local->wmm_acm & BIT(skb->priority))) { |
73 | if (wme_downgrade_ac(skb)) { | 126 | if (wme_downgrade_ac(skb)) { |
@@ -85,24 +138,17 @@ static u16 classify80211(struct ieee80211_local *local, struct sk_buff *skb) | |||
85 | return ieee802_1d_to_ac[skb->priority]; | 138 | return ieee802_1d_to_ac[skb->priority]; |
86 | } | 139 | } |
87 | 140 | ||
88 | void ieee80211_select_queue(struct ieee80211_local *local, struct sk_buff *skb) | 141 | void ieee80211_set_qos_hdr(struct ieee80211_local *local, struct sk_buff *skb) |
89 | { | 142 | { |
90 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; | 143 | struct ieee80211_hdr *hdr = (void *)skb->data; |
91 | u16 queue; | 144 | |
92 | u8 tid; | 145 | /* Fill in the QoS header if there is one. */ |
93 | |||
94 | queue = classify80211(local, skb); | ||
95 | if (unlikely(queue >= local->hw.queues)) | ||
96 | queue = local->hw.queues - 1; | ||
97 | |||
98 | /* | ||
99 | * Now we know the 1d priority, fill in the QoS header if | ||
100 | * there is one (and we haven't done this before). | ||
101 | */ | ||
102 | if (ieee80211_is_data_qos(hdr->frame_control)) { | 146 | if (ieee80211_is_data_qos(hdr->frame_control)) { |
103 | u8 *p = ieee80211_get_qos_ctl(hdr); | 147 | u8 *p = ieee80211_get_qos_ctl(hdr); |
104 | u8 ack_policy = 0; | 148 | u8 ack_policy = 0, tid; |
149 | |||
105 | tid = skb->priority & IEEE80211_QOS_CTL_TAG1D_MASK; | 150 | tid = skb->priority & IEEE80211_QOS_CTL_TAG1D_MASK; |
151 | |||
106 | if (unlikely(local->wifi_wme_noack_test)) | 152 | if (unlikely(local->wifi_wme_noack_test)) |
107 | ack_policy |= QOS_CONTROL_ACK_POLICY_NOACK << | 153 | ack_policy |= QOS_CONTROL_ACK_POLICY_NOACK << |
108 | QOS_CONTROL_ACK_POLICY_SHIFT; | 154 | QOS_CONTROL_ACK_POLICY_SHIFT; |
@@ -110,6 +156,4 @@ void ieee80211_select_queue(struct ieee80211_local *local, struct sk_buff *skb) | |||
110 | *p++ = ack_policy | tid; | 156 | *p++ = ack_policy | tid; |
111 | *p = 0; | 157 | *p = 0; |
112 | } | 158 | } |
113 | |||
114 | skb_set_queue_mapping(skb, queue); | ||
115 | } | 159 | } |
diff --git a/net/mac80211/wme.h b/net/mac80211/wme.h index d4fd87ca5118..6053b1c9feee 100644 --- a/net/mac80211/wme.h +++ b/net/mac80211/wme.h | |||
@@ -20,7 +20,11 @@ | |||
20 | 20 | ||
21 | extern const int ieee802_1d_to_ac[8]; | 21 | extern const int ieee802_1d_to_ac[8]; |
22 | 22 | ||
23 | void ieee80211_select_queue(struct ieee80211_local *local, | 23 | u16 ieee80211_select_queue(struct ieee80211_sub_if_data *sdata, |
24 | struct sk_buff *skb); | 24 | struct sk_buff *skb); |
25 | void ieee80211_set_qos_hdr(struct ieee80211_local *local, struct sk_buff *skb); | ||
26 | u16 ieee80211_downgrade_queue(struct ieee80211_local *local, | ||
27 | struct sk_buff *skb); | ||
28 | |||
25 | 29 | ||
26 | #endif /* _WME_H */ | 30 | #endif /* _WME_H */ |
diff --git a/net/netrom/nr_route.c b/net/netrom/nr_route.c index aacba76070fc..e2e2d33cafdf 100644 --- a/net/netrom/nr_route.c +++ b/net/netrom/nr_route.c | |||
@@ -843,12 +843,13 @@ int nr_route_frame(struct sk_buff *skb, ax25_cb *ax25) | |||
843 | dptr = skb_push(skb, 1); | 843 | dptr = skb_push(skb, 1); |
844 | *dptr = AX25_P_NETROM; | 844 | *dptr = AX25_P_NETROM; |
845 | 845 | ||
846 | ax25s = ax25_send_frame(skb, 256, (ax25_address *)dev->dev_addr, &nr_neigh->callsign, nr_neigh->digipeat, nr_neigh->dev); | 846 | ax25s = nr_neigh->ax25; |
847 | if (nr_neigh->ax25 && ax25s) { | 847 | nr_neigh->ax25 = ax25_send_frame(skb, 256, |
848 | /* We were already holding this ax25_cb */ | 848 | (ax25_address *)dev->dev_addr, |
849 | &nr_neigh->callsign, | ||
850 | nr_neigh->digipeat, nr_neigh->dev); | ||
851 | if (ax25s) | ||
849 | ax25_cb_put(ax25s); | 852 | ax25_cb_put(ax25s); |
850 | } | ||
851 | nr_neigh->ax25 = ax25s; | ||
852 | 853 | ||
853 | dev_put(dev); | 854 | dev_put(dev); |
854 | ret = (nr_neigh->ax25 != NULL); | 855 | ret = (nr_neigh->ax25 != NULL); |
diff --git a/net/rose/rose_link.c b/net/rose/rose_link.c index bd86a63960ce..5ef5f6988a2e 100644 --- a/net/rose/rose_link.c +++ b/net/rose/rose_link.c | |||
@@ -101,13 +101,17 @@ static void rose_t0timer_expiry(unsigned long param) | |||
101 | static int rose_send_frame(struct sk_buff *skb, struct rose_neigh *neigh) | 101 | static int rose_send_frame(struct sk_buff *skb, struct rose_neigh *neigh) |
102 | { | 102 | { |
103 | ax25_address *rose_call; | 103 | ax25_address *rose_call; |
104 | ax25_cb *ax25s; | ||
104 | 105 | ||
105 | if (ax25cmp(&rose_callsign, &null_ax25_address) == 0) | 106 | if (ax25cmp(&rose_callsign, &null_ax25_address) == 0) |
106 | rose_call = (ax25_address *)neigh->dev->dev_addr; | 107 | rose_call = (ax25_address *)neigh->dev->dev_addr; |
107 | else | 108 | else |
108 | rose_call = &rose_callsign; | 109 | rose_call = &rose_callsign; |
109 | 110 | ||
111 | ax25s = neigh->ax25; | ||
110 | neigh->ax25 = ax25_send_frame(skb, 260, rose_call, &neigh->callsign, neigh->digipeat, neigh->dev); | 112 | neigh->ax25 = ax25_send_frame(skb, 260, rose_call, &neigh->callsign, neigh->digipeat, neigh->dev); |
113 | if (ax25s) | ||
114 | ax25_cb_put(ax25s); | ||
111 | 115 | ||
112 | return (neigh->ax25 != NULL); | 116 | return (neigh->ax25 != NULL); |
113 | } | 117 | } |
@@ -120,13 +124,17 @@ static int rose_send_frame(struct sk_buff *skb, struct rose_neigh *neigh) | |||
120 | static int rose_link_up(struct rose_neigh *neigh) | 124 | static int rose_link_up(struct rose_neigh *neigh) |
121 | { | 125 | { |
122 | ax25_address *rose_call; | 126 | ax25_address *rose_call; |
127 | ax25_cb *ax25s; | ||
123 | 128 | ||
124 | if (ax25cmp(&rose_callsign, &null_ax25_address) == 0) | 129 | if (ax25cmp(&rose_callsign, &null_ax25_address) == 0) |
125 | rose_call = (ax25_address *)neigh->dev->dev_addr; | 130 | rose_call = (ax25_address *)neigh->dev->dev_addr; |
126 | else | 131 | else |
127 | rose_call = &rose_callsign; | 132 | rose_call = &rose_callsign; |
128 | 133 | ||
134 | ax25s = neigh->ax25; | ||
129 | neigh->ax25 = ax25_find_cb(rose_call, &neigh->callsign, neigh->digipeat, neigh->dev); | 135 | neigh->ax25 = ax25_find_cb(rose_call, &neigh->callsign, neigh->digipeat, neigh->dev); |
136 | if (ax25s) | ||
137 | ax25_cb_put(ax25s); | ||
130 | 138 | ||
131 | return (neigh->ax25 != NULL); | 139 | return (neigh->ax25 != NULL); |
132 | } | 140 | } |
diff --git a/net/rose/rose_route.c b/net/rose/rose_route.c index 795c4b025e31..70a0b3b4b4d2 100644 --- a/net/rose/rose_route.c +++ b/net/rose/rose_route.c | |||
@@ -235,6 +235,8 @@ static void rose_remove_neigh(struct rose_neigh *rose_neigh) | |||
235 | 235 | ||
236 | if ((s = rose_neigh_list) == rose_neigh) { | 236 | if ((s = rose_neigh_list) == rose_neigh) { |
237 | rose_neigh_list = rose_neigh->next; | 237 | rose_neigh_list = rose_neigh->next; |
238 | if (rose_neigh->ax25) | ||
239 | ax25_cb_put(rose_neigh->ax25); | ||
238 | kfree(rose_neigh->digipeat); | 240 | kfree(rose_neigh->digipeat); |
239 | kfree(rose_neigh); | 241 | kfree(rose_neigh); |
240 | return; | 242 | return; |
@@ -243,6 +245,8 @@ static void rose_remove_neigh(struct rose_neigh *rose_neigh) | |||
243 | while (s != NULL && s->next != NULL) { | 245 | while (s != NULL && s->next != NULL) { |
244 | if (s->next == rose_neigh) { | 246 | if (s->next == rose_neigh) { |
245 | s->next = rose_neigh->next; | 247 | s->next = rose_neigh->next; |
248 | if (rose_neigh->ax25) | ||
249 | ax25_cb_put(rose_neigh->ax25); | ||
246 | kfree(rose_neigh->digipeat); | 250 | kfree(rose_neigh->digipeat); |
247 | kfree(rose_neigh); | 251 | kfree(rose_neigh); |
248 | return; | 252 | return; |
@@ -812,6 +816,7 @@ void rose_link_failed(ax25_cb *ax25, int reason) | |||
812 | 816 | ||
813 | if (rose_neigh != NULL) { | 817 | if (rose_neigh != NULL) { |
814 | rose_neigh->ax25 = NULL; | 818 | rose_neigh->ax25 = NULL; |
819 | ax25_cb_put(ax25); | ||
815 | 820 | ||
816 | rose_del_route_by_neigh(rose_neigh); | 821 | rose_del_route_by_neigh(rose_neigh); |
817 | rose_kill_by_neigh(rose_neigh); | 822 | rose_kill_by_neigh(rose_neigh); |
diff --git a/net/wireless/core.c b/net/wireless/core.c index c2a2c563d21a..92b812442488 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c | |||
@@ -745,9 +745,9 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb, | |||
745 | mutex_unlock(&rdev->devlist_mtx); | 745 | mutex_unlock(&rdev->devlist_mtx); |
746 | dev_put(dev); | 746 | dev_put(dev); |
747 | } | 747 | } |
748 | #ifdef CONFIG_CFG80211_WEXT | ||
749 | cfg80211_lock_rdev(rdev); | 748 | cfg80211_lock_rdev(rdev); |
750 | mutex_lock(&rdev->devlist_mtx); | 749 | mutex_lock(&rdev->devlist_mtx); |
750 | #ifdef CONFIG_CFG80211_WEXT | ||
751 | wdev_lock(wdev); | 751 | wdev_lock(wdev); |
752 | switch (wdev->iftype) { | 752 | switch (wdev->iftype) { |
753 | case NL80211_IFTYPE_ADHOC: | 753 | case NL80211_IFTYPE_ADHOC: |
@@ -760,10 +760,10 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb, | |||
760 | break; | 760 | break; |
761 | } | 761 | } |
762 | wdev_unlock(wdev); | 762 | wdev_unlock(wdev); |
763 | #endif | ||
763 | rdev->opencount++; | 764 | rdev->opencount++; |
764 | mutex_unlock(&rdev->devlist_mtx); | 765 | mutex_unlock(&rdev->devlist_mtx); |
765 | cfg80211_unlock_rdev(rdev); | 766 | cfg80211_unlock_rdev(rdev); |
766 | #endif | ||
767 | break; | 767 | break; |
768 | case NETDEV_UNREGISTER: | 768 | case NETDEV_UNREGISTER: |
769 | /* | 769 | /* |
diff --git a/net/wireless/reg.c b/net/wireless/reg.c index baa898add287..7a0754c92df4 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c | |||
@@ -1690,7 +1690,7 @@ int regulatory_hint_user(const char *alpha2) | |||
1690 | request->wiphy_idx = WIPHY_IDX_STALE; | 1690 | request->wiphy_idx = WIPHY_IDX_STALE; |
1691 | request->alpha2[0] = alpha2[0]; | 1691 | request->alpha2[0] = alpha2[0]; |
1692 | request->alpha2[1] = alpha2[1]; | 1692 | request->alpha2[1] = alpha2[1]; |
1693 | request->initiator = NL80211_REGDOM_SET_BY_USER, | 1693 | request->initiator = NL80211_REGDOM_SET_BY_USER; |
1694 | 1694 | ||
1695 | queue_regulatory_request(request); | 1695 | queue_regulatory_request(request); |
1696 | 1696 | ||
diff --git a/net/wireless/sme.c b/net/wireless/sme.c index 2333d78187e4..dc0fc4989d54 100644 --- a/net/wireless/sme.c +++ b/net/wireless/sme.c | |||
@@ -655,6 +655,7 @@ void __cfg80211_disconnected(struct net_device *dev, const u8 *ie, | |||
655 | memset(&wrqu, 0, sizeof(wrqu)); | 655 | memset(&wrqu, 0, sizeof(wrqu)); |
656 | wrqu.ap_addr.sa_family = ARPHRD_ETHER; | 656 | wrqu.ap_addr.sa_family = ARPHRD_ETHER; |
657 | wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); | 657 | wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); |
658 | wdev->wext.connect.ssid_len = 0; | ||
658 | #endif | 659 | #endif |
659 | } | 660 | } |
660 | 661 | ||
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index 4725a549ad4d..0ecb16a9a883 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c | |||
@@ -469,16 +469,16 @@ static inline int xfrm_byidx_should_resize(struct net *net, int total) | |||
469 | return 0; | 469 | return 0; |
470 | } | 470 | } |
471 | 471 | ||
472 | void xfrm_spd_getinfo(struct xfrmk_spdinfo *si) | 472 | void xfrm_spd_getinfo(struct net *net, struct xfrmk_spdinfo *si) |
473 | { | 473 | { |
474 | read_lock_bh(&xfrm_policy_lock); | 474 | read_lock_bh(&xfrm_policy_lock); |
475 | si->incnt = init_net.xfrm.policy_count[XFRM_POLICY_IN]; | 475 | si->incnt = net->xfrm.policy_count[XFRM_POLICY_IN]; |
476 | si->outcnt = init_net.xfrm.policy_count[XFRM_POLICY_OUT]; | 476 | si->outcnt = net->xfrm.policy_count[XFRM_POLICY_OUT]; |
477 | si->fwdcnt = init_net.xfrm.policy_count[XFRM_POLICY_FWD]; | 477 | si->fwdcnt = net->xfrm.policy_count[XFRM_POLICY_FWD]; |
478 | si->inscnt = init_net.xfrm.policy_count[XFRM_POLICY_IN+XFRM_POLICY_MAX]; | 478 | si->inscnt = net->xfrm.policy_count[XFRM_POLICY_IN+XFRM_POLICY_MAX]; |
479 | si->outscnt = init_net.xfrm.policy_count[XFRM_POLICY_OUT+XFRM_POLICY_MAX]; | 479 | si->outscnt = net->xfrm.policy_count[XFRM_POLICY_OUT+XFRM_POLICY_MAX]; |
480 | si->fwdscnt = init_net.xfrm.policy_count[XFRM_POLICY_FWD+XFRM_POLICY_MAX]; | 480 | si->fwdscnt = net->xfrm.policy_count[XFRM_POLICY_FWD+XFRM_POLICY_MAX]; |
481 | si->spdhcnt = init_net.xfrm.policy_idx_hmask; | 481 | si->spdhcnt = net->xfrm.policy_idx_hmask; |
482 | si->spdhmcnt = xfrm_policy_hashmax; | 482 | si->spdhmcnt = xfrm_policy_hashmax; |
483 | read_unlock_bh(&xfrm_policy_lock); | 483 | read_unlock_bh(&xfrm_policy_lock); |
484 | } | 484 | } |
@@ -1309,15 +1309,28 @@ static inline int xfrm_get_tos(struct flowi *fl, int family) | |||
1309 | return tos; | 1309 | return tos; |
1310 | } | 1310 | } |
1311 | 1311 | ||
1312 | static inline struct xfrm_dst *xfrm_alloc_dst(int family) | 1312 | static inline struct xfrm_dst *xfrm_alloc_dst(struct net *net, int family) |
1313 | { | 1313 | { |
1314 | struct xfrm_policy_afinfo *afinfo = xfrm_policy_get_afinfo(family); | 1314 | struct xfrm_policy_afinfo *afinfo = xfrm_policy_get_afinfo(family); |
1315 | struct dst_ops *dst_ops; | ||
1315 | struct xfrm_dst *xdst; | 1316 | struct xfrm_dst *xdst; |
1316 | 1317 | ||
1317 | if (!afinfo) | 1318 | if (!afinfo) |
1318 | return ERR_PTR(-EINVAL); | 1319 | return ERR_PTR(-EINVAL); |
1319 | 1320 | ||
1320 | xdst = dst_alloc(afinfo->dst_ops) ?: ERR_PTR(-ENOBUFS); | 1321 | switch (family) { |
1322 | case AF_INET: | ||
1323 | dst_ops = &net->xfrm.xfrm4_dst_ops; | ||
1324 | break; | ||
1325 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | ||
1326 | case AF_INET6: | ||
1327 | dst_ops = &net->xfrm.xfrm6_dst_ops; | ||
1328 | break; | ||
1329 | #endif | ||
1330 | default: | ||
1331 | BUG(); | ||
1332 | } | ||
1333 | xdst = dst_alloc(dst_ops) ?: ERR_PTR(-ENOBUFS); | ||
1321 | 1334 | ||
1322 | xfrm_policy_put_afinfo(afinfo); | 1335 | xfrm_policy_put_afinfo(afinfo); |
1323 | 1336 | ||
@@ -1366,6 +1379,7 @@ static struct dst_entry *xfrm_bundle_create(struct xfrm_policy *policy, | |||
1366 | struct flowi *fl, | 1379 | struct flowi *fl, |
1367 | struct dst_entry *dst) | 1380 | struct dst_entry *dst) |
1368 | { | 1381 | { |
1382 | struct net *net = xp_net(policy); | ||
1369 | unsigned long now = jiffies; | 1383 | unsigned long now = jiffies; |
1370 | struct net_device *dev; | 1384 | struct net_device *dev; |
1371 | struct dst_entry *dst_prev = NULL; | 1385 | struct dst_entry *dst_prev = NULL; |
@@ -1389,7 +1403,7 @@ static struct dst_entry *xfrm_bundle_create(struct xfrm_policy *policy, | |||
1389 | dst_hold(dst); | 1403 | dst_hold(dst); |
1390 | 1404 | ||
1391 | for (; i < nx; i++) { | 1405 | for (; i < nx; i++) { |
1392 | struct xfrm_dst *xdst = xfrm_alloc_dst(family); | 1406 | struct xfrm_dst *xdst = xfrm_alloc_dst(net, family); |
1393 | struct dst_entry *dst1 = &xdst->u.dst; | 1407 | struct dst_entry *dst1 = &xdst->u.dst; |
1394 | 1408 | ||
1395 | err = PTR_ERR(xdst); | 1409 | err = PTR_ERR(xdst); |
@@ -2279,6 +2293,7 @@ EXPORT_SYMBOL(xfrm_bundle_ok); | |||
2279 | 2293 | ||
2280 | int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo) | 2294 | int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo) |
2281 | { | 2295 | { |
2296 | struct net *net; | ||
2282 | int err = 0; | 2297 | int err = 0; |
2283 | if (unlikely(afinfo == NULL)) | 2298 | if (unlikely(afinfo == NULL)) |
2284 | return -EINVAL; | 2299 | return -EINVAL; |
@@ -2302,6 +2317,27 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo) | |||
2302 | xfrm_policy_afinfo[afinfo->family] = afinfo; | 2317 | xfrm_policy_afinfo[afinfo->family] = afinfo; |
2303 | } | 2318 | } |
2304 | write_unlock_bh(&xfrm_policy_afinfo_lock); | 2319 | write_unlock_bh(&xfrm_policy_afinfo_lock); |
2320 | |||
2321 | rtnl_lock(); | ||
2322 | for_each_net(net) { | ||
2323 | struct dst_ops *xfrm_dst_ops; | ||
2324 | |||
2325 | switch (afinfo->family) { | ||
2326 | case AF_INET: | ||
2327 | xfrm_dst_ops = &net->xfrm.xfrm4_dst_ops; | ||
2328 | break; | ||
2329 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | ||
2330 | case AF_INET6: | ||
2331 | xfrm_dst_ops = &net->xfrm.xfrm6_dst_ops; | ||
2332 | break; | ||
2333 | #endif | ||
2334 | default: | ||
2335 | BUG(); | ||
2336 | } | ||
2337 | *xfrm_dst_ops = *afinfo->dst_ops; | ||
2338 | } | ||
2339 | rtnl_unlock(); | ||
2340 | |||
2305 | return err; | 2341 | return err; |
2306 | } | 2342 | } |
2307 | EXPORT_SYMBOL(xfrm_policy_register_afinfo); | 2343 | EXPORT_SYMBOL(xfrm_policy_register_afinfo); |
@@ -2332,6 +2368,22 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo) | |||
2332 | } | 2368 | } |
2333 | EXPORT_SYMBOL(xfrm_policy_unregister_afinfo); | 2369 | EXPORT_SYMBOL(xfrm_policy_unregister_afinfo); |
2334 | 2370 | ||
2371 | static void __net_init xfrm_dst_ops_init(struct net *net) | ||
2372 | { | ||
2373 | struct xfrm_policy_afinfo *afinfo; | ||
2374 | |||
2375 | read_lock_bh(&xfrm_policy_afinfo_lock); | ||
2376 | afinfo = xfrm_policy_afinfo[AF_INET]; | ||
2377 | if (afinfo) | ||
2378 | net->xfrm.xfrm4_dst_ops = *afinfo->dst_ops; | ||
2379 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | ||
2380 | afinfo = xfrm_policy_afinfo[AF_INET6]; | ||
2381 | if (afinfo) | ||
2382 | net->xfrm.xfrm6_dst_ops = *afinfo->dst_ops; | ||
2383 | #endif | ||
2384 | read_unlock_bh(&xfrm_policy_afinfo_lock); | ||
2385 | } | ||
2386 | |||
2335 | static struct xfrm_policy_afinfo *xfrm_policy_get_afinfo(unsigned short family) | 2387 | static struct xfrm_policy_afinfo *xfrm_policy_get_afinfo(unsigned short family) |
2336 | { | 2388 | { |
2337 | struct xfrm_policy_afinfo *afinfo; | 2389 | struct xfrm_policy_afinfo *afinfo; |
@@ -2494,6 +2546,7 @@ static int __net_init xfrm_net_init(struct net *net) | |||
2494 | rv = xfrm_policy_init(net); | 2546 | rv = xfrm_policy_init(net); |
2495 | if (rv < 0) | 2547 | if (rv < 0) |
2496 | goto out_policy; | 2548 | goto out_policy; |
2549 | xfrm_dst_ops_init(net); | ||
2497 | rv = xfrm_sysctl_init(net); | 2550 | rv = xfrm_sysctl_init(net); |
2498 | if (rv < 0) | 2551 | if (rv < 0) |
2499 | goto out_sysctl; | 2552 | goto out_sysctl; |
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index d847f1a52b44..b36cc344474b 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c | |||
@@ -641,11 +641,11 @@ out: | |||
641 | } | 641 | } |
642 | EXPORT_SYMBOL(xfrm_state_flush); | 642 | EXPORT_SYMBOL(xfrm_state_flush); |
643 | 643 | ||
644 | void xfrm_sad_getinfo(struct xfrmk_sadinfo *si) | 644 | void xfrm_sad_getinfo(struct net *net, struct xfrmk_sadinfo *si) |
645 | { | 645 | { |
646 | spin_lock_bh(&xfrm_state_lock); | 646 | spin_lock_bh(&xfrm_state_lock); |
647 | si->sadcnt = init_net.xfrm.state_num; | 647 | si->sadcnt = net->xfrm.state_num; |
648 | si->sadhcnt = init_net.xfrm.state_hmask; | 648 | si->sadhcnt = net->xfrm.state_hmask; |
649 | si->sadhmcnt = xfrm_state_hashmax; | 649 | si->sadhmcnt = xfrm_state_hashmax; |
650 | spin_unlock_bh(&xfrm_state_lock); | 650 | spin_unlock_bh(&xfrm_state_lock); |
651 | } | 651 | } |
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c index 1ada6186933c..d5a712976004 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c | |||
@@ -781,7 +781,8 @@ static inline size_t xfrm_spdinfo_msgsize(void) | |||
781 | + nla_total_size(sizeof(struct xfrmu_spdhinfo)); | 781 | + nla_total_size(sizeof(struct xfrmu_spdhinfo)); |
782 | } | 782 | } |
783 | 783 | ||
784 | static int build_spdinfo(struct sk_buff *skb, u32 pid, u32 seq, u32 flags) | 784 | static int build_spdinfo(struct sk_buff *skb, struct net *net, |
785 | u32 pid, u32 seq, u32 flags) | ||
785 | { | 786 | { |
786 | struct xfrmk_spdinfo si; | 787 | struct xfrmk_spdinfo si; |
787 | struct xfrmu_spdinfo spc; | 788 | struct xfrmu_spdinfo spc; |
@@ -795,7 +796,7 @@ static int build_spdinfo(struct sk_buff *skb, u32 pid, u32 seq, u32 flags) | |||
795 | 796 | ||
796 | f = nlmsg_data(nlh); | 797 | f = nlmsg_data(nlh); |
797 | *f = flags; | 798 | *f = flags; |
798 | xfrm_spd_getinfo(&si); | 799 | xfrm_spd_getinfo(net, &si); |
799 | spc.incnt = si.incnt; | 800 | spc.incnt = si.incnt; |
800 | spc.outcnt = si.outcnt; | 801 | spc.outcnt = si.outcnt; |
801 | spc.fwdcnt = si.fwdcnt; | 802 | spc.fwdcnt = si.fwdcnt; |
@@ -828,7 +829,7 @@ static int xfrm_get_spdinfo(struct sk_buff *skb, struct nlmsghdr *nlh, | |||
828 | if (r_skb == NULL) | 829 | if (r_skb == NULL) |
829 | return -ENOMEM; | 830 | return -ENOMEM; |
830 | 831 | ||
831 | if (build_spdinfo(r_skb, spid, seq, *flags) < 0) | 832 | if (build_spdinfo(r_skb, net, spid, seq, *flags) < 0) |
832 | BUG(); | 833 | BUG(); |
833 | 834 | ||
834 | return nlmsg_unicast(net->xfrm.nlsk, r_skb, spid); | 835 | return nlmsg_unicast(net->xfrm.nlsk, r_skb, spid); |
@@ -841,7 +842,8 @@ static inline size_t xfrm_sadinfo_msgsize(void) | |||
841 | + nla_total_size(4); /* XFRMA_SAD_CNT */ | 842 | + nla_total_size(4); /* XFRMA_SAD_CNT */ |
842 | } | 843 | } |
843 | 844 | ||
844 | static int build_sadinfo(struct sk_buff *skb, u32 pid, u32 seq, u32 flags) | 845 | static int build_sadinfo(struct sk_buff *skb, struct net *net, |
846 | u32 pid, u32 seq, u32 flags) | ||
845 | { | 847 | { |
846 | struct xfrmk_sadinfo si; | 848 | struct xfrmk_sadinfo si; |
847 | struct xfrmu_sadhinfo sh; | 849 | struct xfrmu_sadhinfo sh; |
@@ -854,7 +856,7 @@ static int build_sadinfo(struct sk_buff *skb, u32 pid, u32 seq, u32 flags) | |||
854 | 856 | ||
855 | f = nlmsg_data(nlh); | 857 | f = nlmsg_data(nlh); |
856 | *f = flags; | 858 | *f = flags; |
857 | xfrm_sad_getinfo(&si); | 859 | xfrm_sad_getinfo(net, &si); |
858 | 860 | ||
859 | sh.sadhmcnt = si.sadhmcnt; | 861 | sh.sadhmcnt = si.sadhmcnt; |
860 | sh.sadhcnt = si.sadhcnt; | 862 | sh.sadhcnt = si.sadhcnt; |
@@ -882,7 +884,7 @@ static int xfrm_get_sadinfo(struct sk_buff *skb, struct nlmsghdr *nlh, | |||
882 | if (r_skb == NULL) | 884 | if (r_skb == NULL) |
883 | return -ENOMEM; | 885 | return -ENOMEM; |
884 | 886 | ||
885 | if (build_sadinfo(r_skb, spid, seq, *flags) < 0) | 887 | if (build_sadinfo(r_skb, net, spid, seq, *flags) < 0) |
886 | BUG(); | 888 | BUG(); |
887 | 889 | ||
888 | return nlmsg_unicast(net->xfrm.nlsk, r_skb, spid); | 890 | return nlmsg_unicast(net->xfrm.nlsk, r_skb, spid); |
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 0fe48cd91ffa..f9bdf264473d 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib | |||
@@ -219,8 +219,13 @@ for F in $1; do \ | |||
219 | fsize=$$(stat -c "%s" $$F); \ | 219 | fsize=$$(stat -c "%s" $$F); \ |
220 | dec_size=$$(expr $$dec_size + $$fsize); \ | 220 | dec_size=$$(expr $$dec_size + $$fsize); \ |
221 | done; \ | 221 | done; \ |
222 | printf "%08x" $$dec_size | \ | 222 | printf "%08x\n" $$dec_size | \ |
223 | sed 's/\(..\)\(..\)\(..\)\(..\)/\\\\x\4\\\\x\3\\\\x\2\\\\x\1/g' \ | 223 | sed 's/\(..\)/\1 /g' | { \ |
224 | read ch0 ch1 ch2 ch3; \ | ||
225 | for ch in $$ch3 $$ch2 $$ch1 $$ch0; do \ | ||
226 | printf '%s%03o' '\\' $$((0x$$ch)); \ | ||
227 | done; \ | ||
228 | } \ | ||
224 | ) | 229 | ) |
225 | 230 | ||
226 | quiet_cmd_bzip2 = BZIP2 $@ | 231 | quiet_cmd_bzip2 = BZIP2 $@ |
diff --git a/scripts/markup_oops.pl b/scripts/markup_oops.pl index 5f0fcb712e29..ce3e40b01e48 100644 --- a/scripts/markup_oops.pl +++ b/scripts/markup_oops.pl | |||
@@ -154,7 +154,7 @@ while (<STDIN>) { | |||
154 | if ($line =~ /RIP: 0010:\[\<([a-z0-9]+)\>\]/) { | 154 | if ($line =~ /RIP: 0010:\[\<([a-z0-9]+)\>\]/) { |
155 | $target = $1; | 155 | $target = $1; |
156 | } | 156 | } |
157 | if ($line =~ /EIP is at ([a-zA-Z0-9\_]+)\+(0x[0-9a-f]+)\/0x[a-f0-9]/) { | 157 | if ($line =~ /EIP is at ([a-zA-Z0-9\_]+)\+0x([0-9a-f]+)\/0x[a-f0-9]/) { |
158 | $function = $1; | 158 | $function = $1; |
159 | $func_offset = $2; | 159 | $func_offset = $2; |
160 | } | 160 | } |
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c index 6f426afbc522..220213e603db 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c | |||
@@ -804,7 +804,7 @@ static inline int sym_is(const char *symbol, const char *name) | |||
804 | match = strstr(symbol, name); | 804 | match = strstr(symbol, name); |
805 | if (!match) | 805 | if (!match) |
806 | return 0; | 806 | return 0; |
807 | return match[strlen(symbol)] == '\0'; | 807 | return match[strlen(name)] == '\0'; |
808 | } | 808 | } |
809 | 809 | ||
810 | static void do_table(void *symval, unsigned long size, | 810 | static void do_table(void *symval, unsigned long size, |
diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl index 92f09fe9639e..ea6f6e3adaea 100755 --- a/scripts/recordmcount.pl +++ b/scripts/recordmcount.pl | |||
@@ -194,7 +194,7 @@ sub check_objcopy | |||
194 | } | 194 | } |
195 | } | 195 | } |
196 | 196 | ||
197 | if ($arch eq "x86") { | 197 | if ($arch =~ /(x86(_64)?)|(i386)/) { |
198 | if ($bits == 64) { | 198 | if ($bits == 64) { |
199 | $arch = "x86_64"; | 199 | $arch = "x86_64"; |
200 | } else { | 200 | } else { |
diff --git a/security/inode.c b/security/inode.c index f7496c6a022b..c3a793881d04 100644 --- a/security/inode.c +++ b/security/inode.c | |||
@@ -156,15 +156,8 @@ static int create_by_name(const char *name, mode_t mode, | |||
156 | * block. A pointer to that is in the struct vfsmount that we | 156 | * block. A pointer to that is in the struct vfsmount that we |
157 | * have around. | 157 | * have around. |
158 | */ | 158 | */ |
159 | if (!parent ) { | 159 | if (!parent) |
160 | if (mount && mount->mnt_sb) { | 160 | parent = mount->mnt_sb->s_root; |
161 | parent = mount->mnt_sb->s_root; | ||
162 | } | ||
163 | } | ||
164 | if (!parent) { | ||
165 | pr_debug("securityfs: Ah! can not find a parent!\n"); | ||
166 | return -EFAULT; | ||
167 | } | ||
168 | 161 | ||
169 | mutex_lock(&parent->d_inode->i_mutex); | 162 | mutex_lock(&parent->d_inode->i_mutex); |
170 | *dentry = lookup_one_len(name, parent, strlen(name)); | 163 | *dentry = lookup_one_len(name, parent, strlen(name)); |
diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c index 8a00ade85166..2aceebf5f354 100644 --- a/security/tomoyo/tomoyo.c +++ b/security/tomoyo/tomoyo.c | |||
@@ -80,9 +80,8 @@ static int tomoyo_bprm_check_security(struct linux_binprm *bprm) | |||
80 | return tomoyo_find_next_domain(bprm); | 80 | return tomoyo_find_next_domain(bprm); |
81 | /* | 81 | /* |
82 | * Read permission is checked against interpreters using next domain. | 82 | * Read permission is checked against interpreters using next domain. |
83 | * '1' is the result of open_to_namei_flags(O_RDONLY). | ||
84 | */ | 83 | */ |
85 | return tomoyo_check_open_permission(domain, &bprm->file->f_path, 1); | 84 | return tomoyo_check_open_permission(domain, &bprm->file->f_path, O_RDONLY); |
86 | } | 85 | } |
87 | 86 | ||
88 | static int tomoyo_path_truncate(struct path *path, loff_t length, | 87 | static int tomoyo_path_truncate(struct path *path, loff_t length, |
@@ -184,10 +183,6 @@ static int tomoyo_file_fcntl(struct file *file, unsigned int cmd, | |||
184 | static int tomoyo_dentry_open(struct file *f, const struct cred *cred) | 183 | static int tomoyo_dentry_open(struct file *f, const struct cred *cred) |
185 | { | 184 | { |
186 | int flags = f->f_flags; | 185 | int flags = f->f_flags; |
187 | |||
188 | if ((flags + 1) & O_ACCMODE) | ||
189 | flags++; | ||
190 | flags |= f->f_flags & (O_APPEND | O_TRUNC); | ||
191 | /* Don't check read permission here if called from do_execve(). */ | 186 | /* Don't check read permission here if called from do_execve(). */ |
192 | if (current->in_execve) | 187 | if (current->in_execve) |
193 | return 0; | 188 | return 0; |
diff --git a/sound/core/sound.c b/sound/core/sound.c index 7872a02f6ca9..563d1967a0ad 100644 --- a/sound/core/sound.c +++ b/sound/core/sound.c | |||
@@ -468,5 +468,5 @@ static void __exit alsa_sound_exit(void) | |||
468 | unregister_chrdev(major, "alsa"); | 468 | unregister_chrdev(major, "alsa"); |
469 | } | 469 | } |
470 | 470 | ||
471 | module_init(alsa_sound_init) | 471 | subsys_initcall(alsa_sound_init); |
472 | module_exit(alsa_sound_exit) | 472 | module_exit(alsa_sound_exit); |
diff --git a/sound/core/sound_oss.c b/sound/core/sound_oss.c index 7fe12264ff80..0c164e5e4322 100644 --- a/sound/core/sound_oss.c +++ b/sound/core/sound_oss.c | |||
@@ -93,7 +93,7 @@ static int snd_oss_kernel_minor(int type, struct snd_card *card, int dev) | |||
93 | default: | 93 | default: |
94 | return -EINVAL; | 94 | return -EINVAL; |
95 | } | 95 | } |
96 | if (snd_BUG_ON(minor < 0 || minor >= SNDRV_OSS_MINORS)) | 96 | if (minor < 0 || minor >= SNDRV_OSS_MINORS) |
97 | return -EINVAL; | 97 | return -EINVAL; |
98 | return minor; | 98 | return minor; |
99 | } | 99 | } |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index e3caa78ccd54..da34095c707f 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -1093,6 +1093,16 @@ static void alc889_coef_init(struct hda_codec *codec) | |||
1093 | snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_PROC_COEF, tmp|0x2010); | 1093 | snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_PROC_COEF, tmp|0x2010); |
1094 | } | 1094 | } |
1095 | 1095 | ||
1096 | /* turn on/off EAPD control (only if available) */ | ||
1097 | static void set_eapd(struct hda_codec *codec, hda_nid_t nid, int on) | ||
1098 | { | ||
1099 | if (get_wcaps_type(get_wcaps(codec, nid)) != AC_WID_PIN) | ||
1100 | return; | ||
1101 | if (snd_hda_query_pin_caps(codec, nid) & AC_PINCAP_EAPD) | ||
1102 | snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_EAPD_BTLENABLE, | ||
1103 | on ? 2 : 0); | ||
1104 | } | ||
1105 | |||
1096 | static void alc_auto_init_amp(struct hda_codec *codec, int type) | 1106 | static void alc_auto_init_amp(struct hda_codec *codec, int type) |
1097 | { | 1107 | { |
1098 | unsigned int tmp; | 1108 | unsigned int tmp; |
@@ -1110,25 +1120,22 @@ static void alc_auto_init_amp(struct hda_codec *codec, int type) | |||
1110 | case ALC_INIT_DEFAULT: | 1120 | case ALC_INIT_DEFAULT: |
1111 | switch (codec->vendor_id) { | 1121 | switch (codec->vendor_id) { |
1112 | case 0x10ec0260: | 1122 | case 0x10ec0260: |
1113 | snd_hda_codec_write(codec, 0x0f, 0, | 1123 | set_eapd(codec, 0x0f, 1); |
1114 | AC_VERB_SET_EAPD_BTLENABLE, 2); | 1124 | set_eapd(codec, 0x10, 1); |
1115 | snd_hda_codec_write(codec, 0x10, 0, | ||
1116 | AC_VERB_SET_EAPD_BTLENABLE, 2); | ||
1117 | break; | 1125 | break; |
1118 | case 0x10ec0262: | 1126 | case 0x10ec0262: |
1119 | case 0x10ec0267: | 1127 | case 0x10ec0267: |
1120 | case 0x10ec0268: | 1128 | case 0x10ec0268: |
1121 | case 0x10ec0269: | 1129 | case 0x10ec0269: |
1130 | case 0x10ec0270: | ||
1122 | case 0x10ec0272: | 1131 | case 0x10ec0272: |
1123 | case 0x10ec0660: | 1132 | case 0x10ec0660: |
1124 | case 0x10ec0662: | 1133 | case 0x10ec0662: |
1125 | case 0x10ec0663: | 1134 | case 0x10ec0663: |
1126 | case 0x10ec0862: | 1135 | case 0x10ec0862: |
1127 | case 0x10ec0889: | 1136 | case 0x10ec0889: |
1128 | snd_hda_codec_write(codec, 0x14, 0, | 1137 | set_eapd(codec, 0x14, 1); |
1129 | AC_VERB_SET_EAPD_BTLENABLE, 2); | 1138 | set_eapd(codec, 0x15, 1); |
1130 | snd_hda_codec_write(codec, 0x15, 0, | ||
1131 | AC_VERB_SET_EAPD_BTLENABLE, 2); | ||
1132 | break; | 1139 | break; |
1133 | } | 1140 | } |
1134 | switch (codec->vendor_id) { | 1141 | switch (codec->vendor_id) { |
@@ -1230,6 +1237,8 @@ static void alc_init_auto_mic(struct hda_codec *codec) | |||
1230 | return; /* invalid entry */ | 1237 | return; /* invalid entry */ |
1231 | } | 1238 | } |
1232 | } | 1239 | } |
1240 | if (!ext || !fixed) | ||
1241 | return; | ||
1233 | if (!(get_wcaps(codec, ext) & AC_WCAP_UNSOL_CAP)) | 1242 | if (!(get_wcaps(codec, ext) & AC_WCAP_UNSOL_CAP)) |
1234 | return; /* no unsol support */ | 1243 | return; /* no unsol support */ |
1235 | snd_printdd("realtek: Enable auto-mic switch on NID 0x%x/0x%x\n", | 1244 | snd_printdd("realtek: Enable auto-mic switch on NID 0x%x/0x%x\n", |
@@ -1834,10 +1843,8 @@ static void alc889_acer_aspire_8930g_setup(struct hda_codec *codec) | |||
1834 | #ifdef CONFIG_SND_HDA_POWER_SAVE | 1843 | #ifdef CONFIG_SND_HDA_POWER_SAVE |
1835 | static void alc889_power_eapd(struct hda_codec *codec, int power) | 1844 | static void alc889_power_eapd(struct hda_codec *codec, int power) |
1836 | { | 1845 | { |
1837 | snd_hda_codec_write(codec, 0x14, 0, | 1846 | set_eapd(codec, 0x14, power); |
1838 | AC_VERB_SET_EAPD_BTLENABLE, power ? 2 : 0); | 1847 | set_eapd(codec, 0x15, power); |
1839 | snd_hda_codec_write(codec, 0x15, 0, | ||
1840 | AC_VERB_SET_EAPD_BTLENABLE, power ? 2 : 0); | ||
1841 | } | 1848 | } |
1842 | #endif | 1849 | #endif |
1843 | 1850 | ||
@@ -4812,6 +4819,49 @@ static void fixup_automic_adc(struct hda_codec *codec) | |||
4812 | spec->auto_mic = 0; /* disable auto-mic to be sure */ | 4819 | spec->auto_mic = 0; /* disable auto-mic to be sure */ |
4813 | } | 4820 | } |
4814 | 4821 | ||
4822 | /* choose the ADC/MUX containing the input pin and initialize the setup */ | ||
4823 | static void fixup_single_adc(struct hda_codec *codec) | ||
4824 | { | ||
4825 | struct alc_spec *spec = codec->spec; | ||
4826 | hda_nid_t pin; | ||
4827 | int i; | ||
4828 | |||
4829 | /* search for the input pin; there must be only one */ | ||
4830 | for (i = 0; i < AUTO_PIN_LAST; i++) { | ||
4831 | if (spec->autocfg.input_pins[i]) { | ||
4832 | pin = spec->autocfg.input_pins[i]; | ||
4833 | break; | ||
4834 | } | ||
4835 | } | ||
4836 | if (!pin) | ||
4837 | return; | ||
4838 | |||
4839 | /* set the default connection to that pin */ | ||
4840 | for (i = 0; i < spec->num_adc_nids; i++) { | ||
4841 | hda_nid_t cap = spec->capsrc_nids ? | ||
4842 | spec->capsrc_nids[i] : spec->adc_nids[i]; | ||
4843 | int idx; | ||
4844 | |||
4845 | idx = get_connection_index(codec, cap, pin); | ||
4846 | if (idx < 0) | ||
4847 | continue; | ||
4848 | /* use only this ADC */ | ||
4849 | if (spec->capsrc_nids) | ||
4850 | spec->capsrc_nids += i; | ||
4851 | spec->adc_nids += i; | ||
4852 | spec->num_adc_nids = 1; | ||
4853 | /* select or unmute this route */ | ||
4854 | if (get_wcaps_type(get_wcaps(codec, cap)) == AC_WID_AUD_MIX) { | ||
4855 | snd_hda_codec_amp_stereo(codec, cap, HDA_INPUT, idx, | ||
4856 | HDA_AMP_MUTE, 0); | ||
4857 | } else { | ||
4858 | snd_hda_codec_write_cache(codec, cap, 0, | ||
4859 | AC_VERB_SET_CONNECT_SEL, idx); | ||
4860 | } | ||
4861 | return; | ||
4862 | } | ||
4863 | } | ||
4864 | |||
4815 | static void set_capture_mixer(struct hda_codec *codec) | 4865 | static void set_capture_mixer(struct hda_codec *codec) |
4816 | { | 4866 | { |
4817 | struct alc_spec *spec = codec->spec; | 4867 | struct alc_spec *spec = codec->spec; |
@@ -4824,14 +4874,15 @@ static void set_capture_mixer(struct hda_codec *codec) | |||
4824 | alc_capture_mixer3 }, | 4874 | alc_capture_mixer3 }, |
4825 | }; | 4875 | }; |
4826 | if (spec->num_adc_nids > 0 && spec->num_adc_nids <= 3) { | 4876 | if (spec->num_adc_nids > 0 && spec->num_adc_nids <= 3) { |
4827 | int mux; | 4877 | int mux = 0; |
4828 | if (spec->auto_mic) { | 4878 | if (spec->auto_mic) |
4829 | mux = 0; | ||
4830 | fixup_automic_adc(codec); | 4879 | fixup_automic_adc(codec); |
4831 | } else if (spec->input_mux && spec->input_mux->num_items > 1) | 4880 | else if (spec->input_mux) { |
4832 | mux = 1; | 4881 | if (spec->input_mux->num_items > 1) |
4833 | else | 4882 | mux = 1; |
4834 | mux = 0; | 4883 | else if (spec->input_mux->num_items == 1) |
4884 | fixup_single_adc(codec); | ||
4885 | } | ||
4835 | spec->cap_mixer = caps[mux][spec->num_adc_nids - 1]; | 4886 | spec->cap_mixer = caps[mux][spec->num_adc_nids - 1]; |
4836 | } | 4887 | } |
4837 | } | 4888 | } |
@@ -7094,8 +7145,8 @@ static struct snd_kcontrol_new alc885_mb5_mixer[] = { | |||
7094 | HDA_BIND_MUTE ("Surround Playback Switch", 0x0d, 0x02, HDA_INPUT), | 7145 | HDA_BIND_MUTE ("Surround Playback Switch", 0x0d, 0x02, HDA_INPUT), |
7095 | HDA_CODEC_VOLUME("LFE Playback Volume", 0x0e, 0x00, HDA_OUTPUT), | 7146 | HDA_CODEC_VOLUME("LFE Playback Volume", 0x0e, 0x00, HDA_OUTPUT), |
7096 | HDA_BIND_MUTE ("LFE Playback Switch", 0x0e, 0x02, HDA_INPUT), | 7147 | HDA_BIND_MUTE ("LFE Playback Switch", 0x0e, 0x02, HDA_INPUT), |
7097 | HDA_CODEC_VOLUME("HP Playback Volume", 0x0f, 0x00, HDA_OUTPUT), | 7148 | HDA_CODEC_VOLUME("Headphone Playback Volume", 0x0f, 0x00, HDA_OUTPUT), |
7098 | HDA_BIND_MUTE ("HP Playback Switch", 0x0f, 0x02, HDA_INPUT), | 7149 | HDA_BIND_MUTE ("Headphone Playback Switch", 0x0f, 0x02, HDA_INPUT), |
7099 | HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT), | 7150 | HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT), |
7100 | HDA_CODEC_MUTE ("Line Playback Switch", 0x0b, 0x02, HDA_INPUT), | 7151 | HDA_CODEC_MUTE ("Line Playback Switch", 0x0b, 0x02, HDA_INPUT), |
7101 | HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x01, HDA_INPUT), | 7152 | HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x01, HDA_INPUT), |
@@ -7496,6 +7547,7 @@ static struct hda_verb alc885_mb5_init_verbs[] = { | |||
7496 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | 7547 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, |
7497 | {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | 7548 | {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, |
7498 | {0x14, AC_VERB_SET_CONNECT_SEL, 0x03}, | 7549 | {0x14, AC_VERB_SET_CONNECT_SEL, 0x03}, |
7550 | {0x14, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN}, | ||
7499 | /* Front Mic pin: input vref at 80% */ | 7551 | /* Front Mic pin: input vref at 80% */ |
7500 | {0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, | 7552 | {0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, |
7501 | {0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, | 7553 | {0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, |
@@ -7680,6 +7732,27 @@ static void alc885_mbp3_setup(struct hda_codec *codec) | |||
7680 | spec->autocfg.speaker_pins[0] = 0x14; | 7732 | spec->autocfg.speaker_pins[0] = 0x14; |
7681 | } | 7733 | } |
7682 | 7734 | ||
7735 | static void alc885_mb5_automute(struct hda_codec *codec) | ||
7736 | { | ||
7737 | unsigned int present; | ||
7738 | |||
7739 | present = snd_hda_codec_read(codec, 0x14, 0, | ||
7740 | AC_VERB_GET_PIN_SENSE, 0) & 0x80000000; | ||
7741 | snd_hda_codec_amp_stereo(codec, 0x18, HDA_OUTPUT, 0, | ||
7742 | HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0); | ||
7743 | snd_hda_codec_amp_stereo(codec, 0x1a, HDA_OUTPUT, 0, | ||
7744 | HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0); | ||
7745 | |||
7746 | } | ||
7747 | |||
7748 | static void alc885_mb5_unsol_event(struct hda_codec *codec, | ||
7749 | unsigned int res) | ||
7750 | { | ||
7751 | /* Headphone insertion or removal. */ | ||
7752 | if ((res >> 26) == ALC880_HP_EVENT) | ||
7753 | alc885_mb5_automute(codec); | ||
7754 | } | ||
7755 | |||
7683 | static void alc885_imac91_automute(struct hda_codec *codec) | 7756 | static void alc885_imac91_automute(struct hda_codec *codec) |
7684 | { | 7757 | { |
7685 | unsigned int present; | 7758 | unsigned int present; |
@@ -9126,6 +9199,8 @@ static struct alc_config_preset alc882_presets[] = { | |||
9126 | .input_mux = &mb5_capture_source, | 9199 | .input_mux = &mb5_capture_source, |
9127 | .dig_out_nid = ALC882_DIGOUT_NID, | 9200 | .dig_out_nid = ALC882_DIGOUT_NID, |
9128 | .dig_in_nid = ALC882_DIGIN_NID, | 9201 | .dig_in_nid = ALC882_DIGIN_NID, |
9202 | .unsol_event = alc885_mb5_unsol_event, | ||
9203 | .init_hook = alc885_mb5_automute, | ||
9129 | }, | 9204 | }, |
9130 | [ALC885_MACPRO] = { | 9205 | [ALC885_MACPRO] = { |
9131 | .mixers = { alc882_macpro_mixer }, | 9206 | .mixers = { alc882_macpro_mixer }, |
@@ -9403,6 +9478,7 @@ static struct alc_config_preset alc882_presets[] = { | |||
9403 | .num_channel_mode = ARRAY_SIZE(alc883_3ST_6ch_modes), | 9478 | .num_channel_mode = ARRAY_SIZE(alc883_3ST_6ch_modes), |
9404 | .channel_mode = alc883_3ST_6ch_modes, | 9479 | .channel_mode = alc883_3ST_6ch_modes, |
9405 | .need_dac_fix = 1, | 9480 | .need_dac_fix = 1, |
9481 | .const_channel_count = 6, | ||
9406 | .num_mux_defs = | 9482 | .num_mux_defs = |
9407 | ARRAY_SIZE(alc888_2_capture_sources), | 9483 | ARRAY_SIZE(alc888_2_capture_sources), |
9408 | .input_mux = alc888_2_capture_sources, | 9484 | .input_mux = alc888_2_capture_sources, |
@@ -10307,7 +10383,7 @@ static void alc262_hp_t5735_setup(struct hda_codec *codec) | |||
10307 | struct alc_spec *spec = codec->spec; | 10383 | struct alc_spec *spec = codec->spec; |
10308 | 10384 | ||
10309 | spec->autocfg.hp_pins[0] = 0x15; | 10385 | spec->autocfg.hp_pins[0] = 0x15; |
10310 | spec->autocfg.speaker_pins[0] = 0x0c; /* HACK: not actually a pin */ | 10386 | spec->autocfg.speaker_pins[0] = 0x14; |
10311 | } | 10387 | } |
10312 | 10388 | ||
10313 | static struct snd_kcontrol_new alc262_hp_t5735_mixer[] = { | 10389 | static struct snd_kcontrol_new alc262_hp_t5735_mixer[] = { |
@@ -11179,7 +11255,7 @@ static int alc262_auto_create_multi_out_ctls(struct alc_spec *spec, | |||
11179 | } | 11255 | } |
11180 | 11256 | ||
11181 | #define alc262_auto_create_input_ctls \ | 11257 | #define alc262_auto_create_input_ctls \ |
11182 | alc880_auto_create_input_ctls | 11258 | alc882_auto_create_input_ctls |
11183 | 11259 | ||
11184 | /* | 11260 | /* |
11185 | * generic initialization of ADC, input mixers and output mixers | 11261 | * generic initialization of ADC, input mixers and output mixers |
@@ -11718,9 +11794,9 @@ static struct alc_config_preset alc262_presets[] = { | |||
11718 | .num_channel_mode = ARRAY_SIZE(alc262_modes), | 11794 | .num_channel_mode = ARRAY_SIZE(alc262_modes), |
11719 | .channel_mode = alc262_modes, | 11795 | .channel_mode = alc262_modes, |
11720 | .input_mux = &alc262_capture_source, | 11796 | .input_mux = &alc262_capture_source, |
11721 | .unsol_event = alc_automute_amp_unsol_event, | 11797 | .unsol_event = alc_sku_unsol_event, |
11722 | .setup = alc262_hp_t5735_setup, | 11798 | .setup = alc262_hp_t5735_setup, |
11723 | .init_hook = alc_automute_amp, | 11799 | .init_hook = alc_inithook, |
11724 | }, | 11800 | }, |
11725 | [ALC262_HP_RP5700] = { | 11801 | [ALC262_HP_RP5700] = { |
11726 | .mixers = { alc262_hp_rp5700_mixer }, | 11802 | .mixers = { alc262_hp_rp5700_mixer }, |
@@ -12471,6 +12547,7 @@ static int alc268_new_analog_output(struct alc_spec *spec, hda_nid_t nid, | |||
12471 | dac = 0x02; | 12547 | dac = 0x02; |
12472 | break; | 12548 | break; |
12473 | case 0x15: | 12549 | case 0x15: |
12550 | case 0x21: | ||
12474 | dac = 0x03; | 12551 | dac = 0x03; |
12475 | break; | 12552 | break; |
12476 | default: | 12553 | default: |
@@ -14855,6 +14932,8 @@ static int patch_alc861(struct hda_codec *codec) | |||
14855 | spec->stream_digital_playback = &alc861_pcm_digital_playback; | 14932 | spec->stream_digital_playback = &alc861_pcm_digital_playback; |
14856 | spec->stream_digital_capture = &alc861_pcm_digital_capture; | 14933 | spec->stream_digital_capture = &alc861_pcm_digital_capture; |
14857 | 14934 | ||
14935 | if (!spec->cap_mixer) | ||
14936 | set_capture_mixer(codec); | ||
14858 | set_beep_amp(spec, 0x23, 0, HDA_OUTPUT); | 14937 | set_beep_amp(spec, 0x23, 0, HDA_OUTPUT); |
14859 | 14938 | ||
14860 | spec->vmaster_nid = 0x03; | 14939 | spec->vmaster_nid = 0x03; |
@@ -17251,7 +17330,7 @@ static struct snd_pci_quirk alc662_cfg_tbl[] = { | |||
17251 | SND_PCI_QUIRK(0x105b, 0x0cd6, "Foxconn", ALC662_ECS), | 17330 | SND_PCI_QUIRK(0x105b, 0x0cd6, "Foxconn", ALC662_ECS), |
17252 | SND_PCI_QUIRK(0x105b, 0x0d47, "Foxconn 45CMX/45GMX/45CMX-K", | 17331 | SND_PCI_QUIRK(0x105b, 0x0d47, "Foxconn 45CMX/45GMX/45CMX-K", |
17253 | ALC662_3ST_6ch_DIG), | 17332 | ALC662_3ST_6ch_DIG), |
17254 | SND_PCI_QUIRK(0x1179, 0xff6e, "Toshiba NB200", ALC663_ASUS_MODE4), | 17333 | SND_PCI_QUIRK(0x1179, 0xff6e, "Toshiba NB20x", ALC662_AUTO), |
17255 | SND_PCI_QUIRK(0x144d, 0xca00, "Samsung NC10", ALC272_SAMSUNG_NC10), | 17334 | SND_PCI_QUIRK(0x144d, 0xca00, "Samsung NC10", ALC272_SAMSUNG_NC10), |
17256 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte 945GCM-S2L", | 17335 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte 945GCM-S2L", |
17257 | ALC662_3ST_6ch_DIG), | 17336 | ALC662_3ST_6ch_DIG), |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 2291a8396817..799ba2570902 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -4730,6 +4730,26 @@ static void stac92xx_unsol_event(struct hda_codec *codec, unsigned int res) | |||
4730 | } | 4730 | } |
4731 | } | 4731 | } |
4732 | 4732 | ||
4733 | static int hp_blike_system(u32 subsystem_id); | ||
4734 | |||
4735 | static void set_hp_led_gpio(struct hda_codec *codec) | ||
4736 | { | ||
4737 | struct sigmatel_spec *spec = codec->spec; | ||
4738 | switch (codec->vendor_id) { | ||
4739 | case 0x111d7608: | ||
4740 | /* GPIO 0 */ | ||
4741 | spec->gpio_led = 0x01; | ||
4742 | break; | ||
4743 | case 0x111d7600: | ||
4744 | case 0x111d7601: | ||
4745 | case 0x111d7602: | ||
4746 | case 0x111d7603: | ||
4747 | /* GPIO 3 */ | ||
4748 | spec->gpio_led = 0x08; | ||
4749 | break; | ||
4750 | } | ||
4751 | } | ||
4752 | |||
4733 | /* | 4753 | /* |
4734 | * This method searches for the mute LED GPIO configuration | 4754 | * This method searches for the mute LED GPIO configuration |
4735 | * provided as OEM string in SMBIOS. The format of that string | 4755 | * provided as OEM string in SMBIOS. The format of that string |
@@ -4741,6 +4761,14 @@ static void stac92xx_unsol_event(struct hda_codec *codec, unsigned int res) | |||
4741 | * | 4761 | * |
4742 | * So, HP B-series like systems may have HP_Mute_LED_0 (current models) | 4762 | * So, HP B-series like systems may have HP_Mute_LED_0 (current models) |
4743 | * or HP_Mute_LED_0_3 (future models) OEM SMBIOS strings | 4763 | * or HP_Mute_LED_0_3 (future models) OEM SMBIOS strings |
4764 | * | ||
4765 | * | ||
4766 | * The dv-series laptops don't seem to have the HP_Mute_LED* strings in | ||
4767 | * SMBIOS - at least the ones I have seen do not have them - which include | ||
4768 | * my own system (HP Pavilion dv6-1110ax) and my cousin's | ||
4769 | * HP Pavilion dv9500t CTO. | ||
4770 | * Need more information on whether it is true across the entire series. | ||
4771 | * -- kunal | ||
4744 | */ | 4772 | */ |
4745 | static int find_mute_led_gpio(struct hda_codec *codec) | 4773 | static int find_mute_led_gpio(struct hda_codec *codec) |
4746 | { | 4774 | { |
@@ -4751,28 +4779,27 @@ static int find_mute_led_gpio(struct hda_codec *codec) | |||
4751 | while ((dev = dmi_find_device(DMI_DEV_TYPE_OEM_STRING, | 4779 | while ((dev = dmi_find_device(DMI_DEV_TYPE_OEM_STRING, |
4752 | NULL, dev))) { | 4780 | NULL, dev))) { |
4753 | if (sscanf(dev->name, "HP_Mute_LED_%d_%d", | 4781 | if (sscanf(dev->name, "HP_Mute_LED_%d_%d", |
4754 | &spec->gpio_led_polarity, | 4782 | &spec->gpio_led_polarity, |
4755 | &spec->gpio_led) == 2) { | 4783 | &spec->gpio_led) == 2) { |
4756 | spec->gpio_led = 1 << spec->gpio_led; | 4784 | spec->gpio_led = 1 << spec->gpio_led; |
4757 | return 1; | 4785 | return 1; |
4758 | } | 4786 | } |
4759 | if (sscanf(dev->name, "HP_Mute_LED_%d", | 4787 | if (sscanf(dev->name, "HP_Mute_LED_%d", |
4760 | &spec->gpio_led_polarity) == 1) { | 4788 | &spec->gpio_led_polarity) == 1) { |
4761 | switch (codec->vendor_id) { | 4789 | set_hp_led_gpio(codec); |
4762 | case 0x111d7608: | 4790 | return 1; |
4763 | /* GPIO 0 */ | ||
4764 | spec->gpio_led = 0x01; | ||
4765 | return 1; | ||
4766 | case 0x111d7600: | ||
4767 | case 0x111d7601: | ||
4768 | case 0x111d7602: | ||
4769 | case 0x111d7603: | ||
4770 | /* GPIO 3 */ | ||
4771 | spec->gpio_led = 0x08; | ||
4772 | return 1; | ||
4773 | } | ||
4774 | } | 4791 | } |
4775 | } | 4792 | } |
4793 | |||
4794 | /* | ||
4795 | * Fallback case - if we don't find the DMI strings, | ||
4796 | * we statically set the GPIO - if not a B-series system. | ||
4797 | */ | ||
4798 | if (!hp_blike_system(codec->subsystem_id)) { | ||
4799 | set_hp_led_gpio(codec); | ||
4800 | spec->gpio_led_polarity = 1; | ||
4801 | return 1; | ||
4802 | } | ||
4776 | } | 4803 | } |
4777 | return 0; | 4804 | return 0; |
4778 | } | 4805 | } |
@@ -5548,6 +5575,8 @@ again: | |||
5548 | spec->num_dmuxes = ARRAY_SIZE(stac92hd71bxx_dmux_nids); | 5575 | spec->num_dmuxes = ARRAY_SIZE(stac92hd71bxx_dmux_nids); |
5549 | spec->num_smuxes = stac92hd71bxx_connected_smuxes(codec, 0x1e); | 5576 | spec->num_smuxes = stac92hd71bxx_connected_smuxes(codec, 0x1e); |
5550 | 5577 | ||
5578 | snd_printdd("Found board config: %d\n", spec->board_config); | ||
5579 | |||
5551 | switch (spec->board_config) { | 5580 | switch (spec->board_config) { |
5552 | case STAC_HP_M4: | 5581 | case STAC_HP_M4: |
5553 | /* enable internal microphone */ | 5582 | /* enable internal microphone */ |
diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c index ce5515e3f2b0..3595bd57c4eb 100644 --- a/sound/soc/codecs/wm8903.c +++ b/sound/soc/codecs/wm8903.c | |||
@@ -1504,7 +1504,7 @@ static int wm8903_resume(struct platform_device *pdev) | |||
1504 | struct i2c_client *i2c = codec->control_data; | 1504 | struct i2c_client *i2c = codec->control_data; |
1505 | int i; | 1505 | int i; |
1506 | u16 *reg_cache = codec->reg_cache; | 1506 | u16 *reg_cache = codec->reg_cache; |
1507 | u16 *tmp_cache = kmemdup(codec->reg_cache, sizeof(wm8903_reg_defaults), | 1507 | u16 *tmp_cache = kmemdup(reg_cache, sizeof(wm8903_reg_defaults), |
1508 | GFP_KERNEL); | 1508 | GFP_KERNEL); |
1509 | 1509 | ||
1510 | /* Bring the codec back up to standby first to minimise pop/clicks */ | 1510 | /* Bring the codec back up to standby first to minimise pop/clicks */ |
@@ -1516,6 +1516,7 @@ static int wm8903_resume(struct platform_device *pdev) | |||
1516 | for (i = 2; i < ARRAY_SIZE(wm8903_reg_defaults); i++) | 1516 | for (i = 2; i < ARRAY_SIZE(wm8903_reg_defaults); i++) |
1517 | if (tmp_cache[i] != reg_cache[i]) | 1517 | if (tmp_cache[i] != reg_cache[i]) |
1518 | snd_soc_write(codec, i, tmp_cache[i]); | 1518 | snd_soc_write(codec, i, tmp_cache[i]); |
1519 | kfree(tmp_cache); | ||
1519 | } else { | 1520 | } else { |
1520 | dev_err(&i2c->dev, "Failed to allocate temporary cache\n"); | 1521 | dev_err(&i2c->dev, "Failed to allocate temporary cache\n"); |
1521 | } | 1522 | } |
diff --git a/sound/sound_core.c b/sound/sound_core.c index dbca7c909a31..7c2d677a2df5 100644 --- a/sound/sound_core.c +++ b/sound/sound_core.c | |||
@@ -61,7 +61,7 @@ static void __exit cleanup_soundcore(void) | |||
61 | class_destroy(sound_class); | 61 | class_destroy(sound_class); |
62 | } | 62 | } |
63 | 63 | ||
64 | module_init(init_soundcore); | 64 | subsys_initcall(init_soundcore); |
65 | module_exit(cleanup_soundcore); | 65 | module_exit(cleanup_soundcore); |
66 | 66 | ||
67 | 67 | ||
diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 652a470b5f74..2e7fa3a06806 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile | |||
@@ -250,7 +250,19 @@ PTHREAD_LIBS = -lpthread | |||
250 | # explicitly what architecture to check for. Fix this up for yours.. | 250 | # explicitly what architecture to check for. Fix this up for yours.. |
251 | SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__ | 251 | SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__ |
252 | 252 | ||
253 | ifeq ($(shell sh -c "echo 'int foo(void) {char X[2]; return 3;}' | $(CC) -x c -c -Werror -fstack-protector-all - -o /dev/null "$(QUIET_STDERR)" && echo y"), y) | 253 | ifeq ($(V), 2) |
254 | QUIET_STDERR = ">/dev/null" | ||
255 | else | ||
256 | QUIET_STDERR = ">/dev/null 2>&1" | ||
257 | endif | ||
258 | |||
259 | BITBUCKET = "/dev/null" | ||
260 | |||
261 | ifneq ($(shell sh -c "(echo '\#include <stdio.h>'; echo 'int main(void) { return puts(\"hi\"); }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) "$(QUIET_STDERR)" && echo y"), y) | ||
262 | BITBUCKET = .perf.dev.null | ||
263 | endif | ||
264 | |||
265 | ifeq ($(shell sh -c "echo 'int foo(void) {char X[2]; return 3;}' | $(CC) -x c -c -Werror -fstack-protector-all - -o $(BITBUCKET) "$(QUIET_STDERR)" && echo y"), y) | ||
254 | CFLAGS := $(CFLAGS) -fstack-protector-all | 266 | CFLAGS := $(CFLAGS) -fstack-protector-all |
255 | endif | 267 | endif |
256 | 268 | ||
@@ -451,11 +463,6 @@ BUILTIN_OBJS += builtin-kmem.o | |||
451 | 463 | ||
452 | PERFLIBS = $(LIB_FILE) | 464 | PERFLIBS = $(LIB_FILE) |
453 | 465 | ||
454 | ifeq ($(V), 2) | ||
455 | QUIET_STDERR = ">/dev/null" | ||
456 | else | ||
457 | QUIET_STDERR = ">/dev/null 2>&1" | ||
458 | endif | ||
459 | # | 466 | # |
460 | # Platform specific tweaks | 467 | # Platform specific tweaks |
461 | # | 468 | # |
@@ -483,19 +490,19 @@ ifeq ($(uname_S),Darwin) | |||
483 | PTHREAD_LIBS = | 490 | PTHREAD_LIBS = |
484 | endif | 491 | endif |
485 | 492 | ||
486 | ifeq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) | 493 | ifeq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) |
487 | ifneq ($(shell sh -c "(echo '\#include <gnu/libc-version.h>'; echo 'int main(void) { const char * version = gnu_get_libc_version(); return (long)version; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) | 494 | ifneq ($(shell sh -c "(echo '\#include <gnu/libc-version.h>'; echo 'int main(void) { const char * version = gnu_get_libc_version(); return (long)version; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) |
488 | msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static); | 495 | msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static); |
489 | endif | 496 | endif |
490 | 497 | ||
491 | ifneq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ_MMAP, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) | 498 | ifneq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ_MMAP, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) |
492 | BASIC_CFLAGS += -DLIBELF_NO_MMAP | 499 | BASIC_CFLAGS += -DLIBELF_NO_MMAP |
493 | endif | 500 | endif |
494 | else | 501 | else |
495 | msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]); | 502 | msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]); |
496 | endif | 503 | endif |
497 | 504 | ||
498 | ifneq ($(shell sh -c "(echo '\#ifndef _MIPS_SZLONG'; echo '\#define _MIPS_SZLONG 0'; echo '\#endif'; echo '\#include <dwarf.h>'; echo '\#include <libdwarf.h>'; echo 'int main(void) { Dwarf_Debug dbg; Dwarf_Error err; Dwarf_Ranges *rng; dwarf_init(0, DW_DLC_READ, 0, 0, &dbg, &err); dwarf_get_ranges(dbg, 0, &rng, 0, 0, &err); return (long)dbg; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/libdwarf -ldwarf -lelf -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) | 505 | ifneq ($(shell sh -c "(echo '\#ifndef _MIPS_SZLONG'; echo '\#define _MIPS_SZLONG 0'; echo '\#endif'; echo '\#include <dwarf.h>'; echo '\#include <libdwarf.h>'; echo 'int main(void) { Dwarf_Debug dbg; Dwarf_Error err; Dwarf_Ranges *rng; dwarf_init(0, DW_DLC_READ, 0, 0, &dbg, &err); dwarf_get_ranges(dbg, 0, &rng, 0, 0, &err); return (long)dbg; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/libdwarf -ldwarf -lelf -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) |
499 | msg := $(warning No libdwarf.h found or old libdwarf.h found, disables dwarf support. Please install libdwarf-dev/libdwarf-devel >= 20081231); | 506 | msg := $(warning No libdwarf.h found or old libdwarf.h found, disables dwarf support. Please install libdwarf-dev/libdwarf-devel >= 20081231); |
500 | BASIC_CFLAGS += -DNO_LIBDWARF | 507 | BASIC_CFLAGS += -DNO_LIBDWARF |
501 | else | 508 | else |
@@ -509,7 +516,7 @@ PERL_EMBED_LDOPTS = `perl -MExtUtils::Embed -e ldopts 2>/dev/null` | |||
509 | PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` | 516 | PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` |
510 | endif | 517 | endif |
511 | 518 | ||
512 | ifneq ($(shell sh -c "(echo '\#include <EXTERN.h>'; echo '\#include <perl.h>'; echo 'int main(void) { perl_alloc(); return 0; }') | $(CC) -x c - $(PERL_EMBED_CCOPTS) -o /dev/null $(PERL_EMBED_LDOPTS) > /dev/null 2>&1 && echo y"), y) | 519 | ifneq ($(shell sh -c "(echo '\#include <EXTERN.h>'; echo '\#include <perl.h>'; echo 'int main(void) { perl_alloc(); return 0; }') | $(CC) -x c - $(PERL_EMBED_CCOPTS) -o $(BITBUCKET) $(PERL_EMBED_LDOPTS) > /dev/null 2>&1 && echo y"), y) |
513 | BASIC_CFLAGS += -DNO_LIBPERL | 520 | BASIC_CFLAGS += -DNO_LIBPERL |
514 | else | 521 | else |
515 | ALL_LDFLAGS += $(PERL_EMBED_LDOPTS) | 522 | ALL_LDFLAGS += $(PERL_EMBED_LDOPTS) |
@@ -519,20 +526,20 @@ endif | |||
519 | ifdef NO_DEMANGLE | 526 | ifdef NO_DEMANGLE |
520 | BASIC_CFLAGS += -DNO_DEMANGLE | 527 | BASIC_CFLAGS += -DNO_DEMANGLE |
521 | else | 528 | else |
522 | has_bfd := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) -lbfd "$(QUIET_STDERR)" && echo y") | 529 | has_bfd := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) -lbfd "$(QUIET_STDERR)" && echo y") |
523 | 530 | ||
524 | ifeq ($(has_bfd),y) | 531 | ifeq ($(has_bfd),y) |
525 | EXTLIBS += -lbfd | 532 | EXTLIBS += -lbfd |
526 | else | 533 | else |
527 | has_bfd_iberty := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) -lbfd -liberty "$(QUIET_STDERR)" && echo y") | 534 | has_bfd_iberty := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) -lbfd -liberty "$(QUIET_STDERR)" && echo y") |
528 | ifeq ($(has_bfd_iberty),y) | 535 | ifeq ($(has_bfd_iberty),y) |
529 | EXTLIBS += -lbfd -liberty | 536 | EXTLIBS += -lbfd -liberty |
530 | else | 537 | else |
531 | has_bfd_iberty_z := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) -lbfd -liberty -lz "$(QUIET_STDERR)" && echo y") | 538 | has_bfd_iberty_z := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) -lbfd -liberty -lz "$(QUIET_STDERR)" && echo y") |
532 | ifeq ($(has_bfd_iberty_z),y) | 539 | ifeq ($(has_bfd_iberty_z),y) |
533 | EXTLIBS += -lbfd -liberty -lz | 540 | EXTLIBS += -lbfd -liberty -lz |
534 | else | 541 | else |
535 | has_cplus_demangle := $(shell sh -c "(echo 'extern char *cplus_demangle(const char *, int);'; echo 'int main(void) { cplus_demangle(0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) -liberty "$(QUIET_STDERR)" && echo y") | 542 | has_cplus_demangle := $(shell sh -c "(echo 'extern char *cplus_demangle(const char *, int);'; echo 'int main(void) { cplus_demangle(0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) -liberty "$(QUIET_STDERR)" && echo y") |
536 | ifeq ($(has_cplus_demangle),y) | 543 | ifeq ($(has_cplus_demangle),y) |
537 | EXTLIBS += -liberty | 544 | EXTLIBS += -liberty |
538 | BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE | 545 | BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE |
@@ -780,7 +787,7 @@ export TAR INSTALL DESTDIR SHELL_PATH | |||
780 | 787 | ||
781 | SHELL = $(SHELL_PATH) | 788 | SHELL = $(SHELL_PATH) |
782 | 789 | ||
783 | all:: shell_compatibility_test $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) PERF-BUILD-OPTIONS | 790 | all:: .perf.dev.null shell_compatibility_test $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) PERF-BUILD-OPTIONS |
784 | ifneq (,$X) | 791 | ifneq (,$X) |
785 | $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) perf$X)), test '$p' -ef '$p$X' || $(RM) '$p';) | 792 | $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) perf$X)), test '$p' -ef '$p$X' || $(RM) '$p';) |
786 | endif | 793 | endif |
@@ -1107,6 +1114,11 @@ clean: | |||
1107 | .PHONY: .FORCE-PERF-VERSION-FILE TAGS tags cscope .FORCE-PERF-CFLAGS | 1114 | .PHONY: .FORCE-PERF-VERSION-FILE TAGS tags cscope .FORCE-PERF-CFLAGS |
1108 | .PHONY: .FORCE-PERF-BUILD-OPTIONS | 1115 | .PHONY: .FORCE-PERF-BUILD-OPTIONS |
1109 | 1116 | ||
1117 | .perf.dev.null: | ||
1118 | touch .perf.dev.null | ||
1119 | |||
1120 | .INTERMEDIATE: .perf.dev.null | ||
1121 | |||
1110 | ### Make sure built-ins do not have dups and listed in perf.c | 1122 | ### Make sure built-ins do not have dups and listed in perf.c |
1111 | # | 1123 | # |
1112 | check-builtins:: | 1124 | check-builtins:: |
diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c index 7ceb7416c316..93c67bf53d2c 100644 --- a/tools/perf/builtin-kmem.c +++ b/tools/perf/builtin-kmem.c | |||
@@ -375,7 +375,7 @@ static void __print_result(struct rb_root *root, struct perf_session *session, | |||
375 | 375 | ||
376 | printf("%.102s\n", graph_dotted_line); | 376 | printf("%.102s\n", graph_dotted_line); |
377 | printf(" %-34s |", is_caller ? "Callsite": "Alloc Ptr"); | 377 | printf(" %-34s |", is_caller ? "Callsite": "Alloc Ptr"); |
378 | printf(" Total_alloc/Per | Total_req/Per | Hit | Ping-pong | Frag\n"); | 378 | printf(" Total_alloc/Per | Total_req/Per | Hit | Ping-pong | Frag\n"); |
379 | printf("%.102s\n", graph_dotted_line); | 379 | printf("%.102s\n", graph_dotted_line); |
380 | 380 | ||
381 | next = rb_first(root); | 381 | next = rb_first(root); |
@@ -401,7 +401,7 @@ static void __print_result(struct rb_root *root, struct perf_session *session, | |||
401 | snprintf(buf, sizeof(buf), "%#Lx", addr); | 401 | snprintf(buf, sizeof(buf), "%#Lx", addr); |
402 | printf(" %-34s |", buf); | 402 | printf(" %-34s |", buf); |
403 | 403 | ||
404 | printf(" %9llu/%-5lu | %9llu/%-5lu | %6lu | %8lu | %6.3f%%\n", | 404 | printf(" %9llu/%-5lu | %9llu/%-5lu | %8lu | %8lu | %6.3f%%\n", |
405 | (unsigned long long)data->bytes_alloc, | 405 | (unsigned long long)data->bytes_alloc, |
406 | (unsigned long)data->bytes_alloc / data->hit, | 406 | (unsigned long)data->bytes_alloc / data->hit, |
407 | (unsigned long long)data->bytes_req, | 407 | (unsigned long long)data->bytes_req, |
@@ -784,7 +784,8 @@ int cmd_kmem(int argc, const char **argv, const char *prefix __used) | |||
784 | setup_sorting(&alloc_sort, default_sort_order); | 784 | setup_sorting(&alloc_sort, default_sort_order); |
785 | 785 | ||
786 | return __cmd_kmem(); | 786 | return __cmd_kmem(); |
787 | } | 787 | } else |
788 | usage_with_options(kmem_usage, kmem_options); | ||
788 | 789 | ||
789 | return 0; | 790 | return 0; |
790 | } | 791 | } |
diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c index a589a43112d6..3f8bbcfb1e9b 100644 --- a/tools/perf/builtin-timechart.c +++ b/tools/perf/builtin-timechart.c | |||
@@ -280,7 +280,7 @@ static u64 cpus_pstate_state[MAX_CPUS]; | |||
280 | 280 | ||
281 | static int process_comm_event(event_t *event, struct perf_session *session __used) | 281 | static int process_comm_event(event_t *event, struct perf_session *session __used) |
282 | { | 282 | { |
283 | pid_set_comm(event->comm.pid, event->comm.comm); | 283 | pid_set_comm(event->comm.tid, event->comm.comm); |
284 | return 0; | 284 | return 0; |
285 | } | 285 | } |
286 | 286 | ||
diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c index 30f70fd511c4..a9d3fc6c681c 100644 --- a/virt/kvm/eventfd.c +++ b/virt/kvm/eventfd.c | |||
@@ -72,12 +72,13 @@ static void | |||
72 | irqfd_shutdown(struct work_struct *work) | 72 | irqfd_shutdown(struct work_struct *work) |
73 | { | 73 | { |
74 | struct _irqfd *irqfd = container_of(work, struct _irqfd, shutdown); | 74 | struct _irqfd *irqfd = container_of(work, struct _irqfd, shutdown); |
75 | u64 cnt; | ||
75 | 76 | ||
76 | /* | 77 | /* |
77 | * Synchronize with the wait-queue and unhook ourselves to prevent | 78 | * Synchronize with the wait-queue and unhook ourselves to prevent |
78 | * further events. | 79 | * further events. |
79 | */ | 80 | */ |
80 | remove_wait_queue(irqfd->wqh, &irqfd->wait); | 81 | eventfd_ctx_remove_wait_queue(irqfd->eventfd, &irqfd->wait, &cnt); |
81 | 82 | ||
82 | /* | 83 | /* |
83 | * We know no new events will be scheduled at this point, so block | 84 | * We know no new events will be scheduled at this point, so block |
@@ -166,7 +167,7 @@ irqfd_ptable_queue_proc(struct file *file, wait_queue_head_t *wqh, | |||
166 | static int | 167 | static int |
167 | kvm_irqfd_assign(struct kvm *kvm, int fd, int gsi) | 168 | kvm_irqfd_assign(struct kvm *kvm, int fd, int gsi) |
168 | { | 169 | { |
169 | struct _irqfd *irqfd; | 170 | struct _irqfd *irqfd, *tmp; |
170 | struct file *file = NULL; | 171 | struct file *file = NULL; |
171 | struct eventfd_ctx *eventfd = NULL; | 172 | struct eventfd_ctx *eventfd = NULL; |
172 | int ret; | 173 | int ret; |
@@ -203,9 +204,20 @@ kvm_irqfd_assign(struct kvm *kvm, int fd, int gsi) | |||
203 | init_waitqueue_func_entry(&irqfd->wait, irqfd_wakeup); | 204 | init_waitqueue_func_entry(&irqfd->wait, irqfd_wakeup); |
204 | init_poll_funcptr(&irqfd->pt, irqfd_ptable_queue_proc); | 205 | init_poll_funcptr(&irqfd->pt, irqfd_ptable_queue_proc); |
205 | 206 | ||
207 | spin_lock_irq(&kvm->irqfds.lock); | ||
208 | |||
209 | ret = 0; | ||
210 | list_for_each_entry(tmp, &kvm->irqfds.items, list) { | ||
211 | if (irqfd->eventfd != tmp->eventfd) | ||
212 | continue; | ||
213 | /* This fd is used for another irq already. */ | ||
214 | ret = -EBUSY; | ||
215 | spin_unlock_irq(&kvm->irqfds.lock); | ||
216 | goto fail; | ||
217 | } | ||
218 | |||
206 | events = file->f_op->poll(file, &irqfd->pt); | 219 | events = file->f_op->poll(file, &irqfd->pt); |
207 | 220 | ||
208 | spin_lock_irq(&kvm->irqfds.lock); | ||
209 | list_add_tail(&irqfd->list, &kvm->irqfds.items); | 221 | list_add_tail(&irqfd->list, &kvm->irqfds.items); |
210 | spin_unlock_irq(&kvm->irqfds.lock); | 222 | spin_unlock_irq(&kvm->irqfds.lock); |
211 | 223 | ||
diff --git a/virt/kvm/irq_comm.c b/virt/kvm/irq_comm.c index 9b077342ab54..9fd5b3ebc517 100644 --- a/virt/kvm/irq_comm.c +++ b/virt/kvm/irq_comm.c | |||
@@ -302,6 +302,7 @@ static int setup_routing_entry(struct kvm_irq_routing_table *rt, | |||
302 | { | 302 | { |
303 | int r = -EINVAL; | 303 | int r = -EINVAL; |
304 | int delta; | 304 | int delta; |
305 | unsigned max_pin; | ||
305 | struct kvm_kernel_irq_routing_entry *ei; | 306 | struct kvm_kernel_irq_routing_entry *ei; |
306 | struct hlist_node *n; | 307 | struct hlist_node *n; |
307 | 308 | ||
@@ -322,12 +323,15 @@ static int setup_routing_entry(struct kvm_irq_routing_table *rt, | |||
322 | switch (ue->u.irqchip.irqchip) { | 323 | switch (ue->u.irqchip.irqchip) { |
323 | case KVM_IRQCHIP_PIC_MASTER: | 324 | case KVM_IRQCHIP_PIC_MASTER: |
324 | e->set = kvm_set_pic_irq; | 325 | e->set = kvm_set_pic_irq; |
326 | max_pin = 16; | ||
325 | break; | 327 | break; |
326 | case KVM_IRQCHIP_PIC_SLAVE: | 328 | case KVM_IRQCHIP_PIC_SLAVE: |
327 | e->set = kvm_set_pic_irq; | 329 | e->set = kvm_set_pic_irq; |
330 | max_pin = 16; | ||
328 | delta = 8; | 331 | delta = 8; |
329 | break; | 332 | break; |
330 | case KVM_IRQCHIP_IOAPIC: | 333 | case KVM_IRQCHIP_IOAPIC: |
334 | max_pin = KVM_IOAPIC_NUM_PINS; | ||
331 | e->set = kvm_set_ioapic_irq; | 335 | e->set = kvm_set_ioapic_irq; |
332 | break; | 336 | break; |
333 | default: | 337 | default: |
@@ -335,7 +339,7 @@ static int setup_routing_entry(struct kvm_irq_routing_table *rt, | |||
335 | } | 339 | } |
336 | e->irqchip.irqchip = ue->u.irqchip.irqchip; | 340 | e->irqchip.irqchip = ue->u.irqchip.irqchip; |
337 | e->irqchip.pin = ue->u.irqchip.pin + delta; | 341 | e->irqchip.pin = ue->u.irqchip.pin + delta; |
338 | if (e->irqchip.pin >= KVM_IOAPIC_NUM_PINS) | 342 | if (e->irqchip.pin >= max_pin) |
339 | goto out; | 343 | goto out; |
340 | rt->chip[ue->u.irqchip.irqchip][e->irqchip.pin] = ue->gsi; | 344 | rt->chip[ue->u.irqchip.irqchip][e->irqchip.pin] = ue->gsi; |
341 | break; | 345 | break; |