diff options
author | Ingo Molnar <mingo@kernel.org> | 2012-03-26 11:18:44 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2012-03-26 11:19:03 -0400 |
commit | 7fd52392c56361a40f0c630a82b36b95ca31eac6 (patch) | |
tree | 14091de24c6b28ea4cae9826f98aeedb7be091f5 /Documentation | |
parent | b01c3a0010aabadf745f3e7fdb9cab682e0a28a2 (diff) | |
parent | e22057c8599373e5caef0bc42bdb95d2a361ab0d (diff) |
Merge branch 'linus' into perf/urgent
Merge reason: we need to fix a non-trivial merge conflict.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'Documentation')
164 files changed, 4180 insertions, 814 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index 65bbd2622396..2214f123a976 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX | |||
@@ -7,8 +7,8 @@ Please try and keep the descriptions small enough to fit on one line. | |||
7 | 7 | ||
8 | Following translations are available on the WWW: | 8 | Following translations are available on the WWW: |
9 | 9 | ||
10 | - Japanese, maintained by the JF Project (JF@linux.or.jp), at | 10 | - Japanese, maintained by the JF Project (jf@listserv.linux.or.jp), at |
11 | http://www.linux.or.jp/JF/ | 11 | http://linuxjf.sourceforge.jp/ |
12 | 12 | ||
13 | 00-INDEX | 13 | 00-INDEX |
14 | - this file. | 14 | - this file. |
@@ -104,6 +104,8 @@ cpuidle/ | |||
104 | - info on CPU_IDLE, CPU idle state management subsystem. | 104 | - info on CPU_IDLE, CPU idle state management subsystem. |
105 | cputopology.txt | 105 | cputopology.txt |
106 | - documentation on how CPU topology info is exported via sysfs. | 106 | - documentation on how CPU topology info is exported via sysfs. |
107 | crc32.txt | ||
108 | - brief tutorial on CRC computation | ||
107 | cris/ | 109 | cris/ |
108 | - directory with info about Linux on CRIS architecture. | 110 | - directory with info about Linux on CRIS architecture. |
109 | crypto/ | 111 | crypto/ |
diff --git a/Documentation/ABI/obsolete/sysfs-class-rfkill b/Documentation/ABI/obsolete/sysfs-class-rfkill index 4201d5b05515..ff60ad9eca4c 100644 --- a/Documentation/ABI/obsolete/sysfs-class-rfkill +++ b/Documentation/ABI/obsolete/sysfs-class-rfkill | |||
@@ -7,7 +7,7 @@ Date: 09-Jul-2007 | |||
7 | KernelVersion v2.6.22 | 7 | KernelVersion v2.6.22 |
8 | Contact: linux-wireless@vger.kernel.org | 8 | Contact: linux-wireless@vger.kernel.org |
9 | Description: Current state of the transmitter. | 9 | Description: Current state of the transmitter. |
10 | This file is deprecated and sheduled to be removed in 2014, | 10 | This file is deprecated and scheduled to be removed in 2014, |
11 | because its not possible to express the 'soft and hard block' | 11 | because its not possible to express the 'soft and hard block' |
12 | state of the rfkill driver. | 12 | state of the rfkill driver. |
13 | Values: A numeric value. | 13 | Values: A numeric value. |
diff --git a/Documentation/ABI/removed/devfs b/Documentation/ABI/removed/devfs index 8ffd28bf6598..0020c49933c4 100644 --- a/Documentation/ABI/removed/devfs +++ b/Documentation/ABI/removed/devfs | |||
@@ -1,6 +1,6 @@ | |||
1 | What: devfs | 1 | What: devfs |
2 | Date: July 2005 (scheduled), finally removed in kernel v2.6.18 | 2 | Date: July 2005 (scheduled), finally removed in kernel v2.6.18 |
3 | Contact: Greg Kroah-Hartman <gregkh@suse.de> | 3 | Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
4 | Description: | 4 | Description: |
5 | devfs has been unmaintained for a number of years, has unfixable | 5 | devfs has been unmaintained for a number of years, has unfixable |
6 | races, contains a naming policy within the kernel that is | 6 | races, contains a naming policy within the kernel that is |
diff --git a/Documentation/ABI/stable/sysfs-driver-usb-usbtmc b/Documentation/ABI/stable/sysfs-driver-usb-usbtmc index 9a75fb22187d..23a43b8207e6 100644 --- a/Documentation/ABI/stable/sysfs-driver-usb-usbtmc +++ b/Documentation/ABI/stable/sysfs-driver-usb-usbtmc | |||
@@ -1,7 +1,7 @@ | |||
1 | What: /sys/bus/usb/drivers/usbtmc/devices/*/interface_capabilities | 1 | What: /sys/bus/usb/drivers/usbtmc/devices/*/interface_capabilities |
2 | What: /sys/bus/usb/drivers/usbtmc/devices/*/device_capabilities | 2 | What: /sys/bus/usb/drivers/usbtmc/devices/*/device_capabilities |
3 | Date: August 2008 | 3 | Date: August 2008 |
4 | Contact: Greg Kroah-Hartman <gregkh@suse.de> | 4 | Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
5 | Description: | 5 | Description: |
6 | These files show the various USB TMC capabilities as described | 6 | These files show the various USB TMC capabilities as described |
7 | by the device itself. The full description of the bitfields | 7 | by the device itself. The full description of the bitfields |
@@ -15,7 +15,7 @@ Description: | |||
15 | What: /sys/bus/usb/drivers/usbtmc/devices/*/usb488_interface_capabilities | 15 | What: /sys/bus/usb/drivers/usbtmc/devices/*/usb488_interface_capabilities |
16 | What: /sys/bus/usb/drivers/usbtmc/devices/*/usb488_device_capabilities | 16 | What: /sys/bus/usb/drivers/usbtmc/devices/*/usb488_device_capabilities |
17 | Date: August 2008 | 17 | Date: August 2008 |
18 | Contact: Greg Kroah-Hartman <gregkh@suse.de> | 18 | Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
19 | Description: | 19 | Description: |
20 | These files show the various USB TMC capabilities as described | 20 | These files show the various USB TMC capabilities as described |
21 | by the device itself. The full description of the bitfields | 21 | by the device itself. The full description of the bitfields |
@@ -29,7 +29,7 @@ Description: | |||
29 | 29 | ||
30 | What: /sys/bus/usb/drivers/usbtmc/devices/*/TermChar | 30 | What: /sys/bus/usb/drivers/usbtmc/devices/*/TermChar |
31 | Date: August 2008 | 31 | Date: August 2008 |
32 | Contact: Greg Kroah-Hartman <gregkh@suse.de> | 32 | Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
33 | Description: | 33 | Description: |
34 | This file is the TermChar value to be sent to the USB TMC | 34 | This file is the TermChar value to be sent to the USB TMC |
35 | device as described by the document, "Universal Serial Bus Test | 35 | device as described by the document, "Universal Serial Bus Test |
@@ -42,7 +42,7 @@ Description: | |||
42 | 42 | ||
43 | What: /sys/bus/usb/drivers/usbtmc/devices/*/TermCharEnabled | 43 | What: /sys/bus/usb/drivers/usbtmc/devices/*/TermCharEnabled |
44 | Date: August 2008 | 44 | Date: August 2008 |
45 | Contact: Greg Kroah-Hartman <gregkh@suse.de> | 45 | Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
46 | Description: | 46 | Description: |
47 | This file determines if the TermChar is to be sent to the | 47 | This file determines if the TermChar is to be sent to the |
48 | device on every transaction or not. For more details about | 48 | device on every transaction or not. For more details about |
@@ -53,7 +53,7 @@ Description: | |||
53 | 53 | ||
54 | What: /sys/bus/usb/drivers/usbtmc/devices/*/auto_abort | 54 | What: /sys/bus/usb/drivers/usbtmc/devices/*/auto_abort |
55 | Date: August 2008 | 55 | Date: August 2008 |
56 | Contact: Greg Kroah-Hartman <gregkh@suse.de> | 56 | Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
57 | Description: | 57 | Description: |
58 | This file determines if the the transaction of the USB TMC | 58 | This file determines if the the transaction of the USB TMC |
59 | device is to be automatically aborted if there is any error. | 59 | device is to be automatically aborted if there is any error. |
diff --git a/Documentation/ABI/stable/sysfs-module b/Documentation/ABI/stable/sysfs-module index 75be43118335..a0dd21c6db59 100644 --- a/Documentation/ABI/stable/sysfs-module +++ b/Documentation/ABI/stable/sysfs-module | |||
@@ -6,7 +6,7 @@ Description: | |||
6 | The name of the module that is in the kernel. This | 6 | The name of the module that is in the kernel. This |
7 | module name will show up either if the module is built | 7 | module name will show up either if the module is built |
8 | directly into the kernel, or if it is loaded as a | 8 | directly into the kernel, or if it is loaded as a |
9 | dyanmic module. | 9 | dynamic module. |
10 | 10 | ||
11 | /sys/module/MODULENAME/parameters | 11 | /sys/module/MODULENAME/parameters |
12 | This directory contains individual files that are each | 12 | This directory contains individual files that are each |
diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb index b4f548792e32..7c22a532fdfb 100644 --- a/Documentation/ABI/testing/sysfs-bus-usb +++ b/Documentation/ABI/testing/sysfs-bus-usb | |||
@@ -182,3 +182,14 @@ Description: | |||
182 | USB2 hardware LPM is enabled for the device. Developer can | 182 | USB2 hardware LPM is enabled for the device. Developer can |
183 | write y/Y/1 or n/N/0 to the file to enable/disable the | 183 | write y/Y/1 or n/N/0 to the file to enable/disable the |
184 | feature. | 184 | feature. |
185 | |||
186 | What: /sys/bus/usb/devices/.../removable | ||
187 | Date: February 2012 | ||
188 | Contact: Matthew Garrett <mjg@redhat.com> | ||
189 | Description: | ||
190 | Some information about whether a given USB device is | ||
191 | physically fixed to the platform can be inferred from a | ||
192 | combination of hub decriptor bits and platform-specific data | ||
193 | such as ACPI. This file will read either "removable" or | ||
194 | "fixed" if the information is available, and "unknown" | ||
195 | otherwise. \ No newline at end of file | ||
diff --git a/Documentation/ABI/testing/sysfs-class b/Documentation/ABI/testing/sysfs-class index 4b0cb891e46e..676530fcf747 100644 --- a/Documentation/ABI/testing/sysfs-class +++ b/Documentation/ABI/testing/sysfs-class | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /sys/class/ | 1 | What: /sys/class/ |
2 | Date: Febuary 2006 | 2 | Date: Febuary 2006 |
3 | Contact: Greg Kroah-Hartman <gregkh@suse.de> | 3 | Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
4 | Description: | 4 | Description: |
5 | The /sys/class directory will consist of a group of | 5 | The /sys/class directory will consist of a group of |
6 | subdirectories describing individual classes of devices | 6 | subdirectories describing individual classes of devices |
diff --git a/Documentation/ABI/testing/sysfs-class-net-mesh b/Documentation/ABI/testing/sysfs-class-net-mesh index b02001488eef..b218e0f8bdb3 100644 --- a/Documentation/ABI/testing/sysfs-class-net-mesh +++ b/Documentation/ABI/testing/sysfs-class-net-mesh | |||
@@ -65,6 +65,13 @@ Description: | |||
65 | Defines the penalty which will be applied to an | 65 | Defines the penalty which will be applied to an |
66 | originator message's tq-field on every hop. | 66 | originator message's tq-field on every hop. |
67 | 67 | ||
68 | What: /sys/class/net/<mesh_iface>/mesh/routing_algo | ||
69 | Date: Dec 2011 | ||
70 | Contact: Marek Lindner <lindner_marek@yahoo.de> | ||
71 | Description: | ||
72 | Defines the routing procotol this mesh instance | ||
73 | uses to find the optimal paths through the mesh. | ||
74 | |||
68 | What: /sys/class/net/<mesh_iface>/mesh/vis_mode | 75 | What: /sys/class/net/<mesh_iface>/mesh/vis_mode |
69 | Date: May 2010 | 76 | Date: May 2010 |
70 | Contact: Marek Lindner <lindner_marek@yahoo.de> | 77 | Contact: Marek Lindner <lindner_marek@yahoo.de> |
diff --git a/Documentation/ABI/testing/sysfs-devices b/Documentation/ABI/testing/sysfs-devices index 6a25671ee5f6..5fcc94358b8d 100644 --- a/Documentation/ABI/testing/sysfs-devices +++ b/Documentation/ABI/testing/sysfs-devices | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /sys/devices | 1 | What: /sys/devices |
2 | Date: February 2006 | 2 | Date: February 2006 |
3 | Contact: Greg Kroah-Hartman <gregkh@suse.de> | 3 | Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
4 | Description: | 4 | Description: |
5 | The /sys/devices tree contains a snapshot of the | 5 | The /sys/devices tree contains a snapshot of the |
6 | internal state of the kernel device tree. Devices will | 6 | internal state of the kernel device tree. Devices will |
diff --git a/Documentation/ABI/testing/sysfs-devices-power b/Documentation/ABI/testing/sysfs-devices-power index 8ffbc25376a0..840f7d64d483 100644 --- a/Documentation/ABI/testing/sysfs-devices-power +++ b/Documentation/ABI/testing/sysfs-devices-power | |||
@@ -165,3 +165,21 @@ Description: | |||
165 | 165 | ||
166 | Not all drivers support this attribute. If it isn't supported, | 166 | Not all drivers support this attribute. If it isn't supported, |
167 | attempts to read or write it will yield I/O errors. | 167 | attempts to read or write it will yield I/O errors. |
168 | |||
169 | What: /sys/devices/.../power/pm_qos_latency_us | ||
170 | Date: March 2012 | ||
171 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | ||
172 | Description: | ||
173 | The /sys/devices/.../power/pm_qos_resume_latency_us attribute | ||
174 | contains the PM QoS resume latency limit for the given device, | ||
175 | which is the maximum allowed time it can take to resume the | ||
176 | device, after it has been suspended at run time, from a resume | ||
177 | request to the moment the device will be ready to process I/O, | ||
178 | in microseconds. If it is equal to 0, however, this means that | ||
179 | the PM QoS resume latency may be arbitrary. | ||
180 | |||
181 | Not all drivers support this attribute. If it isn't supported, | ||
182 | it is not present. | ||
183 | |||
184 | This attribute has no effect on system-wide suspend/resume and | ||
185 | hibernation. | ||
diff --git a/Documentation/ABI/testing/sysfs-devices-soc b/Documentation/ABI/testing/sysfs-devices-soc new file mode 100644 index 000000000000..6d9cc253f2b2 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-devices-soc | |||
@@ -0,0 +1,58 @@ | |||
1 | What: /sys/devices/socX | ||
2 | Date: January 2012 | ||
3 | contact: Lee Jones <lee.jones@linaro.org> | ||
4 | Description: | ||
5 | The /sys/devices/ directory contains a sub-directory for each | ||
6 | System-on-Chip (SoC) device on a running platform. Information | ||
7 | regarding each SoC can be obtained by reading sysfs files. This | ||
8 | functionality is only available if implemented by the platform. | ||
9 | |||
10 | The directory created for each SoC will also house information | ||
11 | about devices which are commonly contained in /sys/devices/platform. | ||
12 | It has been agreed that if an SoC device exists, its supported | ||
13 | devices would be better suited to appear as children of that SoC. | ||
14 | |||
15 | What: /sys/devices/socX/machine | ||
16 | Date: January 2012 | ||
17 | contact: Lee Jones <lee.jones@linaro.org> | ||
18 | Description: | ||
19 | Read-only attribute common to all SoCs. Contains the SoC machine | ||
20 | name (e.g. Ux500). | ||
21 | |||
22 | What: /sys/devices/socX/family | ||
23 | Date: January 2012 | ||
24 | contact: Lee Jones <lee.jones@linaro.org> | ||
25 | Description: | ||
26 | Read-only attribute common to all SoCs. Contains SoC family name | ||
27 | (e.g. DB8500). | ||
28 | |||
29 | What: /sys/devices/socX/soc_id | ||
30 | Date: January 2012 | ||
31 | contact: Lee Jones <lee.jones@linaro.org> | ||
32 | Description: | ||
33 | Read-only attribute supported by most SoCs. In the case of | ||
34 | ST-Ericsson's chips this contains the SoC serial number. | ||
35 | |||
36 | What: /sys/devices/socX/revision | ||
37 | Date: January 2012 | ||
38 | contact: Lee Jones <lee.jones@linaro.org> | ||
39 | Description: | ||
40 | Read-only attribute supported by most SoCs. Contains the SoC's | ||
41 | manufacturing revision number. | ||
42 | |||
43 | What: /sys/devices/socX/process | ||
44 | Date: January 2012 | ||
45 | contact: Lee Jones <lee.jones@linaro.org> | ||
46 | Description: | ||
47 | Read-only attribute supported ST-Ericsson's silicon. Contains the | ||
48 | the process by which the silicon chip was manufactured. | ||
49 | |||
50 | What: /sys/bus/soc | ||
51 | Date: January 2012 | ||
52 | contact: Lee Jones <lee.jones@linaro.org> | ||
53 | Description: | ||
54 | The /sys/bus/soc/ directory contains the usual sub-folders | ||
55 | expected under most buses. /sys/bus/soc/devices is of particular | ||
56 | interest, as it contains a symlink for each SoC device found on | ||
57 | the system. Each symlink points back into the aforementioned | ||
58 | /sys/devices/socX devices. | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-samsung-laptop b/Documentation/ABI/testing/sysfs-driver-samsung-laptop index 0a810231aad4..e82e7c2b8f80 100644 --- a/Documentation/ABI/testing/sysfs-driver-samsung-laptop +++ b/Documentation/ABI/testing/sysfs-driver-samsung-laptop | |||
@@ -1,7 +1,7 @@ | |||
1 | What: /sys/devices/platform/samsung/performance_level | 1 | What: /sys/devices/platform/samsung/performance_level |
2 | Date: January 1, 2010 | 2 | Date: January 1, 2010 |
3 | KernelVersion: 2.6.33 | 3 | KernelVersion: 2.6.33 |
4 | Contact: Greg Kroah-Hartman <gregkh@suse.de> | 4 | Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
5 | Description: Some Samsung laptops have different "performance levels" | 5 | Description: Some Samsung laptops have different "performance levels" |
6 | that are can be modified by a function key, and by this | 6 | that are can be modified by a function key, and by this |
7 | sysfs file. These values don't always make a whole lot | 7 | sysfs file. These values don't always make a whole lot |
diff --git a/Documentation/ABI/testing/sysfs-kernel-mm-cleancache b/Documentation/ABI/testing/sysfs-kernel-mm-cleancache deleted file mode 100644 index 662ae646ea12..000000000000 --- a/Documentation/ABI/testing/sysfs-kernel-mm-cleancache +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | What: /sys/kernel/mm/cleancache/ | ||
2 | Date: April 2011 | ||
3 | Contact: Dan Magenheimer <dan.magenheimer@oracle.com> | ||
4 | Description: | ||
5 | /sys/kernel/mm/cleancache/ contains a number of files which | ||
6 | record a count of various cleancache operations | ||
7 | (sum across all filesystems): | ||
8 | succ_gets | ||
9 | failed_gets | ||
10 | puts | ||
11 | flushes | ||
diff --git a/Documentation/DocBook/80211.tmpl b/Documentation/DocBook/80211.tmpl index 2014155c899d..c5ac6929c41c 100644 --- a/Documentation/DocBook/80211.tmpl +++ b/Documentation/DocBook/80211.tmpl | |||
@@ -129,7 +129,6 @@ | |||
129 | !Finclude/net/cfg80211.h cfg80211_pmksa | 129 | !Finclude/net/cfg80211.h cfg80211_pmksa |
130 | !Finclude/net/cfg80211.h cfg80211_send_rx_auth | 130 | !Finclude/net/cfg80211.h cfg80211_send_rx_auth |
131 | !Finclude/net/cfg80211.h cfg80211_send_auth_timeout | 131 | !Finclude/net/cfg80211.h cfg80211_send_auth_timeout |
132 | !Finclude/net/cfg80211.h __cfg80211_auth_canceled | ||
133 | !Finclude/net/cfg80211.h cfg80211_send_rx_assoc | 132 | !Finclude/net/cfg80211.h cfg80211_send_rx_assoc |
134 | !Finclude/net/cfg80211.h cfg80211_send_assoc_timeout | 133 | !Finclude/net/cfg80211.h cfg80211_send_assoc_timeout |
135 | !Finclude/net/cfg80211.h cfg80211_send_deauth | 134 | !Finclude/net/cfg80211.h cfg80211_send_deauth |
diff --git a/Documentation/DocBook/filesystems.tmpl b/Documentation/DocBook/filesystems.tmpl index f51f28531b8d..3fca32c41927 100644 --- a/Documentation/DocBook/filesystems.tmpl +++ b/Documentation/DocBook/filesystems.tmpl | |||
@@ -387,7 +387,7 @@ an example. | |||
387 | <title>See also</title> | 387 | <title>See also</title> |
388 | <para> | 388 | <para> |
389 | <citation> | 389 | <citation> |
390 | <ulink url="ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/journal-design.ps.gz"> | 390 | <ulink url="http://kernel.org/pub/linux/kernel/people/sct/ext3/journal-design.ps.gz"> |
391 | Journaling the Linux ext2fs Filesystem, LinuxExpo 98, Stephen Tweedie | 391 | Journaling the Linux ext2fs Filesystem, LinuxExpo 98, Stephen Tweedie |
392 | </ulink> | 392 | </ulink> |
393 | </citation> | 393 | </citation> |
diff --git a/Documentation/DocBook/kgdb.tmpl b/Documentation/DocBook/kgdb.tmpl index d71b57fcf116..4ee4ba3509fc 100644 --- a/Documentation/DocBook/kgdb.tmpl +++ b/Documentation/DocBook/kgdb.tmpl | |||
@@ -362,6 +362,23 @@ | |||
362 | </para> | 362 | </para> |
363 | </para> | 363 | </para> |
364 | </sect1> | 364 | </sect1> |
365 | <sect1 id="kgdbreboot"> | ||
366 | <title>Run time parameter: kgdbreboot</title> | ||
367 | <para> The kgdbreboot feature allows you to change how the debugger | ||
368 | deals with the reboot notification. You have 3 choices for the | ||
369 | behavior. The default behavior is always set to 0.</para> | ||
370 | <orderedlist> | ||
371 | <listitem><para>echo -1 > /sys/module/debug_core/parameters/kgdbreboot</para> | ||
372 | <para>Ignore the reboot notification entirely.</para> | ||
373 | </listitem> | ||
374 | <listitem><para>echo 0 > /sys/module/debug_core/parameters/kgdbreboot</para> | ||
375 | <para>Send the detach message to any attached debugger client.</para> | ||
376 | </listitem> | ||
377 | <listitem><para>echo 1 > /sys/module/debug_core/parameters/kgdbreboot</para> | ||
378 | <para>Enter the debugger on reboot notify.</para> | ||
379 | </listitem> | ||
380 | </orderedlist> | ||
381 | </sect1> | ||
365 | </chapter> | 382 | </chapter> |
366 | <chapter id="usingKDB"> | 383 | <chapter id="usingKDB"> |
367 | <title>Using kdb</title> | 384 | <title>Using kdb</title> |
diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl index cdd1bb9aac0d..31df1aa00710 100644 --- a/Documentation/DocBook/libata.tmpl +++ b/Documentation/DocBook/libata.tmpl | |||
@@ -22,8 +22,8 @@ | |||
22 | <para> | 22 | <para> |
23 | The contents of this file are subject to the Open | 23 | The contents of this file are subject to the Open |
24 | Software License version 1.1 that can be found at | 24 | Software License version 1.1 that can be found at |
25 | <ulink url="http://www.opensource.org/licenses/osl-1.1.txt">http://www.opensource.org/licenses/osl-1.1.txt</ulink> and is included herein | 25 | <ulink url="http://fedoraproject.org/wiki/Licensing:OSL1.1">http://fedoraproject.org/wiki/Licensing:OSL1.1</ulink> |
26 | by reference. | 26 | and is included herein by reference. |
27 | </para> | 27 | </para> |
28 | 28 | ||
29 | <para> | 29 | <para> |
@@ -945,7 +945,7 @@ and other resources, etc. | |||
945 | 945 | ||
946 | <listitem> | 946 | <listitem> |
947 | <para> | 947 | <para> |
948 | !BSY && ERR after CDB tranfer starts but before the | 948 | !BSY && ERR after CDB transfer starts but before the |
949 | last byte of CDB is transferred. ATA/ATAPI standard states | 949 | last byte of CDB is transferred. ATA/ATAPI standard states |
950 | that "The device shall not terminate the PACKET command | 950 | that "The device shall not terminate the PACKET command |
951 | with an error before the last byte of the command packet has | 951 | with an error before the last byte of the command packet has |
@@ -1050,7 +1050,7 @@ and other resources, etc. | |||
1050 | to complete a command. Combined with the fact that MWDMA | 1050 | to complete a command. Combined with the fact that MWDMA |
1051 | and PIO transfer errors aren't allowed to use ICRC bit up to | 1051 | and PIO transfer errors aren't allowed to use ICRC bit up to |
1052 | ATA/ATAPI-7, it seems to imply that ABRT bit alone could | 1052 | ATA/ATAPI-7, it seems to imply that ABRT bit alone could |
1053 | indicate tranfer errors. | 1053 | indicate transfer errors. |
1054 | </para> | 1054 | </para> |
1055 | <para> | 1055 | <para> |
1056 | However, ATA/ATAPI-8 draft revision 1f removes the part | 1056 | However, ATA/ATAPI-8 draft revision 1f removes the part |
diff --git a/Documentation/DocBook/media/v4l/biblio.xml b/Documentation/DocBook/media/v4l/biblio.xml index cea6fd3ed428..7dc65c592a87 100644 --- a/Documentation/DocBook/media/v4l/biblio.xml +++ b/Documentation/DocBook/media/v4l/biblio.xml | |||
@@ -128,6 +128,26 @@ url="http://www.ijg.org">http://www.ijg.org</ulink>)</corpauthor> | |||
128 | <subtitle>Version 1.02</subtitle> | 128 | <subtitle>Version 1.02</subtitle> |
129 | </biblioentry> | 129 | </biblioentry> |
130 | 130 | ||
131 | <biblioentry id="itu-t81"> | ||
132 | <abbrev>ITU-T.81</abbrev> | ||
133 | <authorgroup> | ||
134 | <corpauthor>International Telecommunication Union | ||
135 | (<ulink url="http://www.itu.int">http://www.itu.int</ulink>)</corpauthor> | ||
136 | </authorgroup> | ||
137 | <title>ITU-T Recommendation T.81 | ||
138 | "Information Technology — Digital Compression and Coding of Continous-Tone | ||
139 | Still Images — Requirements and Guidelines"</title> | ||
140 | </biblioentry> | ||
141 | |||
142 | <biblioentry id="w3c-jpeg-jfif"> | ||
143 | <abbrev>W3C JPEG JFIF</abbrev> | ||
144 | <authorgroup> | ||
145 | <corpauthor>The World Wide Web Consortium (<ulink | ||
146 | url="http://www.w3.org/Graphics/JPEG">http://www.w3.org</ulink>)</corpauthor> | ||
147 | </authorgroup> | ||
148 | <title>JPEG JFIF</title> | ||
149 | </biblioentry> | ||
150 | |||
131 | <biblioentry id="smpte12m"> | 151 | <biblioentry id="smpte12m"> |
132 | <abbrev>SMPTE 12M</abbrev> | 152 | <abbrev>SMPTE 12M</abbrev> |
133 | <authorgroup> | 153 | <authorgroup> |
diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml index c736380b4647..bce97c50391b 100644 --- a/Documentation/DocBook/media/v4l/compat.xml +++ b/Documentation/DocBook/media/v4l/compat.xml | |||
@@ -444,7 +444,7 @@ linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_BGR24</constant></link></para></entr | |||
444 | <entry><para><link | 444 | <entry><para><link |
445 | linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_BGR32</constant></link><footnote> | 445 | linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_BGR32</constant></link><footnote> |
446 | <para>Presumably all V4L RGB formats are | 446 | <para>Presumably all V4L RGB formats are |
447 | little-endian, although some drivers might interpret them according to machine endianess. V4L2 defines little-endian, big-endian and red/blue | 447 | little-endian, although some drivers might interpret them according to machine endianness. V4L2 defines little-endian, big-endian and red/blue |
448 | swapped variants. For details see <xref linkend="pixfmt-rgb" />.</para> | 448 | swapped variants. For details see <xref linkend="pixfmt-rgb" />.</para> |
449 | </footnote></para></entry> | 449 | </footnote></para></entry> |
450 | </row> | 450 | </row> |
@@ -823,7 +823,7 @@ standard); 35468950 Hz PAL and SECAM (625-line standards)</entry> | |||
823 | <row> | 823 | <row> |
824 | <entry>sample_format</entry> | 824 | <entry>sample_format</entry> |
825 | <entry>V4L2_PIX_FMT_GREY. The last four bytes (a | 825 | <entry>V4L2_PIX_FMT_GREY. The last four bytes (a |
826 | machine endianess integer) contain a frame counter.</entry> | 826 | machine endianness integer) contain a frame counter.</entry> |
827 | </row> | 827 | </row> |
828 | <row> | 828 | <row> |
829 | <entry>start[]</entry> | 829 | <entry>start[]</entry> |
@@ -2393,6 +2393,20 @@ details.</para> | |||
2393 | to the <link linkend="control">User controls class</link>. | 2393 | to the <link linkend="control">User controls class</link>. |
2394 | </para> | 2394 | </para> |
2395 | </listitem> | 2395 | </listitem> |
2396 | <listitem> | ||
2397 | <para>Added the device_caps field to struct v4l2_capabilities and added the new | ||
2398 | V4L2_CAP_DEVICE_CAPS capability.</para> | ||
2399 | </listitem> | ||
2400 | </orderedlist> | ||
2401 | </section> | ||
2402 | |||
2403 | <section> | ||
2404 | <title>V4L2 in Linux 3.4</title> | ||
2405 | <orderedlist> | ||
2406 | <listitem> | ||
2407 | <para>Added <link linkend="jpeg-controls">JPEG compression control | ||
2408 | class</link>.</para> | ||
2409 | </listitem> | ||
2396 | </orderedlist> | 2410 | </orderedlist> |
2397 | </section> | 2411 | </section> |
2398 | 2412 | ||
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml index a1be37897ad7..b84f25e9cc87 100644 --- a/Documentation/DocBook/media/v4l/controls.xml +++ b/Documentation/DocBook/media/v4l/controls.xml | |||
@@ -1286,6 +1286,49 @@ produce a slight hiss, but in the encoder itself, guaranteeing a fixed | |||
1286 | and reproducible audio bitstream. 0 = unmuted, 1 = muted.</entry> | 1286 | and reproducible audio bitstream. 0 = unmuted, 1 = muted.</entry> |
1287 | </row> | 1287 | </row> |
1288 | <row><entry></entry></row> | 1288 | <row><entry></entry></row> |
1289 | <row id="v4l2-mpeg-audio-dec-playback"> | ||
1290 | <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK</constant> </entry> | ||
1291 | <entry>enum v4l2_mpeg_audio_dec_playback</entry> | ||
1292 | </row><row><entry spanname="descr">Determines how monolingual audio should be played back. | ||
1293 | Possible values are:</entry> | ||
1294 | </row> | ||
1295 | <row> | ||
1296 | <entrytbl spanname="descr" cols="2"> | ||
1297 | <tbody valign="top"> | ||
1298 | <row> | ||
1299 | <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO</constant> </entry> | ||
1300 | <entry>Automatically determines the best playback mode.</entry> | ||
1301 | </row> | ||
1302 | <row> | ||
1303 | <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO</constant> </entry> | ||
1304 | <entry>Stereo playback.</entry> | ||
1305 | </row> | ||
1306 | <row> | ||
1307 | <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_LEFT</constant> </entry> | ||
1308 | <entry>Left channel playback.</entry> | ||
1309 | </row> | ||
1310 | <row> | ||
1311 | <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_RIGHT</constant> </entry> | ||
1312 | <entry>Right channel playback.</entry> | ||
1313 | </row> | ||
1314 | <row> | ||
1315 | <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO</constant> </entry> | ||
1316 | <entry>Mono playback.</entry> | ||
1317 | </row> | ||
1318 | <row> | ||
1319 | <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO</constant> </entry> | ||
1320 | <entry>Stereo playback with swapped left and right channels.</entry> | ||
1321 | </row> | ||
1322 | </tbody> | ||
1323 | </entrytbl> | ||
1324 | </row> | ||
1325 | <row><entry></entry></row> | ||
1326 | <row id="v4l2-mpeg-audio-dec-multilingual-playback"> | ||
1327 | <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK</constant> </entry> | ||
1328 | <entry>enum v4l2_mpeg_audio_dec_playback</entry> | ||
1329 | </row><row><entry spanname="descr">Determines how multilingual audio should be played back.</entry> | ||
1330 | </row> | ||
1331 | <row><entry></entry></row> | ||
1289 | <row id="v4l2-mpeg-video-encoding"> | 1332 | <row id="v4l2-mpeg-video-encoding"> |
1290 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ENCODING</constant> </entry> | 1333 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ENCODING</constant> </entry> |
1291 | <entry>enum v4l2_mpeg_video_encoding</entry> | 1334 | <entry>enum v4l2_mpeg_video_encoding</entry> |
@@ -1447,6 +1490,22 @@ of the video. The supplied 32-bit integer is interpreted as follows (bit | |||
1447 | </tbody> | 1490 | </tbody> |
1448 | </entrytbl> | 1491 | </entrytbl> |
1449 | </row> | 1492 | </row> |
1493 | <row><entry></entry></row> | ||
1494 | <row id="v4l2-mpeg-video-dec-pts"> | ||
1495 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DEC_PTS</constant> </entry> | ||
1496 | <entry>integer64</entry> | ||
1497 | </row><row><entry spanname="descr">This read-only control returns the | ||
1498 | 33-bit video Presentation Time Stamp as defined in ITU T-REC-H.222.0 and ISO/IEC 13818-1 of | ||
1499 | the currently displayed frame. This is the same PTS as is used in &VIDIOC-DECODER-CMD;.</entry> | ||
1500 | </row> | ||
1501 | <row><entry></entry></row> | ||
1502 | <row id="v4l2-mpeg-video-dec-frame"> | ||
1503 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DEC_FRAME</constant> </entry> | ||
1504 | <entry>integer64</entry> | ||
1505 | </row><row><entry spanname="descr">This read-only control returns the | ||
1506 | frame counter of the frame that is currently displayed (decoded). This value is reset to 0 whenever | ||
1507 | the decoder is started.</entry> | ||
1508 | </row> | ||
1450 | 1509 | ||
1451 | 1510 | ||
1452 | <row><entry></entry></row> | 1511 | <row><entry></entry></row> |
@@ -3377,6 +3436,167 @@ interface and may change in the future.</para> | |||
3377 | </tbody> | 3436 | </tbody> |
3378 | </tgroup> | 3437 | </tgroup> |
3379 | </table> | 3438 | </table> |
3439 | </section> | ||
3440 | |||
3441 | <section id="jpeg-controls"> | ||
3442 | <title>JPEG Control Reference</title> | ||
3443 | <para>The JPEG class includes controls for common features of JPEG | ||
3444 | encoders and decoders. Currently it includes features for codecs | ||
3445 | implementing progressive baseline DCT compression process with | ||
3446 | Huffman entrophy coding.</para> | ||
3447 | <table pgwide="1" frame="none" id="jpeg-control-id"> | ||
3448 | <title>JPEG Control IDs</title> | ||
3380 | 3449 | ||
3450 | <tgroup cols="4"> | ||
3451 | <colspec colname="c1" colwidth="1*" /> | ||
3452 | <colspec colname="c2" colwidth="6*" /> | ||
3453 | <colspec colname="c3" colwidth="2*" /> | ||
3454 | <colspec colname="c4" colwidth="6*" /> | ||
3455 | <spanspec namest="c1" nameend="c2" spanname="id" /> | ||
3456 | <spanspec namest="c2" nameend="c4" spanname="descr" /> | ||
3457 | <thead> | ||
3458 | <row> | ||
3459 | <entry spanname="id" align="left">ID</entry> | ||
3460 | <entry align="left">Type</entry> | ||
3461 | </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry> | ||
3462 | </row> | ||
3463 | </thead> | ||
3464 | <tbody valign="top"> | ||
3465 | <row><entry></entry></row> | ||
3466 | <row> | ||
3467 | <entry spanname="id"><constant>V4L2_CID_JPEG_CLASS</constant> </entry> | ||
3468 | <entry>class</entry> | ||
3469 | </row><row><entry spanname="descr">The JPEG class descriptor. Calling | ||
3470 | &VIDIOC-QUERYCTRL; for this control will return a description of this | ||
3471 | control class. | ||
3472 | |||
3473 | </entry> | ||
3474 | </row> | ||
3475 | <row> | ||
3476 | <entry spanname="id"><constant>V4L2_CID_JPEG_CHROMA_SUBSAMPLING</constant></entry> | ||
3477 | <entry>menu</entry> | ||
3478 | </row> | ||
3479 | <row id="jpeg-chroma-subsampling-control"> | ||
3480 | <entry spanname="descr">The chroma subsampling factors describe how | ||
3481 | each component of an input image is sampled, in respect to maximum | ||
3482 | sample rate in each spatial dimension. See <xref linkend="itu-t81"/>, | ||
3483 | clause A.1.1. for more details. The <constant> | ||
3484 | V4L2_CID_JPEG_CHROMA_SUBSAMPLING</constant> control determines how | ||
3485 | Cb and Cr components are downsampled after coverting an input image | ||
3486 | from RGB to Y'CbCr color space. | ||
3487 | </entry> | ||
3488 | </row> | ||
3489 | <row> | ||
3490 | <entrytbl spanname="descr" cols="2"> | ||
3491 | <tbody valign="top"> | ||
3492 | <row> | ||
3493 | <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_444</constant> | ||
3494 | </entry><entry>No chroma subsampling, each pixel has | ||
3495 | Y, Cr and Cb values.</entry> | ||
3496 | </row> | ||
3497 | <row> | ||
3498 | <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_422</constant> | ||
3499 | </entry><entry>Horizontally subsample Cr, Cb components | ||
3500 | by a factor of 2.</entry> | ||
3501 | </row> | ||
3502 | <row> | ||
3503 | <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_420</constant> | ||
3504 | </entry><entry>Subsample Cr, Cb components horizontally | ||
3505 | and vertically by 2.</entry> | ||
3506 | </row> | ||
3507 | <row> | ||
3508 | <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_411</constant> | ||
3509 | </entry><entry>Horizontally subsample Cr, Cb components | ||
3510 | by a factor of 4.</entry> | ||
3511 | </row> | ||
3512 | <row> | ||
3513 | <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_410</constant> | ||
3514 | </entry><entry>Subsample Cr, Cb components horizontally | ||
3515 | by 4 and vertically by 2.</entry> | ||
3516 | </row> | ||
3517 | <row> | ||
3518 | <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY</constant> | ||
3519 | </entry><entry>Use only luminance component.</entry> | ||
3520 | </row> | ||
3521 | </tbody> | ||
3522 | </entrytbl> | ||
3523 | </row> | ||
3524 | <row> | ||
3525 | <entry spanname="id"><constant>V4L2_CID_JPEG_RESTART_INTERVAL</constant> | ||
3526 | </entry><entry>integer</entry> | ||
3527 | </row> | ||
3528 | <row><entry spanname="descr"> | ||
3529 | The restart interval determines an interval of inserting RSTm | ||
3530 | markers (m = 0..7). The purpose of these markers is to additionally | ||
3531 | reinitialize the encoder process, in order to process blocks of | ||
3532 | an image independently. | ||
3533 | For the lossy compression processes the restart interval unit is | ||
3534 | MCU (Minimum Coded Unit) and its value is contained in DRI | ||
3535 | (Define Restart Interval) marker. If <constant> | ||
3536 | V4L2_CID_JPEG_RESTART_INTERVAL</constant> control is set to 0, | ||
3537 | DRI and RSTm markers will not be inserted. | ||
3538 | </entry> | ||
3539 | </row> | ||
3540 | <row id="jpeg-quality-control"> | ||
3541 | <entry spanname="id"><constant>V4L2_CID_JPEG_COMPRESION_QUALITY</constant></entry> | ||
3542 | <entry>integer</entry> | ||
3543 | </row> | ||
3544 | <row> | ||
3545 | <entry spanname="descr"> | ||
3546 | <constant>V4L2_CID_JPEG_COMPRESION_QUALITY</constant> control | ||
3547 | determines trade-off between image quality and size. | ||
3548 | It provides simpler method for applications to control image quality, | ||
3549 | without a need for direct reconfiguration of luminance and chrominance | ||
3550 | quantization tables. | ||
3551 | |||
3552 | In cases where a driver uses quantization tables configured directly | ||
3553 | by an application, using interfaces defined elsewhere, <constant> | ||
3554 | V4L2_CID_JPEG_COMPRESION_QUALITY</constant> control should be set | ||
3555 | by driver to 0. | ||
3556 | |||
3557 | <para>The value range of this control is driver-specific. Only | ||
3558 | positive, non-zero values are meaningful. The recommended range | ||
3559 | is 1 - 100, where larger values correspond to better image quality. | ||
3560 | </para> | ||
3561 | </entry> | ||
3562 | </row> | ||
3563 | <row id="jpeg-active-marker-control"> | ||
3564 | <entry spanname="id"><constant>V4L2_CID_JPEG_ACTIVE_MARKER</constant></entry> | ||
3565 | <entry>bitmask</entry> | ||
3566 | </row> | ||
3567 | <row> | ||
3568 | <entry spanname="descr">Specify which JPEG markers are included | ||
3569 | in compressed stream. This control is valid only for encoders. | ||
3570 | </entry> | ||
3571 | </row> | ||
3572 | <row> | ||
3573 | <entrytbl spanname="descr" cols="2"> | ||
3574 | <tbody valign="top"> | ||
3575 | <row> | ||
3576 | <entry><constant>V4L2_JPEG_ACTIVE_MARKER_APP0</constant></entry> | ||
3577 | <entry>Application data segment APP<subscript>0</subscript>.</entry> | ||
3578 | </row><row> | ||
3579 | <entry><constant>V4L2_JPEG_ACTIVE_MARKER_APP1</constant></entry> | ||
3580 | <entry>Application data segment APP<subscript>1</subscript>.</entry> | ||
3581 | </row><row> | ||
3582 | <entry><constant>V4L2_JPEG_ACTIVE_MARKER_COM</constant></entry> | ||
3583 | <entry>Comment segment.</entry> | ||
3584 | </row><row> | ||
3585 | <entry><constant>V4L2_JPEG_ACTIVE_MARKER_DQT</constant></entry> | ||
3586 | <entry>Quantization tables segment.</entry> | ||
3587 | </row><row> | ||
3588 | <entry><constant>V4L2_JPEG_ACTIVE_MARKER_DHT</constant></entry> | ||
3589 | <entry>Huffman tables segment.</entry> | ||
3590 | </row> | ||
3591 | </tbody> | ||
3592 | </entrytbl> | ||
3593 | </row> | ||
3594 | <row><entry></entry></row> | ||
3595 | </tbody> | ||
3596 | </tgroup> | ||
3597 | </table> | ||
3598 | <para>For more details about JPEG specification, refer | ||
3599 | to <xref linkend="itu-t81"/>, <xref linkend="jfif"/>, | ||
3600 | <xref linkend="w3c-jpeg-jfif"/>.</para> | ||
3381 | </section> | 3601 | </section> |
3382 | </section> | 3602 | </section> |
diff --git a/Documentation/DocBook/media/v4l/selection-api.xml b/Documentation/DocBook/media/v4l/selection-api.xml index 2f0bdb4d5551..b299e4779354 100644 --- a/Documentation/DocBook/media/v4l/selection-api.xml +++ b/Documentation/DocBook/media/v4l/selection-api.xml | |||
@@ -52,6 +52,10 @@ cropping and composing rectangles have the same size.</para> | |||
52 | </textobject> | 52 | </textobject> |
53 | </mediaobject> | 53 | </mediaobject> |
54 | </figure> | 54 | </figure> |
55 | |||
56 | For complete list of the available selection targets see table <xref | ||
57 | linkend="v4l2-sel-target"/> | ||
58 | |||
55 | </section> | 59 | </section> |
56 | 60 | ||
57 | <section> | 61 | <section> |
@@ -186,7 +190,7 @@ V4L2_SEL_TGT_COMPOSE_ACTIVE </constant> target.</para> | |||
186 | 190 | ||
187 | <section> | 191 | <section> |
188 | 192 | ||
189 | <title>Scaling control.</title> | 193 | <title>Scaling control</title> |
190 | 194 | ||
191 | <para>An application can detect if scaling is performed by comparing the width | 195 | <para>An application can detect if scaling is performed by comparing the width |
192 | and the height of rectangles obtained using <constant> V4L2_SEL_TGT_CROP_ACTIVE | 196 | and the height of rectangles obtained using <constant> V4L2_SEL_TGT_CROP_ACTIVE |
@@ -200,7 +204,7 @@ the scaling ratios using these values.</para> | |||
200 | 204 | ||
201 | <section> | 205 | <section> |
202 | 206 | ||
203 | <title>Comparison with old cropping API.</title> | 207 | <title>Comparison with old cropping API</title> |
204 | 208 | ||
205 | <para>The selection API was introduced to cope with deficiencies of previous | 209 | <para>The selection API was introduced to cope with deficiencies of previous |
206 | <link linkend="crop"> API </link>, that was designed to control simple capture | 210 | <link linkend="crop"> API </link>, that was designed to control simple capture |
diff --git a/Documentation/DocBook/media/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml index e97c512861bb..8ae38876172e 100644 --- a/Documentation/DocBook/media/v4l/v4l2.xml +++ b/Documentation/DocBook/media/v4l/v4l2.xml | |||
@@ -128,6 +128,22 @@ structs, ioctls) must be noted in more detail in the history chapter | |||
128 | applications. --> | 128 | applications. --> |
129 | 129 | ||
130 | <revision> | 130 | <revision> |
131 | <revnumber>3.4</revnumber> | ||
132 | <date>2012-01-25</date> | ||
133 | <authorinitials>sn</authorinitials> | ||
134 | <revremark>Added <link linkend="jpeg-controls">JPEG compression | ||
135 | control class.</link> | ||
136 | </revremark> | ||
137 | </revision> | ||
138 | |||
139 | <revision> | ||
140 | <revnumber>3.3</revnumber> | ||
141 | <date>2012-01-11</date> | ||
142 | <authorinitials>hv</authorinitials> | ||
143 | <revremark>Added device_caps field to struct v4l2_capabilities.</revremark> | ||
144 | </revision> | ||
145 | |||
146 | <revision> | ||
131 | <revnumber>3.2</revnumber> | 147 | <revnumber>3.2</revnumber> |
132 | <date>2011-08-26</date> | 148 | <date>2011-08-26</date> |
133 | <authorinitials>hv</authorinitials> | 149 | <authorinitials>hv</authorinitials> |
@@ -417,7 +433,7 @@ and discussions on the V4L mailing list.</revremark> | |||
417 | </partinfo> | 433 | </partinfo> |
418 | 434 | ||
419 | <title>Video for Linux Two API Specification</title> | 435 | <title>Video for Linux Two API Specification</title> |
420 | <subtitle>Revision 3.2</subtitle> | 436 | <subtitle>Revision 3.3</subtitle> |
421 | 437 | ||
422 | <chapter id="common"> | 438 | <chapter id="common"> |
423 | &sub-common; | 439 | &sub-common; |
@@ -473,6 +489,7 @@ and discussions on the V4L mailing list.</revremark> | |||
473 | &sub-cropcap; | 489 | &sub-cropcap; |
474 | &sub-dbg-g-chip-ident; | 490 | &sub-dbg-g-chip-ident; |
475 | &sub-dbg-g-register; | 491 | &sub-dbg-g-register; |
492 | &sub-decoder-cmd; | ||
476 | &sub-dqevent; | 493 | &sub-dqevent; |
477 | &sub-encoder-cmd; | 494 | &sub-encoder-cmd; |
478 | &sub-enumaudio; | 495 | &sub-enumaudio; |
diff --git a/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml b/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml new file mode 100644 index 000000000000..74b87f6e480a --- /dev/null +++ b/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml | |||
@@ -0,0 +1,256 @@ | |||
1 | <refentry id="vidioc-decoder-cmd"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>ioctl VIDIOC_DECODER_CMD, VIDIOC_TRY_DECODER_CMD</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | |||
7 | <refnamediv> | ||
8 | <refname>VIDIOC_DECODER_CMD</refname> | ||
9 | <refname>VIDIOC_TRY_DECODER_CMD</refname> | ||
10 | <refpurpose>Execute an decoder command</refpurpose> | ||
11 | </refnamediv> | ||
12 | |||
13 | <refsynopsisdiv> | ||
14 | <funcsynopsis> | ||
15 | <funcprototype> | ||
16 | <funcdef>int <function>ioctl</function></funcdef> | ||
17 | <paramdef>int <parameter>fd</parameter></paramdef> | ||
18 | <paramdef>int <parameter>request</parameter></paramdef> | ||
19 | <paramdef>struct v4l2_decoder_cmd *<parameter>argp</parameter></paramdef> | ||
20 | </funcprototype> | ||
21 | </funcsynopsis> | ||
22 | </refsynopsisdiv> | ||
23 | |||
24 | <refsect1> | ||
25 | <title>Arguments</title> | ||
26 | |||
27 | <variablelist> | ||
28 | <varlistentry> | ||
29 | <term><parameter>fd</parameter></term> | ||
30 | <listitem> | ||
31 | <para>&fd;</para> | ||
32 | </listitem> | ||
33 | </varlistentry> | ||
34 | <varlistentry> | ||
35 | <term><parameter>request</parameter></term> | ||
36 | <listitem> | ||
37 | <para>VIDIOC_DECODER_CMD, VIDIOC_TRY_DECODER_CMD</para> | ||
38 | </listitem> | ||
39 | </varlistentry> | ||
40 | <varlistentry> | ||
41 | <term><parameter>argp</parameter></term> | ||
42 | <listitem> | ||
43 | <para></para> | ||
44 | </listitem> | ||
45 | </varlistentry> | ||
46 | </variablelist> | ||
47 | </refsect1> | ||
48 | |||
49 | <refsect1> | ||
50 | <title>Description</title> | ||
51 | |||
52 | <note> | ||
53 | <title>Experimental</title> | ||
54 | |||
55 | <para>This is an <link linkend="experimental">experimental</link> | ||
56 | interface and may change in the future.</para> | ||
57 | </note> | ||
58 | |||
59 | <para>These ioctls control an audio/video (usually MPEG-) decoder. | ||
60 | <constant>VIDIOC_DECODER_CMD</constant> sends a command to the | ||
61 | decoder, <constant>VIDIOC_TRY_DECODER_CMD</constant> can be used to | ||
62 | try a command without actually executing it. To send a command applications | ||
63 | must initialize all fields of a &v4l2-decoder-cmd; and call | ||
64 | <constant>VIDIOC_DECODER_CMD</constant> or <constant>VIDIOC_TRY_DECODER_CMD</constant> | ||
65 | with a pointer to this structure.</para> | ||
66 | |||
67 | <para>The <structfield>cmd</structfield> field must contain the | ||
68 | command code. Some commands use the <structfield>flags</structfield> field for | ||
69 | additional information. | ||
70 | </para> | ||
71 | |||
72 | <para>A <function>write</function>() or &VIDIOC-STREAMON; call sends an implicit | ||
73 | START command to the decoder if it has not been started yet. | ||
74 | </para> | ||
75 | |||
76 | <para>A <function>close</function>() or &VIDIOC-STREAMOFF; call of a streaming | ||
77 | file descriptor sends an implicit immediate STOP command to the decoder, and all | ||
78 | buffered data is discarded.</para> | ||
79 | |||
80 | <para>These ioctls are optional, not all drivers may support | ||
81 | them. They were introduced in Linux 3.3.</para> | ||
82 | |||
83 | <table pgwide="1" frame="none" id="v4l2-decoder-cmd"> | ||
84 | <title>struct <structname>v4l2_decoder_cmd</structname></title> | ||
85 | <tgroup cols="5"> | ||
86 | &cs-str; | ||
87 | <tbody valign="top"> | ||
88 | <row> | ||
89 | <entry>__u32</entry> | ||
90 | <entry><structfield>cmd</structfield></entry> | ||
91 | <entry></entry> | ||
92 | <entry></entry> | ||
93 | <entry>The decoder command, see <xref linkend="decoder-cmds" />.</entry> | ||
94 | </row> | ||
95 | <row> | ||
96 | <entry>__u32</entry> | ||
97 | <entry><structfield>flags</structfield></entry> | ||
98 | <entry></entry> | ||
99 | <entry></entry> | ||
100 | <entry>Flags to go with the command. If no flags are defined for | ||
101 | this command, drivers and applications must set this field to zero.</entry> | ||
102 | </row> | ||
103 | <row> | ||
104 | <entry>union</entry> | ||
105 | <entry>(anonymous)</entry> | ||
106 | <entry></entry> | ||
107 | <entry></entry> | ||
108 | <entry></entry> | ||
109 | </row> | ||
110 | <row> | ||
111 | <entry></entry> | ||
112 | <entry>struct</entry> | ||
113 | <entry><structfield>start</structfield></entry> | ||
114 | <entry></entry> | ||
115 | <entry>Structure containing additional data for the | ||
116 | <constant>V4L2_DEC_CMD_START</constant> command.</entry> | ||
117 | </row> | ||
118 | <row> | ||
119 | <entry></entry> | ||
120 | <entry></entry> | ||
121 | <entry>__s32</entry> | ||
122 | <entry><structfield>speed</structfield></entry> | ||
123 | <entry>Playback speed and direction. The playback speed is defined as | ||
124 | <structfield>speed</structfield>/1000 of the normal speed. So 1000 is normal playback. | ||
125 | Negative numbers denote reverse playback, so -1000 does reverse playback at normal | ||
126 | speed. Speeds -1, 0 and 1 have special meanings: speed 0 is shorthand for 1000 | ||
127 | (normal playback). A speed of 1 steps just one frame forward, a speed of -1 steps | ||
128 | just one frame back. | ||
129 | </entry> | ||
130 | </row> | ||
131 | <row> | ||
132 | <entry></entry> | ||
133 | <entry></entry> | ||
134 | <entry>__u32</entry> | ||
135 | <entry><structfield>format</structfield></entry> | ||
136 | <entry>Format restrictions. This field is set by the driver, not the | ||
137 | application. Possible values are <constant>V4L2_DEC_START_FMT_NONE</constant> if | ||
138 | there are no format restrictions or <constant>V4L2_DEC_START_FMT_GOP</constant> | ||
139 | if the decoder operates on full GOPs (<wordasword>Group Of Pictures</wordasword>). | ||
140 | This is usually the case for reverse playback: the decoder needs full GOPs, which | ||
141 | it can then play in reverse order. So to implement reverse playback the application | ||
142 | must feed the decoder the last GOP in the video file, then the GOP before that, etc. etc. | ||
143 | </entry> | ||
144 | </row> | ||
145 | <row> | ||
146 | <entry></entry> | ||
147 | <entry>struct</entry> | ||
148 | <entry><structfield>stop</structfield></entry> | ||
149 | <entry></entry> | ||
150 | <entry>Structure containing additional data for the | ||
151 | <constant>V4L2_DEC_CMD_STOP</constant> command.</entry> | ||
152 | </row> | ||
153 | <row> | ||
154 | <entry></entry> | ||
155 | <entry></entry> | ||
156 | <entry>__u64</entry> | ||
157 | <entry><structfield>pts</structfield></entry> | ||
158 | <entry>Stop playback at this <structfield>pts</structfield> or immediately | ||
159 | if the playback is already past that timestamp. Leave to 0 if you want to stop after the | ||
160 | last frame was decoded. | ||
161 | </entry> | ||
162 | </row> | ||
163 | <row> | ||
164 | <entry></entry> | ||
165 | <entry>struct</entry> | ||
166 | <entry><structfield>raw</structfield></entry> | ||
167 | <entry></entry> | ||
168 | <entry></entry> | ||
169 | </row> | ||
170 | <row> | ||
171 | <entry></entry> | ||
172 | <entry></entry> | ||
173 | <entry>__u32</entry> | ||
174 | <entry><structfield>data</structfield>[16]</entry> | ||
175 | <entry>Reserved for future extensions. Drivers and | ||
176 | applications must set the array to zero.</entry> | ||
177 | </row> | ||
178 | </tbody> | ||
179 | </tgroup> | ||
180 | </table> | ||
181 | |||
182 | <table pgwide="1" frame="none" id="decoder-cmds"> | ||
183 | <title>Decoder Commands</title> | ||
184 | <tgroup cols="3"> | ||
185 | &cs-def; | ||
186 | <tbody valign="top"> | ||
187 | <row> | ||
188 | <entry><constant>V4L2_DEC_CMD_START</constant></entry> | ||
189 | <entry>0</entry> | ||
190 | <entry>Start the decoder. When the decoder is already | ||
191 | running or paused, this command will just change the playback speed. | ||
192 | That means that calling <constant>V4L2_DEC_CMD_START</constant> when | ||
193 | the decoder was paused will <emphasis>not</emphasis> resume the decoder. | ||
194 | You have to explicitly call <constant>V4L2_DEC_CMD_RESUME</constant> for that. | ||
195 | This command has one flag: | ||
196 | <constant>V4L2_DEC_CMD_START_MUTE_AUDIO</constant>. If set, then audio will | ||
197 | be muted when playing back at a non-standard speed. | ||
198 | </entry> | ||
199 | </row> | ||
200 | <row> | ||
201 | <entry><constant>V4L2_DEC_CMD_STOP</constant></entry> | ||
202 | <entry>1</entry> | ||
203 | <entry>Stop the decoder. When the decoder is already stopped, | ||
204 | this command does nothing. This command has two flags: | ||
205 | if <constant>V4L2_DEC_CMD_STOP_TO_BLACK</constant> is set, then the decoder will | ||
206 | set the picture to black after it stopped decoding. Otherwise the last image will | ||
207 | repeat. If <constant>V4L2_DEC_CMD_STOP_IMMEDIATELY</constant> is set, then the decoder | ||
208 | stops immediately (ignoring the <structfield>pts</structfield> value), otherwise it | ||
209 | will keep decoding until timestamp >= pts or until the last of the pending data from | ||
210 | its internal buffers was decoded. | ||
211 | </entry> | ||
212 | </row> | ||
213 | <row> | ||
214 | <entry><constant>V4L2_DEC_CMD_PAUSE</constant></entry> | ||
215 | <entry>2</entry> | ||
216 | <entry>Pause the decoder. When the decoder has not been | ||
217 | started yet, the driver will return an &EPERM;. When the decoder is | ||
218 | already paused, this command does nothing. This command has one flag: | ||
219 | if <constant>V4L2_DEC_CMD_PAUSE_TO_BLACK</constant> is set, then set the | ||
220 | decoder output to black when paused. | ||
221 | </entry> | ||
222 | </row> | ||
223 | <row> | ||
224 | <entry><constant>V4L2_DEC_CMD_RESUME</constant></entry> | ||
225 | <entry>3</entry> | ||
226 | <entry>Resume decoding after a PAUSE command. When the | ||
227 | decoder has not been started yet, the driver will return an &EPERM;. | ||
228 | When the decoder is already running, this command does nothing. No | ||
229 | flags are defined for this command.</entry> | ||
230 | </row> | ||
231 | </tbody> | ||
232 | </tgroup> | ||
233 | </table> | ||
234 | |||
235 | </refsect1> | ||
236 | |||
237 | <refsect1> | ||
238 | &return-value; | ||
239 | |||
240 | <variablelist> | ||
241 | <varlistentry> | ||
242 | <term><errorcode>EINVAL</errorcode></term> | ||
243 | <listitem> | ||
244 | <para>The <structfield>cmd</structfield> field is invalid.</para> | ||
245 | </listitem> | ||
246 | </varlistentry> | ||
247 | <varlistentry> | ||
248 | <term><errorcode>EPERM</errorcode></term> | ||
249 | <listitem> | ||
250 | <para>The application sent a PAUSE or RESUME command when | ||
251 | the decoder was not running.</para> | ||
252 | </listitem> | ||
253 | </varlistentry> | ||
254 | </variablelist> | ||
255 | </refsect1> | ||
256 | </refentry> | ||
diff --git a/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml b/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml index af7f3f2a36dd..f431b3ba79bd 100644 --- a/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml +++ b/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml | |||
@@ -74,15 +74,16 @@ only used by the STOP command and contains one bit: If the | |||
74 | encoding will continue until the end of the current <wordasword>Group | 74 | encoding will continue until the end of the current <wordasword>Group |
75 | Of Pictures</wordasword>, otherwise it will stop immediately.</para> | 75 | Of Pictures</wordasword>, otherwise it will stop immediately.</para> |
76 | 76 | ||
77 | <para>A <function>read</function>() call sends a START command to | 77 | <para>A <function>read</function>() or &VIDIOC-STREAMON; call sends an implicit |
78 | the encoder if it has not been started yet. After a STOP command, | 78 | START command to the encoder if it has not been started yet. After a STOP command, |
79 | <function>read</function>() calls will read the remaining data | 79 | <function>read</function>() calls will read the remaining data |
80 | buffered by the driver. When the buffer is empty, | 80 | buffered by the driver. When the buffer is empty, |
81 | <function>read</function>() will return zero and the next | 81 | <function>read</function>() will return zero and the next |
82 | <function>read</function>() call will restart the encoder.</para> | 82 | <function>read</function>() call will restart the encoder.</para> |
83 | 83 | ||
84 | <para>A <function>close</function>() call sends an immediate STOP | 84 | <para>A <function>close</function>() or &VIDIOC-STREAMOFF; call of a streaming |
85 | to the encoder, and all buffered data is discarded.</para> | 85 | file descriptor sends an implicit immediate STOP to the encoder, and all buffered |
86 | data is discarded.</para> | ||
86 | 87 | ||
87 | <para>These ioctls are optional, not all drivers may support | 88 | <para>These ioctls are optional, not all drivers may support |
88 | them. They were introduced in Linux 2.6.21.</para> | 89 | them. They were introduced in Linux 2.6.21.</para> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml b/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml index 01ea24b84385..48748499c097 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml | |||
@@ -57,6 +57,11 @@ | |||
57 | <refsect1> | 57 | <refsect1> |
58 | <title>Description</title> | 58 | <title>Description</title> |
59 | 59 | ||
60 | <para>These ioctls are <emphasis role="bold">deprecated</emphasis>. | ||
61 | New drivers and applications should use <link linkend="jpeg-controls"> | ||
62 | JPEG class controls</link> for image quality and JPEG markers control. | ||
63 | </para> | ||
64 | |||
60 | <para>[to do]</para> | 65 | <para>[to do]</para> |
61 | 66 | ||
62 | <para>Ronald Bultje elaborates:</para> | 67 | <para>Ronald Bultje elaborates:</para> |
@@ -86,7 +91,10 @@ to add them.</para> | |||
86 | <row> | 91 | <row> |
87 | <entry>int</entry> | 92 | <entry>int</entry> |
88 | <entry><structfield>quality</structfield></entry> | 93 | <entry><structfield>quality</structfield></entry> |
89 | <entry></entry> | 94 | <entry>Deprecated. If <link linkend="jpeg-quality-control"><constant> |
95 | V4L2_CID_JPEG_IMAGE_QUALITY</constant></link> control is exposed by | ||
96 | a driver applications should use it instead and ignore this field. | ||
97 | </entry> | ||
90 | </row> | 98 | </row> |
91 | <row> | 99 | <row> |
92 | <entry>int</entry> | 100 | <entry>int</entry> |
@@ -116,7 +124,11 @@ to add them.</para> | |||
116 | <row> | 124 | <row> |
117 | <entry>__u32</entry> | 125 | <entry>__u32</entry> |
118 | <entry><structfield>jpeg_markers</structfield></entry> | 126 | <entry><structfield>jpeg_markers</structfield></entry> |
119 | <entry>See <xref linkend="jpeg-markers" />.</entry> | 127 | <entry>See <xref linkend="jpeg-markers"/>. Deprecated. |
128 | If <link linkend="jpeg-active-marker-control"><constant> | ||
129 | V4L2_CID_JPEG_ACTIVE_MARKER</constant></link> control | ||
130 | is exposed by a driver applications should use it instead | ||
131 | and ignore this field.</entry> | ||
120 | </row> | 132 | </row> |
121 | </tbody> | 133 | </tbody> |
122 | </tgroup> | 134 | </tgroup> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-selection.xml b/Documentation/DocBook/media/v4l/vidioc-g-selection.xml index a9d36e0c090e..bb04eff75f45 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-selection.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-selection.xml | |||
@@ -58,43 +58,43 @@ | |||
58 | 58 | ||
59 | <para>The ioctls are used to query and configure selection rectangles.</para> | 59 | <para>The ioctls are used to query and configure selection rectangles.</para> |
60 | 60 | ||
61 | <para> To query the cropping (composing) rectangle set <structfield> | 61 | <para> To query the cropping (composing) rectangle set &v4l2-selection; |
62 | &v4l2-selection;::type </structfield> to the respective buffer type. Do not | 62 | <structfield> type </structfield> field to the respective buffer type. |
63 | use multiplanar buffers. Use <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE | 63 | Do not use multiplanar buffers. Use <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE |
64 | </constant> instead of <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE | 64 | </constant> instead of <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE |
65 | </constant>. Use <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> instead of | 65 | </constant>. Use <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> instead of |
66 | <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE </constant>. The next step is | 66 | <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE </constant>. The next step is |
67 | setting <structfield> &v4l2-selection;::target </structfield> to value | 67 | setting the value of &v4l2-selection; <structfield>target</structfield> field |
68 | <constant> V4L2_SEL_TGT_CROP_ACTIVE </constant> (<constant> | 68 | to <constant> V4L2_SEL_TGT_CROP_ACTIVE </constant> (<constant> |
69 | V4L2_SEL_TGT_COMPOSE_ACTIVE </constant>). Please refer to table <xref | 69 | V4L2_SEL_TGT_COMPOSE_ACTIVE </constant>). Please refer to table <xref |
70 | linkend="v4l2-sel-target" /> or <xref linkend="selection-api" /> for additional | 70 | linkend="v4l2-sel-target" /> or <xref linkend="selection-api" /> for additional |
71 | targets. Fields <structfield> &v4l2-selection;::flags </structfield> and | 71 | targets. The <structfield>flags</structfield> and <structfield>reserved |
72 | <structfield> &v4l2-selection;::reserved </structfield> are ignored and they | 72 | </structfield> fields of &v4l2-selection; are ignored and they must be filled |
73 | must be filled with zeros. The driver fills the rest of the structure or | 73 | with zeros. The driver fills the rest of the structure or |
74 | returns &EINVAL; if incorrect buffer type or target was used. If cropping | 74 | returns &EINVAL; if incorrect buffer type or target was used. If cropping |
75 | (composing) is not supported then the active rectangle is not mutable and it is | 75 | (composing) is not supported then the active rectangle is not mutable and it is |
76 | always equal to the bounds rectangle. Finally, structure <structfield> | 76 | always equal to the bounds rectangle. Finally, the &v4l2-rect; |
77 | &v4l2-selection;::r </structfield> is filled with the current cropping | 77 | <structfield>r</structfield> rectangle is filled with the current cropping |
78 | (composing) coordinates. The coordinates are expressed in driver-dependent | 78 | (composing) coordinates. The coordinates are expressed in driver-dependent |
79 | units. The only exception are rectangles for images in raw formats, whose | 79 | units. The only exception are rectangles for images in raw formats, whose |
80 | coordinates are always expressed in pixels. </para> | 80 | coordinates are always expressed in pixels. </para> |
81 | 81 | ||
82 | <para> To change the cropping (composing) rectangle set <structfield> | 82 | <para> To change the cropping (composing) rectangle set the &v4l2-selection; |
83 | &v4l2-selection;::type </structfield> to the respective buffer type. Do not | 83 | <structfield>type</structfield> field to the respective buffer type. Do not |
84 | use multiplanar buffers. Use <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE | 84 | use multiplanar buffers. Use <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE |
85 | </constant> instead of <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE | 85 | </constant> instead of <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE |
86 | </constant>. Use <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> instead of | 86 | </constant>. Use <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> instead of |
87 | <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE </constant>. The next step is | 87 | <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE </constant>. The next step is |
88 | setting <structfield> &v4l2-selection;::target </structfield> to value | 88 | setting the value of &v4l2-selection; <structfield>target</structfield> to |
89 | <constant> V4L2_SEL_TGT_CROP_ACTIVE </constant> (<constant> | 89 | <constant>V4L2_SEL_TGT_CROP_ACTIVE</constant> (<constant> |
90 | V4L2_SEL_TGT_COMPOSE_ACTIVE </constant>). Please refer to table <xref | 90 | V4L2_SEL_TGT_COMPOSE_ACTIVE </constant>). Please refer to table <xref |
91 | linkend="v4l2-sel-target" /> or <xref linkend="selection-api" /> for additional | 91 | linkend="v4l2-sel-target" /> or <xref linkend="selection-api" /> for additional |
92 | targets. Set desired active area into the field <structfield> | 92 | targets. The &v4l2-rect; <structfield>r</structfield> rectangle need to be |
93 | &v4l2-selection;::r </structfield>. Field <structfield> | 93 | set to the desired active area. Field &v4l2-selection; <structfield> reserved |
94 | &v4l2-selection;::reserved </structfield> is ignored and must be filled with | 94 | </structfield> is ignored and must be filled with zeros. The driver may adjust |
95 | zeros. The driver may adjust the rectangle coordinates. An application may | 95 | coordinates of the requested rectangle. An application may |
96 | introduce constraints to control rounding behaviour. Set the field | 96 | introduce constraints to control rounding behaviour. The &v4l2-selection; |
97 | <structfield> &v4l2-selection;::flags </structfield> to one of values: | 97 | <structfield>flags</structfield> field must be set to one of the following: |
98 | 98 | ||
99 | <itemizedlist> | 99 | <itemizedlist> |
100 | <listitem> | 100 | <listitem> |
@@ -129,7 +129,7 @@ and vertical offset and sizes are chosen according to following priority: | |||
129 | 129 | ||
130 | <orderedlist> | 130 | <orderedlist> |
131 | <listitem> | 131 | <listitem> |
132 | <para>Satisfy constraints from <structfield>&v4l2-selection;::flags</structfield>.</para> | 132 | <para>Satisfy constraints from &v4l2-selection; <structfield>flags</structfield>.</para> |
133 | </listitem> | 133 | </listitem> |
134 | <listitem> | 134 | <listitem> |
135 | <para>Adjust width, height, left, and top to hardware limits and alignments.</para> | 135 | <para>Adjust width, height, left, and top to hardware limits and alignments.</para> |
@@ -145,7 +145,7 @@ and vertical offset and sizes are chosen according to following priority: | |||
145 | </listitem> | 145 | </listitem> |
146 | </orderedlist> | 146 | </orderedlist> |
147 | 147 | ||
148 | On success the field <structfield> &v4l2-selection;::r </structfield> contains | 148 | On success the &v4l2-rect; <structfield>r</structfield> field contains |
149 | the adjusted rectangle. When the parameters are unsuitable the application may | 149 | the adjusted rectangle. When the parameters are unsuitable the application may |
150 | modify the cropping (composing) or image parameters and repeat the cycle until | 150 | modify the cropping (composing) or image parameters and repeat the cycle until |
151 | satisfactory parameters have been negotiated. If constraints flags have to be | 151 | satisfactory parameters have been negotiated. If constraints flags have to be |
@@ -162,38 +162,38 @@ exist no rectangle </emphasis> that satisfies the constraints.</para> | |||
162 | <tbody valign="top"> | 162 | <tbody valign="top"> |
163 | <row> | 163 | <row> |
164 | <entry><constant>V4L2_SEL_TGT_CROP_ACTIVE</constant></entry> | 164 | <entry><constant>V4L2_SEL_TGT_CROP_ACTIVE</constant></entry> |
165 | <entry>0</entry> | 165 | <entry>0x0000</entry> |
166 | <entry>area that is currently cropped by hardware</entry> | 166 | <entry>The area that is currently cropped by hardware.</entry> |
167 | </row> | 167 | </row> |
168 | <row> | 168 | <row> |
169 | <entry><constant>V4L2_SEL_TGT_CROP_DEFAULT</constant></entry> | 169 | <entry><constant>V4L2_SEL_TGT_CROP_DEFAULT</constant></entry> |
170 | <entry>1</entry> | 170 | <entry>0x0001</entry> |
171 | <entry>suggested cropping rectangle that covers the "whole picture"</entry> | 171 | <entry>Suggested cropping rectangle that covers the "whole picture".</entry> |
172 | </row> | 172 | </row> |
173 | <row> | 173 | <row> |
174 | <entry><constant>V4L2_SEL_TGT_CROP_BOUNDS</constant></entry> | 174 | <entry><constant>V4L2_SEL_TGT_CROP_BOUNDS</constant></entry> |
175 | <entry>2</entry> | 175 | <entry>0x0002</entry> |
176 | <entry>limits for the cropping rectangle</entry> | 176 | <entry>Limits for the cropping rectangle.</entry> |
177 | </row> | 177 | </row> |
178 | <row> | 178 | <row> |
179 | <entry><constant>V4L2_SEL_TGT_COMPOSE_ACTIVE</constant></entry> | 179 | <entry><constant>V4L2_SEL_TGT_COMPOSE_ACTIVE</constant></entry> |
180 | <entry>256</entry> | 180 | <entry>0x0100</entry> |
181 | <entry>area to which data are composed by hardware</entry> | 181 | <entry>The area to which data is composed by hardware.</entry> |
182 | </row> | 182 | </row> |
183 | <row> | 183 | <row> |
184 | <entry><constant>V4L2_SEL_TGT_COMPOSE_DEFAULT</constant></entry> | 184 | <entry><constant>V4L2_SEL_TGT_COMPOSE_DEFAULT</constant></entry> |
185 | <entry>257</entry> | 185 | <entry>0x0101</entry> |
186 | <entry>suggested composing rectangle that covers the "whole picture"</entry> | 186 | <entry>Suggested composing rectangle that covers the "whole picture".</entry> |
187 | </row> | 187 | </row> |
188 | <row> | 188 | <row> |
189 | <entry><constant>V4L2_SEL_TGT_COMPOSE_BOUNDS</constant></entry> | 189 | <entry><constant>V4L2_SEL_TGT_COMPOSE_BOUNDS</constant></entry> |
190 | <entry>258</entry> | 190 | <entry>0x0102</entry> |
191 | <entry>limits for the composing rectangle</entry> | 191 | <entry>Limits for the composing rectangle.</entry> |
192 | </row> | 192 | </row> |
193 | <row> | 193 | <row> |
194 | <entry><constant>V4L2_SEL_TGT_COMPOSE_PADDED</constant></entry> | 194 | <entry><constant>V4L2_SEL_TGT_COMPOSE_PADDED</constant></entry> |
195 | <entry>259</entry> | 195 | <entry>0x0103</entry> |
196 | <entry>the active area and all padding pixels that are inserted or modified by the hardware</entry> | 196 | <entry>The active area and all padding pixels that are inserted or modified by hardware.</entry> |
197 | </row> | 197 | </row> |
198 | </tbody> | 198 | </tbody> |
199 | </tgroup> | 199 | </tgroup> |
@@ -209,12 +209,14 @@ exist no rectangle </emphasis> that satisfies the constraints.</para> | |||
209 | <row> | 209 | <row> |
210 | <entry><constant>V4L2_SEL_FLAG_GE</constant></entry> | 210 | <entry><constant>V4L2_SEL_FLAG_GE</constant></entry> |
211 | <entry>0x00000001</entry> | 211 | <entry>0x00000001</entry> |
212 | <entry>indicate that adjusted rectangle must contain a rectangle from <structfield>&v4l2-selection;::r</structfield></entry> | 212 | <entry>Indicates that the adjusted rectangle must contain the original |
213 | &v4l2-selection; <structfield>r</structfield> rectangle.</entry> | ||
213 | </row> | 214 | </row> |
214 | <row> | 215 | <row> |
215 | <entry><constant>V4L2_SEL_FLAG_LE</constant></entry> | 216 | <entry><constant>V4L2_SEL_FLAG_LE</constant></entry> |
216 | <entry>0x00000002</entry> | 217 | <entry>0x00000002</entry> |
217 | <entry>indicate that adjusted rectangle must be inside a rectangle from <structfield>&v4l2-selection;::r</structfield></entry> | 218 | <entry>Indicates that the adjusted rectangle must be inside the original |
219 | &v4l2-rect; <structfield>r</structfield> rectangle.</entry> | ||
218 | </row> | 220 | </row> |
219 | </tbody> | 221 | </tbody> |
220 | </tgroup> | 222 | </tgroup> |
@@ -245,27 +247,29 @@ exist no rectangle </emphasis> that satisfies the constraints.</para> | |||
245 | <row> | 247 | <row> |
246 | <entry>__u32</entry> | 248 | <entry>__u32</entry> |
247 | <entry><structfield>type</structfield></entry> | 249 | <entry><structfield>type</structfield></entry> |
248 | <entry>Type of the buffer (from &v4l2-buf-type;)</entry> | 250 | <entry>Type of the buffer (from &v4l2-buf-type;).</entry> |
249 | </row> | 251 | </row> |
250 | <row> | 252 | <row> |
251 | <entry>__u32</entry> | 253 | <entry>__u32</entry> |
252 | <entry><structfield>target</structfield></entry> | 254 | <entry><structfield>target</structfield></entry> |
253 | <entry>used to select between <link linkend="v4l2-sel-target"> cropping and composing rectangles </link></entry> | 255 | <entry>Used to select between <link linkend="v4l2-sel-target"> cropping |
256 | and composing rectangles</link>.</entry> | ||
254 | </row> | 257 | </row> |
255 | <row> | 258 | <row> |
256 | <entry>__u32</entry> | 259 | <entry>__u32</entry> |
257 | <entry><structfield>flags</structfield></entry> | 260 | <entry><structfield>flags</structfield></entry> |
258 | <entry>control over coordinates adjustments, refer to <link linkend="v4l2-sel-flags">selection flags</link></entry> | 261 | <entry>Flags controlling the selection rectangle adjustments, refer to |
262 | <link linkend="v4l2-sel-flags">selection flags</link>.</entry> | ||
259 | </row> | 263 | </row> |
260 | <row> | 264 | <row> |
261 | <entry>&v4l2-rect;</entry> | 265 | <entry>&v4l2-rect;</entry> |
262 | <entry><structfield>r</structfield></entry> | 266 | <entry><structfield>r</structfield></entry> |
263 | <entry>selection rectangle</entry> | 267 | <entry>The selection rectangle.</entry> |
264 | </row> | 268 | </row> |
265 | <row> | 269 | <row> |
266 | <entry>__u32</entry> | 270 | <entry>__u32</entry> |
267 | <entry><structfield>reserved[9]</structfield></entry> | 271 | <entry><structfield>reserved[9]</structfield></entry> |
268 | <entry>Reserved fields for future use</entry> | 272 | <entry>Reserved fields for future use.</entry> |
269 | </row> | 273 | </row> |
270 | </tbody> | 274 | </tbody> |
271 | </tgroup> | 275 | </tgroup> |
@@ -278,24 +282,24 @@ exist no rectangle </emphasis> that satisfies the constraints.</para> | |||
278 | <varlistentry> | 282 | <varlistentry> |
279 | <term><errorcode>EINVAL</errorcode></term> | 283 | <term><errorcode>EINVAL</errorcode></term> |
280 | <listitem> | 284 | <listitem> |
281 | <para>The buffer <structfield> &v4l2-selection;::type </structfield> | 285 | <para>Given buffer type <structfield>type</structfield> or |
282 | or <structfield> &v4l2-selection;::target </structfield> is not supported, or | 286 | the selection target <structfield>target</structfield> is not supported, |
283 | the <structfield> &v4l2-selection;::flags </structfield> are invalid.</para> | 287 | or the <structfield>flags</structfield> argument is not valid.</para> |
284 | </listitem> | 288 | </listitem> |
285 | </varlistentry> | 289 | </varlistentry> |
286 | <varlistentry> | 290 | <varlistentry> |
287 | <term><errorcode>ERANGE</errorcode></term> | 291 | <term><errorcode>ERANGE</errorcode></term> |
288 | <listitem> | 292 | <listitem> |
289 | <para>it is not possible to adjust a rectangle <structfield> | 293 | <para>It is not possible to adjust &v4l2-rect; <structfield> |
290 | &v4l2-selection;::r </structfield> that satisfies all contraints from | 294 | r</structfield> rectangle to satisfy all contraints given in the |
291 | <structfield> &v4l2-selection;::flags </structfield>.</para> | 295 | <structfield>flags</structfield> argument.</para> |
292 | </listitem> | 296 | </listitem> |
293 | </varlistentry> | 297 | </varlistentry> |
294 | <varlistentry> | 298 | <varlistentry> |
295 | <term><errorcode>EBUSY</errorcode></term> | 299 | <term><errorcode>EBUSY</errorcode></term> |
296 | <listitem> | 300 | <listitem> |
297 | <para>it is not possible to apply change of selection rectangle at the moment. | 301 | <para>It is not possible to apply change of the selection rectangle |
298 | Usually because streaming is in progress.</para> | 302 | at the moment. Usually because streaming is in progress.</para> |
299 | </listitem> | 303 | </listitem> |
300 | </varlistentry> | 304 | </varlistentry> |
301 | </variablelist> | 305 | </variablelist> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-querycap.xml b/Documentation/DocBook/media/v4l/vidioc-querycap.xml index e3664d6f2de4..4643505cd4ca 100644 --- a/Documentation/DocBook/media/v4l/vidioc-querycap.xml +++ b/Documentation/DocBook/media/v4l/vidioc-querycap.xml | |||
@@ -124,12 +124,35 @@ printf ("Version: %u.%u.%u\n", | |||
124 | <row> | 124 | <row> |
125 | <entry>__u32</entry> | 125 | <entry>__u32</entry> |
126 | <entry><structfield>capabilities</structfield></entry> | 126 | <entry><structfield>capabilities</structfield></entry> |
127 | <entry>Device capabilities, see <xref | 127 | <entry>Available capabilities of the physical device as a whole, see <xref |
128 | linkend="device-capabilities" />.</entry> | 128 | linkend="device-capabilities" />. The same physical device can export |
129 | multiple devices in /dev (e.g. /dev/videoX, /dev/vbiY and /dev/radioZ). | ||
130 | The <structfield>capabilities</structfield> field should contain a union | ||
131 | of all capabilities available around the several V4L2 devices exported | ||
132 | to userspace. | ||
133 | For all those devices the <structfield>capabilities</structfield> field | ||
134 | returns the same set of capabilities. This allows applications to open | ||
135 | just one of the devices (typically the video device) and discover whether | ||
136 | video, vbi and/or radio are also supported. | ||
137 | </entry> | ||
129 | </row> | 138 | </row> |
130 | <row> | 139 | <row> |
131 | <entry>__u32</entry> | 140 | <entry>__u32</entry> |
132 | <entry><structfield>reserved</structfield>[4]</entry> | 141 | <entry><structfield>device_caps</structfield></entry> |
142 | <entry>Device capabilities of the opened device, see <xref | ||
143 | linkend="device-capabilities" />. Should contain the available capabilities | ||
144 | of that specific device node. So, for example, <structfield>device_caps</structfield> | ||
145 | of a radio device will only contain radio related capabilities and | ||
146 | no video or vbi capabilities. This field is only set if the <structfield>capabilities</structfield> | ||
147 | field contains the <constant>V4L2_CAP_DEVICE_CAPS</constant> capability. | ||
148 | Only the <structfield>capabilities</structfield> field can have the | ||
149 | <constant>V4L2_CAP_DEVICE_CAPS</constant> capability, <structfield>device_caps</structfield> | ||
150 | will never set <constant>V4L2_CAP_DEVICE_CAPS</constant>. | ||
151 | </entry> | ||
152 | </row> | ||
153 | <row> | ||
154 | <entry>__u32</entry> | ||
155 | <entry><structfield>reserved</structfield>[3]</entry> | ||
133 | <entry>Reserved for future extensions. Drivers must set | 156 | <entry>Reserved for future extensions. Drivers must set |
134 | this array to zero.</entry> | 157 | this array to zero.</entry> |
135 | </row> | 158 | </row> |
@@ -276,6 +299,13 @@ linkend="async">asynchronous</link> I/O methods.</entry> | |||
276 | <entry>The device supports the <link | 299 | <entry>The device supports the <link |
277 | linkend="mmap">streaming</link> I/O method.</entry> | 300 | linkend="mmap">streaming</link> I/O method.</entry> |
278 | </row> | 301 | </row> |
302 | <row> | ||
303 | <entry><constant>V4L2_CAP_DEVICE_CAPS</constant></entry> | ||
304 | <entry>0x80000000</entry> | ||
305 | <entry>The driver fills the <structfield>device_caps</structfield> | ||
306 | field. This capability can only appear in the <structfield>capabilities</structfield> | ||
307 | field and never in the <structfield>device_caps</structfield> field.</entry> | ||
308 | </row> | ||
279 | </tbody> | 309 | </tbody> |
280 | </tgroup> | 310 | </tgroup> |
281 | </table> | 311 | </table> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml b/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml index e013da845b11..18b1a8266f7c 100644 --- a/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml +++ b/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml | |||
@@ -96,8 +96,8 @@ field and the &v4l2-tuner; <structfield>index</structfield> field.</entry> | |||
96 | <row> | 96 | <row> |
97 | <entry>__u32</entry> | 97 | <entry>__u32</entry> |
98 | <entry><structfield>reserved</structfield>[7]</entry> | 98 | <entry><structfield>reserved</structfield>[7]</entry> |
99 | <entry>Reserved for future extensions. Drivers and | 99 | <entry>Reserved for future extensions. Applications |
100 | applications must set the array to zero.</entry> | 100 | must set the array to zero.</entry> |
101 | </row> | 101 | </row> |
102 | </tbody> | 102 | </tbody> |
103 | </tgroup> | 103 | </tgroup> |
@@ -112,7 +112,7 @@ field and the &v4l2-tuner; <structfield>index</structfield> field.</entry> | |||
112 | <term><errorcode>EINVAL</errorcode></term> | 112 | <term><errorcode>EINVAL</errorcode></term> |
113 | <listitem> | 113 | <listitem> |
114 | <para>The <structfield>tuner</structfield> index is out of | 114 | <para>The <structfield>tuner</structfield> index is out of |
115 | bounds or the value in the <structfield>type</structfield> field is | 115 | bounds, the wrap_around value is not supported or the value in the <structfield>type</structfield> field is |
116 | wrong.</para> | 116 | wrong.</para> |
117 | </listitem> | 117 | </listitem> |
118 | </varlistentry> | 118 | </varlistentry> |
diff --git a/Documentation/EDID/1024x768.S b/Documentation/EDID/1024x768.S new file mode 100644 index 000000000000..4b486fe31b32 --- /dev/null +++ b/Documentation/EDID/1024x768.S | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | 1024x768.S: EDID data set for standard 1024x768 60 Hz monitor | ||
3 | |||
4 | Copyright (C) 2011 Carsten Emde <C.Emde@osadl.org> | ||
5 | |||
6 | This program is free software; you can redistribute it and/or | ||
7 | modify it under the terms of the GNU General Public License | ||
8 | as published by the Free Software Foundation; either version 2 | ||
9 | of the License, or (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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | ||
19 | */ | ||
20 | |||
21 | /* EDID */ | ||
22 | #define VERSION 1 | ||
23 | #define REVISION 3 | ||
24 | |||
25 | /* Display */ | ||
26 | #define CLOCK 65000 /* kHz */ | ||
27 | #define XPIX 1024 | ||
28 | #define YPIX 768 | ||
29 | #define XY_RATIO XY_RATIO_4_3 | ||
30 | #define XBLANK 320 | ||
31 | #define YBLANK 38 | ||
32 | #define XOFFSET 8 | ||
33 | #define XPULSE 144 | ||
34 | #define YOFFSET (63+3) | ||
35 | #define YPULSE (63+6) | ||
36 | #define DPI 72 | ||
37 | #define VFREQ 60 /* Hz */ | ||
38 | #define TIMING_NAME "Linux XGA" | ||
39 | #define ESTABLISHED_TIMINGS_BITS 0x08 /* Bit 3 -> 1024x768 @60 Hz */ | ||
40 | #define HSYNC_POL 0 | ||
41 | #define VSYNC_POL 0 | ||
42 | #define CRC 0x55 | ||
43 | |||
44 | #include "edid.S" | ||
diff --git a/Documentation/EDID/1280x1024.S b/Documentation/EDID/1280x1024.S new file mode 100644 index 000000000000..a2799fe33a4d --- /dev/null +++ b/Documentation/EDID/1280x1024.S | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | 1280x1024.S: EDID data set for standard 1280x1024 60 Hz monitor | ||
3 | |||
4 | Copyright (C) 2011 Carsten Emde <C.Emde@osadl.org> | ||
5 | |||
6 | This program is free software; you can redistribute it and/or | ||
7 | modify it under the terms of the GNU General Public License | ||
8 | as published by the Free Software Foundation; either version 2 | ||
9 | of the License, or (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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | ||
19 | */ | ||
20 | |||
21 | /* EDID */ | ||
22 | #define VERSION 1 | ||
23 | #define REVISION 3 | ||
24 | |||
25 | /* Display */ | ||
26 | #define CLOCK 108000 /* kHz */ | ||
27 | #define XPIX 1280 | ||
28 | #define YPIX 1024 | ||
29 | #define XY_RATIO XY_RATIO_5_4 | ||
30 | #define XBLANK 408 | ||
31 | #define YBLANK 42 | ||
32 | #define XOFFSET 48 | ||
33 | #define XPULSE 112 | ||
34 | #define YOFFSET (63+1) | ||
35 | #define YPULSE (63+3) | ||
36 | #define DPI 72 | ||
37 | #define VFREQ 60 /* Hz */ | ||
38 | #define TIMING_NAME "Linux SXGA" | ||
39 | #define ESTABLISHED_TIMINGS_BITS 0x00 /* none */ | ||
40 | #define HSYNC_POL 1 | ||
41 | #define VSYNC_POL 1 | ||
42 | #define CRC 0xa0 | ||
43 | |||
44 | #include "edid.S" | ||
diff --git a/Documentation/EDID/1680x1050.S b/Documentation/EDID/1680x1050.S new file mode 100644 index 000000000000..96f67cafcf2e --- /dev/null +++ b/Documentation/EDID/1680x1050.S | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | 1680x1050.S: EDID data set for standard 1680x1050 60 Hz monitor | ||
3 | |||
4 | Copyright (C) 2012 Carsten Emde <C.Emde@osadl.org> | ||
5 | |||
6 | This program is free software; you can redistribute it and/or | ||
7 | modify it under the terms of the GNU General Public License | ||
8 | as published by the Free Software Foundation; either version 2 | ||
9 | of the License, or (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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | ||
19 | */ | ||
20 | |||
21 | /* EDID */ | ||
22 | #define VERSION 1 | ||
23 | #define REVISION 3 | ||
24 | |||
25 | /* Display */ | ||
26 | #define CLOCK 146250 /* kHz */ | ||
27 | #define XPIX 1680 | ||
28 | #define YPIX 1050 | ||
29 | #define XY_RATIO XY_RATIO_16_10 | ||
30 | #define XBLANK 560 | ||
31 | #define YBLANK 39 | ||
32 | #define XOFFSET 104 | ||
33 | #define XPULSE 176 | ||
34 | #define YOFFSET (63+3) | ||
35 | #define YPULSE (63+6) | ||
36 | #define DPI 96 | ||
37 | #define VFREQ 60 /* Hz */ | ||
38 | #define TIMING_NAME "Linux WSXGA" | ||
39 | #define ESTABLISHED_TIMINGS_BITS 0x00 /* none */ | ||
40 | #define HSYNC_POL 1 | ||
41 | #define VSYNC_POL 1 | ||
42 | #define CRC 0x26 | ||
43 | |||
44 | #include "edid.S" | ||
diff --git a/Documentation/EDID/1920x1080.S b/Documentation/EDID/1920x1080.S new file mode 100644 index 000000000000..36ed5d571d0a --- /dev/null +++ b/Documentation/EDID/1920x1080.S | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | 1920x1080.S: EDID data set for standard 1920x1080 60 Hz monitor | ||
3 | |||
4 | Copyright (C) 2012 Carsten Emde <C.Emde@osadl.org> | ||
5 | |||
6 | This program is free software; you can redistribute it and/or | ||
7 | modify it under the terms of the GNU General Public License | ||
8 | as published by the Free Software Foundation; either version 2 | ||
9 | of the License, or (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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | ||
19 | */ | ||
20 | |||
21 | /* EDID */ | ||
22 | #define VERSION 1 | ||
23 | #define REVISION 3 | ||
24 | |||
25 | /* Display */ | ||
26 | #define CLOCK 148500 /* kHz */ | ||
27 | #define XPIX 1920 | ||
28 | #define YPIX 1080 | ||
29 | #define XY_RATIO XY_RATIO_16_9 | ||
30 | #define XBLANK 280 | ||
31 | #define YBLANK 45 | ||
32 | #define XOFFSET 88 | ||
33 | #define XPULSE 44 | ||
34 | #define YOFFSET (63+4) | ||
35 | #define YPULSE (63+5) | ||
36 | #define DPI 96 | ||
37 | #define VFREQ 60 /* Hz */ | ||
38 | #define TIMING_NAME "Linux FHD" | ||
39 | #define ESTABLISHED_TIMINGS_BITS 0x00 /* none */ | ||
40 | #define HSYNC_POL 1 | ||
41 | #define VSYNC_POL 1 | ||
42 | #define CRC 0x05 | ||
43 | |||
44 | #include "edid.S" | ||
diff --git a/Documentation/EDID/HOWTO.txt b/Documentation/EDID/HOWTO.txt new file mode 100644 index 000000000000..75a9f2a0c43d --- /dev/null +++ b/Documentation/EDID/HOWTO.txt | |||
@@ -0,0 +1,39 @@ | |||
1 | In the good old days when graphics parameters were configured explicitly | ||
2 | in a file called xorg.conf, even broken hardware could be managed. | ||
3 | |||
4 | Today, with the advent of Kernel Mode Setting, a graphics board is | ||
5 | either correctly working because all components follow the standards - | ||
6 | or the computer is unusable, because the screen remains dark after | ||
7 | booting or it displays the wrong area. Cases when this happens are: | ||
8 | - The graphics board does not recognize the monitor. | ||
9 | - The graphics board is unable to detect any EDID data. | ||
10 | - The graphics board incorrectly forwards EDID data to the driver. | ||
11 | - The monitor sends no or bogus EDID data. | ||
12 | - A KVM sends its own EDID data instead of querying the connected monitor. | ||
13 | Adding the kernel parameter "nomodeset" helps in most cases, but causes | ||
14 | restrictions later on. | ||
15 | |||
16 | As a remedy for such situations, the kernel configuration item | ||
17 | CONFIG_DRM_LOAD_EDID_FIRMWARE was introduced. It allows to provide an | ||
18 | individually prepared or corrected EDID data set in the /lib/firmware | ||
19 | directory from where it is loaded via the firmware interface. The code | ||
20 | (see drivers/gpu/drm/drm_edid_load.c) contains built-in data sets for | ||
21 | commonly used screen resolutions (1024x768, 1280x1024, 1680x1050, | ||
22 | 1920x1080) as binary blobs, but the kernel source tree does not contain | ||
23 | code to create these data. In order to elucidate the origin of the | ||
24 | built-in binary EDID blobs and to facilitate the creation of individual | ||
25 | data for a specific misbehaving monitor, commented sources and a | ||
26 | Makefile environment are given here. | ||
27 | |||
28 | To create binary EDID and C source code files from the existing data | ||
29 | material, simply type "make". | ||
30 | |||
31 | If you want to create your own EDID file, copy the file 1024x768.S and | ||
32 | replace the settings with your own data. The CRC value in the last line | ||
33 | #define CRC 0x55 | ||
34 | is a bit tricky. After a first version of the binary data set is | ||
35 | created, it must be be checked with the "edid-decode" utility which will | ||
36 | most probably complain about a wrong CRC. Fortunately, the utility also | ||
37 | displays the correct CRC which must then be inserted into the source | ||
38 | file. After the make procedure is repeated, the EDID data set is ready | ||
39 | to be used. | ||
diff --git a/Documentation/EDID/Makefile b/Documentation/EDID/Makefile new file mode 100644 index 000000000000..17763ca3f12b --- /dev/null +++ b/Documentation/EDID/Makefile | |||
@@ -0,0 +1,26 @@ | |||
1 | |||
2 | SOURCES := $(wildcard [0-9]*x[0-9]*.S) | ||
3 | |||
4 | BIN := $(patsubst %.S, %.bin, $(SOURCES)) | ||
5 | |||
6 | IHEX := $(patsubst %.S, %.bin.ihex, $(SOURCES)) | ||
7 | |||
8 | CODE := $(patsubst %.S, %.c, $(SOURCES)) | ||
9 | |||
10 | all: $(BIN) $(IHEX) $(CODE) | ||
11 | |||
12 | clean: | ||
13 | @rm -f *.o *.bin.ihex *.bin *.c | ||
14 | |||
15 | %.o: %.S | ||
16 | @cc -c $^ | ||
17 | |||
18 | %.bin: %.o | ||
19 | @objcopy -Obinary $^ $@ | ||
20 | |||
21 | %.bin.ihex: %.o | ||
22 | @objcopy -Oihex $^ $@ | ||
23 | @dos2unix $@ 2>/dev/null | ||
24 | |||
25 | %.c: %.bin | ||
26 | @echo "{" >$@; hexdump -f hex $^ >>$@; echo "};" >>$@ | ||
diff --git a/Documentation/EDID/edid.S b/Documentation/EDID/edid.S new file mode 100644 index 000000000000..ea97ae275fca --- /dev/null +++ b/Documentation/EDID/edid.S | |||
@@ -0,0 +1,261 @@ | |||
1 | /* | ||
2 | edid.S: EDID data template | ||
3 | |||
4 | Copyright (C) 2012 Carsten Emde <C.Emde@osadl.org> | ||
5 | |||
6 | This program is free software; you can redistribute it and/or | ||
7 | modify it under the terms of the GNU General Public License | ||
8 | as published by the Free Software Foundation; either version 2 | ||
9 | of the License, or (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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | ||
19 | */ | ||
20 | |||
21 | |||
22 | /* Manufacturer */ | ||
23 | #define MFG_LNX1 'L' | ||
24 | #define MFG_LNX2 'N' | ||
25 | #define MFG_LNX3 'X' | ||
26 | #define SERIAL 0 | ||
27 | #define YEAR 2012 | ||
28 | #define WEEK 5 | ||
29 | |||
30 | /* EDID 1.3 standard definitions */ | ||
31 | #define XY_RATIO_16_10 0b00 | ||
32 | #define XY_RATIO_4_3 0b01 | ||
33 | #define XY_RATIO_5_4 0b10 | ||
34 | #define XY_RATIO_16_9 0b11 | ||
35 | |||
36 | #define mfgname2id(v1,v2,v3) \ | ||
37 | ((((v1-'@')&0x1f)<<10)+(((v2-'@')&0x1f)<<5)+((v3-'@')&0x1f)) | ||
38 | #define swap16(v1) ((v1>>8)+((v1&0xff)<<8)) | ||
39 | #define msbs2(v1,v2) ((((v1>>8)&0x0f)<<4)+((v2>>8)&0x0f)) | ||
40 | #define msbs4(v1,v2,v3,v4) \ | ||
41 | (((v1&0x03)>>2)+((v2&0x03)>>4)+((v3&0x03)>>6)+((v4&0x03)>>8)) | ||
42 | #define pixdpi2mm(pix,dpi) ((pix*25)/dpi) | ||
43 | #define xsize pixdpi2mm(XPIX,DPI) | ||
44 | #define ysize pixdpi2mm(YPIX,DPI) | ||
45 | |||
46 | .data | ||
47 | |||
48 | /* Fixed header pattern */ | ||
49 | header: .byte 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00 | ||
50 | |||
51 | mfg_id: .word swap16(mfgname2id(MFG_LNX1, MFG_LNX2, MFG_LNX3)) | ||
52 | |||
53 | prod_code: .word 0 | ||
54 | |||
55 | /* Serial number. 32 bits, little endian. */ | ||
56 | serial_number: .long SERIAL | ||
57 | |||
58 | /* Week of manufacture */ | ||
59 | week: .byte WEEK | ||
60 | |||
61 | /* Year of manufacture, less 1990. (1990-2245) | ||
62 | If week=255, it is the model year instead */ | ||
63 | year: .byte YEAR-1990 | ||
64 | |||
65 | version: .byte VERSION /* EDID version, usually 1 (for 1.3) */ | ||
66 | revision: .byte REVISION /* EDID revision, usually 3 (for 1.3) */ | ||
67 | |||
68 | /* If Bit 7=1 Digital input. If set, the following bit definitions apply: | ||
69 | Bits 6-1 Reserved, must be 0 | ||
70 | Bit 0 Signal is compatible with VESA DFP 1.x TMDS CRGB, | ||
71 | 1 pixel per clock, up to 8 bits per color, MSB aligned, | ||
72 | If Bit 7=0 Analog input. If clear, the following bit definitions apply: | ||
73 | Bits 6-5 Video white and sync levels, relative to blank | ||
74 | 00=+0.7/-0.3 V; 01=+0.714/-0.286 V; | ||
75 | 10=+1.0/-0.4 V; 11=+0.7/0 V | ||
76 | Bit 4 Blank-to-black setup (pedestal) expected | ||
77 | Bit 3 Separate sync supported | ||
78 | Bit 2 Composite sync (on HSync) supported | ||
79 | Bit 1 Sync on green supported | ||
80 | Bit 0 VSync pulse must be serrated when somposite or | ||
81 | sync-on-green is used. */ | ||
82 | video_parms: .byte 0x6d | ||
83 | |||
84 | /* Maximum horizontal image size, in centimetres | ||
85 | (max 292 cm/115 in at 16:9 aspect ratio) */ | ||
86 | max_hor_size: .byte xsize/10 | ||
87 | |||
88 | /* Maximum vertical image size, in centimetres. | ||
89 | If either byte is 0, undefined (e.g. projector) */ | ||
90 | max_vert_size: .byte ysize/10 | ||
91 | |||
92 | /* Display gamma, minus 1, times 100 (range 1.00-3.5 */ | ||
93 | gamma: .byte 120 | ||
94 | |||
95 | /* Bit 7 DPMS standby supported | ||
96 | Bit 6 DPMS suspend supported | ||
97 | Bit 5 DPMS active-off supported | ||
98 | Bits 4-3 Display type: 00=monochrome; 01=RGB colour; | ||
99 | 10=non-RGB multicolour; 11=undefined | ||
100 | Bit 2 Standard sRGB colour space. Bytes 25-34 must contain | ||
101 | sRGB standard values. | ||
102 | Bit 1 Preferred timing mode specified in descriptor block 1. | ||
103 | Bit 0 GTF supported with default parameter values. */ | ||
104 | dsp_features: .byte 0xea | ||
105 | |||
106 | /* Chromaticity coordinates. */ | ||
107 | /* Red and green least-significant bits | ||
108 | Bits 7-6 Red x value least-significant 2 bits | ||
109 | Bits 5-4 Red y value least-significant 2 bits | ||
110 | Bits 3-2 Green x value lst-significant 2 bits | ||
111 | Bits 1-0 Green y value least-significant 2 bits */ | ||
112 | red_green_lsb: .byte 0x5e | ||
113 | |||
114 | /* Blue and white least-significant 2 bits */ | ||
115 | blue_white_lsb: .byte 0xc0 | ||
116 | |||
117 | /* Red x value most significant 8 bits. | ||
118 | 0-255 encodes 0-0.996 (255/256); 0-0.999 (1023/1024) with lsbits */ | ||
119 | red_x_msb: .byte 0xa4 | ||
120 | |||
121 | /* Red y value most significant 8 bits */ | ||
122 | red_y_msb: .byte 0x59 | ||
123 | |||
124 | /* Green x and y value most significant 8 bits */ | ||
125 | green_x_y_msb: .byte 0x4a,0x98 | ||
126 | |||
127 | /* Blue x and y value most significant 8 bits */ | ||
128 | blue_x_y_msb: .byte 0x25,0x20 | ||
129 | |||
130 | /* Default white point x and y value most significant 8 bits */ | ||
131 | white_x_y_msb: .byte 0x50,0x54 | ||
132 | |||
133 | /* Established timings */ | ||
134 | /* Bit 7 720x400 @ 70 Hz | ||
135 | Bit 6 720x400 @ 88 Hz | ||
136 | Bit 5 640x480 @ 60 Hz | ||
137 | Bit 4 640x480 @ 67 Hz | ||
138 | Bit 3 640x480 @ 72 Hz | ||
139 | Bit 2 640x480 @ 75 Hz | ||
140 | Bit 1 800x600 @ 56 Hz | ||
141 | Bit 0 800x600 @ 60 Hz */ | ||
142 | estbl_timing1: .byte 0x00 | ||
143 | |||
144 | /* Bit 7 800x600 @ 72 Hz | ||
145 | Bit 6 800x600 @ 75 Hz | ||
146 | Bit 5 832x624 @ 75 Hz | ||
147 | Bit 4 1024x768 @ 87 Hz, interlaced (1024x768) | ||
148 | Bit 3 1024x768 @ 60 Hz | ||
149 | Bit 2 1024x768 @ 72 Hz | ||
150 | Bit 1 1024x768 @ 75 Hz | ||
151 | Bit 0 1280x1024 @ 75 Hz */ | ||
152 | estbl_timing2: .byte ESTABLISHED_TIMINGS_BITS | ||
153 | |||
154 | /* Bit 7 1152x870 @ 75 Hz (Apple Macintosh II) | ||
155 | Bits 6-0 Other manufacturer-specific display mod */ | ||
156 | estbl_timing3: .byte 0x00 | ||
157 | |||
158 | /* Standard timing */ | ||
159 | /* X resolution, less 31, divided by 8 (256-2288 pixels) */ | ||
160 | std_xres: .byte (XPIX/8)-31 | ||
161 | /* Y resolution, X:Y pixel ratio | ||
162 | Bits 7-6 X:Y pixel ratio: 00=16:10; 01=4:3; 10=5:4; 11=16:9. | ||
163 | Bits 5-0 Vertical frequency, less 60 (60-123 Hz) */ | ||
164 | std_vres: .byte (XY_RATIO<<6)+VFREQ-60 | ||
165 | .fill 7,2,0x0101 /* Unused */ | ||
166 | |||
167 | descriptor1: | ||
168 | /* Pixel clock in 10 kHz units. (0.-655.35 MHz, little-endian) */ | ||
169 | clock: .word CLOCK/10 | ||
170 | |||
171 | /* Horizontal active pixels 8 lsbits (0-4095) */ | ||
172 | x_act_lsb: .byte XPIX&0xff | ||
173 | /* Horizontal blanking pixels 8 lsbits (0-4095) | ||
174 | End of active to start of next active. */ | ||
175 | x_blk_lsb: .byte XBLANK&0xff | ||
176 | /* Bits 7-4 Horizontal active pixels 4 msbits | ||
177 | Bits 3-0 Horizontal blanking pixels 4 msbits */ | ||
178 | x_msbs: .byte msbs2(XPIX,XBLANK) | ||
179 | |||
180 | /* Vertical active lines 8 lsbits (0-4095) */ | ||
181 | y_act_lsb: .byte YPIX&0xff | ||
182 | /* Vertical blanking lines 8 lsbits (0-4095) */ | ||
183 | y_blk_lsb: .byte YBLANK&0xff | ||
184 | /* Bits 7-4 Vertical active lines 4 msbits | ||
185 | Bits 3-0 Vertical blanking lines 4 msbits */ | ||
186 | y_msbs: .byte msbs2(YPIX,YBLANK) | ||
187 | |||
188 | /* Horizontal sync offset pixels 8 lsbits (0-1023) From blanking start */ | ||
189 | x_snc_off_lsb: .byte XOFFSET&0xff | ||
190 | /* Horizontal sync pulse width pixels 8 lsbits (0-1023) */ | ||
191 | x_snc_pls_lsb: .byte XPULSE&0xff | ||
192 | /* Bits 7-4 Vertical sync offset lines 4 lsbits -63) | ||
193 | Bits 3-0 Vertical sync pulse width lines 4 lsbits -63) */ | ||
194 | y_snc_lsb: .byte ((YOFFSET-63)<<4)+(YPULSE-63) | ||
195 | /* Bits 7-6 Horizontal sync offset pixels 2 msbits | ||
196 | Bits 5-4 Horizontal sync pulse width pixels 2 msbits | ||
197 | Bits 3-2 Vertical sync offset lines 2 msbits | ||
198 | Bits 1-0 Vertical sync pulse width lines 2 msbits */ | ||
199 | xy_snc_msbs: .byte msbs4(XOFFSET,XPULSE,YOFFSET,YPULSE) | ||
200 | |||
201 | /* Horizontal display size, mm, 8 lsbits (0-4095 mm, 161 in) */ | ||
202 | x_dsp_size: .byte xsize&0xff | ||
203 | |||
204 | /* Vertical display size, mm, 8 lsbits (0-4095 mm, 161 in) */ | ||
205 | y_dsp_size: .byte ysize&0xff | ||
206 | |||
207 | /* Bits 7-4 Horizontal display size, mm, 4 msbits | ||
208 | Bits 3-0 Vertical display size, mm, 4 msbits */ | ||
209 | dsp_size_mbsb: .byte msbs2(xsize,ysize) | ||
210 | |||
211 | /* Horizontal border pixels (each side; total is twice this) */ | ||
212 | x_border: .byte 0 | ||
213 | /* Vertical border lines (each side; total is twice this) */ | ||
214 | y_border: .byte 0 | ||
215 | |||
216 | /* Bit 7 Interlaced | ||
217 | Bits 6-5 Stereo mode: 00=No stereo; other values depend on bit 0: | ||
218 | Bit 0=0: 01=Field sequential, sync=1 during right; 10=similar, | ||
219 | sync=1 during left; 11=4-way interleaved stereo | ||
220 | Bit 0=1 2-way interleaved stereo: 01=Right image on even lines; | ||
221 | 10=Left image on even lines; 11=side-by-side | ||
222 | Bits 4-3 Sync type: 00=Analog composite; 01=Bipolar analog composite; | ||
223 | 10=Digital composite (on HSync); 11=Digital separate | ||
224 | Bit 2 If digital separate: Vertical sync polarity (1=positive) | ||
225 | Other types: VSync serrated (HSync during VSync) | ||
226 | Bit 1 If analog sync: Sync on all 3 RGB lines (else green only) | ||
227 | Digital: HSync polarity (1=positive) | ||
228 | Bit 0 2-way line-interleaved stereo, if bits 4-3 are not 00. */ | ||
229 | features: .byte 0x18+(VSYNC_POL<<2)+(HSYNC_POL<<1) | ||
230 | |||
231 | descriptor2: .byte 0,0 /* Not a detailed timing descriptor */ | ||
232 | .byte 0 /* Must be zero */ | ||
233 | .byte 0xff /* Descriptor is monitor serial number (text) */ | ||
234 | .byte 0 /* Must be zero */ | ||
235 | start1: .ascii "Linux #0" | ||
236 | end1: .byte 0x0a /* End marker */ | ||
237 | .fill 12-(end1-start1), 1, 0x20 /* Padded spaces */ | ||
238 | descriptor3: .byte 0,0 /* Not a detailed timing descriptor */ | ||
239 | .byte 0 /* Must be zero */ | ||
240 | .byte 0xfd /* Descriptor is monitor range limits */ | ||
241 | .byte 0 /* Must be zero */ | ||
242 | start2: .byte VFREQ-1 /* Minimum vertical field rate (1-255 Hz) */ | ||
243 | .byte VFREQ+1 /* Maximum vertical field rate (1-255 Hz) */ | ||
244 | .byte (CLOCK/(XPIX+XBLANK))-1 /* Minimum horizontal line rate | ||
245 | (1-255 kHz) */ | ||
246 | .byte (CLOCK/(XPIX+XBLANK))+1 /* Maximum horizontal line rate | ||
247 | (1-255 kHz) */ | ||
248 | .byte (CLOCK/10000)+1 /* Maximum pixel clock rate, rounded up | ||
249 | to 10 MHz multiple (10-2550 MHz) */ | ||
250 | .byte 0 /* No extended timing information type */ | ||
251 | end2: .byte 0x0a /* End marker */ | ||
252 | .fill 12-(end2-start2), 1, 0x20 /* Padded spaces */ | ||
253 | descriptor4: .byte 0,0 /* Not a detailed timing descriptor */ | ||
254 | .byte 0 /* Must be zero */ | ||
255 | .byte 0xfc /* Descriptor is text */ | ||
256 | .byte 0 /* Must be zero */ | ||
257 | start3: .ascii TIMING_NAME | ||
258 | end3: .byte 0x0a /* End marker */ | ||
259 | .fill 12-(end3-start3), 1, 0x20 /* Padded spaces */ | ||
260 | extensions: .byte 0 /* Number of extensions to follow */ | ||
261 | checksum: .byte CRC /* Sum of all bytes must be 0 */ | ||
diff --git a/Documentation/EDID/hex b/Documentation/EDID/hex new file mode 100644 index 000000000000..8873ebb618af --- /dev/null +++ b/Documentation/EDID/hex | |||
@@ -0,0 +1 @@ | |||
"\t" 8/1 "0x%02x, " "\n" | |||
diff --git a/Documentation/IRQ-domain.txt b/Documentation/IRQ-domain.txt new file mode 100644 index 000000000000..27dcaabfb4db --- /dev/null +++ b/Documentation/IRQ-domain.txt | |||
@@ -0,0 +1,117 @@ | |||
1 | irq_domain interrupt number mapping library | ||
2 | |||
3 | The current design of the Linux kernel uses a single large number | ||
4 | space where each separate IRQ source is assigned a different number. | ||
5 | This is simple when there is only one interrupt controller, but in | ||
6 | systems with multiple interrupt controllers the kernel must ensure | ||
7 | that each one gets assigned non-overlapping allocations of Linux | ||
8 | IRQ numbers. | ||
9 | |||
10 | The irq_alloc_desc*() and irq_free_desc*() APIs provide allocation of | ||
11 | irq numbers, but they don't provide any support for reverse mapping of | ||
12 | the controller-local IRQ (hwirq) number into the Linux IRQ number | ||
13 | space. | ||
14 | |||
15 | The irq_domain library adds mapping between hwirq and IRQ numbers on | ||
16 | top of the irq_alloc_desc*() API. An irq_domain to manage mapping is | ||
17 | preferred over interrupt controller drivers open coding their own | ||
18 | reverse mapping scheme. | ||
19 | |||
20 | irq_domain also implements translation from Device Tree interrupt | ||
21 | specifiers to hwirq numbers, and can be easily extended to support | ||
22 | other IRQ topology data sources. | ||
23 | |||
24 | === irq_domain usage === | ||
25 | An interrupt controller driver creates and registers an irq_domain by | ||
26 | calling one of the irq_domain_add_*() functions (each mapping method | ||
27 | has a different allocator function, more on that later). The function | ||
28 | will return a pointer to the irq_domain on success. The caller must | ||
29 | provide the allocator function with an irq_domain_ops structure with | ||
30 | the .map callback populated as a minimum. | ||
31 | |||
32 | In most cases, the irq_domain will begin empty without any mappings | ||
33 | between hwirq and IRQ numbers. Mappings are added to the irq_domain | ||
34 | by calling irq_create_mapping() which accepts the irq_domain and a | ||
35 | hwirq number as arguments. If a mapping for the hwirq doesn't already | ||
36 | exist then it will allocate a new Linux irq_desc, associate it with | ||
37 | the hwirq, and call the .map() callback so the driver can perform any | ||
38 | required hardware setup. | ||
39 | |||
40 | When an interrupt is received, irq_find_mapping() function should | ||
41 | be used to find the Linux IRQ number from the hwirq number. | ||
42 | |||
43 | If the driver has the Linux IRQ number or the irq_data pointer, and | ||
44 | needs to know the associated hwirq number (such as in the irq_chip | ||
45 | callbacks) then it can be directly obtained from irq_data->hwirq. | ||
46 | |||
47 | === Types of irq_domain mappings === | ||
48 | There are several mechanisms available for reverse mapping from hwirq | ||
49 | to Linux irq, and each mechanism uses a different allocation function. | ||
50 | Which reverse map type should be used depends on the use case. Each | ||
51 | of the reverse map types are described below: | ||
52 | |||
53 | ==== Linear ==== | ||
54 | irq_domain_add_linear() | ||
55 | |||
56 | The linear reverse map maintains a fixed size table indexed by the | ||
57 | hwirq number. When a hwirq is mapped, an irq_desc is allocated for | ||
58 | the hwirq, and the IRQ number is stored in the table. | ||
59 | |||
60 | The Linear map is a good choice when the maximum number of hwirqs is | ||
61 | fixed and a relatively small number (~ < 256). The advantages of this | ||
62 | map are fixed time lookup for IRQ numbers, and irq_descs are only | ||
63 | allocated for in-use IRQs. The disadvantage is that the table must be | ||
64 | as large as the largest possible hwirq number. | ||
65 | |||
66 | The majority of drivers should use the linear map. | ||
67 | |||
68 | ==== Tree ==== | ||
69 | irq_domain_add_tree() | ||
70 | |||
71 | The irq_domain maintains a radix tree map from hwirq numbers to Linux | ||
72 | IRQs. When an hwirq is mapped, an irq_desc is allocated and the | ||
73 | hwirq is used as the lookup key for the radix tree. | ||
74 | |||
75 | The tree map is a good choice if the hwirq number can be very large | ||
76 | since it doesn't need to allocate a table as large as the largest | ||
77 | hwirq number. The disadvantage is that hwirq to IRQ number lookup is | ||
78 | dependent on how many entries are in the table. | ||
79 | |||
80 | Very few drivers should need this mapping. At the moment, powerpc | ||
81 | iseries is the only user. | ||
82 | |||
83 | ==== No Map ===- | ||
84 | irq_domain_add_nomap() | ||
85 | |||
86 | The No Map mapping is to be used when the hwirq number is | ||
87 | programmable in the hardware. In this case it is best to program the | ||
88 | Linux IRQ number into the hardware itself so that no mapping is | ||
89 | required. Calling irq_create_direct_mapping() will allocate a Linux | ||
90 | IRQ number and call the .map() callback so that driver can program the | ||
91 | Linux IRQ number into the hardware. | ||
92 | |||
93 | Most drivers cannot use this mapping. | ||
94 | |||
95 | ==== Legacy ==== | ||
96 | irq_domain_add_legacy() | ||
97 | irq_domain_add_legacy_isa() | ||
98 | |||
99 | The Legacy mapping is a special case for drivers that already have a | ||
100 | range of irq_descs allocated for the hwirqs. It is used when the | ||
101 | driver cannot be immediately converted to use the linear mapping. For | ||
102 | example, many embedded system board support files use a set of #defines | ||
103 | for IRQ numbers that are passed to struct device registrations. In that | ||
104 | case the Linux IRQ numbers cannot be dynamically assigned and the legacy | ||
105 | mapping should be used. | ||
106 | |||
107 | The legacy map assumes a contiguous range of IRQ numbers has already | ||
108 | been allocated for the controller and that the IRQ number can be | ||
109 | calculated by adding a fixed offset to the hwirq number, and | ||
110 | visa-versa. The disadvantage is that it requires the interrupt | ||
111 | controller to manage IRQ allocations and it requires an irq_desc to be | ||
112 | allocated for every hwirq, even if it is unused. | ||
113 | |||
114 | The legacy map should only be used if fixed IRQ mappings must be | ||
115 | supported. For example, ISA controllers would use the legacy map for | ||
116 | mapping Linux IRQs 0-15 so that existing ISA drivers get the correct IRQ | ||
117 | numbers. | ||
diff --git a/Documentation/arm/kernel_user_helpers.txt b/Documentation/arm/kernel_user_helpers.txt index a17df9f91d16..5673594717cf 100644 --- a/Documentation/arm/kernel_user_helpers.txt +++ b/Documentation/arm/kernel_user_helpers.txt | |||
@@ -25,7 +25,7 @@ inline (either in the code emitted directly by the compiler, or part of | |||
25 | the implementation of a library call) when optimizing for a recent enough | 25 | the implementation of a library call) when optimizing for a recent enough |
26 | processor that has the necessary native support, but only if resulting | 26 | processor that has the necessary native support, but only if resulting |
27 | binaries are already to be incompatible with earlier ARM processors due to | 27 | binaries are already to be incompatible with earlier ARM processors due to |
28 | useage of similar native instructions for other things. In other words | 28 | usage of similar native instructions for other things. In other words |
29 | don't make binaries unable to run on earlier processors just for the sake | 29 | don't make binaries unable to run on earlier processors just for the sake |
30 | of not using these kernel helpers if your compiled code is not going to | 30 | of not using these kernel helpers if your compiled code is not going to |
31 | use new instructions for other purpose. | 31 | use new instructions for other purpose. |
diff --git a/Documentation/backlight/lp855x-driver.txt b/Documentation/backlight/lp855x-driver.txt new file mode 100644 index 000000000000..f5e4caafab7d --- /dev/null +++ b/Documentation/backlight/lp855x-driver.txt | |||
@@ -0,0 +1,78 @@ | |||
1 | Kernel driver lp855x | ||
2 | ==================== | ||
3 | |||
4 | Backlight driver for LP855x ICs | ||
5 | |||
6 | Supported chips: | ||
7 | Texas Instruments LP8550, LP8551, LP8552, LP8553 and LP8556 | ||
8 | |||
9 | Author: Milo(Woogyom) Kim <milo.kim@ti.com> | ||
10 | |||
11 | Description | ||
12 | ----------- | ||
13 | |||
14 | * Brightness control | ||
15 | |||
16 | Brightness can be controlled by the pwm input or the i2c command. | ||
17 | The lp855x driver supports both cases. | ||
18 | |||
19 | * Device attributes | ||
20 | |||
21 | 1) bl_ctl_mode | ||
22 | Backlight control mode. | ||
23 | Value : pwm based or register based | ||
24 | |||
25 | 2) chip_id | ||
26 | The lp855x chip id. | ||
27 | Value : lp8550/lp8551/lp8552/lp8553/lp8556 | ||
28 | |||
29 | Platform data for lp855x | ||
30 | ------------------------ | ||
31 | |||
32 | For supporting platform specific data, the lp855x platform data can be used. | ||
33 | |||
34 | * name : Backlight driver name. If it is not defined, default name is set. | ||
35 | * mode : Brightness control mode. PWM or register based. | ||
36 | * device_control : Value of DEVICE CONTROL register. | ||
37 | * initial_brightness : Initial value of backlight brightness. | ||
38 | * pwm_data : Platform specific pwm generation functions. | ||
39 | Only valid when brightness is pwm input mode. | ||
40 | Functions should be implemented by PWM driver. | ||
41 | - pwm_set_intensity() : set duty of PWM | ||
42 | - pwm_get_intensity() : get current duty of PWM | ||
43 | * load_new_rom_data : | ||
44 | 0 : use default configuration data | ||
45 | 1 : update values of eeprom or eprom registers on loading driver | ||
46 | * size_program : Total size of lp855x_rom_data. | ||
47 | * rom_data : List of new eeprom/eprom registers. | ||
48 | |||
49 | example 1) lp8552 platform data : i2c register mode with new eeprom data | ||
50 | |||
51 | #define EEPROM_A5_ADDR 0xA5 | ||
52 | #define EEPROM_A5_VAL 0x4f /* EN_VSYNC=0 */ | ||
53 | |||
54 | static struct lp855x_rom_data lp8552_eeprom_arr[] = { | ||
55 | {EEPROM_A5_ADDR, EEPROM_A5_VAL}, | ||
56 | }; | ||
57 | |||
58 | static struct lp855x_platform_data lp8552_pdata = { | ||
59 | .name = "lcd-bl", | ||
60 | .mode = REGISTER_BASED, | ||
61 | .device_control = I2C_CONFIG(LP8552), | ||
62 | .initial_brightness = INITIAL_BRT, | ||
63 | .load_new_rom_data = 1, | ||
64 | .size_program = ARRAY_SIZE(lp8552_eeprom_arr), | ||
65 | .rom_data = lp8552_eeprom_arr, | ||
66 | }; | ||
67 | |||
68 | example 2) lp8556 platform data : pwm input mode with default rom data | ||
69 | |||
70 | static struct lp855x_platform_data lp8556_pdata = { | ||
71 | .mode = PWM_BASED, | ||
72 | .device_control = PWM_CONFIG(LP8556), | ||
73 | .initial_brightness = INITIAL_BRT, | ||
74 | .pwm_data = { | ||
75 | .pwm_set_intensity = platform_pwm_set_intensity, | ||
76 | .pwm_get_intensity = platform_pwm_get_intensity, | ||
77 | }, | ||
78 | }; | ||
diff --git a/Documentation/cgroups/blkio-controller.txt b/Documentation/cgroups/blkio-controller.txt index 84f0a15fc210..b4b1fb3a83f0 100644 --- a/Documentation/cgroups/blkio-controller.txt +++ b/Documentation/cgroups/blkio-controller.txt | |||
@@ -94,11 +94,11 @@ Throttling/Upper Limit policy | |||
94 | 94 | ||
95 | Hierarchical Cgroups | 95 | Hierarchical Cgroups |
96 | ==================== | 96 | ==================== |
97 | - Currently none of the IO control policy supports hierarhical groups. But | 97 | - Currently none of the IO control policy supports hierarchical groups. But |
98 | cgroup interface does allow creation of hierarhical cgroups and internally | 98 | cgroup interface does allow creation of hierarchical cgroups and internally |
99 | IO policies treat them as flat hierarchy. | 99 | IO policies treat them as flat hierarchy. |
100 | 100 | ||
101 | So this patch will allow creation of cgroup hierarhcy but at the backend | 101 | So this patch will allow creation of cgroup hierarchcy but at the backend |
102 | everything will be treated as flat. So if somebody created a hierarchy like | 102 | everything will be treated as flat. So if somebody created a hierarchy like |
103 | as follows. | 103 | as follows. |
104 | 104 | ||
@@ -266,7 +266,7 @@ Proportional weight policy files | |||
266 | - blkio.idle_time | 266 | - blkio.idle_time |
267 | - Debugging aid only enabled if CONFIG_DEBUG_BLK_CGROUP=y. | 267 | - Debugging aid only enabled if CONFIG_DEBUG_BLK_CGROUP=y. |
268 | This is the amount of time spent by the IO scheduler idling for a | 268 | This is the amount of time spent by the IO scheduler idling for a |
269 | given cgroup in anticipation of a better request than the exising ones | 269 | given cgroup in anticipation of a better request than the existing ones |
270 | from other queues/cgroups. This is in nanoseconds. If this is read | 270 | from other queues/cgroups. This is in nanoseconds. If this is read |
271 | when the cgroup is in an idling state, the stat will only report the | 271 | when the cgroup is in an idling state, the stat will only report the |
272 | idle_time accumulated till the last idle period and will not include | 272 | idle_time accumulated till the last idle period and will not include |
@@ -283,34 +283,34 @@ Throttling/Upper limit policy files | |||
283 | ----------------------------------- | 283 | ----------------------------------- |
284 | - blkio.throttle.read_bps_device | 284 | - blkio.throttle.read_bps_device |
285 | - Specifies upper limit on READ rate from the device. IO rate is | 285 | - Specifies upper limit on READ rate from the device. IO rate is |
286 | specified in bytes per second. Rules are per deivce. Following is | 286 | specified in bytes per second. Rules are per device. Following is |
287 | the format. | 287 | the format. |
288 | 288 | ||
289 | echo "<major>:<minor> <rate_bytes_per_second>" > /cgrp/blkio.throttle.read_bps_device | 289 | echo "<major>:<minor> <rate_bytes_per_second>" > /cgrp/blkio.throttle.read_bps_device |
290 | 290 | ||
291 | - blkio.throttle.write_bps_device | 291 | - blkio.throttle.write_bps_device |
292 | - Specifies upper limit on WRITE rate to the device. IO rate is | 292 | - Specifies upper limit on WRITE rate to the device. IO rate is |
293 | specified in bytes per second. Rules are per deivce. Following is | 293 | specified in bytes per second. Rules are per device. Following is |
294 | the format. | 294 | the format. |
295 | 295 | ||
296 | echo "<major>:<minor> <rate_bytes_per_second>" > /cgrp/blkio.throttle.write_bps_device | 296 | echo "<major>:<minor> <rate_bytes_per_second>" > /cgrp/blkio.throttle.write_bps_device |
297 | 297 | ||
298 | - blkio.throttle.read_iops_device | 298 | - blkio.throttle.read_iops_device |
299 | - Specifies upper limit on READ rate from the device. IO rate is | 299 | - Specifies upper limit on READ rate from the device. IO rate is |
300 | specified in IO per second. Rules are per deivce. Following is | 300 | specified in IO per second. Rules are per device. Following is |
301 | the format. | 301 | the format. |
302 | 302 | ||
303 | echo "<major>:<minor> <rate_io_per_second>" > /cgrp/blkio.throttle.read_iops_device | 303 | echo "<major>:<minor> <rate_io_per_second>" > /cgrp/blkio.throttle.read_iops_device |
304 | 304 | ||
305 | - blkio.throttle.write_iops_device | 305 | - blkio.throttle.write_iops_device |
306 | - Specifies upper limit on WRITE rate to the device. IO rate is | 306 | - Specifies upper limit on WRITE rate to the device. IO rate is |
307 | specified in io per second. Rules are per deivce. Following is | 307 | specified in io per second. Rules are per device. Following is |
308 | the format. | 308 | the format. |
309 | 309 | ||
310 | echo "<major>:<minor> <rate_io_per_second>" > /cgrp/blkio.throttle.write_iops_device | 310 | echo "<major>:<minor> <rate_io_per_second>" > /cgrp/blkio.throttle.write_iops_device |
311 | 311 | ||
312 | Note: If both BW and IOPS rules are specified for a device, then IO is | 312 | Note: If both BW and IOPS rules are specified for a device, then IO is |
313 | subjectd to both the constraints. | 313 | subjected to both the constraints. |
314 | 314 | ||
315 | - blkio.throttle.io_serviced | 315 | - blkio.throttle.io_serviced |
316 | - Number of IOs (bio) completed to/from the disk by the group (as | 316 | - Number of IOs (bio) completed to/from the disk by the group (as |
diff --git a/Documentation/cgroups/cgroups.txt b/Documentation/cgroups/cgroups.txt index a7c96ae5557c..8e74980ab385 100644 --- a/Documentation/cgroups/cgroups.txt +++ b/Documentation/cgroups/cgroups.txt | |||
@@ -558,8 +558,7 @@ Each subsystem may export the following methods. The only mandatory | |||
558 | methods are create/destroy. Any others that are null are presumed to | 558 | methods are create/destroy. Any others that are null are presumed to |
559 | be successful no-ops. | 559 | be successful no-ops. |
560 | 560 | ||
561 | struct cgroup_subsys_state *create(struct cgroup_subsys *ss, | 561 | struct cgroup_subsys_state *create(struct cgroup *cgrp) |
562 | struct cgroup *cgrp) | ||
563 | (cgroup_mutex held by caller) | 562 | (cgroup_mutex held by caller) |
564 | 563 | ||
565 | Called to create a subsystem state object for a cgroup. The | 564 | Called to create a subsystem state object for a cgroup. The |
@@ -574,7 +573,7 @@ identified by the passed cgroup object having a NULL parent (since | |||
574 | it's the root of the hierarchy) and may be an appropriate place for | 573 | it's the root of the hierarchy) and may be an appropriate place for |
575 | initialization code. | 574 | initialization code. |
576 | 575 | ||
577 | void destroy(struct cgroup_subsys *ss, struct cgroup *cgrp) | 576 | void destroy(struct cgroup *cgrp) |
578 | (cgroup_mutex held by caller) | 577 | (cgroup_mutex held by caller) |
579 | 578 | ||
580 | The cgroup system is about to destroy the passed cgroup; the subsystem | 579 | The cgroup system is about to destroy the passed cgroup; the subsystem |
@@ -585,7 +584,7 @@ cgroup->parent is still valid. (Note - can also be called for a | |||
585 | newly-created cgroup if an error occurs after this subsystem's | 584 | newly-created cgroup if an error occurs after this subsystem's |
586 | create() method has been called for the new cgroup). | 585 | create() method has been called for the new cgroup). |
587 | 586 | ||
588 | int pre_destroy(struct cgroup_subsys *ss, struct cgroup *cgrp); | 587 | int pre_destroy(struct cgroup *cgrp); |
589 | 588 | ||
590 | Called before checking the reference count on each subsystem. This may | 589 | Called before checking the reference count on each subsystem. This may |
591 | be useful for subsystems which have some extra references even if | 590 | be useful for subsystems which have some extra references even if |
@@ -593,8 +592,7 @@ there are not tasks in the cgroup. If pre_destroy() returns error code, | |||
593 | rmdir() will fail with it. From this behavior, pre_destroy() can be | 592 | rmdir() will fail with it. From this behavior, pre_destroy() can be |
594 | called multiple times against a cgroup. | 593 | called multiple times against a cgroup. |
595 | 594 | ||
596 | int can_attach(struct cgroup_subsys *ss, struct cgroup *cgrp, | 595 | int can_attach(struct cgroup *cgrp, struct cgroup_taskset *tset) |
597 | struct cgroup_taskset *tset) | ||
598 | (cgroup_mutex held by caller) | 596 | (cgroup_mutex held by caller) |
599 | 597 | ||
600 | Called prior to moving one or more tasks into a cgroup; if the | 598 | Called prior to moving one or more tasks into a cgroup; if the |
@@ -615,8 +613,7 @@ fork. If this method returns 0 (success) then this should remain valid | |||
615 | while the caller holds cgroup_mutex and it is ensured that either | 613 | while the caller holds cgroup_mutex and it is ensured that either |
616 | attach() or cancel_attach() will be called in future. | 614 | attach() or cancel_attach() will be called in future. |
617 | 615 | ||
618 | void cancel_attach(struct cgroup_subsys *ss, struct cgroup *cgrp, | 616 | void cancel_attach(struct cgroup *cgrp, struct cgroup_taskset *tset) |
619 | struct cgroup_taskset *tset) | ||
620 | (cgroup_mutex held by caller) | 617 | (cgroup_mutex held by caller) |
621 | 618 | ||
622 | Called when a task attach operation has failed after can_attach() has succeeded. | 619 | Called when a task attach operation has failed after can_attach() has succeeded. |
@@ -625,23 +622,22 @@ function, so that the subsystem can implement a rollback. If not, not necessary. | |||
625 | This will be called only about subsystems whose can_attach() operation have | 622 | This will be called only about subsystems whose can_attach() operation have |
626 | succeeded. The parameters are identical to can_attach(). | 623 | succeeded. The parameters are identical to can_attach(). |
627 | 624 | ||
628 | void attach(struct cgroup_subsys *ss, struct cgroup *cgrp, | 625 | void attach(struct cgroup *cgrp, struct cgroup_taskset *tset) |
629 | struct cgroup_taskset *tset) | ||
630 | (cgroup_mutex held by caller) | 626 | (cgroup_mutex held by caller) |
631 | 627 | ||
632 | Called after the task has been attached to the cgroup, to allow any | 628 | Called after the task has been attached to the cgroup, to allow any |
633 | post-attachment activity that requires memory allocations or blocking. | 629 | post-attachment activity that requires memory allocations or blocking. |
634 | The parameters are identical to can_attach(). | 630 | The parameters are identical to can_attach(). |
635 | 631 | ||
636 | void fork(struct cgroup_subsy *ss, struct task_struct *task) | 632 | void fork(struct task_struct *task) |
637 | 633 | ||
638 | Called when a task is forked into a cgroup. | 634 | Called when a task is forked into a cgroup. |
639 | 635 | ||
640 | void exit(struct cgroup_subsys *ss, struct task_struct *task) | 636 | void exit(struct task_struct *task) |
641 | 637 | ||
642 | Called during task exit. | 638 | Called during task exit. |
643 | 639 | ||
644 | int populate(struct cgroup_subsys *ss, struct cgroup *cgrp) | 640 | int populate(struct cgroup *cgrp) |
645 | (cgroup_mutex held by caller) | 641 | (cgroup_mutex held by caller) |
646 | 642 | ||
647 | Called after creation of a cgroup to allow a subsystem to populate | 643 | Called after creation of a cgroup to allow a subsystem to populate |
@@ -651,7 +647,7 @@ include/linux/cgroup.h for details). Note that although this | |||
651 | method can return an error code, the error code is currently not | 647 | method can return an error code, the error code is currently not |
652 | always handled well. | 648 | always handled well. |
653 | 649 | ||
654 | void post_clone(struct cgroup_subsys *ss, struct cgroup *cgrp) | 650 | void post_clone(struct cgroup *cgrp) |
655 | (cgroup_mutex held by caller) | 651 | (cgroup_mutex held by caller) |
656 | 652 | ||
657 | Called during cgroup_create() to do any parameter | 653 | Called during cgroup_create() to do any parameter |
@@ -659,7 +655,7 @@ initialization which might be required before a task could attach. For | |||
659 | example in cpusets, no task may attach before 'cpus' and 'mems' are set | 655 | example in cpusets, no task may attach before 'cpus' and 'mems' are set |
660 | up. | 656 | up. |
661 | 657 | ||
662 | void bind(struct cgroup_subsys *ss, struct cgroup *root) | 658 | void bind(struct cgroup *root) |
663 | (cgroup_mutex and ss->hierarchy_mutex held by caller) | 659 | (cgroup_mutex and ss->hierarchy_mutex held by caller) |
664 | 660 | ||
665 | Called when a cgroup subsystem is rebound to a different hierarchy | 661 | Called when a cgroup subsystem is rebound to a different hierarchy |
diff --git a/Documentation/crc32.txt b/Documentation/crc32.txt new file mode 100644 index 000000000000..a08a7dd9d625 --- /dev/null +++ b/Documentation/crc32.txt | |||
@@ -0,0 +1,182 @@ | |||
1 | A brief CRC tutorial. | ||
2 | |||
3 | A CRC is a long-division remainder. You add the CRC to the message, | ||
4 | and the whole thing (message+CRC) is a multiple of the given | ||
5 | CRC polynomial. To check the CRC, you can either check that the | ||
6 | CRC matches the recomputed value, *or* you can check that the | ||
7 | remainder computed on the message+CRC is 0. This latter approach | ||
8 | is used by a lot of hardware implementations, and is why so many | ||
9 | protocols put the end-of-frame flag after the CRC. | ||
10 | |||
11 | It's actually the same long division you learned in school, except that | ||
12 | - We're working in binary, so the digits are only 0 and 1, and | ||
13 | - When dividing polynomials, there are no carries. Rather than add and | ||
14 | subtract, we just xor. Thus, we tend to get a bit sloppy about | ||
15 | the difference between adding and subtracting. | ||
16 | |||
17 | Like all division, the remainder is always smaller than the divisor. | ||
18 | To produce a 32-bit CRC, the divisor is actually a 33-bit CRC polynomial. | ||
19 | Since it's 33 bits long, bit 32 is always going to be set, so usually the | ||
20 | CRC is written in hex with the most significant bit omitted. (If you're | ||
21 | familiar with the IEEE 754 floating-point format, it's the same idea.) | ||
22 | |||
23 | Note that a CRC is computed over a string of *bits*, so you have | ||
24 | to decide on the endianness of the bits within each byte. To get | ||
25 | the best error-detecting properties, this should correspond to the | ||
26 | order they're actually sent. For example, standard RS-232 serial is | ||
27 | little-endian; the most significant bit (sometimes used for parity) | ||
28 | is sent last. And when appending a CRC word to a message, you should | ||
29 | do it in the right order, matching the endianness. | ||
30 | |||
31 | Just like with ordinary division, you proceed one digit (bit) at a time. | ||
32 | Each step of the division you take one more digit (bit) of the dividend | ||
33 | and append it to the current remainder. Then you figure out the | ||
34 | appropriate multiple of the divisor to subtract to being the remainder | ||
35 | back into range. In binary, this is easy - it has to be either 0 or 1, | ||
36 | and to make the XOR cancel, it's just a copy of bit 32 of the remainder. | ||
37 | |||
38 | When computing a CRC, we don't care about the quotient, so we can | ||
39 | throw the quotient bit away, but subtract the appropriate multiple of | ||
40 | the polynomial from the remainder and we're back to where we started, | ||
41 | ready to process the next bit. | ||
42 | |||
43 | A big-endian CRC written this way would be coded like: | ||
44 | for (i = 0; i < input_bits; i++) { | ||
45 | multiple = remainder & 0x80000000 ? CRCPOLY : 0; | ||
46 | remainder = (remainder << 1 | next_input_bit()) ^ multiple; | ||
47 | } | ||
48 | |||
49 | Notice how, to get at bit 32 of the shifted remainder, we look | ||
50 | at bit 31 of the remainder *before* shifting it. | ||
51 | |||
52 | But also notice how the next_input_bit() bits we're shifting into | ||
53 | the remainder don't actually affect any decision-making until | ||
54 | 32 bits later. Thus, the first 32 cycles of this are pretty boring. | ||
55 | Also, to add the CRC to a message, we need a 32-bit-long hole for it at | ||
56 | the end, so we have to add 32 extra cycles shifting in zeros at the | ||
57 | end of every message, | ||
58 | |||
59 | These details lead to a standard trick: rearrange merging in the | ||
60 | next_input_bit() until the moment it's needed. Then the first 32 cycles | ||
61 | can be precomputed, and merging in the final 32 zero bits to make room | ||
62 | for the CRC can be skipped entirely. This changes the code to: | ||
63 | |||
64 | for (i = 0; i < input_bits; i++) { | ||
65 | remainder ^= next_input_bit() << 31; | ||
66 | multiple = (remainder & 0x80000000) ? CRCPOLY : 0; | ||
67 | remainder = (remainder << 1) ^ multiple; | ||
68 | } | ||
69 | |||
70 | With this optimization, the little-endian code is particularly simple: | ||
71 | for (i = 0; i < input_bits; i++) { | ||
72 | remainder ^= next_input_bit(); | ||
73 | multiple = (remainder & 1) ? CRCPOLY : 0; | ||
74 | remainder = (remainder >> 1) ^ multiple; | ||
75 | } | ||
76 | |||
77 | The most significant coefficient of the remainder polynomial is stored | ||
78 | in the least significant bit of the binary "remainder" variable. | ||
79 | The other details of endianness have been hidden in CRCPOLY (which must | ||
80 | be bit-reversed) and next_input_bit(). | ||
81 | |||
82 | As long as next_input_bit is returning the bits in a sensible order, we don't | ||
83 | *have* to wait until the last possible moment to merge in additional bits. | ||
84 | We can do it 8 bits at a time rather than 1 bit at a time: | ||
85 | for (i = 0; i < input_bytes; i++) { | ||
86 | remainder ^= next_input_byte() << 24; | ||
87 | for (j = 0; j < 8; j++) { | ||
88 | multiple = (remainder & 0x80000000) ? CRCPOLY : 0; | ||
89 | remainder = (remainder << 1) ^ multiple; | ||
90 | } | ||
91 | } | ||
92 | |||
93 | Or in little-endian: | ||
94 | for (i = 0; i < input_bytes; i++) { | ||
95 | remainder ^= next_input_byte(); | ||
96 | for (j = 0; j < 8; j++) { | ||
97 | multiple = (remainder & 1) ? CRCPOLY : 0; | ||
98 | remainder = (remainder >> 1) ^ multiple; | ||
99 | } | ||
100 | } | ||
101 | |||
102 | If the input is a multiple of 32 bits, you can even XOR in a 32-bit | ||
103 | word at a time and increase the inner loop count to 32. | ||
104 | |||
105 | You can also mix and match the two loop styles, for example doing the | ||
106 | bulk of a message byte-at-a-time and adding bit-at-a-time processing | ||
107 | for any fractional bytes at the end. | ||
108 | |||
109 | To reduce the number of conditional branches, software commonly uses | ||
110 | the byte-at-a-time table method, popularized by Dilip V. Sarwate, | ||
111 | "Computation of Cyclic Redundancy Checks via Table Look-Up", Comm. ACM | ||
112 | v.31 no.8 (August 1998) p. 1008-1013. | ||
113 | |||
114 | Here, rather than just shifting one bit of the remainder to decide | ||
115 | in the correct multiple to subtract, we can shift a byte at a time. | ||
116 | This produces a 40-bit (rather than a 33-bit) intermediate remainder, | ||
117 | and the correct multiple of the polynomial to subtract is found using | ||
118 | a 256-entry lookup table indexed by the high 8 bits. | ||
119 | |||
120 | (The table entries are simply the CRC-32 of the given one-byte messages.) | ||
121 | |||
122 | When space is more constrained, smaller tables can be used, e.g. two | ||
123 | 4-bit shifts followed by a lookup in a 16-entry table. | ||
124 | |||
125 | It is not practical to process much more than 8 bits at a time using this | ||
126 | technique, because tables larger than 256 entries use too much memory and, | ||
127 | more importantly, too much of the L1 cache. | ||
128 | |||
129 | To get higher software performance, a "slicing" technique can be used. | ||
130 | See "High Octane CRC Generation with the Intel Slicing-by-8 Algorithm", | ||
131 | ftp://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf | ||
132 | |||
133 | This does not change the number of table lookups, but does increase | ||
134 | the parallelism. With the classic Sarwate algorithm, each table lookup | ||
135 | must be completed before the index of the next can be computed. | ||
136 | |||
137 | A "slicing by 2" technique would shift the remainder 16 bits at a time, | ||
138 | producing a 48-bit intermediate remainder. Rather than doing a single | ||
139 | lookup in a 65536-entry table, the two high bytes are looked up in | ||
140 | two different 256-entry tables. Each contains the remainder required | ||
141 | to cancel out the corresponding byte. The tables are different because the | ||
142 | polynomials to cancel are different. One has non-zero coefficients from | ||
143 | x^32 to x^39, while the other goes from x^40 to x^47. | ||
144 | |||
145 | Since modern processors can handle many parallel memory operations, this | ||
146 | takes barely longer than a single table look-up and thus performs almost | ||
147 | twice as fast as the basic Sarwate algorithm. | ||
148 | |||
149 | This can be extended to "slicing by 4" using 4 256-entry tables. | ||
150 | Each step, 32 bits of data is fetched, XORed with the CRC, and the result | ||
151 | broken into bytes and looked up in the tables. Because the 32-bit shift | ||
152 | leaves the low-order bits of the intermediate remainder zero, the | ||
153 | final CRC is simply the XOR of the 4 table look-ups. | ||
154 | |||
155 | But this still enforces sequential execution: a second group of table | ||
156 | look-ups cannot begin until the previous groups 4 table look-ups have all | ||
157 | been completed. Thus, the processor's load/store unit is sometimes idle. | ||
158 | |||
159 | To make maximum use of the processor, "slicing by 8" performs 8 look-ups | ||
160 | in parallel. Each step, the 32-bit CRC is shifted 64 bits and XORed | ||
161 | with 64 bits of input data. What is important to note is that 4 of | ||
162 | those 8 bytes are simply copies of the input data; they do not depend | ||
163 | on the previous CRC at all. Thus, those 4 table look-ups may commence | ||
164 | immediately, without waiting for the previous loop iteration. | ||
165 | |||
166 | By always having 4 loads in flight, a modern superscalar processor can | ||
167 | be kept busy and make full use of its L1 cache. | ||
168 | |||
169 | Two more details about CRC implementation in the real world: | ||
170 | |||
171 | Normally, appending zero bits to a message which is already a multiple | ||
172 | of a polynomial produces a larger multiple of that polynomial. Thus, | ||
173 | a basic CRC will not detect appended zero bits (or bytes). To enable | ||
174 | a CRC to detect this condition, it's common to invert the CRC before | ||
175 | appending it. This makes the remainder of the message+crc come out not | ||
176 | as zero, but some fixed non-zero value. (The CRC of the inversion | ||
177 | pattern, 0xffffffff.) | ||
178 | |||
179 | The same problem applies to zero bits prepended to the message, and a | ||
180 | similar solution is used. Instead of starting the CRC computation with | ||
181 | a remainder of 0, an initial remainder of all ones is used. As long as | ||
182 | you start the same way on decoding, it doesn't make a difference. | ||
diff --git a/Documentation/device-mapper/dm-raid.txt b/Documentation/device-mapper/dm-raid.txt index 2a8c11331d2d..946c73342cde 100644 --- a/Documentation/device-mapper/dm-raid.txt +++ b/Documentation/device-mapper/dm-raid.txt | |||
@@ -28,7 +28,7 @@ The target is named "raid" and it accepts the following parameters: | |||
28 | raid6_nc RAID6 N continue | 28 | raid6_nc RAID6 N continue |
29 | - rotating parity N (right-to-left) with data continuation | 29 | - rotating parity N (right-to-left) with data continuation |
30 | 30 | ||
31 | Refererence: Chapter 4 of | 31 | Reference: Chapter 4 of |
32 | http://www.snia.org/sites/default/files/SNIA_DDF_Technical_Position_v2.0.pdf | 32 | http://www.snia.org/sites/default/files/SNIA_DDF_Technical_Position_v2.0.pdf |
33 | 33 | ||
34 | <#raid_params>: The number of parameters that follow. | 34 | <#raid_params>: The number of parameters that follow. |
diff --git a/Documentation/device-mapper/persistent-data.txt b/Documentation/device-mapper/persistent-data.txt index 0e5df9b04ad2..a333bcb3a6c2 100644 --- a/Documentation/device-mapper/persistent-data.txt +++ b/Documentation/device-mapper/persistent-data.txt | |||
@@ -3,7 +3,7 @@ Introduction | |||
3 | 3 | ||
4 | The more-sophisticated device-mapper targets require complex metadata | 4 | The more-sophisticated device-mapper targets require complex metadata |
5 | that is managed in kernel. In late 2010 we were seeing that various | 5 | that is managed in kernel. In late 2010 we were seeing that various |
6 | different targets were rolling their own data strutures, for example: | 6 | different targets were rolling their own data structures, for example: |
7 | 7 | ||
8 | - Mikulas Patocka's multisnap implementation | 8 | - Mikulas Patocka's multisnap implementation |
9 | - Heinz Mauelshagen's thin provisioning target | 9 | - Heinz Mauelshagen's thin provisioning target |
diff --git a/Documentation/device-mapper/thin-provisioning.txt b/Documentation/device-mapper/thin-provisioning.txt index 801d9d1cf82b..1ff044d87ca4 100644 --- a/Documentation/device-mapper/thin-provisioning.txt +++ b/Documentation/device-mapper/thin-provisioning.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | Introduction | 1 | Introduction |
2 | ============ | 2 | ============ |
3 | 3 | ||
4 | This document descibes a collection of device-mapper targets that | 4 | This document describes a collection of device-mapper targets that |
5 | between them implement thin-provisioning and snapshots. | 5 | between them implement thin-provisioning and snapshots. |
6 | 6 | ||
7 | The main highlight of this implementation, compared to the previous | 7 | The main highlight of this implementation, compared to the previous |
diff --git a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt new file mode 100644 index 000000000000..6528e215c5fe --- /dev/null +++ b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | * Samsung Exynos Power Domains | ||
2 | |||
3 | Exynos processors include support for multiple power domains which are used | ||
4 | to gate power to one or more peripherals on the processor. | ||
5 | |||
6 | Required Properties: | ||
7 | - compatiable: should be one of the following. | ||
8 | * samsung,exynos4210-pd - for exynos4210 type power domain. | ||
9 | - reg: physical base address of the controller and length of memory mapped | ||
10 | region. | ||
11 | |||
12 | Optional Properties: | ||
13 | - samsung,exynos4210-pd-off: Specifies that the power domain is in turned-off | ||
14 | state during boot and remains to be turned-off until explicitly turned-on. | ||
15 | |||
16 | Example: | ||
17 | |||
18 | lcd0: power-domain-lcd0 { | ||
19 | compatible = "samsung,exynos4210-pd"; | ||
20 | reg = <0x10023C00 0x10>; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/omap/omap.txt b/Documentation/devicetree/bindings/arm/omap/omap.txt index dbdab40ed3a6..e78e8bccac30 100644 --- a/Documentation/devicetree/bindings/arm/omap/omap.txt +++ b/Documentation/devicetree/bindings/arm/omap/omap.txt | |||
@@ -5,7 +5,7 @@ IPs present in the SoC. | |||
5 | On top of that an omap_device is created to extend the platform_device | 5 | On top of that an omap_device is created to extend the platform_device |
6 | capabilities and to allow binding with one or several hwmods. | 6 | capabilities and to allow binding with one or several hwmods. |
7 | The hwmods will contain all the information to build the device: | 7 | The hwmods will contain all the information to build the device: |
8 | adresse range, irq lines, dma lines, interconnect, PRCM register, | 8 | address range, irq lines, dma lines, interconnect, PRCM register, |
9 | clock domain, input clocks. | 9 | clock domain, input clocks. |
10 | For the moment just point to the existing hwmod, the next step will be | 10 | For the moment just point to the existing hwmod, the next step will be |
11 | to move data from hwmod to device-tree representation. | 11 | to move data from hwmod to device-tree representation. |
@@ -41,3 +41,9 @@ Boards: | |||
41 | 41 | ||
42 | - OMAP4 PandaBoard : Low cost community board | 42 | - OMAP4 PandaBoard : Low cost community board |
43 | compatible = "ti,omap4-panda", "ti,omap4430" | 43 | compatible = "ti,omap4-panda", "ti,omap4430" |
44 | |||
45 | - OMAP3 EVM : Software Developement Board for OMAP35x, AM/DM37x | ||
46 | compatible = "ti,omap3-evm", "ti,omap3" | ||
47 | |||
48 | - AM335X EVM : Software Developement Board for AM335x | ||
49 | compatible = "ti,am335x-evm", "ti,am33xx", "ti,omap3" | ||
diff --git a/Documentation/devicetree/bindings/arm/sirf.txt b/Documentation/devicetree/bindings/arm/sirf.txt index 6b07f65b32de..1881e1c6dda5 100644 --- a/Documentation/devicetree/bindings/arm/sirf.txt +++ b/Documentation/devicetree/bindings/arm/sirf.txt | |||
@@ -1,3 +1,3 @@ | |||
1 | prima2 "cb" evalutation board | 1 | prima2 "cb" evaluation board |
2 | Required root node properties: | 2 | Required root node properties: |
3 | - compatible = "sirf,prima2-cb", "sirf,prima2"; | 3 | - compatible = "sirf,prima2-cb", "sirf,prima2"; |
diff --git a/Documentation/devicetree/bindings/i2c/sirf-i2c.txt b/Documentation/devicetree/bindings/i2c/sirf-i2c.txt new file mode 100644 index 000000000000..7baf9e133fa8 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/sirf-i2c.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | I2C for SiRFprimaII platforms | ||
2 | |||
3 | Required properties : | ||
4 | - compatible : Must be "sirf,prima2-i2c" | ||
5 | - reg: physical base address of the controller and length of memory mapped | ||
6 | region. | ||
7 | - interrupts: interrupt number to the cpu. | ||
8 | |||
9 | Optional properties: | ||
10 | - clock-frequency : Constains desired I2C/HS-I2C bus clock frequency in Hz. | ||
11 | The absence of the propoerty indicates the default frequency 100 kHz. | ||
12 | |||
13 | Examples : | ||
14 | |||
15 | i2c0: i2c@b00e0000 { | ||
16 | compatible = "sirf,prima2-i2c"; | ||
17 | reg = <0xb00e0000 0x10000>; | ||
18 | interrupts = <24>; | ||
19 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/matrix-keymap.txt b/Documentation/devicetree/bindings/input/matrix-keymap.txt new file mode 100644 index 000000000000..3cd8b98ccd2d --- /dev/null +++ b/Documentation/devicetree/bindings/input/matrix-keymap.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | A simple common binding for matrix-connected key boards. Currently targeted at | ||
2 | defining the keys in the scope of linux key codes since that is a stable and | ||
3 | standardized interface at this time. | ||
4 | |||
5 | Required properties: | ||
6 | - linux,keymap: an array of packed 1-cell entries containing the equivalent | ||
7 | of row, column and linux key-code. The 32-bit big endian cell is packed | ||
8 | as: | ||
9 | row << 24 | column << 16 | key-code | ||
10 | |||
11 | Optional properties: | ||
12 | Some users of this binding might choose to specify secondary keymaps for | ||
13 | cases where there is a modifier key such as a Fn key. Proposed names | ||
14 | for said properties are "linux,fn-keymap" or with another descriptive | ||
15 | word for the modifier other from "Fn". | ||
16 | |||
17 | Example: | ||
18 | linux,keymap = < 0x00030012 | ||
19 | 0x0102003a >; | ||
diff --git a/Documentation/devicetree/bindings/input/tegra-kbc.txt b/Documentation/devicetree/bindings/input/tegra-kbc.txt index 5ecfa99089b4..72683be6de35 100644 --- a/Documentation/devicetree/bindings/input/tegra-kbc.txt +++ b/Documentation/devicetree/bindings/input/tegra-kbc.txt | |||
@@ -3,16 +3,21 @@ | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: "nvidia,tegra20-kbc" | 4 | - compatible: "nvidia,tegra20-kbc" |
5 | 5 | ||
6 | Optional properties: | 6 | Optional properties, in addition to those specified by the shared |
7 | - debounce-delay: delay in milliseconds per row scan for debouncing | 7 | matrix-keyboard bindings: |
8 | - repeat-delay: delay in milliseconds before repeat starts | 8 | |
9 | - ghost-filter: enable ghost filtering for this device | 9 | - linux,fn-keymap: a second keymap, same specification as the |
10 | - wakeup-source: configure keyboard as a wakeup source for suspend/resume | 10 | matrix-keyboard-controller spec but to be used when the KEY_FN modifier |
11 | key is pressed. | ||
12 | - nvidia,debounce-delay-ms: delay in milliseconds per row scan for debouncing | ||
13 | - nvidia,repeat-delay-ms: delay in milliseconds before repeat starts | ||
14 | - nvidia,ghost-filter: enable ghost filtering for this device | ||
15 | - nvidia,wakeup-source: configure keyboard as a wakeup source for suspend/resume | ||
11 | 16 | ||
12 | Example: | 17 | Example: |
13 | 18 | ||
14 | keyboard: keyboard { | 19 | keyboard: keyboard { |
15 | compatible = "nvidia,tegra20-kbc"; | 20 | compatible = "nvidia,tegra20-kbc"; |
16 | reg = <0x7000e200 0x100>; | 21 | reg = <0x7000e200 0x100>; |
17 | ghost-filter; | 22 | nvidia,ghost-filter; |
18 | }; | 23 | }; |
diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt new file mode 100644 index 000000000000..1f62623f8c3f --- /dev/null +++ b/Documentation/devicetree/bindings/net/stmmac.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | * STMicroelectronics 10/100/1000 Ethernet driver (GMAC) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "st,spear600-gmac" | ||
5 | - reg: Address and length of the register set for the device | ||
6 | - interrupt-parent: Should be the phandle for the interrupt controller | ||
7 | that services interrupts for this device | ||
8 | - interrupts: Should contain the STMMAC interrupts | ||
9 | - interrupt-names: Should contain the interrupt names "macirq" | ||
10 | "eth_wake_irq" if this interrupt is supported in the "interrupts" | ||
11 | property | ||
12 | - phy-mode: String, operation mode of the PHY interface. | ||
13 | Supported values are: "mii", "rmii", "gmii", "rgmii". | ||
14 | |||
15 | Optional properties: | ||
16 | - mac-address: 6 bytes, mac address | ||
17 | |||
18 | Examples: | ||
19 | |||
20 | gmac0: ethernet@e0800000 { | ||
21 | compatible = "st,spear600-gmac"; | ||
22 | reg = <0xe0800000 0x8000>; | ||
23 | interrupt-parent = <&vic1>; | ||
24 | interrupts = <24 23>; | ||
25 | interrupt-names = "macirq", "eth_wake_irq"; | ||
26 | mac-address = [000000000000]; /* Filled in by U-Boot */ | ||
27 | phy-mode = "gmii"; | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/mpic-msgr.txt b/Documentation/devicetree/bindings/powerpc/fsl/mpic-msgr.txt new file mode 100644 index 000000000000..bc8ded641ab6 --- /dev/null +++ b/Documentation/devicetree/bindings/powerpc/fsl/mpic-msgr.txt | |||
@@ -0,0 +1,63 @@ | |||
1 | * FSL MPIC Message Registers | ||
2 | |||
3 | This binding specifies what properties must be available in the device tree | ||
4 | representation of the message register blocks found in some FSL MPIC | ||
5 | implementations. | ||
6 | |||
7 | Required properties: | ||
8 | |||
9 | - compatible: Specifies the compatibility list for the message register | ||
10 | block. The type shall be <string-list> and the value shall be of the form | ||
11 | "fsl,mpic-v<version>-msgr", where <version> is the version number of | ||
12 | the MPIC containing the message registers. | ||
13 | |||
14 | - reg: Specifies the base physical address(s) and size(s) of the | ||
15 | message register block's addressable register space. The type shall be | ||
16 | <prop-encoded-array>. | ||
17 | |||
18 | - interrupts: Specifies a list of interrupt-specifiers which are available | ||
19 | for receiving interrupts. Interrupt-specifier consists of two cells: first | ||
20 | cell is interrupt-number and second cell is level-sense. The type shall be | ||
21 | <prop-encoded-array>. | ||
22 | |||
23 | Optional properties: | ||
24 | |||
25 | - mpic-msgr-receive-mask: Specifies what registers in the containing block | ||
26 | are allowed to receive interrupts. The value is a bit mask where a set | ||
27 | bit at bit 'n' indicates that message register 'n' can receive interrupts. | ||
28 | Note that "bit 'n'" is numbered from LSB for PPC hardware. The type shall | ||
29 | be <u32>. If not present, then all of the message registers in the block | ||
30 | are available. | ||
31 | |||
32 | Aliases: | ||
33 | |||
34 | An alias should be created for every message register block. They are not | ||
35 | required, though. However, a particular implementation of this binding | ||
36 | may require aliases to be present. Aliases are of the form | ||
37 | 'mpic-msgr-block<n>', where <n> is an integer specifying the block's number. | ||
38 | Numbers shall start at 0. | ||
39 | |||
40 | Example: | ||
41 | |||
42 | aliases { | ||
43 | mpic-msgr-block0 = &mpic_msgr_block0; | ||
44 | mpic-msgr-block1 = &mpic_msgr_block1; | ||
45 | }; | ||
46 | |||
47 | mpic_msgr_block0: mpic-msgr-block@41400 { | ||
48 | compatible = "fsl,mpic-v3.1-msgr"; | ||
49 | reg = <0x41400 0x200>; | ||
50 | // Message registers 0 and 2 in this block can receive interrupts on | ||
51 | // sources 0xb0 and 0xb2, respectively. | ||
52 | interrupts = <0xb0 2 0xb2 2>; | ||
53 | mpic-msgr-receive-mask = <0x5>; | ||
54 | }; | ||
55 | |||
56 | mpic_msgr_block1: mpic-msgr-block@42400 { | ||
57 | compatible = "fsl,mpic-v3.1-msgr"; | ||
58 | reg = <0x42400 0x200>; | ||
59 | // Message registers 0 and 2 in this block can receive interrupts on | ||
60 | // sources 0xb4 and 0xb6, respectively. | ||
61 | interrupts = <0xb4 2 0xb6 2>; | ||
62 | mpic-msgr-receive-mask = <0x5>; | ||
63 | }; | ||
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt b/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt index 2cf38bd841fd..dc5744636a57 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt | |||
@@ -56,7 +56,27 @@ PROPERTIES | |||
56 | to the client. The presence of this property also mandates | 56 | to the client. The presence of this property also mandates |
57 | that any initialization related to interrupt sources shall | 57 | that any initialization related to interrupt sources shall |
58 | be limited to sources explicitly referenced in the device tree. | 58 | be limited to sources explicitly referenced in the device tree. |
59 | 59 | ||
60 | - big-endian | ||
61 | Usage: optional | ||
62 | Value type: <empty> | ||
63 | If present the MPIC will be assumed to be big-endian. Some | ||
64 | device-trees omit this property on MPIC nodes even when the MPIC is | ||
65 | in fact big-endian, so certain boards override this property. | ||
66 | |||
67 | - single-cpu-affinity | ||
68 | Usage: optional | ||
69 | Value type: <empty> | ||
70 | If present the MPIC will be assumed to only be able to route | ||
71 | non-IPI interrupts to a single CPU at a time (EG: Freescale MPIC). | ||
72 | |||
73 | - last-interrupt-source | ||
74 | Usage: optional | ||
75 | Value type: <u32> | ||
76 | Some MPICs do not correctly report the number of hardware sources | ||
77 | in the global feature registers. If specified, this field will | ||
78 | override the value read from MPIC_GREG_FEATURE_LAST_SRC. | ||
79 | |||
60 | INTERRUPT SPECIFIER DEFINITION | 80 | INTERRUPT SPECIFIER DEFINITION |
61 | 81 | ||
62 | Interrupt specifiers consists of 4 cells encoded as | 82 | Interrupt specifiers consists of 4 cells encoded as |
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt b/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt index 5d586e1ccaf5..5693877ab377 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt | |||
@@ -6,8 +6,10 @@ Required properties: | |||
6 | etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" depending on | 6 | etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" depending on |
7 | the parent type. | 7 | the parent type. |
8 | 8 | ||
9 | - reg : should contain the address and the length of the shared message | 9 | - reg : It may contain one or two regions. The first region should contain |
10 | interrupt register set. | 10 | the address and the length of the shared message interrupt register set. |
11 | The second region should contain the address of aliased MSIIR register for | ||
12 | platforms that have such an alias. | ||
11 | 13 | ||
12 | - msi-available-ranges: use <start count> style section to define which | 14 | - msi-available-ranges: use <start count> style section to define which |
13 | msi interrupt can be used in the 256 msi interrupts. This property is | 15 | msi interrupt can be used in the 256 msi interrupts. This property is |
diff --git a/Documentation/devicetree/bindings/regulator/twl-regulator.txt b/Documentation/devicetree/bindings/regulator/twl-regulator.txt new file mode 100644 index 000000000000..0c3395d55ac1 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/twl-regulator.txt | |||
@@ -0,0 +1,68 @@ | |||
1 | TWL family of regulators | ||
2 | |||
3 | Required properties: | ||
4 | For twl6030 regulators/LDOs | ||
5 | - compatible: | ||
6 | - "ti,twl6030-vaux1" for VAUX1 LDO | ||
7 | - "ti,twl6030-vaux2" for VAUX2 LDO | ||
8 | - "ti,twl6030-vaux3" for VAUX3 LDO | ||
9 | - "ti,twl6030-vmmc" for VMMC LDO | ||
10 | - "ti,twl6030-vpp" for VPP LDO | ||
11 | - "ti,twl6030-vusim" for VUSIM LDO | ||
12 | - "ti,twl6030-vana" for VANA LDO | ||
13 | - "ti,twl6030-vcxio" for VCXIO LDO | ||
14 | - "ti,twl6030-vdac" for VDAC LDO | ||
15 | - "ti,twl6030-vusb" for VUSB LDO | ||
16 | - "ti,twl6030-v1v8" for V1V8 LDO | ||
17 | - "ti,twl6030-v2v1" for V2V1 LDO | ||
18 | - "ti,twl6030-clk32kg" for CLK32KG RESOURCE | ||
19 | - "ti,twl6030-vdd1" for VDD1 SMPS | ||
20 | - "ti,twl6030-vdd2" for VDD2 SMPS | ||
21 | - "ti,twl6030-vdd3" for VDD3 SMPS | ||
22 | For twl6025 regulators/LDOs | ||
23 | - compatible: | ||
24 | - "ti,twl6025-ldo1" for LDO1 LDO | ||
25 | - "ti,twl6025-ldo2" for LDO2 LDO | ||
26 | - "ti,twl6025-ldo3" for LDO3 LDO | ||
27 | - "ti,twl6025-ldo4" for LDO4 LDO | ||
28 | - "ti,twl6025-ldo5" for LDO5 LDO | ||
29 | - "ti,twl6025-ldo6" for LDO6 LDO | ||
30 | - "ti,twl6025-ldo7" for LDO7 LDO | ||
31 | - "ti,twl6025-ldoln" for LDOLN LDO | ||
32 | - "ti,twl6025-ldousb" for LDOUSB LDO | ||
33 | - "ti,twl6025-smps3" for SMPS3 SMPS | ||
34 | - "ti,twl6025-smps4" for SMPS4 SMPS | ||
35 | - "ti,twl6025-vio" for VIO SMPS | ||
36 | For twl4030 regulators/LDOs | ||
37 | - compatible: | ||
38 | - "ti,twl4030-vaux1" for VAUX1 LDO | ||
39 | - "ti,twl4030-vaux2" for VAUX2 LDO | ||
40 | - "ti,twl5030-vaux2" for VAUX2 LDO | ||
41 | - "ti,twl4030-vaux3" for VAUX3 LDO | ||
42 | - "ti,twl4030-vaux4" for VAUX4 LDO | ||
43 | - "ti,twl4030-vmmc1" for VMMC1 LDO | ||
44 | - "ti,twl4030-vmmc2" for VMMC2 LDO | ||
45 | - "ti,twl4030-vpll1" for VPLL1 LDO | ||
46 | - "ti,twl4030-vpll2" for VPLL2 LDO | ||
47 | - "ti,twl4030-vsim" for VSIM LDO | ||
48 | - "ti,twl4030-vdac" for VDAC LDO | ||
49 | - "ti,twl4030-vintana2" for VINTANA2 LDO | ||
50 | - "ti,twl4030-vio" for VIO LDO | ||
51 | - "ti,twl4030-vdd1" for VDD1 SMPS | ||
52 | - "ti,twl4030-vdd2" for VDD2 SMPS | ||
53 | - "ti,twl4030-vintana1" for VINTANA1 LDO | ||
54 | - "ti,twl4030-vintdig" for VINTDIG LDO | ||
55 | - "ti,twl4030-vusb1v5" for VUSB1V5 LDO | ||
56 | - "ti,twl4030-vusb1v8" for VUSB1V8 LDO | ||
57 | - "ti,twl4030-vusb3v1" for VUSB3V1 LDO | ||
58 | |||
59 | Optional properties: | ||
60 | - Any optional property defined in bindings/regulator/regulator.txt | ||
61 | |||
62 | Example: | ||
63 | |||
64 | xyz: regulator@0 { | ||
65 | compatible = "ti,twl6030-vaux1"; | ||
66 | regulator-min-microvolt = <1000000>; | ||
67 | regulator-max-microvolt = <3000000>; | ||
68 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/alc5632.txt b/Documentation/devicetree/bindings/sound/alc5632.txt new file mode 100644 index 000000000000..8608f747dcfe --- /dev/null +++ b/Documentation/devicetree/bindings/sound/alc5632.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | ALC5632 audio CODEC | ||
2 | |||
3 | This device supports I2C only. | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible : "realtek,alc5632" | ||
8 | |||
9 | - reg : the I2C address of the device. | ||
10 | |||
11 | - gpio-controller : Indicates this device is a GPIO controller. | ||
12 | |||
13 | - #gpio-cells : Should be two. The first cell is the pin number and the | ||
14 | second cell is used to specify optional parameters (currently unused). | ||
15 | |||
16 | Example: | ||
17 | |||
18 | alc5632: alc5632@1e { | ||
19 | compatible = "realtek,alc5632"; | ||
20 | reg = <0x1a>; | ||
21 | |||
22 | gpio-controller; | ||
23 | #gpio-cells = <2>; | ||
24 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/imx-audmux.txt b/Documentation/devicetree/bindings/sound/imx-audmux.txt new file mode 100644 index 000000000000..215aa9817213 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/imx-audmux.txt | |||
@@ -0,0 +1,13 @@ | |||
1 | Freescale Digital Audio Mux (AUDMUX) device | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "fsl,imx21-audmux" for AUDMUX version firstly used on i.MX21, | ||
5 | or "fsl,imx31-audmux" for the version firstly used on i.MX31. | ||
6 | - reg : Should contain AUDMUX registers location and length | ||
7 | |||
8 | Example: | ||
9 | |||
10 | audmux@021d8000 { | ||
11 | compatible = "fsl,imx6q-audmux", "fsl,imx31-audmux"; | ||
12 | reg = <0x021d8000 0x4000>; | ||
13 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/soc/codecs/fsl-sgtl5000.txt b/Documentation/devicetree/bindings/sound/sgtl5000.txt index 2c3cd413f042..2c3cd413f042 100644 --- a/Documentation/devicetree/bindings/sound/soc/codecs/fsl-sgtl5000.txt +++ b/Documentation/devicetree/bindings/sound/sgtl5000.txt | |||
diff --git a/Documentation/devicetree/bindings/sound/tegra-audio-alc5632.txt b/Documentation/devicetree/bindings/sound/tegra-audio-alc5632.txt new file mode 100644 index 000000000000..b77a97c9101e --- /dev/null +++ b/Documentation/devicetree/bindings/sound/tegra-audio-alc5632.txt | |||
@@ -0,0 +1,59 @@ | |||
1 | NVIDIA Tegra audio complex | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "nvidia,tegra-audio-alc5632" | ||
5 | - nvidia,model : The user-visible name of this sound complex. | ||
6 | - nvidia,audio-routing : A list of the connections between audio components. | ||
7 | Each entry is a pair of strings, the first being the connection's sink, | ||
8 | the second being the connection's source. Valid names for sources and | ||
9 | sinks are the ALC5632's pins: | ||
10 | |||
11 | ALC5632 pins: | ||
12 | |||
13 | * SPK_OUTP | ||
14 | * SPK_OUTN | ||
15 | * HP_OUT_L | ||
16 | * HP_OUT_R | ||
17 | * AUX_OUT_P | ||
18 | * AUX_OUT_N | ||
19 | * LINE_IN_L | ||
20 | * LINE_IN_R | ||
21 | * PHONE_P | ||
22 | * PHONE_N | ||
23 | * MIC1_P | ||
24 | * MIC1_N | ||
25 | * MIC2_P | ||
26 | * MIC2_N | ||
27 | * MICBIAS1 | ||
28 | * DMICDAT | ||
29 | |||
30 | Board connectors: | ||
31 | |||
32 | * Headset Stereophone | ||
33 | * Int Spk | ||
34 | * Headset Mic | ||
35 | * Digital Mic | ||
36 | |||
37 | - nvidia,i2s-controller : The phandle of the Tegra I2S controller | ||
38 | - nvidia,audio-codec : The phandle of the ALC5632 audio codec | ||
39 | |||
40 | Example: | ||
41 | |||
42 | sound { | ||
43 | compatible = "nvidia,tegra-audio-alc5632-paz00", | ||
44 | "nvidia,tegra-audio-alc5632"; | ||
45 | |||
46 | nvidia,model = "Compal PAZ00"; | ||
47 | |||
48 | nvidia,audio-routing = | ||
49 | "Int Spk", "SPK_OUTP", | ||
50 | "Int Spk", "SPK_OUTN", | ||
51 | "Headset Mic","MICBIAS1", | ||
52 | "MIC1_N", "Headset Mic", | ||
53 | "MIC1_P", "Headset Mic", | ||
54 | "Headset Stereophone", "HP_OUT_R", | ||
55 | "Headset Stereophone", "HP_OUT_L"; | ||
56 | |||
57 | nvidia,i2s-controller = <&tegra_i2s1>; | ||
58 | nvidia,audio-codec = <&alc5632>; | ||
59 | }; | ||
diff --git a/Documentation/devicetree/bindings/spi/omap-spi.txt b/Documentation/devicetree/bindings/spi/omap-spi.txt new file mode 100644 index 000000000000..81df374adbb9 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/omap-spi.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | OMAP2+ McSPI device | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : | ||
5 | - "ti,omap2-spi" for OMAP2 & OMAP3. | ||
6 | - "ti,omap4-spi" for OMAP4+. | ||
7 | - ti,spi-num-cs : Number of chipselect supported by the instance. | ||
8 | - ti,hwmods: Name of the hwmod associated to the McSPI | ||
9 | |||
10 | |||
11 | Example: | ||
12 | |||
13 | mcspi1: mcspi@1 { | ||
14 | #address-cells = <1>; | ||
15 | #size-cells = <0>; | ||
16 | compatible = "ti,omap4-mcspi"; | ||
17 | ti,hwmods = "mcspi1"; | ||
18 | ti,spi-num-cs = <4>; | ||
19 | }; | ||
20 | |||
diff --git a/Documentation/devicetree/bindings/tty/serial/efm32-uart.txt b/Documentation/devicetree/bindings/tty/serial/efm32-uart.txt new file mode 100644 index 000000000000..6588b6950a7f --- /dev/null +++ b/Documentation/devicetree/bindings/tty/serial/efm32-uart.txt | |||
@@ -0,0 +1,14 @@ | |||
1 | * Energymicro efm32 UART | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "efm32,uart" | ||
5 | - reg : Address and length of the register set | ||
6 | - interrupts : Should contain uart interrupt | ||
7 | |||
8 | Example: | ||
9 | |||
10 | uart@0x4000c400 { | ||
11 | compatible = "efm32,uart"; | ||
12 | reg = <0x4000c400 0x400>; | ||
13 | interrupts = <15>; | ||
14 | }; | ||
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index a20008ab319a..82ac057a24a9 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt | |||
@@ -34,6 +34,7 @@ picochip Picochip Ltd | |||
34 | powervr Imagination Technologies | 34 | powervr Imagination Technologies |
35 | qcom Qualcomm, Inc. | 35 | qcom Qualcomm, Inc. |
36 | ramtron Ramtron International | 36 | ramtron Ramtron International |
37 | realtek Realtek Semiconductor Corp. | ||
37 | samsung Samsung Semiconductor | 38 | samsung Samsung Semiconductor |
38 | sbs Smart Battery System | 39 | sbs Smart Battery System |
39 | schindler Schindler | 40 | schindler Schindler |
diff --git a/Documentation/devicetree/booting-without-of.txt b/Documentation/devicetree/booting-without-of.txt index 7c1329de0596..da0bfeb4253d 100644 --- a/Documentation/devicetree/booting-without-of.txt +++ b/Documentation/devicetree/booting-without-of.txt | |||
@@ -169,7 +169,7 @@ it with special cases. | |||
169 | 169 | ||
170 | b) Entry with a flattened device-tree block. Firmware loads the | 170 | b) Entry with a flattened device-tree block. Firmware loads the |
171 | physical address of the flattened device tree block (dtb) into r2, | 171 | physical address of the flattened device tree block (dtb) into r2, |
172 | r1 is not used, but it is considered good practise to use a valid | 172 | r1 is not used, but it is considered good practice to use a valid |
173 | machine number as described in Documentation/arm/Booting. | 173 | machine number as described in Documentation/arm/Booting. |
174 | 174 | ||
175 | r0 : 0 | 175 | r0 : 0 |
diff --git a/Documentation/dmaengine.txt b/Documentation/dmaengine.txt index bbe6cb3d1856..879b6e31e2da 100644 --- a/Documentation/dmaengine.txt +++ b/Documentation/dmaengine.txt | |||
@@ -63,7 +63,7 @@ The slave DMA usage consists of following steps: | |||
63 | struct dma_slave_config *config) | 63 | struct dma_slave_config *config) |
64 | 64 | ||
65 | Please see the dma_slave_config structure definition in dmaengine.h | 65 | Please see the dma_slave_config structure definition in dmaengine.h |
66 | for a detailed explaination of the struct members. Please note | 66 | for a detailed explanation of the struct members. Please note |
67 | that the 'direction' member will be going away as it duplicates the | 67 | that the 'direction' member will be going away as it duplicates the |
68 | direction given in the prepare call. | 68 | direction given in the prepare call. |
69 | 69 | ||
diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt index 41c0c5d1ba14..2a596a4fc23e 100644 --- a/Documentation/driver-model/devres.txt +++ b/Documentation/driver-model/devres.txt | |||
@@ -271,3 +271,8 @@ IOMAP | |||
271 | pcim_iounmap() | 271 | pcim_iounmap() |
272 | pcim_iomap_table() : array of mapped addresses indexed by BAR | 272 | pcim_iomap_table() : array of mapped addresses indexed by BAR |
273 | pcim_iomap_regions() : do request_region() and iomap() on multiple BARs | 273 | pcim_iomap_regions() : do request_region() and iomap() on multiple BARs |
274 | |||
275 | REGULATOR | ||
276 | devm_regulator_get() | ||
277 | devm_regulator_put() | ||
278 | devm_regulator_bulk_get() | ||
diff --git a/Documentation/dvb/cards.txt b/Documentation/dvb/cards.txt index cc09187a5db7..97709e9a3076 100644 --- a/Documentation/dvb/cards.txt +++ b/Documentation/dvb/cards.txt | |||
@@ -119,4 +119,5 @@ o Cards based on the Phillips saa7134 PCI bridge: | |||
119 | - Compro Videomate DVB-T300 | 119 | - Compro Videomate DVB-T300 |
120 | - Compro Videomate DVB-T200 | 120 | - Compro Videomate DVB-T200 |
121 | - AVerMedia AVerTVHD MCE A180 | 121 | - AVerMedia AVerTVHD MCE A180 |
122 | - KWorld PC150-U ATSC Hybrid | ||
122 | 123 | ||
diff --git a/Documentation/dvb/lmedm04.txt b/Documentation/dvb/lmedm04.txt index 10b5f0411386..f4b720a14675 100644 --- a/Documentation/dvb/lmedm04.txt +++ b/Documentation/dvb/lmedm04.txt | |||
@@ -66,5 +66,16 @@ dd if=US290D.sys ibs=1 skip=36856 count=3976 of=dvb-usb-lme2510-s0194.fw | |||
66 | For LME2510C | 66 | For LME2510C |
67 | dd if=US290D.sys ibs=1 skip=33152 count=3697 of=dvb-usb-lme2510c-s0194.fw | 67 | dd if=US290D.sys ibs=1 skip=33152 count=3697 of=dvb-usb-lme2510c-s0194.fw |
68 | 68 | ||
69 | --------------------------------------------------------------------- | ||
70 | |||
71 | The m88rs2000 tuner driver can be found in windows/system32/drivers | ||
72 | |||
73 | US2B0D.sys (dated 29 Jun 2010) | ||
74 | |||
75 | dd if=US2B0D.sys ibs=1 skip=34432 count=3871 of=dvb-usb-lme2510c-rs2000.fw | ||
76 | |||
77 | We need to modify id of rs2000 firmware or it will warm boot id 3344:1120. | ||
78 | |||
79 | echo -ne \\xF0\\x22 | dd conv=notrunc bs=1 count=2 seek=266 of=dvb-usb-lme2510c-rs2000.fw | ||
69 | 80 | ||
70 | Copy the firmware file(s) to /lib/firmware | 81 | Copy the firmware file(s) to /lib/firmware |
diff --git a/Documentation/dynamic-debug-howto.txt b/Documentation/dynamic-debug-howto.txt index f959909d7154..74e6c7782678 100644 --- a/Documentation/dynamic-debug-howto.txt +++ b/Documentation/dynamic-debug-howto.txt | |||
@@ -12,7 +12,7 @@ dynamically enabled per-callsite. | |||
12 | Dynamic debug has even more useful features: | 12 | Dynamic debug has even more useful features: |
13 | 13 | ||
14 | * Simple query language allows turning on and off debugging statements by | 14 | * Simple query language allows turning on and off debugging statements by |
15 | matching any combination of: | 15 | matching any combination of 0 or 1 of: |
16 | 16 | ||
17 | - source filename | 17 | - source filename |
18 | - function name | 18 | - function name |
@@ -79,31 +79,24 @@ Command Language Reference | |||
79 | ========================== | 79 | ========================== |
80 | 80 | ||
81 | At the lexical level, a command comprises a sequence of words separated | 81 | At the lexical level, a command comprises a sequence of words separated |
82 | by whitespace characters. Note that newlines are treated as word | 82 | by spaces or tabs. So these are all equivalent: |
83 | separators and do *not* end a command or allow multiple commands to | ||
84 | be done together. So these are all equivalent: | ||
85 | 83 | ||
86 | nullarbor:~ # echo -c 'file svcsock.c line 1603 +p' > | 84 | nullarbor:~ # echo -c 'file svcsock.c line 1603 +p' > |
87 | <debugfs>/dynamic_debug/control | 85 | <debugfs>/dynamic_debug/control |
88 | nullarbor:~ # echo -c ' file svcsock.c line 1603 +p ' > | 86 | nullarbor:~ # echo -c ' file svcsock.c line 1603 +p ' > |
89 | <debugfs>/dynamic_debug/control | 87 | <debugfs>/dynamic_debug/control |
90 | nullarbor:~ # echo -c 'file svcsock.c\nline 1603 +p' > | ||
91 | <debugfs>/dynamic_debug/control | ||
92 | nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' > | 88 | nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' > |
93 | <debugfs>/dynamic_debug/control | 89 | <debugfs>/dynamic_debug/control |
94 | 90 | ||
95 | Commands are bounded by a write() system call. If you want to do | 91 | Command submissions are bounded by a write() system call. |
96 | multiple commands you need to do a separate "echo" for each, like: | 92 | Multiple commands can be written together, separated by ';' or '\n'. |
97 | 93 | ||
98 | nullarbor:~ # echo 'file svcsock.c line 1603 +p' > /proc/dprintk ;\ | 94 | ~# echo "func pnpacpi_get_resources +p; func pnp_assign_mem +p" \ |
99 | > echo 'file svcsock.c line 1563 +p' > /proc/dprintk | 95 | > <debugfs>/dynamic_debug/control |
100 | 96 | ||
101 | or even like: | 97 | If your query set is big, you can batch them too: |
102 | 98 | ||
103 | nullarbor:~ # ( | 99 | ~# cat query-batch-file > <debugfs>/dynamic_debug/control |
104 | > echo 'file svcsock.c line 1603 +p' ;\ | ||
105 | > echo 'file svcsock.c line 1563 +p' ;\ | ||
106 | > ) > /proc/dprintk | ||
107 | 100 | ||
108 | At the syntactical level, a command comprises a sequence of match | 101 | At the syntactical level, a command comprises a sequence of match |
109 | specifications, followed by a flags change specification. | 102 | specifications, followed by a flags change specification. |
@@ -144,11 +137,12 @@ func | |||
144 | func svc_tcp_accept | 137 | func svc_tcp_accept |
145 | 138 | ||
146 | file | 139 | file |
147 | The given string is compared against either the full | 140 | The given string is compared against either the full pathname, the |
148 | pathname or the basename of the source file of each | 141 | src-root relative pathname, or the basename of the source file of |
149 | callsite. Examples: | 142 | each callsite. Examples: |
150 | 143 | ||
151 | file svcsock.c | 144 | file svcsock.c |
145 | file kernel/freezer.c | ||
152 | file /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svcsock.c | 146 | file /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svcsock.c |
153 | 147 | ||
154 | module | 148 | module |
diff --git a/Documentation/edac.txt b/Documentation/edac.txt index 249822cde82b..fdcc49fad8e1 100644 --- a/Documentation/edac.txt +++ b/Documentation/edac.txt | |||
@@ -334,8 +334,8 @@ Sdram memory scrubbing rate: | |||
334 | 334 | ||
335 | Reading the file will return the actual scrubbing rate employed. | 335 | Reading the file will return the actual scrubbing rate employed. |
336 | 336 | ||
337 | If configuration fails or memory scrubbing is not implemented, the value | 337 | If configuration fails or memory scrubbing is not implemented, accessing |
338 | of the attribute file will be -1. | 338 | that attribute will fail. |
339 | 339 | ||
340 | 340 | ||
341 | 341 | ||
diff --git a/Documentation/fb/matroxfb.txt b/Documentation/fb/matroxfb.txt index e5ce8a1a978b..b95f5bb522f2 100644 --- a/Documentation/fb/matroxfb.txt +++ b/Documentation/fb/matroxfb.txt | |||
@@ -177,8 +177,8 @@ sgram - tells to driver that you have Gxx0 with SGRAM memory. It has no | |||
177 | effect without `init'. | 177 | effect without `init'. |
178 | sdram - tells to driver that you have Gxx0 with SDRAM memory. | 178 | sdram - tells to driver that you have Gxx0 with SDRAM memory. |
179 | It is a default. | 179 | It is a default. |
180 | inv24 - change timings parameters for 24bpp modes on Millenium and | 180 | inv24 - change timings parameters for 24bpp modes on Millennium and |
181 | Millenium II. Specify this if you see strange color shadows around | 181 | Millennium II. Specify this if you see strange color shadows around |
182 | characters. | 182 | characters. |
183 | noinv24 - use standard timings. It is the default. | 183 | noinv24 - use standard timings. It is the default. |
184 | inverse - invert colors on screen (for LCD displays) | 184 | inverse - invert colors on screen (for LCD displays) |
@@ -204,9 +204,9 @@ grayscale - enable grayscale summing. It works in PSEUDOCOLOR modes (text, | |||
204 | can paint colors. | 204 | can paint colors. |
205 | nograyscale - disable grayscale summing. It is default. | 205 | nograyscale - disable grayscale summing. It is default. |
206 | cross4MB - enables that pixel line can cross 4MB boundary. It is default for | 206 | cross4MB - enables that pixel line can cross 4MB boundary. It is default for |
207 | non-Millenium. | 207 | non-Millennium. |
208 | nocross4MB - pixel line must not cross 4MB boundary. It is default for | 208 | nocross4MB - pixel line must not cross 4MB boundary. It is default for |
209 | Millenium I or II, because of these devices have hardware | 209 | Millennium I or II, because of these devices have hardware |
210 | limitations which do not allow this. But this option is | 210 | limitations which do not allow this. But this option is |
211 | incompatible with some (if not all yet released) versions of | 211 | incompatible with some (if not all yet released) versions of |
212 | XF86_FBDev. | 212 | XF86_FBDev. |
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index a0ffac029a0d..4bfd982f8080 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -524,3 +524,22 @@ Files: arch/arm/mach-at91/at91cap9.c | |||
524 | Why: The code is not actively maintained and platforms are now hard to find. | 524 | Why: The code is not actively maintained and platforms are now hard to find. |
525 | Who: Nicolas Ferre <nicolas.ferre@atmel.com> | 525 | Who: Nicolas Ferre <nicolas.ferre@atmel.com> |
526 | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 526 | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> |
527 | |||
528 | ---------------------------- | ||
529 | |||
530 | What: Low Performance USB Block driver ("CONFIG_BLK_DEV_UB") | ||
531 | When: 3.6 | ||
532 | Why: This driver provides support for USB storage devices like "USB | ||
533 | sticks". As of now, it is deactivated in Debian, Fedora and | ||
534 | Ubuntu. All current users can switch over to usb-storage | ||
535 | (CONFIG_USB_STORAGE) which only drawback is the additional SCSI | ||
536 | stack. | ||
537 | Who: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> | ||
538 | |||
539 | ---------------------------- | ||
540 | |||
541 | What: kmap_atomic(page, km_type) | ||
542 | When: 3.5 | ||
543 | Why: The old kmap_atomic() with two arguments is deprecated, we only | ||
544 | keep it for backward compatibility for few cycles and then drop it. | ||
545 | Who: Cong Wang <amwang@redhat.com> | ||
diff --git a/Documentation/filesystems/debugfs.txt b/Documentation/filesystems/debugfs.txt index 6872c91bce35..7a34f827989c 100644 --- a/Documentation/filesystems/debugfs.txt +++ b/Documentation/filesystems/debugfs.txt | |||
@@ -14,7 +14,10 @@ Debugfs is typically mounted with a command like: | |||
14 | 14 | ||
15 | mount -t debugfs none /sys/kernel/debug | 15 | mount -t debugfs none /sys/kernel/debug |
16 | 16 | ||
17 | (Or an equivalent /etc/fstab line). | 17 | (Or an equivalent /etc/fstab line). |
18 | The debugfs root directory is accessible by anyone by default. To | ||
19 | restrict access to the tree the "uid", "gid" and "mode" mount | ||
20 | options can be used. | ||
18 | 21 | ||
19 | Note that the debugfs API is exported GPL-only to modules. | 22 | Note that the debugfs API is exported GPL-only to modules. |
20 | 23 | ||
@@ -133,7 +136,7 @@ file. | |||
133 | void __iomem *base; | 136 | void __iomem *base; |
134 | }; | 137 | }; |
135 | 138 | ||
136 | struct dentry *debugfs_create_regset32(const char *name, mode_t mode, | 139 | struct dentry *debugfs_create_regset32(const char *name, umode_t mode, |
137 | struct dentry *parent, | 140 | struct dentry *parent, |
138 | struct debugfs_regset32 *regset); | 141 | struct debugfs_regset32 *regset); |
139 | 142 | ||
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt index 10ec4639f152..8c10bf375c73 100644 --- a/Documentation/filesystems/ext4.txt +++ b/Documentation/filesystems/ext4.txt | |||
@@ -308,7 +308,7 @@ min_batch_time=usec This parameter sets the commit time (as | |||
308 | fast disks, at the cost of increasing latency. | 308 | fast disks, at the cost of increasing latency. |
309 | 309 | ||
310 | journal_ioprio=prio The I/O priority (from 0 to 7, where 0 is the | 310 | journal_ioprio=prio The I/O priority (from 0 to 7, where 0 is the |
311 | highest priorty) which should be used for I/O | 311 | highest priority) which should be used for I/O |
312 | operations submitted by kjournald2 during a | 312 | operations submitted by kjournald2 during a |
313 | commit operation. This defaults to 3, which is | 313 | commit operation. This defaults to 3, which is |
314 | a slightly higher priority than the default I/O | 314 | a slightly higher priority than the default I/O |
@@ -343,7 +343,7 @@ noinit_itable Do not initialize any uninitialized inode table | |||
343 | init_itable=n The lazy itable init code will wait n times the | 343 | init_itable=n The lazy itable init code will wait n times the |
344 | number of milliseconds it took to zero out the | 344 | number of milliseconds it took to zero out the |
345 | previous block group's inode table. This | 345 | previous block group's inode table. This |
346 | minimizes the impact on the systme performance | 346 | minimizes the impact on the system performance |
347 | while file system's inode table is being initialized. | 347 | while file system's inode table is being initialized. |
348 | 348 | ||
349 | discard Controls whether ext4 should issue discard/TRIM | 349 | discard Controls whether ext4 should issue discard/TRIM |
diff --git a/Documentation/filesystems/gfs2-uevents.txt b/Documentation/filesystems/gfs2-uevents.txt index d81889669293..19a19ebebc34 100644 --- a/Documentation/filesystems/gfs2-uevents.txt +++ b/Documentation/filesystems/gfs2-uevents.txt | |||
@@ -62,7 +62,7 @@ be fixed. | |||
62 | 62 | ||
63 | The REMOVE uevent is generated at the end of an unsuccessful mount | 63 | The REMOVE uevent is generated at the end of an unsuccessful mount |
64 | or at the end of a umount of the filesystem. All REMOVE uevents will | 64 | or at the end of a umount of the filesystem. All REMOVE uevents will |
65 | have been preceded by at least an ADD uevent for the same fileystem, | 65 | have been preceded by at least an ADD uevent for the same filesystem, |
66 | and unlike the other uevents is generated automatically by the kernel's | 66 | and unlike the other uevents is generated automatically by the kernel's |
67 | kobject subsystem. | 67 | kobject subsystem. |
68 | 68 | ||
diff --git a/Documentation/filesystems/nfs/idmapper.txt b/Documentation/filesystems/nfs/idmapper.txt index 120fd3cf7fd9..fe03d10bb79a 100644 --- a/Documentation/filesystems/nfs/idmapper.txt +++ b/Documentation/filesystems/nfs/idmapper.txt | |||
@@ -4,13 +4,21 @@ ID Mapper | |||
4 | ========= | 4 | ========= |
5 | Id mapper is used by NFS to translate user and group ids into names, and to | 5 | Id mapper is used by NFS to translate user and group ids into names, and to |
6 | translate user and group names into ids. Part of this translation involves | 6 | translate user and group names into ids. Part of this translation involves |
7 | performing an upcall to userspace to request the information. Id mapper will | 7 | performing an upcall to userspace to request the information. There are two |
8 | user request-key to perform this upcall and cache the result. The program | 8 | ways NFS could obtain this information: placing a call to /sbin/request-key |
9 | /usr/sbin/nfs.idmap should be called by request-key, and will perform the | 9 | or by placing a call to the rpc.idmap daemon. |
10 | translation and initialize a key with the resulting information. | 10 | |
11 | NFS will attempt to call /sbin/request-key first. If this succeeds, the | ||
12 | result will be cached using the generic request-key cache. This call should | ||
13 | only fail if /etc/request-key.conf is not configured for the id_resolver key | ||
14 | type, see the "Configuring" section below if you wish to use the request-key | ||
15 | method. | ||
16 | |||
17 | If the call to /sbin/request-key fails (if /etc/request-key.conf is not | ||
18 | configured with the id_resolver key type), then the idmapper will ask the | ||
19 | legacy rpc.idmap daemon for the id mapping. This result will be stored | ||
20 | in a custom NFS idmap cache. | ||
11 | 21 | ||
12 | NFS_USE_NEW_IDMAPPER must be selected when configuring the kernel to use this | ||
13 | feature. | ||
14 | 22 | ||
15 | =========== | 23 | =========== |
16 | Configuring | 24 | Configuring |
diff --git a/Documentation/filesystems/nfs/pnfs.txt b/Documentation/filesystems/nfs/pnfs.txt index 983e14abe7e9..c7919c6e3bea 100644 --- a/Documentation/filesystems/nfs/pnfs.txt +++ b/Documentation/filesystems/nfs/pnfs.txt | |||
@@ -53,3 +53,57 @@ lseg maintains an extra reference corresponding to the NFS_LSEG_VALID | |||
53 | bit which holds it in the pnfs_layout_hdr's list. When the final lseg | 53 | bit which holds it in the pnfs_layout_hdr's list. When the final lseg |
54 | is removed from the pnfs_layout_hdr's list, the NFS_LAYOUT_DESTROYED | 54 | is removed from the pnfs_layout_hdr's list, the NFS_LAYOUT_DESTROYED |
55 | bit is set, preventing any new lsegs from being added. | 55 | bit is set, preventing any new lsegs from being added. |
56 | |||
57 | layout drivers | ||
58 | -------------- | ||
59 | |||
60 | PNFS utilizes what is called layout drivers. The STD defines 3 basic | ||
61 | layout types: "files" "objects" and "blocks". For each of these types | ||
62 | there is a layout-driver with a common function-vectors table which | ||
63 | are called by the nfs-client pnfs-core to implement the different layout | ||
64 | types. | ||
65 | |||
66 | Files-layout-driver code is in: fs/nfs/nfs4filelayout.c && nfs4filelayoutdev.c | ||
67 | Objects-layout-deriver code is in: fs/nfs/objlayout/.. directory | ||
68 | Blocks-layout-deriver code is in: fs/nfs/blocklayout/.. directory | ||
69 | |||
70 | objects-layout setup | ||
71 | -------------------- | ||
72 | |||
73 | As part of the full STD implementation the objlayoutdriver.ko needs, at times, | ||
74 | to automatically login to yet undiscovered iscsi/osd devices. For this the | ||
75 | driver makes up-calles to a user-mode script called *osd_login* | ||
76 | |||
77 | The path_name of the script to use is by default: | ||
78 | /sbin/osd_login. | ||
79 | This name can be overridden by the Kernel module parameter: | ||
80 | objlayoutdriver.osd_login_prog | ||
81 | |||
82 | If Kernel does not find the osd_login_prog path it will zero it out | ||
83 | and will not attempt farther logins. An admin can then write new value | ||
84 | to the objlayoutdriver.osd_login_prog Kernel parameter to re-enable it. | ||
85 | |||
86 | The /sbin/osd_login is part of the nfs-utils package, and should usually | ||
87 | be installed on distributions that support this Kernel version. | ||
88 | |||
89 | The API to the login script is as follows: | ||
90 | Usage: $0 -u <URI> -o <OSDNAME> -s <SYSTEMID> | ||
91 | Options: | ||
92 | -u target uri e.g. iscsi://<ip>:<port> | ||
93 | (allways exists) | ||
94 | (More protocols can be defined in the future. | ||
95 | The client does not interpret this string it is | ||
96 | passed unchanged as recieved from the Server) | ||
97 | -o osdname of the requested target OSD | ||
98 | (Might be empty) | ||
99 | (A string which denotes the OSD name, there is a | ||
100 | limit of 64 chars on this string) | ||
101 | -s systemid of the requested target OSD | ||
102 | (Might be empty) | ||
103 | (This string, if not empty is always an hex | ||
104 | representation of the 20 bytes osd_system_id) | ||
105 | |||
106 | blocks-layout setup | ||
107 | ------------------- | ||
108 | |||
109 | TODO: Document the setup needs of the blocks layout driver | ||
diff --git a/Documentation/filesystems/pohmelfs/network_protocol.txt b/Documentation/filesystems/pohmelfs/network_protocol.txt index 65e03dd44823..c680b4b5353d 100644 --- a/Documentation/filesystems/pohmelfs/network_protocol.txt +++ b/Documentation/filesystems/pohmelfs/network_protocol.txt | |||
@@ -20,7 +20,7 @@ Commands can be embedded into transaction command (which in turn has own command | |||
20 | so one can extend protocol as needed without breaking backward compatibility as long | 20 | so one can extend protocol as needed without breaking backward compatibility as long |
21 | as old commands are supported. All string lengths include tail 0 byte. | 21 | as old commands are supported. All string lengths include tail 0 byte. |
22 | 22 | ||
23 | All commands are transferred over the network in big-endian. CPU endianess is used at the end peers. | 23 | All commands are transferred over the network in big-endian. CPU endianness is used at the end peers. |
24 | 24 | ||
25 | @cmd - command number, which specifies command to be processed. Following | 25 | @cmd - command number, which specifies command to be processed. Following |
26 | commands are used currently: | 26 | commands are used currently: |
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting index b4a3d765ff9a..74acd9618819 100644 --- a/Documentation/filesystems/porting +++ b/Documentation/filesystems/porting | |||
@@ -429,3 +429,9 @@ filemap_write_and_wait_range() so that all dirty pages are synced out properly. | |||
429 | You must also keep in mind that ->fsync() is not called with i_mutex held | 429 | You must also keep in mind that ->fsync() is not called with i_mutex held |
430 | anymore, so if you require i_mutex locking you must make sure to take it and | 430 | anymore, so if you require i_mutex locking you must make sure to take it and |
431 | release it yourself. | 431 | release it yourself. |
432 | |||
433 | -- | ||
434 | [mandatory] | ||
435 | d_alloc_root() is gone, along with a lot of bugs caused by code | ||
436 | misusing it. Replacement: d_make_root(inode). The difference is, | ||
437 | d_make_root() drops the reference to inode if dentry allocation fails. | ||
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index a76a26a1db8a..b7413cb46dcb 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
@@ -290,7 +290,7 @@ Table 1-4: Contents of the stat files (as of 2.6.30-rc7) | |||
290 | rsslim current limit in bytes on the rss | 290 | rsslim current limit in bytes on the rss |
291 | start_code address above which program text can run | 291 | start_code address above which program text can run |
292 | end_code address below which program text can run | 292 | end_code address below which program text can run |
293 | start_stack address of the start of the stack | 293 | start_stack address of the start of the main process stack |
294 | esp current value of ESP | 294 | esp current value of ESP |
295 | eip current value of EIP | 295 | eip current value of EIP |
296 | pending bitmap of pending signals | 296 | pending bitmap of pending signals |
@@ -325,7 +325,7 @@ address perms offset dev inode pathname | |||
325 | a7cb1000-a7cb2000 ---p 00000000 00:00 0 | 325 | a7cb1000-a7cb2000 ---p 00000000 00:00 0 |
326 | a7cb2000-a7eb2000 rw-p 00000000 00:00 0 | 326 | a7cb2000-a7eb2000 rw-p 00000000 00:00 0 |
327 | a7eb2000-a7eb3000 ---p 00000000 00:00 0 | 327 | a7eb2000-a7eb3000 ---p 00000000 00:00 0 |
328 | a7eb3000-a7ed5000 rw-p 00000000 00:00 0 | 328 | a7eb3000-a7ed5000 rw-p 00000000 00:00 0 [stack:1001] |
329 | a7ed5000-a8008000 r-xp 00000000 03:00 4222 /lib/libc.so.6 | 329 | a7ed5000-a8008000 r-xp 00000000 03:00 4222 /lib/libc.so.6 |
330 | a8008000-a800a000 r--p 00133000 03:00 4222 /lib/libc.so.6 | 330 | a8008000-a800a000 r--p 00133000 03:00 4222 /lib/libc.so.6 |
331 | a800a000-a800b000 rw-p 00135000 03:00 4222 /lib/libc.so.6 | 331 | a800a000-a800b000 rw-p 00135000 03:00 4222 /lib/libc.so.6 |
@@ -357,11 +357,39 @@ is not associated with a file: | |||
357 | 357 | ||
358 | [heap] = the heap of the program | 358 | [heap] = the heap of the program |
359 | [stack] = the stack of the main process | 359 | [stack] = the stack of the main process |
360 | [stack:1001] = the stack of the thread with tid 1001 | ||
360 | [vdso] = the "virtual dynamic shared object", | 361 | [vdso] = the "virtual dynamic shared object", |
361 | the kernel system call handler | 362 | the kernel system call handler |
362 | 363 | ||
363 | or if empty, the mapping is anonymous. | 364 | or if empty, the mapping is anonymous. |
364 | 365 | ||
366 | The /proc/PID/task/TID/maps is a view of the virtual memory from the viewpoint | ||
367 | of the individual tasks of a process. In this file you will see a mapping marked | ||
368 | as [stack] if that task sees it as a stack. This is a key difference from the | ||
369 | content of /proc/PID/maps, where you will see all mappings that are being used | ||
370 | as stack by all of those tasks. Hence, for the example above, the task-level | ||
371 | map, i.e. /proc/PID/task/TID/maps for thread 1001 will look like this: | ||
372 | |||
373 | 08048000-08049000 r-xp 00000000 03:00 8312 /opt/test | ||
374 | 08049000-0804a000 rw-p 00001000 03:00 8312 /opt/test | ||
375 | 0804a000-0806b000 rw-p 00000000 00:00 0 [heap] | ||
376 | a7cb1000-a7cb2000 ---p 00000000 00:00 0 | ||
377 | a7cb2000-a7eb2000 rw-p 00000000 00:00 0 | ||
378 | a7eb2000-a7eb3000 ---p 00000000 00:00 0 | ||
379 | a7eb3000-a7ed5000 rw-p 00000000 00:00 0 [stack] | ||
380 | a7ed5000-a8008000 r-xp 00000000 03:00 4222 /lib/libc.so.6 | ||
381 | a8008000-a800a000 r--p 00133000 03:00 4222 /lib/libc.so.6 | ||
382 | a800a000-a800b000 rw-p 00135000 03:00 4222 /lib/libc.so.6 | ||
383 | a800b000-a800e000 rw-p 00000000 00:00 0 | ||
384 | a800e000-a8022000 r-xp 00000000 03:00 14462 /lib/libpthread.so.0 | ||
385 | a8022000-a8023000 r--p 00013000 03:00 14462 /lib/libpthread.so.0 | ||
386 | a8023000-a8024000 rw-p 00014000 03:00 14462 /lib/libpthread.so.0 | ||
387 | a8024000-a8027000 rw-p 00000000 00:00 0 | ||
388 | a8027000-a8043000 r-xp 00000000 03:00 8317 /lib/ld-linux.so.2 | ||
389 | a8043000-a8044000 r--p 0001b000 03:00 8317 /lib/ld-linux.so.2 | ||
390 | a8044000-a8045000 rw-p 0001c000 03:00 8317 /lib/ld-linux.so.2 | ||
391 | aff35000-aff4a000 rw-p 00000000 00:00 0 | ||
392 | ffffe000-fffff000 r-xp 00000000 00:00 0 [vdso] | ||
365 | 393 | ||
366 | The /proc/PID/smaps is an extension based on maps, showing the memory | 394 | The /proc/PID/smaps is an extension based on maps, showing the memory |
367 | consumption for each of the process's mappings. For each of mappings there | 395 | consumption for each of the process's mappings. For each of mappings there |
diff --git a/Documentation/filesystems/qnx6.txt b/Documentation/filesystems/qnx6.txt new file mode 100644 index 000000000000..050223ea03c7 --- /dev/null +++ b/Documentation/filesystems/qnx6.txt | |||
@@ -0,0 +1,174 @@ | |||
1 | The QNX6 Filesystem | ||
2 | =================== | ||
3 | |||
4 | The qnx6fs is used by newer QNX operating system versions. (e.g. Neutrino) | ||
5 | It got introduced in QNX 6.4.0 and is used default since 6.4.1. | ||
6 | |||
7 | Option | ||
8 | ====== | ||
9 | |||
10 | mmi_fs Mount filesystem as used for example by Audi MMI 3G system | ||
11 | |||
12 | Specification | ||
13 | ============= | ||
14 | |||
15 | qnx6fs shares many properties with traditional Unix filesystems. It has the | ||
16 | concepts of blocks, inodes and directories. | ||
17 | On QNX it is possible to create little endian and big endian qnx6 filesystems. | ||
18 | This feature makes it possible to create and use a different endianness fs | ||
19 | for the target (QNX is used on quite a range of embedded systems) plattform | ||
20 | running on a different endianess. | ||
21 | The Linux driver handles endianness transparently. (LE and BE) | ||
22 | |||
23 | Blocks | ||
24 | ------ | ||
25 | |||
26 | The space in the device or file is split up into blocks. These are a fixed | ||
27 | size of 512, 1024, 2048 or 4096, which is decided when the filesystem is | ||
28 | created. | ||
29 | Blockpointers are 32bit, so the maximum space that can be adressed is | ||
30 | 2^32 * 4096 bytes or 16TB | ||
31 | |||
32 | The superblocks | ||
33 | --------------- | ||
34 | |||
35 | The superblock contains all global information about the filesystem. | ||
36 | Each qnx6fs got two superblocks, each one having a 64bit serial number. | ||
37 | That serial number is used to identify the "active" superblock. | ||
38 | In write mode with reach new snapshot (after each synchronous write), the | ||
39 | serial of the new master superblock is increased (old superblock serial + 1) | ||
40 | |||
41 | So basically the snapshot functionality is realized by an atomic final | ||
42 | update of the serial number. Before updating that serial, all modifications | ||
43 | are done by copying all modified blocks during that specific write request | ||
44 | (or period) and building up a new (stable) filesystem structure under the | ||
45 | inactive superblock. | ||
46 | |||
47 | Each superblock holds a set of root inodes for the different filesystem | ||
48 | parts. (Inode, Bitmap and Longfilenames) | ||
49 | Each of these root nodes holds information like total size of the stored | ||
50 | data and the adressing levels in that specific tree. | ||
51 | If the level value is 0, up to 16 direct blocks can be adressed by each | ||
52 | node. | ||
53 | Level 1 adds an additional indirect adressing level where each indirect | ||
54 | adressing block holds up to blocksize / 4 bytes pointers to data blocks. | ||
55 | Level 2 adds an additional indirect adressig block level (so, already up | ||
56 | to 16 * 256 * 256 = 1048576 blocks that can be adressed by such a tree)a | ||
57 | |||
58 | Unused block pointers are always set to ~0 - regardless of root node, | ||
59 | indirect adressing blocks or inodes. | ||
60 | Data leaves are always on the lowest level. So no data is stored on upper | ||
61 | tree levels. | ||
62 | |||
63 | The first Superblock is located at 0x2000. (0x2000 is the bootblock size) | ||
64 | The Audi MMI 3G first superblock directly starts at byte 0. | ||
65 | Second superblock position can either be calculated from the superblock | ||
66 | information (total number of filesystem blocks) or by taking the highest | ||
67 | device address, zeroing the last 3 bytes and then substracting 0x1000 from | ||
68 | that address. | ||
69 | |||
70 | 0x1000 is the size reserved for each superblock - regardless of the | ||
71 | blocksize of the filesystem. | ||
72 | |||
73 | Inodes | ||
74 | ------ | ||
75 | |||
76 | Each object in the filesystem is represented by an inode. (index node) | ||
77 | The inode structure contains pointers to the filesystem blocks which contain | ||
78 | the data held in the object and all of the metadata about an object except | ||
79 | its longname. (filenames longer than 27 characters) | ||
80 | The metadata about an object includes the permissions, owner, group, flags, | ||
81 | size, number of blocks used, access time, change time and modification time. | ||
82 | |||
83 | Object mode field is POSIX format. (which makes things easier) | ||
84 | |||
85 | There are also pointers to the first 16 blocks, if the object data can be | ||
86 | adressed with 16 direct blocks. | ||
87 | For more than 16 blocks an indirect adressing in form of another tree is | ||
88 | used. (scheme is the same as the one used for the superblock root nodes) | ||
89 | |||
90 | The filesize is stored 64bit. Inode counting starts with 1. (whilst long | ||
91 | filename inodes start with 0) | ||
92 | |||
93 | Directories | ||
94 | ----------- | ||
95 | |||
96 | A directory is a filesystem object and has an inode just like a file. | ||
97 | It is a specially formatted file containing records which associate each | ||
98 | name with an inode number. | ||
99 | '.' inode number points to the directory inode | ||
100 | '..' inode number points to the parent directory inode | ||
101 | Eeach filename record additionally got a filename length field. | ||
102 | |||
103 | One special case are long filenames or subdirectory names. | ||
104 | These got set a filename length field of 0xff in the corresponding directory | ||
105 | record plus the longfile inode number also stored in that record. | ||
106 | With that longfilename inode number, the longfilename tree can be walked | ||
107 | starting with the superblock longfilename root node pointers. | ||
108 | |||
109 | Special files | ||
110 | ------------- | ||
111 | |||
112 | Symbolic links are also filesystem objects with inodes. They got a specific | ||
113 | bit in the inode mode field identifying them as symbolic link. | ||
114 | The directory entry file inode pointer points to the target file inode. | ||
115 | |||
116 | Hard links got an inode, a directory entry, but a specific mode bit set, | ||
117 | no block pointers and the directory file record pointing to the target file | ||
118 | inode. | ||
119 | |||
120 | Character and block special devices do not exist in QNX as those files | ||
121 | are handled by the QNX kernel/drivers and created in /dev independant of the | ||
122 | underlaying filesystem. | ||
123 | |||
124 | Long filenames | ||
125 | -------------- | ||
126 | |||
127 | Long filenames are stored in a seperate adressing tree. The staring point | ||
128 | is the longfilename root node in the active superblock. | ||
129 | Each data block (tree leaves) holds one long filename. That filename is | ||
130 | limited to 510 bytes. The first two starting bytes are used as length field | ||
131 | for the actual filename. | ||
132 | If that structure shall fit for all allowed blocksizes, it is clear why there | ||
133 | is a limit of 510 bytes for the actual filename stored. | ||
134 | |||
135 | Bitmap | ||
136 | ------ | ||
137 | |||
138 | The qnx6fs filesystem allocation bitmap is stored in a tree under bitmap | ||
139 | root node in the superblock and each bit in the bitmap represents one | ||
140 | filesystem block. | ||
141 | The first block is block 0, which starts 0x1000 after superblock start. | ||
142 | So for a normal qnx6fs 0x3000 (bootblock + superblock) is the physical | ||
143 | address at which block 0 is located. | ||
144 | |||
145 | Bits at the end of the last bitmap block are set to 1, if the device is | ||
146 | smaller than addressing space in the bitmap. | ||
147 | |||
148 | Bitmap system area | ||
149 | ------------------ | ||
150 | |||
151 | The bitmap itself is devided into three parts. | ||
152 | First the system area, that is split into two halfs. | ||
153 | Then userspace. | ||
154 | |||
155 | The requirement for a static, fixed preallocated system area comes from how | ||
156 | qnx6fs deals with writes. | ||
157 | Each superblock got it's own half of the system area. So superblock #1 | ||
158 | always uses blocks from the lower half whilst superblock #2 just writes to | ||
159 | blocks represented by the upper half bitmap system area bits. | ||
160 | |||
161 | Bitmap blocks, Inode blocks and indirect addressing blocks for those two | ||
162 | tree structures are treated as system blocks. | ||
163 | |||
164 | The rational behind that is that a write request can work on a new snapshot | ||
165 | (system area of the inactive - resp. lower serial numbered superblock) while | ||
166 | at the same time there is still a complete stable filesystem structer in the | ||
167 | other half of the system area. | ||
168 | |||
169 | When finished with writing (a sync write is completed, the maximum sync leap | ||
170 | time or a filesystem sync is requested), serial of the previously inactive | ||
171 | superblock atomically is increased and the fs switches over to that - then | ||
172 | stable declared - superblock. | ||
173 | |||
174 | For all data outside the system area, blocks are just copied while writing. | ||
diff --git a/Documentation/filesystems/ramfs-rootfs-initramfs.txt b/Documentation/filesystems/ramfs-rootfs-initramfs.txt index a8273d5fad20..59b4a0962e0f 100644 --- a/Documentation/filesystems/ramfs-rootfs-initramfs.txt +++ b/Documentation/filesystems/ramfs-rootfs-initramfs.txt | |||
@@ -297,7 +297,7 @@ the above threads) is: | |||
297 | either way about the archive format, and there are alternative tools, | 297 | either way about the archive format, and there are alternative tools, |
298 | such as: | 298 | such as: |
299 | 299 | ||
300 | http://freshmeat.net/projects/afio/ | 300 | http://freecode.com/projects/afio |
301 | 301 | ||
302 | 2) The cpio archive format chosen by the kernel is simpler and cleaner (and | 302 | 2) The cpio archive format chosen by the kernel is simpler and cleaner (and |
303 | thus easier to create and parse) than any of the (literally dozens of) | 303 | thus easier to create and parse) than any of the (literally dozens of) |
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 3d9393b845b8..e916e3d36488 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -993,7 +993,7 @@ struct dentry_operations { | |||
993 | 993 | ||
994 | If the 'rcu_walk' parameter is true, then the caller is doing a | 994 | If the 'rcu_walk' parameter is true, then the caller is doing a |
995 | pathwalk in RCU-walk mode. Sleeping is not permitted in this mode, | 995 | pathwalk in RCU-walk mode. Sleeping is not permitted in this mode, |
996 | and the caller can be asked to leave it and call again by returing | 996 | and the caller can be asked to leave it and call again by returning |
997 | -ECHILD. | 997 | -ECHILD. |
998 | 998 | ||
999 | This function is only used if DCACHE_MANAGE_TRANSIT is set on the | 999 | This function is only used if DCACHE_MANAGE_TRANSIT is set on the |
diff --git a/Documentation/hwmon/adm1275 b/Documentation/hwmon/adm1275 index ab70d96d2dfd..2cfa25667123 100644 --- a/Documentation/hwmon/adm1275 +++ b/Documentation/hwmon/adm1275 | |||
@@ -2,6 +2,10 @@ Kernel driver adm1275 | |||
2 | ===================== | 2 | ===================== |
3 | 3 | ||
4 | Supported chips: | 4 | Supported chips: |
5 | * Analog Devices ADM1075 | ||
6 | Prefix: 'adm1075' | ||
7 | Addresses scanned: - | ||
8 | Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1075.pdf | ||
5 | * Analog Devices ADM1275 | 9 | * Analog Devices ADM1275 |
6 | Prefix: 'adm1275' | 10 | Prefix: 'adm1275' |
7 | Addresses scanned: - | 11 | Addresses scanned: - |
@@ -17,13 +21,13 @@ Author: Guenter Roeck <guenter.roeck@ericsson.com> | |||
17 | Description | 21 | Description |
18 | ----------- | 22 | ----------- |
19 | 23 | ||
20 | This driver supports hardware montoring for Analog Devices ADM1275 and ADM1276 | 24 | This driver supports hardware montoring for Analog Devices ADM1075, ADM1275, |
21 | Hot-Swap Controller and Digital Power Monitor. | 25 | and ADM1276 Hot-Swap Controller and Digital Power Monitor. |
22 | 26 | ||
23 | ADM1275 and ADM1276 are hot-swap controllers that allow a circuit board to be | 27 | ADM1075, ADM1275, and ADM1276 are hot-swap controllers that allow a circuit |
24 | removed from or inserted into a live backplane. They also feature current and | 28 | board to be removed from or inserted into a live backplane. They also feature |
25 | voltage readback via an integrated 12-bit analog-to-digital converter (ADC), | 29 | current and voltage readback via an integrated 12-bit analog-to-digital |
26 | accessed using a PMBus interface. | 30 | converter (ADC), accessed using a PMBus interface. |
27 | 31 | ||
28 | The driver is a client driver to the core PMBus driver. Please see | 32 | The driver is a client driver to the core PMBus driver. Please see |
29 | Documentation/hwmon/pmbus for details on PMBus client drivers. | 33 | Documentation/hwmon/pmbus for details on PMBus client drivers. |
@@ -36,6 +40,10 @@ This driver does not auto-detect devices. You will have to instantiate the | |||
36 | devices explicitly. Please see Documentation/i2c/instantiating-devices for | 40 | devices explicitly. Please see Documentation/i2c/instantiating-devices for |
37 | details. | 41 | details. |
38 | 42 | ||
43 | The ADM1075, unlike many other PMBus devices, does not support internal voltage | ||
44 | or current scaling. Reported voltages, currents, and power are raw measurements, | ||
45 | and will typically have to be scaled. | ||
46 | |||
39 | 47 | ||
40 | Platform data support | 48 | Platform data support |
41 | --------------------- | 49 | --------------------- |
@@ -51,9 +59,10 @@ The following attributes are supported. Limits are read-write, history reset | |||
51 | attributes are write-only, all other attributes are read-only. | 59 | attributes are write-only, all other attributes are read-only. |
52 | 60 | ||
53 | in1_label "vin1" or "vout1" depending on chip variant and | 61 | in1_label "vin1" or "vout1" depending on chip variant and |
54 | configuration. | 62 | configuration. On ADM1075, vout1 reports the voltage on |
63 | the VAUX pin. | ||
55 | in1_input Measured voltage. | 64 | in1_input Measured voltage. |
56 | in1_min Minumum Voltage. | 65 | in1_min Minimum Voltage. |
57 | in1_max Maximum voltage. | 66 | in1_max Maximum voltage. |
58 | in1_min_alarm Voltage low alarm. | 67 | in1_min_alarm Voltage low alarm. |
59 | in1_max_alarm Voltage high alarm. | 68 | in1_max_alarm Voltage high alarm. |
@@ -74,3 +83,10 @@ curr1_crit Critical maximum current. Depending on the chip | |||
74 | curr1_crit_alarm Critical current high alarm. | 83 | curr1_crit_alarm Critical current high alarm. |
75 | curr1_highest Historical maximum current. | 84 | curr1_highest Historical maximum current. |
76 | curr1_reset_history Write any value to reset history. | 85 | curr1_reset_history Write any value to reset history. |
86 | |||
87 | power1_label "pin1" | ||
88 | power1_input Input power. | ||
89 | power1_reset_history Write any value to reset history. | ||
90 | |||
91 | Power attributes are supported on ADM1075 and ADM1276 | ||
92 | only. | ||
diff --git a/Documentation/hwmon/jc42 b/Documentation/hwmon/jc42 index 52729a756c1b..66ecb9fc8246 100644 --- a/Documentation/hwmon/jc42 +++ b/Documentation/hwmon/jc42 | |||
@@ -3,71 +3,50 @@ Kernel driver jc42 | |||
3 | 3 | ||
4 | Supported chips: | 4 | Supported chips: |
5 | * Analog Devices ADT7408 | 5 | * Analog Devices ADT7408 |
6 | Prefix: 'adt7408' | ||
7 | Addresses scanned: I2C 0x18 - 0x1f | ||
8 | Datasheets: | 6 | Datasheets: |
9 | http://www.analog.com/static/imported-files/data_sheets/ADT7408.pdf | 7 | http://www.analog.com/static/imported-files/data_sheets/ADT7408.pdf |
10 | * Atmel AT30TS00 | 8 | * Atmel AT30TS00 |
11 | Prefix: 'at30ts00' | ||
12 | Addresses scanned: I2C 0x18 - 0x1f | ||
13 | Datasheets: | 9 | Datasheets: |
14 | http://www.atmel.com/Images/doc8585.pdf | 10 | http://www.atmel.com/Images/doc8585.pdf |
15 | * IDT TSE2002B3, TSE2002GB2, TS3000B3, TS3000GB2 | 11 | * IDT TSE2002B3, TSE2002GB2, TS3000B3, TS3000GB2 |
16 | Prefix: 'tse2002', 'ts3000' | ||
17 | Addresses scanned: I2C 0x18 - 0x1f | ||
18 | Datasheets: | 12 | Datasheets: |
19 | http://www.idt.com/sites/default/files/documents/IDT_TSE2002B3C_DST_20100512_120303152056.pdf | 13 | http://www.idt.com/sites/default/files/documents/IDT_TSE2002B3C_DST_20100512_120303152056.pdf |
20 | http://www.idt.com/sites/default/files/documents/IDT_TSE2002GB2A1_DST_20111107_120303145914.pdf | 14 | http://www.idt.com/sites/default/files/documents/IDT_TSE2002GB2A1_DST_20111107_120303145914.pdf |
21 | http://www.idt.com/sites/default/files/documents/IDT_TS3000B3A_DST_20101129_120303152013.pdf | 15 | http://www.idt.com/sites/default/files/documents/IDT_TS3000B3A_DST_20101129_120303152013.pdf |
22 | http://www.idt.com/sites/default/files/documents/IDT_TS3000GB2A1_DST_20111104_120303151012.pdf | 16 | http://www.idt.com/sites/default/files/documents/IDT_TS3000GB2A1_DST_20111104_120303151012.pdf |
23 | * Maxim MAX6604 | 17 | * Maxim MAX6604 |
24 | Prefix: 'max6604' | ||
25 | Addresses scanned: I2C 0x18 - 0x1f | ||
26 | Datasheets: | 18 | Datasheets: |
27 | http://datasheets.maxim-ic.com/en/ds/MAX6604.pdf | 19 | http://datasheets.maxim-ic.com/en/ds/MAX6604.pdf |
28 | * Microchip MCP9804, MCP9805, MCP98242, MCP98243, MCP9843 | 20 | * Microchip MCP9804, MCP9805, MCP98242, MCP98243, MCP9843 |
29 | Prefixes: 'mcp9804', 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843' | ||
30 | Addresses scanned: I2C 0x18 - 0x1f | ||
31 | Datasheets: | 21 | Datasheets: |
32 | http://ww1.microchip.com/downloads/en/DeviceDoc/22203C.pdf | 22 | http://ww1.microchip.com/downloads/en/DeviceDoc/22203C.pdf |
33 | http://ww1.microchip.com/downloads/en/DeviceDoc/21977b.pdf | 23 | http://ww1.microchip.com/downloads/en/DeviceDoc/21977b.pdf |
34 | http://ww1.microchip.com/downloads/en/DeviceDoc/21996a.pdf | 24 | http://ww1.microchip.com/downloads/en/DeviceDoc/21996a.pdf |
35 | http://ww1.microchip.com/downloads/en/DeviceDoc/22153c.pdf | 25 | http://ww1.microchip.com/downloads/en/DeviceDoc/22153c.pdf |
36 | * NXP Semiconductors SE97, SE97B | 26 | * NXP Semiconductors SE97, SE97B, SE98, SE98A |
37 | Prefix: 'se97' | ||
38 | Addresses scanned: I2C 0x18 - 0x1f | ||
39 | Datasheets: | 27 | Datasheets: |
40 | http://www.nxp.com/documents/data_sheet/SE97.pdf | 28 | http://www.nxp.com/documents/data_sheet/SE97.pdf |
41 | http://www.nxp.com/documents/data_sheet/SE97B.pdf | 29 | http://www.nxp.com/documents/data_sheet/SE97B.pdf |
42 | * NXP Semiconductors SE98 | ||
43 | Prefix: 'se98' | ||
44 | Addresses scanned: I2C 0x18 - 0x1f | ||
45 | Datasheets: | ||
46 | http://www.nxp.com/documents/data_sheet/SE98.pdf | 30 | http://www.nxp.com/documents/data_sheet/SE98.pdf |
31 | http://www.nxp.com/documents/data_sheet/SE98A.pdf | ||
47 | * ON Semiconductor CAT34TS02, CAT6095 | 32 | * ON Semiconductor CAT34TS02, CAT6095 |
48 | Prefix: 'cat34ts02', 'cat6095' | ||
49 | Addresses scanned: I2C 0x18 - 0x1f | ||
50 | Datasheet: | 33 | Datasheet: |
51 | http://www.onsemi.com/pub_link/Collateral/CAT34TS02-D.PDF | 34 | http://www.onsemi.com/pub_link/Collateral/CAT34TS02-D.PDF |
52 | http://www.onsemi.com/pub/Collateral/CAT6095-D.PDF | 35 | http://www.onsemi.com/pub/Collateral/CAT6095-D.PDF |
53 | * ST Microelectronics STTS424, STTS424E02 | 36 | * ST Microelectronics STTS424, STTS424E02, STTS2002, STTS3000 |
54 | Prefix: 'stts424' | ||
55 | Addresses scanned: I2C 0x18 - 0x1f | ||
56 | Datasheets: | ||
57 | http://www.st.com/stonline/products/literature/ds/13447/stts424.pdf | ||
58 | http://www.st.com/stonline/products/literature/ds/13448/stts424e02.pdf | ||
59 | * ST Microelectronics STTS2002, STTS3000 | ||
60 | Prefix: 'stts2002', 'stts3000' | ||
61 | Addresses scanned: I2C 0x18 - 0x1f | ||
62 | Datasheets: | 37 | Datasheets: |
38 | http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00157556.pdf | ||
39 | http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00157558.pdf | ||
63 | http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00225278.pdf | 40 | http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00225278.pdf |
64 | http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATA_BRIEF/CD00270920.pdf | 41 | http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATA_BRIEF/CD00270920.pdf |
65 | * JEDEC JC 42.4 compliant temperature sensor chips | 42 | * JEDEC JC 42.4 compliant temperature sensor chips |
66 | Prefix: 'jc42' | ||
67 | Addresses scanned: I2C 0x18 - 0x1f | ||
68 | Datasheet: | 43 | Datasheet: |
69 | http://www.jedec.org/sites/default/files/docs/4_01_04R19.pdf | 44 | http://www.jedec.org/sites/default/files/docs/4_01_04R19.pdf |
70 | 45 | ||
46 | Common for all chips: | ||
47 | Prefix: 'jc42' | ||
48 | Addresses scanned: I2C 0x18 - 0x1f | ||
49 | |||
71 | Author: | 50 | Author: |
72 | Guenter Roeck <guenter.roeck@ericsson.com> | 51 | Guenter Roeck <guenter.roeck@ericsson.com> |
73 | 52 | ||
diff --git a/Documentation/hwmon/lm80 b/Documentation/hwmon/lm80 index cb5b407ba3e6..a60b43efc32b 100644 --- a/Documentation/hwmon/lm80 +++ b/Documentation/hwmon/lm80 | |||
@@ -7,6 +7,11 @@ Supported chips: | |||
7 | Addresses scanned: I2C 0x28 - 0x2f | 7 | Addresses scanned: I2C 0x28 - 0x2f |
8 | Datasheet: Publicly available at the National Semiconductor website | 8 | Datasheet: Publicly available at the National Semiconductor website |
9 | http://www.national.com/ | 9 | http://www.national.com/ |
10 | * National Semiconductor LM96080 | ||
11 | Prefix: 'lm96080' | ||
12 | Addresses scanned: I2C 0x28 - 0x2f | ||
13 | Datasheet: Publicly available at the National Semiconductor website | ||
14 | http://www.national.com/ | ||
10 | 15 | ||
11 | Authors: | 16 | Authors: |
12 | Frodo Looijaard <frodol@dds.nl>, | 17 | Frodo Looijaard <frodol@dds.nl>, |
@@ -17,7 +22,9 @@ Description | |||
17 | 22 | ||
18 | This driver implements support for the National Semiconductor LM80. | 23 | This driver implements support for the National Semiconductor LM80. |
19 | It is described as a 'Serial Interface ACPI-Compatible Microprocessor | 24 | It is described as a 'Serial Interface ACPI-Compatible Microprocessor |
20 | System Hardware Monitor'. | 25 | System Hardware Monitor'. The LM96080 is a more recent incarnation, |
26 | it is pin and register compatible, with a few additional features not | ||
27 | yet supported by the driver. | ||
21 | 28 | ||
22 | The LM80 implements one temperature sensor, two fan rotation speed sensors, | 29 | The LM80 implements one temperature sensor, two fan rotation speed sensors, |
23 | seven voltage sensors, alarms, and some miscellaneous stuff. | 30 | seven voltage sensors, alarms, and some miscellaneous stuff. |
diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90 index 9cd14cfe6515..b466974e142f 100644 --- a/Documentation/hwmon/lm90 +++ b/Documentation/hwmon/lm90 | |||
@@ -118,6 +118,10 @@ Supported chips: | |||
118 | Addresses scanned: I2C 0x48 through 0x4F | 118 | Addresses scanned: I2C 0x48 through 0x4F |
119 | Datasheet: Publicly available at NXP website | 119 | Datasheet: Publicly available at NXP website |
120 | http://ics.nxp.com/products/interface/datasheet/sa56004x.pdf | 120 | http://ics.nxp.com/products/interface/datasheet/sa56004x.pdf |
121 | * GMT G781 | ||
122 | Prefix: 'g781' | ||
123 | Addresses scanned: I2C 0x4c, 0x4d | ||
124 | Datasheet: Not publicly available from GMT | ||
121 | 125 | ||
122 | Author: Jean Delvare <khali@linux-fr.org> | 126 | Author: Jean Delvare <khali@linux-fr.org> |
123 | 127 | ||
diff --git a/Documentation/hwmon/max16064 b/Documentation/hwmon/max16064 index f6e8bcbfaccf..f8b478076f6d 100644 --- a/Documentation/hwmon/max16064 +++ b/Documentation/hwmon/max16064 | |||
@@ -42,9 +42,9 @@ attributes are read-only. | |||
42 | 42 | ||
43 | in[1-4]_label "vout[1-4]" | 43 | in[1-4]_label "vout[1-4]" |
44 | in[1-4]_input Measured voltage. From READ_VOUT register. | 44 | in[1-4]_input Measured voltage. From READ_VOUT register. |
45 | in[1-4]_min Minumum Voltage. From VOUT_UV_WARN_LIMIT register. | 45 | in[1-4]_min Minimum Voltage. From VOUT_UV_WARN_LIMIT register. |
46 | in[1-4]_max Maximum voltage. From VOUT_OV_WARN_LIMIT register. | 46 | in[1-4]_max Maximum voltage. From VOUT_OV_WARN_LIMIT register. |
47 | in[1-4]_lcrit Critical minumum Voltage. VOUT_UV_FAULT_LIMIT register. | 47 | in[1-4]_lcrit Critical minimum Voltage. VOUT_UV_FAULT_LIMIT register. |
48 | in[1-4]_crit Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. | 48 | in[1-4]_crit Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. |
49 | in[1-4]_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. | 49 | in[1-4]_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. |
50 | in[1-4]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. | 50 | in[1-4]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. |
diff --git a/Documentation/hwmon/max34440 b/Documentation/hwmon/max34440 index 8ab51536a1eb..04482226db20 100644 --- a/Documentation/hwmon/max34440 +++ b/Documentation/hwmon/max34440 | |||
@@ -11,6 +11,11 @@ Supported chips: | |||
11 | Prefixes: 'max34441' | 11 | Prefixes: 'max34441' |
12 | Addresses scanned: - | 12 | Addresses scanned: - |
13 | Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX34441.pdf | 13 | Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX34441.pdf |
14 | * Maxim MAX34446 | ||
15 | PMBus Power-Supply Data Logger | ||
16 | Prefixes: 'max34446' | ||
17 | Addresses scanned: - | ||
18 | Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX34446.pdf | ||
14 | 19 | ||
15 | Author: Guenter Roeck <guenter.roeck@ericsson.com> | 20 | Author: Guenter Roeck <guenter.roeck@ericsson.com> |
16 | 21 | ||
@@ -19,8 +24,8 @@ Description | |||
19 | ----------- | 24 | ----------- |
20 | 25 | ||
21 | This driver supports hardware montoring for Maxim MAX34440 PMBus 6-Channel | 26 | This driver supports hardware montoring for Maxim MAX34440 PMBus 6-Channel |
22 | Power-Supply Manager and MAX34441 PMBus 5-Channel Power-Supply Manager | 27 | Power-Supply Manager, MAX34441 PMBus 5-Channel Power-Supply Manager |
23 | and Intelligent Fan Controller. | 28 | and Intelligent Fan Controller, and MAX34446 PMBus Power-Supply Data Logger. |
24 | 29 | ||
25 | The driver is a client driver to the core PMBus driver. Please see | 30 | The driver is a client driver to the core PMBus driver. Please see |
26 | Documentation/hwmon/pmbus for details on PMBus client drivers. | 31 | Documentation/hwmon/pmbus for details on PMBus client drivers. |
@@ -33,6 +38,13 @@ This driver does not auto-detect devices. You will have to instantiate the | |||
33 | devices explicitly. Please see Documentation/i2c/instantiating-devices for | 38 | devices explicitly. Please see Documentation/i2c/instantiating-devices for |
34 | details. | 39 | details. |
35 | 40 | ||
41 | For MAX34446, the value of the currX_crit attribute determines if current or | ||
42 | voltage measurement is enabled for a given channel. Voltage measurement is | ||
43 | enabled if currX_crit is set to 0; current measurement is enabled if the | ||
44 | attribute is set to a positive value. Power measurement is only enabled if | ||
45 | channel 1 (3) is configured for voltage measurement, and channel 2 (4) is | ||
46 | configured for current measurement. | ||
47 | |||
36 | 48 | ||
37 | Platform data support | 49 | Platform data support |
38 | --------------------- | 50 | --------------------- |
@@ -48,27 +60,39 @@ attributes are read-only. | |||
48 | 60 | ||
49 | in[1-6]_label "vout[1-6]". | 61 | in[1-6]_label "vout[1-6]". |
50 | in[1-6]_input Measured voltage. From READ_VOUT register. | 62 | in[1-6]_input Measured voltage. From READ_VOUT register. |
51 | in[1-6]_min Minumum Voltage. From VOUT_UV_WARN_LIMIT register. | 63 | in[1-6]_min Minimum Voltage. From VOUT_UV_WARN_LIMIT register. |
52 | in[1-6]_max Maximum voltage. From VOUT_OV_WARN_LIMIT register. | 64 | in[1-6]_max Maximum voltage. From VOUT_OV_WARN_LIMIT register. |
53 | in[1-6]_lcrit Critical minumum Voltage. VOUT_UV_FAULT_LIMIT register. | 65 | in[1-6]_lcrit Critical minimum Voltage. VOUT_UV_FAULT_LIMIT register. |
54 | in[1-6]_crit Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. | 66 | in[1-6]_crit Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. |
55 | in[1-6]_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. | 67 | in[1-6]_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. |
56 | in[1-6]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. | 68 | in[1-6]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. |
57 | in[1-6]_lcrit_alarm Voltage critical low alarm. From VOLTAGE_UV_FAULT status. | 69 | in[1-6]_lcrit_alarm Voltage critical low alarm. From VOLTAGE_UV_FAULT status. |
58 | in[1-6]_crit_alarm Voltage critical high alarm. From VOLTAGE_OV_FAULT status. | 70 | in[1-6]_crit_alarm Voltage critical high alarm. From VOLTAGE_OV_FAULT status. |
71 | in[1-6]_lowest Historical minimum voltage. | ||
59 | in[1-6]_highest Historical maximum voltage. | 72 | in[1-6]_highest Historical maximum voltage. |
60 | in[1-6]_reset_history Write any value to reset history. | 73 | in[1-6]_reset_history Write any value to reset history. |
61 | 74 | ||
75 | MAX34446 only supports in[1-4]. | ||
76 | |||
62 | curr[1-6]_label "iout[1-6]". | 77 | curr[1-6]_label "iout[1-6]". |
63 | curr[1-6]_input Measured current. From READ_IOUT register. | 78 | curr[1-6]_input Measured current. From READ_IOUT register. |
64 | curr[1-6]_max Maximum current. From IOUT_OC_WARN_LIMIT register. | 79 | curr[1-6]_max Maximum current. From IOUT_OC_WARN_LIMIT register. |
65 | curr[1-6]_crit Critical maximum current. From IOUT_OC_FAULT_LIMIT register. | 80 | curr[1-6]_crit Critical maximum current. From IOUT_OC_FAULT_LIMIT register. |
66 | curr[1-6]_max_alarm Current high alarm. From IOUT_OC_WARNING status. | 81 | curr[1-6]_max_alarm Current high alarm. From IOUT_OC_WARNING status. |
67 | curr[1-6]_crit_alarm Current critical high alarm. From IOUT_OC_FAULT status. | 82 | curr[1-6]_crit_alarm Current critical high alarm. From IOUT_OC_FAULT status. |
83 | curr[1-4]_average Historical average current (MAX34446 only). | ||
68 | curr[1-6]_highest Historical maximum current. | 84 | curr[1-6]_highest Historical maximum current. |
69 | curr[1-6]_reset_history Write any value to reset history. | 85 | curr[1-6]_reset_history Write any value to reset history. |
70 | 86 | ||
71 | in6 and curr6 attributes only exist for MAX34440. | 87 | in6 and curr6 attributes only exist for MAX34440. |
88 | MAX34446 only supports curr[1-4]. | ||
89 | |||
90 | power[1,3]_label "pout[1,3]" | ||
91 | power[1,3]_input Measured power. | ||
92 | power[1,3]_average Historical average power. | ||
93 | power[1,3]_highest Historical maximum power. | ||
94 | |||
95 | Power attributes only exist for MAX34446. | ||
72 | 96 | ||
73 | temp[1-8]_input Measured temperatures. From READ_TEMPERATURE_1 register. | 97 | temp[1-8]_input Measured temperatures. From READ_TEMPERATURE_1 register. |
74 | temp1 is the chip's internal temperature. temp2..temp5 | 98 | temp1 is the chip's internal temperature. temp2..temp5 |
@@ -79,7 +103,9 @@ temp[1-8]_max Maximum temperature. From OT_WARN_LIMIT register. | |||
79 | temp[1-8]_crit Critical high temperature. From OT_FAULT_LIMIT register. | 103 | temp[1-8]_crit Critical high temperature. From OT_FAULT_LIMIT register. |
80 | temp[1-8]_max_alarm Temperature high alarm. | 104 | temp[1-8]_max_alarm Temperature high alarm. |
81 | temp[1-8]_crit_alarm Temperature critical high alarm. | 105 | temp[1-8]_crit_alarm Temperature critical high alarm. |
106 | temp[1-8]_average Historical average temperature (MAX34446 only). | ||
82 | temp[1-8]_highest Historical maximum temperature. | 107 | temp[1-8]_highest Historical maximum temperature. |
83 | temp[1-8]_reset_history Write any value to reset history. | 108 | temp[1-8]_reset_history Write any value to reset history. |
84 | 109 | ||
85 | temp7 and temp8 attributes only exist for MAX34440. | 110 | temp7 and temp8 attributes only exist for MAX34440. |
111 | MAX34446 only supports temp[1-3]. | ||
diff --git a/Documentation/hwmon/max8688 b/Documentation/hwmon/max8688 index 71ed10a3c94e..fe849871df32 100644 --- a/Documentation/hwmon/max8688 +++ b/Documentation/hwmon/max8688 | |||
@@ -42,9 +42,9 @@ attributes are read-only. | |||
42 | 42 | ||
43 | in1_label "vout1" | 43 | in1_label "vout1" |
44 | in1_input Measured voltage. From READ_VOUT register. | 44 | in1_input Measured voltage. From READ_VOUT register. |
45 | in1_min Minumum Voltage. From VOUT_UV_WARN_LIMIT register. | 45 | in1_min Minimum Voltage. From VOUT_UV_WARN_LIMIT register. |
46 | in1_max Maximum voltage. From VOUT_OV_WARN_LIMIT register. | 46 | in1_max Maximum voltage. From VOUT_OV_WARN_LIMIT register. |
47 | in1_lcrit Critical minumum Voltage. VOUT_UV_FAULT_LIMIT register. | 47 | in1_lcrit Critical minimum Voltage. VOUT_UV_FAULT_LIMIT register. |
48 | in1_crit Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. | 48 | in1_crit Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. |
49 | in1_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. | 49 | in1_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. |
50 | in1_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. | 50 | in1_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. |
diff --git a/Documentation/hwmon/mc13783-adc b/Documentation/hwmon/mc13783-adc index 044531a86405..d0e7b3fa9e75 100644 --- a/Documentation/hwmon/mc13783-adc +++ b/Documentation/hwmon/mc13783-adc | |||
@@ -3,8 +3,11 @@ Kernel driver mc13783-adc | |||
3 | 3 | ||
4 | Supported chips: | 4 | Supported chips: |
5 | * Freescale Atlas MC13783 | 5 | * Freescale Atlas MC13783 |
6 | Prefix: 'mc13783_adc' | 6 | Prefix: 'mc13783' |
7 | Datasheet: http://www.freescale.com/files/rf_if/doc/data_sheet/MC13783.pdf?fsrch=1 | 7 | Datasheet: http://www.freescale.com/files/rf_if/doc/data_sheet/MC13783.pdf?fsrch=1 |
8 | * Freescale Atlas MC13892 | ||
9 | Prefix: 'mc13892' | ||
10 | Datasheet: http://cache.freescale.com/files/analog/doc/data_sheet/MC13892.pdf?fsrch=1&sr=1 | ||
8 | 11 | ||
9 | Authors: | 12 | Authors: |
10 | Sascha Hauer <s.hauer@pengutronix.de> | 13 | Sascha Hauer <s.hauer@pengutronix.de> |
@@ -13,20 +16,21 @@ Authors: | |||
13 | Description | 16 | Description |
14 | ----------- | 17 | ----------- |
15 | 18 | ||
16 | The Freescale MC13783 is a Power Management and Audio Circuit. Among | 19 | The Freescale MC13783 and MC13892 are Power Management and Audio Circuits. |
17 | other things it contains a 10-bit A/D converter. The converter has 16 | 20 | Among other things they contain a 10-bit A/D converter. The converter has 16 |
18 | channels which can be used in different modes. | 21 | (MC13783) resp. 12 (MC13892) channels which can be used in different modes. The |
19 | The A/D converter has a resolution of 2.25mV. Channels 0-4 have | 22 | A/D converter has a resolution of 2.25mV. |
20 | a dedicated meaning with chip internal scaling applied. Channels 5-7 | ||
21 | can be used as general purpose inputs or alternatively in a dedicated | ||
22 | mode. Channels 12-15 are occupied by the touchscreen if it's active. | ||
23 | 23 | ||
24 | Currently the driver only supports channels 2 and 5-15 with no alternative | 24 | Some channels can be used as General Purpose inputs or in a dedicated mode with |
25 | modes for channels 5-7. | 25 | a chip internal scaling applied . |
26 | 26 | ||
27 | See this table for the meaning of the different channels and their chip | 27 | Currently the driver only supports the Application Supply channel (BP / BPSNS), |
28 | internal scaling: | 28 | the General Purpose inputs and touchscreen. |
29 | 29 | ||
30 | See the following tables for the meaning of the different channels and their | ||
31 | chip internal scaling: | ||
32 | |||
33 | MC13783: | ||
30 | Channel Signal Input Range Scaling | 34 | Channel Signal Input Range Scaling |
31 | ------------------------------------------------------------------------------- | 35 | ------------------------------------------------------------------------------- |
32 | 0 Battery Voltage (BATT) 2.50 - 4.65V -2.40V | 36 | 0 Battery Voltage (BATT) 2.50 - 4.65V -2.40V |
@@ -34,7 +38,7 @@ Channel Signal Input Range Scaling | |||
34 | 2 Application Supply (BP) 2.50 - 4.65V -2.40V | 38 | 2 Application Supply (BP) 2.50 - 4.65V -2.40V |
35 | 3 Charger Voltage (CHRGRAW) 0 - 10V / /5 | 39 | 3 Charger Voltage (CHRGRAW) 0 - 10V / /5 |
36 | 0 - 20V /10 | 40 | 0 - 20V /10 |
37 | 4 Charger Current (CHRGISNSP-CHRGISNSN) -0.25V - 0.25V x4 | 41 | 4 Charger Current (CHRGISNSP-CHRGISNSN) -0.25 - 0.25V x4 |
38 | 5 General Purpose ADIN5 / Battery Pack Thermistor 0 - 2.30V No | 42 | 5 General Purpose ADIN5 / Battery Pack Thermistor 0 - 2.30V No |
39 | 6 General Purpose ADIN6 / Backup Voltage (LICELL) 0 - 2.30V / No / | 43 | 6 General Purpose ADIN6 / Backup Voltage (LICELL) 0 - 2.30V / No / |
40 | 1.50 - 3.50V -1.20V | 44 | 1.50 - 3.50V -1.20V |
@@ -48,3 +52,23 @@ Channel Signal Input Range Scaling | |||
48 | 13 General Purpose TSX2 / Touchscreen X-plate 2 0 - 2.30V No | 52 | 13 General Purpose TSX2 / Touchscreen X-plate 2 0 - 2.30V No |
49 | 14 General Purpose TSY1 / Touchscreen Y-plate 1 0 - 2.30V No | 53 | 14 General Purpose TSY1 / Touchscreen Y-plate 1 0 - 2.30V No |
50 | 15 General Purpose TSY2 / Touchscreen Y-plate 2 0 - 2.30V No | 54 | 15 General Purpose TSY2 / Touchscreen Y-plate 2 0 - 2.30V No |
55 | |||
56 | MC13892: | ||
57 | Channel Signal Input Range Scaling | ||
58 | ------------------------------------------------------------------------------- | ||
59 | 0 Battery Voltage (BATT) 0 - 4.8V /2 | ||
60 | 1 Battery Current (BATT - BATTISNSCC) -60 - 60 mV x20 | ||
61 | 2 Application Supply (BPSNS) 0 - 4.8V /2 | ||
62 | 3 Charger Voltage (CHRGRAW) 0 - 12V / /5 | ||
63 | 0 - 20V /10 | ||
64 | 4 Charger Current (CHRGISNS-BPSNS) / -0.3 - 0.3V / x4 / | ||
65 | Touchscreen X-plate 1 0 - 2.4V No | ||
66 | 5 General Purpose ADIN5 / Battery Pack Thermistor 0 - 2.4V No | ||
67 | 6 General Purpose ADIN6 / Backup Voltage (LICELL) 0 - 2.4V / No | ||
68 | Backup Voltage (LICELL) 0 - 3.6V x2/3 | ||
69 | 7 General Purpose ADIN7 / UID / Die Temperature 0 - 2.4V / No / | ||
70 | 0 - 4.8V /2 | ||
71 | 12 General Purpose TSX1 / Touchscreen X-plate 1 0 - 2.4V No | ||
72 | 13 General Purpose TSX2 / Touchscreen X-plate 2 0 - 2.4V No | ||
73 | 14 General Purpose TSY1 / Touchscreen Y-plate 1 0 - 2.4V No | ||
74 | 15 General Purpose TSY2 / Touchscreen Y-plate 2 0 - 2.4V No | ||
diff --git a/Documentation/hwmon/mcp3021 b/Documentation/hwmon/mcp3021 new file mode 100644 index 000000000000..325fd87e81b2 --- /dev/null +++ b/Documentation/hwmon/mcp3021 | |||
@@ -0,0 +1,22 @@ | |||
1 | Kernel driver MCP3021 | ||
2 | ====================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Microchip Technology MCP3021 | ||
6 | Prefix: 'mcp3021' | ||
7 | Datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/21805a.pdf | ||
8 | |||
9 | Author: Mingkai Hu | ||
10 | |||
11 | Description | ||
12 | ----------- | ||
13 | |||
14 | This driver implements support for the Microchip Technology MCP3021 chip. | ||
15 | |||
16 | The Microchip Technology Inc. MCP3021 is a successive approximation A/D | ||
17 | converter (ADC) with 10-bit resolution. | ||
18 | This device provides one single-ended input with very low power consumption. | ||
19 | Communication to the MCP3021 is performed using a 2-wire I2C compatible | ||
20 | interface. Standard (100 kHz) and Fast (400 kHz) I2C modes are available. | ||
21 | The default I2C device address is 0x4d (contact the Microchip factory for | ||
22 | additional address options). | ||
diff --git a/Documentation/hwmon/pmbus b/Documentation/hwmon/pmbus index d28b591753d1..f90f99920cc5 100644 --- a/Documentation/hwmon/pmbus +++ b/Documentation/hwmon/pmbus | |||
@@ -15,13 +15,20 @@ Supported chips: | |||
15 | http://www.onsemi.com/pub_link/Collateral/NCP4200-D.PDF | 15 | http://www.onsemi.com/pub_link/Collateral/NCP4200-D.PDF |
16 | http://www.onsemi.com/pub_link/Collateral/JUNE%202009-%20REV.%200.PDF | 16 | http://www.onsemi.com/pub_link/Collateral/JUNE%202009-%20REV.%200.PDF |
17 | * Lineage Power | 17 | * Lineage Power |
18 | Prefixes: 'pdt003', 'pdt006', 'pdt012', 'udt020' | 18 | Prefixes: 'mdt040', 'pdt003', 'pdt006', 'pdt012', 'udt020' |
19 | Addresses scanned: - | 19 | Addresses scanned: - |
20 | Datasheets: | 20 | Datasheets: |
21 | http://www.lineagepower.com/oem/pdf/PDT003A0X.pdf | 21 | http://www.lineagepower.com/oem/pdf/PDT003A0X.pdf |
22 | http://www.lineagepower.com/oem/pdf/PDT006A0X.pdf | 22 | http://www.lineagepower.com/oem/pdf/PDT006A0X.pdf |
23 | http://www.lineagepower.com/oem/pdf/PDT012A0X.pdf | 23 | http://www.lineagepower.com/oem/pdf/PDT012A0X.pdf |
24 | http://www.lineagepower.com/oem/pdf/UDT020A0X.pdf | 24 | http://www.lineagepower.com/oem/pdf/UDT020A0X.pdf |
25 | http://www.lineagepower.com/oem/pdf/MDT040A0X.pdf | ||
26 | * Texas Instruments TPS40400, TPS40422 | ||
27 | Prefixes: 'tps40400', 'tps40422' | ||
28 | Addresses scanned: - | ||
29 | Datasheets: | ||
30 | http://www.ti.com/lit/gpn/tps40400 | ||
31 | http://www.ti.com/lit/gpn/tps40422 | ||
25 | * Generic PMBus devices | 32 | * Generic PMBus devices |
26 | Prefix: 'pmbus' | 33 | Prefix: 'pmbus' |
27 | Addresses scanned: - | 34 | Addresses scanned: - |
diff --git a/Documentation/hwmon/sch5627 b/Documentation/hwmon/sch5627 index 446a054e4912..0551d266c51c 100644 --- a/Documentation/hwmon/sch5627 +++ b/Documentation/hwmon/sch5627 | |||
@@ -16,6 +16,11 @@ Description | |||
16 | SMSC SCH5627 Super I/O chips include complete hardware monitoring | 16 | SMSC SCH5627 Super I/O chips include complete hardware monitoring |
17 | capabilities. They can monitor up to 5 voltages, 4 fans and 8 temperatures. | 17 | capabilities. They can monitor up to 5 voltages, 4 fans and 8 temperatures. |
18 | 18 | ||
19 | The SMSC SCH5627 hardware monitoring part also contains an integrated | ||
20 | watchdog. In order for this watchdog to function some motherboard specific | ||
21 | initialization most be done by the BIOS, so if the watchdog is not enabled | ||
22 | by the BIOS the sch5627 driver will not register a watchdog device. | ||
23 | |||
19 | The hardware monitoring part of the SMSC SCH5627 is accessed by talking | 24 | The hardware monitoring part of the SMSC SCH5627 is accessed by talking |
20 | through an embedded microcontroller. An application note describing the | 25 | through an embedded microcontroller. An application note describing the |
21 | protocol for communicating with the microcontroller is available upon | 26 | protocol for communicating with the microcontroller is available upon |
diff --git a/Documentation/hwmon/sch5636 b/Documentation/hwmon/sch5636 index f83bd1c260f0..7b0a01da0717 100644 --- a/Documentation/hwmon/sch5636 +++ b/Documentation/hwmon/sch5636 | |||
@@ -26,6 +26,9 @@ temperatures. Note that the driver detects how many fan headers / | |||
26 | temperature sensors are actually implemented on the motherboard, so you will | 26 | temperature sensors are actually implemented on the motherboard, so you will |
27 | likely see fewer temperature and fan inputs. | 27 | likely see fewer temperature and fan inputs. |
28 | 28 | ||
29 | The Fujitsu Theseus hwmon solution also contains an integrated watchdog. | ||
30 | This watchdog is fully supported by the sch5636 driver. | ||
31 | |||
29 | An application note describing the Theseus' registers, as well as an | 32 | An application note describing the Theseus' registers, as well as an |
30 | application note describing the protocol for communicating with the | 33 | application note describing the protocol for communicating with the |
31 | microcontroller is available upon request. Please mail me if you want a copy. | 34 | microcontroller is available upon request. Please mail me if you want a copy. |
diff --git a/Documentation/hwmon/ucd9000 b/Documentation/hwmon/ucd9000 index 40ca6db50c48..0df5f276505b 100644 --- a/Documentation/hwmon/ucd9000 +++ b/Documentation/hwmon/ucd9000 | |||
@@ -70,9 +70,9 @@ attributes are read-only. | |||
70 | 70 | ||
71 | in[1-12]_label "vout[1-12]". | 71 | in[1-12]_label "vout[1-12]". |
72 | in[1-12]_input Measured voltage. From READ_VOUT register. | 72 | in[1-12]_input Measured voltage. From READ_VOUT register. |
73 | in[1-12]_min Minumum Voltage. From VOUT_UV_WARN_LIMIT register. | 73 | in[1-12]_min Minimum Voltage. From VOUT_UV_WARN_LIMIT register. |
74 | in[1-12]_max Maximum voltage. From VOUT_OV_WARN_LIMIT register. | 74 | in[1-12]_max Maximum voltage. From VOUT_OV_WARN_LIMIT register. |
75 | in[1-12]_lcrit Critical minumum Voltage. VOUT_UV_FAULT_LIMIT register. | 75 | in[1-12]_lcrit Critical minimum Voltage. VOUT_UV_FAULT_LIMIT register. |
76 | in[1-12]_crit Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. | 76 | in[1-12]_crit Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. |
77 | in[1-12]_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. | 77 | in[1-12]_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. |
78 | in[1-12]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. | 78 | in[1-12]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. |
@@ -82,7 +82,7 @@ in[1-12]_crit_alarm Voltage critical high alarm. From VOLTAGE_OV_FAULT status. | |||
82 | curr[1-12]_label "iout[1-12]". | 82 | curr[1-12]_label "iout[1-12]". |
83 | curr[1-12]_input Measured current. From READ_IOUT register. | 83 | curr[1-12]_input Measured current. From READ_IOUT register. |
84 | curr[1-12]_max Maximum current. From IOUT_OC_WARN_LIMIT register. | 84 | curr[1-12]_max Maximum current. From IOUT_OC_WARN_LIMIT register. |
85 | curr[1-12]_lcrit Critical minumum output current. From IOUT_UC_FAULT_LIMIT | 85 | curr[1-12]_lcrit Critical minimum output current. From IOUT_UC_FAULT_LIMIT |
86 | register. | 86 | register. |
87 | curr[1-12]_crit Critical maximum current. From IOUT_OC_FAULT_LIMIT register. | 87 | curr[1-12]_crit Critical maximum current. From IOUT_OC_FAULT_LIMIT register. |
88 | curr[1-12]_max_alarm Current high alarm. From IOUT_OC_WARNING status. | 88 | curr[1-12]_max_alarm Current high alarm. From IOUT_OC_WARNING status. |
diff --git a/Documentation/hwmon/ucd9200 b/Documentation/hwmon/ucd9200 index 3c58607f72fe..fd7d07b1908a 100644 --- a/Documentation/hwmon/ucd9200 +++ b/Documentation/hwmon/ucd9200 | |||
@@ -54,9 +54,9 @@ attributes are read-only. | |||
54 | 54 | ||
55 | in1_label "vin". | 55 | in1_label "vin". |
56 | in1_input Measured voltage. From READ_VIN register. | 56 | in1_input Measured voltage. From READ_VIN register. |
57 | in1_min Minumum Voltage. From VIN_UV_WARN_LIMIT register. | 57 | in1_min Minimum Voltage. From VIN_UV_WARN_LIMIT register. |
58 | in1_max Maximum voltage. From VIN_OV_WARN_LIMIT register. | 58 | in1_max Maximum voltage. From VIN_OV_WARN_LIMIT register. |
59 | in1_lcrit Critical minumum Voltage. VIN_UV_FAULT_LIMIT register. | 59 | in1_lcrit Critical minimum Voltage. VIN_UV_FAULT_LIMIT register. |
60 | in1_crit Critical maximum voltage. From VIN_OV_FAULT_LIMIT register. | 60 | in1_crit Critical maximum voltage. From VIN_OV_FAULT_LIMIT register. |
61 | in1_min_alarm Voltage low alarm. From VIN_UV_WARNING status. | 61 | in1_min_alarm Voltage low alarm. From VIN_UV_WARNING status. |
62 | in1_max_alarm Voltage high alarm. From VIN_OV_WARNING status. | 62 | in1_max_alarm Voltage high alarm. From VIN_OV_WARNING status. |
@@ -65,9 +65,9 @@ in1_crit_alarm Voltage critical high alarm. From VIN_OV_FAULT status. | |||
65 | 65 | ||
66 | in[2-5]_label "vout[1-4]". | 66 | in[2-5]_label "vout[1-4]". |
67 | in[2-5]_input Measured voltage. From READ_VOUT register. | 67 | in[2-5]_input Measured voltage. From READ_VOUT register. |
68 | in[2-5]_min Minumum Voltage. From VOUT_UV_WARN_LIMIT register. | 68 | in[2-5]_min Minimum Voltage. From VOUT_UV_WARN_LIMIT register. |
69 | in[2-5]_max Maximum voltage. From VOUT_OV_WARN_LIMIT register. | 69 | in[2-5]_max Maximum voltage. From VOUT_OV_WARN_LIMIT register. |
70 | in[2-5]_lcrit Critical minumum Voltage. VOUT_UV_FAULT_LIMIT register. | 70 | in[2-5]_lcrit Critical minimum Voltage. VOUT_UV_FAULT_LIMIT register. |
71 | in[2-5]_crit Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. | 71 | in[2-5]_crit Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. |
72 | in[2-5]_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. | 72 | in[2-5]_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. |
73 | in[2-5]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. | 73 | in[2-5]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. |
@@ -80,7 +80,7 @@ curr1_input Measured current. From READ_IIN register. | |||
80 | curr[2-5]_label "iout[1-4]". | 80 | curr[2-5]_label "iout[1-4]". |
81 | curr[2-5]_input Measured current. From READ_IOUT register. | 81 | curr[2-5]_input Measured current. From READ_IOUT register. |
82 | curr[2-5]_max Maximum current. From IOUT_OC_WARN_LIMIT register. | 82 | curr[2-5]_max Maximum current. From IOUT_OC_WARN_LIMIT register. |
83 | curr[2-5]_lcrit Critical minumum output current. From IOUT_UC_FAULT_LIMIT | 83 | curr[2-5]_lcrit Critical minimum output current. From IOUT_UC_FAULT_LIMIT |
84 | register. | 84 | register. |
85 | curr[2-5]_crit Critical maximum current. From IOUT_OC_FAULT_LIMIT register. | 85 | curr[2-5]_crit Critical maximum current. From IOUT_OC_FAULT_LIMIT register. |
86 | curr[2-5]_max_alarm Current high alarm. From IOUT_OC_WARNING status. | 86 | curr[2-5]_max_alarm Current high alarm. From IOUT_OC_WARNING status. |
diff --git a/Documentation/hwmon/zl6100 b/Documentation/hwmon/zl6100 index a4e8d90f59f6..a995b41724fd 100644 --- a/Documentation/hwmon/zl6100 +++ b/Documentation/hwmon/zl6100 | |||
@@ -34,6 +34,14 @@ Supported chips: | |||
34 | Prefix: 'zl6105' | 34 | Prefix: 'zl6105' |
35 | Addresses scanned: - | 35 | Addresses scanned: - |
36 | Datasheet: http://www.intersil.com/data/fn/fn6906.pdf | 36 | Datasheet: http://www.intersil.com/data/fn/fn6906.pdf |
37 | * Intersil / Zilker Labs ZL9101M | ||
38 | Prefix: 'zl9101' | ||
39 | Addresses scanned: - | ||
40 | Datasheet: http://www.intersil.com/data/fn/fn7669.pdf | ||
41 | * Intersil / Zilker Labs ZL9117M | ||
42 | Prefix: 'zl9117' | ||
43 | Addresses scanned: - | ||
44 | Datasheet: http://www.intersil.com/data/fn/fn7914.pdf | ||
37 | * Ericsson BMR450, BMR451 | 45 | * Ericsson BMR450, BMR451 |
38 | Prefix: 'bmr450', 'bmr451' | 46 | Prefix: 'bmr450', 'bmr451' |
39 | Addresses scanned: - | 47 | Addresses scanned: - |
@@ -106,7 +114,7 @@ in1_label "vin" | |||
106 | in1_input Measured input voltage. | 114 | in1_input Measured input voltage. |
107 | in1_min Minimum input voltage. | 115 | in1_min Minimum input voltage. |
108 | in1_max Maximum input voltage. | 116 | in1_max Maximum input voltage. |
109 | in1_lcrit Critical minumum input voltage. | 117 | in1_lcrit Critical minimum input voltage. |
110 | in1_crit Critical maximum input voltage. | 118 | in1_crit Critical maximum input voltage. |
111 | in1_min_alarm Input voltage low alarm. | 119 | in1_min_alarm Input voltage low alarm. |
112 | in1_max_alarm Input voltage high alarm. | 120 | in1_max_alarm Input voltage high alarm. |
@@ -115,7 +123,7 @@ in1_crit_alarm Input voltage critical high alarm. | |||
115 | 123 | ||
116 | in2_label "vout1" | 124 | in2_label "vout1" |
117 | in2_input Measured output voltage. | 125 | in2_input Measured output voltage. |
118 | in2_lcrit Critical minumum output Voltage. | 126 | in2_lcrit Critical minimum output Voltage. |
119 | in2_crit Critical maximum output voltage. | 127 | in2_crit Critical maximum output voltage. |
120 | in2_lcrit_alarm Critical output voltage critical low alarm. | 128 | in2_lcrit_alarm Critical output voltage critical low alarm. |
121 | in2_crit_alarm Critical output voltage critical high alarm. | 129 | in2_crit_alarm Critical output voltage critical high alarm. |
diff --git a/Documentation/i2c/instantiating-devices b/Documentation/i2c/instantiating-devices index 9edb75d8c9b9..abf63615ee05 100644 --- a/Documentation/i2c/instantiating-devices +++ b/Documentation/i2c/instantiating-devices | |||
@@ -87,11 +87,11 @@ it may have different addresses from one board to the next (manufacturer | |||
87 | changing its design without notice). In this case, you can call | 87 | changing its design without notice). In this case, you can call |
88 | i2c_new_probed_device() instead of i2c_new_device(). | 88 | i2c_new_probed_device() instead of i2c_new_device(). |
89 | 89 | ||
90 | Example (from the pnx4008 OHCI driver): | 90 | Example (from the nxp OHCI driver): |
91 | 91 | ||
92 | static const unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END }; | 92 | static const unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END }; |
93 | 93 | ||
94 | static int __devinit usb_hcd_pnx4008_probe(struct platform_device *pdev) | 94 | static int __devinit usb_hcd_nxp_probe(struct platform_device *pdev) |
95 | { | 95 | { |
96 | (...) | 96 | (...) |
97 | struct i2c_adapter *i2c_adap; | 97 | struct i2c_adapter *i2c_adap; |
@@ -100,7 +100,7 @@ static int __devinit usb_hcd_pnx4008_probe(struct platform_device *pdev) | |||
100 | (...) | 100 | (...) |
101 | i2c_adap = i2c_get_adapter(2); | 101 | i2c_adap = i2c_get_adapter(2); |
102 | memset(&i2c_info, 0, sizeof(struct i2c_board_info)); | 102 | memset(&i2c_info, 0, sizeof(struct i2c_board_info)); |
103 | strlcpy(i2c_info.type, "isp1301_pnx", I2C_NAME_SIZE); | 103 | strlcpy(i2c_info.type, "isp1301_nxp", I2C_NAME_SIZE); |
104 | isp1301_i2c_client = i2c_new_probed_device(i2c_adap, &i2c_info, | 104 | isp1301_i2c_client = i2c_new_probed_device(i2c_adap, &i2c_info, |
105 | normal_i2c, NULL); | 105 | normal_i2c, NULL); |
106 | i2c_put_adapter(i2c_adap); | 106 | i2c_put_adapter(i2c_adap); |
diff --git a/Documentation/i2o/ioctl b/Documentation/i2o/ioctl index 22ca53a67e23..27c3c5493116 100644 --- a/Documentation/i2o/ioctl +++ b/Documentation/i2o/ioctl | |||
@@ -138,7 +138,7 @@ VI. Setting Parameters | |||
138 | 138 | ||
139 | The return value is the size in bytes of the data written into | 139 | The return value is the size in bytes of the data written into |
140 | ops->resbuf if no errors occur. If an error occurs, -1 is returned | 140 | ops->resbuf if no errors occur. If an error occurs, -1 is returned |
141 | and errno is set appropriatly: | 141 | and errno is set appropriately: |
142 | 142 | ||
143 | EFAULT Invalid user space pointer was passed | 143 | EFAULT Invalid user space pointer was passed |
144 | ENXIO Invalid IOP number | 144 | ENXIO Invalid IOP number |
@@ -222,7 +222,7 @@ VIII. Downloading Software | |||
222 | RETURNS | 222 | RETURNS |
223 | 223 | ||
224 | This function returns 0 no errors occur. If an error occurs, -1 | 224 | This function returns 0 no errors occur. If an error occurs, -1 |
225 | is returned and errno is set appropriatly: | 225 | is returned and errno is set appropriately: |
226 | 226 | ||
227 | EFAULT Invalid user space pointer was passed | 227 | EFAULT Invalid user space pointer was passed |
228 | ENXIO Invalid IOP number | 228 | ENXIO Invalid IOP number |
@@ -264,7 +264,7 @@ IX. Uploading Software | |||
264 | RETURNS | 264 | RETURNS |
265 | 265 | ||
266 | This function returns 0 if no errors occur. If an error occurs, -1 | 266 | This function returns 0 if no errors occur. If an error occurs, -1 |
267 | is returned and errno is set appropriatly: | 267 | is returned and errno is set appropriately: |
268 | 268 | ||
269 | EFAULT Invalid user space pointer was passed | 269 | EFAULT Invalid user space pointer was passed |
270 | ENXIO Invalid IOP number | 270 | ENXIO Invalid IOP number |
@@ -301,7 +301,7 @@ X. Removing Software | |||
301 | RETURNS | 301 | RETURNS |
302 | 302 | ||
303 | This function returns 0 if no errors occur. If an error occurs, -1 | 303 | This function returns 0 if no errors occur. If an error occurs, -1 |
304 | is returned and errno is set appropriatly: | 304 | is returned and errno is set appropriately: |
305 | 305 | ||
306 | EFAULT Invalid user space pointer was passed | 306 | EFAULT Invalid user space pointer was passed |
307 | ENXIO Invalid IOP number | 307 | ENXIO Invalid IOP number |
@@ -325,7 +325,7 @@ X. Validating Configuration | |||
325 | RETURNS | 325 | RETURNS |
326 | 326 | ||
327 | This function returns 0 if no erro occur. If an error occurs, -1 is | 327 | This function returns 0 if no erro occur. If an error occurs, -1 is |
328 | returned and errno is set appropriatly: | 328 | returned and errno is set appropriately: |
329 | 329 | ||
330 | ETIMEDOUT Timeout waiting for reply message | 330 | ETIMEDOUT Timeout waiting for reply message |
331 | ENXIO Invalid IOP number | 331 | ENXIO Invalid IOP number |
@@ -360,7 +360,7 @@ XI. Configuration Dialog | |||
360 | RETURNS | 360 | RETURNS |
361 | 361 | ||
362 | This function returns 0 if no error occur. If an error occurs, -1 | 362 | This function returns 0 if no error occur. If an error occurs, -1 |
363 | is returned and errno is set appropriatly: | 363 | is returned and errno is set appropriately: |
364 | 364 | ||
365 | EFAULT Invalid user space pointer was passed | 365 | EFAULT Invalid user space pointer was passed |
366 | ENXIO Invalid IOP number | 366 | ENXIO Invalid IOP number |
diff --git a/Documentation/ide/ChangeLog.ide-cd.1994-2004 b/Documentation/ide/ChangeLog.ide-cd.1994-2004 index 190d17bfff62..4cc3ad99f39b 100644 --- a/Documentation/ide/ChangeLog.ide-cd.1994-2004 +++ b/Documentation/ide/ChangeLog.ide-cd.1994-2004 | |||
@@ -175,7 +175,7 @@ | |||
175 | * since the .pdf version doesn't seem to work... | 175 | * since the .pdf version doesn't seem to work... |
176 | * -- Updated the TODO list to something more current. | 176 | * -- Updated the TODO list to something more current. |
177 | * | 177 | * |
178 | * 4.15 Aug 25, 1998 -- Updated ide-cd.h to respect mechine endianess, | 178 | * 4.15 Aug 25, 1998 -- Updated ide-cd.h to respect machine endianness, |
179 | * patch thanks to "Eddie C. Dost" <ecd@skynet.be> | 179 | * patch thanks to "Eddie C. Dost" <ecd@skynet.be> |
180 | * | 180 | * |
181 | * 4.50 Oct 19, 1998 -- New maintainers! | 181 | * 4.50 Oct 19, 1998 -- New maintainers! |
diff --git a/Documentation/input/alps.txt b/Documentation/input/alps.txt index 2f95308251d4..ae8ba9a74ce1 100644 --- a/Documentation/input/alps.txt +++ b/Documentation/input/alps.txt | |||
@@ -132,8 +132,8 @@ number of contacts (f1 and f0 in the table below). | |||
132 | byte 5: 0 1 ? ? ? ? f1 f0 | 132 | byte 5: 0 1 ? ? ? ? f1 f0 |
133 | 133 | ||
134 | This packet only appears after a position packet with the mt bit set, and | 134 | This packet only appears after a position packet with the mt bit set, and |
135 | ususally only appears when there are two or more contacts (although | 135 | usually only appears when there are two or more contacts (although |
136 | ocassionally it's seen with only a single contact). | 136 | occassionally it's seen with only a single contact). |
137 | 137 | ||
138 | The final v3 packet type is the trackstick packet. | 138 | The final v3 packet type is the trackstick packet. |
139 | 139 | ||
diff --git a/Documentation/input/joystick.txt b/Documentation/input/joystick.txt index 8007b7ca87bf..304262bb661a 100644 --- a/Documentation/input/joystick.txt +++ b/Documentation/input/joystick.txt | |||
@@ -330,7 +330,7 @@ the USB documentation for how to setup an USB mouse. | |||
330 | The TM DirectConnect (BSP) protocol is supported by the tmdc.c | 330 | The TM DirectConnect (BSP) protocol is supported by the tmdc.c |
331 | module. This includes, but is not limited to: | 331 | module. This includes, but is not limited to: |
332 | 332 | ||
333 | * ThrustMaster Millenium 3D Inceptor | 333 | * ThrustMaster Millennium 3D Interceptor |
334 | * ThrustMaster 3D Rage Pad | 334 | * ThrustMaster 3D Rage Pad |
335 | * ThrustMaster Fusion Digital Game Pad | 335 | * ThrustMaster Fusion Digital Game Pad |
336 | 336 | ||
diff --git a/Documentation/ioctl/hdio.txt b/Documentation/ioctl/hdio.txt index 91a6ecbae0bb..18eb98c44ffe 100644 --- a/Documentation/ioctl/hdio.txt +++ b/Documentation/ioctl/hdio.txt | |||
@@ -596,7 +596,7 @@ HDIO_DRIVE_TASKFILE execute raw taskfile | |||
596 | if CHS/LBA28 | 596 | if CHS/LBA28 |
597 | 597 | ||
598 | The association between in_flags.all and each enable | 598 | The association between in_flags.all and each enable |
599 | bitfield flips depending on endianess; fortunately, TASKFILE | 599 | bitfield flips depending on endianness; fortunately, TASKFILE |
600 | only uses inflags.b.data bit and ignores all other bits. | 600 | only uses inflags.b.data bit and ignores all other bits. |
601 | The end result is that, on any endian machines, it has no | 601 | The end result is that, on any endian machines, it has no |
602 | effect other than modifying in_flags on completion. | 602 | effect other than modifying in_flags on completion. |
@@ -720,7 +720,7 @@ HDIO_DRIVE_TASKFILE execute raw taskfile | |||
720 | 720 | ||
721 | [6] Do not access {in|out}_flags->all except for resetting | 721 | [6] Do not access {in|out}_flags->all except for resetting |
722 | all the bits. Always access individual bit fields. ->all | 722 | all the bits. Always access individual bit fields. ->all |
723 | value will flip depending on endianess. For the same | 723 | value will flip depending on endianness. For the same |
724 | reason, do not use IDE_{TASKFILE|HOB}_STD_{OUT|IN}_FLAGS | 724 | reason, do not use IDE_{TASKFILE|HOB}_STD_{OUT|IN}_FLAGS |
725 | constants defined in hdreg.h. | 725 | constants defined in hdreg.h. |
726 | 726 | ||
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt index 4840334ea97b..3b7488fc3373 100644 --- a/Documentation/ioctl/ioctl-number.txt +++ b/Documentation/ioctl/ioctl-number.txt | |||
@@ -189,7 +189,7 @@ Code Seq#(hex) Include File Comments | |||
189 | 'Y' all linux/cyclades.h | 189 | 'Y' all linux/cyclades.h |
190 | 'Z' 14-15 drivers/message/fusion/mptctl.h | 190 | 'Z' 14-15 drivers/message/fusion/mptctl.h |
191 | '[' 00-07 linux/usb/tmc.h USB Test and Measurement Devices | 191 | '[' 00-07 linux/usb/tmc.h USB Test and Measurement Devices |
192 | <mailto:gregkh@suse.de> | 192 | <mailto:gregkh@linuxfoundation.org> |
193 | 'a' all linux/atm*.h, linux/sonet.h ATM on linux | 193 | 'a' all linux/atm*.h, linux/sonet.h ATM on linux |
194 | <http://lrcwww.epfl.ch/> | 194 | <http://lrcwww.epfl.ch/> |
195 | 'b' 00-FF conflict! bit3 vme host bridge | 195 | 'b' 00-FF conflict! bit3 vme host bridge |
@@ -218,6 +218,7 @@ Code Seq#(hex) Include File Comments | |||
218 | 'h' 00-7F conflict! Charon filesystem | 218 | 'h' 00-7F conflict! Charon filesystem |
219 | <mailto:zapman@interlan.net> | 219 | <mailto:zapman@interlan.net> |
220 | 'h' 00-1F linux/hpet.h conflict! | 220 | 'h' 00-1F linux/hpet.h conflict! |
221 | 'h' 80-8F fs/hfsplus/ioctl.c | ||
221 | 'i' 00-3F linux/i2o-dev.h conflict! | 222 | 'i' 00-3F linux/i2o-dev.h conflict! |
222 | 'i' 0B-1F linux/ipmi.h conflict! | 223 | 'i' 0B-1F linux/ipmi.h conflict! |
223 | 'i' 80-8F linux/i8k.h | 224 | 'i' 80-8F linux/i8k.h |
@@ -255,7 +256,7 @@ Code Seq#(hex) Include File Comments | |||
255 | linux/ixjuser.h <http://web.archive.org/web/*/http://www.quicknet.net> | 256 | linux/ixjuser.h <http://web.archive.org/web/*/http://www.quicknet.net> |
256 | 'r' 00-1F linux/msdos_fs.h and fs/fat/dir.c | 257 | 'r' 00-1F linux/msdos_fs.h and fs/fat/dir.c |
257 | 's' all linux/cdk.h | 258 | 's' all linux/cdk.h |
258 | 't' 00-7F linux/if_ppp.h | 259 | 't' 00-7F linux/ppp-ioctl.h |
259 | 't' 80-8F linux/isdn_ppp.h | 260 | 't' 80-8F linux/isdn_ppp.h |
260 | 't' 90 linux/toshiba.h | 261 | 't' 90 linux/toshiba.h |
261 | 'u' 00-1F linux/smb_fs.h gone | 262 | 'u' 00-1F linux/smb_fs.h gone |
diff --git a/Documentation/kbuild/kconfig-language.txt b/Documentation/kbuild/kconfig-language.txt index 44e2649fbb29..a686f9cd69c1 100644 --- a/Documentation/kbuild/kconfig-language.txt +++ b/Documentation/kbuild/kconfig-language.txt | |||
@@ -117,7 +117,7 @@ applicable everywhere (see syntax). | |||
117 | This attribute is only applicable to menu blocks, if the condition is | 117 | This attribute is only applicable to menu blocks, if the condition is |
118 | false, the menu block is not displayed to the user (the symbols | 118 | false, the menu block is not displayed to the user (the symbols |
119 | contained there can still be selected by other symbols, though). It is | 119 | contained there can still be selected by other symbols, though). It is |
120 | similar to a conditional "prompt" attribude for individual menu | 120 | similar to a conditional "prompt" attribute for individual menu |
121 | entries. Default value of "visible" is true. | 121 | entries. Default value of "visible" is true. |
122 | 122 | ||
123 | - numerical ranges: "range" <symbol> <symbol> ["if" <expr>] | 123 | - numerical ranges: "range" <symbol> <symbol> ["if" <expr>] |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index d99fd9c0ec0e..58eac231fe69 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -713,6 +713,21 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
713 | The filter can be disabled or changed to another | 713 | The filter can be disabled or changed to another |
714 | driver later using sysfs. | 714 | driver later using sysfs. |
715 | 715 | ||
716 | drm_kms_helper.edid_firmware=[<connector>:]<file> | ||
717 | Broken monitors, graphic adapters and KVMs may | ||
718 | send no or incorrect EDID data sets. This parameter | ||
719 | allows to specify an EDID data set in the | ||
720 | /lib/firmware directory that is used instead. | ||
721 | Generic built-in EDID data sets are used, if one of | ||
722 | edid/1024x768.bin, edid/1280x1024.bin, | ||
723 | edid/1680x1050.bin, or edid/1920x1080.bin is given | ||
724 | and no file with the same name exists. Details and | ||
725 | instructions how to build your own EDID data are | ||
726 | available in Documentation/EDID/HOWTO.txt. An EDID | ||
727 | data set will only be used for a particular connector, | ||
728 | if its name and a colon are prepended to the EDID | ||
729 | name. | ||
730 | |||
716 | dscc4.setup= [NET] | 731 | dscc4.setup= [NET] |
717 | 732 | ||
718 | earlycon= [KNL] Output early console device and options. | 733 | earlycon= [KNL] Output early console device and options. |
@@ -950,7 +965,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
950 | controller | 965 | controller |
951 | i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX | 966 | i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX |
952 | controllers | 967 | controllers |
953 | i8042.notimeout [HW] Ignore timeout condition signalled by conroller | 968 | i8042.notimeout [HW] Ignore timeout condition signalled by controller |
954 | i8042.reset [HW] Reset the controller during init and cleanup | 969 | i8042.reset [HW] Reset the controller during init and cleanup |
955 | i8042.unlock [HW] Unlock (ignore) the keylock | 970 | i8042.unlock [HW] Unlock (ignore) the keylock |
956 | 971 | ||
@@ -1071,8 +1086,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1071 | no_x2apic_optout | 1086 | no_x2apic_optout |
1072 | BIOS x2APIC opt-out request will be ignored | 1087 | BIOS x2APIC opt-out request will be ignored |
1073 | 1088 | ||
1074 | inttest= [IA-64] | ||
1075 | |||
1076 | iomem= Disable strict checking of access to MMIO memory | 1089 | iomem= Disable strict checking of access to MMIO memory |
1077 | strict regions from userspace. | 1090 | strict regions from userspace. |
1078 | relaxed | 1091 | relaxed |
@@ -1657,6 +1670,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1657 | of returning the full 64-bit number. | 1670 | of returning the full 64-bit number. |
1658 | The default is to return 64-bit inode numbers. | 1671 | The default is to return 64-bit inode numbers. |
1659 | 1672 | ||
1673 | nfs.max_session_slots= | ||
1674 | [NFSv4.1] Sets the maximum number of session slots | ||
1675 | the client will attempt to negotiate with the server. | ||
1676 | This limits the number of simultaneous RPC requests | ||
1677 | that the client can send to the NFSv4.1 server. | ||
1678 | Note that there is little point in setting this | ||
1679 | value higher than the max_tcp_slot_table_limit. | ||
1680 | |||
1660 | nfs.nfs4_disable_idmapping= | 1681 | nfs.nfs4_disable_idmapping= |
1661 | [NFSv4] When set to the default of '1', this option | 1682 | [NFSv4] When set to the default of '1', this option |
1662 | ensures that both the RPC level authentication | 1683 | ensures that both the RPC level authentication |
@@ -1670,6 +1691,21 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1670 | back to using the idmapper. | 1691 | back to using the idmapper. |
1671 | To turn off this behaviour, set the value to '0'. | 1692 | To turn off this behaviour, set the value to '0'. |
1672 | 1693 | ||
1694 | nfs.send_implementation_id = | ||
1695 | [NFSv4.1] Send client implementation identification | ||
1696 | information in exchange_id requests. | ||
1697 | If zero, no implementation identification information | ||
1698 | will be sent. | ||
1699 | The default is to send the implementation identification | ||
1700 | information. | ||
1701 | |||
1702 | |||
1703 | objlayoutdriver.osd_login_prog= | ||
1704 | [NFS] [OBJLAYOUT] sets the pathname to the program which | ||
1705 | is used to automatically discover and login into new | ||
1706 | osd-targets. Please see: | ||
1707 | Documentation/filesystems/pnfs.txt for more explanations | ||
1708 | |||
1673 | nmi_debug= [KNL,AVR32,SH] Specify one or more actions to take | 1709 | nmi_debug= [KNL,AVR32,SH] Specify one or more actions to take |
1674 | when a NMI is triggered. | 1710 | when a NMI is triggered. |
1675 | Format: [state][,regs][,debounce][,die] | 1711 | Format: [state][,regs][,debounce][,die] |
@@ -2109,8 +2145,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2109 | the default. | 2145 | the default. |
2110 | off: Turn ECRC off | 2146 | off: Turn ECRC off |
2111 | on: Turn ECRC on. | 2147 | on: Turn ECRC on. |
2112 | realloc reallocate PCI resources if allocations done by BIOS | 2148 | realloc= Enable/disable reallocating PCI bridge resources |
2113 | are erroneous. | 2149 | if allocations done by BIOS are too small to |
2150 | accommodate resources required by all child | ||
2151 | devices. | ||
2152 | off: Turn realloc off | ||
2153 | on: Turn realloc on | ||
2154 | realloc same as realloc=on | ||
2155 | noari do not use PCIe ARI. | ||
2114 | 2156 | ||
2115 | pcie_aspm= [PCIE] Forcibly enable or disable PCIe Active State Power | 2157 | pcie_aspm= [PCIE] Forcibly enable or disable PCIe Active State Power |
2116 | Management. | 2158 | Management. |
@@ -2118,6 +2160,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2118 | force Enable ASPM even on devices that claim not to support it. | 2160 | force Enable ASPM even on devices that claim not to support it. |
2119 | WARNING: Forcing ASPM on may cause system lockups. | 2161 | WARNING: Forcing ASPM on may cause system lockups. |
2120 | 2162 | ||
2163 | pcie_hp= [PCIE] PCI Express Hotplug driver options: | ||
2164 | nomsi Do not use MSI for PCI Express Native Hotplug (this | ||
2165 | makes all PCIe ports use INTx for hotplug services). | ||
2166 | |||
2121 | pcie_ports= [PCIE] PCIe ports handling: | 2167 | pcie_ports= [PCIE] PCIe ports handling: |
2122 | auto Ask the BIOS whether or not to use native PCIe services | 2168 | auto Ask the BIOS whether or not to use native PCIe services |
2123 | associated with PCIe ports (PME, hot-plug, AER). Use | 2169 | associated with PCIe ports (PME, hot-plug, AER). Use |
@@ -2440,7 +2486,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2440 | For more information see Documentation/vm/slub.txt. | 2486 | For more information see Documentation/vm/slub.txt. |
2441 | 2487 | ||
2442 | slub_min_order= [MM, SLUB] | 2488 | slub_min_order= [MM, SLUB] |
2443 | Determines the mininum page order for slabs. Must be | 2489 | Determines the minimum page order for slabs. Must be |
2444 | lower than slub_max_order. | 2490 | lower than slub_max_order. |
2445 | For more information see Documentation/vm/slub.txt. | 2491 | For more information see Documentation/vm/slub.txt. |
2446 | 2492 | ||
@@ -2606,7 +2652,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2606 | 2652 | ||
2607 | threadirqs [KNL] | 2653 | threadirqs [KNL] |
2608 | Force threading of all interrupt handlers except those | 2654 | Force threading of all interrupt handlers except those |
2609 | marked explicitely IRQF_NO_THREAD. | 2655 | marked explicitly IRQF_NO_THREAD. |
2610 | 2656 | ||
2611 | topology= [S390] | 2657 | topology= [S390] |
2612 | Format: {off | on} | 2658 | Format: {off | on} |
@@ -2635,6 +2681,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2635 | to facilitate early boot debugging. | 2681 | to facilitate early boot debugging. |
2636 | See also Documentation/trace/events.txt | 2682 | See also Documentation/trace/events.txt |
2637 | 2683 | ||
2684 | transparent_hugepage= | ||
2685 | [KNL] | ||
2686 | Format: [always|madvise|never] | ||
2687 | Can be used to control the default behavior of the system | ||
2688 | with respect to transparent hugepages. | ||
2689 | See Documentation/vm/transhuge.txt for more details. | ||
2690 | |||
2638 | tsc= Disable clocksource stability checks for TSC. | 2691 | tsc= Disable clocksource stability checks for TSC. |
2639 | Format: <string> | 2692 | Format: <string> |
2640 | [x86] reliable: mark tsc clocksource as reliable, this | 2693 | [x86] reliable: mark tsc clocksource as reliable, this |
diff --git a/Documentation/ko_KR/HOWTO b/Documentation/ko_KR/HOWTO index ab5189ae3428..2f48f205fedc 100644 --- a/Documentation/ko_KR/HOWTO +++ b/Documentation/ko_KR/HOWTO | |||
@@ -354,7 +354,7 @@ Andrew Morton에 의해 배포된 실험적인 커널 패치들이다. Andrew는 | |||
354 | git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git | 354 | git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git |
355 | 355 | ||
356 | quilt trees: | 356 | quilt trees: |
357 | - USB, PCI, Driver Core, and I2C, Greg Kroah-Hartman < gregkh@suse.de> | 357 | - USB, PCI, Driver Core, and I2C, Greg Kroah-Hartman < gregkh@linuxfoundation.org> |
358 | kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ | 358 | kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ |
359 | - x86-64, partly i386, Andi Kleen < ak@suse.de> | 359 | - x86-64, partly i386, Andi Kleen < ak@suse.de> |
360 | ftp.firstfloor.org:/pub/ak/x86_64/quilt/ | 360 | ftp.firstfloor.org:/pub/ak/x86_64/quilt/ |
diff --git a/Documentation/kobject.txt b/Documentation/kobject.txt index 3ab2472509cb..49578cf1aea5 100644 --- a/Documentation/kobject.txt +++ b/Documentation/kobject.txt | |||
@@ -1,6 +1,6 @@ | |||
1 | Everything you never wanted to know about kobjects, ksets, and ktypes | 1 | Everything you never wanted to know about kobjects, ksets, and ktypes |
2 | 2 | ||
3 | Greg Kroah-Hartman <gregkh@suse.de> | 3 | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
4 | 4 | ||
5 | Based on an original article by Jon Corbet for lwn.net written October 1, | 5 | Based on an original article by Jon Corbet for lwn.net written October 1, |
6 | 2003 and located at http://lwn.net/Articles/51437/ | 6 | 2003 and located at http://lwn.net/Articles/51437/ |
diff --git a/Documentation/leds/leds-lp5521.txt b/Documentation/leds/leds-lp5521.txt index c4d8d151e0fe..0e542ab3d4a0 100644 --- a/Documentation/leds/leds-lp5521.txt +++ b/Documentation/leds/leds-lp5521.txt | |||
@@ -43,17 +43,23 @@ Format: 10x mA i.e 10 means 1.0 mA | |||
43 | example platform data: | 43 | example platform data: |
44 | 44 | ||
45 | Note: chan_nr can have values between 0 and 2. | 45 | Note: chan_nr can have values between 0 and 2. |
46 | The name of each channel can be configurable. | ||
47 | If the name field is not defined, the default name will be set to 'xxxx:channelN' | ||
48 | (XXXX : pdata->label or i2c client name, N : channel number) | ||
46 | 49 | ||
47 | static struct lp5521_led_config lp5521_led_config[] = { | 50 | static struct lp5521_led_config lp5521_led_config[] = { |
48 | { | 51 | { |
52 | .name = "red", | ||
49 | .chan_nr = 0, | 53 | .chan_nr = 0, |
50 | .led_current = 50, | 54 | .led_current = 50, |
51 | .max_current = 130, | 55 | .max_current = 130, |
52 | }, { | 56 | }, { |
57 | .name = "green", | ||
53 | .chan_nr = 1, | 58 | .chan_nr = 1, |
54 | .led_current = 0, | 59 | .led_current = 0, |
55 | .max_current = 130, | 60 | .max_current = 130, |
56 | }, { | 61 | }, { |
62 | .name = "blue", | ||
57 | .chan_nr = 2, | 63 | .chan_nr = 2, |
58 | .led_current = 0, | 64 | .led_current = 0, |
59 | .max_current = 130, | 65 | .max_current = 130, |
@@ -86,3 +92,60 @@ static struct lp5521_platform_data lp5521_platform_data = { | |||
86 | 92 | ||
87 | If the current is set to 0 in the platform data, that channel is | 93 | If the current is set to 0 in the platform data, that channel is |
88 | disabled and it is not visible in the sysfs. | 94 | disabled and it is not visible in the sysfs. |
95 | |||
96 | The 'update_config' : CONFIG register (ADDR 08h) | ||
97 | This value is platform-specific data. | ||
98 | If update_config is not defined, the CONFIG register is set with | ||
99 | 'LP5521_PWRSAVE_EN | LP5521_CP_MODE_AUTO | LP5521_R_TO_BATT'. | ||
100 | (Enable auto-powersave, set charge pump to auto, red to battery) | ||
101 | |||
102 | example of update_config : | ||
103 | |||
104 | #define LP5521_CONFIGS (LP5521_PWM_HF | LP5521_PWRSAVE_EN | \ | ||
105 | LP5521_CP_MODE_AUTO | LP5521_R_TO_BATT | \ | ||
106 | LP5521_CLK_INT) | ||
107 | |||
108 | static struct lp5521_platform_data lp5521_pdata = { | ||
109 | .led_config = lp5521_led_config, | ||
110 | .num_channels = ARRAY_SIZE(lp5521_led_config), | ||
111 | .clock_mode = LP5521_CLOCK_INT, | ||
112 | .update_config = LP5521_CONFIGS, | ||
113 | }; | ||
114 | |||
115 | LED patterns : LP5521 has autonomous operation without external control. | ||
116 | Pattern data can be defined in the platform data. | ||
117 | |||
118 | example of led pattern data : | ||
119 | |||
120 | /* RGB(50,5,0) 500ms on, 500ms off, infinite loop */ | ||
121 | static u8 pattern_red[] = { | ||
122 | 0x40, 0x32, 0x60, 0x00, 0x40, 0x00, 0x60, 0x00, | ||
123 | }; | ||
124 | |||
125 | static u8 pattern_green[] = { | ||
126 | 0x40, 0x05, 0x60, 0x00, 0x40, 0x00, 0x60, 0x00, | ||
127 | }; | ||
128 | |||
129 | static struct lp5521_led_pattern board_led_patterns[] = { | ||
130 | { | ||
131 | .r = pattern_red, | ||
132 | .g = pattern_green, | ||
133 | .size_r = ARRAY_SIZE(pattern_red), | ||
134 | .size_g = ARRAY_SIZE(pattern_green), | ||
135 | }, | ||
136 | }; | ||
137 | |||
138 | static struct lp5521_platform_data lp5521_platform_data = { | ||
139 | .led_config = lp5521_led_config, | ||
140 | .num_channels = ARRAY_SIZE(lp5521_led_config), | ||
141 | .clock_mode = LP5521_CLOCK_EXT, | ||
142 | .patterns = board_led_patterns, | ||
143 | .num_patterns = ARRAY_SIZE(board_led_patterns), | ||
144 | }; | ||
145 | |||
146 | Then predefined led pattern(s) can be executed via the sysfs. | ||
147 | To start the pattern #1, | ||
148 | # echo 1 > /sys/bus/i2c/devices/xxxx/led_pattern | ||
149 | (xxxx : i2c bus & slave address) | ||
150 | To end the pattern, | ||
151 | # echo 0 > /sys/bus/i2c/devices/xxxx/led_pattern | ||
diff --git a/Documentation/magic-number.txt b/Documentation/magic-number.txt index abf481f780ec..82761a31d64d 100644 --- a/Documentation/magic-number.txt +++ b/Documentation/magic-number.txt | |||
@@ -89,7 +89,7 @@ TTY_DRIVER_MAGIC 0x5402 tty_driver include/linux/tty_driver.h | |||
89 | MGSLPC_MAGIC 0x5402 mgslpc_info drivers/char/pcmcia/synclink_cs.c | 89 | MGSLPC_MAGIC 0x5402 mgslpc_info drivers/char/pcmcia/synclink_cs.c |
90 | TTY_LDISC_MAGIC 0x5403 tty_ldisc include/linux/tty_ldisc.h | 90 | TTY_LDISC_MAGIC 0x5403 tty_ldisc include/linux/tty_ldisc.h |
91 | USB_SERIAL_MAGIC 0x6702 usb_serial drivers/usb/serial/usb-serial.h | 91 | USB_SERIAL_MAGIC 0x6702 usb_serial drivers/usb/serial/usb-serial.h |
92 | FULL_DUPLEX_MAGIC 0x6969 drivers/net/tulip/de2104x.c | 92 | FULL_DUPLEX_MAGIC 0x6969 drivers/net/ethernet/dec/tulip/de2104x.c |
93 | USB_BLUETOOTH_MAGIC 0x6d02 usb_bluetooth drivers/usb/class/bluetty.c | 93 | USB_BLUETOOTH_MAGIC 0x6d02 usb_bluetooth drivers/usb/class/bluetty.c |
94 | RFCOMM_TTY_MAGIC 0x6d02 net/bluetooth/rfcomm/tty.c | 94 | RFCOMM_TTY_MAGIC 0x6d02 net/bluetooth/rfcomm/tty.c |
95 | USB_SERIAL_PORT_MAGIC 0x7301 usb_serial_port drivers/usb/serial/usb-serial.h | 95 | USB_SERIAL_PORT_MAGIC 0x7301 usb_serial_port drivers/usb/serial/usb-serial.h |
diff --git a/Documentation/networking/LICENSE.qlge b/Documentation/networking/LICENSE.qlge index 123b6edd7f18..ce64e4d15b21 100644 --- a/Documentation/networking/LICENSE.qlge +++ b/Documentation/networking/LICENSE.qlge | |||
@@ -1,46 +1,288 @@ | |||
1 | Copyright (c) 2003-2008 QLogic Corporation | 1 | Copyright (c) 2003-2011 QLogic Corporation |
2 | QLogic Linux Networking HBA Driver | 2 | QLogic Linux qlge NIC Driver |
3 | 3 | ||
4 | This program includes a device driver for Linux 2.6 that may be | ||
5 | distributed with QLogic hardware specific firmware binary file. | ||
6 | You may modify and redistribute the device driver code under the | 4 | You may modify and redistribute the device driver code under the |
7 | GNU General Public License as published by the Free Software | 5 | GNU General Public License (a copy of which is attached hereto as |
8 | Foundation (version 2 or a later version). | 6 | Exhibit A) published by the Free Software Foundation (version 2). |
9 | |||
10 | You may redistribute the hardware specific firmware binary file | ||
11 | under the following terms: | ||
12 | |||
13 | 1. Redistribution of source code (only if applicable), | ||
14 | must retain the above copyright notice, this list of | ||
15 | conditions and the following disclaimer. | ||
16 | |||
17 | 2. Redistribution in binary form must reproduce the above | ||
18 | copyright notice, this list of conditions and the | ||
19 | following disclaimer in the documentation and/or other | ||
20 | materials provided with the distribution. | ||
21 | |||
22 | 3. The name of QLogic Corporation may not be used to | ||
23 | endorse or promote products derived from this software | ||
24 | without specific prior written permission | ||
25 | |||
26 | REGARDLESS OF WHAT LICENSING MECHANISM IS USED OR APPLICABLE, | ||
27 | THIS PROGRAM IS PROVIDED BY QLOGIC CORPORATION "AS IS'' AND ANY | ||
28 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
29 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A | ||
30 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR | ||
31 | BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||
32 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED | ||
33 | TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
34 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
35 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
36 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
37 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
38 | POSSIBILITY OF SUCH DAMAGE. | ||
39 | |||
40 | USER ACKNOWLEDGES AND AGREES THAT USE OF THIS PROGRAM WILL NOT | ||
41 | CREATE OR GIVE GROUNDS FOR A LICENSE BY IMPLICATION, ESTOPPEL, OR | ||
42 | OTHERWISE IN ANY INTELLECTUAL PROPERTY RIGHTS (PATENT, COPYRIGHT, | ||
43 | TRADE SECRET, MASK WORK, OR OTHER PROPRIETARY RIGHT) EMBODIED IN | ||
44 | ANY OTHER QLOGIC HARDWARE OR SOFTWARE EITHER SOLELY OR IN | ||
45 | COMBINATION WITH THIS PROGRAM. | ||
46 | 7 | ||
8 | |||
9 | EXHIBIT A | ||
10 | |||
11 | GNU GENERAL PUBLIC LICENSE | ||
12 | Version 2, June 1991 | ||
13 | |||
14 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. | ||
15 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
16 | Everyone is permitted to copy and distribute verbatim copies | ||
17 | of this license document, but changing it is not allowed. | ||
18 | |||
19 | Preamble | ||
20 | |||
21 | The licenses for most software are designed to take away your | ||
22 | freedom to share and change it. By contrast, the GNU General Public | ||
23 | License is intended to guarantee your freedom to share and change free | ||
24 | software--to make sure the software is free for all its users. This | ||
25 | General Public License applies to most of the Free Software | ||
26 | Foundation's software and to any other program whose authors commit to | ||
27 | using it. (Some other Free Software Foundation software is covered by | ||
28 | the GNU Lesser General Public License instead.) You can apply it to | ||
29 | your programs, too. | ||
30 | |||
31 | When we speak of free software, we are referring to freedom, not | ||
32 | price. Our General Public Licenses are designed to make sure that you | ||
33 | have the freedom to distribute copies of free software (and charge for | ||
34 | this service if you wish), that you receive source code or can get it | ||
35 | if you want it, that you can change the software or use pieces of it | ||
36 | in new free programs; and that you know you can do these things. | ||
37 | |||
38 | To protect your rights, we need to make restrictions that forbid | ||
39 | anyone to deny you these rights or to ask you to surrender the rights. | ||
40 | These restrictions translate to certain responsibilities for you if you | ||
41 | distribute copies of the software, or if you modify it. | ||
42 | |||
43 | For example, if you distribute copies of such a program, whether | ||
44 | gratis or for a fee, you must give the recipients all the rights that | ||
45 | you have. You must make sure that they, too, receive or can get the | ||
46 | source code. And you must show them these terms so they know their | ||
47 | rights. | ||
48 | |||
49 | We protect your rights with two steps: (1) copyright the software, and | ||
50 | (2) offer you this license which gives you legal permission to copy, | ||
51 | distribute and/or modify the software. | ||
52 | |||
53 | Also, for each author's protection and ours, we want to make certain | ||
54 | that everyone understands that there is no warranty for this free | ||
55 | software. If the software is modified by someone else and passed on, we | ||
56 | want its recipients to know that what they have is not the original, so | ||
57 | that any problems introduced by others will not reflect on the original | ||
58 | authors' reputations. | ||
59 | |||
60 | Finally, any free program is threatened constantly by software | ||
61 | patents. We wish to avoid the danger that redistributors of a free | ||
62 | program will individually obtain patent licenses, in effect making the | ||
63 | program proprietary. To prevent this, we have made it clear that any | ||
64 | patent must be licensed for everyone's free use or not licensed at all. | ||
65 | |||
66 | The precise terms and conditions for copying, distribution and | ||
67 | modification follow. | ||
68 | |||
69 | GNU GENERAL PUBLIC LICENSE | ||
70 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||
71 | |||
72 | 0. This License applies to any program or other work which contains | ||
73 | a notice placed by the copyright holder saying it may be distributed | ||
74 | under the terms of this General Public License. The "Program", below, | ||
75 | refers to any such program or work, and a "work based on the Program" | ||
76 | means either the Program or any derivative work under copyright law: | ||
77 | that is to say, a work containing the Program or a portion of it, | ||
78 | either verbatim or with modifications and/or translated into another | ||
79 | language. (Hereinafter, translation is included without limitation in | ||
80 | the term "modification".) Each licensee is addressed as "you". | ||
81 | |||
82 | Activities other than copying, distribution and modification are not | ||
83 | covered by this License; they are outside its scope. The act of | ||
84 | running the Program is not restricted, and the output from the Program | ||
85 | is covered only if its contents constitute a work based on the | ||
86 | Program (independent of having been made by running the Program). | ||
87 | Whether that is true depends on what the Program does. | ||
88 | |||
89 | 1. You may copy and distribute verbatim copies of the Program's | ||
90 | source code as you receive it, in any medium, provided that you | ||
91 | conspicuously and appropriately publish on each copy an appropriate | ||
92 | copyright notice and disclaimer of warranty; keep intact all the | ||
93 | notices that refer to this License and to the absence of any warranty; | ||
94 | and give any other recipients of the Program a copy of this License | ||
95 | along with the Program. | ||
96 | |||
97 | You may charge a fee for the physical act of transferring a copy, and | ||
98 | you may at your option offer warranty protection in exchange for a fee. | ||
99 | |||
100 | 2. You may modify your copy or copies of the Program or any portion | ||
101 | of it, thus forming a work based on the Program, and copy and | ||
102 | distribute such modifications or work under the terms of Section 1 | ||
103 | above, provided that you also meet all of these conditions: | ||
104 | |||
105 | a) You must cause the modified files to carry prominent notices | ||
106 | stating that you changed the files and the date of any change. | ||
107 | |||
108 | b) You must cause any work that you distribute or publish, that in | ||
109 | whole or in part contains or is derived from the Program or any | ||
110 | part thereof, to be licensed as a whole at no charge to all third | ||
111 | parties under the terms of this License. | ||
112 | |||
113 | c) If the modified program normally reads commands interactively | ||
114 | when run, you must cause it, when started running for such | ||
115 | interactive use in the most ordinary way, to print or display an | ||
116 | announcement including an appropriate copyright notice and a | ||
117 | notice that there is no warranty (or else, saying that you provide | ||
118 | a warranty) and that users may redistribute the program under | ||
119 | these conditions, and telling the user how to view a copy of this | ||
120 | License. (Exception: if the Program itself is interactive but | ||
121 | does not normally print such an announcement, your work based on | ||
122 | the Program is not required to print an announcement.) | ||
123 | |||
124 | These requirements apply to the modified work as a whole. If | ||
125 | identifiable sections of that work are not derived from the Program, | ||
126 | and can be reasonably considered independent and separate works in | ||
127 | themselves, then this License, and its terms, do not apply to those | ||
128 | sections when you distribute them as separate works. But when you | ||
129 | distribute the same sections as part of a whole which is a work based | ||
130 | on the Program, the distribution of the whole must be on the terms of | ||
131 | this License, whose permissions for other licensees extend to the | ||
132 | entire whole, and thus to each and every part regardless of who wrote it. | ||
133 | |||
134 | Thus, it is not the intent of this section to claim rights or contest | ||
135 | your rights to work written entirely by you; rather, the intent is to | ||
136 | exercise the right to control the distribution of derivative or | ||
137 | collective works based on the Program. | ||
138 | |||
139 | In addition, mere aggregation of another work not based on the Program | ||
140 | with the Program (or with a work based on the Program) on a volume of | ||
141 | a storage or distribution medium does not bring the other work under | ||
142 | the scope of this License. | ||
143 | |||
144 | 3. You may copy and distribute the Program (or a work based on it, | ||
145 | under Section 2) in object code or executable form under the terms of | ||
146 | Sections 1 and 2 above provided that you also do one of the following: | ||
147 | |||
148 | a) Accompany it with the complete corresponding machine-readable | ||
149 | source code, which must be distributed under the terms of Sections | ||
150 | 1 and 2 above on a medium customarily used for software interchange; or, | ||
151 | |||
152 | b) Accompany it with a written offer, valid for at least three | ||
153 | years, to give any third party, for a charge no more than your | ||
154 | cost of physically performing source distribution, a complete | ||
155 | machine-readable copy of the corresponding source code, to be | ||
156 | distributed under the terms of Sections 1 and 2 above on a medium | ||
157 | customarily used for software interchange; or, | ||
158 | |||
159 | c) Accompany it with the information you received as to the offer | ||
160 | to distribute corresponding source code. (This alternative is | ||
161 | allowed only for noncommercial distribution and only if you | ||
162 | received the program in object code or executable form with such | ||
163 | an offer, in accord with Subsection b above.) | ||
164 | |||
165 | The source code for a work means the preferred form of the work for | ||
166 | making modifications to it. For an executable work, complete source | ||
167 | code means all the source code for all modules it contains, plus any | ||
168 | associated interface definition files, plus the scripts used to | ||
169 | control compilation and installation of the executable. However, as a | ||
170 | special exception, the source code distributed need not include | ||
171 | anything that is normally distributed (in either source or binary | ||
172 | form) with the major components (compiler, kernel, and so on) of the | ||
173 | operating system on which the executable runs, unless that component | ||
174 | itself accompanies the executable. | ||
175 | |||
176 | If distribution of executable or object code is made by offering | ||
177 | access to copy from a designated place, then offering equivalent | ||
178 | access to copy the source code from the same place counts as | ||
179 | distribution of the source code, even though third parties are not | ||
180 | compelled to copy the source along with the object code. | ||
181 | |||
182 | 4. You may not copy, modify, sublicense, or distribute the Program | ||
183 | except as expressly provided under this License. Any attempt | ||
184 | otherwise to copy, modify, sublicense or distribute the Program is | ||
185 | void, and will automatically terminate your rights under this License. | ||
186 | However, parties who have received copies, or rights, from you under | ||
187 | this License will not have their licenses terminated so long as such | ||
188 | parties remain in full compliance. | ||
189 | |||
190 | 5. You are not required to accept this License, since you have not | ||
191 | signed it. However, nothing else grants you permission to modify or | ||
192 | distribute the Program or its derivative works. These actions are | ||
193 | prohibited by law if you do not accept this License. Therefore, by | ||
194 | modifying or distributing the Program (or any work based on the | ||
195 | Program), you indicate your acceptance of this License to do so, and | ||
196 | all its terms and conditions for copying, distributing or modifying | ||
197 | the Program or works based on it. | ||
198 | |||
199 | 6. Each time you redistribute the Program (or any work based on the | ||
200 | Program), the recipient automatically receives a license from the | ||
201 | original licensor to copy, distribute or modify the Program subject to | ||
202 | these terms and conditions. You may not impose any further | ||
203 | restrictions on the recipients' exercise of the rights granted herein. | ||
204 | You are not responsible for enforcing compliance by third parties to | ||
205 | this License. | ||
206 | |||
207 | 7. If, as a consequence of a court judgment or allegation of patent | ||
208 | infringement or for any other reason (not limited to patent issues), | ||
209 | conditions are imposed on you (whether by court order, agreement or | ||
210 | otherwise) that contradict the conditions of this License, they do not | ||
211 | excuse you from the conditions of this License. If you cannot | ||
212 | distribute so as to satisfy simultaneously your obligations under this | ||
213 | License and any other pertinent obligations, then as a consequence you | ||
214 | may not distribute the Program at all. For example, if a patent | ||
215 | license would not permit royalty-free redistribution of the Program by | ||
216 | all those who receive copies directly or indirectly through you, then | ||
217 | the only way you could satisfy both it and this License would be to | ||
218 | refrain entirely from distribution of the Program. | ||
219 | |||
220 | If any portion of this section is held invalid or unenforceable under | ||
221 | any particular circumstance, the balance of the section is intended to | ||
222 | apply and the section as a whole is intended to apply in other | ||
223 | circumstances. | ||
224 | |||
225 | It is not the purpose of this section to induce you to infringe any | ||
226 | patents or other property right claims or to contest validity of any | ||
227 | such claims; this section has the sole purpose of protecting the | ||
228 | integrity of the free software distribution system, which is | ||
229 | implemented by public license practices. Many people have made | ||
230 | generous contributions to the wide range of software distributed | ||
231 | through that system in reliance on consistent application of that | ||
232 | system; it is up to the author/donor to decide if he or she is willing | ||
233 | to distribute software through any other system and a licensee cannot | ||
234 | impose that choice. | ||
235 | |||
236 | This section is intended to make thoroughly clear what is believed to | ||
237 | be a consequence of the rest of this License. | ||
238 | |||
239 | 8. If the distribution and/or use of the Program is restricted in | ||
240 | certain countries either by patents or by copyrighted interfaces, the | ||
241 | original copyright holder who places the Program under this License | ||
242 | may add an explicit geographical distribution limitation excluding | ||
243 | those countries, so that distribution is permitted only in or among | ||
244 | countries not thus excluded. In such case, this License incorporates | ||
245 | the limitation as if written in the body of this License. | ||
246 | |||
247 | 9. The Free Software Foundation may publish revised and/or new versions | ||
248 | of the General Public License from time to time. Such new versions will | ||
249 | be similar in spirit to the present version, but may differ in detail to | ||
250 | address new problems or concerns. | ||
251 | |||
252 | Each version is given a distinguishing version number. If the Program | ||
253 | specifies a version number of this License which applies to it and "any | ||
254 | later version", you have the option of following the terms and conditions | ||
255 | either of that version or of any later version published by the Free | ||
256 | Software Foundation. If the Program does not specify a version number of | ||
257 | this License, you may choose any version ever published by the Free Software | ||
258 | Foundation. | ||
259 | |||
260 | 10. If you wish to incorporate parts of the Program into other free | ||
261 | programs whose distribution conditions are different, write to the author | ||
262 | to ask for permission. For software which is copyrighted by the Free | ||
263 | Software Foundation, write to the Free Software Foundation; we sometimes | ||
264 | make exceptions for this. Our decision will be guided by the two goals | ||
265 | of preserving the free status of all derivatives of our free software and | ||
266 | of promoting the sharing and reuse of software generally. | ||
267 | |||
268 | NO WARRANTY | ||
269 | |||
270 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | ||
271 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN | ||
272 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | ||
273 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | ||
274 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
275 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS | ||
276 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE | ||
277 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | ||
278 | REPAIR OR CORRECTION. | ||
279 | |||
280 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | ||
281 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | ||
282 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | ||
283 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | ||
284 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | ||
285 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | ||
286 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | ||
287 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | ||
288 | POSSIBILITY OF SUCH DAMAGES. | ||
diff --git a/Documentation/networking/dns_resolver.txt b/Documentation/networking/dns_resolver.txt index 7f531ad83285..d86adcdae420 100644 --- a/Documentation/networking/dns_resolver.txt +++ b/Documentation/networking/dns_resolver.txt | |||
@@ -102,6 +102,10 @@ implemented in the module can be called after doing: | |||
102 | If _expiry is non-NULL, the expiry time (TTL) of the result will be | 102 | If _expiry is non-NULL, the expiry time (TTL) of the result will be |
103 | returned also. | 103 | returned also. |
104 | 104 | ||
105 | The kernel maintains an internal keyring in which it caches looked up keys. | ||
106 | This can be cleared by any process that has the CAP_SYS_ADMIN capability by | ||
107 | the use of KEYCTL_KEYRING_CLEAR on the keyring ID. | ||
108 | |||
105 | 109 | ||
106 | =============================== | 110 | =============================== |
107 | READING DNS KEYS FROM USERSPACE | 111 | READING DNS KEYS FROM USERSPACE |
diff --git a/Documentation/networking/fore200e.txt b/Documentation/networking/fore200e.txt index 6e0d2a9613ec..f648eb265188 100644 --- a/Documentation/networking/fore200e.txt +++ b/Documentation/networking/fore200e.txt | |||
@@ -44,7 +44,7 @@ the 'software updates' pages. The firmware binaries are part of | |||
44 | the various ForeThought software distributions. | 44 | the various ForeThought software distributions. |
45 | 45 | ||
46 | Notice that different versions of the PCA-200E firmware exist, depending | 46 | Notice that different versions of the PCA-200E firmware exist, depending |
47 | on the endianess of the host architecture. The driver is shipped with | 47 | on the endianness of the host architecture. The driver is shipped with |
48 | both little and big endian PCA firmware images. | 48 | both little and big endian PCA firmware images. |
49 | 49 | ||
50 | Name and location of the new firmware images can be set at kernel | 50 | Name and location of the new firmware images can be set at kernel |
diff --git a/Documentation/networking/l2tp.txt b/Documentation/networking/l2tp.txt index e7bf3979facb..e63fc1f7bf87 100644 --- a/Documentation/networking/l2tp.txt +++ b/Documentation/networking/l2tp.txt | |||
@@ -111,7 +111,7 @@ When creating PPPoL2TP sockets, the application provides information | |||
111 | to the driver about the socket in a socket connect() call. Source and | 111 | to the driver about the socket in a socket connect() call. Source and |
112 | destination tunnel and session ids are provided, as well as the file | 112 | destination tunnel and session ids are provided, as well as the file |
113 | descriptor of a UDP socket. See struct pppol2tp_addr in | 113 | descriptor of a UDP socket. See struct pppol2tp_addr in |
114 | include/linux/if_ppp.h. Note that zero tunnel / session ids are | 114 | include/linux/if_pppol2tp.h. Note that zero tunnel / session ids are |
115 | treated specially. When creating the per-tunnel PPPoL2TP management | 115 | treated specially. When creating the per-tunnel PPPoL2TP management |
116 | socket in Step 2 above, zero source and destination session ids are | 116 | socket in Step 2 above, zero source and destination session ids are |
117 | specified, which tells the driver to prepare the supplied UDP file | 117 | specified, which tells the driver to prepare the supplied UDP file |
diff --git a/Documentation/networking/mac80211-auth-assoc-deauth.txt b/Documentation/networking/mac80211-auth-assoc-deauth.txt new file mode 100644 index 000000000000..e0a2aa585ca3 --- /dev/null +++ b/Documentation/networking/mac80211-auth-assoc-deauth.txt | |||
@@ -0,0 +1,99 @@ | |||
1 | # | ||
2 | # This outlines the Linux authentication/association and | ||
3 | # deauthentication/disassociation flows. | ||
4 | # | ||
5 | # This can be converted into a diagram using the service | ||
6 | # at http://www.websequencediagrams.com/ | ||
7 | # | ||
8 | |||
9 | participant userspace | ||
10 | participant mac80211 | ||
11 | participant driver | ||
12 | |||
13 | alt authentication needed (not FT) | ||
14 | userspace->mac80211: authenticate | ||
15 | |||
16 | alt authenticated/authenticating already | ||
17 | mac80211->driver: sta_state(AP, not-exists) | ||
18 | mac80211->driver: bss_info_changed(clear BSSID) | ||
19 | else associated | ||
20 | note over mac80211,driver | ||
21 | like deauth/disassoc, without sending the | ||
22 | BA session stop & deauth/disassoc frames | ||
23 | end note | ||
24 | end | ||
25 | |||
26 | mac80211->driver: config(channel, non-HT) | ||
27 | mac80211->driver: bss_info_changed(set BSSID, basic rate bitmap) | ||
28 | mac80211->driver: sta_state(AP, exists) | ||
29 | |||
30 | alt no probe request data known | ||
31 | mac80211->driver: TX directed probe request | ||
32 | driver->mac80211: RX probe response | ||
33 | end | ||
34 | |||
35 | mac80211->driver: TX auth frame | ||
36 | driver->mac80211: RX auth frame | ||
37 | |||
38 | alt WEP shared key auth | ||
39 | mac80211->driver: TX auth frame | ||
40 | driver->mac80211: RX auth frame | ||
41 | end | ||
42 | |||
43 | mac80211->driver: sta_state(AP, authenticated) | ||
44 | mac80211->userspace: RX auth frame | ||
45 | |||
46 | end | ||
47 | |||
48 | userspace->mac80211: associate | ||
49 | alt authenticated or associated | ||
50 | note over mac80211,driver: cleanup like for authenticate | ||
51 | end | ||
52 | |||
53 | alt not previously authenticated (FT) | ||
54 | mac80211->driver: config(channel, non-HT) | ||
55 | mac80211->driver: bss_info_changed(set BSSID, basic rate bitmap) | ||
56 | mac80211->driver: sta_state(AP, exists) | ||
57 | mac80211->driver: sta_state(AP, authenticated) | ||
58 | end | ||
59 | mac80211->driver: TX assoc | ||
60 | driver->mac80211: RX assoc response | ||
61 | note over mac80211: init rate control | ||
62 | mac80211->driver: sta_state(AP, associated) | ||
63 | |||
64 | alt not using WPA | ||
65 | mac80211->driver: sta_state(AP, authorized) | ||
66 | end | ||
67 | |||
68 | mac80211->driver: set up QoS parameters | ||
69 | |||
70 | alt is HT channel | ||
71 | mac80211->driver: config(channel, HT params) | ||
72 | end | ||
73 | |||
74 | mac80211->driver: bss_info_changed(QoS, HT, associated with AID) | ||
75 | mac80211->userspace: associated | ||
76 | |||
77 | note left of userspace: associated now | ||
78 | |||
79 | alt using WPA | ||
80 | note over userspace | ||
81 | do 4-way-handshake | ||
82 | (data frames) | ||
83 | end note | ||
84 | userspace->mac80211: authorized | ||
85 | mac80211->driver: sta_state(AP, authorized) | ||
86 | end | ||
87 | |||
88 | userspace->mac80211: deauthenticate/disassociate | ||
89 | mac80211->driver: stop BA sessions | ||
90 | mac80211->driver: TX deauth/disassoc | ||
91 | mac80211->driver: flush frames | ||
92 | mac80211->driver: sta_state(AP,associated) | ||
93 | mac80211->driver: sta_state(AP,authenticated) | ||
94 | mac80211->driver: sta_state(AP,exists) | ||
95 | mac80211->driver: sta_state(AP,not-exists) | ||
96 | mac80211->driver: turn off powersave | ||
97 | mac80211->driver: bss_info_changed(clear BSSID, not associated, no QoS, ...) | ||
98 | mac80211->driver: config(non-HT channel type) | ||
99 | mac80211->userspace: disconnected | ||
diff --git a/Documentation/networking/netdev-features.txt b/Documentation/networking/netdev-features.txt index 4b1c0dcef84c..4164f5c02e4b 100644 --- a/Documentation/networking/netdev-features.txt +++ b/Documentation/networking/netdev-features.txt | |||
@@ -152,3 +152,16 @@ NETIF_F_VLAN_CHALLENGED should be set for devices which can't cope with VLAN | |||
152 | headers. Some drivers set this because the cards can't handle the bigger MTU. | 152 | headers. Some drivers set this because the cards can't handle the bigger MTU. |
153 | [FIXME: Those cases could be fixed in VLAN code by allowing only reduced-MTU | 153 | [FIXME: Those cases could be fixed in VLAN code by allowing only reduced-MTU |
154 | VLANs. This may be not useful, though.] | 154 | VLANs. This may be not useful, though.] |
155 | |||
156 | * rx-fcs | ||
157 | |||
158 | This requests that the NIC append the Ethernet Frame Checksum (FCS) | ||
159 | to the end of the skb data. This allows sniffers and other tools to | ||
160 | read the CRC recorded by the NIC on receipt of the packet. | ||
161 | |||
162 | * rx-all | ||
163 | |||
164 | This requests that the NIC receive all possible frames, including errored | ||
165 | frames (such as bad FCS, etc). This can be helpful when sniffing a link with | ||
166 | bad packets on it. Some NICs may receive more packets if also put into normal | ||
167 | PROMISC mdoe. | ||
diff --git a/Documentation/networking/phy.txt b/Documentation/networking/phy.txt index 9eb1ba52013d..95e5f5985a2a 100644 --- a/Documentation/networking/phy.txt +++ b/Documentation/networking/phy.txt | |||
@@ -62,7 +62,8 @@ The MDIO bus | |||
62 | 5) The bus must also be declared somewhere as a device, and registered. | 62 | 5) The bus must also be declared somewhere as a device, and registered. |
63 | 63 | ||
64 | As an example for how one driver implemented an mdio bus driver, see | 64 | As an example for how one driver implemented an mdio bus driver, see |
65 | drivers/net/gianfar_mii.c and arch/ppc/syslib/mpc85xx_devices.c | 65 | drivers/net/ethernet/freescale/fsl_pq_mdio.c and an associated DTS file |
66 | for one of the users. (e.g. "git grep fsl,.*-mdio arch/powerpc/boot/dts/") | ||
66 | 67 | ||
67 | Connecting to a PHY | 68 | Connecting to a PHY |
68 | 69 | ||
diff --git a/Documentation/networking/ppp_generic.txt b/Documentation/networking/ppp_generic.txt index 15b5172fbb98..091d20273dcb 100644 --- a/Documentation/networking/ppp_generic.txt +++ b/Documentation/networking/ppp_generic.txt | |||
@@ -342,7 +342,7 @@ an interface unit are: | |||
342 | numbers on received multilink fragments | 342 | numbers on received multilink fragments |
343 | SC_MP_XSHORTSEQ transmit short multilink sequence nos. | 343 | SC_MP_XSHORTSEQ transmit short multilink sequence nos. |
344 | 344 | ||
345 | The values of these flags are defined in <linux/if_ppp.h>. Note | 345 | The values of these flags are defined in <linux/ppp-ioctl.h>. Note |
346 | that the values of the SC_MULTILINK, SC_MP_SHORTSEQ and | 346 | that the values of the SC_MULTILINK, SC_MP_SHORTSEQ and |
347 | SC_MP_XSHORTSEQ bits are ignored if the CONFIG_PPP_MULTILINK option | 347 | SC_MP_XSHORTSEQ bits are ignored if the CONFIG_PPP_MULTILINK option |
348 | is not selected. | 348 | is not selected. |
@@ -358,7 +358,7 @@ an interface unit are: | |||
358 | 358 | ||
359 | * PPPIOCSCOMPRESS sets the parameters for packet compression or | 359 | * PPPIOCSCOMPRESS sets the parameters for packet compression or |
360 | decompression. The argument should point to a ppp_option_data | 360 | decompression. The argument should point to a ppp_option_data |
361 | structure (defined in <linux/if_ppp.h>), which contains a | 361 | structure (defined in <linux/ppp-ioctl.h>), which contains a |
362 | pointer/length pair which should describe a block of memory | 362 | pointer/length pair which should describe a block of memory |
363 | containing a CCP option specifying a compression method and its | 363 | containing a CCP option specifying a compression method and its |
364 | parameters. The ppp_option_data struct also contains a `transmit' | 364 | parameters. The ppp_option_data struct also contains a `transmit' |
@@ -395,7 +395,7 @@ an interface unit are: | |||
395 | 395 | ||
396 | * PPPIOCSNPMODE sets the network-protocol mode for a given network | 396 | * PPPIOCSNPMODE sets the network-protocol mode for a given network |
397 | protocol. The argument should point to an npioctl struct (defined | 397 | protocol. The argument should point to an npioctl struct (defined |
398 | in <linux/if_ppp.h>). The `protocol' field gives the PPP protocol | 398 | in <linux/ppp-ioctl.h>). The `protocol' field gives the PPP protocol |
399 | number for the protocol to be affected, and the `mode' field | 399 | number for the protocol to be affected, and the `mode' field |
400 | specifies what to do with packets for that protocol: | 400 | specifies what to do with packets for that protocol: |
401 | 401 | ||
diff --git a/Documentation/numastat.txt b/Documentation/numastat.txt index 9fcc9a608dc0..520327790d54 100644 --- a/Documentation/numastat.txt +++ b/Documentation/numastat.txt | |||
@@ -5,18 +5,23 @@ Numa policy hit/miss statistics | |||
5 | 5 | ||
6 | All units are pages. Hugepages have separate counters. | 6 | All units are pages. Hugepages have separate counters. |
7 | 7 | ||
8 | numa_hit A process wanted to allocate memory from this node, | 8 | numa_hit A process wanted to allocate memory from this node, |
9 | and succeeded. | 9 | and succeeded. |
10 | numa_miss A process wanted to allocate memory from another node, | 10 | |
11 | but ended up with memory from this node. | 11 | numa_miss A process wanted to allocate memory from another node, |
12 | numa_foreign A process wanted to allocate on this node, | 12 | but ended up with memory from this node. |
13 | but ended up with memory from another one. | 13 | |
14 | local_node A process ran on this node and got memory from it. | 14 | numa_foreign A process wanted to allocate on this node, |
15 | other_node A process ran on this node and got memory from another node. | 15 | but ended up with memory from another one. |
16 | interleave_hit Interleaving wanted to allocate from this node | 16 | |
17 | and succeeded. | 17 | local_node A process ran on this node and got memory from it. |
18 | |||
19 | other_node A process ran on this node and got memory from another node. | ||
20 | |||
21 | interleave_hit Interleaving wanted to allocate from this node | ||
22 | and succeeded. | ||
18 | 23 | ||
19 | For easier reading you can use the numastat utility from the numactl package | 24 | For easier reading you can use the numastat utility from the numactl package |
20 | (ftp://ftp.suse.com/pub/people/ak/numa/numactl*). Note that it only works | 25 | (http://oss.sgi.com/projects/libnuma/). Note that it only works |
21 | well right now on machines with a small number of CPUs. | 26 | well right now on machines with a small number of CPUs. |
22 | 27 | ||
diff --git a/Documentation/pinctrl.txt b/Documentation/pinctrl.txt index 150fd3833d0b..d97bccf46147 100644 --- a/Documentation/pinctrl.txt +++ b/Documentation/pinctrl.txt | |||
@@ -206,12 +206,21 @@ using a certain resistor value - pull up and pull down - so that the pin has a | |||
206 | stable value when nothing is driving the rail it is connected to, or when it's | 206 | stable value when nothing is driving the rail it is connected to, or when it's |
207 | unconnected. | 207 | unconnected. |
208 | 208 | ||
209 | For example, a platform may do this: | 209 | Pin configuration can be programmed either using the explicit APIs described |
210 | immediately below, or by adding configuration entries into the mapping table; | ||
211 | see section "Board/machine configuration" below. | ||
212 | |||
213 | For example, a platform may do the following to pull up a pin to VDD: | ||
214 | |||
215 | #include <linux/pinctrl/consumer.h> | ||
210 | 216 | ||
211 | ret = pin_config_set("foo-dev", "FOO_GPIO_PIN", PLATFORM_X_PULL_UP); | 217 | ret = pin_config_set("foo-dev", "FOO_GPIO_PIN", PLATFORM_X_PULL_UP); |
212 | 218 | ||
213 | To pull up a pin to VDD. The pin configuration driver implements callbacks for | 219 | The format and meaning of the configuration parameter, PLATFORM_X_PULL_UP |
214 | changing pin configuration in the pin controller ops like this: | 220 | above, is entirely defined by the pin controller driver. |
221 | |||
222 | The pin configuration driver implements callbacks for changing pin | ||
223 | configuration in the pin controller ops like this: | ||
215 | 224 | ||
216 | #include <linux/pinctrl/pinctrl.h> | 225 | #include <linux/pinctrl/pinctrl.h> |
217 | #include <linux/pinctrl/pinconf.h> | 226 | #include <linux/pinctrl/pinconf.h> |
@@ -492,14 +501,10 @@ Definitions: | |||
492 | {"map-i2c0", i2c0, pinctrl0, fi2c0, gi2c0} | 501 | {"map-i2c0", i2c0, pinctrl0, fi2c0, gi2c0} |
493 | } | 502 | } |
494 | 503 | ||
495 | Every map must be assigned a symbolic name, pin controller and function. | 504 | Every map must be assigned a state name, pin controller, device and |
496 | The group is not compulsory - if it is omitted the first group presented by | 505 | function. The group is not compulsory - if it is omitted the first group |
497 | the driver as applicable for the function will be selected, which is | 506 | presented by the driver as applicable for the function will be selected, |
498 | useful for simple cases. | 507 | which is useful for simple cases. |
499 | |||
500 | The device name is present in map entries tied to specific devices. Maps | ||
501 | without device names are referred to as SYSTEM pinmuxes, such as can be taken | ||
502 | by the machine implementation on boot and not tied to any specific device. | ||
503 | 508 | ||
504 | It is possible to map several groups to the same combination of device, | 509 | It is possible to map several groups to the same combination of device, |
505 | pin controller and function. This is for cases where a certain function on | 510 | pin controller and function. This is for cases where a certain function on |
@@ -726,19 +731,19 @@ same time. | |||
726 | All the above functions are mandatory to implement for a pinmux driver. | 731 | All the above functions are mandatory to implement for a pinmux driver. |
727 | 732 | ||
728 | 733 | ||
729 | Pinmux interaction with the GPIO subsystem | 734 | Pin control interaction with the GPIO subsystem |
730 | ========================================== | 735 | =============================================== |
731 | 736 | ||
732 | The public pinmux API contains two functions named pinmux_request_gpio() | 737 | The public pinmux API contains two functions named pinctrl_request_gpio() |
733 | and pinmux_free_gpio(). These two functions shall *ONLY* be called from | 738 | and pinctrl_free_gpio(). These two functions shall *ONLY* be called from |
734 | gpiolib-based drivers as part of their gpio_request() and | 739 | gpiolib-based drivers as part of their gpio_request() and |
735 | gpio_free() semantics. Likewise the pinmux_gpio_direction_[input|output] | 740 | gpio_free() semantics. Likewise the pinctrl_gpio_direction_[input|output] |
736 | shall only be called from within respective gpio_direction_[input|output] | 741 | shall only be called from within respective gpio_direction_[input|output] |
737 | gpiolib implementation. | 742 | gpiolib implementation. |
738 | 743 | ||
739 | NOTE that platforms and individual drivers shall *NOT* request GPIO pins to be | 744 | NOTE that platforms and individual drivers shall *NOT* request GPIO pins to be |
740 | muxed in. Instead, implement a proper gpiolib driver and have that driver | 745 | controlled e.g. muxed in. Instead, implement a proper gpiolib driver and have |
741 | request proper muxing for its pins. | 746 | that driver request proper muxing and other control for its pins. |
742 | 747 | ||
743 | The function list could become long, especially if you can convert every | 748 | The function list could become long, especially if you can convert every |
744 | individual pin into a GPIO pin independent of any other pins, and then try | 749 | individual pin into a GPIO pin independent of any other pins, and then try |
@@ -747,7 +752,7 @@ the approach to define every pin as a function. | |||
747 | In this case, the function array would become 64 entries for each GPIO | 752 | In this case, the function array would become 64 entries for each GPIO |
748 | setting and then the device functions. | 753 | setting and then the device functions. |
749 | 754 | ||
750 | For this reason there are two functions a pinmux driver can implement | 755 | For this reason there are two functions a pin control driver can implement |
751 | to enable only GPIO on an individual pin: .gpio_request_enable() and | 756 | to enable only GPIO on an individual pin: .gpio_request_enable() and |
752 | .gpio_disable_free(). | 757 | .gpio_disable_free(). |
753 | 758 | ||
@@ -762,12 +767,12 @@ gpiolib driver and the affected GPIO range, pin offset and desired direction | |||
762 | will be passed along to this function. | 767 | will be passed along to this function. |
763 | 768 | ||
764 | Alternatively to using these special functions, it is fully allowed to use | 769 | Alternatively to using these special functions, it is fully allowed to use |
765 | named functions for each GPIO pin, the pinmux_request_gpio() will attempt to | 770 | named functions for each GPIO pin, the pinctrl_request_gpio() will attempt to |
766 | obtain the function "gpioN" where "N" is the global GPIO pin number if no | 771 | obtain the function "gpioN" where "N" is the global GPIO pin number if no |
767 | special GPIO-handler is registered. | 772 | special GPIO-handler is registered. |
768 | 773 | ||
769 | 774 | ||
770 | Pinmux board/machine configuration | 775 | Board/machine configuration |
771 | ================================== | 776 | ================================== |
772 | 777 | ||
773 | Boards and machines define how a certain complete running system is put | 778 | Boards and machines define how a certain complete running system is put |
@@ -775,27 +780,33 @@ together, including how GPIOs and devices are muxed, how regulators are | |||
775 | constrained and how the clock tree looks. Of course pinmux settings are also | 780 | constrained and how the clock tree looks. Of course pinmux settings are also |
776 | part of this. | 781 | part of this. |
777 | 782 | ||
778 | A pinmux config for a machine looks pretty much like a simple regulator | 783 | A pin controller configuration for a machine looks pretty much like a simple |
779 | configuration, so for the example array above we want to enable i2c and | 784 | regulator configuration, so for the example array above we want to enable i2c |
780 | spi on the second function mapping: | 785 | and spi on the second function mapping: |
781 | 786 | ||
782 | #include <linux/pinctrl/machine.h> | 787 | #include <linux/pinctrl/machine.h> |
783 | 788 | ||
784 | static const struct pinmux_map __initdata pmx_mapping[] = { | 789 | static const struct pinctrl_map __initdata mapping[] = { |
785 | { | 790 | { |
786 | .ctrl_dev_name = "pinctrl-foo", | ||
787 | .function = "spi0", | ||
788 | .dev_name = "foo-spi.0", | 791 | .dev_name = "foo-spi.0", |
792 | .name = PINCTRL_STATE_DEFAULT, | ||
793 | .type = PIN_MAP_TYPE_MUX_GROUP, | ||
794 | .ctrl_dev_name = "pinctrl-foo", | ||
795 | .data.mux.function = "spi0", | ||
789 | }, | 796 | }, |
790 | { | 797 | { |
791 | .ctrl_dev_name = "pinctrl-foo", | ||
792 | .function = "i2c0", | ||
793 | .dev_name = "foo-i2c.0", | 798 | .dev_name = "foo-i2c.0", |
799 | .name = PINCTRL_STATE_DEFAULT, | ||
800 | .type = PIN_MAP_TYPE_MUX_GROUP, | ||
801 | .ctrl_dev_name = "pinctrl-foo", | ||
802 | .data.mux.function = "i2c0", | ||
794 | }, | 803 | }, |
795 | { | 804 | { |
796 | .ctrl_dev_name = "pinctrl-foo", | ||
797 | .function = "mmc0", | ||
798 | .dev_name = "foo-mmc.0", | 805 | .dev_name = "foo-mmc.0", |
806 | .name = PINCTRL_STATE_DEFAULT, | ||
807 | .type = PIN_MAP_TYPE_MUX_GROUP, | ||
808 | .ctrl_dev_name = "pinctrl-foo", | ||
809 | .data.mux.function = "mmc0", | ||
799 | }, | 810 | }, |
800 | }; | 811 | }; |
801 | 812 | ||
@@ -805,21 +816,51 @@ must match a function provided by the pinmux driver handling this pin range. | |||
805 | 816 | ||
806 | As you can see we may have several pin controllers on the system and thus | 817 | As you can see we may have several pin controllers on the system and thus |
807 | we need to specify which one of them that contain the functions we wish | 818 | we need to specify which one of them that contain the functions we wish |
808 | to map. The map can also use struct device * directly, so there is no | 819 | to map. |
809 | inherent need to use strings to specify .dev_name or .ctrl_dev_name, these | ||
810 | are for the situation where you do not have a handle to the struct device *, | ||
811 | for example if they are not yet instantiated or cumbersome to obtain. | ||
812 | 820 | ||
813 | You register this pinmux mapping to the pinmux subsystem by simply: | 821 | You register this pinmux mapping to the pinmux subsystem by simply: |
814 | 822 | ||
815 | ret = pinmux_register_mappings(pmx_mapping, ARRAY_SIZE(pmx_mapping)); | 823 | ret = pinctrl_register_mappings(mapping, ARRAY_SIZE(mapping)); |
816 | 824 | ||
817 | Since the above construct is pretty common there is a helper macro to make | 825 | Since the above construct is pretty common there is a helper macro to make |
818 | it even more compact which assumes you want to use pinctrl-foo and position | 826 | it even more compact which assumes you want to use pinctrl-foo and position |
819 | 0 for mapping, for example: | 827 | 0 for mapping, for example: |
820 | 828 | ||
821 | static struct pinmux_map __initdata pmx_mapping[] = { | 829 | static struct pinctrl_map __initdata mapping[] = { |
822 | PINMUX_MAP("I2CMAP", "pinctrl-foo", "i2c0", "foo-i2c.0"), | 830 | PIN_MAP_MUX_GROUP("foo-i2c.o", PINCTRL_STATE_DEFAULT, "pinctrl-foo", NULL, "i2c0"), |
831 | }; | ||
832 | |||
833 | The mapping table may also contain pin configuration entries. It's common for | ||
834 | each pin/group to have a number of configuration entries that affect it, so | ||
835 | the table entries for configuration reference an array of config parameters | ||
836 | and values. An example using the convenience macros is shown below: | ||
837 | |||
838 | static unsigned long i2c_grp_configs[] = { | ||
839 | FOO_PIN_DRIVEN, | ||
840 | FOO_PIN_PULLUP, | ||
841 | }; | ||
842 | |||
843 | static unsigned long i2c_pin_configs[] = { | ||
844 | FOO_OPEN_COLLECTOR, | ||
845 | FOO_SLEW_RATE_SLOW, | ||
846 | }; | ||
847 | |||
848 | static struct pinctrl_map __initdata mapping[] = { | ||
849 | PIN_MAP_MUX_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", "i2c0"), | ||
850 | PIN_MAP_MUX_CONFIGS_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", i2c_grp_configs), | ||
851 | PIN_MAP_MUX_CONFIGS_PIN("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0scl", i2c_pin_configs), | ||
852 | PIN_MAP_MUX_CONFIGS_PIN("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0sda", i2c_pin_configs), | ||
853 | }; | ||
854 | |||
855 | Finally, some devices expect the mapping table to contain certain specific | ||
856 | named states. When running on hardware that doesn't need any pin controller | ||
857 | configuration, the mapping table must still contain those named states, in | ||
858 | order to explicitly indicate that the states were provided and intended to | ||
859 | be empty. Table entry macro PIN_MAP_DUMMY_STATE serves the purpose of defining | ||
860 | a named state without causing any pin controller to be programmed: | ||
861 | |||
862 | static struct pinctrl_map __initdata mapping[] = { | ||
863 | PIN_MAP_DUMMY_STATE("foo-i2c.0", PINCTRL_STATE_DEFAULT), | ||
823 | }; | 864 | }; |
824 | 865 | ||
825 | 866 | ||
@@ -831,81 +872,96 @@ As it is possible to map a function to different groups of pins an optional | |||
831 | 872 | ||
832 | ... | 873 | ... |
833 | { | 874 | { |
875 | .dev_name = "foo-spi.0", | ||
834 | .name = "spi0-pos-A", | 876 | .name = "spi0-pos-A", |
877 | .type = PIN_MAP_TYPE_MUX_GROUP, | ||
835 | .ctrl_dev_name = "pinctrl-foo", | 878 | .ctrl_dev_name = "pinctrl-foo", |
836 | .function = "spi0", | 879 | .function = "spi0", |
837 | .group = "spi0_0_grp", | 880 | .group = "spi0_0_grp", |
838 | .dev_name = "foo-spi.0", | ||
839 | }, | 881 | }, |
840 | { | 882 | { |
883 | .dev_name = "foo-spi.0", | ||
841 | .name = "spi0-pos-B", | 884 | .name = "spi0-pos-B", |
885 | .type = PIN_MAP_TYPE_MUX_GROUP, | ||
842 | .ctrl_dev_name = "pinctrl-foo", | 886 | .ctrl_dev_name = "pinctrl-foo", |
843 | .function = "spi0", | 887 | .function = "spi0", |
844 | .group = "spi0_1_grp", | 888 | .group = "spi0_1_grp", |
845 | .dev_name = "foo-spi.0", | ||
846 | }, | 889 | }, |
847 | ... | 890 | ... |
848 | 891 | ||
849 | This example mapping is used to switch between two positions for spi0 at | 892 | This example mapping is used to switch between two positions for spi0 at |
850 | runtime, as described further below under the heading "Runtime pinmuxing". | 893 | runtime, as described further below under the heading "Runtime pinmuxing". |
851 | 894 | ||
852 | Further it is possible to match several groups of pins to the same function | 895 | Further it is possible for one named state to affect the muxing of several |
853 | for a single device, say for example in the mmc0 example above, where you can | 896 | groups of pins, say for example in the mmc0 example above, where you can |
854 | additively expand the mmc0 bus from 2 to 4 to 8 pins. If we want to use all | 897 | additively expand the mmc0 bus from 2 to 4 to 8 pins. If we want to use all |
855 | three groups for a total of 2+2+4 = 8 pins (for an 8-bit MMC bus as is the | 898 | three groups for a total of 2+2+4 = 8 pins (for an 8-bit MMC bus as is the |
856 | case), we define a mapping like this: | 899 | case), we define a mapping like this: |
857 | 900 | ||
858 | ... | 901 | ... |
859 | { | 902 | { |
903 | .dev_name = "foo-mmc.0", | ||
860 | .name = "2bit" | 904 | .name = "2bit" |
905 | .type = PIN_MAP_TYPE_MUX_GROUP, | ||
861 | .ctrl_dev_name = "pinctrl-foo", | 906 | .ctrl_dev_name = "pinctrl-foo", |
862 | .function = "mmc0", | 907 | .function = "mmc0", |
863 | .group = "mmc0_1_grp", | 908 | .group = "mmc0_1_grp", |
864 | .dev_name = "foo-mmc.0", | ||
865 | }, | 909 | }, |
866 | { | 910 | { |
911 | .dev_name = "foo-mmc.0", | ||
867 | .name = "4bit" | 912 | .name = "4bit" |
913 | .type = PIN_MAP_TYPE_MUX_GROUP, | ||
868 | .ctrl_dev_name = "pinctrl-foo", | 914 | .ctrl_dev_name = "pinctrl-foo", |
869 | .function = "mmc0", | 915 | .function = "mmc0", |
870 | .group = "mmc0_1_grp", | 916 | .group = "mmc0_1_grp", |
871 | .dev_name = "foo-mmc.0", | ||
872 | }, | 917 | }, |
873 | { | 918 | { |
919 | .dev_name = "foo-mmc.0", | ||
874 | .name = "4bit" | 920 | .name = "4bit" |
921 | .type = PIN_MAP_TYPE_MUX_GROUP, | ||
875 | .ctrl_dev_name = "pinctrl-foo", | 922 | .ctrl_dev_name = "pinctrl-foo", |
876 | .function = "mmc0", | 923 | .function = "mmc0", |
877 | .group = "mmc0_2_grp", | 924 | .group = "mmc0_2_grp", |
878 | .dev_name = "foo-mmc.0", | ||
879 | }, | 925 | }, |
880 | { | 926 | { |
927 | .dev_name = "foo-mmc.0", | ||
881 | .name = "8bit" | 928 | .name = "8bit" |
929 | .type = PIN_MAP_TYPE_MUX_GROUP, | ||
882 | .ctrl_dev_name = "pinctrl-foo", | 930 | .ctrl_dev_name = "pinctrl-foo", |
931 | .function = "mmc0", | ||
883 | .group = "mmc0_1_grp", | 932 | .group = "mmc0_1_grp", |
884 | .dev_name = "foo-mmc.0", | ||
885 | }, | 933 | }, |
886 | { | 934 | { |
935 | .dev_name = "foo-mmc.0", | ||
887 | .name = "8bit" | 936 | .name = "8bit" |
937 | .type = PIN_MAP_TYPE_MUX_GROUP, | ||
888 | .ctrl_dev_name = "pinctrl-foo", | 938 | .ctrl_dev_name = "pinctrl-foo", |
889 | .function = "mmc0", | 939 | .function = "mmc0", |
890 | .group = "mmc0_2_grp", | 940 | .group = "mmc0_2_grp", |
891 | .dev_name = "foo-mmc.0", | ||
892 | }, | 941 | }, |
893 | { | 942 | { |
943 | .dev_name = "foo-mmc.0", | ||
894 | .name = "8bit" | 944 | .name = "8bit" |
945 | .type = PIN_MAP_TYPE_MUX_GROUP, | ||
895 | .ctrl_dev_name = "pinctrl-foo", | 946 | .ctrl_dev_name = "pinctrl-foo", |
896 | .function = "mmc0", | 947 | .function = "mmc0", |
897 | .group = "mmc0_3_grp", | 948 | .group = "mmc0_3_grp", |
898 | .dev_name = "foo-mmc.0", | ||
899 | }, | 949 | }, |
900 | ... | 950 | ... |
901 | 951 | ||
902 | The result of grabbing this mapping from the device with something like | 952 | The result of grabbing this mapping from the device with something like |
903 | this (see next paragraph): | 953 | this (see next paragraph): |
904 | 954 | ||
905 | pmx = pinmux_get(&device, "8bit"); | 955 | p = pinctrl_get(dev); |
956 | s = pinctrl_lookup_state(p, "8bit"); | ||
957 | ret = pinctrl_select_state(p, s); | ||
958 | |||
959 | or more simply: | ||
960 | |||
961 | p = pinctrl_get_select(dev, "8bit"); | ||
906 | 962 | ||
907 | Will be that you activate all the three bottom records in the mapping at | 963 | Will be that you activate all the three bottom records in the mapping at |
908 | once. Since they share the same name, pin controller device, funcion and | 964 | once. Since they share the same name, pin controller device, function and |
909 | device, and since we allow multiple groups to match to a single device, they | 965 | device, and since we allow multiple groups to match to a single device, they |
910 | all get selected, and they all get enabled and disable simultaneously by the | 966 | all get selected, and they all get enabled and disable simultaneously by the |
911 | pinmux core. | 967 | pinmux core. |
@@ -914,97 +970,111 @@ pinmux core. | |||
914 | Pinmux requests from drivers | 970 | Pinmux requests from drivers |
915 | ============================ | 971 | ============================ |
916 | 972 | ||
917 | Generally it is discouraged to let individual drivers get and enable pinmuxes. | 973 | Generally it is discouraged to let individual drivers get and enable pin |
918 | So if possible, handle the pinmuxes in platform code or some other place where | 974 | control. So if possible, handle the pin control in platform code or some other |
919 | you have access to all the affected struct device * pointers. In some cases | 975 | place where you have access to all the affected struct device * pointers. In |
920 | where a driver needs to switch between different mux mappings at runtime | 976 | some cases where a driver needs to e.g. switch between different mux mappings |
921 | this is not possible. | 977 | at runtime this is not possible. |
922 | 978 | ||
923 | A driver may request a certain mux to be activated, usually just the default | 979 | A driver may request a certain control state to be activated, usually just the |
924 | mux like this: | 980 | default state like this: |
925 | 981 | ||
926 | #include <linux/pinctrl/pinmux.h> | 982 | #include <linux/pinctrl/consumer.h> |
927 | 983 | ||
928 | struct foo_state { | 984 | struct foo_state { |
929 | struct pinmux *pmx; | 985 | struct pinctrl *p; |
986 | struct pinctrl_state *s; | ||
930 | ... | 987 | ... |
931 | }; | 988 | }; |
932 | 989 | ||
933 | foo_probe() | 990 | foo_probe() |
934 | { | 991 | { |
935 | /* Allocate a state holder named "state" etc */ | 992 | /* Allocate a state holder named "foo" etc */ |
936 | struct pinmux pmx; | 993 | struct foo_state *foo = ...; |
994 | |||
995 | foo->p = pinctrl_get(&device); | ||
996 | if (IS_ERR(foo->p)) { | ||
997 | /* FIXME: clean up "foo" here */ | ||
998 | return PTR_ERR(foo->p); | ||
999 | } | ||
937 | 1000 | ||
938 | pmx = pinmux_get(&device, NULL); | 1001 | foo->s = pinctrl_lookup_state(foo->p, PINCTRL_STATE_DEFAULT); |
939 | if IS_ERR(pmx) | 1002 | if (IS_ERR(foo->s)) { |
940 | return PTR_ERR(pmx); | 1003 | pinctrl_put(foo->p); |
941 | pinmux_enable(pmx); | 1004 | /* FIXME: clean up "foo" here */ |
1005 | return PTR_ERR(s); | ||
1006 | } | ||
942 | 1007 | ||
943 | state->pmx = pmx; | 1008 | ret = pinctrl_select_state(foo->s); |
1009 | if (ret < 0) { | ||
1010 | pinctrl_put(foo->p); | ||
1011 | /* FIXME: clean up "foo" here */ | ||
1012 | return ret; | ||
1013 | } | ||
944 | } | 1014 | } |
945 | 1015 | ||
946 | foo_remove() | 1016 | foo_remove() |
947 | { | 1017 | { |
948 | pinmux_disable(state->pmx); | 1018 | pinctrl_put(state->p); |
949 | pinmux_put(state->pmx); | ||
950 | } | 1019 | } |
951 | 1020 | ||
952 | If you want to grab a specific mux mapping and not just the first one found for | 1021 | This get/lookup/select/put sequence can just as well be handled by bus drivers |
953 | this device you can specify a specific mapping name, for example in the above | ||
954 | example the second i2c0 setting: pinmux_get(&device, "spi0-pos-B"); | ||
955 | |||
956 | This get/enable/disable/put sequence can just as well be handled by bus drivers | ||
957 | if you don't want each and every driver to handle it and you know the | 1022 | if you don't want each and every driver to handle it and you know the |
958 | arrangement on your bus. | 1023 | arrangement on your bus. |
959 | 1024 | ||
960 | The semantics of the get/enable respective disable/put is as follows: | 1025 | The semantics of the pinctrl APIs are: |
1026 | |||
1027 | - pinctrl_get() is called in process context to obtain a handle to all pinctrl | ||
1028 | information for a given client device. It will allocate a struct from the | ||
1029 | kernel memory to hold the pinmux state. All mapping table parsing or similar | ||
1030 | slow operations take place within this API. | ||
961 | 1031 | ||
962 | - pinmux_get() is called in process context to reserve the pins affected with | 1032 | - pinctrl_lookup_state() is called in process context to obtain a handle to a |
963 | a certain mapping and set up the pinmux core and the driver. It will allocate | 1033 | specific state for a the client device. This operation may be slow too. |
964 | a struct from the kernel memory to hold the pinmux state. | ||
965 | 1034 | ||
966 | - pinmux_enable()/pinmux_disable() is quick and can be called from fastpath | 1035 | - pinctrl_select_state() programs pin controller hardware according to the |
967 | (irq context) when you quickly want to set up/tear down the hardware muxing | 1036 | definition of the state as given by the mapping table. In theory this is a |
968 | when running a device driver. Usually it will just poke some values into a | 1037 | fast-path operation, since it only involved blasting some register settings |
969 | register. | 1038 | into hardware. However, note that some pin controllers may have their |
1039 | registers on a slow/IRQ-based bus, so client devices should not assume they | ||
1040 | can call pinctrl_select_state() from non-blocking contexts. | ||
970 | 1041 | ||
971 | - pinmux_disable() is called in process context to tear down the pin requests | 1042 | - pinctrl_put() frees all information associated with a pinctrl handle. |
972 | and release the state holder struct for the mux setting. | ||
973 | 1043 | ||
974 | Usually the pinmux core handled the get/put pair and call out to the device | 1044 | Usually the pin control core handled the get/put pair and call out to the |
975 | drivers bookkeeping operations, like checking available functions and the | 1045 | device drivers bookkeeping operations, like checking available functions and |
976 | associated pins, whereas the enable/disable pass on to the pin controller | 1046 | the associated pins, whereas the enable/disable pass on to the pin controller |
977 | driver which takes care of activating and/or deactivating the mux setting by | 1047 | driver which takes care of activating and/or deactivating the mux setting by |
978 | quickly poking some registers. | 1048 | quickly poking some registers. |
979 | 1049 | ||
980 | The pins are allocated for your device when you issue the pinmux_get() call, | 1050 | The pins are allocated for your device when you issue the pinctrl_get() call, |
981 | after this you should be able to see this in the debugfs listing of all pins. | 1051 | after this you should be able to see this in the debugfs listing of all pins. |
982 | 1052 | ||
983 | 1053 | ||
984 | System pinmux hogging | 1054 | System pin control hogging |
985 | ===================== | 1055 | ========================== |
986 | 1056 | ||
987 | A system pinmux map entry, i.e. a pinmux setting that does not have a device | 1057 | Pin control map entries can be hogged by the core when the pin controller |
988 | associated with it, can be hogged by the core when the pin controller is | 1058 | is registered. This means that the core will attempt to call pinctrl_get(), |
989 | registered. This means that the core will attempt to call pinmux_get() and | 1059 | lookup_state() and select_state() on it immediately after the pin control |
990 | pinmux_enable() on it immediately after the pin control device has been | 1060 | device has been registered. |
991 | registered. | ||
992 | 1061 | ||
993 | This is enabled by simply setting the .hog_on_boot field in the map to true, | 1062 | This occurs for mapping table entries where the client device name is equal |
994 | like this: | 1063 | to the pin controller device name, and the state name is PINCTRL_STATE_DEFAULT. |
995 | 1064 | ||
996 | { | 1065 | { |
997 | .name = "POWERMAP" | 1066 | .dev_name = "pinctrl-foo", |
1067 | .name = PINCTRL_STATE_DEFAULT, | ||
1068 | .type = PIN_MAP_TYPE_MUX_GROUP, | ||
998 | .ctrl_dev_name = "pinctrl-foo", | 1069 | .ctrl_dev_name = "pinctrl-foo", |
999 | .function = "power_func", | 1070 | .function = "power_func", |
1000 | .hog_on_boot = true, | ||
1001 | }, | 1071 | }, |
1002 | 1072 | ||
1003 | Since it may be common to request the core to hog a few always-applicable | 1073 | Since it may be common to request the core to hog a few always-applicable |
1004 | mux settings on the primary pin controller, there is a convenience macro for | 1074 | mux settings on the primary pin controller, there is a convenience macro for |
1005 | this: | 1075 | this: |
1006 | 1076 | ||
1007 | PINMUX_MAP_PRIMARY_SYS_HOG("POWERMAP", "power_func") | 1077 | PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-foo", NULL /* group */, "power_func") |
1008 | 1078 | ||
1009 | This gives the exact same result as the above construction. | 1079 | This gives the exact same result as the above construction. |
1010 | 1080 | ||
@@ -1016,32 +1086,47 @@ It is possible to mux a certain function in and out at runtime, say to move | |||
1016 | an SPI port from one set of pins to another set of pins. Say for example for | 1086 | an SPI port from one set of pins to another set of pins. Say for example for |
1017 | spi0 in the example above, we expose two different groups of pins for the same | 1087 | spi0 in the example above, we expose two different groups of pins for the same |
1018 | function, but with different named in the mapping as described under | 1088 | function, but with different named in the mapping as described under |
1019 | "Advanced mapping" above. So we have two mappings named "spi0-pos-A" and | 1089 | "Advanced mapping" above. So that for an SPI device, we have two states named |
1020 | "spi0-pos-B". | 1090 | "pos-A" and "pos-B". |
1021 | 1091 | ||
1022 | This snippet first muxes the function in the pins defined by group A, enables | 1092 | This snippet first muxes the function in the pins defined by group A, enables |
1023 | it, disables and releases it, and muxes it in on the pins defined by group B: | 1093 | it, disables and releases it, and muxes it in on the pins defined by group B: |
1024 | 1094 | ||
1095 | #include <linux/pinctrl/consumer.h> | ||
1096 | |||
1025 | foo_switch() | 1097 | foo_switch() |
1026 | { | 1098 | { |
1027 | struct pinmux *pmx; | 1099 | struct pinctrl *p; |
1100 | struct pinctrl_state *s1, *s2; | ||
1101 | |||
1102 | /* Setup */ | ||
1103 | p = pinctrl_get(&device); | ||
1104 | if (IS_ERR(p)) | ||
1105 | ... | ||
1106 | |||
1107 | s1 = pinctrl_lookup_state(foo->p, "pos-A"); | ||
1108 | if (IS_ERR(s1)) | ||
1109 | ... | ||
1110 | |||
1111 | s2 = pinctrl_lookup_state(foo->p, "pos-B"); | ||
1112 | if (IS_ERR(s2)) | ||
1113 | ... | ||
1028 | 1114 | ||
1029 | /* Enable on position A */ | 1115 | /* Enable on position A */ |
1030 | pmx = pinmux_get(&device, "spi0-pos-A"); | 1116 | ret = pinctrl_select_state(s1); |
1031 | if IS_ERR(pmx) | 1117 | if (ret < 0) |
1032 | return PTR_ERR(pmx); | 1118 | ... |
1033 | pinmux_enable(pmx); | ||
1034 | 1119 | ||
1035 | /* This releases the pins again */ | 1120 | ... |
1036 | pinmux_disable(pmx); | ||
1037 | pinmux_put(pmx); | ||
1038 | 1121 | ||
1039 | /* Enable on position B */ | 1122 | /* Enable on position B */ |
1040 | pmx = pinmux_get(&device, "spi0-pos-B"); | 1123 | ret = pinctrl_select_state(s2); |
1041 | if IS_ERR(pmx) | 1124 | if (ret < 0) |
1042 | return PTR_ERR(pmx); | 1125 | ... |
1043 | pinmux_enable(pmx); | 1126 | |
1044 | ... | 1127 | ... |
1128 | |||
1129 | pinctrl_put(p); | ||
1045 | } | 1130 | } |
1046 | 1131 | ||
1047 | The above has to be done from process context. | 1132 | The above has to be done from process context. |
diff --git a/Documentation/power/devices.txt b/Documentation/power/devices.txt index 20af7def23c8..872815cd41d3 100644 --- a/Documentation/power/devices.txt +++ b/Documentation/power/devices.txt | |||
@@ -96,6 +96,12 @@ struct dev_pm_ops { | |||
96 | int (*thaw)(struct device *dev); | 96 | int (*thaw)(struct device *dev); |
97 | int (*poweroff)(struct device *dev); | 97 | int (*poweroff)(struct device *dev); |
98 | int (*restore)(struct device *dev); | 98 | int (*restore)(struct device *dev); |
99 | int (*suspend_late)(struct device *dev); | ||
100 | int (*resume_early)(struct device *dev); | ||
101 | int (*freeze_late)(struct device *dev); | ||
102 | int (*thaw_early)(struct device *dev); | ||
103 | int (*poweroff_late)(struct device *dev); | ||
104 | int (*restore_early)(struct device *dev); | ||
99 | int (*suspend_noirq)(struct device *dev); | 105 | int (*suspend_noirq)(struct device *dev); |
100 | int (*resume_noirq)(struct device *dev); | 106 | int (*resume_noirq)(struct device *dev); |
101 | int (*freeze_noirq)(struct device *dev); | 107 | int (*freeze_noirq)(struct device *dev); |
@@ -305,7 +311,7 @@ Entering System Suspend | |||
305 | ----------------------- | 311 | ----------------------- |
306 | When the system goes into the standby or memory sleep state, the phases are: | 312 | When the system goes into the standby or memory sleep state, the phases are: |
307 | 313 | ||
308 | prepare, suspend, suspend_noirq. | 314 | prepare, suspend, suspend_late, suspend_noirq. |
309 | 315 | ||
310 | 1. The prepare phase is meant to prevent races by preventing new devices | 316 | 1. The prepare phase is meant to prevent races by preventing new devices |
311 | from being registered; the PM core would never know that all the | 317 | from being registered; the PM core would never know that all the |
@@ -324,7 +330,12 @@ When the system goes into the standby or memory sleep state, the phases are: | |||
324 | appropriate low-power state, depending on the bus type the device is on, | 330 | appropriate low-power state, depending on the bus type the device is on, |
325 | and they may enable wakeup events. | 331 | and they may enable wakeup events. |
326 | 332 | ||
327 | 3. The suspend_noirq phase occurs after IRQ handlers have been disabled, | 333 | 3 For a number of devices it is convenient to split suspend into the |
334 | "quiesce device" and "save device state" phases, in which cases | ||
335 | suspend_late is meant to do the latter. It is always executed after | ||
336 | runtime power management has been disabled for all devices. | ||
337 | |||
338 | 4. The suspend_noirq phase occurs after IRQ handlers have been disabled, | ||
328 | which means that the driver's interrupt handler will not be called while | 339 | which means that the driver's interrupt handler will not be called while |
329 | the callback method is running. The methods should save the values of | 340 | the callback method is running. The methods should save the values of |
330 | the device's registers that weren't saved previously and finally put the | 341 | the device's registers that weren't saved previously and finally put the |
@@ -359,7 +370,7 @@ Leaving System Suspend | |||
359 | ---------------------- | 370 | ---------------------- |
360 | When resuming from standby or memory sleep, the phases are: | 371 | When resuming from standby or memory sleep, the phases are: |
361 | 372 | ||
362 | resume_noirq, resume, complete. | 373 | resume_noirq, resume_early, resume, complete. |
363 | 374 | ||
364 | 1. The resume_noirq callback methods should perform any actions needed | 375 | 1. The resume_noirq callback methods should perform any actions needed |
365 | before the driver's interrupt handlers are invoked. This generally | 376 | before the driver's interrupt handlers are invoked. This generally |
@@ -375,14 +386,18 @@ When resuming from standby or memory sleep, the phases are: | |||
375 | device driver's ->pm.resume_noirq() method to perform device-specific | 386 | device driver's ->pm.resume_noirq() method to perform device-specific |
376 | actions. | 387 | actions. |
377 | 388 | ||
378 | 2. The resume methods should bring the the device back to its operating | 389 | 2. The resume_early methods should prepare devices for the execution of |
390 | the resume methods. This generally involves undoing the actions of the | ||
391 | preceding suspend_late phase. | ||
392 | |||
393 | 3 The resume methods should bring the the device back to its operating | ||
379 | state, so that it can perform normal I/O. This generally involves | 394 | state, so that it can perform normal I/O. This generally involves |
380 | undoing the actions of the suspend phase. | 395 | undoing the actions of the suspend phase. |
381 | 396 | ||
382 | 3. The complete phase uses only a bus callback. The method should undo the | 397 | 4. The complete phase should undo the actions of the prepare phase. Note, |
383 | actions of the prepare phase. Note, however, that new children may be | 398 | however, that new children may be registered below the device as soon as |
384 | registered below the device as soon as the resume callbacks occur; it's | 399 | the resume callbacks occur; it's not necessary to wait until the |
385 | not necessary to wait until the complete phase. | 400 | complete phase. |
386 | 401 | ||
387 | At the end of these phases, drivers should be as functional as they were before | 402 | At the end of these phases, drivers should be as functional as they were before |
388 | suspending: I/O can be performed using DMA and IRQs, and the relevant clocks are | 403 | suspending: I/O can be performed using DMA and IRQs, and the relevant clocks are |
@@ -429,8 +444,8 @@ an image of the system memory while everything is stable, reactivate all | |||
429 | devices (thaw), write the image to permanent storage, and finally shut down the | 444 | devices (thaw), write the image to permanent storage, and finally shut down the |
430 | system (poweroff). The phases used to accomplish this are: | 445 | system (poweroff). The phases used to accomplish this are: |
431 | 446 | ||
432 | prepare, freeze, freeze_noirq, thaw_noirq, thaw, complete, | 447 | prepare, freeze, freeze_late, freeze_noirq, thaw_noirq, thaw_early, |
433 | prepare, poweroff, poweroff_noirq | 448 | thaw, complete, prepare, poweroff, poweroff_late, poweroff_noirq |
434 | 449 | ||
435 | 1. The prepare phase is discussed in the "Entering System Suspend" section | 450 | 1. The prepare phase is discussed in the "Entering System Suspend" section |
436 | above. | 451 | above. |
@@ -441,7 +456,11 @@ system (poweroff). The phases used to accomplish this are: | |||
441 | save time it's best not to do so. Also, the device should not be | 456 | save time it's best not to do so. Also, the device should not be |
442 | prepared to generate wakeup events. | 457 | prepared to generate wakeup events. |
443 | 458 | ||
444 | 3. The freeze_noirq phase is analogous to the suspend_noirq phase discussed | 459 | 3. The freeze_late phase is analogous to the suspend_late phase described |
460 | above, except that the device should not be put in a low-power state and | ||
461 | should not be allowed to generate wakeup events by it. | ||
462 | |||
463 | 4. The freeze_noirq phase is analogous to the suspend_noirq phase discussed | ||
445 | above, except again that the device should not be put in a low-power | 464 | above, except again that the device should not be put in a low-power |
446 | state and should not be allowed to generate wakeup events. | 465 | state and should not be allowed to generate wakeup events. |
447 | 466 | ||
@@ -449,15 +468,19 @@ At this point the system image is created. All devices should be inactive and | |||
449 | the contents of memory should remain undisturbed while this happens, so that the | 468 | the contents of memory should remain undisturbed while this happens, so that the |
450 | image forms an atomic snapshot of the system state. | 469 | image forms an atomic snapshot of the system state. |
451 | 470 | ||
452 | 4. The thaw_noirq phase is analogous to the resume_noirq phase discussed | 471 | 5. The thaw_noirq phase is analogous to the resume_noirq phase discussed |
453 | above. The main difference is that its methods can assume the device is | 472 | above. The main difference is that its methods can assume the device is |
454 | in the same state as at the end of the freeze_noirq phase. | 473 | in the same state as at the end of the freeze_noirq phase. |
455 | 474 | ||
456 | 5. The thaw phase is analogous to the resume phase discussed above. Its | 475 | 6. The thaw_early phase is analogous to the resume_early phase described |
476 | above. Its methods should undo the actions of the preceding | ||
477 | freeze_late, if necessary. | ||
478 | |||
479 | 7. The thaw phase is analogous to the resume phase discussed above. Its | ||
457 | methods should bring the device back to an operating state, so that it | 480 | methods should bring the device back to an operating state, so that it |
458 | can be used for saving the image if necessary. | 481 | can be used for saving the image if necessary. |
459 | 482 | ||
460 | 6. The complete phase is discussed in the "Leaving System Suspend" section | 483 | 8. The complete phase is discussed in the "Leaving System Suspend" section |
461 | above. | 484 | above. |
462 | 485 | ||
463 | At this point the system image is saved, and the devices then need to be | 486 | At this point the system image is saved, and the devices then need to be |
@@ -465,16 +488,19 @@ prepared for the upcoming system shutdown. This is much like suspending them | |||
465 | before putting the system into the standby or memory sleep state, and the phases | 488 | before putting the system into the standby or memory sleep state, and the phases |
466 | are similar. | 489 | are similar. |
467 | 490 | ||
468 | 7. The prepare phase is discussed above. | 491 | 9. The prepare phase is discussed above. |
492 | |||
493 | 10. The poweroff phase is analogous to the suspend phase. | ||
469 | 494 | ||
470 | 8. The poweroff phase is analogous to the suspend phase. | 495 | 11. The poweroff_late phase is analogous to the suspend_late phase. |
471 | 496 | ||
472 | 9. The poweroff_noirq phase is analogous to the suspend_noirq phase. | 497 | 12. The poweroff_noirq phase is analogous to the suspend_noirq phase. |
473 | 498 | ||
474 | The poweroff and poweroff_noirq callbacks should do essentially the same things | 499 | The poweroff, poweroff_late and poweroff_noirq callbacks should do essentially |
475 | as the suspend and suspend_noirq callbacks. The only notable difference is that | 500 | the same things as the suspend, suspend_late and suspend_noirq callbacks, |
476 | they need not store the device register values, because the registers should | 501 | respectively. The only notable difference is that they need not store the |
477 | already have been stored during the freeze or freeze_noirq phases. | 502 | device register values, because the registers should already have been stored |
503 | during the freeze, freeze_late or freeze_noirq phases. | ||
478 | 504 | ||
479 | 505 | ||
480 | Leaving Hibernation | 506 | Leaving Hibernation |
@@ -518,22 +544,25 @@ To achieve this, the image kernel must restore the devices' pre-hibernation | |||
518 | functionality. The operation is much like waking up from the memory sleep | 544 | functionality. The operation is much like waking up from the memory sleep |
519 | state, although it involves different phases: | 545 | state, although it involves different phases: |
520 | 546 | ||
521 | restore_noirq, restore, complete | 547 | restore_noirq, restore_early, restore, complete |
522 | 548 | ||
523 | 1. The restore_noirq phase is analogous to the resume_noirq phase. | 549 | 1. The restore_noirq phase is analogous to the resume_noirq phase. |
524 | 550 | ||
525 | 2. The restore phase is analogous to the resume phase. | 551 | 2. The restore_early phase is analogous to the resume_early phase. |
552 | |||
553 | 3. The restore phase is analogous to the resume phase. | ||
526 | 554 | ||
527 | 3. The complete phase is discussed above. | 555 | 4. The complete phase is discussed above. |
528 | 556 | ||
529 | The main difference from resume[_noirq] is that restore[_noirq] must assume the | 557 | The main difference from resume[_early|_noirq] is that restore[_early|_noirq] |
530 | device has been accessed and reconfigured by the boot loader or the boot kernel. | 558 | must assume the device has been accessed and reconfigured by the boot loader or |
531 | Consequently the state of the device may be different from the state remembered | 559 | the boot kernel. Consequently the state of the device may be different from the |
532 | from the freeze and freeze_noirq phases. The device may even need to be reset | 560 | state remembered from the freeze, freeze_late and freeze_noirq phases. The |
533 | and completely re-initialized. In many cases this difference doesn't matter, so | 561 | device may even need to be reset and completely re-initialized. In many cases |
534 | the resume[_noirq] and restore[_norq] method pointers can be set to the same | 562 | this difference doesn't matter, so the resume[_early|_noirq] and |
535 | routines. Nevertheless, different callback pointers are used in case there is a | 563 | restore[_early|_norq] method pointers can be set to the same routines. |
536 | situation where it actually matters. | 564 | Nevertheless, different callback pointers are used in case there is a situation |
565 | where it actually does matter. | ||
537 | 566 | ||
538 | 567 | ||
539 | Device Power Management Domains | 568 | Device Power Management Domains |
diff --git a/Documentation/power/freezing-of-tasks.txt b/Documentation/power/freezing-of-tasks.txt index ebd7490ef1df..ec715cd78fbb 100644 --- a/Documentation/power/freezing-of-tasks.txt +++ b/Documentation/power/freezing-of-tasks.txt | |||
@@ -63,6 +63,27 @@ devices have been reinitialized, the function thaw_processes() is called in | |||
63 | order to clear the PF_FROZEN flag for each frozen task. Then, the tasks that | 63 | order to clear the PF_FROZEN flag for each frozen task. Then, the tasks that |
64 | have been frozen leave __refrigerator() and continue running. | 64 | have been frozen leave __refrigerator() and continue running. |
65 | 65 | ||
66 | |||
67 | Rationale behind the functions dealing with freezing and thawing of tasks: | ||
68 | ------------------------------------------------------------------------- | ||
69 | |||
70 | freeze_processes(): | ||
71 | - freezes only userspace tasks | ||
72 | |||
73 | freeze_kernel_threads(): | ||
74 | - freezes all tasks (including kernel threads) because we can't freeze | ||
75 | kernel threads without freezing userspace tasks | ||
76 | |||
77 | thaw_kernel_threads(): | ||
78 | - thaws only kernel threads; this is particularly useful if we need to do | ||
79 | anything special in between thawing of kernel threads and thawing of | ||
80 | userspace tasks, or if we want to postpone the thawing of userspace tasks | ||
81 | |||
82 | thaw_processes(): | ||
83 | - thaws all tasks (including kernel threads) because we can't thaw userspace | ||
84 | tasks without thawing kernel threads | ||
85 | |||
86 | |||
66 | III. Which kernel threads are freezable? | 87 | III. Which kernel threads are freezable? |
67 | 88 | ||
68 | Kernel threads are not freezable by default. However, a kernel thread may clear | 89 | Kernel threads are not freezable by default. However, a kernel thread may clear |
diff --git a/Documentation/powerpc/firmware-assisted-dump.txt b/Documentation/powerpc/firmware-assisted-dump.txt new file mode 100644 index 000000000000..3007bc98af28 --- /dev/null +++ b/Documentation/powerpc/firmware-assisted-dump.txt | |||
@@ -0,0 +1,270 @@ | |||
1 | |||
2 | Firmware-Assisted Dump | ||
3 | ------------------------ | ||
4 | July 2011 | ||
5 | |||
6 | The goal of firmware-assisted dump is to enable the dump of | ||
7 | a crashed system, and to do so from a fully-reset system, and | ||
8 | to minimize the total elapsed time until the system is back | ||
9 | in production use. | ||
10 | |||
11 | - Firmware assisted dump (fadump) infrastructure is intended to replace | ||
12 | the existing phyp assisted dump. | ||
13 | - Fadump uses the same firmware interfaces and memory reservation model | ||
14 | as phyp assisted dump. | ||
15 | - Unlike phyp dump, fadump exports the memory dump through /proc/vmcore | ||
16 | in the ELF format in the same way as kdump. This helps us reuse the | ||
17 | kdump infrastructure for dump capture and filtering. | ||
18 | - Unlike phyp dump, userspace tool does not need to refer any sysfs | ||
19 | interface while reading /proc/vmcore. | ||
20 | - Unlike phyp dump, fadump allows user to release all the memory reserved | ||
21 | for dump, with a single operation of echo 1 > /sys/kernel/fadump_release_mem. | ||
22 | - Once enabled through kernel boot parameter, fadump can be | ||
23 | started/stopped through /sys/kernel/fadump_registered interface (see | ||
24 | sysfs files section below) and can be easily integrated with kdump | ||
25 | service start/stop init scripts. | ||
26 | |||
27 | Comparing with kdump or other strategies, firmware-assisted | ||
28 | dump offers several strong, practical advantages: | ||
29 | |||
30 | -- Unlike kdump, the system has been reset, and loaded | ||
31 | with a fresh copy of the kernel. In particular, | ||
32 | PCI and I/O devices have been reinitialized and are | ||
33 | in a clean, consistent state. | ||
34 | -- Once the dump is copied out, the memory that held the dump | ||
35 | is immediately available to the running kernel. And therefore, | ||
36 | unlike kdump, fadump doesn't need a 2nd reboot to get back | ||
37 | the system to the production configuration. | ||
38 | |||
39 | The above can only be accomplished by coordination with, | ||
40 | and assistance from the Power firmware. The procedure is | ||
41 | as follows: | ||
42 | |||
43 | -- The first kernel registers the sections of memory with the | ||
44 | Power firmware for dump preservation during OS initialization. | ||
45 | These registered sections of memory are reserved by the first | ||
46 | kernel during early boot. | ||
47 | |||
48 | -- When a system crashes, the Power firmware will save | ||
49 | the low memory (boot memory of size larger of 5% of system RAM | ||
50 | or 256MB) of RAM to the previous registered region. It will | ||
51 | also save system registers, and hardware PTE's. | ||
52 | |||
53 | NOTE: The term 'boot memory' means size of the low memory chunk | ||
54 | that is required for a kernel to boot successfully when | ||
55 | booted with restricted memory. By default, the boot memory | ||
56 | size will be the larger of 5% of system RAM or 256MB. | ||
57 | Alternatively, user can also specify boot memory size | ||
58 | through boot parameter 'fadump_reserve_mem=' which will | ||
59 | override the default calculated size. Use this option | ||
60 | if default boot memory size is not sufficient for second | ||
61 | kernel to boot successfully. | ||
62 | |||
63 | -- After the low memory (boot memory) area has been saved, the | ||
64 | firmware will reset PCI and other hardware state. It will | ||
65 | *not* clear the RAM. It will then launch the bootloader, as | ||
66 | normal. | ||
67 | |||
68 | -- The freshly booted kernel will notice that there is a new | ||
69 | node (ibm,dump-kernel) in the device tree, indicating that | ||
70 | there is crash data available from a previous boot. During | ||
71 | the early boot OS will reserve rest of the memory above | ||
72 | boot memory size effectively booting with restricted memory | ||
73 | size. This will make sure that the second kernel will not | ||
74 | touch any of the dump memory area. | ||
75 | |||
76 | -- User-space tools will read /proc/vmcore to obtain the contents | ||
77 | of memory, which holds the previous crashed kernel dump in ELF | ||
78 | format. The userspace tools may copy this info to disk, or | ||
79 | network, nas, san, iscsi, etc. as desired. | ||
80 | |||
81 | -- Once the userspace tool is done saving dump, it will echo | ||
82 | '1' to /sys/kernel/fadump_release_mem to release the reserved | ||
83 | memory back to general use, except the memory required for | ||
84 | next firmware-assisted dump registration. | ||
85 | |||
86 | e.g. | ||
87 | # echo 1 > /sys/kernel/fadump_release_mem | ||
88 | |||
89 | Please note that the firmware-assisted dump feature | ||
90 | is only available on Power6 and above systems with recent | ||
91 | firmware versions. | ||
92 | |||
93 | Implementation details: | ||
94 | ---------------------- | ||
95 | |||
96 | During boot, a check is made to see if firmware supports | ||
97 | this feature on that particular machine. If it does, then | ||
98 | we check to see if an active dump is waiting for us. If yes | ||
99 | then everything but boot memory size of RAM is reserved during | ||
100 | early boot (See Fig. 2). This area is released once we finish | ||
101 | collecting the dump from user land scripts (e.g. kdump scripts) | ||
102 | that are run. If there is dump data, then the | ||
103 | /sys/kernel/fadump_release_mem file is created, and the reserved | ||
104 | memory is held. | ||
105 | |||
106 | If there is no waiting dump data, then only the memory required | ||
107 | to hold CPU state, HPTE region, boot memory dump and elfcore | ||
108 | header, is reserved at the top of memory (see Fig. 1). This area | ||
109 | is *not* released: this region will be kept permanently reserved, | ||
110 | so that it can act as a receptacle for a copy of the boot memory | ||
111 | content in addition to CPU state and HPTE region, in the case a | ||
112 | crash does occur. | ||
113 | |||
114 | o Memory Reservation during first kernel | ||
115 | |||
116 | Low memory Top of memory | ||
117 | 0 boot memory size | | ||
118 | | | |<--Reserved dump area -->| | ||
119 | V V | Permanent Reservation V | ||
120 | +-----------+----------/ /----------+---+----+-----------+----+ | ||
121 | | | |CPU|HPTE| DUMP |ELF | | ||
122 | +-----------+----------/ /----------+---+----+-----------+----+ | ||
123 | | ^ | ||
124 | | | | ||
125 | \ / | ||
126 | ------------------------------------------- | ||
127 | Boot memory content gets transferred to | ||
128 | reserved area by firmware at the time of | ||
129 | crash | ||
130 | Fig. 1 | ||
131 | |||
132 | o Memory Reservation during second kernel after crash | ||
133 | |||
134 | Low memory Top of memory | ||
135 | 0 boot memory size | | ||
136 | | |<------------- Reserved dump area ----------- -->| | ||
137 | V V V | ||
138 | +-----------+----------/ /----------+---+----+-----------+----+ | ||
139 | | | |CPU|HPTE| DUMP |ELF | | ||
140 | +-----------+----------/ /----------+---+----+-----------+----+ | ||
141 | | | | ||
142 | V V | ||
143 | Used by second /proc/vmcore | ||
144 | kernel to boot | ||
145 | Fig. 2 | ||
146 | |||
147 | Currently the dump will be copied from /proc/vmcore to a | ||
148 | a new file upon user intervention. The dump data available through | ||
149 | /proc/vmcore will be in ELF format. Hence the existing kdump | ||
150 | infrastructure (kdump scripts) to save the dump works fine with | ||
151 | minor modifications. | ||
152 | |||
153 | The tools to examine the dump will be same as the ones | ||
154 | used for kdump. | ||
155 | |||
156 | How to enable firmware-assisted dump (fadump): | ||
157 | ------------------------------------- | ||
158 | |||
159 | 1. Set config option CONFIG_FA_DUMP=y and build kernel. | ||
160 | 2. Boot into linux kernel with 'fadump=on' kernel cmdline option. | ||
161 | 3. Optionally, user can also set 'fadump_reserve_mem=' kernel cmdline | ||
162 | to specify size of the memory to reserve for boot memory dump | ||
163 | preservation. | ||
164 | |||
165 | NOTE: If firmware-assisted dump fails to reserve memory then it will | ||
166 | fallback to existing kdump mechanism if 'crashkernel=' option | ||
167 | is set at kernel cmdline. | ||
168 | |||
169 | Sysfs/debugfs files: | ||
170 | ------------ | ||
171 | |||
172 | Firmware-assisted dump feature uses sysfs file system to hold | ||
173 | the control files and debugfs file to display memory reserved region. | ||
174 | |||
175 | Here is the list of files under kernel sysfs: | ||
176 | |||
177 | /sys/kernel/fadump_enabled | ||
178 | |||
179 | This is used to display the fadump status. | ||
180 | 0 = fadump is disabled | ||
181 | 1 = fadump is enabled | ||
182 | |||
183 | This interface can be used by kdump init scripts to identify if | ||
184 | fadump is enabled in the kernel and act accordingly. | ||
185 | |||
186 | /sys/kernel/fadump_registered | ||
187 | |||
188 | This is used to display the fadump registration status as well | ||
189 | as to control (start/stop) the fadump registration. | ||
190 | 0 = fadump is not registered. | ||
191 | 1 = fadump is registered and ready to handle system crash. | ||
192 | |||
193 | To register fadump echo 1 > /sys/kernel/fadump_registered and | ||
194 | echo 0 > /sys/kernel/fadump_registered for un-register and stop the | ||
195 | fadump. Once the fadump is un-registered, the system crash will not | ||
196 | be handled and vmcore will not be captured. This interface can be | ||
197 | easily integrated with kdump service start/stop. | ||
198 | |||
199 | /sys/kernel/fadump_release_mem | ||
200 | |||
201 | This file is available only when fadump is active during | ||
202 | second kernel. This is used to release the reserved memory | ||
203 | region that are held for saving crash dump. To release the | ||
204 | reserved memory echo 1 to it: | ||
205 | |||
206 | echo 1 > /sys/kernel/fadump_release_mem | ||
207 | |||
208 | After echo 1, the content of the /sys/kernel/debug/powerpc/fadump_region | ||
209 | file will change to reflect the new memory reservations. | ||
210 | |||
211 | The existing userspace tools (kdump infrastructure) can be easily | ||
212 | enhanced to use this interface to release the memory reserved for | ||
213 | dump and continue without 2nd reboot. | ||
214 | |||
215 | Here is the list of files under powerpc debugfs: | ||
216 | (Assuming debugfs is mounted on /sys/kernel/debug directory.) | ||
217 | |||
218 | /sys/kernel/debug/powerpc/fadump_region | ||
219 | |||
220 | This file shows the reserved memory regions if fadump is | ||
221 | enabled otherwise this file is empty. The output format | ||
222 | is: | ||
223 | <region>: [<start>-<end>] <reserved-size> bytes, Dumped: <dump-size> | ||
224 | |||
225 | e.g. | ||
226 | Contents when fadump is registered during first kernel | ||
227 | |||
228 | # cat /sys/kernel/debug/powerpc/fadump_region | ||
229 | CPU : [0x0000006ffb0000-0x0000006fff001f] 0x40020 bytes, Dumped: 0x0 | ||
230 | HPTE: [0x0000006fff0020-0x0000006fff101f] 0x1000 bytes, Dumped: 0x0 | ||
231 | DUMP: [0x0000006fff1020-0x0000007fff101f] 0x10000000 bytes, Dumped: 0x0 | ||
232 | |||
233 | Contents when fadump is active during second kernel | ||
234 | |||
235 | # cat /sys/kernel/debug/powerpc/fadump_region | ||
236 | CPU : [0x0000006ffb0000-0x0000006fff001f] 0x40020 bytes, Dumped: 0x40020 | ||
237 | HPTE: [0x0000006fff0020-0x0000006fff101f] 0x1000 bytes, Dumped: 0x1000 | ||
238 | DUMP: [0x0000006fff1020-0x0000007fff101f] 0x10000000 bytes, Dumped: 0x10000000 | ||
239 | : [0x00000010000000-0x0000006ffaffff] 0x5ffb0000 bytes, Dumped: 0x5ffb0000 | ||
240 | |||
241 | NOTE: Please refer to Documentation/filesystems/debugfs.txt on | ||
242 | how to mount the debugfs filesystem. | ||
243 | |||
244 | |||
245 | TODO: | ||
246 | ----- | ||
247 | o Need to come up with the better approach to find out more | ||
248 | accurate boot memory size that is required for a kernel to | ||
249 | boot successfully when booted with restricted memory. | ||
250 | o The fadump implementation introduces a fadump crash info structure | ||
251 | in the scratch area before the ELF core header. The idea of introducing | ||
252 | this structure is to pass some important crash info data to the second | ||
253 | kernel which will help second kernel to populate ELF core header with | ||
254 | correct data before it gets exported through /proc/vmcore. The current | ||
255 | design implementation does not address a possibility of introducing | ||
256 | additional fields (in future) to this structure without affecting | ||
257 | compatibility. Need to come up with the better approach to address this. | ||
258 | The possible approaches are: | ||
259 | 1. Introduce version field for version tracking, bump up the version | ||
260 | whenever a new field is added to the structure in future. The version | ||
261 | field can be used to find out what fields are valid for the current | ||
262 | version of the structure. | ||
263 | 2. Reserve the area of predefined size (say PAGE_SIZE) for this | ||
264 | structure and have unused area as reserved (initialized to zero) | ||
265 | for future field additions. | ||
266 | The advantage of approach 1 over 2 is we don't need to reserve extra space. | ||
267 | --- | ||
268 | Author: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com> | ||
269 | This document is based on the original documentation written for phyp | ||
270 | assisted dump by Linas Vepstas and Manish Ahuja. | ||
diff --git a/Documentation/powerpc/mpc52xx.txt b/Documentation/powerpc/mpc52xx.txt index 10dd4ab93b85..0d540a31ea1a 100644 --- a/Documentation/powerpc/mpc52xx.txt +++ b/Documentation/powerpc/mpc52xx.txt | |||
@@ -2,7 +2,7 @@ Linux 2.6.x on MPC52xx family | |||
2 | ----------------------------- | 2 | ----------------------------- |
3 | 3 | ||
4 | For the latest info, go to http://www.246tNt.com/mpc52xx/ | 4 | For the latest info, go to http://www.246tNt.com/mpc52xx/ |
5 | 5 | ||
6 | To compile/use : | 6 | To compile/use : |
7 | 7 | ||
8 | - U-Boot: | 8 | - U-Boot: |
@@ -10,23 +10,23 @@ To compile/use : | |||
10 | if you wish to ). | 10 | if you wish to ). |
11 | # make lite5200_defconfig | 11 | # make lite5200_defconfig |
12 | # make uImage | 12 | # make uImage |
13 | 13 | ||
14 | then, on U-boot: | 14 | then, on U-boot: |
15 | => tftpboot 200000 uImage | 15 | => tftpboot 200000 uImage |
16 | => tftpboot 400000 pRamdisk | 16 | => tftpboot 400000 pRamdisk |
17 | => bootm 200000 400000 | 17 | => bootm 200000 400000 |
18 | 18 | ||
19 | - DBug: | 19 | - DBug: |
20 | # <edit Makefile to set ARCH=ppc & CROSS_COMPILE=... ( also EXTRAVERSION | 20 | # <edit Makefile to set ARCH=ppc & CROSS_COMPILE=... ( also EXTRAVERSION |
21 | if you wish to ). | 21 | if you wish to ). |
22 | # make lite5200_defconfig | 22 | # make lite5200_defconfig |
23 | # cp your_initrd.gz arch/ppc/boot/images/ramdisk.image.gz | 23 | # cp your_initrd.gz arch/ppc/boot/images/ramdisk.image.gz |
24 | # make zImage.initrd | 24 | # make zImage.initrd |
25 | # make | 25 | # make |
26 | 26 | ||
27 | then in DBug: | 27 | then in DBug: |
28 | DBug> dn -i zImage.initrd.lite5200 | 28 | DBug> dn -i zImage.initrd.lite5200 |
29 | 29 | ||
30 | 30 | ||
31 | Some remarks : | 31 | Some remarks : |
32 | - The port is named mpc52xxx, and config options are PPC_MPC52xx. The MGT5100 | 32 | - The port is named mpc52xxx, and config options are PPC_MPC52xx. The MGT5100 |
diff --git a/Documentation/powerpc/phyp-assisted-dump.txt b/Documentation/powerpc/phyp-assisted-dump.txt deleted file mode 100644 index ad340205d96a..000000000000 --- a/Documentation/powerpc/phyp-assisted-dump.txt +++ /dev/null | |||
@@ -1,127 +0,0 @@ | |||
1 | |||
2 | Hypervisor-Assisted Dump | ||
3 | ------------------------ | ||
4 | November 2007 | ||
5 | |||
6 | The goal of hypervisor-assisted dump is to enable the dump of | ||
7 | a crashed system, and to do so from a fully-reset system, and | ||
8 | to minimize the total elapsed time until the system is back | ||
9 | in production use. | ||
10 | |||
11 | As compared to kdump or other strategies, hypervisor-assisted | ||
12 | dump offers several strong, practical advantages: | ||
13 | |||
14 | -- Unlike kdump, the system has been reset, and loaded | ||
15 | with a fresh copy of the kernel. In particular, | ||
16 | PCI and I/O devices have been reinitialized and are | ||
17 | in a clean, consistent state. | ||
18 | -- As the dump is performed, the dumped memory becomes | ||
19 | immediately available to the system for normal use. | ||
20 | -- After the dump is completed, no further reboots are | ||
21 | required; the system will be fully usable, and running | ||
22 | in its normal, production mode on its normal kernel. | ||
23 | |||
24 | The above can only be accomplished by coordination with, | ||
25 | and assistance from the hypervisor. The procedure is | ||
26 | as follows: | ||
27 | |||
28 | -- When a system crashes, the hypervisor will save | ||
29 | the low 256MB of RAM to a previously registered | ||
30 | save region. It will also save system state, system | ||
31 | registers, and hardware PTE's. | ||
32 | |||
33 | -- After the low 256MB area has been saved, the | ||
34 | hypervisor will reset PCI and other hardware state. | ||
35 | It will *not* clear RAM. It will then launch the | ||
36 | bootloader, as normal. | ||
37 | |||
38 | -- The freshly booted kernel will notice that there | ||
39 | is a new node (ibm,dump-kernel) in the device tree, | ||
40 | indicating that there is crash data available from | ||
41 | a previous boot. It will boot into only 256MB of RAM, | ||
42 | reserving the rest of system memory. | ||
43 | |||
44 | -- Userspace tools will parse /sys/kernel/release_region | ||
45 | and read /proc/vmcore to obtain the contents of memory, | ||
46 | which holds the previous crashed kernel. The userspace | ||
47 | tools may copy this info to disk, or network, nas, san, | ||
48 | iscsi, etc. as desired. | ||
49 | |||
50 | For Example: the values in /sys/kernel/release-region | ||
51 | would look something like this (address-range pairs). | ||
52 | CPU:0x177fee000-0x10000: HPTE:0x177ffe020-0x1000: / | ||
53 | DUMP:0x177fff020-0x10000000, 0x10000000-0x16F1D370A | ||
54 | |||
55 | -- As the userspace tools complete saving a portion of | ||
56 | dump, they echo an offset and size to | ||
57 | /sys/kernel/release_region to release the reserved | ||
58 | memory back to general use. | ||
59 | |||
60 | An example of this is: | ||
61 | "echo 0x40000000 0x10000000 > /sys/kernel/release_region" | ||
62 | which will release 256MB at the 1GB boundary. | ||
63 | |||
64 | Please note that the hypervisor-assisted dump feature | ||
65 | is only available on Power6-based systems with recent | ||
66 | firmware versions. | ||
67 | |||
68 | Implementation details: | ||
69 | ---------------------- | ||
70 | |||
71 | During boot, a check is made to see if firmware supports | ||
72 | this feature on this particular machine. If it does, then | ||
73 | we check to see if a active dump is waiting for us. If yes | ||
74 | then everything but 256 MB of RAM is reserved during early | ||
75 | boot. This area is released once we collect a dump from user | ||
76 | land scripts that are run. If there is dump data, then | ||
77 | the /sys/kernel/release_region file is created, and | ||
78 | the reserved memory is held. | ||
79 | |||
80 | If there is no waiting dump data, then only the highest | ||
81 | 256MB of the ram is reserved as a scratch area. This area | ||
82 | is *not* released: this region will be kept permanently | ||
83 | reserved, so that it can act as a receptacle for a copy | ||
84 | of the low 256MB in the case a crash does occur. See, | ||
85 | however, "open issues" below, as to whether | ||
86 | such a reserved region is really needed. | ||
87 | |||
88 | Currently the dump will be copied from /proc/vmcore to a | ||
89 | a new file upon user intervention. The starting address | ||
90 | to be read and the range for each data point in provided | ||
91 | in /sys/kernel/release_region. | ||
92 | |||
93 | The tools to examine the dump will be same as the ones | ||
94 | used for kdump. | ||
95 | |||
96 | General notes: | ||
97 | -------------- | ||
98 | Security: please note that there are potential security issues | ||
99 | with any sort of dump mechanism. In particular, plaintext | ||
100 | (unencrypted) data, and possibly passwords, may be present in | ||
101 | the dump data. Userspace tools must take adequate precautions to | ||
102 | preserve security. | ||
103 | |||
104 | Open issues/ToDo: | ||
105 | ------------ | ||
106 | o The various code paths that tell the hypervisor that a crash | ||
107 | occurred, vs. it simply being a normal reboot, should be | ||
108 | reviewed, and possibly clarified/fixed. | ||
109 | |||
110 | o Instead of using /sys/kernel, should there be a /sys/dump | ||
111 | instead? There is a dump_subsys being created by the s390 code, | ||
112 | perhaps the pseries code should use a similar layout as well. | ||
113 | |||
114 | o Is reserving a 256MB region really required? The goal of | ||
115 | reserving a 256MB scratch area is to make sure that no | ||
116 | important crash data is clobbered when the hypervisor | ||
117 | save low mem to the scratch area. But, if one could assure | ||
118 | that nothing important is located in some 256MB area, then | ||
119 | it would not need to be reserved. Something that can be | ||
120 | improved in subsequent versions. | ||
121 | |||
122 | o Still working the kdump team to integrate this with kdump, | ||
123 | some work remains but this would not affect the current | ||
124 | patches. | ||
125 | |||
126 | o Still need to write a shell script, to copy the dump away. | ||
127 | Currently I am parsing it manually. | ||
diff --git a/Documentation/scsi/ChangeLog.lpfc b/Documentation/scsi/ChangeLog.lpfc index c56ec99d7b2f..2f6d595f95e1 100644 --- a/Documentation/scsi/ChangeLog.lpfc +++ b/Documentation/scsi/ChangeLog.lpfc | |||
@@ -1718,7 +1718,7 @@ Changes from 20040319 to 20040326 | |||
1718 | * lpfc_els_timeout_handler() now uses system timer. | 1718 | * lpfc_els_timeout_handler() now uses system timer. |
1719 | * Further cleanup of #ifdef powerpc | 1719 | * Further cleanup of #ifdef powerpc |
1720 | * lpfc_scsi_timeout_handler() now uses system timer. | 1720 | * lpfc_scsi_timeout_handler() now uses system timer. |
1721 | * Replace common driver's own defines for endianess w/ Linux's | 1721 | * Replace common driver's own defines for endianness w/ Linux's |
1722 | __BIG_ENDIAN etc. | 1722 | __BIG_ENDIAN etc. |
1723 | * Added #ifdef IPFC for all IPFC specific code. | 1723 | * Added #ifdef IPFC for all IPFC specific code. |
1724 | * lpfc_disc_retry_rptlun() now uses system timer. | 1724 | * lpfc_disc_retry_rptlun() now uses system timer. |
diff --git a/Documentation/scsi/ChangeLog.megaraid_sas b/Documentation/scsi/ChangeLog.megaraid_sas index 57566bacb4c5..83f8ea8b79eb 100644 --- a/Documentation/scsi/ChangeLog.megaraid_sas +++ b/Documentation/scsi/ChangeLog.megaraid_sas | |||
@@ -510,7 +510,7 @@ i. Support for 1078 type (ppc IOP) controller, device id : 0x60 added. | |||
510 | 3 Older Version : 00.00.02.02 | 510 | 3 Older Version : 00.00.02.02 |
511 | i. Register 16 byte CDB capability with scsi midlayer | 511 | i. Register 16 byte CDB capability with scsi midlayer |
512 | 512 | ||
513 | "Ths patch properly registers the 16 byte command length capability of the | 513 | "This patch properly registers the 16 byte command length capability of the |
514 | megaraid_sas controlled hardware with the scsi midlayer. All megaraid_sas | 514 | megaraid_sas controlled hardware with the scsi midlayer. All megaraid_sas |
515 | hardware supports 16 byte CDB's." | 515 | hardware supports 16 byte CDB's." |
516 | 516 | ||
diff --git a/Documentation/scsi/LICENSE.qla2xxx b/Documentation/scsi/LICENSE.qla2xxx index 19e7cd4bba66..ce0fdf349a81 100644 --- a/Documentation/scsi/LICENSE.qla2xxx +++ b/Documentation/scsi/LICENSE.qla2xxx | |||
@@ -1,48 +1,11 @@ | |||
1 | Copyright (c) 2003-2011 QLogic Corporation | 1 | Copyright (c) 2003-2011 QLogic Corporation |
2 | QLogic Linux/ESX Fibre Channel HBA Driver | 2 | QLogic Linux FC-FCoE Driver |
3 | 3 | ||
4 | This program includes a device driver for Linux 2.6/ESX that may be | 4 | This program includes a device driver for Linux 3.x. |
5 | distributed with QLogic hardware specific firmware binary file. | ||
6 | You may modify and redistribute the device driver code under the | 5 | You may modify and redistribute the device driver code under the |
7 | GNU General Public License (a copy of which is attached hereto as | 6 | GNU General Public License (a copy of which is attached hereto as |
8 | Exhibit A) published by the Free Software Foundation (version 2). | 7 | Exhibit A) published by the Free Software Foundation (version 2). |
9 | 8 | ||
10 | You may redistribute the hardware specific firmware binary file | ||
11 | under the following terms: | ||
12 | |||
13 | 1. Redistribution of source code (only if applicable), | ||
14 | must retain the above copyright notice, this list of | ||
15 | conditions and the following disclaimer. | ||
16 | |||
17 | 2. Redistribution in binary form must reproduce the above | ||
18 | copyright notice, this list of conditions and the | ||
19 | following disclaimer in the documentation and/or other | ||
20 | materials provided with the distribution. | ||
21 | |||
22 | 3. The name of QLogic Corporation may not be used to | ||
23 | endorse or promote products derived from this software | ||
24 | without specific prior written permission | ||
25 | |||
26 | REGARDLESS OF WHAT LICENSING MECHANISM IS USED OR APPLICABLE, | ||
27 | THIS PROGRAM IS PROVIDED BY QLOGIC CORPORATION "AS IS'' AND ANY | ||
28 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
29 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A | ||
30 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR | ||
31 | BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||
32 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED | ||
33 | TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
34 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
35 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
36 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
37 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
38 | POSSIBILITY OF SUCH DAMAGE. | ||
39 | |||
40 | USER ACKNOWLEDGES AND AGREES THAT USE OF THIS PROGRAM WILL NOT | ||
41 | CREATE OR GIVE GROUNDS FOR A LICENSE BY IMPLICATION, ESTOPPEL, OR | ||
42 | OTHERWISE IN ANY INTELLECTUAL PROPERTY RIGHTS (PATENT, COPYRIGHT, | ||
43 | TRADE SECRET, MASK WORK, OR OTHER PROPRIETARY RIGHT) EMBODIED IN | ||
44 | ANY OTHER QLOGIC HARDWARE OR SOFTWARE EITHER SOLELY OR IN | ||
45 | COMBINATION WITH THIS PROGRAM. | ||
46 | 9 | ||
47 | 10 | ||
48 | EXHIBIT A | 11 | EXHIBIT A |
diff --git a/Documentation/scsi/bfa.txt b/Documentation/scsi/bfa.txt new file mode 100644 index 000000000000..f2d6e9d1791e --- /dev/null +++ b/Documentation/scsi/bfa.txt | |||
@@ -0,0 +1,82 @@ | |||
1 | Linux driver for Brocade FC/FCOE adapters | ||
2 | |||
3 | |||
4 | Supported Hardware | ||
5 | ------------------ | ||
6 | |||
7 | bfa 3.0.2.2 driver supports all Brocade FC/FCOE adapters. Below is a list of | ||
8 | adapter models with corresponding PCIIDs. | ||
9 | |||
10 | PCIID Model | ||
11 | |||
12 | 1657:0013:1657:0014 425 4Gbps dual port FC HBA | ||
13 | 1657:0013:1657:0014 825 8Gbps PCIe dual port FC HBA | ||
14 | 1657:0013:103c:1742 HP 82B 8Gbps PCIedual port FC HBA | ||
15 | 1657:0013:103c:1744 HP 42B 4Gbps dual port FC HBA | ||
16 | 1657:0017:1657:0014 415 4Gbps single port FC HBA | ||
17 | 1657:0017:1657:0014 815 8Gbps single port FC HBA | ||
18 | 1657:0017:103c:1741 HP 41B 4Gbps single port FC HBA | ||
19 | 1657:0017:103c 1743 HP 81B 8Gbps single port FC HBA | ||
20 | 1657:0021:103c:1779 804 8Gbps FC HBA for HP Bladesystem c-class | ||
21 | |||
22 | 1657:0014:1657:0014 1010 10Gbps single port CNA - FCOE | ||
23 | 1657:0014:1657:0014 1020 10Gbps dual port CNA - FCOE | ||
24 | 1657:0014:1657:0014 1007 10Gbps dual port CNA - FCOE | ||
25 | 1657:0014:1657:0014 1741 10Gbps dual port CNA - FCOE | ||
26 | |||
27 | 1657:0022:1657:0024 1860 16Gbps FC HBA | ||
28 | 1657:0022:1657:0022 1860 10Gbps CNA - FCOE | ||
29 | |||
30 | |||
31 | Firmware download | ||
32 | ----------------- | ||
33 | |||
34 | The latest Firmware package for 3.0.2.2 bfa driver can be found at: | ||
35 | |||
36 | http://www.brocade.com/services-support/drivers-downloads/adapters/Linux.page | ||
37 | |||
38 | and then click following respective util package link: | ||
39 | |||
40 | Version Link | ||
41 | |||
42 | v3.0.0.0 Linux Adapter Firmware package for RHEL 6.2, SLES 11SP2 | ||
43 | |||
44 | |||
45 | Configuration & Management utility download | ||
46 | ------------------------------------------- | ||
47 | |||
48 | The latest driver configuration & management utility for 3.0.2.2 bfa driver can | ||
49 | be found at: | ||
50 | |||
51 | http://www.brocade.com/services-support/drivers-downloads/adapters/Linux.page | ||
52 | |||
53 | and then click following respective util pacakge link | ||
54 | |||
55 | Version Link | ||
56 | |||
57 | v3.0.2.0 Linux Adapter Firmware package for RHEL 6.2, SLES 11SP2 | ||
58 | |||
59 | |||
60 | Documentation | ||
61 | ------------- | ||
62 | |||
63 | The latest Administration's Guide, Installation and Reference Manual, | ||
64 | Troubleshooting Guide, and Release Notes for the corresponding out-of-box | ||
65 | driver can be found at: | ||
66 | |||
67 | http://www.brocade.com/services-support/drivers-downloads/adapters/Linux.page | ||
68 | |||
69 | and use the following inbox and out-of-box driver version mapping to find | ||
70 | the corresponding documentation: | ||
71 | |||
72 | Inbox Version Out-of-box Version | ||
73 | |||
74 | v3.0.2.2 v3.0.0.0 | ||
75 | |||
76 | |||
77 | Support | ||
78 | ------- | ||
79 | |||
80 | For general product and support info, go to the Brocade website at: | ||
81 | |||
82 | http://www.brocade.com/services-support/index.page | ||
diff --git a/Documentation/scsi/libsas.txt b/Documentation/scsi/libsas.txt index aa54f54c4a50..3cc9c7843e15 100644 --- a/Documentation/scsi/libsas.txt +++ b/Documentation/scsi/libsas.txt | |||
@@ -398,21 +398,6 @@ struct sas_task { | |||
398 | task_done -- callback when the task has finished execution | 398 | task_done -- callback when the task has finished execution |
399 | }; | 399 | }; |
400 | 400 | ||
401 | When an external entity, entity other than the LLDD or the | ||
402 | SAS Layer, wants to work with a struct domain_device, it | ||
403 | _must_ call kobject_get() when getting a handle on the | ||
404 | device and kobject_put() when it is done with the device. | ||
405 | |||
406 | This does two things: | ||
407 | A) implements proper kfree() for the device; | ||
408 | B) increments/decrements the kref for all players: | ||
409 | domain_device | ||
410 | all domain_device's ... (if past an expander) | ||
411 | port | ||
412 | host adapter | ||
413 | pci device | ||
414 | and up the ladder, etc. | ||
415 | |||
416 | DISCOVERY | 401 | DISCOVERY |
417 | --------- | 402 | --------- |
418 | 403 | ||
diff --git a/Documentation/scsi/scsi-generic.txt b/Documentation/scsi/scsi-generic.txt index 0a22ab8ea0c1..51be20a6a14d 100644 --- a/Documentation/scsi/scsi-generic.txt +++ b/Documentation/scsi/scsi-generic.txt | |||
@@ -62,7 +62,7 @@ There are two packages of sg utilities: | |||
62 | and earlier | 62 | and earlier |
63 | Both packages will work in the lk 2.4 series however sg3_utils offers more | 63 | Both packages will work in the lk 2.4 series however sg3_utils offers more |
64 | capabilities. They can be found at: http://sg.danny.cz/sg/sg3_utils.html and | 64 | capabilities. They can be found at: http://sg.danny.cz/sg/sg3_utils.html and |
65 | freshmeat.net | 65 | freecode.com |
66 | 66 | ||
67 | Another approach is to look at the applications that use the sg driver. | 67 | Another approach is to look at the applications that use the sg driver. |
68 | These include cdrecord, cdparanoia, SANE and cdrdao. | 68 | These include cdrecord, cdparanoia, SANE and cdrdao. |
diff --git a/Documentation/scsi/tmscsim.txt b/Documentation/scsi/tmscsim.txt index 61c0531e044a..3303d218b32e 100644 --- a/Documentation/scsi/tmscsim.txt +++ b/Documentation/scsi/tmscsim.txt | |||
@@ -102,7 +102,7 @@ So take at least the following measures: | |||
102 | ftp://student.physik.uni-dortmund.de/pub/linux/kernel/bootdisk.gz | 102 | ftp://student.physik.uni-dortmund.de/pub/linux/kernel/bootdisk.gz |
103 | 103 | ||
104 | One more warning: I used to overclock my PCI bus to 41.67 MHz. My Tekram | 104 | One more warning: I used to overclock my PCI bus to 41.67 MHz. My Tekram |
105 | DC390F (Sym53c875) accepted this as well as my Millenium. But the Am53C974 | 105 | DC390F (Sym53c875) accepted this as well as my Millennium. But the Am53C974 |
106 | produced errors and started to corrupt my disks. So don't do that! A 37.50 | 106 | produced errors and started to corrupt my disks. So don't do that! A 37.50 |
107 | MHz PCI bus works for me, though, but I don't recommend using higher clocks | 107 | MHz PCI bus works for me, though, but I don't recommend using higher clocks |
108 | than the 33.33 MHz being in the PCI spec. | 108 | than the 33.33 MHz being in the PCI spec. |
diff --git a/Documentation/security/00-INDEX b/Documentation/security/00-INDEX index 99b85d39751c..eeed1de546d4 100644 --- a/Documentation/security/00-INDEX +++ b/Documentation/security/00-INDEX | |||
@@ -6,6 +6,8 @@ SELinux.txt | |||
6 | - how to get started with the SELinux security enhancement. | 6 | - how to get started with the SELinux security enhancement. |
7 | Smack.txt | 7 | Smack.txt |
8 | - documentation on the Smack Linux Security Module. | 8 | - documentation on the Smack Linux Security Module. |
9 | Yama.txt | ||
10 | - documentation on the Yama Linux Security Module. | ||
9 | apparmor.txt | 11 | apparmor.txt |
10 | - documentation on the AppArmor security extension. | 12 | - documentation on the AppArmor security extension. |
11 | credentials.txt | 13 | credentials.txt |
diff --git a/Documentation/security/Smack.txt b/Documentation/security/Smack.txt index e9dab41c0fe0..d2f72ae66432 100644 --- a/Documentation/security/Smack.txt +++ b/Documentation/security/Smack.txt | |||
@@ -536,6 +536,6 @@ writing a single character to the /smack/logging file : | |||
536 | 3 : log denied & accepted | 536 | 3 : log denied & accepted |
537 | 537 | ||
538 | Events are logged as 'key=value' pairs, for each event you at least will get | 538 | Events are logged as 'key=value' pairs, for each event you at least will get |
539 | the subjet, the object, the rights requested, the action, the kernel function | 539 | the subject, the object, the rights requested, the action, the kernel function |
540 | that triggered the event, plus other pairs depending on the type of event | 540 | that triggered the event, plus other pairs depending on the type of event |
541 | audited. | 541 | audited. |
diff --git a/Documentation/security/Yama.txt b/Documentation/security/Yama.txt new file mode 100644 index 000000000000..a9511f179069 --- /dev/null +++ b/Documentation/security/Yama.txt | |||
@@ -0,0 +1,65 @@ | |||
1 | Yama is a Linux Security Module that collects a number of system-wide DAC | ||
2 | security protections that are not handled by the core kernel itself. To | ||
3 | select it at boot time, specify "security=yama" (though this will disable | ||
4 | any other LSM). | ||
5 | |||
6 | Yama is controlled through sysctl in /proc/sys/kernel/yama: | ||
7 | |||
8 | - ptrace_scope | ||
9 | |||
10 | ============================================================== | ||
11 | |||
12 | ptrace_scope: | ||
13 | |||
14 | As Linux grows in popularity, it will become a larger target for | ||
15 | malware. One particularly troubling weakness of the Linux process | ||
16 | interfaces is that a single user is able to examine the memory and | ||
17 | running state of any of their processes. For example, if one application | ||
18 | (e.g. Pidgin) was compromised, it would be possible for an attacker to | ||
19 | attach to other running processes (e.g. Firefox, SSH sessions, GPG agent, | ||
20 | etc) to extract additional credentials and continue to expand the scope | ||
21 | of their attack without resorting to user-assisted phishing. | ||
22 | |||
23 | This is not a theoretical problem. SSH session hijacking | ||
24 | (http://www.storm.net.nz/projects/7) and arbitrary code injection | ||
25 | (http://c-skills.blogspot.com/2007/05/injectso.html) attacks already | ||
26 | exist and remain possible if ptrace is allowed to operate as before. | ||
27 | Since ptrace is not commonly used by non-developers and non-admins, system | ||
28 | builders should be allowed the option to disable this debugging system. | ||
29 | |||
30 | For a solution, some applications use prctl(PR_SET_DUMPABLE, ...) to | ||
31 | specifically disallow such ptrace attachment (e.g. ssh-agent), but many | ||
32 | do not. A more general solution is to only allow ptrace directly from a | ||
33 | parent to a child process (i.e. direct "gdb EXE" and "strace EXE" still | ||
34 | work), or with CAP_SYS_PTRACE (i.e. "gdb --pid=PID", and "strace -p PID" | ||
35 | still work as root). | ||
36 | |||
37 | For software that has defined application-specific relationships | ||
38 | between a debugging process and its inferior (crash handlers, etc), | ||
39 | prctl(PR_SET_PTRACER, pid, ...) can be used. An inferior can declare which | ||
40 | other process (and its descendents) are allowed to call PTRACE_ATTACH | ||
41 | against it. Only one such declared debugging process can exists for | ||
42 | each inferior at a time. For example, this is used by KDE, Chromium, and | ||
43 | Firefox's crash handlers, and by Wine for allowing only Wine processes | ||
44 | to ptrace each other. If a process wishes to entirely disable these ptrace | ||
45 | restrictions, it can call prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, ...) | ||
46 | so that any otherwise allowed process (even those in external pid namespaces) | ||
47 | may attach. | ||
48 | |||
49 | The sysctl settings are: | ||
50 | |||
51 | 0 - classic ptrace permissions: a process can PTRACE_ATTACH to any other | ||
52 | process running under the same uid, as long as it is dumpable (i.e. | ||
53 | did not transition uids, start privileged, or have called | ||
54 | prctl(PR_SET_DUMPABLE...) already). | ||
55 | |||
56 | 1 - restricted ptrace: a process must have a predefined relationship | ||
57 | with the inferior it wants to call PTRACE_ATTACH on. By default, | ||
58 | this relationship is that of only its descendants when the above | ||
59 | classic criteria is also met. To change the relationship, an | ||
60 | inferior can call prctl(PR_SET_PTRACER, debugger, ...) to declare | ||
61 | an allowed debugger PID to call PTRACE_ATTACH on the inferior. | ||
62 | |||
63 | The original children-only logic was based on the restrictions in grsecurity. | ||
64 | |||
65 | ============================================================== | ||
diff --git a/Documentation/security/keys-trusted-encrypted.txt b/Documentation/security/keys-trusted-encrypted.txt index c9e4855ed3d7..e105ae97a4f5 100644 --- a/Documentation/security/keys-trusted-encrypted.txt +++ b/Documentation/security/keys-trusted-encrypted.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | Trusted and Encrypted Keys | 1 | Trusted and Encrypted Keys |
2 | 2 | ||
3 | Trusted and Encrypted Keys are two new key types added to the existing kernel | 3 | Trusted and Encrypted Keys are two new key types added to the existing kernel |
4 | key ring service. Both of these new types are variable length symmetic keys, | 4 | key ring service. Both of these new types are variable length symmetric keys, |
5 | and in both cases all keys are created in the kernel, and user space sees, | 5 | and in both cases all keys are created in the kernel, and user space sees, |
6 | stores, and loads only encrypted blobs. Trusted Keys require the availability | 6 | stores, and loads only encrypted blobs. Trusted Keys require the availability |
7 | of a Trusted Platform Module (TPM) chip for greater security, while Encrypted | 7 | of a Trusted Platform Module (TPM) chip for greater security, while Encrypted |
diff --git a/Documentation/security/keys.txt b/Documentation/security/keys.txt index 4d75931d2d79..787717091421 100644 --- a/Documentation/security/keys.txt +++ b/Documentation/security/keys.txt | |||
@@ -554,6 +554,10 @@ The keyctl syscall functions are: | |||
554 | process must have write permission on the keyring, and it must be a | 554 | process must have write permission on the keyring, and it must be a |
555 | keyring (or else error ENOTDIR will result). | 555 | keyring (or else error ENOTDIR will result). |
556 | 556 | ||
557 | This function can also be used to clear special kernel keyrings if they | ||
558 | are appropriately marked if the user has CAP_SYS_ADMIN capability. The | ||
559 | DNS resolver cache keyring is an example of this. | ||
560 | |||
557 | 561 | ||
558 | (*) Link a key into a keyring: | 562 | (*) Link a key into a keyring: |
559 | 563 | ||
@@ -668,7 +672,7 @@ The keyctl syscall functions are: | |||
668 | 672 | ||
669 | If the kernel calls back to userspace to complete the instantiation of a | 673 | If the kernel calls back to userspace to complete the instantiation of a |
670 | key, userspace should use this call mark the key as negative before the | 674 | key, userspace should use this call mark the key as negative before the |
671 | invoked process returns if it is unable to fulfil the request. | 675 | invoked process returns if it is unable to fulfill the request. |
672 | 676 | ||
673 | The process must have write access on the key to be able to instantiate | 677 | The process must have write access on the key to be able to instantiate |
674 | it, and the key must be uninstantiated. | 678 | it, and the key must be uninstantiated. |
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt index 936699e4f04b..6f75ba3b8a39 100644 --- a/Documentation/sound/alsa/ALSA-Configuration.txt +++ b/Documentation/sound/alsa/ALSA-Configuration.txt | |||
@@ -860,7 +860,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
860 | 860 | ||
861 | [Multiple options for each card instance] | 861 | [Multiple options for each card instance] |
862 | model - force the model name | 862 | model - force the model name |
863 | position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF) | 863 | position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF, |
864 | 3 = VIACOMBO, 4 = COMBO) | ||
864 | probe_mask - Bitmask to probe codecs (default = -1, meaning all slots) | 865 | probe_mask - Bitmask to probe codecs (default = -1, meaning all slots) |
865 | When the bit 8 (0x100) is set, the lower 8 bits are used | 866 | When the bit 8 (0x100) is set, the lower 8 bits are used |
866 | as the "fixed" codec slots; i.e. the driver probes the | 867 | as the "fixed" codec slots; i.e. the driver probes the |
@@ -925,6 +926,11 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
925 | (Usually SD_LPIB register is more accurate than the | 926 | (Usually SD_LPIB register is more accurate than the |
926 | position buffer.) | 927 | position buffer.) |
927 | 928 | ||
929 | position_fix=3 is specific to VIA devices. The position | ||
930 | of the capture stream is checked from both LPIB and POSBUF | ||
931 | values. position_fix=4 is a combination mode, using LPIB | ||
932 | for playback and POSBUF for capture. | ||
933 | |||
928 | NB: If you get many "azx_get_response timeout" messages at | 934 | NB: If you get many "azx_get_response timeout" messages at |
929 | loading, it's likely a problem of interrupts (e.g. ACPI irq | 935 | loading, it's likely a problem of interrupts (e.g. ACPI irq |
930 | routing). Try to boot with options like "pci=noacpi". Also, you | 936 | routing). Try to boot with options like "pci=noacpi". Also, you |
@@ -1588,7 +1594,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
1588 | 1594 | ||
1589 | Module supports autoprobe a chip. | 1595 | Module supports autoprobe a chip. |
1590 | 1596 | ||
1591 | Note: the driver may have problems regarding endianess. | 1597 | Note: the driver may have problems regarding endianness. |
1592 | 1598 | ||
1593 | The power-management is supported. | 1599 | The power-management is supported. |
1594 | 1600 | ||
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt index c8c54544abc5..d97d992ced14 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
@@ -8,37 +8,10 @@ ALC880 | |||
8 | 5stack-digout 5-jack in back, 2-jack in front, a SPDIF out | 8 | 5stack-digout 5-jack in back, 2-jack in front, a SPDIF out |
9 | 6stack 6-jack in back, 2-jack in front | 9 | 6stack 6-jack in back, 2-jack in front |
10 | 6stack-digout 6-jack with a SPDIF out | 10 | 6stack-digout 6-jack with a SPDIF out |
11 | w810 3-jack | ||
12 | z71v 3-jack (HP shared SPDIF) | ||
13 | asus 3-jack (ASUS Mobo) | ||
14 | asus-w1v ASUS W1V | ||
15 | asus-dig ASUS with SPDIF out | ||
16 | asus-dig2 ASUS with SPDIF out (using GPIO2) | ||
17 | uniwill 3-jack | ||
18 | fujitsu Fujitsu Laptops (Pi1536) | ||
19 | F1734 2-jack | ||
20 | lg LG laptop (m1 express dual) | ||
21 | lg-lw LG LW20/LW25 laptop | ||
22 | tcl TCL S700 | ||
23 | clevo Clevo laptops (m520G, m665n) | ||
24 | medion Medion Rim 2150 | ||
25 | test for testing/debugging purpose, almost all controls can be | ||
26 | adjusted. Appearing only when compiled with | ||
27 | $CONFIG_SND_DEBUG=y | ||
28 | auto auto-config reading BIOS (default) | ||
29 | 11 | ||
30 | ALC260 | 12 | ALC260 |
31 | ====== | 13 | ====== |
32 | fujitsu Fujitsu S7020 | 14 | N/A |
33 | acer Acer TravelMate | ||
34 | will Will laptops (PB V7900) | ||
35 | replacer Replacer 672V | ||
36 | favorit100 Maxdata Favorit 100XS | ||
37 | basic fixed pin assignment (old default model) | ||
38 | test for testing/debugging purpose, almost all controls can | ||
39 | adjusted. Appearing only when compiled with | ||
40 | $CONFIG_SND_DEBUG=y | ||
41 | auto auto-config reading BIOS (default) | ||
42 | 15 | ||
43 | ALC262 | 16 | ALC262 |
44 | ====== | 17 | ====== |
@@ -70,55 +43,7 @@ ALC680 | |||
70 | 43 | ||
71 | ALC882/883/885/888/889 | 44 | ALC882/883/885/888/889 |
72 | ====================== | 45 | ====================== |
73 | 3stack-dig 3-jack with SPDIF I/O | 46 | N/A |
74 | 6stack-dig 6-jack digital with SPDIF I/O | ||
75 | arima Arima W820Di1 | ||
76 | targa Targa T8, MSI-1049 T8 | ||
77 | asus-a7j ASUS A7J | ||
78 | asus-a7m ASUS A7M | ||
79 | macpro MacPro support | ||
80 | mb5 Macbook 5,1 | ||
81 | macmini3 Macmini 3,1 | ||
82 | mba21 Macbook Air 2,1 | ||
83 | mbp3 Macbook Pro rev3 | ||
84 | imac24 iMac 24'' with jack detection | ||
85 | imac91 iMac 9,1 | ||
86 | w2jc ASUS W2JC | ||
87 | 3stack-2ch-dig 3-jack with SPDIF I/O (ALC883) | ||
88 | alc883-6stack-dig 6-jack digital with SPDIF I/O (ALC883) | ||
89 | 3stack-6ch 3-jack 6-channel | ||
90 | 3stack-6ch-dig 3-jack 6-channel with SPDIF I/O | ||
91 | 6stack-dig-demo 6-jack digital for Intel demo board | ||
92 | acer Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc) | ||
93 | acer-aspire Acer Aspire 9810 | ||
94 | acer-aspire-4930g Acer Aspire 4930G | ||
95 | acer-aspire-6530g Acer Aspire 6530G | ||
96 | acer-aspire-7730g Acer Aspire 7730G | ||
97 | acer-aspire-8930g Acer Aspire 8930G | ||
98 | medion Medion Laptops | ||
99 | targa-dig Targa/MSI | ||
100 | targa-2ch-dig Targa/MSI with 2-channel | ||
101 | targa-8ch-dig Targa/MSI with 8-channel (MSI GX620) | ||
102 | laptop-eapd 3-jack with SPDIF I/O and EAPD (Clevo M540JE, M550JE) | ||
103 | lenovo-101e Lenovo 101E | ||
104 | lenovo-nb0763 Lenovo NB0763 | ||
105 | lenovo-ms7195-dig Lenovo MS7195 | ||
106 | lenovo-sky Lenovo Sky | ||
107 | haier-w66 Haier W66 | ||
108 | 3stack-hp HP machines with 3stack (Lucknow, Samba boards) | ||
109 | 6stack-dell Dell machines with 6stack (Inspiron 530) | ||
110 | mitac Mitac 8252D | ||
111 | clevo-m540r Clevo M540R (6ch + digital) | ||
112 | clevo-m720 Clevo M720 laptop series | ||
113 | fujitsu-pi2515 Fujitsu AMILO Pi2515 | ||
114 | fujitsu-xa3530 Fujitsu AMILO XA3530 | ||
115 | 3stack-6ch-intel Intel DG33* boards | ||
116 | intel-alc889a Intel IbexPeak with ALC889A | ||
117 | intel-x58 Intel DX58 with ALC889 | ||
118 | asus-p5q ASUS P5Q-EM boards | ||
119 | mb31 MacBook 3,1 | ||
120 | sony-vaio-tt Sony VAIO TT | ||
121 | auto auto-config reading BIOS (default) | ||
122 | 47 | ||
123 | ALC861/660 | 48 | ALC861/660 |
124 | ========== | 49 | ========== |
diff --git a/Documentation/sound/alsa/HD-Audio.txt b/Documentation/sound/alsa/HD-Audio.txt index 91fee3b45fb8..7813c06a5c71 100644 --- a/Documentation/sound/alsa/HD-Audio.txt +++ b/Documentation/sound/alsa/HD-Audio.txt | |||
@@ -59,7 +59,12 @@ a case, you can change the default method via `position_fix` option. | |||
59 | `position_fix=1` means to use LPIB method explicitly. | 59 | `position_fix=1` means to use LPIB method explicitly. |
60 | `position_fix=2` means to use the position-buffer. | 60 | `position_fix=2` means to use the position-buffer. |
61 | `position_fix=3` means to use a combination of both methods, needed | 61 | `position_fix=3` means to use a combination of both methods, needed |
62 | for some VIA and ATI controllers. 0 is the default value for all other | 62 | for some VIA controllers. The capture stream position is corrected |
63 | by comparing both LPIB and position-buffer values. | ||
64 | `position_fix=4` is another combination available for all controllers, | ||
65 | and uses LPIB for the playback and the position-buffer for the capture | ||
66 | streams. | ||
67 | 0 is the default value for all other | ||
63 | controllers, the automatic check and fallback to LPIB as described in | 68 | controllers, the automatic check and fallback to LPIB as described in |
64 | the above. If you get a problem of repeated sounds, this option might | 69 | the above. If you get a problem of repeated sounds, this option might |
65 | help. | 70 | help. |
diff --git a/Documentation/spi/spi-summary b/Documentation/spi/spi-summary index 4884cb33845d..7312ec14dd89 100644 --- a/Documentation/spi/spi-summary +++ b/Documentation/spi/spi-summary | |||
@@ -1,7 +1,7 @@ | |||
1 | Overview of Linux kernel SPI support | 1 | Overview of Linux kernel SPI support |
2 | ==================================== | 2 | ==================================== |
3 | 3 | ||
4 | 21-May-2007 | 4 | 02-Feb-2012 |
5 | 5 | ||
6 | What is SPI? | 6 | What is SPI? |
7 | ------------ | 7 | ------------ |
@@ -483,9 +483,9 @@ also initialize its own internal state. (See below about bus numbering | |||
483 | and those methods.) | 483 | and those methods.) |
484 | 484 | ||
485 | After you initialize the spi_master, then use spi_register_master() to | 485 | After you initialize the spi_master, then use spi_register_master() to |
486 | publish it to the rest of the system. At that time, device nodes for | 486 | publish it to the rest of the system. At that time, device nodes for the |
487 | the controller and any predeclared spi devices will be made available, | 487 | controller and any predeclared spi devices will be made available, and |
488 | and the driver model core will take care of binding them to drivers. | 488 | the driver model core will take care of binding them to drivers. |
489 | 489 | ||
490 | If you need to remove your SPI controller driver, spi_unregister_master() | 490 | If you need to remove your SPI controller driver, spi_unregister_master() |
491 | will reverse the effect of spi_register_master(). | 491 | will reverse the effect of spi_register_master(). |
@@ -521,21 +521,53 @@ SPI MASTER METHODS | |||
521 | ** When you code setup(), ASSUME that the controller | 521 | ** When you code setup(), ASSUME that the controller |
522 | ** is actively processing transfers for another device. | 522 | ** is actively processing transfers for another device. |
523 | 523 | ||
524 | master->transfer(struct spi_device *spi, struct spi_message *message) | ||
525 | This must not sleep. Its responsibility is arrange that the | ||
526 | transfer happens and its complete() callback is issued. The two | ||
527 | will normally happen later, after other transfers complete, and | ||
528 | if the controller is idle it will need to be kickstarted. | ||
529 | |||
530 | master->cleanup(struct spi_device *spi) | 524 | master->cleanup(struct spi_device *spi) |
531 | Your controller driver may use spi_device.controller_state to hold | 525 | Your controller driver may use spi_device.controller_state to hold |
532 | state it dynamically associates with that device. If you do that, | 526 | state it dynamically associates with that device. If you do that, |
533 | be sure to provide the cleanup() method to free that state. | 527 | be sure to provide the cleanup() method to free that state. |
534 | 528 | ||
529 | master->prepare_transfer_hardware(struct spi_master *master) | ||
530 | This will be called by the queue mechanism to signal to the driver | ||
531 | that a message is coming in soon, so the subsystem requests the | ||
532 | driver to prepare the transfer hardware by issuing this call. | ||
533 | This may sleep. | ||
534 | |||
535 | master->unprepare_transfer_hardware(struct spi_master *master) | ||
536 | This will be called by the queue mechanism to signal to the driver | ||
537 | that there are no more messages pending in the queue and it may | ||
538 | relax the hardware (e.g. by power management calls). This may sleep. | ||
539 | |||
540 | master->transfer_one_message(struct spi_master *master, | ||
541 | struct spi_message *mesg) | ||
542 | The subsystem calls the driver to transfer a single message while | ||
543 | queuing transfers that arrive in the meantime. When the driver is | ||
544 | finished with this message, it must call | ||
545 | spi_finalize_current_message() so the subsystem can issue the next | ||
546 | transfer. This may sleep. | ||
547 | |||
548 | DEPRECATED METHODS | ||
549 | |||
550 | master->transfer(struct spi_device *spi, struct spi_message *message) | ||
551 | This must not sleep. Its responsibility is arrange that the | ||
552 | transfer happens and its complete() callback is issued. The two | ||
553 | will normally happen later, after other transfers complete, and | ||
554 | if the controller is idle it will need to be kickstarted. This | ||
555 | method is not used on queued controllers and must be NULL if | ||
556 | transfer_one_message() and (un)prepare_transfer_hardware() are | ||
557 | implemented. | ||
558 | |||
535 | 559 | ||
536 | SPI MESSAGE QUEUE | 560 | SPI MESSAGE QUEUE |
537 | 561 | ||
538 | The bulk of the driver will be managing the I/O queue fed by transfer(). | 562 | If you are happy with the standard queueing mechanism provided by the |
563 | SPI subsystem, just implement the queued methods specified above. Using | ||
564 | the message queue has the upside of centralizing a lot of code and | ||
565 | providing pure process-context execution of methods. The message queue | ||
566 | can also be elevated to realtime priority on high-priority SPI traffic. | ||
567 | |||
568 | Unless the queueing mechanism in the SPI subsystem is selected, the bulk | ||
569 | of the driver will be managing the I/O queue fed by the now deprecated | ||
570 | function transfer(). | ||
539 | 571 | ||
540 | That queue could be purely conceptual. For example, a driver used only | 572 | That queue could be purely conceptual. For example, a driver used only |
541 | for low-frequency sensor access might be fine using synchronous PIO. | 573 | for low-frequency sensor access might be fine using synchronous PIO. |
@@ -561,4 +593,6 @@ Stephen Street | |||
561 | Mark Underwood | 593 | Mark Underwood |
562 | Andrew Victor | 594 | Andrew Victor |
563 | Vitaly Wool | 595 | Vitaly Wool |
564 | 596 | Grant Likely | |
597 | Mark Brown | ||
598 | Linus Walleij | ||
diff --git a/Documentation/target/tcm_mod_builder.py b/Documentation/target/tcm_mod_builder.py index 6e21b8b52638..a78879b01f09 100755 --- a/Documentation/target/tcm_mod_builder.py +++ b/Documentation/target/tcm_mod_builder.py | |||
@@ -775,7 +775,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
775 | buf += " struct " + fabric_mod_name + "_nacl *nacl;\n\n" | 775 | buf += " struct " + fabric_mod_name + "_nacl *nacl;\n\n" |
776 | buf += " nacl = kzalloc(sizeof(struct " + fabric_mod_name + "_nacl), GFP_KERNEL);\n" | 776 | buf += " nacl = kzalloc(sizeof(struct " + fabric_mod_name + "_nacl), GFP_KERNEL);\n" |
777 | buf += " if (!nacl) {\n" | 777 | buf += " if (!nacl) {\n" |
778 | buf += " printk(KERN_ERR \"Unable to alocate struct " + fabric_mod_name + "_nacl\\n\");\n" | 778 | buf += " printk(KERN_ERR \"Unable to allocate struct " + fabric_mod_name + "_nacl\\n\");\n" |
779 | buf += " return NULL;\n" | 779 | buf += " return NULL;\n" |
780 | buf += " }\n\n" | 780 | buf += " }\n\n" |
781 | buf += " return &nacl->se_node_acl;\n" | 781 | buf += " return &nacl->se_node_acl;\n" |
diff --git a/Documentation/trace/events-power.txt b/Documentation/trace/events-power.txt index 96d87b67fe37..cf794af22855 100644 --- a/Documentation/trace/events-power.txt +++ b/Documentation/trace/events-power.txt | |||
@@ -57,7 +57,7 @@ power_end "cpu_id=%lu" | |||
57 | The 'type' parameter takes one of those macros: | 57 | The 'type' parameter takes one of those macros: |
58 | . POWER_NONE = 0, | 58 | . POWER_NONE = 0, |
59 | . POWER_CSTATE = 1, /* C-State */ | 59 | . POWER_CSTATE = 1, /* C-State */ |
60 | . POWER_PSTATE = 2, /* Fequency change or DVFS */ | 60 | . POWER_PSTATE = 2, /* Frequency change or DVFS */ |
61 | 61 | ||
62 | The 'state' parameter is set depending on the type: | 62 | The 'state' parameter is set depending on the type: |
63 | . Target C-state for type=POWER_CSTATE, | 63 | . Target C-state for type=POWER_CSTATE, |
diff --git a/Documentation/usb/mtouchusb.txt b/Documentation/usb/mtouchusb.txt index 86302cd53ed3..a91adb26ea7b 100644 --- a/Documentation/usb/mtouchusb.txt +++ b/Documentation/usb/mtouchusb.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | CHANGES | 1 | CHANGES |
2 | 2 | ||
3 | - 0.3 - Created based off of scanner & INSTALL from the original touchscreen | 3 | - 0.3 - Created based off of scanner & INSTALL from the original touchscreen |
4 | driver on freshmeat (http://freshmeat.net/projects/3mtouchscreendriver) | 4 | driver on freecode (http://freecode.com/projects/3mtouchscreendriver) |
5 | - Amended for linux-2.4.18, then 2.4.19 | 5 | - Amended for linux-2.4.18, then 2.4.19 |
6 | 6 | ||
7 | - 0.5 - Complete rewrite using Linux Input in 2.6.3 | 7 | - 0.5 - Complete rewrite using Linux Input in 2.6.3 |
diff --git a/Documentation/usb/power-management.txt b/Documentation/usb/power-management.txt index 12511c98cc4f..817df299ea07 100644 --- a/Documentation/usb/power-management.txt +++ b/Documentation/usb/power-management.txt | |||
@@ -345,7 +345,7 @@ autosuspend the device. | |||
345 | Drivers need not be concerned about balancing changes to the usage | 345 | Drivers need not be concerned about balancing changes to the usage |
346 | counter; the USB core will undo any remaining "get"s when a driver | 346 | counter; the USB core will undo any remaining "get"s when a driver |
347 | is unbound from its interface. As a corollary, drivers must not call | 347 | is unbound from its interface. As a corollary, drivers must not call |
348 | any of the usb_autopm_* functions after their diconnect() routine has | 348 | any of the usb_autopm_* functions after their disconnect() routine has |
349 | returned. | 349 | returned. |
350 | 350 | ||
351 | Drivers using the async routines are responsible for their own | 351 | Drivers using the async routines are responsible for their own |
diff --git a/Documentation/usb/proc_usb_info.txt b/Documentation/usb/proc_usb_info.txt index afe596d5f201..c9c3f0f5ad7b 100644 --- a/Documentation/usb/proc_usb_info.txt +++ b/Documentation/usb/proc_usb_info.txt | |||
@@ -7,7 +7,7 @@ The usbfs filesystem for USB devices is traditionally mounted at | |||
7 | /proc/bus/usb. It provides the /proc/bus/usb/devices file, as well as | 7 | /proc/bus/usb. It provides the /proc/bus/usb/devices file, as well as |
8 | the /proc/bus/usb/BBB/DDD files. | 8 | the /proc/bus/usb/BBB/DDD files. |
9 | 9 | ||
10 | In many modern systems the usbfs filsystem isn't used at all. Instead | 10 | In many modern systems the usbfs filesystem isn't used at all. Instead |
11 | USB device nodes are created under /dev/usb/ or someplace similar. The | 11 | USB device nodes are created under /dev/usb/ or someplace similar. The |
12 | "devices" file is available in debugfs, typically as | 12 | "devices" file is available in debugfs, typically as |
13 | /sys/kernel/debug/usb/devices. | 13 | /sys/kernel/debug/usb/devices. |
diff --git a/Documentation/video4linux/CARDLIST.cx23885 b/Documentation/video4linux/CARDLIST.cx23885 index 23584d0c6a75..f316d1816fcd 100644 --- a/Documentation/video4linux/CARDLIST.cx23885 +++ b/Documentation/video4linux/CARDLIST.cx23885 | |||
@@ -32,3 +32,4 @@ | |||
32 | 31 -> Leadtek Winfast PxDVR3200 H XC4000 [107d:6f39] | 32 | 31 -> Leadtek Winfast PxDVR3200 H XC4000 [107d:6f39] |
33 | 32 -> MPX-885 | 33 | 32 -> MPX-885 |
34 | 33 -> Mygica X8507 [14f1:8502] | 34 | 33 -> Mygica X8507 [14f1:8502] |
35 | 34 -> TerraTec Cinergy T PCIe Dual [153b:117e] | ||
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88 index eee18e6962b6..fa4b3f947468 100644 --- a/Documentation/video4linux/CARDLIST.cx88 +++ b/Documentation/video4linux/CARDLIST.cx88 | |||
@@ -59,7 +59,7 @@ | |||
59 | 58 -> Pinnacle PCTV HD 800i [11bd:0051] | 59 | 58 -> Pinnacle PCTV HD 800i [11bd:0051] |
60 | 59 -> DViCO FusionHDTV 5 PCI nano [18ac:d530] | 60 | 59 -> DViCO FusionHDTV 5 PCI nano [18ac:d530] |
61 | 60 -> Pinnacle Hybrid PCTV [12ab:1788] | 61 | 60 -> Pinnacle Hybrid PCTV [12ab:1788] |
62 | 61 -> Leadtek TV2000 XP Global [107d:6f18,107d:6618] | 62 | 61 -> Leadtek TV2000 XP Global [107d:6f18,107d:6618,107d:6619] |
63 | 62 -> PowerColor RA330 [14f1:ea3d] | 63 | 62 -> PowerColor RA330 [14f1:ea3d] |
64 | 63 -> Geniatech X8000-MT DVBT [14f1:8852] | 64 | 63 -> Geniatech X8000-MT DVBT [14f1:8852] |
65 | 64 -> DViCO FusionHDTV DVB-T PRO [18ac:db30] | 65 | 64 -> DViCO FusionHDTV DVB-T PRO [18ac:db30] |
@@ -87,3 +87,5 @@ | |||
87 | 86 -> TeVii S464 DVB-S/S2 [d464:9022] | 87 | 86 -> TeVii S464 DVB-S/S2 [d464:9022] |
88 | 87 -> Leadtek WinFast DTV2000 H PLUS [107d:6f42] | 88 | 87 -> Leadtek WinFast DTV2000 H PLUS [107d:6f42] |
89 | 88 -> Leadtek WinFast DTV1800 H (XC4000) [107d:6f38] | 89 | 88 -> Leadtek WinFast DTV1800 H (XC4000) [107d:6f38] |
90 | 89 -> Leadtek TV2000 XP Global (SC4100) [107d:6f36] | ||
91 | 90 -> Leadtek TV2000 XP Global (XC4100) [107d:6f43] | ||
diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx index e7be3ac49ead..d99262dda533 100644 --- a/Documentation/video4linux/CARDLIST.em28xx +++ b/Documentation/video4linux/CARDLIST.em28xx | |||
@@ -7,7 +7,7 @@ | |||
7 | 6 -> Terratec Cinergy 200 USB (em2800) | 7 | 6 -> Terratec Cinergy 200 USB (em2800) |
8 | 7 -> Leadtek Winfast USB II (em2800) [0413:6023] | 8 | 7 -> Leadtek Winfast USB II (em2800) [0413:6023] |
9 | 8 -> Kworld USB2800 (em2800) | 9 | 8 -> Kworld USB2800 (em2800) |
10 | 9 -> Pinnacle Dazzle DVC 90/100/101/107 / Kaiser Baas Video to DVD maker (em2820/em2840) [1b80:e302,1b80:e304,2304:0207,2304:021a] | 10 | 9 -> Pinnacle Dazzle DVC 90/100/101/107 / Kaiser Baas Video to DVD maker (em2820/em2840) [1b80:e302,1b80:e304,2304:0207,2304:021a,093b:a003] |
11 | 10 -> Hauppauge WinTV HVR 900 (em2880) [2040:6500] | 11 | 10 -> Hauppauge WinTV HVR 900 (em2880) [2040:6500] |
12 | 11 -> Terratec Hybrid XS (em2880) | 12 | 11 -> Terratec Hybrid XS (em2880) |
13 | 12 -> Kworld PVR TV 2800 RF (em2820/em2840) | 13 | 12 -> Kworld PVR TV 2800 RF (em2820/em2840) |
@@ -61,7 +61,7 @@ | |||
61 | 61 -> Pixelview PlayTV Box 4 USB 2.0 (em2820/em2840) | 61 | 61 -> Pixelview PlayTV Box 4 USB 2.0 (em2820/em2840) |
62 | 62 -> Gadmei TVR200 (em2820/em2840) | 62 | 62 -> Gadmei TVR200 (em2820/em2840) |
63 | 63 -> Kaiomy TVnPC U2 (em2860) [eb1a:e303] | 63 | 63 -> Kaiomy TVnPC U2 (em2860) [eb1a:e303] |
64 | 64 -> Easy Cap Capture DC-60 (em2860) | 64 | 64 -> Easy Cap Capture DC-60 (em2860) [1b80:e309] |
65 | 65 -> IO-DATA GV-MVP/SZ (em2820/em2840) [04bb:0515] | 65 | 65 -> IO-DATA GV-MVP/SZ (em2820/em2840) [04bb:0515] |
66 | 66 -> Empire dual TV (em2880) | 66 | 66 -> Empire dual TV (em2880) |
67 | 67 -> Terratec Grabby (em2860) [0ccd:0096,0ccd:10AF] | 67 | 67 -> Terratec Grabby (em2860) [0ccd:0096,0ccd:10AF] |
@@ -76,7 +76,11 @@ | |||
76 | 76 -> KWorld PlusTV 340U or UB435-Q (ATSC) (em2870) [1b80:a340] | 76 | 76 -> KWorld PlusTV 340U or UB435-Q (ATSC) (em2870) [1b80:a340] |
77 | 77 -> EM2874 Leadership ISDBT (em2874) | 77 | 77 -> EM2874 Leadership ISDBT (em2874) |
78 | 78 -> PCTV nanoStick T2 290e (em28174) | 78 | 78 -> PCTV nanoStick T2 290e (em28174) |
79 | 79 -> Terratec Cinergy H5 (em2884) [0ccd:10a2,0ccd:10ad] | 79 | 79 -> Terratec Cinergy H5 (em2884) [0ccd:008e,0ccd:00ac,0ccd:10a2,0ccd:10ad] |
80 | 80 -> PCTV DVB-S2 Stick (460e) (em28174) | 80 | 80 -> PCTV DVB-S2 Stick (460e) (em28174) |
81 | 81 -> Hauppauge WinTV HVR 930C (em2884) [2040:1605] | 81 | 81 -> Hauppauge WinTV HVR 930C (em2884) [2040:1605] |
82 | 82 -> Terratec Cinergy HTC Stick (em2884) [0ccd:00b2] | 82 | 82 -> Terratec Cinergy HTC Stick (em2884) [0ccd:00b2] |
83 | 83 -> Honestech Vidbox NW03 (em2860) [eb1a:5006] | ||
84 | 84 -> MaxMedia UB425-TC (em2874) [1b80:e425] | ||
85 | 85 -> PCTV QuatroStick (510e) (em2884) [2304:0242] | ||
86 | 86 -> PCTV QuatroStick nano (520e) (em2884) [2013:0251] | ||
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134 index e7ef38a19859..34f3b330e5f4 100644 --- a/Documentation/video4linux/CARDLIST.saa7134 +++ b/Documentation/video4linux/CARDLIST.saa7134 | |||
@@ -187,3 +187,4 @@ | |||
187 | 186 -> Beholder BeholdTV 501 [5ace:5010] | 187 | 186 -> Beholder BeholdTV 501 [5ace:5010] |
188 | 187 -> Beholder BeholdTV 503 FM [5ace:5030] | 188 | 187 -> Beholder BeholdTV 503 FM [5ace:5030] |
189 | 188 -> Sensoray 811/911 [6000:0811,6000:0911] | 189 | 188 -> Sensoray 811/911 [6000:0811,6000:0911] |
190 | 189 -> Kworld PC150-U [17de:a134] | ||
diff --git a/Documentation/video4linux/CARDLIST.tuner b/Documentation/video4linux/CARDLIST.tuner index 6323b7a20719..c83f6e418879 100644 --- a/Documentation/video4linux/CARDLIST.tuner +++ b/Documentation/video4linux/CARDLIST.tuner | |||
@@ -78,10 +78,11 @@ tuner=77 - TCL tuner MF02GIP-5N-E | |||
78 | tuner=78 - Philips FMD1216MEX MK3 Hybrid Tuner | 78 | tuner=78 - Philips FMD1216MEX MK3 Hybrid Tuner |
79 | tuner=79 - Philips PAL/SECAM multi (FM1216 MK5) | 79 | tuner=79 - Philips PAL/SECAM multi (FM1216 MK5) |
80 | tuner=80 - Philips FQ1216LME MK3 PAL/SECAM w/active loopthrough | 80 | tuner=80 - Philips FQ1216LME MK3 PAL/SECAM w/active loopthrough |
81 | tuner=81 - Xceive 4000 tuner | ||
82 | tuner=81 - Partsnic (Daewoo) PTI-5NF05 | 81 | tuner=81 - Partsnic (Daewoo) PTI-5NF05 |
83 | tuner=82 - Philips CU1216L | 82 | tuner=82 - Philips CU1216L |
84 | tuner=83 - NXP TDA18271 | 83 | tuner=83 - NXP TDA18271 |
85 | tuner=84 - Sony BTF-Pxn01Z | 84 | tuner=84 - Sony BTF-Pxn01Z |
86 | tuner=85 - Philips FQ1236 MK5 | 85 | tuner=85 - Philips FQ1236 MK5 |
87 | tuner=86 - Tena TNF5337 MFD | 86 | tuner=86 - Tena TNF5337 MFD |
87 | tuner=87 - Xceive 4000 tuner | ||
88 | tuner=88 - Xceive 5000C tuner | ||
diff --git a/Documentation/video4linux/fimc.txt b/Documentation/video4linux/fimc.txt new file mode 100644 index 000000000000..eb049708f3e4 --- /dev/null +++ b/Documentation/video4linux/fimc.txt | |||
@@ -0,0 +1,178 @@ | |||
1 | Samsung S5P/EXYNOS4 FIMC driver | ||
2 | |||
3 | Copyright (C) 2012 Samsung Electronics Co., Ltd. | ||
4 | --------------------------------------------------------------------------- | ||
5 | |||
6 | The FIMC (Fully Interactive Mobile Camera) device available in Samsung | ||
7 | SoC Application Processors is an integrated camera host interface, color | ||
8 | space converter, image resizer and rotator. It's also capable of capturing | ||
9 | data from LCD controller (FIMD) through the SoC internal writeback data | ||
10 | path. There are multiple FIMC instances in the SoCs (up to 4), having | ||
11 | slightly different capabilities, like pixel alignment constraints, rotator | ||
12 | availability, LCD writeback support, etc. The driver is located at | ||
13 | drivers/media/video/s5p-fimc directory. | ||
14 | |||
15 | 1. Supported SoCs | ||
16 | ================= | ||
17 | |||
18 | S5PC100 (mem-to-mem only), S5PV210, EXYNOS4210 | ||
19 | |||
20 | 2. Supported features | ||
21 | ===================== | ||
22 | |||
23 | - camera parallel interface capture (ITU-R.BT601/565); | ||
24 | - camera serial interface capture (MIPI-CSI2); | ||
25 | - memory-to-memory processing (color space conversion, scaling, mirror | ||
26 | and rotation); | ||
27 | - dynamic pipeline re-configuration at runtime (re-attachment of any FIMC | ||
28 | instance to any parallel video input or any MIPI-CSI front-end); | ||
29 | - runtime PM and system wide suspend/resume | ||
30 | |||
31 | Not currently supported: | ||
32 | - LCD writeback input | ||
33 | - per frame clock gating (mem-to-mem) | ||
34 | |||
35 | 3. Files partitioning | ||
36 | ===================== | ||
37 | |||
38 | - media device driver | ||
39 | drivers/media/video/s5p-fimc/fimc-mdevice.[ch] | ||
40 | |||
41 | - camera capture video device driver | ||
42 | drivers/media/video/s5p-fimc/fimc-capture.c | ||
43 | |||
44 | - MIPI-CSI2 receiver subdev | ||
45 | drivers/media/video/s5p-fimc/mipi-csis.[ch] | ||
46 | |||
47 | - video post-processor (mem-to-mem) | ||
48 | drivers/media/video/s5p-fimc/fimc-core.c | ||
49 | |||
50 | - common files | ||
51 | drivers/media/video/s5p-fimc/fimc-core.h | ||
52 | drivers/media/video/s5p-fimc/fimc-reg.h | ||
53 | drivers/media/video/s5p-fimc/regs-fimc.h | ||
54 | |||
55 | 4. User space interfaces | ||
56 | ======================== | ||
57 | |||
58 | 4.1. Media device interface | ||
59 | |||
60 | The driver supports Media Controller API as defined at | ||
61 | http://http://linuxtv.org/downloads/v4l-dvb-apis/media_common.html | ||
62 | The media device driver name is "SAMSUNG S5P FIMC". | ||
63 | |||
64 | The purpose of this interface is to allow changing assignment of FIMC instances | ||
65 | to the SoC peripheral camera input at runtime and optionally to control internal | ||
66 | connections of the MIPI-CSIS device(s) to the FIMC entities. | ||
67 | |||
68 | The media device interface allows to configure the SoC for capturing image | ||
69 | data from the sensor through more than one FIMC instance (e.g. for simultaneous | ||
70 | viewfinder and still capture setup). | ||
71 | Reconfiguration is done by enabling/disabling media links created by the driver | ||
72 | during initialization. The internal device topology can be easily discovered | ||
73 | through media entity and links enumeration. | ||
74 | |||
75 | 4.2. Memory-to-memory video node | ||
76 | |||
77 | V4L2 memory-to-memory interface at /dev/video? device node. This is standalone | ||
78 | video device, it has no media pads. However please note the mem-to-mem and | ||
79 | capture video node operation on same FIMC instance is not allowed. The driver | ||
80 | detects such cases but the applications should prevent them to avoid an | ||
81 | undefined behaviour. | ||
82 | |||
83 | 4.3. Capture video node | ||
84 | |||
85 | The driver supports V4L2 Video Capture Interface as defined at: | ||
86 | http://linuxtv.org/downloads/v4l-dvb-apis/devices.html | ||
87 | |||
88 | At the capture and mem-to-mem video nodes only the multi-planar API is | ||
89 | supported. For more details see: | ||
90 | http://linuxtv.org/downloads/v4l-dvb-apis/planar-apis.html | ||
91 | |||
92 | 4.4. Camera capture subdevs | ||
93 | |||
94 | Each FIMC instance exports a sub-device node (/dev/v4l-subdev?), a sub-device | ||
95 | node is also created per each available and enabled at the platform level | ||
96 | MIPI-CSI receiver device (currently up to two). | ||
97 | |||
98 | 4.5. sysfs | ||
99 | |||
100 | In order to enable more precise camera pipeline control through the sub-device | ||
101 | API the driver creates a sysfs entry associated with "s5p-fimc-md" platform | ||
102 | device. The entry path is: /sys/platform/devices/s5p-fimc-md/subdev_conf_mode. | ||
103 | |||
104 | In typical use case there could be a following capture pipeline configuration: | ||
105 | sensor subdev -> mipi-csi subdev -> fimc subdev -> video node | ||
106 | |||
107 | When we configure these devices through sub-device API at user space, the | ||
108 | configuration flow must be from left to right, and the video node is | ||
109 | configured as last one. | ||
110 | When we don't use sub-device user space API the whole configuration of all | ||
111 | devices belonging to the pipeline is done at the video node driver. | ||
112 | The sysfs entry allows to instruct the capture node driver not to configure | ||
113 | the sub-devices (format, crop), to avoid resetting the subdevs' configuration | ||
114 | when the last configuration steps at the video node is performed. | ||
115 | |||
116 | For full sub-device control support (subdevs configured at user space before | ||
117 | starting streaming): | ||
118 | # echo "sub-dev" > /sys/platform/devices/s5p-fimc-md/subdev_conf_mode | ||
119 | |||
120 | For V4L2 video node control only (subdevs configured internally by the host | ||
121 | driver): | ||
122 | # echo "vid-dev" > /sys/platform/devices/s5p-fimc-md/subdev_conf_mode | ||
123 | This is a default option. | ||
124 | |||
125 | 5. Device mapping to video and subdev device nodes | ||
126 | ================================================== | ||
127 | |||
128 | There are associated two video device nodes with each device instance in | ||
129 | hardware - video capture and mem-to-mem and additionally a subdev node for | ||
130 | more precise FIMC capture subsystem control. In addition a separate v4l2 | ||
131 | sub-device node is created per each MIPI-CSIS device. | ||
132 | |||
133 | How to find out which /dev/video? or /dev/v4l-subdev? is assigned to which | ||
134 | device? | ||
135 | |||
136 | You can either grep through the kernel log to find relevant information, i.e. | ||
137 | # dmesg | grep -i fimc | ||
138 | (note that udev, if present, might still have rearranged the video nodes), | ||
139 | |||
140 | or retrieve the information from /dev/media? with help of the media-ctl tool: | ||
141 | # media-ctl -p | ||
142 | |||
143 | 6. Platform support | ||
144 | =================== | ||
145 | |||
146 | The machine code (plat-s5p and arch/arm/mach-*) must select following options | ||
147 | |||
148 | CONFIG_S5P_DEV_FIMC0 mandatory | ||
149 | CONFIG_S5P_DEV_FIMC1 \ | ||
150 | CONFIG_S5P_DEV_FIMC2 | optional | ||
151 | CONFIG_S5P_DEV_FIMC3 | | ||
152 | CONFIG_S5P_SETUP_FIMC / | ||
153 | CONFIG_S5P_SETUP_MIPIPHY \ | ||
154 | CONFIG_S5P_DEV_CSIS0 | optional for MIPI-CSI interface | ||
155 | CONFIG_S5P_DEV_CSIS1 / | ||
156 | |||
157 | Except that, relevant s5p_device_fimc? should be registered in the machine code | ||
158 | in addition to a "s5p-fimc-md" platform device to which the media device driver | ||
159 | is bound. The "s5p-fimc-md" device instance is required even if only mem-to-mem | ||
160 | operation is used. | ||
161 | |||
162 | The description of sensor(s) attached to FIMC/MIPI-CSIS camera inputs should be | ||
163 | passed as the "s5p-fimc-md" device platform_data. The platform data structure | ||
164 | is defined in file include/media/s5p_fimc.h. | ||
165 | |||
166 | 7. Build | ||
167 | ======== | ||
168 | |||
169 | This driver depends on following config options: | ||
170 | PLAT_S5P, | ||
171 | PM_RUNTIME, | ||
172 | I2C, | ||
173 | REGULATOR, | ||
174 | VIDEO_V4L2_SUBDEV_API, | ||
175 | |||
176 | If the driver is built as a loadable kernel module (CONFIG_VIDEO_SAMSUNG_S5P_FIMC=m) | ||
177 | two modules are created (in addition to the core v4l2 modules): s5p-fimc.ko and | ||
178 | optional s5p-csis.ko (MIPI-CSI receiver subdev). | ||
diff --git a/Documentation/video4linux/gspca.txt b/Documentation/video4linux/gspca.txt index f2060f0dc02c..e6c2842407a4 100644 --- a/Documentation/video4linux/gspca.txt +++ b/Documentation/video4linux/gspca.txt | |||
@@ -217,6 +217,7 @@ ov534_9 06f8:3003 Hercules Dualpix HD Weblog | |||
217 | sonixj 06f8:3004 Hercules Classic Silver | 217 | sonixj 06f8:3004 Hercules Classic Silver |
218 | sonixj 06f8:3008 Hercules Deluxe Optical Glass | 218 | sonixj 06f8:3008 Hercules Deluxe Optical Glass |
219 | pac7302 06f8:3009 Hercules Classic Link | 219 | pac7302 06f8:3009 Hercules Classic Link |
220 | pac7302 06f8:301b Hercules Link | ||
220 | nw80x 0728:d001 AVerMedia Camguard | 221 | nw80x 0728:d001 AVerMedia Camguard |
221 | spca508 0733:0110 ViewQuest VQ110 | 222 | spca508 0733:0110 ViewQuest VQ110 |
222 | spca501 0733:0401 Intel Create and Share | 223 | spca501 0733:0401 Intel Create and Share |
diff --git a/Documentation/video4linux/uvcvideo.txt b/Documentation/video4linux/uvcvideo.txt index 848d620dcc5c..35ce19cddcf8 100644 --- a/Documentation/video4linux/uvcvideo.txt +++ b/Documentation/video4linux/uvcvideo.txt | |||
@@ -116,7 +116,7 @@ Description: | |||
116 | A UVC control can be mapped to several V4L2 controls. For instance, | 116 | A UVC control can be mapped to several V4L2 controls. For instance, |
117 | a UVC pan/tilt control could be mapped to separate pan and tilt V4L2 | 117 | a UVC pan/tilt control could be mapped to separate pan and tilt V4L2 |
118 | controls. The UVC control is divided into non overlapping fields using | 118 | controls. The UVC control is divided into non overlapping fields using |
119 | the 'size' and 'offset' fields and are then independantly mapped to | 119 | the 'size' and 'offset' fields and are then independently mapped to |
120 | V4L2 control. | 120 | V4L2 control. |
121 | 121 | ||
122 | For signed integer V4L2 controls the data_type field should be set to | 122 | For signed integer V4L2 controls the data_type field should be set to |
diff --git a/Documentation/virtual/kvm/mmu.txt b/Documentation/virtual/kvm/mmu.txt index 5dc972c09b55..fa5f1dbc6b23 100644 --- a/Documentation/virtual/kvm/mmu.txt +++ b/Documentation/virtual/kvm/mmu.txt | |||
@@ -347,7 +347,7 @@ To instantiate a large spte, four constraints must be satisfied: | |||
347 | 347 | ||
348 | - the spte must point to a large host page | 348 | - the spte must point to a large host page |
349 | - the guest pte must be a large pte of at least equivalent size (if tdp is | 349 | - the guest pte must be a large pte of at least equivalent size (if tdp is |
350 | enabled, there is no guest pte and this condition is satisified) | 350 | enabled, there is no guest pte and this condition is satisfied) |
351 | - if the spte will be writeable, the large page frame may not overlap any | 351 | - if the spte will be writeable, the large page frame may not overlap any |
352 | write-protected pages | 352 | write-protected pages |
353 | - the guest page must be wholly contained by a single memory slot | 353 | - the guest page must be wholly contained by a single memory slot |
@@ -356,7 +356,7 @@ To check the last two conditions, the mmu maintains a ->write_count set of | |||
356 | arrays for each memory slot and large page size. Every write protected page | 356 | arrays for each memory slot and large page size. Every write protected page |
357 | causes its write_count to be incremented, thus preventing instantiation of | 357 | causes its write_count to be incremented, thus preventing instantiation of |
358 | a large spte. The frames at the end of an unaligned memory slot have | 358 | a large spte. The frames at the end of an unaligned memory slot have |
359 | artificically inflated ->write_counts so they can never be instantiated. | 359 | artificially inflated ->write_counts so they can never be instantiated. |
360 | 360 | ||
361 | Further reading | 361 | Further reading |
362 | =============== | 362 | =============== |
diff --git a/Documentation/virtual/virtio-spec.txt b/Documentation/virtual/virtio-spec.txt index a350ae135b8c..da094737e2f8 100644 --- a/Documentation/virtual/virtio-spec.txt +++ b/Documentation/virtual/virtio-spec.txt | |||
@@ -1403,7 +1403,7 @@ segmentation, if both guests are amenable. | |||
1403 | 1403 | ||
1404 | Packets are transmitted by placing them in the transmitq, and | 1404 | Packets are transmitted by placing them in the transmitq, and |
1405 | buffers for incoming packets are placed in the receiveq. In each | 1405 | buffers for incoming packets are placed in the receiveq. In each |
1406 | case, the packet itself is preceeded by a header: | 1406 | case, the packet itself is preceded by a header: |
1407 | 1407 | ||
1408 | struct virtio_net_hdr { | 1408 | struct virtio_net_hdr { |
1409 | 1409 | ||
@@ -1642,7 +1642,7 @@ struct virtio_net_ctrl_mac { | |||
1642 | 1642 | ||
1643 | The device can filter incoming packets by any number of | 1643 | The device can filter incoming packets by any number of |
1644 | destination MAC addresses.[footnote: | 1644 | destination MAC addresses.[footnote: |
1645 | Since there are no guarentees, it can use a hash filter | 1645 | Since there are no guarantees, it can use a hash filter |
1646 | orsilently switch to allmulti or promiscuous mode if it is given | 1646 | orsilently switch to allmulti or promiscuous mode if it is given |
1647 | too many addresses. | 1647 | too many addresses. |
1648 | ] This table is set using the class VIRTIO_NET_CTRL_MAC and the | 1648 | ] This table is set using the class VIRTIO_NET_CTRL_MAC and the |
@@ -1805,7 +1805,7 @@ the FLUSH and FLUSH_OUT types are equivalent, the device does not | |||
1805 | distinguish between them | 1805 | distinguish between them |
1806 | ]). If the device has VIRTIO_BLK_F_BARRIER feature the high bit | 1806 | ]). If the device has VIRTIO_BLK_F_BARRIER feature the high bit |
1807 | (VIRTIO_BLK_T_BARRIER) indicates that this request acts as a | 1807 | (VIRTIO_BLK_T_BARRIER) indicates that this request acts as a |
1808 | barrier and that all preceeding requests must be complete before | 1808 | barrier and that all preceding requests must be complete before |
1809 | this one, and all following requests must not be started until | 1809 | this one, and all following requests must not be started until |
1810 | this is complete. Note that a barrier does not flush caches in | 1810 | this is complete. Note that a barrier does not flush caches in |
1811 | the underlying backend device in host, and thus does not serve as | 1811 | the underlying backend device in host, and thus does not serve as |
@@ -2118,7 +2118,7 @@ This is historical, and independent of the guest page size | |||
2118 | 2118 | ||
2119 | Otherwise, the guest may begin to re-use pages previously given | 2119 | Otherwise, the guest may begin to re-use pages previously given |
2120 | to the balloon before the device has acknowledged their | 2120 | to the balloon before the device has acknowledged their |
2121 | withdrawl. [footnote: | 2121 | withdrawal. [footnote: |
2122 | In this case, deflation advice is merely a courtesy | 2122 | In this case, deflation advice is merely a courtesy |
2123 | ] | 2123 | ] |
2124 | 2124 | ||
diff --git a/Documentation/vm/cleancache.txt b/Documentation/vm/cleancache.txt index 36c367c73084..142fbb0f325a 100644 --- a/Documentation/vm/cleancache.txt +++ b/Documentation/vm/cleancache.txt | |||
@@ -46,10 +46,11 @@ a negative return value indicates failure. A "put_page" will copy a | |||
46 | the pool id, a file key, and a page index into the file. (The combination | 46 | the pool id, a file key, and a page index into the file. (The combination |
47 | of a pool id, a file key, and an index is sometimes called a "handle".) | 47 | of a pool id, a file key, and an index is sometimes called a "handle".) |
48 | A "get_page" will copy the page, if found, from cleancache into kernel memory. | 48 | A "get_page" will copy the page, if found, from cleancache into kernel memory. |
49 | A "flush_page" will ensure the page no longer is present in cleancache; | 49 | An "invalidate_page" will ensure the page no longer is present in cleancache; |
50 | a "flush_inode" will flush all pages associated with the specified file; | 50 | an "invalidate_inode" will invalidate all pages associated with the specified |
51 | and, when a filesystem is unmounted, a "flush_fs" will flush all pages in | 51 | file; and, when a filesystem is unmounted, an "invalidate_fs" will invalidate |
52 | all files specified by the given pool id and also surrender the pool id. | 52 | all pages in all files specified by the given pool id and also surrender |
53 | the pool id. | ||
53 | 54 | ||
54 | An "init_shared_fs", like init_fs, obtains a pool id but tells cleancache | 55 | An "init_shared_fs", like init_fs, obtains a pool id but tells cleancache |
55 | to treat the pool as shared using a 128-bit UUID as a key. On systems | 56 | to treat the pool as shared using a 128-bit UUID as a key. On systems |
@@ -62,12 +63,12 @@ of the kernel (e.g. by "tools" that control cleancache). Or a | |||
62 | cleancache implementation can simply disable shared_init by always | 63 | cleancache implementation can simply disable shared_init by always |
63 | returning a negative value. | 64 | returning a negative value. |
64 | 65 | ||
65 | If a get_page is successful on a non-shared pool, the page is flushed (thus | 66 | If a get_page is successful on a non-shared pool, the page is invalidated |
66 | making cleancache an "exclusive" cache). On a shared pool, the page | 67 | (thus making cleancache an "exclusive" cache). On a shared pool, the page |
67 | is NOT flushed on a successful get_page so that it remains accessible to | 68 | is NOT invalidated on a successful get_page so that it remains accessible to |
68 | other sharers. The kernel is responsible for ensuring coherency between | 69 | other sharers. The kernel is responsible for ensuring coherency between |
69 | cleancache (shared or not), the page cache, and the filesystem, using | 70 | cleancache (shared or not), the page cache, and the filesystem, using |
70 | cleancache flush operations as required. | 71 | cleancache invalidate operations as required. |
71 | 72 | ||
72 | Note that cleancache must enforce put-put-get coherency and get-get | 73 | Note that cleancache must enforce put-put-get coherency and get-get |
73 | coherency. For the former, if two puts are made to the same handle but | 74 | coherency. For the former, if two puts are made to the same handle but |
@@ -77,22 +78,22 @@ if a get for a given handle fails, subsequent gets for that handle will | |||
77 | never succeed unless preceded by a successful put with that handle. | 78 | never succeed unless preceded by a successful put with that handle. |
78 | 79 | ||
79 | Last, cleancache provides no SMP serialization guarantees; if two | 80 | Last, cleancache provides no SMP serialization guarantees; if two |
80 | different Linux threads are simultaneously putting and flushing a page | 81 | different Linux threads are simultaneously putting and invalidating a page |
81 | with the same handle, the results are indeterminate. Callers must | 82 | with the same handle, the results are indeterminate. Callers must |
82 | lock the page to ensure serial behavior. | 83 | lock the page to ensure serial behavior. |
83 | 84 | ||
84 | CLEANCACHE PERFORMANCE METRICS | 85 | CLEANCACHE PERFORMANCE METRICS |
85 | 86 | ||
86 | Cleancache monitoring is done by sysfs files in the | 87 | If properly configured, monitoring of cleancache is done via debugfs in |
87 | /sys/kernel/mm/cleancache directory. The effectiveness of cleancache | 88 | the /sys/kernel/debug/mm/cleancache directory. The effectiveness of cleancache |
88 | can be measured (across all filesystems) with: | 89 | can be measured (across all filesystems) with: |
89 | 90 | ||
90 | succ_gets - number of gets that were successful | 91 | succ_gets - number of gets that were successful |
91 | failed_gets - number of gets that failed | 92 | failed_gets - number of gets that failed |
92 | puts - number of puts attempted (all "succeed") | 93 | puts - number of puts attempted (all "succeed") |
93 | flushes - number of flushes attempted | 94 | invalidates - number of invalidates attempted |
94 | 95 | ||
95 | A backend implementatation may provide additional metrics. | 96 | A backend implementation may provide additional metrics. |
96 | 97 | ||
97 | FAQ | 98 | FAQ |
98 | 99 | ||
@@ -143,7 +144,7 @@ systems. | |||
143 | 144 | ||
144 | The core hooks for cleancache in VFS are in most cases a single line | 145 | The core hooks for cleancache in VFS are in most cases a single line |
145 | and the minimum set are placed precisely where needed to maintain | 146 | and the minimum set are placed precisely where needed to maintain |
146 | coherency (via cleancache_flush operations) between cleancache, | 147 | coherency (via cleancache_invalidate operations) between cleancache, |
147 | the page cache, and disk. All hooks compile into nothingness if | 148 | the page cache, and disk. All hooks compile into nothingness if |
148 | cleancache is config'ed off and turn into a function-pointer- | 149 | cleancache is config'ed off and turn into a function-pointer- |
149 | compare-to-NULL if config'ed on but no backend claims the ops | 150 | compare-to-NULL if config'ed on but no backend claims the ops |
@@ -184,15 +185,15 @@ or for real kernel-addressable RAM, it makes perfect sense for | |||
184 | transcendent memory. | 185 | transcendent memory. |
185 | 186 | ||
186 | 4) Why is non-shared cleancache "exclusive"? And where is the | 187 | 4) Why is non-shared cleancache "exclusive"? And where is the |
187 | page "flushed" after a "get"? (Minchan Kim) | 188 | page "invalidated" after a "get"? (Minchan Kim) |
188 | 189 | ||
189 | The main reason is to free up space in transcendent memory and | 190 | The main reason is to free up space in transcendent memory and |
190 | to avoid unnecessary cleancache_flush calls. If you want inclusive, | 191 | to avoid unnecessary cleancache_invalidate calls. If you want inclusive, |
191 | the page can be "put" immediately following the "get". If | 192 | the page can be "put" immediately following the "get". If |
192 | put-after-get for inclusive becomes common, the interface could | 193 | put-after-get for inclusive becomes common, the interface could |
193 | be easily extended to add a "get_no_flush" call. | 194 | be easily extended to add a "get_no_invalidate" call. |
194 | 195 | ||
195 | The flush is done by the cleancache backend implementation. | 196 | The invalidate is done by the cleancache backend implementation. |
196 | 197 | ||
197 | 5) What's the performance impact? | 198 | 5) What's the performance impact? |
198 | 199 | ||
@@ -222,7 +223,7 @@ Some points for a filesystem to consider: | |||
222 | as tmpfs should not enable cleancache) | 223 | as tmpfs should not enable cleancache) |
223 | - To ensure coherency/correctness, the FS must ensure that all | 224 | - To ensure coherency/correctness, the FS must ensure that all |
224 | file removal or truncation operations either go through VFS or | 225 | file removal or truncation operations either go through VFS or |
225 | add hooks to do the equivalent cleancache "flush" operations | 226 | add hooks to do the equivalent cleancache "invalidate" operations |
226 | - To ensure coherency/correctness, either inode numbers must | 227 | - To ensure coherency/correctness, either inode numbers must |
227 | be unique across the lifetime of the on-disk file OR the | 228 | be unique across the lifetime of the on-disk file OR the |
228 | FS must provide an "encode_fh" function. | 229 | FS must provide an "encode_fh" function. |
@@ -243,11 +244,11 @@ If cleancache would use the inode virtual address instead of | |||
243 | inode/filehandle, the pool id could be eliminated. But, this | 244 | inode/filehandle, the pool id could be eliminated. But, this |
244 | won't work because cleancache retains pagecache data pages | 245 | won't work because cleancache retains pagecache data pages |
245 | persistently even when the inode has been pruned from the | 246 | persistently even when the inode has been pruned from the |
246 | inode unused list, and only flushes the data page if the file | 247 | inode unused list, and only invalidates the data page if the file |
247 | gets removed/truncated. So if cleancache used the inode kva, | 248 | gets removed/truncated. So if cleancache used the inode kva, |
248 | there would be potential coherency issues if/when the inode | 249 | there would be potential coherency issues if/when the inode |
249 | kva is reused for a different file. Alternately, if cleancache | 250 | kva is reused for a different file. Alternately, if cleancache |
250 | flushed the pages when the inode kva was freed, much of the value | 251 | invalidated the pages when the inode kva was freed, much of the value |
251 | of cleancache would be lost because the cache of pages in cleanache | 252 | of cleancache would be lost because the cache of pages in cleanache |
252 | is potentially much larger than the kernel pagecache and is most | 253 | is potentially much larger than the kernel pagecache and is most |
253 | useful if the pages survive inode cache removal. | 254 | useful if the pages survive inode cache removal. |
diff --git a/Documentation/vm/page-types.c b/Documentation/vm/page-types.c index 7445caa26d05..0b13f02d4059 100644 --- a/Documentation/vm/page-types.c +++ b/Documentation/vm/page-types.c | |||
@@ -98,6 +98,7 @@ | |||
98 | #define KPF_HWPOISON 19 | 98 | #define KPF_HWPOISON 19 |
99 | #define KPF_NOPAGE 20 | 99 | #define KPF_NOPAGE 20 |
100 | #define KPF_KSM 21 | 100 | #define KPF_KSM 21 |
101 | #define KPF_THP 22 | ||
101 | 102 | ||
102 | /* [32-] kernel hacking assistances */ | 103 | /* [32-] kernel hacking assistances */ |
103 | #define KPF_RESERVED 32 | 104 | #define KPF_RESERVED 32 |
@@ -147,6 +148,7 @@ static const char *page_flag_names[] = { | |||
147 | [KPF_HWPOISON] = "X:hwpoison", | 148 | [KPF_HWPOISON] = "X:hwpoison", |
148 | [KPF_NOPAGE] = "n:nopage", | 149 | [KPF_NOPAGE] = "n:nopage", |
149 | [KPF_KSM] = "x:ksm", | 150 | [KPF_KSM] = "x:ksm", |
151 | [KPF_THP] = "t:thp", | ||
150 | 152 | ||
151 | [KPF_RESERVED] = "r:reserved", | 153 | [KPF_RESERVED] = "r:reserved", |
152 | [KPF_MLOCKED] = "m:mlocked", | 154 | [KPF_MLOCKED] = "m:mlocked", |
diff --git a/Documentation/vm/pagemap.txt b/Documentation/vm/pagemap.txt index df09b9650a81..4600cbe3d6be 100644 --- a/Documentation/vm/pagemap.txt +++ b/Documentation/vm/pagemap.txt | |||
@@ -60,6 +60,7 @@ There are three components to pagemap: | |||
60 | 19. HWPOISON | 60 | 19. HWPOISON |
61 | 20. NOPAGE | 61 | 20. NOPAGE |
62 | 21. KSM | 62 | 21. KSM |
63 | 22. THP | ||
63 | 64 | ||
64 | Short descriptions to the page flags: | 65 | Short descriptions to the page flags: |
65 | 66 | ||
@@ -97,6 +98,9 @@ Short descriptions to the page flags: | |||
97 | 21. KSM | 98 | 21. KSM |
98 | identical memory pages dynamically shared between one or more processes | 99 | identical memory pages dynamically shared between one or more processes |
99 | 100 | ||
101 | 22. THP | ||
102 | contiguous pages which construct transparent hugepages | ||
103 | |||
100 | [IO related page flags] | 104 | [IO related page flags] |
101 | 1. ERROR IO error occurred | 105 | 1. ERROR IO error occurred |
102 | 3. UPTODATE page has up-to-date data | 106 | 3. UPTODATE page has up-to-date data |
diff --git a/Documentation/vm/unevictable-lru.txt b/Documentation/vm/unevictable-lru.txt index 97bae3c576c2..fa206cccf89f 100644 --- a/Documentation/vm/unevictable-lru.txt +++ b/Documentation/vm/unevictable-lru.txt | |||
@@ -538,7 +538,7 @@ different reverse map mechanisms. | |||
538 | process because mlocked pages are migratable. However, for reclaim, if | 538 | process because mlocked pages are migratable. However, for reclaim, if |
539 | the page is mapped into a VM_LOCKED VMA, the scan stops. | 539 | the page is mapped into a VM_LOCKED VMA, the scan stops. |
540 | 540 | ||
541 | try_to_unmap_anon() attempts to acquire in read mode the mmap semphore of | 541 | try_to_unmap_anon() attempts to acquire in read mode the mmap semaphore of |
542 | the mm_struct to which the VMA belongs. If this is successful, it will | 542 | the mm_struct to which the VMA belongs. If this is successful, it will |
543 | mlock the page via mlock_vma_page() - we wouldn't have gotten to | 543 | mlock the page via mlock_vma_page() - we wouldn't have gotten to |
544 | try_to_unmap_anon() if the page were already mlocked - and will return | 544 | try_to_unmap_anon() if the page were already mlocked - and will return |
@@ -619,11 +619,11 @@ all PTEs from the page. For this purpose, the unevictable/mlock infrastructure | |||
619 | introduced a variant of try_to_unmap() called try_to_munlock(). | 619 | introduced a variant of try_to_unmap() called try_to_munlock(). |
620 | 620 | ||
621 | try_to_munlock() calls the same functions as try_to_unmap() for anonymous and | 621 | try_to_munlock() calls the same functions as try_to_unmap() for anonymous and |
622 | mapped file pages with an additional argument specifing unlock versus unmap | 622 | mapped file pages with an additional argument specifying unlock versus unmap |
623 | processing. Again, these functions walk the respective reverse maps looking | 623 | processing. Again, these functions walk the respective reverse maps looking |
624 | for VM_LOCKED VMAs. When such a VMA is found for anonymous pages and file | 624 | for VM_LOCKED VMAs. When such a VMA is found for anonymous pages and file |
625 | pages mapped in linear VMAs, as in the try_to_unmap() case, the functions | 625 | pages mapped in linear VMAs, as in the try_to_unmap() case, the functions |
626 | attempt to acquire the associated mmap semphore, mlock the page via | 626 | attempt to acquire the associated mmap semaphore, mlock the page via |
627 | mlock_vma_page() and return SWAP_MLOCK. This effectively undoes the | 627 | mlock_vma_page() and return SWAP_MLOCK. This effectively undoes the |
628 | pre-clearing of the page's PG_mlocked done by munlock_vma_page. | 628 | pre-clearing of the page's PG_mlocked done by munlock_vma_page. |
629 | 629 | ||
@@ -641,7 +641,7 @@ with it - the usual fallback position. | |||
641 | Note that try_to_munlock()'s reverse map walk must visit every VMA in a page's | 641 | Note that try_to_munlock()'s reverse map walk must visit every VMA in a page's |
642 | reverse map to determine that a page is NOT mapped into any VM_LOCKED VMA. | 642 | reverse map to determine that a page is NOT mapped into any VM_LOCKED VMA. |
643 | However, the scan can terminate when it encounters a VM_LOCKED VMA and can | 643 | However, the scan can terminate when it encounters a VM_LOCKED VMA and can |
644 | successfully acquire the VMA's mmap semphore for read and mlock the page. | 644 | successfully acquire the VMA's mmap semaphore for read and mlock the page. |
645 | Although try_to_munlock() might be called a great many times when munlocking a | 645 | Although try_to_munlock() might be called a great many times when munlocking a |
646 | large region or tearing down a large address space that has been mlocked via | 646 | large region or tearing down a large address space that has been mlocked via |
647 | mlockall(), overall this is a fairly rare event. | 647 | mlockall(), overall this is a fairly rare event. |
diff --git a/Documentation/watchdog/watchdog-kernel-api.txt b/Documentation/watchdog/watchdog-kernel-api.txt index 4b93c28e35c6..9e162465b0cf 100644 --- a/Documentation/watchdog/watchdog-kernel-api.txt +++ b/Documentation/watchdog/watchdog-kernel-api.txt | |||
@@ -167,4 +167,4 @@ driver specific data to and a pointer to the data itself. | |||
167 | 167 | ||
168 | The watchdog_get_drvdata function allows you to retrieve driver specific data. | 168 | The watchdog_get_drvdata function allows you to retrieve driver specific data. |
169 | The argument of this function is the watchdog device where you want to retrieve | 169 | The argument of this function is the watchdog device where you want to retrieve |
170 | data from. The function retruns the pointer to the driver specific data. | 170 | data from. The function returns the pointer to the driver specific data. |
diff --git a/Documentation/zh_CN/HOWTO b/Documentation/zh_CN/HOWTO index faf976c0c731..7fba5aab9ef9 100644 --- a/Documentation/zh_CN/HOWTO +++ b/Documentation/zh_CN/HOWTO | |||
@@ -316,7 +316,7 @@ linux-kernel邮件列表中提供反馈,告诉大家你遇到了问题还是 | |||
316 | git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git | 316 | git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git |
317 | 317 | ||
318 | 使用quilt管理的补丁集: | 318 | 使用quilt管理的补丁集: |
319 | - USB, PCI, 驱动程序核心和I2C, Greg Kroah-Hartman <gregkh@suse.de> | 319 | - USB, PCI, 驱动程序核心和I2C, Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
320 | kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ | 320 | kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ |
321 | - x86-64, 部分i386, Andi Kleen <ak@suse.de> | 321 | - x86-64, 部分i386, Andi Kleen <ak@suse.de> |
322 | ftp.firstfloor.org:/pub/ak/x86_64/quilt/ | 322 | ftp.firstfloor.org:/pub/ak/x86_64/quilt/ |
diff --git a/Documentation/zh_CN/magic-number.txt b/Documentation/zh_CN/magic-number.txt index c278f412dc65..f606ba8598cf 100644 --- a/Documentation/zh_CN/magic-number.txt +++ b/Documentation/zh_CN/magic-number.txt | |||
@@ -89,7 +89,7 @@ TTY_DRIVER_MAGIC 0x5402 tty_driver include/linux/tty_driver.h | |||
89 | MGSLPC_MAGIC 0x5402 mgslpc_info drivers/char/pcmcia/synclink_cs.c | 89 | MGSLPC_MAGIC 0x5402 mgslpc_info drivers/char/pcmcia/synclink_cs.c |
90 | TTY_LDISC_MAGIC 0x5403 tty_ldisc include/linux/tty_ldisc.h | 90 | TTY_LDISC_MAGIC 0x5403 tty_ldisc include/linux/tty_ldisc.h |
91 | USB_SERIAL_MAGIC 0x6702 usb_serial drivers/usb/serial/usb-serial.h | 91 | USB_SERIAL_MAGIC 0x6702 usb_serial drivers/usb/serial/usb-serial.h |
92 | FULL_DUPLEX_MAGIC 0x6969 drivers/net/tulip/de2104x.c | 92 | FULL_DUPLEX_MAGIC 0x6969 drivers/net/ethernet/dec/tulip/de2104x.c |
93 | USB_BLUETOOTH_MAGIC 0x6d02 usb_bluetooth drivers/usb/class/bluetty.c | 93 | USB_BLUETOOTH_MAGIC 0x6d02 usb_bluetooth drivers/usb/class/bluetty.c |
94 | RFCOMM_TTY_MAGIC 0x6d02 net/bluetooth/rfcomm/tty.c | 94 | RFCOMM_TTY_MAGIC 0x6d02 net/bluetooth/rfcomm/tty.c |
95 | USB_SERIAL_PORT_MAGIC 0x7301 usb_serial_port drivers/usb/serial/usb-serial.h | 95 | USB_SERIAL_PORT_MAGIC 0x7301 usb_serial_port drivers/usb/serial/usb-serial.h |