summaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/DocBook/media/v4l/compat.xml24
-rw-r--r--Documentation/DocBook/media/v4l/func-poll.xml35
-rw-r--r--Documentation/DocBook/media/v4l/v4l2.xml11
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml2
-rw-r--r--Documentation/cgroups/cpusets.txt6
-rw-r--r--Documentation/devicetree/bindings/staging/imx-drm/ldb.txt15
-rw-r--r--Documentation/devicetree/of_selftest.txt211
-rw-r--r--Documentation/networking/filter.txt6
8 files changed, 290 insertions, 20 deletions
diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml
index eee6f0f4aa43..3a626d1b8f2e 100644
--- a/Documentation/DocBook/media/v4l/compat.xml
+++ b/Documentation/DocBook/media/v4l/compat.xml
@@ -2545,6 +2545,30 @@ fields changed from _s32 to _u32.
2545 </orderedlist> 2545 </orderedlist>
2546 </section> 2546 </section>
2547 2547
2548 <section>
2549 <title>V4L2 in Linux 3.16</title>
2550 <orderedlist>
2551 <listitem>
2552 <para>Added event V4L2_EVENT_SOURCE_CHANGE.
2553 </para>
2554 </listitem>
2555 </orderedlist>
2556 </section>
2557
2558 <section>
2559 <title>V4L2 in Linux 3.17</title>
2560 <orderedlist>
2561 <listitem>
2562 <para>Extended &v4l2-pix-format;. Added format flags.
2563 </para>
2564 </listitem>
2565 <listitem>
2566 <para>Added compound control types and &VIDIOC-QUERY-EXT-CTRL;.
2567 </para>
2568 </listitem>
2569 </orderedlist>
2570 </section>
2571
2548 <section id="other"> 2572 <section id="other">
2549 <title>Relation of V4L2 to other Linux multimedia APIs</title> 2573 <title>Relation of V4L2 to other Linux multimedia APIs</title>
2550 2574
diff --git a/Documentation/DocBook/media/v4l/func-poll.xml b/Documentation/DocBook/media/v4l/func-poll.xml
index 85cad8bff5ba..4c73f115219b 100644
--- a/Documentation/DocBook/media/v4l/func-poll.xml
+++ b/Documentation/DocBook/media/v4l/func-poll.xml
@@ -29,9 +29,12 @@ can suspend execution until the driver has captured data or is ready
29to accept data for output.</para> 29to accept data for output.</para>
30 30
31 <para>When streaming I/O has been negotiated this function waits 31 <para>When streaming I/O has been negotiated this function waits
32until a buffer has been filled or displayed and can be dequeued with 32until a buffer has been filled by the capture device and can be dequeued
33the &VIDIOC-DQBUF; ioctl. When buffers are already in the outgoing 33with the &VIDIOC-DQBUF; ioctl. For output devices this function waits
34queue of the driver the function returns immediately.</para> 34until the device is ready to accept a new buffer to be queued up with
35the &VIDIOC-QBUF; ioctl for display. When buffers are already in the outgoing
36queue of the driver (capture) or the incoming queue isn't full (display)
37the function returns immediately.</para>
35 38
36 <para>On success <function>poll()</function> returns the number of 39 <para>On success <function>poll()</function> returns the number of
37file descriptors that have been selected (that is, file descriptors 40file descriptors that have been selected (that is, file descriptors
@@ -44,10 +47,22 @@ Capture devices set the <constant>POLLIN</constant> and
44flags. When the function timed out it returns a value of zero, on 47flags. When the function timed out it returns a value of zero, on
45failure it returns <returnvalue>-1</returnvalue> and the 48failure it returns <returnvalue>-1</returnvalue> and the
46<varname>errno</varname> variable is set appropriately. When the 49<varname>errno</varname> variable is set appropriately. When the
47application did not call &VIDIOC-QBUF; or &VIDIOC-STREAMON; yet the 50application did not call &VIDIOC-STREAMON; the
48<function>poll()</function> function succeeds, but sets the 51<function>poll()</function> function succeeds, but sets the
49<constant>POLLERR</constant> flag in the 52<constant>POLLERR</constant> flag in the
50<structfield>revents</structfield> field.</para> 53<structfield>revents</structfield> field. When the
54application has called &VIDIOC-STREAMON; for a capture device but hasn't
55yet called &VIDIOC-QBUF;, the <function>poll()</function> function
56succeeds and sets the <constant>POLLERR</constant> flag in the
57<structfield>revents</structfield> field. For output devices this
58same situation will cause <function>poll()</function> to succeed
59as well, but it sets the <constant>POLLOUT</constant> and
60<constant>POLLWRNORM</constant> flags in the <structfield>revents</structfield>
61field.</para>
62
63 <para>If an event occurred (see &VIDIOC-DQEVENT;) then
64<constant>POLLPRI</constant> will be set in the <structfield>revents</structfield>
65field and <function>poll()</function> will return.</para>
51 66
52 <para>When use of the <function>read()</function> function has 67 <para>When use of the <function>read()</function> function has
53been negotiated and the driver does not capture yet, the 68been negotiated and the driver does not capture yet, the
@@ -58,10 +73,18 @@ continuously (as opposed to, for example, still images) the function
58may return immediately.</para> 73may return immediately.</para>
59 74
60 <para>When use of the <function>write()</function> function has 75 <para>When use of the <function>write()</function> function has
61been negotiated the <function>poll</function> function just waits 76been negotiated and the driver does not stream yet, the
77<function>poll</function> function starts streaming. When that fails
78it returns a <constant>POLLERR</constant> as above. Otherwise it waits
62until the driver is ready for a non-blocking 79until the driver is ready for a non-blocking
63<function>write()</function> call.</para> 80<function>write()</function> call.</para>
64 81
82 <para>If the caller is only interested in events (just
83<constant>POLLPRI</constant> is set in the <structfield>events</structfield>
84field), then <function>poll()</function> will <emphasis>not</emphasis>
85start streaming if the driver does not stream yet. This makes it
86possible to just poll for events and not for buffers.</para>
87
65 <para>All drivers implementing the <function>read()</function> or 88 <para>All drivers implementing the <function>read()</function> or
66<function>write()</function> function or streaming I/O must also 89<function>write()</function> function or streaming I/O must also
67support the <function>poll()</function> function.</para> 90support the <function>poll()</function> function.</para>
diff --git a/Documentation/DocBook/media/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml
index f2f81f06a17b..7cfe618f754d 100644
--- a/Documentation/DocBook/media/v4l/v4l2.xml
+++ b/Documentation/DocBook/media/v4l/v4l2.xml
@@ -152,10 +152,11 @@ structs, ioctls) must be noted in more detail in the history chapter
152applications. --> 152applications. -->
153 153
154 <revision> 154 <revision>
155 <revnumber>3.16</revnumber> 155 <revnumber>3.17</revnumber>
156 <date>2014-05-27</date> 156 <date>2014-08-04</date>
157 <authorinitials>lp</authorinitials> 157 <authorinitials>lp, hv</authorinitials>
158 <revremark>Extended &v4l2-pix-format;. Added format flags. 158 <revremark>Extended &v4l2-pix-format;. Added format flags. Added compound control types
159and VIDIOC_QUERY_EXT_CTRL.
159 </revremark> 160 </revremark>
160 </revision> 161 </revision>
161 162
@@ -538,7 +539,7 @@ and discussions on the V4L mailing list.</revremark>
538</partinfo> 539</partinfo>
539 540
540<title>Video for Linux Two API Specification</title> 541<title>Video for Linux Two API Specification</title>
541 <subtitle>Revision 3.14</subtitle> 542 <subtitle>Revision 3.17</subtitle>
542 543
543 <chapter id="common"> 544 <chapter id="common">
544 &sub-common; 545 &sub-common;
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml
index 1ba9e999af3f..c62a7360719b 100644
--- a/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml
@@ -119,7 +119,7 @@
119 </row> 119 </row>
120 <row> 120 <row>
121 <entry>&v4l2-rect;</entry> 121 <entry>&v4l2-rect;</entry>
122 <entry><structfield>rect</structfield></entry> 122 <entry><structfield>r</structfield></entry>
123 <entry>Selection rectangle, in pixels.</entry> 123 <entry>Selection rectangle, in pixels.</entry>
124 </row> 124 </row>
125 <row> 125 <row>
diff --git a/Documentation/cgroups/cpusets.txt b/Documentation/cgroups/cpusets.txt
index 7740038d82bc..3c94ff3f9693 100644
--- a/Documentation/cgroups/cpusets.txt
+++ b/Documentation/cgroups/cpusets.txt
@@ -345,14 +345,14 @@ the named feature on.
345The implementation is simple. 345The implementation is simple.
346 346
347Setting the flag 'cpuset.memory_spread_page' turns on a per-process flag 347Setting the flag 'cpuset.memory_spread_page' turns on a per-process flag
348PF_SPREAD_PAGE for each task that is in that cpuset or subsequently 348PFA_SPREAD_PAGE for each task that is in that cpuset or subsequently
349joins that cpuset. The page allocation calls for the page cache 349joins that cpuset. The page allocation calls for the page cache
350is modified to perform an inline check for this PF_SPREAD_PAGE task 350is modified to perform an inline check for this PFA_SPREAD_PAGE task
351flag, and if set, a call to a new routine cpuset_mem_spread_node() 351flag, and if set, a call to a new routine cpuset_mem_spread_node()
352returns the node to prefer for the allocation. 352returns the node to prefer for the allocation.
353 353
354Similarly, setting 'cpuset.memory_spread_slab' turns on the flag 354Similarly, setting 'cpuset.memory_spread_slab' turns on the flag
355PF_SPREAD_SLAB, and appropriately marked slab caches will allocate 355PFA_SPREAD_SLAB, and appropriately marked slab caches will allocate
356pages from the node returned by cpuset_mem_spread_node(). 356pages from the node returned by cpuset_mem_spread_node().
357 357
358The cpuset_mem_spread_node() routine is also simple. It uses the 358The cpuset_mem_spread_node() routine is also simple. It uses the
diff --git a/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt b/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt
index 578a1fca366e..443bcb6134d5 100644
--- a/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt
+++ b/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt
@@ -56,6 +56,9 @@ Required properties:
56 - fsl,data-width : should be <18> or <24> 56 - fsl,data-width : should be <18> or <24>
57 - port: A port node with endpoint definitions as defined in 57 - port: A port node with endpoint definitions as defined in
58 Documentation/devicetree/bindings/media/video-interfaces.txt. 58 Documentation/devicetree/bindings/media/video-interfaces.txt.
59 On i.MX5, the internal two-input-multiplexer is used.
60 Due to hardware limitations, only one port (port@[0,1])
61 can be used for each channel (lvds-channel@[0,1], respectively)
59 On i.MX6, there should be four ports (port@[0-3]) that correspond 62 On i.MX6, there should be four ports (port@[0-3]) that correspond
60 to the four LVDS multiplexer inputs. 63 to the four LVDS multiplexer inputs.
61 64
@@ -78,6 +81,8 @@ ldb: ldb@53fa8008 {
78 "di0", "di1"; 81 "di0", "di1";
79 82
80 lvds-channel@0 { 83 lvds-channel@0 {
84 #address-cells = <1>;
85 #size-cells = <0>;
81 reg = <0>; 86 reg = <0>;
82 fsl,data-mapping = "spwg"; 87 fsl,data-mapping = "spwg";
83 fsl,data-width = <24>; 88 fsl,data-width = <24>;
@@ -86,7 +91,9 @@ ldb: ldb@53fa8008 {
86 /* ... */ 91 /* ... */
87 }; 92 };
88 93
89 port { 94 port@0 {
95 reg = <0>;
96
90 lvds0_in: endpoint { 97 lvds0_in: endpoint {
91 remote-endpoint = <&ipu_di0_lvds0>; 98 remote-endpoint = <&ipu_di0_lvds0>;
92 }; 99 };
@@ -94,6 +101,8 @@ ldb: ldb@53fa8008 {
94 }; 101 };
95 102
96 lvds-channel@1 { 103 lvds-channel@1 {
104 #address-cells = <1>;
105 #size-cells = <0>;
97 reg = <1>; 106 reg = <1>;
98 fsl,data-mapping = "spwg"; 107 fsl,data-mapping = "spwg";
99 fsl,data-width = <24>; 108 fsl,data-width = <24>;
@@ -102,7 +111,9 @@ ldb: ldb@53fa8008 {
102 /* ... */ 111 /* ... */
103 }; 112 };
104 113
105 port { 114 port@1 {
115 reg = <1>;
116
106 lvds1_in: endpoint { 117 lvds1_in: endpoint {
107 remote-endpoint = <&ipu_di1_lvds1>; 118 remote-endpoint = <&ipu_di1_lvds1>;
108 }; 119 };
diff --git a/Documentation/devicetree/of_selftest.txt b/Documentation/devicetree/of_selftest.txt
new file mode 100644
index 000000000000..3a2f54d07fc5
--- /dev/null
+++ b/Documentation/devicetree/of_selftest.txt
@@ -0,0 +1,211 @@
1Open Firmware Device Tree Selftest
2----------------------------------
3
4Author: Gaurav Minocha <gaurav.minocha.os@gmail.com>
5
61. Introduction
7
8This document explains how the test data required for executing OF selftest
9is attached to the live tree dynamically, independent of the machine's
10architecture.
11
12It is recommended to read the following documents before moving ahead.
13
14[1] Documentation/devicetree/usage-model.txt
15[2] http://www.devicetree.org/Device_Tree_Usage
16
17OF Selftest has been designed to test the interface (include/linux/of.h)
18provided to device driver developers to fetch the device information..etc.
19from the unflattened device tree data structure. This interface is used by
20most of the device drivers in various use cases.
21
22
232. Test-data
24
25The Device Tree Source file (drivers/of/testcase-data/testcases.dts) contains
26the test data required for executing the unit tests automated in
27drivers/of/selftests.c. Currently, following Device Tree Source Include files
28(.dtsi) are included in testcase.dts:
29
30drivers/of/testcase-data/tests-interrupts.dtsi
31drivers/of/testcase-data/tests-platform.dtsi
32drivers/of/testcase-data/tests-phandle.dtsi
33drivers/of/testcase-data/tests-match.dtsi
34
35When the kernel is build with OF_SELFTEST enabled, then the following make rule
36
37$(obj)/%.dtb: $(src)/%.dts FORCE
38 $(call if_changed_dep, dtc)
39
40is used to compile the DT source file (testcase.dts) into a binary blob
41(testcase.dtb), also referred as flattened DT.
42
43After that, using the following rule the binary blob above is wrapped as an
44assembly file (testcase.dtb.S).
45
46$(obj)/%.dtb.S: $(obj)/%.dtb
47 $(call cmd, dt_S_dtb)
48
49The assembly file is compiled into an object file (testcase.dtb.o), and is
50linked into the kernel image.
51
52
532.1. Adding the test data
54
55Un-flattened device tree structure:
56
57Un-flattened device tree consists of connected device_node(s) in form of a tree
58structure described below.
59
60// following struct members are used to construct the tree
61struct device_node {
62 ...
63 struct device_node *parent;
64 struct device_node *child;
65 struct device_node *sibling;
66 struct device_node *allnext; /* next in list of all nodes */
67 ...
68 };
69
70Figure 1, describes a generic structure of machine’s un-flattened device tree
71considering only child and sibling pointers. There exists another pointer,
72*parent, that is used to traverse the tree in the reverse direction. So, at
73a particular level the child node and all the sibling nodes will have a parent
74pointer pointing to a common node (e.g. child1, sibling2, sibling3, sibling4’s
75parent points to root node)
76
77root (‘/’)
78 |
79child1 -> sibling2 -> sibling3 -> sibling4 -> null
80 | | | |
81 | | | null
82 | | |
83 | | child31 -> sibling32 -> null
84 | | | |
85 | | null null
86 | |
87 | child21 -> sibling22 -> sibling23 -> null
88 | | | |
89 | null null null
90 |
91child11 -> sibling12 -> sibling13 -> sibling14 -> null
92 | | | |
93 | | | null
94 | | |
95 null null child131 -> null
96 |
97 null
98
99Figure 1: Generic structure of un-flattened device tree
100
101
102*allnext: it is used to link all the nodes of DT into a list. So, for the
103 above tree the list would be as follows:
104
105root->child1->child11->sibling12->sibling13->child131->sibling14->sibling2->
106child21->sibling22->sibling23->sibling3->child31->sibling32->sibling4->null
107
108Before executing OF selftest, it is required to attach the test data to
109machine's device tree (if present). So, when selftest_data_add() is called,
110at first it reads the flattened device tree data linked into the kernel image
111via the following kernel symbols:
112
113__dtb_testcases_begin - address marking the start of test data blob
114__dtb_testcases_end - address marking the end of test data blob
115
116Secondly, it calls of_fdt_unflatten_device_tree() to unflatten the flattened
117blob. And finally, if the machine’s device tree (i.e live tree) is present,
118then it attaches the unflattened test data tree to the live tree, else it
119attaches itself as a live device tree.
120
121attach_node_and_children() uses of_attach_node() to attach the nodes into the
122live tree as explained below. To explain the same, the test data tree described
123 in Figure 2 is attached to the live tree described in Figure 1.
124
125root (‘/’)
126 |
127 testcase-data
128 |
129 test-child0 -> test-sibling1 -> test-sibling2 -> test-sibling3 -> null
130 | | | |
131 test-child01 null null null
132
133
134allnext list:
135
136root->testcase-data->test-child0->test-child01->test-sibling1->test-sibling2
137->test-sibling3->null
138
139Figure 2: Example test data tree to be attached to live tree.
140
141According to the scenario above, the live tree is already present so it isn’t
142required to attach the root(‘/’) node. All other nodes are attached by calling
143of_attach_node() on each node.
144
145In the function of_attach_node(), the new node is attached as the child of the
146given parent in live tree. But, if parent already has a child then the new node
147replaces the current child and turns it into its sibling. So, when the testcase
148data node is attached to the live tree above (Figure 1), the final structure is
149 as shown in Figure 3.
150
151root (‘/’)
152 |
153testcase-data -> child1 -> sibling2 -> sibling3 -> sibling4 -> null
154 | | | | |
155 (...) | | | null
156 | | child31 -> sibling32 -> null
157 | | | |
158 | | null null
159 | |
160 | child21 -> sibling22 -> sibling23 -> null
161 | | | |
162 | null null null
163 |
164 child11 -> sibling12 -> sibling13 -> sibling14 -> null
165 | | | |
166 null null | null
167 |
168 child131 -> null
169 |
170 null
171-----------------------------------------------------------------------
172
173root (‘/’)
174 |
175testcase-data -> child1 -> sibling2 -> sibling3 -> sibling4 -> null
176 | | | | |
177 | (...) (...) (...) null
178 |
179test-sibling3 -> test-sibling2 -> test-sibling1 -> test-child0 -> null
180 | | | |
181 null null null test-child01
182
183
184Figure 3: Live device tree structure after attaching the testcase-data.
185
186
187Astute readers would have noticed that test-child0 node becomes the last
188sibling compared to the earlier structure (Figure 2). After attaching first
189test-child0 the test-sibling1 is attached that pushes the child node
190(i.e. test-child0) to become a sibling and makes itself a child node,
191 as mentioned above.
192
193If a duplicate node is found (i.e. if a node with same full_name property is
194already present in the live tree), then the node isn’t attached rather its
195properties are updated to the live tree’s node by calling the function
196update_node_properties().
197
198
1992.2. Removing the test data
200
201Once the test case execution is complete, selftest_data_remove is called in
202order to remove the device nodes attached initially (first the leaf nodes are
203detached and then moving up the parent nodes are removed, and eventually the
204whole tree). selftest_data_remove() calls detach_node_and_children() that uses
205of_detach_node() to detach the nodes from the live device tree.
206
207To detach a node, of_detach_node() first updates all_next linked list, by
208attaching the previous node’s allnext to current node’s allnext pointer. And
209then, it either updates the child pointer of given node’s parent to its
210sibling or attaches the previous sibling to the given node’s sibling, as
211appropriate. That is it :)
diff --git a/Documentation/networking/filter.txt b/Documentation/networking/filter.txt
index c48a9704bda8..d16f424c5e8d 100644
--- a/Documentation/networking/filter.txt
+++ b/Documentation/networking/filter.txt
@@ -462,9 +462,9 @@ JIT compiler
462------------ 462------------
463 463
464The Linux kernel has a built-in BPF JIT compiler for x86_64, SPARC, PowerPC, 464The Linux kernel has a built-in BPF JIT compiler for x86_64, SPARC, PowerPC,
465ARM and s390 and can be enabled through CONFIG_BPF_JIT. The JIT compiler is 465ARM, MIPS and s390 and can be enabled through CONFIG_BPF_JIT. The JIT compiler
466transparently invoked for each attached filter from user space or for internal 466is transparently invoked for each attached filter from user space or for
467kernel users if it has been previously enabled by root: 467internal kernel users if it has been previously enabled by root:
468 468
469 echo 1 > /proc/sys/net/core/bpf_jit_enable 469 echo 1 > /proc/sys/net/core/bpf_jit_enable
470 470