diff options
Diffstat (limited to 'Documentation')
216 files changed, 11880 insertions, 2466 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index 2214f123a976..49c051380daf 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX | |||
@@ -218,8 +218,6 @@ m68k/ | |||
218 | - directory with info about Linux on Motorola 68k architecture. | 218 | - directory with info about Linux on Motorola 68k architecture. |
219 | magic-number.txt | 219 | magic-number.txt |
220 | - list of magic numbers used to mark/protect kernel data structures. | 220 | - list of magic numbers used to mark/protect kernel data structures. |
221 | mca.txt | ||
222 | - info on supporting Micro Channel Architecture (e.g. PS/2) systems. | ||
223 | md.txt | 221 | md.txt |
224 | - info on boot arguments for the multiple devices driver. | 222 | - info on boot arguments for the multiple devices driver. |
225 | memory-barriers.txt | 223 | memory-barriers.txt |
diff --git a/Documentation/ABI/testing/debugfs-pfo-nx-crypto b/Documentation/ABI/testing/debugfs-pfo-nx-crypto new file mode 100644 index 000000000000..685d5a448423 --- /dev/null +++ b/Documentation/ABI/testing/debugfs-pfo-nx-crypto | |||
@@ -0,0 +1,45 @@ | |||
1 | What: /sys/kernel/debug/nx-crypto/* | ||
2 | Date: March 2012 | ||
3 | KernelVersion: 3.4 | ||
4 | Contact: Kent Yoder <key@linux.vnet.ibm.com> | ||
5 | Description: | ||
6 | |||
7 | These debugfs interfaces are built by the nx-crypto driver, built in | ||
8 | arch/powerpc/crypto/nx. | ||
9 | |||
10 | Error Detection | ||
11 | =============== | ||
12 | |||
13 | errors: | ||
14 | - A u32 providing a total count of errors since the driver was loaded. The | ||
15 | only errors counted here are those returned from the hcall, H_COP_OP. | ||
16 | |||
17 | last_error: | ||
18 | - The most recent non-zero return code from the H_COP_OP hcall. -EBUSY is not | ||
19 | recorded here (the hcall will retry until -EBUSY goes away). | ||
20 | |||
21 | last_error_pid: | ||
22 | - The process ID of the process who received the most recent error from the | ||
23 | hcall. | ||
24 | |||
25 | Device Use | ||
26 | ========== | ||
27 | |||
28 | aes_bytes: | ||
29 | - The total number of bytes encrypted using AES in any of the driver's | ||
30 | supported modes. | ||
31 | |||
32 | aes_ops: | ||
33 | - The total number of AES operations submitted to the hardware. | ||
34 | |||
35 | sha256_bytes: | ||
36 | - The total number of bytes hashed by the hardware using SHA-256. | ||
37 | |||
38 | sha256_ops: | ||
39 | - The total number of SHA-256 operations submitted to the hardware. | ||
40 | |||
41 | sha512_bytes: | ||
42 | - The total number of bytes hashed by the hardware using SHA-512. | ||
43 | |||
44 | sha512_ops: | ||
45 | - The total number of SHA-512 operations submitted to the hardware. | ||
diff --git a/Documentation/ABI/testing/dev-kmsg b/Documentation/ABI/testing/dev-kmsg new file mode 100644 index 000000000000..281ecc5f9709 --- /dev/null +++ b/Documentation/ABI/testing/dev-kmsg | |||
@@ -0,0 +1,90 @@ | |||
1 | What: /dev/kmsg | ||
2 | Date: Mai 2012 | ||
3 | KernelVersion: 3.5 | ||
4 | Contact: Kay Sievers <kay@vrfy.org> | ||
5 | Description: The /dev/kmsg character device node provides userspace access | ||
6 | to the kernel's printk buffer. | ||
7 | |||
8 | Injecting messages: | ||
9 | Every write() to the opened device node places a log entry in | ||
10 | the kernel's printk buffer. | ||
11 | |||
12 | The logged line can be prefixed with a <N> syslog prefix, which | ||
13 | carries the syslog priority and facility. The single decimal | ||
14 | prefix number is composed of the 3 lowest bits being the syslog | ||
15 | priority and the higher bits the syslog facility number. | ||
16 | |||
17 | If no prefix is given, the priority number is the default kernel | ||
18 | log priority and the facility number is set to LOG_USER (1). It | ||
19 | is not possible to inject messages from userspace with the | ||
20 | facility number LOG_KERN (0), to make sure that the origin of | ||
21 | the messages can always be reliably determined. | ||
22 | |||
23 | Accessing the buffer: | ||
24 | Every read() from the opened device node receives one record | ||
25 | of the kernel's printk buffer. | ||
26 | |||
27 | The first read() directly following an open() always returns | ||
28 | first message in the buffer; there is no kernel-internal | ||
29 | persistent state; many readers can concurrently open the device | ||
30 | and read from it, without affecting other readers. | ||
31 | |||
32 | Every read() will receive the next available record. If no more | ||
33 | records are available read() will block, or if O_NONBLOCK is | ||
34 | used -EAGAIN returned. | ||
35 | |||
36 | Messages in the record ring buffer get overwritten as whole, | ||
37 | there are never partial messages received by read(). | ||
38 | |||
39 | In case messages get overwritten in the circular buffer while | ||
40 | the device is kept open, the next read() will return -EPIPE, | ||
41 | and the seek position be updated to the next available record. | ||
42 | Subsequent reads() will return available records again. | ||
43 | |||
44 | Unlike the classic syslog() interface, the 64 bit record | ||
45 | sequence numbers allow to calculate the amount of lost | ||
46 | messages, in case the buffer gets overwritten. And they allow | ||
47 | to reconnect to the buffer and reconstruct the read position | ||
48 | if needed, without limiting the interface to a single reader. | ||
49 | |||
50 | The device supports seek with the following parameters: | ||
51 | SEEK_SET, 0 | ||
52 | seek to the first entry in the buffer | ||
53 | SEEK_END, 0 | ||
54 | seek after the last entry in the buffer | ||
55 | SEEK_DATA, 0 | ||
56 | seek after the last record available at the time | ||
57 | the last SYSLOG_ACTION_CLEAR was issued. | ||
58 | |||
59 | The output format consists of a prefix carrying the syslog | ||
60 | prefix including priority and facility, the 64 bit message | ||
61 | sequence number and the monotonic timestamp in microseconds. | ||
62 | The values are separated by a ','. Future extensions might | ||
63 | add more comma separated values before the terminating ';'. | ||
64 | Unknown values should be gracefully ignored. | ||
65 | |||
66 | The human readable text string starts directly after the ';' | ||
67 | and is terminated by a '\n'. Untrusted values derived from | ||
68 | hardware or other facilities are printed, therefore | ||
69 | all non-printable characters in the log message are escaped | ||
70 | by "\x00" C-style hex encoding. | ||
71 | |||
72 | A line starting with ' ', is a continuation line, adding | ||
73 | key/value pairs to the log message, which provide the machine | ||
74 | readable context of the message, for reliable processing in | ||
75 | userspace. | ||
76 | |||
77 | Example: | ||
78 | 7,160,424069;pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7] (ignored) | ||
79 | SUBSYSTEM=acpi | ||
80 | DEVICE=+acpi:PNP0A03:00 | ||
81 | 6,339,5140900;NET: Registered protocol family 10 | ||
82 | 30,340,5690716;udevd[80]: starting version 181 | ||
83 | |||
84 | The DEVICE= key uniquely identifies devices the following way: | ||
85 | b12:8 - block dev_t | ||
86 | c127:3 - char dev_t | ||
87 | n8 - netdev ifindex | ||
88 | +sound:card0 - subsystem:devname | ||
89 | |||
90 | Users: dmesg(1), userspace kernel log consumers | ||
diff --git a/Documentation/ABI/testing/sysfs-block-rssd b/Documentation/ABI/testing/sysfs-block-rssd index d535757799fe..679ce3543122 100644 --- a/Documentation/ABI/testing/sysfs-block-rssd +++ b/Documentation/ABI/testing/sysfs-block-rssd | |||
@@ -6,13 +6,21 @@ Description: This is a read-only file. Dumps below driver information and | |||
6 | hardware registers. | 6 | hardware registers. |
7 | - S ACTive | 7 | - S ACTive |
8 | - Command Issue | 8 | - Command Issue |
9 | - Allocated | ||
10 | - Completed | 9 | - Completed |
11 | - PORT IRQ STAT | 10 | - PORT IRQ STAT |
12 | - HOST IRQ STAT | 11 | - HOST IRQ STAT |
12 | - Allocated | ||
13 | - Commands in Q | ||
13 | 14 | ||
14 | What: /sys/block/rssd*/status | 15 | What: /sys/block/rssd*/status |
15 | Date: April 2012 | 16 | Date: April 2012 |
16 | KernelVersion: 3.4 | 17 | KernelVersion: 3.4 |
17 | Contact: Asai Thambi S P <asamymuthupa@micron.com> | 18 | Contact: Asai Thambi S P <asamymuthupa@micron.com> |
18 | Description: This is a read-only file. Indicates the status of the device. | 19 | Description: This is a read-only file. Indicates the status of the device. |
20 | |||
21 | What: /sys/block/rssd*/flags | ||
22 | Date: May 2012 | ||
23 | KernelVersion: 3.5 | ||
24 | Contact: Asai Thambi S P <asamymuthupa@micron.com> | ||
25 | Description: This is a read-only file. Dumps the flags in port and driver | ||
26 | data structure | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-i2c-devices-lm3533 b/Documentation/ABI/testing/sysfs-bus-i2c-devices-lm3533 new file mode 100644 index 000000000000..1b62230b33b9 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-i2c-devices-lm3533 | |||
@@ -0,0 +1,15 @@ | |||
1 | What: /sys/bus/i2c/devices/.../output_hvled[n] | ||
2 | Date: April 2012 | ||
3 | KernelVersion: 3.5 | ||
4 | Contact: Johan Hovold <jhovold@gmail.com> | ||
5 | Description: | ||
6 | Set the controlling backlight device for high-voltage current | ||
7 | sink HVLED[n] (n = 1, 2) (0, 1). | ||
8 | |||
9 | What: /sys/bus/i2c/devices/.../output_lvled[n] | ||
10 | Date: April 2012 | ||
11 | KernelVersion: 3.5 | ||
12 | Contact: Johan Hovold <jhovold@gmail.com> | ||
13 | Description: | ||
14 | Set the controlling led device for low-voltage current sink | ||
15 | LVLED[n] (n = 1..5) (0..3). | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio new file mode 100644 index 000000000000..5bc8a476c15e --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-iio | |||
@@ -0,0 +1,737 @@ | |||
1 | What: /sys/bus/iio/devices/iio:deviceX | ||
2 | KernelVersion: 2.6.35 | ||
3 | Contact: linux-iio@vger.kernel.org | ||
4 | Description: | ||
5 | Hardware chip or device accessed by one communication port. | ||
6 | Corresponds to a grouping of sensor channels. X is the IIO | ||
7 | index of the device. | ||
8 | |||
9 | What: /sys/bus/iio/devices/triggerX | ||
10 | KernelVersion: 2.6.35 | ||
11 | Contact: linux-iio@vger.kernel.org | ||
12 | Description: | ||
13 | An event driven driver of data capture to an in kernel buffer. | ||
14 | May be provided by a device driver that also has an IIO device | ||
15 | based on hardware generated events (e.g. data ready) or | ||
16 | provided by a separate driver for other hardware (e.g. | ||
17 | periodic timer, GPIO or high resolution timer). | ||
18 | Contains trigger type specific elements. These do not | ||
19 | generalize well and hence are not documented in this file. | ||
20 | X is the IIO index of the trigger. | ||
21 | |||
22 | What: /sys/bus/iio/devices/iio:deviceX/buffer | ||
23 | KernelVersion: 2.6.35 | ||
24 | Contact: linux-iio@vger.kernel.org | ||
25 | Description: | ||
26 | Directory of attributes relating to the buffer for the device. | ||
27 | |||
28 | What: /sys/bus/iio/devices/iio:deviceX/name | ||
29 | KernelVersion: 2.6.35 | ||
30 | Contact: linux-iio@vger.kernel.org | ||
31 | Description: | ||
32 | Description of the physical chip / device for device X. | ||
33 | Typically a part number. | ||
34 | |||
35 | What: /sys/bus/iio/devices/iio:deviceX/sampling_frequency | ||
36 | What: /sys/bus/iio/devices/iio:deviceX/buffer/sampling_frequency | ||
37 | What: /sys/bus/iio/devices/triggerX/sampling_frequency | ||
38 | KernelVersion: 2.6.35 | ||
39 | Contact: linux-iio@vger.kernel.org | ||
40 | Description: | ||
41 | Some devices have internal clocks. This parameter sets the | ||
42 | resulting sampling frequency. In many devices this | ||
43 | parameter has an effect on input filters etc rather than | ||
44 | simply controlling when the input is sampled. As this | ||
45 | effects datardy triggers, hardware buffers and the sysfs | ||
46 | direct access interfaces, it may be found in any of the | ||
47 | relevant directories. If it effects all of the above | ||
48 | then it is to be found in the base device directory. | ||
49 | |||
50 | What: /sys/bus/iio/devices/iio:deviceX/sampling_frequency_available | ||
51 | What: /sys/.../iio:deviceX/buffer/sampling_frequency_available | ||
52 | What: /sys/bus/iio/devices/triggerX/sampling_frequency_available | ||
53 | KernelVersion: 2.6.35 | ||
54 | Contact: linux-iio@vger.kernel.org | ||
55 | Description: | ||
56 | When the internal sampling clock can only take a small | ||
57 | discrete set of values, this file lists those available. | ||
58 | |||
59 | What: /sys/bus/iio/devices/iio:deviceX/oversampling_ratio | ||
60 | KernelVersion: 2.6.38 | ||
61 | Contact: linux-iio@vger.kernel.org | ||
62 | Description: | ||
63 | Hardware dependent ADC oversampling. Controls the sampling ratio | ||
64 | of the digital filter if available. | ||
65 | |||
66 | What: /sys/bus/iio/devices/iio:deviceX/oversampling_ratio_available | ||
67 | KernelVersion: 2.6.38 | ||
68 | Contact: linux-iio@vger.kernel.org | ||
69 | Description: | ||
70 | Hardware dependent values supported by the oversampling filter. | ||
71 | |||
72 | What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_raw | ||
73 | What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_raw | ||
74 | KernelVersion: 2.6.35 | ||
75 | Contact: linux-iio@vger.kernel.org | ||
76 | Description: | ||
77 | Raw (unscaled no bias removal etc) voltage measurement from | ||
78 | channel Y. In special cases where the channel does not | ||
79 | correspond to externally available input one of the named | ||
80 | versions may be used. The number must always be specified and | ||
81 | unique to allow association with event codes. Units after | ||
82 | application of scale and offset are microvolts. | ||
83 | |||
84 | What: /sys/bus/iio/devices/iio:deviceX/in_voltageY-voltageZ_raw | ||
85 | KernelVersion: 2.6.35 | ||
86 | Contact: linux-iio@vger.kernel.org | ||
87 | Description: | ||
88 | Raw (unscaled) differential voltage measurement equivalent to | ||
89 | channel Y - channel Z where these channel numbers apply to the | ||
90 | physically equivalent inputs when non differential readings are | ||
91 | separately available. In differential only parts, then all that | ||
92 | is required is a consistent labeling. Units after application | ||
93 | of scale and offset are microvolts. | ||
94 | |||
95 | What: /sys/bus/iio/devices/iio:deviceX/in_capacitanceY_raw | ||
96 | KernelVersion: 3.2 | ||
97 | Contact: linux-iio@vger.kernel.org | ||
98 | Description: | ||
99 | Raw capacitance measurement from channel Y. Units after | ||
100 | application of scale and offset are nanofarads. | ||
101 | |||
102 | What: /sys/.../iio:deviceX/in_capacitanceY-in_capacitanceZ_raw | ||
103 | KernelVersion: 3.2 | ||
104 | Contact: linux-iio@vger.kernel.org | ||
105 | Description: | ||
106 | Raw differential capacitance measurement equivalent to | ||
107 | channel Y - channel Z where these channel numbers apply to the | ||
108 | physically equivalent inputs when non differential readings are | ||
109 | separately available. In differential only parts, then all that | ||
110 | is required is a consistent labeling. Units after application | ||
111 | of scale and offset are nanofarads. | ||
112 | |||
113 | What: /sys/bus/iio/devices/iio:deviceX/in_temp_raw | ||
114 | What: /sys/bus/iio/devices/iio:deviceX/in_tempX_raw | ||
115 | What: /sys/bus/iio/devices/iio:deviceX/in_temp_x_raw | ||
116 | What: /sys/bus/iio/devices/iio:deviceX/in_temp_y_raw | ||
117 | What: /sys/bus/iio/devices/iio:deviceX/in_temp_z_raw | ||
118 | KernelVersion: 2.6.35 | ||
119 | Contact: linux-iio@vger.kernel.org | ||
120 | Description: | ||
121 | Raw (unscaled no bias removal etc) temperature measurement. | ||
122 | If an axis is specified it generally means that the temperature | ||
123 | sensor is associated with one part of a compound device (e.g. | ||
124 | a gyroscope axis). Units after application of scale and offset | ||
125 | are milli degrees Celsuis. | ||
126 | |||
127 | What: /sys/bus/iio/devices/iio:deviceX/in_tempX_input | ||
128 | KernelVersion: 2.6.38 | ||
129 | Contact: linux-iio@vger.kernel.org | ||
130 | Description: | ||
131 | Scaled temperature measurement in milli degrees Celsius. | ||
132 | |||
133 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_raw | ||
134 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_raw | ||
135 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_raw | ||
136 | KernelVersion: 2.6.35 | ||
137 | Contact: linux-iio@vger.kernel.org | ||
138 | Description: | ||
139 | Acceleration in direction x, y or z (may be arbitrarily assigned | ||
140 | but should match other such assignments on device). | ||
141 | Has all of the equivalent parameters as per voltageY. Units | ||
142 | after application of scale and offset are m/s^2. | ||
143 | |||
144 | What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_x_raw | ||
145 | What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_raw | ||
146 | What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_raw | ||
147 | KernelVersion: 2.6.35 | ||
148 | Contact: linux-iio@vger.kernel.org | ||
149 | Description: | ||
150 | Angular velocity about axis x, y or z (may be arbitrarily | ||
151 | assigned) Data converted by application of offset then scale to | ||
152 | radians per second. Has all the equivalent parameters as | ||
153 | per voltageY. Units after application of scale and offset are | ||
154 | radians per second. | ||
155 | |||
156 | What: /sys/bus/iio/devices/iio:deviceX/in_incli_x_raw | ||
157 | What: /sys/bus/iio/devices/iio:deviceX/in_incli_y_raw | ||
158 | What: /sys/bus/iio/devices/iio:deviceX/in_incli_z_raw | ||
159 | KernelVersion: 2.6.35 | ||
160 | Contact: linux-iio@vger.kernel.org | ||
161 | Description: | ||
162 | Inclination raw reading about axis x, y or z (may be | ||
163 | arbitrarily assigned). Data converted by application of offset | ||
164 | and scale to Degrees. | ||
165 | |||
166 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_raw | ||
167 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_raw | ||
168 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_z_raw | ||
169 | KernelVersion: 2.6.35 | ||
170 | Contact: linux-iio@vger.kernel.org | ||
171 | Description: | ||
172 | Magnetic field along axis x, y or z (may be arbitrarily | ||
173 | assigned). Data converted by application of offset | ||
174 | then scale to Gauss. | ||
175 | |||
176 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_peak_raw | ||
177 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_peak_raw | ||
178 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_peak_raw | ||
179 | KernelVersion: 2.6.36 | ||
180 | Contact: linux-iio@vger.kernel.org | ||
181 | Description: | ||
182 | Highest value since some reset condition. These | ||
183 | attributes allow access to this and are otherwise | ||
184 | the direct equivalent of the <type>Y[_name]_raw attributes. | ||
185 | |||
186 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_xyz_squared_peak_raw | ||
187 | KernelVersion: 2.6.36 | ||
188 | Contact: linux-iio@vger.kernel.org | ||
189 | Description: | ||
190 | A computed peak value based on the sum squared magnitude of | ||
191 | the underlying value in the specified directions. | ||
192 | |||
193 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_offset | ||
194 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_offset | ||
195 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_offset | ||
196 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_offset | ||
197 | What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset | ||
198 | What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset | ||
199 | What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset | ||
200 | What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset | ||
201 | KernelVersion: 2.6.35 | ||
202 | Contact: linux-iio@vger.kernel.org | ||
203 | Description: | ||
204 | If known for a device, offset to be added to <type>[Y]_raw prior | ||
205 | to scaling by <type>[Y]_scale in order to obtain value in the | ||
206 | <type> units as specified in <type>[y]_raw documentation. | ||
207 | Not present if the offset is always 0 or unknown. If Y or | ||
208 | axis <x|y|z> is not present, then the offset applies to all | ||
209 | in channels of <type>. | ||
210 | May be writable if a variable offset can be applied on the | ||
211 | device. Note that this is different to calibbias which | ||
212 | is for devices (or drivers) that apply offsets to compensate | ||
213 | for variation between different instances of the part, typically | ||
214 | adjusted by using some hardware supported calibration procedure. | ||
215 | Calibbias is applied internally, offset is applied in userspace | ||
216 | to the _raw output. | ||
217 | |||
218 | What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_scale | ||
219 | What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_scale | ||
220 | What: /sys/bus/iio/devices/iio:deviceX/in_voltage_scale | ||
221 | What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale | ||
222 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale | ||
223 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale | ||
224 | What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_scale | ||
225 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_scale | ||
226 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_scale | ||
227 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_scale | ||
228 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_z_scale | ||
229 | KernelVersion: 2.6.35 | ||
230 | Contact: linux-iio@vger.kernel.org | ||
231 | Description: | ||
232 | If known for a device, scale to be applied to <type>Y[_name]_raw | ||
233 | post addition of <type>[Y][_name]_offset in order to obtain the | ||
234 | measured value in <type> units as specified in | ||
235 | <type>[Y][_name]_raw documentation. If shared across all in | ||
236 | channels then Y and <x|y|z> are not present and the value is | ||
237 | called <type>[Y][_name]_scale. The peak modifier means this | ||
238 | value is applied to <type>Y[_name]_peak_raw values. | ||
239 | |||
240 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibbias | ||
241 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibbias | ||
242 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_calibbias | ||
243 | What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_x_calibbias | ||
244 | What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_calibbias | ||
245 | What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_calibbias | ||
246 | What: /sys/bus/iio/devices/iio:deviceX/in_illuminance0_calibbias | ||
247 | What: /sys/bus/iio/devices/iio:deviceX/in_proximity0_calibbias | ||
248 | KernelVersion: 2.6.35 | ||
249 | Contact: linux-iio@vger.kernel.org | ||
250 | Description: | ||
251 | Hardware applied calibration offset. (assumed to fix production | ||
252 | inaccuracies). | ||
253 | |||
254 | What /sys/bus/iio/devices/iio:deviceX/in_voltageY_calibscale | ||
255 | What /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_calibscale | ||
256 | What /sys/bus/iio/devices/iio:deviceX/in_voltage_calibscale | ||
257 | What /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibscale | ||
258 | What /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibscale | ||
259 | What /sys/bus/iio/devices/iio:deviceX/in_accel_z_calibscale | ||
260 | What /sys/bus/iio/devices/iio:deviceX/in_anglvel_x_calibscale | ||
261 | What /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_calibscale | ||
262 | What /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_calibscale | ||
263 | what /sys/bus/iio/devices/iio:deviceX/in_illuminance0_calibscale | ||
264 | what /sys/bus/iio/devices/iio:deviceX/in_proximity0_calibscale | ||
265 | KernelVersion: 2.6.35 | ||
266 | Contact: linux-iio@vger.kernel.org | ||
267 | Description: | ||
268 | Hardware applied calibration scale factor. (assumed to fix | ||
269 | production inaccuracies). If shared across all channels, | ||
270 | <type>_calibscale is used. | ||
271 | |||
272 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale_available | ||
273 | What: /sys/.../iio:deviceX/in_voltageX_scale_available | ||
274 | What: /sys/.../iio:deviceX/in_voltage-voltage_scale_available | ||
275 | What: /sys/.../iio:deviceX/out_voltageX_scale_available | ||
276 | What: /sys/.../iio:deviceX/in_capacitance_scale_available | ||
277 | KernelVersion: 2.635 | ||
278 | Contact: linux-iio@vger.kernel.org | ||
279 | Description: | ||
280 | If a discrete set of scale values are available, they | ||
281 | are listed in this attribute. | ||
282 | |||
283 | What /sys/bus/iio/devices/iio:deviceX/out_voltageY_hardwaregain | ||
284 | KernelVersion: 2.6.35 | ||
285 | Contact: linux-iio@vger.kernel.org | ||
286 | Description: | ||
287 | Hardware applied gain factor. If shared across all channels, | ||
288 | <type>_hardwaregain is used. | ||
289 | |||
290 | What: /sys/.../in_accel_filter_low_pass_3db_frequency | ||
291 | What: /sys/.../in_magn_filter_low_pass_3db_frequency | ||
292 | What: /sys/.../in_anglvel_filter_low_pass_3db_frequency | ||
293 | KernelVersion: 3.2 | ||
294 | Contact: linux-iio@vger.kernel.org | ||
295 | Description: | ||
296 | If a known or controllable low pass filter is applied | ||
297 | to the underlying data channel, then this parameter | ||
298 | gives the 3dB frequency of the filter in Hz. | ||
299 | |||
300 | What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_raw | ||
301 | KernelVersion: 2.6.37 | ||
302 | Contact: linux-iio@vger.kernel.org | ||
303 | Description: | ||
304 | Raw (unscaled, no bias etc.) output voltage for | ||
305 | channel Y. The number must always be specified and | ||
306 | unique if the output corresponds to a single channel. | ||
307 | |||
308 | What: /sys/bus/iio/devices/iio:deviceX/out_voltageY&Z_raw | ||
309 | KernelVersion: 2.6.37 | ||
310 | Contact: linux-iio@vger.kernel.org | ||
311 | Description: | ||
312 | Raw (unscaled, no bias etc.) output voltage for an aggregate of | ||
313 | channel Y, channel Z, etc. This interface is available in cases | ||
314 | where a single output sets the value for multiple channels | ||
315 | simultaneously. | ||
316 | |||
317 | What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_powerdown_mode | ||
318 | What: /sys/bus/iio/devices/iio:deviceX/out_voltage_powerdown_mode | ||
319 | KernelVersion: 2.6.38 | ||
320 | Contact: linux-iio@vger.kernel.org | ||
321 | Description: | ||
322 | Specifies the output powerdown mode. | ||
323 | DAC output stage is disconnected from the amplifier and | ||
324 | 1kohm_to_gnd: connected to ground via an 1kOhm resistor | ||
325 | 100kohm_to_gnd: connected to ground via an 100kOhm resistor | ||
326 | three_state: left floating | ||
327 | For a list of available output power down options read | ||
328 | outX_powerdown_mode_available. If Y is not present the | ||
329 | mode is shared across all outputs. | ||
330 | |||
331 | What: /sys/.../iio:deviceX/out_votlageY_powerdown_mode_available | ||
332 | What: /sys/.../iio:deviceX/out_voltage_powerdown_mode_available | ||
333 | KernelVersion: 2.6.38 | ||
334 | Contact: linux-iio@vger.kernel.org | ||
335 | Description: | ||
336 | Lists all available output power down modes. | ||
337 | If Y is not present the mode is shared across all outputs. | ||
338 | |||
339 | What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_powerdown | ||
340 | What: /sys/bus/iio/devices/iio:deviceX/out_voltage_powerdown | ||
341 | KernelVersion: 2.6.38 | ||
342 | Contact: linux-iio@vger.kernel.org | ||
343 | Description: | ||
344 | Writing 1 causes output Y to enter the power down mode specified | ||
345 | by the corresponding outY_powerdown_mode. Clearing returns to | ||
346 | normal operation. Y may be suppressed if all outputs are | ||
347 | controlled together. | ||
348 | |||
349 | What: /sys/bus/iio/devices/iio:deviceX/events | ||
350 | KernelVersion: 2.6.35 | ||
351 | Contact: linux-iio@vger.kernel.org | ||
352 | Description: | ||
353 | Configuration of which hardware generated events are passed up | ||
354 | to user-space. | ||
355 | |||
356 | What: /sys/.../iio:deviceX/events/in_accel_x_thresh_rising_en | ||
357 | What: /sys/.../iio:deviceX/events/in_accel_x_thresh_falling_en | ||
358 | What: /sys/.../iio:deviceX/events/in_accel_y_thresh_rising_en | ||
359 | What: /sys/.../iio:deviceX/events/in_accel_y_thresh_falling_en | ||
360 | What: /sys/.../iio:deviceX/events/in_accel_z_thresh_rising_en | ||
361 | What: /sys/.../iio:deviceX/events/in_accel_z_thresh_falling_en | ||
362 | What: /sys/.../iio:deviceX/events/in_anglvel_x_thresh_rising_en | ||
363 | What: /sys/.../iio:deviceX/events/in_anglvel_x_thresh_falling_en | ||
364 | What: /sys/.../iio:deviceX/events/in_anglvel_y_thresh_rising_en | ||
365 | What: /sys/.../iio:deviceX/events/in_anglvel_y_thresh_falling_en | ||
366 | What: /sys/.../iio:deviceX/events/in_anglvel_z_thresh_rising_en | ||
367 | What: /sys/.../iio:deviceX/events/in_anglvel_z_thresh_falling_en | ||
368 | What: /sys/.../iio:deviceX/events/in_magn_x_thresh_rising_en | ||
369 | What: /sys/.../iio:deviceX/events/in_magn_x_thresh_falling_en | ||
370 | What: /sys/.../iio:deviceX/events/in_magn_y_thresh_rising_en | ||
371 | What: /sys/.../iio:deviceX/events/in_magn_y_thresh_falling_en | ||
372 | What: /sys/.../iio:deviceX/events/in_magn_z_thresh_rising_en | ||
373 | What: /sys/.../iio:deviceX/events/in_magn_z_thresh_falling_en | ||
374 | What: /sys/.../iio:deviceX/events/in_voltageY_supply_thresh_rising_en | ||
375 | What: /sys/.../iio:deviceX/events/in_voltageY_supply_thresh_falling_en | ||
376 | What: /sys/.../iio:deviceX/events/in_voltageY_thresh_rising_en | ||
377 | What: /sys/.../iio:deviceX/events/in_voltageY_thresh_falling_en | ||
378 | What: /sys/.../iio:deviceX/events/in_tempY_thresh_rising_en | ||
379 | What: /sys/.../iio:deviceX/events/in_tempY_thresh_falling_en | ||
380 | KernelVersion: 2.6.37 | ||
381 | Contact: linux-iio@vger.kernel.org | ||
382 | Description: | ||
383 | Event generated when channel passes a threshold in the specified | ||
384 | (_rising|_falling) direction. If the direction is not specified, | ||
385 | then either the device will report an event which ever direction | ||
386 | a single threshold value is passed in (e.g. | ||
387 | <type>[Y][_name]_<raw|input>_thresh_value) or | ||
388 | <type>[Y][_name]_<raw|input>_thresh_rising_value and | ||
389 | <type>[Y][_name]_<raw|input>_thresh_falling_value may take | ||
390 | different values, but the device can only enable both thresholds | ||
391 | or neither. | ||
392 | Note the driver will assume the last p events requested are | ||
393 | to be enabled where p is however many it supports (which may | ||
394 | vary depending on the exact set requested. So if you want to be | ||
395 | sure you have set what you think you have, check the contents of | ||
396 | these attributes after everything is configured. Drivers may | ||
397 | have to buffer any parameters so that they are consistent when | ||
398 | a given event type is enabled a future point (and not those for | ||
399 | whatever event was previously enabled). | ||
400 | |||
401 | What: /sys/.../iio:deviceX/events/in_accel_x_roc_rising_en | ||
402 | What: /sys/.../iio:deviceX/events/in_accel_x_roc_falling_en | ||
403 | What: /sys/.../iio:deviceX/events/in_accel_y_roc_rising_en | ||
404 | What: /sys/.../iio:deviceX/events/in_accel_y_roc_falling_en | ||
405 | What: /sys/.../iio:deviceX/events/in_accel_z_roc_rising_en | ||
406 | What: /sys/.../iio:deviceX/events/in_accel_z_roc_falling_en | ||
407 | What: /sys/.../iio:deviceX/events/in_anglvel_x_roc_rising_en | ||
408 | What: /sys/.../iio:deviceX/events/in_anglvel_x_roc_falling_en | ||
409 | What: /sys/.../iio:deviceX/events/in_anglvel_y_roc_rising_en | ||
410 | What: /sys/.../iio:deviceX/events/in_anglvel_y_roc_falling_en | ||
411 | What: /sys/.../iio:deviceX/events/in_anglvel_z_roc_rising_en | ||
412 | What: /sys/.../iio:deviceX/events/in_anglvel_z_roc_falling_en | ||
413 | What: /sys/.../iio:deviceX/events/in_magn_x_roc_rising_en | ||
414 | What: /sys/.../iio:deviceX/events/in_magn_x_roc_falling_en | ||
415 | What: /sys/.../iio:deviceX/events/in_magn_y_roc_rising_en | ||
416 | What: /sys/.../iio:deviceX/events/in_magn_y_roc_falling_en | ||
417 | What: /sys/.../iio:deviceX/events/in_magn_z_roc_rising_en | ||
418 | What: /sys/.../iio:deviceX/events/in_magn_z_roc_falling_en | ||
419 | What: /sys/.../iio:deviceX/events/in_voltageY_supply_roc_rising_en | ||
420 | What: /sys/.../iio:deviceX/events/in_voltageY_supply_roc_falling_en | ||
421 | What: /sys/.../iio:deviceX/events/in_voltageY_roc_rising_en | ||
422 | What: /sys/.../iio:deviceX/events/in_voltageY_roc_falling_en | ||
423 | What: /sys/.../iio:deviceX/events/in_tempY_roc_rising_en | ||
424 | What: /sys/.../iio:deviceX/events/in_tempY_roc_falling_en | ||
425 | KernelVersion: 2.6.37 | ||
426 | Contact: linux-iio@vger.kernel.org | ||
427 | Description: | ||
428 | Event generated when channel passes a threshold on the rate of | ||
429 | change (1st differential) in the specified (_rising|_falling) | ||
430 | direction. If the direction is not specified, then either the | ||
431 | device will report an event which ever direction a single | ||
432 | threshold value is passed in (e.g. | ||
433 | <type>[Y][_name]_<raw|input>_roc_value) or | ||
434 | <type>[Y][_name]_<raw|input>_roc_rising_value and | ||
435 | <type>[Y][_name]_<raw|input>_roc_falling_value may take | ||
436 | different values, but the device can only enable both rate of | ||
437 | change thresholds or neither. | ||
438 | Note the driver will assume the last p events requested are | ||
439 | to be enabled where p is however many it supports (which may | ||
440 | vary depending on the exact set requested. So if you want to be | ||
441 | sure you have set what you think you have, check the contents of | ||
442 | these attributes after everything is configured. Drivers may | ||
443 | have to buffer any parameters so that they are consistent when | ||
444 | a given event type is enabled a future point (and not those for | ||
445 | whatever event was previously enabled). | ||
446 | |||
447 | What: /sys/.../events/in_accel_x_raw_thresh_rising_value | ||
448 | What: /sys/.../events/in_accel_x_raw_thresh_falling_value | ||
449 | What: /sys/.../events/in_accel_y_raw_thresh_rising_value | ||
450 | What: /sys/.../events/in_accel_y_raw_thresh_falling_value | ||
451 | What: /sys/.../events/in_accel_z_raw_thresh_rising_value | ||
452 | What: /sys/.../events/in_accel_z_raw_thresh_falling_value | ||
453 | What: /sys/.../events/in_anglvel_x_raw_thresh_rising_value | ||
454 | What: /sys/.../events/in_anglvel_x_raw_thresh_falling_value | ||
455 | What: /sys/.../events/in_anglvel_y_raw_thresh_rising_value | ||
456 | What: /sys/.../events/in_anglvel_y_raw_thresh_falling_value | ||
457 | What: /sys/.../events/in_anglvel_z_raw_thresh_rising_value | ||
458 | What: /sys/.../events/in_anglvel_z_raw_thresh_falling_value | ||
459 | What: /sys/.../events/in_magn_x_raw_thresh_rising_value | ||
460 | What: /sys/.../events/in_magn_x_raw_thresh_falling_value | ||
461 | What: /sys/.../events/in_magn_y_raw_thresh_rising_value | ||
462 | What: /sys/.../events/in_magn_y_raw_thresh_falling_value | ||
463 | What: /sys/.../events/in_magn_z_raw_thresh_rising_value | ||
464 | What: /sys/.../events/in_magn_z_raw_thresh_falling_value | ||
465 | What: /sys/.../events/in_voltageY_supply_raw_thresh_rising_value | ||
466 | What: /sys/.../events/in_voltageY_supply_raw_thresh_falling_value | ||
467 | What: /sys/.../events/in_voltageY_raw_thresh_rising_value | ||
468 | What: /sys/.../events/in_voltageY_raw_thresh_falling_value | ||
469 | What: /sys/.../events/in_tempY_raw_thresh_rising_value | ||
470 | What: /sys/.../events/in_tempY_raw_thresh_falling_value | ||
471 | What: /sys/.../events/in_illuminance0_thresh_falling_value | ||
472 | what: /sys/.../events/in_illuminance0_thresh_rising_value | ||
473 | what: /sys/.../events/in_proximity0_thresh_falling_value | ||
474 | what: /sys/.../events/in_proximity0_thresh_rising_value | ||
475 | KernelVersion: 2.6.37 | ||
476 | Contact: linux-iio@vger.kernel.org | ||
477 | Description: | ||
478 | Specifies the value of threshold that the device is comparing | ||
479 | against for the events enabled by | ||
480 | <type>Y[_name]_thresh[_rising|falling]_en. | ||
481 | If separate attributes exist for the two directions, but | ||
482 | direction is not specified for this attribute, then a single | ||
483 | threshold value applies to both directions. | ||
484 | The raw or input element of the name indicates whether the | ||
485 | value is in raw device units or in processed units (as _raw | ||
486 | and _input do on sysfs direct channel read attributes). | ||
487 | |||
488 | What: /sys/.../events/in_accel_x_raw_roc_rising_value | ||
489 | What: /sys/.../events/in_accel_x_raw_roc_falling_value | ||
490 | What: /sys/.../events/in_accel_y_raw_roc_rising_value | ||
491 | What: /sys/.../events/in_accel_y_raw_roc_falling_value | ||
492 | What: /sys/.../events/in_accel_z_raw_roc_rising_value | ||
493 | What: /sys/.../events/in_accel_z_raw_roc_falling_value | ||
494 | What: /sys/.../events/in_anglvel_x_raw_roc_rising_value | ||
495 | What: /sys/.../events/in_anglvel_x_raw_roc_falling_value | ||
496 | What: /sys/.../events/in_anglvel_y_raw_roc_rising_value | ||
497 | What: /sys/.../events/in_anglvel_y_raw_roc_falling_value | ||
498 | What: /sys/.../events/in_anglvel_z_raw_roc_rising_value | ||
499 | What: /sys/.../events/in_anglvel_z_raw_roc_falling_value | ||
500 | What: /sys/.../events/in_magn_x_raw_roc_rising_value | ||
501 | What: /sys/.../events/in_magn_x_raw_roc_falling_value | ||
502 | What: /sys/.../events/in_magn_y_raw_roc_rising_value | ||
503 | What: /sys/.../events/in_magn_y_raw_roc_falling_value | ||
504 | What: /sys/.../events/in_magn_z_raw_roc_rising_value | ||
505 | What: /sys/.../events/in_magn_z_raw_roc_falling_value | ||
506 | What: /sys/.../events/in_voltageY_supply_raw_roc_rising_value | ||
507 | What: /sys/.../events/in_voltageY_supply_raw_roc_falling_value | ||
508 | What: /sys/.../events/in_voltageY_raw_roc_rising_value | ||
509 | What: /sys/.../events/in_voltageY_raw_roc_falling_value | ||
510 | What: /sys/.../events/in_tempY_raw_roc_rising_value | ||
511 | What: /sys/.../events/in_tempY_raw_roc_falling_value | ||
512 | KernelVersion: 2.6.37 | ||
513 | Contact: linux-iio@vger.kernel.org | ||
514 | Description: | ||
515 | Specifies the value of rate of change threshold that the | ||
516 | device is comparing against for the events enabled by | ||
517 | <type>[Y][_name]_roc[_rising|falling]_en. | ||
518 | If separate attributes exist for the two directions, | ||
519 | but direction is not specified for this attribute, | ||
520 | then a single threshold value applies to both directions. | ||
521 | The raw or input element of the name indicates whether the | ||
522 | value is in raw device units or in processed units (as _raw | ||
523 | and _input do on sysfs direct channel read attributes). | ||
524 | |||
525 | What: /sys/.../events/in_accel_x_thresh_rising_period | ||
526 | What: /sys/.../events/in_accel_x_thresh_falling_period | ||
527 | hat: /sys/.../events/in_accel_x_roc_rising_period | ||
528 | What: /sys/.../events/in_accel_x_roc_falling_period | ||
529 | What: /sys/.../events/in_accel_y_thresh_rising_period | ||
530 | What: /sys/.../events/in_accel_y_thresh_falling_period | ||
531 | What: /sys/.../events/in_accel_y_roc_rising_period | ||
532 | What: /sys/.../events/in_accel_y_roc_falling_period | ||
533 | What: /sys/.../events/in_accel_z_thresh_rising_period | ||
534 | What: /sys/.../events/in_accel_z_thresh_falling_period | ||
535 | What: /sys/.../events/in_accel_z_roc_rising_period | ||
536 | What: /sys/.../events/in_accel_z_roc_falling_period | ||
537 | What: /sys/.../events/in_anglvel_x_thresh_rising_period | ||
538 | What: /sys/.../events/in_anglvel_x_thresh_falling_period | ||
539 | What: /sys/.../events/in_anglvel_x_roc_rising_period | ||
540 | What: /sys/.../events/in_anglvel_x_roc_falling_period | ||
541 | What: /sys/.../events/in_anglvel_y_thresh_rising_period | ||
542 | What: /sys/.../events/in_anglvel_y_thresh_falling_period | ||
543 | What: /sys/.../events/in_anglvel_y_roc_rising_period | ||
544 | What: /sys/.../events/in_anglvel_y_roc_falling_period | ||
545 | What: /sys/.../events/in_anglvel_z_thresh_rising_period | ||
546 | What: /sys/.../events/in_anglvel_z_thresh_falling_period | ||
547 | What: /sys/.../events/in_anglvel_z_roc_rising_period | ||
548 | What: /sys/.../events/in_anglvel_z_roc_falling_period | ||
549 | What: /sys/.../events/in_magn_x_thresh_rising_period | ||
550 | What: /sys/.../events/in_magn_x_thresh_falling_period | ||
551 | What: /sys/.../events/in_magn_x_roc_rising_period | ||
552 | What: /sys/.../events/in_magn_x_roc_falling_period | ||
553 | What: /sys/.../events/in_magn_y_thresh_rising_period | ||
554 | What: /sys/.../events/in_magn_y_thresh_falling_period | ||
555 | What: /sys/.../events/in_magn_y_roc_rising_period | ||
556 | What: /sys/.../events/in_magn_y_roc_falling_period | ||
557 | What: /sys/.../events/in_magn_z_thresh_rising_period | ||
558 | What: /sys/.../events/in_magn_z_thresh_falling_period | ||
559 | What: /sys/.../events/in_magn_z_roc_rising_period | ||
560 | What: /sys/.../events/in_magn_z_roc_falling_period | ||
561 | What: /sys/.../events/in_voltageY_supply_thresh_rising_period | ||
562 | What: /sys/.../events/in_voltageY_supply_thresh_falling_period | ||
563 | What: /sys/.../events/in_voltageY_supply_roc_rising_period | ||
564 | What: /sys/.../events/in_voltageY_supply_roc_falling_period | ||
565 | What: /sys/.../events/in_voltageY_thresh_rising_period | ||
566 | What: /sys/.../events/in_voltageY_thresh_falling_period | ||
567 | What: /sys/.../events/in_voltageY_roc_rising_period | ||
568 | What: /sys/.../events/in_voltageY_roc_falling_period | ||
569 | What: /sys/.../events/in_tempY_thresh_rising_period | ||
570 | What: /sys/.../events/in_tempY_thresh_falling_period | ||
571 | What: /sys/.../events/in_tempY_roc_rising_period | ||
572 | What: /sys/.../events/in_tempY_roc_falling_period | ||
573 | What: /sys/.../events/in_accel_x&y&z_mag_falling_period | ||
574 | What: /sys/.../events/in_intensity0_thresh_period | ||
575 | What: /sys/.../events/in_proximity0_thresh_period | ||
576 | KernelVersion: 2.6.37 | ||
577 | Contact: linux-iio@vger.kernel.org | ||
578 | Description: | ||
579 | Period of time (in seconds) for which the condition must be | ||
580 | met before an event is generated. If direction is not | ||
581 | specified then this period applies to both directions. | ||
582 | |||
583 | What: /sys/.../iio:deviceX/events/in_accel_mag_en | ||
584 | What: /sys/.../iio:deviceX/events/in_accel_mag_rising_en | ||
585 | What: /sys/.../iio:deviceX/events/in_accel_mag_falling_en | ||
586 | What: /sys/.../iio:deviceX/events/in_accel_x_mag_en | ||
587 | What: /sys/.../iio:deviceX/events/in_accel_x_mag_rising_en | ||
588 | What: /sys/.../iio:deviceX/events/in_accel_x_mag_falling_en | ||
589 | What: /sys/.../iio:deviceX/events/in_accel_y_mag_en | ||
590 | What: /sys/.../iio:deviceX/events/in_accel_y_mag_rising_en | ||
591 | What: /sys/.../iio:deviceX/events/in_accel_y_mag_falling_en | ||
592 | What: /sys/.../iio:deviceX/events/in_accel_z_mag_en | ||
593 | What: /sys/.../iio:deviceX/events/in_accel_z_mag_rising_en | ||
594 | What: /sys/.../iio:deviceX/events/in_accel_z_mag_falling_en | ||
595 | What: /sys/.../iio:deviceX/events/in_accel_x&y&z_mag_rising_en | ||
596 | What: /sys/.../iio:deviceX/events/in_accel_x&y&z_mag_falling_en | ||
597 | KernelVersion: 2.6.37 | ||
598 | Contact: linux-iio@vger.kernel.org | ||
599 | Description: | ||
600 | Similar to in_accel_x_thresh[_rising|_falling]_en, but here the | ||
601 | magnitude of the channel is compared to the threshold, not its | ||
602 | signed value. | ||
603 | |||
604 | What: /sys/.../events/in_accel_raw_mag_value | ||
605 | What: /sys/.../events/in_accel_x_raw_mag_rising_value | ||
606 | What: /sys/.../events/in_accel_y_raw_mag_rising_value | ||
607 | What: /sys/.../events/in_accel_z_raw_mag_rising_value | ||
608 | KernelVersion: 2.6.37 | ||
609 | Contact: linux-iio@vger.kernel.org | ||
610 | Description: | ||
611 | The value to which the magnitude of the channel is compared. If | ||
612 | number or direction is not specified, applies to all channels of | ||
613 | this type. | ||
614 | |||
615 | What: /sys/bus/iio/devices/iio:deviceX/trigger/current_trigger | ||
616 | KernelVersion: 2.6.35 | ||
617 | Contact: linux-iio@vger.kernel.org | ||
618 | Description: | ||
619 | The name of the trigger source being used, as per string given | ||
620 | in /sys/class/iio/triggerY/name. | ||
621 | |||
622 | What: /sys/bus/iio/devices/iio:deviceX/buffer/length | ||
623 | KernelVersion: 2.6.35 | ||
624 | Contact: linux-iio@vger.kernel.org | ||
625 | Description: | ||
626 | Number of scans contained by the buffer. | ||
627 | |||
628 | What: /sys/bus/iio/devices/iio:deviceX/buffer/bytes_per_datum | ||
629 | KernelVersion: 2.6.37 | ||
630 | Contact: linux-iio@vger.kernel.org | ||
631 | Description: | ||
632 | Bytes per scan. Due to alignment fun, the scan may be larger | ||
633 | than implied directly by the scan_element parameters. | ||
634 | |||
635 | What: /sys/bus/iio/devices/iio:deviceX/buffer/enable | ||
636 | KernelVersion: 2.6.35 | ||
637 | Contact: linux-iio@vger.kernel.org | ||
638 | Description: | ||
639 | Actually start the buffer capture up. Will start trigger | ||
640 | if first device and appropriate. | ||
641 | |||
642 | What: /sys/bus/iio/devices/iio:deviceX/buffer/scan_elements | ||
643 | KernelVersion: 2.6.37 | ||
644 | Contact: linux-iio@vger.kernel.org | ||
645 | Description: | ||
646 | Directory containing interfaces for elements that will be | ||
647 | captured for a single triggered sample set in the buffer. | ||
648 | |||
649 | What: /sys/.../buffer/scan_elements/in_accel_x_en | ||
650 | What: /sys/.../buffer/scan_elements/in_accel_y_en | ||
651 | What: /sys/.../buffer/scan_elements/in_accel_z_en | ||
652 | What: /sys/.../buffer/scan_elements/in_anglvel_x_en | ||
653 | What: /sys/.../buffer/scan_elements/in_anglvel_y_en | ||
654 | What: /sys/.../buffer/scan_elements/in_anglvel_z_en | ||
655 | What: /sys/.../buffer/scan_elements/in_magn_x_en | ||
656 | What: /sys/.../buffer/scan_elements/in_magn_y_en | ||
657 | What: /sys/.../buffer/scan_elements/in_magn_z_en | ||
658 | What: /sys/.../buffer/scan_elements/in_timestamp_en | ||
659 | What: /sys/.../buffer/scan_elements/in_voltageY_supply_en | ||
660 | What: /sys/.../buffer/scan_elements/in_voltageY_en | ||
661 | What: /sys/.../buffer/scan_elements/in_voltageY-voltageZ_en | ||
662 | What: /sys/.../buffer/scan_elements/in_incli_x_en | ||
663 | What: /sys/.../buffer/scan_elements/in_incli_y_en | ||
664 | KernelVersion: 2.6.37 | ||
665 | Contact: linux-iio@vger.kernel.org | ||
666 | Description: | ||
667 | Scan element control for triggered data capture. | ||
668 | |||
669 | What: /sys/.../buffer/scan_elements/in_accel_type | ||
670 | What: /sys/.../buffer/scan_elements/in_anglvel_type | ||
671 | What: /sys/.../buffer/scan_elements/in_magn_type | ||
672 | What: /sys/.../buffer/scan_elements/in_incli_type | ||
673 | What: /sys/.../buffer/scan_elements/in_voltageY_type | ||
674 | What: /sys/.../buffer/scan_elements/in_voltage-in_type | ||
675 | What: /sys/.../buffer/scan_elements/in_voltageY_supply_type | ||
676 | What: /sys/.../buffer/scan_elements/in_timestamp_type | ||
677 | KernelVersion: 2.6.37 | ||
678 | Contact: linux-iio@vger.kernel.org | ||
679 | Description: | ||
680 | Description of the scan element data storage within the buffer | ||
681 | and hence the form in which it is read from user-space. | ||
682 | Form is [be|le]:[s|u]bits/storagebits[>>shift]. | ||
683 | be or le specifies big or little endian. s or u specifies if | ||
684 | signed (2's complement) or unsigned. bits is the number of bits | ||
685 | of data and storagebits is the space (after padding) that it | ||
686 | occupies in the buffer. shift if specified, is the shift that | ||
687 | needs to be applied prior to masking out unused bits. Some | ||
688 | devices put their data in the middle of the transferred elements | ||
689 | with additional information on both sides. Note that some | ||
690 | devices will have additional information in the unused bits | ||
691 | so to get a clean value, the bits value must be used to mask | ||
692 | the buffer output value appropriately. The storagebits value | ||
693 | also specifies the data alignment. So s48/64>>2 will be a | ||
694 | signed 48 bit integer stored in a 64 bit location aligned to | ||
695 | a a64 bit boundary. To obtain the clean value, shift right 2 | ||
696 | and apply a mask to zero the top 16 bits of the result. | ||
697 | For other storage combinations this attribute will be extended | ||
698 | appropriately. | ||
699 | |||
700 | What: /sys/.../buffer/scan_elements/in_accel_type_available | ||
701 | KernelVersion: 2.6.37 | ||
702 | Contact: linux-iio@vger.kernel.org | ||
703 | Description: | ||
704 | If the type parameter can take one of a small set of values, | ||
705 | this attribute lists them. | ||
706 | |||
707 | What: /sys/.../buffer/scan_elements/in_voltageY_index | ||
708 | What: /sys/.../buffer/scan_elements/in_voltageY_supply_index | ||
709 | What: /sys/.../buffer/scan_elements/in_accel_x_index | ||
710 | What: /sys/.../buffer/scan_elements/in_accel_y_index | ||
711 | What: /sys/.../buffer/scan_elements/in_accel_z_index | ||
712 | What: /sys/.../buffer/scan_elements/in_anglvel_x_index | ||
713 | What: /sys/.../buffer/scan_elements/in_anglvel_y_index | ||
714 | What: /sys/.../buffer/scan_elements/in_anglvel_z_index | ||
715 | What: /sys/.../buffer/scan_elements/in_magn_x_index | ||
716 | What: /sys/.../buffer/scan_elements/in_magn_y_index | ||
717 | What: /sys/.../buffer/scan_elements/in_magn_z_index | ||
718 | What: /sys/.../buffer/scan_elements/in_incli_x_index | ||
719 | What: /sys/.../buffer/scan_elements/in_incli_y_index | ||
720 | What: /sys/.../buffer/scan_elements/in_timestamp_index | ||
721 | KernelVersion: 2.6.37 | ||
722 | Contact: linux-iio@vger.kernel.org | ||
723 | Description: | ||
724 | A single positive integer specifying the position of this | ||
725 | scan element in the buffer. Note these are not dependent on | ||
726 | what is enabled and may not be contiguous. Thus for user-space | ||
727 | to establish the full layout these must be used in conjunction | ||
728 | with all _en attributes to establish which channels are present, | ||
729 | and the relevant _type attributes to establish the data storage | ||
730 | format. | ||
731 | |||
732 | What: /sys/.../iio:deviceX/in_anglvel_z_quadrature_correction_raw | ||
733 | KernelVersion: 2.6.38 | ||
734 | Contact: linux-iio@vger.kernel.org | ||
735 | Description: | ||
736 | This attribute is used to read the amount of quadrature error | ||
737 | present in the device at a given time. | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-rbd b/Documentation/ABI/testing/sysfs-bus-rbd index dbedafb095e2..bcd88eb7ebcd 100644 --- a/Documentation/ABI/testing/sysfs-bus-rbd +++ b/Documentation/ABI/testing/sysfs-bus-rbd | |||
@@ -65,11 +65,11 @@ snap_* | |||
65 | Entries under /sys/bus/rbd/devices/<dev-id>/snap_<snap-name> | 65 | Entries under /sys/bus/rbd/devices/<dev-id>/snap_<snap-name> |
66 | ------------------------------------------------------------- | 66 | ------------------------------------------------------------- |
67 | 67 | ||
68 | id | 68 | snap_id |
69 | 69 | ||
70 | The rados internal snapshot id assigned for this snapshot | 70 | The rados internal snapshot id assigned for this snapshot |
71 | 71 | ||
72 | size | 72 | snap_size |
73 | 73 | ||
74 | The size of the image when this snapshot was taken. | 74 | The size of the image when this snapshot was taken. |
75 | 75 | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb index 7c22a532fdfb..6df4e6f57560 100644 --- a/Documentation/ABI/testing/sysfs-bus-usb +++ b/Documentation/ABI/testing/sysfs-bus-usb | |||
@@ -135,6 +135,17 @@ Description: | |||
135 | for the device and attempt to bind to it. For example: | 135 | for the device and attempt to bind to it. For example: |
136 | # echo "8086 10f5" > /sys/bus/usb/drivers/foo/new_id | 136 | # echo "8086 10f5" > /sys/bus/usb/drivers/foo/new_id |
137 | 137 | ||
138 | Reading from this file will list all dynamically added | ||
139 | device IDs in the same format, with one entry per | ||
140 | line. For example: | ||
141 | # cat /sys/bus/usb/drivers/foo/new_id | ||
142 | 8086 10f5 | ||
143 | dead beef 06 | ||
144 | f00d cafe | ||
145 | |||
146 | The list will be truncated at PAGE_SIZE bytes due to | ||
147 | sysfs restrictions. | ||
148 | |||
138 | What: /sys/bus/usb-serial/drivers/.../new_id | 149 | What: /sys/bus/usb-serial/drivers/.../new_id |
139 | Date: October 2011 | 150 | Date: October 2011 |
140 | Contact: linux-usb@vger.kernel.org | 151 | Contact: linux-usb@vger.kernel.org |
@@ -157,6 +168,10 @@ Description: | |||
157 | match the driver to the device. For example: | 168 | match the driver to the device. For example: |
158 | # echo "046d c315" > /sys/bus/usb/drivers/foo/remove_id | 169 | # echo "046d c315" > /sys/bus/usb/drivers/foo/remove_id |
159 | 170 | ||
171 | Reading from this file will list the dynamically added | ||
172 | device IDs, exactly like reading from the entry | ||
173 | "/sys/bus/usb/drivers/.../new_id" | ||
174 | |||
160 | What: /sys/bus/usb/device/.../avoid_reset_quirk | 175 | What: /sys/bus/usb/device/.../avoid_reset_quirk |
161 | Date: December 2009 | 176 | Date: December 2009 |
162 | Contact: Oliver Neukum <oliver@neukum.org> | 177 | Contact: Oliver Neukum <oliver@neukum.org> |
@@ -189,7 +204,7 @@ Contact: Matthew Garrett <mjg@redhat.com> | |||
189 | Description: | 204 | Description: |
190 | Some information about whether a given USB device is | 205 | Some information about whether a given USB device is |
191 | physically fixed to the platform can be inferred from a | 206 | physically fixed to the platform can be inferred from a |
192 | combination of hub decriptor bits and platform-specific data | 207 | combination of hub descriptor bits and platform-specific data |
193 | such as ACPI. This file will read either "removable" or | 208 | such as ACPI. This file will read either "removable" or |
194 | "fixed" if the information is available, and "unknown" | 209 | "fixed" if the information is available, and "unknown" |
195 | otherwise. \ No newline at end of file | 210 | otherwise. |
diff --git a/Documentation/ABI/testing/sysfs-class-backlight-driver-lm3533 b/Documentation/ABI/testing/sysfs-class-backlight-driver-lm3533 new file mode 100644 index 000000000000..77cf7ac949af --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-backlight-driver-lm3533 | |||
@@ -0,0 +1,48 @@ | |||
1 | What: /sys/class/backlight/<backlight>/als_channel | ||
2 | Date: May 2012 | ||
3 | KernelVersion: 3.5 | ||
4 | Contact: Johan Hovold <jhovold@gmail.com> | ||
5 | Description: | ||
6 | Get the ALS output channel used as input in | ||
7 | ALS-current-control mode (0, 1), where | ||
8 | |||
9 | 0 - out_current0 (backlight 0) | ||
10 | 1 - out_current1 (backlight 1) | ||
11 | |||
12 | What: /sys/class/backlight/<backlight>/als_en | ||
13 | Date: May 2012 | ||
14 | KernelVersion: 3.5 | ||
15 | Contact: Johan Hovold <jhovold@gmail.com> | ||
16 | Description: | ||
17 | Enable ALS-current-control mode (0, 1). | ||
18 | |||
19 | What: /sys/class/backlight/<backlight>/id | ||
20 | Date: April 2012 | ||
21 | KernelVersion: 3.5 | ||
22 | Contact: Johan Hovold <jhovold@gmail.com> | ||
23 | Description: | ||
24 | Get the id of this backlight (0, 1). | ||
25 | |||
26 | What: /sys/class/backlight/<backlight>/linear | ||
27 | Date: April 2012 | ||
28 | KernelVersion: 3.5 | ||
29 | Contact: Johan Hovold <jhovold@gmail.com> | ||
30 | Description: | ||
31 | Set the brightness-mapping mode (0, 1), where | ||
32 | |||
33 | 0 - exponential mode | ||
34 | 1 - linear mode | ||
35 | |||
36 | What: /sys/class/backlight/<backlight>/pwm | ||
37 | Date: April 2012 | ||
38 | KernelVersion: 3.5 | ||
39 | Contact: Johan Hovold <jhovold@gmail.com> | ||
40 | Description: | ||
41 | Set the PWM-input control mask (5 bits), where | ||
42 | |||
43 | bit 5 - PWM-input enabled in Zone 4 | ||
44 | bit 4 - PWM-input enabled in Zone 3 | ||
45 | bit 3 - PWM-input enabled in Zone 2 | ||
46 | bit 2 - PWM-input enabled in Zone 1 | ||
47 | bit 1 - PWM-input enabled in Zone 0 | ||
48 | bit 0 - PWM-input enabled | ||
diff --git a/Documentation/ABI/testing/sysfs-class-extcon b/Documentation/ABI/testing/sysfs-class-extcon new file mode 100644 index 000000000000..20ab361bd8c6 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-extcon | |||
@@ -0,0 +1,97 @@ | |||
1 | What: /sys/class/extcon/.../ | ||
2 | Date: February 2012 | ||
3 | Contact: MyungJoo Ham <myungjoo.ham@samsung.com> | ||
4 | Description: | ||
5 | Provide a place in sysfs for the extcon objects. | ||
6 | This allows accessing extcon specific variables. | ||
7 | The name of extcon object denoted as ... is the name given | ||
8 | with extcon_dev_register. | ||
9 | |||
10 | One extcon device denotes a single external connector | ||
11 | port. An external connector may have multiple cables | ||
12 | attached simultaneously. Many of docks, cradles, and | ||
13 | accessory cables have such capability. For example, | ||
14 | the 30-pin port of Nuri board (/arch/arm/mach-exynos) | ||
15 | may have both HDMI and Charger attached, or analog audio, | ||
16 | video, and USB cables attached simulteneously. | ||
17 | |||
18 | If there are cables mutually exclusive with each other, | ||
19 | such binary relations may be expressed with extcon_dev's | ||
20 | mutually_exclusive array. | ||
21 | |||
22 | What: /sys/class/extcon/.../name | ||
23 | Date: February 2012 | ||
24 | Contact: MyungJoo Ham <myungjoo.ham@samsung.com> | ||
25 | Description: | ||
26 | The /sys/class/extcon/.../name shows the name of the extcon | ||
27 | object. If the extcon object has an optional callback | ||
28 | "show_name" defined, the callback will provide the name with | ||
29 | this sysfs node. | ||
30 | |||
31 | What: /sys/class/extcon/.../state | ||
32 | Date: February 2012 | ||
33 | Contact: MyungJoo Ham <myungjoo.ham@samsung.com> | ||
34 | Description: | ||
35 | The /sys/class/extcon/.../state shows and stores the cable | ||
36 | attach/detach information of the corresponding extcon object. | ||
37 | If the extcon object has an optional callback "show_state" | ||
38 | defined, the showing function is overriden with the optional | ||
39 | callback. | ||
40 | |||
41 | If the default callback for showing function is used, the | ||
42 | format is like this: | ||
43 | # cat state | ||
44 | USB_OTG=1 | ||
45 | HDMI=0 | ||
46 | TA=1 | ||
47 | EAR_JACK=0 | ||
48 | # | ||
49 | In this example, the extcon device have USB_OTG and TA | ||
50 | cables attached and HDMI and EAR_JACK cables detached. | ||
51 | |||
52 | In order to update the state of an extcon device, enter a hex | ||
53 | state number starting with 0x. | ||
54 | echo 0xHEX > state | ||
55 | |||
56 | This updates the whole state of the extcon dev. | ||
57 | Inputs of all the methods are required to meet the | ||
58 | mutually_exclusive contidions if they exist. | ||
59 | |||
60 | It is recommended to use this "global" state interface if | ||
61 | you need to enter the value atomically. The later state | ||
62 | interface associated with each cable cannot update | ||
63 | multiple cable states of an extcon device simultaneously. | ||
64 | |||
65 | What: /sys/class/extcon/.../cable.x/name | ||
66 | Date: February 2012 | ||
67 | Contact: MyungJoo Ham <myungjoo.ham@samsung.com> | ||
68 | Description: | ||
69 | The /sys/class/extcon/.../cable.x/name shows the name of cable | ||
70 | "x" (integer between 0 and 31) of an extcon device. | ||
71 | |||
72 | What: /sys/class/extcon/.../cable.x/state | ||
73 | Date: February 2012 | ||
74 | Contact: MyungJoo Ham <myungjoo.ham@samsung.com> | ||
75 | Description: | ||
76 | The /sys/class/extcon/.../cable.x/name shows and stores the | ||
77 | state of cable "x" (integer between 0 and 31) of an extcon | ||
78 | device. The state value is either 0 (detached) or 1 | ||
79 | (attached). | ||
80 | |||
81 | What: /sys/class/extcon/.../mutually_exclusive/... | ||
82 | Date: December 2011 | ||
83 | Contact: MyungJoo Ham <myungjoo.ham@samsung.com> | ||
84 | Description: | ||
85 | Shows the relations of mutually exclusiveness. For example, | ||
86 | if the mutually_exclusive array of extcon_dev is | ||
87 | {0x3, 0x5, 0xC, 0x0}, the, the output is: | ||
88 | # ls mutually_exclusive/ | ||
89 | 0x3 | ||
90 | 0x5 | ||
91 | 0xc | ||
92 | # | ||
93 | |||
94 | Note that mutually_exclusive is a sub-directory of the extcon | ||
95 | device and the file names under the mutually_exclusive | ||
96 | directory show the mutually-exclusive sets, not the contents | ||
97 | of the files. | ||
diff --git a/Documentation/ABI/testing/sysfs-class-led-driver-lm3533 b/Documentation/ABI/testing/sysfs-class-led-driver-lm3533 new file mode 100644 index 000000000000..620ebb3b9baa --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-led-driver-lm3533 | |||
@@ -0,0 +1,65 @@ | |||
1 | What: /sys/class/leds/<led>/als_channel | ||
2 | Date: May 2012 | ||
3 | KernelVersion: 3.5 | ||
4 | Contact: Johan Hovold <jhovold@gmail.com> | ||
5 | Description: | ||
6 | Set the ALS output channel to use as input in | ||
7 | ALS-current-control mode (1, 2), where | ||
8 | |||
9 | 1 - out_current1 | ||
10 | 2 - out_current2 | ||
11 | |||
12 | What: /sys/class/leds/<led>/als_en | ||
13 | Date: May 2012 | ||
14 | KernelVersion: 3.5 | ||
15 | Contact: Johan Hovold <jhovold@gmail.com> | ||
16 | Description: | ||
17 | Enable ALS-current-control mode (0, 1). | ||
18 | |||
19 | What: /sys/class/leds/<led>/falltime | ||
20 | What: /sys/class/leds/<led>/risetime | ||
21 | Date: April 2012 | ||
22 | KernelVersion: 3.5 | ||
23 | Contact: Johan Hovold <jhovold@gmail.com> | ||
24 | Description: | ||
25 | Set the pattern generator fall and rise times (0..7), where | ||
26 | |||
27 | 0 - 2048 us | ||
28 | 1 - 262 ms | ||
29 | 2 - 524 ms | ||
30 | 3 - 1.049 s | ||
31 | 4 - 2.097 s | ||
32 | 5 - 4.194 s | ||
33 | 6 - 8.389 s | ||
34 | 7 - 16.78 s | ||
35 | |||
36 | What: /sys/class/leds/<led>/id | ||
37 | Date: April 2012 | ||
38 | KernelVersion: 3.5 | ||
39 | Contact: Johan Hovold <jhovold@gmail.com> | ||
40 | Description: | ||
41 | Get the id of this led (0..3). | ||
42 | |||
43 | What: /sys/class/leds/<led>/linear | ||
44 | Date: April 2012 | ||
45 | KernelVersion: 3.5 | ||
46 | Contact: Johan Hovold <jhovold@gmail.com> | ||
47 | Description: | ||
48 | Set the brightness-mapping mode (0, 1), where | ||
49 | |||
50 | 0 - exponential mode | ||
51 | 1 - linear mode | ||
52 | |||
53 | What: /sys/class/leds/<led>/pwm | ||
54 | Date: April 2012 | ||
55 | KernelVersion: 3.5 | ||
56 | Contact: Johan Hovold <jhovold@gmail.com> | ||
57 | Description: | ||
58 | Set the PWM-input control mask (5 bits), where | ||
59 | |||
60 | bit 5 - PWM-input enabled in Zone 4 | ||
61 | bit 4 - PWM-input enabled in Zone 3 | ||
62 | bit 3 - PWM-input enabled in Zone 2 | ||
63 | bit 2 - PWM-input enabled in Zone 1 | ||
64 | bit 1 - PWM-input enabled in Zone 0 | ||
65 | bit 0 - PWM-input enabled | ||
diff --git a/Documentation/ABI/testing/sysfs-devices-power b/Documentation/ABI/testing/sysfs-devices-power index 840f7d64d483..45000f0db4d4 100644 --- a/Documentation/ABI/testing/sysfs-devices-power +++ b/Documentation/ABI/testing/sysfs-devices-power | |||
@@ -96,16 +96,26 @@ Description: | |||
96 | is read-only. If the device is not enabled to wake up the | 96 | is read-only. If the device is not enabled to wake up the |
97 | system from sleep states, this attribute is not present. | 97 | system from sleep states, this attribute is not present. |
98 | 98 | ||
99 | What: /sys/devices/.../power/wakeup_hit_count | 99 | What: /sys/devices/.../power/wakeup_abort_count |
100 | Date: September 2010 | 100 | Date: February 2012 |
101 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 101 | Contact: Rafael J. Wysocki <rjw@sisk.pl> |
102 | Description: | 102 | Description: |
103 | The /sys/devices/.../wakeup_hit_count attribute contains the | 103 | The /sys/devices/.../wakeup_abort_count attribute contains the |
104 | number of times the processing of a wakeup event associated with | 104 | number of times the processing of a wakeup event associated with |
105 | the device might prevent the system from entering a sleep state. | 105 | the device might have aborted system transition into a sleep |
106 | This attribute is read-only. If the device is not enabled to | 106 | state in progress. This attribute is read-only. If the device |
107 | wake up the system from sleep states, this attribute is not | 107 | is not enabled to wake up the system from sleep states, this |
108 | present. | 108 | attribute is not present. |
109 | |||
110 | What: /sys/devices/.../power/wakeup_expire_count | ||
111 | Date: February 2012 | ||
112 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | ||
113 | Description: | ||
114 | The /sys/devices/.../wakeup_expire_count attribute contains the | ||
115 | number of times a wakeup event associated with the device has | ||
116 | been reported with a timeout that expired. This attribute is | ||
117 | read-only. If the device is not enabled to wake up the system | ||
118 | from sleep states, this attribute is not present. | ||
109 | 119 | ||
110 | What: /sys/devices/.../power/wakeup_active | 120 | What: /sys/devices/.../power/wakeup_active |
111 | Date: September 2010 | 121 | Date: September 2010 |
@@ -148,6 +158,17 @@ Description: | |||
148 | not enabled to wake up the system from sleep states, this | 158 | not enabled to wake up the system from sleep states, this |
149 | attribute is not present. | 159 | attribute is not present. |
150 | 160 | ||
161 | What: /sys/devices/.../power/wakeup_prevent_sleep_time_ms | ||
162 | Date: February 2012 | ||
163 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | ||
164 | Description: | ||
165 | The /sys/devices/.../wakeup_prevent_sleep_time_ms attribute | ||
166 | contains the total time the device has been preventing | ||
167 | opportunistic transitions to sleep states from occuring. | ||
168 | This attribute is read-only. If the device is not enabled to | ||
169 | wake up the system from sleep states, this attribute is not | ||
170 | present. | ||
171 | |||
151 | What: /sys/devices/.../power/autosuspend_delay_ms | 172 | What: /sys/devices/.../power/autosuspend_delay_ms |
152 | Date: September 2010 | 173 | Date: September 2010 |
153 | Contact: Alan Stern <stern@rowland.harvard.edu> | 174 | Contact: Alan Stern <stern@rowland.harvard.edu> |
diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu index e7be75b96e4b..5dab36448b44 100644 --- a/Documentation/ABI/testing/sysfs-devices-system-cpu +++ b/Documentation/ABI/testing/sysfs-devices-system-cpu | |||
@@ -9,31 +9,6 @@ Description: | |||
9 | 9 | ||
10 | /sys/devices/system/cpu/cpu#/ | 10 | /sys/devices/system/cpu/cpu#/ |
11 | 11 | ||
12 | What: /sys/devices/system/cpu/sched_mc_power_savings | ||
13 | /sys/devices/system/cpu/sched_smt_power_savings | ||
14 | Date: June 2006 | ||
15 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> | ||
16 | Description: Discover and adjust the kernel's multi-core scheduler support. | ||
17 | |||
18 | Possible values are: | ||
19 | |||
20 | 0 - No power saving load balance (default value) | ||
21 | 1 - Fill one thread/core/package first for long running threads | ||
22 | 2 - Also bias task wakeups to semi-idle cpu package for power | ||
23 | savings | ||
24 | |||
25 | sched_mc_power_savings is dependent upon SCHED_MC, which is | ||
26 | itself architecture dependent. | ||
27 | |||
28 | sched_smt_power_savings is dependent upon SCHED_SMT, which | ||
29 | is itself architecture dependent. | ||
30 | |||
31 | The two files are independent of each other. It is possible | ||
32 | that one file may be present without the other. | ||
33 | |||
34 | Introduced by git commit 5c45bf27. | ||
35 | |||
36 | |||
37 | What: /sys/devices/system/cpu/kernel_max | 12 | What: /sys/devices/system/cpu/kernel_max |
38 | /sys/devices/system/cpu/offline | 13 | /sys/devices/system/cpu/offline |
39 | /sys/devices/system/cpu/online | 14 | /sys/devices/system/cpu/online |
diff --git a/Documentation/ABI/testing/sysfs-driver-wacom b/Documentation/ABI/testing/sysfs-driver-wacom index 0130d6683c14..8d55a83d6921 100644 --- a/Documentation/ABI/testing/sysfs-driver-wacom +++ b/Documentation/ABI/testing/sysfs-driver-wacom | |||
@@ -9,15 +9,24 @@ Description: | |||
9 | or 0 otherwise. Writing to this file one of these values | 9 | or 0 otherwise. Writing to this file one of these values |
10 | switches reporting speed. | 10 | switches reporting speed. |
11 | 11 | ||
12 | What: /sys/class/leds/0005\:056A\:00BD.0001\:selector\:*/ | ||
13 | Date: May 2012 | ||
14 | Kernel Version: 3.5 | ||
15 | Contact: linux-bluetooth@vger.kernel.org | ||
16 | Description: | ||
17 | LED selector for Intuos4 WL. There are 4 leds, but only one LED | ||
18 | can be lit at a time. Max brightness is 127. | ||
19 | |||
12 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/led | 20 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/led |
13 | Date: August 2011 | 21 | Date: August 2011 |
14 | Contact: linux-input@vger.kernel.org | 22 | Contact: linux-input@vger.kernel.org |
15 | Description: | 23 | Description: |
16 | Attribute group for control of the status LEDs and the OLEDs. | 24 | Attribute group for control of the status LEDs and the OLEDs. |
17 | This attribute group is only available for Intuos 4 M, L, | 25 | This attribute group is only available for Intuos 4 M, L, |
18 | and XL (with LEDs and OLEDs) and Cintiq 21UX2 and Cintiq 24HD | 26 | and XL (with LEDs and OLEDs), Intuos 5 (LEDs only), and Cintiq |
19 | (LEDs only). Therefore its presence implicitly signifies the | 27 | 21UX2 and Cintiq 24HD (LEDs only). Therefore its presence |
20 | presence of said LEDs and OLEDs on the tablet device. | 28 | implicitly signifies the presence of said LEDs and OLEDs on the |
29 | tablet device. | ||
21 | 30 | ||
22 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status0_luminance | 31 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status0_luminance |
23 | Date: August 2011 | 32 | Date: August 2011 |
@@ -40,10 +49,10 @@ What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led0 | |||
40 | Date: August 2011 | 49 | Date: August 2011 |
41 | Contact: linux-input@vger.kernel.org | 50 | Contact: linux-input@vger.kernel.org |
42 | Description: | 51 | Description: |
43 | Writing to this file sets which one of the four (for Intuos 4) | 52 | Writing to this file sets which one of the four (for Intuos 4 |
44 | or of the right four (for Cintiq 21UX2 and Cintiq 24HD) status | 53 | and Intuos 5) or of the right four (for Cintiq 21UX2 and Cintiq |
45 | LEDs is active (0..3). The other three LEDs on the same side are | 54 | 24HD) status LEDs is active (0..3). The other three LEDs on the |
46 | always inactive. | 55 | same side are always inactive. |
47 | 56 | ||
48 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led1_select | 57 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led1_select |
49 | Date: September 2011 | 58 | Date: September 2011 |
diff --git a/Documentation/ABI/testing/sysfs-power b/Documentation/ABI/testing/sysfs-power index b464d12761ba..31725ffeeb3a 100644 --- a/Documentation/ABI/testing/sysfs-power +++ b/Documentation/ABI/testing/sysfs-power | |||
@@ -172,3 +172,62 @@ Description: | |||
172 | 172 | ||
173 | Reading from this file will display the current value, which is | 173 | Reading from this file will display the current value, which is |
174 | set to 1 MB by default. | 174 | set to 1 MB by default. |
175 | |||
176 | What: /sys/power/autosleep | ||
177 | Date: April 2012 | ||
178 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | ||
179 | Description: | ||
180 | The /sys/power/autosleep file can be written one of the strings | ||
181 | returned by reads from /sys/power/state. If that happens, a | ||
182 | work item attempting to trigger a transition of the system to | ||
183 | the sleep state represented by that string is queued up. This | ||
184 | attempt will only succeed if there are no active wakeup sources | ||
185 | in the system at that time. After every execution, regardless | ||
186 | of whether or not the attempt to put the system to sleep has | ||
187 | succeeded, the work item requeues itself until user space | ||
188 | writes "off" to /sys/power/autosleep. | ||
189 | |||
190 | Reading from this file causes the last string successfully | ||
191 | written to it to be returned. | ||
192 | |||
193 | What: /sys/power/wake_lock | ||
194 | Date: February 2012 | ||
195 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | ||
196 | Description: | ||
197 | The /sys/power/wake_lock file allows user space to create | ||
198 | wakeup source objects and activate them on demand (if one of | ||
199 | those wakeup sources is active, reads from the | ||
200 | /sys/power/wakeup_count file block or return false). When a | ||
201 | string without white space is written to /sys/power/wake_lock, | ||
202 | it will be assumed to represent a wakeup source name. If there | ||
203 | is a wakeup source object with that name, it will be activated | ||
204 | (unless active already). Otherwise, a new wakeup source object | ||
205 | will be registered, assigned the given name and activated. | ||
206 | If a string written to /sys/power/wake_lock contains white | ||
207 | space, the part of the string preceding the white space will be | ||
208 | regarded as a wakeup source name and handled as descrived above. | ||
209 | The other part of the string will be regarded as a timeout (in | ||
210 | nanoseconds) such that the wakeup source will be automatically | ||
211 | deactivated after it has expired. The timeout, if present, is | ||
212 | set regardless of the current state of the wakeup source object | ||
213 | in question. | ||
214 | |||
215 | Reads from this file return a string consisting of the names of | ||
216 | wakeup sources created with the help of it that are active at | ||
217 | the moment, separated with spaces. | ||
218 | |||
219 | |||
220 | What: /sys/power/wake_unlock | ||
221 | Date: February 2012 | ||
222 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | ||
223 | Description: | ||
224 | The /sys/power/wake_unlock file allows user space to deactivate | ||
225 | wakeup sources created with the help of /sys/power/wake_lock. | ||
226 | When a string is written to /sys/power/wake_unlock, it will be | ||
227 | assumed to represent the name of a wakeup source to deactivate. | ||
228 | If a wakeup source object of that name exists and is active at | ||
229 | the moment, it will be deactivated. | ||
230 | |||
231 | Reads from this file return a string consisting of the names of | ||
232 | wakeup sources created with the help of /sys/power/wake_lock | ||
233 | that are inactive at the moment, separated with spaces. | ||
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 66725a3d30dc..bc3d9f8c0a90 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile | |||
@@ -6,7 +6,7 @@ | |||
6 | # To add a new book the only step required is to add the book to the | 6 | # To add a new book the only step required is to add the book to the |
7 | # list of DOCBOOKS. | 7 | # list of DOCBOOKS. |
8 | 8 | ||
9 | DOCBOOKS := z8530book.xml mcabook.xml device-drivers.xml \ | 9 | DOCBOOKS := z8530book.xml device-drivers.xml \ |
10 | kernel-hacking.xml kernel-locking.xml deviceiobook.xml \ | 10 | kernel-hacking.xml kernel-locking.xml deviceiobook.xml \ |
11 | writing_usb_driver.xml networking.xml \ | 11 | writing_usb_driver.xml networking.xml \ |
12 | kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \ | 12 | kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \ |
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl index 7160652a8736..00687ee9d363 100644 --- a/Documentation/DocBook/kernel-api.tmpl +++ b/Documentation/DocBook/kernel-api.tmpl | |||
@@ -212,19 +212,6 @@ X!Edrivers/pci/hotplug.c | |||
212 | <sect1><title>PCI Hotplug Support Library</title> | 212 | <sect1><title>PCI Hotplug Support Library</title> |
213 | !Edrivers/pci/hotplug/pci_hotplug_core.c | 213 | !Edrivers/pci/hotplug/pci_hotplug_core.c |
214 | </sect1> | 214 | </sect1> |
215 | <sect1><title>MCA Architecture</title> | ||
216 | <sect2><title>MCA Device Functions</title> | ||
217 | <para> | ||
218 | Refer to the file arch/x86/kernel/mca_32.c for more information. | ||
219 | </para> | ||
220 | <!-- FIXME: Removed for now since no structured comments in source | ||
221 | X!Earch/x86/kernel/mca_32.c | ||
222 | --> | ||
223 | </sect2> | ||
224 | <sect2><title>MCA Bus DMA</title> | ||
225 | !Iarch/x86/include/asm/mca_dma.h | ||
226 | </sect2> | ||
227 | </sect1> | ||
228 | </chapter> | 215 | </chapter> |
229 | 216 | ||
230 | <chapter id="firmware"> | 217 | <chapter id="firmware"> |
diff --git a/Documentation/DocBook/kernel-hacking.tmpl b/Documentation/DocBook/kernel-hacking.tmpl index 07a9c48de5a2..eee71426ecb8 100644 --- a/Documentation/DocBook/kernel-hacking.tmpl +++ b/Documentation/DocBook/kernel-hacking.tmpl | |||
@@ -1289,7 +1289,7 @@ static struct block_device_operations opt_fops = { | |||
1289 | * Sparc assembly will do this to ya. | 1289 | * Sparc assembly will do this to ya. |
1290 | */ | 1290 | */ |
1291 | C_LABEL(cputypvar): | 1291 | C_LABEL(cputypvar): |
1292 | .asciz "compatability" | 1292 | .asciz "compatibility" |
1293 | 1293 | ||
1294 | /* Tested on SS-5, SS-10. Probably someone at Sun applied a spell-checker. */ | 1294 | /* Tested on SS-5, SS-10. Probably someone at Sun applied a spell-checker. */ |
1295 | .align 4 | 1295 | .align 4 |
diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl index 31df1aa00710..deb71baed328 100644 --- a/Documentation/DocBook/libata.tmpl +++ b/Documentation/DocBook/libata.tmpl | |||
@@ -918,7 +918,7 @@ and other resources, etc. | |||
918 | <title>HSM violation</title> | 918 | <title>HSM violation</title> |
919 | <para> | 919 | <para> |
920 | This error is indicated when STATUS value doesn't match HSM | 920 | This error is indicated when STATUS value doesn't match HSM |
921 | requirement during issuing or excution any ATA/ATAPI command. | 921 | requirement during issuing or execution any ATA/ATAPI command. |
922 | </para> | 922 | </para> |
923 | 923 | ||
924 | <itemizedlist> | 924 | <itemizedlist> |
diff --git a/Documentation/DocBook/mcabook.tmpl b/Documentation/DocBook/mcabook.tmpl deleted file mode 100644 index 467ccac6ec50..000000000000 --- a/Documentation/DocBook/mcabook.tmpl +++ /dev/null | |||
@@ -1,107 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" | ||
3 | "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []> | ||
4 | |||
5 | <book id="MCAGuide"> | ||
6 | <bookinfo> | ||
7 | <title>MCA Driver Programming Interface</title> | ||
8 | |||
9 | <authorgroup> | ||
10 | <author> | ||
11 | <firstname>Alan</firstname> | ||
12 | <surname>Cox</surname> | ||
13 | <affiliation> | ||
14 | <address> | ||
15 | <email>alan@lxorguk.ukuu.org.uk</email> | ||
16 | </address> | ||
17 | </affiliation> | ||
18 | </author> | ||
19 | <author> | ||
20 | <firstname>David</firstname> | ||
21 | <surname>Weinehall</surname> | ||
22 | </author> | ||
23 | <author> | ||
24 | <firstname>Chris</firstname> | ||
25 | <surname>Beauregard</surname> | ||
26 | </author> | ||
27 | </authorgroup> | ||
28 | |||
29 | <copyright> | ||
30 | <year>2000</year> | ||
31 | <holder>Alan Cox</holder> | ||
32 | <holder>David Weinehall</holder> | ||
33 | <holder>Chris Beauregard</holder> | ||
34 | </copyright> | ||
35 | |||
36 | <legalnotice> | ||
37 | <para> | ||
38 | This documentation is free software; you can redistribute | ||
39 | it and/or modify it under the terms of the GNU General Public | ||
40 | License as published by the Free Software Foundation; either | ||
41 | version 2 of the License, or (at your option) any later | ||
42 | version. | ||
43 | </para> | ||
44 | |||
45 | <para> | ||
46 | This program is distributed in the hope that it will be | ||
47 | useful, but WITHOUT ANY WARRANTY; without even the implied | ||
48 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
49 | See the GNU General Public License for more details. | ||
50 | </para> | ||
51 | |||
52 | <para> | ||
53 | You should have received a copy of the GNU General Public | ||
54 | License along with this program; if not, write to the Free | ||
55 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, | ||
56 | MA 02111-1307 USA | ||
57 | </para> | ||
58 | |||
59 | <para> | ||
60 | For more details see the file COPYING in the source | ||
61 | distribution of Linux. | ||
62 | </para> | ||
63 | </legalnotice> | ||
64 | </bookinfo> | ||
65 | |||
66 | <toc></toc> | ||
67 | |||
68 | <chapter id="intro"> | ||
69 | <title>Introduction</title> | ||
70 | <para> | ||
71 | The MCA bus functions provide a generalised interface to find MCA | ||
72 | bus cards, to claim them for a driver, and to read and manipulate POS | ||
73 | registers without being aware of the motherboard internals or | ||
74 | certain deep magic specific to onboard devices. | ||
75 | </para> | ||
76 | <para> | ||
77 | The basic interface to the MCA bus devices is the slot. Each slot | ||
78 | is numbered and virtual slot numbers are assigned to the internal | ||
79 | devices. Using a pci_dev as other busses do does not really make | ||
80 | sense in the MCA context as the MCA bus resources require card | ||
81 | specific interpretation. | ||
82 | </para> | ||
83 | <para> | ||
84 | Finally the MCA bus functions provide a parallel set of DMA | ||
85 | functions mimicing the ISA bus DMA functions as closely as possible, | ||
86 | although also supporting the additional DMA functionality on the | ||
87 | MCA bus controllers. | ||
88 | </para> | ||
89 | </chapter> | ||
90 | <chapter id="bugs"> | ||
91 | <title>Known Bugs And Assumptions</title> | ||
92 | <para> | ||
93 | None. | ||
94 | </para> | ||
95 | </chapter> | ||
96 | |||
97 | <chapter id="pubfunctions"> | ||
98 | <title>Public Functions Provided</title> | ||
99 | !Edrivers/mca/mca-legacy.c | ||
100 | </chapter> | ||
101 | |||
102 | <chapter id="dmafunctions"> | ||
103 | <title>DMA Functions Provided</title> | ||
104 | !Iarch/x86/include/asm/mca_dma.h | ||
105 | </chapter> | ||
106 | |||
107 | </book> | ||
diff --git a/Documentation/DocBook/media/Makefile b/Documentation/DocBook/media/Makefile index 6628b4b9cac4..362520992ced 100644 --- a/Documentation/DocBook/media/Makefile +++ b/Documentation/DocBook/media/Makefile | |||
@@ -70,6 +70,8 @@ IOCTLS = \ | |||
70 | VIDIOC_SUBDEV_ENUM_MBUS_CODE \ | 70 | VIDIOC_SUBDEV_ENUM_MBUS_CODE \ |
71 | VIDIOC_SUBDEV_ENUM_FRAME_SIZE \ | 71 | VIDIOC_SUBDEV_ENUM_FRAME_SIZE \ |
72 | VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \ | 72 | VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \ |
73 | VIDIOC_SUBDEV_G_SELECTION \ | ||
74 | VIDIOC_SUBDEV_S_SELECTION \ | ||
73 | 75 | ||
74 | TYPES = \ | 76 | TYPES = \ |
75 | $(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/linux/videodev2.h) \ | 77 | $(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/linux/videodev2.h) \ |
@@ -193,7 +195,7 @@ DVB_DOCUMENTED = \ | |||
193 | # | 195 | # |
194 | 196 | ||
195 | install_media_images = \ | 197 | install_media_images = \ |
196 | $(Q)cp $(OBJIMGFILES) $(MEDIA_OBJ_DIR)/media_api | 198 | $(Q)cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api |
197 | 199 | ||
198 | $(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64 | 200 | $(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64 |
199 | $(Q)base64 -d $< >$@ | 201 | $(Q)base64 -d $< >$@ |
diff --git a/Documentation/DocBook/media/dvb/dvbproperty.xml b/Documentation/DocBook/media/dvb/dvbproperty.xml index c7a4ca517859..e633c097a8d1 100644 --- a/Documentation/DocBook/media/dvb/dvbproperty.xml +++ b/Documentation/DocBook/media/dvb/dvbproperty.xml | |||
@@ -531,6 +531,139 @@ typedef enum fe_delivery_system { | |||
531 | here are referring to what can be found in the TMCC-structure - | 531 | here are referring to what can be found in the TMCC-structure - |
532 | independent of the mode.</para> | 532 | independent of the mode.</para> |
533 | </section> | 533 | </section> |
534 | <section id="DTV-ATSCMH-FIC-VER"> | ||
535 | <title><constant>DTV_ATSCMH_FIC_VER</constant></title> | ||
536 | <para>Version number of the FIC (Fast Information Channel) signaling data.</para> | ||
537 | <para>FIC is used for relaying information to allow rapid service acquisition by the receiver.</para> | ||
538 | <para>Possible values: 0, 1, 2, 3, ..., 30, 31</para> | ||
539 | </section> | ||
540 | <section id="DTV-ATSCMH-PARADE-ID"> | ||
541 | <title><constant>DTV_ATSCMH_PARADE_ID</constant></title> | ||
542 | <para>Parade identification number</para> | ||
543 | <para>A parade is a collection of up to eight MH groups, conveying one or two ensembles.</para> | ||
544 | <para>Possible values: 0, 1, 2, 3, ..., 126, 127</para> | ||
545 | </section> | ||
546 | <section id="DTV-ATSCMH-NOG"> | ||
547 | <title><constant>DTV_ATSCMH_NOG</constant></title> | ||
548 | <para>Number of MH groups per MH subframe for a designated parade.</para> | ||
549 | <para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para> | ||
550 | </section> | ||
551 | <section id="DTV-ATSCMH-TNOG"> | ||
552 | <title><constant>DTV_ATSCMH_TNOG</constant></title> | ||
553 | <para>Total number of MH groups including all MH groups belonging to all MH parades in one MH subframe.</para> | ||
554 | <para>Possible values: 0, 1, 2, 3, ..., 30, 31</para> | ||
555 | </section> | ||
556 | <section id="DTV-ATSCMH-SGN"> | ||
557 | <title><constant>DTV_ATSCMH_SGN</constant></title> | ||
558 | <para>Start group number.</para> | ||
559 | <para>Possible values: 0, 1, 2, 3, ..., 14, 15</para> | ||
560 | </section> | ||
561 | <section id="DTV-ATSCMH-PRC"> | ||
562 | <title><constant>DTV_ATSCMH_PRC</constant></title> | ||
563 | <para>Parade repetition cycle.</para> | ||
564 | <para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para> | ||
565 | </section> | ||
566 | <section id="DTV-ATSCMH-RS-FRAME-MODE"> | ||
567 | <title><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></title> | ||
568 | <para>RS frame mode.</para> | ||
569 | <para>Possible values are:</para> | ||
570 | <programlisting> | ||
571 | typedef enum atscmh_rs_frame_mode { | ||
572 | ATSCMH_RSFRAME_PRI_ONLY = 0, | ||
573 | ATSCMH_RSFRAME_PRI_SEC = 1, | ||
574 | } atscmh_rs_frame_mode_t; | ||
575 | </programlisting> | ||
576 | </section> | ||
577 | <section id="DTV-ATSCMH-RS-FRAME-ENSEMBLE"> | ||
578 | <title><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></title> | ||
579 | <para>RS frame ensemble.</para> | ||
580 | <para>Possible values are:</para> | ||
581 | <programlisting> | ||
582 | typedef enum atscmh_rs_frame_ensemble { | ||
583 | ATSCMH_RSFRAME_ENS_PRI = 0, | ||
584 | ATSCMH_RSFRAME_ENS_SEC = 1, | ||
585 | } atscmh_rs_frame_ensemble_t; | ||
586 | </programlisting> | ||
587 | </section> | ||
588 | <section id="DTV-ATSCMH-RS-CODE-MODE-PRI"> | ||
589 | <title><constant>DTV_ATSCMH_RS_CODE_MODE_PRI</constant></title> | ||
590 | <para>RS code mode (primary).</para> | ||
591 | <para>Possible values are:</para> | ||
592 | <programlisting> | ||
593 | typedef enum atscmh_rs_code_mode { | ||
594 | ATSCMH_RSCODE_211_187 = 0, | ||
595 | ATSCMH_RSCODE_223_187 = 1, | ||
596 | ATSCMH_RSCODE_235_187 = 2, | ||
597 | } atscmh_rs_code_mode_t; | ||
598 | </programlisting> | ||
599 | </section> | ||
600 | <section id="DTV-ATSCMH-RS-CODE-MODE-SEC"> | ||
601 | <title><constant>DTV_ATSCMH_RS_CODE_MODE_SEC</constant></title> | ||
602 | <para>RS code mode (secondary).</para> | ||
603 | <para>Possible values are:</para> | ||
604 | <programlisting> | ||
605 | typedef enum atscmh_rs_code_mode { | ||
606 | ATSCMH_RSCODE_211_187 = 0, | ||
607 | ATSCMH_RSCODE_223_187 = 1, | ||
608 | ATSCMH_RSCODE_235_187 = 2, | ||
609 | } atscmh_rs_code_mode_t; | ||
610 | </programlisting> | ||
611 | </section> | ||
612 | <section id="DTV-ATSCMH-SCCC-BLOCK-MODE"> | ||
613 | <title><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></title> | ||
614 | <para>Series Concatenated Convolutional Code Block Mode.</para> | ||
615 | <para>Possible values are:</para> | ||
616 | <programlisting> | ||
617 | typedef enum atscmh_sccc_block_mode { | ||
618 | ATSCMH_SCCC_BLK_SEP = 0, | ||
619 | ATSCMH_SCCC_BLK_COMB = 1, | ||
620 | } atscmh_sccc_block_mode_t; | ||
621 | </programlisting> | ||
622 | </section> | ||
623 | <section id="DTV-ATSCMH-SCCC-CODE-MODE-A"> | ||
624 | <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></title> | ||
625 | <para>Series Concatenated Convolutional Code Rate.</para> | ||
626 | <para>Possible values are:</para> | ||
627 | <programlisting> | ||
628 | typedef enum atscmh_sccc_code_mode { | ||
629 | ATSCMH_SCCC_CODE_HLF = 0, | ||
630 | ATSCMH_SCCC_CODE_QTR = 1, | ||
631 | } atscmh_sccc_code_mode_t; | ||
632 | </programlisting> | ||
633 | </section> | ||
634 | <section id="DTV-ATSCMH-SCCC-CODE-MODE-B"> | ||
635 | <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></title> | ||
636 | <para>Series Concatenated Convolutional Code Rate.</para> | ||
637 | <para>Possible values are:</para> | ||
638 | <programlisting> | ||
639 | typedef enum atscmh_sccc_code_mode { | ||
640 | ATSCMH_SCCC_CODE_HLF = 0, | ||
641 | ATSCMH_SCCC_CODE_QTR = 1, | ||
642 | } atscmh_sccc_code_mode_t; | ||
643 | </programlisting> | ||
644 | </section> | ||
645 | <section id="DTV-ATSCMH-SCCC-CODE-MODE-C"> | ||
646 | <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></title> | ||
647 | <para>Series Concatenated Convolutional Code Rate.</para> | ||
648 | <para>Possible values are:</para> | ||
649 | <programlisting> | ||
650 | typedef enum atscmh_sccc_code_mode { | ||
651 | ATSCMH_SCCC_CODE_HLF = 0, | ||
652 | ATSCMH_SCCC_CODE_QTR = 1, | ||
653 | } atscmh_sccc_code_mode_t; | ||
654 | </programlisting> | ||
655 | </section> | ||
656 | <section id="DTV-ATSCMH-SCCC-CODE-MODE-D"> | ||
657 | <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></title> | ||
658 | <para>Series Concatenated Convolutional Code Rate.</para> | ||
659 | <para>Possible values are:</para> | ||
660 | <programlisting> | ||
661 | typedef enum atscmh_sccc_code_mode { | ||
662 | ATSCMH_SCCC_CODE_HLF = 0, | ||
663 | ATSCMH_SCCC_CODE_QTR = 1, | ||
664 | } atscmh_sccc_code_mode_t; | ||
665 | </programlisting> | ||
666 | </section> | ||
534 | </section> | 667 | </section> |
535 | <section id="DTV-API-VERSION"> | 668 | <section id="DTV-API-VERSION"> |
536 | <title><constant>DTV_API_VERSION</constant></title> | 669 | <title><constant>DTV_API_VERSION</constant></title> |
@@ -774,6 +907,33 @@ typedef enum fe_hierarchy { | |||
774 | <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem> | 907 | <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem> |
775 | </itemizedlist> | 908 | </itemizedlist> |
776 | </section> | 909 | </section> |
910 | <section id="atscmh-params"> | ||
911 | <title>ATSC-MH delivery system</title> | ||
912 | <para>The following parameters are valid for ATSC-MH:</para> | ||
913 | <itemizedlist mark='opencircle'> | ||
914 | <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem> | ||
915 | <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem> | ||
916 | <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem> | ||
917 | <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem> | ||
918 | <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem> | ||
919 | <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem> | ||
920 | <listitem><para><link linkend="DTV-ATSCMH-FIC-VER"><constant>DTV_ATSCMH_FIC_VER</constant></link></para></listitem> | ||
921 | <listitem><para><link linkend="DTV-ATSCMH-PARADE-ID"><constant>DTV_ATSCMH_PARADE_ID</constant></link></para></listitem> | ||
922 | <listitem><para><link linkend="DTV-ATSCMH-NOG"><constant>DTV_ATSCMH_NOG</constant></link></para></listitem> | ||
923 | <listitem><para><link linkend="DTV-ATSCMH-TNOG"><constant>DTV_ATSCMH_TNOG</constant></link></para></listitem> | ||
924 | <listitem><para><link linkend="DTV-ATSCMH-SGN"><constant>DTV_ATSCMH_SGN</constant></link></para></listitem> | ||
925 | <listitem><para><link linkend="DTV-ATSCMH-PRC"><constant>DTV_ATSCMH_PRC</constant></link></para></listitem> | ||
926 | <listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-MODE"><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></link></para></listitem> | ||
927 | <listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-ENSEMBLE"><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></link></para></listitem> | ||
928 | <listitem><para><link linkend="DTV-ATSCMH-CODE-MODE-PRI"><constant>DTV_ATSCMH_CODE_MODE_PRI</constant></link></para></listitem> | ||
929 | <listitem><para><link linkend="DTV-ATSCMH-CODE-MODE-SEC"><constant>DTV_ATSCMH_CODE_MODE_SEC</constant></link></para></listitem> | ||
930 | <listitem><para><link linkend="DTV-ATSCMH-SCCC-BLOCK-MODE"><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></link></para></listitem> | ||
931 | <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-A"><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></link></para></listitem> | ||
932 | <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-B"><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></link></para></listitem> | ||
933 | <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-C"><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></link></para></listitem> | ||
934 | <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-D"><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></link></para></listitem> | ||
935 | </itemizedlist> | ||
936 | </section> | ||
777 | </section> | 937 | </section> |
778 | <section id="frontend-property-cable-systems"> | 938 | <section id="frontend-property-cable-systems"> |
779 | <title>Properties used on cable delivery systems</title> | 939 | <title>Properties used on cable delivery systems</title> |
diff --git a/Documentation/DocBook/media/v4l/biblio.xml b/Documentation/DocBook/media/v4l/biblio.xml index 7dc65c592a87..7c49facecd25 100644 --- a/Documentation/DocBook/media/v4l/biblio.xml +++ b/Documentation/DocBook/media/v4l/biblio.xml | |||
@@ -197,4 +197,33 @@ in the frequency range from 87,5 to 108,0 MHz</title> | |||
197 | <title>NTSC-4: United States RBDS Standard</title> | 197 | <title>NTSC-4: United States RBDS Standard</title> |
198 | </biblioentry> | 198 | </biblioentry> |
199 | 199 | ||
200 | <biblioentry id="iso12232"> | ||
201 | <abbrev>ISO 12232:2006</abbrev> | ||
202 | <authorgroup> | ||
203 | <corpauthor>International Organization for Standardization | ||
204 | (<ulink url="http://www.iso.org">http://www.iso.org</ulink>)</corpauthor> | ||
205 | </authorgroup> | ||
206 | <title>Photography — Digital still cameras — Determination | ||
207 | of exposure index, ISO speed ratings, standard output sensitivity, and | ||
208 | recommended exposure index</title> | ||
209 | </biblioentry> | ||
210 | |||
211 | <biblioentry id="cea861"> | ||
212 | <abbrev>CEA-861-E</abbrev> | ||
213 | <authorgroup> | ||
214 | <corpauthor>Consumer Electronics Association | ||
215 | (<ulink url="http://www.ce.org">http://www.ce.org</ulink>)</corpauthor> | ||
216 | </authorgroup> | ||
217 | <title>A DTV Profile for Uncompressed High Speed Digital Interfaces</title> | ||
218 | </biblioentry> | ||
219 | |||
220 | <biblioentry id="vesadmt"> | ||
221 | <abbrev>VESA DMT</abbrev> | ||
222 | <authorgroup> | ||
223 | <corpauthor>Video Electronics Standards Association | ||
224 | (<ulink url="http://www.vesa.org">http://www.vesa.org</ulink>)</corpauthor> | ||
225 | </authorgroup> | ||
226 | <title>VESA and Industry Standards and Guidelines for Computer Display Monitor Timing (DMT)</title> | ||
227 | </biblioentry> | ||
228 | |||
200 | </bibliography> | 229 | </bibliography> |
diff --git a/Documentation/DocBook/media/v4l/common.xml b/Documentation/DocBook/media/v4l/common.xml index c79278acfb0e..4101aeb56540 100644 --- a/Documentation/DocBook/media/v4l/common.xml +++ b/Documentation/DocBook/media/v4l/common.xml | |||
@@ -724,41 +724,49 @@ if (-1 == ioctl (fd, &VIDIOC-S-STD;, &std_id)) { | |||
724 | } | 724 | } |
725 | </programlisting> | 725 | </programlisting> |
726 | </example> | 726 | </example> |
727 | </section> | ||
727 | <section id="dv-timings"> | 728 | <section id="dv-timings"> |
728 | <title>Digital Video (DV) Timings</title> | 729 | <title>Digital Video (DV) Timings</title> |
729 | <para> | 730 | <para> |
730 | The video standards discussed so far has been dealing with Analog TV and the | 731 | The video standards discussed so far have been dealing with Analog TV and the |
731 | corresponding video timings. Today there are many more different hardware interfaces | 732 | corresponding video timings. Today there are many more different hardware interfaces |
732 | such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry | 733 | such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry |
733 | video signals and there is a need to extend the API to select the video timings | 734 | video signals and there is a need to extend the API to select the video timings |
734 | for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to | 735 | for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to |
735 | the limited bits available, a new set of IOCTLs is added to set/get video timings at | 736 | the limited bits available, a new set of IOCTLs was added to set/get video timings at |
736 | the input and output: </para><itemizedlist> | 737 | the input and output: </para><itemizedlist> |
737 | <listitem> | 738 | <listitem> |
738 | <para>DV Presets: Digital Video (DV) presets. These are IDs representing a | 739 | <para>DV Timings: This will allow applications to define detailed |
740 | video timings for the interface. This includes parameters such as width, height, | ||
741 | polarities, frontporch, backporch etc. The <filename>linux/v4l2-dv-timings.h</filename> | ||
742 | header can be used to get the timings of the formats in the <xref linkend="cea861" /> and | ||
743 | <xref linkend="vesadmt" /> standards. | ||
744 | </para> | ||
745 | </listitem> | ||
746 | <listitem> | ||
747 | <para>DV Presets: Digital Video (DV) presets (<emphasis role="bold">deprecated</emphasis>). | ||
748 | These are IDs representing a | ||
739 | video timing at the input/output. Presets are pre-defined timings implemented | 749 | video timing at the input/output. Presets are pre-defined timings implemented |
740 | by the hardware according to video standards. A __u32 data type is used to represent | 750 | by the hardware according to video standards. A __u32 data type is used to represent |
741 | a preset unlike the bit mask that is used in &v4l2-std-id; allowing future extensions | 751 | a preset unlike the bit mask that is used in &v4l2-std-id; allowing future extensions |
742 | to support as many different presets as needed.</para> | 752 | to support as many different presets as needed. This API is deprecated in favor of the DV Timings |
743 | </listitem> | 753 | API.</para> |
744 | <listitem> | ||
745 | <para>Custom DV Timings: This will allow applications to define more detailed | ||
746 | custom video timings for the interface. This includes parameters such as width, height, | ||
747 | polarities, frontporch, backporch etc. | ||
748 | </para> | ||
749 | </listitem> | 754 | </listitem> |
750 | </itemizedlist> | 755 | </itemizedlist> |
756 | <para>To enumerate and query the attributes of the DV timings supported by a device, | ||
757 | applications use the &VIDIOC-ENUM-DV-TIMINGS; and &VIDIOC-DV-TIMINGS-CAP; ioctls. | ||
758 | To set DV timings for the device, applications use the | ||
759 | &VIDIOC-S-DV-TIMINGS; ioctl and to get current DV timings they use the | ||
760 | &VIDIOC-G-DV-TIMINGS; ioctl. To detect the DV timings as seen by the video receiver applications | ||
761 | use the &VIDIOC-QUERY-DV-TIMINGS; ioctl.</para> | ||
751 | <para>To enumerate and query the attributes of DV presets supported by a device, | 762 | <para>To enumerate and query the attributes of DV presets supported by a device, |
752 | applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current DV preset, | 763 | applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current DV preset, |
753 | applications use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset they use the | 764 | applications use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset they use the |
754 | &VIDIOC-S-DV-PRESET; ioctl.</para> | 765 | &VIDIOC-S-DV-PRESET; ioctl. To detect the preset as seen by the video receiver applications |
755 | <para>To set custom DV timings for the device, applications use the | 766 | use the &VIDIOC-QUERY-DV-PRESET; ioctl.</para> |
756 | &VIDIOC-S-DV-TIMINGS; ioctl and to get current custom DV timings they use the | ||
757 | &VIDIOC-G-DV-TIMINGS; ioctl.</para> | ||
758 | <para>Applications can make use of the <xref linkend="input-capabilities" /> and | 767 | <para>Applications can make use of the <xref linkend="input-capabilities" /> and |
759 | <xref linkend="output-capabilities"/> flags to decide what ioctls are available to set the | 768 | <xref linkend="output-capabilities"/> flags to decide what ioctls are available to set the |
760 | video timings for the device.</para> | 769 | video timings for the device.</para> |
761 | </section> | ||
762 | </section> | 770 | </section> |
763 | 771 | ||
764 | &sub-controls; | 772 | &sub-controls; |
diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml index bce97c50391b..ea42ef824948 100644 --- a/Documentation/DocBook/media/v4l/compat.xml +++ b/Documentation/DocBook/media/v4l/compat.xml | |||
@@ -2407,6 +2407,54 @@ details.</para> | |||
2407 | <para>Added <link linkend="jpeg-controls">JPEG compression control | 2407 | <para>Added <link linkend="jpeg-controls">JPEG compression control |
2408 | class</link>.</para> | 2408 | class</link>.</para> |
2409 | </listitem> | 2409 | </listitem> |
2410 | <listitem> | ||
2411 | <para>Extended the DV Timings API: | ||
2412 | &VIDIOC-ENUM-DV-TIMINGS;, &VIDIOC-QUERY-DV-TIMINGS; and | ||
2413 | &VIDIOC-DV-TIMINGS-CAP;.</para> | ||
2414 | </listitem> | ||
2415 | </orderedlist> | ||
2416 | </section> | ||
2417 | |||
2418 | <section> | ||
2419 | <title>V4L2 in Linux 3.5</title> | ||
2420 | <orderedlist> | ||
2421 | <listitem> | ||
2422 | <para>Added integer menus, the new type will be | ||
2423 | V4L2_CTRL_TYPE_INTEGER_MENU.</para> | ||
2424 | </listitem> | ||
2425 | <listitem> | ||
2426 | <para>Added selection API for V4L2 subdev interface: | ||
2427 | &VIDIOC-SUBDEV-G-SELECTION; and | ||
2428 | &VIDIOC-SUBDEV-S-SELECTION;.</para> | ||
2429 | </listitem> | ||
2430 | <listitem> | ||
2431 | <para> Added <constant>V4L2_COLORFX_ANTIQUE</constant>, | ||
2432 | <constant>V4L2_COLORFX_ART_FREEZE</constant>, | ||
2433 | <constant>V4L2_COLORFX_AQUA</constant>, | ||
2434 | <constant>V4L2_COLORFX_SILHOUETTE</constant>, | ||
2435 | <constant>V4L2_COLORFX_SOLARIZATION</constant>, | ||
2436 | <constant>V4L2_COLORFX_VIVID</constant> and | ||
2437 | <constant>V4L2_COLORFX_ARBITRARY_CBCR</constant> menu items | ||
2438 | to the <constant>V4L2_CID_COLORFX</constant> control.</para> | ||
2439 | </listitem> | ||
2440 | <listitem> | ||
2441 | <para> Added <constant>V4L2_CID_COLORFX_CBCR</constant> control.</para> | ||
2442 | </listitem> | ||
2443 | <listitem> | ||
2444 | <para> Added camera controls <constant>V4L2_CID_AUTO_EXPOSURE_BIAS</constant>, | ||
2445 | <constant>V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE</constant>, | ||
2446 | <constant>V4L2_CID_IMAGE_STABILIZATION</constant>, | ||
2447 | <constant>V4L2_CID_ISO_SENSITIVITY</constant>, | ||
2448 | <constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>, | ||
2449 | <constant>V4L2_CID_EXPOSURE_METERING</constant>, | ||
2450 | <constant>V4L2_CID_SCENE_MODE</constant>, | ||
2451 | <constant>V4L2_CID_3A_LOCK</constant>, | ||
2452 | <constant>V4L2_CID_AUTO_FOCUS_START</constant>, | ||
2453 | <constant>V4L2_CID_AUTO_FOCUS_STOP</constant>, | ||
2454 | <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant> and | ||
2455 | <constant>V4L2_CID_AUTO_FOCUS_RANGE</constant>. | ||
2456 | </para> | ||
2457 | </listitem> | ||
2410 | </orderedlist> | 2458 | </orderedlist> |
2411 | </section> | 2459 | </section> |
2412 | 2460 | ||
@@ -2508,6 +2556,10 @@ and may change in the future.</para> | |||
2508 | ioctls.</para> | 2556 | ioctls.</para> |
2509 | </listitem> | 2557 | </listitem> |
2510 | <listitem> | 2558 | <listitem> |
2559 | <para>&VIDIOC-DECODER-CMD; and &VIDIOC-TRY-DECODER-CMD; | ||
2560 | ioctls.</para> | ||
2561 | </listitem> | ||
2562 | <listitem> | ||
2511 | <para>&VIDIOC-DBG-G-REGISTER; and &VIDIOC-DBG-S-REGISTER; | 2563 | <para>&VIDIOC-DBG-G-REGISTER; and &VIDIOC-DBG-S-REGISTER; |
2512 | ioctls.</para> | 2564 | ioctls.</para> |
2513 | </listitem> | 2565 | </listitem> |
@@ -2515,6 +2567,10 @@ ioctls.</para> | |||
2515 | <para>&VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para> | 2567 | <para>&VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para> |
2516 | </listitem> | 2568 | </listitem> |
2517 | <listitem> | 2569 | <listitem> |
2570 | <para>&VIDIOC-ENUM-DV-TIMINGS;, &VIDIOC-QUERY-DV-TIMINGS; and | ||
2571 | &VIDIOC-DV-TIMINGS-CAP; ioctls.</para> | ||
2572 | </listitem> | ||
2573 | <listitem> | ||
2518 | <para>Flash API. <xref linkend="flash-controls" /></para> | 2574 | <para>Flash API. <xref linkend="flash-controls" /></para> |
2519 | </listitem> | 2575 | </listitem> |
2520 | <listitem> | 2576 | <listitem> |
@@ -2523,6 +2579,14 @@ ioctls.</para> | |||
2523 | <listitem> | 2579 | <listitem> |
2524 | <para>Selection API. <xref linkend="selection-api" /></para> | 2580 | <para>Selection API. <xref linkend="selection-api" /></para> |
2525 | </listitem> | 2581 | </listitem> |
2582 | <listitem> | ||
2583 | <para>Sub-device selection API: &VIDIOC-SUBDEV-G-SELECTION; | ||
2584 | and &VIDIOC-SUBDEV-S-SELECTION; ioctls.</para> | ||
2585 | </listitem> | ||
2586 | <listitem> | ||
2587 | <para><link linkend="v4l2-auto-focus-area"><constant> | ||
2588 | V4L2_CID_AUTO_FOCUS_AREA</constant></link> control.</para> | ||
2589 | </listitem> | ||
2526 | </itemizedlist> | 2590 | </itemizedlist> |
2527 | </section> | 2591 | </section> |
2528 | 2592 | ||
@@ -2538,6 +2602,17 @@ interfaces and should not be implemented in new drivers.</para> | |||
2538 | <constant>VIDIOC_S_MPEGCOMP</constant> ioctls. Use Extended Controls, | 2602 | <constant>VIDIOC_S_MPEGCOMP</constant> ioctls. Use Extended Controls, |
2539 | <xref linkend="extended-controls" />.</para> | 2603 | <xref linkend="extended-controls" />.</para> |
2540 | </listitem> | 2604 | </listitem> |
2605 | <listitem> | ||
2606 | <para>&VIDIOC-G-DV-PRESET;, &VIDIOC-S-DV-PRESET;, &VIDIOC-ENUM-DV-PRESETS; and | ||
2607 | &VIDIOC-QUERY-DV-PRESET; ioctls. Use the DV Timings API (<xref linkend="dv-timings" />).</para> | ||
2608 | </listitem> | ||
2609 | <listitem> | ||
2610 | <para><constant>VIDIOC_SUBDEV_G_CROP</constant> and | ||
2611 | <constant>VIDIOC_SUBDEV_S_CROP</constant> ioctls. Use | ||
2612 | <constant>VIDIOC_SUBDEV_G_SELECTION</constant> and | ||
2613 | <constant>VIDIOC_SUBDEV_S_SELECTION</constant>, <xref | ||
2614 | linkend="vidioc-subdev-g-selection" />.</para> | ||
2615 | </listitem> | ||
2541 | </itemizedlist> | 2616 | </itemizedlist> |
2542 | </section> | 2617 | </section> |
2543 | </section> | 2618 | </section> |
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml index b84f25e9cc87..676bc46f9c52 100644 --- a/Documentation/DocBook/media/v4l/controls.xml +++ b/Documentation/DocBook/media/v4l/controls.xml | |||
@@ -285,18 +285,92 @@ minimum value disables backlight compensation.</entry> | |||
285 | <row id="v4l2-colorfx"> | 285 | <row id="v4l2-colorfx"> |
286 | <entry><constant>V4L2_CID_COLORFX</constant></entry> | 286 | <entry><constant>V4L2_CID_COLORFX</constant></entry> |
287 | <entry>enum</entry> | 287 | <entry>enum</entry> |
288 | <entry>Selects a color effect. Possible values for | 288 | <entry>Selects a color effect. The following values are defined: |
289 | <constant>enum v4l2_colorfx</constant> are: | 289 | </entry> |
290 | <constant>V4L2_COLORFX_NONE</constant> (0), | 290 | </row><row> |
291 | <constant>V4L2_COLORFX_BW</constant> (1), | 291 | <entry></entry> |
292 | <constant>V4L2_COLORFX_SEPIA</constant> (2), | 292 | <entry></entry> |
293 | <constant>V4L2_COLORFX_NEGATIVE</constant> (3), | 293 | <entrytbl spanname="descr" cols="2"> |
294 | <constant>V4L2_COLORFX_EMBOSS</constant> (4), | 294 | <tbody valign="top"> |
295 | <constant>V4L2_COLORFX_SKETCH</constant> (5), | 295 | <row> |
296 | <constant>V4L2_COLORFX_SKY_BLUE</constant> (6), | 296 | <entry><constant>V4L2_COLORFX_NONE</constant> </entry> |
297 | <constant>V4L2_COLORFX_GRASS_GREEN</constant> (7), | 297 | <entry>Color effect is disabled.</entry> |
298 | <constant>V4L2_COLORFX_SKIN_WHITEN</constant> (8) and | 298 | </row> |
299 | <constant>V4L2_COLORFX_VIVID</constant> (9).</entry> | 299 | <row> |
300 | <entry><constant>V4L2_COLORFX_ANTIQUE</constant> </entry> | ||
301 | <entry>An aging (old photo) effect.</entry> | ||
302 | </row> | ||
303 | <row> | ||
304 | <entry><constant>V4L2_COLORFX_ART_FREEZE</constant> </entry> | ||
305 | <entry>Frost color effect.</entry> | ||
306 | </row> | ||
307 | <row> | ||
308 | <entry><constant>V4L2_COLORFX_AQUA</constant> </entry> | ||
309 | <entry>Water color, cool tone.</entry> | ||
310 | </row> | ||
311 | <row> | ||
312 | <entry><constant>V4L2_COLORFX_BW</constant> </entry> | ||
313 | <entry>Black and white.</entry> | ||
314 | </row> | ||
315 | <row> | ||
316 | <entry><constant>V4L2_COLORFX_EMBOSS</constant> </entry> | ||
317 | <entry>Emboss, the highlights and shadows replace light/dark boundaries | ||
318 | and low contrast areas are set to a gray background.</entry> | ||
319 | </row> | ||
320 | <row> | ||
321 | <entry><constant>V4L2_COLORFX_GRASS_GREEN</constant> </entry> | ||
322 | <entry>Grass green.</entry> | ||
323 | </row> | ||
324 | <row> | ||
325 | <entry><constant>V4L2_COLORFX_NEGATIVE</constant> </entry> | ||
326 | <entry>Negative.</entry> | ||
327 | </row> | ||
328 | <row> | ||
329 | <entry><constant>V4L2_COLORFX_SEPIA</constant> </entry> | ||
330 | <entry>Sepia tone.</entry> | ||
331 | </row> | ||
332 | <row> | ||
333 | <entry><constant>V4L2_COLORFX_SKETCH</constant> </entry> | ||
334 | <entry>Sketch.</entry> | ||
335 | </row> | ||
336 | <row> | ||
337 | <entry><constant>V4L2_COLORFX_SKIN_WHITEN</constant> </entry> | ||
338 | <entry>Skin whiten.</entry> | ||
339 | </row> | ||
340 | <row> | ||
341 | <entry><constant>V4L2_COLORFX_SKY_BLUE</constant> </entry> | ||
342 | <entry>Sky blue.</entry> | ||
343 | </row> | ||
344 | <row> | ||
345 | <entry><constant>V4L2_COLORFX_SOLARIZATION</constant> </entry> | ||
346 | <entry>Solarization, the image is partially reversed in tone, | ||
347 | only color values above or below a certain threshold are inverted. | ||
348 | </entry> | ||
349 | </row> | ||
350 | <row> | ||
351 | <entry><constant>V4L2_COLORFX_SILHOUETTE</constant> </entry> | ||
352 | <entry>Silhouette (outline).</entry> | ||
353 | </row> | ||
354 | <row> | ||
355 | <entry><constant>V4L2_COLORFX_VIVID</constant> </entry> | ||
356 | <entry>Vivid colors.</entry> | ||
357 | </row> | ||
358 | <row> | ||
359 | <entry><constant>V4L2_COLORFX_SET_CBCR</constant> </entry> | ||
360 | <entry>The Cb and Cr chroma components are replaced by fixed | ||
361 | coefficients determined by <constant>V4L2_CID_COLORFX_CBCR</constant> | ||
362 | control.</entry> | ||
363 | </row> | ||
364 | </tbody> | ||
365 | </entrytbl> | ||
366 | </row> | ||
367 | <row> | ||
368 | <entry><constant>V4L2_CID_COLORFX_CBCR</constant></entry> | ||
369 | <entry>integer</entry> | ||
370 | <entry>Determines the Cb and Cr coefficients for <constant>V4L2_COLORFX_SET_CBCR</constant> | ||
371 | color effect. Bits [7:0] of the supplied 32 bit value are interpreted as | ||
372 | Cr component, bits [15:8] as Cb component and bits [31:16] must be zero. | ||
373 | </entry> | ||
300 | </row> | 374 | </row> |
301 | <row> | 375 | <row> |
302 | <entry><constant>V4L2_CID_ROTATE</constant></entry> | 376 | <entry><constant>V4L2_CID_ROTATE</constant></entry> |
@@ -2023,7 +2097,7 @@ Possible values are:</entry> | |||
2023 | <entry>integer</entry> | 2097 | <entry>integer</entry> |
2024 | </row> | 2098 | </row> |
2025 | <row><entry spanname="descr">Cyclic intra macroblock refresh. This is the number of continuous macroblocks | 2099 | <row><entry spanname="descr">Cyclic intra macroblock refresh. This is the number of continuous macroblocks |
2026 | refreshed every frame. Each frame a succesive set of macroblocks is refreshed until the cycle completes and starts from the | 2100 | refreshed every frame. Each frame a successive set of macroblocks is refreshed until the cycle completes and starts from the |
2027 | top of the frame. Applicable to H264, H263 and MPEG4 encoder.</entry> | 2101 | top of the frame. Applicable to H264, H263 and MPEG4 encoder.</entry> |
2028 | </row> | 2102 | </row> |
2029 | 2103 | ||
@@ -2183,7 +2257,7 @@ Applicable to the MPEG4 and H264 encoders.</entry> | |||
2183 | <entry>integer</entry> | 2257 | <entry>integer</entry> |
2184 | </row> | 2258 | </row> |
2185 | <row><entry spanname="descr">The Video Buffer Verifier size in kilobytes, it is used as a limitation of frame skip. | 2259 | <row><entry spanname="descr">The Video Buffer Verifier size in kilobytes, it is used as a limitation of frame skip. |
2186 | The VBV is defined in the standard as a mean to verify that the produced stream will be succesfully decoded. | 2260 | The VBV is defined in the standard as a mean to verify that the produced stream will be successfully decoded. |
2187 | The standard describes it as "Part of a hypothetical decoder that is conceptually connected to the | 2261 | The standard describes it as "Part of a hypothetical decoder that is conceptually connected to the |
2188 | output of the encoder. Its purpose is to provide a constraint on the variability of the data rate that an | 2262 | output of the encoder. Its purpose is to provide a constraint on the variability of the data rate that an |
2189 | encoder or editing process may produce.". | 2263 | encoder or editing process may produce.". |
@@ -2196,7 +2270,7 @@ Applicable to the MPEG1, MPEG2, MPEG4 encoders.</entry> | |||
2196 | <entry>integer</entry> | 2270 | <entry>integer</entry> |
2197 | </row> | 2271 | </row> |
2198 | <row><entry spanname="descr">The Coded Picture Buffer size in kilobytes, it is used as a limitation of frame skip. | 2272 | <row><entry spanname="descr">The Coded Picture Buffer size in kilobytes, it is used as a limitation of frame skip. |
2199 | The CPB is defined in the H264 standard as a mean to verify that the produced stream will be succesfully decoded. | 2273 | The CPB is defined in the H264 standard as a mean to verify that the produced stream will be successfully decoded. |
2200 | Applicable to the H264 encoder.</entry> | 2274 | Applicable to the H264 encoder.</entry> |
2201 | </row> | 2275 | </row> |
2202 | 2276 | ||
@@ -2775,6 +2849,51 @@ remain constant.</entry> | |||
2775 | <row><entry></entry></row> | 2849 | <row><entry></entry></row> |
2776 | 2850 | ||
2777 | <row> | 2851 | <row> |
2852 | <entry spanname="id"><constant>V4L2_CID_EXPOSURE_BIAS</constant> </entry> | ||
2853 | <entry>integer menu</entry> | ||
2854 | </row><row><entry spanname="descr"> Determines the automatic | ||
2855 | exposure compensation, it is effective only when <constant>V4L2_CID_EXPOSURE_AUTO</constant> | ||
2856 | control is set to <constant>AUTO</constant>, <constant>SHUTTER_PRIORITY </constant> | ||
2857 | or <constant>APERTURE_PRIORITY</constant>. | ||
2858 | It is expressed in terms of EV, drivers should interpret the values as 0.001 EV | ||
2859 | units, where the value 1000 stands for +1 EV. | ||
2860 | <para>Increasing the exposure compensation value is equivalent to decreasing | ||
2861 | the exposure value (EV) and will increase the amount of light at the image | ||
2862 | sensor. The camera performs the exposure compensation by adjusting absolute | ||
2863 | exposure time and/or aperture.</para></entry> | ||
2864 | </row> | ||
2865 | <row><entry></entry></row> | ||
2866 | |||
2867 | <row id="v4l2-exposure-metering"> | ||
2868 | <entry spanname="id"><constant>V4L2_CID_EXPOSURE_METERING</constant> </entry> | ||
2869 | <entry>enum v4l2_exposure_metering</entry> | ||
2870 | </row><row><entry spanname="descr">Determines how the camera measures | ||
2871 | the amount of light available for the frame exposure. Possible values are:</entry> | ||
2872 | </row> | ||
2873 | <row> | ||
2874 | <entrytbl spanname="descr" cols="2"> | ||
2875 | <tbody valign="top"> | ||
2876 | <row> | ||
2877 | <entry><constant>V4L2_EXPOSURE_METERING_AVERAGE</constant> </entry> | ||
2878 | <entry>Use the light information coming from the entire frame | ||
2879 | and average giving no weighting to any particular portion of the metered area. | ||
2880 | </entry> | ||
2881 | </row> | ||
2882 | <row> | ||
2883 | <entry><constant>V4L2_EXPOSURE_METERING_CENTER_WEIGHTED</constant> </entry> | ||
2884 | <entry>Average the light information coming from the entire frame | ||
2885 | giving priority to the center of the metered area.</entry> | ||
2886 | </row> | ||
2887 | <row> | ||
2888 | <entry><constant>V4L2_EXPOSURE_METERING_SPOT</constant> </entry> | ||
2889 | <entry>Measure only very small area at the center of the frame.</entry> | ||
2890 | </row> | ||
2891 | </tbody> | ||
2892 | </entrytbl> | ||
2893 | </row> | ||
2894 | <row><entry></entry></row> | ||
2895 | |||
2896 | <row> | ||
2778 | <entry spanname="id"><constant>V4L2_CID_PAN_RELATIVE</constant> </entry> | 2897 | <entry spanname="id"><constant>V4L2_CID_PAN_RELATIVE</constant> </entry> |
2779 | <entry>integer</entry> | 2898 | <entry>integer</entry> |
2780 | </row><row><entry spanname="descr">This control turns the | 2899 | </row><row><entry spanname="descr">This control turns the |
@@ -2857,13 +2976,107 @@ negative values towards infinity. This is a write-only control.</entry> | |||
2857 | <row> | 2976 | <row> |
2858 | <entry spanname="id"><constant>V4L2_CID_FOCUS_AUTO</constant> </entry> | 2977 | <entry spanname="id"><constant>V4L2_CID_FOCUS_AUTO</constant> </entry> |
2859 | <entry>boolean</entry> | 2978 | <entry>boolean</entry> |
2860 | </row><row><entry spanname="descr">Enables automatic focus | 2979 | </row><row><entry spanname="descr">Enables continuous automatic |
2861 | adjustments. The effect of manual focus adjustments while this feature | 2980 | focus adjustments. The effect of manual focus adjustments while this feature |
2862 | is enabled is undefined, drivers should ignore such requests.</entry> | 2981 | is enabled is undefined, drivers should ignore such requests.</entry> |
2863 | </row> | 2982 | </row> |
2864 | <row><entry></entry></row> | 2983 | <row><entry></entry></row> |
2865 | 2984 | ||
2866 | <row> | 2985 | <row> |
2986 | <entry spanname="id"><constant>V4L2_CID_AUTO_FOCUS_START</constant> </entry> | ||
2987 | <entry>button</entry> | ||
2988 | </row><row><entry spanname="descr">Starts single auto focus process. | ||
2989 | The effect of setting this control when <constant>V4L2_CID_FOCUS_AUTO</constant> | ||
2990 | is set to <constant>TRUE</constant> (1) is undefined, drivers should ignore | ||
2991 | such requests.</entry> | ||
2992 | </row> | ||
2993 | <row><entry></entry></row> | ||
2994 | |||
2995 | <row> | ||
2996 | <entry spanname="id"><constant>V4L2_CID_AUTO_FOCUS_STOP</constant> </entry> | ||
2997 | <entry>button</entry> | ||
2998 | </row><row><entry spanname="descr">Aborts automatic focusing | ||
2999 | started with <constant>V4L2_CID_AUTO_FOCUS_START</constant> control. It is | ||
3000 | effective only when the continuous autofocus is disabled, that is when | ||
3001 | <constant>V4L2_CID_FOCUS_AUTO</constant> control is set to <constant>FALSE | ||
3002 | </constant> (0).</entry> | ||
3003 | </row> | ||
3004 | <row><entry></entry></row> | ||
3005 | |||
3006 | <row id="v4l2-auto-focus-status"> | ||
3007 | <entry spanname="id"> | ||
3008 | <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant> </entry> | ||
3009 | <entry>bitmask</entry> | ||
3010 | </row> | ||
3011 | <row><entry spanname="descr">The automatic focus status. This is a read-only | ||
3012 | control.</entry> | ||
3013 | </row> | ||
3014 | <row> | ||
3015 | <entrytbl spanname="descr" cols="2"> | ||
3016 | <tbody valign="top"> | ||
3017 | <row> | ||
3018 | <entry><constant>V4L2_AUTO_FOCUS_STATUS_IDLE</constant> </entry> | ||
3019 | <entry>Automatic focus is not active.</entry> | ||
3020 | </row> | ||
3021 | <row> | ||
3022 | <entry><constant>V4L2_AUTO_FOCUS_STATUS_BUSY</constant> </entry> | ||
3023 | <entry>Automatic focusing is in progress.</entry> | ||
3024 | </row> | ||
3025 | <row> | ||
3026 | <entry><constant>V4L2_AUTO_FOCUS_STATUS_REACHED</constant> </entry> | ||
3027 | <entry>Focus has been reached.</entry> | ||
3028 | </row> | ||
3029 | <row> | ||
3030 | <entry><constant>V4L2_AUTO_FOCUS_STATUS_FAILED</constant> </entry> | ||
3031 | <entry>Automatic focus has failed, the driver will not | ||
3032 | transition from this state until another action is | ||
3033 | performed by an application.</entry> | ||
3034 | </row> | ||
3035 | </tbody> | ||
3036 | </entrytbl> | ||
3037 | </row> | ||
3038 | <row><entry spanname="descr"> | ||
3039 | Setting <constant>V4L2_LOCK_FOCUS</constant> lock bit of the <constant>V4L2_CID_3A_LOCK | ||
3040 | </constant> control may stop updates of the <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant> | ||
3041 | control value.</entry> | ||
3042 | </row> | ||
3043 | <row><entry></entry></row> | ||
3044 | |||
3045 | <row id="v4l2-auto-focus-range"> | ||
3046 | <entry spanname="id"> | ||
3047 | <constant>V4L2_CID_AUTO_FOCUS_RANGE</constant> </entry> | ||
3048 | <entry>enum v4l2_auto_focus_range</entry> | ||
3049 | </row> | ||
3050 | <row><entry spanname="descr">Determines auto focus distance range | ||
3051 | for which lens may be adjusted. </entry> | ||
3052 | </row> | ||
3053 | <row> | ||
3054 | <entrytbl spanname="descr" cols="2"> | ||
3055 | <tbody valign="top"> | ||
3056 | <row> | ||
3057 | <entry><constant>V4L2_AUTO_FOCUS_RANGE_AUTO</constant> </entry> | ||
3058 | <entry>The camera automatically selects the focus range.</entry> | ||
3059 | </row> | ||
3060 | <row> | ||
3061 | <entry><constant>V4L2_AUTO_FOCUS_RANGE_NORMAL</constant> </entry> | ||
3062 | <entry>Normal distance range, limited for best automatic focus | ||
3063 | performance.</entry> | ||
3064 | </row> | ||
3065 | <row> | ||
3066 | <entry><constant>V4L2_AUTO_FOCUS_RANGE_MACRO</constant> </entry> | ||
3067 | <entry>Macro (close-up) auto focus. The camera will | ||
3068 | use its minimum possible distance for auto focus.</entry> | ||
3069 | </row> | ||
3070 | <row> | ||
3071 | <entry><constant>V4L2_AUTO_FOCUS_RANGE_INFINITY</constant> </entry> | ||
3072 | <entry>The lens is set to focus on an object at infinite distance.</entry> | ||
3073 | </row> | ||
3074 | </tbody> | ||
3075 | </entrytbl> | ||
3076 | </row> | ||
3077 | <row><entry></entry></row> | ||
3078 | |||
3079 | <row> | ||
2867 | <entry spanname="id"><constant>V4L2_CID_ZOOM_ABSOLUTE</constant> </entry> | 3080 | <entry spanname="id"><constant>V4L2_CID_ZOOM_ABSOLUTE</constant> </entry> |
2868 | <entry>integer</entry> | 3081 | <entry>integer</entry> |
2869 | </row><row><entry spanname="descr">Specify the objective lens | 3082 | </row><row><entry spanname="descr">Specify the objective lens |
@@ -2932,6 +3145,295 @@ camera sensor on or off, or specify its strength. Such band-stop filters can | |||
2932 | be used, for example, to filter out the fluorescent light component.</entry> | 3145 | be used, for example, to filter out the fluorescent light component.</entry> |
2933 | </row> | 3146 | </row> |
2934 | <row><entry></entry></row> | 3147 | <row><entry></entry></row> |
3148 | |||
3149 | <row id="v4l2-auto-n-preset-white-balance"> | ||
3150 | <entry spanname="id"><constant>V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE</constant> </entry> | ||
3151 | <entry>enum v4l2_auto_n_preset_white_balance</entry> | ||
3152 | </row><row><entry spanname="descr">Sets white balance to automatic, | ||
3153 | manual or a preset. The presets determine color temperature of the light as | ||
3154 | a hint to the camera for white balance adjustments resulting in most accurate | ||
3155 | color representation. The following white balance presets are listed in order | ||
3156 | of increasing color temperature.</entry> | ||
3157 | </row> | ||
3158 | <row> | ||
3159 | <entrytbl spanname="descr" cols="2"> | ||
3160 | <tbody valign="top"> | ||
3161 | <row> | ||
3162 | <entry><constant>V4L2_WHITE_BALANCE_MANUAL</constant> </entry> | ||
3163 | <entry>Manual white balance.</entry> | ||
3164 | </row> | ||
3165 | <row> | ||
3166 | <entry><constant>V4L2_WHITE_BALANCE_AUTO</constant> </entry> | ||
3167 | <entry>Automatic white balance adjustments.</entry> | ||
3168 | </row> | ||
3169 | <row> | ||
3170 | <entry><constant>V4L2_WHITE_BALANCE_INCANDESCENT</constant> </entry> | ||
3171 | <entry>White balance setting for incandescent (tungsten) lighting. | ||
3172 | It generally cools down the colors and corresponds approximately to 2500...3500 K | ||
3173 | color temperature range.</entry> | ||
3174 | </row> | ||
3175 | <row> | ||
3176 | <entry><constant>V4L2_WHITE_BALANCE_FLUORESCENT</constant> </entry> | ||
3177 | <entry>White balance preset for fluorescent lighting. | ||
3178 | It corresponds approximately to 4000...5000 K color temperature.</entry> | ||
3179 | </row> | ||
3180 | <row> | ||
3181 | <entry><constant>V4L2_WHITE_BALANCE_FLUORESCENT_H</constant> </entry> | ||
3182 | <entry>With this setting the camera will compensate for | ||
3183 | fluorescent H lighting.</entry> | ||
3184 | </row> | ||
3185 | <row> | ||
3186 | <entry><constant>V4L2_WHITE_BALANCE_HORIZON</constant> </entry> | ||
3187 | <entry>White balance setting for horizon daylight. | ||
3188 | It corresponds approximately to 5000 K color temperature.</entry> | ||
3189 | </row> | ||
3190 | <row> | ||
3191 | <entry><constant>V4L2_WHITE_BALANCE_DAYLIGHT</constant> </entry> | ||
3192 | <entry>White balance preset for daylight (with clear sky). | ||
3193 | It corresponds approximately to 5000...6500 K color temperature.</entry> | ||
3194 | </row> | ||
3195 | <row> | ||
3196 | <entry><constant>V4L2_WHITE_BALANCE_FLASH</constant> </entry> | ||
3197 | <entry>With this setting the camera will compensate for the flash | ||
3198 | light. It slightly warms up the colors and corresponds roughly to 5000...5500 K | ||
3199 | color temperature.</entry> | ||
3200 | </row> | ||
3201 | <row> | ||
3202 | <entry><constant>V4L2_WHITE_BALANCE_CLOUDY</constant> </entry> | ||
3203 | <entry>White balance preset for moderately overcast sky. | ||
3204 | This option corresponds approximately to 6500...8000 K color temperature | ||
3205 | range.</entry> | ||
3206 | </row> | ||
3207 | <row> | ||
3208 | <entry><constant>V4L2_WHITE_BALANCE_SHADE</constant> </entry> | ||
3209 | <entry>White balance preset for shade or heavily overcast | ||
3210 | sky. It corresponds approximately to 9000...10000 K color temperature. | ||
3211 | </entry> | ||
3212 | </row> | ||
3213 | </tbody> | ||
3214 | </entrytbl> | ||
3215 | </row> | ||
3216 | <row><entry></entry></row> | ||
3217 | |||
3218 | <row id="v4l2-wide-dynamic-range"> | ||
3219 | <entry spanname="id"><constant>V4L2_CID_WIDE_DYNAMIC_RANGE</constant></entry> | ||
3220 | <entry>boolean</entry> | ||
3221 | </row> | ||
3222 | <row> | ||
3223 | <entry spanname="descr">Enables or disables the camera's wide dynamic | ||
3224 | range feature. This feature allows to obtain clear images in situations where | ||
3225 | intensity of the illumination varies significantly throughout the scene, i.e. | ||
3226 | there are simultaneously very dark and very bright areas. It is most commonly | ||
3227 | realized in cameras by combining two subsequent frames with different exposure | ||
3228 | times. <footnote id="ctypeconv"><para> This control may be changed to a menu | ||
3229 | control in the future, if more options are required.</para></footnote></entry> | ||
3230 | </row> | ||
3231 | <row><entry></entry></row> | ||
3232 | |||
3233 | <row id="v4l2-image-stabilization"> | ||
3234 | <entry spanname="id"><constant>V4L2_CID_IMAGE_STABILIZATION</constant></entry> | ||
3235 | <entry>boolean</entry> | ||
3236 | </row> | ||
3237 | <row> | ||
3238 | <entry spanname="descr">Enables or disables image stabilization. | ||
3239 | <footnoteref linkend="ctypeconv"/></entry> | ||
3240 | </row> | ||
3241 | <row><entry></entry></row> | ||
3242 | |||
3243 | <row> | ||
3244 | <entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY</constant> </entry> | ||
3245 | <entry>integer menu</entry> | ||
3246 | </row><row><entry spanname="descr">Determines ISO equivalent of an | ||
3247 | image sensor indicating the sensor's sensitivity to light. The numbers are | ||
3248 | expressed in arithmetic scale, as per <xref linkend="iso12232" /> standard, | ||
3249 | where doubling the sensor sensitivity is represented by doubling the numerical | ||
3250 | ISO value. Applications should interpret the values as standard ISO values | ||
3251 | multiplied by 1000, e.g. control value 800 stands for ISO 0.8. Drivers will | ||
3252 | usually support only a subset of standard ISO values. The effect of setting | ||
3253 | this control while the <constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant> | ||
3254 | control is set to a value other than <constant>V4L2_CID_ISO_SENSITIVITY_MANUAL | ||
3255 | </constant> is undefined, drivers should ignore such requests.</entry> | ||
3256 | </row> | ||
3257 | <row><entry></entry></row> | ||
3258 | |||
3259 | <row id="v4l2-iso-sensitivity-auto-type"> | ||
3260 | <entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant> </entry> | ||
3261 | <entry>enum v4l2_iso_sensitivity_type</entry> | ||
3262 | </row><row><entry spanname="descr">Enables or disables automatic ISO | ||
3263 | sensitivity adjustments.</entry> | ||
3264 | </row> | ||
3265 | <row> | ||
3266 | <entrytbl spanname="descr" cols="2"> | ||
3267 | <tbody valign="top"> | ||
3268 | <row> | ||
3269 | <entry><constant>V4L2_CID_ISO_SENSITIVITY_MANUAL</constant> </entry> | ||
3270 | <entry>Manual ISO sensitivity.</entry> | ||
3271 | </row> | ||
3272 | <row> | ||
3273 | <entry><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant> </entry> | ||
3274 | <entry>Automatic ISO sensitivity adjustments.</entry> | ||
3275 | </row> | ||
3276 | </tbody> | ||
3277 | </entrytbl> | ||
3278 | </row> | ||
3279 | <row><entry></entry></row> | ||
3280 | |||
3281 | <row id="v4l2-scene-mode"> | ||
3282 | <entry spanname="id"><constant>V4L2_CID_SCENE_MODE</constant> </entry> | ||
3283 | <entry>enum v4l2_scene_mode</entry> | ||
3284 | </row><row><entry spanname="descr">This control allows to select | ||
3285 | scene programs as the camera automatic modes optimized for common shooting | ||
3286 | scenes. Within these modes the camera determines best exposure, aperture, | ||
3287 | focusing, light metering, white balance and equivalent sensitivity. The | ||
3288 | controls of those parameters are influenced by the scene mode control. | ||
3289 | An exact behavior in each mode is subject to the camera specification. | ||
3290 | |||
3291 | <para>When the scene mode feature is not used, this control should be set to | ||
3292 | <constant>V4L2_SCENE_MODE_NONE</constant> to make sure the other possibly | ||
3293 | related controls are accessible. The following scene programs are defined: | ||
3294 | </para> | ||
3295 | </entry> | ||
3296 | </row> | ||
3297 | <row> | ||
3298 | <entrytbl spanname="descr" cols="2"> | ||
3299 | <tbody valign="top"> | ||
3300 | <row> | ||
3301 | <entry><constant>V4L2_SCENE_MODE_NONE</constant> </entry> | ||
3302 | <entry>The scene mode feature is disabled.</entry> | ||
3303 | </row> | ||
3304 | <row> | ||
3305 | <entry><constant>V4L2_SCENE_MODE_BACKLIGHT</constant> </entry> | ||
3306 | <entry>Backlight. Compensates for dark shadows when light is | ||
3307 | coming from behind a subject, also by automatically turning | ||
3308 | on the flash.</entry> | ||
3309 | </row> | ||
3310 | <row> | ||
3311 | <entry><constant>V4L2_SCENE_MODE_BEACH_SNOW</constant> </entry> | ||
3312 | <entry>Beach and snow. This mode compensates for all-white or | ||
3313 | bright scenes, which tend to look gray and low contrast, when camera's automatic | ||
3314 | exposure is based on an average scene brightness. To compensate, this mode | ||
3315 | automatically slightly overexposes the frames. The white balance may also be | ||
3316 | adjusted to compensate for the fact that reflected snow looks bluish rather | ||
3317 | than white.</entry> | ||
3318 | </row> | ||
3319 | <row> | ||
3320 | <entry><constant>V4L2_SCENE_MODE_CANDLELIGHT</constant> </entry> | ||
3321 | <entry>Candle light. The camera generally raises the ISO | ||
3322 | sensitivity and lowers the shutter speed. This mode compensates for relatively | ||
3323 | close subject in the scene. The flash is disabled in order to preserve the | ||
3324 | ambiance of the light.</entry> | ||
3325 | </row> | ||
3326 | <row> | ||
3327 | <entry><constant>V4L2_SCENE_MODE_DAWN_DUSK</constant> </entry> | ||
3328 | <entry>Dawn and dusk. Preserves the colors seen in low | ||
3329 | natural light before dusk and after down. The camera may turn off the flash, | ||
3330 | and automatically focus at infinity. It will usually boost saturation and | ||
3331 | lower the shutter speed.</entry> | ||
3332 | </row> | ||
3333 | <row> | ||
3334 | <entry><constant>V4L2_SCENE_MODE_FALL_COLORS</constant> </entry> | ||
3335 | <entry>Fall colors. Increases saturation and adjusts white | ||
3336 | balance for color enhancement. Pictures of autumn leaves get saturated reds | ||
3337 | and yellows.</entry> | ||
3338 | </row> | ||
3339 | <row> | ||
3340 | <entry><constant>V4L2_SCENE_MODE_FIREWORKS</constant> </entry> | ||
3341 | <entry>Fireworks. Long exposure times are used to capture | ||
3342 | the expanding burst of light from a firework. The camera may invoke image | ||
3343 | stabilization.</entry> | ||
3344 | </row> | ||
3345 | <row> | ||
3346 | <entry><constant>V4L2_SCENE_MODE_LANDSCAPE</constant> </entry> | ||
3347 | <entry>Landscape. The camera may choose a small aperture to | ||
3348 | provide deep depth of field and long exposure duration to help capture detail | ||
3349 | in dim light conditions. The focus is fixed at infinity. Suitable for distant | ||
3350 | and wide scenery.</entry> | ||
3351 | </row> | ||
3352 | <row> | ||
3353 | <entry><constant>V4L2_SCENE_MODE_NIGHT</constant> </entry> | ||
3354 | <entry>Night, also known as Night Landscape. Designed for low | ||
3355 | light conditions, it preserves detail in the dark areas without blowing out bright | ||
3356 | objects. The camera generally sets itself to a medium-to-high ISO sensitivity, | ||
3357 | with a relatively long exposure time, and turns flash off. As such, there will be | ||
3358 | increased image noise and the possibility of blurred image.</entry> | ||
3359 | </row> | ||
3360 | <row> | ||
3361 | <entry><constant>V4L2_SCENE_MODE_PARTY_INDOOR</constant> </entry> | ||
3362 | <entry>Party and indoor. Designed to capture indoor scenes | ||
3363 | that are lit by indoor background lighting as well as the flash. The camera | ||
3364 | usually increases ISO sensitivity, and adjusts exposure for the low light | ||
3365 | conditions.</entry> | ||
3366 | </row> | ||
3367 | <row> | ||
3368 | <entry><constant>V4L2_SCENE_MODE_PORTRAIT</constant> </entry> | ||
3369 | <entry>Portrait. The camera adjusts the aperture so that the | ||
3370 | depth of field is reduced, which helps to isolate the subject against a smooth | ||
3371 | background. Most cameras recognize the presence of faces in the scene and focus | ||
3372 | on them. The color hue is adjusted to enhance skin tones. The intensity of the | ||
3373 | flash is often reduced.</entry> | ||
3374 | </row> | ||
3375 | <row> | ||
3376 | <entry><constant>V4L2_SCENE_MODE_SPORTS</constant> </entry> | ||
3377 | <entry>Sports. Significantly increases ISO and uses a fast | ||
3378 | shutter speed to freeze motion of rapidly-moving subjects. Increased image | ||
3379 | noise may be seen in this mode.</entry> | ||
3380 | </row> | ||
3381 | <row> | ||
3382 | <entry><constant>V4L2_SCENE_MODE_SUNSET</constant> </entry> | ||
3383 | <entry>Sunset. Preserves deep hues seen in sunsets and | ||
3384 | sunrises. It bumps up the saturation.</entry> | ||
3385 | </row> | ||
3386 | <row> | ||
3387 | <entry><constant>V4L2_SCENE_MODE_TEXT</constant> </entry> | ||
3388 | <entry>Text. It applies extra contrast and sharpness, it is | ||
3389 | typically a black-and-white mode optimized for readability. Automatic focus | ||
3390 | may be switched to close-up mode and this setting may also involve some | ||
3391 | lens-distortion correction.</entry> | ||
3392 | </row> | ||
3393 | </tbody> | ||
3394 | </entrytbl> | ||
3395 | </row> | ||
3396 | <row><entry></entry></row> | ||
3397 | |||
3398 | <row> | ||
3399 | <entry spanname="id"><constant>V4L2_CID_3A_LOCK</constant></entry> | ||
3400 | <entry>bitmask</entry> | ||
3401 | </row> | ||
3402 | <row> | ||
3403 | <entry spanname="descr">This control locks or unlocks the automatic | ||
3404 | focus, exposure and white balance. The automatic adjustments can be paused | ||
3405 | independently by setting the corresponding lock bit to 1. The camera then retains | ||
3406 | the settings until the lock bit is cleared. The following lock bits are defined: | ||
3407 | </entry> | ||
3408 | </row> | ||
3409 | <row> | ||
3410 | <entrytbl spanname="descr" cols="2"> | ||
3411 | <tbody valign="top"> | ||
3412 | <row> | ||
3413 | <entry><constant>V4L2_LOCK_EXPOSURE</constant></entry> | ||
3414 | <entry>Automatic exposure adjustments lock.</entry> | ||
3415 | </row> | ||
3416 | <row> | ||
3417 | <entry><constant>V4L2_LOCK_WHITE_BALANCE</constant></entry> | ||
3418 | <entry>Automatic white balance adjustments lock.</entry> | ||
3419 | </row> | ||
3420 | <row> | ||
3421 | <entry><constant>V4L2_LOCK_FOCUS</constant></entry> | ||
3422 | <entry>Automatic focus lock.</entry> | ||
3423 | </row> | ||
3424 | </tbody> | ||
3425 | </entrytbl> | ||
3426 | </row> | ||
3427 | <row><entry spanname="descr"> | ||
3428 | When a given algorithm is not enabled, drivers should ignore requests | ||
3429 | to lock it and should return no error. An example might be an application | ||
3430 | setting bit <constant>V4L2_LOCK_WHITE_BALANCE</constant> when the | ||
3431 | <constant>V4L2_CID_AUTO_WHITE_BALANCE</constant> control is set to | ||
3432 | <constant>FALSE</constant>. The value of this control may be changed | ||
3433 | by exposure, white balance or focus controls.</entry> | ||
3434 | </row> | ||
3435 | <row><entry></entry></row> | ||
3436 | |||
2935 | </tbody> | 3437 | </tbody> |
2936 | </tgroup> | 3438 | </tgroup> |
2937 | </table> | 3439 | </table> |
@@ -3476,7 +3978,7 @@ interface and may change in the future.</para> | |||
3476 | <entry spanname="id"><constant>V4L2_CID_JPEG_CHROMA_SUBSAMPLING</constant></entry> | 3978 | <entry spanname="id"><constant>V4L2_CID_JPEG_CHROMA_SUBSAMPLING</constant></entry> |
3477 | <entry>menu</entry> | 3979 | <entry>menu</entry> |
3478 | </row> | 3980 | </row> |
3479 | <row id="jpeg-chroma-subsampling-control"> | 3981 | <row id="v4l2-jpeg-chroma-subsampling"> |
3480 | <entry spanname="descr">The chroma subsampling factors describe how | 3982 | <entry spanname="descr">The chroma subsampling factors describe how |
3481 | each component of an input image is sampled, in respect to maximum | 3983 | each component of an input image is sampled, in respect to maximum |
3482 | sample rate in each spatial dimension. See <xref linkend="itu-t81"/>, | 3984 | sample rate in each spatial dimension. See <xref linkend="itu-t81"/>, |
@@ -3486,7 +3988,7 @@ interface and may change in the future.</para> | |||
3486 | from RGB to Y'CbCr color space. | 3988 | from RGB to Y'CbCr color space. |
3487 | </entry> | 3989 | </entry> |
3488 | </row> | 3990 | </row> |
3489 | <row> | 3991 | <row id = "v4l2-jpeg-chroma-subsampling"> |
3490 | <entrytbl spanname="descr" cols="2"> | 3992 | <entrytbl spanname="descr" cols="2"> |
3491 | <tbody valign="top"> | 3993 | <tbody valign="top"> |
3492 | <row> | 3994 | <row> |
@@ -3538,12 +4040,12 @@ interface and may change in the future.</para> | |||
3538 | </entry> | 4040 | </entry> |
3539 | </row> | 4041 | </row> |
3540 | <row id="jpeg-quality-control"> | 4042 | <row id="jpeg-quality-control"> |
3541 | <entry spanname="id"><constant>V4L2_CID_JPEG_COMPRESION_QUALITY</constant></entry> | 4043 | <entry spanname="id"><constant>V4L2_CID_JPEG_COMPRESSION_QUALITY</constant></entry> |
3542 | <entry>integer</entry> | 4044 | <entry>integer</entry> |
3543 | </row> | 4045 | </row> |
3544 | <row> | 4046 | <row> |
3545 | <entry spanname="descr"> | 4047 | <entry spanname="descr"> |
3546 | <constant>V4L2_CID_JPEG_COMPRESION_QUALITY</constant> control | 4048 | <constant>V4L2_CID_JPEG_COMPRESSION_QUALITY</constant> control |
3547 | determines trade-off between image quality and size. | 4049 | determines trade-off between image quality and size. |
3548 | It provides simpler method for applications to control image quality, | 4050 | It provides simpler method for applications to control image quality, |
3549 | without a need for direct reconfiguration of luminance and chrominance | 4051 | without a need for direct reconfiguration of luminance and chrominance |
@@ -3551,7 +4053,7 @@ interface and may change in the future.</para> | |||
3551 | 4053 | ||
3552 | In cases where a driver uses quantization tables configured directly | 4054 | In cases where a driver uses quantization tables configured directly |
3553 | by an application, using interfaces defined elsewhere, <constant> | 4055 | by an application, using interfaces defined elsewhere, <constant> |
3554 | V4L2_CID_JPEG_COMPRESION_QUALITY</constant> control should be set | 4056 | V4L2_CID_JPEG_COMPRESSION_QUALITY</constant> control should be set |
3555 | by driver to 0. | 4057 | by driver to 0. |
3556 | 4058 | ||
3557 | <para>The value range of this control is driver-specific. Only | 4059 | <para>The value range of this control is driver-specific. Only |
@@ -3599,4 +4101,172 @@ interface and may change in the future.</para> | |||
3599 | to <xref linkend="itu-t81"/>, <xref linkend="jfif"/>, | 4101 | to <xref linkend="itu-t81"/>, <xref linkend="jfif"/>, |
3600 | <xref linkend="w3c-jpeg-jfif"/>.</para> | 4102 | <xref linkend="w3c-jpeg-jfif"/>.</para> |
3601 | </section> | 4103 | </section> |
4104 | |||
4105 | <section id="image-source-controls"> | ||
4106 | <title>Image Source Control Reference</title> | ||
4107 | |||
4108 | <note> | ||
4109 | <title>Experimental</title> | ||
4110 | |||
4111 | <para>This is an <link | ||
4112 | linkend="experimental">experimental</link> interface and may | ||
4113 | change in the future.</para> | ||
4114 | </note> | ||
4115 | |||
4116 | <para> | ||
4117 | The Image Source control class is intended for low-level | ||
4118 | control of image source devices such as image sensors. The | ||
4119 | devices feature an analogue to digital converter and a bus | ||
4120 | transmitter to transmit the image data out of the device. | ||
4121 | </para> | ||
4122 | |||
4123 | <table pgwide="1" frame="none" id="image-source-control-id"> | ||
4124 | <title>Image Source Control IDs</title> | ||
4125 | |||
4126 | <tgroup cols="4"> | ||
4127 | <colspec colname="c1" colwidth="1*" /> | ||
4128 | <colspec colname="c2" colwidth="6*" /> | ||
4129 | <colspec colname="c3" colwidth="2*" /> | ||
4130 | <colspec colname="c4" colwidth="6*" /> | ||
4131 | <spanspec namest="c1" nameend="c2" spanname="id" /> | ||
4132 | <spanspec namest="c2" nameend="c4" spanname="descr" /> | ||
4133 | <thead> | ||
4134 | <row> | ||
4135 | <entry spanname="id" align="left">ID</entry> | ||
4136 | <entry align="left">Type</entry> | ||
4137 | </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry> | ||
4138 | </row> | ||
4139 | </thead> | ||
4140 | <tbody valign="top"> | ||
4141 | <row><entry></entry></row> | ||
4142 | <row> | ||
4143 | <entry spanname="id"><constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant></entry> | ||
4144 | <entry>class</entry> | ||
4145 | </row> | ||
4146 | <row> | ||
4147 | <entry spanname="descr">The IMAGE_SOURCE class descriptor.</entry> | ||
4148 | </row> | ||
4149 | <row> | ||
4150 | <entry spanname="id"><constant>V4L2_CID_VBLANK</constant></entry> | ||
4151 | <entry>integer</entry> | ||
4152 | </row> | ||
4153 | <row> | ||
4154 | <entry spanname="descr">Vertical blanking. The idle period | ||
4155 | after every frame during which no image data is produced. | ||
4156 | The unit of vertical blanking is a line. Every line has | ||
4157 | length of the image width plus horizontal blanking at the | ||
4158 | pixel rate defined by | ||
4159 | <constant>V4L2_CID_PIXEL_RATE</constant> control in the | ||
4160 | same sub-device.</entry> | ||
4161 | </row> | ||
4162 | <row> | ||
4163 | <entry spanname="id"><constant>V4L2_CID_HBLANK</constant></entry> | ||
4164 | <entry>integer</entry> | ||
4165 | </row> | ||
4166 | <row> | ||
4167 | <entry spanname="descr">Horizontal blanking. The idle | ||
4168 | period after every line of image data during which no | ||
4169 | image data is produced. The unit of horizontal blanking is | ||
4170 | pixels.</entry> | ||
4171 | </row> | ||
4172 | <row> | ||
4173 | <entry spanname="id"><constant>V4L2_CID_ANALOGUE_GAIN</constant></entry> | ||
4174 | <entry>integer</entry> | ||
4175 | </row> | ||
4176 | <row> | ||
4177 | <entry spanname="descr">Analogue gain is gain affecting | ||
4178 | all colour components in the pixel matrix. The gain | ||
4179 | operation is performed in the analogue domain before A/D | ||
4180 | conversion. | ||
4181 | </entry> | ||
4182 | </row> | ||
4183 | <row><entry></entry></row> | ||
4184 | </tbody> | ||
4185 | </tgroup> | ||
4186 | </table> | ||
4187 | |||
4188 | </section> | ||
4189 | |||
4190 | <section id="image-process-controls"> | ||
4191 | <title>Image Process Control Reference</title> | ||
4192 | |||
4193 | <note> | ||
4194 | <title>Experimental</title> | ||
4195 | |||
4196 | <para>This is an <link | ||
4197 | linkend="experimental">experimental</link> interface and may | ||
4198 | change in the future.</para> | ||
4199 | </note> | ||
4200 | |||
4201 | <para> | ||
4202 | The Image Source control class is intended for low-level control of | ||
4203 | image processing functions. Unlike | ||
4204 | <constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant>, the controls in | ||
4205 | this class affect processing the image, and do not control capturing | ||
4206 | of it. | ||
4207 | </para> | ||
4208 | |||
4209 | <table pgwide="1" frame="none" id="image-process-control-id"> | ||
4210 | <title>Image Source Control IDs</title> | ||
4211 | |||
4212 | <tgroup cols="4"> | ||
4213 | <colspec colname="c1" colwidth="1*" /> | ||
4214 | <colspec colname="c2" colwidth="6*" /> | ||
4215 | <colspec colname="c3" colwidth="2*" /> | ||
4216 | <colspec colname="c4" colwidth="6*" /> | ||
4217 | <spanspec namest="c1" nameend="c2" spanname="id" /> | ||
4218 | <spanspec namest="c2" nameend="c4" spanname="descr" /> | ||
4219 | <thead> | ||
4220 | <row> | ||
4221 | <entry spanname="id" align="left">ID</entry> | ||
4222 | <entry align="left">Type</entry> | ||
4223 | </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry> | ||
4224 | </row> | ||
4225 | </thead> | ||
4226 | <tbody valign="top"> | ||
4227 | <row><entry></entry></row> | ||
4228 | <row> | ||
4229 | <entry spanname="id"><constant>V4L2_CID_IMAGE_PROC_CLASS</constant></entry> | ||
4230 | <entry>class</entry> | ||
4231 | </row> | ||
4232 | <row> | ||
4233 | <entry spanname="descr">The IMAGE_PROC class descriptor.</entry> | ||
4234 | </row> | ||
4235 | <row> | ||
4236 | <entry spanname="id"><constant>V4L2_CID_LINK_FREQ</constant></entry> | ||
4237 | <entry>integer menu</entry> | ||
4238 | </row> | ||
4239 | <row> | ||
4240 | <entry spanname="descr">Data bus frequency. Together with the | ||
4241 | media bus pixel code, bus type (clock cycles per sample), the | ||
4242 | data bus frequency defines the pixel rate | ||
4243 | (<constant>V4L2_CID_PIXEL_RATE</constant>) in the | ||
4244 | pixel array (or possibly elsewhere, if the device is not an | ||
4245 | image sensor). The frame rate can be calculated from the pixel | ||
4246 | clock, image width and height and horizontal and vertical | ||
4247 | blanking. While the pixel rate control may be defined elsewhere | ||
4248 | than in the subdev containing the pixel array, the frame rate | ||
4249 | cannot be obtained from that information. This is because only | ||
4250 | on the pixel array it can be assumed that the vertical and | ||
4251 | horizontal blanking information is exact: no other blanking is | ||
4252 | allowed in the pixel array. The selection of frame rate is | ||
4253 | performed by selecting the desired horizontal and vertical | ||
4254 | blanking. The unit of this control is Hz. </entry> | ||
4255 | </row> | ||
4256 | <row> | ||
4257 | <entry spanname="id"><constant>V4L2_CID_PIXEL_RATE</constant></entry> | ||
4258 | <entry>64-bit integer</entry> | ||
4259 | </row> | ||
4260 | <row> | ||
4261 | <entry spanname="descr">Pixel rate in the source pads of | ||
4262 | the subdev. This control is read-only and its unit is | ||
4263 | pixels / second. | ||
4264 | </entry> | ||
4265 | </row> | ||
4266 | <row><entry></entry></row> | ||
4267 | </tbody> | ||
4268 | </tgroup> | ||
4269 | </table> | ||
4270 | |||
4271 | </section> | ||
3602 | </section> | 4272 | </section> |
diff --git a/Documentation/DocBook/media/v4l/dev-subdev.xml b/Documentation/DocBook/media/v4l/dev-subdev.xml index 0916a7343a16..4afcbbec5eda 100644 --- a/Documentation/DocBook/media/v4l/dev-subdev.xml +++ b/Documentation/DocBook/media/v4l/dev-subdev.xml | |||
@@ -76,11 +76,12 @@ | |||
76 | <wordasword>format</wordasword> means the combination of media bus data | 76 | <wordasword>format</wordasword> means the combination of media bus data |
77 | format, frame width and frame height.</para></note> | 77 | format, frame width and frame height.</para></note> |
78 | 78 | ||
79 | <para>Image formats are typically negotiated on video capture and output | 79 | <para>Image formats are typically negotiated on video capture and |
80 | devices using the <link linkend="crop">cropping and scaling</link> ioctls. | 80 | output devices using the format and <link |
81 | The driver is responsible for configuring every block in the video pipeline | 81 | linkend="vidioc-subdev-g-selection">selection</link> ioctls. The |
82 | according to the requested format at the pipeline input and/or | 82 | driver is responsible for configuring every block in the video |
83 | output.</para> | 83 | pipeline according to the requested format at the pipeline input |
84 | and/or output.</para> | ||
84 | 85 | ||
85 | <para>For complex devices, such as often found in embedded systems, | 86 | <para>For complex devices, such as often found in embedded systems, |
86 | identical image sizes at the output of a pipeline can be achieved using | 87 | identical image sizes at the output of a pipeline can be achieved using |
@@ -276,11 +277,11 @@ | |||
276 | </section> | 277 | </section> |
277 | 278 | ||
278 | <section> | 279 | <section> |
279 | <title>Cropping and scaling</title> | 280 | <title>Selections: cropping, scaling and composition</title> |
280 | 281 | ||
281 | <para>Many sub-devices support cropping frames on their input or output | 282 | <para>Many sub-devices support cropping frames on their input or output |
282 | pads (or possible even on both). Cropping is used to select the area of | 283 | pads (or possible even on both). Cropping is used to select the area of |
283 | interest in an image, typically on a video sensor or video decoder. It can | 284 | interest in an image, typically on an image sensor or a video decoder. It can |
284 | also be used as part of digital zoom implementations to select the area of | 285 | also be used as part of digital zoom implementations to select the area of |
285 | the image that will be scaled up.</para> | 286 | the image that will be scaled up.</para> |
286 | 287 | ||
@@ -288,26 +289,179 @@ | |||
288 | &v4l2-rect; by the coordinates of the top left corner and the rectangle | 289 | &v4l2-rect; by the coordinates of the top left corner and the rectangle |
289 | size. Both the coordinates and sizes are expressed in pixels.</para> | 290 | size. Both the coordinates and sizes are expressed in pixels.</para> |
290 | 291 | ||
291 | <para>The crop rectangle is retrieved and set using the | 292 | <para>As for pad formats, drivers store try and active |
292 | &VIDIOC-SUBDEV-G-CROP; and &VIDIOC-SUBDEV-S-CROP; ioctls. Like for pad | 293 | rectangles for the selection targets of ACTUAL type <xref |
293 | formats, drivers store try and active crop rectangles. The format | 294 | linkend="v4l2-subdev-selection-targets">.</xref></para> |
294 | negotiation mechanism applies to crop settings as well.</para> | 295 | |
295 | 296 | <para>On sink pads, cropping is applied relative to the | |
296 | <para>On input pads, cropping is applied relatively to the current pad | 297 | current pad format. The pad format represents the image size as |
297 | format. The pad format represents the image size as received by the | 298 | received by the sub-device from the previous block in the |
298 | sub-device from the previous block in the pipeline, and the crop rectangle | 299 | pipeline, and the crop rectangle represents the sub-image that |
299 | represents the sub-image that will be transmitted further inside the | 300 | will be transmitted further inside the sub-device for |
300 | sub-device for processing. The crop rectangle be entirely containted | 301 | processing.</para> |
301 | inside the input image size.</para> | 302 | |
302 | 303 | <para>The scaling operation changes the size of the image by | |
303 | <para>Input crop rectangle are reset to their default value when the input | 304 | scaling it to new dimensions. The scaling ratio isn't specified |
304 | image format is modified. Drivers should use the input image size as the | 305 | explicitly, but is implied from the original and scaled image |
305 | crop rectangle default value, but hardware requirements may prevent this. | 306 | sizes. Both sizes are represented by &v4l2-rect;.</para> |
306 | </para> | 307 | |
308 | <para>Scaling support is optional. When supported by a subdev, | ||
309 | the crop rectangle on the subdev's sink pad is scaled to the | ||
310 | size configured using the &VIDIOC-SUBDEV-S-SELECTION; IOCTL | ||
311 | using <constant>V4L2_SUBDEV_SEL_COMPOSE_ACTUAL</constant> | ||
312 | selection target on the same pad. If the subdev supports scaling | ||
313 | but not composing, the top and left values are not used and must | ||
314 | always be set to zero.</para> | ||
315 | |||
316 | <para>On source pads, cropping is similar to sink pads, with the | ||
317 | exception that the source size from which the cropping is | ||
318 | performed, is the COMPOSE rectangle on the sink pad. In both | ||
319 | sink and source pads, the crop rectangle must be entirely | ||
320 | contained inside the source image size for the crop | ||
321 | operation.</para> | ||
322 | |||
323 | <para>The drivers should always use the closest possible | ||
324 | rectangle the user requests on all selection targets, unless | ||
325 | specifically told otherwise. | ||
326 | <constant>V4L2_SUBDEV_SEL_FLAG_SIZE_GE</constant> and | ||
327 | <constant>V4L2_SUBDEV_SEL_FLAG_SIZE_LE</constant> flags may be | ||
328 | used to round the image size either up or down. <xref | ||
329 | linkend="v4l2-subdev-selection-flags"></xref></para> | ||
330 | </section> | ||
331 | |||
332 | <section> | ||
333 | <title>Types of selection targets</title> | ||
334 | |||
335 | <section> | ||
336 | <title>ACTUAL targets</title> | ||
337 | |||
338 | <para>ACTUAL targets reflect the actual hardware configuration | ||
339 | at any point of time. There is a BOUNDS target | ||
340 | corresponding to every ACTUAL.</para> | ||
341 | </section> | ||
342 | |||
343 | <section> | ||
344 | <title>BOUNDS targets</title> | ||
345 | |||
346 | <para>BOUNDS targets is the smallest rectangle that contains | ||
347 | all valid ACTUAL rectangles. It may not be possible to set the | ||
348 | ACTUAL rectangle as large as the BOUNDS rectangle, however. | ||
349 | This may be because e.g. a sensor's pixel array is not | ||
350 | rectangular but cross-shaped or round. The maximum size may | ||
351 | also be smaller than the BOUNDS rectangle.</para> | ||
352 | </section> | ||
307 | 353 | ||
308 | <para>Cropping behaviour on output pads is not defined.</para> | 354 | </section> |
355 | |||
356 | <section> | ||
357 | <title>Order of configuration and format propagation</title> | ||
358 | |||
359 | <para>Inside subdevs, the order of image processing steps will | ||
360 | always be from the sink pad towards the source pad. This is also | ||
361 | reflected in the order in which the configuration must be | ||
362 | performed by the user: the changes made will be propagated to | ||
363 | any subsequent stages. If this behaviour is not desired, the | ||
364 | user must set | ||
365 | <constant>V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG</constant> flag. This | ||
366 | flag causes no propagation of the changes are allowed in any | ||
367 | circumstances. This may also cause the accessed rectangle to be | ||
368 | adjusted by the driver, depending on the properties of the | ||
369 | underlying hardware.</para> | ||
370 | |||
371 | <para>The coordinates to a step always refer to the actual size | ||
372 | of the previous step. The exception to this rule is the source | ||
373 | compose rectangle, which refers to the sink compose bounds | ||
374 | rectangle --- if it is supported by the hardware.</para> | ||
375 | |||
376 | <orderedlist> | ||
377 | <listitem>Sink pad format. The user configures the sink pad | ||
378 | format. This format defines the parameters of the image the | ||
379 | entity receives through the pad for further processing.</listitem> | ||
380 | |||
381 | <listitem>Sink pad actual crop selection. The sink pad crop | ||
382 | defines the crop performed to the sink pad format.</listitem> | ||
383 | |||
384 | <listitem>Sink pad actual compose selection. The size of the | ||
385 | sink pad compose rectangle defines the scaling ratio compared | ||
386 | to the size of the sink pad crop rectangle. The location of | ||
387 | the compose rectangle specifies the location of the actual | ||
388 | sink compose rectangle in the sink compose bounds | ||
389 | rectangle.</listitem> | ||
390 | |||
391 | <listitem>Source pad actual crop selection. Crop on the source | ||
392 | pad defines crop performed to the image in the sink compose | ||
393 | bounds rectangle.</listitem> | ||
394 | |||
395 | <listitem>Source pad format. The source pad format defines the | ||
396 | output pixel format of the subdev, as well as the other | ||
397 | parameters with the exception of the image width and height. | ||
398 | Width and height are defined by the size of the source pad | ||
399 | actual crop selection.</listitem> | ||
400 | </orderedlist> | ||
401 | |||
402 | <para>Accessing any of the above rectangles not supported by the | ||
403 | subdev will return <constant>EINVAL</constant>. Any rectangle | ||
404 | referring to a previous unsupported rectangle coordinates will | ||
405 | instead refer to the previous supported rectangle. For example, | ||
406 | if sink crop is not supported, the compose selection will refer | ||
407 | to the sink pad format dimensions instead.</para> | ||
408 | |||
409 | <figure id="subdev-image-processing-crop"> | ||
410 | <title>Image processing in subdevs: simple crop example</title> | ||
411 | <mediaobject> | ||
412 | <imageobject> | ||
413 | <imagedata fileref="subdev-image-processing-crop.svg" | ||
414 | format="SVG" scale="200" /> | ||
415 | </imageobject> | ||
416 | </mediaobject> | ||
417 | </figure> | ||
418 | |||
419 | <para>In the above example, the subdev supports cropping on its | ||
420 | sink pad. To configure it, the user sets the media bus format on | ||
421 | the subdev's sink pad. Now the actual crop rectangle can be set | ||
422 | on the sink pad --- the location and size of this rectangle | ||
423 | reflect the location and size of a rectangle to be cropped from | ||
424 | the sink format. The size of the sink crop rectangle will also | ||
425 | be the size of the format of the subdev's source pad.</para> | ||
426 | |||
427 | <figure id="subdev-image-processing-scaling-multi-source"> | ||
428 | <title>Image processing in subdevs: scaling with multiple sources</title> | ||
429 | <mediaobject> | ||
430 | <imageobject> | ||
431 | <imagedata fileref="subdev-image-processing-scaling-multi-source.svg" | ||
432 | format="SVG" scale="200" /> | ||
433 | </imageobject> | ||
434 | </mediaobject> | ||
435 | </figure> | ||
436 | |||
437 | <para>In this example, the subdev is capable of first cropping, | ||
438 | then scaling and finally cropping for two source pads | ||
439 | individually from the resulting scaled image. The location of | ||
440 | the scaled image in the cropped image is ignored in sink compose | ||
441 | target. Both of the locations of the source crop rectangles | ||
442 | refer to the sink scaling rectangle, independently cropping an | ||
443 | area at location specified by the source crop rectangle from | ||
444 | it.</para> | ||
445 | |||
446 | <figure id="subdev-image-processing-full"> | ||
447 | <title>Image processing in subdevs: scaling and composition | ||
448 | with multiple sinks and sources</title> | ||
449 | <mediaobject> | ||
450 | <imageobject> | ||
451 | <imagedata fileref="subdev-image-processing-full.svg" | ||
452 | format="SVG" scale="200" /> | ||
453 | </imageobject> | ||
454 | </mediaobject> | ||
455 | </figure> | ||
456 | |||
457 | <para>The subdev driver supports two sink pads and two source | ||
458 | pads. The images from both of the sink pads are individually | ||
459 | cropped, then scaled and further composed on the composition | ||
460 | bounds rectangle. From that, two independent streams are cropped | ||
461 | and sent out of the subdev from the source pads.</para> | ||
309 | 462 | ||
310 | </section> | 463 | </section> |
464 | |||
311 | </section> | 465 | </section> |
312 | 466 | ||
313 | &sub-subdev-formats; | 467 | &sub-subdev-formats; |
diff --git a/Documentation/DocBook/media/v4l/io.xml b/Documentation/DocBook/media/v4l/io.xml index b815929b5bba..fd6aca2922b6 100644 --- a/Documentation/DocBook/media/v4l/io.xml +++ b/Documentation/DocBook/media/v4l/io.xml | |||
@@ -543,12 +543,13 @@ and can range from zero to the number of buffers allocated | |||
543 | with the &VIDIOC-REQBUFS; ioctl (&v4l2-requestbuffers; <structfield>count</structfield>) minus one.</entry> | 543 | with the &VIDIOC-REQBUFS; ioctl (&v4l2-requestbuffers; <structfield>count</structfield>) minus one.</entry> |
544 | </row> | 544 | </row> |
545 | <row> | 545 | <row> |
546 | <entry>&v4l2-buf-type;</entry> | 546 | <entry>__u32</entry> |
547 | <entry><structfield>type</structfield></entry> | 547 | <entry><structfield>type</structfield></entry> |
548 | <entry></entry> | 548 | <entry></entry> |
549 | <entry>Type of the buffer, same as &v4l2-format; | 549 | <entry>Type of the buffer, same as &v4l2-format; |
550 | <structfield>type</structfield> or &v4l2-requestbuffers; | 550 | <structfield>type</structfield> or &v4l2-requestbuffers; |
551 | <structfield>type</structfield>, set by the application.</entry> | 551 | <structfield>type</structfield>, set by the application. See <xref |
552 | linkend="v4l2-buf-type" /></entry> | ||
552 | </row> | 553 | </row> |
553 | <row> | 554 | <row> |
554 | <entry>__u32</entry> | 555 | <entry>__u32</entry> |
@@ -568,7 +569,7 @@ refers to an input stream, applications when an output stream.</entry> | |||
568 | linkend="buffer-flags" />.</entry> | 569 | linkend="buffer-flags" />.</entry> |
569 | </row> | 570 | </row> |
570 | <row> | 571 | <row> |
571 | <entry>&v4l2-field;</entry> | 572 | <entry>__u32</entry> |
572 | <entry><structfield>field</structfield></entry> | 573 | <entry><structfield>field</structfield></entry> |
573 | <entry></entry> | 574 | <entry></entry> |
574 | <entry>Indicates the field order of the image in the | 575 | <entry>Indicates the field order of the image in the |
@@ -630,11 +631,12 @@ bandwidth. These devices identify by not enumerating any video | |||
630 | standards, see <xref linkend="standard" />.</para></entry> | 631 | standards, see <xref linkend="standard" />.</para></entry> |
631 | </row> | 632 | </row> |
632 | <row> | 633 | <row> |
633 | <entry>&v4l2-memory;</entry> | 634 | <entry>__u32</entry> |
634 | <entry><structfield>memory</structfield></entry> | 635 | <entry><structfield>memory</structfield></entry> |
635 | <entry></entry> | 636 | <entry></entry> |
636 | <entry>This field must be set by applications and/or drivers | 637 | <entry>This field must be set by applications and/or drivers |
637 | in accordance with the selected I/O method.</entry> | 638 | in accordance with the selected I/O method. See <xref linkend="v4l2-memory" |
639 | /></entry> | ||
638 | </row> | 640 | </row> |
639 | <row> | 641 | <row> |
640 | <entry>union</entry> | 642 | <entry>union</entry> |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml index 7b274092e60c..c1c62a9acc2a 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml | |||
@@ -1,4 +1,4 @@ | |||
1 | <refentry> | 1 | <refentry id="pixfmt-srggb10"> |
2 | <refmeta> | 2 | <refmeta> |
3 | <refentrytitle>V4L2_PIX_FMT_SRGGB10 ('RG10'), | 3 | <refentrytitle>V4L2_PIX_FMT_SRGGB10 ('RG10'), |
4 | V4L2_PIX_FMT_SGRBG10 ('BA10'), | 4 | V4L2_PIX_FMT_SGRBG10 ('BA10'), |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml new file mode 100644 index 000000000000..8eace3e2e7d4 --- /dev/null +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml | |||
@@ -0,0 +1,29 @@ | |||
1 | <refentry id="pixfmt-srggb10dpcm8"> | ||
2 | <refmeta> | ||
3 | <refentrytitle> | ||
4 | V4L2_PIX_FMT_SBGGR10DPCM8 ('bBA8'), | ||
5 | V4L2_PIX_FMT_SGBRG10DPCM8 ('bGA8'), | ||
6 | V4L2_PIX_FMT_SGRBG10DPCM8 ('BD10'), | ||
7 | V4L2_PIX_FMT_SRGGB10DPCM8 ('bRA8'), | ||
8 | </refentrytitle> | ||
9 | &manvol; | ||
10 | </refmeta> | ||
11 | <refnamediv> | ||
12 | <refname id="V4L2-PIX-FMT-SBGGR10DPCM8"><constant>V4L2_PIX_FMT_SBGGR10DPCM8</constant></refname> | ||
13 | <refname id="V4L2-PIX-FMT-SGBRG10DPCM8"><constant>V4L2_PIX_FMT_SGBRG10DPCM8</constant></refname> | ||
14 | <refname id="V4L2-PIX-FMT-SGRBG10DPCM8"><constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant></refname> | ||
15 | <refname id="V4L2-PIX-FMT-SRGGB10DPCM8"><constant>V4L2_PIX_FMT_SRGGB10DPCM8</constant></refname> | ||
16 | <refpurpose>10-bit Bayer formats compressed to 8 bits</refpurpose> | ||
17 | </refnamediv> | ||
18 | <refsect1> | ||
19 | <title>Description</title> | ||
20 | |||
21 | <para>The following four pixel formats are raw sRGB / Bayer formats | ||
22 | with 10 bits per colour compressed to 8 bits each, using DPCM | ||
23 | compression. DPCM, differential pulse-code modulation, is lossy. | ||
24 | Each colour component consumes 8 bits of memory. In other respects | ||
25 | this format is similar to <xref | ||
26 | linkend="pixfmt-srggb10">.</xref></para> | ||
27 | |||
28 | </refsect1> | ||
29 | </refentry> | ||
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml index 31eaae2469f9..f5ac15ed0549 100644 --- a/Documentation/DocBook/media/v4l/pixfmt.xml +++ b/Documentation/DocBook/media/v4l/pixfmt.xml | |||
@@ -673,6 +673,7 @@ access the palette, this must be done with ioctls of the Linux framebuffer API.< | |||
673 | &sub-srggb8; | 673 | &sub-srggb8; |
674 | &sub-sbggr16; | 674 | &sub-sbggr16; |
675 | &sub-srggb10; | 675 | &sub-srggb10; |
676 | &sub-srggb10dpcm8; | ||
676 | &sub-srggb12; | 677 | &sub-srggb12; |
677 | </section> | 678 | </section> |
678 | 679 | ||
@@ -876,11 +877,6 @@ kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm | |||
876 | <entry>'S561'</entry> | 877 | <entry>'S561'</entry> |
877 | <entry>Compressed GBRG Bayer format used by the gspca driver.</entry> | 878 | <entry>Compressed GBRG Bayer format used by the gspca driver.</entry> |
878 | </row> | 879 | </row> |
879 | <row id="V4L2-PIX-FMT-SGRBG10DPCM8"> | ||
880 | <entry><constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant></entry> | ||
881 | <entry>'DB10'</entry> | ||
882 | <entry>10 bit raw Bayer DPCM compressed to 8 bits.</entry> | ||
883 | </row> | ||
884 | <row id="V4L2-PIX-FMT-PAC207"> | 880 | <row id="V4L2-PIX-FMT-PAC207"> |
885 | <entry><constant>V4L2_PIX_FMT_PAC207</constant></entry> | 881 | <entry><constant>V4L2_PIX_FMT_PAC207</constant></entry> |
886 | <entry>'P207'</entry> | 882 | <entry>'P207'</entry> |
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia b/Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia new file mode 100644 index 000000000000..e32ba5362e1d --- /dev/null +++ b/Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia | |||
@@ -0,0 +1,614 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/"> | ||
3 | <dia:diagramdata> | ||
4 | <dia:attribute name="background"> | ||
5 | <dia:color val="#ffffff"/> | ||
6 | </dia:attribute> | ||
7 | <dia:attribute name="pagebreak"> | ||
8 | <dia:color val="#000099"/> | ||
9 | </dia:attribute> | ||
10 | <dia:attribute name="paper"> | ||
11 | <dia:composite type="paper"> | ||
12 | <dia:attribute name="name"> | ||
13 | <dia:string>#A4#</dia:string> | ||
14 | </dia:attribute> | ||
15 | <dia:attribute name="tmargin"> | ||
16 | <dia:real val="2.8222000598907471"/> | ||
17 | </dia:attribute> | ||
18 | <dia:attribute name="bmargin"> | ||
19 | <dia:real val="2.8222000598907471"/> | ||
20 | </dia:attribute> | ||
21 | <dia:attribute name="lmargin"> | ||
22 | <dia:real val="2.8222000598907471"/> | ||
23 | </dia:attribute> | ||
24 | <dia:attribute name="rmargin"> | ||
25 | <dia:real val="2.8222000598907471"/> | ||
26 | </dia:attribute> | ||
27 | <dia:attribute name="is_portrait"> | ||
28 | <dia:boolean val="false"/> | ||
29 | </dia:attribute> | ||
30 | <dia:attribute name="scaling"> | ||
31 | <dia:real val="0.49000000953674316"/> | ||
32 | </dia:attribute> | ||
33 | <dia:attribute name="fitto"> | ||
34 | <dia:boolean val="false"/> | ||
35 | </dia:attribute> | ||
36 | </dia:composite> | ||
37 | </dia:attribute> | ||
38 | <dia:attribute name="grid"> | ||
39 | <dia:composite type="grid"> | ||
40 | <dia:attribute name="width_x"> | ||
41 | <dia:real val="1"/> | ||
42 | </dia:attribute> | ||
43 | <dia:attribute name="width_y"> | ||
44 | <dia:real val="1"/> | ||
45 | </dia:attribute> | ||
46 | <dia:attribute name="visible_x"> | ||
47 | <dia:int val="1"/> | ||
48 | </dia:attribute> | ||
49 | <dia:attribute name="visible_y"> | ||
50 | <dia:int val="1"/> | ||
51 | </dia:attribute> | ||
52 | <dia:composite type="color"/> | ||
53 | </dia:composite> | ||
54 | </dia:attribute> | ||
55 | <dia:attribute name="color"> | ||
56 | <dia:color val="#d8e5e5"/> | ||
57 | </dia:attribute> | ||
58 | <dia:attribute name="guides"> | ||
59 | <dia:composite type="guides"> | ||
60 | <dia:attribute name="hguides"/> | ||
61 | <dia:attribute name="vguides"/> | ||
62 | </dia:composite> | ||
63 | </dia:attribute> | ||
64 | </dia:diagramdata> | ||
65 | <dia:layer name="Background" visible="true" active="true"> | ||
66 | <dia:object type="Standard - Box" version="0" id="O0"> | ||
67 | <dia:attribute name="obj_pos"> | ||
68 | <dia:point val="-0.4,6.5"/> | ||
69 | </dia:attribute> | ||
70 | <dia:attribute name="obj_bb"> | ||
71 | <dia:rectangle val="-0.45,6.45;23.1387,16.2"/> | ||
72 | </dia:attribute> | ||
73 | <dia:attribute name="elem_corner"> | ||
74 | <dia:point val="-0.4,6.5"/> | ||
75 | </dia:attribute> | ||
76 | <dia:attribute name="elem_width"> | ||
77 | <dia:real val="23.48871579904775"/> | ||
78 | </dia:attribute> | ||
79 | <dia:attribute name="elem_height"> | ||
80 | <dia:real val="9.6500000000000004"/> | ||
81 | </dia:attribute> | ||
82 | <dia:attribute name="border_width"> | ||
83 | <dia:real val="0.10000000149011612"/> | ||
84 | </dia:attribute> | ||
85 | <dia:attribute name="show_background"> | ||
86 | <dia:boolean val="false"/> | ||
87 | </dia:attribute> | ||
88 | </dia:object> | ||
89 | <dia:object type="Standard - Box" version="0" id="O1"> | ||
90 | <dia:attribute name="obj_pos"> | ||
91 | <dia:point val="0.225,9.45"/> | ||
92 | </dia:attribute> | ||
93 | <dia:attribute name="obj_bb"> | ||
94 | <dia:rectangle val="0.175,9.4;8.225,14.7"/> | ||
95 | </dia:attribute> | ||
96 | <dia:attribute name="elem_corner"> | ||
97 | <dia:point val="0.225,9.45"/> | ||
98 | </dia:attribute> | ||
99 | <dia:attribute name="elem_width"> | ||
100 | <dia:real val="7.9499999999999975"/> | ||
101 | </dia:attribute> | ||
102 | <dia:attribute name="elem_height"> | ||
103 | <dia:real val="5.1999999999999975"/> | ||
104 | </dia:attribute> | ||
105 | <dia:attribute name="border_width"> | ||
106 | <dia:real val="0.10000000149011612"/> | ||
107 | </dia:attribute> | ||
108 | <dia:attribute name="border_color"> | ||
109 | <dia:color val="#a52a2a"/> | ||
110 | </dia:attribute> | ||
111 | <dia:attribute name="show_background"> | ||
112 | <dia:boolean val="true"/> | ||
113 | </dia:attribute> | ||
114 | </dia:object> | ||
115 | <dia:object type="Standard - Box" version="0" id="O2"> | ||
116 | <dia:attribute name="obj_pos"> | ||
117 | <dia:point val="3.175,10.55"/> | ||
118 | </dia:attribute> | ||
119 | <dia:attribute name="obj_bb"> | ||
120 | <dia:rectangle val="3.125,10.5;7.925,14.45"/> | ||
121 | </dia:attribute> | ||
122 | <dia:attribute name="elem_corner"> | ||
123 | <dia:point val="3.175,10.55"/> | ||
124 | </dia:attribute> | ||
125 | <dia:attribute name="elem_width"> | ||
126 | <dia:real val="4.6999999999999975"/> | ||
127 | </dia:attribute> | ||
128 | <dia:attribute name="elem_height"> | ||
129 | <dia:real val="3.8499999999999979"/> | ||
130 | </dia:attribute> | ||
131 | <dia:attribute name="border_width"> | ||
132 | <dia:real val="0.10000000149011612"/> | ||
133 | </dia:attribute> | ||
134 | <dia:attribute name="border_color"> | ||
135 | <dia:color val="#0000ff"/> | ||
136 | </dia:attribute> | ||
137 | <dia:attribute name="show_background"> | ||
138 | <dia:boolean val="true"/> | ||
139 | </dia:attribute> | ||
140 | </dia:object> | ||
141 | <dia:object type="Standard - Text" version="1" id="O3"> | ||
142 | <dia:attribute name="obj_pos"> | ||
143 | <dia:point val="3.725,11.3875"/> | ||
144 | </dia:attribute> | ||
145 | <dia:attribute name="obj_bb"> | ||
146 | <dia:rectangle val="3.725,10.7925;6.6025,13.14"/> | ||
147 | </dia:attribute> | ||
148 | <dia:attribute name="text"> | ||
149 | <dia:composite type="text"> | ||
150 | <dia:attribute name="string"> | ||
151 | <dia:string>#sink | ||
152 | crop | ||
153 | selection#</dia:string> | ||
154 | </dia:attribute> | ||
155 | <dia:attribute name="font"> | ||
156 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
157 | </dia:attribute> | ||
158 | <dia:attribute name="height"> | ||
159 | <dia:real val="0.80000000000000004"/> | ||
160 | </dia:attribute> | ||
161 | <dia:attribute name="pos"> | ||
162 | <dia:point val="3.725,11.3875"/> | ||
163 | </dia:attribute> | ||
164 | <dia:attribute name="color"> | ||
165 | <dia:color val="#0000ff"/> | ||
166 | </dia:attribute> | ||
167 | <dia:attribute name="alignment"> | ||
168 | <dia:enum val="0"/> | ||
169 | </dia:attribute> | ||
170 | </dia:composite> | ||
171 | </dia:attribute> | ||
172 | <dia:attribute name="valign"> | ||
173 | <dia:enum val="3"/> | ||
174 | </dia:attribute> | ||
175 | </dia:object> | ||
176 | <dia:object type="Standard - Text" version="1" id="O4"> | ||
177 | <dia:attribute name="obj_pos"> | ||
178 | <dia:point val="1.475,7.9"/> | ||
179 | </dia:attribute> | ||
180 | <dia:attribute name="obj_bb"> | ||
181 | <dia:rectangle val="1.475,7.305;1.475,8.0525"/> | ||
182 | </dia:attribute> | ||
183 | <dia:attribute name="text"> | ||
184 | <dia:composite type="text"> | ||
185 | <dia:attribute name="string"> | ||
186 | <dia:string>##</dia:string> | ||
187 | </dia:attribute> | ||
188 | <dia:attribute name="font"> | ||
189 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
190 | </dia:attribute> | ||
191 | <dia:attribute name="height"> | ||
192 | <dia:real val="0.80000000000000004"/> | ||
193 | </dia:attribute> | ||
194 | <dia:attribute name="pos"> | ||
195 | <dia:point val="1.475,7.9"/> | ||
196 | </dia:attribute> | ||
197 | <dia:attribute name="color"> | ||
198 | <dia:color val="#000000"/> | ||
199 | </dia:attribute> | ||
200 | <dia:attribute name="alignment"> | ||
201 | <dia:enum val="0"/> | ||
202 | </dia:attribute> | ||
203 | </dia:composite> | ||
204 | </dia:attribute> | ||
205 | <dia:attribute name="valign"> | ||
206 | <dia:enum val="3"/> | ||
207 | </dia:attribute> | ||
208 | </dia:object> | ||
209 | <dia:object type="Standard - Text" version="1" id="O5"> | ||
210 | <dia:attribute name="obj_pos"> | ||
211 | <dia:point val="0.426918,7.89569"/> | ||
212 | </dia:attribute> | ||
213 | <dia:attribute name="obj_bb"> | ||
214 | <dia:rectangle val="0.426918,7.30069;3.90942,8.84819"/> | ||
215 | </dia:attribute> | ||
216 | <dia:attribute name="text"> | ||
217 | <dia:composite type="text"> | ||
218 | <dia:attribute name="string"> | ||
219 | <dia:string>#sink media | ||
220 | bus format#</dia:string> | ||
221 | </dia:attribute> | ||
222 | <dia:attribute name="font"> | ||
223 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
224 | </dia:attribute> | ||
225 | <dia:attribute name="height"> | ||
226 | <dia:real val="0.80000000000000004"/> | ||
227 | </dia:attribute> | ||
228 | <dia:attribute name="pos"> | ||
229 | <dia:point val="0.426918,7.89569"/> | ||
230 | </dia:attribute> | ||
231 | <dia:attribute name="color"> | ||
232 | <dia:color val="#a52a2a"/> | ||
233 | </dia:attribute> | ||
234 | <dia:attribute name="alignment"> | ||
235 | <dia:enum val="0"/> | ||
236 | </dia:attribute> | ||
237 | </dia:composite> | ||
238 | </dia:attribute> | ||
239 | <dia:attribute name="valign"> | ||
240 | <dia:enum val="3"/> | ||
241 | </dia:attribute> | ||
242 | </dia:object> | ||
243 | <dia:object type="Standard - Text" version="1" id="O6"> | ||
244 | <dia:attribute name="obj_pos"> | ||
245 | <dia:point val="17.4887,7.75"/> | ||
246 | </dia:attribute> | ||
247 | <dia:attribute name="obj_bb"> | ||
248 | <dia:rectangle val="17.4887,7.155;21.8112,8.7025"/> | ||
249 | </dia:attribute> | ||
250 | <dia:attribute name="text"> | ||
251 | <dia:composite type="text"> | ||
252 | <dia:attribute name="string"> | ||
253 | <dia:string>#source media | ||
254 | bus format#</dia:string> | ||
255 | </dia:attribute> | ||
256 | <dia:attribute name="font"> | ||
257 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
258 | </dia:attribute> | ||
259 | <dia:attribute name="height"> | ||
260 | <dia:real val="0.80000000000000004"/> | ||
261 | </dia:attribute> | ||
262 | <dia:attribute name="pos"> | ||
263 | <dia:point val="17.4887,7.75"/> | ||
264 | </dia:attribute> | ||
265 | <dia:attribute name="color"> | ||
266 | <dia:color val="#8b6914"/> | ||
267 | </dia:attribute> | ||
268 | <dia:attribute name="alignment"> | ||
269 | <dia:enum val="0"/> | ||
270 | </dia:attribute> | ||
271 | </dia:composite> | ||
272 | </dia:attribute> | ||
273 | <dia:attribute name="valign"> | ||
274 | <dia:enum val="3"/> | ||
275 | </dia:attribute> | ||
276 | </dia:object> | ||
277 | <dia:object type="Standard - Box" version="0" id="O7"> | ||
278 | <dia:attribute name="obj_pos"> | ||
279 | <dia:point val="17.5244,9.5417"/> | ||
280 | </dia:attribute> | ||
281 | <dia:attribute name="obj_bb"> | ||
282 | <dia:rectangle val="17.4744,9.4917;22.2387,13.35"/> | ||
283 | </dia:attribute> | ||
284 | <dia:attribute name="elem_corner"> | ||
285 | <dia:point val="17.5244,9.5417"/> | ||
286 | </dia:attribute> | ||
287 | <dia:attribute name="elem_width"> | ||
288 | <dia:real val="4.6643157990477508"/> | ||
289 | </dia:attribute> | ||
290 | <dia:attribute name="elem_height"> | ||
291 | <dia:real val="3.758300000000002"/> | ||
292 | </dia:attribute> | ||
293 | <dia:attribute name="border_width"> | ||
294 | <dia:real val="0.10000000149011612"/> | ||
295 | </dia:attribute> | ||
296 | <dia:attribute name="border_color"> | ||
297 | <dia:color val="#8b6914"/> | ||
298 | </dia:attribute> | ||
299 | <dia:attribute name="show_background"> | ||
300 | <dia:boolean val="true"/> | ||
301 | </dia:attribute> | ||
302 | </dia:object> | ||
303 | <dia:object type="Standard - Line" version="0" id="O8"> | ||
304 | <dia:attribute name="obj_pos"> | ||
305 | <dia:point val="17.5244,13.3"/> | ||
306 | </dia:attribute> | ||
307 | <dia:attribute name="obj_bb"> | ||
308 | <dia:rectangle val="3.12132,13.2463;17.5781,14.4537"/> | ||
309 | </dia:attribute> | ||
310 | <dia:attribute name="conn_endpoints"> | ||
311 | <dia:point val="17.5244,13.3"/> | ||
312 | <dia:point val="3.175,14.4"/> | ||
313 | </dia:attribute> | ||
314 | <dia:attribute name="numcp"> | ||
315 | <dia:int val="1"/> | ||
316 | </dia:attribute> | ||
317 | <dia:attribute name="line_color"> | ||
318 | <dia:color val="#e60505"/> | ||
319 | </dia:attribute> | ||
320 | <dia:attribute name="line_style"> | ||
321 | <dia:enum val="4"/> | ||
322 | </dia:attribute> | ||
323 | <dia:connections> | ||
324 | <dia:connection handle="0" to="O7" connection="5"/> | ||
325 | <dia:connection handle="1" to="O2" connection="5"/> | ||
326 | </dia:connections> | ||
327 | </dia:object> | ||
328 | <dia:object type="Standard - Line" version="0" id="O9"> | ||
329 | <dia:attribute name="obj_pos"> | ||
330 | <dia:point val="17.5244,9.5417"/> | ||
331 | </dia:attribute> | ||
332 | <dia:attribute name="obj_bb"> | ||
333 | <dia:rectangle val="3.12162,9.48832;17.5778,10.6034"/> | ||
334 | </dia:attribute> | ||
335 | <dia:attribute name="conn_endpoints"> | ||
336 | <dia:point val="17.5244,9.5417"/> | ||
337 | <dia:point val="3.175,10.55"/> | ||
338 | </dia:attribute> | ||
339 | <dia:attribute name="numcp"> | ||
340 | <dia:int val="1"/> | ||
341 | </dia:attribute> | ||
342 | <dia:attribute name="line_color"> | ||
343 | <dia:color val="#e60505"/> | ||
344 | </dia:attribute> | ||
345 | <dia:attribute name="line_style"> | ||
346 | <dia:enum val="4"/> | ||
347 | </dia:attribute> | ||
348 | <dia:connections> | ||
349 | <dia:connection handle="0" to="O7" connection="0"/> | ||
350 | <dia:connection handle="1" to="O2" connection="0"/> | ||
351 | </dia:connections> | ||
352 | </dia:object> | ||
353 | <dia:object type="Standard - Line" version="0" id="O10"> | ||
354 | <dia:attribute name="obj_pos"> | ||
355 | <dia:point val="22.1887,13.3"/> | ||
356 | </dia:attribute> | ||
357 | <dia:attribute name="obj_bb"> | ||
358 | <dia:rectangle val="7.82132,13.2463;22.2424,14.4537"/> | ||
359 | </dia:attribute> | ||
360 | <dia:attribute name="conn_endpoints"> | ||
361 | <dia:point val="22.1887,13.3"/> | ||
362 | <dia:point val="7.875,14.4"/> | ||
363 | </dia:attribute> | ||
364 | <dia:attribute name="numcp"> | ||
365 | <dia:int val="1"/> | ||
366 | </dia:attribute> | ||
367 | <dia:attribute name="line_color"> | ||
368 | <dia:color val="#e60505"/> | ||
369 | </dia:attribute> | ||
370 | <dia:attribute name="line_style"> | ||
371 | <dia:enum val="4"/> | ||
372 | </dia:attribute> | ||
373 | <dia:connections> | ||
374 | <dia:connection handle="0" to="O7" connection="7"/> | ||
375 | <dia:connection handle="1" to="O2" connection="7"/> | ||
376 | </dia:connections> | ||
377 | </dia:object> | ||
378 | <dia:object type="Standard - Line" version="0" id="O11"> | ||
379 | <dia:attribute name="obj_pos"> | ||
380 | <dia:point val="22.1887,9.5417"/> | ||
381 | </dia:attribute> | ||
382 | <dia:attribute name="obj_bb"> | ||
383 | <dia:rectangle val="7.82161,9.48831;22.2421,10.6034"/> | ||
384 | </dia:attribute> | ||
385 | <dia:attribute name="conn_endpoints"> | ||
386 | <dia:point val="22.1887,9.5417"/> | ||
387 | <dia:point val="7.875,10.55"/> | ||
388 | </dia:attribute> | ||
389 | <dia:attribute name="numcp"> | ||
390 | <dia:int val="1"/> | ||
391 | </dia:attribute> | ||
392 | <dia:attribute name="line_color"> | ||
393 | <dia:color val="#e60505"/> | ||
394 | </dia:attribute> | ||
395 | <dia:attribute name="line_style"> | ||
396 | <dia:enum val="4"/> | ||
397 | </dia:attribute> | ||
398 | <dia:connections> | ||
399 | <dia:connection handle="0" to="O7" connection="2"/> | ||
400 | <dia:connection handle="1" to="O2" connection="2"/> | ||
401 | </dia:connections> | ||
402 | </dia:object> | ||
403 | <dia:object type="Geometric - Perfect Circle" version="1" id="O12"> | ||
404 | <dia:attribute name="obj_pos"> | ||
405 | <dia:point val="23.23,10.5742"/> | ||
406 | </dia:attribute> | ||
407 | <dia:attribute name="obj_bb"> | ||
408 | <dia:rectangle val="23.18,10.5242;24.13,11.4742"/> | ||
409 | </dia:attribute> | ||
410 | <dia:attribute name="meta"> | ||
411 | <dia:composite type="dict"/> | ||
412 | </dia:attribute> | ||
413 | <dia:attribute name="elem_corner"> | ||
414 | <dia:point val="23.23,10.5742"/> | ||
415 | </dia:attribute> | ||
416 | <dia:attribute name="elem_width"> | ||
417 | <dia:real val="0.84999999999999787"/> | ||
418 | </dia:attribute> | ||
419 | <dia:attribute name="elem_height"> | ||
420 | <dia:real val="0.84999999999999787"/> | ||
421 | </dia:attribute> | ||
422 | <dia:attribute name="line_width"> | ||
423 | <dia:real val="0.10000000000000001"/> | ||
424 | </dia:attribute> | ||
425 | <dia:attribute name="line_colour"> | ||
426 | <dia:color val="#000000"/> | ||
427 | </dia:attribute> | ||
428 | <dia:attribute name="fill_colour"> | ||
429 | <dia:color val="#ffffff"/> | ||
430 | </dia:attribute> | ||
431 | <dia:attribute name="show_background"> | ||
432 | <dia:boolean val="true"/> | ||
433 | </dia:attribute> | ||
434 | <dia:attribute name="line_style"> | ||
435 | <dia:enum val="0"/> | ||
436 | <dia:real val="1"/> | ||
437 | </dia:attribute> | ||
438 | <dia:attribute name="flip_horizontal"> | ||
439 | <dia:boolean val="false"/> | ||
440 | </dia:attribute> | ||
441 | <dia:attribute name="flip_vertical"> | ||
442 | <dia:boolean val="false"/> | ||
443 | </dia:attribute> | ||
444 | <dia:attribute name="subscale"> | ||
445 | <dia:real val="1"/> | ||
446 | </dia:attribute> | ||
447 | </dia:object> | ||
448 | <dia:object type="Standard - Line" version="0" id="O13"> | ||
449 | <dia:attribute name="obj_pos"> | ||
450 | <dia:point val="24.08,10.9992"/> | ||
451 | </dia:attribute> | ||
452 | <dia:attribute name="obj_bb"> | ||
453 | <dia:rectangle val="24.03,10.6388;32.4953,11.3624"/> | ||
454 | </dia:attribute> | ||
455 | <dia:attribute name="conn_endpoints"> | ||
456 | <dia:point val="24.08,10.9992"/> | ||
457 | <dia:point val="32.3835,11.0007"/> | ||
458 | </dia:attribute> | ||
459 | <dia:attribute name="numcp"> | ||
460 | <dia:int val="1"/> | ||
461 | </dia:attribute> | ||
462 | <dia:attribute name="end_arrow"> | ||
463 | <dia:enum val="22"/> | ||
464 | </dia:attribute> | ||
465 | <dia:attribute name="end_arrow_length"> | ||
466 | <dia:real val="0.5"/> | ||
467 | </dia:attribute> | ||
468 | <dia:attribute name="end_arrow_width"> | ||
469 | <dia:real val="0.5"/> | ||
470 | </dia:attribute> | ||
471 | <dia:connections> | ||
472 | <dia:connection handle="0" to="O12" connection="3"/> | ||
473 | </dia:connections> | ||
474 | </dia:object> | ||
475 | <dia:object type="Standard - Text" version="1" id="O14"> | ||
476 | <dia:attribute name="obj_pos"> | ||
477 | <dia:point val="25.3454,10.49"/> | ||
478 | </dia:attribute> | ||
479 | <dia:attribute name="obj_bb"> | ||
480 | <dia:rectangle val="25.3454,9.895;29.9904,10.6425"/> | ||
481 | </dia:attribute> | ||
482 | <dia:attribute name="text"> | ||
483 | <dia:composite type="text"> | ||
484 | <dia:attribute name="string"> | ||
485 | <dia:string>#pad 1 (source)#</dia:string> | ||
486 | </dia:attribute> | ||
487 | <dia:attribute name="font"> | ||
488 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
489 | </dia:attribute> | ||
490 | <dia:attribute name="height"> | ||
491 | <dia:real val="0.80000000000000004"/> | ||
492 | </dia:attribute> | ||
493 | <dia:attribute name="pos"> | ||
494 | <dia:point val="25.3454,10.49"/> | ||
495 | </dia:attribute> | ||
496 | <dia:attribute name="color"> | ||
497 | <dia:color val="#000000"/> | ||
498 | </dia:attribute> | ||
499 | <dia:attribute name="alignment"> | ||
500 | <dia:enum val="0"/> | ||
501 | </dia:attribute> | ||
502 | </dia:composite> | ||
503 | </dia:attribute> | ||
504 | <dia:attribute name="valign"> | ||
505 | <dia:enum val="3"/> | ||
506 | </dia:attribute> | ||
507 | </dia:object> | ||
508 | <dia:object type="Geometric - Perfect Circle" version="1" id="O15"> | ||
509 | <dia:attribute name="obj_pos"> | ||
510 | <dia:point val="-1.44491,11.6506"/> | ||
511 | </dia:attribute> | ||
512 | <dia:attribute name="obj_bb"> | ||
513 | <dia:rectangle val="-1.49491,11.6006;-0.54491,12.5506"/> | ||
514 | </dia:attribute> | ||
515 | <dia:attribute name="meta"> | ||
516 | <dia:composite type="dict"/> | ||
517 | </dia:attribute> | ||
518 | <dia:attribute name="elem_corner"> | ||
519 | <dia:point val="-1.44491,11.6506"/> | ||
520 | </dia:attribute> | ||
521 | <dia:attribute name="elem_width"> | ||
522 | <dia:real val="0.84999999999999787"/> | ||
523 | </dia:attribute> | ||
524 | <dia:attribute name="elem_height"> | ||
525 | <dia:real val="0.84999999999999787"/> | ||
526 | </dia:attribute> | ||
527 | <dia:attribute name="line_width"> | ||
528 | <dia:real val="0.10000000000000001"/> | ||
529 | </dia:attribute> | ||
530 | <dia:attribute name="line_colour"> | ||
531 | <dia:color val="#000000"/> | ||
532 | </dia:attribute> | ||
533 | <dia:attribute name="fill_colour"> | ||
534 | <dia:color val="#ffffff"/> | ||
535 | </dia:attribute> | ||
536 | <dia:attribute name="show_background"> | ||
537 | <dia:boolean val="true"/> | ||
538 | </dia:attribute> | ||
539 | <dia:attribute name="line_style"> | ||
540 | <dia:enum val="0"/> | ||
541 | <dia:real val="1"/> | ||
542 | </dia:attribute> | ||
543 | <dia:attribute name="flip_horizontal"> | ||
544 | <dia:boolean val="false"/> | ||
545 | </dia:attribute> | ||
546 | <dia:attribute name="flip_vertical"> | ||
547 | <dia:boolean val="false"/> | ||
548 | </dia:attribute> | ||
549 | <dia:attribute name="subscale"> | ||
550 | <dia:real val="1"/> | ||
551 | </dia:attribute> | ||
552 | </dia:object> | ||
553 | <dia:object type="Standard - Line" version="0" id="O16"> | ||
554 | <dia:attribute name="obj_pos"> | ||
555 | <dia:point val="-9.61991,12.09"/> | ||
556 | </dia:attribute> | ||
557 | <dia:attribute name="obj_bb"> | ||
558 | <dia:rectangle val="-9.67,11.7149;-1.33311,12.4385"/> | ||
559 | </dia:attribute> | ||
560 | <dia:attribute name="conn_endpoints"> | ||
561 | <dia:point val="-9.61991,12.09"/> | ||
562 | <dia:point val="-1.44491,12.0756"/> | ||
563 | </dia:attribute> | ||
564 | <dia:attribute name="numcp"> | ||
565 | <dia:int val="1"/> | ||
566 | </dia:attribute> | ||
567 | <dia:attribute name="end_arrow"> | ||
568 | <dia:enum val="22"/> | ||
569 | </dia:attribute> | ||
570 | <dia:attribute name="end_arrow_length"> | ||
571 | <dia:real val="0.5"/> | ||
572 | </dia:attribute> | ||
573 | <dia:attribute name="end_arrow_width"> | ||
574 | <dia:real val="0.5"/> | ||
575 | </dia:attribute> | ||
576 | <dia:connections> | ||
577 | <dia:connection handle="1" to="O15" connection="2"/> | ||
578 | </dia:connections> | ||
579 | </dia:object> | ||
580 | <dia:object type="Standard - Text" version="1" id="O17"> | ||
581 | <dia:attribute name="obj_pos"> | ||
582 | <dia:point val="-7.39291,11.49"/> | ||
583 | </dia:attribute> | ||
584 | <dia:attribute name="obj_bb"> | ||
585 | <dia:rectangle val="-7.39291,10.895;-3.58791,11.6425"/> | ||
586 | </dia:attribute> | ||
587 | <dia:attribute name="text"> | ||
588 | <dia:composite type="text"> | ||
589 | <dia:attribute name="string"> | ||
590 | <dia:string>#pad 0 (sink)#</dia:string> | ||
591 | </dia:attribute> | ||
592 | <dia:attribute name="font"> | ||
593 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
594 | </dia:attribute> | ||
595 | <dia:attribute name="height"> | ||
596 | <dia:real val="0.80000000000000004"/> | ||
597 | </dia:attribute> | ||
598 | <dia:attribute name="pos"> | ||
599 | <dia:point val="-7.39291,11.49"/> | ||
600 | </dia:attribute> | ||
601 | <dia:attribute name="color"> | ||
602 | <dia:color val="#000000"/> | ||
603 | </dia:attribute> | ||
604 | <dia:attribute name="alignment"> | ||
605 | <dia:enum val="0"/> | ||
606 | </dia:attribute> | ||
607 | </dia:composite> | ||
608 | </dia:attribute> | ||
609 | <dia:attribute name="valign"> | ||
610 | <dia:enum val="3"/> | ||
611 | </dia:attribute> | ||
612 | </dia:object> | ||
613 | </dia:layer> | ||
614 | </dia:diagram> | ||
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg b/Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg new file mode 100644 index 000000000000..18b0f5de9ed2 --- /dev/null +++ b/Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg | |||
@@ -0,0 +1,63 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> | ||
3 | <svg width="43cm" height="10cm" viewBox="-194 128 844 196" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
4 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-8" y="130" width="469.774" height="193"/> | ||
5 | <g> | ||
6 | <rect style="fill: #ffffff" x="4.5" y="189" width="159" height="104"/> | ||
7 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="4.5" y="189" width="159" height="104"/> | ||
8 | </g> | ||
9 | <g> | ||
10 | <rect style="fill: #ffffff" x="63.5" y="211" width="94" height="77"/> | ||
11 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="63.5" y="211" width="94" height="77"/> | ||
12 | </g> | ||
13 | <text style="fill: #0000ff;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="74.5" y="227.75"> | ||
14 | <tspan x="74.5" y="227.75">sink</tspan> | ||
15 | <tspan x="74.5" y="243.75">crop</tspan> | ||
16 | <tspan x="74.5" y="259.75">selection</tspan> | ||
17 | </text> | ||
18 | <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="29.5" y="158"> | ||
19 | <tspan x="29.5" y="158"></tspan> | ||
20 | </text> | ||
21 | <text style="fill: #a52a2a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="8.53836" y="157.914"> | ||
22 | <tspan x="8.53836" y="157.914">sink media</tspan> | ||
23 | <tspan x="8.53836" y="173.914">bus format</tspan> | ||
24 | </text> | ||
25 | <text style="fill: #8b6914;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="349.774" y="155"> | ||
26 | <tspan x="349.774" y="155">source media</tspan> | ||
27 | <tspan x="349.774" y="171">bus format</tspan> | ||
28 | </text> | ||
29 | <g> | ||
30 | <rect style="fill: #ffffff" x="350.488" y="190.834" width="93.2863" height="75.166"/> | ||
31 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="350.488" y="190.834" width="93.2863" height="75.166"/> | ||
32 | </g> | ||
33 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="350.488" y1="266" x2="63.5" y2="288"/> | ||
34 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="350.488" y1="190.834" x2="63.5" y2="211"/> | ||
35 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="443.774" y1="266" x2="157.5" y2="288"/> | ||
36 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="443.774" y1="190.834" x2="157.5" y2="211"/> | ||
37 | <g> | ||
38 | <ellipse style="fill: #ffffff" cx="473.1" cy="219.984" rx="8.5" ry="8.5"/> | ||
39 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="473.1" cy="219.984" rx="8.5" ry="8.5"/> | ||
40 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="473.1" cy="219.984" rx="8.5" ry="8.5"/> | ||
41 | </g> | ||
42 | <g> | ||
43 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="481.6" y1="219.984" x2="637.934" y2="220.012"/> | ||
44 | <polygon style="fill: #000000" points="645.434,220.014 635.433,225.012 637.934,220.012 635.435,215.012 "/> | ||
45 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="645.434,220.014 635.433,225.012 637.934,220.012 635.435,215.012 "/> | ||
46 | </g> | ||
47 | <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="506.908" y="209.8"> | ||
48 | <tspan x="506.908" y="209.8">pad 1 (source)</tspan> | ||
49 | </text> | ||
50 | <g> | ||
51 | <ellipse style="fill: #ffffff" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/> | ||
52 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/> | ||
53 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/> | ||
54 | </g> | ||
55 | <g> | ||
56 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-192.398" y1="241.8" x2="-38.6343" y2="241.529"/> | ||
57 | <polygon style="fill: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/> | ||
58 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/> | ||
59 | </g> | ||
60 | <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-147.858" y="229.8"> | ||
61 | <tspan x="-147.858" y="229.8">pad 0 (sink)</tspan> | ||
62 | </text> | ||
63 | </svg> | ||
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-full.dia b/Documentation/DocBook/media/v4l/subdev-image-processing-full.dia new file mode 100644 index 000000000000..a0d782927840 --- /dev/null +++ b/Documentation/DocBook/media/v4l/subdev-image-processing-full.dia | |||
@@ -0,0 +1,1588 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/"> | ||
3 | <dia:diagramdata> | ||
4 | <dia:attribute name="background"> | ||
5 | <dia:color val="#ffffff"/> | ||
6 | </dia:attribute> | ||
7 | <dia:attribute name="pagebreak"> | ||
8 | <dia:color val="#000099"/> | ||
9 | </dia:attribute> | ||
10 | <dia:attribute name="paper"> | ||
11 | <dia:composite type="paper"> | ||
12 | <dia:attribute name="name"> | ||
13 | <dia:string>#A4#</dia:string> | ||
14 | </dia:attribute> | ||
15 | <dia:attribute name="tmargin"> | ||
16 | <dia:real val="2.8222000598907471"/> | ||
17 | </dia:attribute> | ||
18 | <dia:attribute name="bmargin"> | ||
19 | <dia:real val="2.8222000598907471"/> | ||
20 | </dia:attribute> | ||
21 | <dia:attribute name="lmargin"> | ||
22 | <dia:real val="2.8222000598907471"/> | ||
23 | </dia:attribute> | ||
24 | <dia:attribute name="rmargin"> | ||
25 | <dia:real val="2.8222000598907471"/> | ||
26 | </dia:attribute> | ||
27 | <dia:attribute name="is_portrait"> | ||
28 | <dia:boolean val="false"/> | ||
29 | </dia:attribute> | ||
30 | <dia:attribute name="scaling"> | ||
31 | <dia:real val="0.49000000953674316"/> | ||
32 | </dia:attribute> | ||
33 | <dia:attribute name="fitto"> | ||
34 | <dia:boolean val="false"/> | ||
35 | </dia:attribute> | ||
36 | </dia:composite> | ||
37 | </dia:attribute> | ||
38 | <dia:attribute name="grid"> | ||
39 | <dia:composite type="grid"> | ||
40 | <dia:attribute name="width_x"> | ||
41 | <dia:real val="1"/> | ||
42 | </dia:attribute> | ||
43 | <dia:attribute name="width_y"> | ||
44 | <dia:real val="1"/> | ||
45 | </dia:attribute> | ||
46 | <dia:attribute name="visible_x"> | ||
47 | <dia:int val="1"/> | ||
48 | </dia:attribute> | ||
49 | <dia:attribute name="visible_y"> | ||
50 | <dia:int val="1"/> | ||
51 | </dia:attribute> | ||
52 | <dia:composite type="color"/> | ||
53 | </dia:composite> | ||
54 | </dia:attribute> | ||
55 | <dia:attribute name="color"> | ||
56 | <dia:color val="#d8e5e5"/> | ||
57 | </dia:attribute> | ||
58 | <dia:attribute name="guides"> | ||
59 | <dia:composite type="guides"> | ||
60 | <dia:attribute name="hguides"/> | ||
61 | <dia:attribute name="vguides"/> | ||
62 | </dia:composite> | ||
63 | </dia:attribute> | ||
64 | </dia:diagramdata> | ||
65 | <dia:layer name="Background" visible="true" active="true"> | ||
66 | <dia:object type="Standard - Box" version="0" id="O0"> | ||
67 | <dia:attribute name="obj_pos"> | ||
68 | <dia:point val="15.945,6.45"/> | ||
69 | </dia:attribute> | ||
70 | <dia:attribute name="obj_bb"> | ||
71 | <dia:rectangle val="15.895,6.4;26.4,18.95"/> | ||
72 | </dia:attribute> | ||
73 | <dia:attribute name="elem_corner"> | ||
74 | <dia:point val="15.945,6.45"/> | ||
75 | </dia:attribute> | ||
76 | <dia:attribute name="elem_width"> | ||
77 | <dia:real val="10.404999999254942"/> | ||
78 | </dia:attribute> | ||
79 | <dia:attribute name="elem_height"> | ||
80 | <dia:real val="12.449999999999992"/> | ||
81 | </dia:attribute> | ||
82 | <dia:attribute name="border_width"> | ||
83 | <dia:real val="0.10000000149011612"/> | ||
84 | </dia:attribute> | ||
85 | <dia:attribute name="border_color"> | ||
86 | <dia:color val="#ff765a"/> | ||
87 | </dia:attribute> | ||
88 | <dia:attribute name="show_background"> | ||
89 | <dia:boolean val="true"/> | ||
90 | </dia:attribute> | ||
91 | </dia:object> | ||
92 | <dia:object type="Standard - Box" version="0" id="O1"> | ||
93 | <dia:attribute name="obj_pos"> | ||
94 | <dia:point val="-0.1,3.65"/> | ||
95 | </dia:attribute> | ||
96 | <dia:attribute name="obj_bb"> | ||
97 | <dia:rectangle val="-0.15,3.6;40.25,20.85"/> | ||
98 | </dia:attribute> | ||
99 | <dia:attribute name="elem_corner"> | ||
100 | <dia:point val="-0.1,3.65"/> | ||
101 | </dia:attribute> | ||
102 | <dia:attribute name="elem_width"> | ||
103 | <dia:real val="40.300000000000004"/> | ||
104 | </dia:attribute> | ||
105 | <dia:attribute name="elem_height"> | ||
106 | <dia:real val="17.149999999999999"/> | ||
107 | </dia:attribute> | ||
108 | <dia:attribute name="border_width"> | ||
109 | <dia:real val="0.10000000149011612"/> | ||
110 | </dia:attribute> | ||
111 | <dia:attribute name="show_background"> | ||
112 | <dia:boolean val="false"/> | ||
113 | </dia:attribute> | ||
114 | </dia:object> | ||
115 | <dia:object type="Geometric - Perfect Circle" version="1" id="O2"> | ||
116 | <dia:attribute name="obj_pos"> | ||
117 | <dia:point val="-1.05,7.9106"/> | ||
118 | </dia:attribute> | ||
119 | <dia:attribute name="obj_bb"> | ||
120 | <dia:rectangle val="-1.1,7.8606;-0.15,8.8106"/> | ||
121 | </dia:attribute> | ||
122 | <dia:attribute name="meta"> | ||
123 | <dia:composite type="dict"/> | ||
124 | </dia:attribute> | ||
125 | <dia:attribute name="elem_corner"> | ||
126 | <dia:point val="-1.05,7.9106"/> | ||
127 | </dia:attribute> | ||
128 | <dia:attribute name="elem_width"> | ||
129 | <dia:real val="0.84999999999999787"/> | ||
130 | </dia:attribute> | ||
131 | <dia:attribute name="elem_height"> | ||
132 | <dia:real val="0.84999999999999787"/> | ||
133 | </dia:attribute> | ||
134 | <dia:attribute name="line_width"> | ||
135 | <dia:real val="0.10000000000000001"/> | ||
136 | </dia:attribute> | ||
137 | <dia:attribute name="line_colour"> | ||
138 | <dia:color val="#000000"/> | ||
139 | </dia:attribute> | ||
140 | <dia:attribute name="fill_colour"> | ||
141 | <dia:color val="#ffffff"/> | ||
142 | </dia:attribute> | ||
143 | <dia:attribute name="show_background"> | ||
144 | <dia:boolean val="true"/> | ||
145 | </dia:attribute> | ||
146 | <dia:attribute name="line_style"> | ||
147 | <dia:enum val="0"/> | ||
148 | <dia:real val="1"/> | ||
149 | </dia:attribute> | ||
150 | <dia:attribute name="flip_horizontal"> | ||
151 | <dia:boolean val="false"/> | ||
152 | </dia:attribute> | ||
153 | <dia:attribute name="flip_vertical"> | ||
154 | <dia:boolean val="false"/> | ||
155 | </dia:attribute> | ||
156 | <dia:attribute name="subscale"> | ||
157 | <dia:real val="1"/> | ||
158 | </dia:attribute> | ||
159 | </dia:object> | ||
160 | <dia:object type="Geometric - Perfect Circle" version="1" id="O3"> | ||
161 | <dia:attribute name="obj_pos"> | ||
162 | <dia:point val="40.3366,9.8342"/> | ||
163 | </dia:attribute> | ||
164 | <dia:attribute name="obj_bb"> | ||
165 | <dia:rectangle val="40.2866,9.7842;41.2366,10.7342"/> | ||
166 | </dia:attribute> | ||
167 | <dia:attribute name="meta"> | ||
168 | <dia:composite type="dict"/> | ||
169 | </dia:attribute> | ||
170 | <dia:attribute name="elem_corner"> | ||
171 | <dia:point val="40.3366,9.8342"/> | ||
172 | </dia:attribute> | ||
173 | <dia:attribute name="elem_width"> | ||
174 | <dia:real val="0.84999999999999787"/> | ||
175 | </dia:attribute> | ||
176 | <dia:attribute name="elem_height"> | ||
177 | <dia:real val="0.84999999999999787"/> | ||
178 | </dia:attribute> | ||
179 | <dia:attribute name="line_width"> | ||
180 | <dia:real val="0.10000000000000001"/> | ||
181 | </dia:attribute> | ||
182 | <dia:attribute name="line_colour"> | ||
183 | <dia:color val="#000000"/> | ||
184 | </dia:attribute> | ||
185 | <dia:attribute name="fill_colour"> | ||
186 | <dia:color val="#ffffff"/> | ||
187 | </dia:attribute> | ||
188 | <dia:attribute name="show_background"> | ||
189 | <dia:boolean val="true"/> | ||
190 | </dia:attribute> | ||
191 | <dia:attribute name="line_style"> | ||
192 | <dia:enum val="0"/> | ||
193 | <dia:real val="1"/> | ||
194 | </dia:attribute> | ||
195 | <dia:attribute name="flip_horizontal"> | ||
196 | <dia:boolean val="false"/> | ||
197 | </dia:attribute> | ||
198 | <dia:attribute name="flip_vertical"> | ||
199 | <dia:boolean val="false"/> | ||
200 | </dia:attribute> | ||
201 | <dia:attribute name="subscale"> | ||
202 | <dia:real val="1"/> | ||
203 | </dia:attribute> | ||
204 | </dia:object> | ||
205 | <dia:object type="Standard - Line" version="0" id="O4"> | ||
206 | <dia:attribute name="obj_pos"> | ||
207 | <dia:point val="-9.225,8.35"/> | ||
208 | </dia:attribute> | ||
209 | <dia:attribute name="obj_bb"> | ||
210 | <dia:rectangle val="-9.27509,7.97487;-0.938197,8.69848"/> | ||
211 | </dia:attribute> | ||
212 | <dia:attribute name="conn_endpoints"> | ||
213 | <dia:point val="-9.225,8.35"/> | ||
214 | <dia:point val="-1.05,8.3356"/> | ||
215 | </dia:attribute> | ||
216 | <dia:attribute name="numcp"> | ||
217 | <dia:int val="1"/> | ||
218 | </dia:attribute> | ||
219 | <dia:attribute name="end_arrow"> | ||
220 | <dia:enum val="22"/> | ||
221 | </dia:attribute> | ||
222 | <dia:attribute name="end_arrow_length"> | ||
223 | <dia:real val="0.5"/> | ||
224 | </dia:attribute> | ||
225 | <dia:attribute name="end_arrow_width"> | ||
226 | <dia:real val="0.5"/> | ||
227 | </dia:attribute> | ||
228 | <dia:connections> | ||
229 | <dia:connection handle="1" to="O2" connection="2"/> | ||
230 | </dia:connections> | ||
231 | </dia:object> | ||
232 | <dia:object type="Standard - Line" version="0" id="O5"> | ||
233 | <dia:attribute name="obj_pos"> | ||
234 | <dia:point val="41.1866,10.2592"/> | ||
235 | </dia:attribute> | ||
236 | <dia:attribute name="obj_bb"> | ||
237 | <dia:rectangle val="41.1366,9.89879;49.6019,10.6224"/> | ||
238 | </dia:attribute> | ||
239 | <dia:attribute name="conn_endpoints"> | ||
240 | <dia:point val="41.1866,10.2592"/> | ||
241 | <dia:point val="49.4901,10.2607"/> | ||
242 | </dia:attribute> | ||
243 | <dia:attribute name="numcp"> | ||
244 | <dia:int val="1"/> | ||
245 | </dia:attribute> | ||
246 | <dia:attribute name="end_arrow"> | ||
247 | <dia:enum val="22"/> | ||
248 | </dia:attribute> | ||
249 | <dia:attribute name="end_arrow_length"> | ||
250 | <dia:real val="0.5"/> | ||
251 | </dia:attribute> | ||
252 | <dia:attribute name="end_arrow_width"> | ||
253 | <dia:real val="0.5"/> | ||
254 | </dia:attribute> | ||
255 | <dia:connections> | ||
256 | <dia:connection handle="0" to="O3" connection="3"/> | ||
257 | </dia:connections> | ||
258 | </dia:object> | ||
259 | <dia:object type="Standard - Text" version="1" id="O6"> | ||
260 | <dia:attribute name="obj_pos"> | ||
261 | <dia:point val="-6.998,7.75"/> | ||
262 | </dia:attribute> | ||
263 | <dia:attribute name="obj_bb"> | ||
264 | <dia:rectangle val="-6.998,7.155;-3.193,7.9025"/> | ||
265 | </dia:attribute> | ||
266 | <dia:attribute name="text"> | ||
267 | <dia:composite type="text"> | ||
268 | <dia:attribute name="string"> | ||
269 | <dia:string>#pad 0 (sink)#</dia:string> | ||
270 | </dia:attribute> | ||
271 | <dia:attribute name="font"> | ||
272 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
273 | </dia:attribute> | ||
274 | <dia:attribute name="height"> | ||
275 | <dia:real val="0.80000000000000004"/> | ||
276 | </dia:attribute> | ||
277 | <dia:attribute name="pos"> | ||
278 | <dia:point val="-6.998,7.75"/> | ||
279 | </dia:attribute> | ||
280 | <dia:attribute name="color"> | ||
281 | <dia:color val="#000000"/> | ||
282 | </dia:attribute> | ||
283 | <dia:attribute name="alignment"> | ||
284 | <dia:enum val="0"/> | ||
285 | </dia:attribute> | ||
286 | </dia:composite> | ||
287 | </dia:attribute> | ||
288 | <dia:attribute name="valign"> | ||
289 | <dia:enum val="3"/> | ||
290 | </dia:attribute> | ||
291 | </dia:object> | ||
292 | <dia:object type="Standard - Text" version="1" id="O7"> | ||
293 | <dia:attribute name="obj_pos"> | ||
294 | <dia:point val="42.452,9.75"/> | ||
295 | </dia:attribute> | ||
296 | <dia:attribute name="obj_bb"> | ||
297 | <dia:rectangle val="42.452,9.155;47.097,9.9025"/> | ||
298 | </dia:attribute> | ||
299 | <dia:attribute name="text"> | ||
300 | <dia:composite type="text"> | ||
301 | <dia:attribute name="string"> | ||
302 | <dia:string>#pad 2 (source)#</dia:string> | ||
303 | </dia:attribute> | ||
304 | <dia:attribute name="font"> | ||
305 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
306 | </dia:attribute> | ||
307 | <dia:attribute name="height"> | ||
308 | <dia:real val="0.80000000000000004"/> | ||
309 | </dia:attribute> | ||
310 | <dia:attribute name="pos"> | ||
311 | <dia:point val="42.452,9.75"/> | ||
312 | </dia:attribute> | ||
313 | <dia:attribute name="color"> | ||
314 | <dia:color val="#000000"/> | ||
315 | </dia:attribute> | ||
316 | <dia:attribute name="alignment"> | ||
317 | <dia:enum val="0"/> | ||
318 | </dia:attribute> | ||
319 | </dia:composite> | ||
320 | </dia:attribute> | ||
321 | <dia:attribute name="valign"> | ||
322 | <dia:enum val="3"/> | ||
323 | </dia:attribute> | ||
324 | </dia:object> | ||
325 | <dia:object type="Standard - Box" version="0" id="O8"> | ||
326 | <dia:attribute name="obj_pos"> | ||
327 | <dia:point val="0.275,6"/> | ||
328 | </dia:attribute> | ||
329 | <dia:attribute name="obj_bb"> | ||
330 | <dia:rectangle val="0.225,5.95;8.275,11.25"/> | ||
331 | </dia:attribute> | ||
332 | <dia:attribute name="elem_corner"> | ||
333 | <dia:point val="0.275,6"/> | ||
334 | </dia:attribute> | ||
335 | <dia:attribute name="elem_width"> | ||
336 | <dia:real val="7.9499999999999975"/> | ||
337 | </dia:attribute> | ||
338 | <dia:attribute name="elem_height"> | ||
339 | <dia:real val="5.1999999999999975"/> | ||
340 | </dia:attribute> | ||
341 | <dia:attribute name="border_width"> | ||
342 | <dia:real val="0.10000000149011612"/> | ||
343 | </dia:attribute> | ||
344 | <dia:attribute name="border_color"> | ||
345 | <dia:color val="#a52a2a"/> | ||
346 | </dia:attribute> | ||
347 | <dia:attribute name="show_background"> | ||
348 | <dia:boolean val="true"/> | ||
349 | </dia:attribute> | ||
350 | </dia:object> | ||
351 | <dia:object type="Standard - Box" version="0" id="O9"> | ||
352 | <dia:attribute name="obj_pos"> | ||
353 | <dia:point val="3.125,6.8"/> | ||
354 | </dia:attribute> | ||
355 | <dia:attribute name="obj_bb"> | ||
356 | <dia:rectangle val="3.075,6.75;7.875,10.7"/> | ||
357 | </dia:attribute> | ||
358 | <dia:attribute name="elem_corner"> | ||
359 | <dia:point val="3.125,6.8"/> | ||
360 | </dia:attribute> | ||
361 | <dia:attribute name="elem_width"> | ||
362 | <dia:real val="4.6999999999999975"/> | ||
363 | </dia:attribute> | ||
364 | <dia:attribute name="elem_height"> | ||
365 | <dia:real val="3.8499999999999979"/> | ||
366 | </dia:attribute> | ||
367 | <dia:attribute name="border_width"> | ||
368 | <dia:real val="0.10000000149011612"/> | ||
369 | </dia:attribute> | ||
370 | <dia:attribute name="border_color"> | ||
371 | <dia:color val="#0000ff"/> | ||
372 | </dia:attribute> | ||
373 | <dia:attribute name="show_background"> | ||
374 | <dia:boolean val="true"/> | ||
375 | </dia:attribute> | ||
376 | </dia:object> | ||
377 | <dia:object type="Standard - Text" version="1" id="O10"> | ||
378 | <dia:attribute name="obj_pos"> | ||
379 | <dia:point val="1.525,4.45"/> | ||
380 | </dia:attribute> | ||
381 | <dia:attribute name="obj_bb"> | ||
382 | <dia:rectangle val="1.525,3.855;1.525,4.6025"/> | ||
383 | </dia:attribute> | ||
384 | <dia:attribute name="text"> | ||
385 | <dia:composite type="text"> | ||
386 | <dia:attribute name="string"> | ||
387 | <dia:string>##</dia:string> | ||
388 | </dia:attribute> | ||
389 | <dia:attribute name="font"> | ||
390 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
391 | </dia:attribute> | ||
392 | <dia:attribute name="height"> | ||
393 | <dia:real val="0.80000000000000004"/> | ||
394 | </dia:attribute> | ||
395 | <dia:attribute name="pos"> | ||
396 | <dia:point val="1.525,4.45"/> | ||
397 | </dia:attribute> | ||
398 | <dia:attribute name="color"> | ||
399 | <dia:color val="#000000"/> | ||
400 | </dia:attribute> | ||
401 | <dia:attribute name="alignment"> | ||
402 | <dia:enum val="0"/> | ||
403 | </dia:attribute> | ||
404 | </dia:composite> | ||
405 | </dia:attribute> | ||
406 | <dia:attribute name="valign"> | ||
407 | <dia:enum val="3"/> | ||
408 | </dia:attribute> | ||
409 | </dia:object> | ||
410 | <dia:object type="Standard - Text" version="1" id="O11"> | ||
411 | <dia:attribute name="obj_pos"> | ||
412 | <dia:point val="0.476918,4.44569"/> | ||
413 | </dia:attribute> | ||
414 | <dia:attribute name="obj_bb"> | ||
415 | <dia:rectangle val="0.476918,3.85069;3.95942,5.39819"/> | ||
416 | </dia:attribute> | ||
417 | <dia:attribute name="text"> | ||
418 | <dia:composite type="text"> | ||
419 | <dia:attribute name="string"> | ||
420 | <dia:string>#sink media | ||
421 | bus format#</dia:string> | ||
422 | </dia:attribute> | ||
423 | <dia:attribute name="font"> | ||
424 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
425 | </dia:attribute> | ||
426 | <dia:attribute name="height"> | ||
427 | <dia:real val="0.80000000000000004"/> | ||
428 | </dia:attribute> | ||
429 | <dia:attribute name="pos"> | ||
430 | <dia:point val="0.476918,4.44569"/> | ||
431 | </dia:attribute> | ||
432 | <dia:attribute name="color"> | ||
433 | <dia:color val="#a52a2a"/> | ||
434 | </dia:attribute> | ||
435 | <dia:attribute name="alignment"> | ||
436 | <dia:enum val="0"/> | ||
437 | </dia:attribute> | ||
438 | </dia:composite> | ||
439 | </dia:attribute> | ||
440 | <dia:attribute name="valign"> | ||
441 | <dia:enum val="3"/> | ||
442 | </dia:attribute> | ||
443 | </dia:object> | ||
444 | <dia:object type="Standard - Box" version="0" id="O12"> | ||
445 | <dia:attribute name="obj_pos"> | ||
446 | <dia:point val="16.6822,9.28251"/> | ||
447 | </dia:attribute> | ||
448 | <dia:attribute name="obj_bb"> | ||
449 | <dia:rectangle val="16.6322,9.23251;24.9922,17.9564"/> | ||
450 | </dia:attribute> | ||
451 | <dia:attribute name="elem_corner"> | ||
452 | <dia:point val="16.6822,9.28251"/> | ||
453 | </dia:attribute> | ||
454 | <dia:attribute name="elem_width"> | ||
455 | <dia:real val="8.2600228398861297"/> | ||
456 | </dia:attribute> | ||
457 | <dia:attribute name="elem_height"> | ||
458 | <dia:real val="8.6238900617957164"/> | ||
459 | </dia:attribute> | ||
460 | <dia:attribute name="border_width"> | ||
461 | <dia:real val="0.10000000149011612"/> | ||
462 | </dia:attribute> | ||
463 | <dia:attribute name="border_color"> | ||
464 | <dia:color val="#00ff00"/> | ||
465 | </dia:attribute> | ||
466 | <dia:attribute name="show_background"> | ||
467 | <dia:boolean val="true"/> | ||
468 | </dia:attribute> | ||
469 | </dia:object> | ||
470 | <dia:object type="Standard - Line" version="0" id="O13"> | ||
471 | <dia:attribute name="obj_pos"> | ||
472 | <dia:point val="16.6822,17.9064"/> | ||
473 | </dia:attribute> | ||
474 | <dia:attribute name="obj_bb"> | ||
475 | <dia:rectangle val="3.05732,10.5823;16.7499,17.9741"/> | ||
476 | </dia:attribute> | ||
477 | <dia:attribute name="conn_endpoints"> | ||
478 | <dia:point val="16.6822,17.9064"/> | ||
479 | <dia:point val="3.125,10.65"/> | ||
480 | </dia:attribute> | ||
481 | <dia:attribute name="numcp"> | ||
482 | <dia:int val="1"/> | ||
483 | </dia:attribute> | ||
484 | <dia:attribute name="line_color"> | ||
485 | <dia:color val="#e60505"/> | ||
486 | </dia:attribute> | ||
487 | <dia:attribute name="line_style"> | ||
488 | <dia:enum val="4"/> | ||
489 | </dia:attribute> | ||
490 | <dia:connections> | ||
491 | <dia:connection handle="0" to="O12" connection="5"/> | ||
492 | <dia:connection handle="1" to="O9" connection="5"/> | ||
493 | </dia:connections> | ||
494 | </dia:object> | ||
495 | <dia:object type="Standard - Line" version="0" id="O14"> | ||
496 | <dia:attribute name="obj_pos"> | ||
497 | <dia:point val="16.6822,9.28251"/> | ||
498 | </dia:attribute> | ||
499 | <dia:attribute name="obj_bb"> | ||
500 | <dia:rectangle val="3.06681,6.74181;16.7404,9.3407"/> | ||
501 | </dia:attribute> | ||
502 | <dia:attribute name="conn_endpoints"> | ||
503 | <dia:point val="16.6822,9.28251"/> | ||
504 | <dia:point val="3.125,6.8"/> | ||
505 | </dia:attribute> | ||
506 | <dia:attribute name="numcp"> | ||
507 | <dia:int val="1"/> | ||
508 | </dia:attribute> | ||
509 | <dia:attribute name="line_color"> | ||
510 | <dia:color val="#e60505"/> | ||
511 | </dia:attribute> | ||
512 | <dia:attribute name="line_style"> | ||
513 | <dia:enum val="4"/> | ||
514 | </dia:attribute> | ||
515 | <dia:connections> | ||
516 | <dia:connection handle="0" to="O12" connection="0"/> | ||
517 | <dia:connection handle="1" to="O9" connection="0"/> | ||
518 | </dia:connections> | ||
519 | </dia:object> | ||
520 | <dia:object type="Standard - Line" version="0" id="O15"> | ||
521 | <dia:attribute name="obj_pos"> | ||
522 | <dia:point val="24.9422,17.9064"/> | ||
523 | </dia:attribute> | ||
524 | <dia:attribute name="obj_bb"> | ||
525 | <dia:rectangle val="7.75945,10.5845;25.0077,17.9719"/> | ||
526 | </dia:attribute> | ||
527 | <dia:attribute name="conn_endpoints"> | ||
528 | <dia:point val="24.9422,17.9064"/> | ||
529 | <dia:point val="7.825,10.65"/> | ||
530 | </dia:attribute> | ||
531 | <dia:attribute name="numcp"> | ||
532 | <dia:int val="1"/> | ||
533 | </dia:attribute> | ||
534 | <dia:attribute name="line_color"> | ||
535 | <dia:color val="#e60505"/> | ||
536 | </dia:attribute> | ||
537 | <dia:attribute name="line_style"> | ||
538 | <dia:enum val="4"/> | ||
539 | </dia:attribute> | ||
540 | <dia:connections> | ||
541 | <dia:connection handle="0" to="O12" connection="7"/> | ||
542 | <dia:connection handle="1" to="O9" connection="7"/> | ||
543 | </dia:connections> | ||
544 | </dia:object> | ||
545 | <dia:object type="Standard - Line" version="0" id="O16"> | ||
546 | <dia:attribute name="obj_pos"> | ||
547 | <dia:point val="24.9422,9.28251"/> | ||
548 | </dia:attribute> | ||
549 | <dia:attribute name="obj_bb"> | ||
550 | <dia:rectangle val="7.76834,6.74334;24.9989,9.33917"/> | ||
551 | </dia:attribute> | ||
552 | <dia:attribute name="conn_endpoints"> | ||
553 | <dia:point val="24.9422,9.28251"/> | ||
554 | <dia:point val="7.825,6.8"/> | ||
555 | </dia:attribute> | ||
556 | <dia:attribute name="numcp"> | ||
557 | <dia:int val="1"/> | ||
558 | </dia:attribute> | ||
559 | <dia:attribute name="line_color"> | ||
560 | <dia:color val="#e60505"/> | ||
561 | </dia:attribute> | ||
562 | <dia:attribute name="line_style"> | ||
563 | <dia:enum val="4"/> | ||
564 | </dia:attribute> | ||
565 | <dia:connections> | ||
566 | <dia:connection handle="0" to="O12" connection="2"/> | ||
567 | <dia:connection handle="1" to="O9" connection="2"/> | ||
568 | </dia:connections> | ||
569 | </dia:object> | ||
570 | <dia:object type="Standard - Text" version="1" id="O17"> | ||
571 | <dia:attribute name="obj_pos"> | ||
572 | <dia:point val="16.7352,7.47209"/> | ||
573 | </dia:attribute> | ||
574 | <dia:attribute name="obj_bb"> | ||
575 | <dia:rectangle val="16.7352,6.87709;22.5602,8.42459"/> | ||
576 | </dia:attribute> | ||
577 | <dia:attribute name="text"> | ||
578 | <dia:composite type="text"> | ||
579 | <dia:attribute name="string"> | ||
580 | <dia:string>#sink compose | ||
581 | selection (scaling)#</dia:string> | ||
582 | </dia:attribute> | ||
583 | <dia:attribute name="font"> | ||
584 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
585 | </dia:attribute> | ||
586 | <dia:attribute name="height"> | ||
587 | <dia:real val="0.80000000000000004"/> | ||
588 | </dia:attribute> | ||
589 | <dia:attribute name="pos"> | ||
590 | <dia:point val="16.7352,7.47209"/> | ||
591 | </dia:attribute> | ||
592 | <dia:attribute name="color"> | ||
593 | <dia:color val="#00ff00"/> | ||
594 | </dia:attribute> | ||
595 | <dia:attribute name="alignment"> | ||
596 | <dia:enum val="0"/> | ||
597 | </dia:attribute> | ||
598 | </dia:composite> | ||
599 | </dia:attribute> | ||
600 | <dia:attribute name="valign"> | ||
601 | <dia:enum val="3"/> | ||
602 | </dia:attribute> | ||
603 | </dia:object> | ||
604 | <dia:object type="Standard - Box" version="0" id="O18"> | ||
605 | <dia:attribute name="obj_pos"> | ||
606 | <dia:point val="20.4661,9.72825"/> | ||
607 | </dia:attribute> | ||
608 | <dia:attribute name="obj_bb"> | ||
609 | <dia:rectangle val="20.4161,9.67825;25.5254,13.3509"/> | ||
610 | </dia:attribute> | ||
611 | <dia:attribute name="elem_corner"> | ||
612 | <dia:point val="20.4661,9.72825"/> | ||
613 | </dia:attribute> | ||
614 | <dia:attribute name="elem_width"> | ||
615 | <dia:real val="5.009308462554376"/> | ||
616 | </dia:attribute> | ||
617 | <dia:attribute name="elem_height"> | ||
618 | <dia:real val="3.5726155970598077"/> | ||
619 | </dia:attribute> | ||
620 | <dia:attribute name="border_width"> | ||
621 | <dia:real val="0.10000000149011612"/> | ||
622 | </dia:attribute> | ||
623 | <dia:attribute name="border_color"> | ||
624 | <dia:color val="#a020f0"/> | ||
625 | </dia:attribute> | ||
626 | <dia:attribute name="show_background"> | ||
627 | <dia:boolean val="true"/> | ||
628 | </dia:attribute> | ||
629 | </dia:object> | ||
630 | <dia:object type="Standard - Text" version="1" id="O19"> | ||
631 | <dia:attribute name="obj_pos"> | ||
632 | <dia:point val="34.475,5.2564"/> | ||
633 | </dia:attribute> | ||
634 | <dia:attribute name="obj_bb"> | ||
635 | <dia:rectangle val="34.475,4.6614;38.7975,6.2089"/> | ||
636 | </dia:attribute> | ||
637 | <dia:attribute name="text"> | ||
638 | <dia:composite type="text"> | ||
639 | <dia:attribute name="string"> | ||
640 | <dia:string>#source media | ||
641 | bus format#</dia:string> | ||
642 | </dia:attribute> | ||
643 | <dia:attribute name="font"> | ||
644 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
645 | </dia:attribute> | ||
646 | <dia:attribute name="height"> | ||
647 | <dia:real val="0.80000000000000004"/> | ||
648 | </dia:attribute> | ||
649 | <dia:attribute name="pos"> | ||
650 | <dia:point val="34.475,5.2564"/> | ||
651 | </dia:attribute> | ||
652 | <dia:attribute name="color"> | ||
653 | <dia:color val="#8b6914"/> | ||
654 | </dia:attribute> | ||
655 | <dia:attribute name="alignment"> | ||
656 | <dia:enum val="0"/> | ||
657 | </dia:attribute> | ||
658 | </dia:composite> | ||
659 | </dia:attribute> | ||
660 | <dia:attribute name="valign"> | ||
661 | <dia:enum val="3"/> | ||
662 | </dia:attribute> | ||
663 | </dia:object> | ||
664 | <dia:object type="Standard - Box" version="0" id="O20"> | ||
665 | <dia:attribute name="obj_pos"> | ||
666 | <dia:point val="34.4244,8.6917"/> | ||
667 | </dia:attribute> | ||
668 | <dia:attribute name="obj_bb"> | ||
669 | <dia:rectangle val="34.3744,8.6417;39.4837,12.3143"/> | ||
670 | </dia:attribute> | ||
671 | <dia:attribute name="elem_corner"> | ||
672 | <dia:point val="34.4244,8.6917"/> | ||
673 | </dia:attribute> | ||
674 | <dia:attribute name="elem_width"> | ||
675 | <dia:real val="5.009308462554376"/> | ||
676 | </dia:attribute> | ||
677 | <dia:attribute name="elem_height"> | ||
678 | <dia:real val="3.5726155970598077"/> | ||
679 | </dia:attribute> | ||
680 | <dia:attribute name="border_width"> | ||
681 | <dia:real val="0.10000000149011612"/> | ||
682 | </dia:attribute> | ||
683 | <dia:attribute name="border_color"> | ||
684 | <dia:color val="#8b6914"/> | ||
685 | </dia:attribute> | ||
686 | <dia:attribute name="show_background"> | ||
687 | <dia:boolean val="true"/> | ||
688 | </dia:attribute> | ||
689 | </dia:object> | ||
690 | <dia:object type="Standard - Line" version="0" id="O21"> | ||
691 | <dia:attribute name="obj_pos"> | ||
692 | <dia:point val="34.4244,12.2643"/> | ||
693 | </dia:attribute> | ||
694 | <dia:attribute name="obj_bb"> | ||
695 | <dia:rectangle val="20.4125,12.2107;34.478,13.3545"/> | ||
696 | </dia:attribute> | ||
697 | <dia:attribute name="conn_endpoints"> | ||
698 | <dia:point val="34.4244,12.2643"/> | ||
699 | <dia:point val="20.4661,13.3009"/> | ||
700 | </dia:attribute> | ||
701 | <dia:attribute name="numcp"> | ||
702 | <dia:int val="1"/> | ||
703 | </dia:attribute> | ||
704 | <dia:attribute name="line_color"> | ||
705 | <dia:color val="#e60505"/> | ||
706 | </dia:attribute> | ||
707 | <dia:attribute name="line_style"> | ||
708 | <dia:enum val="4"/> | ||
709 | </dia:attribute> | ||
710 | <dia:connections> | ||
711 | <dia:connection handle="0" to="O20" connection="5"/> | ||
712 | <dia:connection handle="1" to="O18" connection="5"/> | ||
713 | </dia:connections> | ||
714 | </dia:object> | ||
715 | <dia:object type="Standard - Line" version="0" id="O22"> | ||
716 | <dia:attribute name="obj_pos"> | ||
717 | <dia:point val="34.4244,8.6917"/> | ||
718 | </dia:attribute> | ||
719 | <dia:attribute name="obj_bb"> | ||
720 | <dia:rectangle val="20.4125,8.63813;34.478,9.78182"/> | ||
721 | </dia:attribute> | ||
722 | <dia:attribute name="conn_endpoints"> | ||
723 | <dia:point val="34.4244,8.6917"/> | ||
724 | <dia:point val="20.4661,9.72825"/> | ||
725 | </dia:attribute> | ||
726 | <dia:attribute name="numcp"> | ||
727 | <dia:int val="1"/> | ||
728 | </dia:attribute> | ||
729 | <dia:attribute name="line_color"> | ||
730 | <dia:color val="#e60505"/> | ||
731 | </dia:attribute> | ||
732 | <dia:attribute name="line_style"> | ||
733 | <dia:enum val="4"/> | ||
734 | </dia:attribute> | ||
735 | <dia:connections> | ||
736 | <dia:connection handle="0" to="O20" connection="0"/> | ||
737 | <dia:connection handle="1" to="O18" connection="0"/> | ||
738 | </dia:connections> | ||
739 | </dia:object> | ||
740 | <dia:object type="Standard - Line" version="0" id="O23"> | ||
741 | <dia:attribute name="obj_pos"> | ||
742 | <dia:point val="39.4337,12.2643"/> | ||
743 | </dia:attribute> | ||
744 | <dia:attribute name="obj_bb"> | ||
745 | <dia:rectangle val="25.4218,12.2107;39.4873,13.3545"/> | ||
746 | </dia:attribute> | ||
747 | <dia:attribute name="conn_endpoints"> | ||
748 | <dia:point val="39.4337,12.2643"/> | ||
749 | <dia:point val="25.4754,13.3009"/> | ||
750 | </dia:attribute> | ||
751 | <dia:attribute name="numcp"> | ||
752 | <dia:int val="1"/> | ||
753 | </dia:attribute> | ||
754 | <dia:attribute name="line_color"> | ||
755 | <dia:color val="#e60505"/> | ||
756 | </dia:attribute> | ||
757 | <dia:attribute name="line_style"> | ||
758 | <dia:enum val="4"/> | ||
759 | </dia:attribute> | ||
760 | <dia:connections> | ||
761 | <dia:connection handle="0" to="O20" connection="7"/> | ||
762 | <dia:connection handle="1" to="O18" connection="7"/> | ||
763 | </dia:connections> | ||
764 | </dia:object> | ||
765 | <dia:object type="Standard - Line" version="0" id="O24"> | ||
766 | <dia:attribute name="obj_pos"> | ||
767 | <dia:point val="39.4337,8.6917"/> | ||
768 | </dia:attribute> | ||
769 | <dia:attribute name="obj_bb"> | ||
770 | <dia:rectangle val="25.4218,8.63813;39.4873,9.78182"/> | ||
771 | </dia:attribute> | ||
772 | <dia:attribute name="conn_endpoints"> | ||
773 | <dia:point val="39.4337,8.6917"/> | ||
774 | <dia:point val="25.4754,9.72825"/> | ||
775 | </dia:attribute> | ||
776 | <dia:attribute name="numcp"> | ||
777 | <dia:int val="1"/> | ||
778 | </dia:attribute> | ||
779 | <dia:attribute name="line_color"> | ||
780 | <dia:color val="#e60505"/> | ||
781 | </dia:attribute> | ||
782 | <dia:attribute name="line_style"> | ||
783 | <dia:enum val="4"/> | ||
784 | </dia:attribute> | ||
785 | <dia:connections> | ||
786 | <dia:connection handle="0" to="O20" connection="2"/> | ||
787 | <dia:connection handle="1" to="O18" connection="2"/> | ||
788 | </dia:connections> | ||
789 | </dia:object> | ||
790 | <dia:object type="Standard - Text" version="1" id="O25"> | ||
791 | <dia:attribute name="obj_pos"> | ||
792 | <dia:point val="16.25,5.15"/> | ||
793 | </dia:attribute> | ||
794 | <dia:attribute name="obj_bb"> | ||
795 | <dia:rectangle val="16.25,4.555;21.68,6.1025"/> | ||
796 | </dia:attribute> | ||
797 | <dia:attribute name="text"> | ||
798 | <dia:composite type="text"> | ||
799 | <dia:attribute name="string"> | ||
800 | <dia:string>#sink compose | ||
801 | bounds selection#</dia:string> | ||
802 | </dia:attribute> | ||
803 | <dia:attribute name="font"> | ||
804 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
805 | </dia:attribute> | ||
806 | <dia:attribute name="height"> | ||
807 | <dia:real val="0.80000000000000004"/> | ||
808 | </dia:attribute> | ||
809 | <dia:attribute name="pos"> | ||
810 | <dia:point val="16.25,5.15"/> | ||
811 | </dia:attribute> | ||
812 | <dia:attribute name="color"> | ||
813 | <dia:color val="#ff765a"/> | ||
814 | </dia:attribute> | ||
815 | <dia:attribute name="alignment"> | ||
816 | <dia:enum val="0"/> | ||
817 | </dia:attribute> | ||
818 | </dia:composite> | ||
819 | </dia:attribute> | ||
820 | <dia:attribute name="valign"> | ||
821 | <dia:enum val="3"/> | ||
822 | </dia:attribute> | ||
823 | </dia:object> | ||
824 | <dia:object type="Geometric - Perfect Circle" version="1" id="O26"> | ||
825 | <dia:attribute name="obj_pos"> | ||
826 | <dia:point val="-1.02991,16.6506"/> | ||
827 | </dia:attribute> | ||
828 | <dia:attribute name="obj_bb"> | ||
829 | <dia:rectangle val="-1.07991,16.6006;-0.12991,17.5506"/> | ||
830 | </dia:attribute> | ||
831 | <dia:attribute name="meta"> | ||
832 | <dia:composite type="dict"/> | ||
833 | </dia:attribute> | ||
834 | <dia:attribute name="elem_corner"> | ||
835 | <dia:point val="-1.02991,16.6506"/> | ||
836 | </dia:attribute> | ||
837 | <dia:attribute name="elem_width"> | ||
838 | <dia:real val="0.84999999999999787"/> | ||
839 | </dia:attribute> | ||
840 | <dia:attribute name="elem_height"> | ||
841 | <dia:real val="0.84999999999999787"/> | ||
842 | </dia:attribute> | ||
843 | <dia:attribute name="line_width"> | ||
844 | <dia:real val="0.10000000000000001"/> | ||
845 | </dia:attribute> | ||
846 | <dia:attribute name="line_colour"> | ||
847 | <dia:color val="#000000"/> | ||
848 | </dia:attribute> | ||
849 | <dia:attribute name="fill_colour"> | ||
850 | <dia:color val="#ffffff"/> | ||
851 | </dia:attribute> | ||
852 | <dia:attribute name="show_background"> | ||
853 | <dia:boolean val="true"/> | ||
854 | </dia:attribute> | ||
855 | <dia:attribute name="line_style"> | ||
856 | <dia:enum val="0"/> | ||
857 | <dia:real val="1"/> | ||
858 | </dia:attribute> | ||
859 | <dia:attribute name="flip_horizontal"> | ||
860 | <dia:boolean val="false"/> | ||
861 | </dia:attribute> | ||
862 | <dia:attribute name="flip_vertical"> | ||
863 | <dia:boolean val="false"/> | ||
864 | </dia:attribute> | ||
865 | <dia:attribute name="subscale"> | ||
866 | <dia:real val="1"/> | ||
867 | </dia:attribute> | ||
868 | </dia:object> | ||
869 | <dia:object type="Standard - Line" version="0" id="O27"> | ||
870 | <dia:attribute name="obj_pos"> | ||
871 | <dia:point val="-9.20491,17.09"/> | ||
872 | </dia:attribute> | ||
873 | <dia:attribute name="obj_bb"> | ||
874 | <dia:rectangle val="-9.255,16.7149;-0.918107,17.4385"/> | ||
875 | </dia:attribute> | ||
876 | <dia:attribute name="conn_endpoints"> | ||
877 | <dia:point val="-9.20491,17.09"/> | ||
878 | <dia:point val="-1.02991,17.0756"/> | ||
879 | </dia:attribute> | ||
880 | <dia:attribute name="numcp"> | ||
881 | <dia:int val="1"/> | ||
882 | </dia:attribute> | ||
883 | <dia:attribute name="end_arrow"> | ||
884 | <dia:enum val="22"/> | ||
885 | </dia:attribute> | ||
886 | <dia:attribute name="end_arrow_length"> | ||
887 | <dia:real val="0.5"/> | ||
888 | </dia:attribute> | ||
889 | <dia:attribute name="end_arrow_width"> | ||
890 | <dia:real val="0.5"/> | ||
891 | </dia:attribute> | ||
892 | <dia:connections> | ||
893 | <dia:connection handle="1" to="O26" connection="2"/> | ||
894 | </dia:connections> | ||
895 | </dia:object> | ||
896 | <dia:object type="Standard - Text" version="1" id="O28"> | ||
897 | <dia:attribute name="obj_pos"> | ||
898 | <dia:point val="-6.95,16.45"/> | ||
899 | </dia:attribute> | ||
900 | <dia:attribute name="obj_bb"> | ||
901 | <dia:rectangle val="-6.95,15.855;-3.145,16.6025"/> | ||
902 | </dia:attribute> | ||
903 | <dia:attribute name="text"> | ||
904 | <dia:composite type="text"> | ||
905 | <dia:attribute name="string"> | ||
906 | <dia:string>#pad 1 (sink)#</dia:string> | ||
907 | </dia:attribute> | ||
908 | <dia:attribute name="font"> | ||
909 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
910 | </dia:attribute> | ||
911 | <dia:attribute name="height"> | ||
912 | <dia:real val="0.80000000000000004"/> | ||
913 | </dia:attribute> | ||
914 | <dia:attribute name="pos"> | ||
915 | <dia:point val="-6.95,16.45"/> | ||
916 | </dia:attribute> | ||
917 | <dia:attribute name="color"> | ||
918 | <dia:color val="#000000"/> | ||
919 | </dia:attribute> | ||
920 | <dia:attribute name="alignment"> | ||
921 | <dia:enum val="0"/> | ||
922 | </dia:attribute> | ||
923 | </dia:composite> | ||
924 | </dia:attribute> | ||
925 | <dia:attribute name="valign"> | ||
926 | <dia:enum val="3"/> | ||
927 | </dia:attribute> | ||
928 | </dia:object> | ||
929 | <dia:object type="Standard - Box" version="0" id="O29"> | ||
930 | <dia:attribute name="obj_pos"> | ||
931 | <dia:point val="0.390412,14.64"/> | ||
932 | </dia:attribute> | ||
933 | <dia:attribute name="obj_bb"> | ||
934 | <dia:rectangle val="0.340412,14.59;6.045,18.8"/> | ||
935 | </dia:attribute> | ||
936 | <dia:attribute name="elem_corner"> | ||
937 | <dia:point val="0.390412,14.64"/> | ||
938 | </dia:attribute> | ||
939 | <dia:attribute name="elem_width"> | ||
940 | <dia:real val="5.604587512785236"/> | ||
941 | </dia:attribute> | ||
942 | <dia:attribute name="elem_height"> | ||
943 | <dia:real val="4.1099999999999994"/> | ||
944 | </dia:attribute> | ||
945 | <dia:attribute name="border_width"> | ||
946 | <dia:real val="0.10000000149011612"/> | ||
947 | </dia:attribute> | ||
948 | <dia:attribute name="border_color"> | ||
949 | <dia:color val="#a52a2a"/> | ||
950 | </dia:attribute> | ||
951 | <dia:attribute name="show_background"> | ||
952 | <dia:boolean val="true"/> | ||
953 | </dia:attribute> | ||
954 | </dia:object> | ||
955 | <dia:object type="Standard - Box" version="0" id="O30"> | ||
956 | <dia:attribute name="obj_pos"> | ||
957 | <dia:point val="2.645,15.74"/> | ||
958 | </dia:attribute> | ||
959 | <dia:attribute name="obj_bb"> | ||
960 | <dia:rectangle val="2.595,15.69;5.6,18.3"/> | ||
961 | </dia:attribute> | ||
962 | <dia:attribute name="elem_corner"> | ||
963 | <dia:point val="2.645,15.74"/> | ||
964 | </dia:attribute> | ||
965 | <dia:attribute name="elem_width"> | ||
966 | <dia:real val="2.904999999254942"/> | ||
967 | </dia:attribute> | ||
968 | <dia:attribute name="elem_height"> | ||
969 | <dia:real val="2.5100000000000016"/> | ||
970 | </dia:attribute> | ||
971 | <dia:attribute name="border_width"> | ||
972 | <dia:real val="0.10000000149011612"/> | ||
973 | </dia:attribute> | ||
974 | <dia:attribute name="border_color"> | ||
975 | <dia:color val="#0000ff"/> | ||
976 | </dia:attribute> | ||
977 | <dia:attribute name="show_background"> | ||
978 | <dia:boolean val="true"/> | ||
979 | </dia:attribute> | ||
980 | </dia:object> | ||
981 | <dia:object type="Standard - Text" version="1" id="O31"> | ||
982 | <dia:attribute name="obj_pos"> | ||
983 | <dia:point val="1.595,12.99"/> | ||
984 | </dia:attribute> | ||
985 | <dia:attribute name="obj_bb"> | ||
986 | <dia:rectangle val="1.595,12.395;1.595,13.1425"/> | ||
987 | </dia:attribute> | ||
988 | <dia:attribute name="text"> | ||
989 | <dia:composite type="text"> | ||
990 | <dia:attribute name="string"> | ||
991 | <dia:string>##</dia:string> | ||
992 | </dia:attribute> | ||
993 | <dia:attribute name="font"> | ||
994 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
995 | </dia:attribute> | ||
996 | <dia:attribute name="height"> | ||
997 | <dia:real val="0.80000000000000004"/> | ||
998 | </dia:attribute> | ||
999 | <dia:attribute name="pos"> | ||
1000 | <dia:point val="1.595,12.99"/> | ||
1001 | </dia:attribute> | ||
1002 | <dia:attribute name="color"> | ||
1003 | <dia:color val="#000000"/> | ||
1004 | </dia:attribute> | ||
1005 | <dia:attribute name="alignment"> | ||
1006 | <dia:enum val="0"/> | ||
1007 | </dia:attribute> | ||
1008 | </dia:composite> | ||
1009 | </dia:attribute> | ||
1010 | <dia:attribute name="valign"> | ||
1011 | <dia:enum val="3"/> | ||
1012 | </dia:attribute> | ||
1013 | </dia:object> | ||
1014 | <dia:object type="Standard - Line" version="0" id="O32"> | ||
1015 | <dia:attribute name="obj_pos"> | ||
1016 | <dia:point val="17.945,12.595"/> | ||
1017 | </dia:attribute> | ||
1018 | <dia:attribute name="obj_bb"> | ||
1019 | <dia:rectangle val="2.58596,12.536;18.004,15.799"/> | ||
1020 | </dia:attribute> | ||
1021 | <dia:attribute name="conn_endpoints"> | ||
1022 | <dia:point val="17.945,12.595"/> | ||
1023 | <dia:point val="2.645,15.74"/> | ||
1024 | </dia:attribute> | ||
1025 | <dia:attribute name="numcp"> | ||
1026 | <dia:int val="1"/> | ||
1027 | </dia:attribute> | ||
1028 | <dia:attribute name="line_color"> | ||
1029 | <dia:color val="#e60505"/> | ||
1030 | </dia:attribute> | ||
1031 | <dia:attribute name="line_style"> | ||
1032 | <dia:enum val="4"/> | ||
1033 | </dia:attribute> | ||
1034 | <dia:connections> | ||
1035 | <dia:connection handle="0" to="O36" connection="0"/> | ||
1036 | <dia:connection handle="1" to="O30" connection="0"/> | ||
1037 | </dia:connections> | ||
1038 | </dia:object> | ||
1039 | <dia:object type="Standard - Line" version="0" id="O33"> | ||
1040 | <dia:attribute name="obj_pos"> | ||
1041 | <dia:point val="17.945,15.8"/> | ||
1042 | </dia:attribute> | ||
1043 | <dia:attribute name="obj_bb"> | ||
1044 | <dia:rectangle val="2.58772,15.7427;18.0023,18.3073"/> | ||
1045 | </dia:attribute> | ||
1046 | <dia:attribute name="conn_endpoints"> | ||
1047 | <dia:point val="17.945,15.8"/> | ||
1048 | <dia:point val="2.645,18.25"/> | ||
1049 | </dia:attribute> | ||
1050 | <dia:attribute name="numcp"> | ||
1051 | <dia:int val="1"/> | ||
1052 | </dia:attribute> | ||
1053 | <dia:attribute name="line_color"> | ||
1054 | <dia:color val="#e60505"/> | ||
1055 | </dia:attribute> | ||
1056 | <dia:attribute name="line_style"> | ||
1057 | <dia:enum val="4"/> | ||
1058 | </dia:attribute> | ||
1059 | <dia:connections> | ||
1060 | <dia:connection handle="0" to="O36" connection="5"/> | ||
1061 | <dia:connection handle="1" to="O30" connection="5"/> | ||
1062 | </dia:connections> | ||
1063 | </dia:object> | ||
1064 | <dia:object type="Standard - Line" version="0" id="O34"> | ||
1065 | <dia:attribute name="obj_pos"> | ||
1066 | <dia:point val="21.7,15.8"/> | ||
1067 | </dia:attribute> | ||
1068 | <dia:attribute name="obj_bb"> | ||
1069 | <dia:rectangle val="5.49307,15.7431;21.7569,18.3069"/> | ||
1070 | </dia:attribute> | ||
1071 | <dia:attribute name="conn_endpoints"> | ||
1072 | <dia:point val="21.7,15.8"/> | ||
1073 | <dia:point val="5.55,18.25"/> | ||
1074 | </dia:attribute> | ||
1075 | <dia:attribute name="numcp"> | ||
1076 | <dia:int val="1"/> | ||
1077 | </dia:attribute> | ||
1078 | <dia:attribute name="line_color"> | ||
1079 | <dia:color val="#e60505"/> | ||
1080 | </dia:attribute> | ||
1081 | <dia:attribute name="line_style"> | ||
1082 | <dia:enum val="4"/> | ||
1083 | </dia:attribute> | ||
1084 | <dia:connections> | ||
1085 | <dia:connection handle="0" to="O36" connection="7"/> | ||
1086 | <dia:connection handle="1" to="O30" connection="7"/> | ||
1087 | </dia:connections> | ||
1088 | </dia:object> | ||
1089 | <dia:object type="Standard - Line" version="0" id="O35"> | ||
1090 | <dia:attribute name="obj_pos"> | ||
1091 | <dia:point val="21.7,12.595"/> | ||
1092 | </dia:attribute> | ||
1093 | <dia:attribute name="obj_bb"> | ||
1094 | <dia:rectangle val="5.49136,12.5364;21.7586,15.7986"/> | ||
1095 | </dia:attribute> | ||
1096 | <dia:attribute name="conn_endpoints"> | ||
1097 | <dia:point val="21.7,12.595"/> | ||
1098 | <dia:point val="5.55,15.74"/> | ||
1099 | </dia:attribute> | ||
1100 | <dia:attribute name="numcp"> | ||
1101 | <dia:int val="1"/> | ||
1102 | </dia:attribute> | ||
1103 | <dia:attribute name="line_color"> | ||
1104 | <dia:color val="#e60505"/> | ||
1105 | </dia:attribute> | ||
1106 | <dia:attribute name="line_style"> | ||
1107 | <dia:enum val="4"/> | ||
1108 | </dia:attribute> | ||
1109 | <dia:connections> | ||
1110 | <dia:connection handle="0" to="O36" connection="2"/> | ||
1111 | <dia:connection handle="1" to="O30" connection="2"/> | ||
1112 | </dia:connections> | ||
1113 | </dia:object> | ||
1114 | <dia:object type="Standard - Box" version="0" id="O36"> | ||
1115 | <dia:attribute name="obj_pos"> | ||
1116 | <dia:point val="17.945,12.595"/> | ||
1117 | </dia:attribute> | ||
1118 | <dia:attribute name="obj_bb"> | ||
1119 | <dia:rectangle val="17.895,12.545;21.75,15.85"/> | ||
1120 | </dia:attribute> | ||
1121 | <dia:attribute name="elem_corner"> | ||
1122 | <dia:point val="17.945,12.595"/> | ||
1123 | </dia:attribute> | ||
1124 | <dia:attribute name="elem_width"> | ||
1125 | <dia:real val="3.7549999992549452"/> | ||
1126 | </dia:attribute> | ||
1127 | <dia:attribute name="elem_height"> | ||
1128 | <dia:real val="3.2049999992549427"/> | ||
1129 | </dia:attribute> | ||
1130 | <dia:attribute name="border_width"> | ||
1131 | <dia:real val="0.10000000149011612"/> | ||
1132 | </dia:attribute> | ||
1133 | <dia:attribute name="border_color"> | ||
1134 | <dia:color val="#00ff00"/> | ||
1135 | </dia:attribute> | ||
1136 | <dia:attribute name="show_background"> | ||
1137 | <dia:boolean val="false"/> | ||
1138 | </dia:attribute> | ||
1139 | </dia:object> | ||
1140 | <dia:object type="Standard - Box" version="0" id="O37"> | ||
1141 | <dia:attribute name="obj_pos"> | ||
1142 | <dia:point val="22.1631,14.2233"/> | ||
1143 | </dia:attribute> | ||
1144 | <dia:attribute name="obj_bb"> | ||
1145 | <dia:rectangle val="22.1131,14.1733;25.45,16.7"/> | ||
1146 | </dia:attribute> | ||
1147 | <dia:attribute name="elem_corner"> | ||
1148 | <dia:point val="22.1631,14.2233"/> | ||
1149 | </dia:attribute> | ||
1150 | <dia:attribute name="elem_width"> | ||
1151 | <dia:real val="3.2369000000000021"/> | ||
1152 | </dia:attribute> | ||
1153 | <dia:attribute name="elem_height"> | ||
1154 | <dia:real val="2.4267000000000003"/> | ||
1155 | </dia:attribute> | ||
1156 | <dia:attribute name="border_width"> | ||
1157 | <dia:real val="0.10000000149011612"/> | ||
1158 | </dia:attribute> | ||
1159 | <dia:attribute name="border_color"> | ||
1160 | <dia:color val="#a020f0"/> | ||
1161 | </dia:attribute> | ||
1162 | <dia:attribute name="show_background"> | ||
1163 | <dia:boolean val="false"/> | ||
1164 | </dia:attribute> | ||
1165 | </dia:object> | ||
1166 | <dia:object type="Standard - Box" version="0" id="O38"> | ||
1167 | <dia:attribute name="obj_pos"> | ||
1168 | <dia:point val="34.6714,16.2367"/> | ||
1169 | </dia:attribute> | ||
1170 | <dia:attribute name="obj_bb"> | ||
1171 | <dia:rectangle val="34.6214,16.1867;37.9,18.75"/> | ||
1172 | </dia:attribute> | ||
1173 | <dia:attribute name="elem_corner"> | ||
1174 | <dia:point val="34.6714,16.2367"/> | ||
1175 | </dia:attribute> | ||
1176 | <dia:attribute name="elem_width"> | ||
1177 | <dia:real val="3.178600000000003"/> | ||
1178 | </dia:attribute> | ||
1179 | <dia:attribute name="elem_height"> | ||
1180 | <dia:real val="2.4632999999999967"/> | ||
1181 | </dia:attribute> | ||
1182 | <dia:attribute name="border_width"> | ||
1183 | <dia:real val="0.10000000149011612"/> | ||
1184 | </dia:attribute> | ||
1185 | <dia:attribute name="border_color"> | ||
1186 | <dia:color val="#8b6914"/> | ||
1187 | </dia:attribute> | ||
1188 | <dia:attribute name="show_background"> | ||
1189 | <dia:boolean val="true"/> | ||
1190 | </dia:attribute> | ||
1191 | </dia:object> | ||
1192 | <dia:object type="Standard - Line" version="0" id="O39"> | ||
1193 | <dia:attribute name="obj_pos"> | ||
1194 | <dia:point val="34.6714,18.7"/> | ||
1195 | </dia:attribute> | ||
1196 | <dia:attribute name="obj_bb"> | ||
1197 | <dia:rectangle val="22.1057,16.5926;34.7288,18.7574"/> | ||
1198 | </dia:attribute> | ||
1199 | <dia:attribute name="conn_endpoints"> | ||
1200 | <dia:point val="34.6714,18.7"/> | ||
1201 | <dia:point val="22.1631,16.65"/> | ||
1202 | </dia:attribute> | ||
1203 | <dia:attribute name="numcp"> | ||
1204 | <dia:int val="1"/> | ||
1205 | </dia:attribute> | ||
1206 | <dia:attribute name="line_color"> | ||
1207 | <dia:color val="#e60505"/> | ||
1208 | </dia:attribute> | ||
1209 | <dia:attribute name="line_style"> | ||
1210 | <dia:enum val="4"/> | ||
1211 | </dia:attribute> | ||
1212 | <dia:connections> | ||
1213 | <dia:connection handle="0" to="O38" connection="5"/> | ||
1214 | <dia:connection handle="1" to="O37" connection="5"/> | ||
1215 | </dia:connections> | ||
1216 | </dia:object> | ||
1217 | <dia:object type="Standard - Line" version="0" id="O40"> | ||
1218 | <dia:attribute name="obj_pos"> | ||
1219 | <dia:point val="34.6714,16.2367"/> | ||
1220 | </dia:attribute> | ||
1221 | <dia:attribute name="obj_bb"> | ||
1222 | <dia:rectangle val="22.1058,14.166;34.7287,16.294"/> | ||
1223 | </dia:attribute> | ||
1224 | <dia:attribute name="conn_endpoints"> | ||
1225 | <dia:point val="34.6714,16.2367"/> | ||
1226 | <dia:point val="22.1631,14.2233"/> | ||
1227 | </dia:attribute> | ||
1228 | <dia:attribute name="numcp"> | ||
1229 | <dia:int val="1"/> | ||
1230 | </dia:attribute> | ||
1231 | <dia:attribute name="line_color"> | ||
1232 | <dia:color val="#e60505"/> | ||
1233 | </dia:attribute> | ||
1234 | <dia:attribute name="line_style"> | ||
1235 | <dia:enum val="4"/> | ||
1236 | </dia:attribute> | ||
1237 | <dia:connections> | ||
1238 | <dia:connection handle="0" to="O38" connection="0"/> | ||
1239 | <dia:connection handle="1" to="O37" connection="0"/> | ||
1240 | </dia:connections> | ||
1241 | </dia:object> | ||
1242 | <dia:object type="Standard - Line" version="0" id="O41"> | ||
1243 | <dia:attribute name="obj_pos"> | ||
1244 | <dia:point val="37.85,18.7"/> | ||
1245 | </dia:attribute> | ||
1246 | <dia:attribute name="obj_bb"> | ||
1247 | <dia:rectangle val="25.3425,16.5925;37.9075,18.7575"/> | ||
1248 | </dia:attribute> | ||
1249 | <dia:attribute name="conn_endpoints"> | ||
1250 | <dia:point val="37.85,18.7"/> | ||
1251 | <dia:point val="25.4,16.65"/> | ||
1252 | </dia:attribute> | ||
1253 | <dia:attribute name="numcp"> | ||
1254 | <dia:int val="1"/> | ||
1255 | </dia:attribute> | ||
1256 | <dia:attribute name="line_color"> | ||
1257 | <dia:color val="#e60505"/> | ||
1258 | </dia:attribute> | ||
1259 | <dia:attribute name="line_style"> | ||
1260 | <dia:enum val="4"/> | ||
1261 | </dia:attribute> | ||
1262 | <dia:connections> | ||
1263 | <dia:connection handle="0" to="O38" connection="7"/> | ||
1264 | <dia:connection handle="1" to="O37" connection="7"/> | ||
1265 | </dia:connections> | ||
1266 | </dia:object> | ||
1267 | <dia:object type="Standard - Line" version="0" id="O42"> | ||
1268 | <dia:attribute name="obj_pos"> | ||
1269 | <dia:point val="37.85,16.2367"/> | ||
1270 | </dia:attribute> | ||
1271 | <dia:attribute name="obj_bb"> | ||
1272 | <dia:rectangle val="25.3427,14.166;37.9073,16.294"/> | ||
1273 | </dia:attribute> | ||
1274 | <dia:attribute name="conn_endpoints"> | ||
1275 | <dia:point val="37.85,16.2367"/> | ||
1276 | <dia:point val="25.4,14.2233"/> | ||
1277 | </dia:attribute> | ||
1278 | <dia:attribute name="numcp"> | ||
1279 | <dia:int val="1"/> | ||
1280 | </dia:attribute> | ||
1281 | <dia:attribute name="line_color"> | ||
1282 | <dia:color val="#e60505"/> | ||
1283 | </dia:attribute> | ||
1284 | <dia:attribute name="line_style"> | ||
1285 | <dia:enum val="4"/> | ||
1286 | </dia:attribute> | ||
1287 | <dia:connections> | ||
1288 | <dia:connection handle="0" to="O38" connection="2"/> | ||
1289 | <dia:connection handle="1" to="O37" connection="2"/> | ||
1290 | </dia:connections> | ||
1291 | </dia:object> | ||
1292 | <dia:object type="Geometric - Perfect Circle" version="1" id="O43"> | ||
1293 | <dia:attribute name="obj_pos"> | ||
1294 | <dia:point val="40.347,16.7742"/> | ||
1295 | </dia:attribute> | ||
1296 | <dia:attribute name="obj_bb"> | ||
1297 | <dia:rectangle val="40.297,16.7242;41.247,17.6742"/> | ||
1298 | </dia:attribute> | ||
1299 | <dia:attribute name="meta"> | ||
1300 | <dia:composite type="dict"/> | ||
1301 | </dia:attribute> | ||
1302 | <dia:attribute name="elem_corner"> | ||
1303 | <dia:point val="40.347,16.7742"/> | ||
1304 | </dia:attribute> | ||
1305 | <dia:attribute name="elem_width"> | ||
1306 | <dia:real val="0.84999999999999787"/> | ||
1307 | </dia:attribute> | ||
1308 | <dia:attribute name="elem_height"> | ||
1309 | <dia:real val="0.84999999999999787"/> | ||
1310 | </dia:attribute> | ||
1311 | <dia:attribute name="line_width"> | ||
1312 | <dia:real val="0.10000000000000001"/> | ||
1313 | </dia:attribute> | ||
1314 | <dia:attribute name="line_colour"> | ||
1315 | <dia:color val="#000000"/> | ||
1316 | </dia:attribute> | ||
1317 | <dia:attribute name="fill_colour"> | ||
1318 | <dia:color val="#ffffff"/> | ||
1319 | </dia:attribute> | ||
1320 | <dia:attribute name="show_background"> | ||
1321 | <dia:boolean val="true"/> | ||
1322 | </dia:attribute> | ||
1323 | <dia:attribute name="line_style"> | ||
1324 | <dia:enum val="0"/> | ||
1325 | <dia:real val="1"/> | ||
1326 | </dia:attribute> | ||
1327 | <dia:attribute name="flip_horizontal"> | ||
1328 | <dia:boolean val="false"/> | ||
1329 | </dia:attribute> | ||
1330 | <dia:attribute name="flip_vertical"> | ||
1331 | <dia:boolean val="false"/> | ||
1332 | </dia:attribute> | ||
1333 | <dia:attribute name="subscale"> | ||
1334 | <dia:real val="1"/> | ||
1335 | </dia:attribute> | ||
1336 | </dia:object> | ||
1337 | <dia:object type="Standard - Line" version="0" id="O44"> | ||
1338 | <dia:attribute name="obj_pos"> | ||
1339 | <dia:point val="41.197,17.1992"/> | ||
1340 | </dia:attribute> | ||
1341 | <dia:attribute name="obj_bb"> | ||
1342 | <dia:rectangle val="41.147,16.8388;49.6123,17.5624"/> | ||
1343 | </dia:attribute> | ||
1344 | <dia:attribute name="conn_endpoints"> | ||
1345 | <dia:point val="41.197,17.1992"/> | ||
1346 | <dia:point val="49.5005,17.2007"/> | ||
1347 | </dia:attribute> | ||
1348 | <dia:attribute name="numcp"> | ||
1349 | <dia:int val="1"/> | ||
1350 | </dia:attribute> | ||
1351 | <dia:attribute name="end_arrow"> | ||
1352 | <dia:enum val="22"/> | ||
1353 | </dia:attribute> | ||
1354 | <dia:attribute name="end_arrow_length"> | ||
1355 | <dia:real val="0.5"/> | ||
1356 | </dia:attribute> | ||
1357 | <dia:attribute name="end_arrow_width"> | ||
1358 | <dia:real val="0.5"/> | ||
1359 | </dia:attribute> | ||
1360 | <dia:connections> | ||
1361 | <dia:connection handle="0" to="O43" connection="3"/> | ||
1362 | </dia:connections> | ||
1363 | </dia:object> | ||
1364 | <dia:object type="Standard - Text" version="1" id="O45"> | ||
1365 | <dia:attribute name="obj_pos"> | ||
1366 | <dia:point val="42.4624,16.69"/> | ||
1367 | </dia:attribute> | ||
1368 | <dia:attribute name="obj_bb"> | ||
1369 | <dia:rectangle val="42.4624,16.095;47.1074,16.8425"/> | ||
1370 | </dia:attribute> | ||
1371 | <dia:attribute name="text"> | ||
1372 | <dia:composite type="text"> | ||
1373 | <dia:attribute name="string"> | ||
1374 | <dia:string>#pad 3 (source)#</dia:string> | ||
1375 | </dia:attribute> | ||
1376 | <dia:attribute name="font"> | ||
1377 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
1378 | </dia:attribute> | ||
1379 | <dia:attribute name="height"> | ||
1380 | <dia:real val="0.80000000000000004"/> | ||
1381 | </dia:attribute> | ||
1382 | <dia:attribute name="pos"> | ||
1383 | <dia:point val="42.4624,16.69"/> | ||
1384 | </dia:attribute> | ||
1385 | <dia:attribute name="color"> | ||
1386 | <dia:color val="#000000"/> | ||
1387 | </dia:attribute> | ||
1388 | <dia:attribute name="alignment"> | ||
1389 | <dia:enum val="0"/> | ||
1390 | </dia:attribute> | ||
1391 | </dia:composite> | ||
1392 | </dia:attribute> | ||
1393 | <dia:attribute name="valign"> | ||
1394 | <dia:enum val="3"/> | ||
1395 | </dia:attribute> | ||
1396 | </dia:object> | ||
1397 | <dia:object type="Standard - Text" version="1" id="O46"> | ||
1398 | <dia:attribute name="obj_pos"> | ||
1399 | <dia:point val="9.85,4.55"/> | ||
1400 | </dia:attribute> | ||
1401 | <dia:attribute name="obj_bb"> | ||
1402 | <dia:rectangle val="9.85,3.955;12.7275,6.3025"/> | ||
1403 | </dia:attribute> | ||
1404 | <dia:attribute name="text"> | ||
1405 | <dia:composite type="text"> | ||
1406 | <dia:attribute name="string"> | ||
1407 | <dia:string>#sink | ||
1408 | crop | ||
1409 | selection#</dia:string> | ||
1410 | </dia:attribute> | ||
1411 | <dia:attribute name="font"> | ||
1412 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
1413 | </dia:attribute> | ||
1414 | <dia:attribute name="height"> | ||
1415 | <dia:real val="0.80000000000000004"/> | ||
1416 | </dia:attribute> | ||
1417 | <dia:attribute name="pos"> | ||
1418 | <dia:point val="9.85,4.55"/> | ||
1419 | </dia:attribute> | ||
1420 | <dia:attribute name="color"> | ||
1421 | <dia:color val="#0000ff"/> | ||
1422 | </dia:attribute> | ||
1423 | <dia:attribute name="alignment"> | ||
1424 | <dia:enum val="0"/> | ||
1425 | </dia:attribute> | ||
1426 | </dia:composite> | ||
1427 | </dia:attribute> | ||
1428 | <dia:attribute name="valign"> | ||
1429 | <dia:enum val="3"/> | ||
1430 | </dia:attribute> | ||
1431 | </dia:object> | ||
1432 | <dia:object type="Standard - Text" version="1" id="O47"> | ||
1433 | <dia:attribute name="obj_pos"> | ||
1434 | <dia:point val="27.65,4.75"/> | ||
1435 | </dia:attribute> | ||
1436 | <dia:attribute name="obj_bb"> | ||
1437 | <dia:rectangle val="27.65,4.155;30.5275,6.5025"/> | ||
1438 | </dia:attribute> | ||
1439 | <dia:attribute name="text"> | ||
1440 | <dia:composite type="text"> | ||
1441 | <dia:attribute name="string"> | ||
1442 | <dia:string>#source | ||
1443 | crop | ||
1444 | selection#</dia:string> | ||
1445 | </dia:attribute> | ||
1446 | <dia:attribute name="font"> | ||
1447 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
1448 | </dia:attribute> | ||
1449 | <dia:attribute name="height"> | ||
1450 | <dia:real val="0.80000000000000004"/> | ||
1451 | </dia:attribute> | ||
1452 | <dia:attribute name="pos"> | ||
1453 | <dia:point val="27.65,4.75"/> | ||
1454 | </dia:attribute> | ||
1455 | <dia:attribute name="color"> | ||
1456 | <dia:color val="#a020f0"/> | ||
1457 | </dia:attribute> | ||
1458 | <dia:attribute name="alignment"> | ||
1459 | <dia:enum val="0"/> | ||
1460 | </dia:attribute> | ||
1461 | </dia:composite> | ||
1462 | </dia:attribute> | ||
1463 | <dia:attribute name="valign"> | ||
1464 | <dia:enum val="3"/> | ||
1465 | </dia:attribute> | ||
1466 | </dia:object> | ||
1467 | <dia:object type="Standard - Line" version="0" id="O48"> | ||
1468 | <dia:attribute name="obj_pos"> | ||
1469 | <dia:point val="10.55,6.6"/> | ||
1470 | </dia:attribute> | ||
1471 | <dia:attribute name="obj_bb"> | ||
1472 | <dia:rectangle val="7.7135,6.39438;10.6035,7.11605"/> | ||
1473 | </dia:attribute> | ||
1474 | <dia:attribute name="conn_endpoints"> | ||
1475 | <dia:point val="10.55,6.6"/> | ||
1476 | <dia:point val="7.825,6.8"/> | ||
1477 | </dia:attribute> | ||
1478 | <dia:attribute name="numcp"> | ||
1479 | <dia:int val="1"/> | ||
1480 | </dia:attribute> | ||
1481 | <dia:attribute name="line_color"> | ||
1482 | <dia:color val="#0000ff"/> | ||
1483 | </dia:attribute> | ||
1484 | <dia:attribute name="end_arrow"> | ||
1485 | <dia:enum val="22"/> | ||
1486 | </dia:attribute> | ||
1487 | <dia:attribute name="end_arrow_length"> | ||
1488 | <dia:real val="0.5"/> | ||
1489 | </dia:attribute> | ||
1490 | <dia:attribute name="end_arrow_width"> | ||
1491 | <dia:real val="0.5"/> | ||
1492 | </dia:attribute> | ||
1493 | <dia:connections> | ||
1494 | <dia:connection handle="1" to="O9" connection="2"/> | ||
1495 | </dia:connections> | ||
1496 | </dia:object> | ||
1497 | <dia:object type="Standard - Line" version="0" id="O49"> | ||
1498 | <dia:attribute name="obj_pos"> | ||
1499 | <dia:point val="10.45,6.55"/> | ||
1500 | </dia:attribute> | ||
1501 | <dia:attribute name="obj_bb"> | ||
1502 | <dia:rectangle val="5.48029,6.48236;10.5176,15.8387"/> | ||
1503 | </dia:attribute> | ||
1504 | <dia:attribute name="conn_endpoints"> | ||
1505 | <dia:point val="10.45,6.55"/> | ||
1506 | <dia:point val="5.55,15.74"/> | ||
1507 | </dia:attribute> | ||
1508 | <dia:attribute name="numcp"> | ||
1509 | <dia:int val="1"/> | ||
1510 | </dia:attribute> | ||
1511 | <dia:attribute name="line_color"> | ||
1512 | <dia:color val="#0000ff"/> | ||
1513 | </dia:attribute> | ||
1514 | <dia:attribute name="end_arrow"> | ||
1515 | <dia:enum val="22"/> | ||
1516 | </dia:attribute> | ||
1517 | <dia:attribute name="end_arrow_length"> | ||
1518 | <dia:real val="0.5"/> | ||
1519 | </dia:attribute> | ||
1520 | <dia:attribute name="end_arrow_width"> | ||
1521 | <dia:real val="0.5"/> | ||
1522 | </dia:attribute> | ||
1523 | <dia:connections> | ||
1524 | <dia:connection handle="1" to="O30" connection="2"/> | ||
1525 | </dia:connections> | ||
1526 | </dia:object> | ||
1527 | <dia:object type="Standard - Line" version="0" id="O50"> | ||
1528 | <dia:attribute name="obj_pos"> | ||
1529 | <dia:point val="27.5246,6.66071"/> | ||
1530 | </dia:attribute> | ||
1531 | <dia:attribute name="obj_bb"> | ||
1532 | <dia:rectangle val="25.406,6.59136;27.594,9.82122"/> | ||
1533 | </dia:attribute> | ||
1534 | <dia:attribute name="conn_endpoints"> | ||
1535 | <dia:point val="27.5246,6.66071"/> | ||
1536 | <dia:point val="25.4754,9.72825"/> | ||
1537 | </dia:attribute> | ||
1538 | <dia:attribute name="numcp"> | ||
1539 | <dia:int val="1"/> | ||
1540 | </dia:attribute> | ||
1541 | <dia:attribute name="line_color"> | ||
1542 | <dia:color val="#a020f0"/> | ||
1543 | </dia:attribute> | ||
1544 | <dia:attribute name="end_arrow"> | ||
1545 | <dia:enum val="22"/> | ||
1546 | </dia:attribute> | ||
1547 | <dia:attribute name="end_arrow_length"> | ||
1548 | <dia:real val="0.5"/> | ||
1549 | </dia:attribute> | ||
1550 | <dia:attribute name="end_arrow_width"> | ||
1551 | <dia:real val="0.5"/> | ||
1552 | </dia:attribute> | ||
1553 | <dia:connections> | ||
1554 | <dia:connection handle="1" to="O18" connection="2"/> | ||
1555 | </dia:connections> | ||
1556 | </dia:object> | ||
1557 | <dia:object type="Standard - Line" version="0" id="O51"> | ||
1558 | <dia:attribute name="obj_pos"> | ||
1559 | <dia:point val="27.5036,6.68935"/> | ||
1560 | </dia:attribute> | ||
1561 | <dia:attribute name="obj_bb"> | ||
1562 | <dia:rectangle val="25.2161,6.62775;27.5652,14.331"/> | ||
1563 | </dia:attribute> | ||
1564 | <dia:attribute name="conn_endpoints"> | ||
1565 | <dia:point val="27.5036,6.68935"/> | ||
1566 | <dia:point val="25.4,14.2233"/> | ||
1567 | </dia:attribute> | ||
1568 | <dia:attribute name="numcp"> | ||
1569 | <dia:int val="1"/> | ||
1570 | </dia:attribute> | ||
1571 | <dia:attribute name="line_color"> | ||
1572 | <dia:color val="#a020f0"/> | ||
1573 | </dia:attribute> | ||
1574 | <dia:attribute name="end_arrow"> | ||
1575 | <dia:enum val="22"/> | ||
1576 | </dia:attribute> | ||
1577 | <dia:attribute name="end_arrow_length"> | ||
1578 | <dia:real val="0.5"/> | ||
1579 | </dia:attribute> | ||
1580 | <dia:attribute name="end_arrow_width"> | ||
1581 | <dia:real val="0.5"/> | ||
1582 | </dia:attribute> | ||
1583 | <dia:connections> | ||
1584 | <dia:connection handle="1" to="O37" connection="2"/> | ||
1585 | </dia:connections> | ||
1586 | </dia:object> | ||
1587 | </dia:layer> | ||
1588 | </dia:diagram> | ||
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-full.svg b/Documentation/DocBook/media/v4l/subdev-image-processing-full.svg new file mode 100644 index 000000000000..3322cf4c0093 --- /dev/null +++ b/Documentation/DocBook/media/v4l/subdev-image-processing-full.svg | |||
@@ -0,0 +1,163 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> | ||
3 | <svg width="59cm" height="18cm" viewBox="-186 71 1178 346" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
4 | <g> | ||
5 | <rect style="fill: #ffffff" x="318.9" y="129" width="208.1" height="249"/> | ||
6 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff765a" x="318.9" y="129" width="208.1" height="249"/> | ||
7 | </g> | ||
8 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-2" y="73" width="806" height="343"/> | ||
9 | <g> | ||
10 | <ellipse style="fill: #ffffff" cx="-12.5" cy="166.712" rx="8.5" ry="8.5"/> | ||
11 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.5" cy="166.712" rx="8.5" ry="8.5"/> | ||
12 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.5" cy="166.712" rx="8.5" ry="8.5"/> | ||
13 | </g> | ||
14 | <g> | ||
15 | <ellipse style="fill: #ffffff" cx="815.232" cy="205.184" rx="8.5" ry="8.5"/> | ||
16 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.232" cy="205.184" rx="8.5" ry="8.5"/> | ||
17 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.232" cy="205.184" rx="8.5" ry="8.5"/> | ||
18 | </g> | ||
19 | <g> | ||
20 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-184.5" y1="167" x2="-30.7361" y2="166.729"/> | ||
21 | <polygon style="fill: #000000" points="-23.2361,166.716 -33.2272,171.734 -30.7361,166.729 -33.2449,161.734 "/> | ||
22 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-23.2361,166.716 -33.2272,171.734 -30.7361,166.729 -33.2449,161.734 "/> | ||
23 | </g> | ||
24 | <g> | ||
25 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="823.732" y1="205.184" x2="980.066" y2="205.212"/> | ||
26 | <polygon style="fill: #000000" points="987.566,205.214 977.565,210.212 980.066,205.212 977.567,200.212 "/> | ||
27 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="987.566,205.214 977.565,210.212 980.066,205.212 977.567,200.212 "/> | ||
28 | </g> | ||
29 | <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-139.96" y="155"> | ||
30 | <tspan x="-139.96" y="155">pad 0 (sink)</tspan> | ||
31 | </text> | ||
32 | <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="849.04" y="195"> | ||
33 | <tspan x="849.04" y="195">pad 2 (source)</tspan> | ||
34 | </text> | ||
35 | <g> | ||
36 | <rect style="fill: #ffffff" x="5.5" y="120" width="159" height="104"/> | ||
37 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="5.5" y="120" width="159" height="104"/> | ||
38 | </g> | ||
39 | <g> | ||
40 | <rect style="fill: #ffffff" x="62.5" y="136" width="94" height="77"/> | ||
41 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="62.5" y="136" width="94" height="77"/> | ||
42 | </g> | ||
43 | <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="30.5" y="89"> | ||
44 | <tspan x="30.5" y="89"></tspan> | ||
45 | </text> | ||
46 | <text style="fill: #a52a2a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="9.53836" y="88.9138"> | ||
47 | <tspan x="9.53836" y="88.9138">sink media</tspan> | ||
48 | <tspan x="9.53836" y="104.914">bus format</tspan> | ||
49 | </text> | ||
50 | <g> | ||
51 | <rect style="fill: #ffffff" x="333.644" y="185.65" width="165.2" height="172.478"/> | ||
52 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #00ff00" x="333.644" y="185.65" width="165.2" height="172.478"/> | ||
53 | </g> | ||
54 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="358.128" x2="62.5" y2="213"/> | ||
55 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="185.65" x2="62.5" y2="136"/> | ||
56 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="358.128" x2="156.5" y2="213"/> | ||
57 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="185.65" x2="156.5" y2="136"/> | ||
58 | <text style="fill: #00ff00;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="334.704" y="149.442"> | ||
59 | <tspan x="334.704" y="149.442">sink compose</tspan> | ||
60 | <tspan x="334.704" y="165.442">selection (scaling)</tspan> | ||
61 | </text> | ||
62 | <g> | ||
63 | <rect style="fill: #ffffff" x="409.322" y="194.565" width="100.186" height="71.4523"/> | ||
64 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="409.322" y="194.565" width="100.186" height="71.4523"/> | ||
65 | </g> | ||
66 | <text style="fill: #8b6914;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="689.5" y="105.128"> | ||
67 | <tspan x="689.5" y="105.128">source media</tspan> | ||
68 | <tspan x="689.5" y="121.128">bus format</tspan> | ||
69 | </text> | ||
70 | <g> | ||
71 | <rect style="fill: #ffffff" x="688.488" y="173.834" width="100.186" height="71.4523"/> | ||
72 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="688.488" y="173.834" width="100.186" height="71.4523"/> | ||
73 | </g> | ||
74 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="688.488" y1="245.286" x2="409.322" y2="266.018"/> | ||
75 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="688.488" y1="173.834" x2="409.322" y2="194.565"/> | ||
76 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="788.674" y1="245.286" x2="509.508" y2="266.018"/> | ||
77 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="788.674" y1="173.834" x2="509.508" y2="194.565"/> | ||
78 | <text style="fill: #ff765a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="325" y="103"> | ||
79 | <tspan x="325" y="103">sink compose</tspan> | ||
80 | <tspan x="325" y="119">bounds selection</tspan> | ||
81 | </text> | ||
82 | <g> | ||
83 | <ellipse style="fill: #ffffff" cx="-12.0982" cy="341.512" rx="8.5" ry="8.5"/> | ||
84 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.0982" cy="341.512" rx="8.5" ry="8.5"/> | ||
85 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.0982" cy="341.512" rx="8.5" ry="8.5"/> | ||
86 | </g> | ||
87 | <g> | ||
88 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-184.098" y1="341.8" x2="-30.3343" y2="341.529"/> | ||
89 | <polygon style="fill: #000000" points="-22.8343,341.516 -32.8254,346.534 -30.3343,341.529 -32.8431,336.534 "/> | ||
90 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-22.8343,341.516 -32.8254,346.534 -30.3343,341.529 -32.8431,336.534 "/> | ||
91 | </g> | ||
92 | <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-139" y="329"> | ||
93 | <tspan x="-139" y="329">pad 1 (sink)</tspan> | ||
94 | </text> | ||
95 | <g> | ||
96 | <rect style="fill: #ffffff" x="7.80824" y="292.8" width="112.092" height="82.2"/> | ||
97 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="7.80824" y="292.8" width="112.092" height="82.2"/> | ||
98 | </g> | ||
99 | <g> | ||
100 | <rect style="fill: #ffffff" x="52.9" y="314.8" width="58.1" height="50.2"/> | ||
101 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="52.9" y="314.8" width="58.1" height="50.2"/> | ||
102 | </g> | ||
103 | <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="31.9" y="259.8"> | ||
104 | <tspan x="31.9" y="259.8"></tspan> | ||
105 | </text> | ||
106 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="358.9" y1="251.9" x2="52.9" y2="314.8"/> | ||
107 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="358.9" y1="316" x2="52.9" y2="365"/> | ||
108 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="434" y1="316" x2="111" y2="365"/> | ||
109 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="434" y1="251.9" x2="111" y2="314.8"/> | ||
110 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #00ff00" x="358.9" y="251.9" width="75.1" height="64.1"/> | ||
111 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="443.262" y="284.466" width="64.738" height="48.534"/> | ||
112 | <g> | ||
113 | <rect style="fill: #ffffff" x="693.428" y="324.734" width="63.572" height="49.266"/> | ||
114 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="693.428" y="324.734" width="63.572" height="49.266"/> | ||
115 | </g> | ||
116 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="693.428" y1="374" x2="443.262" y2="333"/> | ||
117 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="693.428" y1="324.734" x2="443.262" y2="284.466"/> | ||
118 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="757" y1="374" x2="508" y2="333"/> | ||
119 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="757" y1="324.734" x2="508" y2="284.466"/> | ||
120 | <g> | ||
121 | <ellipse style="fill: #ffffff" cx="815.44" cy="343.984" rx="8.5" ry="8.5"/> | ||
122 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.44" cy="343.984" rx="8.5" ry="8.5"/> | ||
123 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.44" cy="343.984" rx="8.5" ry="8.5"/> | ||
124 | </g> | ||
125 | <g> | ||
126 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="823.94" y1="343.984" x2="980.274" y2="344.012"/> | ||
127 | <polygon style="fill: #000000" points="987.774,344.014 977.773,349.012 980.274,344.012 977.775,339.012 "/> | ||
128 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="987.774,344.014 977.773,349.012 980.274,344.012 977.775,339.012 "/> | ||
129 | </g> | ||
130 | <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="849.248" y="333.8"> | ||
131 | <tspan x="849.248" y="333.8">pad 3 (source)</tspan> | ||
132 | </text> | ||
133 | <text style="fill: #0000ff;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="197" y="91"> | ||
134 | <tspan x="197" y="91">sink</tspan> | ||
135 | <tspan x="197" y="107">crop</tspan> | ||
136 | <tspan x="197" y="123">selection</tspan> | ||
137 | </text> | ||
138 | <text style="fill: #a020f0;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="553" y="95"> | ||
139 | <tspan x="553" y="95">source</tspan> | ||
140 | <tspan x="553" y="111">crop</tspan> | ||
141 | <tspan x="553" y="127">selection</tspan> | ||
142 | </text> | ||
143 | <g> | ||
144 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x1="211" y1="132" x2="166.21" y2="135.287"/> | ||
145 | <polygon style="fill: #0000ff" points="158.73,135.836 168.337,130.118 166.21,135.287 169.069,140.091 "/> | ||
146 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" points="158.73,135.836 168.337,130.118 166.21,135.287 169.069,140.091 "/> | ||
147 | </g> | ||
148 | <g> | ||
149 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x1="209" y1="131" x2="115.581" y2="306.209"/> | ||
150 | <polygon style="fill: #0000ff" points="112.052,312.827 112.345,301.65 115.581,306.209 121.169,306.355 "/> | ||
151 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" points="112.052,312.827 112.345,301.65 115.581,306.209 121.169,306.355 "/> | ||
152 | </g> | ||
153 | <g> | ||
154 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="550.492" y1="133.214" x2="514.916" y2="186.469"/> | ||
155 | <polygon style="fill: #a020f0" points="510.75,192.706 512.147,181.613 514.916,186.469 520.463,187.168 "/> | ||
156 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="510.75,192.706 512.147,181.613 514.916,186.469 520.463,187.168 "/> | ||
157 | </g> | ||
158 | <g> | ||
159 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="550.072" y1="133.787" x2="510.618" y2="275.089"/> | ||
160 | <polygon style="fill: #a020f0" points="508.601,282.312 506.475,271.336 510.618,275.089 516.106,274.025 "/> | ||
161 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="508.601,282.312 506.475,271.336 510.618,275.089 516.106,274.025 "/> | ||
162 | </g> | ||
163 | </svg> | ||
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia b/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia new file mode 100644 index 000000000000..0cd50a7bda80 --- /dev/null +++ b/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia | |||
@@ -0,0 +1,1152 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/"> | ||
3 | <dia:diagramdata> | ||
4 | <dia:attribute name="background"> | ||
5 | <dia:color val="#ffffff"/> | ||
6 | </dia:attribute> | ||
7 | <dia:attribute name="pagebreak"> | ||
8 | <dia:color val="#000099"/> | ||
9 | </dia:attribute> | ||
10 | <dia:attribute name="paper"> | ||
11 | <dia:composite type="paper"> | ||
12 | <dia:attribute name="name"> | ||
13 | <dia:string>#A4#</dia:string> | ||
14 | </dia:attribute> | ||
15 | <dia:attribute name="tmargin"> | ||
16 | <dia:real val="2.8222000598907471"/> | ||
17 | </dia:attribute> | ||
18 | <dia:attribute name="bmargin"> | ||
19 | <dia:real val="2.8222000598907471"/> | ||
20 | </dia:attribute> | ||
21 | <dia:attribute name="lmargin"> | ||
22 | <dia:real val="2.8222000598907471"/> | ||
23 | </dia:attribute> | ||
24 | <dia:attribute name="rmargin"> | ||
25 | <dia:real val="2.8222000598907471"/> | ||
26 | </dia:attribute> | ||
27 | <dia:attribute name="is_portrait"> | ||
28 | <dia:boolean val="false"/> | ||
29 | </dia:attribute> | ||
30 | <dia:attribute name="scaling"> | ||
31 | <dia:real val="0.49000000953674316"/> | ||
32 | </dia:attribute> | ||
33 | <dia:attribute name="fitto"> | ||
34 | <dia:boolean val="false"/> | ||
35 | </dia:attribute> | ||
36 | </dia:composite> | ||
37 | </dia:attribute> | ||
38 | <dia:attribute name="grid"> | ||
39 | <dia:composite type="grid"> | ||
40 | <dia:attribute name="width_x"> | ||
41 | <dia:real val="1"/> | ||
42 | </dia:attribute> | ||
43 | <dia:attribute name="width_y"> | ||
44 | <dia:real val="1"/> | ||
45 | </dia:attribute> | ||
46 | <dia:attribute name="visible_x"> | ||
47 | <dia:int val="1"/> | ||
48 | </dia:attribute> | ||
49 | <dia:attribute name="visible_y"> | ||
50 | <dia:int val="1"/> | ||
51 | </dia:attribute> | ||
52 | <dia:composite type="color"/> | ||
53 | </dia:composite> | ||
54 | </dia:attribute> | ||
55 | <dia:attribute name="color"> | ||
56 | <dia:color val="#d8e5e5"/> | ||
57 | </dia:attribute> | ||
58 | <dia:attribute name="guides"> | ||
59 | <dia:composite type="guides"> | ||
60 | <dia:attribute name="hguides"/> | ||
61 | <dia:attribute name="vguides"/> | ||
62 | </dia:composite> | ||
63 | </dia:attribute> | ||
64 | </dia:diagramdata> | ||
65 | <dia:layer name="Background" visible="true" active="true"> | ||
66 | <dia:object type="Standard - Box" version="0" id="O0"> | ||
67 | <dia:attribute name="obj_pos"> | ||
68 | <dia:point val="-0.4,6.5"/> | ||
69 | </dia:attribute> | ||
70 | <dia:attribute name="obj_bb"> | ||
71 | <dia:rectangle val="-0.45,6.45;39.95,22.9"/> | ||
72 | </dia:attribute> | ||
73 | <dia:attribute name="elem_corner"> | ||
74 | <dia:point val="-0.4,6.5"/> | ||
75 | </dia:attribute> | ||
76 | <dia:attribute name="elem_width"> | ||
77 | <dia:real val="40.299999999999997"/> | ||
78 | </dia:attribute> | ||
79 | <dia:attribute name="elem_height"> | ||
80 | <dia:real val="16.349999999999998"/> | ||
81 | </dia:attribute> | ||
82 | <dia:attribute name="border_width"> | ||
83 | <dia:real val="0.10000000149011612"/> | ||
84 | </dia:attribute> | ||
85 | <dia:attribute name="show_background"> | ||
86 | <dia:boolean val="false"/> | ||
87 | </dia:attribute> | ||
88 | </dia:object> | ||
89 | <dia:object type="Standard - Box" version="0" id="O1"> | ||
90 | <dia:attribute name="obj_pos"> | ||
91 | <dia:point val="0.225,9.45"/> | ||
92 | </dia:attribute> | ||
93 | <dia:attribute name="obj_bb"> | ||
94 | <dia:rectangle val="0.175,9.4;8.225,14.7"/> | ||
95 | </dia:attribute> | ||
96 | <dia:attribute name="elem_corner"> | ||
97 | <dia:point val="0.225,9.45"/> | ||
98 | </dia:attribute> | ||
99 | <dia:attribute name="elem_width"> | ||
100 | <dia:real val="7.9499999999999975"/> | ||
101 | </dia:attribute> | ||
102 | <dia:attribute name="elem_height"> | ||
103 | <dia:real val="5.1999999999999975"/> | ||
104 | </dia:attribute> | ||
105 | <dia:attribute name="border_width"> | ||
106 | <dia:real val="0.10000000149011612"/> | ||
107 | </dia:attribute> | ||
108 | <dia:attribute name="border_color"> | ||
109 | <dia:color val="#a52a2a"/> | ||
110 | </dia:attribute> | ||
111 | <dia:attribute name="show_background"> | ||
112 | <dia:boolean val="true"/> | ||
113 | </dia:attribute> | ||
114 | </dia:object> | ||
115 | <dia:object type="Standard - Box" version="0" id="O2"> | ||
116 | <dia:attribute name="obj_pos"> | ||
117 | <dia:point val="2.475,10.2"/> | ||
118 | </dia:attribute> | ||
119 | <dia:attribute name="obj_bb"> | ||
120 | <dia:rectangle val="2.425,10.15;7.225,14.1"/> | ||
121 | </dia:attribute> | ||
122 | <dia:attribute name="elem_corner"> | ||
123 | <dia:point val="2.475,10.2"/> | ||
124 | </dia:attribute> | ||
125 | <dia:attribute name="elem_width"> | ||
126 | <dia:real val="4.6999999999999975"/> | ||
127 | </dia:attribute> | ||
128 | <dia:attribute name="elem_height"> | ||
129 | <dia:real val="3.8499999999999979"/> | ||
130 | </dia:attribute> | ||
131 | <dia:attribute name="border_width"> | ||
132 | <dia:real val="0.10000000149011612"/> | ||
133 | </dia:attribute> | ||
134 | <dia:attribute name="border_color"> | ||
135 | <dia:color val="#0000ff"/> | ||
136 | </dia:attribute> | ||
137 | <dia:attribute name="show_background"> | ||
138 | <dia:boolean val="true"/> | ||
139 | </dia:attribute> | ||
140 | </dia:object> | ||
141 | <dia:object type="Standard - Text" version="1" id="O3"> | ||
142 | <dia:attribute name="obj_pos"> | ||
143 | <dia:point val="3,11.2"/> | ||
144 | </dia:attribute> | ||
145 | <dia:attribute name="obj_bb"> | ||
146 | <dia:rectangle val="3,10.605;5.8775,12.9525"/> | ||
147 | </dia:attribute> | ||
148 | <dia:attribute name="text"> | ||
149 | <dia:composite type="text"> | ||
150 | <dia:attribute name="string"> | ||
151 | <dia:string>#sink | ||
152 | crop | ||
153 | selection#</dia:string> | ||
154 | </dia:attribute> | ||
155 | <dia:attribute name="font"> | ||
156 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
157 | </dia:attribute> | ||
158 | <dia:attribute name="height"> | ||
159 | <dia:real val="0.80000000000000004"/> | ||
160 | </dia:attribute> | ||
161 | <dia:attribute name="pos"> | ||
162 | <dia:point val="3,11.2"/> | ||
163 | </dia:attribute> | ||
164 | <dia:attribute name="color"> | ||
165 | <dia:color val="#0000ff"/> | ||
166 | </dia:attribute> | ||
167 | <dia:attribute name="alignment"> | ||
168 | <dia:enum val="0"/> | ||
169 | </dia:attribute> | ||
170 | </dia:composite> | ||
171 | </dia:attribute> | ||
172 | <dia:attribute name="valign"> | ||
173 | <dia:enum val="3"/> | ||
174 | </dia:attribute> | ||
175 | </dia:object> | ||
176 | <dia:object type="Standard - Text" version="1" id="O4"> | ||
177 | <dia:attribute name="obj_pos"> | ||
178 | <dia:point val="1.475,7.9"/> | ||
179 | </dia:attribute> | ||
180 | <dia:attribute name="obj_bb"> | ||
181 | <dia:rectangle val="1.475,7.305;1.475,8.0525"/> | ||
182 | </dia:attribute> | ||
183 | <dia:attribute name="text"> | ||
184 | <dia:composite type="text"> | ||
185 | <dia:attribute name="string"> | ||
186 | <dia:string>##</dia:string> | ||
187 | </dia:attribute> | ||
188 | <dia:attribute name="font"> | ||
189 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
190 | </dia:attribute> | ||
191 | <dia:attribute name="height"> | ||
192 | <dia:real val="0.80000000000000004"/> | ||
193 | </dia:attribute> | ||
194 | <dia:attribute name="pos"> | ||
195 | <dia:point val="1.475,7.9"/> | ||
196 | </dia:attribute> | ||
197 | <dia:attribute name="color"> | ||
198 | <dia:color val="#000000"/> | ||
199 | </dia:attribute> | ||
200 | <dia:attribute name="alignment"> | ||
201 | <dia:enum val="0"/> | ||
202 | </dia:attribute> | ||
203 | </dia:composite> | ||
204 | </dia:attribute> | ||
205 | <dia:attribute name="valign"> | ||
206 | <dia:enum val="3"/> | ||
207 | </dia:attribute> | ||
208 | </dia:object> | ||
209 | <dia:object type="Standard - Text" version="1" id="O5"> | ||
210 | <dia:attribute name="obj_pos"> | ||
211 | <dia:point val="0.426918,7.89569"/> | ||
212 | </dia:attribute> | ||
213 | <dia:attribute name="obj_bb"> | ||
214 | <dia:rectangle val="0.426918,7.30069;3.90942,8.84819"/> | ||
215 | </dia:attribute> | ||
216 | <dia:attribute name="text"> | ||
217 | <dia:composite type="text"> | ||
218 | <dia:attribute name="string"> | ||
219 | <dia:string>#sink media | ||
220 | bus format#</dia:string> | ||
221 | </dia:attribute> | ||
222 | <dia:attribute name="font"> | ||
223 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
224 | </dia:attribute> | ||
225 | <dia:attribute name="height"> | ||
226 | <dia:real val="0.80000000000000004"/> | ||
227 | </dia:attribute> | ||
228 | <dia:attribute name="pos"> | ||
229 | <dia:point val="0.426918,7.89569"/> | ||
230 | </dia:attribute> | ||
231 | <dia:attribute name="color"> | ||
232 | <dia:color val="#a52a2a"/> | ||
233 | </dia:attribute> | ||
234 | <dia:attribute name="alignment"> | ||
235 | <dia:enum val="0"/> | ||
236 | </dia:attribute> | ||
237 | </dia:composite> | ||
238 | </dia:attribute> | ||
239 | <dia:attribute name="valign"> | ||
240 | <dia:enum val="3"/> | ||
241 | </dia:attribute> | ||
242 | </dia:object> | ||
243 | <dia:object type="Standard - Box" version="0" id="O6"> | ||
244 | <dia:attribute name="obj_pos"> | ||
245 | <dia:point val="16.6822,9.28251"/> | ||
246 | </dia:attribute> | ||
247 | <dia:attribute name="obj_bb"> | ||
248 | <dia:rectangle val="16.6322,9.23251;24.9922,17.9564"/> | ||
249 | </dia:attribute> | ||
250 | <dia:attribute name="elem_corner"> | ||
251 | <dia:point val="16.6822,9.28251"/> | ||
252 | </dia:attribute> | ||
253 | <dia:attribute name="elem_width"> | ||
254 | <dia:real val="8.2600228398861297"/> | ||
255 | </dia:attribute> | ||
256 | <dia:attribute name="elem_height"> | ||
257 | <dia:real val="8.6238900617957164"/> | ||
258 | </dia:attribute> | ||
259 | <dia:attribute name="border_width"> | ||
260 | <dia:real val="0.10000000149011612"/> | ||
261 | </dia:attribute> | ||
262 | <dia:attribute name="border_color"> | ||
263 | <dia:color val="#00ff00"/> | ||
264 | </dia:attribute> | ||
265 | <dia:attribute name="show_background"> | ||
266 | <dia:boolean val="true"/> | ||
267 | </dia:attribute> | ||
268 | </dia:object> | ||
269 | <dia:object type="Standard - Line" version="0" id="O7"> | ||
270 | <dia:attribute name="obj_pos"> | ||
271 | <dia:point val="16.6822,17.9064"/> | ||
272 | </dia:attribute> | ||
273 | <dia:attribute name="obj_bb"> | ||
274 | <dia:rectangle val="2.41365,13.9886;16.7436,17.9678"/> | ||
275 | </dia:attribute> | ||
276 | <dia:attribute name="conn_endpoints"> | ||
277 | <dia:point val="16.6822,17.9064"/> | ||
278 | <dia:point val="2.475,14.05"/> | ||
279 | </dia:attribute> | ||
280 | <dia:attribute name="numcp"> | ||
281 | <dia:int val="1"/> | ||
282 | </dia:attribute> | ||
283 | <dia:attribute name="line_color"> | ||
284 | <dia:color val="#e60505"/> | ||
285 | </dia:attribute> | ||
286 | <dia:attribute name="line_style"> | ||
287 | <dia:enum val="4"/> | ||
288 | </dia:attribute> | ||
289 | <dia:connections> | ||
290 | <dia:connection handle="0" to="O6" connection="5"/> | ||
291 | <dia:connection handle="1" to="O2" connection="5"/> | ||
292 | </dia:connections> | ||
293 | </dia:object> | ||
294 | <dia:object type="Standard - Line" version="0" id="O8"> | ||
295 | <dia:attribute name="obj_pos"> | ||
296 | <dia:point val="16.6822,9.28251"/> | ||
297 | </dia:attribute> | ||
298 | <dia:attribute name="obj_bb"> | ||
299 | <dia:rectangle val="2.42188,9.22939;16.7353,10.2531"/> | ||
300 | </dia:attribute> | ||
301 | <dia:attribute name="conn_endpoints"> | ||
302 | <dia:point val="16.6822,9.28251"/> | ||
303 | <dia:point val="2.475,10.2"/> | ||
304 | </dia:attribute> | ||
305 | <dia:attribute name="numcp"> | ||
306 | <dia:int val="1"/> | ||
307 | </dia:attribute> | ||
308 | <dia:attribute name="line_color"> | ||
309 | <dia:color val="#e60505"/> | ||
310 | </dia:attribute> | ||
311 | <dia:attribute name="line_style"> | ||
312 | <dia:enum val="4"/> | ||
313 | </dia:attribute> | ||
314 | <dia:connections> | ||
315 | <dia:connection handle="0" to="O6" connection="0"/> | ||
316 | <dia:connection handle="1" to="O2" connection="0"/> | ||
317 | </dia:connections> | ||
318 | </dia:object> | ||
319 | <dia:object type="Standard - Line" version="0" id="O9"> | ||
320 | <dia:attribute name="obj_pos"> | ||
321 | <dia:point val="24.9422,17.9064"/> | ||
322 | </dia:attribute> | ||
323 | <dia:attribute name="obj_bb"> | ||
324 | <dia:rectangle val="7.11553,13.9905;25.0017,17.9659"/> | ||
325 | </dia:attribute> | ||
326 | <dia:attribute name="conn_endpoints"> | ||
327 | <dia:point val="24.9422,17.9064"/> | ||
328 | <dia:point val="7.175,14.05"/> | ||
329 | </dia:attribute> | ||
330 | <dia:attribute name="numcp"> | ||
331 | <dia:int val="1"/> | ||
332 | </dia:attribute> | ||
333 | <dia:attribute name="line_color"> | ||
334 | <dia:color val="#e60505"/> | ||
335 | </dia:attribute> | ||
336 | <dia:attribute name="line_style"> | ||
337 | <dia:enum val="4"/> | ||
338 | </dia:attribute> | ||
339 | <dia:connections> | ||
340 | <dia:connection handle="0" to="O6" connection="7"/> | ||
341 | <dia:connection handle="1" to="O2" connection="7"/> | ||
342 | </dia:connections> | ||
343 | </dia:object> | ||
344 | <dia:object type="Standard - Line" version="0" id="O10"> | ||
345 | <dia:attribute name="obj_pos"> | ||
346 | <dia:point val="24.9422,9.28251"/> | ||
347 | </dia:attribute> | ||
348 | <dia:attribute name="obj_bb"> | ||
349 | <dia:rectangle val="7.12249,9.23;24.9947,10.2525"/> | ||
350 | </dia:attribute> | ||
351 | <dia:attribute name="conn_endpoints"> | ||
352 | <dia:point val="24.9422,9.28251"/> | ||
353 | <dia:point val="7.175,10.2"/> | ||
354 | </dia:attribute> | ||
355 | <dia:attribute name="numcp"> | ||
356 | <dia:int val="1"/> | ||
357 | </dia:attribute> | ||
358 | <dia:attribute name="line_color"> | ||
359 | <dia:color val="#e60505"/> | ||
360 | </dia:attribute> | ||
361 | <dia:attribute name="line_style"> | ||
362 | <dia:enum val="4"/> | ||
363 | </dia:attribute> | ||
364 | <dia:connections> | ||
365 | <dia:connection handle="0" to="O6" connection="2"/> | ||
366 | <dia:connection handle="1" to="O2" connection="2"/> | ||
367 | </dia:connections> | ||
368 | </dia:object> | ||
369 | <dia:object type="Standard - Text" version="1" id="O11"> | ||
370 | <dia:attribute name="obj_pos"> | ||
371 | <dia:point val="16.7352,7.47209"/> | ||
372 | </dia:attribute> | ||
373 | <dia:attribute name="obj_bb"> | ||
374 | <dia:rectangle val="16.7352,6.87709;22.5602,8.42459"/> | ||
375 | </dia:attribute> | ||
376 | <dia:attribute name="text"> | ||
377 | <dia:composite type="text"> | ||
378 | <dia:attribute name="string"> | ||
379 | <dia:string>#sink compose | ||
380 | selection (scaling)#</dia:string> | ||
381 | </dia:attribute> | ||
382 | <dia:attribute name="font"> | ||
383 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
384 | </dia:attribute> | ||
385 | <dia:attribute name="height"> | ||
386 | <dia:real val="0.80000000000000004"/> | ||
387 | </dia:attribute> | ||
388 | <dia:attribute name="pos"> | ||
389 | <dia:point val="16.7352,7.47209"/> | ||
390 | </dia:attribute> | ||
391 | <dia:attribute name="color"> | ||
392 | <dia:color val="#00ff00"/> | ||
393 | </dia:attribute> | ||
394 | <dia:attribute name="alignment"> | ||
395 | <dia:enum val="0"/> | ||
396 | </dia:attribute> | ||
397 | </dia:composite> | ||
398 | </dia:attribute> | ||
399 | <dia:attribute name="valign"> | ||
400 | <dia:enum val="3"/> | ||
401 | </dia:attribute> | ||
402 | </dia:object> | ||
403 | <dia:object type="Standard - Box" version="0" id="O12"> | ||
404 | <dia:attribute name="obj_pos"> | ||
405 | <dia:point val="19.1161,9.97825"/> | ||
406 | </dia:attribute> | ||
407 | <dia:attribute name="obj_bb"> | ||
408 | <dia:rectangle val="19.0661,9.92825;24.1754,13.6009"/> | ||
409 | </dia:attribute> | ||
410 | <dia:attribute name="elem_corner"> | ||
411 | <dia:point val="19.1161,9.97825"/> | ||
412 | </dia:attribute> | ||
413 | <dia:attribute name="elem_width"> | ||
414 | <dia:real val="5.009308462554376"/> | ||
415 | </dia:attribute> | ||
416 | <dia:attribute name="elem_height"> | ||
417 | <dia:real val="3.5726155970598077"/> | ||
418 | </dia:attribute> | ||
419 | <dia:attribute name="border_width"> | ||
420 | <dia:real val="0.10000000149011612"/> | ||
421 | </dia:attribute> | ||
422 | <dia:attribute name="border_color"> | ||
423 | <dia:color val="#a020f0"/> | ||
424 | </dia:attribute> | ||
425 | <dia:attribute name="show_background"> | ||
426 | <dia:boolean val="true"/> | ||
427 | </dia:attribute> | ||
428 | </dia:object> | ||
429 | <dia:object type="Standard - Text" version="1" id="O13"> | ||
430 | <dia:attribute name="obj_pos"> | ||
431 | <dia:point val="27.1661,7.47209"/> | ||
432 | </dia:attribute> | ||
433 | <dia:attribute name="obj_bb"> | ||
434 | <dia:rectangle val="27.1661,6.87709;30.0436,9.22459"/> | ||
435 | </dia:attribute> | ||
436 | <dia:attribute name="text"> | ||
437 | <dia:composite type="text"> | ||
438 | <dia:attribute name="string"> | ||
439 | <dia:string>#source | ||
440 | crop | ||
441 | selection#</dia:string> | ||
442 | </dia:attribute> | ||
443 | <dia:attribute name="font"> | ||
444 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
445 | </dia:attribute> | ||
446 | <dia:attribute name="height"> | ||
447 | <dia:real val="0.80000000000000004"/> | ||
448 | </dia:attribute> | ||
449 | <dia:attribute name="pos"> | ||
450 | <dia:point val="27.1661,7.47209"/> | ||
451 | </dia:attribute> | ||
452 | <dia:attribute name="color"> | ||
453 | <dia:color val="#a020f0"/> | ||
454 | </dia:attribute> | ||
455 | <dia:attribute name="alignment"> | ||
456 | <dia:enum val="0"/> | ||
457 | </dia:attribute> | ||
458 | </dia:composite> | ||
459 | </dia:attribute> | ||
460 | <dia:attribute name="valign"> | ||
461 | <dia:enum val="3"/> | ||
462 | </dia:attribute> | ||
463 | </dia:object> | ||
464 | <dia:object type="Standard - Text" version="1" id="O14"> | ||
465 | <dia:attribute name="obj_pos"> | ||
466 | <dia:point val="34.575,7.8564"/> | ||
467 | </dia:attribute> | ||
468 | <dia:attribute name="obj_bb"> | ||
469 | <dia:rectangle val="34.575,7.2614;38.8975,8.8089"/> | ||
470 | </dia:attribute> | ||
471 | <dia:attribute name="text"> | ||
472 | <dia:composite type="text"> | ||
473 | <dia:attribute name="string"> | ||
474 | <dia:string>#source media | ||
475 | bus format#</dia:string> | ||
476 | </dia:attribute> | ||
477 | <dia:attribute name="font"> | ||
478 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
479 | </dia:attribute> | ||
480 | <dia:attribute name="height"> | ||
481 | <dia:real val="0.80000000000000004"/> | ||
482 | </dia:attribute> | ||
483 | <dia:attribute name="pos"> | ||
484 | <dia:point val="34.575,7.8564"/> | ||
485 | </dia:attribute> | ||
486 | <dia:attribute name="color"> | ||
487 | <dia:color val="#8b6914"/> | ||
488 | </dia:attribute> | ||
489 | <dia:attribute name="alignment"> | ||
490 | <dia:enum val="0"/> | ||
491 | </dia:attribute> | ||
492 | </dia:composite> | ||
493 | </dia:attribute> | ||
494 | <dia:attribute name="valign"> | ||
495 | <dia:enum val="3"/> | ||
496 | </dia:attribute> | ||
497 | </dia:object> | ||
498 | <dia:object type="Standard - Box" version="0" id="O15"> | ||
499 | <dia:attribute name="obj_pos"> | ||
500 | <dia:point val="34.5244,11.2917"/> | ||
501 | </dia:attribute> | ||
502 | <dia:attribute name="obj_bb"> | ||
503 | <dia:rectangle val="34.4744,11.2417;39.5837,14.9143"/> | ||
504 | </dia:attribute> | ||
505 | <dia:attribute name="elem_corner"> | ||
506 | <dia:point val="34.5244,11.2917"/> | ||
507 | </dia:attribute> | ||
508 | <dia:attribute name="elem_width"> | ||
509 | <dia:real val="5.009308462554376"/> | ||
510 | </dia:attribute> | ||
511 | <dia:attribute name="elem_height"> | ||
512 | <dia:real val="3.5726155970598077"/> | ||
513 | </dia:attribute> | ||
514 | <dia:attribute name="border_width"> | ||
515 | <dia:real val="0.10000000149011612"/> | ||
516 | </dia:attribute> | ||
517 | <dia:attribute name="border_color"> | ||
518 | <dia:color val="#8b6914"/> | ||
519 | </dia:attribute> | ||
520 | <dia:attribute name="show_background"> | ||
521 | <dia:boolean val="true"/> | ||
522 | </dia:attribute> | ||
523 | </dia:object> | ||
524 | <dia:object type="Standard - Line" version="0" id="O16"> | ||
525 | <dia:attribute name="obj_pos"> | ||
526 | <dia:point val="34.5244,14.8643"/> | ||
527 | </dia:attribute> | ||
528 | <dia:attribute name="obj_bb"> | ||
529 | <dia:rectangle val="19.062,13.4968;34.5785,14.9184"/> | ||
530 | </dia:attribute> | ||
531 | <dia:attribute name="conn_endpoints"> | ||
532 | <dia:point val="34.5244,14.8643"/> | ||
533 | <dia:point val="19.1161,13.5509"/> | ||
534 | </dia:attribute> | ||
535 | <dia:attribute name="numcp"> | ||
536 | <dia:int val="1"/> | ||
537 | </dia:attribute> | ||
538 | <dia:attribute name="line_color"> | ||
539 | <dia:color val="#e60505"/> | ||
540 | </dia:attribute> | ||
541 | <dia:attribute name="line_style"> | ||
542 | <dia:enum val="4"/> | ||
543 | </dia:attribute> | ||
544 | <dia:connections> | ||
545 | <dia:connection handle="0" to="O15" connection="5"/> | ||
546 | <dia:connection handle="1" to="O12" connection="5"/> | ||
547 | </dia:connections> | ||
548 | </dia:object> | ||
549 | <dia:object type="Standard - Line" version="0" id="O17"> | ||
550 | <dia:attribute name="obj_pos"> | ||
551 | <dia:point val="34.5244,11.2917"/> | ||
552 | </dia:attribute> | ||
553 | <dia:attribute name="obj_bb"> | ||
554 | <dia:rectangle val="19.062,9.92418;34.5785,11.3458"/> | ||
555 | </dia:attribute> | ||
556 | <dia:attribute name="conn_endpoints"> | ||
557 | <dia:point val="34.5244,11.2917"/> | ||
558 | <dia:point val="19.1161,9.97825"/> | ||
559 | </dia:attribute> | ||
560 | <dia:attribute name="numcp"> | ||
561 | <dia:int val="1"/> | ||
562 | </dia:attribute> | ||
563 | <dia:attribute name="line_color"> | ||
564 | <dia:color val="#e60505"/> | ||
565 | </dia:attribute> | ||
566 | <dia:attribute name="line_style"> | ||
567 | <dia:enum val="4"/> | ||
568 | </dia:attribute> | ||
569 | <dia:connections> | ||
570 | <dia:connection handle="0" to="O15" connection="0"/> | ||
571 | <dia:connection handle="1" to="O12" connection="0"/> | ||
572 | </dia:connections> | ||
573 | </dia:object> | ||
574 | <dia:object type="Standard - Line" version="0" id="O18"> | ||
575 | <dia:attribute name="obj_pos"> | ||
576 | <dia:point val="39.5337,14.8643"/> | ||
577 | </dia:attribute> | ||
578 | <dia:attribute name="obj_bb"> | ||
579 | <dia:rectangle val="24.0713,13.4968;39.5878,14.9184"/> | ||
580 | </dia:attribute> | ||
581 | <dia:attribute name="conn_endpoints"> | ||
582 | <dia:point val="39.5337,14.8643"/> | ||
583 | <dia:point val="24.1254,13.5509"/> | ||
584 | </dia:attribute> | ||
585 | <dia:attribute name="numcp"> | ||
586 | <dia:int val="1"/> | ||
587 | </dia:attribute> | ||
588 | <dia:attribute name="line_color"> | ||
589 | <dia:color val="#e60505"/> | ||
590 | </dia:attribute> | ||
591 | <dia:attribute name="line_style"> | ||
592 | <dia:enum val="4"/> | ||
593 | </dia:attribute> | ||
594 | <dia:connections> | ||
595 | <dia:connection handle="0" to="O15" connection="7"/> | ||
596 | <dia:connection handle="1" to="O12" connection="7"/> | ||
597 | </dia:connections> | ||
598 | </dia:object> | ||
599 | <dia:object type="Standard - Line" version="0" id="O19"> | ||
600 | <dia:attribute name="obj_pos"> | ||
601 | <dia:point val="39.5337,11.2917"/> | ||
602 | </dia:attribute> | ||
603 | <dia:attribute name="obj_bb"> | ||
604 | <dia:rectangle val="24.0713,9.92418;39.5878,11.3458"/> | ||
605 | </dia:attribute> | ||
606 | <dia:attribute name="conn_endpoints"> | ||
607 | <dia:point val="39.5337,11.2917"/> | ||
608 | <dia:point val="24.1254,9.97825"/> | ||
609 | </dia:attribute> | ||
610 | <dia:attribute name="numcp"> | ||
611 | <dia:int val="1"/> | ||
612 | </dia:attribute> | ||
613 | <dia:attribute name="line_color"> | ||
614 | <dia:color val="#e60505"/> | ||
615 | </dia:attribute> | ||
616 | <dia:attribute name="line_style"> | ||
617 | <dia:enum val="4"/> | ||
618 | </dia:attribute> | ||
619 | <dia:connections> | ||
620 | <dia:connection handle="0" to="O15" connection="2"/> | ||
621 | <dia:connection handle="1" to="O12" connection="2"/> | ||
622 | </dia:connections> | ||
623 | </dia:object> | ||
624 | <dia:object type="Geometric - Perfect Circle" version="1" id="O20"> | ||
625 | <dia:attribute name="obj_pos"> | ||
626 | <dia:point val="39.98,12.0742"/> | ||
627 | </dia:attribute> | ||
628 | <dia:attribute name="obj_bb"> | ||
629 | <dia:rectangle val="39.93,12.0242;40.88,12.9742"/> | ||
630 | </dia:attribute> | ||
631 | <dia:attribute name="meta"> | ||
632 | <dia:composite type="dict"/> | ||
633 | </dia:attribute> | ||
634 | <dia:attribute name="elem_corner"> | ||
635 | <dia:point val="39.98,12.0742"/> | ||
636 | </dia:attribute> | ||
637 | <dia:attribute name="elem_width"> | ||
638 | <dia:real val="0.84999999999999787"/> | ||
639 | </dia:attribute> | ||
640 | <dia:attribute name="elem_height"> | ||
641 | <dia:real val="0.84999999999999787"/> | ||
642 | </dia:attribute> | ||
643 | <dia:attribute name="line_width"> | ||
644 | <dia:real val="0.10000000000000001"/> | ||
645 | </dia:attribute> | ||
646 | <dia:attribute name="line_colour"> | ||
647 | <dia:color val="#000000"/> | ||
648 | </dia:attribute> | ||
649 | <dia:attribute name="fill_colour"> | ||
650 | <dia:color val="#ffffff"/> | ||
651 | </dia:attribute> | ||
652 | <dia:attribute name="show_background"> | ||
653 | <dia:boolean val="true"/> | ||
654 | </dia:attribute> | ||
655 | <dia:attribute name="line_style"> | ||
656 | <dia:enum val="0"/> | ||
657 | <dia:real val="1"/> | ||
658 | </dia:attribute> | ||
659 | <dia:attribute name="flip_horizontal"> | ||
660 | <dia:boolean val="false"/> | ||
661 | </dia:attribute> | ||
662 | <dia:attribute name="flip_vertical"> | ||
663 | <dia:boolean val="false"/> | ||
664 | </dia:attribute> | ||
665 | <dia:attribute name="subscale"> | ||
666 | <dia:real val="1"/> | ||
667 | </dia:attribute> | ||
668 | </dia:object> | ||
669 | <dia:object type="Standard - Line" version="0" id="O21"> | ||
670 | <dia:attribute name="obj_pos"> | ||
671 | <dia:point val="40.83,12.4992"/> | ||
672 | </dia:attribute> | ||
673 | <dia:attribute name="obj_bb"> | ||
674 | <dia:rectangle val="40.78,12.1388;49.2453,12.8624"/> | ||
675 | </dia:attribute> | ||
676 | <dia:attribute name="conn_endpoints"> | ||
677 | <dia:point val="40.83,12.4992"/> | ||
678 | <dia:point val="49.1335,12.5007"/> | ||
679 | </dia:attribute> | ||
680 | <dia:attribute name="numcp"> | ||
681 | <dia:int val="1"/> | ||
682 | </dia:attribute> | ||
683 | <dia:attribute name="end_arrow"> | ||
684 | <dia:enum val="22"/> | ||
685 | </dia:attribute> | ||
686 | <dia:attribute name="end_arrow_length"> | ||
687 | <dia:real val="0.5"/> | ||
688 | </dia:attribute> | ||
689 | <dia:attribute name="end_arrow_width"> | ||
690 | <dia:real val="0.5"/> | ||
691 | </dia:attribute> | ||
692 | <dia:connections> | ||
693 | <dia:connection handle="0" to="O20" connection="3"/> | ||
694 | </dia:connections> | ||
695 | </dia:object> | ||
696 | <dia:object type="Standard - Text" version="1" id="O22"> | ||
697 | <dia:attribute name="obj_pos"> | ||
698 | <dia:point val="42.0954,11.99"/> | ||
699 | </dia:attribute> | ||
700 | <dia:attribute name="obj_bb"> | ||
701 | <dia:rectangle val="42.0954,11.395;46.7404,12.1425"/> | ||
702 | </dia:attribute> | ||
703 | <dia:attribute name="text"> | ||
704 | <dia:composite type="text"> | ||
705 | <dia:attribute name="string"> | ||
706 | <dia:string>#pad 1 (source)#</dia:string> | ||
707 | </dia:attribute> | ||
708 | <dia:attribute name="font"> | ||
709 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
710 | </dia:attribute> | ||
711 | <dia:attribute name="height"> | ||
712 | <dia:real val="0.80000000000000004"/> | ||
713 | </dia:attribute> | ||
714 | <dia:attribute name="pos"> | ||
715 | <dia:point val="42.0954,11.99"/> | ||
716 | </dia:attribute> | ||
717 | <dia:attribute name="color"> | ||
718 | <dia:color val="#000000"/> | ||
719 | </dia:attribute> | ||
720 | <dia:attribute name="alignment"> | ||
721 | <dia:enum val="0"/> | ||
722 | </dia:attribute> | ||
723 | </dia:composite> | ||
724 | </dia:attribute> | ||
725 | <dia:attribute name="valign"> | ||
726 | <dia:enum val="3"/> | ||
727 | </dia:attribute> | ||
728 | </dia:object> | ||
729 | <dia:object type="Geometric - Perfect Circle" version="1" id="O23"> | ||
730 | <dia:attribute name="obj_pos"> | ||
731 | <dia:point val="-1.44491,11.6506"/> | ||
732 | </dia:attribute> | ||
733 | <dia:attribute name="obj_bb"> | ||
734 | <dia:rectangle val="-1.49491,11.6006;-0.54491,12.5506"/> | ||
735 | </dia:attribute> | ||
736 | <dia:attribute name="meta"> | ||
737 | <dia:composite type="dict"/> | ||
738 | </dia:attribute> | ||
739 | <dia:attribute name="elem_corner"> | ||
740 | <dia:point val="-1.44491,11.6506"/> | ||
741 | </dia:attribute> | ||
742 | <dia:attribute name="elem_width"> | ||
743 | <dia:real val="0.84999999999999787"/> | ||
744 | </dia:attribute> | ||
745 | <dia:attribute name="elem_height"> | ||
746 | <dia:real val="0.84999999999999787"/> | ||
747 | </dia:attribute> | ||
748 | <dia:attribute name="line_width"> | ||
749 | <dia:real val="0.10000000000000001"/> | ||
750 | </dia:attribute> | ||
751 | <dia:attribute name="line_colour"> | ||
752 | <dia:color val="#000000"/> | ||
753 | </dia:attribute> | ||
754 | <dia:attribute name="fill_colour"> | ||
755 | <dia:color val="#ffffff"/> | ||
756 | </dia:attribute> | ||
757 | <dia:attribute name="show_background"> | ||
758 | <dia:boolean val="true"/> | ||
759 | </dia:attribute> | ||
760 | <dia:attribute name="line_style"> | ||
761 | <dia:enum val="0"/> | ||
762 | <dia:real val="1"/> | ||
763 | </dia:attribute> | ||
764 | <dia:attribute name="flip_horizontal"> | ||
765 | <dia:boolean val="false"/> | ||
766 | </dia:attribute> | ||
767 | <dia:attribute name="flip_vertical"> | ||
768 | <dia:boolean val="false"/> | ||
769 | </dia:attribute> | ||
770 | <dia:attribute name="subscale"> | ||
771 | <dia:real val="1"/> | ||
772 | </dia:attribute> | ||
773 | </dia:object> | ||
774 | <dia:object type="Standard - Line" version="0" id="O24"> | ||
775 | <dia:attribute name="obj_pos"> | ||
776 | <dia:point val="-9.61991,12.09"/> | ||
777 | </dia:attribute> | ||
778 | <dia:attribute name="obj_bb"> | ||
779 | <dia:rectangle val="-9.67,11.7149;-1.33311,12.4385"/> | ||
780 | </dia:attribute> | ||
781 | <dia:attribute name="conn_endpoints"> | ||
782 | <dia:point val="-9.61991,12.09"/> | ||
783 | <dia:point val="-1.44491,12.0756"/> | ||
784 | </dia:attribute> | ||
785 | <dia:attribute name="numcp"> | ||
786 | <dia:int val="1"/> | ||
787 | </dia:attribute> | ||
788 | <dia:attribute name="end_arrow"> | ||
789 | <dia:enum val="22"/> | ||
790 | </dia:attribute> | ||
791 | <dia:attribute name="end_arrow_length"> | ||
792 | <dia:real val="0.5"/> | ||
793 | </dia:attribute> | ||
794 | <dia:attribute name="end_arrow_width"> | ||
795 | <dia:real val="0.5"/> | ||
796 | </dia:attribute> | ||
797 | <dia:connections> | ||
798 | <dia:connection handle="1" to="O23" connection="2"/> | ||
799 | </dia:connections> | ||
800 | </dia:object> | ||
801 | <dia:object type="Standard - Text" version="1" id="O25"> | ||
802 | <dia:attribute name="obj_pos"> | ||
803 | <dia:point val="-7.39291,11.49"/> | ||
804 | </dia:attribute> | ||
805 | <dia:attribute name="obj_bb"> | ||
806 | <dia:rectangle val="-7.39291,10.895;-3.58791,11.6425"/> | ||
807 | </dia:attribute> | ||
808 | <dia:attribute name="text"> | ||
809 | <dia:composite type="text"> | ||
810 | <dia:attribute name="string"> | ||
811 | <dia:string>#pad 0 (sink)#</dia:string> | ||
812 | </dia:attribute> | ||
813 | <dia:attribute name="font"> | ||
814 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
815 | </dia:attribute> | ||
816 | <dia:attribute name="height"> | ||
817 | <dia:real val="0.80000000000000004"/> | ||
818 | </dia:attribute> | ||
819 | <dia:attribute name="pos"> | ||
820 | <dia:point val="-7.39291,11.49"/> | ||
821 | </dia:attribute> | ||
822 | <dia:attribute name="color"> | ||
823 | <dia:color val="#000000"/> | ||
824 | </dia:attribute> | ||
825 | <dia:attribute name="alignment"> | ||
826 | <dia:enum val="0"/> | ||
827 | </dia:attribute> | ||
828 | </dia:composite> | ||
829 | </dia:attribute> | ||
830 | <dia:attribute name="valign"> | ||
831 | <dia:enum val="3"/> | ||
832 | </dia:attribute> | ||
833 | </dia:object> | ||
834 | <dia:object type="Standard - Box" version="0" id="O26"> | ||
835 | <dia:attribute name="obj_pos"> | ||
836 | <dia:point val="19.4911,13.8333"/> | ||
837 | </dia:attribute> | ||
838 | <dia:attribute name="obj_bb"> | ||
839 | <dia:rectangle val="19.4411,13.7833;24.5504,17.4559"/> | ||
840 | </dia:attribute> | ||
841 | <dia:attribute name="elem_corner"> | ||
842 | <dia:point val="19.4911,13.8333"/> | ||
843 | </dia:attribute> | ||
844 | <dia:attribute name="elem_width"> | ||
845 | <dia:real val="5.009308462554376"/> | ||
846 | </dia:attribute> | ||
847 | <dia:attribute name="elem_height"> | ||
848 | <dia:real val="3.5726155970598077"/> | ||
849 | </dia:attribute> | ||
850 | <dia:attribute name="border_width"> | ||
851 | <dia:real val="0.10000000149011612"/> | ||
852 | </dia:attribute> | ||
853 | <dia:attribute name="border_color"> | ||
854 | <dia:color val="#a020f0"/> | ||
855 | </dia:attribute> | ||
856 | <dia:attribute name="show_background"> | ||
857 | <dia:boolean val="false"/> | ||
858 | </dia:attribute> | ||
859 | </dia:object> | ||
860 | <dia:object type="Standard - Box" version="0" id="O27"> | ||
861 | <dia:attribute name="obj_pos"> | ||
862 | <dia:point val="34.4994,17.2967"/> | ||
863 | </dia:attribute> | ||
864 | <dia:attribute name="obj_bb"> | ||
865 | <dia:rectangle val="34.4494,17.2467;39.5587,20.9193"/> | ||
866 | </dia:attribute> | ||
867 | <dia:attribute name="elem_corner"> | ||
868 | <dia:point val="34.4994,17.2967"/> | ||
869 | </dia:attribute> | ||
870 | <dia:attribute name="elem_width"> | ||
871 | <dia:real val="5.009308462554376"/> | ||
872 | </dia:attribute> | ||
873 | <dia:attribute name="elem_height"> | ||
874 | <dia:real val="3.5726155970598077"/> | ||
875 | </dia:attribute> | ||
876 | <dia:attribute name="border_width"> | ||
877 | <dia:real val="0.10000000149011612"/> | ||
878 | </dia:attribute> | ||
879 | <dia:attribute name="border_color"> | ||
880 | <dia:color val="#8b6914"/> | ||
881 | </dia:attribute> | ||
882 | <dia:attribute name="show_background"> | ||
883 | <dia:boolean val="true"/> | ||
884 | </dia:attribute> | ||
885 | </dia:object> | ||
886 | <dia:object type="Standard - Line" version="0" id="O28"> | ||
887 | <dia:attribute name="obj_pos"> | ||
888 | <dia:point val="34.4994,20.8693"/> | ||
889 | </dia:attribute> | ||
890 | <dia:attribute name="obj_bb"> | ||
891 | <dia:rectangle val="19.4311,17.3459;34.5594,20.9293"/> | ||
892 | </dia:attribute> | ||
893 | <dia:attribute name="conn_endpoints"> | ||
894 | <dia:point val="34.4994,20.8693"/> | ||
895 | <dia:point val="19.4911,17.4059"/> | ||
896 | </dia:attribute> | ||
897 | <dia:attribute name="numcp"> | ||
898 | <dia:int val="1"/> | ||
899 | </dia:attribute> | ||
900 | <dia:attribute name="line_color"> | ||
901 | <dia:color val="#e60505"/> | ||
902 | </dia:attribute> | ||
903 | <dia:attribute name="line_style"> | ||
904 | <dia:enum val="4"/> | ||
905 | </dia:attribute> | ||
906 | <dia:connections> | ||
907 | <dia:connection handle="0" to="O27" connection="5"/> | ||
908 | <dia:connection handle="1" to="O26" connection="5"/> | ||
909 | </dia:connections> | ||
910 | </dia:object> | ||
911 | <dia:object type="Standard - Line" version="0" id="O29"> | ||
912 | <dia:attribute name="obj_pos"> | ||
913 | <dia:point val="34.4994,17.2967"/> | ||
914 | </dia:attribute> | ||
915 | <dia:attribute name="obj_bb"> | ||
916 | <dia:rectangle val="19.4311,13.7733;34.5594,17.3567"/> | ||
917 | </dia:attribute> | ||
918 | <dia:attribute name="conn_endpoints"> | ||
919 | <dia:point val="34.4994,17.2967"/> | ||
920 | <dia:point val="19.4911,13.8333"/> | ||
921 | </dia:attribute> | ||
922 | <dia:attribute name="numcp"> | ||
923 | <dia:int val="1"/> | ||
924 | </dia:attribute> | ||
925 | <dia:attribute name="line_color"> | ||
926 | <dia:color val="#e60505"/> | ||
927 | </dia:attribute> | ||
928 | <dia:attribute name="line_style"> | ||
929 | <dia:enum val="4"/> | ||
930 | </dia:attribute> | ||
931 | <dia:connections> | ||
932 | <dia:connection handle="0" to="O27" connection="0"/> | ||
933 | <dia:connection handle="1" to="O26" connection="0"/> | ||
934 | </dia:connections> | ||
935 | </dia:object> | ||
936 | <dia:object type="Standard - Line" version="0" id="O30"> | ||
937 | <dia:attribute name="obj_pos"> | ||
938 | <dia:point val="39.5087,20.8693"/> | ||
939 | </dia:attribute> | ||
940 | <dia:attribute name="obj_bb"> | ||
941 | <dia:rectangle val="24.4404,17.3459;39.5687,20.9293"/> | ||
942 | </dia:attribute> | ||
943 | <dia:attribute name="conn_endpoints"> | ||
944 | <dia:point val="39.5087,20.8693"/> | ||
945 | <dia:point val="24.5004,17.4059"/> | ||
946 | </dia:attribute> | ||
947 | <dia:attribute name="numcp"> | ||
948 | <dia:int val="1"/> | ||
949 | </dia:attribute> | ||
950 | <dia:attribute name="line_color"> | ||
951 | <dia:color val="#e60505"/> | ||
952 | </dia:attribute> | ||
953 | <dia:attribute name="line_style"> | ||
954 | <dia:enum val="4"/> | ||
955 | </dia:attribute> | ||
956 | <dia:connections> | ||
957 | <dia:connection handle="0" to="O27" connection="7"/> | ||
958 | <dia:connection handle="1" to="O26" connection="7"/> | ||
959 | </dia:connections> | ||
960 | </dia:object> | ||
961 | <dia:object type="Standard - Line" version="0" id="O31"> | ||
962 | <dia:attribute name="obj_pos"> | ||
963 | <dia:point val="39.5087,17.2967"/> | ||
964 | </dia:attribute> | ||
965 | <dia:attribute name="obj_bb"> | ||
966 | <dia:rectangle val="24.4404,13.7733;39.5687,17.3567"/> | ||
967 | </dia:attribute> | ||
968 | <dia:attribute name="conn_endpoints"> | ||
969 | <dia:point val="39.5087,17.2967"/> | ||
970 | <dia:point val="24.5004,13.8333"/> | ||
971 | </dia:attribute> | ||
972 | <dia:attribute name="numcp"> | ||
973 | <dia:int val="1"/> | ||
974 | </dia:attribute> | ||
975 | <dia:attribute name="line_color"> | ||
976 | <dia:color val="#e60505"/> | ||
977 | </dia:attribute> | ||
978 | <dia:attribute name="line_style"> | ||
979 | <dia:enum val="4"/> | ||
980 | </dia:attribute> | ||
981 | <dia:connections> | ||
982 | <dia:connection handle="0" to="O27" connection="2"/> | ||
983 | <dia:connection handle="1" to="O26" connection="2"/> | ||
984 | </dia:connections> | ||
985 | </dia:object> | ||
986 | <dia:object type="Geometric - Perfect Circle" version="1" id="O32"> | ||
987 | <dia:attribute name="obj_pos"> | ||
988 | <dia:point val="39.855,18.7792"/> | ||
989 | </dia:attribute> | ||
990 | <dia:attribute name="obj_bb"> | ||
991 | <dia:rectangle val="39.805,18.7292;40.755,19.6792"/> | ||
992 | </dia:attribute> | ||
993 | <dia:attribute name="meta"> | ||
994 | <dia:composite type="dict"/> | ||
995 | </dia:attribute> | ||
996 | <dia:attribute name="elem_corner"> | ||
997 | <dia:point val="39.855,18.7792"/> | ||
998 | </dia:attribute> | ||
999 | <dia:attribute name="elem_width"> | ||
1000 | <dia:real val="0.84999999999999787"/> | ||
1001 | </dia:attribute> | ||
1002 | <dia:attribute name="elem_height"> | ||
1003 | <dia:real val="0.84999999999999787"/> | ||
1004 | </dia:attribute> | ||
1005 | <dia:attribute name="line_width"> | ||
1006 | <dia:real val="0.10000000000000001"/> | ||
1007 | </dia:attribute> | ||
1008 | <dia:attribute name="line_colour"> | ||
1009 | <dia:color val="#000000"/> | ||
1010 | </dia:attribute> | ||
1011 | <dia:attribute name="fill_colour"> | ||
1012 | <dia:color val="#ffffff"/> | ||
1013 | </dia:attribute> | ||
1014 | <dia:attribute name="show_background"> | ||
1015 | <dia:boolean val="true"/> | ||
1016 | </dia:attribute> | ||
1017 | <dia:attribute name="line_style"> | ||
1018 | <dia:enum val="0"/> | ||
1019 | <dia:real val="1"/> | ||
1020 | </dia:attribute> | ||
1021 | <dia:attribute name="flip_horizontal"> | ||
1022 | <dia:boolean val="false"/> | ||
1023 | </dia:attribute> | ||
1024 | <dia:attribute name="flip_vertical"> | ||
1025 | <dia:boolean val="false"/> | ||
1026 | </dia:attribute> | ||
1027 | <dia:attribute name="subscale"> | ||
1028 | <dia:real val="1"/> | ||
1029 | </dia:attribute> | ||
1030 | </dia:object> | ||
1031 | <dia:object type="Standard - Line" version="0" id="O33"> | ||
1032 | <dia:attribute name="obj_pos"> | ||
1033 | <dia:point val="40.705,19.2042"/> | ||
1034 | </dia:attribute> | ||
1035 | <dia:attribute name="obj_bb"> | ||
1036 | <dia:rectangle val="40.655,18.8438;49.1203,19.5674"/> | ||
1037 | </dia:attribute> | ||
1038 | <dia:attribute name="conn_endpoints"> | ||
1039 | <dia:point val="40.705,19.2042"/> | ||
1040 | <dia:point val="49.0085,19.2057"/> | ||
1041 | </dia:attribute> | ||
1042 | <dia:attribute name="numcp"> | ||
1043 | <dia:int val="1"/> | ||
1044 | </dia:attribute> | ||
1045 | <dia:attribute name="end_arrow"> | ||
1046 | <dia:enum val="22"/> | ||
1047 | </dia:attribute> | ||
1048 | <dia:attribute name="end_arrow_length"> | ||
1049 | <dia:real val="0.5"/> | ||
1050 | </dia:attribute> | ||
1051 | <dia:attribute name="end_arrow_width"> | ||
1052 | <dia:real val="0.5"/> | ||
1053 | </dia:attribute> | ||
1054 | <dia:connections> | ||
1055 | <dia:connection handle="0" to="O32" connection="3"/> | ||
1056 | </dia:connections> | ||
1057 | </dia:object> | ||
1058 | <dia:object type="Standard - Text" version="1" id="O34"> | ||
1059 | <dia:attribute name="obj_pos"> | ||
1060 | <dia:point val="41.9704,18.695"/> | ||
1061 | </dia:attribute> | ||
1062 | <dia:attribute name="obj_bb"> | ||
1063 | <dia:rectangle val="41.9704,18.1;46.6154,18.8475"/> | ||
1064 | </dia:attribute> | ||
1065 | <dia:attribute name="text"> | ||
1066 | <dia:composite type="text"> | ||
1067 | <dia:attribute name="string"> | ||
1068 | <dia:string>#pad 2 (source)#</dia:string> | ||
1069 | </dia:attribute> | ||
1070 | <dia:attribute name="font"> | ||
1071 | <dia:font family="sans" style="0" name="Helvetica"/> | ||
1072 | </dia:attribute> | ||
1073 | <dia:attribute name="height"> | ||
1074 | <dia:real val="0.80000000000000004"/> | ||
1075 | </dia:attribute> | ||
1076 | <dia:attribute name="pos"> | ||
1077 | <dia:point val="41.9704,18.695"/> | ||
1078 | </dia:attribute> | ||
1079 | <dia:attribute name="color"> | ||
1080 | <dia:color val="#000000"/> | ||
1081 | </dia:attribute> | ||
1082 | <dia:attribute name="alignment"> | ||
1083 | <dia:enum val="0"/> | ||
1084 | </dia:attribute> | ||
1085 | </dia:composite> | ||
1086 | </dia:attribute> | ||
1087 | <dia:attribute name="valign"> | ||
1088 | <dia:enum val="3"/> | ||
1089 | </dia:attribute> | ||
1090 | </dia:object> | ||
1091 | <dia:object type="Standard - Line" version="0" id="O35"> | ||
1092 | <dia:attribute name="obj_pos"> | ||
1093 | <dia:point val="27.3,9.55"/> | ||
1094 | </dia:attribute> | ||
1095 | <dia:attribute name="obj_bb"> | ||
1096 | <dia:rectangle val="24.0146,9.49376;27.3562,10.255"/> | ||
1097 | </dia:attribute> | ||
1098 | <dia:attribute name="conn_endpoints"> | ||
1099 | <dia:point val="27.3,9.55"/> | ||
1100 | <dia:point val="24.1254,9.97825"/> | ||
1101 | </dia:attribute> | ||
1102 | <dia:attribute name="numcp"> | ||
1103 | <dia:int val="1"/> | ||
1104 | </dia:attribute> | ||
1105 | <dia:attribute name="line_color"> | ||
1106 | <dia:color val="#a020f0"/> | ||
1107 | </dia:attribute> | ||
1108 | <dia:attribute name="end_arrow"> | ||
1109 | <dia:enum val="22"/> | ||
1110 | </dia:attribute> | ||
1111 | <dia:attribute name="end_arrow_length"> | ||
1112 | <dia:real val="0.5"/> | ||
1113 | </dia:attribute> | ||
1114 | <dia:attribute name="end_arrow_width"> | ||
1115 | <dia:real val="0.5"/> | ||
1116 | </dia:attribute> | ||
1117 | <dia:connections> | ||
1118 | <dia:connection handle="1" to="O12" connection="2"/> | ||
1119 | </dia:connections> | ||
1120 | </dia:object> | ||
1121 | <dia:object type="Standard - Line" version="0" id="O36"> | ||
1122 | <dia:attribute name="obj_pos"> | ||
1123 | <dia:point val="27.3454,9.53624"/> | ||
1124 | </dia:attribute> | ||
1125 | <dia:attribute name="obj_bb"> | ||
1126 | <dia:rectangle val="24.4311,9.46695;27.4147,13.9265"/> | ||
1127 | </dia:attribute> | ||
1128 | <dia:attribute name="conn_endpoints"> | ||
1129 | <dia:point val="27.3454,9.53624"/> | ||
1130 | <dia:point val="24.5004,13.8333"/> | ||
1131 | </dia:attribute> | ||
1132 | <dia:attribute name="numcp"> | ||
1133 | <dia:int val="1"/> | ||
1134 | </dia:attribute> | ||
1135 | <dia:attribute name="line_color"> | ||
1136 | <dia:color val="#a020f0"/> | ||
1137 | </dia:attribute> | ||
1138 | <dia:attribute name="end_arrow"> | ||
1139 | <dia:enum val="22"/> | ||
1140 | </dia:attribute> | ||
1141 | <dia:attribute name="end_arrow_length"> | ||
1142 | <dia:real val="0.5"/> | ||
1143 | </dia:attribute> | ||
1144 | <dia:attribute name="end_arrow_width"> | ||
1145 | <dia:real val="0.5"/> | ||
1146 | </dia:attribute> | ||
1147 | <dia:connections> | ||
1148 | <dia:connection handle="1" to="O26" connection="2"/> | ||
1149 | </dia:connections> | ||
1150 | </dia:object> | ||
1151 | </dia:layer> | ||
1152 | </dia:diagram> | ||
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg b/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg new file mode 100644 index 000000000000..2340c0f8bc92 --- /dev/null +++ b/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg | |||
@@ -0,0 +1,116 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> | ||
3 | <svg width="59cm" height="17cm" viewBox="-194 128 1179 330" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
4 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-8" y="130" width="806" height="327"/> | ||
5 | <g> | ||
6 | <rect style="fill: #ffffff" x="4.5" y="189" width="159" height="104"/> | ||
7 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="4.5" y="189" width="159" height="104"/> | ||
8 | </g> | ||
9 | <g> | ||
10 | <rect style="fill: #ffffff" x="49.5" y="204" width="94" height="77"/> | ||
11 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="49.5" y="204" width="94" height="77"/> | ||
12 | </g> | ||
13 | <text style="fill: #0000ff;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="60" y="224"> | ||
14 | <tspan x="60" y="224">sink</tspan> | ||
15 | <tspan x="60" y="240">crop</tspan> | ||
16 | <tspan x="60" y="256">selection</tspan> | ||
17 | </text> | ||
18 | <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="29.5" y="158"> | ||
19 | <tspan x="29.5" y="158"></tspan> | ||
20 | </text> | ||
21 | <text style="fill: #a52a2a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="8.53836" y="157.914"> | ||
22 | <tspan x="8.53836" y="157.914">sink media</tspan> | ||
23 | <tspan x="8.53836" y="173.914">bus format</tspan> | ||
24 | </text> | ||
25 | <g> | ||
26 | <rect style="fill: #ffffff" x="333.644" y="185.65" width="165.2" height="172.478"/> | ||
27 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #00ff00" x="333.644" y="185.65" width="165.2" height="172.478"/> | ||
28 | </g> | ||
29 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="358.128" x2="49.5" y2="281"/> | ||
30 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="185.65" x2="49.5" y2="204"/> | ||
31 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="358.128" x2="143.5" y2="281"/> | ||
32 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="185.65" x2="143.5" y2="204"/> | ||
33 | <text style="fill: #00ff00;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="334.704" y="149.442"> | ||
34 | <tspan x="334.704" y="149.442">sink compose</tspan> | ||
35 | <tspan x="334.704" y="165.442">selection (scaling)</tspan> | ||
36 | </text> | ||
37 | <g> | ||
38 | <rect style="fill: #ffffff" x="382.322" y="199.565" width="100.186" height="71.4523"/> | ||
39 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="382.322" y="199.565" width="100.186" height="71.4523"/> | ||
40 | </g> | ||
41 | <text style="fill: #a020f0;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="543.322" y="149.442"> | ||
42 | <tspan x="543.322" y="149.442">source</tspan> | ||
43 | <tspan x="543.322" y="165.442">crop</tspan> | ||
44 | <tspan x="543.322" y="181.442">selection</tspan> | ||
45 | </text> | ||
46 | <text style="fill: #8b6914;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="691.5" y="157.128"> | ||
47 | <tspan x="691.5" y="157.128">source media</tspan> | ||
48 | <tspan x="691.5" y="173.128">bus format</tspan> | ||
49 | </text> | ||
50 | <g> | ||
51 | <rect style="fill: #ffffff" x="690.488" y="225.834" width="100.186" height="71.4523"/> | ||
52 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="690.488" y="225.834" width="100.186" height="71.4523"/> | ||
53 | </g> | ||
54 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="690.488" y1="297.286" x2="382.322" y2="271.018"/> | ||
55 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="690.488" y1="225.834" x2="382.322" y2="199.565"/> | ||
56 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.674" y1="297.286" x2="482.508" y2="271.018"/> | ||
57 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.674" y1="225.834" x2="482.508" y2="199.565"/> | ||
58 | <g> | ||
59 | <ellipse style="fill: #ffffff" cx="808.1" cy="249.984" rx="8.5" ry="8.5"/> | ||
60 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="808.1" cy="249.984" rx="8.5" ry="8.5"/> | ||
61 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="808.1" cy="249.984" rx="8.5" ry="8.5"/> | ||
62 | </g> | ||
63 | <g> | ||
64 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="816.6" y1="249.984" x2="972.934" y2="250.012"/> | ||
65 | <polygon style="fill: #000000" points="980.434,250.014 970.433,255.012 972.934,250.012 970.435,245.012 "/> | ||
66 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="980.434,250.014 970.433,255.012 972.934,250.012 970.435,245.012 "/> | ||
67 | </g> | ||
68 | <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="841.908" y="239.8"> | ||
69 | <tspan x="841.908" y="239.8">pad 1 (source)</tspan> | ||
70 | </text> | ||
71 | <g> | ||
72 | <ellipse style="fill: #ffffff" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/> | ||
73 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/> | ||
74 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/> | ||
75 | </g> | ||
76 | <g> | ||
77 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-192.398" y1="241.8" x2="-38.6343" y2="241.529"/> | ||
78 | <polygon style="fill: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/> | ||
79 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/> | ||
80 | </g> | ||
81 | <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-147.858" y="229.8"> | ||
82 | <tspan x="-147.858" y="229.8">pad 0 (sink)</tspan> | ||
83 | </text> | ||
84 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="389.822" y="276.666" width="100.186" height="71.4523"/> | ||
85 | <g> | ||
86 | <rect style="fill: #ffffff" x="689.988" y="345.934" width="100.186" height="71.4523"/> | ||
87 | <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="689.988" y="345.934" width="100.186" height="71.4523"/> | ||
88 | </g> | ||
89 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="689.988" y1="417.386" x2="389.822" y2="348.118"/> | ||
90 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="689.988" y1="345.934" x2="389.822" y2="276.666"/> | ||
91 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.174" y1="417.386" x2="490.008" y2="348.118"/> | ||
92 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.174" y1="345.934" x2="490.008" y2="276.666"/> | ||
93 | <g> | ||
94 | <ellipse style="fill: #ffffff" cx="805.6" cy="384.084" rx="8.5" ry="8.5"/> | ||
95 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="805.6" cy="384.084" rx="8.5" ry="8.5"/> | ||
96 | <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="805.6" cy="384.084" rx="8.5" ry="8.5"/> | ||
97 | </g> | ||
98 | <g> | ||
99 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="814.1" y1="384.084" x2="970.434" y2="384.112"/> | ||
100 | <polygon style="fill: #000000" points="977.934,384.114 967.933,389.112 970.434,384.112 967.935,379.112 "/> | ||
101 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="977.934,384.114 967.933,389.112 970.434,384.112 967.935,379.112 "/> | ||
102 | </g> | ||
103 | <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="839.408" y="373.9"> | ||
104 | <tspan x="839.408" y="373.9">pad 2 (source)</tspan> | ||
105 | </text> | ||
106 | <g> | ||
107 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="546" y1="191" x2="492.157" y2="198.263"/> | ||
108 | <polygon style="fill: #a020f0" points="484.724,199.266 493.966,192.974 492.157,198.263 495.303,202.884 "/> | ||
109 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="484.724,199.266 493.966,192.974 492.157,198.263 495.303,202.884 "/> | ||
110 | </g> | ||
111 | <g> | ||
112 | <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="546.908" y1="190.725" x2="495.383" y2="268.548"/> | ||
113 | <polygon style="fill: #a020f0" points="491.242,274.802 492.594,263.703 495.383,268.548 500.932,269.224 "/> | ||
114 | <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="491.242,274.802 492.594,263.703 495.383,268.548 500.932,269.224 "/> | ||
115 | </g> | ||
116 | </svg> | ||
diff --git a/Documentation/DocBook/media/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml index 8ae38876172e..015c561754b7 100644 --- a/Documentation/DocBook/media/v4l/v4l2.xml +++ b/Documentation/DocBook/media/v4l/v4l2.xml | |||
@@ -28,8 +28,8 @@ documentation.</contrib> | |||
28 | <firstname>Hans</firstname> | 28 | <firstname>Hans</firstname> |
29 | <surname>Verkuil</surname> | 29 | <surname>Verkuil</surname> |
30 | <contrib>Designed and documented the VIDIOC_LOG_STATUS ioctl, | 30 | <contrib>Designed and documented the VIDIOC_LOG_STATUS ioctl, |
31 | the extended control ioctls and major parts of the sliced VBI | 31 | the extended control ioctls, major parts of the sliced VBI API, the |
32 | API.</contrib> | 32 | MPEG encoder and decoder APIs and the DV Timings API.</contrib> |
33 | <affiliation> | 33 | <affiliation> |
34 | <address> | 34 | <address> |
35 | <email>hverkuil@xs4all.nl</email> | 35 | <email>hverkuil@xs4all.nl</email> |
@@ -96,6 +96,17 @@ Remote Controller chapter.</contrib> | |||
96 | </address> | 96 | </address> |
97 | </affiliation> | 97 | </affiliation> |
98 | </author> | 98 | </author> |
99 | |||
100 | <author> | ||
101 | <firstname>Sakari</firstname> | ||
102 | <surname>Ailus</surname> | ||
103 | <contrib>Subdev selections API.</contrib> | ||
104 | <affiliation> | ||
105 | <address> | ||
106 | <email>sakari.ailus@iki.fi</email> | ||
107 | </address> | ||
108 | </affiliation> | ||
109 | </author> | ||
99 | </authorgroup> | 110 | </authorgroup> |
100 | 111 | ||
101 | <copyright> | 112 | <copyright> |
@@ -112,6 +123,7 @@ Remote Controller chapter.</contrib> | |||
112 | <year>2009</year> | 123 | <year>2009</year> |
113 | <year>2010</year> | 124 | <year>2010</year> |
114 | <year>2011</year> | 125 | <year>2011</year> |
126 | <year>2012</year> | ||
115 | <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin | 127 | <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin |
116 | Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab, | 128 | Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab, |
117 | Pawel Osciak</holder> | 129 | Pawel Osciak</holder> |
@@ -128,6 +140,28 @@ structs, ioctls) must be noted in more detail in the history chapter | |||
128 | applications. --> | 140 | applications. --> |
129 | 141 | ||
130 | <revision> | 142 | <revision> |
143 | <revnumber>3.5</revnumber> | ||
144 | <date>2012-05-07</date> | ||
145 | <authorinitials>sa, sn</authorinitials> | ||
146 | <revremark>Added V4L2_CTRL_TYPE_INTEGER_MENU and V4L2 subdev | ||
147 | selections API. Improved the description of V4L2_CID_COLORFX | ||
148 | control, added V4L2_CID_COLORFX_CBCR control. | ||
149 | Added camera controls V4L2_CID_AUTO_EXPOSURE_BIAS, | ||
150 | V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE, V4L2_CID_IMAGE_STABILIZATION, | ||
151 | V4L2_CID_ISO_SENSITIVITY, V4L2_CID_ISO_SENSITIVITY_AUTO, | ||
152 | V4L2_CID_EXPOSURE_METERING, V4L2_CID_SCENE_MODE, | ||
153 | V4L2_CID_3A_LOCK, V4L2_CID_AUTO_FOCUS_START, | ||
154 | V4L2_CID_AUTO_FOCUS_STOP, V4L2_CID_AUTO_FOCUS_STATUS | ||
155 | and V4L2_CID_AUTO_FOCUS_RANGE. | ||
156 | </revremark> | ||
157 | <date>2012-05-01</date> | ||
158 | <authorinitials>hv</authorinitials> | ||
159 | <revremark>Added VIDIOC_ENUM_DV_TIMINGS, VIDIOC_QUERY_DV_TIMINGS and | ||
160 | VIDIOC_DV_TIMINGS_CAP. | ||
161 | </revremark> | ||
162 | </revision> | ||
163 | |||
164 | <revision> | ||
131 | <revnumber>3.4</revnumber> | 165 | <revnumber>3.4</revnumber> |
132 | <date>2012-01-25</date> | 166 | <date>2012-01-25</date> |
133 | <authorinitials>sn</authorinitials> | 167 | <authorinitials>sn</authorinitials> |
@@ -433,7 +467,7 @@ and discussions on the V4L mailing list.</revremark> | |||
433 | </partinfo> | 467 | </partinfo> |
434 | 468 | ||
435 | <title>Video for Linux Two API Specification</title> | 469 | <title>Video for Linux Two API Specification</title> |
436 | <subtitle>Revision 3.3</subtitle> | 470 | <subtitle>Revision 3.5</subtitle> |
437 | 471 | ||
438 | <chapter id="common"> | 472 | <chapter id="common"> |
439 | &sub-common; | 473 | &sub-common; |
@@ -491,10 +525,12 @@ and discussions on the V4L mailing list.</revremark> | |||
491 | &sub-dbg-g-register; | 525 | &sub-dbg-g-register; |
492 | &sub-decoder-cmd; | 526 | &sub-decoder-cmd; |
493 | &sub-dqevent; | 527 | &sub-dqevent; |
528 | &sub-dv-timings-cap; | ||
494 | &sub-encoder-cmd; | 529 | &sub-encoder-cmd; |
495 | &sub-enumaudio; | 530 | &sub-enumaudio; |
496 | &sub-enumaudioout; | 531 | &sub-enumaudioout; |
497 | &sub-enum-dv-presets; | 532 | &sub-enum-dv-presets; |
533 | &sub-enum-dv-timings; | ||
498 | &sub-enum-fmt; | 534 | &sub-enum-fmt; |
499 | &sub-enum-framesizes; | 535 | &sub-enum-framesizes; |
500 | &sub-enum-frameintervals; | 536 | &sub-enum-frameintervals; |
@@ -529,6 +565,7 @@ and discussions on the V4L mailing list.</revremark> | |||
529 | &sub-querycap; | 565 | &sub-querycap; |
530 | &sub-queryctrl; | 566 | &sub-queryctrl; |
531 | &sub-query-dv-preset; | 567 | &sub-query-dv-preset; |
568 | &sub-query-dv-timings; | ||
532 | &sub-querystd; | 569 | &sub-querystd; |
533 | &sub-prepare-buf; | 570 | &sub-prepare-buf; |
534 | &sub-reqbufs; | 571 | &sub-reqbufs; |
@@ -540,6 +577,7 @@ and discussions on the V4L mailing list.</revremark> | |||
540 | &sub-subdev-g-crop; | 577 | &sub-subdev-g-crop; |
541 | &sub-subdev-g-fmt; | 578 | &sub-subdev-g-fmt; |
542 | &sub-subdev-g-frame-interval; | 579 | &sub-subdev-g-frame-interval; |
580 | &sub-subdev-g-selection; | ||
543 | &sub-subscribe-event; | 581 | &sub-subscribe-event; |
544 | <!-- End of ioctls. --> | 582 | <!-- End of ioctls. --> |
545 | &sub-mmap; | 583 | &sub-mmap; |
diff --git a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml index 73ae8a6cd004..765549ff8a71 100644 --- a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml +++ b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml | |||
@@ -48,6 +48,12 @@ | |||
48 | <refsect1> | 48 | <refsect1> |
49 | <title>Description</title> | 49 | <title>Description</title> |
50 | 50 | ||
51 | <note> | ||
52 | <title>Experimental</title> | ||
53 | <para>This is an <link linkend="experimental"> experimental </link> | ||
54 | interface and may change in the future.</para> | ||
55 | </note> | ||
56 | |||
51 | <para>This ioctl is used to create buffers for <link linkend="mmap">memory | 57 | <para>This ioctl is used to create buffers for <link linkend="mmap">memory |
52 | mapped</link> or <link linkend="userp">user pointer</link> | 58 | mapped</link> or <link linkend="userp">user pointer</link> |
53 | I/O. It can be used as an alternative or in addition to the | 59 | I/O. It can be used as an alternative or in addition to the |
@@ -94,16 +100,18 @@ information.</para> | |||
94 | <entry>The number of buffers requested or granted.</entry> | 100 | <entry>The number of buffers requested or granted.</entry> |
95 | </row> | 101 | </row> |
96 | <row> | 102 | <row> |
97 | <entry>&v4l2-memory;</entry> | 103 | <entry>__u32</entry> |
98 | <entry><structfield>memory</structfield></entry> | 104 | <entry><structfield>memory</structfield></entry> |
99 | <entry>Applications set this field to | 105 | <entry>Applications set this field to |
100 | <constant>V4L2_MEMORY_MMAP</constant> or | 106 | <constant>V4L2_MEMORY_MMAP</constant> or |
101 | <constant>V4L2_MEMORY_USERPTR</constant>.</entry> | 107 | <constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory" |
108 | /></entry> | ||
102 | </row> | 109 | </row> |
103 | <row> | 110 | <row> |
104 | <entry>&v4l2-format;</entry> | 111 | <entry>__u32</entry> |
105 | <entry><structfield>format</structfield></entry> | 112 | <entry><structfield>format</structfield></entry> |
106 | <entry>Filled in by the application, preserved by the driver.</entry> | 113 | <entry>Filled in by the application, preserved by the driver. |
114 | See <xref linkend="v4l2-format" />.</entry> | ||
107 | </row> | 115 | </row> |
108 | <row> | 116 | <row> |
109 | <entry>__u32</entry> | 117 | <entry>__u32</entry> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml index b4f2f255211e..f1bac2c6e978 100644 --- a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml +++ b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml | |||
@@ -65,7 +65,7 @@ output.</para> | |||
65 | &cs-str; | 65 | &cs-str; |
66 | <tbody valign="top"> | 66 | <tbody valign="top"> |
67 | <row> | 67 | <row> |
68 | <entry>&v4l2-buf-type;</entry> | 68 | <entry>__u32</entry> |
69 | <entry><structfield>type</structfield></entry> | 69 | <entry><structfield>type</structfield></entry> |
70 | <entry>Type of the data stream, set by the application. | 70 | <entry>Type of the data stream, set by the application. |
71 | Only these types are valid here: | 71 | Only these types are valid here: |
@@ -73,7 +73,7 @@ Only these types are valid here: | |||
73 | <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, | 73 | <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, |
74 | <constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver | 74 | <constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver |
75 | defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> | 75 | defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> |
76 | and higher.</entry> | 76 | and higher. See <xref linkend="v4l2-buf-type" />.</entry> |
77 | </row> | 77 | </row> |
78 | <row> | 78 | <row> |
79 | <entry>struct <link linkend="v4l2-rect-crop">v4l2_rect</link></entry> | 79 | <entry>struct <link linkend="v4l2-rect-crop">v4l2_rect</link></entry> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml new file mode 100644 index 000000000000..6673ce582050 --- /dev/null +++ b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml | |||
@@ -0,0 +1,211 @@ | |||
1 | <refentry id="vidioc-dv-timings-cap"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>ioctl VIDIOC_DV_TIMINGS_CAP</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | |||
7 | <refnamediv> | ||
8 | <refname>VIDIOC_DV_TIMINGS_CAP</refname> | ||
9 | <refpurpose>The capabilities of the Digital Video receiver/transmitter</refpurpose> | ||
10 | </refnamediv> | ||
11 | |||
12 | <refsynopsisdiv> | ||
13 | <funcsynopsis> | ||
14 | <funcprototype> | ||
15 | <funcdef>int <function>ioctl</function></funcdef> | ||
16 | <paramdef>int <parameter>fd</parameter></paramdef> | ||
17 | <paramdef>int <parameter>request</parameter></paramdef> | ||
18 | <paramdef>struct v4l2_dv_timings_cap *<parameter>argp</parameter></paramdef> | ||
19 | </funcprototype> | ||
20 | </funcsynopsis> | ||
21 | </refsynopsisdiv> | ||
22 | |||
23 | <refsect1> | ||
24 | <title>Arguments</title> | ||
25 | |||
26 | <variablelist> | ||
27 | <varlistentry> | ||
28 | <term><parameter>fd</parameter></term> | ||
29 | <listitem> | ||
30 | <para>&fd;</para> | ||
31 | </listitem> | ||
32 | </varlistentry> | ||
33 | <varlistentry> | ||
34 | <term><parameter>request</parameter></term> | ||
35 | <listitem> | ||
36 | <para>VIDIOC_DV_TIMINGS_CAP</para> | ||
37 | </listitem> | ||
38 | </varlistentry> | ||
39 | <varlistentry> | ||
40 | <term><parameter>argp</parameter></term> | ||
41 | <listitem> | ||
42 | <para></para> | ||
43 | </listitem> | ||
44 | </varlistentry> | ||
45 | </variablelist> | ||
46 | </refsect1> | ||
47 | |||
48 | <refsect1> | ||
49 | <title>Description</title> | ||
50 | |||
51 | <note> | ||
52 | <title>Experimental</title> | ||
53 | <para>This is an <link linkend="experimental"> experimental </link> | ||
54 | interface and may change in the future.</para> | ||
55 | </note> | ||
56 | |||
57 | <para>To query the available timings, applications initialize the | ||
58 | <structfield>index</structfield> field and zero the reserved array of &v4l2-dv-timings-cap; | ||
59 | and call the <constant>VIDIOC_DV_TIMINGS_CAP</constant> ioctl with a pointer to this | ||
60 | structure. Drivers fill the rest of the structure or return an | ||
61 | &EINVAL; when the index is out of bounds. To enumerate all supported DV timings, | ||
62 | applications shall begin at index zero, incrementing by one until the | ||
63 | driver returns <errorcode>EINVAL</errorcode>. Note that drivers may enumerate a | ||
64 | different set of DV timings after switching the video input or | ||
65 | output.</para> | ||
66 | |||
67 | <table pgwide="1" frame="none" id="v4l2-bt-timings-cap"> | ||
68 | <title>struct <structname>v4l2_bt_timings_cap</structname></title> | ||
69 | <tgroup cols="3"> | ||
70 | &cs-str; | ||
71 | <tbody valign="top"> | ||
72 | <row> | ||
73 | <entry>__u32</entry> | ||
74 | <entry><structfield>min_width</structfield></entry> | ||
75 | <entry>Minimum width of the active video in pixels.</entry> | ||
76 | </row> | ||
77 | <row> | ||
78 | <entry>__u32</entry> | ||
79 | <entry><structfield>max_width</structfield></entry> | ||
80 | <entry>Maximum width of the active video in pixels.</entry> | ||
81 | </row> | ||
82 | <row> | ||
83 | <entry>__u32</entry> | ||
84 | <entry><structfield>min_height</structfield></entry> | ||
85 | <entry>Minimum height of the active video in lines.</entry> | ||
86 | </row> | ||
87 | <row> | ||
88 | <entry>__u32</entry> | ||
89 | <entry><structfield>max_height</structfield></entry> | ||
90 | <entry>Maximum height of the active video in lines.</entry> | ||
91 | </row> | ||
92 | <row> | ||
93 | <entry>__u64</entry> | ||
94 | <entry><structfield>min_pixelclock</structfield></entry> | ||
95 | <entry>Minimum pixelclock frequency in Hz.</entry> | ||
96 | </row> | ||
97 | <row> | ||
98 | <entry>__u64</entry> | ||
99 | <entry><structfield>max_pixelclock</structfield></entry> | ||
100 | <entry>Maximum pixelclock frequency in Hz.</entry> | ||
101 | </row> | ||
102 | <row> | ||
103 | <entry>__u32</entry> | ||
104 | <entry><structfield>standards</structfield></entry> | ||
105 | <entry>The video standard(s) supported by the hardware. | ||
106 | See <xref linkend="dv-bt-standards"/> for a list of standards.</entry> | ||
107 | </row> | ||
108 | <row> | ||
109 | <entry>__u32</entry> | ||
110 | <entry><structfield>capabilities</structfield></entry> | ||
111 | <entry>Several flags giving more information about the capabilities. | ||
112 | See <xref linkend="dv-bt-cap-capabilities"/> for a description of the flags. | ||
113 | </entry> | ||
114 | </row> | ||
115 | <row> | ||
116 | <entry>__u32</entry> | ||
117 | <entry><structfield>reserved</structfield>[16]</entry> | ||
118 | <entry></entry> | ||
119 | </row> | ||
120 | </tbody> | ||
121 | </tgroup> | ||
122 | </table> | ||
123 | |||
124 | <table pgwide="1" frame="none" id="v4l2-dv-timings-cap"> | ||
125 | <title>struct <structname>v4l2_dv_timings_cap</structname></title> | ||
126 | <tgroup cols="4"> | ||
127 | &cs-str; | ||
128 | <tbody valign="top"> | ||
129 | <row> | ||
130 | <entry>__u32</entry> | ||
131 | <entry><structfield>type</structfield></entry> | ||
132 | <entry>Type of DV timings as listed in <xref linkend="dv-timing-types"/>.</entry> | ||
133 | </row> | ||
134 | <row> | ||
135 | <entry>__u32</entry> | ||
136 | <entry><structfield>reserved</structfield>[3]</entry> | ||
137 | <entry>Reserved for future extensions. Drivers must set the array to zero.</entry> | ||
138 | </row> | ||
139 | <row> | ||
140 | <entry>union</entry> | ||
141 | <entry><structfield></structfield></entry> | ||
142 | <entry></entry> | ||
143 | </row> | ||
144 | <row> | ||
145 | <entry></entry> | ||
146 | <entry>&v4l2-bt-timings-cap;</entry> | ||
147 | <entry><structfield>bt</structfield></entry> | ||
148 | <entry>BT.656/1120 timings capabilities of the hardware.</entry> | ||
149 | </row> | ||
150 | <row> | ||
151 | <entry></entry> | ||
152 | <entry>__u32</entry> | ||
153 | <entry><structfield>raw_data</structfield>[32]</entry> | ||
154 | <entry></entry> | ||
155 | </row> | ||
156 | </tbody> | ||
157 | </tgroup> | ||
158 | </table> | ||
159 | |||
160 | <table pgwide="1" frame="none" id="dv-bt-cap-capabilities"> | ||
161 | <title>DV BT Timing capabilities</title> | ||
162 | <tgroup cols="2"> | ||
163 | &cs-str; | ||
164 | <tbody valign="top"> | ||
165 | <row> | ||
166 | <entry>Flag</entry> | ||
167 | <entry>Description</entry> | ||
168 | </row> | ||
169 | <row> | ||
170 | <entry></entry> | ||
171 | <entry></entry> | ||
172 | </row> | ||
173 | <row> | ||
174 | <entry>V4L2_DV_BT_CAP_INTERLACED</entry> | ||
175 | <entry>Interlaced formats are supported. | ||
176 | </entry> | ||
177 | </row> | ||
178 | <row> | ||
179 | <entry>V4L2_DV_BT_CAP_PROGRESSIVE</entry> | ||
180 | <entry>Progressive formats are supported. | ||
181 | </entry> | ||
182 | </row> | ||
183 | <row> | ||
184 | <entry>V4L2_DV_BT_CAP_REDUCED_BLANKING</entry> | ||
185 | <entry>CVT/GTF specific: the timings can make use of reduced blanking (CVT) | ||
186 | or the 'Secondary GTF' curve (GTF). | ||
187 | </entry> | ||
188 | </row> | ||
189 | <row> | ||
190 | <entry>V4L2_DV_BT_CAP_CUSTOM</entry> | ||
191 | <entry>Can support non-standard timings, i.e. timings not belonging to the | ||
192 | standards set in the <structfield>standards</structfield> field. | ||
193 | </entry> | ||
194 | </row> | ||
195 | </tbody> | ||
196 | </tgroup> | ||
197 | </table> | ||
198 | </refsect1> | ||
199 | |||
200 | <refsect1> | ||
201 | &return-value; | ||
202 | </refsect1> | ||
203 | </refentry> | ||
204 | |||
205 | <!-- | ||
206 | Local Variables: | ||
207 | mode: sgml | ||
208 | sgml-parent-document: "v4l2.sgml" | ||
209 | indent-tabs-mode: nil | ||
210 | End: | ||
211 | --> | ||
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml index 0be17c232d3a..509f0012d2a6 100644 --- a/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml | |||
@@ -48,6 +48,10 @@ | |||
48 | <refsect1> | 48 | <refsect1> |
49 | <title>Description</title> | 49 | <title>Description</title> |
50 | 50 | ||
51 | <para>This ioctl is <emphasis role="bold">deprecated</emphasis>. | ||
52 | New drivers and applications should use &VIDIOC-ENUM-DV-TIMINGS; instead. | ||
53 | </para> | ||
54 | |||
51 | <para>To query the attributes of a DV preset, applications initialize the | 55 | <para>To query the attributes of a DV preset, applications initialize the |
52 | <structfield>index</structfield> field and zero the reserved array of &v4l2-dv-enum-preset; | 56 | <structfield>index</structfield> field and zero the reserved array of &v4l2-dv-enum-preset; |
53 | and call the <constant>VIDIOC_ENUM_DV_PRESETS</constant> ioctl with a pointer to this | 57 | and call the <constant>VIDIOC_ENUM_DV_PRESETS</constant> ioctl with a pointer to this |
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml new file mode 100644 index 000000000000..24c3bf4fd29a --- /dev/null +++ b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml | |||
@@ -0,0 +1,119 @@ | |||
1 | <refentry id="vidioc-enum-dv-timings"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>ioctl VIDIOC_ENUM_DV_TIMINGS</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | |||
7 | <refnamediv> | ||
8 | <refname>VIDIOC_ENUM_DV_TIMINGS</refname> | ||
9 | <refpurpose>Enumerate supported Digital Video timings</refpurpose> | ||
10 | </refnamediv> | ||
11 | |||
12 | <refsynopsisdiv> | ||
13 | <funcsynopsis> | ||
14 | <funcprototype> | ||
15 | <funcdef>int <function>ioctl</function></funcdef> | ||
16 | <paramdef>int <parameter>fd</parameter></paramdef> | ||
17 | <paramdef>int <parameter>request</parameter></paramdef> | ||
18 | <paramdef>struct v4l2_enum_dv_timings *<parameter>argp</parameter></paramdef> | ||
19 | </funcprototype> | ||
20 | </funcsynopsis> | ||
21 | </refsynopsisdiv> | ||
22 | |||
23 | <refsect1> | ||
24 | <title>Arguments</title> | ||
25 | |||
26 | <variablelist> | ||
27 | <varlistentry> | ||
28 | <term><parameter>fd</parameter></term> | ||
29 | <listitem> | ||
30 | <para>&fd;</para> | ||
31 | </listitem> | ||
32 | </varlistentry> | ||
33 | <varlistentry> | ||
34 | <term><parameter>request</parameter></term> | ||
35 | <listitem> | ||
36 | <para>VIDIOC_ENUM_DV_TIMINGS</para> | ||
37 | </listitem> | ||
38 | </varlistentry> | ||
39 | <varlistentry> | ||
40 | <term><parameter>argp</parameter></term> | ||
41 | <listitem> | ||
42 | <para></para> | ||
43 | </listitem> | ||
44 | </varlistentry> | ||
45 | </variablelist> | ||
46 | </refsect1> | ||
47 | |||
48 | <refsect1> | ||
49 | <title>Description</title> | ||
50 | |||
51 | <note> | ||
52 | <title>Experimental</title> | ||
53 | <para>This is an <link linkend="experimental"> experimental </link> | ||
54 | interface and may change in the future.</para> | ||
55 | </note> | ||
56 | |||
57 | <para>While some DV receivers or transmitters support a wide range of timings, others | ||
58 | support only a limited number of timings. With this ioctl applications can enumerate a list | ||
59 | of known supported timings. Call &VIDIOC-DV-TIMINGS-CAP; to check if it also supports other | ||
60 | standards or even custom timings that are not in this list.</para> | ||
61 | |||
62 | <para>To query the available timings, applications initialize the | ||
63 | <structfield>index</structfield> field and zero the reserved array of &v4l2-enum-dv-timings; | ||
64 | and call the <constant>VIDIOC_ENUM_DV_TIMINGS</constant> ioctl with a pointer to this | ||
65 | structure. Drivers fill the rest of the structure or return an | ||
66 | &EINVAL; when the index is out of bounds. To enumerate all supported DV timings, | ||
67 | applications shall begin at index zero, incrementing by one until the | ||
68 | driver returns <errorcode>EINVAL</errorcode>. Note that drivers may enumerate a | ||
69 | different set of DV timings after switching the video input or | ||
70 | output.</para> | ||
71 | |||
72 | <table pgwide="1" frame="none" id="v4l2-enum-dv-timings"> | ||
73 | <title>struct <structname>v4l2_enum_dv_timings</structname></title> | ||
74 | <tgroup cols="3"> | ||
75 | &cs-str; | ||
76 | <tbody valign="top"> | ||
77 | <row> | ||
78 | <entry>__u32</entry> | ||
79 | <entry><structfield>index</structfield></entry> | ||
80 | <entry>Number of the DV timings, set by the | ||
81 | application.</entry> | ||
82 | </row> | ||
83 | <row> | ||
84 | <entry>__u32</entry> | ||
85 | <entry><structfield>reserved</structfield>[3]</entry> | ||
86 | <entry>Reserved for future extensions. Drivers must set the array to zero.</entry> | ||
87 | </row> | ||
88 | <row> | ||
89 | <entry>&v4l2-dv-timings;</entry> | ||
90 | <entry><structfield>timings</structfield></entry> | ||
91 | <entry>The timings.</entry> | ||
92 | </row> | ||
93 | </tbody> | ||
94 | </tgroup> | ||
95 | </table> | ||
96 | </refsect1> | ||
97 | |||
98 | <refsect1> | ||
99 | &return-value; | ||
100 | |||
101 | <variablelist> | ||
102 | <varlistentry> | ||
103 | <term><errorcode>EINVAL</errorcode></term> | ||
104 | <listitem> | ||
105 | <para>The &v4l2-enum-dv-timings; <structfield>index</structfield> | ||
106 | is out of bounds.</para> | ||
107 | </listitem> | ||
108 | </varlistentry> | ||
109 | </variablelist> | ||
110 | </refsect1> | ||
111 | </refentry> | ||
112 | |||
113 | <!-- | ||
114 | Local Variables: | ||
115 | mode: sgml | ||
116 | sgml-parent-document: "v4l2.sgml" | ||
117 | indent-tabs-mode: nil | ||
118 | End: | ||
119 | --> | ||
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml index 347d142e7431..81ebe48317fe 100644 --- a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml | |||
@@ -71,7 +71,7 @@ the application. This is in no way related to the <structfield> | |||
71 | pixelformat</structfield> field.</entry> | 71 | pixelformat</structfield> field.</entry> |
72 | </row> | 72 | </row> |
73 | <row> | 73 | <row> |
74 | <entry>&v4l2-buf-type;</entry> | 74 | <entry>__u32</entry> |
75 | <entry><structfield>type</structfield></entry> | 75 | <entry><structfield>type</structfield></entry> |
76 | <entry>Type of the data stream, set by the application. | 76 | <entry>Type of the data stream, set by the application. |
77 | Only these types are valid here: | 77 | Only these types are valid here: |
@@ -81,7 +81,7 @@ Only these types are valid here: | |||
81 | <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>, | 81 | <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>, |
82 | <constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver | 82 | <constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver |
83 | defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> | 83 | defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> |
84 | and higher.</entry> | 84 | and higher. See <xref linkend="v4l2-buf-type" />.</entry> |
85 | </row> | 85 | </row> |
86 | <row> | 86 | <row> |
87 | <entry>__u32</entry> | 87 | <entry>__u32</entry> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml index 9b8efcd6e947..46d5a044a537 100644 --- a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml | |||
@@ -285,7 +285,7 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009. | |||
285 | <row> | 285 | <row> |
286 | <entry><constant>V4L2_IN_CAP_CUSTOM_TIMINGS</constant></entry> | 286 | <entry><constant>V4L2_IN_CAP_CUSTOM_TIMINGS</constant></entry> |
287 | <entry>0x00000002</entry> | 287 | <entry>0x00000002</entry> |
288 | <entry>This input supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry> | 288 | <entry>This input supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry> |
289 | </row> | 289 | </row> |
290 | <row> | 290 | <row> |
291 | <entry><constant>V4L2_IN_CAP_STD</constant></entry> | 291 | <entry><constant>V4L2_IN_CAP_STD</constant></entry> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml index a64d5ef103fa..428020000ef0 100644 --- a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml | |||
@@ -170,7 +170,7 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009. | |||
170 | <row> | 170 | <row> |
171 | <entry><constant>V4L2_OUT_CAP_CUSTOM_TIMINGS</constant></entry> | 171 | <entry><constant>V4L2_OUT_CAP_CUSTOM_TIMINGS</constant></entry> |
172 | <entry>0x00000002</entry> | 172 | <entry>0x00000002</entry> |
173 | <entry>This output supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry> | 173 | <entry>This output supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry> |
174 | </row> | 174 | </row> |
175 | <row> | 175 | <row> |
176 | <entry><constant>V4L2_OUT_CAP_STD</constant></entry> | 176 | <entry><constant>V4L2_OUT_CAP_STD</constant></entry> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-crop.xml b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml index 01a50640dce0..c4ff3b1887fb 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-crop.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml | |||
@@ -100,14 +100,14 @@ changed and <constant>VIDIOC_S_CROP</constant> returns the | |||
100 | &cs-str; | 100 | &cs-str; |
101 | <tbody valign="top"> | 101 | <tbody valign="top"> |
102 | <row> | 102 | <row> |
103 | <entry>&v4l2-buf-type;</entry> | 103 | <entry>__u32</entry> |
104 | <entry><structfield>type</structfield></entry> | 104 | <entry><structfield>type</structfield></entry> |
105 | <entry>Type of the data stream, set by the application. | 105 | <entry>Type of the data stream, set by the application. |
106 | Only these types are valid here: <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>, | 106 | Only these types are valid here: <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>, |
107 | <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, | 107 | <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, |
108 | <constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver | 108 | <constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver |
109 | defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> | 109 | defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> |
110 | and higher.</entry> | 110 | and higher. See <xref linkend="v4l2-buf-type" />.</entry> |
111 | </row> | 111 | </row> |
112 | <row> | 112 | <row> |
113 | <entry>&v4l2-rect;</entry> | 113 | <entry>&v4l2-rect;</entry> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml index 7940c1149393..61be9fa3803a 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml | |||
@@ -48,6 +48,12 @@ | |||
48 | 48 | ||
49 | <refsect1> | 49 | <refsect1> |
50 | <title>Description</title> | 50 | <title>Description</title> |
51 | |||
52 | <para>These ioctls are <emphasis role="bold">deprecated</emphasis>. | ||
53 | New drivers and applications should use &VIDIOC-G-DV-TIMINGS; and &VIDIOC-S-DV-TIMINGS; | ||
54 | instead. | ||
55 | </para> | ||
56 | |||
51 | <para>To query and select the current DV preset, applications | 57 | <para>To query and select the current DV preset, applications |
52 | use the <constant>VIDIOC_G_DV_PRESET</constant> and <constant>VIDIOC_S_DV_PRESET</constant> | 58 | use the <constant>VIDIOC_G_DV_PRESET</constant> and <constant>VIDIOC_S_DV_PRESET</constant> |
53 | ioctls which take a pointer to a &v4l2-dv-preset; type as argument. | 59 | ioctls which take a pointer to a &v4l2-dv-preset; type as argument. |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml index 4a8648ae9a63..eda1a2991bbe 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml | |||
@@ -7,7 +7,7 @@ | |||
7 | <refnamediv> | 7 | <refnamediv> |
8 | <refname>VIDIOC_G_DV_TIMINGS</refname> | 8 | <refname>VIDIOC_G_DV_TIMINGS</refname> |
9 | <refname>VIDIOC_S_DV_TIMINGS</refname> | 9 | <refname>VIDIOC_S_DV_TIMINGS</refname> |
10 | <refpurpose>Get or set custom DV timings for input or output</refpurpose> | 10 | <refpurpose>Get or set DV timings for input or output</refpurpose> |
11 | </refnamediv> | 11 | </refnamediv> |
12 | 12 | ||
13 | <refsynopsisdiv> | 13 | <refsynopsisdiv> |
@@ -48,12 +48,15 @@ | |||
48 | 48 | ||
49 | <refsect1> | 49 | <refsect1> |
50 | <title>Description</title> | 50 | <title>Description</title> |
51 | <para>To set custom DV timings for the input or output, applications use the | 51 | <para>To set DV timings for the input or output, applications use the |
52 | <constant>VIDIOC_S_DV_TIMINGS</constant> ioctl and to get the current custom timings, | 52 | <constant>VIDIOC_S_DV_TIMINGS</constant> ioctl and to get the current timings, |
53 | applications use the <constant>VIDIOC_G_DV_TIMINGS</constant> ioctl. The detailed timing | 53 | applications use the <constant>VIDIOC_G_DV_TIMINGS</constant> ioctl. The detailed timing |
54 | information is filled in using the structure &v4l2-dv-timings;. These ioctls take | 54 | information is filled in using the structure &v4l2-dv-timings;. These ioctls take |
55 | a pointer to the &v4l2-dv-timings; structure as argument. If the ioctl is not supported | 55 | a pointer to the &v4l2-dv-timings; structure as argument. If the ioctl is not supported |
56 | or the timing values are not correct, the driver returns &EINVAL;.</para> | 56 | or the timing values are not correct, the driver returns &EINVAL;.</para> |
57 | <para>The <filename>linux/v4l2-dv-timings.h</filename> header can be used to get the | ||
58 | timings of the formats in the <xref linkend="cea861" /> and <xref linkend="vesadmt" /> | ||
59 | standards.</para> | ||
57 | </refsect1> | 60 | </refsect1> |
58 | 61 | ||
59 | <refsect1> | 62 | <refsect1> |
@@ -83,12 +86,13 @@ or the timing values are not correct, the driver returns &EINVAL;.</para> | |||
83 | <row> | 86 | <row> |
84 | <entry>__u32</entry> | 87 | <entry>__u32</entry> |
85 | <entry><structfield>width</structfield></entry> | 88 | <entry><structfield>width</structfield></entry> |
86 | <entry>Width of the active video in pixels</entry> | 89 | <entry>Width of the active video in pixels.</entry> |
87 | </row> | 90 | </row> |
88 | <row> | 91 | <row> |
89 | <entry>__u32</entry> | 92 | <entry>__u32</entry> |
90 | <entry><structfield>height</structfield></entry> | 93 | <entry><structfield>height</structfield></entry> |
91 | <entry>Height of the active video in lines</entry> | 94 | <entry>Height of the active video frame in lines. So for interlaced formats the |
95 | height of the active video in each field is <structfield>height</structfield>/2.</entry> | ||
92 | </row> | 96 | </row> |
93 | <row> | 97 | <row> |
94 | <entry>__u32</entry> | 98 | <entry>__u32</entry> |
@@ -125,32 +129,52 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H | |||
125 | <row> | 129 | <row> |
126 | <entry>__u32</entry> | 130 | <entry>__u32</entry> |
127 | <entry><structfield>vfrontporch</structfield></entry> | 131 | <entry><structfield>vfrontporch</structfield></entry> |
128 | <entry>Vertical front porch in lines</entry> | 132 | <entry>Vertical front porch in lines. For interlaced formats this refers to the |
133 | odd field (aka field 1).</entry> | ||
129 | </row> | 134 | </row> |
130 | <row> | 135 | <row> |
131 | <entry>__u32</entry> | 136 | <entry>__u32</entry> |
132 | <entry><structfield>vsync</structfield></entry> | 137 | <entry><structfield>vsync</structfield></entry> |
133 | <entry>Vertical sync length in lines</entry> | 138 | <entry>Vertical sync length in lines. For interlaced formats this refers to the |
139 | odd field (aka field 1).</entry> | ||
134 | </row> | 140 | </row> |
135 | <row> | 141 | <row> |
136 | <entry>__u32</entry> | 142 | <entry>__u32</entry> |
137 | <entry><structfield>vbackporch</structfield></entry> | 143 | <entry><structfield>vbackporch</structfield></entry> |
138 | <entry>Vertical back porch in lines</entry> | 144 | <entry>Vertical back porch in lines. For interlaced formats this refers to the |
145 | odd field (aka field 1).</entry> | ||
139 | </row> | 146 | </row> |
140 | <row> | 147 | <row> |
141 | <entry>__u32</entry> | 148 | <entry>__u32</entry> |
142 | <entry><structfield>il_vfrontporch</structfield></entry> | 149 | <entry><structfield>il_vfrontporch</structfield></entry> |
143 | <entry>Vertical front porch in lines for bottom field of interlaced field formats</entry> | 150 | <entry>Vertical front porch in lines for the even field (aka field 2) of |
151 | interlaced field formats.</entry> | ||
144 | </row> | 152 | </row> |
145 | <row> | 153 | <row> |
146 | <entry>__u32</entry> | 154 | <entry>__u32</entry> |
147 | <entry><structfield>il_vsync</structfield></entry> | 155 | <entry><structfield>il_vsync</structfield></entry> |
148 | <entry>Vertical sync length in lines for bottom field of interlaced field formats</entry> | 156 | <entry>Vertical sync length in lines for the even field (aka field 2) of |
157 | interlaced field formats.</entry> | ||
149 | </row> | 158 | </row> |
150 | <row> | 159 | <row> |
151 | <entry>__u32</entry> | 160 | <entry>__u32</entry> |
152 | <entry><structfield>il_vbackporch</structfield></entry> | 161 | <entry><structfield>il_vbackporch</structfield></entry> |
153 | <entry>Vertical back porch in lines for bottom field of interlaced field formats</entry> | 162 | <entry>Vertical back porch in lines for the even field (aka field 2) of |
163 | interlaced field formats.</entry> | ||
164 | </row> | ||
165 | <row> | ||
166 | <entry>__u32</entry> | ||
167 | <entry><structfield>standards</structfield></entry> | ||
168 | <entry>The video standard(s) this format belongs to. This will be filled in by | ||
169 | the driver. Applications must set this to 0. See <xref linkend="dv-bt-standards"/> | ||
170 | for a list of standards.</entry> | ||
171 | </row> | ||
172 | <row> | ||
173 | <entry>__u32</entry> | ||
174 | <entry><structfield>flags</structfield></entry> | ||
175 | <entry>Several flags giving more information about the format. | ||
176 | See <xref linkend="dv-bt-flags"/> for a description of the flags. | ||
177 | </entry> | ||
154 | </row> | 178 | </row> |
155 | </tbody> | 179 | </tbody> |
156 | </tgroup> | 180 | </tgroup> |
@@ -211,6 +235,90 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H | |||
211 | </tbody> | 235 | </tbody> |
212 | </tgroup> | 236 | </tgroup> |
213 | </table> | 237 | </table> |
238 | <table pgwide="1" frame="none" id="dv-bt-standards"> | ||
239 | <title>DV BT Timing standards</title> | ||
240 | <tgroup cols="2"> | ||
241 | &cs-str; | ||
242 | <tbody valign="top"> | ||
243 | <row> | ||
244 | <entry>Timing standard</entry> | ||
245 | <entry>Description</entry> | ||
246 | </row> | ||
247 | <row> | ||
248 | <entry></entry> | ||
249 | <entry></entry> | ||
250 | </row> | ||
251 | <row> | ||
252 | <entry>V4L2_DV_BT_STD_CEA861</entry> | ||
253 | <entry>The timings follow the CEA-861 Digital TV Profile standard</entry> | ||
254 | </row> | ||
255 | <row> | ||
256 | <entry>V4L2_DV_BT_STD_DMT</entry> | ||
257 | <entry>The timings follow the VESA Discrete Monitor Timings standard</entry> | ||
258 | </row> | ||
259 | <row> | ||
260 | <entry>V4L2_DV_BT_STD_CVT</entry> | ||
261 | <entry>The timings follow the VESA Coordinated Video Timings standard</entry> | ||
262 | </row> | ||
263 | <row> | ||
264 | <entry>V4L2_DV_BT_STD_GTF</entry> | ||
265 | <entry>The timings follow the VESA Generalized Timings Formula standard</entry> | ||
266 | </row> | ||
267 | </tbody> | ||
268 | </tgroup> | ||
269 | </table> | ||
270 | <table pgwide="1" frame="none" id="dv-bt-flags"> | ||
271 | <title>DV BT Timing flags</title> | ||
272 | <tgroup cols="2"> | ||
273 | &cs-str; | ||
274 | <tbody valign="top"> | ||
275 | <row> | ||
276 | <entry>Flag</entry> | ||
277 | <entry>Description</entry> | ||
278 | </row> | ||
279 | <row> | ||
280 | <entry></entry> | ||
281 | <entry></entry> | ||
282 | </row> | ||
283 | <row> | ||
284 | <entry>V4L2_DV_FL_REDUCED_BLANKING</entry> | ||
285 | <entry>CVT/GTF specific: the timings use reduced blanking (CVT) or the 'Secondary | ||
286 | GTF' curve (GTF). In both cases the horizontal and/or vertical blanking | ||
287 | intervals are reduced, allowing a higher resolution over the same | ||
288 | bandwidth. This is a read-only flag, applications must not set this. | ||
289 | </entry> | ||
290 | </row> | ||
291 | <row> | ||
292 | <entry>V4L2_DV_FL_CAN_REDUCE_FPS</entry> | ||
293 | <entry>CEA-861 specific: set for CEA-861 formats with a framerate that is a multiple | ||
294 | of six. These formats can be optionally played at 1 / 1.001 speed to | ||
295 | be compatible with 60 Hz based standards such as NTSC and PAL-M that use a framerate of | ||
296 | 29.97 frames per second. If the transmitter can't generate such frequencies, then the | ||
297 | flag will also be cleared. This is a read-only flag, applications must not set this. | ||
298 | </entry> | ||
299 | </row> | ||
300 | <row> | ||
301 | <entry>V4L2_DV_FL_REDUCED_FPS</entry> | ||
302 | <entry>CEA-861 specific: only valid for video transmitters, the flag is cleared | ||
303 | by receivers. It is also only valid for formats with the V4L2_DV_FL_CAN_REDUCE_FPS flag | ||
304 | set, for other formats the flag will be cleared by the driver. | ||
305 | |||
306 | If the application sets this flag, then the pixelclock used to set up the transmitter is | ||
307 | divided by 1.001 to make it compatible with NTSC framerates. If the transmitter | ||
308 | can't generate such frequencies, then the flag will also be cleared. | ||
309 | </entry> | ||
310 | </row> | ||
311 | <row> | ||
312 | <entry>V4L2_DV_FL_HALF_LINE</entry> | ||
313 | <entry>Specific to interlaced formats: if set, then field 1 (aka the odd field) | ||
314 | is really one half-line longer and field 2 (aka the even field) is really one half-line | ||
315 | shorter, so each field has exactly the same number of half-lines. Whether half-lines can be | ||
316 | detected or used depends on the hardware. | ||
317 | </entry> | ||
318 | </row> | ||
319 | </tbody> | ||
320 | </tgroup> | ||
321 | </table> | ||
214 | </refsect1> | 322 | </refsect1> |
215 | <refsect1> | 323 | <refsect1> |
216 | &return-value; | 324 | &return-value; |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml index b17a7aac6997..e3d5afcdafbb 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml | |||
@@ -265,6 +265,32 @@ These controls are described in <xref | |||
265 | These controls are described in <xref | 265 | These controls are described in <xref |
266 | linkend="flash-controls" />.</entry> | 266 | linkend="flash-controls" />.</entry> |
267 | </row> | 267 | </row> |
268 | <row> | ||
269 | <entry><constant>V4L2_CTRL_CLASS_JPEG</constant></entry> | ||
270 | <entry>0x9d0000</entry> | ||
271 | <entry>The class containing JPEG compression controls. | ||
272 | These controls are described in <xref | ||
273 | linkend="jpeg-controls" />.</entry> | ||
274 | </row> | ||
275 | <row> | ||
276 | <entry><constant>V4L2_CTRL_CLASS_IMAGE_SOURCE</constant></entry> | ||
277 | <entry>0x9e0000</entry> <entry>The class containing image | ||
278 | source controls. These controls are described in <xref | ||
279 | linkend="image-source-controls" />.</entry> | ||
280 | </row> | ||
281 | <row> | ||
282 | <entry><constant>V4L2_CTRL_CLASS_IMAGE_PROC</constant></entry> | ||
283 | <entry>0x9f0000</entry> <entry>The class containing image | ||
284 | processing controls. These controls are described in <xref | ||
285 | linkend="image-process-controls" />.</entry> | ||
286 | </row> | ||
287 | <row> | ||
288 | <entry><constant>V4L2_CTRL_CLASS_JPEG</constant></entry> | ||
289 | <entry>0x9d0000</entry> | ||
290 | <entry>The class containing JPEG compression controls. | ||
291 | These controls are described in <xref | ||
292 | linkend="jpeg-controls" />.</entry> | ||
293 | </row> | ||
268 | </tbody> | 294 | </tbody> |
269 | </tgroup> | 295 | </tgroup> |
270 | </table> | 296 | </table> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml index 17fbda15137b..52acff193a6f 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml | |||
@@ -116,7 +116,7 @@ this ioctl.</para> | |||
116 | <colspec colname="c4" /> | 116 | <colspec colname="c4" /> |
117 | <tbody valign="top"> | 117 | <tbody valign="top"> |
118 | <row> | 118 | <row> |
119 | <entry>&v4l2-buf-type;</entry> | 119 | <entry>__u32</entry> |
120 | <entry><structfield>type</structfield></entry> | 120 | <entry><structfield>type</structfield></entry> |
121 | <entry></entry> | 121 | <entry></entry> |
122 | <entry>Type of the data stream, see <xref | 122 | <entry>Type of the data stream, see <xref |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml index 66e9a5257861..69c178a4d205 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml | |||
@@ -95,14 +95,14 @@ the &v4l2-output; <structfield>modulator</structfield> field and the | |||
95 | &v4l2-modulator; <structfield>index</structfield> field.</entry> | 95 | &v4l2-modulator; <structfield>index</structfield> field.</entry> |
96 | </row> | 96 | </row> |
97 | <row> | 97 | <row> |
98 | <entry>&v4l2-tuner-type;</entry> | 98 | <entry>__u32</entry> |
99 | <entry><structfield>type</structfield></entry> | 99 | <entry><structfield>type</structfield></entry> |
100 | <entry>The tuner type. This is the same value as in the | 100 | <entry>The tuner type. This is the same value as in the |
101 | &v4l2-tuner; <structfield>type</structfield> field. The type must be set | 101 | &v4l2-tuner; <structfield>type</structfield> field. See The type must be set |
102 | to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename> | 102 | to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename> |
103 | device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant> | 103 | device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant> |
104 | for all others. The field is not applicable to modulators, &ie; ignored | 104 | for all others. The field is not applicable to modulators, &ie; ignored |
105 | by drivers.</entry> | 105 | by drivers. See <xref linkend="v4l2-tuner-type" /></entry> |
106 | </row> | 106 | </row> |
107 | <row> | 107 | <row> |
108 | <entry>__u32</entry> | 108 | <entry>__u32</entry> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-parm.xml b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml index 19b1d85dd668..f83d2cdd1185 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-parm.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml | |||
@@ -75,11 +75,12 @@ devices.</para> | |||
75 | &cs-ustr; | 75 | &cs-ustr; |
76 | <tbody valign="top"> | 76 | <tbody valign="top"> |
77 | <row> | 77 | <row> |
78 | <entry>&v4l2-buf-type;</entry> | 78 | <entry>__u32</entry> |
79 | <entry><structfield>type</structfield></entry> | 79 | <entry><structfield>type</structfield></entry> |
80 | <entry></entry> | 80 | <entry></entry> |
81 | <entry>The buffer (stream) type, same as &v4l2-format; | 81 | <entry>The buffer (stream) type, same as &v4l2-format; |
82 | <structfield>type</structfield>, set by the application.</entry> | 82 | <structfield>type</structfield>, set by the application. See <xref |
83 | linkend="v4l2-buf-type" /></entry> | ||
83 | </row> | 84 | </row> |
84 | <row> | 85 | <row> |
85 | <entry>union</entry> | 86 | <entry>union</entry> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml index 71741daaf725..bd015d1563ff 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml | |||
@@ -148,7 +148,7 @@ using the &VIDIOC-S-FMT; ioctl as described in <xref | |||
148 | <structfield>service_lines</structfield>[1][0] to zero.</entry> | 148 | <structfield>service_lines</structfield>[1][0] to zero.</entry> |
149 | </row> | 149 | </row> |
150 | <row> | 150 | <row> |
151 | <entry>&v4l2-buf-type;</entry> | 151 | <entry>__u32</entry> |
152 | <entry><structfield>type</structfield></entry> | 152 | <entry><structfield>type</structfield></entry> |
153 | <entry>Type of the data stream, see <xref | 153 | <entry>Type of the data stream, see <xref |
154 | linkend="v4l2-buf-type" />. Should be | 154 | linkend="v4l2-buf-type" />. Should be |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml b/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml index 91ec2fb658f8..62a1aa200a36 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml | |||
@@ -107,7 +107,7 @@ user.<!-- FIXME Video inputs already have a name, the purpose of this | |||
107 | field is not quite clear.--></para></entry> | 107 | field is not quite clear.--></para></entry> |
108 | </row> | 108 | </row> |
109 | <row> | 109 | <row> |
110 | <entry>&v4l2-tuner-type;</entry> | 110 | <entry>__u32</entry> |
111 | <entry><structfield>type</structfield></entry> | 111 | <entry><structfield>type</structfield></entry> |
112 | <entry spanname="hspan">Type of the tuner, see <xref | 112 | <entry spanname="hspan">Type of the tuner, see <xref |
113 | linkend="v4l2-tuner-type" />.</entry> | 113 | linkend="v4l2-tuner-type" />.</entry> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml b/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml index 7bde698760e4..fa7ad7e33228 100644 --- a/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml +++ b/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml | |||
@@ -48,6 +48,12 @@ | |||
48 | <refsect1> | 48 | <refsect1> |
49 | <title>Description</title> | 49 | <title>Description</title> |
50 | 50 | ||
51 | <note> | ||
52 | <title>Experimental</title> | ||
53 | <para>This is an <link linkend="experimental"> experimental </link> | ||
54 | interface and may change in the future.</para> | ||
55 | </note> | ||
56 | |||
51 | <para>Applications can optionally call the | 57 | <para>Applications can optionally call the |
52 | <constant>VIDIOC_PREPARE_BUF</constant> ioctl to pass ownership of the buffer | 58 | <constant>VIDIOC_PREPARE_BUF</constant> ioctl to pass ownership of the buffer |
53 | to the driver before actually enqueuing it, using the | 59 | to the driver before actually enqueuing it, using the |
diff --git a/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml b/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml index 23b17f604211..1bc8aeb3ff1f 100644 --- a/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml +++ b/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml | |||
@@ -49,6 +49,10 @@ input</refpurpose> | |||
49 | <refsect1> | 49 | <refsect1> |
50 | <title>Description</title> | 50 | <title>Description</title> |
51 | 51 | ||
52 | <para>This ioctl is <emphasis role="bold">deprecated</emphasis>. | ||
53 | New drivers and applications should use &VIDIOC-QUERY-DV-TIMINGS; instead. | ||
54 | </para> | ||
55 | |||
52 | <para>The hardware may be able to detect the current DV preset | 56 | <para>The hardware may be able to detect the current DV preset |
53 | automatically, similar to sensing the video standard. To do so, applications | 57 | automatically, similar to sensing the video standard. To do so, applications |
54 | call <constant> VIDIOC_QUERY_DV_PRESET</constant> with a pointer to a | 58 | call <constant> VIDIOC_QUERY_DV_PRESET</constant> with a pointer to a |
diff --git a/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml new file mode 100644 index 000000000000..44935a0ffcf0 --- /dev/null +++ b/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml | |||
@@ -0,0 +1,104 @@ | |||
1 | <refentry id="vidioc-query-dv-timings"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>ioctl VIDIOC_QUERY_DV_TIMINGS</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | |||
7 | <refnamediv> | ||
8 | <refname>VIDIOC_QUERY_DV_TIMINGS</refname> | ||
9 | <refpurpose>Sense the DV preset received by the current | ||
10 | input</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_dv_timings *<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_QUERY_DV_TIMINGS</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 | <para>This is an <link linkend="experimental"> experimental </link> | ||
55 | interface and may change in the future.</para> | ||
56 | </note> | ||
57 | |||
58 | <para>The hardware may be able to detect the current DV timings | ||
59 | automatically, similar to sensing the video standard. To do so, applications | ||
60 | call <constant>VIDIOC_QUERY_DV_TIMINGS</constant> with a pointer to a | ||
61 | &v4l2-dv-timings;. Once the hardware detects the timings, it will fill in the | ||
62 | timings structure. | ||
63 | |||
64 | If the timings could not be detected because there was no signal, then | ||
65 | <errorcode>ENOLINK</errorcode> is returned. If a signal was detected, but | ||
66 | it was unstable and the receiver could not lock to the signal, then | ||
67 | <errorcode>ENOLCK</errorcode> is returned. If the receiver could lock to the signal, | ||
68 | but the format is unsupported (e.g. because the pixelclock is out of range | ||
69 | of the hardware capabilities), then the driver fills in whatever timings it | ||
70 | could find and returns <errorcode>ERANGE</errorcode>. In that case the application | ||
71 | can call &VIDIOC-DV-TIMINGS-CAP; to compare the found timings with the hardware's | ||
72 | capabilities in order to give more precise feedback to the user. | ||
73 | </para> | ||
74 | </refsect1> | ||
75 | |||
76 | <refsect1> | ||
77 | &return-value; | ||
78 | |||
79 | <variablelist> | ||
80 | <varlistentry> | ||
81 | <term><errorcode>ENOLINK</errorcode></term> | ||
82 | <listitem> | ||
83 | <para>No timings could be detected because no signal was found. | ||
84 | </para> | ||
85 | </listitem> | ||
86 | </varlistentry> | ||
87 | <varlistentry> | ||
88 | <term><errorcode>ENOLCK</errorcode></term> | ||
89 | <listitem> | ||
90 | <para>The signal was unstable and the hardware could not lock on to it. | ||
91 | </para> | ||
92 | </listitem> | ||
93 | </varlistentry> | ||
94 | <varlistentry> | ||
95 | <term><errorcode>ERANGE</errorcode></term> | ||
96 | <listitem> | ||
97 | <para>Timings were found, but they are out of range of the hardware | ||
98 | capabilities. | ||
99 | </para> | ||
100 | </listitem> | ||
101 | </varlistentry> | ||
102 | </variablelist> | ||
103 | </refsect1> | ||
104 | </refentry> | ||
diff --git a/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml index 36660d311b51..e6645b996558 100644 --- a/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml +++ b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml | |||
@@ -127,7 +127,7 @@ the first control with a higher ID. Drivers which do not support this | |||
127 | flag yet always return an &EINVAL;.</entry> | 127 | flag yet always return an &EINVAL;.</entry> |
128 | </row> | 128 | </row> |
129 | <row> | 129 | <row> |
130 | <entry>&v4l2-ctrl-type;</entry> | 130 | <entry>__u32</entry> |
131 | <entry><structfield>type</structfield></entry> | 131 | <entry><structfield>type</structfield></entry> |
132 | <entry>Type of control, see <xref | 132 | <entry>Type of control, see <xref |
133 | linkend="v4l2-ctrl-type" />.</entry> | 133 | linkend="v4l2-ctrl-type" />.</entry> |
@@ -215,11 +215,12 @@ the array to zero.</entry> | |||
215 | 215 | ||
216 | <table pgwide="1" frame="none" id="v4l2-querymenu"> | 216 | <table pgwide="1" frame="none" id="v4l2-querymenu"> |
217 | <title>struct <structname>v4l2_querymenu</structname></title> | 217 | <title>struct <structname>v4l2_querymenu</structname></title> |
218 | <tgroup cols="3"> | 218 | <tgroup cols="4"> |
219 | &cs-str; | 219 | &cs-str; |
220 | <tbody valign="top"> | 220 | <tbody valign="top"> |
221 | <row> | 221 | <row> |
222 | <entry>__u32</entry> | 222 | <entry>__u32</entry> |
223 | <entry></entry> | ||
223 | <entry><structfield>id</structfield></entry> | 224 | <entry><structfield>id</structfield></entry> |
224 | <entry>Identifies the control, set by the application | 225 | <entry>Identifies the control, set by the application |
225 | from the respective &v4l2-queryctrl; | 226 | from the respective &v4l2-queryctrl; |
@@ -227,18 +228,38 @@ from the respective &v4l2-queryctrl; | |||
227 | </row> | 228 | </row> |
228 | <row> | 229 | <row> |
229 | <entry>__u32</entry> | 230 | <entry>__u32</entry> |
231 | <entry></entry> | ||
230 | <entry><structfield>index</structfield></entry> | 232 | <entry><structfield>index</structfield></entry> |
231 | <entry>Index of the menu item, starting at zero, set by | 233 | <entry>Index of the menu item, starting at zero, set by |
232 | the application.</entry> | 234 | the application.</entry> |
233 | </row> | 235 | </row> |
234 | <row> | 236 | <row> |
237 | <entry>union</entry> | ||
238 | <entry></entry> | ||
239 | <entry></entry> | ||
240 | <entry></entry> | ||
241 | </row> | ||
242 | <row> | ||
243 | <entry></entry> | ||
235 | <entry>__u8</entry> | 244 | <entry>__u8</entry> |
236 | <entry><structfield>name</structfield>[32]</entry> | 245 | <entry><structfield>name</structfield>[32]</entry> |
237 | <entry>Name of the menu item, a NUL-terminated ASCII | 246 | <entry>Name of the menu item, a NUL-terminated ASCII |
238 | string. This information is intended for the user.</entry> | 247 | string. This information is intended for the user. This field is valid |
248 | for <constant>V4L2_CTRL_FLAG_MENU</constant> type controls.</entry> | ||
249 | </row> | ||
250 | <row> | ||
251 | <entry></entry> | ||
252 | <entry>__s64</entry> | ||
253 | <entry><structfield>value</structfield></entry> | ||
254 | <entry> | ||
255 | Value of the integer menu item. This field is valid for | ||
256 | <constant>V4L2_CTRL_FLAG_INTEGER_MENU</constant> type | ||
257 | controls. | ||
258 | </entry> | ||
239 | </row> | 259 | </row> |
240 | <row> | 260 | <row> |
241 | <entry>__u32</entry> | 261 | <entry>__u32</entry> |
262 | <entry></entry> | ||
242 | <entry><structfield>reserved</structfield></entry> | 263 | <entry><structfield>reserved</structfield></entry> |
243 | <entry>Reserved for future extensions. Drivers must set | 264 | <entry>Reserved for future extensions. Drivers must set |
244 | the array to zero.</entry> | 265 | the array to zero.</entry> |
@@ -292,6 +313,20 @@ the menu items can be enumerated with the | |||
292 | <constant>VIDIOC_QUERYMENU</constant> ioctl.</entry> | 313 | <constant>VIDIOC_QUERYMENU</constant> ioctl.</entry> |
293 | </row> | 314 | </row> |
294 | <row> | 315 | <row> |
316 | <entry><constant>V4L2_CTRL_TYPE_INTEGER_MENU</constant></entry> | ||
317 | <entry>≥ 0</entry> | ||
318 | <entry>1</entry> | ||
319 | <entry>N-1</entry> | ||
320 | <entry> | ||
321 | The control has a menu of N choices. The values of the | ||
322 | menu items can be enumerated with the | ||
323 | <constant>VIDIOC_QUERYMENU</constant> ioctl. This is | ||
324 | similar to <constant>V4L2_CTRL_TYPE_MENU</constant> | ||
325 | except that instead of strings, the menu items are | ||
326 | signed 64-bit integers. | ||
327 | </entry> | ||
328 | </row> | ||
329 | <row> | ||
295 | <entry><constant>V4L2_CTRL_TYPE_BITMASK</constant></entry> | 330 | <entry><constant>V4L2_CTRL_TYPE_BITMASK</constant></entry> |
296 | <entry>0</entry> | 331 | <entry>0</entry> |
297 | <entry>n/a</entry> | 332 | <entry>n/a</entry> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml b/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml index 7be4b1d29b90..d7c95057bc51 100644 --- a/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml +++ b/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml | |||
@@ -92,18 +92,19 @@ streamoff.--></para> | |||
92 | <entry>The number of buffers requested or granted.</entry> | 92 | <entry>The number of buffers requested or granted.</entry> |
93 | </row> | 93 | </row> |
94 | <row> | 94 | <row> |
95 | <entry>&v4l2-buf-type;</entry> | 95 | <entry>__u32</entry> |
96 | <entry><structfield>type</structfield></entry> | 96 | <entry><structfield>type</structfield></entry> |
97 | <entry>Type of the stream or buffers, this is the same | 97 | <entry>Type of the stream or buffers, this is the same |
98 | as the &v4l2-format; <structfield>type</structfield> field. See <xref | 98 | as the &v4l2-format; <structfield>type</structfield> field. See <xref |
99 | linkend="v4l2-buf-type" /> for valid values.</entry> | 99 | linkend="v4l2-buf-type" /> for valid values.</entry> |
100 | </row> | 100 | </row> |
101 | <row> | 101 | <row> |
102 | <entry>&v4l2-memory;</entry> | 102 | <entry>__u32</entry> |
103 | <entry><structfield>memory</structfield></entry> | 103 | <entry><structfield>memory</structfield></entry> |
104 | <entry>Applications set this field to | 104 | <entry>Applications set this field to |
105 | <constant>V4L2_MEMORY_MMAP</constant> or | 105 | <constant>V4L2_MEMORY_MMAP</constant> or |
106 | <constant>V4L2_MEMORY_USERPTR</constant>.</entry> | 106 | <constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory" |
107 | />.</entry> | ||
107 | </row> | 108 | </row> |
108 | <row> | 109 | <row> |
109 | <entry>__u32</entry> | 110 | <entry>__u32</entry> |
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 18b1a8266f7c..407dfceb71f0 100644 --- a/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml +++ b/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml | |||
@@ -73,10 +73,11 @@ same value as in the &v4l2-input; <structfield>tuner</structfield> | |||
73 | field and the &v4l2-tuner; <structfield>index</structfield> field.</entry> | 73 | field and the &v4l2-tuner; <structfield>index</structfield> field.</entry> |
74 | </row> | 74 | </row> |
75 | <row> | 75 | <row> |
76 | <entry>&v4l2-tuner-type;</entry> | 76 | <entry>__u32</entry> |
77 | <entry><structfield>type</structfield></entry> | 77 | <entry><structfield>type</structfield></entry> |
78 | <entry>The tuner type. This is the same value as in the | 78 | <entry>The tuner type. This is the same value as in the |
79 | &v4l2-tuner; <structfield>type</structfield> field.</entry> | 79 | &v4l2-tuner; <structfield>type</structfield> field. See <xref |
80 | linkend="v4l2-tuner-type" /></entry> | ||
80 | </row> | 81 | </row> |
81 | <row> | 82 | <row> |
82 | <entry>__u32</entry> | 83 | <entry>__u32</entry> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml index 06197323a8cc..4cddd788c589 100644 --- a/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml +++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml | |||
@@ -58,9 +58,12 @@ | |||
58 | <title>Description</title> | 58 | <title>Description</title> |
59 | 59 | ||
60 | <note> | 60 | <note> |
61 | <title>Experimental</title> | 61 | <title>Obsolete</title> |
62 | <para>This is an <link linkend="experimental">experimental</link> | 62 | |
63 | interface and may change in the future.</para> | 63 | <para>This is an <link linkend="obsolete">obsolete</link> |
64 | interface and may be removed in the future. It is superseded by | ||
65 | <link linkend="vidioc-subdev-g-selection">the selection | ||
66 | API</link>.</para> | ||
64 | </note> | 67 | </note> |
65 | 68 | ||
66 | <para>To retrieve the current crop rectangle applications set the | 69 | <para>To retrieve the current crop rectangle applications set the |
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml new file mode 100644 index 000000000000..208e9f0da3f3 --- /dev/null +++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml | |||
@@ -0,0 +1,228 @@ | |||
1 | <refentry id="vidioc-subdev-g-selection"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>ioctl VIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | |||
7 | <refnamediv> | ||
8 | <refname>VIDIOC_SUBDEV_G_SELECTION</refname> | ||
9 | <refname>VIDIOC_SUBDEV_S_SELECTION</refname> | ||
10 | <refpurpose>Get or set selection rectangles on a subdev pad</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_subdev_selection *<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_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION</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 | <para>This is an <link linkend="experimental">experimental</link> | ||
55 | interface and may change in the future.</para> | ||
56 | </note> | ||
57 | |||
58 | <para>The selections are used to configure various image | ||
59 | processing functionality performed by the subdevs which affect the | ||
60 | image size. This currently includes cropping, scaling and | ||
61 | composition.</para> | ||
62 | |||
63 | <para>The selection API replaces <link | ||
64 | linkend="vidioc-subdev-g-crop">the old subdev crop API</link>. All | ||
65 | the function of the crop API, and more, are supported by the | ||
66 | selections API.</para> | ||
67 | |||
68 | <para>See <xref linkend="subdev"></xref> for | ||
69 | more information on how each selection target affects the image | ||
70 | processing pipeline inside the subdevice.</para> | ||
71 | |||
72 | <section> | ||
73 | <title>Types of selection targets</title> | ||
74 | |||
75 | <para>There are two types of selection targets: actual and bounds. | ||
76 | The ACTUAL targets are the targets which configure the hardware. | ||
77 | The BOUNDS target will return a rectangle that contain all | ||
78 | possible ACTUAL rectangles.</para> | ||
79 | </section> | ||
80 | |||
81 | <section> | ||
82 | <title>Discovering supported features</title> | ||
83 | |||
84 | <para>To discover which targets are supported, the user can | ||
85 | perform <constant>VIDIOC_SUBDEV_G_SELECTION</constant> on them. | ||
86 | Any unsupported target will return | ||
87 | <constant>EINVAL</constant>.</para> | ||
88 | </section> | ||
89 | |||
90 | <table pgwide="1" frame="none" id="v4l2-subdev-selection-targets"> | ||
91 | <title>V4L2 subdev selection targets</title> | ||
92 | <tgroup cols="3"> | ||
93 | &cs-def; | ||
94 | <tbody valign="top"> | ||
95 | <row> | ||
96 | <entry><constant>V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL</constant></entry> | ||
97 | <entry>0x0000</entry> | ||
98 | <entry>Actual crop. Defines the cropping | ||
99 | performed by the processing step.</entry> | ||
100 | </row> | ||
101 | <row> | ||
102 | <entry><constant>V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS</constant></entry> | ||
103 | <entry>0x0002</entry> | ||
104 | <entry>Bounds of the crop rectangle.</entry> | ||
105 | </row> | ||
106 | <row> | ||
107 | <entry><constant>V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL</constant></entry> | ||
108 | <entry>0x0100</entry> | ||
109 | <entry>Actual compose rectangle. Used to configure scaling | ||
110 | on sink pads and composition on source pads.</entry> | ||
111 | </row> | ||
112 | <row> | ||
113 | <entry><constant>V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS</constant></entry> | ||
114 | <entry>0x0102</entry> | ||
115 | <entry>Bounds of the compose rectangle.</entry> | ||
116 | </row> | ||
117 | </tbody> | ||
118 | </tgroup> | ||
119 | </table> | ||
120 | |||
121 | <table pgwide="1" frame="none" id="v4l2-subdev-selection-flags"> | ||
122 | <title>V4L2 subdev selection flags</title> | ||
123 | <tgroup cols="3"> | ||
124 | &cs-def; | ||
125 | <tbody valign="top"> | ||
126 | <row> | ||
127 | <entry><constant>V4L2_SUBDEV_SEL_FLAG_SIZE_GE</constant></entry> | ||
128 | <entry>(1 << 0)</entry> <entry>Suggest the driver it | ||
129 | should choose greater or equal rectangle (in size) than | ||
130 | was requested. Albeit the driver may choose a lesser size, | ||
131 | it will only do so due to hardware limitations. Without | ||
132 | this flag (and | ||
133 | <constant>V4L2_SUBDEV_SEL_FLAG_SIZE_LE</constant>) the | ||
134 | behaviour is to choose the closest possible | ||
135 | rectangle.</entry> | ||
136 | </row> | ||
137 | <row> | ||
138 | <entry><constant>V4L2_SUBDEV_SEL_FLAG_SIZE_LE</constant></entry> | ||
139 | <entry>(1 << 1)</entry> <entry>Suggest the driver it | ||
140 | should choose lesser or equal rectangle (in size) than was | ||
141 | requested. Albeit the driver may choose a greater size, it | ||
142 | will only do so due to hardware limitations.</entry> | ||
143 | </row> | ||
144 | <row> | ||
145 | <entry><constant>V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG</constant></entry> | ||
146 | <entry>(1 << 2)</entry> | ||
147 | <entry>The configuration should not be propagated to any | ||
148 | further processing steps. If this flag is not given, the | ||
149 | configuration is propagated inside the subdevice to all | ||
150 | further processing steps.</entry> | ||
151 | </row> | ||
152 | </tbody> | ||
153 | </tgroup> | ||
154 | </table> | ||
155 | |||
156 | <table pgwide="1" frame="none" id="v4l2-subdev-selection"> | ||
157 | <title>struct <structname>v4l2_subdev_selection</structname></title> | ||
158 | <tgroup cols="3"> | ||
159 | &cs-str; | ||
160 | <tbody valign="top"> | ||
161 | <row> | ||
162 | <entry>__u32</entry> | ||
163 | <entry><structfield>which</structfield></entry> | ||
164 | <entry>Active or try selection, from | ||
165 | &v4l2-subdev-format-whence;.</entry> | ||
166 | </row> | ||
167 | <row> | ||
168 | <entry>__u32</entry> | ||
169 | <entry><structfield>pad</structfield></entry> | ||
170 | <entry>Pad number as reported by the media framework.</entry> | ||
171 | </row> | ||
172 | <row> | ||
173 | <entry>__u32</entry> | ||
174 | <entry><structfield>target</structfield></entry> | ||
175 | <entry>Target selection rectangle. See | ||
176 | <xref linkend="v4l2-subdev-selection-targets">.</xref>.</entry> | ||
177 | </row> | ||
178 | <row> | ||
179 | <entry>__u32</entry> | ||
180 | <entry><structfield>flags</structfield></entry> | ||
181 | <entry>Flags. See | ||
182 | <xref linkend="v4l2-subdev-selection-flags">.</xref></entry> | ||
183 | </row> | ||
184 | <row> | ||
185 | <entry>&v4l2-rect;</entry> | ||
186 | <entry><structfield>rect</structfield></entry> | ||
187 | <entry>Selection rectangle, in pixels.</entry> | ||
188 | </row> | ||
189 | <row> | ||
190 | <entry>__u32</entry> | ||
191 | <entry><structfield>reserved</structfield>[8]</entry> | ||
192 | <entry>Reserved for future extensions. Applications and drivers must | ||
193 | set the array to zero.</entry> | ||
194 | </row> | ||
195 | </tbody> | ||
196 | </tgroup> | ||
197 | </table> | ||
198 | |||
199 | </refsect1> | ||
200 | |||
201 | <refsect1> | ||
202 | &return-value; | ||
203 | |||
204 | <variablelist> | ||
205 | <varlistentry> | ||
206 | <term><errorcode>EBUSY</errorcode></term> | ||
207 | <listitem> | ||
208 | <para>The selection rectangle can't be changed because the | ||
209 | pad is currently busy. This can be caused, for instance, by | ||
210 | an active video stream on the pad. The ioctl must not be | ||
211 | retried without performing another action to fix the problem | ||
212 | first. Only returned by | ||
213 | <constant>VIDIOC_SUBDEV_S_SELECTION</constant></para> | ||
214 | </listitem> | ||
215 | </varlistentry> | ||
216 | <varlistentry> | ||
217 | <term><errorcode>EINVAL</errorcode></term> | ||
218 | <listitem> | ||
219 | <para>The &v4l2-subdev-selection; | ||
220 | <structfield>pad</structfield> references a non-existing | ||
221 | pad, the <structfield>which</structfield> field references a | ||
222 | non-existing format, or the selection target is not | ||
223 | supported on the given subdev pad.</para> | ||
224 | </listitem> | ||
225 | </varlistentry> | ||
226 | </variablelist> | ||
227 | </refsect1> | ||
228 | </refentry> | ||
diff --git a/Documentation/HOWTO b/Documentation/HOWTO index f7ade3b3b40d..59c080f084ef 100644 --- a/Documentation/HOWTO +++ b/Documentation/HOWTO | |||
@@ -218,16 +218,16 @@ The development process | |||
218 | Linux kernel development process currently consists of a few different | 218 | Linux kernel development process currently consists of a few different |
219 | main kernel "branches" and lots of different subsystem-specific kernel | 219 | main kernel "branches" and lots of different subsystem-specific kernel |
220 | branches. These different branches are: | 220 | branches. These different branches are: |
221 | - main 2.6.x kernel tree | 221 | - main 3.x kernel tree |
222 | - 2.6.x.y -stable kernel tree | 222 | - 3.x.y -stable kernel tree |
223 | - 2.6.x -git kernel patches | 223 | - 3.x -git kernel patches |
224 | - subsystem specific kernel trees and patches | 224 | - subsystem specific kernel trees and patches |
225 | - the 2.6.x -next kernel tree for integration tests | 225 | - the 3.x -next kernel tree for integration tests |
226 | 226 | ||
227 | 2.6.x kernel tree | 227 | 3.x kernel tree |
228 | ----------------- | 228 | ----------------- |
229 | 2.6.x kernels are maintained by Linus Torvalds, and can be found on | 229 | 3.x kernels are maintained by Linus Torvalds, and can be found on |
230 | kernel.org in the pub/linux/kernel/v2.6/ directory. Its development | 230 | kernel.org in the pub/linux/kernel/v3.x/ directory. Its development |
231 | process is as follows: | 231 | process is as follows: |
232 | - As soon as a new kernel is released a two weeks window is open, | 232 | - As soon as a new kernel is released a two weeks window is open, |
233 | during this period of time maintainers can submit big diffs to | 233 | during this period of time maintainers can submit big diffs to |
@@ -262,20 +262,20 @@ mailing list about kernel releases: | |||
262 | released according to perceived bug status, not according to a | 262 | released according to perceived bug status, not according to a |
263 | preconceived timeline." | 263 | preconceived timeline." |
264 | 264 | ||
265 | 2.6.x.y -stable kernel tree | 265 | 3.x.y -stable kernel tree |
266 | --------------------------- | 266 | --------------------------- |
267 | Kernels with 4-part versions are -stable kernels. They contain | 267 | Kernels with 3-part versions are -stable kernels. They contain |
268 | relatively small and critical fixes for security problems or significant | 268 | relatively small and critical fixes for security problems or significant |
269 | regressions discovered in a given 2.6.x kernel. | 269 | regressions discovered in a given 3.x kernel. |
270 | 270 | ||
271 | This is the recommended branch for users who want the most recent stable | 271 | This is the recommended branch for users who want the most recent stable |
272 | kernel and are not interested in helping test development/experimental | 272 | kernel and are not interested in helping test development/experimental |
273 | versions. | 273 | versions. |
274 | 274 | ||
275 | If no 2.6.x.y kernel is available, then the highest numbered 2.6.x | 275 | If no 3.x.y kernel is available, then the highest numbered 3.x |
276 | kernel is the current stable kernel. | 276 | kernel is the current stable kernel. |
277 | 277 | ||
278 | 2.6.x.y are maintained by the "stable" team <stable@vger.kernel.org>, and | 278 | 3.x.y are maintained by the "stable" team <stable@vger.kernel.org>, and |
279 | are released as needs dictate. The normal release period is approximately | 279 | are released as needs dictate. The normal release period is approximately |
280 | two weeks, but it can be longer if there are no pressing problems. A | 280 | two weeks, but it can be longer if there are no pressing problems. A |
281 | security-related problem, instead, can cause a release to happen almost | 281 | security-related problem, instead, can cause a release to happen almost |
@@ -285,7 +285,7 @@ The file Documentation/stable_kernel_rules.txt in the kernel tree | |||
285 | documents what kinds of changes are acceptable for the -stable tree, and | 285 | documents what kinds of changes are acceptable for the -stable tree, and |
286 | how the release process works. | 286 | how the release process works. |
287 | 287 | ||
288 | 2.6.x -git patches | 288 | 3.x -git patches |
289 | ------------------ | 289 | ------------------ |
290 | These are daily snapshots of Linus' kernel tree which are managed in a | 290 | These are daily snapshots of Linus' kernel tree which are managed in a |
291 | git repository (hence the name.) These patches are usually released | 291 | git repository (hence the name.) These patches are usually released |
@@ -317,13 +317,13 @@ revisions to it, and maintainers can mark patches as under review, | |||
317 | accepted, or rejected. Most of these patchwork sites are listed at | 317 | accepted, or rejected. Most of these patchwork sites are listed at |
318 | http://patchwork.kernel.org/. | 318 | http://patchwork.kernel.org/. |
319 | 319 | ||
320 | 2.6.x -next kernel tree for integration tests | 320 | 3.x -next kernel tree for integration tests |
321 | --------------------------------------------- | 321 | --------------------------------------------- |
322 | Before updates from subsystem trees are merged into the mainline 2.6.x | 322 | Before updates from subsystem trees are merged into the mainline 3.x |
323 | tree, they need to be integration-tested. For this purpose, a special | 323 | tree, they need to be integration-tested. For this purpose, a special |
324 | testing repository exists into which virtually all subsystem trees are | 324 | testing repository exists into which virtually all subsystem trees are |
325 | pulled on an almost daily basis: | 325 | pulled on an almost daily basis: |
326 | http://git.kernel.org/?p=linux/kernel/git/sfr/linux-next.git | 326 | http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git |
327 | http://linux.f-seidel.de/linux-next/pmwiki/ | 327 | http://linux.f-seidel.de/linux-next/pmwiki/ |
328 | 328 | ||
329 | This way, the -next kernel gives a summary outlook onto what will be | 329 | This way, the -next kernel gives a summary outlook onto what will be |
diff --git a/Documentation/Makefile b/Documentation/Makefile index 30b656ece7aa..31d302bc5863 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile | |||
@@ -1,3 +1,3 @@ | |||
1 | obj-m := DocBook/ accounting/ auxdisplay/ connector/ \ | 1 | obj-m := DocBook/ accounting/ auxdisplay/ connector/ \ |
2 | filesystems/ filesystems/configfs/ ia64/ laptops/ networking/ \ | 2 | filesystems/ filesystems/configfs/ ia64/ laptops/ networking/ \ |
3 | pcmcia/ spi/ timers/ watchdog/src/ | 3 | pcmcia/ spi/ timers/ watchdog/src/ misc-devices/mei/ |
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index 4468ce24427c..c379a2a6949f 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches | |||
@@ -150,7 +150,8 @@ be able to justify all violations that remain in your patch. | |||
150 | 150 | ||
151 | Look through the MAINTAINERS file and the source code, and determine | 151 | Look through the MAINTAINERS file and the source code, and determine |
152 | if your change applies to a specific subsystem of the kernel, with | 152 | if your change applies to a specific subsystem of the kernel, with |
153 | an assigned maintainer. If so, e-mail that person. | 153 | an assigned maintainer. If so, e-mail that person. The script |
154 | scripts/get_maintainer.pl can be very useful at this step. | ||
154 | 155 | ||
155 | If no maintainer is listed, or the maintainer does not respond, send | 156 | If no maintainer is listed, or the maintainer does not respond, send |
156 | your patch to the primary Linux kernel developer's mailing list, | 157 | your patch to the primary Linux kernel developer's mailing list, |
diff --git a/Documentation/arm/00-INDEX b/Documentation/arm/00-INDEX index 91c24a1e8a9e..36420e116c90 100644 --- a/Documentation/arm/00-INDEX +++ b/Documentation/arm/00-INDEX | |||
@@ -4,8 +4,6 @@ Booting | |||
4 | - requirements for booting | 4 | - requirements for booting |
5 | Interrupts | 5 | Interrupts |
6 | - ARM Interrupt subsystem documentation | 6 | - ARM Interrupt subsystem documentation |
7 | IXP2000 | ||
8 | - Release Notes for Linux on Intel's IXP2000 Network Processor | ||
9 | msm | 7 | msm |
10 | - MSM specific documentation | 8 | - MSM specific documentation |
11 | Netwinder | 9 | Netwinder |
diff --git a/Documentation/arm/IXP2000 b/Documentation/arm/IXP2000 deleted file mode 100644 index 68d21d92a30b..000000000000 --- a/Documentation/arm/IXP2000 +++ /dev/null | |||
@@ -1,69 +0,0 @@ | |||
1 | |||
2 | ------------------------------------------------------------------------- | ||
3 | Release Notes for Linux on Intel's IXP2000 Network Processor | ||
4 | |||
5 | Maintained by Deepak Saxena <dsaxena@plexity.net> | ||
6 | ------------------------------------------------------------------------- | ||
7 | |||
8 | 1. Overview | ||
9 | |||
10 | Intel's IXP2000 family of NPUs (IXP2400, IXP2800, IXP2850) is designed | ||
11 | for high-performance network applications such high-availability | ||
12 | telecom systems. In addition to an XScale core, it contains up to 8 | ||
13 | "MicroEngines" that run special code, several high-end networking | ||
14 | interfaces (UTOPIA, SPI, etc), a PCI host bridge, one serial port, | ||
15 | flash interface, and some other odds and ends. For more information, see: | ||
16 | |||
17 | http://developer.intel.com | ||
18 | |||
19 | 2. Linux Support | ||
20 | |||
21 | Linux currently supports the following features on the IXP2000 NPUs: | ||
22 | |||
23 | - On-chip serial | ||
24 | - PCI | ||
25 | - Flash (MTD/JFFS2) | ||
26 | - I2C through GPIO | ||
27 | - Timers (watchdog, OS) | ||
28 | |||
29 | That is about all we can support under Linux ATM b/c the core networking | ||
30 | components of the chip are accessed via Intel's closed source SDK. | ||
31 | Please contact Intel directly on issues with using those. There is | ||
32 | also a mailing list run by some folks at Princeton University that might | ||
33 | be of help: https://lists.cs.princeton.edu/mailman/listinfo/ixp2xxx | ||
34 | |||
35 | WHATEVER YOU DO, DO NOT POST EMAIL TO THE LINUX-ARM OR LINUX-ARM-KERNEL | ||
36 | MAILING LISTS REGARDING THE INTEL SDK. | ||
37 | |||
38 | 3. Supported Platforms | ||
39 | |||
40 | - Intel IXDP2400 Reference Platform | ||
41 | - Intel IXDP2800 Reference Platform | ||
42 | - Intel IXDP2401 Reference Platform | ||
43 | - Intel IXDP2801 Reference Platform | ||
44 | - RadiSys ENP-2611 | ||
45 | |||
46 | 4. Usage Notes | ||
47 | |||
48 | - The IXP2000 platforms usually have rather complex PCI bus topologies | ||
49 | with large memory space requirements. In addition, b/c of the way the | ||
50 | Intel SDK is designed, devices are enumerated in a very specific | ||
51 | way. B/c of this this, we use "pci=firmware" option in the kernel | ||
52 | command line so that we do not re-enumerate the bus. | ||
53 | |||
54 | - IXDP2x01 systems have variable clock tick rates that we cannot determine | ||
55 | via HW registers. The "ixdp2x01_clk=XXX" cmd line options allow you | ||
56 | to pass the clock rate to the board port. | ||
57 | |||
58 | 5. Thanks | ||
59 | |||
60 | The IXP2000 work has been funded by Intel Corp. and MontaVista Software, Inc. | ||
61 | |||
62 | The following people have contributed patches/comments/etc: | ||
63 | |||
64 | Naeem F. Afzal | ||
65 | Lennert Buytenhek | ||
66 | Jeffrey Daly | ||
67 | |||
68 | ------------------------------------------------------------------------- | ||
69 | Last Update: 8/09/2004 | ||
diff --git a/Documentation/arm/SPEAr/overview.txt b/Documentation/arm/SPEAr/overview.txt index 253a35c6f782..57aae7765c74 100644 --- a/Documentation/arm/SPEAr/overview.txt +++ b/Documentation/arm/SPEAr/overview.txt | |||
@@ -8,53 +8,56 @@ Introduction | |||
8 | weblink : http://www.st.com/spear | 8 | weblink : http://www.st.com/spear |
9 | 9 | ||
10 | The ST Microelectronics SPEAr range of ARM9/CortexA9 System-on-Chip CPUs are | 10 | The ST Microelectronics SPEAr range of ARM9/CortexA9 System-on-Chip CPUs are |
11 | supported by the 'spear' platform of ARM Linux. Currently SPEAr300, | 11 | supported by the 'spear' platform of ARM Linux. Currently SPEAr1310, |
12 | SPEAr310, SPEAr320 and SPEAr600 SOCs are supported. Support for the SPEAr13XX | 12 | SPEAr1340, SPEAr300, SPEAr310, SPEAr320 and SPEAr600 SOCs are supported. |
13 | series is in progress. | ||
14 | 13 | ||
15 | Hierarchy in SPEAr is as follows: | 14 | Hierarchy in SPEAr is as follows: |
16 | 15 | ||
17 | SPEAr (Platform) | 16 | SPEAr (Platform) |
18 | - SPEAr3XX (3XX SOC series, based on ARM9) | 17 | - SPEAr3XX (3XX SOC series, based on ARM9) |
19 | - SPEAr300 (SOC) | 18 | - SPEAr300 (SOC) |
20 | - SPEAr300_EVB (Evaluation Board) | 19 | - SPEAr300 Evaluation Board |
21 | - SPEAr310 (SOC) | 20 | - SPEAr310 (SOC) |
22 | - SPEAr310_EVB (Evaluation Board) | 21 | - SPEAr310 Evaluation Board |
23 | - SPEAr320 (SOC) | 22 | - SPEAr320 (SOC) |
24 | - SPEAr320_EVB (Evaluation Board) | 23 | - SPEAr320 Evaluation Board |
25 | - SPEAr6XX (6XX SOC series, based on ARM9) | 24 | - SPEAr6XX (6XX SOC series, based on ARM9) |
26 | - SPEAr600 (SOC) | 25 | - SPEAr600 (SOC) |
27 | - SPEAr600_EVB (Evaluation Board) | 26 | - SPEAr600 Evaluation Board |
28 | - SPEAr13XX (13XX SOC series, based on ARM CORTEXA9) | 27 | - SPEAr13XX (13XX SOC series, based on ARM CORTEXA9) |
29 | - SPEAr1300 (SOC) | 28 | - SPEAr1310 (SOC) |
29 | - SPEAr1310 Evaluation Board | ||
30 | - SPEAr1340 (SOC) | ||
31 | - SPEAr1340 Evaluation Board | ||
30 | 32 | ||
31 | Configuration | 33 | Configuration |
32 | ------------- | 34 | ------------- |
33 | 35 | ||
34 | A generic configuration is provided for each machine, and can be used as the | 36 | A generic configuration is provided for each machine, and can be used as the |
35 | default by | 37 | default by |
36 | make spear600_defconfig | 38 | make spear13xx_defconfig |
37 | make spear300_defconfig | 39 | make spear3xx_defconfig |
38 | make spear310_defconfig | 40 | make spear6xx_defconfig |
39 | make spear320_defconfig | ||
40 | 41 | ||
41 | Layout | 42 | Layout |
42 | ------ | 43 | ------ |
43 | 44 | ||
44 | The common files for multiple machine families (SPEAr3XX, SPEAr6XX and | 45 | The common files for multiple machine families (SPEAr3xx, SPEAr6xx and |
45 | SPEAr13XX) are located in the platform code contained in arch/arm/plat-spear | 46 | SPEAr13xx) are located in the platform code contained in arch/arm/plat-spear |
46 | with headers in plat/. | 47 | with headers in plat/. |
47 | 48 | ||
48 | Each machine series have a directory with name arch/arm/mach-spear followed by | 49 | Each machine series have a directory with name arch/arm/mach-spear followed by |
49 | series name. Like mach-spear3xx, mach-spear6xx and mach-spear13xx. | 50 | series name. Like mach-spear3xx, mach-spear6xx and mach-spear13xx. |
50 | 51 | ||
51 | Common file for machines of spear3xx family is mach-spear3xx/spear3xx.c and for | 52 | Common file for machines of spear3xx family is mach-spear3xx/spear3xx.c, for |
52 | spear6xx is mach-spear6xx/spear6xx.c. mach-spear* also contain soc/machine | 53 | spear6xx is mach-spear6xx/spear6xx.c and for spear13xx family is |
53 | specific files, like spear300.c, spear310.c, spear320.c and spear600.c. | 54 | mach-spear13xx/spear13xx.c. mach-spear* also contain soc/machine specific |
54 | mach-spear* also contains board specific files for each machine type. | 55 | files, like spear1310.c, spear1340.c spear300.c, spear310.c, spear320.c and |
56 | spear600.c. mach-spear* doesn't contains board specific files as they fully | ||
57 | support Flattened Device Tree. | ||
55 | 58 | ||
56 | 59 | ||
57 | Document Author | 60 | Document Author |
58 | --------------- | 61 | --------------- |
59 | 62 | ||
60 | Viresh Kumar, (c) 2010 ST Microelectronics | 63 | Viresh Kumar <viresh.kumar@st.com>, (c) 2010-2012 ST Microelectronics |
diff --git a/Documentation/blackfin/bfin-gpio-notes.txt b/Documentation/blackfin/bfin-gpio-notes.txt index d36b01f778b9..d245f39c3d01 100644 --- a/Documentation/blackfin/bfin-gpio-notes.txt +++ b/Documentation/blackfin/bfin-gpio-notes.txt | |||
@@ -53,7 +53,7 @@ | |||
53 | 53 | ||
54 | 3. But there are some exceptions | 54 | 3. But there are some exceptions |
55 | - Kernel permit the identical GPIO be requested both as GPIO and GPIO | 55 | - Kernel permit the identical GPIO be requested both as GPIO and GPIO |
56 | interrut. | 56 | interrupt. |
57 | Some drivers, like gpio-keys, need this behavior. Kernel only print out | 57 | Some drivers, like gpio-keys, need this behavior. Kernel only print out |
58 | warning messages like, | 58 | warning messages like, |
59 | bfin-gpio: GPIO 24 is already reserved by gpio-keys: BTN0, and you are | 59 | bfin-gpio: GPIO 24 is already reserved by gpio-keys: BTN0, and you are |
diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt index 9b1067afb224..dd88540bb995 100644 --- a/Documentation/cgroups/memory.txt +++ b/Documentation/cgroups/memory.txt | |||
@@ -184,12 +184,14 @@ behind this approach is that a cgroup that aggressively uses a shared | |||
184 | page will eventually get charged for it (once it is uncharged from | 184 | page will eventually get charged for it (once it is uncharged from |
185 | the cgroup that brought it in -- this will happen on memory pressure). | 185 | the cgroup that brought it in -- this will happen on memory pressure). |
186 | 186 | ||
187 | But see section 8.2: when moving a task to another cgroup, its pages may | ||
188 | be recharged to the new cgroup, if move_charge_at_immigrate has been chosen. | ||
189 | |||
187 | Exception: If CONFIG_CGROUP_CGROUP_MEM_RES_CTLR_SWAP is not used. | 190 | Exception: If CONFIG_CGROUP_CGROUP_MEM_RES_CTLR_SWAP is not used. |
188 | When you do swapoff and make swapped-out pages of shmem(tmpfs) to | 191 | When you do swapoff and make swapped-out pages of shmem(tmpfs) to |
189 | be backed into memory in force, charges for pages are accounted against the | 192 | be backed into memory in force, charges for pages are accounted against the |
190 | caller of swapoff rather than the users of shmem. | 193 | caller of swapoff rather than the users of shmem. |
191 | 194 | ||
192 | |||
193 | 2.4 Swap Extension (CONFIG_CGROUP_MEM_RES_CTLR_SWAP) | 195 | 2.4 Swap Extension (CONFIG_CGROUP_MEM_RES_CTLR_SWAP) |
194 | 196 | ||
195 | Swap Extension allows you to record charge for swap. A swapped-in page is | 197 | Swap Extension allows you to record charge for swap. A swapped-in page is |
@@ -374,14 +376,15 @@ cgroup might have some charge associated with it, even though all | |||
374 | tasks have migrated away from it. (because we charge against pages, not | 376 | tasks have migrated away from it. (because we charge against pages, not |
375 | against tasks.) | 377 | against tasks.) |
376 | 378 | ||
377 | Such charges are freed or moved to their parent. At moving, both of RSS | 379 | We move the stats to root (if use_hierarchy==0) or parent (if |
378 | and CACHES are moved to parent. | 380 | use_hierarchy==1), and no change on the charge except uncharging |
379 | rmdir() may return -EBUSY if freeing/moving fails. See 5.1 also. | 381 | from the child. |
380 | 382 | ||
381 | Charges recorded in swap information is not updated at removal of cgroup. | 383 | Charges recorded in swap information is not updated at removal of cgroup. |
382 | Recorded information is discarded and a cgroup which uses swap (swapcache) | 384 | Recorded information is discarded and a cgroup which uses swap (swapcache) |
383 | will be charged as a new owner of it. | 385 | will be charged as a new owner of it. |
384 | 386 | ||
387 | About use_hierarchy, see Section 6. | ||
385 | 388 | ||
386 | 5. Misc. interfaces. | 389 | 5. Misc. interfaces. |
387 | 390 | ||
@@ -394,13 +397,15 @@ will be charged as a new owner of it. | |||
394 | 397 | ||
395 | Almost all pages tracked by this memory cgroup will be unmapped and freed. | 398 | Almost all pages tracked by this memory cgroup will be unmapped and freed. |
396 | Some pages cannot be freed because they are locked or in-use. Such pages are | 399 | Some pages cannot be freed because they are locked or in-use. Such pages are |
397 | moved to parent and this cgroup will be empty. This may return -EBUSY if | 400 | moved to parent(if use_hierarchy==1) or root (if use_hierarchy==0) and this |
398 | VM is too busy to free/move all pages immediately. | 401 | cgroup will be empty. |
399 | 402 | ||
400 | Typical use case of this interface is that calling this before rmdir(). | 403 | Typical use case of this interface is that calling this before rmdir(). |
401 | Because rmdir() moves all pages to parent, some out-of-use page caches can be | 404 | Because rmdir() moves all pages to parent, some out-of-use page caches can be |
402 | moved to the parent. If you want to avoid that, force_empty will be useful. | 405 | moved to the parent. If you want to avoid that, force_empty will be useful. |
403 | 406 | ||
407 | About use_hierarchy, see Section 6. | ||
408 | |||
404 | 5.2 stat file | 409 | 5.2 stat file |
405 | 410 | ||
406 | memory.stat file includes following statistics | 411 | memory.stat file includes following statistics |
@@ -430,17 +435,10 @@ hierarchical_memory_limit - # of bytes of memory limit with regard to hierarchy | |||
430 | hierarchical_memsw_limit - # of bytes of memory+swap limit with regard to | 435 | hierarchical_memsw_limit - # of bytes of memory+swap limit with regard to |
431 | hierarchy under which memory cgroup is. | 436 | hierarchy under which memory cgroup is. |
432 | 437 | ||
433 | total_cache - sum of all children's "cache" | 438 | total_<counter> - # hierarchical version of <counter>, which in |
434 | total_rss - sum of all children's "rss" | 439 | addition to the cgroup's own value includes the |
435 | total_mapped_file - sum of all children's "cache" | 440 | sum of all hierarchical children's values of |
436 | total_pgpgin - sum of all children's "pgpgin" | 441 | <counter>, i.e. total_cache |
437 | total_pgpgout - sum of all children's "pgpgout" | ||
438 | total_swap - sum of all children's "swap" | ||
439 | total_inactive_anon - sum of all children's "inactive_anon" | ||
440 | total_active_anon - sum of all children's "active_anon" | ||
441 | total_inactive_file - sum of all children's "inactive_file" | ||
442 | total_active_file - sum of all children's "active_file" | ||
443 | total_unevictable - sum of all children's "unevictable" | ||
444 | 442 | ||
445 | # The following additional stats are dependent on CONFIG_DEBUG_VM. | 443 | # The following additional stats are dependent on CONFIG_DEBUG_VM. |
446 | 444 | ||
@@ -622,8 +620,7 @@ memory cgroup. | |||
622 | bit | what type of charges would be moved ? | 620 | bit | what type of charges would be moved ? |
623 | -----+------------------------------------------------------------------------ | 621 | -----+------------------------------------------------------------------------ |
624 | 0 | A charge of an anonymous page(or swap of it) used by the target task. | 622 | 0 | A charge of an anonymous page(or swap of it) used by the target task. |
625 | | Those pages and swaps must be used only by the target task. You must | 623 | | You must enable Swap Extension(see 2.4) to enable move of swap charges. |
626 | | enable Swap Extension(see 2.4) to enable move of swap charges. | ||
627 | -----+------------------------------------------------------------------------ | 624 | -----+------------------------------------------------------------------------ |
628 | 1 | A charge of file pages(normal file, tmpfs file(e.g. ipc shared memory) | 625 | 1 | A charge of file pages(normal file, tmpfs file(e.g. ipc shared memory) |
629 | | and swaps of tmpfs file) mmapped by the target task. Unlike the case of | 626 | | and swaps of tmpfs file) mmapped by the target task. Unlike the case of |
@@ -636,8 +633,6 @@ memory cgroup. | |||
636 | 633 | ||
637 | 8.3 TODO | 634 | 8.3 TODO |
638 | 635 | ||
639 | - Implement madvise(2) to let users decide the vma to be moved or not to be | ||
640 | moved. | ||
641 | - All of moving charge operations are done under cgroup_mutex. It's not good | 636 | - All of moving charge operations are done under cgroup_mutex. It's not good |
642 | behavior to hold the mutex too long, so we may need some trick. | 637 | behavior to hold the mutex too long, so we may need some trick. |
643 | 638 | ||
diff --git a/Documentation/cgroups/resource_counter.txt b/Documentation/cgroups/resource_counter.txt index 95b24d766eab..0c4a344e78fa 100644 --- a/Documentation/cgroups/resource_counter.txt +++ b/Documentation/cgroups/resource_counter.txt | |||
@@ -77,11 +77,11 @@ to work with it. | |||
77 | where the charging failed. | 77 | where the charging failed. |
78 | 78 | ||
79 | d. int res_counter_charge_locked | 79 | d. int res_counter_charge_locked |
80 | (struct res_counter *rc, unsigned long val) | 80 | (struct res_counter *rc, unsigned long val, bool force) |
81 | 81 | ||
82 | The same as res_counter_charge(), but it must not acquire/release the | 82 | The same as res_counter_charge(), but it must not acquire/release the |
83 | res_counter->lock internally (it must be called with res_counter->lock | 83 | res_counter->lock internally (it must be called with res_counter->lock |
84 | held). | 84 | held). The force parameter indicates whether we can bypass the limit. |
85 | 85 | ||
86 | e. void res_counter_uncharge[_locked] | 86 | e. void res_counter_uncharge[_locked] |
87 | (struct res_counter *rc, unsigned long val) | 87 | (struct res_counter *rc, unsigned long val) |
@@ -92,6 +92,14 @@ to work with it. | |||
92 | 92 | ||
93 | The _locked routines imply that the res_counter->lock is taken. | 93 | The _locked routines imply that the res_counter->lock is taken. |
94 | 94 | ||
95 | f. void res_counter_uncharge_until | ||
96 | (struct res_counter *rc, struct res_counter *top, | ||
97 | unsinged long val) | ||
98 | |||
99 | Almost same as res_cunter_uncharge() but propagation of uncharge | ||
100 | stops when rc == top. This is useful when kill a res_coutner in | ||
101 | child cgroup. | ||
102 | |||
95 | 2.1 Other accounting routines | 103 | 2.1 Other accounting routines |
96 | 104 | ||
97 | There are more routines that may help you with common needs, like | 105 | There are more routines that may help you with common needs, like |
diff --git a/Documentation/cris/README b/Documentation/cris/README index d9b086869a60..8dbdb1a44429 100644 --- a/Documentation/cris/README +++ b/Documentation/cris/README | |||
@@ -1,38 +1,34 @@ | |||
1 | Linux 2.4 on the CRIS architecture | 1 | Linux on the CRIS architecture |
2 | ================================== | 2 | ============================== |
3 | $Id: README,v 1.7 2001/04/19 12:38:32 bjornw Exp $ | ||
4 | 3 | ||
5 | This is a port of Linux 2.4 to Axis Communications ETRAX 100LX embedded | 4 | This is a port of Linux to Axis Communications ETRAX 100LX, |
6 | network CPU. For more information about CRIS and ETRAX please see further | 5 | ETRAX FS and ARTPEC-3 embedded network CPUs. |
7 | below. | 6 | |
7 | For more information about CRIS and ETRAX please see further below. | ||
8 | 8 | ||
9 | In order to compile this you need a version of gcc with support for the | 9 | In order to compile this you need a version of gcc with support for the |
10 | ETRAX chip family. Please see this link for more information on how to | 10 | ETRAX chip family. Please see this link for more information on how to |
11 | download the compiler and other tools useful when building and booting | 11 | download the compiler and other tools useful when building and booting |
12 | software for the ETRAX platform: | 12 | software for the ETRAX platform: |
13 | 13 | ||
14 | http://developer.axis.com/doc/software/devboard_lx/install-howto.html | 14 | http://developer.axis.com/wiki/doku.php?id=axis:install-howto-2_20 |
15 | |||
16 | <more specific information should come in this document later> | ||
17 | 15 | ||
18 | What is CRIS ? | 16 | What is CRIS ? |
19 | -------------- | 17 | -------------- |
20 | 18 | ||
21 | CRIS is an acronym for 'Code Reduced Instruction Set'. It is the CPU | 19 | CRIS is an acronym for 'Code Reduced Instruction Set'. It is the CPU |
22 | architecture in Axis Communication AB's range of embedded network CPU's, | 20 | architecture in Axis Communication AB's range of embedded network CPU's, |
23 | called ETRAX. The latest CPU is called ETRAX 100LX, where LX stands for | 21 | called ETRAX. |
24 | 'Linux' because the chip was designed to be a good host for the Linux | ||
25 | operating system. | ||
26 | 22 | ||
27 | The ETRAX 100LX chip | 23 | The ETRAX 100LX chip |
28 | -------------------- | 24 | -------------------- |
29 | 25 | ||
30 | For reference, please see the press-release: | 26 | For reference, please see the following link: |
31 | 27 | ||
32 | http://www.axis.com/news/us/001101_etrax.htm | 28 | http://www.axis.com/products/dev_etrax_100lx/index.htm |
33 | 29 | ||
34 | The ETRAX 100LX is a 100 MIPS processor with 8kB cache, MMU, and a very broad | 30 | The ETRAX 100LX is a 100 MIPS processor with 8kB cache, MMU, and a very broad |
35 | range of built-in interfaces, all with modern scatter/gather DMA. | 31 | range of built-in interfaces, all with modern scatter/gather DMA. |
36 | 32 | ||
37 | Memory interfaces: | 33 | Memory interfaces: |
38 | 34 | ||
@@ -51,20 +47,28 @@ I/O interfaces: | |||
51 | * SCSI | 47 | * SCSI |
52 | * two parallel-ports | 48 | * two parallel-ports |
53 | * two generic 8-bit ports | 49 | * two generic 8-bit ports |
54 | 50 | ||
55 | (not all interfaces are available at the same time due to chip pin | 51 | (not all interfaces are available at the same time due to chip pin |
56 | multiplexing) | 52 | multiplexing) |
57 | 53 | ||
58 | The previous version of the ETRAX, the ETRAX 100, sits in almost all of | 54 | ETRAX 100LX is CRISv10 architecture. |
59 | Axis shipping thin-servers like the Axis 2100 web camera or the ETRAX 100 | 55 | |
60 | developer-board. It lacks an MMU so the Linux we run on that is a version | 56 | |
61 | of uClinux (Linux 2.0 without MM-support) ported to the CRIS architecture. | 57 | The ETRAX FS and ARTPEC-3 chips |
62 | The new Linux 2.4 port has full MM and needs a CPU with an MMU, so it will | 58 | ------------------------------- |
63 | not run on the ETRAX 100. | ||
64 | 59 | ||
65 | A version of the Axis developer-board with ETRAX 100LX (running Linux | 60 | The ETRAX FS is a 200MHz 32-bit RISC processor with on-chip 16kB |
66 | 2.4) is now available. For more information please see developer.axis.com. | 61 | I-cache and 16kB D-cache and with a wide range of device interfaces |
62 | including multiple high speed serial ports and an integrated USB 1.1 PHY. | ||
67 | 63 | ||
64 | The ARTPEC-3 is a variant of the ETRAX FS with additional IO-units | ||
65 | used by the Axis Communications network cameras. | ||
66 | |||
67 | See below link for more information: | ||
68 | |||
69 | http://www.axis.com/products/dev_etrax_fs/index.htm | ||
70 | |||
71 | ETRAX FS and ARTPEC-3 are both CRISv32 architectures. | ||
68 | 72 | ||
69 | Bootlog | 73 | Bootlog |
70 | ------- | 74 | ------- |
@@ -182,10 +186,6 @@ SwapFree: 0 kB | |||
182 | -rwxr-xr-x 1 342 100 16252 Jan 01 00:00 telnetd | 186 | -rwxr-xr-x 1 342 100 16252 Jan 01 00:00 telnetd |
183 | 187 | ||
184 | 188 | ||
185 | (All programs are statically linked to the libc at this point - we have not ported the | ||
186 | shared libraries yet) | ||
187 | |||
188 | |||
189 | 189 | ||
190 | 190 | ||
191 | 191 | ||
diff --git a/Documentation/devices.txt b/Documentation/devices.txt index 00383186d8fb..47a154f30290 100644 --- a/Documentation/devices.txt +++ b/Documentation/devices.txt | |||
@@ -98,7 +98,8 @@ Your cooperation is appreciated. | |||
98 | 8 = /dev/random Nondeterministic random number gen. | 98 | 8 = /dev/random Nondeterministic random number gen. |
99 | 9 = /dev/urandom Faster, less secure random number gen. | 99 | 9 = /dev/urandom Faster, less secure random number gen. |
100 | 10 = /dev/aio Asynchronous I/O notification interface | 100 | 10 = /dev/aio Asynchronous I/O notification interface |
101 | 11 = /dev/kmsg Writes to this come out as printk's | 101 | 11 = /dev/kmsg Writes to this come out as printk's, reads |
102 | export the buffered printk records. | ||
102 | 12 = /dev/oldmem Used by crashdump kernels to access | 103 | 12 = /dev/oldmem Used by crashdump kernels to access |
103 | the memory of the kernel that crashed. | 104 | the memory of the kernel that crashed. |
104 | 105 | ||
@@ -846,13 +847,7 @@ Your cooperation is appreciated. | |||
846 | ... | 847 | ... |
847 | 31 = /dev/tap15 16th Ethertap device | 848 | 31 = /dev/tap15 16th Ethertap device |
848 | 849 | ||
849 | 36 block MCA ESDI hard disk | 850 | 36 block OBSOLETE (was MCA ESDI hard disk) |
850 | 0 = /dev/eda First ESDI disk whole disk | ||
851 | 64 = /dev/edb Second ESDI disk whole disk | ||
852 | ... | ||
853 | |||
854 | Partitions are handled in the same way as IDE disks | ||
855 | (see major number 3). | ||
856 | 851 | ||
857 | 37 char IDE tape | 852 | 37 char IDE tape |
858 | 0 = /dev/ht0 First IDE tape | 853 | 0 = /dev/ht0 First IDE tape |
diff --git a/Documentation/devicetree/bindings/arm/atmel-adc.txt b/Documentation/devicetree/bindings/arm/atmel-adc.txt new file mode 100644 index 000000000000..c63097d6afeb --- /dev/null +++ b/Documentation/devicetree/bindings/arm/atmel-adc.txt | |||
@@ -0,0 +1,65 @@ | |||
1 | * AT91's Analog to Digital Converter (ADC) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "atmel,at91sam9260-adc" | ||
5 | - reg: Should contain ADC registers location and length | ||
6 | - interrupts: Should contain the IRQ line for the ADC | ||
7 | - atmel,adc-channel-base: Offset of the first channel data register | ||
8 | - atmel,adc-channels-used: Bitmask of the channels muxed and enable for this | ||
9 | device | ||
10 | - atmel,adc-drdy-mask: Mask of the DRDY interruption in the ADC | ||
11 | - atmel,adc-num-channels: Number of channels available in the ADC | ||
12 | - atmel,adc-startup-time: Startup Time of the ADC in microseconds as | ||
13 | defined in the datasheet | ||
14 | - atmel,adc-status-register: Offset of the Interrupt Status Register | ||
15 | - atmel,adc-trigger-register: Offset of the Trigger Register | ||
16 | - atmel,adc-vref: Reference voltage in millivolts for the conversions | ||
17 | |||
18 | Optional properties: | ||
19 | - atmel,adc-use-external: Boolean to enable of external triggers | ||
20 | |||
21 | Optional trigger Nodes: | ||
22 | - Required properties: | ||
23 | * trigger-name: Name of the trigger exposed to the user | ||
24 | * trigger-value: Value to put in the Trigger register | ||
25 | to activate this trigger | ||
26 | - Optional properties: | ||
27 | * trigger-external: Is the trigger an external trigger? | ||
28 | |||
29 | Examples: | ||
30 | adc0: adc@fffb0000 { | ||
31 | compatible = "atmel,at91sam9260-adc"; | ||
32 | reg = <0xfffb0000 0x100>; | ||
33 | interrupts = <20 4>; | ||
34 | atmel,adc-channel-base = <0x30>; | ||
35 | atmel,adc-channels-used = <0xff>; | ||
36 | atmel,adc-drdy-mask = <0x10000>; | ||
37 | atmel,adc-num-channels = <8>; | ||
38 | atmel,adc-startup-time = <40>; | ||
39 | atmel,adc-status-register = <0x1c>; | ||
40 | atmel,adc-trigger-register = <0x08>; | ||
41 | atmel,adc-use-external; | ||
42 | atmel,adc-vref = <3300>; | ||
43 | |||
44 | trigger@0 { | ||
45 | trigger-name = "external-rising"; | ||
46 | trigger-value = <0x1>; | ||
47 | trigger-external; | ||
48 | }; | ||
49 | trigger@1 { | ||
50 | trigger-name = "external-falling"; | ||
51 | trigger-value = <0x2>; | ||
52 | trigger-external; | ||
53 | }; | ||
54 | |||
55 | trigger@2 { | ||
56 | trigger-name = "external-any"; | ||
57 | trigger-value = <0x3>; | ||
58 | trigger-external; | ||
59 | }; | ||
60 | |||
61 | trigger@3 { | ||
62 | trigger-name = "continuous"; | ||
63 | trigger-value = <0x6>; | ||
64 | }; | ||
65 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/fsl.txt b/Documentation/devicetree/bindings/arm/fsl.txt index bfbc771a65f8..ac9e7516756e 100644 --- a/Documentation/devicetree/bindings/arm/fsl.txt +++ b/Documentation/devicetree/bindings/arm/fsl.txt | |||
@@ -1,6 +1,14 @@ | |||
1 | Freescale i.MX Platforms Device Tree Bindings | 1 | Freescale i.MX Platforms Device Tree Bindings |
2 | ----------------------------------------------- | 2 | ----------------------------------------------- |
3 | 3 | ||
4 | i.MX23 Evaluation Kit | ||
5 | Required root node properties: | ||
6 | - compatible = "fsl,imx23-evk", "fsl,imx23"; | ||
7 | |||
8 | i.MX28 Evaluation Kit | ||
9 | Required root node properties: | ||
10 | - compatible = "fsl,imx28-evk", "fsl,imx28"; | ||
11 | |||
4 | i.MX51 Babbage Board | 12 | i.MX51 Babbage Board |
5 | Required root node properties: | 13 | Required root node properties: |
6 | - compatible = "fsl,imx51-babbage", "fsl,imx51"; | 14 | - compatible = "fsl,imx51-babbage", "fsl,imx51"; |
@@ -29,6 +37,10 @@ i.MX6 Quad SABRE Lite Board | |||
29 | Required root node properties: | 37 | Required root node properties: |
30 | - compatible = "fsl,imx6q-sabrelite", "fsl,imx6q"; | 38 | - compatible = "fsl,imx6q-sabrelite", "fsl,imx6q"; |
31 | 39 | ||
40 | i.MX6 Quad SABRE Smart Device Board | ||
41 | Required root node properties: | ||
42 | - compatible = "fsl,imx6q-sabresd", "fsl,imx6q"; | ||
43 | |||
32 | Generic i.MX boards | 44 | Generic i.MX boards |
33 | ------------------- | 45 | ------------------- |
34 | 46 | ||
diff --git a/Documentation/devicetree/bindings/arm/gic.txt b/Documentation/devicetree/bindings/arm/gic.txt index 9b4b82a721b6..62eb8df1e08d 100644 --- a/Documentation/devicetree/bindings/arm/gic.txt +++ b/Documentation/devicetree/bindings/arm/gic.txt | |||
@@ -11,7 +11,9 @@ have PPIs or SGIs. | |||
11 | Main node required properties: | 11 | Main node required properties: |
12 | 12 | ||
13 | - compatible : should be one of: | 13 | - compatible : should be one of: |
14 | "arm,cortex-a15-gic" | ||
14 | "arm,cortex-a9-gic" | 15 | "arm,cortex-a9-gic" |
16 | "arm,cortex-a7-gic" | ||
15 | "arm,arm11mp-gic" | 17 | "arm,arm11mp-gic" |
16 | - interrupt-controller : Identifies the node as an interrupt controller | 18 | - interrupt-controller : Identifies the node as an interrupt controller |
17 | - #interrupt-cells : Specifies the number of cells needed to encode an | 19 | - #interrupt-cells : Specifies the number of cells needed to encode an |
@@ -39,8 +41,9 @@ Main node required properties: | |||
39 | the GIC cpu interface register base and size. | 41 | the GIC cpu interface register base and size. |
40 | 42 | ||
41 | Optional | 43 | Optional |
42 | - interrupts : Interrupt source of the parent interrupt controller. Only | 44 | - interrupts : Interrupt source of the parent interrupt controller on |
43 | present on secondary GICs. | 45 | secondary GICs, or VGIC maintainance interrupt on primary GIC (see |
46 | below). | ||
44 | 47 | ||
45 | - cpu-offset : per-cpu offset within the distributor and cpu interface | 48 | - cpu-offset : per-cpu offset within the distributor and cpu interface |
46 | regions, used when the GIC doesn't have banked registers. The offset is | 49 | regions, used when the GIC doesn't have banked registers. The offset is |
@@ -57,3 +60,31 @@ Example: | |||
57 | <0xfff10100 0x100>; | 60 | <0xfff10100 0x100>; |
58 | }; | 61 | }; |
59 | 62 | ||
63 | |||
64 | * GIC virtualization extensions (VGIC) | ||
65 | |||
66 | For ARM cores that support the virtualization extensions, additional | ||
67 | properties must be described (they only exist if the GIC is the | ||
68 | primary interrupt controller). | ||
69 | |||
70 | Required properties: | ||
71 | |||
72 | - reg : Additional regions specifying the base physical address and | ||
73 | size of the VGIC registers. The first additional region is the GIC | ||
74 | virtual interface control register base and size. The 2nd additional | ||
75 | region is the GIC virtual cpu interface register base and size. | ||
76 | |||
77 | - interrupts : VGIC maintainance interrupt. | ||
78 | |||
79 | Example: | ||
80 | |||
81 | interrupt-controller@2c001000 { | ||
82 | compatible = "arm,cortex-a15-gic"; | ||
83 | #interrupt-cells = <3>; | ||
84 | interrupt-controller; | ||
85 | reg = <0x2c001000 0x1000>, | ||
86 | <0x2c002000 0x1000>, | ||
87 | <0x2c004000 0x2000>, | ||
88 | <0x2c006000 0x2000>; | ||
89 | interrupts = <1 9 0xf04>; | ||
90 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/lpc32xx-mic.txt b/Documentation/devicetree/bindings/arm/lpc32xx-mic.txt new file mode 100644 index 000000000000..539adca19e8f --- /dev/null +++ b/Documentation/devicetree/bindings/arm/lpc32xx-mic.txt | |||
@@ -0,0 +1,38 @@ | |||
1 | * NXP LPC32xx Main Interrupt Controller | ||
2 | (MIC, including SIC1 and SIC2 secondary controllers) | ||
3 | |||
4 | Required properties: | ||
5 | - compatible: Should be "nxp,lpc3220-mic" | ||
6 | - interrupt-controller: Identifies the node as an interrupt controller. | ||
7 | - interrupt-parent: Empty for the interrupt controller itself | ||
8 | - #interrupt-cells: The number of cells to define the interrupts. Should be 2. | ||
9 | The first cell is the IRQ number | ||
10 | The second cell is used to specify mode: | ||
11 | 1 = low-to-high edge triggered | ||
12 | 2 = high-to-low edge triggered | ||
13 | 4 = active high level-sensitive | ||
14 | 8 = active low level-sensitive | ||
15 | Default for internal sources should be set to 4 (active high). | ||
16 | - reg: Should contain MIC registers location and length | ||
17 | |||
18 | Examples: | ||
19 | /* | ||
20 | * MIC | ||
21 | */ | ||
22 | mic: interrupt-controller@40008000 { | ||
23 | compatible = "nxp,lpc3220-mic"; | ||
24 | interrupt-controller; | ||
25 | interrupt-parent; | ||
26 | #interrupt-cells = <2>; | ||
27 | reg = <0x40008000 0xC000>; | ||
28 | }; | ||
29 | |||
30 | /* | ||
31 | * ADC | ||
32 | */ | ||
33 | adc@40048000 { | ||
34 | compatible = "nxp,lpc3220-adc"; | ||
35 | reg = <0x40048000 0x1000>; | ||
36 | interrupt-parent = <&mic>; | ||
37 | interrupts = <39 4>; | ||
38 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/lpc32xx.txt b/Documentation/devicetree/bindings/arm/lpc32xx.txt new file mode 100644 index 000000000000..56ec8ddc4a3b --- /dev/null +++ b/Documentation/devicetree/bindings/arm/lpc32xx.txt | |||
@@ -0,0 +1,8 @@ | |||
1 | NXP LPC32xx Platforms Device Tree Bindings | ||
2 | ------------------------------------------ | ||
3 | |||
4 | Boards with the NXP LPC32xx SoC shall have the following properties: | ||
5 | |||
6 | Required root node property: | ||
7 | |||
8 | compatible: must be "nxp,lpc3220", "nxp,lpc3230", "nxp,lpc3240" or "nxp,lpc3250" | ||
diff --git a/Documentation/devicetree/bindings/arm/mrvl/intc.txt b/Documentation/devicetree/bindings/arm/mrvl/intc.txt new file mode 100644 index 000000000000..80b9a94d9a23 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/mrvl/intc.txt | |||
@@ -0,0 +1,40 @@ | |||
1 | * Marvell MMP Interrupt controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "mrvl,mmp-intc", "mrvl,mmp2-intc" or | ||
5 | "mrvl,mmp2-mux-intc" | ||
6 | - reg : Address and length of the register set of the interrupt controller. | ||
7 | If the interrupt controller is intc, address and length means the range | ||
8 | of the whold interrupt controller. If the interrupt controller is mux-intc, | ||
9 | address and length means one register. Since address of mux-intc is in the | ||
10 | range of intc. mux-intc is secondary interrupt controller. | ||
11 | - reg-names : Name of the register set of the interrupt controller. It's | ||
12 | only required in mux-intc interrupt controller. | ||
13 | - interrupts : Should be the port interrupt shared by mux interrupts. It's | ||
14 | only required in mux-intc interrupt controller. | ||
15 | - interrupt-controller : Identifies the node as an interrupt controller. | ||
16 | - #interrupt-cells : Specifies the number of cells needed to encode an | ||
17 | interrupt source. | ||
18 | - mrvl,intc-nr-irqs : Specifies the number of interrupts in the interrupt | ||
19 | controller. | ||
20 | - mrvl,clr-mfp-irq : Specifies the interrupt that needs to clear MFP edge | ||
21 | detection first. | ||
22 | |||
23 | Example: | ||
24 | intc: interrupt-controller@d4282000 { | ||
25 | compatible = "mrvl,mmp2-intc"; | ||
26 | interrupt-controller; | ||
27 | #interrupt-cells = <1>; | ||
28 | reg = <0xd4282000 0x1000>; | ||
29 | mrvl,intc-nr-irqs = <64>; | ||
30 | }; | ||
31 | |||
32 | intcmux4@d4282150 { | ||
33 | compatible = "mrvl,mmp2-mux-intc"; | ||
34 | interrupts = <4>; | ||
35 | interrupt-controller; | ||
36 | #interrupt-cells = <1>; | ||
37 | reg = <0x150 0x4>, <0x168 0x4>; | ||
38 | reg-names = "mux status", "mux mask"; | ||
39 | mrvl,intc-nr-irqs = <2>; | ||
40 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/mrvl.txt b/Documentation/devicetree/bindings/arm/mrvl/mrvl.txt index d8de933e9d81..117d741a2e4f 100644 --- a/Documentation/devicetree/bindings/arm/mrvl.txt +++ b/Documentation/devicetree/bindings/arm/mrvl/mrvl.txt | |||
@@ -4,3 +4,11 @@ Marvell Platforms Device Tree Bindings | |||
4 | PXA168 Aspenite Board | 4 | PXA168 Aspenite Board |
5 | Required root node properties: | 5 | Required root node properties: |
6 | - compatible = "mrvl,pxa168-aspenite", "mrvl,pxa168"; | 6 | - compatible = "mrvl,pxa168-aspenite", "mrvl,pxa168"; |
7 | |||
8 | PXA910 DKB Board | ||
9 | Required root node properties: | ||
10 | - compatible = "mrvl,pxa910-dkb"; | ||
11 | |||
12 | MMP2 Brownstone Board | ||
13 | Required root node properties: | ||
14 | - compatible = "mrvl,mmp2-brownstone"; | ||
diff --git a/Documentation/devicetree/bindings/arm/mrvl/timer.txt b/Documentation/devicetree/bindings/arm/mrvl/timer.txt new file mode 100644 index 000000000000..9a6e251462e7 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/mrvl/timer.txt | |||
@@ -0,0 +1,13 @@ | |||
1 | * Marvell MMP Timer controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "mrvl,mmp-timer". | ||
5 | - reg : Address and length of the register set of timer controller. | ||
6 | - interrupts : Should be the interrupt number. | ||
7 | |||
8 | Example: | ||
9 | timer0: timer@d4014000 { | ||
10 | compatible = "mrvl,mmp-timer"; | ||
11 | reg = <0xd4014000 0x100>; | ||
12 | interrupts = <13>; | ||
13 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/samsung/interrupt-combiner.txt b/Documentation/devicetree/bindings/arm/samsung/interrupt-combiner.txt new file mode 100644 index 000000000000..f2f2171e530e --- /dev/null +++ b/Documentation/devicetree/bindings/arm/samsung/interrupt-combiner.txt | |||
@@ -0,0 +1,52 @@ | |||
1 | * Samsung Exynos Interrupt Combiner Controller | ||
2 | |||
3 | Samsung's Exynos4 architecture includes a interrupt combiner controller which | ||
4 | can combine interrupt sources as a group and provide a single interrupt request | ||
5 | for the group. The interrupt request from each group are connected to a parent | ||
6 | interrupt controller, such as GIC in case of Exynos4210. | ||
7 | |||
8 | The interrupt combiner controller consists of multiple combiners. Upto eight | ||
9 | interrupt sources can be connected to a combiner. The combiner outputs one | ||
10 | combined interrupt for its eight interrupt sources. The combined interrupt | ||
11 | is usually connected to a parent interrupt controller. | ||
12 | |||
13 | A single node in the device tree is used to describe the interrupt combiner | ||
14 | controller module (which includes multiple combiners). A combiner in the | ||
15 | interrupt controller module shares config/control registers with other | ||
16 | combiners. For example, a 32-bit interrupt enable/disable config register | ||
17 | can accommodate upto 4 interrupt combiners (with each combiner supporting | ||
18 | upto 8 interrupt sources). | ||
19 | |||
20 | Required properties: | ||
21 | - compatible: should be "samsung,exynos4210-combiner". | ||
22 | - interrupt-controller: Identifies the node as an interrupt controller. | ||
23 | - #interrupt-cells: should be <2>. The meaning of the cells are | ||
24 | * First Cell: Combiner Group Number. | ||
25 | * Second Cell: Interrupt number within the group. | ||
26 | - reg: Base address and size of interrupt combiner registers. | ||
27 | - interrupts: The list of interrupts generated by the combiners which are then | ||
28 | connected to a parent interrupt controller. The format of the interrupt | ||
29 | specifier depends in the interrupt parent controller. | ||
30 | |||
31 | Optional properties: | ||
32 | - samsung,combiner-nr: The number of interrupt combiners supported. If this | ||
33 | property is not specified, the default number of combiners is assumed | ||
34 | to be 16. | ||
35 | - interrupt-parent: pHandle of the parent interrupt controller, if not | ||
36 | inherited from the parent node. | ||
37 | |||
38 | |||
39 | Example: | ||
40 | |||
41 | The following is a an example from the Exynos4210 SoC dtsi file. | ||
42 | |||
43 | combiner:interrupt-controller@10440000 { | ||
44 | compatible = "samsung,exynos4210-combiner"; | ||
45 | interrupt-controller; | ||
46 | #interrupt-cells = <2>; | ||
47 | reg = <0x10440000 0x1000>; | ||
48 | interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>, | ||
49 | <0 4 0>, <0 5 0>, <0 6 0>, <0 7 0>, | ||
50 | <0 8 0>, <0 9 0>, <0 10 0>, <0 11 0>, | ||
51 | <0 12 0>, <0 13 0>, <0 14 0>, <0 15 0>; | ||
52 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/spear-timer.txt b/Documentation/devicetree/bindings/arm/spear-timer.txt new file mode 100644 index 000000000000..c0017221cf55 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/spear-timer.txt | |||
@@ -0,0 +1,18 @@ | |||
1 | * SPEAr ARM Timer | ||
2 | |||
3 | ** Timer node required properties: | ||
4 | |||
5 | - compatible : Should be: | ||
6 | "st,spear-timer" | ||
7 | - reg: Address range of the timer registers | ||
8 | - interrupt-parent: Should be the phandle for the interrupt controller | ||
9 | that services interrupts for this device | ||
10 | - interrupt: Should contain the timer interrupt number | ||
11 | |||
12 | Example: | ||
13 | |||
14 | timer@f0000000 { | ||
15 | compatible = "st,spear-timer"; | ||
16 | reg = <0xf0000000 0x400>; | ||
17 | interrupts = <2>; | ||
18 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/spear.txt b/Documentation/devicetree/bindings/arm/spear.txt index f8e54f092328..0d42949df6c2 100644 --- a/Documentation/devicetree/bindings/arm/spear.txt +++ b/Documentation/devicetree/bindings/arm/spear.txt | |||
@@ -2,7 +2,25 @@ ST SPEAr Platforms Device Tree Bindings | |||
2 | --------------------------------------- | 2 | --------------------------------------- |
3 | 3 | ||
4 | Boards with the ST SPEAr600 SoC shall have the following properties: | 4 | Boards with the ST SPEAr600 SoC shall have the following properties: |
5 | Required root node property: | ||
6 | compatible = "st,spear600"; | ||
5 | 7 | ||
8 | Boards with the ST SPEAr300 SoC shall have the following properties: | ||
6 | Required root node property: | 9 | Required root node property: |
10 | compatible = "st,spear300"; | ||
7 | 11 | ||
8 | compatible = "st,spear600"; | 12 | Boards with the ST SPEAr310 SoC shall have the following properties: |
13 | Required root node property: | ||
14 | compatible = "st,spear310"; | ||
15 | |||
16 | Boards with the ST SPEAr320 SoC shall have the following properties: | ||
17 | Required root node property: | ||
18 | compatible = "st,spear320"; | ||
19 | |||
20 | Boards with the ST SPEAr1310 SoC shall have the following properties: | ||
21 | Required root node property: | ||
22 | compatible = "st,spear1310"; | ||
23 | |||
24 | Boards with the ST SPEAr1340 SoC shall have the following properties: | ||
25 | Required root node property: | ||
26 | compatible = "st,spear1340"; | ||
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt new file mode 100644 index 000000000000..234406d41c12 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt | |||
@@ -0,0 +1,11 @@ | |||
1 | NVIDIA Tegra AHB | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "nvidia,tegra20-ahb" or "nvidia,tegra30-ahb" | ||
5 | - reg : Should contain 1 register ranges(address and length) | ||
6 | |||
7 | Example: | ||
8 | ahb: ahb@6000c004 { | ||
9 | compatible = "nvidia,tegra20-ahb"; | ||
10 | reg = <0x6000c004 0x10c>; /* AHB Arbitration + Gizmo Controller */ | ||
11 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-mc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-mc.txt new file mode 100644 index 000000000000..c25a0a55151d --- /dev/null +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-mc.txt | |||
@@ -0,0 +1,16 @@ | |||
1 | NVIDIA Tegra20 MC(Memory Controller) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "nvidia,tegra20-mc" | ||
5 | - reg : Should contain 2 register ranges(address and length); see the | ||
6 | example below. Note that the MC registers are interleaved with the | ||
7 | GART registers, and hence must be represented as multiple ranges. | ||
8 | - interrupts : Should contain MC General interrupt. | ||
9 | |||
10 | Example: | ||
11 | mc { | ||
12 | compatible = "nvidia,tegra20-mc"; | ||
13 | reg = <0x7000f000 0x024 | ||
14 | 0x7000f03c 0x3c4>; | ||
15 | interrupts = <0 77 0x04>; | ||
16 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-mc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-mc.txt new file mode 100644 index 000000000000..e47e73f612f4 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-mc.txt | |||
@@ -0,0 +1,18 @@ | |||
1 | NVIDIA Tegra30 MC(Memory Controller) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "nvidia,tegra30-mc" | ||
5 | - reg : Should contain 4 register ranges(address and length); see the | ||
6 | example below. Note that the MC registers are interleaved with the | ||
7 | SMMU registers, and hence must be represented as multiple ranges. | ||
8 | - interrupts : Should contain MC General interrupt. | ||
9 | |||
10 | Example: | ||
11 | mc { | ||
12 | compatible = "nvidia,tegra30-mc"; | ||
13 | reg = <0x7000f000 0x010 | ||
14 | 0x7000f03c 0x1b4 | ||
15 | 0x7000f200 0x028 | ||
16 | 0x7000f284 0x17c>; | ||
17 | interrupts = <0 77 0x04>; | ||
18 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt b/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt new file mode 100644 index 000000000000..ded0398d3bdc --- /dev/null +++ b/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | * Freescale MXS DMA | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx" | ||
5 | - reg : Should contain registers location and length | ||
6 | |||
7 | Supported chips: | ||
8 | imx23, imx28. | ||
9 | |||
10 | Examples: | ||
11 | dma-apbh@80004000 { | ||
12 | compatible = "fsl,imx28-dma-apbh"; | ||
13 | reg = <0x80004000 2000>; | ||
14 | }; | ||
15 | |||
16 | dma-apbx@80024000 { | ||
17 | compatible = "fsl,imx28-dma-apbx"; | ||
18 | reg = <0x80024000 2000>; | ||
19 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/snps-dma.txt b/Documentation/devicetree/bindings/dma/snps-dma.txt new file mode 100644 index 000000000000..c0d85dbcada5 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/snps-dma.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | * Synopsys Designware DMA Controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "snps,dma-spear1340" | ||
5 | - reg: Address range of the DMAC registers | ||
6 | - interrupt-parent: Should be the phandle for the interrupt controller | ||
7 | that services interrupts for this device | ||
8 | - interrupt: Should contain the DMAC interrupt number | ||
9 | |||
10 | Example: | ||
11 | |||
12 | dma@fc000000 { | ||
13 | compatible = "snps,dma-spear1340"; | ||
14 | reg = <0xfc000000 0x1000>; | ||
15 | interrupt-parent = <&vic1>; | ||
16 | interrupts = <12>; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-mm-lantiq.txt b/Documentation/devicetree/bindings/gpio/gpio-mm-lantiq.txt new file mode 100644 index 000000000000..f93d51478d5a --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-mm-lantiq.txt | |||
@@ -0,0 +1,38 @@ | |||
1 | Lantiq SoC External Bus memory mapped GPIO controller | ||
2 | |||
3 | By attaching hardware latches to the EBU it is possible to create output | ||
4 | only gpios. This driver configures a special memory address, which when | ||
5 | written to outputs 16 bit to the latches. | ||
6 | |||
7 | The node describing the memory mapped GPIOs needs to be a child of the node | ||
8 | describing the "lantiq,localbus". | ||
9 | |||
10 | Required properties: | ||
11 | - compatible : Should be "lantiq,gpio-mm-lantiq" | ||
12 | - reg : Address and length of the register set for the device | ||
13 | - #gpio-cells : Should be two. The first cell is the pin number and | ||
14 | the second cell is used to specify optional parameters (currently | ||
15 | unused). | ||
16 | - gpio-controller : Marks the device node as a gpio controller. | ||
17 | |||
18 | Optional properties: | ||
19 | - lantiq,shadow : The default value that we shall assume as already set on the | ||
20 | shift register cascade. | ||
21 | |||
22 | Example: | ||
23 | |||
24 | localbus@0 { | ||
25 | #address-cells = <2>; | ||
26 | #size-cells = <1>; | ||
27 | ranges = <0 0 0x0 0x3ffffff /* addrsel0 */ | ||
28 | 1 0 0x4000000 0x4000010>; /* addsel1 */ | ||
29 | compatible = "lantiq,localbus", "simple-bus"; | ||
30 | |||
31 | gpio_mm0: gpio@4000000 { | ||
32 | compatible = "lantiq,gpio-mm"; | ||
33 | reg = <1 0x0 0x10>; | ||
34 | gpio-controller; | ||
35 | #gpio-cells = <2>; | ||
36 | lantiq,shadow = <0x77f> | ||
37 | }; | ||
38 | } | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-mxs.txt b/Documentation/devicetree/bindings/gpio/gpio-mxs.txt new file mode 100644 index 000000000000..0c35673f7a3e --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-mxs.txt | |||
@@ -0,0 +1,87 @@ | |||
1 | * Freescale MXS GPIO controller | ||
2 | |||
3 | The Freescale MXS GPIO controller is part of MXS PIN controller. The | ||
4 | GPIOs are organized in port/bank. Each port consists of 32 GPIOs. | ||
5 | |||
6 | As the GPIO controller is embedded in the PIN controller and all the | ||
7 | GPIO ports share the same IO space with PIN controller, the GPIO node | ||
8 | will be represented as sub-nodes of MXS pinctrl node. | ||
9 | |||
10 | Required properties for GPIO node: | ||
11 | - compatible : Should be "fsl,<soc>-gpio". The supported SoCs include | ||
12 | imx23 and imx28. | ||
13 | - interrupts : Should be the port interrupt shared by all 32 pins. | ||
14 | - gpio-controller : Marks the device node as a gpio controller. | ||
15 | - #gpio-cells : Should be two. The first cell is the pin number and | ||
16 | the second cell is used to specify optional parameters (currently | ||
17 | unused). | ||
18 | - interrupt-controller: Marks the device node as an interrupt controller. | ||
19 | - #interrupt-cells : Should be 2. The first cell is the GPIO number. | ||
20 | The second cell bits[3:0] is used to specify trigger type and level flags: | ||
21 | 1 = low-to-high edge triggered. | ||
22 | 2 = high-to-low edge triggered. | ||
23 | 4 = active high level-sensitive. | ||
24 | 8 = active low level-sensitive. | ||
25 | |||
26 | Note: Each GPIO port should have an alias correctly numbered in "aliases" | ||
27 | node. | ||
28 | |||
29 | Examples: | ||
30 | |||
31 | aliases { | ||
32 | gpio0 = &gpio0; | ||
33 | gpio1 = &gpio1; | ||
34 | gpio2 = &gpio2; | ||
35 | gpio3 = &gpio3; | ||
36 | gpio4 = &gpio4; | ||
37 | }; | ||
38 | |||
39 | pinctrl@80018000 { | ||
40 | compatible = "fsl,imx28-pinctrl", "simple-bus"; | ||
41 | reg = <0x80018000 2000>; | ||
42 | |||
43 | gpio0: gpio@0 { | ||
44 | compatible = "fsl,imx28-gpio"; | ||
45 | interrupts = <127>; | ||
46 | gpio-controller; | ||
47 | #gpio-cells = <2>; | ||
48 | interrupt-controller; | ||
49 | #interrupt-cells = <2>; | ||
50 | }; | ||
51 | |||
52 | gpio1: gpio@1 { | ||
53 | compatible = "fsl,imx28-gpio"; | ||
54 | interrupts = <126>; | ||
55 | gpio-controller; | ||
56 | #gpio-cells = <2>; | ||
57 | interrupt-controller; | ||
58 | #interrupt-cells = <2>; | ||
59 | }; | ||
60 | |||
61 | gpio2: gpio@2 { | ||
62 | compatible = "fsl,imx28-gpio"; | ||
63 | interrupts = <125>; | ||
64 | gpio-controller; | ||
65 | #gpio-cells = <2>; | ||
66 | interrupt-controller; | ||
67 | #interrupt-cells = <2>; | ||
68 | }; | ||
69 | |||
70 | gpio3: gpio@3 { | ||
71 | compatible = "fsl,imx28-gpio"; | ||
72 | interrupts = <124>; | ||
73 | gpio-controller; | ||
74 | #gpio-cells = <2>; | ||
75 | interrupt-controller; | ||
76 | #interrupt-cells = <2>; | ||
77 | }; | ||
78 | |||
79 | gpio4: gpio@4 { | ||
80 | compatible = "fsl,imx28-gpio"; | ||
81 | interrupts = <123>; | ||
82 | gpio-controller; | ||
83 | #gpio-cells = <2>; | ||
84 | interrupt-controller; | ||
85 | #interrupt-cells = <2>; | ||
86 | }; | ||
87 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-nmk.txt b/Documentation/devicetree/bindings/gpio/gpio-nmk.txt new file mode 100644 index 000000000000..ee87467ad8d6 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-nmk.txt | |||
@@ -0,0 +1,31 @@ | |||
1 | Nomadik GPIO controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "st,nomadik-gpio". | ||
5 | - reg : Physical base address and length of the controller's registers. | ||
6 | - interrupts : The interrupt outputs from the controller. | ||
7 | - #gpio-cells : Should be two: | ||
8 | The first cell is the pin number. | ||
9 | The second cell is used to specify optional parameters: | ||
10 | - bits[3:0] trigger type and level flags: | ||
11 | 1 = low-to-high edge triggered. | ||
12 | 2 = high-to-low edge triggered. | ||
13 | 4 = active high level-sensitive. | ||
14 | 8 = active low level-sensitive. | ||
15 | - gpio-controller : Marks the device node as a GPIO controller. | ||
16 | - interrupt-controller : Marks the device node as an interrupt controller. | ||
17 | - gpio-bank : Specifies which bank a controller owns. | ||
18 | - st,supports-sleepmode : Specifies whether controller can sleep or not | ||
19 | |||
20 | Example: | ||
21 | |||
22 | gpio1: gpio@8012e080 { | ||
23 | compatible = "st,nomadik-gpio"; | ||
24 | reg = <0x8012e080 0x80>; | ||
25 | interrupts = <0 120 0x4>; | ||
26 | #gpio-cells = <2>; | ||
27 | gpio-controller; | ||
28 | interrupt-controller; | ||
29 | supports-sleepmode; | ||
30 | gpio-bank = <1>; | ||
31 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-stp-xway.txt b/Documentation/devicetree/bindings/gpio/gpio-stp-xway.txt new file mode 100644 index 000000000000..854de130a971 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-stp-xway.txt | |||
@@ -0,0 +1,42 @@ | |||
1 | Lantiq SoC Serial To Parallel (STP) GPIO controller | ||
2 | |||
3 | The Serial To Parallel (STP) is found on MIPS based Lantiq socs. It is a | ||
4 | peripheral controller used to drive external shift register cascades. At most | ||
5 | 3 groups of 8 bits can be driven. The hardware is able to allow the DSL modem | ||
6 | to drive the 2 LSBs of the cascade automatically. | ||
7 | |||
8 | |||
9 | Required properties: | ||
10 | - compatible : Should be "lantiq,gpio-stp-xway" | ||
11 | - reg : Address and length of the register set for the device | ||
12 | - #gpio-cells : Should be two. The first cell is the pin number and | ||
13 | the second cell is used to specify optional parameters (currently | ||
14 | unused). | ||
15 | - gpio-controller : Marks the device node as a gpio controller. | ||
16 | |||
17 | Optional properties: | ||
18 | - lantiq,shadow : The default value that we shall assume as already set on the | ||
19 | shift register cascade. | ||
20 | - lantiq,groups : Set the 3 bit mask to select which of the 3 groups are enabled | ||
21 | in the shift register cascade. | ||
22 | - lantiq,dsl : The dsl core can control the 2 LSBs of the gpio cascade. This 2 bit | ||
23 | property can enable this feature. | ||
24 | - lantiq,phy1 : The gphy1 core can control 3 bits of the gpio cascade. | ||
25 | - lantiq,phy2 : The gphy2 core can control 3 bits of the gpio cascade. | ||
26 | - lantiq,rising : use rising instead of falling edge for the shift register | ||
27 | |||
28 | Example: | ||
29 | |||
30 | gpio1: stp@E100BB0 { | ||
31 | compatible = "lantiq,gpio-stp-xway"; | ||
32 | reg = <0xE100BB0 0x40>; | ||
33 | #gpio-cells = <2>; | ||
34 | gpio-controller; | ||
35 | |||
36 | lantiq,shadow = <0xffff>; | ||
37 | lantiq,groups = <0x7>; | ||
38 | lantiq,dsl = <0x3>; | ||
39 | lantiq,phy1 = <0x7>; | ||
40 | lantiq,phy2 = <0x7>; | ||
41 | /* lantiq,rising; */ | ||
42 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio_lpc32xx.txt b/Documentation/devicetree/bindings/gpio/gpio_lpc32xx.txt new file mode 100644 index 000000000000..49819367a011 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio_lpc32xx.txt | |||
@@ -0,0 +1,43 @@ | |||
1 | NXP LPC32xx SoC GPIO controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: must be "nxp,lpc3220-gpio" | ||
5 | - reg: Physical base address and length of the controller's registers. | ||
6 | - gpio-controller: Marks the device node as a GPIO controller. | ||
7 | - #gpio-cells: Should be 3: | ||
8 | 1) bank: | ||
9 | 0: GPIO P0 | ||
10 | 1: GPIO P1 | ||
11 | 2: GPIO P2 | ||
12 | 3: GPIO P3 | ||
13 | 4: GPI P3 | ||
14 | 5: GPO P3 | ||
15 | 2) pin number | ||
16 | 3) optional parameters: | ||
17 | - bit 0 specifies polarity (0 for normal, 1 for inverted) | ||
18 | - reg: Index of the GPIO group | ||
19 | |||
20 | Example: | ||
21 | |||
22 | gpio: gpio@40028000 { | ||
23 | compatible = "nxp,lpc3220-gpio"; | ||
24 | reg = <0x40028000 0x1000>; | ||
25 | gpio-controller; | ||
26 | #gpio-cells = <3>; /* bank, pin, flags */ | ||
27 | }; | ||
28 | |||
29 | leds { | ||
30 | compatible = "gpio-leds"; | ||
31 | |||
32 | led0 { | ||
33 | gpios = <&gpio 5 1 1>; /* GPO_P3 1, active low */ | ||
34 | linux,default-trigger = "heartbeat"; | ||
35 | default-state = "off"; | ||
36 | }; | ||
37 | |||
38 | led1 { | ||
39 | gpios = <&gpio 5 14 1>; /* GPO_P3 14, active low */ | ||
40 | linux,default-trigger = "timer"; | ||
41 | default-state = "off"; | ||
42 | }; | ||
43 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt index 1e34cfe5ebea..05428f39d9ac 100644 --- a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt +++ b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt | |||
@@ -3,19 +3,25 @@ | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : Should be "mrvl,pxa-gpio" or "mrvl,mmp-gpio" | 4 | - compatible : Should be "mrvl,pxa-gpio" or "mrvl,mmp-gpio" |
5 | - reg : Address and length of the register set for the device | 5 | - reg : Address and length of the register set for the device |
6 | - interrupts : Should be the port interrupt shared by all gpio pins, if | 6 | - interrupts : Should be the port interrupt shared by all gpio pins. |
7 | - interrupt-name : Should be the name of irq resource. | 7 | There're three gpio interrupts in arch-pxa, and they're gpio0, |
8 | one number. | 8 | gpio1 and gpio_mux. There're only one gpio interrupt in arch-mmp, |
9 | gpio_mux. | ||
10 | - interrupt-name : Should be the name of irq resource. Each interrupt | ||
11 | binds its interrupt-name. | ||
12 | - interrupt-controller : Identifies the node as an interrupt controller. | ||
13 | - #interrupt-cells: Specifies the number of cells needed to encode an | ||
14 | interrupt source. | ||
9 | - gpio-controller : Marks the device node as a gpio controller. | 15 | - gpio-controller : Marks the device node as a gpio controller. |
10 | - #gpio-cells : Should be one. It is the pin number. | 16 | - #gpio-cells : Should be one. It is the pin number. |
11 | 17 | ||
12 | Example: | 18 | Example: |
13 | 19 | ||
14 | gpio: gpio@d4019000 { | 20 | gpio: gpio@d4019000 { |
15 | compatible = "mrvl,mmp-gpio", "mrvl,pxa-gpio"; | 21 | compatible = "mrvl,mmp-gpio"; |
16 | reg = <0xd4019000 0x1000>; | 22 | reg = <0xd4019000 0x1000>; |
17 | interrupts = <49>, <17>, <18>; | 23 | interrupts = <49>; |
18 | interrupt-name = "gpio_mux", "gpio0", "gpio1"; | 24 | interrupt-name = "gpio_mux"; |
19 | gpio-controller; | 25 | gpio-controller; |
20 | #gpio-cells = <1>; | 26 | #gpio-cells = <1>; |
21 | interrupt-controller; | 27 | interrupt-controller; |
diff --git a/Documentation/devicetree/bindings/i2c/i2c-mxs.txt b/Documentation/devicetree/bindings/i2c/i2c-mxs.txt new file mode 100644 index 000000000000..1bfc02de1b0c --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-mxs.txt | |||
@@ -0,0 +1,16 @@ | |||
1 | * Freescale MXS Inter IC (I2C) Controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "fsl,<chip>-i2c" | ||
5 | - reg: Should contain registers location and length | ||
6 | - interrupts: Should contain ERROR and DMA interrupts | ||
7 | |||
8 | Examples: | ||
9 | |||
10 | i2c0: i2c@80058000 { | ||
11 | #address-cells = <1>; | ||
12 | #size-cells = <0>; | ||
13 | compatible = "fsl,imx28-i2c"; | ||
14 | reg = <0x80058000 2000>; | ||
15 | interrupts = <111 68>; | ||
16 | }; | ||
diff --git a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt index 071eb3caae91..b891ee218354 100644 --- a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt +++ b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt | |||
@@ -3,34 +3,31 @@ | |||
3 | Required properties : | 3 | Required properties : |
4 | 4 | ||
5 | - reg : Offset and length of the register set for the device | 5 | - reg : Offset and length of the register set for the device |
6 | - compatible : should be "mrvl,mmp-twsi" where CHIP is the name of a | 6 | - compatible : should be "mrvl,mmp-twsi" where mmp is the name of a |
7 | compatible processor, e.g. pxa168, pxa910, mmp2, mmp3. | 7 | compatible processor, e.g. pxa168, pxa910, mmp2, mmp3. |
8 | For the pxa2xx/pxa3xx, an additional node "mrvl,pxa-i2c" is required | 8 | For the pxa2xx/pxa3xx, an additional node "mrvl,pxa-i2c" is required |
9 | as shown in the example below. | 9 | as shown in the example below. |
10 | 10 | ||
11 | Recommended properties : | 11 | Recommended properties : |
12 | 12 | ||
13 | - interrupts : <a b> where a is the interrupt number and b is a | 13 | - interrupts : the interrupt number |
14 | field that represents an encoding of the sense and level | ||
15 | information for the interrupt. This should be encoded based on | ||
16 | the information in section 2) depending on the type of interrupt | ||
17 | controller you have. | ||
18 | - interrupt-parent : the phandle for the interrupt controller that | 14 | - interrupt-parent : the phandle for the interrupt controller that |
19 | services interrupts for this device. | 15 | services interrupts for this device. If the parent is the default |
16 | interrupt controller in device tree, it could be ignored. | ||
20 | - mrvl,i2c-polling : Disable interrupt of i2c controller. Polling | 17 | - mrvl,i2c-polling : Disable interrupt of i2c controller. Polling |
21 | status register of i2c controller instead. | 18 | status register of i2c controller instead. |
22 | - mrvl,i2c-fast-mode : Enable fast mode of i2c controller. | 19 | - mrvl,i2c-fast-mode : Enable fast mode of i2c controller. |
23 | 20 | ||
24 | Examples: | 21 | Examples: |
25 | twsi1: i2c@d4011000 { | 22 | twsi1: i2c@d4011000 { |
26 | compatible = "mrvl,mmp-twsi", "mrvl,pxa-i2c"; | 23 | compatible = "mrvl,mmp-twsi"; |
27 | reg = <0xd4011000 0x1000>; | 24 | reg = <0xd4011000 0x1000>; |
28 | interrupts = <7>; | 25 | interrupts = <7>; |
29 | mrvl,i2c-fast-mode; | 26 | mrvl,i2c-fast-mode; |
30 | }; | 27 | }; |
31 | 28 | ||
32 | twsi2: i2c@d4025000 { | 29 | twsi2: i2c@d4025000 { |
33 | compatible = "mrvl,mmp-twsi", "mrvl,pxa-i2c"; | 30 | compatible = "mrvl,mmp-twsi"; |
34 | reg = <0xd4025000 0x1000>; | 31 | reg = <0xd4025000 0x1000>; |
35 | interrupts = <58>; | 32 | interrupts = <58>; |
36 | }; | 33 | }; |
diff --git a/Documentation/devicetree/bindings/i2c/mux.txt b/Documentation/devicetree/bindings/i2c/mux.txt new file mode 100644 index 000000000000..af84cce5cd7b --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/mux.txt | |||
@@ -0,0 +1,60 @@ | |||
1 | Common i2c bus multiplexer/switch properties. | ||
2 | |||
3 | An i2c bus multiplexer/switch will have several child busses that are | ||
4 | numbered uniquely in a device dependent manner. The nodes for an i2c bus | ||
5 | multiplexer/switch will have one child node for each child | ||
6 | bus. | ||
7 | |||
8 | Required properties: | ||
9 | - #address-cells = <1>; | ||
10 | - #size-cells = <0>; | ||
11 | |||
12 | Required properties for child nodes: | ||
13 | - #address-cells = <1>; | ||
14 | - #size-cells = <0>; | ||
15 | - reg : The sub-bus number. | ||
16 | |||
17 | Optional properties for child nodes: | ||
18 | - Other properties specific to the multiplexer/switch hardware. | ||
19 | - Child nodes conforming to i2c bus binding | ||
20 | |||
21 | |||
22 | Example : | ||
23 | |||
24 | /* | ||
25 | An NXP pca9548 8 channel I2C multiplexer at address 0x70 | ||
26 | with two NXP pca8574 GPIO expanders attached, one each to | ||
27 | ports 3 and 4. | ||
28 | */ | ||
29 | |||
30 | mux@70 { | ||
31 | compatible = "nxp,pca9548"; | ||
32 | reg = <0x70>; | ||
33 | #address-cells = <1>; | ||
34 | #size-cells = <0>; | ||
35 | |||
36 | i2c@3 { | ||
37 | #address-cells = <1>; | ||
38 | #size-cells = <0>; | ||
39 | reg = <3>; | ||
40 | |||
41 | gpio1: gpio@38 { | ||
42 | compatible = "nxp,pca8574"; | ||
43 | reg = <0x38>; | ||
44 | #gpio-cells = <2>; | ||
45 | gpio-controller; | ||
46 | }; | ||
47 | }; | ||
48 | i2c@4 { | ||
49 | #address-cells = <1>; | ||
50 | #size-cells = <0>; | ||
51 | reg = <4>; | ||
52 | |||
53 | gpio2: gpio@38 { | ||
54 | compatible = "nxp,pca8574"; | ||
55 | reg = <0x38>; | ||
56 | #gpio-cells = <2>; | ||
57 | gpio-controller; | ||
58 | }; | ||
59 | }; | ||
60 | }; | ||
diff --git a/Documentation/devicetree/bindings/i2c/pnx.txt b/Documentation/devicetree/bindings/i2c/pnx.txt new file mode 100644 index 000000000000..fe98ada33ee4 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/pnx.txt | |||
@@ -0,0 +1,36 @@ | |||
1 | * NXP PNX I2C Controller | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - reg: Offset and length of the register set for the device | ||
6 | - compatible: should be "nxp,pnx-i2c" | ||
7 | - interrupts: configure one interrupt line | ||
8 | - #address-cells: always 1 (for i2c addresses) | ||
9 | - #size-cells: always 0 | ||
10 | - interrupt-parent: the phandle for the interrupt controller that | ||
11 | services interrupts for this device. | ||
12 | |||
13 | Optional properties: | ||
14 | |||
15 | - clock-frequency: desired I2C bus clock frequency in Hz, Default: 100000 Hz | ||
16 | |||
17 | Examples: | ||
18 | |||
19 | i2c1: i2c@400a0000 { | ||
20 | compatible = "nxp,pnx-i2c"; | ||
21 | reg = <0x400a0000 0x100>; | ||
22 | interrupt-parent = <&mic>; | ||
23 | interrupts = <51 0>; | ||
24 | #address-cells = <1>; | ||
25 | #size-cells = <0>; | ||
26 | }; | ||
27 | |||
28 | i2c2: i2c@400a8000 { | ||
29 | compatible = "nxp,pnx-i2c"; | ||
30 | reg = <0x400a8000 0x100>; | ||
31 | interrupt-parent = <&mic>; | ||
32 | interrupts = <50 0>; | ||
33 | #address-cells = <1>; | ||
34 | #size-cells = <0>; | ||
35 | clock-frequency = <100000>; | ||
36 | }; | ||
diff --git a/Documentation/devicetree/bindings/i2c/samsung-i2c.txt b/Documentation/devicetree/bindings/i2c/samsung-i2c.txt index 38832c712919..b6cb5a12c672 100644 --- a/Documentation/devicetree/bindings/i2c/samsung-i2c.txt +++ b/Documentation/devicetree/bindings/i2c/samsung-i2c.txt | |||
@@ -6,14 +6,18 @@ Required properties: | |||
6 | - compatible: value should be either of the following. | 6 | - compatible: value should be either of the following. |
7 | (a) "samsung, s3c2410-i2c", for i2c compatible with s3c2410 i2c. | 7 | (a) "samsung, s3c2410-i2c", for i2c compatible with s3c2410 i2c. |
8 | (b) "samsung, s3c2440-i2c", for i2c compatible with s3c2440 i2c. | 8 | (b) "samsung, s3c2440-i2c", for i2c compatible with s3c2440 i2c. |
9 | (c) "samsung, s3c2440-hdmiphy-i2c", for s3c2440-like i2c used | ||
10 | inside HDMIPHY block found on several samsung SoCs | ||
9 | - reg: physical base address of the controller and length of memory mapped | 11 | - reg: physical base address of the controller and length of memory mapped |
10 | region. | 12 | region. |
11 | - interrupts: interrupt number to the cpu. | 13 | - interrupts: interrupt number to the cpu. |
12 | - samsung,i2c-sda-delay: Delay (in ns) applied to data line (SDA) edges. | 14 | - samsung,i2c-sda-delay: Delay (in ns) applied to data line (SDA) edges. |
13 | - gpios: The order of the gpios should be the following: <SDA, SCL>. | ||
14 | The gpio specifier depends on the gpio controller. | ||
15 | 15 | ||
16 | Optional properties: | 16 | Optional properties: |
17 | - gpios: The order of the gpios should be the following: <SDA, SCL>. | ||
18 | The gpio specifier depends on the gpio controller. Required in all | ||
19 | cases except for "samsung,s3c2440-hdmiphy-i2c" whose input/output | ||
20 | lines are permanently wired to the respective client | ||
17 | - samsung,i2c-slave-addr: Slave address in multi-master enviroment. If not | 21 | - samsung,i2c-slave-addr: Slave address in multi-master enviroment. If not |
18 | specified, default value is 0. | 22 | specified, default value is 0. |
19 | - samsung,i2c-max-bus-freq: Desired frequency in Hz of the bus. If not | 23 | - samsung,i2c-max-bus-freq: Desired frequency in Hz of the bus. If not |
diff --git a/Documentation/devicetree/bindings/i2c/xiic.txt b/Documentation/devicetree/bindings/i2c/xiic.txt new file mode 100644 index 000000000000..ceabbe91ae44 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/xiic.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | Xilinx IIC controller: | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Must be "xlnx,xps-iic-2.00.a" | ||
5 | - reg : IIC register location and length | ||
6 | - interrupts : IIC controller unterrupt | ||
7 | - #address-cells = <1> | ||
8 | - #size-cells = <0> | ||
9 | |||
10 | Optional properties: | ||
11 | - Child nodes conforming to i2c bus binding | ||
12 | |||
13 | Example: | ||
14 | |||
15 | axi_iic_0: i2c@40800000 { | ||
16 | compatible = "xlnx,xps-iic-2.00.a"; | ||
17 | interrupts = < 1 2 >; | ||
18 | reg = < 0x40800000 0x10000 >; | ||
19 | |||
20 | #size-cells = <0>; | ||
21 | #address-cells = <1>; | ||
22 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/spear-keyboard.txt b/Documentation/devicetree/bindings/input/spear-keyboard.txt new file mode 100644 index 000000000000..4a846d26da23 --- /dev/null +++ b/Documentation/devicetree/bindings/input/spear-keyboard.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | * SPEAr keyboard controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "st,spear300-kbd" | ||
5 | |||
6 | Optional properties, in addition to those specified by the shared | ||
7 | matrix-keyboard bindings: | ||
8 | - autorepeat: bool: enables key autorepeat | ||
9 | - st,mode: keyboard mode: 0 - 9x9, 1 - 6x6, 2 - 2x2 | ||
10 | |||
11 | Example: | ||
12 | |||
13 | kbd@fc400000 { | ||
14 | compatible = "st,spear300-kbd"; | ||
15 | reg = <0xfc400000 0x100>; | ||
16 | linux,keymap = < 0x00030012 | ||
17 | 0x0102003a >; | ||
18 | autorepeat; | ||
19 | st,mode = <0>; | ||
20 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/touchscreen/lpc32xx-tsc.txt b/Documentation/devicetree/bindings/input/touchscreen/lpc32xx-tsc.txt new file mode 100644 index 000000000000..41cbf4b7a670 --- /dev/null +++ b/Documentation/devicetree/bindings/input/touchscreen/lpc32xx-tsc.txt | |||
@@ -0,0 +1,16 @@ | |||
1 | * NXP LPC32xx SoC Touchscreen Controller (TSC) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: must be "nxp,lpc3220-tsc" | ||
5 | - reg: physical base address of the controller and length of memory mapped | ||
6 | region. | ||
7 | - interrupts: The TSC/ADC interrupt | ||
8 | |||
9 | Example: | ||
10 | |||
11 | tsc@40048000 { | ||
12 | compatible = "nxp,lpc3220-tsc"; | ||
13 | reg = <0x40048000 0x1000>; | ||
14 | interrupt-parent = <&mic>; | ||
15 | interrupts = <39 0>; | ||
16 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/twl6040-vibra.txt b/Documentation/devicetree/bindings/input/twl6040-vibra.txt new file mode 100644 index 000000000000..5b1918b818fb --- /dev/null +++ b/Documentation/devicetree/bindings/input/twl6040-vibra.txt | |||
@@ -0,0 +1,37 @@ | |||
1 | Vibra driver for the twl6040 family | ||
2 | |||
3 | The vibra driver is a child of the twl6040 MFD dirver. | ||
4 | Documentation/devicetree/bindings/mfd/twl6040.txt | ||
5 | |||
6 | Required properties: | ||
7 | - compatible : Must be "ti,twl6040-vibra"; | ||
8 | - interrupts: 4, Vibra overcurrent interrupt | ||
9 | - vddvibl-supply: Regulator supplying the left vibra motor | ||
10 | - vddvibr-supply: Regulator supplying the right vibra motor | ||
11 | - vibldrv_res: Board specific left driver resistance | ||
12 | - vibrdrv_res: Board specific right driver resistance | ||
13 | - viblmotor_res: Board specific left motor resistance | ||
14 | - vibrmotor_res: Board specific right motor resistance | ||
15 | |||
16 | Optional properties: | ||
17 | - vddvibl_uV: If the vddvibl default voltage need to be changed | ||
18 | - vddvibr_uV: If the vddvibr default voltage need to be changed | ||
19 | |||
20 | Example: | ||
21 | /* | ||
22 | * 8-channel high quality low-power audio codec | ||
23 | * http://www.ti.com/lit/ds/symlink/twl6040.pdf | ||
24 | */ | ||
25 | twl6040: twl6040@4b { | ||
26 | ... | ||
27 | twl6040_vibra: twl6040@1 { | ||
28 | compatible = "ti,twl6040-vibra"; | ||
29 | interrupts = <4>; | ||
30 | vddvibl-supply = <&vbat>; | ||
31 | vddvibr-supply = <&vbat>; | ||
32 | vibldrv_res = <8>; | ||
33 | vibrdrv_res = <3>; | ||
34 | viblmotor_res = <10>; | ||
35 | vibrmotor_res = <10>; | ||
36 | }; | ||
37 | }; | ||
diff --git a/Documentation/devicetree/bindings/iommu/nvidia,tegra20-gart.txt b/Documentation/devicetree/bindings/iommu/nvidia,tegra20-gart.txt new file mode 100644 index 000000000000..099d9362ebc1 --- /dev/null +++ b/Documentation/devicetree/bindings/iommu/nvidia,tegra20-gart.txt | |||
@@ -0,0 +1,14 @@ | |||
1 | NVIDIA Tegra 20 GART | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "nvidia,tegra20-gart" | ||
5 | - reg: Two pairs of cells specifying the physical address and size of | ||
6 | the memory controller registers and the GART aperture respectively. | ||
7 | |||
8 | Example: | ||
9 | |||
10 | gart { | ||
11 | compatible = "nvidia,tegra20-gart"; | ||
12 | reg = <0x7000f024 0x00000018 /* controller registers */ | ||
13 | 0x58000000 0x02000000>; /* GART aperture */ | ||
14 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/da9052-i2c.txt b/Documentation/devicetree/bindings/mfd/da9052-i2c.txt new file mode 100644 index 000000000000..1857f4a6b9a9 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/da9052-i2c.txt | |||
@@ -0,0 +1,60 @@ | |||
1 | * Dialog DA9052/53 Power Management Integrated Circuit (PMIC) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "dlg,da9052", "dlg,da9053-aa", | ||
5 | "dlg,da9053-ab", or "dlg,da9053-bb" | ||
6 | |||
7 | Sub-nodes: | ||
8 | - regulators : Contain the regulator nodes. The DA9052/53 regulators are | ||
9 | bound using their names as listed below: | ||
10 | |||
11 | buck0 : regulator BUCK0 | ||
12 | buck1 : regulator BUCK1 | ||
13 | buck2 : regulator BUCK2 | ||
14 | buck3 : regulator BUCK3 | ||
15 | ldo4 : regulator LDO4 | ||
16 | ldo5 : regulator LDO5 | ||
17 | ldo6 : regulator LDO6 | ||
18 | ldo7 : regulator LDO7 | ||
19 | ldo8 : regulator LDO8 | ||
20 | ldo9 : regulator LDO9 | ||
21 | ldo10 : regulator LDO10 | ||
22 | ldo11 : regulator LDO11 | ||
23 | ldo12 : regulator LDO12 | ||
24 | ldo13 : regulator LDO13 | ||
25 | |||
26 | The bindings details of individual regulator device can be found in: | ||
27 | Documentation/devicetree/bindings/regulator/regulator.txt | ||
28 | |||
29 | Examples: | ||
30 | |||
31 | i2c@63fc8000 { /* I2C1 */ | ||
32 | status = "okay"; | ||
33 | |||
34 | pmic: dialog@48 { | ||
35 | compatible = "dlg,da9053-aa"; | ||
36 | reg = <0x48>; | ||
37 | |||
38 | regulators { | ||
39 | buck0 { | ||
40 | regulator-min-microvolt = <500000>; | ||
41 | regulator-max-microvolt = <2075000>; | ||
42 | }; | ||
43 | |||
44 | buck1 { | ||
45 | regulator-min-microvolt = <500000>; | ||
46 | regulator-max-microvolt = <2075000>; | ||
47 | }; | ||
48 | |||
49 | buck2 { | ||
50 | regulator-min-microvolt = <925000>; | ||
51 | regulator-max-microvolt = <2500000>; | ||
52 | }; | ||
53 | |||
54 | buck3 { | ||
55 | regulator-min-microvolt = <925000>; | ||
56 | regulator-max-microvolt = <2500000>; | ||
57 | }; | ||
58 | }; | ||
59 | }; | ||
60 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/tps65910.txt b/Documentation/devicetree/bindings/mfd/tps65910.txt new file mode 100644 index 000000000000..645f5eaadb3f --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/tps65910.txt | |||
@@ -0,0 +1,133 @@ | |||
1 | TPS65910 Power Management Integrated Circuit | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "ti,tps65910" or "ti,tps65911" | ||
5 | - reg: I2C slave address | ||
6 | - interrupts: the interrupt outputs of the controller | ||
7 | - #gpio-cells: number of cells to describe a GPIO, this should be 2. | ||
8 | The first cell is the GPIO number. | ||
9 | The second cell is used to specify additional options <unused>. | ||
10 | - gpio-controller: mark the device as a GPIO controller | ||
11 | - #interrupt-cells: the number of cells to describe an IRQ, this should be 2. | ||
12 | The first cell is the IRQ number. | ||
13 | The second cell is the flags, encoded as the trigger masks from | ||
14 | Documentation/devicetree/bindings/interrupts.txt | ||
15 | - regulators: This is the list of child nodes that specify the regulator | ||
16 | initialization data for defined regulators. Not all regulators for the given | ||
17 | device need to be present. The definition for each of these nodes is defined | ||
18 | using the standard binding for regulators found at | ||
19 | Documentation/devicetree/bindings/regulator/regulator.txt. | ||
20 | |||
21 | The valid names for regulators are: | ||
22 | tps65910: vrtc, vio, vdd1, vdd2, vdd3, vdig1, vdig2, vpll, vdac, vaux1, | ||
23 | vaux2, vaux33, vmmc | ||
24 | tps65911: vrtc, vio, vdd1, vdd3, vddctrl, ldo1, ldo2, ldo3, ldo4, ldo5, | ||
25 | ldo6, ldo7, ldo8 | ||
26 | |||
27 | Optional properties: | ||
28 | - ti,vmbch-threshold: (tps65911) main battery charged threshold | ||
29 | comparator. (see VMBCH_VSEL in TPS65910 datasheet) | ||
30 | - ti,vmbch2-threshold: (tps65911) main battery discharged threshold | ||
31 | comparator. (see VMBCH_VSEL in TPS65910 datasheet) | ||
32 | - ti,en-gpio-sleep: enable sleep control for gpios | ||
33 | There should be 9 entries here, one for each gpio. | ||
34 | |||
35 | Regulator Optional properties: | ||
36 | - ti,regulator-ext-sleep-control: enable external sleep | ||
37 | control through external inputs [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)] | ||
38 | If this property is not defined, it defaults to 0 (not enabled). | ||
39 | |||
40 | Example: | ||
41 | |||
42 | pmu: tps65910@d2 { | ||
43 | compatible = "ti,tps65910"; | ||
44 | reg = <0xd2>; | ||
45 | interrupt-parent = <&intc>; | ||
46 | interrupts = < 0 118 0x04 >; | ||
47 | |||
48 | #gpio-cells = <2>; | ||
49 | gpio-controller; | ||
50 | |||
51 | #interrupt-cells = <2>; | ||
52 | interrupt-controller; | ||
53 | |||
54 | ti,vmbch-threshold = 0; | ||
55 | ti,vmbch2-threshold = 0; | ||
56 | |||
57 | ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>; | ||
58 | |||
59 | regulators { | ||
60 | vdd1_reg: vdd1 { | ||
61 | regulator-min-microvolt = < 600000>; | ||
62 | regulator-max-microvolt = <1500000>; | ||
63 | regulator-always-on; | ||
64 | regulator-boot-on; | ||
65 | ti,regulator-ext-sleep-control = <0>; | ||
66 | }; | ||
67 | vdd2_reg: vdd2 { | ||
68 | regulator-min-microvolt = < 600000>; | ||
69 | regulator-max-microvolt = <1500000>; | ||
70 | regulator-always-on; | ||
71 | regulator-boot-on; | ||
72 | ti,regulator-ext-sleep-control = <4>; | ||
73 | }; | ||
74 | vddctrl_reg: vddctrl { | ||
75 | regulator-min-microvolt = < 600000>; | ||
76 | regulator-max-microvolt = <1400000>; | ||
77 | regulator-always-on; | ||
78 | regulator-boot-on; | ||
79 | ti,regulator-ext-sleep-control = <0>; | ||
80 | }; | ||
81 | vio_reg: vio { | ||
82 | regulator-min-microvolt = <1500000>; | ||
83 | regulator-max-microvolt = <1800000>; | ||
84 | regulator-always-on; | ||
85 | regulator-boot-on; | ||
86 | ti,regulator-ext-sleep-control = <1>; | ||
87 | }; | ||
88 | ldo1_reg: ldo1 { | ||
89 | regulator-min-microvolt = <1000000>; | ||
90 | regulator-max-microvolt = <3300000>; | ||
91 | ti,regulator-ext-sleep-control = <0>; | ||
92 | }; | ||
93 | ldo2_reg: ldo2 { | ||
94 | regulator-min-microvolt = <1050000>; | ||
95 | regulator-max-microvolt = <1050000>; | ||
96 | ti,regulator-ext-sleep-control = <0>; | ||
97 | }; | ||
98 | ldo3_reg: ldo3 { | ||
99 | regulator-min-microvolt = <1000000>; | ||
100 | regulator-max-microvolt = <3300000>; | ||
101 | ti,regulator-ext-sleep-control = <0>; | ||
102 | }; | ||
103 | ldo4_reg: ldo4 { | ||
104 | regulator-min-microvolt = <1000000>; | ||
105 | regulator-max-microvolt = <3300000>; | ||
106 | regulator-always-on; | ||
107 | ti,regulator-ext-sleep-control = <0>; | ||
108 | }; | ||
109 | ldo5_reg: ldo5 { | ||
110 | regulator-min-microvolt = <1000000>; | ||
111 | regulator-max-microvolt = <3300000>; | ||
112 | ti,regulator-ext-sleep-control = <0>; | ||
113 | }; | ||
114 | ldo6_reg: ldo6 { | ||
115 | regulator-min-microvolt = <1200000>; | ||
116 | regulator-max-microvolt = <1200000>; | ||
117 | ti,regulator-ext-sleep-control = <0>; | ||
118 | }; | ||
119 | ldo7_reg: ldo7 { | ||
120 | regulator-min-microvolt = <1200000>; | ||
121 | regulator-max-microvolt = <1200000>; | ||
122 | regulator-always-on; | ||
123 | regulator-boot-on; | ||
124 | ti,regulator-ext-sleep-control = <1>; | ||
125 | }; | ||
126 | ldo8_reg: ldo8 { | ||
127 | regulator-min-microvolt = <1000000>; | ||
128 | regulator-max-microvolt = <3300000>; | ||
129 | regulator-always-on; | ||
130 | ti,regulator-ext-sleep-control = <1>; | ||
131 | }; | ||
132 | }; | ||
133 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/twl6040.txt b/Documentation/devicetree/bindings/mfd/twl6040.txt new file mode 100644 index 000000000000..bc67c6f424aa --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/twl6040.txt | |||
@@ -0,0 +1,62 @@ | |||
1 | Texas Instruments TWL6040 family | ||
2 | |||
3 | The TWL6040s are 8-channel high quality low-power audio codecs providing audio | ||
4 | and vibra functionality on OMAP4+ platforms. | ||
5 | They are connected ot the host processor via i2c for commands, McPDM for audio | ||
6 | data and commands. | ||
7 | |||
8 | Required properties: | ||
9 | - compatible : Must be "ti,twl6040"; | ||
10 | - reg: must be 0x4b for i2c address | ||
11 | - interrupts: twl6040 has one interrupt line connecteded to the main SoC | ||
12 | - interrupt-parent: The parent interrupt controller | ||
13 | - twl6040,audpwron-gpio: Power on GPIO line for the twl6040 | ||
14 | |||
15 | - vio-supply: Regulator for the twl6040 VIO supply | ||
16 | - v2v1-supply: Regulator for the twl6040 V2V1 supply | ||
17 | |||
18 | Optional properties, nodes: | ||
19 | - enable-active-high: To power on the twl6040 during boot. | ||
20 | |||
21 | Vibra functionality | ||
22 | Required properties: | ||
23 | - vddvibl-supply: Regulator for the left vibra motor | ||
24 | - vddvibr-supply: Regulator for the right vibra motor | ||
25 | - vibra { }: Configuration section for vibra parameters containing the following | ||
26 | properties: | ||
27 | - ti,vibldrv-res: Resistance parameter for left driver | ||
28 | - ti,vibrdrv-res: Resistance parameter for right driver | ||
29 | - ti,viblmotor-res: Resistance parameter for left motor | ||
30 | - ti,viblmotor-res: Resistance parameter for right motor | ||
31 | |||
32 | Optional properties within vibra { } section: | ||
33 | - vddvibl_uV: If the vddvibl default voltage need to be changed | ||
34 | - vddvibr_uV: If the vddvibr default voltage need to be changed | ||
35 | |||
36 | Example: | ||
37 | &i2c1 { | ||
38 | twl6040: twl@4b { | ||
39 | compatible = "ti,twl6040"; | ||
40 | reg = <0x4b>; | ||
41 | |||
42 | interrupts = <0 119 4>; | ||
43 | interrupt-parent = <&gic>; | ||
44 | twl6040,audpwron-gpio = <&gpio4 31 0>; | ||
45 | |||
46 | vio-supply = <&v1v8>; | ||
47 | v2v1-supply = <&v2v1>; | ||
48 | enable-active-high; | ||
49 | |||
50 | /* regulators for vibra motor */ | ||
51 | vddvibl-supply = <&vbat>; | ||
52 | vddvibr-supply = <&vbat>; | ||
53 | |||
54 | vibra { | ||
55 | /* Vibra driver, motor resistance parameters */ | ||
56 | ti,vibldrv-res = <8>; | ||
57 | ti,vibrdrv-res = <3>; | ||
58 | ti,viblmotor-res = <10>; | ||
59 | ti,vibrmotor-res = <10>; | ||
60 | }; | ||
61 | }; | ||
62 | }; | ||
diff --git a/Documentation/devicetree/bindings/misc/bmp085.txt b/Documentation/devicetree/bindings/misc/bmp085.txt new file mode 100644 index 000000000000..91dfda2e4e11 --- /dev/null +++ b/Documentation/devicetree/bindings/misc/bmp085.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | BMP085/BMP18x digital pressure sensors | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: bosch,bmp085 | ||
5 | |||
6 | Optional properties: | ||
7 | - chip-id: configurable chip id for non-default chip revisions | ||
8 | - temp-measurement-period: temperature measurement period (milliseconds) | ||
9 | - default-oversampling: default oversampling value to be used at startup, | ||
10 | value range is 0-3 with rising sensitivity. | ||
11 | |||
12 | Example: | ||
13 | |||
14 | pressure@77 { | ||
15 | compatible = "bosch,bmp085"; | ||
16 | reg = <0x77>; | ||
17 | chip-id = <10>; | ||
18 | temp-measurement-period = <100>; | ||
19 | default-oversampling = <2>; | ||
20 | }; | ||
diff --git a/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt index 64bcb8be973c..0d93b4b0e0e3 100644 --- a/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt +++ b/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt | |||
@@ -11,9 +11,11 @@ Required properties: | |||
11 | - interrupt-parent : interrupt source phandle. | 11 | - interrupt-parent : interrupt source phandle. |
12 | - clock-frequency : specifies eSDHC base clock frequency. | 12 | - clock-frequency : specifies eSDHC base clock frequency. |
13 | - sdhci,wp-inverted : (optional) specifies that eSDHC controller | 13 | - sdhci,wp-inverted : (optional) specifies that eSDHC controller |
14 | reports inverted write-protect state; | 14 | reports inverted write-protect state; New devices should use |
15 | the generic "wp-inverted" property. | ||
15 | - sdhci,1-bit-only : (optional) specifies that a controller can | 16 | - sdhci,1-bit-only : (optional) specifies that a controller can |
16 | only handle 1-bit data transfers. | 17 | only handle 1-bit data transfers. New devices should use the |
18 | generic "bus-width = <1>" property. | ||
17 | - sdhci,auto-cmd12: (optional) specifies that a controller can | 19 | - sdhci,auto-cmd12: (optional) specifies that a controller can |
18 | only handle auto CMD12. | 20 | only handle auto CMD12. |
19 | 21 | ||
diff --git a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt index ab22fe6e73ab..c7e404b3ef05 100644 --- a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt +++ b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt | |||
@@ -9,7 +9,7 @@ Required properties: | |||
9 | - interrupts : Should contain eSDHC interrupt | 9 | - interrupts : Should contain eSDHC interrupt |
10 | 10 | ||
11 | Optional properties: | 11 | Optional properties: |
12 | - fsl,card-wired : Indicate the card is wired to host permanently | 12 | - non-removable : Indicate the card is wired to host permanently |
13 | - fsl,cd-internal : Indicate to use controller internal card detection | 13 | - fsl,cd-internal : Indicate to use controller internal card detection |
14 | - fsl,wp-internal : Indicate to use controller internal write protection | 14 | - fsl,wp-internal : Indicate to use controller internal write protection |
15 | - cd-gpios : Specify GPIOs for card detection | 15 | - cd-gpios : Specify GPIOs for card detection |
diff --git a/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt b/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt index 89a0084df2f7..d64aea5a4203 100644 --- a/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt +++ b/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt | |||
@@ -10,7 +10,8 @@ Required properties: | |||
10 | 10 | ||
11 | Optional properties: | 11 | Optional properties: |
12 | - gpios : may specify GPIOs in this order: Card-Detect GPIO, | 12 | - gpios : may specify GPIOs in this order: Card-Detect GPIO, |
13 | Write-Protect GPIO. | 13 | Write-Protect GPIO. Note that this does not follow the |
14 | binding from mmc.txt, for historic reasons. | ||
14 | - interrupts : the interrupt of a card detect interrupt. | 15 | - interrupts : the interrupt of a card detect interrupt. |
15 | - interrupt-parent : the phandle for the interrupt controller that | 16 | - interrupt-parent : the phandle for the interrupt controller that |
16 | services interrupts for this device. | 17 | services interrupts for this device. |
diff --git a/Documentation/devicetree/bindings/mmc/mmc.txt b/Documentation/devicetree/bindings/mmc/mmc.txt new file mode 100644 index 000000000000..6e70dcde0a71 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/mmc.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | These properties are common to multiple MMC host controllers. Any host | ||
2 | that requires the respective functionality should implement them using | ||
3 | these definitions. | ||
4 | |||
5 | Required properties: | ||
6 | - bus-width: Number of data lines, can be <1>, <4>, or <8> | ||
7 | |||
8 | Optional properties: | ||
9 | - cd-gpios : Specify GPIOs for card detection, see gpio binding | ||
10 | - wp-gpios : Specify GPIOs for write protection, see gpio binding | ||
11 | - cd-inverted: when present, polarity on the wp gpio line is inverted | ||
12 | - wp-inverted: when present, polarity on the wp gpio line is inverted | ||
13 | - non-removable: non-removable slot (like eMMC) | ||
14 | - max-frequency: maximum operating clock frequency | ||
15 | |||
16 | Example: | ||
17 | |||
18 | sdhci@ab000000 { | ||
19 | compatible = "sdhci"; | ||
20 | reg = <0xab000000 0x200>; | ||
21 | interrupts = <23>; | ||
22 | bus-width = <4>; | ||
23 | cd-gpios = <&gpio 69 0>; | ||
24 | cd-inverted; | ||
25 | wp-gpios = <&gpio 70 0>; | ||
26 | max-frequency = <50000000>; | ||
27 | } | ||
diff --git a/Documentation/devicetree/bindings/mmc/mmci.txt b/Documentation/devicetree/bindings/mmc/mmci.txt new file mode 100644 index 000000000000..14a81d526118 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/mmci.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | * ARM PrimeCell MultiMedia Card Interface (MMCI) PL180/1 | ||
2 | |||
3 | The ARM PrimeCell MMCI PL180 and PL181 provides and interface for | ||
4 | reading and writing to MultiMedia and SD cards alike. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible : contains "arm,pl18x", "arm,primecell". | ||
8 | - reg : contains pl18x registers and length. | ||
9 | - interrupts : contains the device IRQ(s). | ||
10 | - arm,primecell-periphid : contains the PrimeCell Peripheral ID. | ||
11 | |||
12 | Optional properties: | ||
13 | - wp-gpios : contains any write protect (ro) gpios | ||
14 | - cd-gpios : contains any card detection gpios | ||
15 | - cd-inverted : indicates whether the cd gpio is inverted | ||
16 | - max-frequency : contains the maximum operating frequency | ||
17 | - bus-width : number of data lines, can be <1>, <4>, or <8> | ||
18 | - mmc-cap-mmc-highspeed : indicates whether MMC is high speed capable | ||
19 | - mmc-cap-sd-highspeed : indicates whether SD is high speed capable | ||
diff --git a/Documentation/devicetree/bindings/mmc/mxs-mmc.txt b/Documentation/devicetree/bindings/mmc/mxs-mmc.txt new file mode 100644 index 000000000000..14d870a9e3db --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/mxs-mmc.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | * Freescale MXS MMC controller | ||
2 | |||
3 | The Freescale MXS Synchronous Serial Ports (SSP) can act as a MMC controller | ||
4 | to support MMC, SD, and SDIO types of memory cards. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: Should be "fsl,<chip>-mmc". The supported chips include | ||
8 | imx23 and imx28. | ||
9 | - reg: Should contain registers location and length | ||
10 | - interrupts: Should contain ERROR and DMA interrupts | ||
11 | - fsl,ssp-dma-channel: APBH DMA channel for the SSP | ||
12 | - bus-width: Number of data lines, can be <1>, <4>, or <8> | ||
13 | |||
14 | Optional properties: | ||
15 | - wp-gpios: Specify GPIOs for write protection | ||
16 | |||
17 | Examples: | ||
18 | |||
19 | ssp0: ssp@80010000 { | ||
20 | compatible = "fsl,imx28-mmc"; | ||
21 | reg = <0x80010000 2000>; | ||
22 | interrupts = <96 82>; | ||
23 | fsl,ssp-dma-channel = <0>; | ||
24 | bus-width = <8>; | ||
25 | }; | ||
diff --git a/Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt b/Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt index 7e51154679a6..f77c3031607f 100644 --- a/Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt +++ b/Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt | |||
@@ -7,12 +7,12 @@ Required properties: | |||
7 | - compatible : Should be "nvidia,<chip>-sdhci" | 7 | - compatible : Should be "nvidia,<chip>-sdhci" |
8 | - reg : Should contain SD/MMC registers location and length | 8 | - reg : Should contain SD/MMC registers location and length |
9 | - interrupts : Should contain SD/MMC interrupt | 9 | - interrupts : Should contain SD/MMC interrupt |
10 | - bus-width : Number of data lines, can be <1>, <4>, or <8> | ||
10 | 11 | ||
11 | Optional properties: | 12 | Optional properties: |
12 | - cd-gpios : Specify GPIOs for card detection | 13 | - cd-gpios : Specify GPIOs for card detection |
13 | - wp-gpios : Specify GPIOs for write protection | 14 | - wp-gpios : Specify GPIOs for write protection |
14 | - power-gpios : Specify GPIOs for power control | 15 | - power-gpios : Specify GPIOs for power control |
15 | - support-8bit : Boolean, indicates if 8-bit mode should be used. | ||
16 | 16 | ||
17 | Example: | 17 | Example: |
18 | 18 | ||
@@ -23,5 +23,5 @@ sdhci@c8000200 { | |||
23 | cd-gpios = <&gpio 69 0>; /* gpio PI5 */ | 23 | cd-gpios = <&gpio 69 0>; /* gpio PI5 */ |
24 | wp-gpios = <&gpio 57 0>; /* gpio PH1 */ | 24 | wp-gpios = <&gpio 57 0>; /* gpio PH1 */ |
25 | power-gpios = <&gpio 155 0>; /* gpio PT3 */ | 25 | power-gpios = <&gpio 155 0>; /* gpio PT3 */ |
26 | support-8bit; | 26 | bus-width = <8>; |
27 | }; | 27 | }; |
diff --git a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt index dbd4368ab8cc..8a53958c9a9f 100644 --- a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt +++ b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt | |||
@@ -15,7 +15,7 @@ Optional properties: | |||
15 | ti,dual-volt: boolean, supports dual voltage cards | 15 | ti,dual-volt: boolean, supports dual voltage cards |
16 | <supply-name>-supply: phandle to the regulator device tree node | 16 | <supply-name>-supply: phandle to the regulator device tree node |
17 | "supply-name" examples are "vmmc", "vmmc_aux" etc | 17 | "supply-name" examples are "vmmc", "vmmc_aux" etc |
18 | ti,bus-width: Number of data lines, default assumed is 1 if the property is missing. | 18 | bus-width: Number of data lines, default assumed is 1 if the property is missing. |
19 | cd-gpios: GPIOs for card detection | 19 | cd-gpios: GPIOs for card detection |
20 | wp-gpios: GPIOs for write protection | 20 | wp-gpios: GPIOs for write protection |
21 | ti,non-removable: non-removable slot (like eMMC) | 21 | ti,non-removable: non-removable slot (like eMMC) |
@@ -27,7 +27,7 @@ Example: | |||
27 | reg = <0x4809c000 0x400>; | 27 | reg = <0x4809c000 0x400>; |
28 | ti,hwmods = "mmc1"; | 28 | ti,hwmods = "mmc1"; |
29 | ti,dual-volt; | 29 | ti,dual-volt; |
30 | ti,bus-width = <4>; | 30 | bus-width = <4>; |
31 | vmmc-supply = <&vmmc>; /* phandle to regulator node */ | 31 | vmmc-supply = <&vmmc>; /* phandle to regulator node */ |
32 | ti,non-removable; | 32 | ti,non-removable; |
33 | }; | 33 | }; |
diff --git a/Documentation/devicetree/bindings/mtd/orion-nand.txt b/Documentation/devicetree/bindings/mtd/orion-nand.txt new file mode 100644 index 000000000000..b2356b7d2fa4 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/orion-nand.txt | |||
@@ -0,0 +1,50 @@ | |||
1 | NAND support for Marvell Orion SoC platforms | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "mrvl,orion-nand". | ||
5 | - reg : Base physical address of the NAND and length of memory mapped | ||
6 | region | ||
7 | |||
8 | Optional properties: | ||
9 | - cle : Address line number connected to CLE. Default is 0 | ||
10 | - ale : Address line number connected to ALE. Default is 1 | ||
11 | - bank-width : Width in bytes of the device. Default is 1 | ||
12 | - chip-delay : Chip dependent delay for transferring data from array to read | ||
13 | registers in usecs | ||
14 | |||
15 | The device tree may optionally contain sub-nodes describing partitions of the | ||
16 | address space. See partition.txt for more detail. | ||
17 | |||
18 | Example: | ||
19 | |||
20 | nand@f4000000 { | ||
21 | #address-cells = <1>; | ||
22 | #size-cells = <1>; | ||
23 | cle = <0>; | ||
24 | ale = <1>; | ||
25 | bank-width = <1>; | ||
26 | chip-delay = <25>; | ||
27 | compatible = "mrvl,orion-nand"; | ||
28 | reg = <0xf4000000 0x400>; | ||
29 | |||
30 | partition@0 { | ||
31 | label = "u-boot"; | ||
32 | reg = <0x0000000 0x100000>; | ||
33 | read-only; | ||
34 | }; | ||
35 | |||
36 | partition@100000 { | ||
37 | label = "uImage"; | ||
38 | reg = <0x0100000 0x200000>; | ||
39 | }; | ||
40 | |||
41 | partition@300000 { | ||
42 | label = "dtb"; | ||
43 | reg = <0x0300000 0x100000>; | ||
44 | }; | ||
45 | |||
46 | partition@400000 { | ||
47 | label = "root"; | ||
48 | reg = <0x0400000 0x7d00000>; | ||
49 | }; | ||
50 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/can/fsl-flexcan.txt b/Documentation/devicetree/bindings/net/can/fsl-flexcan.txt index 1ad80d5865a9..f31b686d4556 100644 --- a/Documentation/devicetree/bindings/net/can/fsl-flexcan.txt +++ b/Documentation/devicetree/bindings/net/can/fsl-flexcan.txt | |||
@@ -1,4 +1,4 @@ | |||
1 | Flexcan CAN contoller on Freescale's ARM and PowerPC system-on-a-chip (SOC). | 1 | Flexcan CAN controller on Freescale's ARM and PowerPC system-on-a-chip (SOC). |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | 4 | ||
diff --git a/Documentation/devicetree/bindings/net/fsl-fec.txt b/Documentation/devicetree/bindings/net/fsl-fec.txt index de439517dff0..7ab9e1a2d8be 100644 --- a/Documentation/devicetree/bindings/net/fsl-fec.txt +++ b/Documentation/devicetree/bindings/net/fsl-fec.txt | |||
@@ -14,7 +14,7 @@ Optional properties: | |||
14 | 14 | ||
15 | Example: | 15 | Example: |
16 | 16 | ||
17 | fec@83fec000 { | 17 | ethernet@83fec000 { |
18 | compatible = "fsl,imx51-fec", "fsl,imx27-fec"; | 18 | compatible = "fsl,imx51-fec", "fsl,imx27-fec"; |
19 | reg = <0x83fec000 0x4000>; | 19 | reg = <0x83fec000 0x4000>; |
20 | interrupts = <87>; | 20 | interrupts = <87>; |
diff --git a/Documentation/devicetree/bindings/net/lpc-eth.txt b/Documentation/devicetree/bindings/net/lpc-eth.txt new file mode 100644 index 000000000000..585021acd178 --- /dev/null +++ b/Documentation/devicetree/bindings/net/lpc-eth.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | * NXP LPC32xx SoC Ethernet Controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "nxp,lpc-eth" | ||
5 | - reg: Address and length of the register set for the device | ||
6 | - interrupts: Should contain ethernet controller interrupt | ||
7 | |||
8 | Optional properties: | ||
9 | - phy-mode: String, operation mode of the PHY interface. | ||
10 | Supported values are: "mii", "rmii" (default) | ||
11 | - use-iram: Use LPC32xx internal SRAM (IRAM) for DMA buffering | ||
12 | - local-mac-address : 6 bytes, mac address | ||
13 | |||
14 | Example: | ||
15 | |||
16 | mac: ethernet@31060000 { | ||
17 | compatible = "nxp,lpc-eth"; | ||
18 | reg = <0x31060000 0x1000>; | ||
19 | interrupt-parent = <&mic>; | ||
20 | interrupts = <29 0>; | ||
21 | |||
22 | phy-mode = "rmii"; | ||
23 | use-iram; | ||
24 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl_spear.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl_spear.txt new file mode 100644 index 000000000000..b4480d5c3aca --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl_spear.txt | |||
@@ -0,0 +1,155 @@ | |||
1 | ST Microelectronics, SPEAr pinmux controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "st,spear300-pinmux" | ||
5 | : "st,spear310-pinmux" | ||
6 | : "st,spear320-pinmux" | ||
7 | : "st,spear1310-pinmux" | ||
8 | : "st,spear1340-pinmux" | ||
9 | - reg : Address range of the pinctrl registers | ||
10 | - st,pinmux-mode: Mandatory for SPEAr300 and SPEAr320 and invalid for others. | ||
11 | - Its values for SPEAr300: | ||
12 | - NAND_MODE : <0> | ||
13 | - NOR_MODE : <1> | ||
14 | - PHOTO_FRAME_MODE : <2> | ||
15 | - LEND_IP_PHONE_MODE : <3> | ||
16 | - HEND_IP_PHONE_MODE : <4> | ||
17 | - LEND_WIFI_PHONE_MODE : <5> | ||
18 | - HEND_WIFI_PHONE_MODE : <6> | ||
19 | - ATA_PABX_WI2S_MODE : <7> | ||
20 | - ATA_PABX_I2S_MODE : <8> | ||
21 | - CAML_LCDW_MODE : <9> | ||
22 | - CAMU_LCD_MODE : <10> | ||
23 | - CAMU_WLCD_MODE : <11> | ||
24 | - CAML_LCD_MODE : <12> | ||
25 | - Its values for SPEAr320: | ||
26 | - AUTO_NET_SMII_MODE : <0> | ||
27 | - AUTO_NET_MII_MODE : <1> | ||
28 | - AUTO_EXP_MODE : <2> | ||
29 | - SMALL_PRINTERS_MODE : <3> | ||
30 | - EXTENDED_MODE : <4> | ||
31 | |||
32 | Please refer to pinctrl-bindings.txt in this directory for details of the common | ||
33 | pinctrl bindings used by client devices. | ||
34 | |||
35 | SPEAr's pinmux nodes act as a container for an abitrary number of subnodes. Each | ||
36 | of these subnodes represents muxing for a pin, a group, or a list of pins or | ||
37 | groups. | ||
38 | |||
39 | The name of each subnode is not important; all subnodes should be enumerated | ||
40 | and processed purely based on their content. | ||
41 | |||
42 | Required subnode-properties: | ||
43 | - st,pins : An array of strings. Each string contains the name of a pin or | ||
44 | group. | ||
45 | - st,function: A string containing the name of the function to mux to the pin or | ||
46 | group. See the SPEAr's TRM to determine which are valid for each pin or group. | ||
47 | |||
48 | Valid values for group and function names can be found from looking at the | ||
49 | group and function arrays in driver files: | ||
50 | drivers/pinctrl/spear/pinctrl-spear3*0.c | ||
51 | |||
52 | Valid values for group names are: | ||
53 | For All SPEAr3xx machines: | ||
54 | "firda_grp", "i2c0_grp", "ssp_cs_grp", "ssp0_grp", "mii0_grp", | ||
55 | "gpio0_pin0_grp", "gpio0_pin1_grp", "gpio0_pin2_grp", "gpio0_pin3_grp", | ||
56 | "gpio0_pin4_grp", "gpio0_pin5_grp", "uart0_ext_grp", "uart0_grp", | ||
57 | "timer_0_1_grp", timer_0_1_pins, "timer_2_3_grp" | ||
58 | |||
59 | For SPEAr300 machines: | ||
60 | "fsmc_2chips_grp", "fsmc_4chips_grp", "clcd_lcdmode_grp", | ||
61 | "clcd_pfmode_grp", "tdm_grp", "i2c_clk_grp_grp", "caml_grp", "camu_grp", | ||
62 | "dac_grp", "i2s_grp", "sdhci_4bit_grp", "sdhci_8bit_grp", | ||
63 | "gpio1_0_to_3_grp", "gpio1_4_to_7_grp" | ||
64 | |||
65 | For SPEAr310 machines: | ||
66 | "emi_cs_0_to_5_grp", "uart1_grp", "uart2_grp", "uart3_grp", "uart4_grp", | ||
67 | "uart5_grp", "fsmc_grp", "rs485_0_grp", "rs485_1_grp", "tdm_grp" | ||
68 | |||
69 | For SPEAr320 machines: | ||
70 | "clcd_grp", "emi_grp", "fsmc_8bit_grp", "fsmc_16bit_grp", "spp_grp", | ||
71 | "sdhci_led_grp", "sdhci_cd_12_grp", "sdhci_cd_51_grp", "i2s_grp", | ||
72 | "uart1_grp", "uart1_modem_2_to_7_grp", "uart1_modem_31_to_36_grp", | ||
73 | "uart1_modem_34_to_45_grp", "uart1_modem_80_to_85_grp", "uart2_grp", | ||
74 | "uart3_8_9_grp", "uart3_15_16_grp", "uart3_41_42_grp", | ||
75 | "uart3_52_53_grp", "uart3_73_74_grp", "uart3_94_95_grp", | ||
76 | "uart3_98_99_grp", "uart4_6_7_grp", "uart4_13_14_grp", | ||
77 | "uart4_39_40_grp", "uart4_71_72_grp", "uart4_92_93_grp", | ||
78 | "uart4_100_101_grp", "uart5_4_5_grp", "uart5_37_38_grp", | ||
79 | "uart5_69_70_grp", "uart5_90_91_grp", "uart6_2_3_grp", | ||
80 | "uart6_88_89_grp", "rs485_grp", "touchscreen_grp", "can0_grp", | ||
81 | "can1_grp", "pwm0_1_pin_8_9_grp", "pwm0_1_pin_14_15_grp", | ||
82 | "pwm0_1_pin_30_31_grp", "pwm0_1_pin_37_38_grp", "pwm0_1_pin_42_43_grp", | ||
83 | "pwm0_1_pin_59_60_grp", "pwm0_1_pin_88_89_grp", "pwm2_pin_7_grp", | ||
84 | "pwm2_pin_13_grp", "pwm2_pin_29_grp", "pwm2_pin_34_grp", | ||
85 | "pwm2_pin_41_grp", "pwm2_pin_58_grp", "pwm2_pin_87_grp", | ||
86 | "pwm3_pin_6_grp", "pwm3_pin_12_grp", "pwm3_pin_28_grp", | ||
87 | "pwm3_pin_40_grp", "pwm3_pin_57_grp", "pwm3_pin_86_grp", | ||
88 | "ssp1_17_20_grp", "ssp1_36_39_grp", "ssp1_48_51_grp", "ssp1_65_68_grp", | ||
89 | "ssp1_94_97_grp", "ssp2_13_16_grp", "ssp2_32_35_grp", "ssp2_44_47_grp", | ||
90 | "ssp2_61_64_grp", "ssp2_90_93_grp", "mii2_grp", "smii0_1_grp", | ||
91 | "rmii0_1_grp", "i2c1_8_9_grp", "i2c1_98_99_grp", "i2c2_0_1_grp", | ||
92 | "i2c2_2_3_grp", "i2c2_19_20_grp", "i2c2_75_76_grp", "i2c2_96_97_grp" | ||
93 | |||
94 | For SPEAr1310 machines: | ||
95 | "i2c0_grp", "ssp0_grp", "ssp0_cs0_grp", "ssp0_cs1_2_grp", "i2s0_grp", | ||
96 | "i2s1_grp", "clcd_grp", "clcd_high_res_grp", "arm_gpio_grp", | ||
97 | "smi_2_chips_grp", "smi_4_chips_grp", "gmii_grp", "rgmii_grp", | ||
98 | "smii_0_1_2_grp", "ras_mii_txclk_grp", "nand_8bit_grp", | ||
99 | "nand_16bit_grp", "nand_4_chips_grp", "keyboard_6x6_grp", | ||
100 | "keyboard_rowcol6_8_grp", "uart0_grp", "uart0_modem_grp", | ||
101 | "gpt0_tmr0_grp", "gpt0_tmr1_grp", "gpt1_tmr0_grp", "gpt1_tmr1_grp", | ||
102 | "sdhci_grp", "cf_grp", "xd_grp", "touch_xy_grp", | ||
103 | "uart1_disable_i2c_grp", "uart1_disable_sd_grp", "uart2_3_grp", | ||
104 | "uart4_grp", "uart5_grp", "rs485_0_1_tdm_0_1_grp", "i2c_1_2_grp", | ||
105 | "i2c3_dis_smi_clcd_grp", "i2c3_dis_sd_i2s0_grp", "i2c_4_5_dis_smi_grp", | ||
106 | "i2c4_dis_sd_grp", "i2c5_dis_sd_grp", "i2c_6_7_dis_kbd_grp", | ||
107 | "i2c6_dis_sd_grp", "i2c7_dis_sd_grp", "can0_dis_nor_grp", | ||
108 | "can0_dis_sd_grp", "can1_dis_sd_grp", "can1_dis_kbd_grp", "pcie0_grp", | ||
109 | "pcie1_grp", "pcie2_grp", "sata0_grp", "sata1_grp", "sata2_grp", | ||
110 | "ssp1_dis_kbd_grp", "ssp1_dis_sd_grp", "gpt64_grp" | ||
111 | |||
112 | For SPEAr1340 machines: | ||
113 | "pads_as_gpio_grp", "fsmc_8bit_grp", "fsmc_16bit_grp", "fsmc_pnor_grp", | ||
114 | "keyboard_row_col_grp", "keyboard_col5_grp", "spdif_in_grp", | ||
115 | "spdif_out_grp", "gpt_0_1_grp", "pwm0_grp", "pwm1_grp", "pwm2_grp", | ||
116 | "pwm3_grp", "vip_mux_grp", "vip_mux_cam0_grp", "vip_mux_cam1_grp", | ||
117 | "vip_mux_cam2_grp", "vip_mux_cam3_grp", "cam0_grp", "cam1_grp", | ||
118 | "cam2_grp", "cam3_grp", "smi_grp", "ssp0_grp", "ssp0_cs1_grp", | ||
119 | "ssp0_cs2_grp", "ssp0_cs3_grp", "uart0_grp", "uart0_enh_grp", | ||
120 | "uart1_grp", "i2s_in_grp", "i2s_out_grp", "gmii_grp", "rgmii_grp", | ||
121 | "rmii_grp", "sgmii_grp", "i2c0_grp", "i2c1_grp", "cec0_grp", "cec1_grp", | ||
122 | "sdhci_grp", "cf_grp", "xd_grp", "clcd_grp", "arm_trace_grp", | ||
123 | "miphy_dbg_grp", "pcie_grp", "sata_grp" | ||
124 | |||
125 | Valid values for function names are: | ||
126 | For All SPEAr3xx machines: | ||
127 | "firda", "i2c0", "ssp_cs", "ssp0", "mii0", "gpio0", "uart0_ext", | ||
128 | "uart0", "timer_0_1", "timer_2_3" | ||
129 | |||
130 | For SPEAr300 machines: | ||
131 | "fsmc", "clcd", "tdm", "i2c1", "cam", "dac", "i2s", "sdhci", "gpio1" | ||
132 | |||
133 | For SPEAr310 machines: | ||
134 | "emi", "uart1", "uart2", "uart3", "uart4", "uart5", "fsmc", "rs485_0", | ||
135 | "rs485_1", "tdm" | ||
136 | |||
137 | For SPEAr320 machines: | ||
138 | "clcd", "emi", "fsmc", "spp", "sdhci", "i2s", "uart1", "uart1_modem", | ||
139 | "uart2", "uart3", "uart4", "uart5", "uart6", "rs485", "touchscreen", | ||
140 | "can0", "can1", "pwm0_1", "pwm2", "pwm3", "ssp1", "ssp2", "mii2", | ||
141 | "mii0_1", "i2c1", "i2c2" | ||
142 | |||
143 | |||
144 | For SPEAr1310 machines: | ||
145 | "i2c0", "ssp0", "i2s0", "i2s1", "clcd", "arm_gpio", "smi", "gmii", | ||
146 | "rgmii", "smii_0_1_2", "ras_mii_txclk", "nand", "keyboard", "uart0", | ||
147 | "gpt0", "gpt1", "sdhci", "cf", "xd", "touchscreen", "uart1", "uart2_3", | ||
148 | "uart4", "uart5", "rs485_0_1_tdm_0_1", "i2c_1_2", "i2c3_i2s1", | ||
149 | "i2c_4_5", "i2c_6_7", "can0", "can1", "pci", "sata", "ssp1", "gpt64" | ||
150 | |||
151 | For SPEAr1340 machines: | ||
152 | "pads_as_gpio", "fsmc", "keyboard", "spdif_in", "spdif_out", "gpt_0_1", | ||
153 | "pwm", "vip", "cam0", "cam1", "cam2", "cam3", "smi", "ssp0", "uart0", | ||
154 | "uart1", "i2s", "gmac", "i2c0", "i2c1", "cec0", "cec1", "sdhci", "cf", | ||
155 | "xd", "clcd", "arm_trace", "miphy_dbg", "pcie", "sata" | ||
diff --git a/Documentation/devicetree/bindings/rtc/lpc32xx-rtc.txt b/Documentation/devicetree/bindings/rtc/lpc32xx-rtc.txt new file mode 100644 index 000000000000..a87a1e9bc060 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/lpc32xx-rtc.txt | |||
@@ -0,0 +1,15 @@ | |||
1 | * NXP LPC32xx SoC Real Time Clock controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: must be "nxp,lpc3220-rtc" | ||
5 | - reg: physical base address of the controller and length of memory mapped | ||
6 | region. | ||
7 | - interrupts: The RTC interrupt | ||
8 | |||
9 | Example: | ||
10 | |||
11 | rtc@40024000 { | ||
12 | compatible = "nxp,lpc3220-rtc"; | ||
13 | reg = <0x40024000 0x1000>; | ||
14 | interrupts = <52 0>; | ||
15 | }; | ||
diff --git a/Documentation/devicetree/bindings/rtc/spear-rtc.txt b/Documentation/devicetree/bindings/rtc/spear-rtc.txt new file mode 100644 index 000000000000..ca67ac62108e --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/spear-rtc.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | * SPEAr RTC | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "st,spear600-rtc" | ||
5 | - reg : Address range of the rtc registers | ||
6 | - interrupt-parent: Should be the phandle for the interrupt controller | ||
7 | that services interrupts for this device | ||
8 | - interrupt: Should contain the rtc interrupt number | ||
9 | |||
10 | Example: | ||
11 | |||
12 | rtc@fc000000 { | ||
13 | compatible = "st,spear600-rtc"; | ||
14 | reg = <0xfc000000 0x1000>; | ||
15 | interrupt-parent = <&vic1>; | ||
16 | interrupts = <12>; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt b/Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt new file mode 100644 index 000000000000..e4acdd891e49 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt | |||
@@ -0,0 +1,49 @@ | |||
1 | Freescale i.MX audio complex with SGTL5000 codec | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "fsl,imx-audio-sgtl5000" | ||
5 | - model : The user-visible name of this sound complex | ||
6 | - ssi-controller : The phandle of the i.MX SSI controller | ||
7 | - audio-codec : The phandle of the SGTL5000 audio codec | ||
8 | - audio-routing : A list of the connections between audio components. | ||
9 | Each entry is a pair of strings, the first being the connection's sink, | ||
10 | the second being the connection's source. Valid names could be power | ||
11 | supplies, SGTL5000 pins, and the jacks on the board: | ||
12 | |||
13 | Power supplies: | ||
14 | * Mic Bias | ||
15 | |||
16 | SGTL5000 pins: | ||
17 | * MIC_IN | ||
18 | * LINE_IN | ||
19 | * HP_OUT | ||
20 | * LINE_OUT | ||
21 | |||
22 | Board connectors: | ||
23 | * Mic Jack | ||
24 | * Line In Jack | ||
25 | * Headphone Jack | ||
26 | * Line Out Jack | ||
27 | * Ext Spk | ||
28 | |||
29 | - mux-int-port : The internal port of the i.MX audio muxer (AUDMUX) | ||
30 | - mux-ext-port : The external port of the i.MX audio muxer | ||
31 | |||
32 | Note: The AUDMUX port numbering should start at 1, which is consistent with | ||
33 | hardware manual. | ||
34 | |||
35 | Example: | ||
36 | |||
37 | sound { | ||
38 | compatible = "fsl,imx51-babbage-sgtl5000", | ||
39 | "fsl,imx-audio-sgtl5000"; | ||
40 | model = "imx51-babbage-sgtl5000"; | ||
41 | ssi-controller = <&ssi1>; | ||
42 | audio-codec = <&sgtl5000>; | ||
43 | audio-routing = | ||
44 | "MIC_IN", "Mic Jack", | ||
45 | "Mic Jack", "Mic Bias", | ||
46 | "Headphone Jack", "HP_OUT"; | ||
47 | mux-int-port = <1>; | ||
48 | mux-ext-port = <3>; | ||
49 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/mxs-audio-sgtl5000.txt b/Documentation/devicetree/bindings/sound/mxs-audio-sgtl5000.txt new file mode 100644 index 000000000000..601c518eddaa --- /dev/null +++ b/Documentation/devicetree/bindings/sound/mxs-audio-sgtl5000.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | * Freescale MXS audio complex with SGTL5000 codec | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "fsl,mxs-audio-sgtl5000" | ||
5 | - model: The user-visible name of this sound complex | ||
6 | - saif-controllers: The phandle list of the MXS SAIF controller | ||
7 | - audio-codec: The phandle of the SGTL5000 audio codec | ||
8 | |||
9 | Example: | ||
10 | |||
11 | sound { | ||
12 | compatible = "fsl,imx28-evk-sgtl5000", | ||
13 | "fsl,mxs-audio-sgtl5000"; | ||
14 | model = "imx28-evk-sgtl5000"; | ||
15 | saif-controllers = <&saif0 &saif1>; | ||
16 | audio-codec = <&sgtl5000>; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/mxs-saif.txt b/Documentation/devicetree/bindings/sound/mxs-saif.txt new file mode 100644 index 000000000000..c37ba6143d9b --- /dev/null +++ b/Documentation/devicetree/bindings/sound/mxs-saif.txt | |||
@@ -0,0 +1,36 @@ | |||
1 | * Freescale MXS Serial Audio Interface (SAIF) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "fsl,<chip>-saif" | ||
5 | - reg: Should contain registers location and length | ||
6 | - interrupts: Should contain ERROR and DMA interrupts | ||
7 | - fsl,saif-dma-channel: APBX DMA channel for the SAIF | ||
8 | |||
9 | Optional properties: | ||
10 | - fsl,saif-master: phandle to the master SAIF. It's only required for | ||
11 | the slave SAIF. | ||
12 | |||
13 | Note: Each SAIF controller should have an alias correctly numbered | ||
14 | in "aliases" node. | ||
15 | |||
16 | Example: | ||
17 | |||
18 | aliases { | ||
19 | saif0 = &saif0; | ||
20 | saif1 = &saif1; | ||
21 | }; | ||
22 | |||
23 | saif0: saif@80042000 { | ||
24 | compatible = "fsl,imx28-saif"; | ||
25 | reg = <0x80042000 2000>; | ||
26 | interrupts = <59 80>; | ||
27 | fsl,saif-dma-channel = <4>; | ||
28 | }; | ||
29 | |||
30 | saif1: saif@80046000 { | ||
31 | compatible = "fsl,imx28-saif"; | ||
32 | reg = <0x80046000 2000>; | ||
33 | interrupts = <58 81>; | ||
34 | fsl,saif-dma-channel = <5>; | ||
35 | fsl,saif-master = <&saif0>; | ||
36 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt new file mode 100644 index 000000000000..1ac7b1642186 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt | |||
@@ -0,0 +1,32 @@ | |||
1 | NVIDIA Tegra30 AHUB (Audio Hub) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "nvidia,tegra30-ahub" | ||
5 | - reg : Should contain the register physical address and length for each of | ||
6 | the AHUB's APBIF registers and the AHUB's own registers. | ||
7 | - interrupts : Should contain AHUB interrupt | ||
8 | - nvidia,dma-request-selector : The Tegra DMA controller's phandle and | ||
9 | request selector for the first APBIF channel. | ||
10 | - ranges : The bus address mapping for the configlink register bus. | ||
11 | Can be empty since the mapping is 1:1. | ||
12 | - #address-cells : For the configlink bus. Should be <1>; | ||
13 | - #size-cells : For the configlink bus. Should be <1>. | ||
14 | |||
15 | AHUB client modules need to specify the IDs of their CIFs (Client InterFaces). | ||
16 | For RX CIFs, the numbers indicate the register number within AHUB routing | ||
17 | register space (APBIF 0..3 RX, I2S 0..5 RX, DAM 0..2 RX 0..1, SPDIF RX 0..1). | ||
18 | For TX CIFs, the numbers indicate the bit position within the AHUB routing | ||
19 | registers (APBIF 0..3 TX, I2S 0..5 TX, DAM 0..2 TX, SPDIF TX 0..1). | ||
20 | |||
21 | Example: | ||
22 | |||
23 | ahub@70080000 { | ||
24 | compatible = "nvidia,tegra30-ahub"; | ||
25 | reg = <0x70080000 0x200 0x70080200 0x100>; | ||
26 | interrupts = < 0 103 0x04 >; | ||
27 | nvidia,dma-request-selector = <&apbdma 1>; | ||
28 | |||
29 | ranges; | ||
30 | #address-cells = <1>; | ||
31 | #size-cells = <1>; | ||
32 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt new file mode 100644 index 000000000000..dfa6c037124a --- /dev/null +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt | |||
@@ -0,0 +1,15 @@ | |||
1 | NVIDIA Tegra30 I2S controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "nvidia,tegra30-i2s" | ||
5 | - reg : Should contain I2S registers location and length | ||
6 | - nvidia,ahub-cif-ids : The list of AHUB CIF IDs for this port, rx (playback) | ||
7 | first, tx (capture) second. See nvidia,tegra30-ahub.txt for values. | ||
8 | |||
9 | Example: | ||
10 | |||
11 | i2s@70002800 { | ||
12 | compatible = "nvidia,tegra30-i2s"; | ||
13 | reg = <0x70080300 0x100>; | ||
14 | nvidia,ahub-cif-ids = <4 4>; | ||
15 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/omap-dmic.txt b/Documentation/devicetree/bindings/sound/omap-dmic.txt new file mode 100644 index 000000000000..fd8105f18978 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/omap-dmic.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | * Texas Instruments OMAP4+ Digital Microphone Module | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "ti,omap4-dmic" | ||
5 | - reg: Register location and size as an array: | ||
6 | <MPU access base address, size>, | ||
7 | <L3 interconnect address, size>; | ||
8 | - interrupts: Interrupt number for DMIC | ||
9 | - interrupt-parent: The parent interrupt controller | ||
10 | - ti,hwmods: Name of the hwmod associated with OMAP dmic IP | ||
11 | |||
12 | Example: | ||
13 | |||
14 | dmic: dmic@4012e000 { | ||
15 | compatible = "ti,omap4-dmic"; | ||
16 | reg = <0x4012e000 0x7f>, /* MPU private access */ | ||
17 | <0x4902e000 0x7f>; /* L3 Interconnect */ | ||
18 | interrupts = <0 114 0x4>; | ||
19 | interrupt-parent = <&gic>; | ||
20 | ti,hwmods = "dmic"; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/omap-mcpdm.txt b/Documentation/devicetree/bindings/sound/omap-mcpdm.txt new file mode 100644 index 000000000000..0741dff048dd --- /dev/null +++ b/Documentation/devicetree/bindings/sound/omap-mcpdm.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | * Texas Instruments OMAP4+ McPDM | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "ti,omap4-mcpdm" | ||
5 | - reg: Register location and size as an array: | ||
6 | <MPU access base address, size>, | ||
7 | <L3 interconnect address, size>; | ||
8 | - interrupts: Interrupt number for McPDM | ||
9 | - interrupt-parent: The parent interrupt controller | ||
10 | - ti,hwmods: Name of the hwmod associated to the McPDM | ||
11 | |||
12 | Example: | ||
13 | |||
14 | mcpdm: mcpdm@40132000 { | ||
15 | compatible = "ti,omap4-mcpdm"; | ||
16 | reg = <0x40132000 0x7f>, /* MPU private access */ | ||
17 | <0x49032000 0x7f>; /* L3 Interconnect */ | ||
18 | interrupts = <0 112 0x4>; | ||
19 | interrupt-parent = <&gic>; | ||
20 | ti,hwmods = "mcpdm"; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/tegra-audio-trimslice.txt b/Documentation/devicetree/bindings/sound/tegra-audio-trimslice.txt new file mode 100644 index 000000000000..04b14cfb1f16 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/tegra-audio-trimslice.txt | |||
@@ -0,0 +1,14 @@ | |||
1 | NVIDIA Tegra audio complex for TrimSlice | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "nvidia,tegra-audio-trimslice" | ||
5 | - nvidia,i2s-controller : The phandle of the Tegra I2S1 controller | ||
6 | - nvidia,audio-codec : The phandle of the WM8903 audio codec | ||
7 | |||
8 | Example: | ||
9 | |||
10 | sound { | ||
11 | compatible = "nvidia,tegra-audio-trimslice"; | ||
12 | nvidia,i2s-controller = <&tegra_i2s1>; | ||
13 | nvidia,audio-codec = <&codec>; | ||
14 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/tegra-audio-wm8753.txt b/Documentation/devicetree/bindings/sound/tegra-audio-wm8753.txt new file mode 100644 index 000000000000..c4dd39ce6165 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/tegra-audio-wm8753.txt | |||
@@ -0,0 +1,54 @@ | |||
1 | NVIDIA Tegra audio complex | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "nvidia,tegra-audio-wm8753" | ||
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 WM8753's pins, and the jacks on the board: | ||
10 | |||
11 | WM8753 pins: | ||
12 | |||
13 | * LOUT1 | ||
14 | * LOUT2 | ||
15 | * ROUT1 | ||
16 | * ROUT2 | ||
17 | * MONO1 | ||
18 | * MONO2 | ||
19 | * OUT3 | ||
20 | * OUT4 | ||
21 | * LINE1 | ||
22 | * LINE2 | ||
23 | * RXP | ||
24 | * RXN | ||
25 | * ACIN | ||
26 | * ACOP | ||
27 | * MIC1N | ||
28 | * MIC1 | ||
29 | * MIC2N | ||
30 | * MIC2 | ||
31 | * Mic Bias | ||
32 | |||
33 | Board connectors: | ||
34 | |||
35 | * Headphone Jack | ||
36 | * Mic Jack | ||
37 | |||
38 | - nvidia,i2s-controller : The phandle of the Tegra I2S1 controller | ||
39 | - nvidia,audio-codec : The phandle of the WM8753 audio codec | ||
40 | Example: | ||
41 | |||
42 | sound { | ||
43 | compatible = "nvidia,tegra-audio-wm8753-whistler", | ||
44 | "nvidia,tegra-audio-wm8753" | ||
45 | nvidia,model = "tegra-wm8753-harmony"; | ||
46 | |||
47 | nvidia,audio-routing = | ||
48 | "Headphone Jack", "LOUT1", | ||
49 | "Headphone Jack", "ROUT1"; | ||
50 | |||
51 | nvidia,i2s-controller = <&i2s1>; | ||
52 | nvidia,audio-codec = <&wm8753>; | ||
53 | }; | ||
54 | |||
diff --git a/Documentation/devicetree/bindings/staging/iio/adc/lpc32xx-adc.txt b/Documentation/devicetree/bindings/staging/iio/adc/lpc32xx-adc.txt new file mode 100644 index 000000000000..b3629d3a9adf --- /dev/null +++ b/Documentation/devicetree/bindings/staging/iio/adc/lpc32xx-adc.txt | |||
@@ -0,0 +1,16 @@ | |||
1 | * NXP LPC32xx SoC ADC controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: must be "nxp,lpc3220-adc" | ||
5 | - reg: physical base address of the controller and length of memory mapped | ||
6 | region. | ||
7 | - interrupts: The ADC interrupt | ||
8 | |||
9 | Example: | ||
10 | |||
11 | adc@40048000 { | ||
12 | compatible = "nxp,lpc3220-adc"; | ||
13 | reg = <0x40048000 0x1000>; | ||
14 | interrupt-parent = <&mic>; | ||
15 | interrupts = <39 0>; | ||
16 | }; | ||
diff --git a/Documentation/devicetree/bindings/staging/iio/adc/spear-adc.txt b/Documentation/devicetree/bindings/staging/iio/adc/spear-adc.txt new file mode 100644 index 000000000000..02ea23a63f20 --- /dev/null +++ b/Documentation/devicetree/bindings/staging/iio/adc/spear-adc.txt | |||
@@ -0,0 +1,26 @@ | |||
1 | * ST SPEAr ADC device driver | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "st,spear600-adc" | ||
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 ADC interrupt | ||
9 | - sampling-frequency: Default sampling frequency | ||
10 | |||
11 | Optional properties: | ||
12 | - vref-external: External voltage reference in milli-volts. If omitted | ||
13 | the internal voltage reference will be used. | ||
14 | - average-samples: Number of samples to generate an average value. If | ||
15 | omitted, single data conversion will be used. | ||
16 | |||
17 | Examples: | ||
18 | |||
19 | adc: adc@d8200000 { | ||
20 | compatible = "st,spear600-adc"; | ||
21 | reg = <0xd8200000 0x1000>; | ||
22 | interrupt-parent = <&vic1>; | ||
23 | interrupts = <6>; | ||
24 | sampling-frequency = <5000000>; | ||
25 | vref-external = <2500>; /* 2.5V VRef */ | ||
26 | }; | ||
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt b/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt index a9c0406280e8..b462d0c54823 100644 --- a/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt +++ b/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt | |||
@@ -11,7 +11,7 @@ Optional properties: | |||
11 | 11 | ||
12 | Example: | 12 | Example: |
13 | 13 | ||
14 | uart@73fbc000 { | 14 | serial@73fbc000 { |
15 | compatible = "fsl,imx51-uart", "fsl,imx21-uart"; | 15 | compatible = "fsl,imx51-uart", "fsl,imx21-uart"; |
16 | reg = <0x73fbc000 0x4000>; | 16 | reg = <0x73fbc000 0x4000>; |
17 | interrupts = <31>; | 17 | interrupts = <31>; |
diff --git a/Documentation/devicetree/bindings/usb/isp1301.txt b/Documentation/devicetree/bindings/usb/isp1301.txt new file mode 100644 index 000000000000..5405d99d9aaa --- /dev/null +++ b/Documentation/devicetree/bindings/usb/isp1301.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | * NXP ISP1301 USB transceiver | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: must be "nxp,isp1301" | ||
5 | - reg: I2C address of the ISP1301 device | ||
6 | |||
7 | Optional properties of devices using ISP1301: | ||
8 | - transceiver: phandle of isp1301 - this helps the ISP1301 driver to find the | ||
9 | ISP1301 instance associated with the respective USB driver | ||
10 | |||
11 | Example: | ||
12 | |||
13 | isp1301: usb-transceiver@2c { | ||
14 | compatible = "nxp,isp1301"; | ||
15 | reg = <0x2c>; | ||
16 | }; | ||
17 | |||
18 | usbd@31020000 { | ||
19 | compatible = "nxp,lpc3220-udc"; | ||
20 | reg = <0x31020000 0x300>; | ||
21 | interrupt-parent = <&mic>; | ||
22 | interrupts = <0x3d 0>, <0x3e 0>, <0x3c 0>, <0x3a 0>; | ||
23 | transceiver = <&isp1301>; | ||
24 | status = "okay"; | ||
25 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/lpc32xx-udc.txt b/Documentation/devicetree/bindings/usb/lpc32xx-udc.txt new file mode 100644 index 000000000000..29f12a533f66 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/lpc32xx-udc.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | * NXP LPC32xx SoC USB Device Controller (UDC) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Must be "nxp,lpc3220-udc" | ||
5 | - reg: Physical base address of the controller and length of memory mapped | ||
6 | region. | ||
7 | - interrupts: The USB interrupts: | ||
8 | * USB Device Low Priority Interrupt | ||
9 | * USB Device High Priority Interrupt | ||
10 | * USB Device DMA Interrupt | ||
11 | * External USB Transceiver Interrupt (OTG ATX) | ||
12 | - transceiver: phandle of the associated ISP1301 device - this is necessary for | ||
13 | the UDC controller for connecting to the USB physical layer | ||
14 | |||
15 | Example: | ||
16 | |||
17 | isp1301: usb-transceiver@2c { | ||
18 | compatible = "nxp,isp1301"; | ||
19 | reg = <0x2c>; | ||
20 | }; | ||
21 | |||
22 | usbd@31020000 { | ||
23 | compatible = "nxp,lpc3220-udc"; | ||
24 | reg = <0x31020000 0x300>; | ||
25 | interrupt-parent = <&mic>; | ||
26 | interrupts = <0x3d 0>, <0x3e 0>, <0x3c 0>, <0x3a 0>; | ||
27 | transceiver = <&isp1301>; | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/ohci-nxp.txt b/Documentation/devicetree/bindings/usb/ohci-nxp.txt new file mode 100644 index 000000000000..71e28c1017ed --- /dev/null +++ b/Documentation/devicetree/bindings/usb/ohci-nxp.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | * OHCI controller, NXP ohci-nxp variant | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: must be "nxp,ohci-nxp" | ||
5 | - reg: physical base address of the controller and length of memory mapped | ||
6 | region. | ||
7 | - interrupts: The OHCI interrupt | ||
8 | - transceiver: phandle of the associated ISP1301 device - this is necessary for | ||
9 | the UDC controller for connecting to the USB physical layer | ||
10 | |||
11 | Example (LPC32xx): | ||
12 | |||
13 | isp1301: usb-transceiver@2c { | ||
14 | compatible = "nxp,isp1301"; | ||
15 | reg = <0x2c>; | ||
16 | }; | ||
17 | |||
18 | ohci@31020000 { | ||
19 | compatible = "nxp,ohci-nxp"; | ||
20 | reg = <0x31020000 0x300>; | ||
21 | interrupt-parent = <&mic>; | ||
22 | interrupts = <0x3b 0>; | ||
23 | transceiver = <&isp1301>; | ||
24 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/spear-usb.txt b/Documentation/devicetree/bindings/usb/spear-usb.txt new file mode 100644 index 000000000000..f8a464a25653 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/spear-usb.txt | |||
@@ -0,0 +1,39 @@ | |||
1 | ST SPEAr SoC USB controllers: | ||
2 | ----------------------------- | ||
3 | |||
4 | EHCI: | ||
5 | ----- | ||
6 | |||
7 | Required properties: | ||
8 | - compatible: "st,spear600-ehci" | ||
9 | - interrupt-parent: Should be the phandle for the interrupt controller | ||
10 | that services interrupts for this device | ||
11 | - interrupts: Should contain the EHCI interrupt | ||
12 | |||
13 | Example: | ||
14 | |||
15 | ehci@e1800000 { | ||
16 | compatible = "st,spear600-ehci", "usb-ehci"; | ||
17 | reg = <0xe1800000 0x1000>; | ||
18 | interrupt-parent = <&vic1>; | ||
19 | interrupts = <27>; | ||
20 | }; | ||
21 | |||
22 | |||
23 | OHCI: | ||
24 | ----- | ||
25 | |||
26 | Required properties: | ||
27 | - compatible: "st,spear600-ohci" | ||
28 | - interrupt-parent: Should be the phandle for the interrupt controller | ||
29 | that services interrupts for this device | ||
30 | - interrupts: Should contain the OHCI interrupt | ||
31 | |||
32 | Example: | ||
33 | |||
34 | ohci@e1900000 { | ||
35 | compatible = "st,spear600-ohci", "usb-ohci"; | ||
36 | reg = <0xe1800000 0x1000>; | ||
37 | interrupt-parent = <&vic1>; | ||
38 | interrupts = <26>; | ||
39 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/tegra-usb.txt b/Documentation/devicetree/bindings/usb/tegra-usb.txt index 007005ddbe12..e9b005dc7625 100644 --- a/Documentation/devicetree/bindings/usb/tegra-usb.txt +++ b/Documentation/devicetree/bindings/usb/tegra-usb.txt | |||
@@ -12,6 +12,9 @@ Required properties : | |||
12 | - nvidia,vbus-gpio : If present, specifies a gpio that needs to be | 12 | - nvidia,vbus-gpio : If present, specifies a gpio that needs to be |
13 | activated for the bus to be powered. | 13 | activated for the bus to be powered. |
14 | 14 | ||
15 | Required properties for phy_type == ulpi: | ||
16 | - nvidia,phy-reset-gpio : The GPIO used to reset the PHY. | ||
17 | |||
15 | Optional properties: | 18 | Optional properties: |
16 | - dr_mode : dual role mode. Indicates the working mode for | 19 | - dr_mode : dual role mode. Indicates the working mode for |
17 | nvidia,tegra20-ehci compatible controllers. Can be "host", "peripheral", | 20 | nvidia,tegra20-ehci compatible controllers. Can be "host", "peripheral", |
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index 82ac057a24a9..6eab91747a86 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt | |||
@@ -8,11 +8,13 @@ amcc Applied Micro Circuits Corporation (APM, formally AMCC) | |||
8 | apm Applied Micro Circuits Corporation (APM) | 8 | apm Applied Micro Circuits Corporation (APM) |
9 | arm ARM Ltd. | 9 | arm ARM Ltd. |
10 | atmel Atmel Corporation | 10 | atmel Atmel Corporation |
11 | bosch Bosch Sensortec GmbH | ||
11 | cavium Cavium, Inc. | 12 | cavium Cavium, Inc. |
12 | chrp Common Hardware Reference Platform | 13 | chrp Common Hardware Reference Platform |
13 | cortina Cortina Systems, Inc. | 14 | cortina Cortina Systems, Inc. |
14 | dallas Maxim Integrated Products (formerly Dallas Semiconductor) | 15 | dallas Maxim Integrated Products (formerly Dallas Semiconductor) |
15 | denx Denx Software Engineering | 16 | denx Denx Software Engineering |
17 | emmicro EM Microelectronic | ||
16 | epson Seiko Epson Corp. | 18 | epson Seiko Epson Corp. |
17 | est ESTeem Wireless Modems | 19 | est ESTeem Wireless Modems |
18 | fsl Freescale Semiconductor | 20 | fsl Freescale Semiconductor |
diff --git a/Documentation/devicetree/bindings/watchdog/pnx4008-wdt.txt b/Documentation/devicetree/bindings/watchdog/pnx4008-wdt.txt new file mode 100644 index 000000000000..7c7f6887c796 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/pnx4008-wdt.txt | |||
@@ -0,0 +1,13 @@ | |||
1 | * NXP PNX watchdog timer | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: must be "nxp,pnx4008-wdt" | ||
5 | - reg: physical base address of the controller and length of memory mapped | ||
6 | region. | ||
7 | |||
8 | Example: | ||
9 | |||
10 | watchdog@4003C000 { | ||
11 | compatible = "nxp,pnx4008-wdt"; | ||
12 | reg = <0x4003C000 0x1000>; | ||
13 | }; | ||
diff --git a/Documentation/devicetree/booting-without-of.txt b/Documentation/devicetree/booting-without-of.txt index da0bfeb4253d..d4d66757354e 100644 --- a/Documentation/devicetree/booting-without-of.txt +++ b/Documentation/devicetree/booting-without-of.txt | |||
@@ -551,12 +551,13 @@ Here is an example of a simple device-tree. In this example, an "o" | |||
551 | designates a node followed by the node unit name. Properties are | 551 | designates a node followed by the node unit name. Properties are |
552 | presented with their name followed by their content. "content" | 552 | presented with their name followed by their content. "content" |
553 | represents an ASCII string (zero terminated) value, while <content> | 553 | represents an ASCII string (zero terminated) value, while <content> |
554 | represents a 32-bit hexadecimal value. The various nodes in this | 554 | represents a 32-bit value, specified in decimal or hexadecimal (the |
555 | example will be discussed in a later chapter. At this point, it is | 555 | latter prefixed 0x). The various nodes in this example will be |
556 | only meant to give you a idea of what a device-tree looks like. I have | 556 | discussed in a later chapter. At this point, it is only meant to give |
557 | purposefully kept the "name" and "linux,phandle" properties which | 557 | you a idea of what a device-tree looks like. I have purposefully kept |
558 | aren't necessary in order to give you a better idea of what the tree | 558 | the "name" and "linux,phandle" properties which aren't necessary in |
559 | looks like in practice. | 559 | order to give you a better idea of what the tree looks like in |
560 | practice. | ||
560 | 561 | ||
561 | / o device-tree | 562 | / o device-tree |
562 | |- name = "device-tree" | 563 | |- name = "device-tree" |
@@ -576,14 +577,14 @@ looks like in practice. | |||
576 | | |- name = "PowerPC,970" | 577 | | |- name = "PowerPC,970" |
577 | | |- device_type = "cpu" | 578 | | |- device_type = "cpu" |
578 | | |- reg = <0> | 579 | | |- reg = <0> |
579 | | |- clock-frequency = <5f5e1000> | 580 | | |- clock-frequency = <0x5f5e1000> |
580 | | |- 64-bit | 581 | | |- 64-bit |
581 | | |- linux,phandle = <2> | 582 | | |- linux,phandle = <2> |
582 | | | 583 | | |
583 | o memory@0 | 584 | o memory@0 |
584 | | |- name = "memory" | 585 | | |- name = "memory" |
585 | | |- device_type = "memory" | 586 | | |- device_type = "memory" |
586 | | |- reg = <00000000 00000000 00000000 20000000> | 587 | | |- reg = <0x00000000 0x00000000 0x00000000 0x20000000> |
587 | | |- linux,phandle = <3> | 588 | | |- linux,phandle = <3> |
588 | | | 589 | | |
589 | o chosen | 590 | o chosen |
@@ -1010,8 +1011,8 @@ compatibility. | |||
1010 | #size-cells = <1>; | 1011 | #size-cells = <1>; |
1011 | #interrupt-cells = <2>; | 1012 | #interrupt-cells = <2>; |
1012 | device_type = "soc"; | 1013 | device_type = "soc"; |
1013 | ranges = <00000000 e0000000 00100000> | 1014 | ranges = <0x00000000 0xe0000000 0x00100000> |
1014 | reg = <e0000000 00003000>; | 1015 | reg = <0xe0000000 0x00003000>; |
1015 | bus-frequency = <0>; | 1016 | bus-frequency = <0>; |
1016 | } | 1017 | } |
1017 | 1018 | ||
@@ -1085,16 +1086,16 @@ supported currently at the toplevel. | |||
1085 | * terminated string | 1086 | * terminated string |
1086 | */ | 1087 | */ |
1087 | 1088 | ||
1088 | property2 = <1234abcd>; /* define a property containing a | 1089 | property2 = <0x1234abcd>; /* define a property containing a |
1089 | * numerical 32-bit value (hexadecimal) | 1090 | * numerical 32-bit value (hexadecimal) |
1090 | */ | 1091 | */ |
1091 | 1092 | ||
1092 | property3 = <12345678 12345678 deadbeef>; | 1093 | property3 = <0x12345678 0x12345678 0xdeadbeef>; |
1093 | /* define a property containing 3 | 1094 | /* define a property containing 3 |
1094 | * numerical 32-bit values (cells) in | 1095 | * numerical 32-bit values (cells) in |
1095 | * hexadecimal | 1096 | * hexadecimal |
1096 | */ | 1097 | */ |
1097 | property4 = [0a 0b 0c 0d de ea ad be ef]; | 1098 | property4 = [0x0a 0x0b 0x0c 0x0d 0xde 0xea 0xad 0xbe 0xef]; |
1098 | /* define a property whose content is | 1099 | /* define a property whose content is |
1099 | * an arbitrary array of bytes | 1100 | * an arbitrary array of bytes |
1100 | */ | 1101 | */ |
@@ -1350,10 +1351,10 @@ Appendix A - Sample SOC node for MPC8540 | |||
1350 | model = "TSEC"; | 1351 | model = "TSEC"; |
1351 | compatible = "gianfar", "simple-bus"; | 1352 | compatible = "gianfar", "simple-bus"; |
1352 | reg = <0x24000 0x1000>; | 1353 | reg = <0x24000 0x1000>; |
1353 | local-mac-address = [ 00 E0 0C 00 73 00 ]; | 1354 | local-mac-address = [ 0x00 0xE0 0x0C 0x00 0x73 0x00 ]; |
1354 | interrupts = <29 2 30 2 34 2>; | 1355 | interrupts = <0x29 2 0x30 2 0x34 2>; |
1355 | phy-handle = <&phy0>; | 1356 | phy-handle = <&phy0>; |
1356 | sleep = <&pmc 00000080>; | 1357 | sleep = <&pmc 0x00000080>; |
1357 | ranges; | 1358 | ranges; |
1358 | 1359 | ||
1359 | mdio@24520 { | 1360 | mdio@24520 { |
@@ -1385,10 +1386,10 @@ Appendix A - Sample SOC node for MPC8540 | |||
1385 | model = "TSEC"; | 1386 | model = "TSEC"; |
1386 | compatible = "gianfar"; | 1387 | compatible = "gianfar"; |
1387 | reg = <0x25000 0x1000>; | 1388 | reg = <0x25000 0x1000>; |
1388 | local-mac-address = [ 00 E0 0C 00 73 01 ]; | 1389 | local-mac-address = [ 0x00 0xE0 0x0C 0x00 0x73 0x01 ]; |
1389 | interrupts = <13 2 14 2 18 2>; | 1390 | interrupts = <0x13 2 0x14 2 0x18 2>; |
1390 | phy-handle = <&phy1>; | 1391 | phy-handle = <&phy1>; |
1391 | sleep = <&pmc 00000040>; | 1392 | sleep = <&pmc 0x00000040>; |
1392 | }; | 1393 | }; |
1393 | 1394 | ||
1394 | ethernet@26000 { | 1395 | ethernet@26000 { |
@@ -1396,17 +1397,17 @@ Appendix A - Sample SOC node for MPC8540 | |||
1396 | model = "FEC"; | 1397 | model = "FEC"; |
1397 | compatible = "gianfar"; | 1398 | compatible = "gianfar"; |
1398 | reg = <0x26000 0x1000>; | 1399 | reg = <0x26000 0x1000>; |
1399 | local-mac-address = [ 00 E0 0C 00 73 02 ]; | 1400 | local-mac-address = [ 0x00 0xE0 0x0C 0x00 0x73 0x02 ]; |
1400 | interrupts = <41 2>; | 1401 | interrupts = <0x41 2>; |
1401 | phy-handle = <&phy3>; | 1402 | phy-handle = <&phy3>; |
1402 | sleep = <&pmc 00000020>; | 1403 | sleep = <&pmc 0x00000020>; |
1403 | }; | 1404 | }; |
1404 | 1405 | ||
1405 | serial@4500 { | 1406 | serial@4500 { |
1406 | #address-cells = <1>; | 1407 | #address-cells = <1>; |
1407 | #size-cells = <1>; | 1408 | #size-cells = <1>; |
1408 | compatible = "fsl,mpc8540-duart", "simple-bus"; | 1409 | compatible = "fsl,mpc8540-duart", "simple-bus"; |
1409 | sleep = <&pmc 00000002>; | 1410 | sleep = <&pmc 0x00000002>; |
1410 | ranges; | 1411 | ranges; |
1411 | 1412 | ||
1412 | serial@4500 { | 1413 | serial@4500 { |
@@ -1414,7 +1415,7 @@ Appendix A - Sample SOC node for MPC8540 | |||
1414 | compatible = "ns16550"; | 1415 | compatible = "ns16550"; |
1415 | reg = <0x4500 0x100>; | 1416 | reg = <0x4500 0x100>; |
1416 | clock-frequency = <0>; | 1417 | clock-frequency = <0>; |
1417 | interrupts = <42 2>; | 1418 | interrupts = <0x42 2>; |
1418 | }; | 1419 | }; |
1419 | 1420 | ||
1420 | serial@4600 { | 1421 | serial@4600 { |
@@ -1422,7 +1423,7 @@ Appendix A - Sample SOC node for MPC8540 | |||
1422 | compatible = "ns16550"; | 1423 | compatible = "ns16550"; |
1423 | reg = <0x4600 0x100>; | 1424 | reg = <0x4600 0x100>; |
1424 | clock-frequency = <0>; | 1425 | clock-frequency = <0>; |
1425 | interrupts = <42 2>; | 1426 | interrupts = <0x42 2>; |
1426 | }; | 1427 | }; |
1427 | }; | 1428 | }; |
1428 | 1429 | ||
@@ -1436,11 +1437,11 @@ Appendix A - Sample SOC node for MPC8540 | |||
1436 | }; | 1437 | }; |
1437 | 1438 | ||
1438 | i2c@3000 { | 1439 | i2c@3000 { |
1439 | interrupts = <43 2>; | 1440 | interrupts = <0x43 2>; |
1440 | reg = <0x3000 0x100>; | 1441 | reg = <0x3000 0x100>; |
1441 | compatible = "fsl-i2c"; | 1442 | compatible = "fsl-i2c"; |
1442 | dfsrr; | 1443 | dfsrr; |
1443 | sleep = <&pmc 00000004>; | 1444 | sleep = <&pmc 0x00000004>; |
1444 | }; | 1445 | }; |
1445 | 1446 | ||
1446 | pmc: power@e0070 { | 1447 | pmc: power@e0070 { |
diff --git a/Documentation/dma-buf-sharing.txt b/Documentation/dma-buf-sharing.txt index 3bbd5c51605a..ad86fb86c9a0 100644 --- a/Documentation/dma-buf-sharing.txt +++ b/Documentation/dma-buf-sharing.txt | |||
@@ -29,13 +29,6 @@ The buffer-user | |||
29 | in memory, mapped into its own address space, so it can access the same area | 29 | in memory, mapped into its own address space, so it can access the same area |
30 | of memory. | 30 | of memory. |
31 | 31 | ||
32 | *IMPORTANT*: [see https://lkml.org/lkml/2011/12/20/211 for more details] | ||
33 | For this first version, A buffer shared using the dma_buf sharing API: | ||
34 | - *may* be exported to user space using "mmap" *ONLY* by exporter, outside of | ||
35 | this framework. | ||
36 | - with this new iteration of the dma-buf api cpu access from the kernel has been | ||
37 | enable, see below for the details. | ||
38 | |||
39 | dma-buf operations for device dma only | 32 | dma-buf operations for device dma only |
40 | -------------------------------------- | 33 | -------------------------------------- |
41 | 34 | ||
@@ -300,6 +293,17 @@ Access to a dma_buf from the kernel context involves three steps: | |||
300 | Note that these calls need to always succeed. The exporter needs to complete | 293 | Note that these calls need to always succeed. The exporter needs to complete |
301 | any preparations that might fail in begin_cpu_access. | 294 | any preparations that might fail in begin_cpu_access. |
302 | 295 | ||
296 | For some cases the overhead of kmap can be too high, a vmap interface | ||
297 | is introduced. This interface should be used very carefully, as vmalloc | ||
298 | space is a limited resources on many architectures. | ||
299 | |||
300 | Interfaces: | ||
301 | void *dma_buf_vmap(struct dma_buf *dmabuf) | ||
302 | void dma_buf_vunmap(struct dma_buf *dmabuf, void *vaddr) | ||
303 | |||
304 | The vmap call can fail if there is no vmap support in the exporter, or if it | ||
305 | runs out of vmalloc space. Fallback to kmap should be implemented. | ||
306 | |||
303 | 3. Finish access | 307 | 3. Finish access |
304 | 308 | ||
305 | When the importer is done accessing the range specified in begin_cpu_access, | 309 | When the importer is done accessing the range specified in begin_cpu_access, |
@@ -313,6 +317,83 @@ Access to a dma_buf from the kernel context involves three steps: | |||
313 | enum dma_data_direction dir); | 317 | enum dma_data_direction dir); |
314 | 318 | ||
315 | 319 | ||
320 | Direct Userspace Access/mmap Support | ||
321 | ------------------------------------ | ||
322 | |||
323 | Being able to mmap an export dma-buf buffer object has 2 main use-cases: | ||
324 | - CPU fallback processing in a pipeline and | ||
325 | - supporting existing mmap interfaces in importers. | ||
326 | |||
327 | 1. CPU fallback processing in a pipeline | ||
328 | |||
329 | In many processing pipelines it is sometimes required that the cpu can access | ||
330 | the data in a dma-buf (e.g. for thumbnail creation, snapshots, ...). To avoid | ||
331 | the need to handle this specially in userspace frameworks for buffer sharing | ||
332 | it's ideal if the dma_buf fd itself can be used to access the backing storage | ||
333 | from userspace using mmap. | ||
334 | |||
335 | Furthermore Android's ION framework already supports this (and is otherwise | ||
336 | rather similar to dma-buf from a userspace consumer side with using fds as | ||
337 | handles, too). So it's beneficial to support this in a similar fashion on | ||
338 | dma-buf to have a good transition path for existing Android userspace. | ||
339 | |||
340 | No special interfaces, userspace simply calls mmap on the dma-buf fd. | ||
341 | |||
342 | 2. Supporting existing mmap interfaces in exporters | ||
343 | |||
344 | Similar to the motivation for kernel cpu access it is again important that | ||
345 | the userspace code of a given importing subsystem can use the same interfaces | ||
346 | with a imported dma-buf buffer object as with a native buffer object. This is | ||
347 | especially important for drm where the userspace part of contemporary OpenGL, | ||
348 | X, and other drivers is huge, and reworking them to use a different way to | ||
349 | mmap a buffer rather invasive. | ||
350 | |||
351 | The assumption in the current dma-buf interfaces is that redirecting the | ||
352 | initial mmap is all that's needed. A survey of some of the existing | ||
353 | subsystems shows that no driver seems to do any nefarious thing like syncing | ||
354 | up with outstanding asynchronous processing on the device or allocating | ||
355 | special resources at fault time. So hopefully this is good enough, since | ||
356 | adding interfaces to intercept pagefaults and allow pte shootdowns would | ||
357 | increase the complexity quite a bit. | ||
358 | |||
359 | Interface: | ||
360 | int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *, | ||
361 | unsigned long); | ||
362 | |||
363 | If the importing subsystem simply provides a special-purpose mmap call to set | ||
364 | up a mapping in userspace, calling do_mmap with dma_buf->file will equally | ||
365 | achieve that for a dma-buf object. | ||
366 | |||
367 | 3. Implementation notes for exporters | ||
368 | |||
369 | Because dma-buf buffers have invariant size over their lifetime, the dma-buf | ||
370 | core checks whether a vma is too large and rejects such mappings. The | ||
371 | exporter hence does not need to duplicate this check. | ||
372 | |||
373 | Because existing importing subsystems might presume coherent mappings for | ||
374 | userspace, the exporter needs to set up a coherent mapping. If that's not | ||
375 | possible, it needs to fake coherency by manually shooting down ptes when | ||
376 | leaving the cpu domain and flushing caches at fault time. Note that all the | ||
377 | dma_buf files share the same anon inode, hence the exporter needs to replace | ||
378 | the dma_buf file stored in vma->vm_file with it's own if pte shootdown is | ||
379 | requred. This is because the kernel uses the underlying inode's address_space | ||
380 | for vma tracking (and hence pte tracking at shootdown time with | ||
381 | unmap_mapping_range). | ||
382 | |||
383 | If the above shootdown dance turns out to be too expensive in certain | ||
384 | scenarios, we can extend dma-buf with a more explicit cache tracking scheme | ||
385 | for userspace mappings. But the current assumption is that using mmap is | ||
386 | always a slower path, so some inefficiencies should be acceptable. | ||
387 | |||
388 | Exporters that shoot down mappings (for any reasons) shall not do any | ||
389 | synchronization at fault time with outstanding device operations. | ||
390 | Synchronization is an orthogonal issue to sharing the backing storage of a | ||
391 | buffer and hence should not be handled by dma-buf itself. This is explictly | ||
392 | mentioned here because many people seem to want something like this, but if | ||
393 | different exporters handle this differently, buffer sharing can fail in | ||
394 | interesting ways depending upong the exporter (if userspace starts depending | ||
395 | upon this implicit synchronization). | ||
396 | |||
316 | Miscellaneous notes | 397 | Miscellaneous notes |
317 | ------------------- | 398 | ------------------- |
318 | 399 | ||
@@ -336,6 +417,20 @@ Miscellaneous notes | |||
336 | the exporting driver to create a dmabuf fd must provide a way to let | 417 | the exporting driver to create a dmabuf fd must provide a way to let |
337 | userspace control setting of O_CLOEXEC flag passed in to dma_buf_fd(). | 418 | userspace control setting of O_CLOEXEC flag passed in to dma_buf_fd(). |
338 | 419 | ||
420 | - If an exporter needs to manually flush caches and hence needs to fake | ||
421 | coherency for mmap support, it needs to be able to zap all the ptes pointing | ||
422 | at the backing storage. Now linux mm needs a struct address_space associated | ||
423 | with the struct file stored in vma->vm_file to do that with the function | ||
424 | unmap_mapping_range. But the dma_buf framework only backs every dma_buf fd | ||
425 | with the anon_file struct file, i.e. all dma_bufs share the same file. | ||
426 | |||
427 | Hence exporters need to setup their own file (and address_space) association | ||
428 | by setting vma->vm_file and adjusting vma->vm_pgoff in the dma_buf mmap | ||
429 | callback. In the specific case of a gem driver the exporter could use the | ||
430 | shmem file already provided by gem (and set vm_pgoff = 0). Exporters can then | ||
431 | zap ptes by unmapping the corresponding range of the struct address_space | ||
432 | associated with their own file. | ||
433 | |||
339 | References: | 434 | References: |
340 | [1] struct dma_buf_ops in include/linux/dma-buf.h | 435 | [1] struct dma_buf_ops in include/linux/dma-buf.h |
341 | [2] All interfaces mentioned above defined in include/linux/dma-buf.h | 436 | [2] All interfaces mentioned above defined in include/linux/dma-buf.h |
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware index d1d4a179a382..fbb241174486 100755 --- a/Documentation/dvb/get_dvb_firmware +++ b/Documentation/dvb/get_dvb_firmware | |||
@@ -28,7 +28,8 @@ use IO::Handle; | |||
28 | "opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718", | 28 | "opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718", |
29 | "af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395", | 29 | "af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395", |
30 | "lme2510c_s7395_old", "drxk", "drxk_terratec_h5", | 30 | "lme2510c_s7395_old", "drxk", "drxk_terratec_h5", |
31 | "drxk_hauppauge_hvr930c", "tda10071", "it9135", "it9137"); | 31 | "drxk_hauppauge_hvr930c", "tda10071", "it9135", "it9137", |
32 | "drxk_pctv"); | ||
32 | 33 | ||
33 | # Check args | 34 | # Check args |
34 | syntax() if (scalar(@ARGV) != 1); | 35 | syntax() if (scalar(@ARGV) != 1); |
@@ -730,6 +731,23 @@ sub tda10071 { | |||
730 | "$fwfile"; | 731 | "$fwfile"; |
731 | } | 732 | } |
732 | 733 | ||
734 | sub drxk_pctv { | ||
735 | my $sourcefile = "PCTV_460e_reference.zip"; | ||
736 | my $url = "ftp://ftp.pctvsystems.com/TV/driver/PCTV%2070e%2080e%20100e%20320e%20330e%20800e/"; | ||
737 | my $hash = "4403de903bf2593464c8d74bbc200a57"; | ||
738 | my $fwfile = "dvb-demod-drxk-pctv.fw"; | ||
739 | my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); | ||
740 | |||
741 | checkstandard(); | ||
742 | |||
743 | wgetfile($sourcefile, $url . $sourcefile); | ||
744 | verify($sourcefile, $hash); | ||
745 | unzip($sourcefile, $tmpdir); | ||
746 | extract("$tmpdir/PCTV\ 70e\ 80e\ 100e\ 320e\ 330e\ 800e/32\ bit/emOEM.sys", 0x72b80, 42692, $fwfile); | ||
747 | |||
748 | "$fwfile"; | ||
749 | } | ||
750 | |||
733 | # --------------------------------------------------------------- | 751 | # --------------------------------------------------------------- |
734 | # Utilities | 752 | # Utilities |
735 | 753 | ||
diff --git a/Documentation/dvb/opera-firmware.txt b/Documentation/dvb/opera-firmware.txt index 93e784c2607b..fb6683188ef7 100644 --- a/Documentation/dvb/opera-firmware.txt +++ b/Documentation/dvb/opera-firmware.txt | |||
@@ -8,7 +8,7 @@ from the windriver disk into this directory. | |||
8 | 8 | ||
9 | Then run | 9 | Then run |
10 | 10 | ||
11 | ./get_dvb_firware opera1 | 11 | ./get_dvb_firmware opera1 |
12 | 12 | ||
13 | and after that you have 2 files: | 13 | and after that you have 2 files: |
14 | 14 | ||
@@ -24,4 +24,4 @@ After that the driver can load the firmware | |||
24 | in kernel config and have hotplug running). | 24 | in kernel config and have hotplug running). |
25 | 25 | ||
26 | 26 | ||
27 | Marco Gittler <g.marco@freenet.de> \ No newline at end of file | 27 | Marco Gittler <g.marco@freenet.de> |
diff --git a/Documentation/dynamic-debug-howto.txt b/Documentation/dynamic-debug-howto.txt index 74e6c7782678..6e1684981da2 100644 --- a/Documentation/dynamic-debug-howto.txt +++ b/Documentation/dynamic-debug-howto.txt | |||
@@ -2,17 +2,17 @@ | |||
2 | Introduction | 2 | Introduction |
3 | ============ | 3 | ============ |
4 | 4 | ||
5 | This document describes how to use the dynamic debug (ddebug) feature. | 5 | This document describes how to use the dynamic debug (dyndbg) feature. |
6 | 6 | ||
7 | Dynamic debug is designed to allow you to dynamically enable/disable kernel | 7 | Dynamic debug is designed to allow you to dynamically enable/disable |
8 | code to obtain additional kernel information. Currently, if | 8 | kernel code to obtain additional kernel information. Currently, if |
9 | CONFIG_DYNAMIC_DEBUG is set, then all pr_debug()/dev_dbg() calls can be | 9 | CONFIG_DYNAMIC_DEBUG is set, then all pr_debug()/dev_dbg() calls can |
10 | dynamically enabled per-callsite. | 10 | be dynamically enabled per-callsite. |
11 | 11 | ||
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 |
15 | matching any combination of 0 or 1 of: | 15 | statements by matching any combination of 0 or 1 of: |
16 | 16 | ||
17 | - source filename | 17 | - source filename |
18 | - function name | 18 | - function name |
@@ -20,17 +20,19 @@ Dynamic debug has even more useful features: | |||
20 | - module name | 20 | - module name |
21 | - format string | 21 | - format string |
22 | 22 | ||
23 | * Provides a debugfs control file: <debugfs>/dynamic_debug/control which can be | 23 | * Provides a debugfs control file: <debugfs>/dynamic_debug/control |
24 | read to display the complete list of known debug statements, to help guide you | 24 | which can be read to display the complete list of known debug |
25 | statements, to help guide you | ||
25 | 26 | ||
26 | Controlling dynamic debug Behaviour | 27 | Controlling dynamic debug Behaviour |
27 | =================================== | 28 | =================================== |
28 | 29 | ||
29 | The behaviour of pr_debug()/dev_dbg()s are controlled via writing to a | 30 | The behaviour of pr_debug()/dev_dbg()s are controlled via writing to a |
30 | control file in the 'debugfs' filesystem. Thus, you must first mount the debugfs | 31 | control file in the 'debugfs' filesystem. Thus, you must first mount |
31 | filesystem, in order to make use of this feature. Subsequently, we refer to the | 32 | the debugfs filesystem, in order to make use of this feature. |
32 | control file as: <debugfs>/dynamic_debug/control. For example, if you want to | 33 | Subsequently, we refer to the control file as: |
33 | enable printing from source file 'svcsock.c', line 1603 you simply do: | 34 | <debugfs>/dynamic_debug/control. For example, if you want to enable |
35 | printing from source file 'svcsock.c', line 1603 you simply do: | ||
34 | 36 | ||
35 | nullarbor:~ # echo 'file svcsock.c line 1603 +p' > | 37 | nullarbor:~ # echo 'file svcsock.c line 1603 +p' > |
36 | <debugfs>/dynamic_debug/control | 38 | <debugfs>/dynamic_debug/control |
@@ -44,15 +46,15 @@ nullarbor:~ # echo 'file svcsock.c wtf 1 +p' > | |||
44 | Viewing Dynamic Debug Behaviour | 46 | Viewing Dynamic Debug Behaviour |
45 | =========================== | 47 | =========================== |
46 | 48 | ||
47 | You can view the currently configured behaviour of all the debug statements | 49 | You can view the currently configured behaviour of all the debug |
48 | via: | 50 | statements via: |
49 | 51 | ||
50 | nullarbor:~ # cat <debugfs>/dynamic_debug/control | 52 | nullarbor:~ # cat <debugfs>/dynamic_debug/control |
51 | # filename:lineno [module]function flags format | 53 | # filename:lineno [module]function flags format |
52 | /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:323 [svcxprt_rdma]svc_rdma_cleanup - "SVCRDMA Module Removed, deregister RPC RDMA transport\012" | 54 | /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:323 [svcxprt_rdma]svc_rdma_cleanup =_ "SVCRDMA Module Removed, deregister RPC RDMA transport\012" |
53 | /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:341 [svcxprt_rdma]svc_rdma_init - "\011max_inline : %d\012" | 55 | /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:341 [svcxprt_rdma]svc_rdma_init =_ "\011max_inline : %d\012" |
54 | /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:340 [svcxprt_rdma]svc_rdma_init - "\011sq_depth : %d\012" | 56 | /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:340 [svcxprt_rdma]svc_rdma_init =_ "\011sq_depth : %d\012" |
55 | /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:338 [svcxprt_rdma]svc_rdma_init - "\011max_requests : %d\012" | 57 | /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:338 [svcxprt_rdma]svc_rdma_init =_ "\011max_requests : %d\012" |
56 | ... | 58 | ... |
57 | 59 | ||
58 | 60 | ||
@@ -65,12 +67,12 @@ nullarbor:~ # grep -i rdma <debugfs>/dynamic_debug/control | wc -l | |||
65 | nullarbor:~ # grep -i tcp <debugfs>/dynamic_debug/control | wc -l | 67 | nullarbor:~ # grep -i tcp <debugfs>/dynamic_debug/control | wc -l |
66 | 42 | 68 | 42 |
67 | 69 | ||
68 | Note in particular that the third column shows the enabled behaviour | 70 | The third column shows the currently enabled flags for each debug |
69 | flags for each debug statement callsite (see below for definitions of the | 71 | statement callsite (see below for definitions of the flags). The |
70 | flags). The default value, no extra behaviour enabled, is "-". So | 72 | default value, with no flags enabled, is "=_". So you can view all |
71 | you can view all the debug statement callsites with any non-default flags: | 73 | the debug statement callsites with any non-default flags: |
72 | 74 | ||
73 | nullarbor:~ # awk '$3 != "-"' <debugfs>/dynamic_debug/control | 75 | nullarbor:~ # awk '$3 != "=_"' <debugfs>/dynamic_debug/control |
74 | # filename:lineno [module]function flags format | 76 | # filename:lineno [module]function flags format |
75 | /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svcsock.c:1603 [sunrpc]svc_send p "svc_process: st_sendto returned %d\012" | 77 | /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svcsock.c:1603 [sunrpc]svc_send p "svc_process: st_sendto returned %d\012" |
76 | 78 | ||
@@ -103,15 +105,14 @@ specifications, followed by a flags change specification. | |||
103 | 105 | ||
104 | command ::= match-spec* flags-spec | 106 | command ::= match-spec* flags-spec |
105 | 107 | ||
106 | The match-spec's are used to choose a subset of the known dprintk() | 108 | The match-spec's are used to choose a subset of the known pr_debug() |
107 | callsites to which to apply the flags-spec. Think of them as a query | 109 | callsites to which to apply the flags-spec. Think of them as a query |
108 | with implicit ANDs between each pair. Note that an empty list of | 110 | with implicit ANDs between each pair. Note that an empty list of |
109 | match-specs is possible, but is not very useful because it will not | 111 | match-specs will select all debug statement callsites. |
110 | match any debug statement callsites. | ||
111 | 112 | ||
112 | A match specification comprises a keyword, which controls the attribute | 113 | A match specification comprises a keyword, which controls the |
113 | of the callsite to be compared, and a value to compare against. Possible | 114 | attribute of the callsite to be compared, and a value to compare |
114 | keywords are: | 115 | against. Possible keywords are: |
115 | 116 | ||
116 | match-spec ::= 'func' string | | 117 | match-spec ::= 'func' string | |
117 | 'file' string | | 118 | 'file' string | |
@@ -164,15 +165,15 @@ format | |||
164 | characters (") or single quote characters ('). | 165 | characters (") or single quote characters ('). |
165 | Examples: | 166 | Examples: |
166 | 167 | ||
167 | format svcrdma: // many of the NFS/RDMA server dprintks | 168 | format svcrdma: // many of the NFS/RDMA server pr_debugs |
168 | format readahead // some dprintks in the readahead cache | 169 | format readahead // some pr_debugs in the readahead cache |
169 | format nfsd:\040SETATTR // one way to match a format with whitespace | 170 | format nfsd:\040SETATTR // one way to match a format with whitespace |
170 | format "nfsd: SETATTR" // a neater way to match a format with whitespace | 171 | format "nfsd: SETATTR" // a neater way to match a format with whitespace |
171 | format 'nfsd: SETATTR' // yet another way to match a format with whitespace | 172 | format 'nfsd: SETATTR' // yet another way to match a format with whitespace |
172 | 173 | ||
173 | line | 174 | line |
174 | The given line number or range of line numbers is compared | 175 | The given line number or range of line numbers is compared |
175 | against the line number of each dprintk() callsite. A single | 176 | against the line number of each pr_debug() callsite. A single |
176 | line number matches the callsite line number exactly. A | 177 | line number matches the callsite line number exactly. A |
177 | range of line numbers matches any callsite between the first | 178 | range of line numbers matches any callsite between the first |
178 | and last line number inclusive. An empty first number means | 179 | and last line number inclusive. An empty first number means |
@@ -188,51 +189,93 @@ The flags specification comprises a change operation followed | |||
188 | by one or more flag characters. The change operation is one | 189 | by one or more flag characters. The change operation is one |
189 | of the characters: | 190 | of the characters: |
190 | 191 | ||
191 | - | 192 | - remove the given flags |
192 | remove the given flags | 193 | + add the given flags |
193 | 194 | = set the flags to the given flags | |
194 | + | ||
195 | add the given flags | ||
196 | |||
197 | = | ||
198 | set the flags to the given flags | ||
199 | 195 | ||
200 | The flags are: | 196 | The flags are: |
201 | 197 | ||
202 | f | 198 | p enables the pr_debug() callsite. |
203 | Include the function name in the printed message | 199 | f Include the function name in the printed message |
204 | l | 200 | l Include line number in the printed message |
205 | Include line number in the printed message | 201 | m Include module name in the printed message |
206 | m | 202 | t Include thread ID in messages not generated from interrupt context |
207 | Include module name in the printed message | 203 | _ No flags are set. (Or'd with others on input) |
208 | p | 204 | |
209 | Causes a printk() message to be emitted to dmesg | 205 | For display, the flags are preceded by '=' |
210 | t | 206 | (mnemonic: what the flags are currently equal to). |
211 | Include thread ID in messages not generated from interrupt context | ||
212 | 207 | ||
213 | Note the regexp ^[-+=][flmpt]+$ matches a flags specification. | 208 | Note the regexp ^[-+=][flmpt_]+$ matches a flags specification. |
214 | Note also that there is no convenient syntax to remove all | 209 | To clear all flags at once, use "=_" or "-flmpt". |
215 | the flags at once, you need to use "-flmpt". | ||
216 | 210 | ||
217 | 211 | ||
218 | Debug messages during boot process | 212 | Debug messages during Boot Process |
219 | ================================== | 213 | ================================== |
220 | 214 | ||
221 | To be able to activate debug messages during the boot process, | 215 | To activate debug messages for core code and built-in modules during |
222 | even before userspace and debugfs exists, use the boot parameter: | 216 | the boot process, even before userspace and debugfs exists, use |
223 | ddebug_query="QUERY" | 217 | dyndbg="QUERY", module.dyndbg="QUERY", or ddebug_query="QUERY" |
218 | (ddebug_query is obsoleted by dyndbg, and deprecated). QUERY follows | ||
219 | the syntax described above, but must not exceed 1023 characters. Your | ||
220 | bootloader may impose lower limits. | ||
221 | |||
222 | These dyndbg params are processed just after the ddebug tables are | ||
223 | processed, as part of the arch_initcall. Thus you can enable debug | ||
224 | messages in all code run after this arch_initcall via this boot | ||
225 | parameter. | ||
224 | 226 | ||
225 | QUERY follows the syntax described above, but must not exceed 1023 | ||
226 | characters. The enablement of debug messages is done as an arch_initcall. | ||
227 | Thus you can enable debug messages in all code processed after this | ||
228 | arch_initcall via this boot parameter. | ||
229 | On an x86 system for example ACPI enablement is a subsys_initcall and | 227 | On an x86 system for example ACPI enablement is a subsys_initcall and |
230 | ddebug_query="file ec.c +p" | 228 | dyndbg="file ec.c +p" |
231 | will show early Embedded Controller transactions during ACPI setup if | 229 | will show early Embedded Controller transactions during ACPI setup if |
232 | your machine (typically a laptop) has an Embedded Controller. | 230 | your machine (typically a laptop) has an Embedded Controller. |
233 | PCI (or other devices) initialization also is a hot candidate for using | 231 | PCI (or other devices) initialization also is a hot candidate for using |
234 | this boot parameter for debugging purposes. | 232 | this boot parameter for debugging purposes. |
235 | 233 | ||
234 | If foo module is not built-in, foo.dyndbg will still be processed at | ||
235 | boot time, without effect, but will be reprocessed when module is | ||
236 | loaded later. dyndbg_query= and bare dyndbg= are only processed at | ||
237 | boot. | ||
238 | |||
239 | |||
240 | Debug Messages at Module Initialization Time | ||
241 | ============================================ | ||
242 | |||
243 | When "modprobe foo" is called, modprobe scans /proc/cmdline for | ||
244 | foo.params, strips "foo.", and passes them to the kernel along with | ||
245 | params given in modprobe args or /etc/modprob.d/*.conf files, | ||
246 | in the following order: | ||
247 | |||
248 | 1. # parameters given via /etc/modprobe.d/*.conf | ||
249 | options foo dyndbg=+pt | ||
250 | options foo dyndbg # defaults to +p | ||
251 | |||
252 | 2. # foo.dyndbg as given in boot args, "foo." is stripped and passed | ||
253 | foo.dyndbg=" func bar +p; func buz +mp" | ||
254 | |||
255 | 3. # args to modprobe | ||
256 | modprobe foo dyndbg==pmf # override previous settings | ||
257 | |||
258 | These dyndbg queries are applied in order, with last having final say. | ||
259 | This allows boot args to override or modify those from /etc/modprobe.d | ||
260 | (sensible, since 1 is system wide, 2 is kernel or boot specific), and | ||
261 | modprobe args to override both. | ||
262 | |||
263 | In the foo.dyndbg="QUERY" form, the query must exclude "module foo". | ||
264 | "foo" is extracted from the param-name, and applied to each query in | ||
265 | "QUERY", and only 1 match-spec of each type is allowed. | ||
266 | |||
267 | The dyndbg option is a "fake" module parameter, which means: | ||
268 | |||
269 | - modules do not need to define it explicitly | ||
270 | - every module gets it tacitly, whether they use pr_debug or not | ||
271 | - it doesnt appear in /sys/module/$module/parameters/ | ||
272 | To see it, grep the control file, or inspect /proc/cmdline. | ||
273 | |||
274 | For CONFIG_DYNAMIC_DEBUG kernels, any settings given at boot-time (or | ||
275 | enabled by -DDEBUG flag during compilation) can be disabled later via | ||
276 | the sysfs interface if the debug messages are no longer needed: | ||
277 | |||
278 | echo "module module_name -p" > <debugfs>/dynamic_debug/control | ||
236 | 279 | ||
237 | Examples | 280 | Examples |
238 | ======== | 281 | ======== |
@@ -260,3 +303,18 @@ nullarbor:~ # echo -n 'func svc_process -p' > | |||
260 | // enable messages for NFS calls READ, READLINK, READDIR and READDIR+. | 303 | // enable messages for NFS calls READ, READLINK, READDIR and READDIR+. |
261 | nullarbor:~ # echo -n 'format "nfsd: READ" +p' > | 304 | nullarbor:~ # echo -n 'format "nfsd: READ" +p' > |
262 | <debugfs>/dynamic_debug/control | 305 | <debugfs>/dynamic_debug/control |
306 | |||
307 | // enable all messages | ||
308 | nullarbor:~ # echo -n '+p' > <debugfs>/dynamic_debug/control | ||
309 | |||
310 | // add module, function to all enabled messages | ||
311 | nullarbor:~ # echo -n '+mf' > <debugfs>/dynamic_debug/control | ||
312 | |||
313 | // boot-args example, with newlines and comments for readability | ||
314 | Kernel command line: ... | ||
315 | // see whats going on in dyndbg=value processing | ||
316 | dynamic_debug.verbose=1 | ||
317 | // enable pr_debugs in 2 builtins, #cmt is stripped | ||
318 | dyndbg="module params +p #cmt ; module sys +p" | ||
319 | // enable pr_debugs in 2 functions in a module loaded later | ||
320 | pc87360.dyndbg="func pc87360_init_device +p; func pc87360_find +p" | ||
diff --git a/Documentation/edac.txt b/Documentation/edac.txt index fdcc49fad8e1..03df2b020332 100644 --- a/Documentation/edac.txt +++ b/Documentation/edac.txt | |||
@@ -734,7 +734,7 @@ were done at i7core_edac driver. This chapter will cover those differences | |||
734 | associated with a physical CPU socket. | 734 | associated with a physical CPU socket. |
735 | 735 | ||
736 | Each MC have 3 physical read channels, 3 physical write channels and | 736 | Each MC have 3 physical read channels, 3 physical write channels and |
737 | 3 logic channels. The driver currenty sees it as just 3 channels. | 737 | 3 logic channels. The driver currently sees it as just 3 channels. |
738 | Each channel can have up to 3 DIMMs. | 738 | Each channel can have up to 3 DIMMs. |
739 | 739 | ||
740 | The minimum known unity is DIMMs. There are no information about csrows. | 740 | The minimum known unity is DIMMs. There are no information about csrows. |
diff --git a/Documentation/eisa.txt b/Documentation/eisa.txt index 38cf0c7b559f..a55e4910924e 100644 --- a/Documentation/eisa.txt +++ b/Documentation/eisa.txt | |||
@@ -179,7 +179,7 @@ CONFIG_ALPHA_JENSEN or CONFIG_EISA_VLB_PRIMING are set. | |||
179 | 179 | ||
180 | Converting an EISA driver to the new API mostly involves *deleting* | 180 | Converting an EISA driver to the new API mostly involves *deleting* |
181 | code (since probing is now in the core EISA code). Unfortunately, most | 181 | code (since probing is now in the core EISA code). Unfortunately, most |
182 | drivers share their probing routine between ISA, MCA and EISA. Special | 182 | drivers share their probing routine between ISA, and EISA. Special |
183 | care must be taken when ripping out the EISA code, so other busses | 183 | care must be taken when ripping out the EISA code, so other busses |
184 | won't suffer from these surgical strikes... | 184 | won't suffer from these surgical strikes... |
185 | 185 | ||
diff --git a/Documentation/extcon/porting-android-switch-class b/Documentation/extcon/porting-android-switch-class new file mode 100644 index 000000000000..eb0fa5f4fe88 --- /dev/null +++ b/Documentation/extcon/porting-android-switch-class | |||
@@ -0,0 +1,124 @@ | |||
1 | |||
2 | Staging/Android Switch Class Porting Guide | ||
3 | (linux/drivers/staging/android/switch) | ||
4 | (c) Copyright 2012 Samsung Electronics | ||
5 | |||
6 | AUTHORS | ||
7 | MyungJoo Ham <myungjoo.ham@samsung.com> | ||
8 | |||
9 | /***************************************************************** | ||
10 | * CHAPTER 1. * | ||
11 | * PORTING SWITCH CLASS DEVICE DRIVERS * | ||
12 | *****************************************************************/ | ||
13 | |||
14 | ****** STEP 1. Basic Functionality | ||
15 | No extcon extended feature, but switch features only. | ||
16 | |||
17 | - struct switch_dev (fed to switch_dev_register/unregister) | ||
18 | @name: no change | ||
19 | @dev: no change | ||
20 | @index: drop (not used in switch device driver side anyway) | ||
21 | @state: no change | ||
22 | If you have used @state with magic numbers, keep it | ||
23 | at this step. | ||
24 | @print_name: no change but type change (switch_dev->extcon_dev) | ||
25 | @print_state: no change but type change (switch_dev->extcon_dev) | ||
26 | |||
27 | - switch_dev_register(sdev, dev) | ||
28 | => extcon_dev_register(edev, dev) | ||
29 | : no change but type change (sdev->edev) | ||
30 | - switch_dev_unregister(sdev) | ||
31 | => extcon_dev_unregister(edev) | ||
32 | : no change but type change (sdev->edev) | ||
33 | - switch_get_state(sdev) | ||
34 | => extcon_get_state(edev) | ||
35 | : no change but type change (sdev->edev) and (return: int->u32) | ||
36 | - switch_set_state(sdev, state) | ||
37 | => extcon_set_state(edev, state) | ||
38 | : no change but type change (sdev->edev) and (state: int->u32) | ||
39 | |||
40 | With this changes, the ex-switch extcon class device works as it once | ||
41 | worked as switch class device. However, it will now have additional | ||
42 | interfaces (both ABI and in-kernel API) and different ABI locations. | ||
43 | However, if CONFIG_ANDROID is enabled without CONFIG_ANDROID_SWITCH, | ||
44 | /sys/class/switch/* will be symbolically linked to /sys/class/extcon/ | ||
45 | so that they are still compatible with legacy userspace processes. | ||
46 | |||
47 | ****** STEP 2. Multistate (no more magic numbers in state value) | ||
48 | Extcon's extended features for switch device drivers with | ||
49 | complex features usually required magic numbers in state | ||
50 | value of switch_dev. With extcon, such magic numbers that | ||
51 | support multiple cables ( | ||
52 | |||
53 | 1. Define cable names at edev->supported_cable. | ||
54 | 2. (Recommended) remove print_state callback. | ||
55 | 3. Use extcon_get_cable_state_(edev, index) or | ||
56 | extcon_get_cable_state(edev, cable_name) instead of | ||
57 | extcon_get_state(edev) if you intend to get a state of a specific | ||
58 | cable. Same for set_state. This way, you can remove the usage of | ||
59 | magic numbers in state value. | ||
60 | 4. Use extcon_update_state() if you are updating specific bits of | ||
61 | the state value. | ||
62 | |||
63 | Example: a switch device driver w/ magic numbers for two cables. | ||
64 | "0x00": no cables connected. | ||
65 | "0x01": cable 1 connected | ||
66 | "0x02": cable 2 connected | ||
67 | "0x03": cable 1 and 2 connected | ||
68 | 1. edev->supported_cable = {"1", "2", NULL}; | ||
69 | 2. edev->print_state = NULL; | ||
70 | 3. extcon_get_cable_state_(edev, 0) shows cable 1's state. | ||
71 | extcon_get_cable_state(edev, "1") shows cable 1's state. | ||
72 | extcon_set_cable_state_(edev, 1) sets cable 2's state. | ||
73 | extcon_set_cable_state(edev, "2") sets cable 2's state | ||
74 | 4. extcon_update_state(edev, 0x01, 0) sets the least bit's 0. | ||
75 | |||
76 | ****** STEP 3. Notify other device drivers | ||
77 | |||
78 | You can notify others of the cable attach/detach events with | ||
79 | notifier chains. | ||
80 | |||
81 | At the side of other device drivers (the extcon device itself | ||
82 | does not need to get notified of its own events), there are two | ||
83 | methods to register notifier_block for cable events: | ||
84 | (a) for a specific cable or (b) for every cable. | ||
85 | |||
86 | (a) extcon_register_interest(obj, extcon_name, cable_name, nb) | ||
87 | Example: want to get news of "MAX8997_MUIC"'s "USB" cable | ||
88 | |||
89 | obj = kzalloc(sizeof(struct extcon_specific_cable_nb), | ||
90 | GFP_KERNEL); | ||
91 | nb->notifier_call = the_callback_to_handle_usb; | ||
92 | |||
93 | extcon_register_intereset(obj, "MAX8997_MUIC", "USB", nb); | ||
94 | |||
95 | (b) extcon_register_notifier(edev, nb) | ||
96 | Call nb for any changes in edev. | ||
97 | |||
98 | Please note that in order to properly behave with method (a), | ||
99 | the extcon device driver should support multistate feature (STEP 2). | ||
100 | |||
101 | ****** STEP 4. Inter-cable relation (mutually exclusive) | ||
102 | |||
103 | You can provide inter-cable mutually exclusiveness information | ||
104 | for an extcon device. When cables A and B are declared to be mutually | ||
105 | exclusive, the two cables cannot be in ATTACHED state simulteneously. | ||
106 | |||
107 | |||
108 | /***************************************************************** | ||
109 | * CHAPTER 2. * | ||
110 | * PORTING USERSPACE w/ SWITCH CLASS DEVICE SUPPORT * | ||
111 | *****************************************************************/ | ||
112 | |||
113 | ****** ABI Location | ||
114 | |||
115 | If "CONFIG_ANDROID" is enabled and "CONFIG_ANDROID_SWITCH" is | ||
116 | disabled, /sys/class/switch/* are created as symbolic links to | ||
117 | /sys/class/extcon/*. Because CONFIG_ANDROID_SWITCH creates | ||
118 | /sys/class/switch directory, we disable symboling linking if | ||
119 | CONFIG_ANDROID_SWITCH is enabled. | ||
120 | |||
121 | The two files of switch class, name and state, are provided with | ||
122 | extcon, too. When the multistate support (STEP 2 of CHAPTER 1.) is | ||
123 | not enabled or print_state callback is supplied, the output of | ||
124 | state ABI is same with switch class. | ||
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index e4b57756b9f5..56000b33340b 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -2,7 +2,14 @@ The following is a list of files and features that are going to be | |||
2 | removed in the kernel source tree. Every entry should contain what | 2 | removed in the kernel source tree. Every entry should contain what |
3 | exactly is going away, why it is happening, and who is going to be doing | 3 | exactly is going away, why it is happening, and who is going to be doing |
4 | the work. When the feature is removed from the kernel, it should also | 4 | the work. When the feature is removed from the kernel, it should also |
5 | be removed from this file. | 5 | be removed from this file. The suggested deprecation period is 3 releases. |
6 | |||
7 | --------------------------- | ||
8 | |||
9 | What: ddebug_query="query" boot cmdline param | ||
10 | When: v3.8 | ||
11 | Why: obsoleted by dyndbg="query" and module.dyndbg="query" | ||
12 | Who: Jim Cromie <jim.cromie@gmail.com>, Jason Baron <jbaron@redhat.com> | ||
6 | 13 | ||
7 | --------------------------- | 14 | --------------------------- |
8 | 15 | ||
@@ -534,6 +541,18 @@ Who: Kees Cook <keescook@chromium.org> | |||
534 | 541 | ||
535 | ---------------------------- | 542 | ---------------------------- |
536 | 543 | ||
544 | What: Removing the pn544 raw driver. | ||
545 | When: 3.6 | ||
546 | Why: With the introduction of the NFC HCI and SHDL kernel layers, pn544.c | ||
547 | is being replaced by pn544_hci.c which is accessible through the netlink | ||
548 | and socket NFC APIs. Moreover, pn544.c is outdated and does not seem to | ||
549 | work properly with the latest Android stacks. | ||
550 | Having 2 drivers for the same hardware is confusing and as such we | ||
551 | should only keep the one following the kernel NFC APIs. | ||
552 | Who: Samuel Ortiz <sameo@linux.intel.com> | ||
553 | |||
554 | ---------------------------- | ||
555 | |||
537 | What: setitimer accepts user NULL pointer (value) | 556 | What: setitimer accepts user NULL pointer (value) |
538 | When: 3.6 | 557 | When: 3.6 |
539 | Why: setitimer is not returning -EFAULT if user pointer is NULL. This | 558 | Why: setitimer is not returning -EFAULT if user pointer is NULL. This |
@@ -542,6 +561,15 @@ Who: Sasikantha Babu <sasikanth.v19@gmail.com> | |||
542 | 561 | ||
543 | ---------------------------- | 562 | ---------------------------- |
544 | 563 | ||
564 | What: remove bogus DV presets V4L2_DV_1080I29_97, V4L2_DV_1080I30 and | ||
565 | V4L2_DV_1080I25 | ||
566 | When: 3.6 | ||
567 | Why: These HDTV formats do not exist and were added by a confused mind | ||
568 | (that was me, to be precise...) | ||
569 | Who: Hans Verkuil <hans.verkuil@cisco.com> | ||
570 | |||
571 | ---------------------------- | ||
572 | |||
545 | What: V4L2_CID_HCENTER, V4L2_CID_VCENTER V4L2 controls | 573 | What: V4L2_CID_HCENTER, V4L2_CID_VCENTER V4L2 controls |
546 | When: 3.7 | 574 | When: 3.7 |
547 | Why: The V4L2_CID_VCENTER, V4L2_CID_HCENTER controls have been deprecated | 575 | Why: The V4L2_CID_VCENTER, V4L2_CID_HCENTER controls have been deprecated |
@@ -549,3 +577,38 @@ Why: The V4L2_CID_VCENTER, V4L2_CID_HCENTER controls have been deprecated | |||
549 | There are newer controls (V4L2_CID_PAN*, V4L2_CID_TILT*) that provide | 577 | There are newer controls (V4L2_CID_PAN*, V4L2_CID_TILT*) that provide |
550 | similar functionality. | 578 | similar functionality. |
551 | Who: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> | 579 | Who: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> |
580 | |||
581 | ---------------------------- | ||
582 | |||
583 | What: cgroup option updates via remount | ||
584 | When: March 2013 | ||
585 | Why: Remount currently allows changing bound subsystems and | ||
586 | release_agent. Rebinding is hardly useful as it only works | ||
587 | when the hierarchy is empty and release_agent itself should be | ||
588 | replaced with conventional fsnotify. | ||
589 | |||
590 | ---------------------------- | ||
591 | |||
592 | What: KVM debugfs statistics | ||
593 | When: 2013 | ||
594 | Why: KVM tracepoints provide mostly equivalent information in a much more | ||
595 | flexible fashion. | ||
596 | |||
597 | ---------------------------- | ||
598 | |||
599 | What: at91-mci driver ("CONFIG_MMC_AT91") | ||
600 | When: 3.7 | ||
601 | Why: There are two mci drivers: at91-mci and atmel-mci. The PDC support | ||
602 | was added to atmel-mci as a first step to support more chips. | ||
603 | Then at91-mci was kept only for old IP versions (on at91rm9200 and | ||
604 | at91sam9261). The support of these IP versions has just been added | ||
605 | to atmel-mci, so atmel-mci can be used for all chips. | ||
606 | Who: Ludovic Desroches <ludovic.desroches@atmel.com> | ||
607 | |||
608 | ---------------------------- | ||
609 | |||
610 | What: net/wanrouter/ | ||
611 | When: June 2013 | ||
612 | Why: Unsupported/unmaintained/unused since 2.6 | ||
613 | |||
614 | ---------------------------- | ||
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index 4fca82e5276e..d449e632e6a0 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
@@ -60,7 +60,6 @@ ata *); | |||
60 | ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); | 60 | ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); |
61 | ssize_t (*listxattr) (struct dentry *, char *, size_t); | 61 | ssize_t (*listxattr) (struct dentry *, char *, size_t); |
62 | int (*removexattr) (struct dentry *, const char *); | 62 | int (*removexattr) (struct dentry *, const char *); |
63 | void (*truncate_range)(struct inode *, loff_t, loff_t); | ||
64 | int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); | 63 | int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); |
65 | 64 | ||
66 | locking rules: | 65 | locking rules: |
@@ -87,7 +86,6 @@ setxattr: yes | |||
87 | getxattr: no | 86 | getxattr: no |
88 | listxattr: no | 87 | listxattr: no |
89 | removexattr: yes | 88 | removexattr: yes |
90 | truncate_range: yes | ||
91 | fiemap: no | 89 | fiemap: no |
92 | Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on | 90 | Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on |
93 | victim. | 91 | victim. |
diff --git a/Documentation/filesystems/ext3.txt b/Documentation/filesystems/ext3.txt index b100adc38adb..293855e95000 100644 --- a/Documentation/filesystems/ext3.txt +++ b/Documentation/filesystems/ext3.txt | |||
@@ -59,9 +59,9 @@ commit=nrsec (*) Ext3 can be told to sync all its data and metadata | |||
59 | Setting it to very large values will improve | 59 | Setting it to very large values will improve |
60 | performance. | 60 | performance. |
61 | 61 | ||
62 | barrier=<0(*)|1> This enables/disables the use of write barriers in | 62 | barrier=<0|1(*)> This enables/disables the use of write barriers in |
63 | barrier the jbd code. barrier=0 disables, barrier=1 enables. | 63 | barrier (*) the jbd code. barrier=0 disables, barrier=1 enables. |
64 | nobarrier (*) This also requires an IO stack which can support | 64 | nobarrier This also requires an IO stack which can support |
65 | barriers, and if jbd gets an error on a barrier | 65 | barriers, and if jbd gets an error on a barrier |
66 | write, it will disable again with a warning. | 66 | write, it will disable again with a warning. |
67 | Write barriers enforce proper on-disk ordering | 67 | Write barriers enforce proper on-disk ordering |
diff --git a/Documentation/filesystems/nfs/pnfs.txt b/Documentation/filesystems/nfs/pnfs.txt index c7919c6e3bea..52ae07f5f578 100644 --- a/Documentation/filesystems/nfs/pnfs.txt +++ b/Documentation/filesystems/nfs/pnfs.txt | |||
@@ -93,7 +93,7 @@ The API to the login script is as follows: | |||
93 | (allways exists) | 93 | (allways exists) |
94 | (More protocols can be defined in the future. | 94 | (More protocols can be defined in the future. |
95 | The client does not interpret this string it is | 95 | The client does not interpret this string it is |
96 | passed unchanged as recieved from the Server) | 96 | passed unchanged as received from the Server) |
97 | -o osdname of the requested target OSD | 97 | -o osdname of the requested target OSD |
98 | (Might be empty) | 98 | (Might be empty) |
99 | (A string which denotes the OSD name, there is a | 99 | (A string which denotes the OSD name, there is a |
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting index 74acd9618819..8c91d1057d9a 100644 --- a/Documentation/filesystems/porting +++ b/Documentation/filesystems/porting | |||
@@ -297,7 +297,8 @@ in the beginning of ->setattr unconditionally. | |||
297 | be used instead. It gets called whenever the inode is evicted, whether it has | 297 | be used instead. It gets called whenever the inode is evicted, whether it has |
298 | remaining links or not. Caller does *not* evict the pagecache or inode-associated | 298 | remaining links or not. Caller does *not* evict the pagecache or inode-associated |
299 | metadata buffers; getting rid of those is responsibility of method, as it had | 299 | metadata buffers; getting rid of those is responsibility of method, as it had |
300 | been for ->delete_inode(). | 300 | been for ->delete_inode(). Caller makes sure async writeback cannot be running |
301 | for the inode while (or after) ->evict_inode() is called. | ||
301 | 302 | ||
302 | ->drop_inode() returns int now; it's called on final iput() with | 303 | ->drop_inode() returns int now; it's called on final iput() with |
303 | inode->i_lock held and it returns true if filesystems wants the inode to be | 304 | inode->i_lock held and it returns true if filesystems wants the inode to be |
@@ -306,14 +307,11 @@ updated appropriately. generic_delete_inode() is also alive and it consists | |||
306 | simply of return 1. Note that all actual eviction work is done by caller after | 307 | simply of return 1. Note that all actual eviction work is done by caller after |
307 | ->drop_inode() returns. | 308 | ->drop_inode() returns. |
308 | 309 | ||
309 | clear_inode() is gone; use end_writeback() instead. As before, it must | 310 | As before, clear_inode() must be called exactly once on each call of |
310 | be called exactly once on each call of ->evict_inode() (as it used to be for | 311 | ->evict_inode() (as it used to be for each call of ->delete_inode()). Unlike |
311 | each call of ->delete_inode()). Unlike before, if you are using inode-associated | 312 | before, if you are using inode-associated metadata buffers (i.e. |
312 | metadata buffers (i.e. mark_buffer_dirty_inode()), it's your responsibility to | 313 | mark_buffer_dirty_inode()), it's your responsibility to call |
313 | call invalidate_inode_buffers() before end_writeback(). | 314 | invalidate_inode_buffers() before clear_inode(). |
314 | No async writeback (and thus no calls of ->write_inode()) will happen | ||
315 | after end_writeback() returns, so actions that should not overlap with ->write_inode() | ||
316 | (e.g. freeing on-disk inode if i_nlink is 0) ought to be done after that call. | ||
317 | 315 | ||
318 | NOTE: checking i_nlink in the beginning of ->write_inode() and bailing out | 316 | NOTE: checking i_nlink in the beginning of ->write_inode() and bailing out |
319 | if it's zero is not *and* *never* *had* *been* enough. Final unlink() and iput() | 317 | if it's zero is not *and* *never* *had* *been* enough. Final unlink() and iput() |
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index ef088e55ab2e..912af6ce5626 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
@@ -743,6 +743,7 @@ Committed_AS: 100056 kB | |||
743 | VmallocTotal: 112216 kB | 743 | VmallocTotal: 112216 kB |
744 | VmallocUsed: 428 kB | 744 | VmallocUsed: 428 kB |
745 | VmallocChunk: 111088 kB | 745 | VmallocChunk: 111088 kB |
746 | AnonHugePages: 49152 kB | ||
746 | 747 | ||
747 | MemTotal: Total usable ram (i.e. physical ram minus a few reserved | 748 | MemTotal: Total usable ram (i.e. physical ram minus a few reserved |
748 | bits and the kernel binary code) | 749 | bits and the kernel binary code) |
@@ -776,6 +777,7 @@ VmallocChunk: 111088 kB | |||
776 | Dirty: Memory which is waiting to get written back to the disk | 777 | Dirty: Memory which is waiting to get written back to the disk |
777 | Writeback: Memory which is actively being written back to the disk | 778 | Writeback: Memory which is actively being written back to the disk |
778 | AnonPages: Non-file backed pages mapped into userspace page tables | 779 | AnonPages: Non-file backed pages mapped into userspace page tables |
780 | AnonHugePages: Non-file backed huge pages mapped into userspace page tables | ||
779 | Mapped: files which have been mmaped, such as libraries | 781 | Mapped: files which have been mmaped, such as libraries |
780 | Slab: in-kernel data structures cache | 782 | Slab: in-kernel data structures cache |
781 | SReclaimable: Part of Slab, that might be reclaimed, such as caches | 783 | SReclaimable: Part of Slab, that might be reclaimed, such as caches |
diff --git a/Documentation/filesystems/qnx6.txt b/Documentation/filesystems/qnx6.txt index 050223ea03c7..e59f2f09f56e 100644 --- a/Documentation/filesystems/qnx6.txt +++ b/Documentation/filesystems/qnx6.txt | |||
@@ -17,7 +17,7 @@ concepts of blocks, inodes and directories. | |||
17 | On QNX it is possible to create little endian and big endian qnx6 filesystems. | 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 | 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 | 19 | for the target (QNX is used on quite a range of embedded systems) plattform |
20 | running on a different endianess. | 20 | running on a different endianness. |
21 | The Linux driver handles endianness transparently. (LE and BE) | 21 | The Linux driver handles endianness transparently. (LE and BE) |
22 | 22 | ||
23 | Blocks | 23 | Blocks |
@@ -26,7 +26,7 @@ Blocks | |||
26 | The space in the device or file is split up into blocks. These are a fixed | 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 | 27 | size of 512, 1024, 2048 or 4096, which is decided when the filesystem is |
28 | created. | 28 | created. |
29 | Blockpointers are 32bit, so the maximum space that can be adressed is | 29 | Blockpointers are 32bit, so the maximum space that can be addressed is |
30 | 2^32 * 4096 bytes or 16TB | 30 | 2^32 * 4096 bytes or 16TB |
31 | 31 | ||
32 | The superblocks | 32 | The superblocks |
@@ -47,16 +47,16 @@ inactive superblock. | |||
47 | Each superblock holds a set of root inodes for the different filesystem | 47 | Each superblock holds a set of root inodes for the different filesystem |
48 | parts. (Inode, Bitmap and Longfilenames) | 48 | parts. (Inode, Bitmap and Longfilenames) |
49 | Each of these root nodes holds information like total size of the stored | 49 | Each of these root nodes holds information like total size of the stored |
50 | data and the adressing levels in that specific tree. | 50 | data and the addressing levels in that specific tree. |
51 | If the level value is 0, up to 16 direct blocks can be adressed by each | 51 | If the level value is 0, up to 16 direct blocks can be addressed by each |
52 | node. | 52 | node. |
53 | Level 1 adds an additional indirect adressing level where each indirect | 53 | Level 1 adds an additional indirect addressing level where each indirect |
54 | adressing block holds up to blocksize / 4 bytes pointers to data blocks. | 54 | addressing block holds up to blocksize / 4 bytes pointers to data blocks. |
55 | Level 2 adds an additional indirect adressig block level (so, already up | 55 | Level 2 adds an additional indirect addressing block level (so, already up |
56 | to 16 * 256 * 256 = 1048576 blocks that can be adressed by such a tree)a | 56 | to 16 * 256 * 256 = 1048576 blocks that can be addressed by such a tree). |
57 | 57 | ||
58 | Unused block pointers are always set to ~0 - regardless of root node, | 58 | Unused block pointers are always set to ~0 - regardless of root node, |
59 | indirect adressing blocks or inodes. | 59 | indirect addressing blocks or inodes. |
60 | Data leaves are always on the lowest level. So no data is stored on upper | 60 | Data leaves are always on the lowest level. So no data is stored on upper |
61 | tree levels. | 61 | tree levels. |
62 | 62 | ||
@@ -64,7 +64,7 @@ The first Superblock is located at 0x2000. (0x2000 is the bootblock size) | |||
64 | The Audi MMI 3G first superblock directly starts at byte 0. | 64 | The Audi MMI 3G first superblock directly starts at byte 0. |
65 | Second superblock position can either be calculated from the superblock | 65 | Second superblock position can either be calculated from the superblock |
66 | information (total number of filesystem blocks) or by taking the highest | 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 | 67 | device address, zeroing the last 3 bytes and then subtracting 0x1000 from |
68 | that address. | 68 | that address. |
69 | 69 | ||
70 | 0x1000 is the size reserved for each superblock - regardless of the | 70 | 0x1000 is the size reserved for each superblock - regardless of the |
@@ -83,8 +83,8 @@ size, number of blocks used, access time, change time and modification time. | |||
83 | Object mode field is POSIX format. (which makes things easier) | 83 | Object mode field is POSIX format. (which makes things easier) |
84 | 84 | ||
85 | There are also pointers to the first 16 blocks, if the object data can be | 85 | There are also pointers to the first 16 blocks, if the object data can be |
86 | adressed with 16 direct blocks. | 86 | addressed with 16 direct blocks. |
87 | For more than 16 blocks an indirect adressing in form of another tree is | 87 | For more than 16 blocks an indirect addressing in form of another tree is |
88 | used. (scheme is the same as the one used for the superblock root nodes) | 88 | used. (scheme is the same as the one used for the superblock root nodes) |
89 | 89 | ||
90 | The filesize is stored 64bit. Inode counting starts with 1. (whilst long | 90 | The filesize is stored 64bit. Inode counting starts with 1. (whilst long |
@@ -118,13 +118,13 @@ no block pointers and the directory file record pointing to the target file | |||
118 | inode. | 118 | inode. |
119 | 119 | ||
120 | Character and block special devices do not exist in QNX as those files | 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 | 121 | are handled by the QNX kernel/drivers and created in /dev independent of the |
122 | underlaying filesystem. | 122 | underlaying filesystem. |
123 | 123 | ||
124 | Long filenames | 124 | Long filenames |
125 | -------------- | 125 | -------------- |
126 | 126 | ||
127 | Long filenames are stored in a seperate adressing tree. The staring point | 127 | Long filenames are stored in a separate addressing tree. The staring point |
128 | is the longfilename root node in the active superblock. | 128 | is the longfilename root node in the active superblock. |
129 | Each data block (tree leaves) holds one long filename. That filename is | 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 | 130 | limited to 510 bytes. The first two starting bytes are used as length field |
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 0d0492028082..ef19f91a0f12 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -363,7 +363,6 @@ struct inode_operations { | |||
363 | ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); | 363 | ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); |
364 | ssize_t (*listxattr) (struct dentry *, char *, size_t); | 364 | ssize_t (*listxattr) (struct dentry *, char *, size_t); |
365 | int (*removexattr) (struct dentry *, const char *); | 365 | int (*removexattr) (struct dentry *, const char *); |
366 | void (*truncate_range)(struct inode *, loff_t, loff_t); | ||
367 | }; | 366 | }; |
368 | 367 | ||
369 | Again, all methods are called without any locks being held, unless | 368 | Again, all methods are called without any locks being held, unless |
@@ -472,9 +471,6 @@ otherwise noted. | |||
472 | removexattr: called by the VFS to remove an extended attribute from | 471 | removexattr: called by the VFS to remove an extended attribute from |
473 | a file. This method is called by removexattr(2) system call. | 472 | a file. This method is called by removexattr(2) system call. |
474 | 473 | ||
475 | truncate_range: a method provided by the underlying filesystem to truncate a | ||
476 | range of blocks , i.e. punch a hole somewhere in a file. | ||
477 | |||
478 | 474 | ||
479 | The Address Space Object | 475 | The Address Space Object |
480 | ======================== | 476 | ======================== |
@@ -760,7 +756,7 @@ struct file_operations | |||
760 | ---------------------- | 756 | ---------------------- |
761 | 757 | ||
762 | This describes how the VFS can manipulate an open file. As of kernel | 758 | This describes how the VFS can manipulate an open file. As of kernel |
763 | 2.6.22, the following members are defined: | 759 | 3.5, the following members are defined: |
764 | 760 | ||
765 | struct file_operations { | 761 | struct file_operations { |
766 | struct module *owner; | 762 | struct module *owner; |
@@ -790,6 +786,8 @@ struct file_operations { | |||
790 | int (*flock) (struct file *, int, struct file_lock *); | 786 | int (*flock) (struct file *, int, struct file_lock *); |
791 | ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, size_t, unsigned int); | 787 | ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, size_t, unsigned int); |
792 | ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int); | 788 | ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int); |
789 | int (*setlease)(struct file *, long arg, struct file_lock **); | ||
790 | long (*fallocate)(struct file *, int mode, loff_t offset, loff_t len); | ||
793 | }; | 791 | }; |
794 | 792 | ||
795 | Again, all methods are called without any locks being held, unless | 793 | Again, all methods are called without any locks being held, unless |
@@ -858,6 +856,11 @@ otherwise noted. | |||
858 | splice_read: called by the VFS to splice data from file to a pipe. This | 856 | splice_read: called by the VFS to splice data from file to a pipe. This |
859 | method is used by the splice(2) system call | 857 | method is used by the splice(2) system call |
860 | 858 | ||
859 | setlease: called by the VFS to set or release a file lock lease. | ||
860 | setlease has the file_lock_lock held and must not sleep. | ||
861 | |||
862 | fallocate: called by the VFS to preallocate blocks or punch a hole. | ||
863 | |||
861 | Note that the file operations are implemented by the specific | 864 | Note that the file operations are implemented by the specific |
862 | filesystem in which the inode resides. When opening a device node | 865 | filesystem in which the inode resides. When opening a device node |
863 | (character or block special) most filesystems will call special | 866 | (character or block special) most filesystems will call special |
diff --git a/Documentation/gpio.txt b/Documentation/gpio.txt index 620a07844e8c..e08a883de36e 100644 --- a/Documentation/gpio.txt +++ b/Documentation/gpio.txt | |||
@@ -322,6 +322,9 @@ where 'flags' is currently defined to specify the following properties: | |||
322 | * GPIOF_OPEN_DRAIN - gpio pin is open drain type. | 322 | * GPIOF_OPEN_DRAIN - gpio pin is open drain type. |
323 | * GPIOF_OPEN_SOURCE - gpio pin is open source type. | 323 | * GPIOF_OPEN_SOURCE - gpio pin is open source type. |
324 | 324 | ||
325 | * GPIOF_EXPORT_DIR_FIXED - export gpio to sysfs, keep direction | ||
326 | * GPIOF_EXPORT_DIR_CHANGEABLE - also export, allow changing direction | ||
327 | |||
325 | since GPIOF_INIT_* are only valid when configured as output, so group valid | 328 | since GPIOF_INIT_* are only valid when configured as output, so group valid |
326 | combinations as: | 329 | combinations as: |
327 | 330 | ||
diff --git a/Documentation/hwmon/ina2xx b/Documentation/hwmon/ina2xx new file mode 100644 index 000000000000..f50a6cc27616 --- /dev/null +++ b/Documentation/hwmon/ina2xx | |||
@@ -0,0 +1,29 @@ | |||
1 | Kernel driver ina2xx | ||
2 | ==================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Texas Instruments INA219 | ||
6 | Prefix: 'ina219' | ||
7 | Addresses: I2C 0x40 - 0x4f | ||
8 | Datasheet: Publicly available at the Texas Instruments website | ||
9 | http://www.ti.com/ | ||
10 | |||
11 | * Texas Instruments INA226 | ||
12 | Prefix: 'ina226' | ||
13 | Addresses: I2C 0x40 - 0x4f | ||
14 | Datasheet: Publicly available at the Texas Instruments website | ||
15 | http://www.ti.com/ | ||
16 | |||
17 | Author: Lothar Felten <l-felten@ti.com> | ||
18 | |||
19 | Description | ||
20 | ----------- | ||
21 | |||
22 | The INA219 is a high-side current shunt and power monitor with an I2C | ||
23 | interface. The INA219 monitors both shunt drop and supply voltage, with | ||
24 | programmable conversion times and filtering. | ||
25 | |||
26 | The INA226 is a current shunt and power monitor with an I2C interface. | ||
27 | The INA226 monitors both a shunt voltage drop and bus supply voltage. | ||
28 | |||
29 | The shunt value in micro-ohms can be set via platform data. | ||
diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87 index 23b7def21ba8..87850d86c559 100644 --- a/Documentation/hwmon/it87 +++ b/Documentation/hwmon/it87 | |||
@@ -30,6 +30,14 @@ Supported chips: | |||
30 | Prefix: 'it8728' | 30 | Prefix: 'it8728' |
31 | Addresses scanned: from Super I/O config space (8 I/O ports) | 31 | Addresses scanned: from Super I/O config space (8 I/O ports) |
32 | Datasheet: Not publicly available | 32 | Datasheet: Not publicly available |
33 | * IT8782F | ||
34 | Prefix: 'it8782' | ||
35 | Addresses scanned: from Super I/O config space (8 I/O ports) | ||
36 | Datasheet: Not publicly available | ||
37 | * IT8783E/F | ||
38 | Prefix: 'it8783' | ||
39 | Addresses scanned: from Super I/O config space (8 I/O ports) | ||
40 | Datasheet: Not publicly available | ||
33 | * SiS950 [clone of IT8705F] | 41 | * SiS950 [clone of IT8705F] |
34 | Prefix: 'it87' | 42 | Prefix: 'it87' |
35 | Addresses scanned: from Super I/O config space (8 I/O ports) | 43 | Addresses scanned: from Super I/O config space (8 I/O ports) |
@@ -63,7 +71,7 @@ Module Parameters | |||
63 | Hardware Interfaces | 71 | Hardware Interfaces |
64 | ------------------- | 72 | ------------------- |
65 | 73 | ||
66 | All the chips suported by this driver are LPC Super-I/O chips, accessed | 74 | All the chips supported by this driver are LPC Super-I/O chips, accessed |
67 | through the LPC bus (ISA-like I/O ports). The IT8712F additionally has an | 75 | through the LPC bus (ISA-like I/O ports). The IT8712F additionally has an |
68 | SMBus interface to the hardware monitoring functions. This driver no | 76 | SMBus interface to the hardware monitoring functions. This driver no |
69 | longer supports this interface though, as it is slower and less reliable | 77 | longer supports this interface though, as it is slower and less reliable |
@@ -75,7 +83,8 @@ Description | |||
75 | ----------- | 83 | ----------- |
76 | 84 | ||
77 | This driver implements support for the IT8705F, IT8712F, IT8716F, | 85 | This driver implements support for the IT8705F, IT8712F, IT8716F, |
78 | IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E and SiS950 chips. | 86 | IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, IT8781F, IT8782F, |
87 | IT8783E/F, and SiS950 chips. | ||
79 | 88 | ||
80 | These chips are 'Super I/O chips', supporting floppy disks, infrared ports, | 89 | These chips are 'Super I/O chips', supporting floppy disks, infrared ports, |
81 | joysticks and other miscellaneous stuff. For hardware monitoring, they | 90 | joysticks and other miscellaneous stuff. For hardware monitoring, they |
@@ -99,11 +108,11 @@ The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E and later IT8712F revisions | |||
99 | have support for 2 additional fans. The additional fans are supported by the | 108 | have support for 2 additional fans. The additional fans are supported by the |
100 | driver. | 109 | driver. |
101 | 110 | ||
102 | The IT8716F, IT8718F, IT8720F and IT8721F/IT8758E, and late IT8712F and | 111 | The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E, IT8782F, IT8783E/F, and late |
103 | IT8705F also have optional 16-bit tachometer counters for fans 1 to 3. This | 112 | IT8712F and IT8705F also have optional 16-bit tachometer counters for fans 1 to |
104 | is better (no more fan clock divider mess) but not compatible with the older | 113 | 3. This is better (no more fan clock divider mess) but not compatible with the |
105 | chips and revisions. The 16-bit tachometer mode is enabled by the driver when | 114 | older chips and revisions. The 16-bit tachometer mode is enabled by the driver |
106 | one of the above chips is detected. | 115 | when one of the above chips is detected. |
107 | 116 | ||
108 | The IT8726F is just bit enhanced IT8716F with additional hardware | 117 | The IT8726F is just bit enhanced IT8716F with additional hardware |
109 | for AMD power sequencing. Therefore the chip will appear as IT8716F | 118 | for AMD power sequencing. Therefore the chip will appear as IT8716F |
@@ -131,9 +140,10 @@ inputs can measure voltages between 0 and 4.08 volts, with a resolution of | |||
131 | 0.016 volt (except IT8721F/IT8758E and IT8728F: 0.012 volt.) The battery | 140 | 0.016 volt (except IT8721F/IT8758E and IT8728F: 0.012 volt.) The battery |
132 | voltage in8 does not have limit registers. | 141 | voltage in8 does not have limit registers. |
133 | 142 | ||
134 | On the IT8721F/IT8758E, some voltage inputs are internal and scaled inside | 143 | On the IT8721F/IT8758E, IT8782F, and IT8783E/F, some voltage inputs are |
135 | the chip (in7, in8 and optionally in3). The driver handles this transparently | 144 | internal and scaled inside the chip (in7 (optional for IT8782F and IT8783E/F), |
136 | so user-space doesn't have to care. | 145 | in8 and optionally in3). The driver handles this transparently so user-space |
146 | doesn't have to care. | ||
137 | 147 | ||
138 | The VID lines (IT8712F/IT8716F/IT8718F/IT8720F) encode the core voltage value: | 148 | The VID lines (IT8712F/IT8716F/IT8718F/IT8720F) encode the core voltage value: |
139 | the voltage level your processor should work with. This is hardcoded by | 149 | the voltage level your processor should work with. This is hardcoded by |
diff --git a/Documentation/hwmon/wm831x b/Documentation/hwmon/wm831x index 24f47d8f6a42..11446757c8c8 100644 --- a/Documentation/hwmon/wm831x +++ b/Documentation/hwmon/wm831x | |||
@@ -22,7 +22,7 @@ reporting of all the input values but does not provide any alarms. | |||
22 | Voltage Monitoring | 22 | Voltage Monitoring |
23 | ------------------ | 23 | ------------------ |
24 | 24 | ||
25 | Voltages are sampled by a 12 bit ADC. Voltages in milivolts are 1.465 | 25 | Voltages are sampled by a 12 bit ADC. Voltages in millivolts are 1.465 |
26 | times the ADC value. | 26 | times the ADC value. |
27 | 27 | ||
28 | Temperature Monitoring | 28 | Temperature Monitoring |
diff --git a/Documentation/i2c/functionality b/Documentation/i2c/functionality index 42c17c1fb3cd..b0ff2ab596ce 100644 --- a/Documentation/i2c/functionality +++ b/Documentation/i2c/functionality | |||
@@ -18,9 +18,9 @@ For the most up-to-date list of functionality constants, please check | |||
18 | adapters typically can not do these) | 18 | adapters typically can not do these) |
19 | I2C_FUNC_10BIT_ADDR Handles the 10-bit address extensions | 19 | I2C_FUNC_10BIT_ADDR Handles the 10-bit address extensions |
20 | I2C_FUNC_PROTOCOL_MANGLING Knows about the I2C_M_IGNORE_NAK, | 20 | I2C_FUNC_PROTOCOL_MANGLING Knows about the I2C_M_IGNORE_NAK, |
21 | I2C_M_REV_DIR_ADDR, I2C_M_NOSTART and | 21 | I2C_M_REV_DIR_ADDR and I2C_M_NO_RD_ACK |
22 | I2C_M_NO_RD_ACK flags (which modify the | 22 | flags (which modify the I2C protocol!) |
23 | I2C protocol!) | 23 | I2C_FUNC_NOSTART Can skip repeated start sequence |
24 | I2C_FUNC_SMBUS_QUICK Handles the SMBus write_quick command | 24 | I2C_FUNC_SMBUS_QUICK Handles the SMBus write_quick command |
25 | I2C_FUNC_SMBUS_READ_BYTE Handles the SMBus read_byte command | 25 | I2C_FUNC_SMBUS_READ_BYTE Handles the SMBus read_byte command |
26 | I2C_FUNC_SMBUS_WRITE_BYTE Handles the SMBus write_byte command | 26 | I2C_FUNC_SMBUS_WRITE_BYTE Handles the SMBus write_byte command |
@@ -50,6 +50,9 @@ A few combinations of the above flags are also defined for your convenience: | |||
50 | emulated by a real I2C adapter (using | 50 | emulated by a real I2C adapter (using |
51 | the transparent emulation layer) | 51 | the transparent emulation layer) |
52 | 52 | ||
53 | In kernel versions prior to 3.5 I2C_FUNC_NOSTART was implemented as | ||
54 | part of I2C_FUNC_PROTOCOL_MANGLING. | ||
55 | |||
53 | 56 | ||
54 | ADAPTER IMPLEMENTATION | 57 | ADAPTER IMPLEMENTATION |
55 | ---------------------- | 58 | ---------------------- |
diff --git a/Documentation/i2c/i2c-protocol b/Documentation/i2c/i2c-protocol index 10518dd58814..0b3e62d1f77a 100644 --- a/Documentation/i2c/i2c-protocol +++ b/Documentation/i2c/i2c-protocol | |||
@@ -49,7 +49,9 @@ a byte read, followed by a byte write: | |||
49 | Modified transactions | 49 | Modified transactions |
50 | ===================== | 50 | ===================== |
51 | 51 | ||
52 | We have found some I2C devices that needs the following modifications: | 52 | The following modifications to the I2C protocol can also be generated, |
53 | with the exception of I2C_M_NOSTART these are usually only needed to | ||
54 | work around device issues: | ||
53 | 55 | ||
54 | Flag I2C_M_NOSTART: | 56 | Flag I2C_M_NOSTART: |
55 | In a combined transaction, no 'S Addr Wr/Rd [A]' is generated at some | 57 | In a combined transaction, no 'S Addr Wr/Rd [A]' is generated at some |
@@ -60,6 +62,11 @@ We have found some I2C devices that needs the following modifications: | |||
60 | we do not generate Addr, but we do generate the startbit S. This will | 62 | we do not generate Addr, but we do generate the startbit S. This will |
61 | probably confuse all other clients on your bus, so don't try this. | 63 | probably confuse all other clients on your bus, so don't try this. |
62 | 64 | ||
65 | This is often used to gather transmits from multiple data buffers in | ||
66 | system memory into something that appears as a single transfer to the | ||
67 | I2C device but may also be used between direction changes by some | ||
68 | rare devices. | ||
69 | |||
63 | Flags I2C_M_REV_DIR_ADDR | 70 | Flags I2C_M_REV_DIR_ADDR |
64 | This toggles the Rd/Wr flag. That is, if you want to do a write, but | 71 | This toggles the Rd/Wr flag. That is, if you want to do a write, but |
65 | need to emit an Rd instead of a Wr, or vice versa, you set this | 72 | need to emit an Rd instead of a Wr, or vice versa, you set this |
diff --git a/Documentation/i2c/muxes/gpio-i2cmux b/Documentation/i2c/muxes/i2c-mux-gpio index 811cd78d4cdc..bd9b2299b739 100644 --- a/Documentation/i2c/muxes/gpio-i2cmux +++ b/Documentation/i2c/muxes/i2c-mux-gpio | |||
@@ -1,11 +1,11 @@ | |||
1 | Kernel driver gpio-i2cmux | 1 | Kernel driver i2c-gpio-mux |
2 | 2 | ||
3 | Author: Peter Korsgaard <peter.korsgaard@barco.com> | 3 | Author: Peter Korsgaard <peter.korsgaard@barco.com> |
4 | 4 | ||
5 | Description | 5 | Description |
6 | ----------- | 6 | ----------- |
7 | 7 | ||
8 | gpio-i2cmux is an i2c mux driver providing access to I2C bus segments | 8 | i2c-gpio-mux is an i2c mux driver providing access to I2C bus segments |
9 | from a master I2C bus and a hardware MUX controlled through GPIO pins. | 9 | from a master I2C bus and a hardware MUX controlled through GPIO pins. |
10 | 10 | ||
11 | E.G.: | 11 | E.G.: |
@@ -26,16 +26,16 @@ according to the settings of the GPIO pins 1..N. | |||
26 | Usage | 26 | Usage |
27 | ----- | 27 | ----- |
28 | 28 | ||
29 | gpio-i2cmux uses the platform bus, so you need to provide a struct | 29 | i2c-gpio-mux uses the platform bus, so you need to provide a struct |
30 | platform_device with the platform_data pointing to a struct | 30 | platform_device with the platform_data pointing to a struct |
31 | gpio_i2cmux_platform_data with the I2C adapter number of the master | 31 | gpio_i2cmux_platform_data with the I2C adapter number of the master |
32 | bus, the number of bus segments to create and the GPIO pins used | 32 | bus, the number of bus segments to create and the GPIO pins used |
33 | to control it. See include/linux/gpio-i2cmux.h for details. | 33 | to control it. See include/linux/i2c-gpio-mux.h for details. |
34 | 34 | ||
35 | E.G. something like this for a MUX providing 4 bus segments | 35 | E.G. something like this for a MUX providing 4 bus segments |
36 | controlled through 3 GPIO pins: | 36 | controlled through 3 GPIO pins: |
37 | 37 | ||
38 | #include <linux/gpio-i2cmux.h> | 38 | #include <linux/i2c-gpio-mux.h> |
39 | #include <linux/platform_device.h> | 39 | #include <linux/platform_device.h> |
40 | 40 | ||
41 | static const unsigned myboard_gpiomux_gpios[] = { | 41 | static const unsigned myboard_gpiomux_gpios[] = { |
@@ -57,7 +57,7 @@ static struct gpio_i2cmux_platform_data myboard_i2cmux_data = { | |||
57 | }; | 57 | }; |
58 | 58 | ||
59 | static struct platform_device myboard_i2cmux = { | 59 | static struct platform_device myboard_i2cmux = { |
60 | .name = "gpio-i2cmux", | 60 | .name = "i2c-gpio-mux", |
61 | .id = 0, | 61 | .id = 0, |
62 | .dev = { | 62 | .dev = { |
63 | .platform_data = &myboard_i2cmux_data, | 63 | .platform_data = &myboard_i2cmux_data, |
diff --git a/Documentation/initrd.txt b/Documentation/initrd.txt index 1ba84f3584e3..4e1839ccb555 100644 --- a/Documentation/initrd.txt +++ b/Documentation/initrd.txt | |||
@@ -362,5 +362,5 @@ Resources | |||
362 | http://www.almesberger.net/cv/papers/ols2k-9.ps.gz | 362 | http://www.almesberger.net/cv/papers/ols2k-9.ps.gz |
363 | [2] newlib package (experimental), with initrd example | 363 | [2] newlib package (experimental), with initrd example |
364 | http://sources.redhat.com/newlib/ | 364 | http://sources.redhat.com/newlib/ |
365 | [3] Brouwer, Andries; "util-linux: Miscellaneous utilities for Linux" | 365 | [3] util-linux: Miscellaneous utilities for Linux |
366 | ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux/ | 366 | http://www.kernel.org/pub/linux/utils/util-linux/ |
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt index e34b531dc316..915f28c470e9 100644 --- a/Documentation/ioctl/ioctl-number.txt +++ b/Documentation/ioctl/ioctl-number.txt | |||
@@ -120,6 +120,7 @@ Code Seq#(hex) Include File Comments | |||
120 | 'G' 00-0F linux/gigaset_dev.h conflict! | 120 | 'G' 00-0F linux/gigaset_dev.h conflict! |
121 | 'H' 00-7F linux/hiddev.h conflict! | 121 | 'H' 00-7F linux/hiddev.h conflict! |
122 | 'H' 00-0F linux/hidraw.h conflict! | 122 | 'H' 00-0F linux/hidraw.h conflict! |
123 | 'H' 01 linux/mei.h conflict! | ||
123 | 'H' 00-0F sound/asound.h conflict! | 124 | 'H' 00-0F sound/asound.h conflict! |
124 | 'H' 20-40 sound/asound_fm.h conflict! | 125 | 'H' 20-40 sound/asound_fm.h conflict! |
125 | 'H' 80-8F sound/sfnt_info.h conflict! | 126 | 'H' 80-8F sound/sfnt_info.h conflict! |
diff --git a/Documentation/kbuild/kbuild.txt b/Documentation/kbuild/kbuild.txt index 68e32bb6bd80..6466704d47b5 100644 --- a/Documentation/kbuild/kbuild.txt +++ b/Documentation/kbuild/kbuild.txt | |||
@@ -50,6 +50,10 @@ LDFLAGS_MODULE | |||
50 | -------------------------------------------------- | 50 | -------------------------------------------------- |
51 | Additional options used for $(LD) when linking modules. | 51 | Additional options used for $(LD) when linking modules. |
52 | 52 | ||
53 | LDFLAGS_vmlinux | ||
54 | -------------------------------------------------- | ||
55 | Additional options passed to final link of vmlinux. | ||
56 | |||
53 | KBUILD_VERBOSE | 57 | KBUILD_VERBOSE |
54 | -------------------------------------------------- | 58 | -------------------------------------------------- |
55 | Set the kbuild verbosity. Can be assigned same values as "V=...". | 59 | Set the kbuild verbosity. Can be assigned same values as "V=...". |
@@ -214,3 +218,18 @@ KBUILD_BUILD_USER, KBUILD_BUILD_HOST | |||
214 | These two variables allow to override the user@host string displayed during | 218 | These two variables allow to override the user@host string displayed during |
215 | boot and in /proc/version. The default value is the output of the commands | 219 | boot and in /proc/version. The default value is the output of the commands |
216 | whoami and host, respectively. | 220 | whoami and host, respectively. |
221 | |||
222 | KBUILD_LDS | ||
223 | -------------------------------------------------- | ||
224 | The linker script with full path. Assigned by the top-level Makefile. | ||
225 | |||
226 | KBUILD_VMLINUX_INIT | ||
227 | -------------------------------------------------- | ||
228 | All object files for the init (first) part of vmlinux. | ||
229 | Files specified with KBUILD_VMLINUX_INIT are linked first. | ||
230 | |||
231 | KBUILD_VMLINUX_MAIN | ||
232 | -------------------------------------------------- | ||
233 | All object files for the main part of vmlinux. | ||
234 | KBUILD_VMLINUX_INIT and KBUILD_VMLINUX_MAIN together specify | ||
235 | all the object files used to link vmlinux. | ||
diff --git a/Documentation/kbuild/kconfig.txt b/Documentation/kbuild/kconfig.txt index 9d5f2a90dca9..a09f1a6a830c 100644 --- a/Documentation/kbuild/kconfig.txt +++ b/Documentation/kbuild/kconfig.txt | |||
@@ -53,15 +53,15 @@ KCONFIG_ALLCONFIG | |||
53 | -------------------------------------------------- | 53 | -------------------------------------------------- |
54 | (partially based on lkml email from/by Rob Landley, re: miniconfig) | 54 | (partially based on lkml email from/by Rob Landley, re: miniconfig) |
55 | -------------------------------------------------- | 55 | -------------------------------------------------- |
56 | The allyesconfig/allmodconfig/allnoconfig/randconfig variants can | 56 | The allyesconfig/allmodconfig/allnoconfig/randconfig variants can also |
57 | also use the environment variable KCONFIG_ALLCONFIG as a flag or a | 57 | use the environment variable KCONFIG_ALLCONFIG as a flag or a filename |
58 | filename that contains config symbols that the user requires to be | 58 | that contains config symbols that the user requires to be set to a |
59 | set to a specific value. If KCONFIG_ALLCONFIG is used without a | 59 | specific value. If KCONFIG_ALLCONFIG is used without a filename where |
60 | filename, "make *config" checks for a file named | 60 | KCONFIG_ALLCONFIG == "" or KCONFIG_ALLCONFIG == "1", "make *config" |
61 | "all{yes/mod/no/def/random}.config" (corresponding to the *config command | 61 | checks for a file named "all{yes/mod/no/def/random}.config" |
62 | that was used) for symbol values that are to be forced. If this file | 62 | (corresponding to the *config command that was used) for symbol values |
63 | is not found, it checks for a file named "all.config" to contain forced | 63 | that are to be forced. If this file is not found, it checks for a |
64 | values. | 64 | file named "all.config" to contain forced values. |
65 | 65 | ||
66 | This enables you to create "miniature" config (miniconfig) or custom | 66 | This enables you to create "miniature" config (miniconfig) or custom |
67 | config files containing just the config symbols that you are interested | 67 | config files containing just the config symbols that you are interested |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index e275432ef2c7..c45513d806ab 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -70,7 +70,6 @@ parameter is applicable: | |||
70 | M68k M68k architecture is enabled. | 70 | M68k M68k architecture is enabled. |
71 | These options have more detailed description inside of | 71 | These options have more detailed description inside of |
72 | Documentation/m68k/kernel-options.txt. | 72 | Documentation/m68k/kernel-options.txt. |
73 | MCA MCA bus support is enabled. | ||
74 | MDA MDA console support is enabled. | 73 | MDA MDA console support is enabled. |
75 | MIPS MIPS architecture is enabled. | 74 | MIPS MIPS architecture is enabled. |
76 | MOUSE Appropriate mouse support is enabled. | 75 | MOUSE Appropriate mouse support is enabled. |
@@ -336,6 +335,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
336 | requirements as needed. This option | 335 | requirements as needed. This option |
337 | does not override iommu=pt | 336 | does not override iommu=pt |
338 | 337 | ||
338 | amd_iommu_dump= [HW,X86-64] | ||
339 | Enable AMD IOMMU driver option to dump the ACPI table | ||
340 | for AMD IOMMU. With this option enabled, AMD IOMMU | ||
341 | driver will print ACPI tables for AMD IOMMU during | ||
342 | IOMMU initialization. | ||
343 | |||
339 | amijoy.map= [HW,JOY] Amiga joystick support | 344 | amijoy.map= [HW,JOY] Amiga joystick support |
340 | Map of devices attached to JOY0DAT and JOY1DAT | 345 | Map of devices attached to JOY0DAT and JOY1DAT |
341 | Format: <a>,<b> | 346 | Format: <a>,<b> |
@@ -398,8 +403,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
398 | atkbd.softrepeat= [HW] | 403 | atkbd.softrepeat= [HW] |
399 | Use software keyboard repeat | 404 | Use software keyboard repeat |
400 | 405 | ||
401 | autotest [IA-64] | ||
402 | |||
403 | baycom_epp= [HW,AX25] | 406 | baycom_epp= [HW,AX25] |
404 | Format: <io>,<mode> | 407 | Format: <io>,<mode> |
405 | 408 | ||
@@ -509,6 +512,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
509 | Also note the kernel might malfunction if you disable | 512 | Also note the kernel might malfunction if you disable |
510 | some critical bits. | 513 | some critical bits. |
511 | 514 | ||
515 | cma=nn[MG] [ARM,KNL] | ||
516 | Sets the size of kernel global memory area for contiguous | ||
517 | memory allocations. For more information, see | ||
518 | include/linux/dma-contiguous.h | ||
519 | |||
512 | cmo_free_hint= [PPC] Format: { yes | no } | 520 | cmo_free_hint= [PPC] Format: { yes | no } |
513 | Specify whether pages are marked as being inactive | 521 | Specify whether pages are marked as being inactive |
514 | when they are freed. This is used in CMO environments | 522 | when they are freed. This is used in CMO environments |
@@ -516,6 +524,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
516 | a hypervisor. | 524 | a hypervisor. |
517 | Default: yes | 525 | Default: yes |
518 | 526 | ||
527 | coherent_pool=nn[KMG] [ARM,KNL] | ||
528 | Sets the size of memory pool for coherent, atomic dma | ||
529 | allocations if Contiguous Memory Allocator (CMA) is used. | ||
530 | |||
519 | code_bytes [X86] How many bytes of object code to print | 531 | code_bytes [X86] How many bytes of object code to print |
520 | in an oops report. | 532 | in an oops report. |
521 | Range: 0 - 8192 | 533 | Range: 0 - 8192 |
@@ -611,7 +623,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
611 | 623 | ||
612 | ddebug_query= [KNL,DYNAMIC_DEBUG] Enable debug messages at early boot | 624 | ddebug_query= [KNL,DYNAMIC_DEBUG] Enable debug messages at early boot |
613 | time. See Documentation/dynamic-debug-howto.txt for | 625 | time. See Documentation/dynamic-debug-howto.txt for |
614 | details. | 626 | details. Deprecated, see dyndbg. |
615 | 627 | ||
616 | debug [KNL] Enable kernel debugging (events log level). | 628 | debug [KNL] Enable kernel debugging (events log level). |
617 | 629 | ||
@@ -731,6 +743,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
731 | 743 | ||
732 | dscc4.setup= [NET] | 744 | dscc4.setup= [NET] |
733 | 745 | ||
746 | dyndbg[="val"] [KNL,DYNAMIC_DEBUG] | ||
747 | module.dyndbg[="val"] | ||
748 | Enable debug messages at boot time. See | ||
749 | Documentation/dynamic-debug-howto.txt for details. | ||
750 | |||
734 | earlycon= [KNL] Output early console device and options. | 751 | earlycon= [KNL] Output early console device and options. |
735 | uart[8250],io,<addr>[,options] | 752 | uart[8250],io,<addr>[,options] |
736 | uart[8250],mmio,<addr>[,options] | 753 | uart[8250],mmio,<addr>[,options] |
@@ -983,6 +1000,20 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
983 | i8k.restricted [HW] Allow controlling fans only if SYS_ADMIN | 1000 | i8k.restricted [HW] Allow controlling fans only if SYS_ADMIN |
984 | capability is set. | 1001 | capability is set. |
985 | 1002 | ||
1003 | i915.invert_brightness= | ||
1004 | [DRM] Invert the sense of the variable that is used to | ||
1005 | set the brightness of the panel backlight. Normally a | ||
1006 | brightness value of 0 indicates backlight switched off, | ||
1007 | and the maximum of the brightness value sets the backlight | ||
1008 | to maximum brightness. If this parameter is set to 0 | ||
1009 | (default) and the machine requires it, or this parameter | ||
1010 | is set to 1, a brightness value of 0 sets the backlight | ||
1011 | to maximum brightness, and the maximum of the brightness | ||
1012 | value switches the backlight off. | ||
1013 | -1 -- never invert brightness | ||
1014 | 0 -- machine default | ||
1015 | 1 -- force brightness inversion | ||
1016 | |||
986 | icn= [HW,ISDN] | 1017 | icn= [HW,ISDN] |
987 | Format: <io>[,<membase>[,<icn_id>[,<icn_id2>]]] | 1018 | Format: <io>[,<membase>[,<icn_id>[,<icn_id2>]]] |
988 | 1019 | ||
@@ -1426,8 +1457,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1426 | devices can be requested on-demand with the | 1457 | devices can be requested on-demand with the |
1427 | /dev/loop-control interface. | 1458 | /dev/loop-control interface. |
1428 | 1459 | ||
1429 | mcatest= [IA-64] | ||
1430 | |||
1431 | mce [X86-32] Machine Check Exception | 1460 | mce [X86-32] Machine Check Exception |
1432 | 1461 | ||
1433 | mce=option [X86-64] See Documentation/x86/x86_64/boot-options.txt | 1462 | mce=option [X86-64] See Documentation/x86/x86_64/boot-options.txt |
@@ -2458,6 +2487,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2458 | 2487 | ||
2459 | resume= [SWSUSP] | 2488 | resume= [SWSUSP] |
2460 | Specify the partition device for software suspend | 2489 | Specify the partition device for software suspend |
2490 | Format: | ||
2491 | {/dev/<dev> | PARTUUID=<uuid> | <int>:<int> | <hex>} | ||
2461 | 2492 | ||
2462 | resume_offset= [SWSUSP] | 2493 | resume_offset= [SWSUSP] |
2463 | Specify the offset from the beginning of the partition | 2494 | Specify the offset from the beginning of the partition |
diff --git a/Documentation/leds/ledtrig-transient.txt b/Documentation/leds/ledtrig-transient.txt new file mode 100644 index 000000000000..3bd38b487df1 --- /dev/null +++ b/Documentation/leds/ledtrig-transient.txt | |||
@@ -0,0 +1,152 @@ | |||
1 | LED Transient Trigger | ||
2 | ===================== | ||
3 | |||
4 | The leds timer trigger does not currently have an interface to activate | ||
5 | a one shot timer. The current support allows for setting two timers, one for | ||
6 | specifying how long a state to be on, and the second for how long the state | ||
7 | to be off. The delay_on value specifies the time period an LED should stay | ||
8 | in on state, followed by a delay_off value that specifies how long the LED | ||
9 | should stay in off state. The on and off cycle repeats until the trigger | ||
10 | gets deactivated. There is no provision for one time activation to implement | ||
11 | features that require an on or off state to be held just once and then stay in | ||
12 | the original state forever. | ||
13 | |||
14 | Without one shot timer interface, user space can still use timer trigger to | ||
15 | set a timer to hold a state, however when user space application crashes or | ||
16 | goes away without deactivating the timer, the hardware will be left in that | ||
17 | state permanently. | ||
18 | |||
19 | As a specific example of this use-case, let's look at vibrate feature on | ||
20 | phones. Vibrate function on phones is implemented using PWM pins on SoC or | ||
21 | PMIC. There is a need to activate one shot timer to control the vibrate | ||
22 | feature, to prevent user space crashes leaving the phone in vibrate mode | ||
23 | permanently causing the battery to drain. | ||
24 | |||
25 | Transient trigger addresses the need for one shot timer activation. The | ||
26 | transient trigger can be enabled and disabled just like the other leds | ||
27 | triggers. | ||
28 | |||
29 | When an led class device driver registers itself, it can specify all leds | ||
30 | triggers it supports and a default trigger. During registration, activation | ||
31 | routine for the default trigger gets called. During registration of an led | ||
32 | class device, the LED state does not change. | ||
33 | |||
34 | When the driver unregisters, deactivation routine for the currently active | ||
35 | trigger will be called, and LED state is changed to LED_OFF. | ||
36 | |||
37 | Driver suspend changes the LED state to LED_OFF and resume doesn't change | ||
38 | the state. Please note that there is no explicit interaction between the | ||
39 | suspend and resume actions and the currently enabled trigger. LED state | ||
40 | changes are suspended while the driver is in suspend state. Any timers | ||
41 | that are active at the time driver gets suspended, continue to run, without | ||
42 | being able to actually change the LED state. Once driver is resumed, triggers | ||
43 | start functioning again. | ||
44 | |||
45 | LED state changes are controlled using brightness which is a common led | ||
46 | class device property. When brightness is set to 0 from user space via | ||
47 | echo 0 > brightness, it will result in deactivating the current trigger. | ||
48 | |||
49 | Transient trigger uses standard register and unregister interfaces. During | ||
50 | trigger registration, for each led class device that specifies this trigger | ||
51 | as its default trigger, trigger activation routine will get called. During | ||
52 | registration, the LED state does not change, unless there is another trigger | ||
53 | active, in which case LED state changes to LED_OFF. | ||
54 | |||
55 | During trigger unregistration, LED state gets changed to LED_OFF. | ||
56 | |||
57 | Transient trigger activation routine doesn't change the LED state. It | ||
58 | creates its properties and does its initialization. Transient trigger | ||
59 | deactivation routine, will cancel any timer that is active before it cleans | ||
60 | up and removes the properties it created. It will restore the LED state to | ||
61 | non-transient state. When driver gets suspended, irrespective of the transient | ||
62 | state, the LED state changes to LED_OFF. | ||
63 | |||
64 | Transient trigger can be enabled and disabled from user space on led class | ||
65 | devices, that support this trigger as shown below: | ||
66 | |||
67 | echo transient > trigger | ||
68 | echo none > trigger | ||
69 | |||
70 | NOTE: Add a new property trigger state to control the state. | ||
71 | |||
72 | This trigger exports three properties, activate, state, and duration. When | ||
73 | transient trigger is activated these properties are set to default values. | ||
74 | |||
75 | - duration allows setting timer value in msecs. The initial value is 0. | ||
76 | - activate allows activating and deactivating the timer specified by | ||
77 | duration as needed. The initial and default value is 0. This will allow | ||
78 | duration to be set after trigger activation. | ||
79 | - state allows user to specify a transient state to be held for the specified | ||
80 | duration. | ||
81 | |||
82 | activate - one shot timer activate mechanism. | ||
83 | 1 when activated, 0 when deactivated. | ||
84 | default value is zero when transient trigger is enabled, | ||
85 | to allow duration to be set. | ||
86 | |||
87 | activate state indicates a timer with a value of specified | ||
88 | duration running. | ||
89 | deactivated state indicates that there is no active timer | ||
90 | running. | ||
91 | |||
92 | duration - one shot timer value. When activate is set, duration value | ||
93 | is used to start a timer that runs once. This value doesn't | ||
94 | get changed by the trigger unless user does a set via | ||
95 | echo new_value > duration | ||
96 | |||
97 | state - transient state to be held. It has two values 0 or 1. 0 maps | ||
98 | to LED_OFF and 1 maps to LED_FULL. The specified state is | ||
99 | held for the duration of the one shot timer and then the | ||
100 | state gets changed to the non-transient state which is the | ||
101 | inverse of transient state. | ||
102 | If state = LED_FULL, when the timer runs out the state will | ||
103 | go back to LED_OFF. | ||
104 | If state = LED_OFF, when the timer runs out the state will | ||
105 | go back to LED_FULL. | ||
106 | Please note that current LED state is not checked prior to | ||
107 | changing the state to the specified state. | ||
108 | Driver could map these values to inverted depending on the | ||
109 | default states it defines for the LED in its brightness_set() | ||
110 | interface which is called from the led brightness_set() | ||
111 | interfaces to control the LED state. | ||
112 | |||
113 | When timer expires activate goes back to deactivated state, duration is left | ||
114 | at the set value to be used when activate is set at a future time. This will | ||
115 | allow user app to set the time once and activate it to run it once for the | ||
116 | specified value as needed. When timer expires, state is restored to the | ||
117 | non-transient state which is the inverse of the transient state. | ||
118 | |||
119 | echo 1 > activate - starts timer = duration when duration is not 0. | ||
120 | echo 0 > activate - cancels currently running timer. | ||
121 | echo n > duration - stores timer value to be used upon next | ||
122 | activate. Currently active timer if | ||
123 | any, continues to run for the specified time. | ||
124 | echo 0 > duration - stores timer value to be used upon next | ||
125 | activate. Currently active timer if any, | ||
126 | continues to run for the specified time. | ||
127 | echo 1 > state - stores desired transient state LED_FULL to be | ||
128 | held for the specified duration. | ||
129 | echo 0 > state - stores desired transient state LED_OFF to be | ||
130 | held for the specified duration. | ||
131 | |||
132 | What is not supported: | ||
133 | ====================== | ||
134 | - Timer activation is one shot and extending and/or shortening the timer | ||
135 | is not supported. | ||
136 | |||
137 | Example use-case 1: | ||
138 | echo transient > trigger | ||
139 | echo n > duration | ||
140 | echo 1 > state | ||
141 | repeat the following step as needed: | ||
142 | echo 1 > activate - start timer = duration to run once | ||
143 | echo 1 > activate - start timer = duration to run once | ||
144 | echo none > trigger | ||
145 | |||
146 | This trigger is intended to be used for for the following example use cases: | ||
147 | - Control of vibrate (phones, tablets etc.) hardware by user space app. | ||
148 | - Use of LED by user space app as activity indicator. | ||
149 | - Use of LED by user space app as a kind of watchdog indicator -- as | ||
150 | long as the app is alive, it can keep the LED illuminated, if it dies | ||
151 | the LED will be extinguished automatically. | ||
152 | - Use by any user space app that needs a transient GPIO output. | ||
diff --git a/Documentation/mca.txt b/Documentation/mca.txt deleted file mode 100644 index dfd130c2207d..000000000000 --- a/Documentation/mca.txt +++ /dev/null | |||
@@ -1,313 +0,0 @@ | |||
1 | i386 Micro Channel Architecture Support | ||
2 | ======================================= | ||
3 | |||
4 | MCA support is enabled using the CONFIG_MCA define. A machine with a MCA | ||
5 | bus will have the kernel variable MCA_bus set, assuming the BIOS feature | ||
6 | bits are set properly (see arch/i386/boot/setup.S for information on | ||
7 | how this detection is done). | ||
8 | |||
9 | Adapter Detection | ||
10 | ================= | ||
11 | |||
12 | The ideal MCA adapter detection is done through the use of the | ||
13 | Programmable Option Select registers. Generic functions for doing | ||
14 | this have been added in include/linux/mca.h and arch/x86/kernel/mca_32.c. | ||
15 | Everything needed to detect adapters and read (and write) configuration | ||
16 | information is there. A number of MCA-specific drivers already use | ||
17 | this. The typical probe code looks like the following: | ||
18 | |||
19 | #include <linux/mca.h> | ||
20 | |||
21 | unsigned char pos2, pos3, pos4, pos5; | ||
22 | struct net_device* dev; | ||
23 | int slot; | ||
24 | |||
25 | if( MCA_bus ) { | ||
26 | slot = mca_find_adapter( ADAPTER_ID, 0 ); | ||
27 | if( slot == MCA_NOTFOUND ) { | ||
28 | return -ENODEV; | ||
29 | } | ||
30 | /* optional - see below */ | ||
31 | mca_set_adapter_name( slot, "adapter name & description" ); | ||
32 | mca_set_adapter_procfn( slot, dev_getinfo, dev ); | ||
33 | |||
34 | /* read the POS registers. Most devices only use 2 and 3 */ | ||
35 | pos2 = mca_read_stored_pos( slot, 2 ); | ||
36 | pos3 = mca_read_stored_pos( slot, 3 ); | ||
37 | pos4 = mca_read_stored_pos( slot, 4 ); | ||
38 | pos5 = mca_read_stored_pos( slot, 5 ); | ||
39 | } else { | ||
40 | return -ENODEV; | ||
41 | } | ||
42 | |||
43 | /* extract configuration from pos[2345] and set everything up */ | ||
44 | |||
45 | Loadable modules should modify this to test that the specified IRQ and | ||
46 | IO ports (plus whatever other stuff) match. See 3c523.c for example | ||
47 | code (actually, smc-mca.c has a slightly more complex example that can | ||
48 | handle a list of adapter ids). | ||
49 | |||
50 | Keep in mind that devices should never directly access the POS registers | ||
51 | (via inb(), outb(), etc). While it's generally safe, there is a small | ||
52 | potential for blowing up hardware when it's done at the wrong time. | ||
53 | Furthermore, accessing a POS register disables a device temporarily. | ||
54 | This is usually okay during startup, but do _you_ want to rely on it? | ||
55 | During initial configuration, mca_init() reads all the POS registers | ||
56 | into memory. mca_read_stored_pos() accesses that data. mca_read_pos() | ||
57 | and mca_write_pos() are also available for (safer) direct POS access, | ||
58 | but their use is _highly_ discouraged. mca_write_pos() is particularly | ||
59 | dangerous, as it is possible for adapters to be put in inconsistent | ||
60 | states (i.e. sharing IO address, etc) and may result in crashes, toasted | ||
61 | hardware, and blindness. | ||
62 | |||
63 | User level drivers (such as the AGX X server) can use /proc/mca/pos to | ||
64 | find adapters (see below). | ||
65 | |||
66 | Some MCA adapters can also be detected via the usual ISA-style device | ||
67 | probing (many SCSI adapters, for example). This sort of thing is highly | ||
68 | discouraged. Perfectly good information is available telling you what's | ||
69 | there, so there's no excuse for messing with random IO ports. However, | ||
70 | we MCA people still appreciate any ISA-style driver that will work with | ||
71 | our hardware. You take what you can get... | ||
72 | |||
73 | Level-Triggered Interrupts | ||
74 | ========================== | ||
75 | |||
76 | Because MCA uses level-triggered interrupts, a few problems arise with | ||
77 | what might best be described as the ISA mindset and its effects on | ||
78 | drivers. These sorts of problems are expected to become less common as | ||
79 | more people use shared IRQs on PCI machines. | ||
80 | |||
81 | In general, an interrupt must be acknowledged not only at the ICU (which | ||
82 | is done automagically by the kernel), but at the device level. In | ||
83 | particular, IRQ 0 must be reset after a timer interrupt (now done in | ||
84 | arch/x86/kernel/time.c) or the first timer interrupt hangs the system. | ||
85 | There were also problems with the 1.3.x floppy drivers, but that seems | ||
86 | to have been fixed. | ||
87 | |||
88 | IRQs are also shareable, and most MCA-specific devices should be coded | ||
89 | with shared IRQs in mind. | ||
90 | |||
91 | /proc/mca | ||
92 | ========= | ||
93 | |||
94 | /proc/mca is a directory containing various files for adapters and | ||
95 | other stuff. | ||
96 | |||
97 | /proc/mca/pos Straight listing of POS registers | ||
98 | /proc/mca/slot[1-8] Information on adapter in specific slot | ||
99 | /proc/mca/video Same for integrated video | ||
100 | /proc/mca/scsi Same for integrated SCSI | ||
101 | /proc/mca/machine Machine information | ||
102 | |||
103 | See Appendix A for a sample. | ||
104 | |||
105 | Device drivers can easily add their own information function for | ||
106 | specific slots (including integrated ones) via the | ||
107 | mca_set_adapter_procfn() call. Drivers that support this are ESDI, IBM | ||
108 | SCSI, and 3c523. If a device is also a module, make sure that the proc | ||
109 | function is removed in the module cleanup. This will require storing | ||
110 | the slot information in a private structure somewhere. See the 3c523 | ||
111 | driver for details. | ||
112 | |||
113 | Your typical proc function will look something like this: | ||
114 | |||
115 | static int | ||
116 | dev_getinfo( char* buf, int slot, void* d ) { | ||
117 | struct net_device* dev = (struct net_device*) d; | ||
118 | int len = 0; | ||
119 | |||
120 | len += sprintf( buf+len, "Device: %s\n", dev->name ); | ||
121 | len += sprintf( buf+len, "IRQ: %d\n", dev->irq ); | ||
122 | len += sprintf( buf+len, "IO Port: %#lx-%#lx\n", ... ); | ||
123 | ... | ||
124 | |||
125 | return len; | ||
126 | } | ||
127 | |||
128 | Some of the standard MCA information will already be printed, so don't | ||
129 | bother repeating it. Don't try putting in more than 3K of information. | ||
130 | |||
131 | Enable this function with: | ||
132 | mca_set_adapter_procfn( slot, dev_getinfo, dev ); | ||
133 | |||
134 | Disable it with: | ||
135 | mca_set_adapter_procfn( slot, NULL, NULL ); | ||
136 | |||
137 | It is also recommended that, even if you don't write a proc function, to | ||
138 | set the name of the adapter (i.e. "PS/2 ESDI Controller") via | ||
139 | mca_set_adapter_name( int slot, char* name ). | ||
140 | |||
141 | MCA Device Drivers | ||
142 | ================== | ||
143 | |||
144 | Currently, there are a number of MCA-specific device drivers. | ||
145 | |||
146 | 1) PS/2 SCSI | ||
147 | drivers/scsi/ibmmca.c | ||
148 | drivers/scsi/ibmmca.h | ||
149 | The driver for the IBM SCSI subsystem. Includes both integrated | ||
150 | controllers and adapter cards. May require command-line arg | ||
151 | "ibmmcascsi=io_port" to force detection of an adapter. If you have a | ||
152 | machine with a front-panel display (i.e. model 95), you can use | ||
153 | "ibmmcascsi=display" to enable a drive activity indicator. | ||
154 | |||
155 | 2) 3c523 | ||
156 | drivers/net/3c523.c | ||
157 | drivers/net/3c523.h | ||
158 | 3Com 3c523 Etherlink/MC ethernet driver. | ||
159 | |||
160 | 3) SMC Ultra/MCA and IBM Adapter/A | ||
161 | drivers/net/smc-mca.c | ||
162 | drivers/net/smc-mca.h | ||
163 | Driver for the MCA version of the SMC Ultra and various other | ||
164 | OEM'ed and work-alike cards (Elite, Adapter/A, etc). | ||
165 | |||
166 | 4) NE/2 | ||
167 | driver/net/ne2.c | ||
168 | driver/net/ne2.h | ||
169 | The NE/2 is the MCA version of the NE2000. This may not work | ||
170 | with clones that have a different adapter id than the original | ||
171 | NE/2. | ||
172 | |||
173 | 5) Future Domain MCS-600/700, OEM'd IBM Fast SCSI Adapter/A and | ||
174 | Reply Sound Blaster/SCSI (SCSI part) | ||
175 | Better support for these cards than the driver for ISA. | ||
176 | Supports multiple cards with IRQ sharing. | ||
177 | |||
178 | Also added boot time option of scsi-probe, which can do reordering of | ||
179 | SCSI host adapters. This will direct the kernel on the order which | ||
180 | SCSI adapter should be detected. Example: | ||
181 | scsi-probe=ibmmca,fd_mcs,adaptec1542,buslogic | ||
182 | |||
183 | The serial drivers were modified to support the extended IO port range | ||
184 | of the typical MCA system (also #ifdef CONFIG_MCA). | ||
185 | |||
186 | The following devices work with existing drivers: | ||
187 | 1) Token-ring | ||
188 | 2) Future Domain SCSI (MCS-600, MCS-700, not MCS-350, OEM'ed IBM SCSI) | ||
189 | 3) Adaptec 1640 SCSI (using the aha1542 driver) | ||
190 | 4) Bustek/Buslogic SCSI (various) | ||
191 | 5) Probably all Arcnet cards. | ||
192 | 6) Some, possibly all, MCA IDE controllers. | ||
193 | 7) 3Com 3c529 (MCA version of 3c509) (patched) | ||
194 | |||
195 | 8) Intel EtherExpressMC (patched version) | ||
196 | You need to have CONFIG_MCA defined to have EtherExpressMC support. | ||
197 | 9) Reply Sound Blaster/SCSI (SB part) (patched version) | ||
198 | |||
199 | Bugs & Other Weirdness | ||
200 | ====================== | ||
201 | |||
202 | NMIs tend to occur with MCA machines because of various hardware | ||
203 | weirdness, bus timeouts, and many other non-critical things. Some basic | ||
204 | code to handle them (inspired by the NetBSD MCA code) has been added to | ||
205 | detect the guilty device, but it's pretty incomplete. If NMIs are a | ||
206 | persistent problem (on some model 70 or 80s, they occur every couple | ||
207 | shell commands), the CONFIG_IGNORE_NMI flag will take care of that. | ||
208 | |||
209 | Various Pentium machines have had serious problems with the FPU test in | ||
210 | bugs.h. Basically, the machine hangs after the HLT test. This occurs, | ||
211 | as far as we know, on the Pentium-equipped 85s, 95s, and some PC Servers. | ||
212 | The PCI/MCA PC 750s are fine as far as I can tell. The ``mca-pentium'' | ||
213 | boot-prompt flag will disable the FPU bug check if this is a problem | ||
214 | with your machine. | ||
215 | |||
216 | The model 80 has a raft of problems that are just too weird and unique | ||
217 | to get into here. Some people have no trouble while others have nothing | ||
218 | but problems. I'd suspect some problems are related to the age of the | ||
219 | average 80 and accompanying hardware deterioration, although others | ||
220 | are definitely design problems with the hardware. Among the problems | ||
221 | include SCSI controller problems, ESDI controller problems, and serious | ||
222 | screw-ups in the floppy controller. Oh, and the parallel port is also | ||
223 | pretty flaky. There were about 5 or 6 different model 80 motherboards | ||
224 | produced to fix various obscure problems. As far as I know, it's pretty | ||
225 | much impossible to tell which bugs a particular model 80 has (other than | ||
226 | triggering them, that is). | ||
227 | |||
228 | Drivers are required for some MCA memory adapters. If you're suddenly | ||
229 | short a few megs of RAM, this might be the reason. The (I think) Enhanced | ||
230 | Memory Adapter commonly found on the model 70 is one. There's a very | ||
231 | alpha driver floating around, but it's pretty ugly (disassembled from | ||
232 | the DOS driver, actually). See the MCA Linux web page (URL below) | ||
233 | for more current memory info. | ||
234 | |||
235 | The Thinkpad 700 and 720 will work, but various components are either | ||
236 | non-functional, flaky, or we don't know anything about them. The | ||
237 | graphics controller is supposed to be some WD, but we can't get things | ||
238 | working properly. The PCMCIA slots don't seem to work. Ditto for APM. | ||
239 | The serial ports work, but detection seems to be flaky. | ||
240 | |||
241 | Credits | ||
242 | ======= | ||
243 | A whole pile of people have contributed to the MCA code. I'd include | ||
244 | their names here, but I don't have a list handy. Check the MCA Linux | ||
245 | home page (URL below) for a perpetually out-of-date list. | ||
246 | |||
247 | ===================================================================== | ||
248 | MCA Linux Home Page: http://www.dgmicro.com/mca/ | ||
249 | |||
250 | Christophe Beauregard | ||
251 | chrisb@truespectra.com | ||
252 | cpbeaure@calum.csclub.uwaterloo.ca | ||
253 | |||
254 | ===================================================================== | ||
255 | Appendix A: Sample /proc/mca | ||
256 | |||
257 | This is from my model 8595. Slot 1 contains the standard IBM SCSI | ||
258 | adapter, slot 3 is an Adaptec AHA-1640, slot 5 is a XGA-1 video adapter, | ||
259 | and slot 7 is the 3c523 Etherlink/MC. | ||
260 | |||
261 | /proc/mca/machine: | ||
262 | Model Id: 0xf8 | ||
263 | Submodel Id: 0x14 | ||
264 | BIOS Revision: 0x5 | ||
265 | |||
266 | /proc/mca/pos: | ||
267 | Slot 1: ff 8e f1 fc a0 ff ff ff IBM SCSI Adapter w/Cache | ||
268 | Slot 2: ff ff ff ff ff ff ff ff | ||
269 | Slot 3: 1f 0f 81 3b bf b6 ff ff | ||
270 | Slot 4: ff ff ff ff ff ff ff ff | ||
271 | Slot 5: db 8f 1d 5e fd c0 00 00 | ||
272 | Slot 6: ff ff ff ff ff ff ff ff | ||
273 | Slot 7: 42 60 ff 08 ff ff ff ff 3Com 3c523 Etherlink/MC | ||
274 | Slot 8: ff ff ff ff ff ff ff ff | ||
275 | Video : ff ff ff ff ff ff ff ff | ||
276 | SCSI : ff ff ff ff ff ff ff ff | ||
277 | |||
278 | /proc/mca/slot1: | ||
279 | Slot: 1 | ||
280 | Adapter Name: IBM SCSI Adapter w/Cache | ||
281 | Id: 8eff | ||
282 | Enabled: Yes | ||
283 | POS: ff 8e f1 fc a0 ff ff ff | ||
284 | Subsystem PUN: 7 | ||
285 | Detected at boot: Yes | ||
286 | |||
287 | /proc/mca/slot3: | ||
288 | Slot: 3 | ||
289 | Adapter Name: Unknown | ||
290 | Id: 0f1f | ||
291 | Enabled: Yes | ||
292 | POS: 1f 0f 81 3b bf b6 ff ff | ||
293 | |||
294 | /proc/mca/slot5: | ||
295 | Slot: 5 | ||
296 | Adapter Name: Unknown | ||
297 | Id: 8fdb | ||
298 | Enabled: Yes | ||
299 | POS: db 8f 1d 5e fd c0 00 00 | ||
300 | |||
301 | /proc/mca/slot7: | ||
302 | Slot: 7 | ||
303 | Adapter Name: 3Com 3c523 Etherlink/MC | ||
304 | Id: 6042 | ||
305 | Enabled: Yes | ||
306 | POS: 42 60 ff 08 ff ff ff ff | ||
307 | Revision: 0xe | ||
308 | IRQ: 9 | ||
309 | IO Address: 0x3300-0x3308 | ||
310 | Memory: 0xd8000-0xdbfff | ||
311 | Transceiver: External | ||
312 | Device: eth0 | ||
313 | Hardware Address: 02 60 8c 45 c4 2a | ||
diff --git a/Documentation/media-framework.txt b/Documentation/media-framework.txt index 3a0f879533ce..802875413873 100644 --- a/Documentation/media-framework.txt +++ b/Documentation/media-framework.txt | |||
@@ -335,6 +335,9 @@ the media_entity pipe field. | |||
335 | Calls to media_entity_pipeline_start() can be nested. The pipeline pointer must | 335 | Calls to media_entity_pipeline_start() can be nested. The pipeline pointer must |
336 | be identical for all nested calls to the function. | 336 | be identical for all nested calls to the function. |
337 | 337 | ||
338 | media_entity_pipeline_start() may return an error. In that case, it will | ||
339 | clean up any the changes it did by itself. | ||
340 | |||
338 | When stopping the stream, drivers must notify the entities with | 341 | When stopping the stream, drivers must notify the entities with |
339 | 342 | ||
340 | media_entity_pipeline_stop(struct media_entity *entity); | 343 | media_entity_pipeline_stop(struct media_entity *entity); |
@@ -351,3 +354,19 @@ If other operations need to be disallowed on streaming entities (such as | |||
351 | changing entities configuration parameters) drivers can explicitly check the | 354 | changing entities configuration parameters) drivers can explicitly check the |
352 | media_entity stream_count field to find out if an entity is streaming. This | 355 | media_entity stream_count field to find out if an entity is streaming. This |
353 | operation must be done with the media_device graph_mutex held. | 356 | operation must be done with the media_device graph_mutex held. |
357 | |||
358 | |||
359 | Link validation | ||
360 | --------------- | ||
361 | |||
362 | Link validation is performed by media_entity_pipeline_start() for any | ||
363 | entity which has sink pads in the pipeline. The | ||
364 | media_entity::link_validate() callback is used for that purpose. In | ||
365 | link_validate() callback, entity driver should check that the properties of | ||
366 | the source pad of the connected entity and its own sink pad match. It is up | ||
367 | to the type of the entity (and in the end, the properties of the hardware) | ||
368 | what matching actually means. | ||
369 | |||
370 | Subsystems should facilitate link validation by providing subsystem specific | ||
371 | helper functions to provide easy access for commonly needed information, and | ||
372 | in the end provide a way to use driver-specific callbacks. | ||
diff --git a/Documentation/memory-devices/ti-emif.txt b/Documentation/memory-devices/ti-emif.txt new file mode 100644 index 000000000000..f4ad9a7d0f4b --- /dev/null +++ b/Documentation/memory-devices/ti-emif.txt | |||
@@ -0,0 +1,57 @@ | |||
1 | TI EMIF SDRAM Controller Driver: | ||
2 | |||
3 | Author | ||
4 | ======== | ||
5 | Aneesh V <aneesh@ti.com> | ||
6 | |||
7 | Location | ||
8 | ============ | ||
9 | driver/memory/emif.c | ||
10 | |||
11 | Supported SoCs: | ||
12 | =================== | ||
13 | TI OMAP44xx | ||
14 | TI OMAP54xx | ||
15 | |||
16 | Menuconfig option: | ||
17 | ========================== | ||
18 | Device Drivers | ||
19 | Memory devices | ||
20 | Texas Instruments EMIF driver | ||
21 | |||
22 | Description | ||
23 | =========== | ||
24 | This driver is for the EMIF module available in Texas Instruments | ||
25 | SoCs. EMIF is an SDRAM controller that, based on its revision, | ||
26 | supports one or more of DDR2, DDR3, and LPDDR2 SDRAM protocols. | ||
27 | This driver takes care of only LPDDR2 memories presently. The | ||
28 | functions of the driver includes re-configuring AC timing | ||
29 | parameters and other settings during frequency, voltage and | ||
30 | temperature changes | ||
31 | |||
32 | Platform Data (see include/linux/platform_data/emif_plat.h): | ||
33 | ===================================================================== | ||
34 | DDR device details and other board dependent and SoC dependent | ||
35 | information can be passed through platform data (struct emif_platform_data) | ||
36 | - DDR device details: 'struct ddr_device_info' | ||
37 | - Device AC timings: 'struct lpddr2_timings' and 'struct lpddr2_min_tck' | ||
38 | - Custom configurations: customizable policy options through | ||
39 | 'struct emif_custom_configs' | ||
40 | - IP revision | ||
41 | - PHY type | ||
42 | |||
43 | Interface to the external world: | ||
44 | ================================ | ||
45 | EMIF driver registers notifiers for voltage and frequency changes | ||
46 | affecting EMIF and takes appropriate actions when these are invoked. | ||
47 | - freq_pre_notify_handling() | ||
48 | - freq_post_notify_handling() | ||
49 | - volt_notify_handling() | ||
50 | |||
51 | Debugfs | ||
52 | ======== | ||
53 | The driver creates two debugfs entries per device. | ||
54 | - regcache_dump : dump of register values calculated and saved for all | ||
55 | frequencies used so far. | ||
56 | - mr4 : last polled value of MR4 register in the LPDDR2 device. MR4 | ||
57 | indicates the current temperature level of the device. | ||
diff --git a/Documentation/memory-hotplug.txt b/Documentation/memory-hotplug.txt index 8f485d72cf25..6d0c2519cf47 100644 --- a/Documentation/memory-hotplug.txt +++ b/Documentation/memory-hotplug.txt | |||
@@ -341,7 +341,7 @@ Need more implementation yet.... | |||
341 | -------------------------------- | 341 | -------------------------------- |
342 | 8. Memory hotplug event notifier | 342 | 8. Memory hotplug event notifier |
343 | -------------------------------- | 343 | -------------------------------- |
344 | Memory hotplug has event notifer. There are 6 types of notification. | 344 | Memory hotplug has event notifier. There are 6 types of notification. |
345 | 345 | ||
346 | MEMORY_GOING_ONLINE | 346 | MEMORY_GOING_ONLINE |
347 | Generated before new memory becomes available in order to be able to | 347 | Generated before new memory becomes available in order to be able to |
diff --git a/Documentation/misc-devices/mei/.gitignore b/Documentation/misc-devices/mei/.gitignore new file mode 100644 index 000000000000..f356b81ca1ec --- /dev/null +++ b/Documentation/misc-devices/mei/.gitignore | |||
@@ -0,0 +1 @@ | |||
mei-amt-version | |||
diff --git a/Documentation/misc-devices/mei/Makefile b/Documentation/misc-devices/mei/Makefile new file mode 100644 index 000000000000..00e8c3e836ff --- /dev/null +++ b/Documentation/misc-devices/mei/Makefile | |||
@@ -0,0 +1,8 @@ | |||
1 | # kbuild trick to avoid linker error. Can be omitted if a module is built. | ||
2 | obj- := dummy.o | ||
3 | |||
4 | # List of programs to build | ||
5 | hostprogs-y := mei-amt-version | ||
6 | HOSTCFLAGS_mei-amt-version.o += -I$(objtree)/usr/include | ||
7 | # Tell kbuild to always build the programs | ||
8 | always := $(hostprogs-y) | ||
diff --git a/Documentation/misc-devices/mei/TODO b/Documentation/misc-devices/mei/TODO new file mode 100644 index 000000000000..6b3625d3058c --- /dev/null +++ b/Documentation/misc-devices/mei/TODO | |||
@@ -0,0 +1,2 @@ | |||
1 | TODO: | ||
2 | - Cleanup and split the timer function | ||
diff --git a/Documentation/misc-devices/mei/mei-amt-version.c b/Documentation/misc-devices/mei/mei-amt-version.c new file mode 100644 index 000000000000..01804f216312 --- /dev/null +++ b/Documentation/misc-devices/mei/mei-amt-version.c | |||
@@ -0,0 +1,481 @@ | |||
1 | /****************************************************************************** | ||
2 | * Intel Management Engine Interface (Intel MEI) Linux driver | ||
3 | * Intel MEI Interface Header | ||
4 | * | ||
5 | * This file is provided under a dual BSD/GPLv2 license. When using or | ||
6 | * redistributing this file, you may do so under either license. | ||
7 | * | ||
8 | * GPL LICENSE SUMMARY | ||
9 | * | ||
10 | * Copyright(c) 2012 Intel Corporation. All rights reserved. | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of version 2 of the GNU General Public License as | ||
14 | * published by the Free Software Foundation. | ||
15 | * | ||
16 | * This program is distributed in the hope that it will be useful, but | ||
17 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
19 | * General Public License for more details. | ||
20 | * | ||
21 | * You should have received a copy of the GNU General Public License | ||
22 | * along with this program; if not, write to the Free Software | ||
23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, | ||
24 | * USA | ||
25 | * | ||
26 | * The full GNU General Public License is included in this distribution | ||
27 | * in the file called LICENSE.GPL. | ||
28 | * | ||
29 | * Contact Information: | ||
30 | * Intel Corporation. | ||
31 | * linux-mei@linux.intel.com | ||
32 | * http://www.intel.com | ||
33 | * | ||
34 | * BSD LICENSE | ||
35 | * | ||
36 | * Copyright(c) 2003 - 2012 Intel Corporation. All rights reserved. | ||
37 | * All rights reserved. | ||
38 | * | ||
39 | * Redistribution and use in source and binary forms, with or without | ||
40 | * modification, are permitted provided that the following conditions | ||
41 | * are met: | ||
42 | * | ||
43 | * * Redistributions of source code must retain the above copyright | ||
44 | * notice, this list of conditions and the following disclaimer. | ||
45 | * * Redistributions in binary form must reproduce the above copyright | ||
46 | * notice, this list of conditions and the following disclaimer in | ||
47 | * the documentation and/or other materials provided with the | ||
48 | * distribution. | ||
49 | * * Neither the name Intel Corporation nor the names of its | ||
50 | * contributors may be used to endorse or promote products derived | ||
51 | * from this software without specific prior written permission. | ||
52 | * | ||
53 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
54 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
55 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||
56 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||
57 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
58 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
59 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
60 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
61 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
62 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
63 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
64 | * | ||
65 | *****************************************************************************/ | ||
66 | |||
67 | #include <stdio.h> | ||
68 | #include <stdlib.h> | ||
69 | #include <string.h> | ||
70 | #include <fcntl.h> | ||
71 | #include <sys/ioctl.h> | ||
72 | #include <unistd.h> | ||
73 | #include <errno.h> | ||
74 | #include <stdint.h> | ||
75 | #include <stdbool.h> | ||
76 | #include <bits/wordsize.h> | ||
77 | #include <linux/mei.h> | ||
78 | |||
79 | /***************************************************************************** | ||
80 | * Intel Management Engine Interface | ||
81 | *****************************************************************************/ | ||
82 | |||
83 | #define mei_msg(_me, fmt, ARGS...) do { \ | ||
84 | if (_me->verbose) \ | ||
85 | fprintf(stderr, fmt, ##ARGS); \ | ||
86 | } while (0) | ||
87 | |||
88 | #define mei_err(_me, fmt, ARGS...) do { \ | ||
89 | fprintf(stderr, "Error: " fmt, ##ARGS); \ | ||
90 | } while (0) | ||
91 | |||
92 | struct mei { | ||
93 | uuid_le guid; | ||
94 | bool initialized; | ||
95 | bool verbose; | ||
96 | unsigned int buf_size; | ||
97 | unsigned char prot_ver; | ||
98 | int fd; | ||
99 | }; | ||
100 | |||
101 | static void mei_deinit(struct mei *cl) | ||
102 | { | ||
103 | if (cl->fd != -1) | ||
104 | close(cl->fd); | ||
105 | cl->fd = -1; | ||
106 | cl->buf_size = 0; | ||
107 | cl->prot_ver = 0; | ||
108 | cl->initialized = false; | ||
109 | } | ||
110 | |||
111 | static bool mei_init(struct mei *me, const uuid_le *guid, | ||
112 | unsigned char req_protocol_version, bool verbose) | ||
113 | { | ||
114 | int result; | ||
115 | struct mei_client *cl; | ||
116 | struct mei_connect_client_data data; | ||
117 | |||
118 | mei_deinit(me); | ||
119 | |||
120 | me->verbose = verbose; | ||
121 | |||
122 | me->fd = open("/dev/mei", O_RDWR); | ||
123 | if (me->fd == -1) { | ||
124 | mei_err(me, "Cannot establish a handle to the Intel MEI driver\n"); | ||
125 | goto err; | ||
126 | } | ||
127 | memcpy(&me->guid, guid, sizeof(*guid)); | ||
128 | memset(&data, 0, sizeof(data)); | ||
129 | me->initialized = true; | ||
130 | |||
131 | memcpy(&data.in_client_uuid, &me->guid, sizeof(me->guid)); | ||
132 | result = ioctl(me->fd, IOCTL_MEI_CONNECT_CLIENT, &data); | ||
133 | if (result) { | ||
134 | mei_err(me, "IOCTL_MEI_CONNECT_CLIENT receive message. err=%d\n", result); | ||
135 | goto err; | ||
136 | } | ||
137 | cl = &data.out_client_properties; | ||
138 | mei_msg(me, "max_message_length %d\n", cl->max_msg_length); | ||
139 | mei_msg(me, "protocol_version %d\n", cl->protocol_version); | ||
140 | |||
141 | if ((req_protocol_version > 0) && | ||
142 | (cl->protocol_version != req_protocol_version)) { | ||
143 | mei_err(me, "Intel MEI protocol version not supported\n"); | ||
144 | goto err; | ||
145 | } | ||
146 | |||
147 | me->buf_size = cl->max_msg_length; | ||
148 | me->prot_ver = cl->protocol_version; | ||
149 | |||
150 | return true; | ||
151 | err: | ||
152 | mei_deinit(me); | ||
153 | return false; | ||
154 | } | ||
155 | |||
156 | static ssize_t mei_recv_msg(struct mei *me, unsigned char *buffer, | ||
157 | ssize_t len, unsigned long timeout) | ||
158 | { | ||
159 | ssize_t rc; | ||
160 | |||
161 | mei_msg(me, "call read length = %zd\n", len); | ||
162 | |||
163 | rc = read(me->fd, buffer, len); | ||
164 | if (rc < 0) { | ||
165 | mei_err(me, "read failed with status %zd %s\n", | ||
166 | rc, strerror(errno)); | ||
167 | mei_deinit(me); | ||
168 | } else { | ||
169 | mei_msg(me, "read succeeded with result %zd\n", rc); | ||
170 | } | ||
171 | return rc; | ||
172 | } | ||
173 | |||
174 | static ssize_t mei_send_msg(struct mei *me, const unsigned char *buffer, | ||
175 | ssize_t len, unsigned long timeout) | ||
176 | { | ||
177 | struct timeval tv; | ||
178 | ssize_t written; | ||
179 | ssize_t rc; | ||
180 | fd_set set; | ||
181 | |||
182 | tv.tv_sec = timeout / 1000; | ||
183 | tv.tv_usec = (timeout % 1000) * 1000000; | ||
184 | |||
185 | mei_msg(me, "call write length = %zd\n", len); | ||
186 | |||
187 | written = write(me->fd, buffer, len); | ||
188 | if (written < 0) { | ||
189 | rc = -errno; | ||
190 | mei_err(me, "write failed with status %zd %s\n", | ||
191 | written, strerror(errno)); | ||
192 | goto out; | ||
193 | } | ||
194 | |||
195 | FD_ZERO(&set); | ||
196 | FD_SET(me->fd, &set); | ||
197 | rc = select(me->fd + 1 , &set, NULL, NULL, &tv); | ||
198 | if (rc > 0 && FD_ISSET(me->fd, &set)) { | ||
199 | mei_msg(me, "write success\n"); | ||
200 | } else if (rc == 0) { | ||
201 | mei_err(me, "write failed on timeout with status\n"); | ||
202 | goto out; | ||
203 | } else { /* rc < 0 */ | ||
204 | mei_err(me, "write failed on select with status %zd\n", rc); | ||
205 | goto out; | ||
206 | } | ||
207 | |||
208 | rc = written; | ||
209 | out: | ||
210 | if (rc < 0) | ||
211 | mei_deinit(me); | ||
212 | |||
213 | return rc; | ||
214 | } | ||
215 | |||
216 | /*************************************************************************** | ||
217 | * Intel Advanced Management Technolgy ME Client | ||
218 | ***************************************************************************/ | ||
219 | |||
220 | #define AMT_MAJOR_VERSION 1 | ||
221 | #define AMT_MINOR_VERSION 1 | ||
222 | |||
223 | #define AMT_STATUS_SUCCESS 0x0 | ||
224 | #define AMT_STATUS_INTERNAL_ERROR 0x1 | ||
225 | #define AMT_STATUS_NOT_READY 0x2 | ||
226 | #define AMT_STATUS_INVALID_AMT_MODE 0x3 | ||
227 | #define AMT_STATUS_INVALID_MESSAGE_LENGTH 0x4 | ||
228 | |||
229 | #define AMT_STATUS_HOST_IF_EMPTY_RESPONSE 0x4000 | ||
230 | #define AMT_STATUS_SDK_RESOURCES 0x1004 | ||
231 | |||
232 | |||
233 | #define AMT_BIOS_VERSION_LEN 65 | ||
234 | #define AMT_VERSIONS_NUMBER 50 | ||
235 | #define AMT_UNICODE_STRING_LEN 20 | ||
236 | |||
237 | struct amt_unicode_string { | ||
238 | uint16_t length; | ||
239 | char string[AMT_UNICODE_STRING_LEN]; | ||
240 | } __attribute__((packed)); | ||
241 | |||
242 | struct amt_version_type { | ||
243 | struct amt_unicode_string description; | ||
244 | struct amt_unicode_string version; | ||
245 | } __attribute__((packed)); | ||
246 | |||
247 | struct amt_version { | ||
248 | uint8_t major; | ||
249 | uint8_t minor; | ||
250 | } __attribute__((packed)); | ||
251 | |||
252 | struct amt_code_versions { | ||
253 | uint8_t bios[AMT_BIOS_VERSION_LEN]; | ||
254 | uint32_t count; | ||
255 | struct amt_version_type versions[AMT_VERSIONS_NUMBER]; | ||
256 | } __attribute__((packed)); | ||
257 | |||
258 | /*************************************************************************** | ||
259 | * Intel Advanced Management Technolgy Host Interface | ||
260 | ***************************************************************************/ | ||
261 | |||
262 | struct amt_host_if_msg_header { | ||
263 | struct amt_version version; | ||
264 | uint16_t _reserved; | ||
265 | uint32_t command; | ||
266 | uint32_t length; | ||
267 | } __attribute__((packed)); | ||
268 | |||
269 | struct amt_host_if_resp_header { | ||
270 | struct amt_host_if_msg_header header; | ||
271 | uint32_t status; | ||
272 | unsigned char data[0]; | ||
273 | } __attribute__((packed)); | ||
274 | |||
275 | const uuid_le MEI_IAMTHIF = UUID_LE(0x12f80028, 0xb4b7, 0x4b2d, \ | ||
276 | 0xac, 0xa8, 0x46, 0xe0, 0xff, 0x65, 0x81, 0x4c); | ||
277 | |||
278 | #define AMT_HOST_IF_CODE_VERSIONS_REQUEST 0x0400001A | ||
279 | #define AMT_HOST_IF_CODE_VERSIONS_RESPONSE 0x0480001A | ||
280 | |||
281 | const struct amt_host_if_msg_header CODE_VERSION_REQ = { | ||
282 | .version = {AMT_MAJOR_VERSION, AMT_MINOR_VERSION}, | ||
283 | ._reserved = 0, | ||
284 | .command = AMT_HOST_IF_CODE_VERSIONS_REQUEST, | ||
285 | .length = 0 | ||
286 | }; | ||
287 | |||
288 | |||
289 | struct amt_host_if { | ||
290 | struct mei mei_cl; | ||
291 | unsigned long send_timeout; | ||
292 | bool initialized; | ||
293 | }; | ||
294 | |||
295 | |||
296 | static bool amt_host_if_init(struct amt_host_if *acmd, | ||
297 | unsigned long send_timeout, bool verbose) | ||
298 | { | ||
299 | acmd->send_timeout = (send_timeout) ? send_timeout : 20000; | ||
300 | acmd->initialized = mei_init(&acmd->mei_cl, &MEI_IAMTHIF, 0, verbose); | ||
301 | return acmd->initialized; | ||
302 | } | ||
303 | |||
304 | static void amt_host_if_deinit(struct amt_host_if *acmd) | ||
305 | { | ||
306 | mei_deinit(&acmd->mei_cl); | ||
307 | acmd->initialized = false; | ||
308 | } | ||
309 | |||
310 | static uint32_t amt_verify_code_versions(const struct amt_host_if_resp_header *resp) | ||
311 | { | ||
312 | uint32_t status = AMT_STATUS_SUCCESS; | ||
313 | struct amt_code_versions *code_ver; | ||
314 | size_t code_ver_len; | ||
315 | uint32_t ver_type_cnt; | ||
316 | uint32_t len; | ||
317 | uint32_t i; | ||
318 | |||
319 | code_ver = (struct amt_code_versions *)resp->data; | ||
320 | /* length - sizeof(status) */ | ||
321 | code_ver_len = resp->header.length - sizeof(uint32_t); | ||
322 | ver_type_cnt = code_ver_len - | ||
323 | sizeof(code_ver->bios) - | ||
324 | sizeof(code_ver->count); | ||
325 | if (code_ver->count != ver_type_cnt / sizeof(struct amt_version_type)) { | ||
326 | status = AMT_STATUS_INTERNAL_ERROR; | ||
327 | goto out; | ||
328 | } | ||
329 | |||
330 | for (i = 0; i < code_ver->count; i++) { | ||
331 | len = code_ver->versions[i].description.length; | ||
332 | |||
333 | if (len > AMT_UNICODE_STRING_LEN) { | ||
334 | status = AMT_STATUS_INTERNAL_ERROR; | ||
335 | goto out; | ||
336 | } | ||
337 | |||
338 | len = code_ver->versions[i].version.length; | ||
339 | if (code_ver->versions[i].version.string[len] != '\0' || | ||
340 | len != strlen(code_ver->versions[i].version.string)) { | ||
341 | status = AMT_STATUS_INTERNAL_ERROR; | ||
342 | goto out; | ||
343 | } | ||
344 | } | ||
345 | out: | ||
346 | return status; | ||
347 | } | ||
348 | |||
349 | static uint32_t amt_verify_response_header(uint32_t command, | ||
350 | const struct amt_host_if_msg_header *resp_hdr, | ||
351 | uint32_t response_size) | ||
352 | { | ||
353 | if (response_size < sizeof(struct amt_host_if_resp_header)) { | ||
354 | return AMT_STATUS_INTERNAL_ERROR; | ||
355 | } else if (response_size != (resp_hdr->length + | ||
356 | sizeof(struct amt_host_if_msg_header))) { | ||
357 | return AMT_STATUS_INTERNAL_ERROR; | ||
358 | } else if (resp_hdr->command != command) { | ||
359 | return AMT_STATUS_INTERNAL_ERROR; | ||
360 | } else if (resp_hdr->_reserved != 0) { | ||
361 | return AMT_STATUS_INTERNAL_ERROR; | ||
362 | } else if (resp_hdr->version.major != AMT_MAJOR_VERSION || | ||
363 | resp_hdr->version.minor < AMT_MINOR_VERSION) { | ||
364 | return AMT_STATUS_INTERNAL_ERROR; | ||
365 | } | ||
366 | return AMT_STATUS_SUCCESS; | ||
367 | } | ||
368 | |||
369 | static uint32_t amt_host_if_call(struct amt_host_if *acmd, | ||
370 | const unsigned char *command, ssize_t command_sz, | ||
371 | uint8_t **read_buf, uint32_t rcmd, | ||
372 | unsigned int expected_sz) | ||
373 | { | ||
374 | uint32_t in_buf_sz; | ||
375 | uint32_t out_buf_sz; | ||
376 | ssize_t written; | ||
377 | uint32_t status; | ||
378 | struct amt_host_if_resp_header *msg_hdr; | ||
379 | |||
380 | in_buf_sz = acmd->mei_cl.buf_size; | ||
381 | *read_buf = (uint8_t *)malloc(sizeof(uint8_t) * in_buf_sz); | ||
382 | if (*read_buf == NULL) | ||
383 | return AMT_STATUS_SDK_RESOURCES; | ||
384 | memset(*read_buf, 0, in_buf_sz); | ||
385 | msg_hdr = (struct amt_host_if_resp_header *)*read_buf; | ||
386 | |||
387 | written = mei_send_msg(&acmd->mei_cl, | ||
388 | command, command_sz, acmd->send_timeout); | ||
389 | if (written != command_sz) | ||
390 | return AMT_STATUS_INTERNAL_ERROR; | ||
391 | |||
392 | out_buf_sz = mei_recv_msg(&acmd->mei_cl, *read_buf, in_buf_sz, 2000); | ||
393 | if (out_buf_sz <= 0) | ||
394 | return AMT_STATUS_HOST_IF_EMPTY_RESPONSE; | ||
395 | |||
396 | status = msg_hdr->status; | ||
397 | if (status != AMT_STATUS_SUCCESS) | ||
398 | return status; | ||
399 | |||
400 | status = amt_verify_response_header(rcmd, | ||
401 | &msg_hdr->header, out_buf_sz); | ||
402 | if (status != AMT_STATUS_SUCCESS) | ||
403 | return status; | ||
404 | |||
405 | if (expected_sz && expected_sz != out_buf_sz) | ||
406 | return AMT_STATUS_INTERNAL_ERROR; | ||
407 | |||
408 | return AMT_STATUS_SUCCESS; | ||
409 | } | ||
410 | |||
411 | |||
412 | static uint32_t amt_get_code_versions(struct amt_host_if *cmd, | ||
413 | struct amt_code_versions *versions) | ||
414 | { | ||
415 | struct amt_host_if_resp_header *response = NULL; | ||
416 | uint32_t status; | ||
417 | |||
418 | status = amt_host_if_call(cmd, | ||
419 | (const unsigned char *)&CODE_VERSION_REQ, | ||
420 | sizeof(CODE_VERSION_REQ), | ||
421 | (uint8_t **)&response, | ||
422 | AMT_HOST_IF_CODE_VERSIONS_RESPONSE, 0); | ||
423 | |||
424 | if (status != AMT_STATUS_SUCCESS) | ||
425 | goto out; | ||
426 | |||
427 | status = amt_verify_code_versions(response); | ||
428 | if (status != AMT_STATUS_SUCCESS) | ||
429 | goto out; | ||
430 | |||
431 | memcpy(versions, response->data, sizeof(struct amt_code_versions)); | ||
432 | out: | ||
433 | if (response != NULL) | ||
434 | free(response); | ||
435 | |||
436 | return status; | ||
437 | } | ||
438 | |||
439 | /************************** end of amt_host_if_command ***********************/ | ||
440 | int main(int argc, char **argv) | ||
441 | { | ||
442 | struct amt_code_versions ver; | ||
443 | struct amt_host_if acmd; | ||
444 | unsigned int i; | ||
445 | uint32_t status; | ||
446 | int ret; | ||
447 | bool verbose; | ||
448 | |||
449 | verbose = (argc > 1 && strcmp(argv[1], "-v") == 0); | ||
450 | |||
451 | if (!amt_host_if_init(&acmd, 5000, verbose)) { | ||
452 | ret = 1; | ||
453 | goto out; | ||
454 | } | ||
455 | |||
456 | status = amt_get_code_versions(&acmd, &ver); | ||
457 | |||
458 | amt_host_if_deinit(&acmd); | ||
459 | |||
460 | switch (status) { | ||
461 | case AMT_STATUS_HOST_IF_EMPTY_RESPONSE: | ||
462 | printf("Intel AMT: DISABLED\n"); | ||
463 | ret = 0; | ||
464 | break; | ||
465 | case AMT_STATUS_SUCCESS: | ||
466 | printf("Intel AMT: ENABLED\n"); | ||
467 | for (i = 0; i < ver.count; i++) { | ||
468 | printf("%s:\t%s\n", ver.versions[i].description.string, | ||
469 | ver.versions[i].version.string); | ||
470 | } | ||
471 | ret = 0; | ||
472 | break; | ||
473 | default: | ||
474 | printf("An error has occurred\n"); | ||
475 | ret = 1; | ||
476 | break; | ||
477 | } | ||
478 | |||
479 | out: | ||
480 | return ret; | ||
481 | } | ||
diff --git a/Documentation/misc-devices/mei/mei.txt b/Documentation/misc-devices/mei/mei.txt new file mode 100644 index 000000000000..2785697da59d --- /dev/null +++ b/Documentation/misc-devices/mei/mei.txt | |||
@@ -0,0 +1,215 @@ | |||
1 | Intel(R) Management Engine Interface (Intel(R) MEI) | ||
2 | ======================= | ||
3 | |||
4 | Introduction | ||
5 | ======================= | ||
6 | |||
7 | The Intel Management Engine (Intel ME) is an isolated and protected computing | ||
8 | resource (Co-processor) residing inside certain Intel chipsets. The Intel ME | ||
9 | provides support for computer/IT management features. The feature set | ||
10 | depends on the Intel chipset SKU. | ||
11 | |||
12 | The Intel Management Engine Interface (Intel MEI, previously known as HECI) | ||
13 | is the interface between the Host and Intel ME. This interface is exposed | ||
14 | to the host as a PCI device. The Intel MEI Driver is in charge of the | ||
15 | communication channel between a host application and the Intel ME feature. | ||
16 | |||
17 | Each Intel ME feature (Intel ME Client) is addressed by a GUID/UUID and | ||
18 | each client has its own protocol. The protocol is message-based with a | ||
19 | header and payload up to 512 bytes. | ||
20 | |||
21 | Prominent usage of the Intel ME Interface is to communicate with Intel(R) | ||
22 | Active Management Technology (Intel AMT)implemented in firmware running on | ||
23 | the Intel ME. | ||
24 | |||
25 | Intel AMT provides the ability to manage a host remotely out-of-band (OOB) | ||
26 | even when the operating system running on the host processor has crashed or | ||
27 | is in a sleep state. | ||
28 | |||
29 | Some examples of Intel AMT usage are: | ||
30 | - Monitoring hardware state and platform components | ||
31 | - Remote power off/on (useful for green computing or overnight IT | ||
32 | maintenance) | ||
33 | - OS updates | ||
34 | - Storage of useful platform information such as software assets | ||
35 | - Built-in hardware KVM | ||
36 | - Selective network isolation of Ethernet and IP protocol flows based | ||
37 | on policies set by a remote management console | ||
38 | - IDE device redirection from remote management console | ||
39 | |||
40 | Intel AMT (OOB) communication is based on SOAP (deprecated | ||
41 | starting with Release 6.0) over HTTP/S or WS-Management protocol over | ||
42 | HTTP/S that are received from a remote management console application. | ||
43 | |||
44 | For more information about Intel AMT: | ||
45 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | ||
46 | |||
47 | Intel MEI Driver | ||
48 | ======================= | ||
49 | |||
50 | The driver exposes a misc device called /dev/mei. | ||
51 | |||
52 | An application maintains communication with an Intel ME feature while | ||
53 | /dev/mei is open. The binding to a specific features is performed by calling | ||
54 | MEI_CONNECT_CLIENT_IOCTL, which passes the desired UUID. | ||
55 | The number of instances of an Intel ME feature that can be opened | ||
56 | at the same time depends on the Intel ME feature, but most of the | ||
57 | features allow only a single instance. | ||
58 | |||
59 | The Intel AMT Host Interface (Intel AMTHI) feature supports multiple | ||
60 | simultaneous user applications. Therefore, the Intel MEI driver handles | ||
61 | this internally by maintaining request queues for the applications. | ||
62 | |||
63 | The driver is oblivious to data that is passed between firmware feature | ||
64 | and host application. | ||
65 | |||
66 | Because some of the Intel ME features can change the system | ||
67 | configuration, the driver by default allows only a privileged | ||
68 | user to access it. | ||
69 | |||
70 | A code snippet for an application communicating with | ||
71 | Intel AMTHI client: | ||
72 | struct mei_connect_client_data data; | ||
73 | fd = open(MEI_DEVICE); | ||
74 | |||
75 | data.d.in_client_uuid = AMTHI_UUID; | ||
76 | |||
77 | ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &data); | ||
78 | |||
79 | printf("Ver=%d, MaxLen=%ld\n", | ||
80 | data.d.in_client_uuid.protocol_version, | ||
81 | data.d.in_client_uuid.max_msg_length); | ||
82 | |||
83 | [...] | ||
84 | |||
85 | write(fd, amthi_req_data, amthi_req_data_len); | ||
86 | |||
87 | [...] | ||
88 | |||
89 | read(fd, &amthi_res_data, amthi_res_data_len); | ||
90 | |||
91 | [...] | ||
92 | close(fd); | ||
93 | |||
94 | IOCTL: | ||
95 | ====== | ||
96 | The Intel MEI Driver supports the following IOCTL command: | ||
97 | IOCTL_MEI_CONNECT_CLIENT Connect to firmware Feature (client). | ||
98 | |||
99 | usage: | ||
100 | struct mei_connect_client_data clientData; | ||
101 | ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &clientData); | ||
102 | |||
103 | inputs: | ||
104 | mei_connect_client_data struct contain the following | ||
105 | input field: | ||
106 | |||
107 | in_client_uuid - UUID of the FW Feature that needs | ||
108 | to connect to. | ||
109 | outputs: | ||
110 | out_client_properties - Client Properties: MTU and Protocol Version. | ||
111 | |||
112 | error returns: | ||
113 | EINVAL Wrong IOCTL Number | ||
114 | ENODEV Device or Connection is not initialized or ready. | ||
115 | (e.g. Wrong UUID) | ||
116 | ENOMEM Unable to allocate memory to client internal data. | ||
117 | EFAULT Fatal Error (e.g. Unable to access user input data) | ||
118 | EBUSY Connection Already Open | ||
119 | |||
120 | Notes: | ||
121 | max_msg_length (MTU) in client properties describes the maximum | ||
122 | data that can be sent or received. (e.g. if MTU=2K, can send | ||
123 | requests up to bytes 2k and received responses upto 2k bytes). | ||
124 | |||
125 | Intel ME Applications: | ||
126 | ============== | ||
127 | |||
128 | 1) Intel Local Management Service (Intel LMS) | ||
129 | |||
130 | Applications running locally on the platform communicate with Intel AMT Release | ||
131 | 2.0 and later releases in the same way that network applications do via SOAP | ||
132 | over HTTP (deprecated starting with Release 6.0) or with WS-Management over | ||
133 | SOAP over HTTP. This means that some Intel AMT features can be accessed from a | ||
134 | local application using the same network interface as a remote application | ||
135 | communicating with Intel AMT over the network. | ||
136 | |||
137 | When a local application sends a message addressed to the local Intel AMT host | ||
138 | name, the Intel LMS, which listens for traffic directed to the host name, | ||
139 | intercepts the message and routes it to the Intel MEI. | ||
140 | For more information: | ||
141 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | ||
142 | Under "About Intel AMT" => "Local Access" | ||
143 | |||
144 | For downloading Intel LMS: | ||
145 | http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | ||
146 | |||
147 | The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS | ||
148 | firmware feature using a defined UUID and then communicates with the feature | ||
149 | using a protocol called Intel AMT Port Forwarding Protocol(Intel APF protocol). | ||
150 | The protocol is used to maintain multiple sessions with Intel AMT from a | ||
151 | single application. | ||
152 | |||
153 | See the protocol specification in the Intel AMT Software Development Kit(SDK) | ||
154 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | ||
155 | Under "SDK Resources" => "Intel(R) vPro(TM) Gateway(MPS)" | ||
156 | => "Information for Intel(R) vPro(TM) Gateway Developers" | ||
157 | => "Description of the Intel AMT Port Forwarding (APF)Protocol" | ||
158 | |||
159 | 2) Intel AMT Remote configuration using a Local Agent | ||
160 | A Local Agent enables IT personnel to configure Intel AMT out-of-the-box | ||
161 | without requiring installing additional data to enable setup. The remote | ||
162 | configuration process may involve an ISV-developed remote configuration | ||
163 | agent that runs on the host. | ||
164 | For more information: | ||
165 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | ||
166 | Under "Setup and Configuration of Intel AMT" => | ||
167 | "SDK Tools Supporting Setup and Configuration" => | ||
168 | "Using the Local Agent Sample" | ||
169 | |||
170 | An open source Intel AMT configuration utility, implementing a local agent | ||
171 | that accesses the Intel MEI driver, can be found here: | ||
172 | http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | ||
173 | |||
174 | |||
175 | Intel AMT OS Health Watchdog: | ||
176 | ============================= | ||
177 | The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog. | ||
178 | Whenever the OS hangs or crashes, Intel AMT will send an event | ||
179 | to any subscriber to this event. This mechanism means that | ||
180 | IT knows when a platform crashes even when there is a hard failure on the host. | ||
181 | |||
182 | The Intel AMT Watchdog is composed of two parts: | ||
183 | 1) Firmware feature - receives the heartbeats | ||
184 | and sends an event when the heartbeats stop. | ||
185 | 2) Intel MEI driver - connects to the watchdog feature, configures the | ||
186 | watchdog and sends the heartbeats. | ||
187 | |||
188 | The Intel MEI driver uses the kernel watchdog to configure the Intel AMT | ||
189 | Watchdog and to send heartbeats to it. The default timeout of the | ||
190 | watchdog is 120 seconds. | ||
191 | |||
192 | If the Intel AMT Watchdog feature does not exist (i.e. the connection failed), | ||
193 | the Intel MEI driver will disable the sending of heartbeats. | ||
194 | |||
195 | Supported Chipsets: | ||
196 | ================== | ||
197 | 7 Series Chipset Family | ||
198 | 6 Series Chipset Family | ||
199 | 5 Series Chipset Family | ||
200 | 4 Series Chipset Family | ||
201 | Mobile 4 Series Chipset Family | ||
202 | ICH9 | ||
203 | 82946GZ/GL | ||
204 | 82G35 Express | ||
205 | 82Q963/Q965 | ||
206 | 82P965/G965 | ||
207 | Mobile PM965/GM965 | ||
208 | Mobile GME965/GLE960 | ||
209 | 82Q35 Express | ||
210 | 82G33/G31/P35/P31 Express | ||
211 | 82Q33 Express | ||
212 | 82X38/X48 Express | ||
213 | |||
214 | --- | ||
215 | linux-mei@linux.intel.com | ||
diff --git a/Documentation/networking/can.txt b/Documentation/networking/can.txt index 56ca3b75376e..ac295399f0d4 100644 --- a/Documentation/networking/can.txt +++ b/Documentation/networking/can.txt | |||
@@ -649,7 +649,7 @@ solution for a couple of reasons: | |||
649 | The CAN device must be configured via netlink interface. The supported | 649 | The CAN device must be configured via netlink interface. The supported |
650 | netlink message types are defined and briefly described in | 650 | netlink message types are defined and briefly described in |
651 | "include/linux/can/netlink.h". CAN link support for the program "ip" | 651 | "include/linux/can/netlink.h". CAN link support for the program "ip" |
652 | of the IPROUTE2 utility suite is avaiable and it can be used as shown | 652 | of the IPROUTE2 utility suite is available and it can be used as shown |
653 | below: | 653 | below: |
654 | 654 | ||
655 | - Setting CAN device properties: | 655 | - Setting CAN device properties: |
diff --git a/Documentation/nfc/nfc-hci.txt b/Documentation/nfc/nfc-hci.txt index 216b7254fcc3..320f9336c781 100644 --- a/Documentation/nfc/nfc-hci.txt +++ b/Documentation/nfc/nfc-hci.txt | |||
@@ -22,9 +22,9 @@ response to arrive. | |||
22 | HCI events can also be received from the host controller. They will be handled | 22 | HCI events can also be received from the host controller. They will be handled |
23 | and a translation will be forwarded to NFC Core as needed. | 23 | and a translation will be forwarded to NFC Core as needed. |
24 | HCI uses 2 execution contexts: | 24 | HCI uses 2 execution contexts: |
25 | - one if for executing commands : nfc_hci_msg_tx_work(). Only one command | 25 | - one for executing commands : nfc_hci_msg_tx_work(). Only one command |
26 | can be executing at any given moment. | 26 | can be executing at any given moment. |
27 | - one if for dispatching received events and responses : nfc_hci_msg_rx_work() | 27 | - one for dispatching received events and commands : nfc_hci_msg_rx_work(). |
28 | 28 | ||
29 | HCI Session initialization: | 29 | HCI Session initialization: |
30 | --------------------------- | 30 | --------------------------- |
@@ -52,18 +52,42 @@ entry points: | |||
52 | struct nfc_hci_ops { | 52 | struct nfc_hci_ops { |
53 | int (*open)(struct nfc_hci_dev *hdev); | 53 | int (*open)(struct nfc_hci_dev *hdev); |
54 | void (*close)(struct nfc_hci_dev *hdev); | 54 | void (*close)(struct nfc_hci_dev *hdev); |
55 | int (*hci_ready) (struct nfc_hci_dev *hdev); | ||
55 | int (*xmit)(struct nfc_hci_dev *hdev, struct sk_buff *skb); | 56 | int (*xmit)(struct nfc_hci_dev *hdev, struct sk_buff *skb); |
56 | int (*start_poll)(struct nfc_hci_dev *hdev, u32 protocols); | 57 | int (*start_poll)(struct nfc_hci_dev *hdev, u32 protocols); |
57 | int (*target_from_gate)(struct nfc_hci_dev *hdev, u8 gate, | 58 | int (*target_from_gate)(struct nfc_hci_dev *hdev, u8 gate, |
58 | struct nfc_target *target); | 59 | struct nfc_target *target); |
60 | int (*complete_target_discovered) (struct nfc_hci_dev *hdev, u8 gate, | ||
61 | struct nfc_target *target); | ||
62 | int (*data_exchange) (struct nfc_hci_dev *hdev, | ||
63 | struct nfc_target *target, | ||
64 | struct sk_buff *skb, struct sk_buff **res_skb); | ||
65 | int (*check_presence)(struct nfc_hci_dev *hdev, | ||
66 | struct nfc_target *target); | ||
59 | }; | 67 | }; |
60 | 68 | ||
61 | open() and close() shall turn the hardware on and off. xmit() shall simply | 69 | - open() and close() shall turn the hardware on and off. |
62 | write a frame to the chip. start_poll() is an optional entrypoint that shall | 70 | - hci_ready() is an optional entry point that is called right after the hci |
63 | set the hardware in polling mode. This must be implemented only if the hardware | 71 | session has been set up. The driver can use it to do additional initialization |
64 | uses proprietary gates or a mechanism slightly different from the HCI standard. | 72 | that must be performed using HCI commands. |
65 | target_from_gate() is another optional entrypoint to return the protocols | 73 | - xmit() shall simply write a frame to the chip. |
74 | - start_poll() is an optional entrypoint that shall set the hardware in polling | ||
75 | mode. This must be implemented only if the hardware uses proprietary gates or a | ||
76 | mechanism slightly different from the HCI standard. | ||
77 | - target_from_gate() is an optional entrypoint to return the nfc protocols | ||
66 | corresponding to a proprietary gate. | 78 | corresponding to a proprietary gate. |
79 | - complete_target_discovered() is an optional entry point to let the driver | ||
80 | perform additional proprietary processing necessary to auto activate the | ||
81 | discovered target. | ||
82 | - data_exchange() must be implemented by the driver if proprietary HCI commands | ||
83 | are required to send data to the tag. Some tag types will require custom | ||
84 | commands, others can be written to using the standard HCI commands. The driver | ||
85 | can check the tag type and either do proprietary processing, or return 1 to ask | ||
86 | for standard processing. | ||
87 | - check_presence() is an optional entry point that will be called regularly | ||
88 | by the core to check that an activated tag is still in the field. If this is | ||
89 | not implemented, the core will not be able to push tag_lost events to the user | ||
90 | space | ||
67 | 91 | ||
68 | On the rx path, the driver is responsible to push incoming HCP frames to HCI | 92 | On the rx path, the driver is responsible to push incoming HCP frames to HCI |
69 | using nfc_hci_recv_frame(). HCI will take care of re-aggregation and handling | 93 | using nfc_hci_recv_frame(). HCI will take care of re-aggregation and handling |
@@ -99,7 +123,8 @@ fast, cannot sleep. stores incoming frames into an shdlc rx queue | |||
99 | handles shdlc rx & tx queues. Dispatches HCI cmd responses. | 123 | handles shdlc rx & tx queues. Dispatches HCI cmd responses. |
100 | 124 | ||
101 | - HCI Tx Cmd worker (MSGTXWQ) | 125 | - HCI Tx Cmd worker (MSGTXWQ) |
102 | Serialize execution of HCI commands. Complete execution in case of resp timeout. | 126 | Serializes execution of HCI commands. Completes execution in case of response |
127 | timeout. | ||
103 | 128 | ||
104 | - HCI Rx worker (MSGRXWQ) | 129 | - HCI Rx worker (MSGRXWQ) |
105 | Dispatches incoming HCI commands or events. | 130 | Dispatches incoming HCI commands or events. |
@@ -133,11 +158,11 @@ able to complete the command with a timeout error if no response arrive. | |||
133 | SMW context gets scheduled and invokes nfc_shdlc_sm_work(). This function | 158 | SMW context gets scheduled and invokes nfc_shdlc_sm_work(). This function |
134 | handles shdlc framing in and out. It uses the driver xmit to send frames and | 159 | handles shdlc framing in and out. It uses the driver xmit to send frames and |
135 | receives incoming frames in an skb queue filled from the driver IRQ handler. | 160 | receives incoming frames in an skb queue filled from the driver IRQ handler. |
136 | SHDLC I(nformation) frames payload are HCP fragments. They are agregated to | 161 | SHDLC I(nformation) frames payload are HCP fragments. They are aggregated to |
137 | form complete HCI frames, which can be a response, command, or event. | 162 | form complete HCI frames, which can be a response, command, or event. |
138 | 163 | ||
139 | HCI Responses are dispatched immediately from this context to unblock | 164 | HCI Responses are dispatched immediately from this context to unblock |
140 | waiting command execution. Reponse processing involves invoking the completion | 165 | waiting command execution. Response processing involves invoking the completion |
141 | callback that was provided by nfc_hci_msg_tx_work() when it sent the command. | 166 | callback that was provided by nfc_hci_msg_tx_work() when it sent the command. |
142 | The completion callback will then wake the syscall context. | 167 | The completion callback will then wake the syscall context. |
143 | 168 | ||
diff --git a/Documentation/parisc/debugging b/Documentation/parisc/debugging index d728594058e5..7d75223fa18d 100644 --- a/Documentation/parisc/debugging +++ b/Documentation/parisc/debugging | |||
@@ -34,6 +34,6 @@ registers interruption handlers read to find out where the machine | |||
34 | was interrupted - so if you get an interruption between the instruction | 34 | was interrupted - so if you get an interruption between the instruction |
35 | that clears the Q bit and the RFI that sets it again you don't know | 35 | that clears the Q bit and the RFI that sets it again you don't know |
36 | where exactly it happened. If you're lucky the IAOQ will point to the | 36 | where exactly it happened. If you're lucky the IAOQ will point to the |
37 | instrucion that cleared the Q bit, if you're not it points anywhere | 37 | instruction that cleared the Q bit, if you're not it points anywhere |
38 | at all. Usually Q bit problems will show themselves in unexplainable | 38 | at all. Usually Q bit problems will show themselves in unexplainable |
39 | system hangs or running off the end of physical memory. | 39 | system hangs or running off the end of physical memory. |
diff --git a/Documentation/power/suspend-and-cpuhotplug.txt b/Documentation/power/suspend-and-cpuhotplug.txt index f28f9a6f0347..e13dafc8e8f1 100644 --- a/Documentation/power/suspend-and-cpuhotplug.txt +++ b/Documentation/power/suspend-and-cpuhotplug.txt | |||
@@ -29,7 +29,7 @@ More details follow: | |||
29 | 29 | ||
30 | Write 'mem' to | 30 | Write 'mem' to |
31 | /sys/power/state | 31 | /sys/power/state |
32 | syfs file | 32 | sysfs file |
33 | | | 33 | | |
34 | v | 34 | v |
35 | Acquire pm_mutex lock | 35 | Acquire pm_mutex lock |
diff --git a/Documentation/ramoops.txt b/Documentation/ramoops.txt index 8fb1ba7fe7bf..4ba7db231cb2 100644 --- a/Documentation/ramoops.txt +++ b/Documentation/ramoops.txt | |||
@@ -3,7 +3,7 @@ Ramoops oops/panic logger | |||
3 | 3 | ||
4 | Sergiu Iordache <sergiu@chromium.org> | 4 | Sergiu Iordache <sergiu@chromium.org> |
5 | 5 | ||
6 | Updated: 8 August 2011 | 6 | Updated: 17 November 2011 |
7 | 7 | ||
8 | 0. Introduction | 8 | 0. Introduction |
9 | 9 | ||
@@ -30,6 +30,11 @@ variable while setting 0 in that variable dumps only the panics. | |||
30 | The module uses a counter to record multiple dumps but the counter gets reset | 30 | The module uses a counter to record multiple dumps but the counter gets reset |
31 | on restart (i.e. new dumps after the restart will overwrite old ones). | 31 | on restart (i.e. new dumps after the restart will overwrite old ones). |
32 | 32 | ||
33 | Ramoops also supports software ECC protection of persistent memory regions. | ||
34 | This might be useful when a hardware reset was used to bring the machine back | ||
35 | to life (i.e. a watchdog triggered). In such cases, RAM may be somewhat | ||
36 | corrupt, but usually it is restorable. | ||
37 | |||
33 | 2. Setting the parameters | 38 | 2. Setting the parameters |
34 | 39 | ||
35 | Setting the ramoops parameters can be done in 2 different manners: | 40 | Setting the ramoops parameters can be done in 2 different manners: |
@@ -38,7 +43,7 @@ Setting the ramoops parameters can be done in 2 different manners: | |||
38 | 2. Use a platform device and set the platform data. The parameters can then | 43 | 2. Use a platform device and set the platform data. The parameters can then |
39 | be set through that platform data. An example of doing that is: | 44 | be set through that platform data. An example of doing that is: |
40 | 45 | ||
41 | #include <linux/ramoops.h> | 46 | #include <linux/pstore_ram.h> |
42 | [...] | 47 | [...] |
43 | 48 | ||
44 | static struct ramoops_platform_data ramoops_data = { | 49 | static struct ramoops_platform_data ramoops_data = { |
@@ -46,6 +51,7 @@ static struct ramoops_platform_data ramoops_data = { | |||
46 | .mem_address = <...>, | 51 | .mem_address = <...>, |
47 | .record_size = <...>, | 52 | .record_size = <...>, |
48 | .dump_oops = <...>, | 53 | .dump_oops = <...>, |
54 | .ecc = <...>, | ||
49 | }; | 55 | }; |
50 | 56 | ||
51 | static struct platform_device ramoops_dev = { | 57 | static struct platform_device ramoops_dev = { |
@@ -71,6 +77,6 @@ timestamp and a new line. The dump then continues with the actual data. | |||
71 | 77 | ||
72 | 4. Reading the data | 78 | 4. Reading the data |
73 | 79 | ||
74 | The dump data can be read from memory (through /dev/mem or other means). | 80 | The dump data can be read from the pstore filesystem. The format for these |
75 | Getting the module parameters, which are needed in order to parse the data, can | 81 | files is "dmesg-ramoops-N", where N is the record number in memory. To delete |
76 | be done through /sys/module/ramoops/parameters/* . | 82 | a stored record from RAM, simply unlink the respective pstore file. |
diff --git a/Documentation/scheduler/sched-design-CFS.txt b/Documentation/scheduler/sched-design-CFS.txt index 91ecff07cede..d529e02d928d 100644 --- a/Documentation/scheduler/sched-design-CFS.txt +++ b/Documentation/scheduler/sched-design-CFS.txt | |||
@@ -130,7 +130,7 @@ CFS implements three scheduling policies: | |||
130 | idle timer scheduler in order to avoid to get into priority | 130 | idle timer scheduler in order to avoid to get into priority |
131 | inversion problems which would deadlock the machine. | 131 | inversion problems which would deadlock the machine. |
132 | 132 | ||
133 | SCHED_FIFO/_RR are implemented in sched_rt.c and are as specified by | 133 | SCHED_FIFO/_RR are implemented in sched/rt.c and are as specified by |
134 | POSIX. | 134 | POSIX. |
135 | 135 | ||
136 | The command chrt from util-linux-ng 2.13.1.1 can set all of these except | 136 | The command chrt from util-linux-ng 2.13.1.1 can set all of these except |
@@ -145,9 +145,9 @@ Classes," an extensible hierarchy of scheduler modules. These modules | |||
145 | encapsulate scheduling policy details and are handled by the scheduler core | 145 | encapsulate scheduling policy details and are handled by the scheduler core |
146 | without the core code assuming too much about them. | 146 | without the core code assuming too much about them. |
147 | 147 | ||
148 | sched_fair.c implements the CFS scheduler described above. | 148 | sched/fair.c implements the CFS scheduler described above. |
149 | 149 | ||
150 | sched_rt.c implements SCHED_FIFO and SCHED_RR semantics, in a simpler way than | 150 | sched/rt.c implements SCHED_FIFO and SCHED_RR semantics, in a simpler way than |
151 | the previous vanilla scheduler did. It uses 100 runqueues (for all 100 RT | 151 | the previous vanilla scheduler did. It uses 100 runqueues (for all 100 RT |
152 | priority levels, instead of 140 in the previous scheduler) and it needs no | 152 | priority levels, instead of 140 in the previous scheduler) and it needs no |
153 | expired array. | 153 | expired array. |
diff --git a/Documentation/scheduler/sched-domains.txt b/Documentation/scheduler/sched-domains.txt index b7ee379b651b..443f0c76bab4 100644 --- a/Documentation/scheduler/sched-domains.txt +++ b/Documentation/scheduler/sched-domains.txt | |||
@@ -61,10 +61,6 @@ The implementor should read comments in include/linux/sched.h: | |||
61 | struct sched_domain fields, SD_FLAG_*, SD_*_INIT to get an idea of | 61 | struct sched_domain fields, SD_FLAG_*, SD_*_INIT to get an idea of |
62 | the specifics and what to tune. | 62 | the specifics and what to tune. |
63 | 63 | ||
64 | For SMT, the architecture must define CONFIG_SCHED_SMT and provide a | ||
65 | cpumask_t cpu_sibling_map[NR_CPUS], where cpu_sibling_map[i] is the mask of | ||
66 | all "i"'s siblings as well as "i" itself. | ||
67 | |||
68 | Architectures may retain the regular override the default SD_*_INIT flags | 64 | Architectures may retain the regular override the default SD_*_INIT flags |
69 | while using the generic domain builder in kernel/sched.c if they wish to | 65 | while using the generic domain builder in kernel/sched.c if they wish to |
70 | retain the traditional SMT->SMP->NUMA topology (or some subset of that). This | 66 | retain the traditional SMT->SMP->NUMA topology (or some subset of that). This |
diff --git a/Documentation/scsi/00-INDEX b/Documentation/scsi/00-INDEX index b7dd6502bec5..9b0787f965e9 100644 --- a/Documentation/scsi/00-INDEX +++ b/Documentation/scsi/00-INDEX | |||
@@ -56,8 +56,6 @@ g_NCR5380.txt | |||
56 | - info on driver for NCR5380 and NCR53c400 based adapters | 56 | - info on driver for NCR5380 and NCR53c400 based adapters |
57 | hptiop.txt | 57 | hptiop.txt |
58 | - HIGHPOINT ROCKETRAID 3xxx RAID DRIVER | 58 | - HIGHPOINT ROCKETRAID 3xxx RAID DRIVER |
59 | ibmmca.txt | ||
60 | - info on driver for IBM adapters with MCA bus | ||
61 | in2000.txt | 59 | in2000.txt |
62 | - info on in2000 driver | 60 | - info on in2000 driver |
63 | libsas.txt | 61 | libsas.txt |
diff --git a/Documentation/scsi/ibmmca.txt b/Documentation/scsi/ibmmca.txt deleted file mode 100644 index ac41a9fcac77..000000000000 --- a/Documentation/scsi/ibmmca.txt +++ /dev/null | |||
@@ -1,1402 +0,0 @@ | |||
1 | |||
2 | -=< The IBM Microchannel SCSI-Subsystem >=- | ||
3 | |||
4 | for the IBM PS/2 series | ||
5 | |||
6 | Low Level Software-Driver for Linux | ||
7 | |||
8 | Copyright (c) 1995 Strom Systems, Inc. under the terms of the GNU | ||
9 | General Public License. Originally written by Martin Kolinek, December 1995. | ||
10 | Officially modified and maintained by Michael Lang since January 1999. | ||
11 | |||
12 | Version 4.0a | ||
13 | |||
14 | Last update: January 3, 2001 | ||
15 | |||
16 | Before you Start | ||
17 | ---------------- | ||
18 | This is the common README.ibmmca file for all driver releases of the | ||
19 | IBM MCA SCSI driver for Linux. Please note, that driver releases 4.0 | ||
20 | or newer do not work with kernel versions older than 2.4.0, while driver | ||
21 | versions older than 4.0 do not work with kernels 2.4.0 or later! If you | ||
22 | try to compile your kernel with the wrong driver source, the | ||
23 | compilation is aborted and you get a corresponding error message. This is | ||
24 | no bug in the driver; it prevents you from using the wrong source code | ||
25 | with the wrong kernel version. | ||
26 | |||
27 | Authors of this Driver | ||
28 | ---------------------- | ||
29 | - Chris Beauregard (improvement of the SCSI-device mapping by the driver) | ||
30 | - Martin Kolinek (origin, first release of this driver) | ||
31 | - Klaus Kudielka (multiple SCSI-host management/detection, adaption to | ||
32 | Linux Kernel 2.1.x, module support) | ||
33 | - Michael Lang (assigning original pun/lun mapping, dynamical ldn | ||
34 | assignment, rewritten adapter detection, this file, | ||
35 | patches, official driver maintenance and subsequent | ||
36 | debugging, related with the driver) | ||
37 | |||
38 | Table of Contents | ||
39 | ----------------- | ||
40 | 1 Abstract | ||
41 | 2 Driver Description | ||
42 | 2.1 IBM SCSI-Subsystem Detection | ||
43 | 2.2 Physical Units, Logical Units, and Logical Devices | ||
44 | 2.3 SCSI-Device Recognition and dynamical ldn Assignment | ||
45 | 2.4 SCSI-Device Order | ||
46 | 2.5 Regular SCSI-Command-Processing | ||
47 | 2.6 Abort & Reset Commands | ||
48 | 2.7 Disk Geometry | ||
49 | 2.8 Kernel Boot Option | ||
50 | 2.9 Driver Module Support | ||
51 | 2.10 Multiple Hostadapter Support | ||
52 | 2.11 /proc/scsi-Filesystem Information | ||
53 | 2.12 /proc/mca-Filesystem Information | ||
54 | 2.13 Supported IBM SCSI-Subsystems | ||
55 | 2.14 Linux Kernel Versions | ||
56 | 3 Code History | ||
57 | 4 To do | ||
58 | 5 Users' Manual | ||
59 | 5.1 Commandline Parameters | ||
60 | 5.2 Troubleshooting | ||
61 | 5.3 Bug reports | ||
62 | 5.4 Support WWW-page | ||
63 | 6 References | ||
64 | 7 Credits to | ||
65 | 7.1 People | ||
66 | 7.2 Sponsors & Supporters | ||
67 | 8 Trademarks | ||
68 | 9 Disclaimer | ||
69 | |||
70 | * * * | ||
71 | |||
72 | 1 Abstract | ||
73 | ---------- | ||
74 | This README-file describes the IBM SCSI-subsystem low level driver for | ||
75 | Linux. The descriptions which were formerly kept in the source code have | ||
76 | been taken out of this file to simplify the codes readability. The driver | ||
77 | description has been updated, as most of the former description was already | ||
78 | quite outdated. The history of the driver development is also kept inside | ||
79 | here. Multiple historical developments have been summarized to shorten the | ||
80 | text size a bit. At the end of this file you can find a small manual for | ||
81 | this driver and hints to get it running on your machine. | ||
82 | |||
83 | 2 Driver Description | ||
84 | -------------------- | ||
85 | 2.1 IBM SCSI-Subsystem Detection | ||
86 | -------------------------------- | ||
87 | This is done in the ibmmca_detect() function. It first checks, if the | ||
88 | Microchannel-bus support is enabled, as the IBM SCSI-subsystem needs the | ||
89 | Microchannel. In a next step, a free interrupt is chosen and the main | ||
90 | interrupt handler is connected to it to handle answers of the SCSI- | ||
91 | subsystem(s). If the F/W SCSI-adapter is forced by the BIOS to use IRQ11 | ||
92 | instead of IRQ14, IRQ11 is used for the IBM SCSI-2 F/W adapter. In a | ||
93 | further step it is checked, if the adapter gets detected by force from | ||
94 | the kernel commandline, where the I/O port and the SCSI-subsystem id can | ||
95 | be specified. The next step checks if there is an integrated SCSI-subsystem | ||
96 | installed. This register area is fixed through all IBM PS/2 MCA-machines | ||
97 | and appears as something like a virtual slot 10 of the MCA-bus. On most | ||
98 | PS/2 machines, the POS registers of slot 10 are set to 0xff or 0x00 if not | ||
99 | integrated SCSI-controller is available. But on certain PS/2s, like model | ||
100 | 9595, this slot 10 is used to store other information which at earlier | ||
101 | stage confused the driver and resulted in the detection of some ghost-SCSI. | ||
102 | If POS-register 2 and 3 are not 0x00 and not 0xff, but all other POS | ||
103 | registers are either 0xff or 0x00, there must be an integrated SCSI- | ||
104 | subsystem present and it will be registered as IBM Integrated SCSI- | ||
105 | Subsystem. The next step checks, if there is a slot-adapter installed on | ||
106 | the MCA-bus. To get this, the first two POS-registers, that represent the | ||
107 | adapter ID are checked. If they fit to one of the ids, stored in the | ||
108 | adapter list, a SCSI-subsystem is assumed to be found in a slot and will be | ||
109 | registered. This check is done through all possible MCA-bus slots to allow | ||
110 | more than one SCSI-adapter to be present in the PS/2-system and this is | ||
111 | already the first point of problems. Looking into the technical reference | ||
112 | manual for the IBM PS/2 common interfaces, the POS2 register must have | ||
113 | different interpretation of its single bits to avoid overlapping I/O | ||
114 | regions. While one can assume, that the integrated subsystem has a fix | ||
115 | I/O-address at 0x3540 - 0x3547, further installed IBM SCSI-adapters must | ||
116 | use a different I/O-address. This is expressed by bit 1 to 3 of POS2 | ||
117 | (multiplied by 8 + 0x3540). Bits 2 and 3 are reserved for the integrated | ||
118 | subsystem, but not for the adapters! The following list shows, how the | ||
119 | bits of POS2 and POS3 should be interpreted. | ||
120 | |||
121 | The POS2-register of all PS/2 models' integrated SCSI-subsystems has the | ||
122 | following interpretation of bits: | ||
123 | Bit 7 - 4 : Chip Revision ID (Release) | ||
124 | Bit 3 - 2 : Reserved | ||
125 | Bit 1 : 8k NVRAM Disabled | ||
126 | Bit 0 : Chip Enable (EN-Signal) | ||
127 | The POS3-register is interpreted as follows (for most IBM SCSI-subsys.): | ||
128 | Bit 7 - 5 : SCSI ID | ||
129 | Bit 4 - 0 : Reserved = 0 | ||
130 | The slot-adapters have different interpretation of these bits. The IBM SCSI | ||
131 | adapter (w/Cache) and the IBM SCSI-2 F/W adapter use the following | ||
132 | interpretation of the POS2 register: | ||
133 | Bit 7 - 4 : ROM Segment Address Select | ||
134 | Bit 3 - 1 : Adapter I/O Address Select (*8+0x3540) | ||
135 | Bit 0 : Adapter Enable (EN-Signal) | ||
136 | and for the POS3 register: | ||
137 | Bit 7 - 5 : SCSI ID | ||
138 | Bit 4 : Fairness Enable (SCSI ID3 f. F/W) | ||
139 | Bit 3 - 0 : Arbitration Level | ||
140 | The most modern product of the series is the IBM SCSI-2 F/W adapter, it | ||
141 | allows dual-bus SCSI and SCSI-wide addressing, which means, PUNs may be | ||
142 | between 0 and 15. Here, Bit 4 is the high-order bit of the 4-bit wide | ||
143 | adapter PUN expression. In short words, this means, that IBM PS/2 machines | ||
144 | can only support 1 single integrated subsystem by default. Additional | ||
145 | slot-adapters get ports assigned by the automatic configuration tool. | ||
146 | |||
147 | One day I found a patch in ibmmca_detect(), forcing the I/O-address to be | ||
148 | 0x3540 for integrated SCSI-subsystems, there was a remark placed, that on | ||
149 | integrated IBM SCSI-subsystems of model 56, the POS2 register was showing 5. | ||
150 | This means, that really for these models, POS2 has to be interpreted | ||
151 | sticking to the technical reference guide. In this case, the bit 2 (4) is | ||
152 | a reserved bit and may not be interpreted. These differences between the | ||
153 | adapters and the integrated controllers are taken into account by the | ||
154 | detection routine of the driver on from version >3.0g. | ||
155 | |||
156 | Every time, a SCSI-subsystem is discovered, the ibmmca_register() function | ||
157 | is called. This function checks first, if the requested area for the I/O- | ||
158 | address of this SCSI-subsystem is still available and assigns this I/O- | ||
159 | area to the SCSI-subsystem. There are always 8 sequential I/O-addresses | ||
160 | taken for each individual SCSI-subsystem found, which are: | ||
161 | |||
162 | Offset Type Permissions | ||
163 | 0 Command Interface Register 1 Read/Write | ||
164 | 1 Command Interface Register 2 Read/Write | ||
165 | 2 Command Interface Register 3 Read/Write | ||
166 | 3 Command Interface Register 4 Read/Write | ||
167 | 4 Attention Register Read/Write | ||
168 | 5 Basic Control Register Read/Write | ||
169 | 6 Interrupt Status Register Read | ||
170 | 7 Basic Status Register Read | ||
171 | |||
172 | After the I/O-address range is assigned, the host-adapter is assigned | ||
173 | to a local structure which keeps all adapter information needed for the | ||
174 | driver itself and the mid- and higher-level SCSI-drivers. The SCSI pun/lun | ||
175 | and the adapters' ldn tables are initialized and get probed afterwards by | ||
176 | the check_devices() function. If no further adapters are found, | ||
177 | ibmmca_detect() quits. | ||
178 | |||
179 | 2.2 Physical Units, Logical Units, and Logical Devices | ||
180 | ------------------------------------------------------ | ||
181 | There can be up to 56 devices on the SCSI bus (besides the adapter): | ||
182 | there are up to 7 "physical units" (each identified by physical unit | ||
183 | number or pun, also called the scsi id, this is the number you select | ||
184 | with hardware jumpers), and each physical unit can have up to 8 | ||
185 | "logical units" (each identified by logical unit number, or lun, | ||
186 | between 0 and 7). The IBM SCSI-2 F/W adapter offers this on up to two | ||
187 | busses and provides support for 30 logical devices at the same time, where | ||
188 | in wide-addressing mode you can have 16 puns with 32 luns on each device. | ||
189 | This section describes the handling of devices on non-F/W adapters. | ||
190 | Just imagine, that you can have 16 * 32 = 512 devices on a F/W adapter | ||
191 | which means a lot of possible devices for such a small machine. | ||
192 | |||
193 | Typically the adapter has pun=7, so puns of other physical units | ||
194 | are between 0 and 6(15). On a wide-adapter a pun higher than 7 is | ||
195 | possible, but is normally not used. Almost all physical units have only | ||
196 | one logical unit, with lun=0. A CD-ROM jukebox would be an example of a | ||
197 | physical unit with more than one logical unit. | ||
198 | |||
199 | The embedded microprocessor of the IBM SCSI-subsystem hides the complex | ||
200 | two-dimensional (pun,lun) organization from the operating system. | ||
201 | When the machine is powered-up (or rebooted), the embedded microprocessor | ||
202 | checks, on its own, all 56 possible (pun,lun) combinations, and the first | ||
203 | 15 devices found are assigned into a one-dimensional array of so-called | ||
204 | "logical devices", identified by "logical device numbers" or ldn. The last | ||
205 | ldn=15 is reserved for the subsystem itself. Wide adapters may have | ||
206 | to check up to 15 * 8 = 120 pun/lun combinations. | ||
207 | |||
208 | 2.3 SCSI-Device Recognition and Dynamical ldn Assignment | ||
209 | -------------------------------------------------------- | ||
210 | One consequence of information hiding is that the real (pun,lun) | ||
211 | numbers are also hidden. The two possibilities to get around this problem | ||
212 | are to offer fake pun/lun combinations to the operating system or to | ||
213 | delete the whole mapping of the adapter and to reassign the ldns, using | ||
214 | the immediate assign command of the SCSI-subsystem for probing through | ||
215 | all possible pun/lun combinations. An ldn is a "logical device number" | ||
216 | which is used by IBM SCSI-subsystems to access some valid SCSI-device. | ||
217 | At the beginning of the development of this driver, the following approach | ||
218 | was used: | ||
219 | |||
220 | First, the driver checked the ldn's (0 to 6) to find out which ldn's | ||
221 | have devices assigned. This was done by the functions check_devices() and | ||
222 | device_exists(). The interrupt handler has a special paragraph of code | ||
223 | (see local_checking_phase_flag) to assist in the checking. Assume, for | ||
224 | example, that three logical devices were found assigned at ldn 0, 1, 2. | ||
225 | These are presented to the upper layer of Linux SCSI driver | ||
226 | as devices with bogus (pun, lun) equal to (0,0), (1,0), (2,0). | ||
227 | On the other hand, if the upper layer issues a command to device | ||
228 | say (4,0), this driver returns DID_NO_CONNECT error. | ||
229 | |||
230 | In a second step of the driver development, the following improvement has | ||
231 | been applied: The first approach limited the number of devices to 7, far | ||
232 | fewer than the 15 that it could use, then it just mapped ldn -> | ||
233 | (ldn/8,ldn%8) for pun,lun. We ended up with a real mishmash of puns | ||
234 | and luns, but it all seemed to work. | ||
235 | |||
236 | The latest development, which is implemented from the driver version 3.0 | ||
237 | and later, realizes the device recognition in the following way: | ||
238 | The physical SCSI-devices on the SCSI-bus are probed via immediate_assign- | ||
239 | and device_inquiry-commands, that is all implemented in a completely new | ||
240 | made check_devices() subroutine. This delivers an exact map of the physical | ||
241 | SCSI-world that is now stored in the get_scsi[][]-array. This means, | ||
242 | that the once hidden pun,lun assignment is now known to this driver. | ||
243 | It no longer believes in default-settings of the subsystem and maps all | ||
244 | ldns to existing pun,lun "by foot". This assures full control of the ldn | ||
245 | mapping and allows dynamical remapping of ldns to different pun,lun, if | ||
246 | there are more SCSI-devices installed than ldns available (n>15). The | ||
247 | ldns from 0 to 6 get 'hardwired' by this driver to puns 0 to 7 at lun=0, | ||
248 | excluding the pun of the subsystem. This assures, that at least simple | ||
249 | SCSI-installations have optimum access-speed and are not touched by | ||
250 | dynamical remapping. The ldns 7 to 14 are put to existing devices with | ||
251 | lun>0 or to non-existing devices, in order to satisfy the subsystem, if | ||
252 | there are less than 15 SCSI-devices connected. In the case of more than 15 | ||
253 | devices, the dynamical mapping goes active. If the get_scsi[][] reports a | ||
254 | device to be existent, but it has no ldn assigned, it gets an ldn out of 7 | ||
255 | to 14. The numbers are assigned in cyclic order, therefore it takes 8 | ||
256 | dynamical reassignments on the SCSI-devices until a certain device | ||
257 | loses its ldn again. This assures that dynamical remapping is avoided | ||
258 | during intense I/O between up to 15 SCSI-devices (means pun,lun | ||
259 | combinations). A further advantage of this method is that people who | ||
260 | build their kernel without probing on all luns will get what they expect, | ||
261 | because the driver just won't assign everything with lun>0 when | ||
262 | multiple lun probing is inactive. | ||
263 | |||
264 | 2.4 SCSI-Device Order | ||
265 | --------------------- | ||
266 | Because of the now correct recognition of physical pun,lun, and | ||
267 | their report to mid-level- and higher-level-drivers, the new reported puns | ||
268 | can be different from the old, faked puns. Therefore, Linux will eventually | ||
269 | change /dev/sdXXX assignments and prompt you for corrupted superblock | ||
270 | repair on boottime. In this case DO NOT PANIC, YOUR DISKS ARE STILL OK!!! | ||
271 | You have to reboot (CTRL-D) with an old kernel and set the /etc/fstab-file | ||
272 | entries right. After that, the system should come up as errorfree as before. | ||
273 | If your boot-partition is not coming up, also edit the /etc/lilo.conf-file | ||
274 | in a Linux session booted on old kernel and run lilo before reboot. Check | ||
275 | lilo.conf anyway to get boot on other partitions with foreign OSes right | ||
276 | again. But there exists a feature of this driver that allows you to change | ||
277 | the assignment order of the SCSI-devices by flipping the PUN-assignment. | ||
278 | See the next paragraph for a description. | ||
279 | |||
280 | The problem for this is, that Linux does not assign the SCSI-devices in the | ||
281 | way as described in the ANSI-SCSI-standard. Linux assigns /dev/sda to | ||
282 | the device with at minimum id 0. But the first drive should be at id 6, | ||
283 | because for historical reasons, drive at id 6 has, by hardware, the highest | ||
284 | priority and a drive at id 0 the lowest. IBM was one of the rare producers, | ||
285 | where the BIOS assigns drives belonging to the ANSI-SCSI-standard. Most | ||
286 | other producers' BIOS does not (I think even Adaptec-BIOS). The | ||
287 | IBMMCA_SCSI_ORDER_STANDARD flag, which you set while configuring the | ||
288 | kernel enables to choose the preferred way of SCSI-device-assignment. | ||
289 | Defining this flag would result in Linux determining the devices in the | ||
290 | same order as DOS and OS/2 does on your MCA-machine. This is also standard | ||
291 | on most industrial computers and OSes, like e.g. OS-9. Leaving this flag | ||
292 | undefined will get your devices ordered in the default way of Linux. See | ||
293 | also the remarks of Chris Beauregard from Dec 15, 1997 and the followups | ||
294 | in section 3. | ||
295 | |||
296 | 2.5 Regular SCSI-Command-Processing | ||
297 | ----------------------------------- | ||
298 | Only three functions get involved: ibmmca_queuecommand(), issue_cmd(), | ||
299 | and interrupt_handler(). | ||
300 | |||
301 | The upper layer issues a scsi command by calling function | ||
302 | ibmmca_queuecommand(). This function fills a "subsystem control block" | ||
303 | (scb) and calls a local function issue_cmd(), which writes a scb | ||
304 | command into subsystem I/O ports. Once the scb command is carried out, | ||
305 | the interrupt_handler() is invoked. If a device is determined to be | ||
306 | existent and it has not assigned any ldn, it gets one dynamically. | ||
307 | For this, the whole stuff is done in ibmmca_queuecommand(). | ||
308 | |||
309 | 2.6 Abort & Reset Commands | ||
310 | -------------------------- | ||
311 | These are implemented with busy waiting for interrupt to arrive. | ||
312 | ibmmca_reset() and ibmmca_abort() do not work sufficiently well | ||
313 | up to now and need still a lot of development work. This seems | ||
314 | to be a problem with other low-level SCSI drivers too, however | ||
315 | this should be no excuse. | ||
316 | |||
317 | 2.7 Disk Geometry | ||
318 | ----------------- | ||
319 | The ibmmca_biosparams() function should return the same disk geometry | ||
320 | as the bios. This is needed for fdisk, etc. The returned geometry is | ||
321 | certainly correct for disks smaller than 1 gigabyte. In the meantime, | ||
322 | it has been proved, that this works fine even with disks larger than | ||
323 | 1 gigabyte. | ||
324 | |||
325 | 2.8 Kernel Boot Option | ||
326 | ---------------------- | ||
327 | The function ibmmca_scsi_setup() is called if option ibmmcascsi=n | ||
328 | is passed to the kernel. See file linux/init/main.c for details. | ||
329 | |||
330 | 2.9 Driver Module Support | ||
331 | ------------------------- | ||
332 | Is implemented and tested by K. Kudielka. This could probably not work | ||
333 | on kernels <2.1.0. | ||
334 | |||
335 | 2.10 Multiple Hostadapter Support | ||
336 | --------------------------------- | ||
337 | This driver supports up to eight interfaces of type IBM-SCSI-Subsystem. | ||
338 | Integrated-, and MCA-adapters are automatically recognized. Unrecognizable | ||
339 | IBM-SCSI-Subsystem interfaces can be specified as kernel-parameters. | ||
340 | |||
341 | 2.11 /proc/scsi-Filesystem Information | ||
342 | -------------------------------------- | ||
343 | Information about the driver condition is given in | ||
344 | /proc/scsi/ibmmca/<host_no>. ibmmca_proc_info() provides this information. | ||
345 | |||
346 | This table is quite informative for interested users. It shows the load | ||
347 | of commands on the subsystem and whether you are running the bypassed | ||
348 | (software) or integrated (hardware) SCSI-command set (see below). The | ||
349 | amount of accesses is shown. Read, write, modeselect is shown separately | ||
350 | in order to help debugging problems with CD-ROMs or tapedrives. | ||
351 | |||
352 | The following table shows the list of 15 logical device numbers, that are | ||
353 | used by the SCSI-subsystem. The load on each ldn is shown in the table, | ||
354 | again, read and write commands are split. The last column shows the amount | ||
355 | of reassignments, that have been applied to the ldns, if you have more than | ||
356 | 15 pun/lun combinations available on the SCSI-bus. | ||
357 | |||
358 | The last two tables show the pun/lun map and the positions of the ldns | ||
359 | on this pun/lun map. This may change during operation, when a ldn is | ||
360 | reassigned to another pun/lun combination. If the necessity for dynamical | ||
361 | assignments is set to 'no', the ldn structure keeps static. | ||
362 | |||
363 | 2.12 /proc/mca-Filesystem Information | ||
364 | ------------------------------------- | ||
365 | The slot-file contains all default entries and in addition chip and I/O- | ||
366 | address information of the SCSI-subsystem. This information is provided | ||
367 | by ibmmca_getinfo(). | ||
368 | |||
369 | 2.13 Supported IBM SCSI-Subsystems | ||
370 | ---------------------------------- | ||
371 | The following IBM SCSI-subsystems are supported by this driver: | ||
372 | |||
373 | - IBM Fast/Wide SCSI-2 Adapter | ||
374 | - IBM 7568 Industrial Computer SCSI Adapter w/Cache | ||
375 | - IBM Expansion Unit SCSI Controller | ||
376 | - IBM SCSI Adapter w/Cache | ||
377 | - IBM SCSI Adapter | ||
378 | - IBM Integrated SCSI Controller | ||
379 | - All clones, 100% compatible with the chipset and subsystem command | ||
380 | system of IBM SCSI-adapters (forced detection) | ||
381 | |||
382 | 2.14 Linux Kernel Versions | ||
383 | -------------------------- | ||
384 | The IBM SCSI-subsystem low level driver is prepared to be used with | ||
385 | all versions of Linux between 2.0.x and 2.4.x. The compatibility checks | ||
386 | are fully implemented up from version 3.1e of the driver. This means, that | ||
387 | you just need the latest ibmmca.h and ibmmca.c file and copy it in the | ||
388 | linux/drivers/scsi directory. The code is automatically adapted during | ||
389 | kernel compilation. This is different from kernel 2.4.0! Here version | ||
390 | 4.0 or later of the driver must be used for kernel 2.4.0 or later. Version | ||
391 | 4.0 or later does not work together with older kernels! Driver versions | ||
392 | older than 4.0 do not work together with kernel 2.4.0 or later. They work | ||
393 | on all older kernels. | ||
394 | |||
395 | 3 Code History | ||
396 | -------------- | ||
397 | Jan 15 1996: First public release. | ||
398 | - Martin Kolinek | ||
399 | |||
400 | Jan 23 1996: Scrapped code which reassigned scsi devices to logical | ||
401 | device numbers. Instead, the existing assignment (created | ||
402 | when the machine is powered-up or rebooted) is used. | ||
403 | A side effect is that the upper layer of Linux SCSI | ||
404 | device driver gets bogus scsi ids (this is benign), | ||
405 | and also the hard disks are ordered under Linux the | ||
406 | same way as they are under dos (i.e., C: disk is sda, | ||
407 | D: disk is sdb, etc.). | ||
408 | - Martin Kolinek | ||
409 | |||
410 | I think that the CD-ROM is now detected only if a CD is | ||
411 | inside CD_ROM while Linux boots. This can be fixed later, | ||
412 | once the driver works on all types of PS/2's. | ||
413 | - Martin Kolinek | ||
414 | |||
415 | Feb 7 1996: Modified biosparam function. Fixed the CD-ROM detection. | ||
416 | For now, devices other than harddisk and CD_ROM are | ||
417 | ignored. Temporarily modified abort() function | ||
418 | to behave like reset(). | ||
419 | - Martin Kolinek | ||
420 | |||
421 | Mar 31 1996: The integrated scsi subsystem is correctly found | ||
422 | in PS/2 models 56,57, but not in model 76. Therefore | ||
423 | the ibmmca_scsi_setup() function has been added today. | ||
424 | This function allows the user to force detection of | ||
425 | scsi subsystem. The kernel option has format | ||
426 | ibmmcascsi=n | ||
427 | where n is the scsi_id (pun) of the subsystem. Most likely, n is 7. | ||
428 | - Martin Kolinek | ||
429 | |||
430 | Aug 21 1996: Modified the code which maps ldns to (pun,0). It was | ||
431 | insufficient for those of us with CD-ROM changers. | ||
432 | - Chris Beauregard | ||
433 | |||
434 | Dec 14 1996: More improvements to the ldn mapping. See check_devices | ||
435 | for details. Did more fiddling with the integrated SCSI detection, | ||
436 | but I think it's ultimately hopeless without actually testing the | ||
437 | model of the machine. The 56, 57, 76 and 95 (ultimedia) all have | ||
438 | different integrated SCSI register configurations. However, the 56 | ||
439 | and 57 are the only ones that have problems with forced detection. | ||
440 | - Chris Beauregard | ||
441 | |||
442 | Mar 8-16 1997: Modified driver to run as a module and to support | ||
443 | multiple adapters. A structure, called ibmmca_hostdata, is now | ||
444 | present, containing all the variables, that were once only | ||
445 | available for one single adapter. The find_subsystem-routine has vanished. | ||
446 | The hardware recognition is now done in ibmmca_detect directly. | ||
447 | This routine checks for presence of MCA-bus, checks the interrupt | ||
448 | level and continues with checking the installed hardware. | ||
449 | Certain PS/2-models do not recognize a SCSI-subsystem automatically. | ||
450 | Hence, the setup defined by command-line-parameters is checked first. | ||
451 | Thereafter, the routine probes for an integrated SCSI-subsystem. | ||
452 | Finally, adapters are checked. This method has the advantage to cover all | ||
453 | possible combinations of multiple SCSI-subsystems on one MCA-board. Up to | ||
454 | eight SCSI-subsystems can be recognized and announced to the upper-level | ||
455 | drivers with this improvement. A set of defines made changes to other | ||
456 | routines as small as possible. | ||
457 | - Klaus Kudielka | ||
458 | |||
459 | May 30 1997: (v1.5b) | ||
460 | 1) SCSI-command capability enlarged by the recognition of MODE_SELECT. | ||
461 | This needs the RD-Bit to be disabled on IM_OTHER_SCSI_CMD_CMD which | ||
462 | allows data to be written from the system to the device. It is a | ||
463 | necessary step to be allowed to set blocksize of SCSI-tape-drives and | ||
464 | the tape-speed, without confusing the SCSI-Subsystem. | ||
465 | 2) The recognition of a tape is included in the check_devices routine. | ||
466 | This is done by checking for TYPE_TAPE, that is already defined in | ||
467 | the kernel-scsi-environment. The markup of a tape is done in the | ||
468 | global ldn_is_tape[] array. If the entry on index ldn | ||
469 | is 1, there is a tapedrive connected. | ||
470 | 3) The ldn_is_tape[] array is necessary to distinguish between tape- and | ||
471 | other devices. Fixed blocklength devices should not cause a problem | ||
472 | with the SCB-command for read and write in the ibmmca_queuecommand | ||
473 | subroutine. Therefore, I only derivate the READ_XX, WRITE_XX for | ||
474 | the tape-devices, as recommended by IBM in this Technical Reference, | ||
475 | mentioned below. (IBM recommends to avoid using the read/write of the | ||
476 | subsystem, but the fact was, that read/write causes a command error from | ||
477 | the subsystem and this causes kernel-panic.) | ||
478 | 4) In addition, I propose to use the ldn instead of a fix char for the | ||
479 | display of PS2_DISK_LED_ON(). On 95, one can distinguish between the | ||
480 | devices that are accessed. It shows activity and easyfies debugging. | ||
481 | The tape-support has been tested with a SONY SDT-5200 and a HP DDS-2 | ||
482 | (I do not know yet the type). Optimization and CD-ROM audio-support, | ||
483 | I am working on ... | ||
484 | - Michael Lang | ||
485 | |||
486 | June 19 1997: (v1.6b) | ||
487 | 1) Submitting the extra-array ldn_is_tape[] -> to the local ld[] | ||
488 | device-array. | ||
489 | 2) CD-ROM Audio-Play seems to work now. | ||
490 | 3) When using DDS-2 (120M) DAT-Tapes, mtst shows still density-code | ||
491 | 0x13 for ordinary DDS (61000 BPM) instead 0x24 for DDS-2. This appears | ||
492 | also on Adaptec 2940 adaptor in a PCI-System. Therefore, I assume that | ||
493 | the problem is independent of the low-level-driver/bus-architecture. | ||
494 | 4) Hexadecimal ldn on PS/2-95 LED-display. | ||
495 | 5) Fixing of the PS/2-LED on/off that it works right with tapedrives and | ||
496 | does not confuse the disk_rw_in_progress counter. | ||
497 | - Michael Lang | ||
498 | |||
499 | June 21 1997: (v1.7b) | ||
500 | 1) Adding of a proc_info routine to inform in /proc/scsi/ibmmca/<host> the | ||
501 | outer-world about operational load statistics on the different ldns, | ||
502 | seen by the driver. Everybody that has more than one IBM-SCSI should | ||
503 | test this, because I only have one and cannot see what happens with more | ||
504 | than one IBM-SCSI hosts. | ||
505 | 2) Definition of a driver version-number to have a better recognition of | ||
506 | the source when there are existing too much releases that may confuse | ||
507 | the user, when reading about release-specific problems. Up to know, | ||
508 | I calculated the version-number to be 1.7. Because we are in BETA-test | ||
509 | yet, it is today 1.7b. | ||
510 | 3) Sorry for the heavy bug I programmed on June 19 1997! After that, the | ||
511 | CD-ROM did not work any more! The C7-command was a fake impression | ||
512 | I got while programming. Now, the READ and WRITE commands for CD-ROM are | ||
513 | no longer running over the subsystem, but just over | ||
514 | IM_OTHER_SCSI_CMD_CMD. On my observations (PS/2-95), now CD-ROM mounts | ||
515 | much faster(!) and hopefully all fancy multimedia-functions, like direct | ||
516 | digital recording from audio-CDs also work. (I tried it with cdda2wav | ||
517 | from the cdwtools-package and it filled up the harddisk immediately :-).) | ||
518 | To easify boolean logics, a further local device-type in ld[], called | ||
519 | is_cdrom has been included. | ||
520 | 4) If one uses a SCSI-device of unsupported type/commands, one | ||
521 | immediately runs into a kernel-panic caused by Command Error. To better | ||
522 | understand which SCSI-command caused the problem, I extended this | ||
523 | specific panic-message slightly. | ||
524 | - Michael Lang | ||
525 | |||
526 | June 25 1997: (v1.8b) | ||
527 | 1) Some cosmetic changes for the handling of SCSI-device-types. | ||
528 | Now, also CD-Burners / WORMs and SCSI-scanners should work. For | ||
529 | MO-drives I have no experience, therefore not yet supported. | ||
530 | In logical_devices I changed from different type-variables to one | ||
531 | called 'device_type' where the values, corresponding to scsi.h, | ||
532 | of a SCSI-device are stored. | ||
533 | 2) There existed a small bug, that maps a device, coming after a SCSI-tape | ||
534 | wrong. Therefore, e.g. a CD-ROM changer would have been mapped wrong | ||
535 | -> problem removed. | ||
536 | 3) Extension of the logical_device structure. Now it contains also device, | ||
537 | vendor and revision-level of a SCSI-device for internal usage. | ||
538 | - Michael Lang | ||
539 | |||
540 | June 26-29 1997: (v2.0b) | ||
541 | 1) The release number 2.0b is necessary because of the completely new done | ||
542 | recognition and handling of SCSI-devices with the adapter. As I got | ||
543 | from Chris the hint, that the subsystem can reassign ldns dynamically, | ||
544 | I remembered this immediate_assign-command, I found once in the handbook. | ||
545 | Now, the driver first kills all ldn assignments that are set by default | ||
546 | on the SCSI-subsystem. After that, it probes on all puns and luns for | ||
547 | devices by going through all combinations with immediate_assign and | ||
548 | probing for devices, using device_inquiry. The found physical(!) pun,lun | ||
549 | structure is stored in get_scsi[][] as device types. This is followed | ||
550 | by the assignment of all ldns to existing SCSI-devices. If more ldns | ||
551 | than devices are available, they are assigned to non existing pun,lun | ||
552 | combinations to satisfy the adapter. With this, the dynamical mapping | ||
553 | was possible to implement. (For further info see the text in the | ||
554 | source code and in the description below. Read the description | ||
555 | below BEFORE installing this driver on your system!) | ||
556 | 2) Changed the name IBMMCA_DRIVER_VERSION to IBMMCA_SCSI_DRIVER_VERSION. | ||
557 | 3) The LED-display shows on PS/2-95 no longer the ldn, but the SCSI-ID | ||
558 | (pun) of the accessed SCSI-device. This is now senseful, because the | ||
559 | pun known within the driver is exactly the pun of the physical device | ||
560 | and no longer a fake one. | ||
561 | 4) The /proc/scsi/ibmmca/<host_no> consists now of the first part, where | ||
562 | hit-statistics of ldns is shown and a second part, where the maps of | ||
563 | physical and logical SCSI-devices are displayed. This could be very | ||
564 | interesting, when one is using more than 15 SCSI-devices in order to | ||
565 | follow the dynamical remapping of ldns. | ||
566 | - Michael Lang | ||
567 | |||
568 | June 26-29 1997: (v2.0b-1) | ||
569 | 1) I forgot to switch the local_checking_phase_flag to 1 and back to 0 | ||
570 | in the dynamical remapping part in ibmmca_queuecommand for the | ||
571 | device_exist routine. Sorry. | ||
572 | - Michael Lang | ||
573 | |||
574 | July 1-13 1997: (v3.0b,c) | ||
575 | 1) Merging of the driver-developments of Klaus Kudielka and Michael Lang | ||
576 | in order to get a optimum and unified driver-release for the | ||
577 | IBM-SCSI-Subsystem-Adapter(s). | ||
578 | For people, using the Kernel-release >=2.1.0, module-support should | ||
579 | be no problem. For users, running under <2.1.0, module-support may not | ||
580 | work, because the methods have changed between 2.0.x and 2.1.x. | ||
581 | 2) Added some more effective statistics for /proc-output. | ||
582 | 3) Change typecasting at necessary points from (unsigned long) to | ||
583 | virt_to_bus(). | ||
584 | 4) Included #if... at special points to have specific adaption of the | ||
585 | driver to kernel 2.0.x and 2.1.x. It should therefore also run with | ||
586 | later releases. | ||
587 | 5) Magneto-Optical drives and medium-changers are also recognized, now. | ||
588 | Therefore, we have a completely gapfree recognition of all SCSI- | ||
589 | device-types, that are known by Linux up to kernel 2.1.31. | ||
590 | 6) The flag SCSI_IBMMCA_DEV_RESET has been inserted. If it is set within | ||
591 | the configuration, each connected SCSI-device will get a reset command | ||
592 | during boottime. This can be necessary for some special SCSI-devices. | ||
593 | This flag should be included in Config.in. | ||
594 | (See also the new Config.in file.) | ||
595 | Probable next improvement: bad disk handler. | ||
596 | - Michael Lang | ||
597 | |||
598 | Sept 14 1997: (v3.0c) | ||
599 | 1) Some debugging and speed optimization applied. | ||
600 | - Michael Lang | ||
601 | |||
602 | Dec 15, 1997 | ||
603 | - chrisb@truespectra.com | ||
604 | - made the front panel display thingy optional, specified from the | ||
605 | command-line via ibmmcascsi=display. Along the lines of the /LED | ||
606 | option for the OS/2 driver. | ||
607 | - fixed small bug in the LED display that would hang some machines. | ||
608 | - reversed ordering of the drives (using the | ||
609 | IBMMCA_SCSI_ORDER_STANDARD define). This is necessary for two main | ||
610 | reasons: | ||
611 | - users who've already installed Linux won't be screwed. Keep | ||
612 | in mind that not everyone is a kernel hacker. | ||
613 | - be consistent with the BIOS ordering of the drives. In the | ||
614 | BIOS, id 6 is C:, id 0 might be D:. With this scheme, they'd be | ||
615 | backwards. This confuses the crap out of those heathens who've | ||
616 | got a impure Linux installation (which, <wince>, I'm one of). | ||
617 | This whole problem arises because IBM is actually non-standard with | ||
618 | the id to BIOS mappings. You'll find, in fdomain.c, a similar | ||
619 | comment about a few FD BIOS revisions. The Linux (and apparently | ||
620 | industry) standard is that C: maps to scsi id (0,0). Let's stick | ||
621 | with that standard. | ||
622 | - Since this is technically a branch of my own, I changed the | ||
623 | version number to 3.0e-cpb. | ||
624 | |||
625 | Jan 17, 1998: (v3.0f) | ||
626 | 1) Addition of some statistical info for /proc in proc_info. | ||
627 | 2) Taking care of the SCSI-assignment problem, dealed by Chris at Dec 15 | ||
628 | 1997. In fact, IBM is right, concerning the assignment of SCSI-devices | ||
629 | to driveletters. It is conform to the ANSI-definition of the SCSI- | ||
630 | standard to assign drive C: to SCSI-id 6, because it is the highest | ||
631 | hardware priority after the hostadapter (that has still today by | ||
632 | default everywhere id 7). Also realtime-operating systems that I use, | ||
633 | like LynxOS and OS9, which are quite industrial systems use top-down | ||
634 | numbering of the harddisks, that is also starting at id 6. Now, one | ||
635 | sits a bit between two chairs. On one hand side, using the define | ||
636 | IBMMCA_SCSI_ORDER_STANDARD makes Linux assigning disks conform to | ||
637 | the IBM- and ANSI-SCSI-standard and keeps this driver downward | ||
638 | compatible to older releases, on the other hand side, people is quite | ||
639 | habituated in believing that C: is assigned to (0,0) and much other | ||
640 | SCSI-BIOS do so. Therefore, I moved the IBMMCA_SCSI_ORDER_STANDARD | ||
641 | define out of the driver and put it into Config.in as subitem of | ||
642 | 'IBM SCSI support'. A help, added to Documentation/Configure.help | ||
643 | explains the differences between saying 'y' or 'n' to the user, when | ||
644 | IBMMCA_SCSI_ORDER_STANDARD prompts, so the ordinary user is enabled to | ||
645 | choose the way of assignment, depending on his own situation and gusto. | ||
646 | 3) Adapted SCSI_IBMMCA_DEV_RESET to the local naming convention, so it is | ||
647 | now called IBMMCA_SCSI_DEV_RESET. | ||
648 | 4) Optimization of proc_info and its subroutines. | ||
649 | 5) Added more in-source-comments and extended the driver description by | ||
650 | some explanation about the SCSI-device-assignment problem. | ||
651 | - Michael Lang | ||
652 | |||
653 | Jan 18, 1998: (v3.0g) | ||
654 | 1) Correcting names to be absolutely conform to the later 2.1.x releases. | ||
655 | This is necessary for | ||
656 | IBMMCA_SCSI_DEV_RESET -> CONFIG_IBMMCA_SCSI_DEV_RESET | ||
657 | IBMMCA_SCSI_ORDER_STANDARD -> CONFIG_IBMMCA_SCSI_ORDER_STANDARD | ||
658 | - Michael Lang | ||
659 | |||
660 | Jan 18, 1999: (v3.1 MCA-team internal) | ||
661 | 1) The multiple hosts structure is accessed from every subroutine, so there | ||
662 | is no longer the address of the device structure passed from function | ||
663 | to function, but only the hostindex. A call by value, nothing more. This | ||
664 | should really be understood by the compiler and the subsystem should get | ||
665 | the right values and addresses. | ||
666 | 2) The SCSI-subsystem detection was not complete and quite hugely buggy up | ||
667 | to now, compared to the technical manual. The interpretation of the pos2 | ||
668 | register is not as assumed by people before, therefore, I dropped a note | ||
669 | in the ibmmca_detect function to show the registers' interpretation. | ||
670 | The pos-registers of integrated SCSI-subsystems do not contain any | ||
671 | information concerning the IO-port offset, really. Instead, they contain | ||
672 | some info about the adapter, the chip, the NVRAM .... The I/O-port is | ||
673 | fixed to 0x3540 - 0x3547. There can be more than one adapters in the | ||
674 | slots and they get an offset for the I/O area in order to get their own | ||
675 | I/O-address area. See chapter 2 for detailed description. At least, the | ||
676 | detection should now work right, even on models other than 95. The 95ers | ||
677 | came happily around the bug, as their pos2 register contains always 0 | ||
678 | in the critical area. Reserved bits are not allowed to be interpreted, | ||
679 | therefore, IBM is allowed to set those bits as they like and they may | ||
680 | really vary between different PS/2 models. So, now, no interpretation | ||
681 | of reserved bits - hopefully no trouble here anymore. | ||
682 | 3) The command error, which you may get on models 55, 56, 57, 70, 77 and | ||
683 | P70 may have been caused by the fact, that adapters of older design do | ||
684 | not like sending commands to non-existing SCSI-devices and will react | ||
685 | with a command error as a sign of protest. While this error is not | ||
686 | present on IBM SCSI Adapter w/cache, it appears on IBM Integrated SCSI | ||
687 | Adapters. Therefore, I implemented a workaround to forgive those | ||
688 | adapters their protests, but it is marked up in the statistics, so | ||
689 | after a successful boot, you can see in /proc/scsi/ibmmca/<host_number> | ||
690 | how often the command errors have been forgiven to the SCSI-subsystem. | ||
691 | If the number is bigger than 0, you have a SCSI subsystem of older | ||
692 | design, what should no longer matter. | ||
693 | 4) ibmmca_getinfo() has been adapted very carefully, so it shows in the | ||
694 | slotn file really, what is senseful to be presented. | ||
695 | 5) ibmmca_register() has been extended in its parameter list in order to | ||
696 | pass the right name of the SCSI-adapter to Linux. | ||
697 | - Michael Lang | ||
698 | |||
699 | Feb 6, 1999: (v3.1) | ||
700 | 1) Finally, after some 3.1Beta-releases, the 3.1 release. Sorry, for | ||
701 | the delayed release, but it was not finished with the release of | ||
702 | Kernel 2.2.0. | ||
703 | - Michael Lang | ||
704 | |||
705 | Feb 10, 1999 (v3.1) | ||
706 | 1) Added a new commandline parameter called 'bypass' in order to bypass | ||
707 | every integrated subsystem SCSI-command consequently in case of | ||
708 | troubles. | ||
709 | 2) Concatenated read_capacity requests to the harddisks. It gave a lot | ||
710 | of troubles with some controllers and after I wanted to apply some | ||
711 | extensions, it jumped out in the same situation, on my w/cache, as like | ||
712 | on D. Weinehalls' Model 56, having integrated SCSI. This gave me the | ||
713 | decisive hint to move the code-part out and declare it global. Now | ||
714 | it seems to work far better and more stable. Let us see what | ||
715 | the world thinks of it... | ||
716 | 3) By the way, only Sony DAT-drives seem to show density code 0x13. A | ||
717 | test with a HP drive gave right results, so the problem is vendor- | ||
718 | specific and not a problem of the OS or the driver. | ||
719 | - Michael Lang | ||
720 | |||
721 | Feb 18, 1999 (v3.1d) | ||
722 | 1) The abort command and the reset function have been checked for | ||
723 | inconsistencies. From the logical point of thinking, they work | ||
724 | at their optimum, now, but as the subsystem does not answer with an | ||
725 | interrupt, abort never finishes, sigh... | ||
726 | 2) Everything, that is accessed by a busmaster request from the adapter | ||
727 | is now declared as global variable, even the return-buffer in the | ||
728 | local checking phase. This assures, that no accesses to undefined memory | ||
729 | areas are performed. | ||
730 | 3) In ibmmca.h, the line unchecked_isa_dma is added with 1 in order to | ||
731 | avoid memory-pointers for the areas higher than 16MByte in order to | ||
732 | be sure, it also works on 16-Bit Microchannel bus systems. | ||
733 | 4) A lot of small things have been found, but nothing that endangered the | ||
734 | driver operations. Just it should be more stable, now. | ||
735 | - Michael Lang | ||
736 | |||
737 | Feb 20, 1999 (v3.1e) | ||
738 | 1) I took the warning from the Linux Kernel Hackers Guide serious and | ||
739 | checked the cmd->result return value to the done-function very carefully. | ||
740 | It is obvious, that the IBM SCSI only delivers the tsb.dev_status, if | ||
741 | some error appeared, else it is undefined. Now, this is fixed. Before | ||
742 | any SCB command gets queued, the tsb.dev_status is set to 0, so the | ||
743 | cmd->result won't screw up Linux higher level drivers. | ||
744 | 2) The reset-function has slightly improved. This is still planned for | ||
745 | abort. During the abort and the reset function, no interrupts are | ||
746 | allowed. This is however quite hard to cope with, so the INT-status | ||
747 | register is read. When the interrupt gets queued, one can find its | ||
748 | status immediately on that register and is enabled to continue in the | ||
749 | reset function. I had no chance to test this really, only in a bogus | ||
750 | situation, I got this function running, but the situation was too much | ||
751 | worse for Linux :-(, so tests will continue. | ||
752 | 3) Buffers got now consistent. No open address mapping, as before and | ||
753 | therefore no further troubles with the unassigned memory segmentation | ||
754 | faults that scrambled probes on 95XX series and even on 85XX series, | ||
755 | when the kernel is done in a not so perfectly fitting way. | ||
756 | 4) Spontaneous interrupts from the subsystem, appearing without any | ||
757 | command previously queued are answered with a DID_BAD_INTR result. | ||
758 | 5) Taken into account ZP Gus' proposals to reverse the SCSI-device | ||
759 | scan order. As it does not work on Kernel 2.1.x or 2.2.x, as proposed | ||
760 | by him, I implemented it in a slightly derived way, which offers in | ||
761 | addition more flexibility. | ||
762 | - Michael Lang | ||
763 | |||
764 | Apr 23, 2000 (v3.2pre1) | ||
765 | 1) During a very long time, I collected a huge amount of bug reports from | ||
766 | various people, trying really quite different things on their SCSI- | ||
767 | PS/2s. Today, all these bug reports are taken into account and should be | ||
768 | mostly solved. The major topics were: | ||
769 | - Driver crashes during boottime by no obvious reason. | ||
770 | - Driver panics while the midlevel-SCSI-driver is trying to inquire | ||
771 | the SCSI-device properties, even though hardware is in perfect state. | ||
772 | - Displayed info for the various slot-cards is interpreted wrong. | ||
773 | The main reasons for the crashes were two: | ||
774 | 1) The commands to check for device information like INQUIRY, | ||
775 | TEST_UNIT_READY, REQUEST_SENSE and MODE_SENSE cause the devices | ||
776 | to deliver information of up to 255 bytes. Midlevel drivers offer | ||
777 | 1024 bytes of space for the answer, but the IBM-SCSI-adapters do | ||
778 | not accept this, as they stick quite near to ANSI-SCSI and report | ||
779 | a COMMAND_ERROR message which causes the driver to panic. The main | ||
780 | problem was located around the INQUIRY command. Now, for all the | ||
781 | mentioned commands, the buffersize sent to the adapter is at | ||
782 | maximum 255 which seems to be a quite reasonable solution. | ||
783 | TEST_UNIT_READY gets a buffersize of 0 to make sure that no | ||
784 | data is transferred in order to avoid any possible command failure. | ||
785 | 2) On unsuccessful TEST_UNIT_READY, the mid-level driver has to send | ||
786 | a REQUEST_SENSE in order to see where the problem is located. This | ||
787 | REQUEST_SENSE may have various length in its answer-buffer. IBM | ||
788 | SCSI-subsystems report a command failure if the returned buffersize | ||
789 | is different from the sent buffersize, but this can be suppressed by | ||
790 | a special bit, which is now done and problems seem to be solved. | ||
791 | 2) Code adaption to all kernel-releases. Now, the 3.2 code compiles on | ||
792 | 2.0.x, 2.1.x, 2.2.x and 2.3.x kernel releases without any code-changes. | ||
793 | 3) Commandline-parameters are recognized again, even under Kernel 2.3.x or | ||
794 | higher. | ||
795 | - Michael Lang | ||
796 | |||
797 | April 27, 2000 (v3.2pre2) | ||
798 | 1) Bypassed commands get read by the adapter by one cycle instead of two. | ||
799 | This increases SCSI-performance. | ||
800 | 2) Synchronous datatransfer is provided for sure to be 5 MHz on older | ||
801 | SCSI and 10 MHz on internal F/W SCSI-adapter. | ||
802 | 3) New commandline parameters allow to force the adapter to slow down while | ||
803 | in synchronous transfer. Could be helpful for very old devices. | ||
804 | - Michael Lang | ||
805 | |||
806 | June 2, 2000 (v3.2pre5) | ||
807 | 1) Added Jim Shorney's contribution to make the activity indicator | ||
808 | flashing in addition to the LED-alphanumeric display-panel on | ||
809 | models 95A. To be enabled to choose this feature freely, a new | ||
810 | commandline parameter is added, called 'activity'. | ||
811 | 2) Added the READ_CONTROL bit for test_unit_ready SCSI-command. | ||
812 | 3) Added some suppress_exception bits to read_device_capacity and | ||
813 | all device_inquiry occurrences in the driver code. | ||
814 | 4) Complaints about the various KERNEL_VERSION implementations are | ||
815 | taken into account. Every local_LinuxKernelVersion occurrence is | ||
816 | now replaced by KERNEL_VERSION, defined in linux/version.h. | ||
817 | Corresponding changes were applied to ibmmca.h, too. This was a | ||
818 | contribution to all kernel-parts by Philipp Hahn. | ||
819 | - Michael Lang | ||
820 | |||
821 | July 17, 2000 (v3.2pre8) | ||
822 | A long period of collecting bug reports from all corners of the world | ||
823 | now lead to the following corrections to the code: | ||
824 | 1) SCSI-2 F/W support crashed with a COMMAND ERROR. The reason for this | ||
825 | was that it is possible to disable Fast-SCSI for the external bus. | ||
826 | The feature-control command, where this crash appeared regularly, tried | ||
827 | to set the maximum speed of 10MHz synchronous transfer speed and that | ||
828 | reports a COMMAND ERROR if external bus Fast-SCSI is disabled. Now, | ||
829 | the feature-command probes down from maximum speed until the adapter | ||
830 | stops to complain, which is at the same time the maximum possible | ||
831 | speed selected in the reference program. So, F/W external can run at | ||
832 | 5 MHz (slow-) or 10 MHz (fast-SCSI). During feature probing, the | ||
833 | COMMAND ERROR message is used to detect if the adapter does not complain. | ||
834 | 2) Up to now, only combined busmode is supported, if you use external | ||
835 | SCSI-devices, attached to the F/W-controller. If dual bus is selected, | ||
836 | only the internal SCSI-devices get accessed by Linux. For most | ||
837 | applications, this should do fine. | ||
838 | 3) Wide-SCSI-addressing (16-Bit) is now possible for the internal F/W | ||
839 | bus on the F/W adapter. If F/W adapter is detected, the driver | ||
840 | automatically uses the extended PUN/LUN <-> LDN mapping tables, which | ||
841 | are now new from 3.2pre8. This allows PUNs between 0 and 15 and should | ||
842 | provide more fun with the F/W adapter. | ||
843 | 4) Several machines use the SCSI: POS registers for internal/undocumented | ||
844 | storage of system relevant info. This confused the driver, mainly on | ||
845 | models 9595, as it expected no onboard SCSI only, if all POS in | ||
846 | the integrated SCSI-area are set to 0x00 or 0xff. Now, the mechanism | ||
847 | to check for integrated SCSI is much more restrictive and these problems | ||
848 | should be history. | ||
849 | - Michael Lang | ||
850 | |||
851 | July 18, 2000 (v3.2pre9) | ||
852 | This develop rather quickly at the moment. Two major things were still | ||
853 | missing in 3.2pre8: | ||
854 | 1) The adapter PUN for F/W adapters has 4-bits, while all other adapters | ||
855 | have 3-bits. This is now taken into account for F/W. | ||
856 | 2) When you select CONFIG_IBMMCA_SCSI_ORDER_STANDARD, you should | ||
857 | normally get the inverse probing order of your devices on the SCSI-bus. | ||
858 | The ANSI device order gets scrambled in version 3.2pre8!! Now, a new | ||
859 | and tested algorithm inverts the device-order on the SCSI-bus and | ||
860 | automatically avoids accidental access to whatever SCSI PUN the adapter | ||
861 | is set and works with SCSI- and Wide-SCSI-addressing. | ||
862 | - Michael Lang | ||
863 | |||
864 | July 23, 2000 (v3.2pre10 unpublished) | ||
865 | 1) LED panel display supports wide-addressing in ibmmca=display mode. | ||
866 | 2) Adapter-information and autoadaption to address-space is done. | ||
867 | 3) Auto-probing for maximum synchronous SCSI transfer rate is working. | ||
868 | 4) Optimization to some embedded function calls is applied. | ||
869 | 5) Added some comment for the user to wait for SCSI-devices being probed. | ||
870 | 6) Finished version 3.2 for Kernel 2.4.0. It least, I thought it is but... | ||
871 | - Michael Lang | ||
872 | |||
873 | July 26, 2000 (v3.2pre11) | ||
874 | 1) I passed a horrible weekend getting mad with NMIs on kernel 2.2.14 and | ||
875 | a model 9595. Asking around in the community, nobody except of me has | ||
876 | seen such errors. Weird, but I am trying to recompile everything on | ||
877 | the model 9595. Maybe, as I use a specially modified gcc, that could | ||
878 | cause problems. But, it was not the reason. The true background was, | ||
879 | that the kernel was compiled for i386 and the 9595 has a 486DX-2. | ||
880 | Normally, no troubles should appear, but for this special machine, | ||
881 | only the right processor support is working fine! | ||
882 | 2) Previous problems with synchronous speed, slowing down from one adapter | ||
883 | to the next during probing are corrected. Now, local variables store | ||
884 | the synchronous bitmask for every single adapter found on the MCA bus. | ||
885 | 3) LED alphanumeric panel support for XX95 systems is now showing some | ||
886 | alive rotator during boottime. This makes sense, when no monitor is | ||
887 | connected to the system. You can get rid of all display activity, if | ||
888 | you do not use any parameter or just ibmmcascsi=activity, for the | ||
889 | harddrive activity LED, existent on all PS/2, except models 8595-XXX. | ||
890 | If no monitor is available, please use ibmmcascsi=display, which works | ||
891 | fine together with the linuxinfo utility for the LED-panel. | ||
892 | - Michael Lang | ||
893 | |||
894 | July 29, 2000 (v3.2) | ||
895 | 1) Submission of this driver for kernel 2.4test-XX and 2.2.17. | ||
896 | - Michael Lang | ||
897 | |||
898 | December 28, 2000 (v3.2d / v4.0) | ||
899 | 1) The interrupt handler had some wrong statement to wait for. This | ||
900 | was done due to experimental reasons during 3.2 development but it | ||
901 | has shown that this is not stable enough. Going back to wait for the | ||
902 | adapter to be not busy is best. | ||
903 | 2) Inquiry requests can be shorter than 255 bytes of return buffer. Due | ||
904 | to a bug in the ibmmca_queuecommand routine, this buffer was forced | ||
905 | to 255 at minimum. If the memory address, this return buffer is pointing | ||
906 | to does not offer more space, invalid memory accesses destabilized the | ||
907 | kernel. | ||
908 | 3) version 4.0 is only valid for kernel 2.4.0 or later. This is necessary | ||
909 | to remove old kernel version dependent waste from the driver. 3.2d is | ||
910 | only distributed with older kernels but keeps compatibility with older | ||
911 | kernel versions. 4.0 and higher versions cannot be used with older | ||
912 | kernels anymore!! You must have at least kernel 2.4.0!! | ||
913 | 4) The commandline argument 'bypass' and all its functionality got removed | ||
914 | in version 4.0. This was never really necessary, as all troubles were | ||
915 | based on non-command related reasons up to now, so bypassing commands | ||
916 | did not help to avoid any bugs. It is kept in 3.2X for debugging reasons. | ||
917 | 5) Dynamic reassignment of ldns was again verified and analyzed to be | ||
918 | completely inoperational. This is corrected and should work now. | ||
919 | 6) All commands that get sent to the SCSI adapter were verified and | ||
920 | completed in such a way, that they are now completely conform to the | ||
921 | demands in the technical description of IBM. Main candidates were the | ||
922 | DEVICE_INQUIRY, REQUEST_SENSE and DEVICE_CAPACITY commands. They must | ||
923 | be transferred by bypassing the internal command buffer of the adapter | ||
924 | or else the response can be a random result. GET_POS_INFO would be more | ||
925 | safe in usage, if one could use the SUPRESS_EXCEPTION_SHORT, but this | ||
926 | is not allowed by the technical references of IBM. (Sorry, folks, the | ||
927 | model 80 problem is still a task to be solved in a different way.) | ||
928 | 7) v3.2d is still hold back for some days for testing, while 4.0 is | ||
929 | released. | ||
930 | - Michael Lang | ||
931 | |||
932 | January 3, 2001 (v4.0a) | ||
933 | 1) A lot of complains after the 2.4.0-prerelease kernel came in about | ||
934 | the impossibility to compile the driver as a module. This problem is | ||
935 | solved. In combination with that problem, some unprecise declaration | ||
936 | of the function option_setup() gave some warnings during compilation. | ||
937 | This is solved, too by a forward declaration in ibmmca.c. | ||
938 | 2) #ifdef argument concerning CONFIG_SCSI_IBMMCA is no longer needed and | ||
939 | was entirely removed. | ||
940 | 3) Some switch statements got optimized in code, as some minor variables | ||
941 | in internal SCSI-command handlers. | ||
942 | - Michael Lang | ||
943 | |||
944 | 4 To do | ||
945 | ------- | ||
946 | - IBM SCSI-2 F/W external SCSI bus support in separate mode! | ||
947 | - It seems that the handling of bad disks is really bad - | ||
948 | non-existent, in fact. However, a low-level driver cannot help | ||
949 | much, if such things happen. | ||
950 | |||
951 | 5 Users' Manual | ||
952 | --------------- | ||
953 | 5.1 Commandline Parameters | ||
954 | -------------------------- | ||
955 | There exist several features for the IBM SCSI-subsystem driver. | ||
956 | The commandline parameter format is: | ||
957 | |||
958 | ibmmcascsi=<command1>,<command2>,<command3>,... | ||
959 | |||
960 | where commandN can be one of the following: | ||
961 | |||
962 | display Owners of a model 95 or other PS/2 systems with an | ||
963 | alphanumeric LED display may set this to have their | ||
964 | display showing the following output of the 8 digits: | ||
965 | |||
966 | ------DA | ||
967 | |||
968 | where '-' stays dark, 'D' shows the SCSI-device id | ||
969 | and 'A' shows the SCSI hostindex, being currently | ||
970 | accessed. During boottime, this will give the message | ||
971 | |||
972 | SCSIini* | ||
973 | |||
974 | on the LED-panel, where the * represents a rotator, | ||
975 | showing the activity during the probing phase of the | ||
976 | driver which can take up to two minutes per SCSI-adapter. | ||
977 | adisplay This works like display, but gives more optical overview | ||
978 | of the activities on the SCSI-bus. The display will have | ||
979 | the following output: | ||
980 | |||
981 | 6543210A | ||
982 | |||
983 | where the numbers 0 to 6 light up at the shown position, | ||
984 | when the SCSI-device is accessed. 'A' shows again the SCSI | ||
985 | hostindex. If display nor adisplay is set, the internal | ||
986 | PS/2 harddisk LED is used for media-activities. So, if | ||
987 | you really do not have a system with a LED-display, you | ||
988 | should not set display or adisplay. Keep in mind, that | ||
989 | display and adisplay can only be used alternatively. It | ||
990 | is not recommended to use this option, if you have some | ||
991 | wide-addressed devices e.g. at the SCSI-2 F/W adapter in | ||
992 | your system. In addition, the usage of the display for | ||
993 | other tasks in parallel, like the linuxinfo-utility makes | ||
994 | no sense with this option. | ||
995 | activity This enables the PS/2 harddisk LED activity indicator. | ||
996 | Most PS/2 have no alphanumeric LED display, but some | ||
997 | indicator. So you should use this parameter to activate it. | ||
998 | If you own model 9595 (Server95), you can have both, the | ||
999 | LED panel and the activity indicator in parallel. However, | ||
1000 | some PS/2s, like the 8595 do not have any harddisk LED | ||
1001 | activity indicator, which means, that you must use the | ||
1002 | alphanumeric LED display if you want to monitor SCSI- | ||
1003 | activity. | ||
1004 | bypass This is obsolete from driver version 4.0, as the adapters | ||
1005 | got that far understood, that the selection between | ||
1006 | integrated and bypassed commands should now work completely | ||
1007 | correct! For historical reasons, the old description is | ||
1008 | kept here: | ||
1009 | This commandline parameter forces the driver never to use | ||
1010 | SCSI-subsystems' integrated SCSI-command set. Except of | ||
1011 | the immediate assign, which is of vital importance for | ||
1012 | every IBM SCSI-subsystem to set its ldns right. Instead, | ||
1013 | the ordinary ANSI-SCSI-commands are used and passed by the | ||
1014 | controller to the SCSI-devices, therefore 'bypass'. The | ||
1015 | effort, done by the subsystem is quite bogus and at a | ||
1016 | minimum and therefore it should work everywhere. This | ||
1017 | could maybe solve troubles with old or integrated SCSI- | ||
1018 | controllers and nasty harddisks. Keep in mind, that using | ||
1019 | this flag will slow-down SCSI-accesses slightly, as the | ||
1020 | software generated commands are always slower than the | ||
1021 | hardware. Non-harddisk devices always get read/write- | ||
1022 | commands in bypass mode. On the most recent releases of | ||
1023 | the Linux IBM-SCSI-driver, the bypass command should be | ||
1024 | no longer a necessary thing, if you are sure about your | ||
1025 | SCSI-hardware! | ||
1026 | normal This is the parameter, introduced on the 2.0.x development | ||
1027 | rail by ZP Gu. This parameter defines the SCSI-device | ||
1028 | scan order in the new industry standard. This means, that | ||
1029 | the first SCSI-device is the one with the lowest pun. | ||
1030 | E.g. harddisk at pun=0 is scanned before harddisk at | ||
1031 | pun=6, which means, that harddisk at pun=0 gets sda | ||
1032 | and the one at pun=6 gets sdb. | ||
1033 | ansi The ANSI-standard for the right scan order, as done by | ||
1034 | IBM, Microware and Microsoft, scans SCSI-devices starting | ||
1035 | at the highest pun, which means, that e.g. harddisk at | ||
1036 | pun=6 gets sda and a harddisk at pun=0 gets sdb. If you | ||
1037 | like to have the same SCSI-device order, as in DOS, OS-9 | ||
1038 | or OS/2, just use this parameter. | ||
1039 | fast SCSI-I/O in synchronous mode is done at 5 MHz for IBM- | ||
1040 | SCSI-devices. SCSI-2 Fast/Wide Adapter/A external bus | ||
1041 | should then run at 10 MHz if Fast-SCSI is enabled, | ||
1042 | and at 5 MHz if Fast-SCSI is disabled on the external | ||
1043 | bus. This is the default setting when nothing is | ||
1044 | specified here. | ||
1045 | medium Synchronous rate is at 50% approximately, which means | ||
1046 | 2.5 MHz for IBM SCSI-adapters and 5.0 MHz for F/W ext. | ||
1047 | SCSI-bus (when Fast-SCSI speed enabled on external bus). | ||
1048 | slow The slowest possible synchronous transfer rate is set. | ||
1049 | This means 1.82 MHz for IBM SCSI-adapters and 2.0 MHz | ||
1050 | for F/W external bus at Fast-SCSI speed on the external | ||
1051 | bus. | ||
1052 | |||
1053 | A further option is that you can force the SCSI-driver to accept a SCSI- | ||
1054 | subsystem at a certain I/O-address with a predefined adapter PUN. This | ||
1055 | is done by entering | ||
1056 | |||
1057 | commandN = I/O-base | ||
1058 | commandN+1 = adapter PUN | ||
1059 | |||
1060 | e.g. ibmmcascsi=0x3540,7 will force the driver to detect a SCSI-subsystem | ||
1061 | at I/O-address 0x3540 with adapter PUN 7. Please only use this method, if | ||
1062 | the driver does really not recognize your SCSI-adapter! With driver version | ||
1063 | 3.2, this recognition of various adapters was hugely improved and you | ||
1064 | should try first to remove your commandline arguments of such type with a | ||
1065 | newer driver. I bet, it will be recognized correctly. Even multiple and | ||
1066 | different types of IBM SCSI-adapters should be recognized correctly, too. | ||
1067 | Use the forced detection method only as last solution! | ||
1068 | |||
1069 | Examples: | ||
1070 | |||
1071 | ibmmcascsi=adisplay | ||
1072 | |||
1073 | This will use the advanced display mode for the model 95 LED alphanumeric | ||
1074 | display. | ||
1075 | |||
1076 | ibmmcascsi=display,0x3558,7 | ||
1077 | |||
1078 | This will activate the default display mode for the model 95 LED display | ||
1079 | and will force the driver to accept a SCSI-subsystem at I/O-base 0x3558 | ||
1080 | with adapter PUN 7. | ||
1081 | |||
1082 | 5.2 Troubleshooting | ||
1083 | ------------------- | ||
1084 | The following FAQs should help you to solve some major problems with this | ||
1085 | driver. | ||
1086 | |||
1087 | Q: "Reset SCSI-devices at boottime" halts the system at boottime, why? | ||
1088 | A: This is only tested with the IBM SCSI Adapter w/cache. It is not | ||
1089 | yet proven to run on other adapters, however you may be lucky. | ||
1090 | In version 3.1d this has been hugely improved and should work better, | ||
1091 | now. Normally you really won't need to activate this flag in the | ||
1092 | kernel configuration, as all post 1989 SCSI-devices should accept | ||
1093 | the reset-signal, when the computer is switched on. The SCSI- | ||
1094 | subsystem generates this reset while being initialized. This flag | ||
1095 | is really reserved for users with very old, very strange or self-made | ||
1096 | SCSI-devices. | ||
1097 | Q: Why is the SCSI-order of my drives mirrored to the device-order | ||
1098 | seen from OS/2 or DOS ? | ||
1099 | A: It depends on the operating system, if it looks at the devices in | ||
1100 | ANSI-SCSI-standard (starting from pun 6 and going down to pun 0) or | ||
1101 | if it just starts at pun 0 and counts up. If you want to be conform | ||
1102 | with OS/2 and DOS, you have to activate this flag in the kernel | ||
1103 | configuration or you should set 'ansi' as parameter for the kernel. | ||
1104 | The parameter 'normal' sets the new industry standard, starting | ||
1105 | from pun 0, scanning up to pun 6. This allows you to change your | ||
1106 | opinion still after having already compiled the kernel. | ||
1107 | Q: Why can't I find IBM MCA SCSI support in the config menu? | ||
1108 | A: You have to activate MCA bus support, first. | ||
1109 | Q: Where can I find the latest info about this driver? | ||
1110 | A: See the file MAINTAINERS for the current WWW-address, which offers | ||
1111 | updates, info and Q/A lists. At this file's origin, the webaddress | ||
1112 | was: http://www.staff.uni-mainz.de/mlang/linux.html | ||
1113 | Q: My SCSI-adapter is not recognized by the driver, what can I do? | ||
1114 | A: Just force it to be recognized by kernel parameters. See section 5.1. | ||
1115 | If this really happens, do also send e-mail to the maintainer, as | ||
1116 | forced detection should be never necessary. Forced detection is in | ||
1117 | principal some flaw of the driver adapter detection and goes into | ||
1118 | bug reports. | ||
1119 | Q: The driver screws up, if it starts to probe SCSI-devices, is there | ||
1120 | some way out of it? | ||
1121 | A: Yes, that was some recognition problem of the correct SCSI-adapter | ||
1122 | and its I/O base addresses. Upgrade your driver to the latest release | ||
1123 | and it should be fine again. | ||
1124 | Q: I get a message: panic IBM MCA SCSI: command error .... , what can | ||
1125 | I do against this? | ||
1126 | A: Previously, I followed the way by ignoring command errors by using | ||
1127 | ibmmcascsi=forgiveall, but this command no longer exists and is | ||
1128 | obsolete. If such a problem appears, it is caused by some segmentation | ||
1129 | fault of the driver, which maps to some unallowed area. The latest | ||
1130 | version of the driver should be ok, as most bugs have been solved. | ||
1131 | Q: There are still kernel panics, even after having set | ||
1132 | ibmmcascsi=forgiveall. Are there other possibilities to prevent | ||
1133 | such panics? | ||
1134 | A: No, get just the latest release of the driver and it should work | ||
1135 | better and better with increasing version number. Forget about this | ||
1136 | ibmmcascsi=forgiveall, as also ignorecmd are obsolete.! | ||
1137 | Q: Linux panics or stops without any comment, but it is probable, that my | ||
1138 | harddisk(s) have bad blocks. | ||
1139 | A: Sorry, the bad-block handling is still a feeble point of this driver, | ||
1140 | but is on the schedule for development in the near future. | ||
1141 | Q: Linux panics while dynamically assigning SCSI-ids or ldns. | ||
1142 | A: If you disconnect a SCSI-device from the machine, while Linux is up | ||
1143 | and the driver uses dynamical reassignment of logical device numbers | ||
1144 | (ldn), it really gets "angry" if it won't find devices, that were still | ||
1145 | present at boottime and stops Linux. | ||
1146 | Q: The system does not recover after an abort-command has been generated. | ||
1147 | A: This is regrettably true, as it is not yet understood, why the | ||
1148 | SCSI-adapter does really NOT generate any interrupt at the end of | ||
1149 | the abort-command. As no interrupt is generated, the abort command | ||
1150 | cannot get finished and the system hangs, sorry, but checks are | ||
1151 | running to hunt down this problem. If there is a real pending command, | ||
1152 | the interrupt MUST get generated after abort. In this case, it | ||
1153 | should finish well. | ||
1154 | Q: The system gets in bad shape after a SCSI-reset, is this known? | ||
1155 | A: Yes, as there are a lot of prescriptions (see the Linux Hackers' | ||
1156 | Guide) what has to be done for reset, we still share the bad shape of | ||
1157 | the reset functions with all other low level SCSI-drivers. | ||
1158 | Astonishingly, reset works in most cases quite ok, but the harddisks | ||
1159 | won't run in synchronous mode anymore after a reset, until you reboot. | ||
1160 | Q: Why does my XXX w/Cache adapter not use read-prefetch? | ||
1161 | A: Ok, that is not completely possible. If a cache is present, the | ||
1162 | adapter tries to use it internally. Explicitly, one can use the cache | ||
1163 | with a read prefetch command, maybe in future, but this requires | ||
1164 | some major overhead of SCSI-commands that risks the performance to | ||
1165 | go down more than it gets improved. Tests with that are running. | ||
1166 | Q: I have a IBM SCSI-2 Fast/Wide adapter, it boots in some way and hangs. | ||
1167 | A: Yes, that is understood, as for sure, your SCSI-2 Fast/Wide adapter | ||
1168 | was in such a case recognized as integrated SCSI-adapter or something | ||
1169 | else, but not as the correct adapter. As the I/O-ports get assigned | ||
1170 | wrongly by that reason, the system should crash in most cases. You | ||
1171 | should upgrade to the latest release of the SCSI-driver. The | ||
1172 | recommended version is 3.2 or later. Here, the F/W support is in | ||
1173 | a stable and reliable condition. Wide-addressing is in addition | ||
1174 | supported. | ||
1175 | Q: I get an Oops message and something like "killing interrupt". | ||
1176 | A: The reason for this is that the IBM SCSI-subsystem only sends a | ||
1177 | termination status back, if some error appeared. In former releases | ||
1178 | of the driver, it was not checked, if the termination status block | ||
1179 | is NULL. From version 3.2, it is taken care of this. | ||
1180 | Q: I have a F/W adapter and the driver sees my internal SCSI-devices, | ||
1181 | but ignores the external ones. | ||
1182 | A: Select combined busmode in the IBM config-program and check for that | ||
1183 | no SCSI-id on the external devices appears on internal devices. | ||
1184 | Reboot afterwards. Dual busmode is supported, but works only for the | ||
1185 | internal bus, yet. External bus is still ignored. Take care for your | ||
1186 | SCSI-ids. If combined bus-mode is activated, on some adapters, | ||
1187 | the wide-addressing is not possible, so devices with ids between 8 | ||
1188 | and 15 get ignored by the driver & adapter! | ||
1189 | Q: I have a 9595 and I get a NMI during heavy SCSI I/O e.g. during fsck. | ||
1190 | A COMMAND ERROR is reported and characters on the screen are missing. | ||
1191 | Warm reboot is not possible. Things look like quite weird. | ||
1192 | A: Check the processor type of your 9595. If you have an 80486 or 486DX-2 | ||
1193 | processor complex on your mainboard and you compiled a kernel that | ||
1194 | supports 80386 processors, it is possible, that the kernel cannot | ||
1195 | keep track of the PS/2 interrupt handling and stops on an NMI. Just | ||
1196 | compile a kernel for the correct processor type of your PS/2 and | ||
1197 | everything should be fine. This is necessary even if one assumes, | ||
1198 | that some 80486 system should be downward compatible to 80386 | ||
1199 | software. | ||
1200 | Q: Some commands hang and interrupts block the machine. After some | ||
1201 | timeout, the syslog reports that it tries to call abort, but the | ||
1202 | machine is frozen. | ||
1203 | A: This can be a busy wait bug in the interrupt handler of driver | ||
1204 | version 3.2. You should at least upgrade to 3.2c if you use | ||
1205 | kernel < 2.4.0 and driver version 4.0 if you use kernel 2.4.0 or | ||
1206 | later (including all test releases). | ||
1207 | Q: I have a PS/2 model 80 and more than 16 MBytes of RAM. The driver | ||
1208 | completely refuses to work, reports NMIs, COMMAND ERRORs or other | ||
1209 | ambiguous stuff. When reducing the RAM size down below 16 MB, | ||
1210 | everything is running smoothly. | ||
1211 | A: No real answer, yet. In any case, one should force the kernel to | ||
1212 | present SCBs only below the 16 MBytes barrier. Maybe this solves the | ||
1213 | problem. Not yet tried, but guessing that it could work. To get this, | ||
1214 | set unchecked_isa_dma argument of ibmmca.h from 0 to 1. | ||
1215 | |||
1216 | 5.3 Bug reports | ||
1217 | -------------- | ||
1218 | If you really find bugs in the source code or the driver will successfully | ||
1219 | refuse to work on your machine, you should send a bug report to me. The | ||
1220 | best for this is to follow the instructions on the WWW-page for this | ||
1221 | driver. Fill out the bug-report form, placed on the WWW-page and ship it, | ||
1222 | so the bugs can be taken into account with maximum efforts. But, please | ||
1223 | do not send bug reports about this driver to Linus Torvalds or Leonard | ||
1224 | Zubkoff, as Linus is buried in E-Mail and Leonard is supervising all | ||
1225 | SCSI-drivers and won't have the time left to look inside every single | ||
1226 | driver to fix a bug and especially DO NOT send modified code to Linus | ||
1227 | Torvalds or Alan J. Cox which has not been checked here!!! They are both | ||
1228 | quite buried in E-mail (as me, sometimes, too) and one should first check | ||
1229 | for problems on my local teststand. Recently, I got a lot of | ||
1230 | bug reports for errors in the ibmmca.c code, which I could not imagine, but | ||
1231 | a look inside some Linux-distribution showed me quite often some modified | ||
1232 | code, which did no longer work on most other machines than the one of the | ||
1233 | modifier. Ok, so now that there is maintenance service available for this | ||
1234 | driver, please use this address first in order to keep the level of | ||
1235 | confusion low. Thank you! | ||
1236 | |||
1237 | When you get a SCSI-error message that panics your system, a list of | ||
1238 | register-entries of the SCSI-subsystem is shown (from Version 3.1d). With | ||
1239 | this list, it is very easy for the maintainer to localize the problem in | ||
1240 | the driver or in the configuration of the user. Please write down all the | ||
1241 | values from this report and send them to the maintainer. This would really | ||
1242 | help a lot and makes life easier concerning misunderstandings. | ||
1243 | |||
1244 | Use the bug-report form (see 5.4 for its address) to send all the bug- | ||
1245 | stuff to the maintainer or write e-mail with the values from the table. | ||
1246 | |||
1247 | 5.4 Support WWW-page | ||
1248 | -------------------- | ||
1249 | The address of the IBM SCSI-subsystem supporting WWW-page is: | ||
1250 | |||
1251 | http://www.staff.uni-mainz.de/mlang/linux.html | ||
1252 | |||
1253 | Here you can find info about the background of this driver, patches, | ||
1254 | troubleshooting support, news and a bugreport form. Please check that | ||
1255 | WWW-page regularly for latest hints. If ever this URL changes, please | ||
1256 | refer to the MAINTAINERS file in order to get the latest address. | ||
1257 | |||
1258 | For the bugreport, please fill out the formular on the corresponding | ||
1259 | WWW-page. Read the dedicated instructions and write as much as you | ||
1260 | know about your problem. If you do not like such formulars, please send | ||
1261 | some e-mail directly, but at least with the same information as required by | ||
1262 | the formular. | ||
1263 | |||
1264 | If you have extensive bug reports, including Oops messages and | ||
1265 | screen-shots, please feel free to send it directly to the address | ||
1266 | of the maintainer, too. The current address of the maintainer is: | ||
1267 | |||
1268 | Michael Lang <langa2@kph.uni-mainz.de> | ||
1269 | |||
1270 | 6 References | ||
1271 | ------------ | ||
1272 | IBM Corp., "Update for the PS/2 Hardware Interface Technical Reference, | ||
1273 | Common Interfaces", Armonk, September 1991, PN 04G3281, | ||
1274 | (available in the U.S. for $21.75 at 1-800-IBM-PCTB or in Germany for | ||
1275 | around 40,-DM at "Hallo IBM"). | ||
1276 | |||
1277 | IBM Corp., "Personal System/2 Micro Channel SCSI | ||
1278 | Adapter with Cache Technical Reference", Armonk, March 1990, PN 68X2365. | ||
1279 | |||
1280 | IBM Corp., "Personal System/2 Micro Channel SCSI | ||
1281 | Adapter Technical Reference", Armonk, March 1990, PN 68X2397. | ||
1282 | |||
1283 | IBM Corp., "SCSI-2 Fast/Wide Adapter/A Technical Reference - Dual Bus", | ||
1284 | Armonk, March 1994, PN 83G7545. | ||
1285 | |||
1286 | Friedhelm Schmidt, "SCSI-Bus und IDE-Schnittstelle - Moderne Peripherie- | ||
1287 | Schnittstellen: Hardware, Protokollbeschreibung und Anwendung", 2. Aufl. | ||
1288 | Addison Wesley, 1996. | ||
1289 | |||
1290 | Michael K. Johnson, "The Linux Kernel Hackers' Guide", Version 0.6, Chapel | ||
1291 | Hill - North Carolina, 1995 | ||
1292 | |||
1293 | Andreas Kaiser, "SCSI TAPE BACKUP for OS/2 2.0", Version 2.12, Stuttgart | ||
1294 | 1993 | ||
1295 | |||
1296 | Helmut Rompel, "IBM Computerwelt GUIDE", What is what bei IBM., Systeme * | ||
1297 | Programme * Begriffe, IWT-Verlag GmbH - Muenchen, 1988 | ||
1298 | |||
1299 | 7 Credits to | ||
1300 | ------------ | ||
1301 | 7.1 People | ||
1302 | ---------- | ||
1303 | Klaus Grimm | ||
1304 | who already a long time ago gave me the old code from the | ||
1305 | SCSI-driver in order to get it running for some old machine | ||
1306 | in our institute. | ||
1307 | Martin Kolinek | ||
1308 | who wrote the first release of the IBM SCSI-subsystem driver. | ||
1309 | Chris Beauregard | ||
1310 | who for a long time maintained MCA-Linux and the SCSI-driver | ||
1311 | in the beginning. Chris, wherever you are: Cheers to you! | ||
1312 | Klaus Kudielka | ||
1313 | with whom in the 2.1.x times, I had a quite fruitful | ||
1314 | cooperation to get the driver running as a module and to get | ||
1315 | it running with multiple SCSI-adapters. | ||
1316 | David Weinehall | ||
1317 | for his excellent maintenance of the MCA-stuff and the quite | ||
1318 | detailed bug reports and ideas for this driver (and his | ||
1319 | patience ;-)). | ||
1320 | Alan J. Cox | ||
1321 | for his bug reports and his bold activities in cross-checking | ||
1322 | the driver-code with his teststand. | ||
1323 | |||
1324 | 7.2 Sponsors & Supporters | ||
1325 | ------------------------- | ||
1326 | "Hallo IBM", | ||
1327 | IBM-Deutschland GmbH | ||
1328 | the service of IBM-Deutschland for customers. Their E-Mail | ||
1329 | service is unbeatable. Whatever old stuff I asked for, I | ||
1330 | always got some helpful answers. | ||
1331 | Karl-Otto Reimers, | ||
1332 | IBM Klub - Sparte IBM Geschichte, Sindelfingen | ||
1333 | for sending me a copy of the w/Cache manual from the | ||
1334 | IBM-Deutschland archives. | ||
1335 | Harald Staiger | ||
1336 | for his extensive hardware donations which allows me today | ||
1337 | still to test the driver in various constellations. | ||
1338 | Erich Fritscher | ||
1339 | for his very kind sponsoring. | ||
1340 | Louis Ohland, | ||
1341 | Charles Lasitter | ||
1342 | for support by shipping me an IBM SCSI-2 Fast/Wide manual. | ||
1343 | In addition, the contribution of various hardware is quite | ||
1344 | decessive and will make it possible to add FWSR (RAID) | ||
1345 | adapter support to the driver in the near future! So, | ||
1346 | complaints about no RAID support won't remain forever. | ||
1347 | Yes, folks, that is no joke, RAID support is going to rise! | ||
1348 | Erik Weber | ||
1349 | for the great deal we made about a model 9595 and the nice | ||
1350 | surrounding equipment and the cool trip to Mannheim | ||
1351 | second-hand computer market. In addition, I would like | ||
1352 | to thank him for his exhaustive SCSI-driver testing on his | ||
1353 | 95er PS/2 park. | ||
1354 | Anthony Hogbin | ||
1355 | for his direct shipment of a SCSI F/W adapter, which allowed | ||
1356 | me immediately on the first stage to try it on model 8557 | ||
1357 | together with onboard SCSI adapter and some SCSI w/Cache. | ||
1358 | Andreas Hotz | ||
1359 | for his support by memory and an IBM SCSI-adapter. Collecting | ||
1360 | all this together now allows me to try really things with | ||
1361 | the driver at maximum load and variety on various models in | ||
1362 | a very quick and efficient way. | ||
1363 | Peter Jennewein | ||
1364 | for his model 30, which serves me as part of my teststand | ||
1365 | and his cool remark about how you make an ordinary diskette | ||
1366 | drive working and how to connect it to an IBM-diskette port. | ||
1367 | Johannes Gutenberg-Universitaet, Mainz & | ||
1368 | Institut fuer Kernphysik, Mainz Microtron (MAMI) | ||
1369 | for the offered space, the link, placed on the central | ||
1370 | homepage and the space to store and offer the driver and | ||
1371 | related material and the free working times, which allow | ||
1372 | me to answer all your e-mail. | ||
1373 | |||
1374 | 8 Trademarks | ||
1375 | ------------ | ||
1376 | IBM, PS/2, OS/2, Microchannel are registered trademarks of International | ||
1377 | Business Machines Corporation | ||
1378 | |||
1379 | MS-DOS is a registered trademark of Microsoft Corporation | ||
1380 | |||
1381 | Microware, OS-9 are registered trademarks of Microware Systems | ||
1382 | |||
1383 | 9 Disclaimer | ||
1384 | ------------ | ||
1385 | Beside the GNU General Public License and the dependent disclaimers and disclaimers | ||
1386 | concerning the Linux-kernel in special, this SCSI-driver comes without any | ||
1387 | warranty. Its functionality is tested as good as possible on certain | ||
1388 | machines and combinations of computer hardware, which does not exclude, | ||
1389 | that data loss or severe damage of hardware is possible while using this | ||
1390 | part of software on some arbitrary computer hardware or in combination | ||
1391 | with other software packages. It is highly recommended to make backup | ||
1392 | copies of your data before using this software. Furthermore, personal | ||
1393 | injuries by hardware defects, that could be caused by this SCSI-driver are | ||
1394 | not excluded and it is highly recommended to handle this driver with a | ||
1395 | maximum of carefulness. | ||
1396 | |||
1397 | This driver supports hardware, produced by International Business Machines | ||
1398 | Corporation (IBM). | ||
1399 | |||
1400 | ------ | ||
1401 | Michael Lang | ||
1402 | (langa2@kph.uni-mainz.de) | ||
diff --git a/Documentation/scsi/scsi-parameters.txt b/Documentation/scsi/scsi-parameters.txt index 21e5798526ee..2bfd6f6d2d3d 100644 --- a/Documentation/scsi/scsi-parameters.txt +++ b/Documentation/scsi/scsi-parameters.txt | |||
@@ -37,9 +37,6 @@ parameters may be changed at runtime by the command | |||
37 | 37 | ||
38 | eata= [HW,SCSI] | 38 | eata= [HW,SCSI] |
39 | 39 | ||
40 | fd_mcs= [HW,SCSI] | ||
41 | See header of drivers/scsi/fd_mcs.c. | ||
42 | |||
43 | fdomain= [HW,SCSI] | 40 | fdomain= [HW,SCSI] |
44 | See header of drivers/scsi/fdomain.c. | 41 | See header of drivers/scsi/fdomain.c. |
45 | 42 | ||
@@ -48,9 +45,6 @@ parameters may be changed at runtime by the command | |||
48 | 45 | ||
49 | gvp11= [HW,SCSI] | 46 | gvp11= [HW,SCSI] |
50 | 47 | ||
51 | ibmmcascsi= [HW,MCA,SCSI] IBM MicroChannel SCSI adapter | ||
52 | See Documentation/mca.txt. | ||
53 | |||
54 | in2000= [HW,SCSI] | 48 | in2000= [HW,SCSI] |
55 | See header of drivers/scsi/in2000.c. | 49 | See header of drivers/scsi/in2000.c. |
56 | 50 | ||
diff --git a/Documentation/scsi/scsi_mid_low_api.txt b/Documentation/scsi/scsi_mid_low_api.txt index a340b18cd4eb..2b06aba4fa0f 100644 --- a/Documentation/scsi/scsi_mid_low_api.txt +++ b/Documentation/scsi/scsi_mid_low_api.txt | |||
@@ -30,7 +30,7 @@ the motherboard (or both). Some aic7xxx based HBAs are dual controllers | |||
30 | and thus represent two hosts. Like most modern HBAs, each aic7xxx host | 30 | and thus represent two hosts. Like most modern HBAs, each aic7xxx host |
31 | has its own PCI device address. [The one-to-one correspondence between | 31 | has its own PCI device address. [The one-to-one correspondence between |
32 | a SCSI host and a PCI device is common but not required (e.g. with | 32 | a SCSI host and a PCI device is common but not required (e.g. with |
33 | ISA or MCA adapters).] | 33 | ISA adapters).] |
34 | 34 | ||
35 | The SCSI mid level isolates an LLD from other layers such as the SCSI | 35 | The SCSI mid level isolates an LLD from other layers such as the SCSI |
36 | upper layer drivers and the block layer. | 36 | upper layer drivers and the block layer. |
diff --git a/Documentation/serial/stallion.txt b/Documentation/serial/stallion.txt index 55090914a9c5..4d798c0cb5cb 100644 --- a/Documentation/serial/stallion.txt +++ b/Documentation/serial/stallion.txt | |||
@@ -20,10 +20,10 @@ There are two drivers that work with the different families of Stallion | |||
20 | multiport serial boards. One is for the Stallion smart boards - that is | 20 | multiport serial boards. One is for the Stallion smart boards - that is |
21 | EasyIO, EasyConnection 8/32 and EasyConnection 8/64-PCI, the other for | 21 | EasyIO, EasyConnection 8/32 and EasyConnection 8/64-PCI, the other for |
22 | the true Stallion intelligent multiport boards - EasyConnection 8/64 | 22 | the true Stallion intelligent multiport boards - EasyConnection 8/64 |
23 | (ISA, EISA, MCA), EasyConnection/RA-PCI, ONboard and Brumby. | 23 | (ISA, EISA), EasyConnection/RA-PCI, ONboard and Brumby. |
24 | 24 | ||
25 | If you are using any of the Stallion intelligent multiport boards (Brumby, | 25 | If you are using any of the Stallion intelligent multiport boards (Brumby, |
26 | ONboard, EasyConnection 8/64 (ISA, EISA, MCA), EasyConnection/RA-PCI) with | 26 | ONboard, EasyConnection 8/64 (ISA, EISA), EasyConnection/RA-PCI) with |
27 | Linux you will need to get the driver utility package. This contains a | 27 | Linux you will need to get the driver utility package. This contains a |
28 | firmware loader and the firmware images necessary to make the devices operate. | 28 | firmware loader and the firmware images necessary to make the devices operate. |
29 | 29 | ||
@@ -40,7 +40,7 @@ If you are using the EasyIO, EasyConnection 8/32 or EasyConnection 8/64-PCI | |||
40 | boards then you don't need this package, although it does have a serial stats | 40 | boards then you don't need this package, although it does have a serial stats |
41 | display program. | 41 | display program. |
42 | 42 | ||
43 | If you require DIP switch settings, EISA or MCA configuration files, or any | 43 | If you require DIP switch settings, or EISA configuration files, or any |
44 | other information related to Stallion boards then have a look at Stallion's | 44 | other information related to Stallion boards then have a look at Stallion's |
45 | web pages at http://www.stallion.com. | 45 | web pages at http://www.stallion.com. |
46 | 46 | ||
@@ -51,13 +51,13 @@ web pages at http://www.stallion.com. | |||
51 | The drivers can be used as loadable modules or compiled into the kernel. | 51 | The drivers can be used as loadable modules or compiled into the kernel. |
52 | You can choose which when doing a "config" on the kernel. | 52 | You can choose which when doing a "config" on the kernel. |
53 | 53 | ||
54 | All ISA, EISA and MCA boards that you want to use need to be configured into | 54 | All ISA, and EISA boards that you want to use need to be configured into |
55 | the driver(s). All PCI boards will be automatically detected when you load | 55 | the driver(s). All PCI boards will be automatically detected when you load |
56 | the driver - so they do not need to be entered into the driver(s) | 56 | the driver - so they do not need to be entered into the driver(s) |
57 | configuration structure. Note that kernel PCI support is required to use PCI | 57 | configuration structure. Note that kernel PCI support is required to use PCI |
58 | boards. | 58 | boards. |
59 | 59 | ||
60 | There are two methods of configuring ISA, EISA and MCA boards into the drivers. | 60 | There are two methods of configuring ISA and EISA boards into the drivers. |
61 | If using the driver as a loadable module then the simplest method is to pass | 61 | If using the driver as a loadable module then the simplest method is to pass |
62 | the driver configuration as module arguments. The other method is to modify | 62 | the driver configuration as module arguments. The other method is to modify |
63 | the driver source to add configuration lines for each board in use. | 63 | the driver source to add configuration lines for each board in use. |
@@ -71,12 +71,12 @@ That makes things pretty simple to get going. | |||
71 | 2.1 MODULE DRIVER CONFIGURATION: | 71 | 2.1 MODULE DRIVER CONFIGURATION: |
72 | 72 | ||
73 | The simplest configuration for modules is to use the module load arguments | 73 | The simplest configuration for modules is to use the module load arguments |
74 | to configure any ISA, EISA or MCA boards. PCI boards are automatically | 74 | to configure any ISA or EISA boards. PCI boards are automatically |
75 | detected, so do not need any additional configuration at all. | 75 | detected, so do not need any additional configuration at all. |
76 | 76 | ||
77 | If using EasyIO, EasyConnection 8/32 ISA or MCA, or EasyConnection 8/63-PCI | 77 | If using EasyIO, EasyConnection 8/32 ISA, or EasyConnection 8/63-PCI |
78 | boards then use the "stallion" driver module, Otherwise if you are using | 78 | boards then use the "stallion" driver module, Otherwise if you are using |
79 | an EasyConnection 8/64 ISA, EISA or MCA, EasyConnection/RA-PCI, ONboard, | 79 | an EasyConnection 8/64 ISA or EISA, EasyConnection/RA-PCI, ONboard, |
80 | Brumby or original Stallion board then use the "istallion" driver module. | 80 | Brumby or original Stallion board then use the "istallion" driver module. |
81 | 81 | ||
82 | Typically to load up the smart board driver use: | 82 | Typically to load up the smart board driver use: |
@@ -146,7 +146,7 @@ on each system boot. Typically configuration files are put in the | |||
146 | 2.2 STATIC DRIVER CONFIGURATION: | 146 | 2.2 STATIC DRIVER CONFIGURATION: |
147 | 147 | ||
148 | For static driver configuration you need to modify the driver source code. | 148 | For static driver configuration you need to modify the driver source code. |
149 | Entering ISA, EISA and MCA boards into the driver(s) configuration structure | 149 | Entering ISA and EISA boards into the driver(s) configuration structure |
150 | involves editing the driver(s) source file. It's pretty easy if you follow | 150 | involves editing the driver(s) source file. It's pretty easy if you follow |
151 | the instructions below. Both drivers can support up to 4 boards. The smart | 151 | the instructions below. Both drivers can support up to 4 boards. The smart |
152 | card driver (the stallion.c driver) supports any combination of EasyIO and | 152 | card driver (the stallion.c driver) supports any combination of EasyIO and |
@@ -157,7 +157,7 @@ supports any combination of ONboards, Brumbys, Stallions and EasyConnection | |||
157 | To set up the driver(s) for the boards that you want to use you need to | 157 | To set up the driver(s) for the boards that you want to use you need to |
158 | edit the appropriate driver file and add configuration entries. | 158 | edit the appropriate driver file and add configuration entries. |
159 | 159 | ||
160 | If using EasyIO or EasyConnection 8/32 ISA or MCA boards, | 160 | If using EasyIO or EasyConnection 8/32 ISA boards, |
161 | In drivers/char/stallion.c: | 161 | In drivers/char/stallion.c: |
162 | - find the definition of the stl_brdconf array (of structures) | 162 | - find the definition of the stl_brdconf array (of structures) |
163 | near the top of the file | 163 | near the top of the file |
@@ -243,7 +243,7 @@ change it on the board. | |||
243 | On EasyIO and EasyConnection 8/32 boards the IRQ is software programmable, so | 243 | On EasyIO and EasyConnection 8/32 boards the IRQ is software programmable, so |
244 | if there is a conflict you may need to change the IRQ used for a board. There | 244 | if there is a conflict you may need to change the IRQ used for a board. There |
245 | are no interrupts to worry about for ONboard, Brumby or EasyConnection 8/64 | 245 | are no interrupts to worry about for ONboard, Brumby or EasyConnection 8/64 |
246 | (ISA, EISA and MCA) boards. The memory region on EasyConnection 8/64 and | 246 | (ISA and EISA) boards. The memory region on EasyConnection 8/64 and |
247 | ONboard boards is software programmable, but not on the Brumby boards. | 247 | ONboard boards is software programmable, but not on the Brumby boards. |
248 | 248 | ||
249 | 249 | ||
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt index 8c16d50f6cb6..221b81016dba 100644 --- a/Documentation/sound/alsa/ALSA-Configuration.txt +++ b/Documentation/sound/alsa/ALSA-Configuration.txt | |||
@@ -1545,7 +1545,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
1545 | 1545 | ||
1546 | Module for sound cards based on the C-Media CMI8786/8787/8788 chip: | 1546 | Module for sound cards based on the C-Media CMI8786/8787/8788 chip: |
1547 | * Asound A-8788 | 1547 | * Asound A-8788 |
1548 | * Asus Xonar DG | 1548 | * Asus Xonar DG/DGX |
1549 | * AuzenTech X-Meridian | 1549 | * AuzenTech X-Meridian |
1550 | * AuzenTech X-Meridian 2G | 1550 | * AuzenTech X-Meridian 2G |
1551 | * Bgears b-Enspirer | 1551 | * Bgears b-Enspirer |
diff --git a/Documentation/sound/alsa/compress_offload.txt b/Documentation/sound/alsa/compress_offload.txt index c83a835350f0..90e9b3a11abc 100644 --- a/Documentation/sound/alsa/compress_offload.txt +++ b/Documentation/sound/alsa/compress_offload.txt | |||
@@ -18,7 +18,7 @@ processing. Support for such hardware has not been very good in Linux, | |||
18 | mostly because of a lack of a generic API available in the mainline | 18 | mostly because of a lack of a generic API available in the mainline |
19 | kernel. | 19 | kernel. |
20 | 20 | ||
21 | Rather than requiring a compability break with an API change of the | 21 | Rather than requiring a compatibility break with an API change of the |
22 | ALSA PCM interface, a new 'Compressed Data' API is introduced to | 22 | ALSA PCM interface, a new 'Compressed Data' API is introduced to |
23 | provide a control and data-streaming interface for audio DSPs. | 23 | provide a control and data-streaming interface for audio DSPs. |
24 | 24 | ||
diff --git a/Documentation/sound/oss/ALS b/Documentation/sound/oss/ALS index d01ffbfd5808..bf10bed4574b 100644 --- a/Documentation/sound/oss/ALS +++ b/Documentation/sound/oss/ALS | |||
@@ -57,10 +57,10 @@ The resulting sound driver will provide the following capabilities: | |||
57 | DSP/PCM/audio out (L&R), FM (L&R) and Mic in (mono). | 57 | DSP/PCM/audio out (L&R), FM (L&R) and Mic in (mono). |
58 | 58 | ||
59 | Jonathan Woithe | 59 | Jonathan Woithe |
60 | jwoithe@physics.adelaide.edu.au | 60 | jwoithe@just42.net |
61 | 30 March 1998 | 61 | 30 March 1998 |
62 | 62 | ||
63 | Modified 2000-02-26 by Dave Forrest, drf5n@virginia.edu to add ALS100/ALS200 | 63 | Modified 2000-02-26 by Dave Forrest, drf5n@virginia.edu to add ALS100/ALS200 |
64 | Modified 2000-04-10 by Paul Laufer, pelaufer@csupomona.edu to add ISAPnP info. | 64 | Modified 2000-04-10 by Paul Laufer, pelaufer@csupomona.edu to add ISAPnP info. |
65 | Modified 2000-11-19 by Jonathan Woithe, jwoithe@physics.adelaide.edu.au | 65 | Modified 2000-11-19 by Jonathan Woithe, jwoithe@just42.net |
66 | - updated information for kernel 2.4.x. | 66 | - updated information for kernel 2.4.x. |
diff --git a/Documentation/static-keys.txt b/Documentation/static-keys.txt index d93f3c00f245..9f5263d3152c 100644 --- a/Documentation/static-keys.txt +++ b/Documentation/static-keys.txt | |||
@@ -235,7 +235,7 @@ label case adds: | |||
235 | 6 (mov) + 2 (test) + 2 (jne) = 10 - 5 (5 byte jump 0) = 5 addition bytes. | 235 | 6 (mov) + 2 (test) + 2 (jne) = 10 - 5 (5 byte jump 0) = 5 addition bytes. |
236 | 236 | ||
237 | If we then include the padding bytes, the jump label code saves, 16 total bytes | 237 | If we then include the padding bytes, the jump label code saves, 16 total bytes |
238 | of instruction memory for this small fucntion. In this case the non-jump label | 238 | of instruction memory for this small function. In this case the non-jump label |
239 | function is 80 bytes long. Thus, we have have saved 20% of the instruction | 239 | function is 80 bytes long. Thus, we have have saved 20% of the instruction |
240 | footprint. We can in fact improve this even further, since the 5-byte no-op | 240 | footprint. We can in fact improve this even further, since the 5-byte no-op |
241 | really can be a 2-byte no-op since we can reach the branch with a 2-byte jmp. | 241 | really can be a 2-byte no-op since we can reach the branch with a 2-byte jmp. |
diff --git a/Documentation/trace/uprobetracer.txt b/Documentation/trace/uprobetracer.txt new file mode 100644 index 000000000000..24ce6823a09e --- /dev/null +++ b/Documentation/trace/uprobetracer.txt | |||
@@ -0,0 +1,113 @@ | |||
1 | Uprobe-tracer: Uprobe-based Event Tracing | ||
2 | ========================================= | ||
3 | Documentation written by Srikar Dronamraju | ||
4 | |||
5 | Overview | ||
6 | -------- | ||
7 | Uprobe based trace events are similar to kprobe based trace events. | ||
8 | To enable this feature, build your kernel with CONFIG_UPROBE_EVENT=y. | ||
9 | |||
10 | Similar to the kprobe-event tracer, this doesn't need to be activated via | ||
11 | current_tracer. Instead of that, add probe points via | ||
12 | /sys/kernel/debug/tracing/uprobe_events, and enable it via | ||
13 | /sys/kernel/debug/tracing/events/uprobes/<EVENT>/enabled. | ||
14 | |||
15 | However unlike kprobe-event tracer, the uprobe event interface expects the | ||
16 | user to calculate the offset of the probepoint in the object | ||
17 | |||
18 | Synopsis of uprobe_tracer | ||
19 | ------------------------- | ||
20 | p[:[GRP/]EVENT] PATH:SYMBOL[+offs] [FETCHARGS] : Set a probe | ||
21 | |||
22 | GRP : Group name. If omitted, use "uprobes" for it. | ||
23 | EVENT : Event name. If omitted, the event name is generated | ||
24 | based on SYMBOL+offs. | ||
25 | PATH : path to an executable or a library. | ||
26 | SYMBOL[+offs] : Symbol+offset where the probe is inserted. | ||
27 | |||
28 | FETCHARGS : Arguments. Each probe can have up to 128 args. | ||
29 | %REG : Fetch register REG | ||
30 | |||
31 | Event Profiling | ||
32 | --------------- | ||
33 | You can check the total number of probe hits and probe miss-hits via | ||
34 | /sys/kernel/debug/tracing/uprobe_profile. | ||
35 | The first column is event name, the second is the number of probe hits, | ||
36 | the third is the number of probe miss-hits. | ||
37 | |||
38 | Usage examples | ||
39 | -------------- | ||
40 | To add a probe as a new event, write a new definition to uprobe_events | ||
41 | as below. | ||
42 | |||
43 | echo 'p: /bin/bash:0x4245c0' > /sys/kernel/debug/tracing/uprobe_events | ||
44 | |||
45 | This sets a uprobe at an offset of 0x4245c0 in the executable /bin/bash | ||
46 | |||
47 | echo > /sys/kernel/debug/tracing/uprobe_events | ||
48 | |||
49 | This clears all probe points. | ||
50 | |||
51 | The following example shows how to dump the instruction pointer and %ax | ||
52 | a register at the probed text address. Here we are trying to probe | ||
53 | function zfree in /bin/zsh | ||
54 | |||
55 | # cd /sys/kernel/debug/tracing/ | ||
56 | # cat /proc/`pgrep zsh`/maps | grep /bin/zsh | grep r-xp | ||
57 | 00400000-0048a000 r-xp 00000000 08:03 130904 /bin/zsh | ||
58 | # objdump -T /bin/zsh | grep -w zfree | ||
59 | 0000000000446420 g DF .text 0000000000000012 Base zfree | ||
60 | |||
61 | 0x46420 is the offset of zfree in object /bin/zsh that is loaded at | ||
62 | 0x00400000. Hence the command to probe would be : | ||
63 | |||
64 | # echo 'p /bin/zsh:0x46420 %ip %ax' > uprobe_events | ||
65 | |||
66 | Please note: User has to explicitly calculate the offset of the probepoint | ||
67 | in the object. We can see the events that are registered by looking at the | ||
68 | uprobe_events file. | ||
69 | |||
70 | # cat uprobe_events | ||
71 | p:uprobes/p_zsh_0x46420 /bin/zsh:0x00046420 arg1=%ip arg2=%ax | ||
72 | |||
73 | The format of events can be seen by viewing the file events/uprobes/p_zsh_0x46420/format | ||
74 | |||
75 | # cat events/uprobes/p_zsh_0x46420/format | ||
76 | name: p_zsh_0x46420 | ||
77 | ID: 922 | ||
78 | format: | ||
79 | field:unsigned short common_type; offset:0; size:2; signed:0; | ||
80 | field:unsigned char common_flags; offset:2; size:1; signed:0; | ||
81 | field:unsigned char common_preempt_count; offset:3; size:1; signed:0; | ||
82 | field:int common_pid; offset:4; size:4; signed:1; | ||
83 | field:int common_padding; offset:8; size:4; signed:1; | ||
84 | |||
85 | field:unsigned long __probe_ip; offset:12; size:4; signed:0; | ||
86 | field:u32 arg1; offset:16; size:4; signed:0; | ||
87 | field:u32 arg2; offset:20; size:4; signed:0; | ||
88 | |||
89 | print fmt: "(%lx) arg1=%lx arg2=%lx", REC->__probe_ip, REC->arg1, REC->arg2 | ||
90 | |||
91 | Right after definition, each event is disabled by default. For tracing these | ||
92 | events, you need to enable it by: | ||
93 | |||
94 | # echo 1 > events/uprobes/enable | ||
95 | |||
96 | Lets disable the event after sleeping for some time. | ||
97 | # sleep 20 | ||
98 | # echo 0 > events/uprobes/enable | ||
99 | |||
100 | And you can see the traced information via /sys/kernel/debug/tracing/trace. | ||
101 | |||
102 | # cat trace | ||
103 | # tracer: nop | ||
104 | # | ||
105 | # TASK-PID CPU# TIMESTAMP FUNCTION | ||
106 | # | | | | | | ||
107 | zsh-24842 [006] 258544.995456: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79 | ||
108 | zsh-24842 [007] 258545.000270: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79 | ||
109 | zsh-24842 [002] 258545.043929: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79 | ||
110 | zsh-24842 [004] 258547.046129: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79 | ||
111 | |||
112 | Each line shows us probes were triggered for a pid 24842 with ip being | ||
113 | 0x446421 and contents of ax register being 79. | ||
diff --git a/Documentation/usb/dwc3.txt b/Documentation/usb/dwc3.txt index 7b590edae145..1d02c01d1c7c 100644 --- a/Documentation/usb/dwc3.txt +++ b/Documentation/usb/dwc3.txt | |||
@@ -28,7 +28,7 @@ Please pick something while reading :) | |||
28 | none | 28 | none |
29 | 29 | ||
30 | - primary handler of the EP-interrupt | 30 | - primary handler of the EP-interrupt |
31 | reads the event and tries to process it. Everything that requries | 31 | reads the event and tries to process it. Everything that requires |
32 | sleeping is handed over to the Thread. The event is saved in an | 32 | sleeping is handed over to the Thread. The event is saved in an |
33 | per-endpoint data-structure. | 33 | per-endpoint data-structure. |
34 | We probably have to pay attention not to process events once we | 34 | We probably have to pay attention not to process events once we |
diff --git a/Documentation/usb/functionfs.txt b/Documentation/usb/functionfs.txt new file mode 100644 index 000000000000..eaaaea019fc7 --- /dev/null +++ b/Documentation/usb/functionfs.txt | |||
@@ -0,0 +1,67 @@ | |||
1 | *How FunctionFS works* | ||
2 | |||
3 | From kernel point of view it is just a composite function with some | ||
4 | unique behaviour. It may be added to an USB configuration only after | ||
5 | the user space driver has registered by writing descriptors and | ||
6 | strings (the user space program has to provide the same information | ||
7 | that kernel level composite functions provide when they are added to | ||
8 | the configuration). | ||
9 | |||
10 | This in particular means that the composite initialisation functions | ||
11 | may not be in init section (ie. may not use the __init tag). | ||
12 | |||
13 | From user space point of view it is a file system which when | ||
14 | mounted provides an "ep0" file. User space driver need to | ||
15 | write descriptors and strings to that file. It does not need | ||
16 | to worry about endpoints, interfaces or strings numbers but | ||
17 | simply provide descriptors such as if the function was the | ||
18 | only one (endpoints and strings numbers starting from one and | ||
19 | interface numbers starting from zero). The FunctionFS changes | ||
20 | them as needed also handling situation when numbers differ in | ||
21 | different configurations. | ||
22 | |||
23 | When descriptors and strings are written "ep#" files appear | ||
24 | (one for each declared endpoint) which handle communication on | ||
25 | a single endpoint. Again, FunctionFS takes care of the real | ||
26 | numbers and changing of the configuration (which means that | ||
27 | "ep1" file may be really mapped to (say) endpoint 3 (and when | ||
28 | configuration changes to (say) endpoint 2)). "ep0" is used | ||
29 | for receiving events and handling setup requests. | ||
30 | |||
31 | When all files are closed the function disables itself. | ||
32 | |||
33 | What I also want to mention is that the FunctionFS is designed in such | ||
34 | a way that it is possible to mount it several times so in the end | ||
35 | a gadget could use several FunctionFS functions. The idea is that | ||
36 | each FunctionFS instance is identified by the device name used | ||
37 | when mounting. | ||
38 | |||
39 | One can imagine a gadget that has an Ethernet, MTP and HID interfaces | ||
40 | where the last two are implemented via FunctionFS. On user space | ||
41 | level it would look like this: | ||
42 | |||
43 | $ insmod g_ffs.ko idVendor=<ID> iSerialNumber=<string> functions=mtp,hid | ||
44 | $ mkdir /dev/ffs-mtp && mount -t functionfs mtp /dev/ffs-mtp | ||
45 | $ ( cd /dev/ffs-mtp && mtp-daemon ) & | ||
46 | $ mkdir /dev/ffs-hid && mount -t functionfs hid /dev/ffs-hid | ||
47 | $ ( cd /dev/ffs-hid && hid-daemon ) & | ||
48 | |||
49 | On kernel level the gadget checks ffs_data->dev_name to identify | ||
50 | whether it's FunctionFS designed for MTP ("mtp") or HID ("hid"). | ||
51 | |||
52 | If no "functions" module parameters is supplied, the driver accepts | ||
53 | just one function with any name. | ||
54 | |||
55 | When "functions" module parameter is supplied, only functions | ||
56 | with listed names are accepted. In particular, if the "functions" | ||
57 | parameter's value is just a one-element list, then the behaviour | ||
58 | is similar to when there is no "functions" at all; however, | ||
59 | only a function with the specified name is accepted. | ||
60 | |||
61 | The gadget is registered only after all the declared function | ||
62 | filesystems have been mounted and USB descriptors of all functions | ||
63 | have been written to their ep0's. | ||
64 | |||
65 | Conversely, the gadget is unregistered after the first USB function | ||
66 | closes its endpoints. | ||
67 | |||
diff --git a/Documentation/usb/wusb-cbaf b/Documentation/usb/wusb-cbaf index 426ddaaef96f..8b3d43efce90 100644 --- a/Documentation/usb/wusb-cbaf +++ b/Documentation/usb/wusb-cbaf | |||
@@ -36,7 +36,7 @@ COMMAND/ARGS are | |||
36 | 36 | ||
37 | get-cdid DEVICE | 37 | get-cdid DEVICE |
38 | 38 | ||
39 | Get the device ID associated to the HOST-CHDI we sent with | 39 | Get the device ID associated to the HOST-CHID we sent with |
40 | 'set-chid'. We might not know about it. | 40 | 'set-chid'. We might not know about it. |
41 | 41 | ||
42 | set-cc DEVICE | 42 | set-cc DEVICE |
diff --git a/Documentation/video4linux/4CCs.txt b/Documentation/video4linux/4CCs.txt new file mode 100644 index 000000000000..41241af1ebfe --- /dev/null +++ b/Documentation/video4linux/4CCs.txt | |||
@@ -0,0 +1,32 @@ | |||
1 | Guidelines for Linux4Linux pixel format 4CCs | ||
2 | ============================================ | ||
3 | |||
4 | Guidelines for Video4Linux 4CC codes defined using v4l2_fourcc() are | ||
5 | specified in this document. First of the characters defines the nature of | ||
6 | the pixel format, compression and colour space. The interpretation of the | ||
7 | other three characters depends on the first one. | ||
8 | |||
9 | Existing 4CCs may not obey these guidelines. | ||
10 | |||
11 | Formats | ||
12 | ======= | ||
13 | |||
14 | Raw bayer | ||
15 | --------- | ||
16 | |||
17 | The following first characters are used by raw bayer formats: | ||
18 | |||
19 | B: raw bayer, uncompressed | ||
20 | b: raw bayer, DPCM compressed | ||
21 | a: A-law compressed | ||
22 | u: u-law compressed | ||
23 | |||
24 | 2nd character: pixel order | ||
25 | B: BGGR | ||
26 | G: GBRG | ||
27 | g: GRBG | ||
28 | R: RGGB | ||
29 | |||
30 | 3rd character: uncompressed bits-per-pixel 0--9, A-- | ||
31 | |||
32 | 4th character: compressed bits-per-pixel 0--9, A-- | ||
diff --git a/Documentation/video4linux/README.cpia2 b/Documentation/video4linux/README.cpia2 index ce8213d28b67..38e742fd0df7 100644 --- a/Documentation/video4linux/README.cpia2 +++ b/Documentation/video4linux/README.cpia2 | |||
@@ -12,7 +12,7 @@ gqcam application to view this stream. | |||
12 | The driver is implemented as two kernel modules. The cpia2 module | 12 | The driver is implemented as two kernel modules. The cpia2 module |
13 | contains the camera functions and the V4L interface. The cpia2_usb module | 13 | contains the camera functions and the V4L interface. The cpia2_usb module |
14 | contains usb specific functions. The main reason for this was the size of the | 14 | contains usb specific functions. The main reason for this was the size of the |
15 | module was getting out of hand, so I separted them. It is not likely that | 15 | module was getting out of hand, so I separated them. It is not likely that |
16 | there will be a parallel port version. | 16 | there will be a parallel port version. |
17 | 17 | ||
18 | FEATURES: | 18 | FEATURES: |
diff --git a/Documentation/video4linux/gspca.txt b/Documentation/video4linux/gspca.txt index e6c2842407a4..1e6b6531bbcc 100644 --- a/Documentation/video4linux/gspca.txt +++ b/Documentation/video4linux/gspca.txt | |||
@@ -276,6 +276,7 @@ pac7302 093a:2622 Genius Eye 312 | |||
276 | pac7302 093a:2624 PAC7302 | 276 | pac7302 093a:2624 PAC7302 |
277 | pac7302 093a:2625 Genius iSlim 310 | 277 | pac7302 093a:2625 Genius iSlim 310 |
278 | pac7302 093a:2626 Labtec 2200 | 278 | pac7302 093a:2626 Labtec 2200 |
279 | pac7302 093a:2627 Genius FaceCam 300 | ||
279 | pac7302 093a:2628 Genius iLook 300 | 280 | pac7302 093a:2628 Genius iLook 300 |
280 | pac7302 093a:2629 Genious iSlim 300 | 281 | pac7302 093a:2629 Genious iSlim 300 |
281 | pac7302 093a:262a Webcam 300k | 282 | pac7302 093a:262a Webcam 300k |
diff --git a/Documentation/video4linux/v4l2-controls.txt b/Documentation/video4linux/v4l2-controls.txt index e2492a9d1027..43da22b89728 100644 --- a/Documentation/video4linux/v4l2-controls.txt +++ b/Documentation/video4linux/v4l2-controls.txt | |||
@@ -130,8 +130,18 @@ Menu controls are added by calling v4l2_ctrl_new_std_menu: | |||
130 | const struct v4l2_ctrl_ops *ops, | 130 | const struct v4l2_ctrl_ops *ops, |
131 | u32 id, s32 max, s32 skip_mask, s32 def); | 131 | u32 id, s32 max, s32 skip_mask, s32 def); |
132 | 132 | ||
133 | Or alternatively for integer menu controls, by calling v4l2_ctrl_new_int_menu: | ||
134 | |||
135 | struct v4l2_ctrl *v4l2_ctrl_new_int_menu(struct v4l2_ctrl_handler *hdl, | ||
136 | const struct v4l2_ctrl_ops *ops, | ||
137 | u32 id, s32 max, s32 def, const s64 *qmenu_int); | ||
138 | |||
133 | These functions are typically called right after the v4l2_ctrl_handler_init: | 139 | These functions are typically called right after the v4l2_ctrl_handler_init: |
134 | 140 | ||
141 | static const s64 exp_bias_qmenu[] = { | ||
142 | -2, -1, 0, 1, 2 | ||
143 | }; | ||
144 | |||
135 | v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls); | 145 | v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls); |
136 | v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops, | 146 | v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops, |
137 | V4L2_CID_BRIGHTNESS, 0, 255, 1, 128); | 147 | V4L2_CID_BRIGHTNESS, 0, 255, 1, 128); |
@@ -141,6 +151,11 @@ These functions are typically called right after the v4l2_ctrl_handler_init: | |||
141 | V4L2_CID_POWER_LINE_FREQUENCY, | 151 | V4L2_CID_POWER_LINE_FREQUENCY, |
142 | V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0, | 152 | V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0, |
143 | V4L2_CID_POWER_LINE_FREQUENCY_DISABLED); | 153 | V4L2_CID_POWER_LINE_FREQUENCY_DISABLED); |
154 | v4l2_ctrl_new_int_menu(&foo->ctrl_handler, &foo_ctrl_ops, | ||
155 | V4L2_CID_EXPOSURE_BIAS, | ||
156 | ARRAY_SIZE(exp_bias_qmenu) - 1, | ||
157 | ARRAY_SIZE(exp_bias_qmenu) / 2 - 1, | ||
158 | exp_bias_qmenu); | ||
144 | ... | 159 | ... |
145 | if (foo->ctrl_handler.error) { | 160 | if (foo->ctrl_handler.error) { |
146 | int err = foo->ctrl_handler.error; | 161 | int err = foo->ctrl_handler.error; |
@@ -164,6 +179,12 @@ controls. There is no min argument since that is always 0 for menu controls, | |||
164 | and instead of a step there is a skip_mask argument: if bit X is 1, then menu | 179 | and instead of a step there is a skip_mask argument: if bit X is 1, then menu |
165 | item X is skipped. | 180 | item X is skipped. |
166 | 181 | ||
182 | The v4l2_ctrl_new_int_menu function creates a new standard integer menu | ||
183 | control with driver-specific items in the menu. It differs from | ||
184 | v4l2_ctrl_new_std_menu in that it doesn't have the mask argument and takes | ||
185 | as the last argument an array of signed 64-bit integers that form an exact | ||
186 | menu item list. | ||
187 | |||
167 | Note that if something fails, the function will return NULL or an error and | 188 | Note that if something fails, the function will return NULL or an error and |
168 | set ctrl_handler->error to the error code. If ctrl_handler->error was already | 189 | set ctrl_handler->error to the error code. If ctrl_handler->error was already |
169 | set, then it will just return and do nothing. This is also true for | 190 | set, then it will just return and do nothing. This is also true for |
diff --git a/Documentation/video4linux/v4l2-framework.txt b/Documentation/video4linux/v4l2-framework.txt index 659b2ba12a4f..1f5905270050 100644 --- a/Documentation/video4linux/v4l2-framework.txt +++ b/Documentation/video4linux/v4l2-framework.txt | |||
@@ -182,11 +182,11 @@ static int __devinit drv_probe(struct pci_dev *pdev, | |||
182 | } | 182 | } |
183 | 183 | ||
184 | If you have multiple device nodes then it can be difficult to know when it is | 184 | If you have multiple device nodes then it can be difficult to know when it is |
185 | safe to unregister v4l2_device. For this purpose v4l2_device has refcounting | 185 | safe to unregister v4l2_device for hotpluggable devices. For this purpose |
186 | support. The refcount is increased whenever video_register_device is called and | 186 | v4l2_device has refcounting support. The refcount is increased whenever |
187 | it is decreased whenever that device node is released. When the refcount reaches | 187 | video_register_device is called and it is decreased whenever that device node |
188 | zero, then the v4l2_device release() callback is called. You can do your final | 188 | is released. When the refcount reaches zero, then the v4l2_device release() |
189 | cleanup there. | 189 | callback is called. You can do your final cleanup there. |
190 | 190 | ||
191 | If other device nodes (e.g. ALSA) are created, then you can increase and | 191 | If other device nodes (e.g. ALSA) are created, then you can increase and |
192 | decrease the refcount manually as well by calling: | 192 | decrease the refcount manually as well by calling: |
@@ -197,6 +197,10 @@ or: | |||
197 | 197 | ||
198 | int v4l2_device_put(struct v4l2_device *v4l2_dev); | 198 | int v4l2_device_put(struct v4l2_device *v4l2_dev); |
199 | 199 | ||
200 | Since the initial refcount is 1 you also need to call v4l2_device_put in the | ||
201 | disconnect() callback (for USB devices) or in the remove() callback (for e.g. | ||
202 | PCI devices), otherwise the refcount will never reach 0. | ||
203 | |||
200 | struct v4l2_subdev | 204 | struct v4l2_subdev |
201 | ------------------ | 205 | ------------------ |
202 | 206 | ||
@@ -262,11 +266,16 @@ struct v4l2_subdev_video_ops { | |||
262 | ... | 266 | ... |
263 | }; | 267 | }; |
264 | 268 | ||
269 | struct v4l2_subdev_pad_ops { | ||
270 | ... | ||
271 | }; | ||
272 | |||
265 | struct v4l2_subdev_ops { | 273 | struct v4l2_subdev_ops { |
266 | const struct v4l2_subdev_core_ops *core; | 274 | const struct v4l2_subdev_core_ops *core; |
267 | const struct v4l2_subdev_tuner_ops *tuner; | 275 | const struct v4l2_subdev_tuner_ops *tuner; |
268 | const struct v4l2_subdev_audio_ops *audio; | 276 | const struct v4l2_subdev_audio_ops *audio; |
269 | const struct v4l2_subdev_video_ops *video; | 277 | const struct v4l2_subdev_video_ops *video; |
278 | const struct v4l2_subdev_pad_ops *video; | ||
270 | }; | 279 | }; |
271 | 280 | ||
272 | The core ops are common to all subdevs, the other categories are implemented | 281 | The core ops are common to all subdevs, the other categories are implemented |
@@ -303,6 +312,22 @@ Don't forget to cleanup the media entity before the sub-device is destroyed: | |||
303 | 312 | ||
304 | media_entity_cleanup(&sd->entity); | 313 | media_entity_cleanup(&sd->entity); |
305 | 314 | ||
315 | If the subdev driver intends to process video and integrate with the media | ||
316 | framework, it must implement format related functionality using | ||
317 | v4l2_subdev_pad_ops instead of v4l2_subdev_video_ops. | ||
318 | |||
319 | In that case, the subdev driver may set the link_validate field to provide | ||
320 | its own link validation function. The link validation function is called for | ||
321 | every link in the pipeline where both of the ends of the links are V4L2 | ||
322 | sub-devices. The driver is still responsible for validating the correctness | ||
323 | of the format configuration between sub-devices and video nodes. | ||
324 | |||
325 | If link_validate op is not set, the default function | ||
326 | v4l2_subdev_link_validate_default() is used instead. This function ensures | ||
327 | that width, height and the media bus pixel code are equal on both source and | ||
328 | sink of the link. Subdev drivers are also free to use this function to | ||
329 | perform the checks mentioned above in addition to their own checks. | ||
330 | |||
306 | A device (bridge) driver needs to register the v4l2_subdev with the | 331 | A device (bridge) driver needs to register the v4l2_subdev with the |
307 | v4l2_device: | 332 | v4l2_device: |
308 | 333 | ||
@@ -555,19 +580,25 @@ allocated memory. | |||
555 | You should also set these fields: | 580 | You should also set these fields: |
556 | 581 | ||
557 | - v4l2_dev: set to the v4l2_device parent device. | 582 | - v4l2_dev: set to the v4l2_device parent device. |
583 | |||
558 | - name: set to something descriptive and unique. | 584 | - name: set to something descriptive and unique. |
585 | |||
559 | - fops: set to the v4l2_file_operations struct. | 586 | - fops: set to the v4l2_file_operations struct. |
587 | |||
560 | - ioctl_ops: if you use the v4l2_ioctl_ops to simplify ioctl maintenance | 588 | - ioctl_ops: if you use the v4l2_ioctl_ops to simplify ioctl maintenance |
561 | (highly recommended to use this and it might become compulsory in the | 589 | (highly recommended to use this and it might become compulsory in the |
562 | future!), then set this to your v4l2_ioctl_ops struct. | 590 | future!), then set this to your v4l2_ioctl_ops struct. |
591 | |||
563 | - lock: leave to NULL if you want to do all the locking in the driver. | 592 | - lock: leave to NULL if you want to do all the locking in the driver. |
564 | Otherwise you give it a pointer to a struct mutex_lock and before any | 593 | Otherwise you give it a pointer to a struct mutex_lock and before the |
565 | of the v4l2_file_operations is called this lock will be taken by the | 594 | unlocked_ioctl file operation is called this lock will be taken by the |
566 | core and released afterwards. | 595 | core and released afterwards. See the next section for more details. |
596 | |||
567 | - prio: keeps track of the priorities. Used to implement VIDIOC_G/S_PRIORITY. | 597 | - prio: keeps track of the priorities. Used to implement VIDIOC_G/S_PRIORITY. |
568 | If left to NULL, then it will use the struct v4l2_prio_state in v4l2_device. | 598 | If left to NULL, then it will use the struct v4l2_prio_state in v4l2_device. |
569 | If you want to have a separate priority state per (group of) device node(s), | 599 | If you want to have a separate priority state per (group of) device node(s), |
570 | then you can point it to your own struct v4l2_prio_state. | 600 | then you can point it to your own struct v4l2_prio_state. |
601 | |||
571 | - parent: you only set this if v4l2_device was registered with NULL as | 602 | - parent: you only set this if v4l2_device was registered with NULL as |
572 | the parent device struct. This only happens in cases where one hardware | 603 | the parent device struct. This only happens in cases where one hardware |
573 | device has multiple PCI devices that all share the same v4l2_device core. | 604 | device has multiple PCI devices that all share the same v4l2_device core. |
@@ -577,6 +608,7 @@ You should also set these fields: | |||
577 | (cx8802). Since the v4l2_device cannot be associated with a particular | 608 | (cx8802). Since the v4l2_device cannot be associated with a particular |
578 | PCI device it is setup without a parent device. But when the struct | 609 | PCI device it is setup without a parent device. But when the struct |
579 | video_device is setup you do know which parent PCI device to use. | 610 | video_device is setup you do know which parent PCI device to use. |
611 | |||
580 | - flags: optional. Set to V4L2_FL_USE_FH_PRIO if you want to let the framework | 612 | - flags: optional. Set to V4L2_FL_USE_FH_PRIO if you want to let the framework |
581 | handle the VIDIOC_G/S_PRIORITY ioctls. This requires that you use struct | 613 | handle the VIDIOC_G/S_PRIORITY ioctls. This requires that you use struct |
582 | v4l2_fh. Eventually this flag will disappear once all drivers use the core | 614 | v4l2_fh. Eventually this flag will disappear once all drivers use the core |
@@ -587,6 +619,16 @@ in your v4l2_file_operations struct. | |||
587 | 619 | ||
588 | Do not use .ioctl! This is deprecated and will go away in the future. | 620 | Do not use .ioctl! This is deprecated and will go away in the future. |
589 | 621 | ||
622 | In some cases you want to tell the core that a function you had specified in | ||
623 | your v4l2_ioctl_ops should be ignored. You can mark such ioctls by calling this | ||
624 | function before video_device_register is called: | ||
625 | |||
626 | void v4l2_disable_ioctl(struct video_device *vdev, unsigned int cmd); | ||
627 | |||
628 | This tends to be needed if based on external factors (e.g. which card is | ||
629 | being used) you want to turns off certain features in v4l2_ioctl_ops without | ||
630 | having to make a new struct. | ||
631 | |||
590 | The v4l2_file_operations struct is a subset of file_operations. The main | 632 | The v4l2_file_operations struct is a subset of file_operations. The main |
591 | difference is that the inode argument is omitted since it is never used. | 633 | difference is that the inode argument is omitted since it is never used. |
592 | 634 | ||
@@ -609,8 +651,22 @@ v4l2_file_operations and locking | |||
609 | -------------------------------- | 651 | -------------------------------- |
610 | 652 | ||
611 | You can set a pointer to a mutex_lock in struct video_device. Usually this | 653 | You can set a pointer to a mutex_lock in struct video_device. Usually this |
612 | will be either a top-level mutex or a mutex per device node. If you want | 654 | will be either a top-level mutex or a mutex per device node. By default this |
613 | finer-grained locking then you have to set it to NULL and do you own locking. | 655 | lock will be used for unlocked_ioctl, but you can disable locking for |
656 | selected ioctls by calling: | ||
657 | |||
658 | void v4l2_disable_ioctl_locking(struct video_device *vdev, unsigned int cmd); | ||
659 | |||
660 | E.g.: v4l2_disable_ioctl_locking(vdev, VIDIOC_DQBUF); | ||
661 | |||
662 | You have to call this before you register the video_device. | ||
663 | |||
664 | Particularly with USB drivers where certain commands such as setting controls | ||
665 | can take a long time you may want to do your own locking for the buffer queuing | ||
666 | ioctls. | ||
667 | |||
668 | If you want still finer-grained locking then you have to set mutex_lock to NULL | ||
669 | and do you own locking completely. | ||
614 | 670 | ||
615 | It is up to the driver developer to decide which method to use. However, if | 671 | It is up to the driver developer to decide which method to use. However, if |
616 | your driver has high-latency operations (for example, changing the exposure | 672 | your driver has high-latency operations (for example, changing the exposure |
@@ -618,7 +674,7 @@ of a USB webcam might take a long time), then you might be better off with | |||
618 | doing your own locking if you want to allow the user to do other things with | 674 | doing your own locking if you want to allow the user to do other things with |
619 | the device while waiting for the high-latency command to finish. | 675 | the device while waiting for the high-latency command to finish. |
620 | 676 | ||
621 | If a lock is specified then all file operations will be serialized on that | 677 | If a lock is specified then all ioctl commands will be serialized on that |
622 | lock. If you use videobuf then you must pass the same lock to the videobuf | 678 | lock. If you use videobuf then you must pass the same lock to the videobuf |
623 | queue initialize function: if videobuf has to wait for a frame to arrive, then | 679 | queue initialize function: if videobuf has to wait for a frame to arrive, then |
624 | it will temporarily unlock the lock and relock it afterwards. If your driver | 680 | it will temporarily unlock the lock and relock it afterwards. If your driver |
@@ -941,21 +997,35 @@ fast. | |||
941 | 997 | ||
942 | Useful functions: | 998 | Useful functions: |
943 | 999 | ||
944 | - v4l2_event_queue() | 1000 | void v4l2_event_queue(struct video_device *vdev, const struct v4l2_event *ev) |
945 | 1001 | ||
946 | Queue events to video device. The driver's only responsibility is to fill | 1002 | Queue events to video device. The driver's only responsibility is to fill |
947 | in the type and the data fields. The other fields will be filled in by | 1003 | in the type and the data fields. The other fields will be filled in by |
948 | V4L2. | 1004 | V4L2. |
949 | 1005 | ||
950 | - v4l2_event_subscribe() | 1006 | int v4l2_event_subscribe(struct v4l2_fh *fh, |
1007 | struct v4l2_event_subscription *sub, unsigned elems, | ||
1008 | const struct v4l2_subscribed_event_ops *ops) | ||
951 | 1009 | ||
952 | The video_device->ioctl_ops->vidioc_subscribe_event must check the driver | 1010 | The video_device->ioctl_ops->vidioc_subscribe_event must check the driver |
953 | is able to produce events with specified event id. Then it calls | 1011 | is able to produce events with specified event id. Then it calls |
954 | v4l2_event_subscribe() to subscribe the event. The last argument is the | 1012 | v4l2_event_subscribe() to subscribe the event. |
955 | size of the event queue for this event. If it is 0, then the framework | 1013 | |
956 | will fill in a default value (this depends on the event type). | 1014 | The elems argument is the size of the event queue for this event. If it is 0, |
1015 | then the framework will fill in a default value (this depends on the event | ||
1016 | type). | ||
1017 | |||
1018 | The ops argument allows the driver to specify a number of callbacks: | ||
1019 | * add: called when a new listener gets added (subscribing to the same | ||
1020 | event twice will only cause this callback to get called once) | ||
1021 | * del: called when a listener stops listening | ||
1022 | * replace: replace event 'old' with event 'new'. | ||
1023 | * merge: merge event 'old' into event 'new'. | ||
1024 | All 4 callbacks are optional, if you don't want to specify any callbacks | ||
1025 | the ops argument itself maybe NULL. | ||
957 | 1026 | ||
958 | - v4l2_event_unsubscribe() | 1027 | int v4l2_event_unsubscribe(struct v4l2_fh *fh, |
1028 | struct v4l2_event_subscription *sub) | ||
959 | 1029 | ||
960 | vidioc_unsubscribe_event in struct v4l2_ioctl_ops. A driver may use | 1030 | vidioc_unsubscribe_event in struct v4l2_ioctl_ops. A driver may use |
961 | v4l2_event_unsubscribe() directly unless it wants to be involved in | 1031 | v4l2_event_unsubscribe() directly unless it wants to be involved in |
@@ -964,7 +1034,7 @@ Useful functions: | |||
964 | The special type V4L2_EVENT_ALL may be used to unsubscribe all events. The | 1034 | The special type V4L2_EVENT_ALL may be used to unsubscribe all events. The |
965 | drivers may want to handle this in a special way. | 1035 | drivers may want to handle this in a special way. |
966 | 1036 | ||
967 | - v4l2_event_pending() | 1037 | int v4l2_event_pending(struct v4l2_fh *fh) |
968 | 1038 | ||
969 | Returns the number of pending events. Useful when implementing poll. | 1039 | Returns the number of pending events. Useful when implementing poll. |
970 | 1040 | ||
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt index 6386f8c0482e..930126698a0f 100644 --- a/Documentation/virtual/kvm/api.txt +++ b/Documentation/virtual/kvm/api.txt | |||
@@ -2,6 +2,7 @@ The Definitive KVM (Kernel-based Virtual Machine) API Documentation | |||
2 | =================================================================== | 2 | =================================================================== |
3 | 3 | ||
4 | 1. General description | 4 | 1. General description |
5 | ---------------------- | ||
5 | 6 | ||
6 | The kvm API is a set of ioctls that are issued to control various aspects | 7 | The kvm API is a set of ioctls that are issued to control various aspects |
7 | of a virtual machine. The ioctls belong to three classes | 8 | of a virtual machine. The ioctls belong to three classes |
@@ -23,7 +24,9 @@ of a virtual machine. The ioctls belong to three classes | |||
23 | Only run vcpu ioctls from the same thread that was used to create the | 24 | Only run vcpu ioctls from the same thread that was used to create the |
24 | vcpu. | 25 | vcpu. |
25 | 26 | ||
27 | |||
26 | 2. File descriptors | 28 | 2. File descriptors |
29 | ------------------- | ||
27 | 30 | ||
28 | The kvm API is centered around file descriptors. An initial | 31 | The kvm API is centered around file descriptors. An initial |
29 | open("/dev/kvm") obtains a handle to the kvm subsystem; this handle | 32 | open("/dev/kvm") obtains a handle to the kvm subsystem; this handle |
@@ -41,7 +44,9 @@ not cause harm to the host, their actual behavior is not guaranteed by | |||
41 | the API. The only supported use is one virtual machine per process, | 44 | the API. The only supported use is one virtual machine per process, |
42 | and one vcpu per thread. | 45 | and one vcpu per thread. |
43 | 46 | ||
47 | |||
44 | 3. Extensions | 48 | 3. Extensions |
49 | ------------- | ||
45 | 50 | ||
46 | As of Linux 2.6.22, the KVM ABI has been stabilized: no backward | 51 | As of Linux 2.6.22, the KVM ABI has been stabilized: no backward |
47 | incompatible change are allowed. However, there is an extension | 52 | incompatible change are allowed. However, there is an extension |
@@ -53,7 +58,9 @@ Instead, kvm defines extension identifiers and a facility to query | |||
53 | whether a particular extension identifier is available. If it is, a | 58 | whether a particular extension identifier is available. If it is, a |
54 | set of ioctls is available for application use. | 59 | set of ioctls is available for application use. |
55 | 60 | ||
61 | |||
56 | 4. API description | 62 | 4. API description |
63 | ------------------ | ||
57 | 64 | ||
58 | This section describes ioctls that can be used to control kvm guests. | 65 | This section describes ioctls that can be used to control kvm guests. |
59 | For each ioctl, the following information is provided along with a | 66 | For each ioctl, the following information is provided along with a |
@@ -75,6 +82,7 @@ description: | |||
75 | Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL) | 82 | Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL) |
76 | are not detailed, but errors with specific meanings are. | 83 | are not detailed, but errors with specific meanings are. |
77 | 84 | ||
85 | |||
78 | 4.1 KVM_GET_API_VERSION | 86 | 4.1 KVM_GET_API_VERSION |
79 | 87 | ||
80 | Capability: basic | 88 | Capability: basic |
@@ -90,6 +98,7 @@ supported. Applications should refuse to run if KVM_GET_API_VERSION | |||
90 | returns a value other than 12. If this check passes, all ioctls | 98 | returns a value other than 12. If this check passes, all ioctls |
91 | described as 'basic' will be available. | 99 | described as 'basic' will be available. |
92 | 100 | ||
101 | |||
93 | 4.2 KVM_CREATE_VM | 102 | 4.2 KVM_CREATE_VM |
94 | 103 | ||
95 | Capability: basic | 104 | Capability: basic |
@@ -109,6 +118,7 @@ In order to create user controlled virtual machines on S390, check | |||
109 | KVM_CAP_S390_UCONTROL and use the flag KVM_VM_S390_UCONTROL as | 118 | KVM_CAP_S390_UCONTROL and use the flag KVM_VM_S390_UCONTROL as |
110 | privileged user (CAP_SYS_ADMIN). | 119 | privileged user (CAP_SYS_ADMIN). |
111 | 120 | ||
121 | |||
112 | 4.3 KVM_GET_MSR_INDEX_LIST | 122 | 4.3 KVM_GET_MSR_INDEX_LIST |
113 | 123 | ||
114 | Capability: basic | 124 | Capability: basic |
@@ -135,6 +145,7 @@ Note: if kvm indicates supports MCE (KVM_CAP_MCE), then the MCE bank MSRs are | |||
135 | not returned in the MSR list, as different vcpus can have a different number | 145 | not returned in the MSR list, as different vcpus can have a different number |
136 | of banks, as set via the KVM_X86_SETUP_MCE ioctl. | 146 | of banks, as set via the KVM_X86_SETUP_MCE ioctl. |
137 | 147 | ||
148 | |||
138 | 4.4 KVM_CHECK_EXTENSION | 149 | 4.4 KVM_CHECK_EXTENSION |
139 | 150 | ||
140 | Capability: basic | 151 | Capability: basic |
@@ -149,6 +160,7 @@ receives an integer that describes the extension availability. | |||
149 | Generally 0 means no and 1 means yes, but some extensions may report | 160 | Generally 0 means no and 1 means yes, but some extensions may report |
150 | additional information in the integer return value. | 161 | additional information in the integer return value. |
151 | 162 | ||
163 | |||
152 | 4.5 KVM_GET_VCPU_MMAP_SIZE | 164 | 4.5 KVM_GET_VCPU_MMAP_SIZE |
153 | 165 | ||
154 | Capability: basic | 166 | Capability: basic |
@@ -161,6 +173,7 @@ The KVM_RUN ioctl (cf.) communicates with userspace via a shared | |||
161 | memory region. This ioctl returns the size of that region. See the | 173 | memory region. This ioctl returns the size of that region. See the |
162 | KVM_RUN documentation for details. | 174 | KVM_RUN documentation for details. |
163 | 175 | ||
176 | |||
164 | 4.6 KVM_SET_MEMORY_REGION | 177 | 4.6 KVM_SET_MEMORY_REGION |
165 | 178 | ||
166 | Capability: basic | 179 | Capability: basic |
@@ -171,6 +184,7 @@ Returns: 0 on success, -1 on error | |||
171 | 184 | ||
172 | This ioctl is obsolete and has been removed. | 185 | This ioctl is obsolete and has been removed. |
173 | 186 | ||
187 | |||
174 | 4.7 KVM_CREATE_VCPU | 188 | 4.7 KVM_CREATE_VCPU |
175 | 189 | ||
176 | Capability: basic | 190 | Capability: basic |
@@ -223,6 +237,7 @@ machines, the resulting vcpu fd can be memory mapped at page offset | |||
223 | KVM_S390_SIE_PAGE_OFFSET in order to obtain a memory map of the virtual | 237 | KVM_S390_SIE_PAGE_OFFSET in order to obtain a memory map of the virtual |
224 | cpu's hardware control block. | 238 | cpu's hardware control block. |
225 | 239 | ||
240 | |||
226 | 4.8 KVM_GET_DIRTY_LOG (vm ioctl) | 241 | 4.8 KVM_GET_DIRTY_LOG (vm ioctl) |
227 | 242 | ||
228 | Capability: basic | 243 | Capability: basic |
@@ -246,6 +261,7 @@ since the last call to this ioctl. Bit 0 is the first page in the | |||
246 | memory slot. Ensure the entire structure is cleared to avoid padding | 261 | memory slot. Ensure the entire structure is cleared to avoid padding |
247 | issues. | 262 | issues. |
248 | 263 | ||
264 | |||
249 | 4.9 KVM_SET_MEMORY_ALIAS | 265 | 4.9 KVM_SET_MEMORY_ALIAS |
250 | 266 | ||
251 | Capability: basic | 267 | Capability: basic |
@@ -256,6 +272,7 @@ Returns: 0 (success), -1 (error) | |||
256 | 272 | ||
257 | This ioctl is obsolete and has been removed. | 273 | This ioctl is obsolete and has been removed. |
258 | 274 | ||
275 | |||
259 | 4.10 KVM_RUN | 276 | 4.10 KVM_RUN |
260 | 277 | ||
261 | Capability: basic | 278 | Capability: basic |
@@ -272,6 +289,7 @@ obtained by mmap()ing the vcpu fd at offset 0, with the size given by | |||
272 | KVM_GET_VCPU_MMAP_SIZE. The parameter block is formatted as a 'struct | 289 | KVM_GET_VCPU_MMAP_SIZE. The parameter block is formatted as a 'struct |
273 | kvm_run' (see below). | 290 | kvm_run' (see below). |
274 | 291 | ||
292 | |||
275 | 4.11 KVM_GET_REGS | 293 | 4.11 KVM_GET_REGS |
276 | 294 | ||
277 | Capability: basic | 295 | Capability: basic |
@@ -292,6 +310,7 @@ struct kvm_regs { | |||
292 | __u64 rip, rflags; | 310 | __u64 rip, rflags; |
293 | }; | 311 | }; |
294 | 312 | ||
313 | |||
295 | 4.12 KVM_SET_REGS | 314 | 4.12 KVM_SET_REGS |
296 | 315 | ||
297 | Capability: basic | 316 | Capability: basic |
@@ -304,6 +323,7 @@ Writes the general purpose registers into the vcpu. | |||
304 | 323 | ||
305 | See KVM_GET_REGS for the data structure. | 324 | See KVM_GET_REGS for the data structure. |
306 | 325 | ||
326 | |||
307 | 4.13 KVM_GET_SREGS | 327 | 4.13 KVM_GET_SREGS |
308 | 328 | ||
309 | Capability: basic | 329 | Capability: basic |
@@ -331,6 +351,7 @@ interrupt_bitmap is a bitmap of pending external interrupts. At most | |||
331 | one bit may be set. This interrupt has been acknowledged by the APIC | 351 | one bit may be set. This interrupt has been acknowledged by the APIC |
332 | but not yet injected into the cpu core. | 352 | but not yet injected into the cpu core. |
333 | 353 | ||
354 | |||
334 | 4.14 KVM_SET_SREGS | 355 | 4.14 KVM_SET_SREGS |
335 | 356 | ||
336 | Capability: basic | 357 | Capability: basic |
@@ -342,6 +363,7 @@ Returns: 0 on success, -1 on error | |||
342 | Writes special registers into the vcpu. See KVM_GET_SREGS for the | 363 | Writes special registers into the vcpu. See KVM_GET_SREGS for the |
343 | data structures. | 364 | data structures. |
344 | 365 | ||
366 | |||
345 | 4.15 KVM_TRANSLATE | 367 | 4.15 KVM_TRANSLATE |
346 | 368 | ||
347 | Capability: basic | 369 | Capability: basic |
@@ -365,6 +387,7 @@ struct kvm_translation { | |||
365 | __u8 pad[5]; | 387 | __u8 pad[5]; |
366 | }; | 388 | }; |
367 | 389 | ||
390 | |||
368 | 4.16 KVM_INTERRUPT | 391 | 4.16 KVM_INTERRUPT |
369 | 392 | ||
370 | Capability: basic | 393 | Capability: basic |
@@ -413,6 +436,7 @@ c) KVM_INTERRUPT_SET_LEVEL | |||
413 | Note that any value for 'irq' other than the ones stated above is invalid | 436 | Note that any value for 'irq' other than the ones stated above is invalid |
414 | and incurs unexpected behavior. | 437 | and incurs unexpected behavior. |
415 | 438 | ||
439 | |||
416 | 4.17 KVM_DEBUG_GUEST | 440 | 4.17 KVM_DEBUG_GUEST |
417 | 441 | ||
418 | Capability: basic | 442 | Capability: basic |
@@ -423,6 +447,7 @@ Returns: -1 on error | |||
423 | 447 | ||
424 | Support for this has been removed. Use KVM_SET_GUEST_DEBUG instead. | 448 | Support for this has been removed. Use KVM_SET_GUEST_DEBUG instead. |
425 | 449 | ||
450 | |||
426 | 4.18 KVM_GET_MSRS | 451 | 4.18 KVM_GET_MSRS |
427 | 452 | ||
428 | Capability: basic | 453 | Capability: basic |
@@ -451,6 +476,7 @@ Application code should set the 'nmsrs' member (which indicates the | |||
451 | size of the entries array) and the 'index' member of each array entry. | 476 | size of the entries array) and the 'index' member of each array entry. |
452 | kvm will fill in the 'data' member. | 477 | kvm will fill in the 'data' member. |
453 | 478 | ||
479 | |||
454 | 4.19 KVM_SET_MSRS | 480 | 4.19 KVM_SET_MSRS |
455 | 481 | ||
456 | Capability: basic | 482 | Capability: basic |
@@ -466,6 +492,7 @@ Application code should set the 'nmsrs' member (which indicates the | |||
466 | size of the entries array), and the 'index' and 'data' members of each | 492 | size of the entries array), and the 'index' and 'data' members of each |
467 | array entry. | 493 | array entry. |
468 | 494 | ||
495 | |||
469 | 4.20 KVM_SET_CPUID | 496 | 4.20 KVM_SET_CPUID |
470 | 497 | ||
471 | Capability: basic | 498 | Capability: basic |
@@ -494,6 +521,7 @@ struct kvm_cpuid { | |||
494 | struct kvm_cpuid_entry entries[0]; | 521 | struct kvm_cpuid_entry entries[0]; |
495 | }; | 522 | }; |
496 | 523 | ||
524 | |||
497 | 4.21 KVM_SET_SIGNAL_MASK | 525 | 4.21 KVM_SET_SIGNAL_MASK |
498 | 526 | ||
499 | Capability: basic | 527 | Capability: basic |
@@ -516,6 +544,7 @@ struct kvm_signal_mask { | |||
516 | __u8 sigset[0]; | 544 | __u8 sigset[0]; |
517 | }; | 545 | }; |
518 | 546 | ||
547 | |||
519 | 4.22 KVM_GET_FPU | 548 | 4.22 KVM_GET_FPU |
520 | 549 | ||
521 | Capability: basic | 550 | Capability: basic |
@@ -541,6 +570,7 @@ struct kvm_fpu { | |||
541 | __u32 pad2; | 570 | __u32 pad2; |
542 | }; | 571 | }; |
543 | 572 | ||
573 | |||
544 | 4.23 KVM_SET_FPU | 574 | 4.23 KVM_SET_FPU |
545 | 575 | ||
546 | Capability: basic | 576 | Capability: basic |
@@ -566,6 +596,7 @@ struct kvm_fpu { | |||
566 | __u32 pad2; | 596 | __u32 pad2; |
567 | }; | 597 | }; |
568 | 598 | ||
599 | |||
569 | 4.24 KVM_CREATE_IRQCHIP | 600 | 4.24 KVM_CREATE_IRQCHIP |
570 | 601 | ||
571 | Capability: KVM_CAP_IRQCHIP | 602 | Capability: KVM_CAP_IRQCHIP |
@@ -579,6 +610,7 @@ ioapic, a virtual PIC (two PICs, nested), and sets up future vcpus to have a | |||
579 | local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23 | 610 | local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23 |
580 | only go to the IOAPIC. On ia64, a IOSAPIC is created. | 611 | only go to the IOAPIC. On ia64, a IOSAPIC is created. |
581 | 612 | ||
613 | |||
582 | 4.25 KVM_IRQ_LINE | 614 | 4.25 KVM_IRQ_LINE |
583 | 615 | ||
584 | Capability: KVM_CAP_IRQCHIP | 616 | Capability: KVM_CAP_IRQCHIP |
@@ -600,6 +632,7 @@ struct kvm_irq_level { | |||
600 | __u32 level; /* 0 or 1 */ | 632 | __u32 level; /* 0 or 1 */ |
601 | }; | 633 | }; |
602 | 634 | ||
635 | |||
603 | 4.26 KVM_GET_IRQCHIP | 636 | 4.26 KVM_GET_IRQCHIP |
604 | 637 | ||
605 | Capability: KVM_CAP_IRQCHIP | 638 | Capability: KVM_CAP_IRQCHIP |
@@ -621,6 +654,7 @@ struct kvm_irqchip { | |||
621 | } chip; | 654 | } chip; |
622 | }; | 655 | }; |
623 | 656 | ||
657 | |||
624 | 4.27 KVM_SET_IRQCHIP | 658 | 4.27 KVM_SET_IRQCHIP |
625 | 659 | ||
626 | Capability: KVM_CAP_IRQCHIP | 660 | Capability: KVM_CAP_IRQCHIP |
@@ -642,6 +676,7 @@ struct kvm_irqchip { | |||
642 | } chip; | 676 | } chip; |
643 | }; | 677 | }; |
644 | 678 | ||
679 | |||
645 | 4.28 KVM_XEN_HVM_CONFIG | 680 | 4.28 KVM_XEN_HVM_CONFIG |
646 | 681 | ||
647 | Capability: KVM_CAP_XEN_HVM | 682 | Capability: KVM_CAP_XEN_HVM |
@@ -666,6 +701,7 @@ struct kvm_xen_hvm_config { | |||
666 | __u8 pad2[30]; | 701 | __u8 pad2[30]; |
667 | }; | 702 | }; |
668 | 703 | ||
704 | |||
669 | 4.29 KVM_GET_CLOCK | 705 | 4.29 KVM_GET_CLOCK |
670 | 706 | ||
671 | Capability: KVM_CAP_ADJUST_CLOCK | 707 | Capability: KVM_CAP_ADJUST_CLOCK |
@@ -684,6 +720,7 @@ struct kvm_clock_data { | |||
684 | __u32 pad[9]; | 720 | __u32 pad[9]; |
685 | }; | 721 | }; |
686 | 722 | ||
723 | |||
687 | 4.30 KVM_SET_CLOCK | 724 | 4.30 KVM_SET_CLOCK |
688 | 725 | ||
689 | Capability: KVM_CAP_ADJUST_CLOCK | 726 | Capability: KVM_CAP_ADJUST_CLOCK |
@@ -702,6 +739,7 @@ struct kvm_clock_data { | |||
702 | __u32 pad[9]; | 739 | __u32 pad[9]; |
703 | }; | 740 | }; |
704 | 741 | ||
742 | |||
705 | 4.31 KVM_GET_VCPU_EVENTS | 743 | 4.31 KVM_GET_VCPU_EVENTS |
706 | 744 | ||
707 | Capability: KVM_CAP_VCPU_EVENTS | 745 | Capability: KVM_CAP_VCPU_EVENTS |
@@ -741,6 +779,7 @@ struct kvm_vcpu_events { | |||
741 | KVM_VCPUEVENT_VALID_SHADOW may be set in the flags field to signal that | 779 | KVM_VCPUEVENT_VALID_SHADOW may be set in the flags field to signal that |
742 | interrupt.shadow contains a valid state. Otherwise, this field is undefined. | 780 | interrupt.shadow contains a valid state. Otherwise, this field is undefined. |
743 | 781 | ||
782 | |||
744 | 4.32 KVM_SET_VCPU_EVENTS | 783 | 4.32 KVM_SET_VCPU_EVENTS |
745 | 784 | ||
746 | Capability: KVM_CAP_VCPU_EVENTS | 785 | Capability: KVM_CAP_VCPU_EVENTS |
@@ -767,6 +806,7 @@ If KVM_CAP_INTR_SHADOW is available, KVM_VCPUEVENT_VALID_SHADOW can be set in | |||
767 | the flags field to signal that interrupt.shadow contains a valid state and | 806 | the flags field to signal that interrupt.shadow contains a valid state and |
768 | shall be written into the VCPU. | 807 | shall be written into the VCPU. |
769 | 808 | ||
809 | |||
770 | 4.33 KVM_GET_DEBUGREGS | 810 | 4.33 KVM_GET_DEBUGREGS |
771 | 811 | ||
772 | Capability: KVM_CAP_DEBUGREGS | 812 | Capability: KVM_CAP_DEBUGREGS |
@@ -785,6 +825,7 @@ struct kvm_debugregs { | |||
785 | __u64 reserved[9]; | 825 | __u64 reserved[9]; |
786 | }; | 826 | }; |
787 | 827 | ||
828 | |||
788 | 4.34 KVM_SET_DEBUGREGS | 829 | 4.34 KVM_SET_DEBUGREGS |
789 | 830 | ||
790 | Capability: KVM_CAP_DEBUGREGS | 831 | Capability: KVM_CAP_DEBUGREGS |
@@ -798,6 +839,7 @@ Writes debug registers into the vcpu. | |||
798 | See KVM_GET_DEBUGREGS for the data structure. The flags field is unused | 839 | See KVM_GET_DEBUGREGS for the data structure. The flags field is unused |
799 | yet and must be cleared on entry. | 840 | yet and must be cleared on entry. |
800 | 841 | ||
842 | |||
801 | 4.35 KVM_SET_USER_MEMORY_REGION | 843 | 4.35 KVM_SET_USER_MEMORY_REGION |
802 | 844 | ||
803 | Capability: KVM_CAP_USER_MEM | 845 | Capability: KVM_CAP_USER_MEM |
@@ -844,6 +886,7 @@ It is recommended to use this API instead of the KVM_SET_MEMORY_REGION ioctl. | |||
844 | The KVM_SET_MEMORY_REGION does not allow fine grained control over memory | 886 | The KVM_SET_MEMORY_REGION does not allow fine grained control over memory |
845 | allocation and is deprecated. | 887 | allocation and is deprecated. |
846 | 888 | ||
889 | |||
847 | 4.36 KVM_SET_TSS_ADDR | 890 | 4.36 KVM_SET_TSS_ADDR |
848 | 891 | ||
849 | Capability: KVM_CAP_SET_TSS_ADDR | 892 | Capability: KVM_CAP_SET_TSS_ADDR |
@@ -862,6 +905,7 @@ This ioctl is required on Intel-based hosts. This is needed on Intel hardware | |||
862 | because of a quirk in the virtualization implementation (see the internals | 905 | because of a quirk in the virtualization implementation (see the internals |
863 | documentation when it pops into existence). | 906 | documentation when it pops into existence). |
864 | 907 | ||
908 | |||
865 | 4.37 KVM_ENABLE_CAP | 909 | 4.37 KVM_ENABLE_CAP |
866 | 910 | ||
867 | Capability: KVM_CAP_ENABLE_CAP | 911 | Capability: KVM_CAP_ENABLE_CAP |
@@ -897,6 +941,7 @@ function properly, this is the place to put them. | |||
897 | __u8 pad[64]; | 941 | __u8 pad[64]; |
898 | }; | 942 | }; |
899 | 943 | ||
944 | |||
900 | 4.38 KVM_GET_MP_STATE | 945 | 4.38 KVM_GET_MP_STATE |
901 | 946 | ||
902 | Capability: KVM_CAP_MP_STATE | 947 | Capability: KVM_CAP_MP_STATE |
@@ -927,6 +972,7 @@ Possible values are: | |||
927 | This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel | 972 | This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel |
928 | irqchip, the multiprocessing state must be maintained by userspace. | 973 | irqchip, the multiprocessing state must be maintained by userspace. |
929 | 974 | ||
975 | |||
930 | 4.39 KVM_SET_MP_STATE | 976 | 4.39 KVM_SET_MP_STATE |
931 | 977 | ||
932 | Capability: KVM_CAP_MP_STATE | 978 | Capability: KVM_CAP_MP_STATE |
@@ -941,6 +987,7 @@ arguments. | |||
941 | This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel | 987 | This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel |
942 | irqchip, the multiprocessing state must be maintained by userspace. | 988 | irqchip, the multiprocessing state must be maintained by userspace. |
943 | 989 | ||
990 | |||
944 | 4.40 KVM_SET_IDENTITY_MAP_ADDR | 991 | 4.40 KVM_SET_IDENTITY_MAP_ADDR |
945 | 992 | ||
946 | Capability: KVM_CAP_SET_IDENTITY_MAP_ADDR | 993 | Capability: KVM_CAP_SET_IDENTITY_MAP_ADDR |
@@ -959,6 +1006,7 @@ This ioctl is required on Intel-based hosts. This is needed on Intel hardware | |||
959 | because of a quirk in the virtualization implementation (see the internals | 1006 | because of a quirk in the virtualization implementation (see the internals |
960 | documentation when it pops into existence). | 1007 | documentation when it pops into existence). |
961 | 1008 | ||
1009 | |||
962 | 4.41 KVM_SET_BOOT_CPU_ID | 1010 | 4.41 KVM_SET_BOOT_CPU_ID |
963 | 1011 | ||
964 | Capability: KVM_CAP_SET_BOOT_CPU_ID | 1012 | Capability: KVM_CAP_SET_BOOT_CPU_ID |
@@ -971,6 +1019,7 @@ Define which vcpu is the Bootstrap Processor (BSP). Values are the same | |||
971 | as the vcpu id in KVM_CREATE_VCPU. If this ioctl is not called, the default | 1019 | as the vcpu id in KVM_CREATE_VCPU. If this ioctl is not called, the default |
972 | is vcpu 0. | 1020 | is vcpu 0. |
973 | 1021 | ||
1022 | |||
974 | 4.42 KVM_GET_XSAVE | 1023 | 4.42 KVM_GET_XSAVE |
975 | 1024 | ||
976 | Capability: KVM_CAP_XSAVE | 1025 | Capability: KVM_CAP_XSAVE |
@@ -985,6 +1034,7 @@ struct kvm_xsave { | |||
985 | 1034 | ||
986 | This ioctl would copy current vcpu's xsave struct to the userspace. | 1035 | This ioctl would copy current vcpu's xsave struct to the userspace. |
987 | 1036 | ||
1037 | |||
988 | 4.43 KVM_SET_XSAVE | 1038 | 4.43 KVM_SET_XSAVE |
989 | 1039 | ||
990 | Capability: KVM_CAP_XSAVE | 1040 | Capability: KVM_CAP_XSAVE |
@@ -999,6 +1049,7 @@ struct kvm_xsave { | |||
999 | 1049 | ||
1000 | This ioctl would copy userspace's xsave struct to the kernel. | 1050 | This ioctl would copy userspace's xsave struct to the kernel. |
1001 | 1051 | ||
1052 | |||
1002 | 4.44 KVM_GET_XCRS | 1053 | 4.44 KVM_GET_XCRS |
1003 | 1054 | ||
1004 | Capability: KVM_CAP_XCRS | 1055 | Capability: KVM_CAP_XCRS |
@@ -1022,6 +1073,7 @@ struct kvm_xcrs { | |||
1022 | 1073 | ||
1023 | This ioctl would copy current vcpu's xcrs to the userspace. | 1074 | This ioctl would copy current vcpu's xcrs to the userspace. |
1024 | 1075 | ||
1076 | |||
1025 | 4.45 KVM_SET_XCRS | 1077 | 4.45 KVM_SET_XCRS |
1026 | 1078 | ||
1027 | Capability: KVM_CAP_XCRS | 1079 | Capability: KVM_CAP_XCRS |
@@ -1045,6 +1097,7 @@ struct kvm_xcrs { | |||
1045 | 1097 | ||
1046 | This ioctl would set vcpu's xcr to the value userspace specified. | 1098 | This ioctl would set vcpu's xcr to the value userspace specified. |
1047 | 1099 | ||
1100 | |||
1048 | 4.46 KVM_GET_SUPPORTED_CPUID | 1101 | 4.46 KVM_GET_SUPPORTED_CPUID |
1049 | 1102 | ||
1050 | Capability: KVM_CAP_EXT_CPUID | 1103 | Capability: KVM_CAP_EXT_CPUID |
@@ -1119,6 +1172,7 @@ support. Instead it is reported via | |||
1119 | if that returns true and you use KVM_CREATE_IRQCHIP, or if you emulate the | 1172 | if that returns true and you use KVM_CREATE_IRQCHIP, or if you emulate the |
1120 | feature in userspace, then you can enable the feature for KVM_SET_CPUID2. | 1173 | feature in userspace, then you can enable the feature for KVM_SET_CPUID2. |
1121 | 1174 | ||
1175 | |||
1122 | 4.47 KVM_PPC_GET_PVINFO | 1176 | 4.47 KVM_PPC_GET_PVINFO |
1123 | 1177 | ||
1124 | Capability: KVM_CAP_PPC_GET_PVINFO | 1178 | Capability: KVM_CAP_PPC_GET_PVINFO |
@@ -1142,6 +1196,7 @@ of 4 instructions that make up a hypercall. | |||
1142 | If any additional field gets added to this structure later on, a bit for that | 1196 | If any additional field gets added to this structure later on, a bit for that |
1143 | additional piece of information will be set in the flags bitmap. | 1197 | additional piece of information will be set in the flags bitmap. |
1144 | 1198 | ||
1199 | |||
1145 | 4.48 KVM_ASSIGN_PCI_DEVICE | 1200 | 4.48 KVM_ASSIGN_PCI_DEVICE |
1146 | 1201 | ||
1147 | Capability: KVM_CAP_DEVICE_ASSIGNMENT | 1202 | Capability: KVM_CAP_DEVICE_ASSIGNMENT |
@@ -1185,6 +1240,7 @@ Only PCI header type 0 devices with PCI BAR resources are supported by | |||
1185 | device assignment. The user requesting this ioctl must have read/write | 1240 | device assignment. The user requesting this ioctl must have read/write |
1186 | access to the PCI sysfs resource files associated with the device. | 1241 | access to the PCI sysfs resource files associated with the device. |
1187 | 1242 | ||
1243 | |||
1188 | 4.49 KVM_DEASSIGN_PCI_DEVICE | 1244 | 4.49 KVM_DEASSIGN_PCI_DEVICE |
1189 | 1245 | ||
1190 | Capability: KVM_CAP_DEVICE_DEASSIGNMENT | 1246 | Capability: KVM_CAP_DEVICE_DEASSIGNMENT |
@@ -1198,6 +1254,7 @@ Ends PCI device assignment, releasing all associated resources. | |||
1198 | See KVM_CAP_DEVICE_ASSIGNMENT for the data structure. Only assigned_dev_id is | 1254 | See KVM_CAP_DEVICE_ASSIGNMENT for the data structure. Only assigned_dev_id is |
1199 | used in kvm_assigned_pci_dev to identify the device. | 1255 | used in kvm_assigned_pci_dev to identify the device. |
1200 | 1256 | ||
1257 | |||
1201 | 4.50 KVM_ASSIGN_DEV_IRQ | 1258 | 4.50 KVM_ASSIGN_DEV_IRQ |
1202 | 1259 | ||
1203 | Capability: KVM_CAP_ASSIGN_DEV_IRQ | 1260 | Capability: KVM_CAP_ASSIGN_DEV_IRQ |
@@ -1231,6 +1288,7 @@ The following flags are defined: | |||
1231 | It is not valid to specify multiple types per host or guest IRQ. However, the | 1288 | It is not valid to specify multiple types per host or guest IRQ. However, the |
1232 | IRQ type of host and guest can differ or can even be null. | 1289 | IRQ type of host and guest can differ or can even be null. |
1233 | 1290 | ||
1291 | |||
1234 | 4.51 KVM_DEASSIGN_DEV_IRQ | 1292 | 4.51 KVM_DEASSIGN_DEV_IRQ |
1235 | 1293 | ||
1236 | Capability: KVM_CAP_ASSIGN_DEV_IRQ | 1294 | Capability: KVM_CAP_ASSIGN_DEV_IRQ |
@@ -1245,6 +1303,7 @@ See KVM_ASSIGN_DEV_IRQ for the data structure. The target device is specified | |||
1245 | by assigned_dev_id, flags must correspond to the IRQ type specified on | 1303 | by assigned_dev_id, flags must correspond to the IRQ type specified on |
1246 | KVM_ASSIGN_DEV_IRQ. Partial deassignment of host or guest IRQ is allowed. | 1304 | KVM_ASSIGN_DEV_IRQ. Partial deassignment of host or guest IRQ is allowed. |
1247 | 1305 | ||
1306 | |||
1248 | 4.52 KVM_SET_GSI_ROUTING | 1307 | 4.52 KVM_SET_GSI_ROUTING |
1249 | 1308 | ||
1250 | Capability: KVM_CAP_IRQ_ROUTING | 1309 | Capability: KVM_CAP_IRQ_ROUTING |
@@ -1293,6 +1352,7 @@ struct kvm_irq_routing_msi { | |||
1293 | __u32 pad; | 1352 | __u32 pad; |
1294 | }; | 1353 | }; |
1295 | 1354 | ||
1355 | |||
1296 | 4.53 KVM_ASSIGN_SET_MSIX_NR | 1356 | 4.53 KVM_ASSIGN_SET_MSIX_NR |
1297 | 1357 | ||
1298 | Capability: KVM_CAP_DEVICE_MSIX | 1358 | Capability: KVM_CAP_DEVICE_MSIX |
@@ -1314,6 +1374,7 @@ struct kvm_assigned_msix_nr { | |||
1314 | 1374 | ||
1315 | #define KVM_MAX_MSIX_PER_DEV 256 | 1375 | #define KVM_MAX_MSIX_PER_DEV 256 |
1316 | 1376 | ||
1377 | |||
1317 | 4.54 KVM_ASSIGN_SET_MSIX_ENTRY | 1378 | 4.54 KVM_ASSIGN_SET_MSIX_ENTRY |
1318 | 1379 | ||
1319 | Capability: KVM_CAP_DEVICE_MSIX | 1380 | Capability: KVM_CAP_DEVICE_MSIX |
@@ -1332,7 +1393,8 @@ struct kvm_assigned_msix_entry { | |||
1332 | __u16 padding[3]; | 1393 | __u16 padding[3]; |
1333 | }; | 1394 | }; |
1334 | 1395 | ||
1335 | 4.54 KVM_SET_TSC_KHZ | 1396 | |
1397 | 4.55 KVM_SET_TSC_KHZ | ||
1336 | 1398 | ||
1337 | Capability: KVM_CAP_TSC_CONTROL | 1399 | Capability: KVM_CAP_TSC_CONTROL |
1338 | Architectures: x86 | 1400 | Architectures: x86 |
@@ -1343,7 +1405,8 @@ Returns: 0 on success, -1 on error | |||
1343 | Specifies the tsc frequency for the virtual machine. The unit of the | 1405 | Specifies the tsc frequency for the virtual machine. The unit of the |
1344 | frequency is KHz. | 1406 | frequency is KHz. |
1345 | 1407 | ||
1346 | 4.55 KVM_GET_TSC_KHZ | 1408 | |
1409 | 4.56 KVM_GET_TSC_KHZ | ||
1347 | 1410 | ||
1348 | Capability: KVM_CAP_GET_TSC_KHZ | 1411 | Capability: KVM_CAP_GET_TSC_KHZ |
1349 | Architectures: x86 | 1412 | Architectures: x86 |
@@ -1355,7 +1418,8 @@ Returns the tsc frequency of the guest. The unit of the return value is | |||
1355 | KHz. If the host has unstable tsc this ioctl returns -EIO instead as an | 1418 | KHz. If the host has unstable tsc this ioctl returns -EIO instead as an |
1356 | error. | 1419 | error. |
1357 | 1420 | ||
1358 | 4.56 KVM_GET_LAPIC | 1421 | |
1422 | 4.57 KVM_GET_LAPIC | ||
1359 | 1423 | ||
1360 | Capability: KVM_CAP_IRQCHIP | 1424 | Capability: KVM_CAP_IRQCHIP |
1361 | Architectures: x86 | 1425 | Architectures: x86 |
@@ -1371,7 +1435,8 @@ struct kvm_lapic_state { | |||
1371 | Reads the Local APIC registers and copies them into the input argument. The | 1435 | Reads the Local APIC registers and copies them into the input argument. The |
1372 | data format and layout are the same as documented in the architecture manual. | 1436 | data format and layout are the same as documented in the architecture manual. |
1373 | 1437 | ||
1374 | 4.57 KVM_SET_LAPIC | 1438 | |
1439 | 4.58 KVM_SET_LAPIC | ||
1375 | 1440 | ||
1376 | Capability: KVM_CAP_IRQCHIP | 1441 | Capability: KVM_CAP_IRQCHIP |
1377 | Architectures: x86 | 1442 | Architectures: x86 |
@@ -1387,7 +1452,8 @@ struct kvm_lapic_state { | |||
1387 | Copies the input argument into the the Local APIC registers. The data format | 1452 | Copies the input argument into the the Local APIC registers. The data format |
1388 | and layout are the same as documented in the architecture manual. | 1453 | and layout are the same as documented in the architecture manual. |
1389 | 1454 | ||
1390 | 4.58 KVM_IOEVENTFD | 1455 | |
1456 | 4.59 KVM_IOEVENTFD | ||
1391 | 1457 | ||
1392 | Capability: KVM_CAP_IOEVENTFD | 1458 | Capability: KVM_CAP_IOEVENTFD |
1393 | Architectures: all | 1459 | Architectures: all |
@@ -1417,7 +1483,8 @@ The following flags are defined: | |||
1417 | If datamatch flag is set, the event will be signaled only if the written value | 1483 | If datamatch flag is set, the event will be signaled only if the written value |
1418 | to the registered address is equal to datamatch in struct kvm_ioeventfd. | 1484 | to the registered address is equal to datamatch in struct kvm_ioeventfd. |
1419 | 1485 | ||
1420 | 4.59 KVM_DIRTY_TLB | 1486 | |
1487 | 4.60 KVM_DIRTY_TLB | ||
1421 | 1488 | ||
1422 | Capability: KVM_CAP_SW_TLB | 1489 | Capability: KVM_CAP_SW_TLB |
1423 | Architectures: ppc | 1490 | Architectures: ppc |
@@ -1449,7 +1516,8 @@ The "num_dirty" field is a performance hint for KVM to determine whether it | |||
1449 | should skip processing the bitmap and just invalidate everything. It must | 1516 | should skip processing the bitmap and just invalidate everything. It must |
1450 | be set to the number of set bits in the bitmap. | 1517 | be set to the number of set bits in the bitmap. |
1451 | 1518 | ||
1452 | 4.60 KVM_ASSIGN_SET_INTX_MASK | 1519 | |
1520 | 4.61 KVM_ASSIGN_SET_INTX_MASK | ||
1453 | 1521 | ||
1454 | Capability: KVM_CAP_PCI_2_3 | 1522 | Capability: KVM_CAP_PCI_2_3 |
1455 | Architectures: x86 | 1523 | Architectures: x86 |
@@ -1482,6 +1550,7 @@ See KVM_ASSIGN_DEV_IRQ for the data structure. The target device is specified | |||
1482 | by assigned_dev_id. In the flags field, only KVM_DEV_ASSIGN_MASK_INTX is | 1550 | by assigned_dev_id. In the flags field, only KVM_DEV_ASSIGN_MASK_INTX is |
1483 | evaluated. | 1551 | evaluated. |
1484 | 1552 | ||
1553 | |||
1485 | 4.62 KVM_CREATE_SPAPR_TCE | 1554 | 4.62 KVM_CREATE_SPAPR_TCE |
1486 | 1555 | ||
1487 | Capability: KVM_CAP_SPAPR_TCE | 1556 | Capability: KVM_CAP_SPAPR_TCE |
@@ -1517,6 +1586,7 @@ the entries written by kernel-handled H_PUT_TCE calls, and also lets | |||
1517 | userspace update the TCE table directly which is useful in some | 1586 | userspace update the TCE table directly which is useful in some |
1518 | circumstances. | 1587 | circumstances. |
1519 | 1588 | ||
1589 | |||
1520 | 4.63 KVM_ALLOCATE_RMA | 1590 | 4.63 KVM_ALLOCATE_RMA |
1521 | 1591 | ||
1522 | Capability: KVM_CAP_PPC_RMA | 1592 | Capability: KVM_CAP_PPC_RMA |
@@ -1549,6 +1619,7 @@ is supported; 2 if the processor requires all virtual machines to have | |||
1549 | an RMA, or 1 if the processor can use an RMA but doesn't require it, | 1619 | an RMA, or 1 if the processor can use an RMA but doesn't require it, |
1550 | because it supports the Virtual RMA (VRMA) facility. | 1620 | because it supports the Virtual RMA (VRMA) facility. |
1551 | 1621 | ||
1622 | |||
1552 | 4.64 KVM_NMI | 1623 | 4.64 KVM_NMI |
1553 | 1624 | ||
1554 | Capability: KVM_CAP_USER_NMI | 1625 | Capability: KVM_CAP_USER_NMI |
@@ -1574,6 +1645,7 @@ following algorithm: | |||
1574 | Some guests configure the LINT1 NMI input to cause a panic, aiding in | 1645 | Some guests configure the LINT1 NMI input to cause a panic, aiding in |
1575 | debugging. | 1646 | debugging. |
1576 | 1647 | ||
1648 | |||
1577 | 4.65 KVM_S390_UCAS_MAP | 1649 | 4.65 KVM_S390_UCAS_MAP |
1578 | 1650 | ||
1579 | Capability: KVM_CAP_S390_UCONTROL | 1651 | Capability: KVM_CAP_S390_UCONTROL |
@@ -1593,6 +1665,7 @@ This ioctl maps the memory at "user_addr" with the length "length" to | |||
1593 | the vcpu's address space starting at "vcpu_addr". All parameters need to | 1665 | the vcpu's address space starting at "vcpu_addr". All parameters need to |
1594 | be alligned by 1 megabyte. | 1666 | be alligned by 1 megabyte. |
1595 | 1667 | ||
1668 | |||
1596 | 4.66 KVM_S390_UCAS_UNMAP | 1669 | 4.66 KVM_S390_UCAS_UNMAP |
1597 | 1670 | ||
1598 | Capability: KVM_CAP_S390_UCONTROL | 1671 | Capability: KVM_CAP_S390_UCONTROL |
@@ -1612,6 +1685,7 @@ This ioctl unmaps the memory in the vcpu's address space starting at | |||
1612 | "vcpu_addr" with the length "length". The field "user_addr" is ignored. | 1685 | "vcpu_addr" with the length "length". The field "user_addr" is ignored. |
1613 | All parameters need to be alligned by 1 megabyte. | 1686 | All parameters need to be alligned by 1 megabyte. |
1614 | 1687 | ||
1688 | |||
1615 | 4.67 KVM_S390_VCPU_FAULT | 1689 | 4.67 KVM_S390_VCPU_FAULT |
1616 | 1690 | ||
1617 | Capability: KVM_CAP_S390_UCONTROL | 1691 | Capability: KVM_CAP_S390_UCONTROL |
@@ -1628,6 +1702,7 @@ table upfront. This is useful to handle validity intercepts for user | |||
1628 | controlled virtual machines to fault in the virtual cpu's lowcore pages | 1702 | controlled virtual machines to fault in the virtual cpu's lowcore pages |
1629 | prior to calling the KVM_RUN ioctl. | 1703 | prior to calling the KVM_RUN ioctl. |
1630 | 1704 | ||
1705 | |||
1631 | 4.68 KVM_SET_ONE_REG | 1706 | 4.68 KVM_SET_ONE_REG |
1632 | 1707 | ||
1633 | Capability: KVM_CAP_ONE_REG | 1708 | Capability: KVM_CAP_ONE_REG |
@@ -1653,6 +1728,7 @@ registers, find a list below: | |||
1653 | | | | 1728 | | | |
1654 | PPC | KVM_REG_PPC_HIOR | 64 | 1729 | PPC | KVM_REG_PPC_HIOR | 64 |
1655 | 1730 | ||
1731 | |||
1656 | 4.69 KVM_GET_ONE_REG | 1732 | 4.69 KVM_GET_ONE_REG |
1657 | 1733 | ||
1658 | Capability: KVM_CAP_ONE_REG | 1734 | Capability: KVM_CAP_ONE_REG |
@@ -1669,7 +1745,193 @@ at the memory location pointed to by "addr". | |||
1669 | The list of registers accessible using this interface is identical to the | 1745 | The list of registers accessible using this interface is identical to the |
1670 | list in 4.64. | 1746 | list in 4.64. |
1671 | 1747 | ||
1748 | |||
1749 | 4.70 KVM_KVMCLOCK_CTRL | ||
1750 | |||
1751 | Capability: KVM_CAP_KVMCLOCK_CTRL | ||
1752 | Architectures: Any that implement pvclocks (currently x86 only) | ||
1753 | Type: vcpu ioctl | ||
1754 | Parameters: None | ||
1755 | Returns: 0 on success, -1 on error | ||
1756 | |||
1757 | This signals to the host kernel that the specified guest is being paused by | ||
1758 | userspace. The host will set a flag in the pvclock structure that is checked | ||
1759 | from the soft lockup watchdog. The flag is part of the pvclock structure that | ||
1760 | is shared between guest and host, specifically the second bit of the flags | ||
1761 | field of the pvclock_vcpu_time_info structure. It will be set exclusively by | ||
1762 | the host and read/cleared exclusively by the guest. The guest operation of | ||
1763 | checking and clearing the flag must an atomic operation so | ||
1764 | load-link/store-conditional, or equivalent must be used. There are two cases | ||
1765 | where the guest will clear the flag: when the soft lockup watchdog timer resets | ||
1766 | itself or when a soft lockup is detected. This ioctl can be called any time | ||
1767 | after pausing the vcpu, but before it is resumed. | ||
1768 | |||
1769 | |||
1770 | 4.71 KVM_SIGNAL_MSI | ||
1771 | |||
1772 | Capability: KVM_CAP_SIGNAL_MSI | ||
1773 | Architectures: x86 | ||
1774 | Type: vm ioctl | ||
1775 | Parameters: struct kvm_msi (in) | ||
1776 | Returns: >0 on delivery, 0 if guest blocked the MSI, and -1 on error | ||
1777 | |||
1778 | Directly inject a MSI message. Only valid with in-kernel irqchip that handles | ||
1779 | MSI messages. | ||
1780 | |||
1781 | struct kvm_msi { | ||
1782 | __u32 address_lo; | ||
1783 | __u32 address_hi; | ||
1784 | __u32 data; | ||
1785 | __u32 flags; | ||
1786 | __u8 pad[16]; | ||
1787 | }; | ||
1788 | |||
1789 | No flags are defined so far. The corresponding field must be 0. | ||
1790 | |||
1791 | |||
1792 | 4.71 KVM_CREATE_PIT2 | ||
1793 | |||
1794 | Capability: KVM_CAP_PIT2 | ||
1795 | Architectures: x86 | ||
1796 | Type: vm ioctl | ||
1797 | Parameters: struct kvm_pit_config (in) | ||
1798 | Returns: 0 on success, -1 on error | ||
1799 | |||
1800 | Creates an in-kernel device model for the i8254 PIT. This call is only valid | ||
1801 | after enabling in-kernel irqchip support via KVM_CREATE_IRQCHIP. The following | ||
1802 | parameters have to be passed: | ||
1803 | |||
1804 | struct kvm_pit_config { | ||
1805 | __u32 flags; | ||
1806 | __u32 pad[15]; | ||
1807 | }; | ||
1808 | |||
1809 | Valid flags are: | ||
1810 | |||
1811 | #define KVM_PIT_SPEAKER_DUMMY 1 /* emulate speaker port stub */ | ||
1812 | |||
1813 | PIT timer interrupts may use a per-VM kernel thread for injection. If it | ||
1814 | exists, this thread will have a name of the following pattern: | ||
1815 | |||
1816 | kvm-pit/<owner-process-pid> | ||
1817 | |||
1818 | When running a guest with elevated priorities, the scheduling parameters of | ||
1819 | this thread may have to be adjusted accordingly. | ||
1820 | |||
1821 | This IOCTL replaces the obsolete KVM_CREATE_PIT. | ||
1822 | |||
1823 | |||
1824 | 4.72 KVM_GET_PIT2 | ||
1825 | |||
1826 | Capability: KVM_CAP_PIT_STATE2 | ||
1827 | Architectures: x86 | ||
1828 | Type: vm ioctl | ||
1829 | Parameters: struct kvm_pit_state2 (out) | ||
1830 | Returns: 0 on success, -1 on error | ||
1831 | |||
1832 | Retrieves the state of the in-kernel PIT model. Only valid after | ||
1833 | KVM_CREATE_PIT2. The state is returned in the following structure: | ||
1834 | |||
1835 | struct kvm_pit_state2 { | ||
1836 | struct kvm_pit_channel_state channels[3]; | ||
1837 | __u32 flags; | ||
1838 | __u32 reserved[9]; | ||
1839 | }; | ||
1840 | |||
1841 | Valid flags are: | ||
1842 | |||
1843 | /* disable PIT in HPET legacy mode */ | ||
1844 | #define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001 | ||
1845 | |||
1846 | This IOCTL replaces the obsolete KVM_GET_PIT. | ||
1847 | |||
1848 | |||
1849 | 4.73 KVM_SET_PIT2 | ||
1850 | |||
1851 | Capability: KVM_CAP_PIT_STATE2 | ||
1852 | Architectures: x86 | ||
1853 | Type: vm ioctl | ||
1854 | Parameters: struct kvm_pit_state2 (in) | ||
1855 | Returns: 0 on success, -1 on error | ||
1856 | |||
1857 | Sets the state of the in-kernel PIT model. Only valid after KVM_CREATE_PIT2. | ||
1858 | See KVM_GET_PIT2 for details on struct kvm_pit_state2. | ||
1859 | |||
1860 | This IOCTL replaces the obsolete KVM_SET_PIT. | ||
1861 | |||
1862 | |||
1863 | 4.74 KVM_PPC_GET_SMMU_INFO | ||
1864 | |||
1865 | Capability: KVM_CAP_PPC_GET_SMMU_INFO | ||
1866 | Architectures: powerpc | ||
1867 | Type: vm ioctl | ||
1868 | Parameters: None | ||
1869 | Returns: 0 on success, -1 on error | ||
1870 | |||
1871 | This populates and returns a structure describing the features of | ||
1872 | the "Server" class MMU emulation supported by KVM. | ||
1873 | This can in turn be used by userspace to generate the appropariate | ||
1874 | device-tree properties for the guest operating system. | ||
1875 | |||
1876 | The structure contains some global informations, followed by an | ||
1877 | array of supported segment page sizes: | ||
1878 | |||
1879 | struct kvm_ppc_smmu_info { | ||
1880 | __u64 flags; | ||
1881 | __u32 slb_size; | ||
1882 | __u32 pad; | ||
1883 | struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ]; | ||
1884 | }; | ||
1885 | |||
1886 | The supported flags are: | ||
1887 | |||
1888 | - KVM_PPC_PAGE_SIZES_REAL: | ||
1889 | When that flag is set, guest page sizes must "fit" the backing | ||
1890 | store page sizes. When not set, any page size in the list can | ||
1891 | be used regardless of how they are backed by userspace. | ||
1892 | |||
1893 | - KVM_PPC_1T_SEGMENTS | ||
1894 | The emulated MMU supports 1T segments in addition to the | ||
1895 | standard 256M ones. | ||
1896 | |||
1897 | The "slb_size" field indicates how many SLB entries are supported | ||
1898 | |||
1899 | The "sps" array contains 8 entries indicating the supported base | ||
1900 | page sizes for a segment in increasing order. Each entry is defined | ||
1901 | as follow: | ||
1902 | |||
1903 | struct kvm_ppc_one_seg_page_size { | ||
1904 | __u32 page_shift; /* Base page shift of segment (or 0) */ | ||
1905 | __u32 slb_enc; /* SLB encoding for BookS */ | ||
1906 | struct kvm_ppc_one_page_size enc[KVM_PPC_PAGE_SIZES_MAX_SZ]; | ||
1907 | }; | ||
1908 | |||
1909 | An entry with a "page_shift" of 0 is unused. Because the array is | ||
1910 | organized in increasing order, a lookup can stop when encoutering | ||
1911 | such an entry. | ||
1912 | |||
1913 | The "slb_enc" field provides the encoding to use in the SLB for the | ||
1914 | page size. The bits are in positions such as the value can directly | ||
1915 | be OR'ed into the "vsid" argument of the slbmte instruction. | ||
1916 | |||
1917 | The "enc" array is a list which for each of those segment base page | ||
1918 | size provides the list of supported actual page sizes (which can be | ||
1919 | only larger or equal to the base page size), along with the | ||
1920 | corresponding encoding in the hash PTE. Similarily, the array is | ||
1921 | 8 entries sorted by increasing sizes and an entry with a "0" shift | ||
1922 | is an empty entry and a terminator: | ||
1923 | |||
1924 | struct kvm_ppc_one_page_size { | ||
1925 | __u32 page_shift; /* Page shift (or 0) */ | ||
1926 | __u32 pte_enc; /* Encoding in the HPTE (>>12) */ | ||
1927 | }; | ||
1928 | |||
1929 | The "pte_enc" field provides a value that can OR'ed into the hash | ||
1930 | PTE's RPN field (ie, it needs to be shifted left by 12 to OR it | ||
1931 | into the hash PTE second double word). | ||
1932 | |||
1672 | 5. The kvm_run structure | 1933 | 5. The kvm_run structure |
1934 | ------------------------ | ||
1673 | 1935 | ||
1674 | Application code obtains a pointer to the kvm_run structure by | 1936 | Application code obtains a pointer to the kvm_run structure by |
1675 | mmap()ing a vcpu fd. From that point, application code can control | 1937 | mmap()ing a vcpu fd. From that point, application code can control |
@@ -1910,7 +2172,9 @@ and usually define the validity of a groups of registers. (e.g. one bit | |||
1910 | 2172 | ||
1911 | }; | 2173 | }; |
1912 | 2174 | ||
2175 | |||
1913 | 6. Capabilities that can be enabled | 2176 | 6. Capabilities that can be enabled |
2177 | ----------------------------------- | ||
1914 | 2178 | ||
1915 | There are certain capabilities that change the behavior of the virtual CPU when | 2179 | There are certain capabilities that change the behavior of the virtual CPU when |
1916 | enabled. To enable them, please see section 4.37. Below you can find a list of | 2180 | enabled. To enable them, please see section 4.37. Below you can find a list of |
@@ -1926,6 +2190,7 @@ The following information is provided along with the description: | |||
1926 | Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL) | 2190 | Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL) |
1927 | are not detailed, but errors with specific meanings are. | 2191 | are not detailed, but errors with specific meanings are. |
1928 | 2192 | ||
2193 | |||
1929 | 6.1 KVM_CAP_PPC_OSI | 2194 | 6.1 KVM_CAP_PPC_OSI |
1930 | 2195 | ||
1931 | Architectures: ppc | 2196 | Architectures: ppc |
@@ -1939,6 +2204,7 @@ between the guest and the host. | |||
1939 | 2204 | ||
1940 | When this capability is enabled, KVM_EXIT_OSI can occur. | 2205 | When this capability is enabled, KVM_EXIT_OSI can occur. |
1941 | 2206 | ||
2207 | |||
1942 | 6.2 KVM_CAP_PPC_PAPR | 2208 | 6.2 KVM_CAP_PPC_PAPR |
1943 | 2209 | ||
1944 | Architectures: ppc | 2210 | Architectures: ppc |
@@ -1957,6 +2223,7 @@ HTAB invisible to the guest. | |||
1957 | 2223 | ||
1958 | When this capability is enabled, KVM_EXIT_PAPR_HCALL can occur. | 2224 | When this capability is enabled, KVM_EXIT_PAPR_HCALL can occur. |
1959 | 2225 | ||
2226 | |||
1960 | 6.3 KVM_CAP_SW_TLB | 2227 | 6.3 KVM_CAP_SW_TLB |
1961 | 2228 | ||
1962 | Architectures: ppc | 2229 | Architectures: ppc |
diff --git a/Documentation/virtual/kvm/cpuid.txt b/Documentation/virtual/kvm/cpuid.txt index 882068538c9c..83afe65d4966 100644 --- a/Documentation/virtual/kvm/cpuid.txt +++ b/Documentation/virtual/kvm/cpuid.txt | |||
@@ -10,11 +10,15 @@ a guest. | |||
10 | KVM cpuid functions are: | 10 | KVM cpuid functions are: |
11 | 11 | ||
12 | function: KVM_CPUID_SIGNATURE (0x40000000) | 12 | function: KVM_CPUID_SIGNATURE (0x40000000) |
13 | returns : eax = 0, | 13 | returns : eax = 0x40000001, |
14 | ebx = 0x4b4d564b, | 14 | ebx = 0x4b4d564b, |
15 | ecx = 0x564b4d56, | 15 | ecx = 0x564b4d56, |
16 | edx = 0x4d. | 16 | edx = 0x4d. |
17 | Note that this value in ebx, ecx and edx corresponds to the string "KVMKVMKVM". | 17 | Note that this value in ebx, ecx and edx corresponds to the string "KVMKVMKVM". |
18 | The value in eax corresponds to the maximum cpuid function present in this leaf, | ||
19 | and will be updated if more functions are added in the future. | ||
20 | Note also that old hosts set eax value to 0x0. This should | ||
21 | be interpreted as if the value was 0x40000001. | ||
18 | This function queries the presence of KVM cpuid leafs. | 22 | This function queries the presence of KVM cpuid leafs. |
19 | 23 | ||
20 | 24 | ||
diff --git a/Documentation/virtual/kvm/msr.txt b/Documentation/virtual/kvm/msr.txt index 50317809113d..96b41bd97523 100644 --- a/Documentation/virtual/kvm/msr.txt +++ b/Documentation/virtual/kvm/msr.txt | |||
@@ -109,6 +109,10 @@ MSR_KVM_SYSTEM_TIME_NEW: 0x4b564d01 | |||
109 | 0 | 24 | multiple cpus are guaranteed to | 109 | 0 | 24 | multiple cpus are guaranteed to |
110 | | | be monotonic | 110 | | | be monotonic |
111 | ------------------------------------------------------------- | 111 | ------------------------------------------------------------- |
112 | | | guest vcpu has been paused by | ||
113 | 1 | N/A | the host | ||
114 | | | See 4.70 in api.txt | ||
115 | ------------------------------------------------------------- | ||
112 | 116 | ||
113 | Availability of this MSR must be checked via bit 3 in 0x4000001 cpuid | 117 | Availability of this MSR must be checked via bit 3 in 0x4000001 cpuid |
114 | leaf prior to usage. | 118 | leaf prior to usage. |
diff --git a/Documentation/vm/transhuge.txt b/Documentation/vm/transhuge.txt index 29bdf62aac09..f734bb2a78dc 100644 --- a/Documentation/vm/transhuge.txt +++ b/Documentation/vm/transhuge.txt | |||
@@ -166,6 +166,68 @@ behavior. So to make them effective you need to restart any | |||
166 | application that could have been using hugepages. This also applies to | 166 | application that could have been using hugepages. This also applies to |
167 | the regions registered in khugepaged. | 167 | the regions registered in khugepaged. |
168 | 168 | ||
169 | == Monitoring usage == | ||
170 | |||
171 | The number of transparent huge pages currently used by the system is | ||
172 | available by reading the AnonHugePages field in /proc/meminfo. To | ||
173 | identify what applications are using transparent huge pages, it is | ||
174 | necessary to read /proc/PID/smaps and count the AnonHugePages fields | ||
175 | for each mapping. Note that reading the smaps file is expensive and | ||
176 | reading it frequently will incur overhead. | ||
177 | |||
178 | There are a number of counters in /proc/vmstat that may be used to | ||
179 | monitor how successfully the system is providing huge pages for use. | ||
180 | |||
181 | thp_fault_alloc is incremented every time a huge page is successfully | ||
182 | allocated to handle a page fault. This applies to both the | ||
183 | first time a page is faulted and for COW faults. | ||
184 | |||
185 | thp_collapse_alloc is incremented by khugepaged when it has found | ||
186 | a range of pages to collapse into one huge page and has | ||
187 | successfully allocated a new huge page to store the data. | ||
188 | |||
189 | thp_fault_fallback is incremented if a page fault fails to allocate | ||
190 | a huge page and instead falls back to using small pages. | ||
191 | |||
192 | thp_collapse_alloc_failed is incremented if khugepaged found a range | ||
193 | of pages that should be collapsed into one huge page but failed | ||
194 | the allocation. | ||
195 | |||
196 | thp_split is incremented every time a huge page is split into base | ||
197 | pages. This can happen for a variety of reasons but a common | ||
198 | reason is that a huge page is old and is being reclaimed. | ||
199 | |||
200 | As the system ages, allocating huge pages may be expensive as the | ||
201 | system uses memory compaction to copy data around memory to free a | ||
202 | huge page for use. There are some counters in /proc/vmstat to help | ||
203 | monitor this overhead. | ||
204 | |||
205 | compact_stall is incremented every time a process stalls to run | ||
206 | memory compaction so that a huge page is free for use. | ||
207 | |||
208 | compact_success is incremented if the system compacted memory and | ||
209 | freed a huge page for use. | ||
210 | |||
211 | compact_fail is incremented if the system tries to compact memory | ||
212 | but failed. | ||
213 | |||
214 | compact_pages_moved is incremented each time a page is moved. If | ||
215 | this value is increasing rapidly, it implies that the system | ||
216 | is copying a lot of data to satisfy the huge page allocation. | ||
217 | It is possible that the cost of copying exceeds any savings | ||
218 | from reduced TLB misses. | ||
219 | |||
220 | compact_pagemigrate_failed is incremented when the underlying mechanism | ||
221 | for moving a page failed. | ||
222 | |||
223 | compact_blocks_moved is incremented each time memory compaction examines | ||
224 | a huge page aligned range of pages. | ||
225 | |||
226 | It is possible to establish how long the stalls were using the function | ||
227 | tracer to record how long was spent in __alloc_pages_nodemask and | ||
228 | using the mm_page_alloc tracepoint to identify which allocations were | ||
229 | for huge pages. | ||
230 | |||
169 | == get_user_pages and follow_page == | 231 | == get_user_pages and follow_page == |
170 | 232 | ||
171 | get_user_pages and follow_page if run on a hugepage, will return the | 233 | get_user_pages and follow_page if run on a hugepage, will return the |
diff --git a/Documentation/vme_api.txt b/Documentation/vme_api.txt new file mode 100644 index 000000000000..856efa35f6e3 --- /dev/null +++ b/Documentation/vme_api.txt | |||
@@ -0,0 +1,396 @@ | |||
1 | VME Device Driver API | ||
2 | ===================== | ||
3 | |||
4 | Driver registration | ||
5 | =================== | ||
6 | |||
7 | As with other subsystems within the Linux kernel, VME device drivers register | ||
8 | with the VME subsystem, typically called from the devices init routine. This is | ||
9 | achieved via a call to the following function: | ||
10 | |||
11 | int vme_register_driver (struct vme_driver *driver); | ||
12 | |||
13 | If driver registration is successful this function returns zero, if an error | ||
14 | occurred a negative error code will be returned. | ||
15 | |||
16 | A pointer to a structure of type 'vme_driver' must be provided to the | ||
17 | registration function. The structure is as follows: | ||
18 | |||
19 | struct vme_driver { | ||
20 | struct list_head node; | ||
21 | const char *name; | ||
22 | int (*match)(struct vme_dev *); | ||
23 | int (*probe)(struct vme_dev *); | ||
24 | int (*remove)(struct vme_dev *); | ||
25 | void (*shutdown)(void); | ||
26 | struct device_driver driver; | ||
27 | struct list_head devices; | ||
28 | unsigned int ndev; | ||
29 | }; | ||
30 | |||
31 | At the minimum, the '.name', '.match' and '.probe' elements of this structure | ||
32 | should be correctly set. The '.name' element is a pointer to a string holding | ||
33 | the device driver's name. | ||
34 | |||
35 | The '.match' function allows controlling the number of devices that need to | ||
36 | be registered. The match function should return 1 if a device should be | ||
37 | probed and 0 otherwise. This example match function (from vme_user.c) limits | ||
38 | the number of devices probed to one: | ||
39 | |||
40 | #define USER_BUS_MAX 1 | ||
41 | ... | ||
42 | static int vme_user_match(struct vme_dev *vdev) | ||
43 | { | ||
44 | if (vdev->id.num >= USER_BUS_MAX) | ||
45 | return 0; | ||
46 | return 1; | ||
47 | } | ||
48 | |||
49 | The '.probe' element should contain a pointer to the probe routine. The | ||
50 | probe routine is passed a 'struct vme_dev' pointer as an argument. The | ||
51 | 'struct vme_dev' structure looks like the following: | ||
52 | |||
53 | struct vme_dev { | ||
54 | int num; | ||
55 | struct vme_bridge *bridge; | ||
56 | struct device dev; | ||
57 | struct list_head drv_list; | ||
58 | struct list_head bridge_list; | ||
59 | }; | ||
60 | |||
61 | Here, the 'num' field refers to the sequential device ID for this specific | ||
62 | driver. The bridge number (or bus number) can be accessed using | ||
63 | dev->bridge->num. | ||
64 | |||
65 | A function is also provided to unregister the driver from the VME core and is | ||
66 | usually called from the device driver's exit routine: | ||
67 | |||
68 | void vme_unregister_driver (struct vme_driver *driver); | ||
69 | |||
70 | |||
71 | Resource management | ||
72 | =================== | ||
73 | |||
74 | Once a driver has registered with the VME core the provided match routine will | ||
75 | be called the number of times specified during the registration. If a match | ||
76 | succeeds, a non-zero value should be returned. A zero return value indicates | ||
77 | failure. For all successful matches, the probe routine of the corresponding | ||
78 | driver is called. The probe routine is passed a pointer to the devices | ||
79 | device structure. This pointer should be saved, it will be required for | ||
80 | requesting VME resources. | ||
81 | |||
82 | The driver can request ownership of one or more master windows, slave windows | ||
83 | and/or dma channels. Rather than allowing the device driver to request a | ||
84 | specific window or DMA channel (which may be used by a different driver) this | ||
85 | driver allows a resource to be assigned based on the required attributes of the | ||
86 | driver in question: | ||
87 | |||
88 | struct vme_resource * vme_master_request(struct vme_dev *dev, | ||
89 | u32 aspace, u32 cycle, u32 width); | ||
90 | |||
91 | struct vme_resource * vme_slave_request(struct vme_dev *dev, u32 aspace, | ||
92 | u32 cycle); | ||
93 | |||
94 | struct vme_resource *vme_dma_request(struct vme_dev *dev, u32 route); | ||
95 | |||
96 | For slave windows these attributes are split into the VME address spaces that | ||
97 | need to be accessed in 'aspace' and VME bus cycle types required in 'cycle'. | ||
98 | Master windows add a further set of attributes in 'width' specifying the | ||
99 | required data transfer widths. These attributes are defined as bitmasks and as | ||
100 | such any combination of the attributes can be requested for a single window, | ||
101 | the core will assign a window that meets the requirements, returning a pointer | ||
102 | of type vme_resource that should be used to identify the allocated resource | ||
103 | when it is used. For DMA controllers, the request function requires the | ||
104 | potential direction of any transfers to be provided in the route attributes. | ||
105 | This is typically VME-to-MEM and/or MEM-to-VME, though some hardware can | ||
106 | support VME-to-VME and MEM-to-MEM transfers as well as test pattern generation. | ||
107 | If an unallocated window fitting the requirements can not be found a NULL | ||
108 | pointer will be returned. | ||
109 | |||
110 | Functions are also provided to free window allocations once they are no longer | ||
111 | required. These functions should be passed the pointer to the resource provided | ||
112 | during resource allocation: | ||
113 | |||
114 | void vme_master_free(struct vme_resource *res); | ||
115 | |||
116 | void vme_slave_free(struct vme_resource *res); | ||
117 | |||
118 | void vme_dma_free(struct vme_resource *res); | ||
119 | |||
120 | |||
121 | Master windows | ||
122 | ============== | ||
123 | |||
124 | Master windows provide access from the local processor[s] out onto the VME bus. | ||
125 | The number of windows available and the available access modes is dependent on | ||
126 | the underlying chipset. A window must be configured before it can be used. | ||
127 | |||
128 | |||
129 | Master window configuration | ||
130 | --------------------------- | ||
131 | |||
132 | Once a master window has been assigned the following functions can be used to | ||
133 | configure it and retrieve the current settings: | ||
134 | |||
135 | int vme_master_set (struct vme_resource *res, int enabled, | ||
136 | unsigned long long base, unsigned long long size, u32 aspace, | ||
137 | u32 cycle, u32 width); | ||
138 | |||
139 | int vme_master_get (struct vme_resource *res, int *enabled, | ||
140 | unsigned long long *base, unsigned long long *size, u32 *aspace, | ||
141 | u32 *cycle, u32 *width); | ||
142 | |||
143 | The address spaces, transfer widths and cycle types are the same as described | ||
144 | under resource management, however some of the options are mutually exclusive. | ||
145 | For example, only one address space may be specified. | ||
146 | |||
147 | These functions return 0 on success or an error code should the call fail. | ||
148 | |||
149 | |||
150 | Master window access | ||
151 | -------------------- | ||
152 | |||
153 | The following functions can be used to read from and write to configured master | ||
154 | windows. These functions return the number of bytes copied: | ||
155 | |||
156 | ssize_t vme_master_read(struct vme_resource *res, void *buf, | ||
157 | size_t count, loff_t offset); | ||
158 | |||
159 | ssize_t vme_master_write(struct vme_resource *res, void *buf, | ||
160 | size_t count, loff_t offset); | ||
161 | |||
162 | In addition to simple reads and writes, a function is provided to do a | ||
163 | read-modify-write transaction. This function returns the original value of the | ||
164 | VME bus location : | ||
165 | |||
166 | unsigned int vme_master_rmw (struct vme_resource *res, | ||
167 | unsigned int mask, unsigned int compare, unsigned int swap, | ||
168 | loff_t offset); | ||
169 | |||
170 | This functions by reading the offset, applying the mask. If the bits selected in | ||
171 | the mask match with the values of the corresponding bits in the compare field, | ||
172 | the value of swap is written the specified offset. | ||
173 | |||
174 | |||
175 | Slave windows | ||
176 | ============= | ||
177 | |||
178 | Slave windows provide devices on the VME bus access into mapped portions of the | ||
179 | local memory. The number of windows available and the access modes that can be | ||
180 | used is dependent on the underlying chipset. A window must be configured before | ||
181 | it can be used. | ||
182 | |||
183 | |||
184 | Slave window configuration | ||
185 | -------------------------- | ||
186 | |||
187 | Once a slave window has been assigned the following functions can be used to | ||
188 | configure it and retrieve the current settings: | ||
189 | |||
190 | int vme_slave_set (struct vme_resource *res, int enabled, | ||
191 | unsigned long long base, unsigned long long size, | ||
192 | dma_addr_t mem, u32 aspace, u32 cycle); | ||
193 | |||
194 | int vme_slave_get (struct vme_resource *res, int *enabled, | ||
195 | unsigned long long *base, unsigned long long *size, | ||
196 | dma_addr_t *mem, u32 *aspace, u32 *cycle); | ||
197 | |||
198 | The address spaces, transfer widths and cycle types are the same as described | ||
199 | under resource management, however some of the options are mutually exclusive. | ||
200 | For example, only one address space may be specified. | ||
201 | |||
202 | These functions return 0 on success or an error code should the call fail. | ||
203 | |||
204 | |||
205 | Slave window buffer allocation | ||
206 | ------------------------------ | ||
207 | |||
208 | Functions are provided to allow the user to allocate and free a contiguous | ||
209 | buffers which will be accessible by the VME bridge. These functions do not have | ||
210 | to be used, other methods can be used to allocate a buffer, though care must be | ||
211 | taken to ensure that they are contiguous and accessible by the VME bridge: | ||
212 | |||
213 | void * vme_alloc_consistent(struct vme_resource *res, size_t size, | ||
214 | dma_addr_t *mem); | ||
215 | |||
216 | void vme_free_consistent(struct vme_resource *res, size_t size, | ||
217 | void *virt, dma_addr_t mem); | ||
218 | |||
219 | |||
220 | Slave window access | ||
221 | ------------------- | ||
222 | |||
223 | Slave windows map local memory onto the VME bus, the standard methods for | ||
224 | accessing memory should be used. | ||
225 | |||
226 | |||
227 | DMA channels | ||
228 | ============ | ||
229 | |||
230 | The VME DMA transfer provides the ability to run link-list DMA transfers. The | ||
231 | API introduces the concept of DMA lists. Each DMA list is a link-list which can | ||
232 | be passed to a DMA controller. Multiple lists can be created, extended, | ||
233 | executed, reused and destroyed. | ||
234 | |||
235 | |||
236 | List Management | ||
237 | --------------- | ||
238 | |||
239 | The following functions are provided to create and destroy DMA lists. Execution | ||
240 | of a list will not automatically destroy the list, thus enabling a list to be | ||
241 | reused for repetitive tasks: | ||
242 | |||
243 | struct vme_dma_list *vme_new_dma_list(struct vme_resource *res); | ||
244 | |||
245 | int vme_dma_list_free(struct vme_dma_list *list); | ||
246 | |||
247 | |||
248 | List Population | ||
249 | --------------- | ||
250 | |||
251 | An item can be added to a list using the following function ( the source and | ||
252 | destination attributes need to be created before calling this function, this is | ||
253 | covered under "Transfer Attributes"): | ||
254 | |||
255 | int vme_dma_list_add(struct vme_dma_list *list, | ||
256 | struct vme_dma_attr *src, struct vme_dma_attr *dest, | ||
257 | size_t count); | ||
258 | |||
259 | NOTE: The detailed attributes of the transfers source and destination | ||
260 | are not checked until an entry is added to a DMA list, the request | ||
261 | for a DMA channel purely checks the directions in which the | ||
262 | controller is expected to transfer data. As a result it is | ||
263 | possible for this call to return an error, for example if the | ||
264 | source or destination is in an unsupported VME address space. | ||
265 | |||
266 | Transfer Attributes | ||
267 | ------------------- | ||
268 | |||
269 | The attributes for the source and destination are handled separately from adding | ||
270 | an item to a list. This is due to the diverse attributes required for each type | ||
271 | of source and destination. There are functions to create attributes for PCI, VME | ||
272 | and pattern sources and destinations (where appropriate): | ||
273 | |||
274 | Pattern source: | ||
275 | |||
276 | struct vme_dma_attr *vme_dma_pattern_attribute(u32 pattern, u32 type); | ||
277 | |||
278 | PCI source or destination: | ||
279 | |||
280 | struct vme_dma_attr *vme_dma_pci_attribute(dma_addr_t mem); | ||
281 | |||
282 | VME source or destination: | ||
283 | |||
284 | struct vme_dma_attr *vme_dma_vme_attribute(unsigned long long base, | ||
285 | u32 aspace, u32 cycle, u32 width); | ||
286 | |||
287 | The following function should be used to free an attribute: | ||
288 | |||
289 | void vme_dma_free_attribute(struct vme_dma_attr *attr); | ||
290 | |||
291 | |||
292 | List Execution | ||
293 | -------------- | ||
294 | |||
295 | The following function queues a list for execution. The function will return | ||
296 | once the list has been executed: | ||
297 | |||
298 | int vme_dma_list_exec(struct vme_dma_list *list); | ||
299 | |||
300 | |||
301 | Interrupts | ||
302 | ========== | ||
303 | |||
304 | The VME API provides functions to attach and detach callbacks to specific VME | ||
305 | level and status ID combinations and for the generation of VME interrupts with | ||
306 | specific VME level and status IDs. | ||
307 | |||
308 | |||
309 | Attaching Interrupt Handlers | ||
310 | ---------------------------- | ||
311 | |||
312 | The following functions can be used to attach and free a specific VME level and | ||
313 | status ID combination. Any given combination can only be assigned a single | ||
314 | callback function. A void pointer parameter is provided, the value of which is | ||
315 | passed to the callback function, the use of this pointer is user undefined: | ||
316 | |||
317 | int vme_irq_request(struct vme_dev *dev, int level, int statid, | ||
318 | void (*callback)(int, int, void *), void *priv); | ||
319 | |||
320 | void vme_irq_free(struct vme_dev *dev, int level, int statid); | ||
321 | |||
322 | The callback parameters are as follows. Care must be taken in writing a callback | ||
323 | function, callback functions run in interrupt context: | ||
324 | |||
325 | void callback(int level, int statid, void *priv); | ||
326 | |||
327 | |||
328 | Interrupt Generation | ||
329 | -------------------- | ||
330 | |||
331 | The following function can be used to generate a VME interrupt at a given VME | ||
332 | level and VME status ID: | ||
333 | |||
334 | int vme_irq_generate(struct vme_dev *dev, int level, int statid); | ||
335 | |||
336 | |||
337 | Location monitors | ||
338 | ================= | ||
339 | |||
340 | The VME API provides the following functionality to configure the location | ||
341 | monitor. | ||
342 | |||
343 | |||
344 | Location Monitor Management | ||
345 | --------------------------- | ||
346 | |||
347 | The following functions are provided to request the use of a block of location | ||
348 | monitors and to free them after they are no longer required: | ||
349 | |||
350 | struct vme_resource * vme_lm_request(struct vme_dev *dev); | ||
351 | |||
352 | void vme_lm_free(struct vme_resource * res); | ||
353 | |||
354 | Each block may provide a number of location monitors, monitoring adjacent | ||
355 | locations. The following function can be used to determine how many locations | ||
356 | are provided: | ||
357 | |||
358 | int vme_lm_count(struct vme_resource * res); | ||
359 | |||
360 | |||
361 | Location Monitor Configuration | ||
362 | ------------------------------ | ||
363 | |||
364 | Once a bank of location monitors has been allocated, the following functions | ||
365 | are provided to configure the location and mode of the location monitor: | ||
366 | |||
367 | int vme_lm_set(struct vme_resource *res, unsigned long long base, | ||
368 | u32 aspace, u32 cycle); | ||
369 | |||
370 | int vme_lm_get(struct vme_resource *res, unsigned long long *base, | ||
371 | u32 *aspace, u32 *cycle); | ||
372 | |||
373 | |||
374 | Location Monitor Use | ||
375 | -------------------- | ||
376 | |||
377 | The following functions allow a callback to be attached and detached from each | ||
378 | location monitor location. Each location monitor can monitor a number of | ||
379 | adjacent locations: | ||
380 | |||
381 | int vme_lm_attach(struct vme_resource *res, int num, | ||
382 | void (*callback)(int)); | ||
383 | |||
384 | int vme_lm_detach(struct vme_resource *res, int num); | ||
385 | |||
386 | The callback function is declared as follows. | ||
387 | |||
388 | void callback(int num); | ||
389 | |||
390 | |||
391 | Slot Detection | ||
392 | ============== | ||
393 | |||
394 | This function returns the slot ID of the provided bridge. | ||
395 | |||
396 | int vme_slot_get(struct vme_dev *dev); | ||
diff --git a/Documentation/watchdog/src/watchdog-test.c b/Documentation/watchdog/src/watchdog-test.c index 63fdc34ceb98..73ff5cc93e05 100644 --- a/Documentation/watchdog/src/watchdog-test.c +++ b/Documentation/watchdog/src/watchdog-test.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <string.h> | 7 | #include <string.h> |
8 | #include <unistd.h> | 8 | #include <unistd.h> |
9 | #include <fcntl.h> | 9 | #include <fcntl.h> |
10 | #include <signal.h> | ||
10 | #include <sys/ioctl.h> | 11 | #include <sys/ioctl.h> |
11 | #include <linux/types.h> | 12 | #include <linux/types.h> |
12 | #include <linux/watchdog.h> | 13 | #include <linux/watchdog.h> |
@@ -29,6 +30,14 @@ static void keep_alive(void) | |||
29 | * The main program. Run the program with "-d" to disable the card, | 30 | * The main program. Run the program with "-d" to disable the card, |
30 | * or "-e" to enable the card. | 31 | * or "-e" to enable the card. |
31 | */ | 32 | */ |
33 | |||
34 | void term(int sig) | ||
35 | { | ||
36 | close(fd); | ||
37 | fprintf(stderr, "Stopping watchdog ticks...\n"); | ||
38 | exit(0); | ||
39 | } | ||
40 | |||
32 | int main(int argc, char *argv[]) | 41 | int main(int argc, char *argv[]) |
33 | { | 42 | { |
34 | int flags; | 43 | int flags; |
@@ -47,26 +56,31 @@ int main(int argc, char *argv[]) | |||
47 | ioctl(fd, WDIOC_SETOPTIONS, &flags); | 56 | ioctl(fd, WDIOC_SETOPTIONS, &flags); |
48 | fprintf(stderr, "Watchdog card disabled.\n"); | 57 | fprintf(stderr, "Watchdog card disabled.\n"); |
49 | fflush(stderr); | 58 | fflush(stderr); |
50 | exit(0); | 59 | goto end; |
51 | } else if (!strncasecmp(argv[1], "-e", 2)) { | 60 | } else if (!strncasecmp(argv[1], "-e", 2)) { |
52 | flags = WDIOS_ENABLECARD; | 61 | flags = WDIOS_ENABLECARD; |
53 | ioctl(fd, WDIOC_SETOPTIONS, &flags); | 62 | ioctl(fd, WDIOC_SETOPTIONS, &flags); |
54 | fprintf(stderr, "Watchdog card enabled.\n"); | 63 | fprintf(stderr, "Watchdog card enabled.\n"); |
55 | fflush(stderr); | 64 | fflush(stderr); |
56 | exit(0); | 65 | goto end; |
57 | } else { | 66 | } else { |
58 | fprintf(stderr, "-d to disable, -e to enable.\n"); | 67 | fprintf(stderr, "-d to disable, -e to enable.\n"); |
59 | fprintf(stderr, "run by itself to tick the card.\n"); | 68 | fprintf(stderr, "run by itself to tick the card.\n"); |
60 | fflush(stderr); | 69 | fflush(stderr); |
61 | exit(0); | 70 | goto end; |
62 | } | 71 | } |
63 | } else { | 72 | } else { |
64 | fprintf(stderr, "Watchdog Ticking Away!\n"); | 73 | fprintf(stderr, "Watchdog Ticking Away!\n"); |
65 | fflush(stderr); | 74 | fflush(stderr); |
66 | } | 75 | } |
67 | 76 | ||
77 | signal(SIGINT, term); | ||
78 | |||
68 | while(1) { | 79 | while(1) { |
69 | keep_alive(); | 80 | keep_alive(); |
70 | sleep(1); | 81 | sleep(1); |
71 | } | 82 | } |
83 | end: | ||
84 | close(fd); | ||
85 | return 0; | ||
72 | } | 86 | } |
diff --git a/Documentation/watchdog/watchdog-kernel-api.txt b/Documentation/watchdog/watchdog-kernel-api.txt index 227f6cd0e5fa..086638f6c82d 100644 --- a/Documentation/watchdog/watchdog-kernel-api.txt +++ b/Documentation/watchdog/watchdog-kernel-api.txt | |||
@@ -1,6 +1,6 @@ | |||
1 | The Linux WatchDog Timer Driver Core kernel API. | 1 | The Linux WatchDog Timer Driver Core kernel API. |
2 | =============================================== | 2 | =============================================== |
3 | Last reviewed: 16-Mar-2012 | 3 | Last reviewed: 22-May-2012 |
4 | 4 | ||
5 | Wim Van Sebroeck <wim@iguana.be> | 5 | Wim Van Sebroeck <wim@iguana.be> |
6 | 6 | ||
@@ -39,6 +39,10 @@ watchdog_device structure. | |||
39 | The watchdog device structure looks like this: | 39 | The watchdog device structure looks like this: |
40 | 40 | ||
41 | struct watchdog_device { | 41 | struct watchdog_device { |
42 | int id; | ||
43 | struct cdev cdev; | ||
44 | struct device *dev; | ||
45 | struct device *parent; | ||
42 | const struct watchdog_info *info; | 46 | const struct watchdog_info *info; |
43 | const struct watchdog_ops *ops; | 47 | const struct watchdog_ops *ops; |
44 | unsigned int bootstatus; | 48 | unsigned int bootstatus; |
@@ -46,10 +50,20 @@ struct watchdog_device { | |||
46 | unsigned int min_timeout; | 50 | unsigned int min_timeout; |
47 | unsigned int max_timeout; | 51 | unsigned int max_timeout; |
48 | void *driver_data; | 52 | void *driver_data; |
53 | struct mutex lock; | ||
49 | unsigned long status; | 54 | unsigned long status; |
50 | }; | 55 | }; |
51 | 56 | ||
52 | It contains following fields: | 57 | It contains following fields: |
58 | * id: set by watchdog_register_device, id 0 is special. It has both a | ||
59 | /dev/watchdog0 cdev (dynamic major, minor 0) as well as the old | ||
60 | /dev/watchdog miscdev. The id is set automatically when calling | ||
61 | watchdog_register_device. | ||
62 | * cdev: cdev for the dynamic /dev/watchdog<id> device nodes. This | ||
63 | field is also populated by watchdog_register_device. | ||
64 | * dev: device under the watchdog class (created by watchdog_register_device). | ||
65 | * parent: set this to the parent device (or NULL) before calling | ||
66 | watchdog_register_device. | ||
53 | * info: a pointer to a watchdog_info structure. This structure gives some | 67 | * info: a pointer to a watchdog_info structure. This structure gives some |
54 | additional information about the watchdog timer itself. (Like it's unique name) | 68 | additional information about the watchdog timer itself. (Like it's unique name) |
55 | * ops: a pointer to the list of watchdog operations that the watchdog supports. | 69 | * ops: a pointer to the list of watchdog operations that the watchdog supports. |
@@ -59,8 +73,9 @@ It contains following fields: | |||
59 | * bootstatus: status of the device after booting (reported with watchdog | 73 | * bootstatus: status of the device after booting (reported with watchdog |
60 | WDIOF_* status bits). | 74 | WDIOF_* status bits). |
61 | * driver_data: a pointer to the drivers private data of a watchdog device. | 75 | * driver_data: a pointer to the drivers private data of a watchdog device. |
62 | This data should only be accessed via the watchdog_set_drvadata and | 76 | This data should only be accessed via the watchdog_set_drvdata and |
63 | watchdog_get_drvdata routines. | 77 | watchdog_get_drvdata routines. |
78 | * lock: Mutex for WatchDog Timer Driver Core internal use only. | ||
64 | * status: this field contains a number of status bits that give extra | 79 | * status: this field contains a number of status bits that give extra |
65 | information about the status of the device (Like: is the watchdog timer | 80 | information about the status of the device (Like: is the watchdog timer |
66 | running/active, is the nowayout bit set, is the device opened via | 81 | running/active, is the nowayout bit set, is the device opened via |
@@ -78,6 +93,8 @@ struct watchdog_ops { | |||
78 | unsigned int (*status)(struct watchdog_device *); | 93 | unsigned int (*status)(struct watchdog_device *); |
79 | int (*set_timeout)(struct watchdog_device *, unsigned int); | 94 | int (*set_timeout)(struct watchdog_device *, unsigned int); |
80 | unsigned int (*get_timeleft)(struct watchdog_device *); | 95 | unsigned int (*get_timeleft)(struct watchdog_device *); |
96 | void (*ref)(struct watchdog_device *); | ||
97 | void (*unref)(struct watchdog_device *); | ||
81 | long (*ioctl)(struct watchdog_device *, unsigned int, unsigned long); | 98 | long (*ioctl)(struct watchdog_device *, unsigned int, unsigned long); |
82 | }; | 99 | }; |
83 | 100 | ||
@@ -85,6 +102,21 @@ It is important that you first define the module owner of the watchdog timer | |||
85 | driver's operations. This module owner will be used to lock the module when | 102 | driver's operations. This module owner will be used to lock the module when |
86 | the watchdog is active. (This to avoid a system crash when you unload the | 103 | the watchdog is active. (This to avoid a system crash when you unload the |
87 | module and /dev/watchdog is still open). | 104 | module and /dev/watchdog is still open). |
105 | |||
106 | If the watchdog_device struct is dynamically allocated, just locking the module | ||
107 | is not enough and a driver also needs to define the ref and unref operations to | ||
108 | ensure the structure holding the watchdog_device does not go away. | ||
109 | |||
110 | The simplest (and usually sufficient) implementation of this is to: | ||
111 | 1) Add a kref struct to the same structure which is holding the watchdog_device | ||
112 | 2) Define a release callback for the kref which frees the struct holding both | ||
113 | 3) Call kref_init on this kref *before* calling watchdog_register_device() | ||
114 | 4) Define a ref operation calling kref_get on this kref | ||
115 | 5) Define a unref operation calling kref_put on this kref | ||
116 | 6) When it is time to cleanup: | ||
117 | * Do not kfree() the struct holding both, the last kref_put will do this! | ||
118 | * *After* calling watchdog_unregister_device() call kref_put on the kref | ||
119 | |||
88 | Some operations are mandatory and some are optional. The mandatory operations | 120 | Some operations are mandatory and some are optional. The mandatory operations |
89 | are: | 121 | are: |
90 | * start: this is a pointer to the routine that starts the watchdog timer | 122 | * start: this is a pointer to the routine that starts the watchdog timer |
@@ -125,6 +157,10 @@ they are supported. These optional routines/operations are: | |||
125 | (Note: the WDIOF_SETTIMEOUT needs to be set in the options field of the | 157 | (Note: the WDIOF_SETTIMEOUT needs to be set in the options field of the |
126 | watchdog's info structure). | 158 | watchdog's info structure). |
127 | * get_timeleft: this routines returns the time that's left before a reset. | 159 | * get_timeleft: this routines returns the time that's left before a reset. |
160 | * ref: the operation that calls kref_get on the kref of a dynamically | ||
161 | allocated watchdog_device struct. | ||
162 | * unref: the operation that calls kref_put on the kref of a dynamically | ||
163 | allocated watchdog_device struct. | ||
128 | * ioctl: if this routine is present then it will be called first before we do | 164 | * ioctl: if this routine is present then it will be called first before we do |
129 | our own internal ioctl call handling. This routine should return -ENOIOCTLCMD | 165 | our own internal ioctl call handling. This routine should return -ENOIOCTLCMD |
130 | if a command is not supported. The parameters that are passed to the ioctl | 166 | if a command is not supported. The parameters that are passed to the ioctl |
@@ -144,6 +180,11 @@ bit-operations. The status bits that are defined are: | |||
144 | (This bit should only be used by the WatchDog Timer Driver Core). | 180 | (This bit should only be used by the WatchDog Timer Driver Core). |
145 | * WDOG_NO_WAY_OUT: this bit stores the nowayout setting for the watchdog. | 181 | * WDOG_NO_WAY_OUT: this bit stores the nowayout setting for the watchdog. |
146 | If this bit is set then the watchdog timer will not be able to stop. | 182 | If this bit is set then the watchdog timer will not be able to stop. |
183 | * WDOG_UNREGISTERED: this bit gets set by the WatchDog Timer Driver Core | ||
184 | after calling watchdog_unregister_device, and then checked before calling | ||
185 | any watchdog_ops, so that you can be sure that no operations (other then | ||
186 | unref) will get called after unregister, even if userspace still holds a | ||
187 | reference to /dev/watchdog | ||
147 | 188 | ||
148 | To set the WDOG_NO_WAY_OUT status bit (before registering your watchdog | 189 | To set the WDOG_NO_WAY_OUT status bit (before registering your watchdog |
149 | timer device) you can either: | 190 | timer device) you can either: |
diff --git a/Documentation/watchdog/watchdog-parameters.txt b/Documentation/watchdog/watchdog-parameters.txt index 17ddd822b456..04fddbacdbde 100644 --- a/Documentation/watchdog/watchdog-parameters.txt +++ b/Documentation/watchdog/watchdog-parameters.txt | |||
@@ -78,6 +78,11 @@ wd0_timeout: Default watchdog0 timeout in 1/10secs | |||
78 | wd1_timeout: Default watchdog1 timeout in 1/10secs | 78 | wd1_timeout: Default watchdog1 timeout in 1/10secs |
79 | wd2_timeout: Default watchdog2 timeout in 1/10secs | 79 | wd2_timeout: Default watchdog2 timeout in 1/10secs |
80 | ------------------------------------------------- | 80 | ------------------------------------------------- |
81 | da9052wdt: | ||
82 | timeout: Watchdog timeout in seconds. 2<= timeout <=131, default=2.048s | ||
83 | nowayout: Watchdog cannot be stopped once started | ||
84 | (default=kernel config parameter) | ||
85 | ------------------------------------------------- | ||
81 | davinci_wdt: | 86 | davinci_wdt: |
82 | heartbeat: Watchdog heartbeat period in seconds from 1 to 600, default 60 | 87 | heartbeat: Watchdog heartbeat period in seconds from 1 to 600, default 60 |
83 | ------------------------------------------------- | 88 | ------------------------------------------------- |
diff --git a/Documentation/zh_CN/magic-number.txt b/Documentation/zh_CN/magic-number.txt index f606ba8598cf..4263022f5002 100644 --- a/Documentation/zh_CN/magic-number.txt +++ b/Documentation/zh_CN/magic-number.txt | |||
@@ -160,7 +160,7 @@ QUEUE_MAGIC_USED 0xf7e1cc33 queue_entry drivers/scsi/arm/queue.c | |||
160 | HTB_CMAGIC 0xFEFAFEF1 htb_class net/sched/sch_htb.c | 160 | HTB_CMAGIC 0xFEFAFEF1 htb_class net/sched/sch_htb.c |
161 | NMI_MAGIC 0x48414d4d455201 nmi_s arch/mips/include/asm/sn/nmi.h | 161 | NMI_MAGIC 0x48414d4d455201 nmi_s arch/mips/include/asm/sn/nmi.h |
162 | 162 | ||
163 | 请注意,在声音记忆管理中仍然有每一些被定义的驱动魔术值。查看include/sound/sndmagic.h来获取他们完整的列表信息。很多OSS声音驱动拥有自己从声卡PCI ID构建的魔术值-他们也没有被列在这里。 | 163 | 请注意,在声音记忆管理中仍然有一些特殊的为每个驱动定义的魔术值。查看include/sound/sndmagic.h来获取他们完整的列表信息。很多OSS声音驱动拥有自己从声卡PCI ID构建的魔术值-他们也没有被列在这里。 |
164 | 164 | ||
165 | IrDA子系统也使用了大量的自己的魔术值,查看include/net/irda/irda.h来获取他们完整的信息。 | 165 | IrDA子系统也使用了大量的自己的魔术值,查看include/net/irda/irda.h来获取他们完整的信息。 |
166 | 166 | ||