diff options
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/ABI/testing/sysfs-class-regulator | 55 | ||||
-rw-r--r-- | Documentation/laptops/disk-shock-protection.txt | 149 | ||||
-rw-r--r-- | Documentation/pcmcia/driver-changes.txt | 6 | ||||
-rw-r--r-- | Documentation/power/regulator/machine.txt | 140 | ||||
-rw-r--r-- | Documentation/power/regulator/regulator.txt | 8 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.bttv | 1 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.cx23885 | 2 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.cx88 | 8 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.em28xx | 4 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.saa7134 | 8 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.tuner | 1 | ||||
-rw-r--r-- | Documentation/video4linux/gspca.txt | 28 | ||||
-rw-r--r-- | Documentation/video4linux/m5602.txt | 12 | ||||
-rw-r--r-- | Documentation/video4linux/soc-camera.txt | 120 |
14 files changed, 439 insertions, 103 deletions
diff --git a/Documentation/ABI/testing/sysfs-class-regulator b/Documentation/ABI/testing/sysfs-class-regulator index 79a4a75b2d2c..3731f6f29bcb 100644 --- a/Documentation/ABI/testing/sysfs-class-regulator +++ b/Documentation/ABI/testing/sysfs-class-regulator | |||
@@ -1,7 +1,7 @@ | |||
1 | What: /sys/class/regulator/.../state | 1 | What: /sys/class/regulator/.../state |
2 | Date: April 2008 | 2 | Date: April 2008 |
3 | KernelVersion: 2.6.26 | 3 | KernelVersion: 2.6.26 |
4 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 4 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
5 | Description: | 5 | Description: |
6 | Each regulator directory will contain a field called | 6 | Each regulator directory will contain a field called |
7 | state. This holds the regulator output state. | 7 | state. This holds the regulator output state. |
@@ -27,7 +27,7 @@ Description: | |||
27 | What: /sys/class/regulator/.../type | 27 | What: /sys/class/regulator/.../type |
28 | Date: April 2008 | 28 | Date: April 2008 |
29 | KernelVersion: 2.6.26 | 29 | KernelVersion: 2.6.26 |
30 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 30 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
31 | Description: | 31 | Description: |
32 | Each regulator directory will contain a field called | 32 | Each regulator directory will contain a field called |
33 | type. This holds the regulator type. | 33 | type. This holds the regulator type. |
@@ -51,7 +51,7 @@ Description: | |||
51 | What: /sys/class/regulator/.../microvolts | 51 | What: /sys/class/regulator/.../microvolts |
52 | Date: April 2008 | 52 | Date: April 2008 |
53 | KernelVersion: 2.6.26 | 53 | KernelVersion: 2.6.26 |
54 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 54 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
55 | Description: | 55 | Description: |
56 | Each regulator directory will contain a field called | 56 | Each regulator directory will contain a field called |
57 | microvolts. This holds the regulator output voltage setting | 57 | microvolts. This holds the regulator output voltage setting |
@@ -65,7 +65,7 @@ Description: | |||
65 | What: /sys/class/regulator/.../microamps | 65 | What: /sys/class/regulator/.../microamps |
66 | Date: April 2008 | 66 | Date: April 2008 |
67 | KernelVersion: 2.6.26 | 67 | KernelVersion: 2.6.26 |
68 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 68 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
69 | Description: | 69 | Description: |
70 | Each regulator directory will contain a field called | 70 | Each regulator directory will contain a field called |
71 | microamps. This holds the regulator output current limit | 71 | microamps. This holds the regulator output current limit |
@@ -79,7 +79,7 @@ Description: | |||
79 | What: /sys/class/regulator/.../opmode | 79 | What: /sys/class/regulator/.../opmode |
80 | Date: April 2008 | 80 | Date: April 2008 |
81 | KernelVersion: 2.6.26 | 81 | KernelVersion: 2.6.26 |
82 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 82 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
83 | Description: | 83 | Description: |
84 | Each regulator directory will contain a field called | 84 | Each regulator directory will contain a field called |
85 | opmode. This holds the regulator operating mode setting. | 85 | opmode. This holds the regulator operating mode setting. |
@@ -102,7 +102,7 @@ Description: | |||
102 | What: /sys/class/regulator/.../min_microvolts | 102 | What: /sys/class/regulator/.../min_microvolts |
103 | Date: April 2008 | 103 | Date: April 2008 |
104 | KernelVersion: 2.6.26 | 104 | KernelVersion: 2.6.26 |
105 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 105 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
106 | Description: | 106 | Description: |
107 | Each regulator directory will contain a field called | 107 | Each regulator directory will contain a field called |
108 | min_microvolts. This holds the minimum safe working regulator | 108 | min_microvolts. This holds the minimum safe working regulator |
@@ -116,7 +116,7 @@ Description: | |||
116 | What: /sys/class/regulator/.../max_microvolts | 116 | What: /sys/class/regulator/.../max_microvolts |
117 | Date: April 2008 | 117 | Date: April 2008 |
118 | KernelVersion: 2.6.26 | 118 | KernelVersion: 2.6.26 |
119 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 119 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
120 | Description: | 120 | Description: |
121 | Each regulator directory will contain a field called | 121 | Each regulator directory will contain a field called |
122 | max_microvolts. This holds the maximum safe working regulator | 122 | max_microvolts. This holds the maximum safe working regulator |
@@ -130,7 +130,7 @@ Description: | |||
130 | What: /sys/class/regulator/.../min_microamps | 130 | What: /sys/class/regulator/.../min_microamps |
131 | Date: April 2008 | 131 | Date: April 2008 |
132 | KernelVersion: 2.6.26 | 132 | KernelVersion: 2.6.26 |
133 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 133 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
134 | Description: | 134 | Description: |
135 | Each regulator directory will contain a field called | 135 | Each regulator directory will contain a field called |
136 | min_microamps. This holds the minimum safe working regulator | 136 | min_microamps. This holds the minimum safe working regulator |
@@ -145,7 +145,7 @@ Description: | |||
145 | What: /sys/class/regulator/.../max_microamps | 145 | What: /sys/class/regulator/.../max_microamps |
146 | Date: April 2008 | 146 | Date: April 2008 |
147 | KernelVersion: 2.6.26 | 147 | KernelVersion: 2.6.26 |
148 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 148 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
149 | Description: | 149 | Description: |
150 | Each regulator directory will contain a field called | 150 | Each regulator directory will contain a field called |
151 | max_microamps. This holds the maximum safe working regulator | 151 | max_microamps. This holds the maximum safe working regulator |
@@ -157,10 +157,23 @@ Description: | |||
157 | platform code. | 157 | platform code. |
158 | 158 | ||
159 | 159 | ||
160 | What: /sys/class/regulator/.../name | ||
161 | Date: October 2008 | ||
162 | KernelVersion: 2.6.28 | ||
163 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> | ||
164 | Description: | ||
165 | Each regulator directory will contain a field called | ||
166 | name. This holds a string identifying the regulator for | ||
167 | display purposes. | ||
168 | |||
169 | NOTE: this will be empty if no suitable name is provided | ||
170 | by platform or regulator drivers. | ||
171 | |||
172 | |||
160 | What: /sys/class/regulator/.../num_users | 173 | What: /sys/class/regulator/.../num_users |
161 | Date: April 2008 | 174 | Date: April 2008 |
162 | KernelVersion: 2.6.26 | 175 | KernelVersion: 2.6.26 |
163 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 176 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
164 | Description: | 177 | Description: |
165 | Each regulator directory will contain a field called | 178 | Each regulator directory will contain a field called |
166 | num_users. This holds the number of consumer devices that | 179 | num_users. This holds the number of consumer devices that |
@@ -170,7 +183,7 @@ Description: | |||
170 | What: /sys/class/regulator/.../requested_microamps | 183 | What: /sys/class/regulator/.../requested_microamps |
171 | Date: April 2008 | 184 | Date: April 2008 |
172 | KernelVersion: 2.6.26 | 185 | KernelVersion: 2.6.26 |
173 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 186 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
174 | Description: | 187 | Description: |
175 | Each regulator directory will contain a field called | 188 | Each regulator directory will contain a field called |
176 | requested_microamps. This holds the total requested load | 189 | requested_microamps. This holds the total requested load |
@@ -181,7 +194,7 @@ Description: | |||
181 | What: /sys/class/regulator/.../parent | 194 | What: /sys/class/regulator/.../parent |
182 | Date: April 2008 | 195 | Date: April 2008 |
183 | KernelVersion: 2.6.26 | 196 | KernelVersion: 2.6.26 |
184 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 197 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
185 | Description: | 198 | Description: |
186 | Some regulator directories will contain a link called parent. | 199 | Some regulator directories will contain a link called parent. |
187 | This points to the parent or supply regulator if one exists. | 200 | This points to the parent or supply regulator if one exists. |
@@ -189,7 +202,7 @@ Description: | |||
189 | What: /sys/class/regulator/.../suspend_mem_microvolts | 202 | What: /sys/class/regulator/.../suspend_mem_microvolts |
190 | Date: May 2008 | 203 | Date: May 2008 |
191 | KernelVersion: 2.6.26 | 204 | KernelVersion: 2.6.26 |
192 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 205 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
193 | Description: | 206 | Description: |
194 | Each regulator directory will contain a field called | 207 | Each regulator directory will contain a field called |
195 | suspend_mem_microvolts. This holds the regulator output | 208 | suspend_mem_microvolts. This holds the regulator output |
@@ -203,7 +216,7 @@ Description: | |||
203 | What: /sys/class/regulator/.../suspend_disk_microvolts | 216 | What: /sys/class/regulator/.../suspend_disk_microvolts |
204 | Date: May 2008 | 217 | Date: May 2008 |
205 | KernelVersion: 2.6.26 | 218 | KernelVersion: 2.6.26 |
206 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 219 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
207 | Description: | 220 | Description: |
208 | Each regulator directory will contain a field called | 221 | Each regulator directory will contain a field called |
209 | suspend_disk_microvolts. This holds the regulator output | 222 | suspend_disk_microvolts. This holds the regulator output |
@@ -217,7 +230,7 @@ Description: | |||
217 | What: /sys/class/regulator/.../suspend_standby_microvolts | 230 | What: /sys/class/regulator/.../suspend_standby_microvolts |
218 | Date: May 2008 | 231 | Date: May 2008 |
219 | KernelVersion: 2.6.26 | 232 | KernelVersion: 2.6.26 |
220 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 233 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
221 | Description: | 234 | Description: |
222 | Each regulator directory will contain a field called | 235 | Each regulator directory will contain a field called |
223 | suspend_standby_microvolts. This holds the regulator output | 236 | suspend_standby_microvolts. This holds the regulator output |
@@ -231,7 +244,7 @@ Description: | |||
231 | What: /sys/class/regulator/.../suspend_mem_mode | 244 | What: /sys/class/regulator/.../suspend_mem_mode |
232 | Date: May 2008 | 245 | Date: May 2008 |
233 | KernelVersion: 2.6.26 | 246 | KernelVersion: 2.6.26 |
234 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 247 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
235 | Description: | 248 | Description: |
236 | Each regulator directory will contain a field called | 249 | Each regulator directory will contain a field called |
237 | suspend_mem_mode. This holds the regulator operating mode | 250 | suspend_mem_mode. This holds the regulator operating mode |
@@ -245,7 +258,7 @@ Description: | |||
245 | What: /sys/class/regulator/.../suspend_disk_mode | 258 | What: /sys/class/regulator/.../suspend_disk_mode |
246 | Date: May 2008 | 259 | Date: May 2008 |
247 | KernelVersion: 2.6.26 | 260 | KernelVersion: 2.6.26 |
248 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 261 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
249 | Description: | 262 | Description: |
250 | Each regulator directory will contain a field called | 263 | Each regulator directory will contain a field called |
251 | suspend_disk_mode. This holds the regulator operating mode | 264 | suspend_disk_mode. This holds the regulator operating mode |
@@ -258,7 +271,7 @@ Description: | |||
258 | What: /sys/class/regulator/.../suspend_standby_mode | 271 | What: /sys/class/regulator/.../suspend_standby_mode |
259 | Date: May 2008 | 272 | Date: May 2008 |
260 | KernelVersion: 2.6.26 | 273 | KernelVersion: 2.6.26 |
261 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 274 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
262 | Description: | 275 | Description: |
263 | Each regulator directory will contain a field called | 276 | Each regulator directory will contain a field called |
264 | suspend_standby_mode. This holds the regulator operating mode | 277 | suspend_standby_mode. This holds the regulator operating mode |
@@ -272,7 +285,7 @@ Description: | |||
272 | What: /sys/class/regulator/.../suspend_mem_state | 285 | What: /sys/class/regulator/.../suspend_mem_state |
273 | Date: May 2008 | 286 | Date: May 2008 |
274 | KernelVersion: 2.6.26 | 287 | KernelVersion: 2.6.26 |
275 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 288 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
276 | Description: | 289 | Description: |
277 | Each regulator directory will contain a field called | 290 | Each regulator directory will contain a field called |
278 | suspend_mem_state. This holds the regulator operating state | 291 | suspend_mem_state. This holds the regulator operating state |
@@ -287,7 +300,7 @@ Description: | |||
287 | What: /sys/class/regulator/.../suspend_disk_state | 300 | What: /sys/class/regulator/.../suspend_disk_state |
288 | Date: May 2008 | 301 | Date: May 2008 |
289 | KernelVersion: 2.6.26 | 302 | KernelVersion: 2.6.26 |
290 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 303 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
291 | Description: | 304 | Description: |
292 | Each regulator directory will contain a field called | 305 | Each regulator directory will contain a field called |
293 | suspend_disk_state. This holds the regulator operating state | 306 | suspend_disk_state. This holds the regulator operating state |
@@ -302,7 +315,7 @@ Description: | |||
302 | What: /sys/class/regulator/.../suspend_standby_state | 315 | What: /sys/class/regulator/.../suspend_standby_state |
303 | Date: May 2008 | 316 | Date: May 2008 |
304 | KernelVersion: 2.6.26 | 317 | KernelVersion: 2.6.26 |
305 | Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> | 318 | Contact: Liam Girdwood <lrg@slimlogic.co.uk> |
306 | Description: | 319 | Description: |
307 | Each regulator directory will contain a field called | 320 | Each regulator directory will contain a field called |
308 | suspend_standby_state. This holds the regulator operating | 321 | suspend_standby_state. This holds the regulator operating |
diff --git a/Documentation/laptops/disk-shock-protection.txt b/Documentation/laptops/disk-shock-protection.txt new file mode 100644 index 000000000000..0e6ba2663834 --- /dev/null +++ b/Documentation/laptops/disk-shock-protection.txt | |||
@@ -0,0 +1,149 @@ | |||
1 | Hard disk shock protection | ||
2 | ========================== | ||
3 | |||
4 | Author: Elias Oltmanns <eo@nebensachen.de> | ||
5 | Last modified: 2008-10-03 | ||
6 | |||
7 | |||
8 | 0. Contents | ||
9 | ----------- | ||
10 | |||
11 | 1. Intro | ||
12 | 2. The interface | ||
13 | 3. References | ||
14 | 4. CREDITS | ||
15 | |||
16 | |||
17 | 1. Intro | ||
18 | -------- | ||
19 | |||
20 | ATA/ATAPI-7 specifies the IDLE IMMEDIATE command with unload feature. | ||
21 | Issuing this command should cause the drive to switch to idle mode and | ||
22 | unload disk heads. This feature is being used in modern laptops in | ||
23 | conjunction with accelerometers and appropriate software to implement | ||
24 | a shock protection facility. The idea is to stop all I/O operations on | ||
25 | the internal hard drive and park its heads on the ramp when critical | ||
26 | situations are anticipated. The desire to have such a feature | ||
27 | available on GNU/Linux systems has been the original motivation to | ||
28 | implement a generic disk head parking interface in the Linux kernel. | ||
29 | Please note, however, that other components have to be set up on your | ||
30 | system in order to get disk shock protection working (see | ||
31 | section 3. References below for pointers to more information about | ||
32 | that). | ||
33 | |||
34 | |||
35 | 2. The interface | ||
36 | ---------------- | ||
37 | |||
38 | For each ATA device, the kernel exports the file | ||
39 | block/*/device/unload_heads in sysfs (here assumed to be mounted under | ||
40 | /sys). Access to /sys/block/*/device/unload_heads is denied with | ||
41 | -EOPNOTSUPP if the device does not support the unload feature. | ||
42 | Otherwise, writing an integer value to this file will take the heads | ||
43 | of the respective drive off the platter and block all I/O operations | ||
44 | for the specified number of milliseconds. When the timeout expires and | ||
45 | no further disk head park request has been issued in the meantime, | ||
46 | normal operation will be resumed. The maximal value accepted for a | ||
47 | timeout is 30000 milliseconds. Exceeding this limit will return | ||
48 | -EOVERFLOW, but heads will be parked anyway and the timeout will be | ||
49 | set to 30 seconds. However, you can always change a timeout to any | ||
50 | value between 0 and 30000 by issuing a subsequent head park request | ||
51 | before the timeout of the previous one has expired. In particular, the | ||
52 | total timeout can exceed 30 seconds and, more importantly, you can | ||
53 | cancel a previously set timeout and resume normal operation | ||
54 | immediately by specifying a timeout of 0. Values below -2 are rejected | ||
55 | with -EINVAL (see below for the special meaning of -1 and -2). If the | ||
56 | timeout specified for a recent head park request has not yet expired, | ||
57 | reading from /sys/block/*/device/unload_heads will report the number | ||
58 | of milliseconds remaining until normal operation will be resumed; | ||
59 | otherwise, reading the unload_heads attribute will return 0. | ||
60 | |||
61 | For example, do the following in order to park the heads of drive | ||
62 | /dev/sda and stop all I/O operations for five seconds: | ||
63 | |||
64 | # echo 5000 > /sys/block/sda/device/unload_heads | ||
65 | |||
66 | A simple | ||
67 | |||
68 | # cat /sys/block/sda/device/unload_heads | ||
69 | |||
70 | will show you how many milliseconds are left before normal operation | ||
71 | will be resumed. | ||
72 | |||
73 | A word of caution: The fact that the interface operates on a basis of | ||
74 | milliseconds may raise expectations that cannot be satisfied in | ||
75 | reality. In fact, the ATA specs clearly state that the time for an | ||
76 | unload operation to complete is vendor specific. The hint in ATA-7 | ||
77 | that this will typically be within 500 milliseconds apparently has | ||
78 | been dropped in ATA-8. | ||
79 | |||
80 | There is a technical detail of this implementation that may cause some | ||
81 | confusion and should be discussed here. When a head park request has | ||
82 | been issued to a device successfully, all I/O operations on the | ||
83 | controller port this device is attached to will be deferred. That is | ||
84 | to say, any other device that may be connected to the same port will | ||
85 | be affected too. The only exception is that a subsequent head unload | ||
86 | request to that other device will be executed immediately. Further | ||
87 | operations on that port will be deferred until the timeout specified | ||
88 | for either device on the port has expired. As far as PATA (old style | ||
89 | IDE) configurations are concerned, there can only be two devices | ||
90 | attached to any single port. In SATA world we have port multipliers | ||
91 | which means that a user-issued head parking request to one device may | ||
92 | actually result in stopping I/O to a whole bunch of devices. However, | ||
93 | since this feature is supposed to be used on laptops and does not seem | ||
94 | to be very useful in any other environment, there will be mostly one | ||
95 | device per port. Even if the CD/DVD writer happens to be connected to | ||
96 | the same port as the hard drive, it generally *should* recover just | ||
97 | fine from the occasional buffer under-run incurred by a head park | ||
98 | request to the HD. Actually, when you are using an ide driver rather | ||
99 | than its libata counterpart (i.e. your disk is called /dev/hda | ||
100 | instead of /dev/sda), then parking the heads of one drive (drive X) | ||
101 | will generally not affect the mode of operation of another drive | ||
102 | (drive Y) on the same port as described above. It is only when a port | ||
103 | reset is required to recover from an exception on drive Y that further | ||
104 | I/O operations on that drive (and the reset itself) will be delayed | ||
105 | until drive X is no longer in the parked state. | ||
106 | |||
107 | Finally, there are some hard drives that only comply with an earlier | ||
108 | version of the ATA standard than ATA-7, but do support the unload | ||
109 | feature nonetheless. Unfortunately, there is no safe way Linux can | ||
110 | detect these devices, so you won't be able to write to the | ||
111 | unload_heads attribute. If you know that your device really does | ||
112 | support the unload feature (for instance, because the vendor of your | ||
113 | laptop or the hard drive itself told you so), then you can tell the | ||
114 | kernel to enable the usage of this feature for that drive by writing | ||
115 | the special value -1 to the unload_heads attribute: | ||
116 | |||
117 | # echo -1 > /sys/block/sda/device/unload_heads | ||
118 | |||
119 | will enable the feature for /dev/sda, and giving -2 instead of -1 will | ||
120 | disable it again. | ||
121 | |||
122 | |||
123 | 3. References | ||
124 | ------------- | ||
125 | |||
126 | There are several laptops from different vendors featuring shock | ||
127 | protection capabilities. As manufacturers have refused to support open | ||
128 | source development of the required software components so far, Linux | ||
129 | support for shock protection varies considerably between different | ||
130 | hardware implementations. Ideally, this section should contain a list | ||
131 | of pointers at different projects aiming at an implementation of shock | ||
132 | protection on different systems. Unfortunately, I only know of a | ||
133 | single project which, although still considered experimental, is fit | ||
134 | for use. Please feel free to add projects that have been the victims | ||
135 | of my ignorance. | ||
136 | |||
137 | - http://www.thinkwiki.org/wiki/HDAPS | ||
138 | See this page for information about Linux support of the hard disk | ||
139 | active protection system as implemented in IBM/Lenovo Thinkpads. | ||
140 | |||
141 | |||
142 | 4. CREDITS | ||
143 | ---------- | ||
144 | |||
145 | This implementation of disk head parking has been inspired by a patch | ||
146 | originally published by Jon Escombe <lists@dresco.co.uk>. My efforts | ||
147 | to develop an implementation of this feature that is fit to be merged | ||
148 | into mainline have been aided by various kernel developers, in | ||
149 | particular by Tejun Heo and Bartlomiej Zolnierkiewicz. | ||
diff --git a/Documentation/pcmcia/driver-changes.txt b/Documentation/pcmcia/driver-changes.txt index 96f155e68750..059934363caf 100644 --- a/Documentation/pcmcia/driver-changes.txt +++ b/Documentation/pcmcia/driver-changes.txt | |||
@@ -1,5 +1,11 @@ | |||
1 | This file details changes in 2.6 which affect PCMCIA card driver authors: | 1 | This file details changes in 2.6 which affect PCMCIA card driver authors: |
2 | 2 | ||
3 | * New configuration loop helper (as of 2.6.28) | ||
4 | By calling pcmcia_loop_config(), a driver can iterate over all available | ||
5 | configuration options. During a driver's probe() phase, one doesn't need | ||
6 | to use pcmcia_get_{first,next}_tuple, pcmcia_get_tuple_data and | ||
7 | pcmcia_parse_tuple directly in most if not all cases. | ||
8 | |||
3 | * New release helper (as of 2.6.17) | 9 | * New release helper (as of 2.6.17) |
4 | Instead of calling pcmcia_release_{configuration,io,irq,win}, all that's | 10 | Instead of calling pcmcia_release_{configuration,io,irq,win}, all that's |
5 | necessary now is calling pcmcia_disable_device. As there is no valid | 11 | necessary now is calling pcmcia_disable_device. As there is no valid |
diff --git a/Documentation/power/regulator/machine.txt b/Documentation/power/regulator/machine.txt index c9a35665cf70..ce3487d99abe 100644 --- a/Documentation/power/regulator/machine.txt +++ b/Documentation/power/regulator/machine.txt | |||
@@ -2,17 +2,8 @@ Regulator Machine Driver Interface | |||
2 | =================================== | 2 | =================================== |
3 | 3 | ||
4 | The regulator machine driver interface is intended for board/machine specific | 4 | The regulator machine driver interface is intended for board/machine specific |
5 | initialisation code to configure the regulator subsystem. Typical things that | 5 | initialisation code to configure the regulator subsystem. |
6 | machine drivers would do are :- | ||
7 | 6 | ||
8 | 1. Regulator -> Device mapping. | ||
9 | 2. Regulator supply configuration. | ||
10 | 3. Power Domain constraint setting. | ||
11 | |||
12 | |||
13 | |||
14 | 1. Regulator -> device mapping | ||
15 | ============================== | ||
16 | Consider the following machine :- | 7 | Consider the following machine :- |
17 | 8 | ||
18 | Regulator-1 -+-> Regulator-2 --> [Consumer A @ 1.8 - 2.0V] | 9 | Regulator-1 -+-> Regulator-2 --> [Consumer A @ 1.8 - 2.0V] |
@@ -21,81 +12,82 @@ Consider the following machine :- | |||
21 | 12 | ||
22 | The drivers for consumers A & B must be mapped to the correct regulator in | 13 | The drivers for consumers A & B must be mapped to the correct regulator in |
23 | order to control their power supply. This mapping can be achieved in machine | 14 | order to control their power supply. This mapping can be achieved in machine |
24 | initialisation code by calling :- | 15 | initialisation code by creating a struct regulator_consumer_supply for |
16 | each regulator. | ||
17 | |||
18 | struct regulator_consumer_supply { | ||
19 | struct device *dev; /* consumer */ | ||
20 | const char *supply; /* consumer supply - e.g. "vcc" */ | ||
21 | }; | ||
25 | 22 | ||
26 | int regulator_set_device_supply(const char *regulator, struct device *dev, | 23 | e.g. for the machine above |
27 | const char *supply); | ||
28 | 24 | ||
29 | and is shown with the following code :- | 25 | static struct regulator_consumer_supply regulator1_consumers[] = { |
26 | { | ||
27 | .dev = &platform_consumerB_device.dev, | ||
28 | .supply = "Vcc", | ||
29 | },}; | ||
30 | 30 | ||
31 | regulator_set_device_supply("Regulator-1", devB, "Vcc"); | 31 | static struct regulator_consumer_supply regulator2_consumers[] = { |
32 | regulator_set_device_supply("Regulator-2", devA, "Vcc"); | 32 | { |
33 | .dev = &platform_consumerA_device.dev, | ||
34 | .supply = "Vcc", | ||
35 | },}; | ||
33 | 36 | ||
34 | This maps Regulator-1 to the 'Vcc' supply for Consumer B and maps Regulator-2 | 37 | This maps Regulator-1 to the 'Vcc' supply for Consumer B and maps Regulator-2 |
35 | to the 'Vcc' supply for Consumer A. | 38 | to the 'Vcc' supply for Consumer A. |
36 | 39 | ||
37 | 40 | Constraints can now be registered by defining a struct regulator_init_data | |
38 | 2. Regulator supply configuration. | 41 | for each regulator power domain. This structure also maps the consumers |
39 | ================================== | 42 | to their supply regulator :- |
40 | Consider the following machine (again) :- | 43 | |
41 | 44 | static struct regulator_init_data regulator1_data = { | |
42 | Regulator-1 -+-> Regulator-2 --> [Consumer A @ 1.8 - 2.0V] | 45 | .constraints = { |
43 | | | 46 | .min_uV = 3300000, |
44 | +-> [Consumer B @ 3.3V] | 47 | .max_uV = 3300000, |
48 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | ||
49 | }, | ||
50 | .num_consumer_supplies = ARRAY_SIZE(regulator1_consumers), | ||
51 | .consumer_supplies = regulator1_consumers, | ||
52 | }; | ||
45 | 53 | ||
46 | Regulator-1 supplies power to Regulator-2. This relationship must be registered | 54 | Regulator-1 supplies power to Regulator-2. This relationship must be registered |
47 | with the core so that Regulator-1 is also enabled when Consumer A enables it's | 55 | with the core so that Regulator-1 is also enabled when Consumer A enables it's |
48 | supply (Regulator-2). | 56 | supply (Regulator-2). The supply regulator is set by the supply_regulator_dev |
49 | 57 | field below:- | |
50 | This relationship can be register with the core via :- | 58 | |
51 | 59 | static struct regulator_init_data regulator2_data = { | |
52 | int regulator_set_supply(const char *regulator, const char *regulator_supply); | 60 | .supply_regulator_dev = &platform_regulator1_device.dev, |
53 | 61 | .constraints = { | |
54 | In this example we would use the following code :- | 62 | .min_uV = 1800000, |
55 | 63 | .max_uV = 2000000, | |
56 | regulator_set_supply("Regulator-2", "Regulator-1"); | 64 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, |
57 | 65 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | |
58 | Relationships can be queried by calling :- | 66 | }, |
59 | 67 | .num_consumer_supplies = ARRAY_SIZE(regulator2_consumers), | |
60 | const char *regulator_get_supply(const char *regulator); | 68 | .consumer_supplies = regulator2_consumers, |
61 | |||
62 | |||
63 | 3. Power Domain constraint setting. | ||
64 | =================================== | ||
65 | Each power domain within a system has physical constraints on voltage and | ||
66 | current. This must be defined in software so that the power domain is always | ||
67 | operated within specifications. | ||
68 | |||
69 | Consider the following machine (again) :- | ||
70 | |||
71 | Regulator-1 -+-> Regulator-2 --> [Consumer A @ 1.8 - 2.0V] | ||
72 | | | ||
73 | +-> [Consumer B @ 3.3V] | ||
74 | |||
75 | This gives us two regulators and two power domains: | ||
76 | |||
77 | Domain 1: Regulator-2, Consumer B. | ||
78 | Domain 2: Consumer A. | ||
79 | |||
80 | Constraints can be registered by calling :- | ||
81 | |||
82 | int regulator_set_platform_constraints(const char *regulator, | ||
83 | struct regulation_constraints *constraints); | ||
84 | |||
85 | The example is defined as follows :- | ||
86 | |||
87 | struct regulation_constraints domain_1 = { | ||
88 | .min_uV = 3300000, | ||
89 | .max_uV = 3300000, | ||
90 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | ||
91 | }; | 69 | }; |
92 | 70 | ||
93 | struct regulation_constraints domain_2 = { | 71 | Finally the regulator devices must be registered in the usual manner. |
94 | .min_uV = 1800000, | 72 | |
95 | .max_uV = 2000000, | 73 | static struct platform_device regulator_devices[] = { |
96 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, | 74 | { |
97 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | 75 | .name = "regulator", |
76 | .id = DCDC_1, | ||
77 | .dev = { | ||
78 | .platform_data = ®ulator1_data, | ||
79 | }, | ||
80 | }, | ||
81 | { | ||
82 | .name = "regulator", | ||
83 | .id = DCDC_2, | ||
84 | .dev = { | ||
85 | .platform_data = ®ulator2_data, | ||
86 | }, | ||
87 | }, | ||
98 | }; | 88 | }; |
89 | /* register regulator 1 device */ | ||
90 | platform_device_register(&wm8350_regulator_devices[0]); | ||
99 | 91 | ||
100 | regulator_set_platform_constraints("Regulator-1", &domain_1); | 92 | /* register regulator 2 device */ |
101 | regulator_set_platform_constraints("Regulator-2", &domain_2); | 93 | platform_device_register(&wm8350_regulator_devices[1]); |
diff --git a/Documentation/power/regulator/regulator.txt b/Documentation/power/regulator/regulator.txt index a69050143592..4200accb9bba 100644 --- a/Documentation/power/regulator/regulator.txt +++ b/Documentation/power/regulator/regulator.txt | |||
@@ -10,11 +10,11 @@ Registration | |||
10 | 10 | ||
11 | Drivers can register a regulator by calling :- | 11 | Drivers can register a regulator by calling :- |
12 | 12 | ||
13 | struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc, | 13 | struct regulator_dev *regulator_register(struct device *dev, |
14 | void *reg_data); | 14 | struct regulator_desc *regulator_desc); |
15 | 15 | ||
16 | This will register the regulators capabilities and operations the regulator | 16 | This will register the regulators capabilities and operations to the regulator |
17 | core. The core does not touch reg_data (private to regulator driver). | 17 | core. |
18 | 18 | ||
19 | Regulators can be unregistered by calling :- | 19 | Regulators can be unregistered by calling :- |
20 | 20 | ||
diff --git a/Documentation/video4linux/CARDLIST.bttv b/Documentation/video4linux/CARDLIST.bttv index f32efb6fb12c..60ba66836038 100644 --- a/Documentation/video4linux/CARDLIST.bttv +++ b/Documentation/video4linux/CARDLIST.bttv | |||
@@ -150,3 +150,4 @@ | |||
150 | 149 -> Typhoon TV-Tuner PCI (50684) | 150 | 149 -> Typhoon TV-Tuner PCI (50684) |
151 | 150 -> Geovision GV-600 [008a:763c] | 151 | 150 -> Geovision GV-600 [008a:763c] |
152 | 151 -> Kozumi KTV-01C | 152 | 151 -> Kozumi KTV-01C |
153 | 152 -> Encore ENL TV-FM-2 [1000:1801] | ||
diff --git a/Documentation/video4linux/CARDLIST.cx23885 b/Documentation/video4linux/CARDLIST.cx23885 index f0e613ba55b8..64823ccacd69 100644 --- a/Documentation/video4linux/CARDLIST.cx23885 +++ b/Documentation/video4linux/CARDLIST.cx23885 | |||
@@ -9,3 +9,5 @@ | |||
9 | 8 -> Hauppauge WinTV-HVR1700 [0070:8101] | 9 | 8 -> Hauppauge WinTV-HVR1700 [0070:8101] |
10 | 9 -> Hauppauge WinTV-HVR1400 [0070:8010] | 10 | 9 -> Hauppauge WinTV-HVR1400 [0070:8010] |
11 | 10 -> DViCO FusionHDTV7 Dual Express [18ac:d618] | 11 | 10 -> DViCO FusionHDTV7 Dual Express [18ac:d618] |
12 | 11 -> DViCO FusionHDTV DVB-T Dual Express [18ac:db78] | ||
13 | 12 -> Leadtek Winfast PxDVR3200 H [107d:6681] | ||
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88 index 7cf5685d3645..a5227e308f4a 100644 --- a/Documentation/video4linux/CARDLIST.cx88 +++ b/Documentation/video4linux/CARDLIST.cx88 | |||
@@ -66,3 +66,11 @@ | |||
66 | 65 -> DViCO FusionHDTV 7 Gold [18ac:d610] | 66 | 65 -> DViCO FusionHDTV 7 Gold [18ac:d610] |
67 | 66 -> Prolink Pixelview MPEG 8000GT [1554:4935] | 67 | 66 -> Prolink Pixelview MPEG 8000GT [1554:4935] |
68 | 67 -> Kworld PlusTV HD PCI 120 (ATSC 120) [17de:08c1] | 68 | 67 -> Kworld PlusTV HD PCI 120 (ATSC 120) [17de:08c1] |
69 | 68 -> Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [0070:6900,0070:6904,0070:6902] | ||
70 | 69 -> Hauppauge WinTV-HVR4000(Lite) DVB-S/S2 [0070:6905,0070:6906] | ||
71 | 70 -> TeVii S460 DVB-S/S2 [d460:9022] | ||
72 | 71 -> Omicom SS4 DVB-S/S2 PCI [A044:2011] | ||
73 | 72 -> TBS 8920 DVB-S/S2 [8920:8888] | ||
74 | 73 -> TeVii S420 DVB-S [d420:9022] | ||
75 | 74 -> Prolink Pixelview Global Extreme [1554:4976] | ||
76 | 75 -> PROF 7300 DVB-S/S2 [B033:3033] | ||
diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx index 53449cb99b17..187cc48d0924 100644 --- a/Documentation/video4linux/CARDLIST.em28xx +++ b/Documentation/video4linux/CARDLIST.em28xx | |||
@@ -1,5 +1,5 @@ | |||
1 | 0 -> Unknown EM2800 video grabber (em2800) [eb1a:2800] | 1 | 0 -> Unknown EM2800 video grabber (em2800) [eb1a:2800] |
2 | 1 -> Unknown EM2750/28xx video grabber (em2820/em2840) [eb1a:2820,eb1a:2821,eb1a:2860,eb1a:2861,eb1a:2870,eb1a:2881,eb1a:2883] | 2 | 1 -> Unknown EM2750/28xx video grabber (em2820/em2840) [eb1a:2820,eb1a:2860,eb1a:2861,eb1a:2870,eb1a:2881,eb1a:2883] |
3 | 2 -> Terratec Cinergy 250 USB (em2820/em2840) [0ccd:0036] | 3 | 2 -> Terratec Cinergy 250 USB (em2820/em2840) [0ccd:0036] |
4 | 3 -> Pinnacle PCTV USB 2 (em2820/em2840) [2304:0208] | 4 | 3 -> Pinnacle PCTV USB 2 (em2820/em2840) [2304:0208] |
5 | 4 -> Hauppauge WinTV USB 2 (em2820/em2840) [2040:4200,2040:4201] | 5 | 4 -> Hauppauge WinTV USB 2 (em2820/em2840) [2040:4200,2040:4201] |
@@ -12,7 +12,7 @@ | |||
12 | 11 -> Terratec Hybrid XS (em2880) [0ccd:0042] | 12 | 11 -> Terratec Hybrid XS (em2880) [0ccd:0042] |
13 | 12 -> Kworld PVR TV 2800 RF (em2820/em2840) | 13 | 12 -> Kworld PVR TV 2800 RF (em2820/em2840) |
14 | 13 -> Terratec Prodigy XS (em2880) [0ccd:0047] | 14 | 13 -> Terratec Prodigy XS (em2880) [0ccd:0047] |
15 | 14 -> Pixelview Prolink PlayTV USB 2.0 (em2820/em2840) | 15 | 14 -> Pixelview Prolink PlayTV USB 2.0 (em2820/em2840) [eb1a:2821] |
16 | 15 -> V-Gear PocketTV (em2800) | 16 | 15 -> V-Gear PocketTV (em2800) |
17 | 16 -> Hauppauge WinTV HVR 950 (em2883) [2040:6513,2040:6517,2040:651b,2040:651f] | 17 | 16 -> Hauppauge WinTV HVR 950 (em2883) [2040:6513,2040:6517,2040:651b,2040:651f] |
18 | 17 -> Pinnacle PCTV HD Pro Stick (em2880) [2304:0227] | 18 | 17 -> Pinnacle PCTV HD Pro Stick (em2880) [2304:0227] |
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134 index 39868af9cf9f..dc67eef38ff9 100644 --- a/Documentation/video4linux/CARDLIST.saa7134 +++ b/Documentation/video4linux/CARDLIST.saa7134 | |||
@@ -76,7 +76,7 @@ | |||
76 | 75 -> AVerMedia AVerTVHD MCE A180 [1461:1044] | 76 | 75 -> AVerMedia AVerTVHD MCE A180 [1461:1044] |
77 | 76 -> SKNet MonsterTV Mobile [1131:4ee9] | 77 | 76 -> SKNet MonsterTV Mobile [1131:4ee9] |
78 | 77 -> Pinnacle PCTV 40i/50i/110i (saa7133) [11bd:002e] | 78 | 77 -> Pinnacle PCTV 40i/50i/110i (saa7133) [11bd:002e] |
79 | 78 -> ASUSTeK P7131 Dual [1043:4862,1043:4857] | 79 | 78 -> ASUSTeK P7131 Dual [1043:4862] |
80 | 79 -> Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B) | 80 | 79 -> Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B) |
81 | 80 -> ASUS Digimatrix TV [1043:0210] | 81 | 80 -> ASUS Digimatrix TV [1043:0210] |
82 | 81 -> Philips Tiger reference design [1131:2018] | 82 | 81 -> Philips Tiger reference design [1131:2018] |
@@ -145,3 +145,9 @@ | |||
145 | 144 -> Beholder BeholdTV M6 Extra [5ace:6193] | 145 | 144 -> Beholder BeholdTV M6 Extra [5ace:6193] |
146 | 145 -> AVerMedia MiniPCI DVB-T Hybrid M103 [1461:f636] | 146 | 145 -> AVerMedia MiniPCI DVB-T Hybrid M103 [1461:f636] |
147 | 146 -> ASUSTeK P7131 Analog | 147 | 146 -> ASUSTeK P7131 Analog |
148 | 147 -> Asus Tiger 3in1 [1043:4878] | ||
149 | 148 -> Encore ENLTV-FM v5.3 [1a7f:2008] | ||
150 | 149 -> Avermedia PCI pure analog (M135A) [1461:f11d] | ||
151 | 150 -> Zogis Real Angel 220 | ||
152 | 151 -> ADS Tech Instant HDTV [1421:0380] | ||
153 | 152 -> Asus Tiger Rev:1.00 [1043:4857] | ||
diff --git a/Documentation/video4linux/CARDLIST.tuner b/Documentation/video4linux/CARDLIST.tuner index 0e2394695bb8..30bbdda68d03 100644 --- a/Documentation/video4linux/CARDLIST.tuner +++ b/Documentation/video4linux/CARDLIST.tuner | |||
@@ -74,3 +74,4 @@ tuner=72 - Thomson FE6600 | |||
74 | tuner=73 - Samsung TCPG 6121P30A | 74 | tuner=73 - Samsung TCPG 6121P30A |
75 | tuner=75 - Philips TEA5761 FM Radio | 75 | tuner=75 - Philips TEA5761 FM Radio |
76 | tuner=76 - Xceive 5000 tuner | 76 | tuner=76 - Xceive 5000 tuner |
77 | tuner=77 - TCL tuner MF02GIP-5N-E | ||
diff --git a/Documentation/video4linux/gspca.txt b/Documentation/video4linux/gspca.txt index 9a3e4d797fa8..004818fab040 100644 --- a/Documentation/video4linux/gspca.txt +++ b/Documentation/video4linux/gspca.txt | |||
@@ -7,6 +7,7 @@ The modules are: | |||
7 | xxxx vend:prod | 7 | xxxx vend:prod |
8 | ---- | 8 | ---- |
9 | spca501 0000:0000 MystFromOri Unknow Camera | 9 | spca501 0000:0000 MystFromOri Unknow Camera |
10 | m5602 0402:5602 ALi Video Camera Controller | ||
10 | spca501 040a:0002 Kodak DVC-325 | 11 | spca501 040a:0002 Kodak DVC-325 |
11 | spca500 040a:0300 Kodak EZ200 | 12 | spca500 040a:0300 Kodak EZ200 |
12 | zc3xx 041e:041e Creative WebCam Live! | 13 | zc3xx 041e:041e Creative WebCam Live! |
@@ -42,6 +43,7 @@ zc3xx 0458:7007 Genius VideoCam V2 | |||
42 | zc3xx 0458:700c Genius VideoCam V3 | 43 | zc3xx 0458:700c Genius VideoCam V3 |
43 | zc3xx 0458:700f Genius VideoCam Web V2 | 44 | zc3xx 0458:700f Genius VideoCam Web V2 |
44 | sonixj 0458:7025 Genius Eye 311Q | 45 | sonixj 0458:7025 Genius Eye 311Q |
46 | sonixj 0458:702e Genius Slim 310 NB | ||
45 | sonixj 045e:00f5 MicroSoft VX3000 | 47 | sonixj 045e:00f5 MicroSoft VX3000 |
46 | sonixj 045e:00f7 MicroSoft VX1000 | 48 | sonixj 045e:00f7 MicroSoft VX1000 |
47 | ov519 045e:028c Micro$oft xbox cam | 49 | ov519 045e:028c Micro$oft xbox cam |
@@ -81,7 +83,7 @@ spca561 046d:092b Labtec Webcam Plus | |||
81 | spca561 046d:092c Logitech QC chat Elch2 | 83 | spca561 046d:092c Logitech QC chat Elch2 |
82 | spca561 046d:092d Logitech QC Elch2 | 84 | spca561 046d:092d Logitech QC Elch2 |
83 | spca561 046d:092e Logitech QC Elch2 | 85 | spca561 046d:092e Logitech QC Elch2 |
84 | spca561 046d:092f Logitech QC Elch2 | 86 | spca561 046d:092f Logitech QuickCam Express Plus |
85 | sunplus 046d:0960 Logitech ClickSmart 420 | 87 | sunplus 046d:0960 Logitech ClickSmart 420 |
86 | sunplus 0471:0322 Philips DMVC1300K | 88 | sunplus 0471:0322 Philips DMVC1300K |
87 | zc3xx 0471:0325 Philips SPC 200 NC | 89 | zc3xx 0471:0325 Philips SPC 200 NC |
@@ -96,6 +98,29 @@ sunplus 04a5:3003 Benq DC 1300 | |||
96 | sunplus 04a5:3008 Benq DC 1500 | 98 | sunplus 04a5:3008 Benq DC 1500 |
97 | sunplus 04a5:300a Benq DC 3410 | 99 | sunplus 04a5:300a Benq DC 3410 |
98 | spca500 04a5:300c Benq DC 1016 | 100 | spca500 04a5:300c Benq DC 1016 |
101 | finepix 04cb:0104 Fujifilm FinePix 4800 | ||
102 | finepix 04cb:0109 Fujifilm FinePix A202 | ||
103 | finepix 04cb:010b Fujifilm FinePix A203 | ||
104 | finepix 04cb:010f Fujifilm FinePix A204 | ||
105 | finepix 04cb:0111 Fujifilm FinePix A205 | ||
106 | finepix 04cb:0113 Fujifilm FinePix A210 | ||
107 | finepix 04cb:0115 Fujifilm FinePix A303 | ||
108 | finepix 04cb:0117 Fujifilm FinePix A310 | ||
109 | finepix 04cb:0119 Fujifilm FinePix F401 | ||
110 | finepix 04cb:011b Fujifilm FinePix F402 | ||
111 | finepix 04cb:011d Fujifilm FinePix F410 | ||
112 | finepix 04cb:0121 Fujifilm FinePix F601 | ||
113 | finepix 04cb:0123 Fujifilm FinePix F700 | ||
114 | finepix 04cb:0125 Fujifilm FinePix M603 | ||
115 | finepix 04cb:0127 Fujifilm FinePix S300 | ||
116 | finepix 04cb:0129 Fujifilm FinePix S304 | ||
117 | finepix 04cb:012b Fujifilm FinePix S500 | ||
118 | finepix 04cb:012d Fujifilm FinePix S602 | ||
119 | finepix 04cb:012f Fujifilm FinePix S700 | ||
120 | finepix 04cb:0131 Fujifilm FinePix unknown model | ||
121 | finepix 04cb:013b Fujifilm FinePix unknown model | ||
122 | finepix 04cb:013d Fujifilm FinePix unknown model | ||
123 | finepix 04cb:013f Fujifilm FinePix F420 | ||
99 | sunplus 04f1:1001 JVC GC A50 | 124 | sunplus 04f1:1001 JVC GC A50 |
100 | spca561 04fc:0561 Flexcam 100 | 125 | spca561 04fc:0561 Flexcam 100 |
101 | sunplus 04fc:500c Sunplus CA500C | 126 | sunplus 04fc:500c Sunplus CA500C |
@@ -181,6 +206,7 @@ pac207 093a:2468 PAC207 | |||
181 | pac207 093a:2470 Genius GF112 | 206 | pac207 093a:2470 Genius GF112 |
182 | pac207 093a:2471 Genius VideoCam ge111 | 207 | pac207 093a:2471 Genius VideoCam ge111 |
183 | pac207 093a:2472 Genius VideoCam ge110 | 208 | pac207 093a:2472 Genius VideoCam ge110 |
209 | pac207 093a:2476 Genius e-Messenger 112 | ||
184 | pac7311 093a:2600 PAC7311 Typhoon | 210 | pac7311 093a:2600 PAC7311 Typhoon |
185 | pac7311 093a:2601 Philips SPC 610 NC | 211 | pac7311 093a:2601 Philips SPC 610 NC |
186 | pac7311 093a:2603 PAC7312 | 212 | pac7311 093a:2603 PAC7312 |
diff --git a/Documentation/video4linux/m5602.txt b/Documentation/video4linux/m5602.txt new file mode 100644 index 000000000000..4450ab13f37b --- /dev/null +++ b/Documentation/video4linux/m5602.txt | |||
@@ -0,0 +1,12 @@ | |||
1 | This document describes the ALi m5602 bridge connected | ||
2 | to the following supported sensors: | ||
3 | OmniVision OV9650, | ||
4 | Samsung s5k83a, | ||
5 | Samsung s5k4aa, | ||
6 | Micron mt9m111, | ||
7 | Pixel plus PO1030 | ||
8 | |||
9 | This driver mimics the windows drivers, which have a braindead implementation sending bayer-encoded frames at VGA resolution. | ||
10 | In a perfect world we should be able to reprogram the m5602 and the connected sensor in hardware instead, supporting a range of resolutions and pixelformats | ||
11 | |||
12 | Anyway, have fun and please report any bugs to m560x-driver-devel@lists.sourceforge.net | ||
diff --git a/Documentation/video4linux/soc-camera.txt b/Documentation/video4linux/soc-camera.txt new file mode 100644 index 000000000000..178ef3c5e579 --- /dev/null +++ b/Documentation/video4linux/soc-camera.txt | |||
@@ -0,0 +1,120 @@ | |||
1 | Soc-Camera Subsystem | ||
2 | ==================== | ||
3 | |||
4 | Terminology | ||
5 | ----------- | ||
6 | |||
7 | The following terms are used in this document: | ||
8 | - camera / camera device / camera sensor - a video-camera sensor chip, capable | ||
9 | of connecting to a variety of systems and interfaces, typically uses i2c for | ||
10 | control and configuration, and a parallel or a serial bus for data. | ||
11 | - camera host - an interface, to which a camera is connected. Typically a | ||
12 | specialised interface, present on many SoCs, e.g., PXA27x and PXA3xx, SuperH, | ||
13 | AVR32, i.MX27, i.MX31. | ||
14 | - camera host bus - a connection between a camera host and a camera. Can be | ||
15 | parallel or serial, consists of data and control lines, e.g., clock, vertical | ||
16 | and horizontal synchronization signals. | ||
17 | |||
18 | Purpose of the soc-camera subsystem | ||
19 | ----------------------------------- | ||
20 | |||
21 | The soc-camera subsystem provides a unified API between camera host drivers and | ||
22 | camera sensor drivers. It implements a V4L2 interface to the user, currently | ||
23 | only the mmap method is supported. | ||
24 | |||
25 | This subsystem has been written to connect drivers for System-on-Chip (SoC) | ||
26 | video capture interfaces with drivers for CMOS camera sensor chips to enable | ||
27 | the reuse of sensor drivers with various hosts. The subsystem has been designed | ||
28 | to support multiple camera host interfaces and multiple cameras per interface, | ||
29 | although most applications have only one camera sensor. | ||
30 | |||
31 | Existing drivers | ||
32 | ---------------- | ||
33 | |||
34 | As of 2.6.27-rc4 there are two host drivers in the mainline: pxa_camera.c for | ||
35 | PXA27x SoCs and sh_mobile_ceu_camera.c for SuperH SoCs, and four sensor drivers: | ||
36 | mt9m001.c, mt9m111.c, mt9v022.c and a generic soc_camera_platform.c driver. This | ||
37 | list is not supposed to be updated, look for more examples in your tree. | ||
38 | |||
39 | Camera host API | ||
40 | --------------- | ||
41 | |||
42 | A host camera driver is registered using the | ||
43 | |||
44 | soc_camera_host_register(struct soc_camera_host *); | ||
45 | |||
46 | function. The host object can be initialized as follows: | ||
47 | |||
48 | static struct soc_camera_host pxa_soc_camera_host = { | ||
49 | .drv_name = PXA_CAM_DRV_NAME, | ||
50 | .ops = &pxa_soc_camera_host_ops, | ||
51 | }; | ||
52 | |||
53 | All camera host methods are passed in a struct soc_camera_host_ops: | ||
54 | |||
55 | static struct soc_camera_host_ops pxa_soc_camera_host_ops = { | ||
56 | .owner = THIS_MODULE, | ||
57 | .add = pxa_camera_add_device, | ||
58 | .remove = pxa_camera_remove_device, | ||
59 | .suspend = pxa_camera_suspend, | ||
60 | .resume = pxa_camera_resume, | ||
61 | .set_fmt_cap = pxa_camera_set_fmt_cap, | ||
62 | .try_fmt_cap = pxa_camera_try_fmt_cap, | ||
63 | .init_videobuf = pxa_camera_init_videobuf, | ||
64 | .reqbufs = pxa_camera_reqbufs, | ||
65 | .poll = pxa_camera_poll, | ||
66 | .querycap = pxa_camera_querycap, | ||
67 | .try_bus_param = pxa_camera_try_bus_param, | ||
68 | .set_bus_param = pxa_camera_set_bus_param, | ||
69 | }; | ||
70 | |||
71 | .add and .remove methods are called when a sensor is attached to or detached | ||
72 | from the host, apart from performing host-internal tasks they shall also call | ||
73 | sensor driver's .init and .release methods respectively. .suspend and .resume | ||
74 | methods implement host's power-management functionality and its their | ||
75 | responsibility to call respective sensor's methods. .try_bus_param and | ||
76 | .set_bus_param are used to negotiate physical connection parameters between the | ||
77 | host and the sensor. .init_videobuf is called by soc-camera core when a | ||
78 | video-device is opened, further video-buffer management is implemented completely | ||
79 | by the specific camera host driver. The rest of the methods are called from | ||
80 | respective V4L2 operations. | ||
81 | |||
82 | Camera API | ||
83 | ---------- | ||
84 | |||
85 | Sensor drivers can use struct soc_camera_link, typically provided by the | ||
86 | platform, and used to specify to which camera host bus the sensor is connected, | ||
87 | and arbitrarily provide platform .power and .reset methods for the camera. | ||
88 | soc_camera_device_register() and soc_camera_device_unregister() functions are | ||
89 | used to add a sensor driver to or remove one from the system. The registration | ||
90 | function takes a pointer to struct soc_camera_device as the only parameter. | ||
91 | This struct can be initialized as follows: | ||
92 | |||
93 | /* link to driver operations */ | ||
94 | icd->ops = &mt9m001_ops; | ||
95 | /* link to the underlying physical (e.g., i2c) device */ | ||
96 | icd->control = &client->dev; | ||
97 | /* window geometry */ | ||
98 | icd->x_min = 20; | ||
99 | icd->y_min = 12; | ||
100 | icd->x_current = 20; | ||
101 | icd->y_current = 12; | ||
102 | icd->width_min = 48; | ||
103 | icd->width_max = 1280; | ||
104 | icd->height_min = 32; | ||
105 | icd->height_max = 1024; | ||
106 | icd->y_skip_top = 1; | ||
107 | /* camera bus ID, typically obtained from platform data */ | ||
108 | icd->iface = icl->bus_id; | ||
109 | |||
110 | struct soc_camera_ops provides .probe and .remove methods, which are called by | ||
111 | the soc-camera core, when a camera is matched against or removed from a camera | ||
112 | host bus, .init, .release, .suspend, and .resume are called from the camera host | ||
113 | driver as discussed above. Other members of this struct provide respective V4L2 | ||
114 | functionality. | ||
115 | |||
116 | struct soc_camera_device also links to an array of struct soc_camera_data_format, | ||
117 | listing pixel formats, supported by the camera. | ||
118 | |||
119 | -- | ||
120 | Author: Guennadi Liakhovetski <g.liakhovetski@gmx.de> | ||