aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/00-INDEX2
-rw-r--r--Documentation/ABI/testing/sysfs-class-regulator55
-rw-r--r--Documentation/ABI/testing/sysfs-profiling13
-rw-r--r--Documentation/DocBook/procfs-guide.tmpl29
-rw-r--r--Documentation/DocBook/procfs_example.c20
-rw-r--r--Documentation/HOWTO4
-rw-r--r--Documentation/SAK.txt2
-rw-r--r--Documentation/SubmitChecklist3
-rw-r--r--Documentation/SubmittingDrivers2
-rw-r--r--Documentation/SubmittingPatches9
-rw-r--r--Documentation/blackfin/kgdb.txt155
-rw-r--r--Documentation/cris/README2
-rw-r--r--Documentation/dontdiff59
-rw-r--r--Documentation/fb/intelfb.txt1
-rw-r--r--Documentation/fb/uvesafb.txt4
-rw-r--r--Documentation/fb/viafb.modes870
-rw-r--r--Documentation/fb/viafb.txt214
-rw-r--r--Documentation/feature-removal-schedule.txt18
-rw-r--r--Documentation/filesystems/autofs4-mount-control.txt393
-rw-r--r--Documentation/filesystems/ext3.txt3
-rw-r--r--Documentation/filesystems/ext4.txt19
-rw-r--r--Documentation/filesystems/fiemap.txt228
-rw-r--r--Documentation/filesystems/nfsroot.txt2
-rw-r--r--Documentation/filesystems/ocfs2.txt6
-rw-r--r--Documentation/filesystems/proc.txt86
-rw-r--r--Documentation/filesystems/ramfs-rootfs-initramfs.txt2
-rw-r--r--Documentation/gpio.txt9
-rw-r--r--Documentation/i2c/busses/i2c-viapro8
-rw-r--r--Documentation/i2c/dev-interface110
-rw-r--r--Documentation/i2c/smbus-protocol4
-rw-r--r--Documentation/i2c/writing-clients4
-rw-r--r--Documentation/ia64/kvm.txt9
-rw-r--r--Documentation/kernel-parameters.txt32
-rw-r--r--Documentation/laptops/disk-shock-protection.txt149
-rw-r--r--Documentation/networking/cs89x0.txt4
-rw-r--r--Documentation/networking/vortex.txt9
-rw-r--r--Documentation/pcmcia/driver-changes.txt6
-rw-r--r--Documentation/power/regulator/machine.txt140
-rw-r--r--Documentation/power/regulator/regulator.txt8
-rw-r--r--Documentation/power/s2ram.txt18
-rw-r--r--Documentation/powerpc/00-INDEX4
-rw-r--r--Documentation/powerpc/dts-bindings/fsl/83xx-512x-pci.txt40
-rw-r--r--Documentation/powerpc/dts-bindings/fsl/8xxx_gpio.txt40
-rw-r--r--Documentation/powerpc/dts-bindings/fsl/dma.txt13
-rw-r--r--Documentation/powerpc/dts-bindings/fsl/ssi.txt23
-rw-r--r--Documentation/powerpc/ppc_htab.txt118
-rw-r--r--Documentation/powerpc/smp.txt34
-rw-r--r--Documentation/scsi/ChangeLog.megaraid6
-rw-r--r--Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl3
-rw-r--r--Documentation/sparc/sbus_drivers.txt309
-rw-r--r--Documentation/spi/pxa2xx34
-rw-r--r--Documentation/timers/00-INDEX10
-rw-r--r--Documentation/timers/hpet.txt (renamed from Documentation/hpet.txt)43
-rw-r--r--Documentation/video4linux/CARDLIST.bttv1
-rw-r--r--Documentation/video4linux/CARDLIST.cx238852
-rw-r--r--Documentation/video4linux/CARDLIST.cx888
-rw-r--r--Documentation/video4linux/CARDLIST.em28xx4
-rw-r--r--Documentation/video4linux/CARDLIST.saa71348
-rw-r--r--Documentation/video4linux/CARDLIST.tuner1
-rw-r--r--Documentation/video4linux/gspca.txt28
-rw-r--r--Documentation/video4linux/m5602.txt12
-rw-r--r--Documentation/video4linux/soc-camera.txt120
-rw-r--r--Documentation/w1/00-INDEX2
-rw-r--r--Documentation/w1/masters/ds249052
-rw-r--r--Documentation/w1/slaves/00-INDEX4
-rw-r--r--Documentation/w1/slaves/w1_therm41
-rw-r--r--Documentation/w1/w1.generic11
67 files changed, 2745 insertions, 937 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX
index 73060819ed99..438277800103 100644
--- a/Documentation/00-INDEX
+++ b/Documentation/00-INDEX
@@ -159,8 +159,6 @@ hayes-esp.txt
159 - info on using the Hayes ESP serial driver. 159 - info on using the Hayes ESP serial driver.
160highuid.txt 160highuid.txt
161 - notes on the change from 16 bit to 32 bit user/group IDs. 161 - notes on the change from 16 bit to 32 bit user/group IDs.
162hpet.txt
163 - High Precision Event Timer Driver for Linux.
164timers/ 162timers/
165 - info on the timer related topics 163 - info on the timer related topics
166hw_random.txt 164hw_random.txt
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 @@
1What: /sys/class/regulator/.../state 1What: /sys/class/regulator/.../state
2Date: April 2008 2Date: April 2008
3KernelVersion: 2.6.26 3KernelVersion: 2.6.26
4Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 4Contact: Liam Girdwood <lrg@slimlogic.co.uk>
5Description: 5Description:
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:
27What: /sys/class/regulator/.../type 27What: /sys/class/regulator/.../type
28Date: April 2008 28Date: April 2008
29KernelVersion: 2.6.26 29KernelVersion: 2.6.26
30Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 30Contact: Liam Girdwood <lrg@slimlogic.co.uk>
31Description: 31Description:
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:
51What: /sys/class/regulator/.../microvolts 51What: /sys/class/regulator/.../microvolts
52Date: April 2008 52Date: April 2008
53KernelVersion: 2.6.26 53KernelVersion: 2.6.26
54Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 54Contact: Liam Girdwood <lrg@slimlogic.co.uk>
55Description: 55Description:
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:
65What: /sys/class/regulator/.../microamps 65What: /sys/class/regulator/.../microamps
66Date: April 2008 66Date: April 2008
67KernelVersion: 2.6.26 67KernelVersion: 2.6.26
68Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 68Contact: Liam Girdwood <lrg@slimlogic.co.uk>
69Description: 69Description:
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:
79What: /sys/class/regulator/.../opmode 79What: /sys/class/regulator/.../opmode
80Date: April 2008 80Date: April 2008
81KernelVersion: 2.6.26 81KernelVersion: 2.6.26
82Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 82Contact: Liam Girdwood <lrg@slimlogic.co.uk>
83Description: 83Description:
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:
102What: /sys/class/regulator/.../min_microvolts 102What: /sys/class/regulator/.../min_microvolts
103Date: April 2008 103Date: April 2008
104KernelVersion: 2.6.26 104KernelVersion: 2.6.26
105Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 105Contact: Liam Girdwood <lrg@slimlogic.co.uk>
106Description: 106Description:
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:
116What: /sys/class/regulator/.../max_microvolts 116What: /sys/class/regulator/.../max_microvolts
117Date: April 2008 117Date: April 2008
118KernelVersion: 2.6.26 118KernelVersion: 2.6.26
119Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 119Contact: Liam Girdwood <lrg@slimlogic.co.uk>
120Description: 120Description:
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:
130What: /sys/class/regulator/.../min_microamps 130What: /sys/class/regulator/.../min_microamps
131Date: April 2008 131Date: April 2008
132KernelVersion: 2.6.26 132KernelVersion: 2.6.26
133Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 133Contact: Liam Girdwood <lrg@slimlogic.co.uk>
134Description: 134Description:
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:
145What: /sys/class/regulator/.../max_microamps 145What: /sys/class/regulator/.../max_microamps
146Date: April 2008 146Date: April 2008
147KernelVersion: 2.6.26 147KernelVersion: 2.6.26
148Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 148Contact: Liam Girdwood <lrg@slimlogic.co.uk>
149Description: 149Description:
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
160What: /sys/class/regulator/.../name
161Date: October 2008
162KernelVersion: 2.6.28
163Contact: Liam Girdwood <lrg@slimlogic.co.uk>
164Description:
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
160What: /sys/class/regulator/.../num_users 173What: /sys/class/regulator/.../num_users
161Date: April 2008 174Date: April 2008
162KernelVersion: 2.6.26 175KernelVersion: 2.6.26
163Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 176Contact: Liam Girdwood <lrg@slimlogic.co.uk>
164Description: 177Description:
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:
170What: /sys/class/regulator/.../requested_microamps 183What: /sys/class/regulator/.../requested_microamps
171Date: April 2008 184Date: April 2008
172KernelVersion: 2.6.26 185KernelVersion: 2.6.26
173Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 186Contact: Liam Girdwood <lrg@slimlogic.co.uk>
174Description: 187Description:
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:
181What: /sys/class/regulator/.../parent 194What: /sys/class/regulator/.../parent
182Date: April 2008 195Date: April 2008
183KernelVersion: 2.6.26 196KernelVersion: 2.6.26
184Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 197Contact: Liam Girdwood <lrg@slimlogic.co.uk>
185Description: 198Description:
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:
189What: /sys/class/regulator/.../suspend_mem_microvolts 202What: /sys/class/regulator/.../suspend_mem_microvolts
190Date: May 2008 203Date: May 2008
191KernelVersion: 2.6.26 204KernelVersion: 2.6.26
192Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 205Contact: Liam Girdwood <lrg@slimlogic.co.uk>
193Description: 206Description:
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:
203What: /sys/class/regulator/.../suspend_disk_microvolts 216What: /sys/class/regulator/.../suspend_disk_microvolts
204Date: May 2008 217Date: May 2008
205KernelVersion: 2.6.26 218KernelVersion: 2.6.26
206Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 219Contact: Liam Girdwood <lrg@slimlogic.co.uk>
207Description: 220Description:
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:
217What: /sys/class/regulator/.../suspend_standby_microvolts 230What: /sys/class/regulator/.../suspend_standby_microvolts
218Date: May 2008 231Date: May 2008
219KernelVersion: 2.6.26 232KernelVersion: 2.6.26
220Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 233Contact: Liam Girdwood <lrg@slimlogic.co.uk>
221Description: 234Description:
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:
231What: /sys/class/regulator/.../suspend_mem_mode 244What: /sys/class/regulator/.../suspend_mem_mode
232Date: May 2008 245Date: May 2008
233KernelVersion: 2.6.26 246KernelVersion: 2.6.26
234Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 247Contact: Liam Girdwood <lrg@slimlogic.co.uk>
235Description: 248Description:
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:
245What: /sys/class/regulator/.../suspend_disk_mode 258What: /sys/class/regulator/.../suspend_disk_mode
246Date: May 2008 259Date: May 2008
247KernelVersion: 2.6.26 260KernelVersion: 2.6.26
248Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 261Contact: Liam Girdwood <lrg@slimlogic.co.uk>
249Description: 262Description:
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:
258What: /sys/class/regulator/.../suspend_standby_mode 271What: /sys/class/regulator/.../suspend_standby_mode
259Date: May 2008 272Date: May 2008
260KernelVersion: 2.6.26 273KernelVersion: 2.6.26
261Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 274Contact: Liam Girdwood <lrg@slimlogic.co.uk>
262Description: 275Description:
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:
272What: /sys/class/regulator/.../suspend_mem_state 285What: /sys/class/regulator/.../suspend_mem_state
273Date: May 2008 286Date: May 2008
274KernelVersion: 2.6.26 287KernelVersion: 2.6.26
275Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 288Contact: Liam Girdwood <lrg@slimlogic.co.uk>
276Description: 289Description:
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:
287What: /sys/class/regulator/.../suspend_disk_state 300What: /sys/class/regulator/.../suspend_disk_state
288Date: May 2008 301Date: May 2008
289KernelVersion: 2.6.26 302KernelVersion: 2.6.26
290Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 303Contact: Liam Girdwood <lrg@slimlogic.co.uk>
291Description: 304Description:
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:
302What: /sys/class/regulator/.../suspend_standby_state 315What: /sys/class/regulator/.../suspend_standby_state
303Date: May 2008 316Date: May 2008
304KernelVersion: 2.6.26 317KernelVersion: 2.6.26
305Contact: Liam Girdwood <lg@opensource.wolfsonmicro.com> 318Contact: Liam Girdwood <lrg@slimlogic.co.uk>
306Description: 319Description:
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/ABI/testing/sysfs-profiling b/Documentation/ABI/testing/sysfs-profiling
new file mode 100644
index 000000000000..b02d8b8c173a
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-profiling
@@ -0,0 +1,13 @@
1What: /sys/kernel/profile
2Date: September 2008
3Contact: Dave Hansen <dave@linux.vnet.ibm.com>
4Description:
5 /sys/kernel/profile is the runtime equivalent
6 of the boot-time profile= option.
7
8 You can get the same effect running:
9
10 echo 2 > /sys/kernel/profile
11
12 as you would by issuing profile=2 on the boot
13 command line.
diff --git a/Documentation/DocBook/procfs-guide.tmpl b/Documentation/DocBook/procfs-guide.tmpl
index 8a5dc6e021ff..9eba4b7af73d 100644
--- a/Documentation/DocBook/procfs-guide.tmpl
+++ b/Documentation/DocBook/procfs-guide.tmpl
@@ -14,17 +14,20 @@
14 <othername>(J.A.K.)</othername> 14 <othername>(J.A.K.)</othername>
15 <surname>Mouw</surname> 15 <surname>Mouw</surname>
16 <affiliation> 16 <affiliation>
17 <orgname>Delft University of Technology</orgname>
18 <orgdiv>Faculty of Information Technology and Systems</orgdiv>
19 <address> 17 <address>
20 <email>J.A.K.Mouw@its.tudelft.nl</email> 18 <email>mouw@nl.linux.org</email>
21 <pob>PO BOX 5031</pob>
22 <postcode>2600 GA</postcode>
23 <city>Delft</city>
24 <country>The Netherlands</country>
25 </address> 19 </address>
26 </affiliation> 20 </affiliation>
27 </author> 21 </author>
22 <othercredit>
23 <contrib>
24 This software and documentation were written while working on the
25 LART computing board
26 (<ulink url="http://www.lartmaker.nl/">http://www.lartmaker.nl/</ulink>),
27 which was sponsored by the Delt University of Technology projects
28 Mobile Multi-media Communications and Ubiquitous Communications.
29 </contrib>
30 </othercredit>
28 </authorgroup> 31 </authorgroup>
29 32
30 <revhistory> 33 <revhistory>
@@ -109,18 +112,6 @@
109 </para> 112 </para>
110 113
111 <para> 114 <para>
112 This documentation was written while working on the LART
113 computing board (<ulink
114 url="http://www.lart.tudelft.nl/">http://www.lart.tudelft.nl/</ulink>),
115 which is sponsored by the Mobile Multi-media Communications
116 (<ulink
117 url="http://www.mmc.tudelft.nl/">http://www.mmc.tudelft.nl/</ulink>)
118 and Ubiquitous Communications (<ulink
119 url="http://www.ubicom.tudelft.nl/">http://www.ubicom.tudelft.nl/</ulink>)
120 projects.
121 </para>
122
123 <para>
124 Erik 115 Erik
125 </para> 116 </para>
126 </preface> 117 </preface>
diff --git a/Documentation/DocBook/procfs_example.c b/Documentation/DocBook/procfs_example.c
index 2f3de0fb8365..8c6396e4bf31 100644
--- a/Documentation/DocBook/procfs_example.c
+++ b/Documentation/DocBook/procfs_example.c
@@ -1,28 +1,16 @@
1/* 1/*
2 * procfs_example.c: an example proc interface 2 * procfs_example.c: an example proc interface
3 * 3 *
4 * Copyright (C) 2001, Erik Mouw (J.A.K.Mouw@its.tudelft.nl) 4 * Copyright (C) 2001, Erik Mouw (mouw@nl.linux.org)
5 * 5 *
6 * This file accompanies the procfs-guide in the Linux kernel 6 * This file accompanies the procfs-guide in the Linux kernel
7 * source. Its main use is to demonstrate the concepts and 7 * source. Its main use is to demonstrate the concepts and
8 * functions described in the guide. 8 * functions described in the guide.
9 * 9 *
10 * This software has been developed while working on the LART 10 * This software has been developed while working on the LART
11 * computing board (http://www.lart.tudelft.nl/), which is 11 * computing board (http://www.lartmaker.nl), which was sponsored
12 * sponsored by the Mobile Multi-media Communications 12 * by the Delt University of Technology projects Mobile Multi-media
13 * (http://www.mmc.tudelft.nl/) and Ubiquitous Communications 13 * Communications and Ubiquitous Communications.
14 * (http://www.ubicom.tudelft.nl/) projects.
15 *
16 * The author can be reached at:
17 *
18 * Erik Mouw
19 * Information and Communication Theory Group
20 * Faculty of Information Technology and Systems
21 * Delft University of Technology
22 * P.O. Box 5031
23 * 2600 GA Delft
24 * The Netherlands
25 *
26 * 14 *
27 * This program is free software; you can redistribute 15 * This program is free software; you can redistribute
28 * it and/or modify it under the terms of the GNU General 16 * it and/or modify it under the terms of the GNU General
diff --git a/Documentation/HOWTO b/Documentation/HOWTO
index 48a3955f05fc..8495fc970391 100644
--- a/Documentation/HOWTO
+++ b/Documentation/HOWTO
@@ -112,7 +112,7 @@ required reading:
112 112
113 Other excellent descriptions of how to create patches properly are: 113 Other excellent descriptions of how to create patches properly are:
114 "The Perfect Patch" 114 "The Perfect Patch"
115 http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt 115 http://userweb.kernel.org/~akpm/stuff/tpp.txt
116 "Linux kernel patch submission format" 116 "Linux kernel patch submission format"
117 http://linux.yyz.us/patch-format.html 117 http://linux.yyz.us/patch-format.html
118 118
@@ -620,7 +620,7 @@ all time. It should describe the patch completely, containing:
620For more details on what this should all look like, please see the 620For more details on what this should all look like, please see the
621ChangeLog section of the document: 621ChangeLog section of the document:
622 "The Perfect Patch" 622 "The Perfect Patch"
623 http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt 623 http://userweb.kernel.org/~akpm/stuff/tpp.txt
624 624
625 625
626 626
diff --git a/Documentation/SAK.txt b/Documentation/SAK.txt
index b9019ca872ea..74be14679ed8 100644
--- a/Documentation/SAK.txt
+++ b/Documentation/SAK.txt
@@ -1,5 +1,5 @@
1Linux 2.4.2 Secure Attention Key (SAK) handling 1Linux 2.4.2 Secure Attention Key (SAK) handling
218 March 2001, Andrew Morton <akpm@osdl.org> 218 March 2001, Andrew Morton
3 3
4An operating system's Secure Attention Key is a security tool which is 4An operating system's Secure Attention Key is a security tool which is
5provided as protection against trojan password capturing programs. It 5provided as protection against trojan password capturing programs. It
diff --git a/Documentation/SubmitChecklist b/Documentation/SubmitChecklist
index 21f0795af20f..ac5e0b2f1097 100644
--- a/Documentation/SubmitChecklist
+++ b/Documentation/SubmitChecklist
@@ -85,3 +85,6 @@ kernel patches.
8523: Tested after it has been merged into the -mm patchset to make sure 8523: Tested after it has been merged into the -mm patchset to make sure
86 that it still works with all of the other queued patches and various 86 that it still works with all of the other queued patches and various
87 changes in the VM, VFS, and other subsystems. 87 changes in the VM, VFS, and other subsystems.
88
8924: All memory barriers {e.g., barrier(), rmb(), wmb()} need a comment in the
90 source code that explains the logic of what they are doing and why.
diff --git a/Documentation/SubmittingDrivers b/Documentation/SubmittingDrivers
index 24f2eb40cae5..99e72a81fa2f 100644
--- a/Documentation/SubmittingDrivers
+++ b/Documentation/SubmittingDrivers
@@ -41,7 +41,7 @@ Linux 2.4:
41Linux 2.6: 41Linux 2.6:
42 The same rules apply as 2.4 except that you should follow linux-kernel 42 The same rules apply as 2.4 except that you should follow linux-kernel
43 to track changes in API's. The final contact point for Linux 2.6 43 to track changes in API's. The final contact point for Linux 2.6
44 submissions is Andrew Morton <akpm@osdl.org>. 44 submissions is Andrew Morton.
45 45
46What Criteria Determine Acceptance 46What Criteria Determine Acceptance
47---------------------------------- 47----------------------------------
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index f79ad9ff6031..7b67f3bf8dd3 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -77,7 +77,7 @@ Quilt:
77http://savannah.nongnu.org/projects/quilt 77http://savannah.nongnu.org/projects/quilt
78 78
79Andrew Morton's patch scripts: 79Andrew Morton's patch scripts:
80http://www.zip.com.au/~akpm/linux/patches/ 80http://userweb.kernel.org/~akpm/stuff/patch-scripts.tar.gz
81Instead of these scripts, quilt is the recommended patch management 81Instead of these scripts, quilt is the recommended patch management
82tool (see above). 82tool (see above).
83 83
@@ -653,7 +653,7 @@ SECTION 3 - REFERENCES
653---------------------- 653----------------------
654 654
655Andrew Morton, "The perfect patch" (tpp). 655Andrew Morton, "The perfect patch" (tpp).
656 <http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt> 656 <http://userweb.kernel.org/~akpm/stuff/tpp.txt>
657 657
658Jeff Garzik, "Linux kernel patch submission format". 658Jeff Garzik, "Linux kernel patch submission format".
659 <http://linux.yyz.us/patch-format.html> 659 <http://linux.yyz.us/patch-format.html>
@@ -672,4 +672,9 @@ Kernel Documentation/CodingStyle:
672 672
673Linus Torvalds's mail on the canonical patch format: 673Linus Torvalds's mail on the canonical patch format:
674 <http://lkml.org/lkml/2005/4/7/183> 674 <http://lkml.org/lkml/2005/4/7/183>
675
676Andi Kleen, "On submitting kernel patches"
677 Some strategies to get difficult or controversal changes in.
678 http://halobates.de/on-submitting-patches.pdf
679
675-- 680--
diff --git a/Documentation/blackfin/kgdb.txt b/Documentation/blackfin/kgdb.txt
deleted file mode 100644
index 84f6a484ae9a..000000000000
--- a/Documentation/blackfin/kgdb.txt
+++ /dev/null
@@ -1,155 +0,0 @@
1 A Simple Guide to Configure KGDB
2
3 Sonic Zhang <sonic.zhang@analog.com>
4 Aug. 24th 2006
5
6
7This KGDB patch enables the kernel developer to do source level debugging on
8the kernel for the Blackfin architecture. The debugging works over either the
9ethernet interface or one of the uarts. Both software breakpoints and
10hardware breakpoints are supported in this version.
11http://docs.blackfin.uclinux.org/doku.php?id=kgdb
12
13
142 known issues:
151. This bug:
16 http://blackfin.uclinux.org/tracker/index.php?func=detail&aid=544&group_id=18&atid=145
17 The GDB client for Blackfin uClinux causes incorrect values of local
18 variables to be displayed when the user breaks the running of kernel in GDB.
192. Because of a hardware bug in Blackfin 533 v1.0.3:
20 05000067 - Watchpoints (Hardware Breakpoints) are not supported
21 Hardware breakpoints cannot be set properly.
22
23
24Debug over Ethernet:
25
261. Compile and install the cross platform version of gdb for blackfin, which
27 can be found at $(BINROOT)/bfin-elf-gdb.
28
292. Apply this patch to the 2.6.x kernel. Select the menuconfig option under
30 "Kernel hacking" -> "Kernel debugging" -> "KGDB: kernel debug with remote gdb".
31 With this selected, option "Full Symbolic/Source Debugging support" and
32 "Compile the kernel with frame pointers" are also selected.
33
343. Select option "KGDB: connect over (Ethernet)". Add "kgdboe=@target-IP/,@host-IP/" to
35 the option "Compiled-in Kernel Boot Parameter" under "Kernel hacking".
36
374. Connect minicom to the serial port and boot the kernel image.
38
395. Configure the IP "/> ifconfig eth0 target-IP"
40
416. Start GDB client "bfin-elf-gdb vmlinux".
42
437. Connect to the target "(gdb) target remote udp:target-IP:6443".
44
458. Set software breakpoint "(gdb) break sys_open".
46
479. Continue "(gdb) c".
48
4910. Run ls in the target console "/> ls".
50
5111. Breakpoint hits. "Breakpoint 1: sys_open(..."
52
5312. Display local variables and function paramters.
54 (*) This operation gives wrong results, see known issue 1.
55
5613. Single stepping "(gdb) si".
57
5814. Remove breakpoint 1. "(gdb) del 1"
59
6015. Set hardware breakpoint "(gdb) hbreak sys_open".
61
6216. Continue "(gdb) c".
63
6417. Run ls in the target console "/> ls".
65
6618. Hardware breakpoint hits. "Breakpoint 1: sys_open(...".
67 (*) This hardware breakpoint will not be hit, see known issue 2.
68
6919. Continue "(gdb) c".
70
7120. Interrupt the target in GDB "Ctrl+C".
72
7321. Detach from the target "(gdb) detach".
74
7522. Exit GDB "(gdb) quit".
76
77
78Debug over the UART:
79
801. Compile and install the cross platform version of gdb for blackfin, which
81 can be found at $(BINROOT)/bfin-elf-gdb.
82
832. Apply this patch to the 2.6.x kernel. Select the menuconfig option under
84 "Kernel hacking" -> "Kernel debugging" -> "KGDB: kernel debug with remote gdb".
85 With this selected, option "Full Symbolic/Source Debugging support" and
86 "Compile the kernel with frame pointers" are also selected.
87
883. Select option "KGDB: connect over (UART)". Set "KGDB: UART port number" to be
89 a different one from the console. Don't forget to change the mode of
90 blackfin serial driver to PIO. Otherwise kgdb works incorrectly on UART.
91
924. If you want connect to kgdb when the kernel boots, enable
93 "KGDB: Wait for gdb connection early"
94
955. Compile kernel.
96
976. Connect minicom to the serial port of the console and boot the kernel image.
98
997. Start GDB client "bfin-elf-gdb vmlinux".
100
1018. Set the baud rate in GDB "(gdb) set remotebaud 57600".
102
1039. Connect to the target on the second serial port "(gdb) target remote /dev/ttyS1".
104
10510. Set software breakpoint "(gdb) break sys_open".
106
10711. Continue "(gdb) c".
108
10912. Run ls in the target console "/> ls".
110
11113. A breakpoint is hit. "Breakpoint 1: sys_open(..."
112
11314. All other operations are the same as that in KGDB over Ethernet.
114
115
116Debug over the same UART as console:
117
1181. Compile and install the cross platform version of gdb for blackfin, which
119 can be found at $(BINROOT)/bfin-elf-gdb.
120
1212. Apply this patch to the 2.6.x kernel. Select the menuconfig option under
122 "Kernel hacking" -> "Kernel debugging" -> "KGDB: kernel debug with remote gdb".
123 With this selected, option "Full Symbolic/Source Debugging support" and
124 "Compile the kernel with frame pointers" are also selected.
125
1263. Select option "KGDB: connect over UART". Set "KGDB: UART port number" to console.
127 Don't forget to change the mode of blackfin serial driver to PIO.
128 Otherwise kgdb works incorrectly on UART.
129
1304. If you want connect to kgdb when the kernel boots, enable
131 "KGDB: Wait for gdb connection early"
132
1335. Connect minicom to the serial port and boot the kernel image.
134
1356. (Optional) Ask target to wait for gdb connection by entering Ctrl+A. In minicom, you should enter Ctrl+A+A.
136
1377. Start GDB client "bfin-elf-gdb vmlinux".
138
1398. Set the baud rate in GDB "(gdb) set remotebaud 57600".
140
1419. Connect to the target "(gdb) target remote /dev/ttyS0".
142
14310. Set software breakpoint "(gdb) break sys_open".
144
14511. Continue "(gdb) c". Then enter Ctrl+C twice to stop GDB connection.
146
14712. Run ls in the target console "/> ls". Dummy string can be seen on the console.
148
14913. Then connect the gdb to target again. "(gdb) target remote /dev/ttyS0".
150 Now you will find a breakpoint is hit. "Breakpoint 1: sys_open(..."
151
15214. All other operations are the same as that in KGDB over Ethernet. The only
153 difference is that after continue command in GDB, please stop GDB
154 connection by 2 "Ctrl+C"s and connect again after breakpoints are hit or
155 Ctrl+A is entered.
diff --git a/Documentation/cris/README b/Documentation/cris/README
index 795a1dabe6c7..d9b086869a60 100644
--- a/Documentation/cris/README
+++ b/Documentation/cris/README
@@ -27,7 +27,7 @@ operating system.
27The ETRAX 100LX chip 27The ETRAX 100LX chip
28-------------------- 28--------------------
29 29
30For reference, plase see the press-release: 30For reference, please see the press-release:
31 31
32http://www.axis.com/news/us/001101_etrax.htm 32http://www.axis.com/news/us/001101_etrax.htm
33 33
diff --git a/Documentation/dontdiff b/Documentation/dontdiff
index 27809357da58..1e89a51ea49b 100644
--- a/Documentation/dontdiff
+++ b/Documentation/dontdiff
@@ -2,11 +2,13 @@
2*.aux 2*.aux
3*.bin 3*.bin
4*.cpio 4*.cpio
5*.css 5*.csp
6*.dsp
6*.dvi 7*.dvi
8*.elf
7*.eps 9*.eps
8*.fw.gen.S
9*.fw 10*.fw
11*.gen.S
10*.gif 12*.gif
11*.grep 13*.grep
12*.grp 14*.grp
@@ -30,6 +32,7 @@
30*.s 32*.s
31*.sgml 33*.sgml
32*.so 34*.so
35*.so.dbg
33*.symtypes 36*.symtypes
34*.tab.c 37*.tab.c
35*.tab.h 38*.tab.h
@@ -38,24 +41,17 @@
38*.xml 41*.xml
39*_MODULES 42*_MODULES
40*_vga16.c 43*_vga16.c
41*cscope*
42*~ 44*~
43*.9 45*.9
44*.9.gz 46*.9.gz
45.* 47.*
46.cscope
47.gitignore
48.mailmap
49.mm 48.mm
5053c700_d.h 4953c700_d.h
5153c8xx_d.h*
52COPYING
53CREDITS
54CVS 50CVS
55ChangeSet 51ChangeSet
56Image 52Image
57Kerntypes 53Kerntypes
58MODS.txt 54Module.markers
59Module.symvers 55Module.symvers
60PENDING 56PENDING
61SCCS 57SCCS
@@ -73,7 +69,9 @@ autoconf.h*
73bbootsect 69bbootsect
74bin2c 70bin2c
75binkernel.spec 71binkernel.spec
72binoffset
76bootsect 73bootsect
74bounds.h
77bsetup 75bsetup
78btfixupprep 76btfixupprep
79build 77build
@@ -89,39 +87,36 @@ config_data.h*
89config_data.gz* 87config_data.gz*
90conmakehash 88conmakehash
91consolemap_deftbl.c* 89consolemap_deftbl.c*
90cpustr.h
92crc32table.h* 91crc32table.h*
93cscope.* 92cscope.*
94defkeymap.c* 93defkeymap.c
95devlist.h* 94devlist.h*
96docproc 95docproc
97dummy_sym.c*
98elf2ecoff 96elf2ecoff
99elfconfig.h* 97elfconfig.h*
100filelist
101fixdep 98fixdep
102fore200e_mkfirm 99fore200e_mkfirm
103fore200e_pca_fw.c* 100fore200e_pca_fw.c*
104gconf 101gconf
105gen-devlist 102gen-devlist
106gen-kdb_cmds.c*
107gen_crc32table 103gen_crc32table
108gen_init_cpio 104gen_init_cpio
109genksyms 105genksyms
110gentbl
111*_gray256.c 106*_gray256.c
107ihex2fw
112ikconfig.h* 108ikconfig.h*
113initramfs_data.cpio 109initramfs_data.cpio
114initramfs_data.cpio.gz 110initramfs_data.cpio.gz
115initramfs_list 111initramfs_list
116kallsyms 112kallsyms
117kconfig 113kconfig
118kconfig.tk 114keywords.c
119keywords.c*
120ksym.c* 115ksym.c*
121ksym.h* 116ksym.h*
122kxgettext 117kxgettext
123lkc_defs.h 118lkc_defs.h
124lex.c* 119lex.c
125lex.*.c 120lex.*.c
126logo_*.c 121logo_*.c
127logo_*_clut224.c 122logo_*_clut224.c
@@ -130,7 +125,6 @@ lxdialog
130mach-types 125mach-types
131mach-types.h 126mach-types.h
132machtypes.h 127machtypes.h
133make_times_h
134map 128map
135maui_boot.h 129maui_boot.h
136mconf 130mconf
@@ -138,6 +132,7 @@ miboot*
138mk_elfconfig 132mk_elfconfig
139mkboot 133mkboot
140mkbugboot 134mkbugboot
135mkcpustr
141mkdep 136mkdep
142mkprep 137mkprep
143mktables 138mktables
@@ -145,11 +140,12 @@ mktree
145modpost 140modpost
146modules.order 141modules.order
147modversions.h* 142modversions.h*
143ncscope.*
148offset.h 144offset.h
149offsets.h 145offsets.h
150oui.c* 146oui.c*
151parse.c* 147parse.c
152parse.h* 148parse.h
153patches* 149patches*
154pca200e.bin 150pca200e.bin
155pca200e_ecd.bin2 151pca200e_ecd.bin2
@@ -157,7 +153,7 @@ piggy.gz
157piggyback 153piggyback
158pnmtologo 154pnmtologo
159ppc_defs.h* 155ppc_defs.h*
160promcon_tbl.c* 156promcon_tbl.c
161pss_boot.h 157pss_boot.h
162qconf 158qconf
163raid6altivec*.c 159raid6altivec*.c
@@ -168,27 +164,38 @@ series
168setup 164setup
169setup.bin 165setup.bin
170setup.elf 166setup.elf
171sim710_d.h*
172sImage 167sImage
173sm_tbl* 168sm_tbl*
174split-include 169split-include
170syscalltab.h
175tags 171tags
176tftpboot.img 172tftpboot.img
177timeconst.h 173timeconst.h
178times.h* 174times.h*
179tkparse
180trix_boot.h 175trix_boot.h
181utsrelease.h* 176utsrelease.h*
177vdso-syms.lds
182vdso.lds 178vdso.lds
179vdso32-int80-syms.lds
180vdso32-syms.lds
181vdso32-syscall-syms.lds
182vdso32-sysenter-syms.lds
183vdso32.lds
184vdso32.so.dbg
185vdso64.lds
186vdso64.so.dbg
183version.h* 187version.h*
184vmlinux 188vmlinux
185vmlinux-* 189vmlinux-*
186vmlinux.aout 190vmlinux.aout
187vmlinux*.lds* 191vmlinux.lds
188vmlinux*.scr
189vsyscall.lds 192vsyscall.lds
193vsyscall_32.lds
190wanxlfw.inc 194wanxlfw.inc
191uImage 195uImage
192unifdef 196unifdef
197wakeup.bin
198wakeup.elf
199wakeup.lds
193zImage* 200zImage*
194zconf.hash.c 201zconf.hash.c
diff --git a/Documentation/fb/intelfb.txt b/Documentation/fb/intelfb.txt
index 27a3160650a4..dd9e944ea628 100644
--- a/Documentation/fb/intelfb.txt
+++ b/Documentation/fb/intelfb.txt
@@ -14,6 +14,7 @@ graphics devices. These would include:
14 Intel 915GM 14 Intel 915GM
15 Intel 945G 15 Intel 945G
16 Intel 945GM 16 Intel 945GM
17 Intel 945GME
17 Intel 965G 18 Intel 965G
18 Intel 965GM 19 Intel 965GM
19 20
diff --git a/Documentation/fb/uvesafb.txt b/Documentation/fb/uvesafb.txt
index bcfc233a0080..7ac3c4078ff9 100644
--- a/Documentation/fb/uvesafb.txt
+++ b/Documentation/fb/uvesafb.txt
@@ -52,7 +52,7 @@ are either given on the kernel command line or as module parameters, e.g.:
52 52
53 video=uvesafb:1024x768-32,mtrr:3,ywrap (compiled into the kernel) 53 video=uvesafb:1024x768-32,mtrr:3,ywrap (compiled into the kernel)
54 54
55 # modprobe uvesafb mode=1024x768-32 mtrr=3 scroll=ywrap (module) 55 # modprobe uvesafb mode_option=1024x768-32 mtrr=3 scroll=ywrap (module)
56 56
57Accepted options: 57Accepted options:
58 58
@@ -105,7 +105,7 @@ vtotal:n
105<mode> The mode you want to set, in the standard modedb format. Refer to 105<mode> The mode you want to set, in the standard modedb format. Refer to
106 modedb.txt for a detailed description. When uvesafb is compiled as 106 modedb.txt for a detailed description. When uvesafb is compiled as
107 a module, the mode string should be provided as a value of the 107 a module, the mode string should be provided as a value of the
108 'mode' option. 108 'mode_option' option.
109 109
110vbemode:x 110vbemode:x
111 Force the use of VBE mode x. The mode will only be set if it's 111 Force the use of VBE mode x. The mode will only be set if it's
diff --git a/Documentation/fb/viafb.modes b/Documentation/fb/viafb.modes
new file mode 100644
index 000000000000..02e5b487f00e
--- /dev/null
+++ b/Documentation/fb/viafb.modes
@@ -0,0 +1,870 @@
1#
2#
3# These data are based on the CRTC parameters in
4#
5# VIA Integration Graphics Chip
6# (C) 2004 VIA Technologies Inc.
7#
8
9#
10# 640x480, 60 Hz, Non-Interlaced (25.175 MHz dotclock)
11#
12# Horizontal Vertical
13# Resolution 640 480
14# Scan Frequency 31.469 kHz 59.94 Hz
15# Sync Width 3.813 us 0.064 ms
16# 12 chars 2 lines
17# Front Porch 0.636 us 0.318 ms
18# 2 chars 10 lines
19# Back Porch 1.907 us 1.048 ms
20# 6 chars 33 lines
21# Active Time 25.422 us 15.253 ms
22# 80 chars 480 lines
23# Blank Time 6.356 us 1.430 ms
24# 20 chars 45 lines
25# Polarity negative negative
26#
27
28mode "640x480-60"
29# D: 25.175 MHz, H: 31.469 kHz, V: 59.94 Hz
30 geometry 640 480 640 480 32
31 timings 39722 48 16 33 10 96 2 endmode mode "480x640-60"
32# D: 24.823 MHz, H: 39.780 kHz, V: 60.00 Hz
33 geometry 480 640 480 640 32 timings 39722 72 24 19 1 48 3 endmode
34#
35# 640x480, 75 Hz, Non-Interlaced (31.50 MHz dotclock)
36#
37# Horizontal Vertical
38# Resolution 640 480
39# Scan Frequency 37.500 kHz 75.00 Hz
40# Sync Width 2.032 us 0.080 ms
41# 8 chars 3 lines
42# Front Porch 0.508 us 0.027 ms
43# 2 chars 1 lines
44# Back Porch 3.810 us 0.427 ms
45# 15 chars 16 lines
46# Active Time 20.317 us 12.800 ms
47# 80 chars 480 lines
48# Blank Time 6.349 us 0.533 ms
49# 25 chars 20 lines
50# Polarity negative negative
51#
52 mode "640x480-75"
53# D: 31.50 MHz, H: 37.500 kHz, V: 75.00 Hz
54 geometry 640 480 640 480 32 timings 31747 120 16 16 1 64 3 endmode
55#
56# 640x480, 85 Hz, Non-Interlaced (36.000 MHz dotclock)
57#
58# Horizontal Vertical
59# Resolution 640 480
60# Scan Frequency 43.269 kHz 85.00 Hz
61# Sync Width 1.556 us 0.069 ms
62# 7 chars 3 lines
63# Front Porch 1.556 us 0.023 ms
64# 7 chars 1 lines
65# Back Porch 2.222 us 0.578 ms
66# 10 chars 25 lines
67# Active Time 17.778 us 11.093 ms
68# 80 chars 480 lines
69# Blank Time 5.333 us 0.670 ms
70# 24 chars 29 lines
71# Polarity negative negative
72#
73 mode "640x480-85"
74# D: 36.000 MHz, H: 43.269 kHz, V: 85.00 Hz
75 geometry 640 480 640 480 32 timings 27777 80 56 25 1 56 3 endmode
76#
77# 640x480, 100 Hz, Non-Interlaced (43.163 MHz dotclock)
78#
79# Horizontal Vertical
80# Resolution 640 480
81# Scan Frequency 50.900 kHz 100.00 Hz
82# Sync Width 1.483 us 0.058 ms
83# 8 chars 3 lines
84# Front Porch 0.927 us 0.019 ms
85# 5 chars 1 lines
86# Back Porch 2.409 us 0.475 ms
87# 13 chars 25 lines
88# Active Time 14.827 us 9.430 ms
89# 80 chars 480 lines
90# Blank Time 4.819 us 0.570 ms
91# 26 chars 29 lines
92# Polarity positive positive
93#
94 mode "640x480-100"
95# D: 43.163 MHz, H: 50.900 kHz, V: 100.00 Hz
96 geometry 640 480 640 480 32 timings 23168 104 40 25 1 64 3 endmode
97#
98# 640x480, 120 Hz, Non-Interlaced (52.406 MHz dotclock)
99#
100# Horizontal Vertical
101# Resolution 640 480
102# Scan Frequency 61.800 kHz 120.00 Hz
103# Sync Width 1.221 us 0.048 ms
104# 8 chars 3 lines
105# Front Porch 0.763 us 0.016 ms
106# 5 chars 1 lines
107# Back Porch 1.984 us 0.496 ms
108# 13 chars 31 lines
109# Active Time 12.212 us 7.767 ms
110# 80 chars 480 lines
111# Blank Time 3.969 us 0.566 ms
112# 26 chars 35 lines
113# Polarity positive positive
114#
115 mode "640x480-120"
116# D: 52.406 MHz, H: 61.800 kHz, V: 120.00 Hz
117 geometry 640 480 640 480 32 timings 19081 104 40 31 1 64 3 endmode
118#
119# 720x480, 60 Hz, Non-Interlaced (26.880 MHz dotclock)
120#
121# Horizontal Vertical
122# Resolution 720 480
123# Scan Frequency 30.000 kHz 60.241 Hz
124# Sync Width 2.679 us 0.099 ms
125# 9 chars 3 lines
126# Front Porch 0.595 us 0.033 ms
127# 2 chars 1 lines
128# Back Porch 3.274 us 0.462 ms
129# 11 chars 14 lines
130# Active Time 26.786 us 16.000 ms
131# 90 chars 480 lines
132# Blank Time 6.548 us 0.600 ms
133# 22 chars 18 lines
134# Polarity positive positive
135#
136 mode "720x480-60"
137# D: 26.880 MHz, H: 30.000 kHz, V: 60.24 Hz
138 geometry 720 480 720 480 32 timings 37202 88 16 14 1 72 3 endmode
139#
140# 800x480, 60 Hz, Non-Interlaced (29.581 MHz dotclock)
141#
142# Horizontal Vertical
143# Resolution 800 480
144# Scan Frequency 29.892 kHz 60.00 Hz
145# Sync Width 2.704 us 100.604 us
146# 10 chars 3 lines
147# Front Porch 0.541 us 33.535 us
148# 2 chars 1 lines
149# Back Porch 3.245 us 435.949 us
150# 12 chars 13 lines
151# Active Time 27.044 us 16.097 ms
152# 100 chars 480 lines
153# Blank Time 6.491 us 0.570 ms
154# 24 chars 17 lines
155# Polarity positive positive
156#
157 mode "800x480-60"
158# D: 29.500 MHz, H: 29.738 kHz, V: 60.00 Hz
159 geometry 800 480 800 480 32 timings 33805 96 24 10 3 72 7 endmode
160#
161# 720x576, 60 Hz, Non-Interlaced (32.668 MHz dotclock)
162#
163# Horizontal Vertical
164# Resolution 720 576
165# Scan Frequency 35.820 kHz 60.00 Hz
166# Sync Width 2.204 us 0.083 ms
167# 9 chars 3 lines
168# Front Porch 0.735 us 0.027 ms
169# 3 chars 1 lines
170# Back Porch 2.939 us 0.459 ms
171# 12 chars 17 lines
172# Active Time 22.040 us 16.080 ms
173# 90 chars 476 lines
174# Blank Time 5.877 us 0.586 ms
175# 24 chars 21 lines
176# Polarity positive positive
177#
178 mode "720x576-60"
179# D: 32.668 MHz, H: 35.820 kHz, V: 60.00 Hz
180 geometry 720 576 720 576 32 timings 30611 96 24 17 1 72 3 endmode
181#
182# 800x600, 60 Hz, Non-Interlaced (40.00 MHz dotclock)
183#
184# Horizontal Vertical
185# Resolution 800 600
186# Scan Frequency 37.879 kHz 60.32 Hz
187# Sync Width 3.200 us 0.106 ms
188# 16 chars 4 lines
189# Front Porch 1.000 us 0.026 ms
190# 5 chars 1 lines
191# Back Porch 2.200 us 0.607 ms
192# 11 chars 23 lines
193# Active Time 20.000 us 15.840 ms
194# 100 chars 600 lines
195# Blank Time 6.400 us 0.739 ms
196# 32 chars 28 lines
197# Polarity positive positive
198#
199 mode "800x600-60"
200# D: 40.00 MHz, H: 37.879 kHz, V: 60.32 Hz
201 geometry 800 600 800 600 32
202 timings 25000 88 40 23 1 128 4 hsync high vsync high endmode
203#
204# 800x600, 75 Hz, Non-Interlaced (49.50 MHz dotclock)
205#
206# Horizontal Vertical
207# Resolution 800 600
208# Scan Frequency 46.875 kHz 75.00 Hz
209# Sync Width 1.616 us 0.064 ms
210# 10 chars 3 lines
211# Front Porch 0.323 us 0.021 ms
212# 2 chars 1 lines
213# Back Porch 3.232 us 0.448 ms
214# 20 chars 21 lines
215# Active Time 16.162 us 12.800 ms
216# 100 chars 600 lines
217# Blank Time 5.172 us 0.533 ms
218# 32 chars 25 lines
219# Polarity positive positive
220#
221 mode "800x600-75"
222# D: 49.50 MHz, H: 46.875 kHz, V: 75.00 Hz
223 geometry 800 600 800 600 32
224 timings 20203 160 16 21 1 80 3 hsync high vsync high endmode
225#
226# 800x600, 85 Hz, Non-Interlaced (56.25 MHz dotclock)
227#
228# Horizontal Vertical
229# Resolution 800 600
230# Scan Frequency 53.674 kHz 85.061 Hz
231# Sync Width 1.138 us 0.056 ms
232# 8 chars 3 lines
233# Front Porch 0.569 us 0.019 ms
234# 4 chars 1 lines
235# Back Porch 2.702 us 0.503 ms
236# 19 chars 27 lines
237# Active Time 14.222 us 11.179 ms
238# 100 chars 600 lines
239# Blank Time 4.409 us 0.578 ms
240# 31 chars 31 lines
241# Polarity positive positive
242#
243 mode "800x600-85"
244# D: 56.25 MHz, H: 53.674 kHz, V: 85.061 Hz
245 geometry 800 600 800 600 32
246 timings 17777 152 32 27 1 64 3 hsync high vsync high endmode
247#
248# 800x600, 100 Hz, Non-Interlaced (67.50 MHz dotclock)
249#
250# Horizontal Vertical
251# Resolution 800 600
252# Scan Frequency 62.500 kHz 100.00 Hz
253# Sync Width 0.948 us 0.064 ms
254# 8 chars 4 lines
255# Front Porch 0.000 us 0.112 ms
256# 0 chars 7 lines
257# Back Porch 3.200 us 0.224 ms
258# 27 chars 14 lines
259# Active Time 11.852 us 9.600 ms
260# 100 chars 600 lines
261# Blank Time 4.148 us 0.400 ms
262# 35 chars 25 lines
263# Polarity positive positive
264#
265 mode "800x600-100"
266# D: 67.50 MHz, H: 62.500 kHz, V: 100.00 Hz
267 geometry 800 600 800 600 32
268 timings 14667 216 0 14 7 64 4 hsync high vsync high endmode
269#
270# 800x600, 120 Hz, Non-Interlaced (83.950 MHz dotclock)
271#
272# Horizontal Vertical
273# Resolution 800 600
274# Scan Frequency 77.160 kHz 120.00 Hz
275# Sync Width 1.048 us 0.039 ms
276# 11 chars 3 lines
277# Front Porch 0.667 us 0.013 ms
278# 7 chars 1 lines
279# Back Porch 1.715 us 0.507 ms
280# 18 chars 39 lines
281# Active Time 9.529 us 7.776 ms
282# 100 chars 600 lines
283# Blank Time 3.431 us 0.557 ms
284# 36 chars 43 lines
285# Polarity positive positive
286#
287 mode "800x600-120"
288# D: 83.950 MHz, H: 77.160 kHz, V: 120.00 Hz
289 geometry 800 600 800 600 32
290 timings 11912 144 56 39 1 88 3 hsync high vsync high endmode
291#
292# 848x480, 60 Hz, Non-Interlaced (31.490 MHz dotclock)
293#
294# Horizontal Vertical
295# Resolution 848 480
296# Scan Frequency 29.820 kHz 60.00 Hz
297# Sync Width 2.795 us 0.099 ms
298# 11 chars 3 lines
299# Front Porch 0.508 us 0.033 ms
300# 2 chars 1 lines
301# Back Porch 3.303 us 0.429 ms
302# 13 chars 13 lines
303# Active Time 26.929 us 16.097 ms
304# 106 chars 480 lines
305# Blank Time 6.605 us 0.570 ms
306# 26 chars 17 lines
307# Polarity positive positive
308#
309 mode "848x480-60"
310# D: 31.500 MHz, H: 29.830 kHz, V: 60.00 Hz
311 geometry 848 480 848 480 32
312 timings 31746 104 24 12 3 80 5 hsync high vsync high endmode
313#
314# 856x480, 60 Hz, Non-Interlaced (31.728 MHz dotclock)
315#
316# Horizontal Vertical
317# Resolution 856 480
318# Scan Frequency 29.820 kHz 60.00 Hz
319# Sync Width 2.774 us 0.099 ms
320# 11 chars 3 lines
321# Front Porch 0.504 us 0.033 ms
322# 2 chars 1 lines
323# Back Porch 3.728 us 0.429 ms
324# 13 chars 13 lines
325# Active Time 26.979 us 16.097 ms
326# 107 chars 480 lines
327# Blank Time 6.556 us 0.570 ms
328# 26 chars 17 lines
329# Polarity positive positive
330#
331 mode "856x480-60"
332# D: 31.728 MHz, H: 29.820 kHz, V: 60.00 Hz
333 geometry 856 480 856 480 32
334 timings 31518 104 16 13 1 88 3
335 hsync high vsync high endmode mode "960x600-60"
336# D: 45.250 MHz, H: 37.212 kHz, V: 60.00 Hz
337 geometry 960 600 960 600 32 timings 22099 128 32 15 3 96 6 endmode
338#
339# 1000x600, 60 Hz, Non-Interlaced (48.068 MHz dotclock)
340#
341# Horizontal Vertical
342# Resolution 1000 600
343# Scan Frequency 37.320 kHz 60.00 Hz
344# Sync Width 2.164 us 0.080 ms
345# 13 chars 3 lines
346# Front Porch 0.832 us 0.027 ms
347# 5 chars 1 lines
348# Back Porch 2.996 us 0.483 ms
349# 18 chars 18 lines
350# Active Time 20.804 us 16.077 ms
351# 125 chars 600 lines
352# Blank Time 5.991 us 0.589 ms
353# 36 chars 22 lines
354# Polarity negative positive
355#
356 mode "1000x600-60"
357# D: 48.068 MHz, H: 37.320 kHz, V: 60.00 Hz
358 geometry 1000 600 1000 600 32
359 timings 20834 144 40 18 1 104 3 endmode mode "1024x576-60"
360# D: 46.996 MHz, H: 35.820 kHz, V: 60.00 Hz
361 geometry 1024 576 1024 576 32
362 timings 21278 144 40 17 1 104 3 endmode mode "1024x600-60"
363# D: 48.964 MHz, H: 37.320 kHz, V: 60.00 Hz
364 geometry 1024 600 1024 600 32
365 timings 20461 144 40 18 1 104 3 endmode mode "1088x612-60"
366# D: 52.952 MHz, H: 38.040 kHz, V: 60.00 Hz
367 geometry 1088 612 1088 612 32 timings 18877 152 48 16 3 104 5 endmode
368#
369# 1024x512, 60 Hz, Non-Interlaced (41.291 MHz dotclock)
370#
371# Horizontal Vertical
372# Resolution 1024 512
373# Scan Frequency 31.860 kHz 60.00 Hz
374# Sync Width 2.519 us 0.094 ms
375# 13 chars 3 lines
376# Front Porch 0.775 us 0.031 ms
377# 4 chars 1 lines
378# Back Porch 3.294 us 0.465 ms
379# 17 chars 15 lines
380# Active Time 24.800 us 16.070 ms
381# 128 chars 512 lines
382# Blank Time 6.587 us 0.596 ms
383# 34 chars 19 lines
384# Polarity positive positive
385#
386 mode "1024x512-60"
387# D: 41.291 MHz, H: 31.860 kHz, V: 60.00 Hz
388 geometry 1024 512 1024 512 32
389 timings 24218 126 32 15 1 104 3 hsync high vsync high endmode
390#
391# 1024x600, 60 Hz, Non-Interlaced (48.875 MHz dotclock)
392#
393# Horizontal Vertical
394# Resolution 1024 768
395# Scan Frequency 37.252 kHz 60.00 Hz
396# Sync Width 2.128 us 80.532us
397# 13 chars 3 lines
398# Front Porch 0.818 us 26.844 us
399# 5 chars 1 lines
400# Back Porch 2.946 us 483.192 us
401# 18 chars 18 lines
402# Active Time 20.951 us 16.697 ms
403# 128 chars 622 lines
404# Blank Time 5.893 us 0.591 ms
405# 36 chars 22 lines
406# Polarity negative positive
407#
408#mode "1024x600-60"
409# # D: 48.875 MHz, H: 37.252 kHz, V: 60.00 Hz
410# geometry 1024 600 1024 600 32
411# timings 20460 144 40 18 1 104 3
412# endmode
413#
414# 1024x768, 60 Hz, Non-Interlaced (65.00 MHz dotclock)
415#
416# Horizontal Vertical
417# Resolution 1024 768
418# Scan Frequency 48.363 kHz 60.00 Hz
419# Sync Width 2.092 us 0.124 ms
420# 17 chars 6 lines
421# Front Porch 0.369 us 0.062 ms
422# 3 chars 3 lines
423# Back Porch 2.462 us 0.601 ms
424# 20 chars 29 lines
425# Active Time 15.754 us 15.880 ms
426# 128 chars 768 lines
427# Blank Time 4.923 us 0.786 ms
428# 40 chars 38 lines
429# Polarity negative negative
430#
431 mode "1024x768-60"
432# D: 65.00 MHz, H: 48.363 kHz, V: 60.00 Hz
433 geometry 1024 768 1024 768 32 timings 15385 160 24 29 3 136 6 endmode
434#
435# 1024x768, 75 Hz, Non-Interlaced (78.75 MHz dotclock)
436#
437# Horizontal Vertical
438# Resolution 1024 768
439# Scan Frequency 60.023 kHz 75.03 Hz
440# Sync Width 1.219 us 0.050 ms
441# 12 chars 3 lines
442# Front Porch 0.203 us 0.017 ms
443# 2 chars 1 lines
444# Back Porch 2.235 us 0.466 ms
445# 22 chars 28 lines
446# Active Time 13.003 us 12.795 ms
447# 128 chars 768 lines
448# Blank Time 3.657 us 0.533 ms
449# 36 chars 32 lines
450# Polarity positive positive
451#
452 mode "1024x768-75"
453# D: 78.75 MHz, H: 60.023 kHz, V: 75.03 Hz
454 geometry 1024 768 1024 768 32
455 timings 12699 176 16 28 1 96 3 hsync high vsync high endmode
456#
457# 1024x768, 85 Hz, Non-Interlaced (94.50 MHz dotclock)
458#
459# Horizontal Vertical
460# Resolution 1024 768
461# Scan Frequency 68.677 kHz 85.00 Hz
462# Sync Width 1.016 us 0.044 ms
463# 12 chars 3 lines
464# Front Porch 0.508 us 0.015 ms
465# 6 chars 1 lines
466# Back Porch 2.201 us 0.524 ms
467# 26 chars 36 lines
468# Active Time 10.836 us 11.183 ms
469# 128 chars 768 lines
470# Blank Time 3.725 us 0.582 ms
471# 44 chars 40 lines
472# Polarity positive positive
473#
474 mode "1024x768-85"
475# D: 94.50 MHz, H: 68.677 kHz, V: 85.00 Hz
476 geometry 1024 768 1024 768 32
477 timings 10582 208 48 36 1 96 3 hsync high vsync high endmode
478#
479# 1024x768, 100 Hz, Non-Interlaced (110.0 MHz dotclock)
480#
481# Horizontal Vertical
482# Resolution 1024 768
483# Scan Frequency 79.023 kHz 99.78 Hz
484# Sync Width 0.800 us 0.101 ms
485# 11 chars 8 lines
486# Front Porch 0.000 us 0.000 ms
487# 0 chars 0 lines
488# Back Porch 2.545 us 0.202 ms
489# 35 chars 16 lines
490# Active Time 9.309 us 9.719 ms
491# 128 chars 768 lines
492# Blank Time 3.345 us 0.304 ms
493# 46 chars 24 lines
494# Polarity negative negative
495#
496 mode "1024x768-100"
497# D: 113.3 MHz, H: 79.023 kHz, V: 99.78 Hz
498 geometry 1024 768 1024 768 32
499 timings 8825 280 0 16 0 88 8 endmode mode "1152x720-60"
500# D: 66.750 MHz, H: 44.859 kHz, V: 60.00 Hz
501 geometry 1152 720 1152 720 32 timings 14981 168 56 19 3 112 6 endmode
502#
503# 1152x864, 75 Hz, Non-Interlaced (110.0 MHz dotclock)
504#
505# Horizontal Vertical
506# Resolution 1152 864
507# Scan Frequency 75.137 kHz 74.99 Hz
508# Sync Width 1.309 us 0.106 ms
509# 18 chars 8 lines
510# Front Porch 0.245 us 0.599 ms
511# 3 chars 45 lines
512# Back Porch 1.282 us 1.132 ms
513# 18 chars 85 lines
514# Active Time 10.473 us 11.499 ms
515# 144 chars 864 lines
516# Blank Time 2.836 us 1.837 ms
517# 39 chars 138 lines
518# Polarity positive positive
519#
520 mode "1152x864-75"
521# D: 110.0 MHz, H: 75.137 kHz, V: 74.99 Hz
522 geometry 1152 864 1152 864 32
523 timings 9259 144 24 85 45 144 8
524 hsync high vsync high endmode mode "1200x720-60"
525# D: 70.184 MHz, H: 44.760 kHz, V: 60.00 Hz
526 geometry 1200 720 1200 720 32
527 timings 14253 184 28 22 1 128 3 endmode mode "1280x600-60"
528# D: 61.503 MHz, H: 37.320 kHz, V: 60.00 Hz
529 geometry 1280 600 1280 600 32
530 timings 16260 184 28 18 1 128 3 endmode mode "1280x720-50"
531# D: 60.466 MHz, H: 37.050 kHz, V: 50.00 Hz
532 geometry 1280 720 1280 720 32
533 timings 16538 176 48 17 1 128 3 endmode mode "1280x768-50"
534# D: 65.178 MHz, H: 39.550 kHz, V: 50.00 Hz
535 geometry 1280 768 1280 768 32 timings 15342 184 28 19 1 128 3 endmode
536#
537# 1280x768, 60 Hz, Non-Interlaced (80.136 MHz dotclock)
538#
539# Horizontal Vertical
540# Resolution 1280 768
541# Scan Frequency 47.700 kHz 60.00 Hz
542# Sync Width 1.697 us 0.063 ms
543# 17 chars 3 lines
544# Front Porch 0.799 us 0.021 ms
545# 8 chars 1 lines
546# Back Porch 2.496 us 0.483 ms
547# 25 chars 23 lines
548# Active Time 15.973 us 16.101 ms
549# 160 chars 768 lines
550# Blank Time 4.992 us 0.566 ms
551# 50 chars 27 lines
552# Polarity positive positive
553#
554 mode "1280x768-60"
555# D: 80.13 MHz, H: 47.700 kHz, V: 60.00 Hz
556 geometry 1280 768 1280 768 32
557 timings 12480 200 48 23 1 126 3 hsync high vsync high endmode
558#
559# 1280x800, 60 Hz, Non-Interlaced (83.375 MHz dotclock)
560#
561# Horizontal Vertical
562# Resolution 1280 800
563# Scan Frequency 49.628 kHz 60.00 Hz
564# Sync Width 1.631 us 60.450 us
565# 17 chars 3 lines
566# Front Porch 0.768 us 20.15 us
567# 8 chars 1 lines
568# Back Porch 2.399 us 0.483 ms
569# 25 chars 24 lines
570# Active Time 15.352 us 16.120 ms
571# 160 chars 800 lines
572# Blank Time 4.798 us 0.564 ms
573# 50 chars 28 lines
574# Polarity negtive positive
575#
576 mode "1280x800-60"
577# D: 83.500 MHz, H: 49.702 kHz, V: 60.00 Hz
578 geometry 1280 800 1280 800 32 timings 11994 200 72 22 3 128 6 endmode
579#
580# 1280x960, 60 Hz, Non-Interlaced (108.00 MHz dotclock)
581#
582# Horizontal Vertical
583# Resolution 1280 960
584# Scan Frequency 60.000 kHz 60.00 Hz
585# Sync Width 1.037 us 0.050 ms
586# 14 chars 3 lines
587# Front Porch 0.889 us 0.017 ms
588# 12 chars 1 lines
589# Back Porch 2.889 us 0.600 ms
590# 39 chars 36 lines
591# Active Time 11.852 us 16.000 ms
592# 160 chars 960 lines
593# Blank Time 4.815 us 0.667 ms
594# 65 chars 40 lines
595# Polarity positive positive
596#
597 mode "1280x960-60"
598# D: 108.00 MHz, H: 60.000 kHz, V: 60.00 Hz
599 geometry 1280 960 1280 960 32
600 timings 9259 312 96 36 1 112 3 hsync high vsync high endmode
601#
602# 1280x1024, 60 Hz, Non-Interlaced (108.00 MHz dotclock)
603#
604# Horizontal Vertical
605# Resolution 1280 1024
606# Scan Frequency 63.981 kHz 60.02 Hz
607# Sync Width 1.037 us 0.047 ms
608# 14 chars 3 lines
609# Front Porch 0.444 us 0.015 ms
610# 6 chars 1 lines
611# Back Porch 2.297 us 0.594 ms
612# 31 chars 38 lines
613# Active Time 11.852 us 16.005 ms
614# 160 chars 1024 lines
615# Blank Time 3.778 us 0.656 ms
616# 51 chars 42 lines
617# Polarity positive positive
618#
619 mode "1280x1024-60"
620# D: 108.00 MHz, H: 63.981 kHz, V: 60.02 Hz
621 geometry 1280 1024 1280 1024 32
622 timings 9260 248 48 38 1 112 3 hsync high vsync high endmode
623#
624# 1280x1024, 75 Hz, Non-Interlaced (135.00 MHz dotclock)
625#
626# Horizontal Vertical
627# Resolution 1280 1024
628# Scan Frequency 79.976 kHz 75.02 Hz
629# Sync Width 1.067 us 0.038 ms
630# 18 chars 3 lines
631# Front Porch 0.119 us 0.012 ms
632# 2 chars 1 lines
633# Back Porch 1.837 us 0.475 ms
634# 31 chars 38 lines
635# Active Time 9.481 us 12.804 ms
636# 160 chars 1024 lines
637# Blank Time 3.022 us 0.525 ms
638# 51 chars 42 lines
639# Polarity positive positive
640#
641 mode "1280x1024-75"
642# D: 135.00 MHz, H: 79.976 kHz, V: 75.02 Hz
643 geometry 1280 1024 1280 1024 32
644 timings 7408 248 16 38 1 144 3 hsync high vsync high endmode
645#
646# 1280x1024, 85 Hz, Non-Interlaced (157.50 MHz dotclock)
647#
648# Horizontal Vertical
649# Resolution 1280 1024
650# Scan Frequency 91.146 kHz 85.02 Hz
651# Sync Width 1.016 us 0.033 ms
652# 20 chars 3 lines
653# Front Porch 0.406 us 0.011 ms
654# 8 chars 1 lines
655# Back Porch 1.422 us 0.483 ms
656# 28 chars 44 lines
657# Active Time 8.127 us 11.235 ms
658# 160 chars 1024 lines
659# Blank Time 2.844 us 0.527 ms
660# 56 chars 48 lines
661# Polarity positive positive
662#
663 mode "1280x1024-85"
664# D: 157.50 MHz, H: 91.146 kHz, V: 85.02 Hz
665 geometry 1280 1024 1280 1024 32
666 timings 6349 224 64 44 1 160 3
667 hsync high vsync high endmode mode "1440x900-60"
668# D: 106.500 MHz, H: 55.935 kHz, V: 60.00 Hz
669 geometry 1440 900 1440 900 32
670 timings 9390 232 80 25 3 152 6
671 hsync high vsync high endmode mode "1440x900-75"
672# D: 136.750 MHz, H: 70.635 kHz, V: 75.00 Hz
673 geometry 1440 900 1440 900 32
674 timings 7315 248 96 33 3 152 6 hsync high vsync high endmode
675#
676# 1440x1050, 60 Hz, Non-Interlaced (125.10 MHz dotclock)
677#
678# Horizontal Vertical
679# Resolution 1440 1050
680# Scan Frequency 65.220 kHz 60.00 Hz
681# Sync Width 1.204 us 0.046 ms
682# 19 chars 3 lines
683# Front Porch 0.760 us 0.015 ms
684# 12 chars 1 lines
685# Back Porch 1.964 us 0.495 ms
686# 31 chars 33 lines
687# Active Time 11.405 us 16.099 ms
688# 180 chars 1050 lines
689# Blank Time 3.928 us 0.567 ms
690# 62 chars 37 lines
691# Polarity positive positive
692#
693 mode "1440x1050-60"
694# D: 125.10 MHz, H: 65.220 kHz, V: 60.00 Hz
695 geometry 1440 1050 1440 1050 32
696 timings 7993 248 96 33 1 152 3
697 hsync high vsync high endmode mode "1600x900-60"
698# D: 118.250 MHz, H: 55.990 kHz, V: 60.00 Hz
699 geometry 1600 900 1600 900 32
700 timings 8415 256 88 26 3 168 5 endmode mode "1600x1024-60"
701# D: 136.358 MHz, H: 63.600 kHz, V: 60.00 Hz
702 geometry 1600 1024 1600 1024 32 timings 7315 272 104 32 1 168 3 endmode
703#
704# 1600x1200, 60 Hz, Non-Interlaced (156.00 MHz dotclock)
705#
706# Horizontal Vertical
707# Resolution 1600 1200
708# Scan Frequency 76.200 kHz 60.00 Hz
709# Sync Width 1.026 us 0.105 ms
710# 20 chars 8 lines
711# Front Porch 0.205 us 0.131 ms
712# 4 chars 10 lines
713# Back Porch 1.636 us 0.682 ms
714# 32 chars 52 lines
715# Active Time 10.256 us 15.748 ms
716# 200 chars 1200 lines
717# Blank Time 2.872 us 0.866 ms
718# 56 chars 66 lines
719# Polarity negative negative
720#
721 mode "1600x1200-60"
722# D: 156.00 MHz, H: 76.200 kHz, V: 60.00 Hz
723 geometry 1600 1200 1600 1200 32 timings 6172 256 32 52 10 160 8 endmode
724#
725# 1600x1200, 75 Hz, Non-Interlaced (202.50 MHz dotclock)
726#
727# Horizontal Vertical
728# Resolution 1600 1200
729# Scan Frequency 93.750 kHz 75.00 Hz
730# Sync Width 0.948 us 0.032 ms
731# 24 chars 3 lines
732# Front Porch 0.316 us 0.011 ms
733# 8 chars 1 lines
734# Back Porch 1.501 us 0.491 ms
735# 38 chars 46 lines
736# Active Time 7.901 us 12.800 ms
737# 200 chars 1200 lines
738# Blank Time 2.765 us 0.533 ms
739# 70 chars 50 lines
740# Polarity positive positive
741#
742 mode "1600x1200-75"
743# D: 202.50 MHz, H: 93.750 kHz, V: 75.00 Hz
744 geometry 1600 1200 1600 1200 32
745 timings 4938 304 64 46 1 192 3
746 hsync high vsync high endmode mode "1680x1050-60"
747# D: 146.250 MHz, H: 65.290 kHz, V: 59.954 Hz
748 geometry 1680 1050 1680 1050 32
749 timings 6814 280 104 30 3 176 6
750 hsync high vsync high endmode mode "1680x1050-75"
751# D: 187.000 MHz, H: 82.306 kHz, V: 74.892 Hz
752 geometry 1680 1050 1680 1050 32
753 timings 5348 296 120 40 3 176 6
754 hsync high vsync high endmode mode "1792x1344-60"
755# D: 202.975 MHz, H: 83.460 kHz, V: 60.00 Hz
756 geometry 1792 1344 1792 1344 32
757 timings 4902 320 128 43 1 192 3
758 hsync high vsync high endmode mode "1856x1392-60"
759# D: 218.571 MHz, H: 86.460 kHz, V: 60.00 Hz
760 geometry 1856 1392 1856 1392 32
761 timings 4577 336 136 45 1 200 3
762 hsync high vsync high endmode mode "1920x1200-60"
763# D: 193.250 MHz, H: 74.556 kHz, V: 60.00 Hz
764 geometry 1920 1200 1920 1200 32
765 timings 5173 336 136 36 3 200 6
766 hsync high vsync high endmode mode "1920x1440-60"
767# D: 234.000 MHz, H:90.000 kHz, V: 60.00 Hz
768 geometry 1920 1440 1920 1440 32
769 timings 4274 344 128 56 1 208 3
770 hsync high vsync high endmode mode "1920x1440-75"
771# D: 297.000 MHz, H:112.500 kHz, V: 75.00 Hz
772 geometry 1920 1440 1920 1440 32
773 timings 3367 352 144 56 1 224 3
774 hsync high vsync high endmode mode "2048x1536-60"
775# D: 267.250 MHz, H: 95.446 kHz, V: 60.00 Hz
776 geometry 2048 1536 2048 1536 32
777 timings 3742 376 152 49 3 224 4 hsync high vsync high endmode
778#
779# 1280x720, 60 Hz, Non-Interlaced (74.481 MHz dotclock)
780#
781# Horizontal Vertical
782# Resolution 1280 720
783# Scan Frequency 44.760 kHz 60.00 Hz
784# Sync Width 1.826 us 67.024 ms
785# 17 chars 3 lines
786# Front Porch 0.752 us 22.341 ms
787# 7 chars 1 lines
788# Back Porch 2.578 us 491.510 ms
789# 24 chars 22 lines
790# Active Time 17.186 us 16.086 ms
791# 160 chars 720 lines
792# Blank Time 5.156 us 0.581 ms
793# 48 chars 26 lines
794# Polarity negative negative
795#
796 mode "1280x720-60"
797# D: 74.481 MHz, H: 44.760 kHz, V: 60.00 Hz
798 geometry 1280 720 1280 720 32 timings 13426 192 64 22 1 136 3 endmode
799#
800# 1920x1080, 60 Hz, Non-Interlaced (172.798 MHz dotclock)
801#
802# Horizontal Vertical
803# Resolution 1920 1080
804# Scan Frequency 67.080 kHz 60.00 Hz
805# Sync Width 1.204 us 44.723 ms
806# 26 chars 3 lines
807# Front Porch 0.694 us 14.908 ms
808# 15 chars 1 lines
809# Back Porch 1.898 us 506.857 ms
810# 41 chars 34 lines
811# Active Time 11.111 us 16.100 ms
812# 240 chars 1080 lines
813# Blank Time 3.796 us 0.566 ms
814# 82 chars 38 lines
815# Polarity negative negative
816#
817 mode "1920x1080-60"
818# D: 74.481 MHz, H: 67.080 kHz, V: 60.00 Hz
819 geometry 1920 1080 1920 1080 32 timings 5787 328 120 34 1 208 3 endmode
820#
821# 1400x1050, 60 Hz, Non-Interlaced (122.61 MHz dotclock)
822#
823# Horizontal Vertical
824# Resolution 1400 1050
825# Scan Frequency 65.218 kHz 59.99 Hz
826# Sync Width 1.037 us 0.047 ms
827# 19 chars 3 lines
828# Front Porch 0.444 us 0.015 ms
829# 11 chars 1 lines
830# Back Porch 1.185 us 0.188 ms
831# 30 chars 33 lines
832# Active Time 12.963 us 16.411 ms
833# 175 chars 1050 lines
834# Blank Time 2.667 us 0.250 ms
835# 60 chars 37 lines
836# Polarity negative positive
837#
838 mode "1400x1050-60"
839# D: 122.750 MHz, H: 65.317 kHz, V: 59.99 Hz
840 geometry 1400 1050 1408 1050 32
841 timings 8214 232 88 32 3 144 4 endmode mode "1400x1050-75"
842# D: 156.000 MHz, H: 82.278 kHz, V: 74.867 Hz
843 geometry 1400 1050 1408 1050 32 timings 6410 248 104 42 3 144 4 endmode
844#
845# 1366x768, 60 Hz, Non-Interlaced (85.86 MHz dotclock)
846#
847# Horizontal Vertical
848# Resolution 1366 768
849# Scan Frequency 47.700 kHz 60.00 Hz
850# Sync Width 1.677 us 0.063 ms
851# 18 chars 3 lines
852# Front Porch 0.839 us 0.021 ms
853# 9 chars 1 lines
854# Back Porch 2.516 us 0.482 ms
855# 27 chars 23 lines
856# Active Time 15.933 us 16.101 ms
857# 171 chars 768 lines
858# Blank Time 5.031 us 0.566 ms
859# 54 chars 27 lines
860# Polarity negative positive
861#
862 mode "1360x768-60"
863# D: 84.750 MHz, H: 47.720 kHz, V: 60.00 Hz
864 geometry 1360 768 1360 768 32
865 timings 11799 208 72 22 3 136 5 endmode mode "1366x768-60"
866# D: 85.86 MHz, H: 47.700 kHz, V: 60.00 Hz
867 geometry 1366 768 1366 768 32
868 timings 11647 216 72 23 1 144 3 endmode mode "1366x768-50"
869# D: 69,924 MHz, H: 39.550 kHz, V: 50.00 Hz
870 geometry 1366 768 1366 768 32 timings 14301 200 56 19 1 144 3 endmode
diff --git a/Documentation/fb/viafb.txt b/Documentation/fb/viafb.txt
new file mode 100644
index 000000000000..67dbf442b0b6
--- /dev/null
+++ b/Documentation/fb/viafb.txt
@@ -0,0 +1,214 @@
1
2 VIA Integration Graphic Chip Console Framebuffer Driver
3
4[Platform]
5-----------------------
6 The console framebuffer driver is for graphics chips of
7 VIA UniChrome Family(CLE266, PM800 / CN400 / CN300,
8 P4M800CE / P4M800Pro / CN700 / VN800,
9 CX700 / VX700, K8M890, P4M890,
10 CN896 / P4M900, VX800)
11
12[Driver features]
13------------------------
14 Device: CRT, LCD, DVI
15
16 Support viafb_mode:
17 CRT:
18 640x480(60, 75, 85, 100, 120 Hz), 720x480(60 Hz),
19 720x576(60 Hz), 800x600(60, 75, 85, 100, 120 Hz),
20 848x480(60 Hz), 856x480(60 Hz), 1024x512(60 Hz),
21 1024x768(60, 75, 85, 100 Hz), 1152x864(75 Hz),
22 1280x768(60 Hz), 1280x960(60 Hz), 1280x1024(60, 75, 85 Hz),
23 1440x1050(60 Hz), 1600x1200(60, 75 Hz), 1280x720(60 Hz),
24 1920x1080(60 Hz), 1400x1050(60 Hz), 800x480(60 Hz)
25
26 color depth: 8 bpp, 16 bpp, 32 bpp supports.
27
28 Support 2D hardware accelerator.
29
30[Using the viafb module]
31-- -- --------------------
32 Start viafb with default settings:
33 #modprobe viafb
34
35 Start viafb with with user options:
36 #modprobe viafb viafb_mode=800x600 viafb_bpp=16 viafb_refresh=60
37 viafb_active_dev=CRT+DVI viafb_dvi_port=DVP1
38 viafb_mode1=1024x768 viafb_bpp=16 viafb_refresh1=60
39 viafb_SAMM_ON=1
40
41 viafb_mode:
42 640x480 (default)
43 720x480
44 800x600
45 1024x768
46 ......
47
48 viafb_bpp:
49 8, 16, 32 (default:32)
50
51 viafb_refresh:
52 60, 75, 85, 100, 120 (default:60)
53
54 viafb_lcd_dsp_method:
55 0 : expansion (default)
56 1 : centering
57
58 viafb_lcd_mode:
59 0 : LCD panel with LSB data format input (default)
60 1 : LCD panel with MSB data format input
61
62 viafb_lcd_panel_id:
63 0 : Resolution: 640x480, Channel: single, Dithering: Enable
64 1 : Resolution: 800x600, Channel: single, Dithering: Enable
65 2 : Resolution: 1024x768, Channel: single, Dithering: Enable (default)
66 3 : Resolution: 1280x768, Channel: single, Dithering: Enable
67 4 : Resolution: 1280x1024, Channel: dual, Dithering: Enable
68 5 : Resolution: 1400x1050, Channel: dual, Dithering: Enable
69 6 : Resolution: 1600x1200, Channel: dual, Dithering: Enable
70
71 8 : Resolution: 800x480, Channel: single, Dithering: Enable
72 9 : Resolution: 1024x768, Channel: dual, Dithering: Enable
73 10: Resolution: 1024x768, Channel: single, Dithering: Disable
74 11: Resolution: 1024x768, Channel: dual, Dithering: Disable
75 12: Resolution: 1280x768, Channel: single, Dithering: Disable
76 13: Resolution: 1280x1024, Channel: dual, Dithering: Disable
77 14: Resolution: 1400x1050, Channel: dual, Dithering: Disable
78 15: Resolution: 1600x1200, Channel: dual, Dithering: Disable
79 16: Resolution: 1366x768, Channel: single, Dithering: Disable
80 17: Resolution: 1024x600, Channel: single, Dithering: Enable
81 18: Resolution: 1280x768, Channel: dual, Dithering: Enable
82 19: Resolution: 1280x800, Channel: single, Dithering: Enable
83
84 viafb_accel:
85 0 : No 2D Hardware Acceleration
86 1 : 2D Hardware Acceleration (default)
87
88 viafb_SAMM_ON:
89 0 : viafb_SAMM_ON disable (default)
90 1 : viafb_SAMM_ON enable
91
92 viafb_mode1: (secondary display device)
93 640x480 (default)
94 720x480
95 800x600
96 1024x768
97 ... ...
98
99 viafb_bpp1: (secondary display device)
100 8, 16, 32 (default:32)
101
102 viafb_refresh1: (secondary display device)
103 60, 75, 85, 100, 120 (default:60)
104
105 viafb_active_dev:
106 This option is used to specify active devices.(CRT, DVI, CRT+LCD...)
107 DVI stands for DVI or HDMI, E.g., If you want to enable HDMI,
108 set viafb_active_dev=DVI. In SAMM case, the previous of
109 viafb_active_dev is primary device, and the following is
110 secondary device.
111
112 For example:
113 To enable one device, such as DVI only, we can use:
114 modprobe viafb viafb_active_dev=DVI
115 To enable two devices, such as CRT+DVI:
116 modprobe viafb viafb_active_dev=CRT+DVI;
117
118 For DuoView case, we can use:
119 modprobe viafb viafb_active_dev=CRT+DVI
120 OR
121 modprobe viafb viafb_active_dev=DVI+CRT...
122
123 For SAMM case:
124 If CRT is primary and DVI is secondary, we should use:
125 modprobe viafb viafb_active_dev=CRT+DVI viafb_SAMM_ON=1...
126 If DVI is primary and CRT is secondary, we should use:
127 modprobe viafb viafb_active_dev=DVI+CRT viafb_SAMM_ON=1...
128
129 viafb_display_hardware_layout:
130 This option is used to specify display hardware layout for CX700 chip.
131 1 : LCD only
132 2 : DVI only
133 3 : LCD+DVI (default)
134 4 : LCD1+LCD2 (internal + internal)
135 16: LCD1+ExternalLCD2 (internal + external)
136
137 viafb_second_size:
138 This option is used to set second device memory size(MB) in SAMM case.
139 The minimal size is 16.
140
141 viafb_platform_epia_dvi:
142 This option is used to enable DVI on EPIA - M
143 0 : No DVI on EPIA - M (default)
144 1 : DVI on EPIA - M
145
146 viafb_bus_width:
147 When using 24 - Bit Bus Width Digital Interface,
148 this option should be set.
149 12: 12-Bit LVDS or 12-Bit TMDS (default)
150 24: 24-Bit LVDS or 24-Bit TMDS
151
152 viafb_device_lcd_dualedge:
153 When using Dual Edge Panel, this option should be set.
154 0 : No Dual Edge Panel (default)
155 1 : Dual Edge Panel
156
157 viafb_video_dev:
158 This option is used to specify video output devices(CRT, DVI, LCD) for
159 duoview case.
160 For example:
161 To output video on DVI, we should use:
162 modprobe viafb viafb_video_dev=DVI...
163
164 viafb_lcd_port:
165 This option is used to specify LCD output port,
166 available values are "DVP0" "DVP1" "DFP_HIGHLOW" "DFP_HIGH" "DFP_LOW".
167 for external LCD + external DVI on CX700(External LCD is on DVP0),
168 we should use:
169 modprobe viafb viafb_lcd_port=DVP0...
170
171Notes:
172 1. CRT may not display properly for DuoView CRT & DVI display at
173 the "640x480" PAL mode with DVI overscan enabled.
174 2. SAMM stands for single adapter multi monitors. It is different from
175 multi-head since SAMM support multi monitor at driver layers, thus fbcon
176 layer doesn't even know about it; SAMM's second screen doesn't have a
177 device node file, thus a user mode application can't access it directly.
178 When SAMM is enabled, viafb_mode and viafb_mode1, viafb_bpp and
179 viafb_bpp1, viafb_refresh and viafb_refresh1 can be different.
180 3. When console is depending on viafbinfo1, dynamically change resolution
181 and bpp, need to call VIAFB specified ioctl interface VIAFB_SET_DEVICE
182 instead of calling common ioctl function FBIOPUT_VSCREENINFO since
183 viafb doesn't support multi-head well, or it will cause screen crush.
184 4. VX800 2D accelerator hasn't been supported in this driver yet. When
185 using driver on VX800, the driver will disable the acceleration
186 function as default.
187
188
189[Configure viafb with "fbset" tool]
190-----------------------------------
191 "fbset" is an inbox utility of Linux.
192 1. Inquire current viafb information, type,
193 # fbset -i
194
195 2. Set various resolutions and viafb_refresh rates,
196 # fbset <resolution-vertical_sync>
197
198 example,
199 # fbset "1024x768-75"
200 or
201 # fbset -g 1024 768 1024 768 32
202 Check the file "/etc/fb.modes" to find display modes available.
203
204 3. Set the color depth,
205 # fbset -depth <value>
206
207 example,
208 # fbset -depth 16
209
210[Bootup with viafb]:
211--------------------
212 Add the following line to your grub.conf:
213 append = "video=viafb:viafb_mode=1024x768,viafb_bpp=32,viafb_refresh=85"
214
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 3d2d0c29f027..f5f812daf9f4 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -287,11 +287,19 @@ Who: Glauber Costa <gcosta@redhat.com>
287 287
288--------------------------- 288---------------------------
289 289
290What: old style serial driver for ColdFire (CONFIG_SERIAL_COLDFIRE) 290What: remove HID compat support
291When: 2.6.28 291When: 2.6.29
292Why: This driver still uses the old interface and has been replaced 292Why: needed only as a temporary solution until distros fix themselves up
293 by CONFIG_SERIAL_MCF. 293Who: Jiri Slaby <jirislaby@gmail.com>
294Who: Sebastian Siewior <sebastian@breakpoint.cc> 294
295---------------------------
296
297What: print_fn_descriptor_symbol()
298When: October 2009
299Why: The %pF vsprintf format provides the same functionality in a
300 simpler way. print_fn_descriptor_symbol() is deprecated but
301 still present to give out-of-tree modules time to change.
302Who: Bjorn Helgaas <bjorn.helgaas@hp.com>
295 303
296--------------------------- 304---------------------------
297 305
diff --git a/Documentation/filesystems/autofs4-mount-control.txt b/Documentation/filesystems/autofs4-mount-control.txt
new file mode 100644
index 000000000000..c6341745df37
--- /dev/null
+++ b/Documentation/filesystems/autofs4-mount-control.txt
@@ -0,0 +1,393 @@
1
2Miscellaneous Device control operations for the autofs4 kernel module
3====================================================================
4
5The problem
6===========
7
8There is a problem with active restarts in autofs (that is to say
9restarting autofs when there are busy mounts).
10
11During normal operation autofs uses a file descriptor opened on the
12directory that is being managed in order to be able to issue control
13operations. Using a file descriptor gives ioctl operations access to
14autofs specific information stored in the super block. The operations
15are things such as setting an autofs mount catatonic, setting the
16expire timeout and requesting expire checks. As is explained below,
17certain types of autofs triggered mounts can end up covering an autofs
18mount itself which prevents us being able to use open(2) to obtain a
19file descriptor for these operations if we don't already have one open.
20
21Currently autofs uses "umount -l" (lazy umount) to clear active mounts
22at restart. While using lazy umount works for most cases, anything that
23needs to walk back up the mount tree to construct a path, such as
24getcwd(2) and the proc file system /proc/<pid>/cwd, no longer works
25because the point from which the path is constructed has been detached
26from the mount tree.
27
28The actual problem with autofs is that it can't reconnect to existing
29mounts. Immediately one thinks of just adding the ability to remount
30autofs file systems would solve it, but alas, that can't work. This is
31because autofs direct mounts and the implementation of "on demand mount
32and expire" of nested mount trees have the file system mounted directly
33on top of the mount trigger directory dentry.
34
35For example, there are two types of automount maps, direct (in the kernel
36module source you will see a third type called an offset, which is just
37a direct mount in disguise) and indirect.
38
39Here is a master map with direct and indirect map entries:
40
41/- /etc/auto.direct
42/test /etc/auto.indirect
43
44and the corresponding map files:
45
46/etc/auto.direct:
47
48/automount/dparse/g6 budgie:/autofs/export1
49/automount/dparse/g1 shark:/autofs/export1
50and so on.
51
52/etc/auto.indirect:
53
54g1 shark:/autofs/export1
55g6 budgie:/autofs/export1
56and so on.
57
58For the above indirect map an autofs file system is mounted on /test and
59mounts are triggered for each sub-directory key by the inode lookup
60operation. So we see a mount of shark:/autofs/export1 on /test/g1, for
61example.
62
63The way that direct mounts are handled is by making an autofs mount on
64each full path, such as /automount/dparse/g1, and using it as a mount
65trigger. So when we walk on the path we mount shark:/autofs/export1 "on
66top of this mount point". Since these are always directories we can
67use the follow_link inode operation to trigger the mount.
68
69But, each entry in direct and indirect maps can have offsets (making
70them multi-mount map entries).
71
72For example, an indirect mount map entry could also be:
73
74g1 \
75 / shark:/autofs/export5/testing/test \
76 /s1 shark:/autofs/export/testing/test/s1 \
77 /s2 shark:/autofs/export5/testing/test/s2 \
78 /s1/ss1 shark:/autofs/export1 \
79 /s2/ss2 shark:/autofs/export2
80
81and a similarly a direct mount map entry could also be:
82
83/automount/dparse/g1 \
84 / shark:/autofs/export5/testing/test \
85 /s1 shark:/autofs/export/testing/test/s1 \
86 /s2 shark:/autofs/export5/testing/test/s2 \
87 /s1/ss1 shark:/autofs/export2 \
88 /s2/ss2 shark:/autofs/export2
89
90One of the issues with version 4 of autofs was that, when mounting an
91entry with a large number of offsets, possibly with nesting, we needed
92to mount and umount all of the offsets as a single unit. Not really a
93problem, except for people with a large number of offsets in map entries.
94This mechanism is used for the well known "hosts" map and we have seen
95cases (in 2.4) where the available number of mounts are exhausted or
96where the number of privileged ports available is exhausted.
97
98In version 5 we mount only as we go down the tree of offsets and
99similarly for expiring them which resolves the above problem. There is
100somewhat more detail to the implementation but it isn't needed for the
101sake of the problem explanation. The one important detail is that these
102offsets are implemented using the same mechanism as the direct mounts
103above and so the mount points can be covered by a mount.
104
105The current autofs implementation uses an ioctl file descriptor opened
106on the mount point for control operations. The references held by the
107descriptor are accounted for in checks made to determine if a mount is
108in use and is also used to access autofs file system information held
109in the mount super block. So the use of a file handle needs to be
110retained.
111
112
113The Solution
114============
115
116To be able to restart autofs leaving existing direct, indirect and
117offset mounts in place we need to be able to obtain a file handle
118for these potentially covered autofs mount points. Rather than just
119implement an isolated operation it was decided to re-implement the
120existing ioctl interface and add new operations to provide this
121functionality.
122
123In addition, to be able to reconstruct a mount tree that has busy mounts,
124the uid and gid of the last user that triggered the mount needs to be
125available because these can be used as macro substitution variables in
126autofs maps. They are recorded at mount request time and an operation
127has been added to retrieve them.
128
129Since we're re-implementing the control interface, a couple of other
130problems with the existing interface have been addressed. First, when
131a mount or expire operation completes a status is returned to the
132kernel by either a "send ready" or a "send fail" operation. The
133"send fail" operation of the ioctl interface could only ever send
134ENOENT so the re-implementation allows user space to send an actual
135status. Another expensive operation in user space, for those using
136very large maps, is discovering if a mount is present. Usually this
137involves scanning /proc/mounts and since it needs to be done quite
138often it can introduce significant overhead when there are many entries
139in the mount table. An operation to lookup the mount status of a mount
140point dentry (covered or not) has also been added.
141
142Current kernel development policy recommends avoiding the use of the
143ioctl mechanism in favor of systems such as Netlink. An implementation
144using this system was attempted to evaluate its suitability and it was
145found to be inadequate, in this case. The Generic Netlink system was
146used for this as raw Netlink would lead to a significant increase in
147complexity. There's no question that the Generic Netlink system is an
148elegant solution for common case ioctl functions but it's not a complete
149replacement probably because it's primary purpose in life is to be a
150message bus implementation rather than specifically an ioctl replacement.
151While it would be possible to work around this there is one concern
152that lead to the decision to not use it. This is that the autofs
153expire in the daemon has become far to complex because umount
154candidates are enumerated, almost for no other reason than to "count"
155the number of times to call the expire ioctl. This involves scanning
156the mount table which has proved to be a big overhead for users with
157large maps. The best way to improve this is try and get back to the
158way the expire was done long ago. That is, when an expire request is
159issued for a mount (file handle) we should continually call back to
160the daemon until we can't umount any more mounts, then return the
161appropriate status to the daemon. At the moment we just expire one
162mount at a time. A Generic Netlink implementation would exclude this
163possibility for future development due to the requirements of the
164message bus architecture.
165
166
167autofs4 Miscellaneous Device mount control interface
168====================================================
169
170The control interface is opening a device node, typically /dev/autofs.
171
172All the ioctls use a common structure to pass the needed parameter
173information and return operation results:
174
175struct autofs_dev_ioctl {
176 __u32 ver_major;
177 __u32 ver_minor;
178 __u32 size; /* total size of data passed in
179 * including this struct */
180 __s32 ioctlfd; /* automount command fd */
181
182 __u32 arg1; /* Command parameters */
183 __u32 arg2;
184
185 char path[0];
186};
187
188The ioctlfd field is a mount point file descriptor of an autofs mount
189point. It is returned by the open call and is used by all calls except
190the check for whether a given path is a mount point, where it may
191optionally be used to check a specific mount corresponding to a given
192mount point file descriptor, and when requesting the uid and gid of the
193last successful mount on a directory within the autofs file system.
194
195The fields arg1 and arg2 are used to communicate parameters and results of
196calls made as described below.
197
198The path field is used to pass a path where it is needed and the size field
199is used account for the increased structure length when translating the
200structure sent from user space.
201
202This structure can be initialized before setting specific fields by using
203the void function call init_autofs_dev_ioctl(struct autofs_dev_ioctl *).
204
205All of the ioctls perform a copy of this structure from user space to
206kernel space and return -EINVAL if the size parameter is smaller than
207the structure size itself, -ENOMEM if the kernel memory allocation fails
208or -EFAULT if the copy itself fails. Other checks include a version check
209of the compiled in user space version against the module version and a
210mismatch results in a -EINVAL return. If the size field is greater than
211the structure size then a path is assumed to be present and is checked to
212ensure it begins with a "/" and is NULL terminated, otherwise -EINVAL is
213returned. Following these checks, for all ioctl commands except
214AUTOFS_DEV_IOCTL_VERSION_CMD, AUTOFS_DEV_IOCTL_OPENMOUNT_CMD and
215AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD the ioctlfd is validated and if it is
216not a valid descriptor or doesn't correspond to an autofs mount point
217an error of -EBADF, -ENOTTY or -EINVAL (not an autofs descriptor) is
218returned.
219
220
221The ioctls
222==========
223
224An example of an implementation which uses this interface can be seen
225in autofs version 5.0.4 and later in file lib/dev-ioctl-lib.c of the
226distribution tar available for download from kernel.org in directory
227/pub/linux/daemons/autofs/v5.
228
229The device node ioctl operations implemented by this interface are:
230
231
232AUTOFS_DEV_IOCTL_VERSION
233------------------------
234
235Get the major and minor version of the autofs4 device ioctl kernel module
236implementation. It requires an initialized struct autofs_dev_ioctl as an
237input parameter and sets the version information in the passed in structure.
238It returns 0 on success or the error -EINVAL if a version mismatch is
239detected.
240
241
242AUTOFS_DEV_IOCTL_PROTOVER_CMD and AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD
243------------------------------------------------------------------
244
245Get the major and minor version of the autofs4 protocol version understood
246by loaded module. This call requires an initialized struct autofs_dev_ioctl
247with the ioctlfd field set to a valid autofs mount point descriptor
248and sets the requested version number in structure field arg1. These
249commands return 0 on success or one of the negative error codes if
250validation fails.
251
252
253AUTOFS_DEV_IOCTL_OPENMOUNT and AUTOFS_DEV_IOCTL_CLOSEMOUNT
254----------------------------------------------------------
255
256Obtain and release a file descriptor for an autofs managed mount point
257path. The open call requires an initialized struct autofs_dev_ioctl with
258the the path field set and the size field adjusted appropriately as well
259as the arg1 field set to the device number of the autofs mount. The
260device number can be obtained from the mount options shown in
261/proc/mounts. The close call requires an initialized struct
262autofs_dev_ioct with the ioctlfd field set to the descriptor obtained
263from the open call. The release of the file descriptor can also be done
264with close(2) so any open descriptors will also be closed at process exit.
265The close call is included in the implemented operations largely for
266completeness and to provide for a consistent user space implementation.
267
268
269AUTOFS_DEV_IOCTL_READY_CMD and AUTOFS_DEV_IOCTL_FAIL_CMD
270--------------------------------------------------------
271
272Return mount and expire result status from user space to the kernel.
273Both of these calls require an initialized struct autofs_dev_ioctl
274with the ioctlfd field set to the descriptor obtained from the open
275call and the arg1 field set to the wait queue token number, received
276by user space in the foregoing mount or expire request. The arg2 field
277is set to the status to be returned. For the ready call this is always
2780 and for the fail call it is set to the errno of the operation.
279
280
281AUTOFS_DEV_IOCTL_SETPIPEFD_CMD
282------------------------------
283
284Set the pipe file descriptor used for kernel communication to the daemon.
285Normally this is set at mount time using an option but when reconnecting
286to a existing mount we need to use this to tell the autofs mount about
287the new kernel pipe descriptor. In order to protect mounts against
288incorrectly setting the pipe descriptor we also require that the autofs
289mount be catatonic (see next call).
290
291The call requires an initialized struct autofs_dev_ioctl with the
292ioctlfd field set to the descriptor obtained from the open call and
293the arg1 field set to descriptor of the pipe. On success the call
294also sets the process group id used to identify the controlling process
295(eg. the owning automount(8) daemon) to the process group of the caller.
296
297
298AUTOFS_DEV_IOCTL_CATATONIC_CMD
299------------------------------
300
301Make the autofs mount point catatonic. The autofs mount will no longer
302issue mount requests, the kernel communication pipe descriptor is released
303and any remaining waits in the queue released.
304
305The call requires an initialized struct autofs_dev_ioctl with the
306ioctlfd field set to the descriptor obtained from the open call.
307
308
309AUTOFS_DEV_IOCTL_TIMEOUT_CMD
310----------------------------
311
312Set the expire timeout for mounts withing an autofs mount point.
313
314The call requires an initialized struct autofs_dev_ioctl with the
315ioctlfd field set to the descriptor obtained from the open call.
316
317
318AUTOFS_DEV_IOCTL_REQUESTER_CMD
319------------------------------
320
321Return the uid and gid of the last process to successfully trigger a the
322mount on the given path dentry.
323
324The call requires an initialized struct autofs_dev_ioctl with the path
325field set to the mount point in question and the size field adjusted
326appropriately as well as the arg1 field set to the device number of the
327containing autofs mount. Upon return the struct field arg1 contains the
328uid and arg2 the gid.
329
330When reconstructing an autofs mount tree with active mounts we need to
331re-connect to mounts that may have used the original process uid and
332gid (or string variations of them) for mount lookups within the map entry.
333This call provides the ability to obtain this uid and gid so they may be
334used by user space for the mount map lookups.
335
336
337AUTOFS_DEV_IOCTL_EXPIRE_CMD
338---------------------------
339
340Issue an expire request to the kernel for an autofs mount. Typically
341this ioctl is called until no further expire candidates are found.
342
343The call requires an initialized struct autofs_dev_ioctl with the
344ioctlfd field set to the descriptor obtained from the open call. In
345addition an immediate expire, independent of the mount timeout, can be
346requested by setting the arg1 field to 1. If no expire candidates can
347be found the ioctl returns -1 with errno set to EAGAIN.
348
349This call causes the kernel module to check the mount corresponding
350to the given ioctlfd for mounts that can be expired, issues an expire
351request back to the daemon and waits for completion.
352
353AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD
354------------------------------
355
356Checks if an autofs mount point is in use.
357
358The call requires an initialized struct autofs_dev_ioctl with the
359ioctlfd field set to the descriptor obtained from the open call and
360it returns the result in the arg1 field, 1 for busy and 0 otherwise.
361
362
363AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD
364---------------------------------
365
366Check if the given path is a mountpoint.
367
368The call requires an initialized struct autofs_dev_ioctl. There are two
369possible variations. Both use the path field set to the path of the mount
370point to check and the size field adjusted appropriately. One uses the
371ioctlfd field to identify a specific mount point to check while the other
372variation uses the path and optionaly arg1 set to an autofs mount type.
373The call returns 1 if this is a mount point and sets arg1 to the device
374number of the mount and field arg2 to the relevant super block magic
375number (described below) or 0 if it isn't a mountpoint. In both cases
376the the device number (as returned by new_encode_dev()) is returned
377in field arg1.
378
379If supplied with a file descriptor we're looking for a specific mount,
380not necessarily at the top of the mounted stack. In this case the path
381the descriptor corresponds to is considered a mountpoint if it is itself
382a mountpoint or contains a mount, such as a multi-mount without a root
383mount. In this case we return 1 if the descriptor corresponds to a mount
384point and and also returns the super magic of the covering mount if there
385is one or 0 if it isn't a mountpoint.
386
387If a path is supplied (and the ioctlfd field is set to -1) then the path
388is looked up and is checked to see if it is the root of a mount. If a
389type is also given we are looking for a particular autofs mount and if
390a match isn't found a fail is returned. If the the located path is the
391root of a mount 1 is returned along with the super magic of the mount
392or 0 otherwise.
393
diff --git a/Documentation/filesystems/ext3.txt b/Documentation/filesystems/ext3.txt
index b45f3c1b8b43..295f26cd895a 100644
--- a/Documentation/filesystems/ext3.txt
+++ b/Documentation/filesystems/ext3.txt
@@ -193,6 +193,5 @@ kernel source: <file:fs/ext3/>
193programs: http://e2fsprogs.sourceforge.net/ 193programs: http://e2fsprogs.sourceforge.net/
194 http://ext2resize.sourceforge.net 194 http://ext2resize.sourceforge.net
195 195
196useful links: http://www.zip.com.au/~akpm/linux/ext3/ext3-usage.html 196useful links: http://www-106.ibm.com/developerworks/linux/library/l-fs7/
197 http://www-106.ibm.com/developerworks/linux/library/l-fs7/
198 http://www-106.ibm.com/developerworks/linux/library/l-fs8/ 197 http://www-106.ibm.com/developerworks/linux/library/l-fs8/
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt
index 0d5394920a31..eb154ef36c2a 100644
--- a/Documentation/filesystems/ext4.txt
+++ b/Documentation/filesystems/ext4.txt
@@ -32,9 +32,9 @@ Mailing list: linux-ext4@vger.kernel.org
32 you will need to merge your changes with the version from e2fsprogs 32 you will need to merge your changes with the version from e2fsprogs
33 1.41.x. 33 1.41.x.
34 34
35 - Create a new filesystem using the ext4dev filesystem type: 35 - Create a new filesystem using the ext4 filesystem type:
36 36
37 # mke2fs -t ext4dev /dev/hda1 37 # mke2fs -t ext4 /dev/hda1
38 38
39 Or configure an existing ext3 filesystem to support extents and set 39 Or configure an existing ext3 filesystem to support extents and set
40 the test_fs flag to indicate that it's ok for an in-development 40 the test_fs flag to indicate that it's ok for an in-development
@@ -47,13 +47,13 @@ Mailing list: linux-ext4@vger.kernel.org
47 47
48 # tune2fs -I 256 /dev/hda1 48 # tune2fs -I 256 /dev/hda1
49 49
50 (Note: we currently do not have tools to convert an ext4dev 50 (Note: we currently do not have tools to convert an ext4
51 filesystem back to ext3; so please do not do try this on production 51 filesystem back to ext3; so please do not do try this on production
52 filesystems.) 52 filesystems.)
53 53
54 - Mounting: 54 - Mounting:
55 55
56 # mount -t ext4dev /dev/hda1 /wherever 56 # mount -t ext4 /dev/hda1 /wherever
57 57
58 - When comparing performance with other filesystems, remember that 58 - When comparing performance with other filesystems, remember that
59 ext3/4 by default offers higher data integrity guarantees than most. 59 ext3/4 by default offers higher data integrity guarantees than most.
@@ -177,6 +177,11 @@ barrier=<0|1(*)> This enables/disables the use of write barriers in
177 your disks are battery-backed in one way or another, 177 your disks are battery-backed in one way or another,
178 disabling barriers may safely improve performance. 178 disabling barriers may safely improve performance.
179 179
180inode_readahead=n This tuning parameter controls the maximum
181 number of inode table blocks that ext4's inode
182 table readahead algorithm will pre-read into
183 the buffer cache. The default value is 32 blocks.
184
180orlov (*) This enables the new Orlov block allocator. It is 185orlov (*) This enables the new Orlov block allocator. It is
181 enabled by default. 186 enabled by default.
182 187
@@ -218,6 +223,11 @@ errors=remount-ro(*) Remount the filesystem read-only on an error.
218errors=continue Keep going on a filesystem error. 223errors=continue Keep going on a filesystem error.
219errors=panic Panic and halt the machine if an error occurs. 224errors=panic Panic and halt the machine if an error occurs.
220 225
226data_err=ignore(*) Just print an error message if an error occurs
227 in a file data buffer in ordered mode.
228data_err=abort Abort the journal if an error occurs in a file
229 data buffer in ordered mode.
230
221grpid Give objects the same group ID as their creator. 231grpid Give objects the same group ID as their creator.
222bsdgroups 232bsdgroups
223 233
@@ -252,6 +262,7 @@ stripe=n Number of filesystem blocks that mballoc will try
252delalloc (*) Deferring block allocation until write-out time. 262delalloc (*) Deferring block allocation until write-out time.
253nodelalloc Disable delayed allocation. Blocks are allocation 263nodelalloc Disable delayed allocation. Blocks are allocation
254 when data is copied from user to page cache. 264 when data is copied from user to page cache.
265
255Data Mode 266Data Mode
256========= 267=========
257There are 3 different data modes: 268There are 3 different data modes:
diff --git a/Documentation/filesystems/fiemap.txt b/Documentation/filesystems/fiemap.txt
new file mode 100644
index 000000000000..1e3defcfe50b
--- /dev/null
+++ b/Documentation/filesystems/fiemap.txt
@@ -0,0 +1,228 @@
1============
2Fiemap Ioctl
3============
4
5The fiemap ioctl is an efficient method for userspace to get file
6extent mappings. Instead of block-by-block mapping (such as bmap), fiemap
7returns a list of extents.
8
9
10Request Basics
11--------------
12
13A fiemap request is encoded within struct fiemap:
14
15struct fiemap {
16 __u64 fm_start; /* logical offset (inclusive) at
17 * which to start mapping (in) */
18 __u64 fm_length; /* logical length of mapping which
19 * userspace cares about (in) */
20 __u32 fm_flags; /* FIEMAP_FLAG_* flags for request (in/out) */
21 __u32 fm_mapped_extents; /* number of extents that were
22 * mapped (out) */
23 __u32 fm_extent_count; /* size of fm_extents array (in) */
24 __u32 fm_reserved;
25 struct fiemap_extent fm_extents[0]; /* array of mapped extents (out) */
26};
27
28
29fm_start, and fm_length specify the logical range within the file
30which the process would like mappings for. Extents returned mirror
31those on disk - that is, the logical offset of the 1st returned extent
32may start before fm_start, and the range covered by the last returned
33extent may end after fm_length. All offsets and lengths are in bytes.
34
35Certain flags to modify the way in which mappings are looked up can be
36set in fm_flags. If the kernel doesn't understand some particular
37flags, it will return EBADR and the contents of fm_flags will contain
38the set of flags which caused the error. If the kernel is compatible
39with all flags passed, the contents of fm_flags will be unmodified.
40It is up to userspace to determine whether rejection of a particular
41flag is fatal to it's operation. This scheme is intended to allow the
42fiemap interface to grow in the future but without losing
43compatibility with old software.
44
45fm_extent_count specifies the number of elements in the fm_extents[] array
46that can be used to return extents. If fm_extent_count is zero, then the
47fm_extents[] array is ignored (no extents will be returned), and the
48fm_mapped_extents count will hold the number of extents needed in
49fm_extents[] to hold the file's current mapping. Note that there is
50nothing to prevent the file from changing between calls to FIEMAP.
51
52The following flags can be set in fm_flags:
53
54* FIEMAP_FLAG_SYNC
55If this flag is set, the kernel will sync the file before mapping extents.
56
57* FIEMAP_FLAG_XATTR
58If this flag is set, the extents returned will describe the inodes
59extended attribute lookup tree, instead of it's data tree.
60
61
62Extent Mapping
63--------------
64
65Extent information is returned within the embedded fm_extents array
66which userspace must allocate along with the fiemap structure. The
67number of elements in the fiemap_extents[] array should be passed via
68fm_extent_count. The number of extents mapped by kernel will be
69returned via fm_mapped_extents. If the number of fiemap_extents
70allocated is less than would be required to map the requested range,
71the maximum number of extents that can be mapped in the fm_extent[]
72array will be returned and fm_mapped_extents will be equal to
73fm_extent_count. In that case, the last extent in the array will not
74complete the requested range and will not have the FIEMAP_EXTENT_LAST
75flag set (see the next section on extent flags).
76
77Each extent is described by a single fiemap_extent structure as
78returned in fm_extents.
79
80struct fiemap_extent {
81 __u64 fe_logical; /* logical offset in bytes for the start of
82 * the extent */
83 __u64 fe_physical; /* physical offset in bytes for the start
84 * of the extent */
85 __u64 fe_length; /* length in bytes for the extent */
86 __u64 fe_reserved64[2];
87 __u32 fe_flags; /* FIEMAP_EXTENT_* flags for this extent */
88 __u32 fe_reserved[3];
89};
90
91All offsets and lengths are in bytes and mirror those on disk. It is valid
92for an extents logical offset to start before the request or it's logical
93length to extend past the request. Unless FIEMAP_EXTENT_NOT_ALIGNED is
94returned, fe_logical, fe_physical, and fe_length will be aligned to the
95block size of the file system. With the exception of extents flagged as
96FIEMAP_EXTENT_MERGED, adjacent extents will not be merged.
97
98The fe_flags field contains flags which describe the extent returned.
99A special flag, FIEMAP_EXTENT_LAST is always set on the last extent in
100the file so that the process making fiemap calls can determine when no
101more extents are available, without having to call the ioctl again.
102
103Some flags are intentionally vague and will always be set in the
104presence of other more specific flags. This way a program looking for
105a general property does not have to know all existing and future flags
106which imply that property.
107
108For example, if FIEMAP_EXTENT_DATA_INLINE or FIEMAP_EXTENT_DATA_TAIL
109are set, FIEMAP_EXTENT_NOT_ALIGNED will also be set. A program looking
110for inline or tail-packed data can key on the specific flag. Software
111which simply cares not to try operating on non-aligned extents
112however, can just key on FIEMAP_EXTENT_NOT_ALIGNED, and not have to
113worry about all present and future flags which might imply unaligned
114data. Note that the opposite is not true - it would be valid for
115FIEMAP_EXTENT_NOT_ALIGNED to appear alone.
116
117* FIEMAP_EXTENT_LAST
118This is the last extent in the file. A mapping attempt past this
119extent will return nothing.
120
121* FIEMAP_EXTENT_UNKNOWN
122The location of this extent is currently unknown. This may indicate
123the data is stored on an inaccessible volume or that no storage has
124been allocated for the file yet.
125
126* FIEMAP_EXTENT_DELALLOC
127 - This will also set FIEMAP_EXTENT_UNKNOWN.
128Delayed allocation - while there is data for this extent, it's
129physical location has not been allocated yet.
130
131* FIEMAP_EXTENT_ENCODED
132This extent does not consist of plain filesystem blocks but is
133encoded (e.g. encrypted or compressed). Reading the data in this
134extent via I/O to the block device will have undefined results.
135
136Note that it is *always* undefined to try to update the data
137in-place by writing to the indicated location without the
138assistance of the filesystem, or to access the data using the
139information returned by the FIEMAP interface while the filesystem
140is mounted. In other words, user applications may only read the
141extent data via I/O to the block device while the filesystem is
142unmounted, and then only if the FIEMAP_EXTENT_ENCODED flag is
143clear; user applications must not try reading or writing to the
144filesystem via the block device under any other circumstances.
145
146* FIEMAP_EXTENT_DATA_ENCRYPTED
147 - This will also set FIEMAP_EXTENT_ENCODED
148The data in this extent has been encrypted by the file system.
149
150* FIEMAP_EXTENT_NOT_ALIGNED
151Extent offsets and length are not guaranteed to be block aligned.
152
153* FIEMAP_EXTENT_DATA_INLINE
154 This will also set FIEMAP_EXTENT_NOT_ALIGNED
155Data is located within a meta data block.
156
157* FIEMAP_EXTENT_DATA_TAIL
158 This will also set FIEMAP_EXTENT_NOT_ALIGNED
159Data is packed into a block with data from other files.
160
161* FIEMAP_EXTENT_UNWRITTEN
162Unwritten extent - the extent is allocated but it's data has not been
163initialized. This indicates the extent's data will be all zero if read
164through the filesystem but the contents are undefined if read directly from
165the device.
166
167* FIEMAP_EXTENT_MERGED
168This will be set when a file does not support extents, i.e., it uses a block
169based addressing scheme. Since returning an extent for each block back to
170userspace would be highly inefficient, the kernel will try to merge most
171adjacent blocks into 'extents'.
172
173
174VFS -> File System Implementation
175---------------------------------
176
177File systems wishing to support fiemap must implement a ->fiemap callback on
178their inode_operations structure. The fs ->fiemap call is responsible for
179defining it's set of supported fiemap flags, and calling a helper function on
180each discovered extent:
181
182struct inode_operations {
183 ...
184
185 int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start,
186 u64 len);
187
188->fiemap is passed struct fiemap_extent_info which describes the
189fiemap request:
190
191struct fiemap_extent_info {
192 unsigned int fi_flags; /* Flags as passed from user */
193 unsigned int fi_extents_mapped; /* Number of mapped extents */
194 unsigned int fi_extents_max; /* Size of fiemap_extent array */
195 struct fiemap_extent *fi_extents_start; /* Start of fiemap_extent array */
196};
197
198It is intended that the file system should not need to access any of this
199structure directly.
200
201
202Flag checking should be done at the beginning of the ->fiemap callback via the
203fiemap_check_flags() helper:
204
205int fiemap_check_flags(struct fiemap_extent_info *fieinfo, u32 fs_flags);
206
207The struct fieinfo should be passed in as recieved from ioctl_fiemap(). The
208set of fiemap flags which the fs understands should be passed via fs_flags. If
209fiemap_check_flags finds invalid user flags, it will place the bad values in
210fieinfo->fi_flags and return -EBADR. If the file system gets -EBADR, from
211fiemap_check_flags(), it should immediately exit, returning that error back to
212ioctl_fiemap().
213
214
215For each extent in the request range, the file system should call
216the helper function, fiemap_fill_next_extent():
217
218int fiemap_fill_next_extent(struct fiemap_extent_info *info, u64 logical,
219 u64 phys, u64 len, u32 flags, u32 dev);
220
221fiemap_fill_next_extent() will use the passed values to populate the
222next free extent in the fm_extents array. 'General' extent flags will
223automatically be set from specific flags on behalf of the calling file
224system so that the userspace API is not broken.
225
226fiemap_fill_next_extent() returns 0 on success, and 1 when the
227user-supplied fm_extents array is full. If an error is encountered
228while copying the extent to user memory, -EFAULT will be returned.
diff --git a/Documentation/filesystems/nfsroot.txt b/Documentation/filesystems/nfsroot.txt
index 31b329172343..68baddf3c3e0 100644
--- a/Documentation/filesystems/nfsroot.txt
+++ b/Documentation/filesystems/nfsroot.txt
@@ -169,7 +169,7 @@ They depend on various facilities being available:
1693.1) Booting from a floppy using syslinux 1693.1) Booting from a floppy using syslinux
170 170
171 When building kernels, an easy way to create a boot floppy that uses 171 When building kernels, an easy way to create a boot floppy that uses
172 syslinux is to use the zdisk or bzdisk make targets which use 172 syslinux is to use the zdisk or bzdisk make targets which use zimage
173 and bzimage images respectively. Both targets accept the 173 and bzimage images respectively. Both targets accept the
174 FDARGS parameter which can be used to set the kernel command line. 174 FDARGS parameter which can be used to set the kernel command line.
175 175
diff --git a/Documentation/filesystems/ocfs2.txt b/Documentation/filesystems/ocfs2.txt
index c318a8bbb1ef..4340cc825796 100644
--- a/Documentation/filesystems/ocfs2.txt
+++ b/Documentation/filesystems/ocfs2.txt
@@ -76,3 +76,9 @@ localalloc=8(*) Allows custom localalloc size in MB. If the value is too
76 large, the fs will silently revert it to the default. 76 large, the fs will silently revert it to the default.
77 Localalloc is not enabled for local mounts. 77 Localalloc is not enabled for local mounts.
78localflocks This disables cluster aware flock. 78localflocks This disables cluster aware flock.
79inode64 Indicates that Ocfs2 is allowed to create inodes at
80 any location in the filesystem, including those which
81 will result in inode numbers occupying more than 32
82 bits of significance.
83user_xattr (*) Enables Extended User Attributes.
84nouser_xattr Disables Extended User Attributes.
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index f566ad9bcb7b..c032bf39e8b9 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -923,45 +923,44 @@ CPUs.
923The "procs_blocked" line gives the number of processes currently blocked, 923The "procs_blocked" line gives the number of processes currently blocked,
924waiting for I/O to complete. 924waiting for I/O to complete.
925 925
926
9261.9 Ext4 file system parameters 9271.9 Ext4 file system parameters
927------------------------------ 928------------------------------
928Ext4 file system have one directory per partition under /proc/fs/ext4/
929# ls /proc/fs/ext4/hdc/
930group_prealloc max_to_scan mb_groups mb_history min_to_scan order2_req
931stats stream_req
932
933mb_groups:
934This file gives the details of multiblock allocator buddy cache of free blocks
935
936mb_history:
937Multiblock allocation history.
938
939stats:
940This file indicate whether the multiblock allocator should start collecting
941statistics. The statistics are shown during unmount
942 929
943group_prealloc: 930Information about mounted ext4 file systems can be found in
944The multiblock allocator normalize the block allocation request to 931/proc/fs/ext4. Each mounted filesystem will have a directory in
945group_prealloc filesystem blocks if we don't have strip value set. 932/proc/fs/ext4 based on its device name (i.e., /proc/fs/ext4/hdc or
946The stripe value can be specified at mount time or during mke2fs. 933/proc/fs/ext4/dm-0). The files in each per-device directory are shown
934in Table 1-10, below.
947 935
948max_to_scan: 936Table 1-10: Files in /proc/fs/ext4/<devname>
949How long multiblock allocator can look for a best extent (in found extents) 937..............................................................................
950 938 File Content
951min_to_scan: 939 mb_groups details of multiblock allocator buddy cache of free blocks
952How long multiblock allocator must look for a best extent 940 mb_history multiblock allocation history
953 941 stats controls whether the multiblock allocator should start
954order2_req: 942 collecting statistics, which are shown during the unmount
955Multiblock allocator use 2^N search using buddies only for requests greater 943 group_prealloc the multiblock allocator will round up allocation
956than or equal to order2_req. The request size is specfied in file system 944 requests to a multiple of this tuning parameter if the
957blocks. A value of 2 indicate only if the requests are greater than or equal 945 stripe size is not set in the ext4 superblock
958to 4 blocks. 946 max_to_scan The maximum number of extents the multiblock allocator
947 will search to find the best extent
948 min_to_scan The minimum number of extents the multiblock allocator
949 will search to find the best extent
950 order2_req Tuning parameter which controls the minimum size for
951 requests (as a power of 2) where the buddy cache is
952 used
953 stream_req Files which have fewer blocks than this tunable
954 parameter will have their blocks allocated out of a
955 block group specific preallocation pool, so that small
956 files are packed closely together. Each large file
957 will have its blocks allocated out of its own unique
958 preallocation pool.
959inode_readahead Tuning parameter which controls the maximum number of
960 inode table blocks that ext4's inode table readahead
961 algorithm will pre-read into the buffer cache
962..............................................................................
959 963
960stream_req:
961Files smaller than stream_req are served by the stream allocator, whose
962purpose is to pack requests as close each to other as possible to
963produce smooth I/O traffic. Avalue of 16 indicate that file smaller than 16
964filesystem block size will use group based preallocation.
965 964
966------------------------------------------------------------------------------ 965------------------------------------------------------------------------------
967Summary 966Summary
@@ -1322,6 +1321,18 @@ debugging information is displayed on console.
1322NMI switch that most IA32 servers have fires unknown NMI up, for example. 1321NMI switch that most IA32 servers have fires unknown NMI up, for example.
1323If a system hangs up, try pressing the NMI switch. 1322If a system hangs up, try pressing the NMI switch.
1324 1323
1324panic_on_unrecovered_nmi
1325------------------------
1326
1327The default Linux behaviour on an NMI of either memory or unknown is to continue
1328operation. For many environments such as scientific computing it is preferable
1329that the box is taken out and the error dealt with than an uncorrected
1330parity/ECC error get propogated.
1331
1332A small number of systems do generate NMI's for bizarre random reasons such as
1333power management so the default is off. That sysctl works like the existing
1334panic controls already in that directory.
1335
1325nmi_watchdog 1336nmi_watchdog
1326------------ 1337------------
1327 1338
@@ -1332,13 +1343,6 @@ determine whether or not they are still functioning properly.
1332Because the NMI watchdog shares registers with oprofile, by disabling the NMI 1343Because the NMI watchdog shares registers with oprofile, by disabling the NMI
1333watchdog, oprofile may have more registers to utilize. 1344watchdog, oprofile may have more registers to utilize.
1334 1345
1335maps_protect
1336------------
1337
1338Enables/Disables the protection of the per-process proc entries "maps" and
1339"smaps". When enabled, the contents of these files are visible only to
1340readers that are allowed to ptrace() the given process.
1341
1342msgmni 1346msgmni
1343------ 1347------
1344 1348
diff --git a/Documentation/filesystems/ramfs-rootfs-initramfs.txt b/Documentation/filesystems/ramfs-rootfs-initramfs.txt
index 7be232b44ee4..62fe9b1e0890 100644
--- a/Documentation/filesystems/ramfs-rootfs-initramfs.txt
+++ b/Documentation/filesystems/ramfs-rootfs-initramfs.txt
@@ -263,7 +263,7 @@ User Mode Linux, like so:
263 sleep(999999999); 263 sleep(999999999);
264 } 264 }
265 EOF 265 EOF
266 gcc -static hello2.c -o init 266 gcc -static hello.c -o init
267 echo init | cpio -o -H newc | gzip > test.cpio.gz 267 echo init | cpio -o -H newc | gzip > test.cpio.gz
268 # Testing external initramfs using the initrd loading mechanism. 268 # Testing external initramfs using the initrd loading mechanism.
269 qemu -kernel /boot/vmlinuz -initrd test.cpio.gz /dev/zero 269 qemu -kernel /boot/vmlinuz -initrd test.cpio.gz /dev/zero
diff --git a/Documentation/gpio.txt b/Documentation/gpio.txt
index 18022e249c53..b1b988701247 100644
--- a/Documentation/gpio.txt
+++ b/Documentation/gpio.txt
@@ -240,6 +240,10 @@ signal, or (b) something wrongly believes it's safe to remove drivers
240needed to manage a signal that's in active use. That is, requesting a 240needed to manage a signal that's in active use. That is, requesting a
241GPIO can serve as a kind of lock. 241GPIO can serve as a kind of lock.
242 242
243Some platforms may also use knowledge about what GPIOs are active for
244power management, such as by powering down unused chip sectors and, more
245easily, gating off unused clocks.
246
243These two calls are optional because not not all current Linux platforms 247These two calls are optional because not not all current Linux platforms
244offer such functionality in their GPIO support; a valid implementation 248offer such functionality in their GPIO support; a valid implementation
245could return success for all gpio_request() calls. Unlike the other calls, 249could return success for all gpio_request() calls. Unlike the other calls,
@@ -264,7 +268,7 @@ map between them using calls like:
264 /* map GPIO numbers to IRQ numbers */ 268 /* map GPIO numbers to IRQ numbers */
265 int gpio_to_irq(unsigned gpio); 269 int gpio_to_irq(unsigned gpio);
266 270
267 /* map IRQ numbers to GPIO numbers */ 271 /* map IRQ numbers to GPIO numbers (avoid using this) */
268 int irq_to_gpio(unsigned irq); 272 int irq_to_gpio(unsigned irq);
269 273
270Those return either the corresponding number in the other namespace, or 274Those return either the corresponding number in the other namespace, or
@@ -284,7 +288,8 @@ system wakeup capabilities.
284 288
285Non-error values returned from irq_to_gpio() would most commonly be used 289Non-error values returned from irq_to_gpio() would most commonly be used
286with gpio_get_value(), for example to initialize or update driver state 290with gpio_get_value(), for example to initialize or update driver state
287when the IRQ is edge-triggered. 291when the IRQ is edge-triggered. Note that some platforms don't support
292this reverse mapping, so you should avoid using it.
288 293
289 294
290Emulating Open Drain Signals 295Emulating Open Drain Signals
diff --git a/Documentation/i2c/busses/i2c-viapro b/Documentation/i2c/busses/i2c-viapro
index 1405fb69984c..22efedf60c87 100644
--- a/Documentation/i2c/busses/i2c-viapro
+++ b/Documentation/i2c/busses/i2c-viapro
@@ -16,6 +16,9 @@ Supported adapters:
16 * VIA Technologies, Inc. CX700 16 * VIA Technologies, Inc. CX700
17 Datasheet: available on request and under NDA from VIA 17 Datasheet: available on request and under NDA from VIA
18 18
19 * VIA Technologies, Inc. VX800/VX820
20 Datasheet: available on http://linux.via.com.tw
21
19Authors: 22Authors:
20 Kyösti Mälkki <kmalkki@cc.hut.fi>, 23 Kyösti Mälkki <kmalkki@cc.hut.fi>,
21 Mark D. Studebaker <mdsxyz123@yahoo.com>, 24 Mark D. Studebaker <mdsxyz123@yahoo.com>,
@@ -49,6 +52,7 @@ Your lspci -n listing must show one of these :
49 device 1106:3372 (VT8237S) 52 device 1106:3372 (VT8237S)
50 device 1106:3287 (VT8251) 53 device 1106:3287 (VT8251)
51 device 1106:8324 (CX700) 54 device 1106:8324 (CX700)
55 device 1106:8353 (VX800/VX820)
52 56
53If none of these show up, you should look in the BIOS for settings like 57If none of these show up, you should look in the BIOS for settings like
54enable ACPI / SMBus or even USB. 58enable ACPI / SMBus or even USB.
@@ -57,5 +61,5 @@ Except for the oldest chips (VT82C596A/B, VT82C686A and most probably
57VT8231), this driver supports I2C block transactions. Such transactions 61VT8231), this driver supports I2C block transactions. Such transactions
58are mainly useful to read from and write to EEPROMs. 62are mainly useful to read from and write to EEPROMs.
59 63
60The CX700 additionally appears to support SMBus PEC, although this driver 64The CX700/VX800/VX820 additionally appears to support SMBus PEC, although
61doesn't implement it yet. 65this driver doesn't implement it yet.
diff --git a/Documentation/i2c/dev-interface b/Documentation/i2c/dev-interface
index 9dd79123ddd9..3e742ba25536 100644
--- a/Documentation/i2c/dev-interface
+++ b/Documentation/i2c/dev-interface
@@ -4,6 +4,10 @@ the /dev interface. You need to load module i2c-dev for this.
4 4
5Each registered i2c adapter gets a number, counting from 0. You can 5Each registered i2c adapter gets a number, counting from 0. You can
6examine /sys/class/i2c-dev/ to see what number corresponds to which adapter. 6examine /sys/class/i2c-dev/ to see what number corresponds to which adapter.
7Alternatively, you can run "i2cdetect -l" to obtain a formated list of all
8i2c adapters present on your system at a given time. i2cdetect is part of
9the i2c-tools package.
10
7I2C device files are character device files with major device number 89 11I2C device files are character device files with major device number 89
8and a minor device number corresponding to the number assigned as 12and a minor device number corresponding to the number assigned as
9explained above. They should be called "i2c-%d" (i2c-0, i2c-1, ..., 13explained above. They should be called "i2c-%d" (i2c-0, i2c-1, ...,
@@ -17,30 +21,34 @@ So let's say you want to access an i2c adapter from a C program. The
17first thing to do is "#include <linux/i2c-dev.h>". Please note that 21first thing to do is "#include <linux/i2c-dev.h>". Please note that
18there are two files named "i2c-dev.h" out there, one is distributed 22there are two files named "i2c-dev.h" out there, one is distributed
19with the Linux kernel and is meant to be included from kernel 23with the Linux kernel and is meant to be included from kernel
20driver code, the other one is distributed with lm_sensors and is 24driver code, the other one is distributed with i2c-tools and is
21meant to be included from user-space programs. You obviously want 25meant to be included from user-space programs. You obviously want
22the second one here. 26the second one here.
23 27
24Now, you have to decide which adapter you want to access. You should 28Now, you have to decide which adapter you want to access. You should
25inspect /sys/class/i2c-dev/ to decide this. Adapter numbers are assigned 29inspect /sys/class/i2c-dev/ or run "i2cdetect -l" to decide this.
26somewhat dynamically, so you can not even assume /dev/i2c-0 is the 30Adapter numbers are assigned somewhat dynamically, so you can not
27first adapter. 31assume much about them. They can even change from one boot to the next.
28 32
29Next thing, open the device file, as follows: 33Next thing, open the device file, as follows:
34
30 int file; 35 int file;
31 int adapter_nr = 2; /* probably dynamically determined */ 36 int adapter_nr = 2; /* probably dynamically determined */
32 char filename[20]; 37 char filename[20];
33 38
34 sprintf(filename,"/dev/i2c-%d",adapter_nr); 39 snprintf(filename, 19, "/dev/i2c-%d", adapter_nr);
35 if ((file = open(filename,O_RDWR)) < 0) { 40 file = open(filename, O_RDWR);
41 if (file < 0) {
36 /* ERROR HANDLING; you can check errno to see what went wrong */ 42 /* ERROR HANDLING; you can check errno to see what went wrong */
37 exit(1); 43 exit(1);
38 } 44 }
39 45
40When you have opened the device, you must specify with what device 46When you have opened the device, you must specify with what device
41address you want to communicate: 47address you want to communicate:
48
42 int addr = 0x40; /* The I2C address */ 49 int addr = 0x40; /* The I2C address */
43 if (ioctl(file,I2C_SLAVE,addr) < 0) { 50
51 if (ioctl(file, I2C_SLAVE, addr) < 0) {
44 /* ERROR HANDLING; you can check errno to see what went wrong */ 52 /* ERROR HANDLING; you can check errno to see what went wrong */
45 exit(1); 53 exit(1);
46 } 54 }
@@ -48,31 +56,41 @@ address you want to communicate:
48Well, you are all set up now. You can now use SMBus commands or plain 56Well, you are all set up now. You can now use SMBus commands or plain
49I2C to communicate with your device. SMBus commands are preferred if 57I2C to communicate with your device. SMBus commands are preferred if
50the device supports them. Both are illustrated below. 58the device supports them. Both are illustrated below.
59
51 __u8 register = 0x10; /* Device register to access */ 60 __u8 register = 0x10; /* Device register to access */
52 __s32 res; 61 __s32 res;
53 char buf[10]; 62 char buf[10];
63
54 /* Using SMBus commands */ 64 /* Using SMBus commands */
55 res = i2c_smbus_read_word_data(file,register); 65 res = i2c_smbus_read_word_data(file, register);
56 if (res < 0) { 66 if (res < 0) {
57 /* ERROR HANDLING: i2c transaction failed */ 67 /* ERROR HANDLING: i2c transaction failed */
58 } else { 68 } else {
59 /* res contains the read word */ 69 /* res contains the read word */
60 } 70 }
71
61 /* Using I2C Write, equivalent of 72 /* Using I2C Write, equivalent of
62 i2c_smbus_write_word_data(file,register,0x6543) */ 73 i2c_smbus_write_word_data(file, register, 0x6543) */
63 buf[0] = register; 74 buf[0] = register;
64 buf[1] = 0x43; 75 buf[1] = 0x43;
65 buf[2] = 0x65; 76 buf[2] = 0x65;
66 if ( write(file,buf,3) != 3) { 77 if (write(file, buf, 3) ! =3) {
67 /* ERROR HANDLING: i2c transaction failed */ 78 /* ERROR HANDLING: i2c transaction failed */
68 } 79 }
80
69 /* Using I2C Read, equivalent of i2c_smbus_read_byte(file) */ 81 /* Using I2C Read, equivalent of i2c_smbus_read_byte(file) */
70 if (read(file,buf,1) != 1) { 82 if (read(file, buf, 1) != 1) {
71 /* ERROR HANDLING: i2c transaction failed */ 83 /* ERROR HANDLING: i2c transaction failed */
72 } else { 84 } else {
73 /* buf[0] contains the read byte */ 85 /* buf[0] contains the read byte */
74 } 86 }
75 87
88Note that only a subset of the I2C and SMBus protocols can be achieved by
89the means of read() and write() calls. In particular, so-called combined
90transactions (mixing read and write messages in the same transaction)
91aren't supported. For this reason, this interface is almost never used by
92user-space programs.
93
76IMPORTANT: because of the use of inline functions, you *have* to use 94IMPORTANT: because of the use of inline functions, you *have* to use
77'-O' or some variation when you compile your program! 95'-O' or some variation when you compile your program!
78 96
@@ -80,31 +98,29 @@ IMPORTANT: because of the use of inline functions, you *have* to use
80Full interface description 98Full interface description
81========================== 99==========================
82 100
83The following IOCTLs are defined and fully supported 101The following IOCTLs are defined:
84(see also i2c-dev.h):
85 102
86ioctl(file,I2C_SLAVE,long addr) 103ioctl(file, I2C_SLAVE, long addr)
87 Change slave address. The address is passed in the 7 lower bits of the 104 Change slave address. The address is passed in the 7 lower bits of the
88 argument (except for 10 bit addresses, passed in the 10 lower bits in this 105 argument (except for 10 bit addresses, passed in the 10 lower bits in this
89 case). 106 case).
90 107
91ioctl(file,I2C_TENBIT,long select) 108ioctl(file, I2C_TENBIT, long select)
92 Selects ten bit addresses if select not equals 0, selects normal 7 bit 109 Selects ten bit addresses if select not equals 0, selects normal 7 bit
93 addresses if select equals 0. Default 0. This request is only valid 110 addresses if select equals 0. Default 0. This request is only valid
94 if the adapter has I2C_FUNC_10BIT_ADDR. 111 if the adapter has I2C_FUNC_10BIT_ADDR.
95 112
96ioctl(file,I2C_PEC,long select) 113ioctl(file, I2C_PEC, long select)
97 Selects SMBus PEC (packet error checking) generation and verification 114 Selects SMBus PEC (packet error checking) generation and verification
98 if select not equals 0, disables if select equals 0. Default 0. 115 if select not equals 0, disables if select equals 0. Default 0.
99 Used only for SMBus transactions. This request only has an effect if the 116 Used only for SMBus transactions. This request only has an effect if the
100 the adapter has I2C_FUNC_SMBUS_PEC; it is still safe if not, it just 117 the adapter has I2C_FUNC_SMBUS_PEC; it is still safe if not, it just
101 doesn't have any effect. 118 doesn't have any effect.
102 119
103ioctl(file,I2C_FUNCS,unsigned long *funcs) 120ioctl(file, I2C_FUNCS, unsigned long *funcs)
104 Gets the adapter functionality and puts it in *funcs. 121 Gets the adapter functionality and puts it in *funcs.
105 122
106ioctl(file,I2C_RDWR,struct i2c_rdwr_ioctl_data *msgset) 123ioctl(file, I2C_RDWR, struct i2c_rdwr_ioctl_data *msgset)
107
108 Do combined read/write transaction without stop in between. 124 Do combined read/write transaction without stop in between.
109 Only valid if the adapter has I2C_FUNC_I2C. The argument is 125 Only valid if the adapter has I2C_FUNC_I2C. The argument is
110 a pointer to a 126 a pointer to a
@@ -120,10 +136,9 @@ ioctl(file,I2C_RDWR,struct i2c_rdwr_ioctl_data *msgset)
120 The slave address and whether to use ten bit address mode has to be 136 The slave address and whether to use ten bit address mode has to be
121 set in each message, overriding the values set with the above ioctl's. 137 set in each message, overriding the values set with the above ioctl's.
122 138
123 139ioctl(file, I2C_SMBUS, struct i2c_smbus_ioctl_data *args)
124Other values are NOT supported at this moment, except for I2C_SMBUS, 140 Not meant to be called directly; instead, use the access functions
125which you should never directly call; instead, use the access functions 141 below.
126below.
127 142
128You can do plain i2c transactions by using read(2) and write(2) calls. 143You can do plain i2c transactions by using read(2) and write(2) calls.
129You do not need to pass the address byte; instead, set it through 144You do not need to pass the address byte; instead, set it through
@@ -148,7 +163,52 @@ what happened. The 'write' transactions return 0 on success; the
148returns the number of values read. The block buffers need not be longer 163returns the number of values read. The block buffers need not be longer
149than 32 bytes. 164than 32 bytes.
150 165
151The above functions are all macros, that resolve to calls to the 166The above functions are all inline functions, that resolve to calls to
152i2c_smbus_access function, that on its turn calls a specific ioctl 167the i2c_smbus_access function, that on its turn calls a specific ioctl
153with the data in a specific format. Read the source code if you 168with the data in a specific format. Read the source code if you
154want to know what happens behind the screens. 169want to know what happens behind the screens.
170
171
172Implementation details
173======================
174
175For the interested, here's the code flow which happens inside the kernel
176when you use the /dev interface to I2C:
177
1781* Your program opens /dev/i2c-N and calls ioctl() on it, as described in
179section "C example" above.
180
1812* These open() and ioctl() calls are handled by the i2c-dev kernel
182driver: see i2c-dev.c:i2cdev_open() and i2c-dev.c:i2cdev_ioctl(),
183respectively. You can think of i2c-dev as a generic I2C chip driver
184that can be programmed from user-space.
185
1863* Some ioctl() calls are for administrative tasks and are handled by
187i2c-dev directly. Examples include I2C_SLAVE (set the address of the
188device you want to access) and I2C_PEC (enable or disable SMBus error
189checking on future transactions.)
190
1914* Other ioctl() calls are converted to in-kernel function calls by
192i2c-dev. Examples include I2C_FUNCS, which queries the I2C adapter
193functionality using i2c.h:i2c_get_functionality(), and I2C_SMBUS, which
194performs an SMBus transaction using i2c-core.c:i2c_smbus_xfer().
195
196The i2c-dev driver is responsible for checking all the parameters that
197come from user-space for validity. After this point, there is no
198difference between these calls that came from user-space through i2c-dev
199and calls that would have been performed by kernel I2C chip drivers
200directly. This means that I2C bus drivers don't need to implement
201anything special to support access from user-space.
202
2035* These i2c-core.c/i2c.h functions are wrappers to the actual
204implementation of your I2C bus driver. Each adapter must declare
205callback functions implementing these standard calls.
206i2c.h:i2c_get_functionality() calls i2c_adapter.algo->functionality(),
207while i2c-core.c:i2c_smbus_xfer() calls either
208adapter.algo->smbus_xfer() if it is implemented, or if not,
209i2c-core.c:i2c_smbus_xfer_emulated() which in turn calls
210i2c_adapter.algo->master_xfer().
211
212After your I2C bus driver has processed these requests, execution runs
213up the call chain, with almost no processing done, except by i2c-dev to
214package the returned data, if any, in suitable format for the ioctl.
diff --git a/Documentation/i2c/smbus-protocol b/Documentation/i2c/smbus-protocol
index 24bfb65da17d..9df47441f0e7 100644
--- a/Documentation/i2c/smbus-protocol
+++ b/Documentation/i2c/smbus-protocol
@@ -109,8 +109,8 @@ specified through the Comm byte.
109S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A] P 109S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A] P
110 110
111 111
112SMBus Process Call 112SMBus Process Call: i2c_smbus_process_call()
113================== 113=============================================
114 114
115This command selects a device register (through the Comm byte), sends 115This command selects a device register (through the Comm byte), sends
11616 bits of data to it, and reads 16 bits of data in return. 11616 bits of data to it, and reads 16 bits of data in return.
diff --git a/Documentation/i2c/writing-clients b/Documentation/i2c/writing-clients
index 6b61b3a2e90b..d73ee117a8ca 100644
--- a/Documentation/i2c/writing-clients
+++ b/Documentation/i2c/writing-clients
@@ -606,6 +606,8 @@ SMBus communication
606 extern s32 i2c_smbus_read_word_data(struct i2c_client * client, u8 command); 606 extern s32 i2c_smbus_read_word_data(struct i2c_client * client, u8 command);
607 extern s32 i2c_smbus_write_word_data(struct i2c_client * client, 607 extern s32 i2c_smbus_write_word_data(struct i2c_client * client,
608 u8 command, u16 value); 608 u8 command, u16 value);
609 extern s32 i2c_smbus_process_call(struct i2c_client *client,
610 u8 command, u16 value);
609 extern s32 i2c_smbus_read_block_data(struct i2c_client * client, 611 extern s32 i2c_smbus_read_block_data(struct i2c_client * client,
610 u8 command, u8 *values); 612 u8 command, u8 *values);
611 extern s32 i2c_smbus_write_block_data(struct i2c_client * client, 613 extern s32 i2c_smbus_write_block_data(struct i2c_client * client,
@@ -621,8 +623,6 @@ These ones were removed from i2c-core because they had no users, but could
621be added back later if needed: 623be added back later if needed:
622 624
623 extern s32 i2c_smbus_write_quick(struct i2c_client * client, u8 value); 625 extern s32 i2c_smbus_write_quick(struct i2c_client * client, u8 value);
624 extern s32 i2c_smbus_process_call(struct i2c_client * client,
625 u8 command, u16 value);
626 extern s32 i2c_smbus_block_process_call(struct i2c_client *client, 626 extern s32 i2c_smbus_block_process_call(struct i2c_client *client,
627 u8 command, u8 length, 627 u8 command, u8 length,
628 u8 *values) 628 u8 *values)
diff --git a/Documentation/ia64/kvm.txt b/Documentation/ia64/kvm.txt
index 914d07f49268..84f7cb3d5bec 100644
--- a/Documentation/ia64/kvm.txt
+++ b/Documentation/ia64/kvm.txt
@@ -1,7 +1,8 @@
1Currently, kvm module in EXPERIMENTAL stage on IA64. This means that 1Currently, kvm module is in EXPERIMENTAL stage on IA64. This means that
2interfaces are not stable enough to use. So, plase had better don't run 2interfaces are not stable enough to use. So, please don't run critical
3critical applications in virtual machine. We will try our best to make it 3applications in virtual machine.
4strong in future versions! 4We will try our best to improve it in future versions!
5
5 Guide: How to boot up guests on kvm/ia64 6 Guide: How to boot up guests on kvm/ia64
6 7
7This guide is to describe how to enable kvm support for IA-64 systems. 8This guide is to describe how to enable kvm support for IA-64 systems.
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 2ca9c8f8c8d8..2443f5bb4364 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -658,11 +658,12 @@ and is between 256 and 4096 characters. It is defined in the file
658 earlyprintk= [X86-32,X86-64,SH,BLACKFIN] 658 earlyprintk= [X86-32,X86-64,SH,BLACKFIN]
659 earlyprintk=vga 659 earlyprintk=vga
660 earlyprintk=serial[,ttySn[,baudrate]] 660 earlyprintk=serial[,ttySn[,baudrate]]
661 earlyprintk=dbgp
661 662
662 Append ",keep" to not disable it when the real console 663 Append ",keep" to not disable it when the real console
663 takes over. 664 takes over.
664 665
665 Only vga or serial at a time, not both. 666 Only vga or serial or usb debug port at a time.
666 667
667 Currently only ttyS0 and ttyS1 are supported. 668 Currently only ttyS0 and ttyS1 are supported.
668 669
@@ -1231,6 +1232,29 @@ and is between 256 and 4096 characters. It is defined in the file
1231 or 1232 or
1232 memmap=0x10000$0x18690000 1233 memmap=0x10000$0x18690000
1233 1234
1235 memory_corruption_check=0/1 [X86]
1236 Some BIOSes seem to corrupt the first 64k of
1237 memory when doing things like suspend/resume.
1238 Setting this option will scan the memory
1239 looking for corruption. Enabling this will
1240 both detect corruption and prevent the kernel
1241 from using the memory being corrupted.
1242 However, its intended as a diagnostic tool; if
1243 repeatable BIOS-originated corruption always
1244 affects the same memory, you can use memmap=
1245 to prevent the kernel from using that memory.
1246
1247 memory_corruption_check_size=size [X86]
1248 By default it checks for corruption in the low
1249 64k, making this memory unavailable for normal
1250 use. Use this parameter to scan for
1251 corruption in more or less memory.
1252
1253 memory_corruption_check_period=seconds [X86]
1254 By default it checks for corruption every 60
1255 seconds. Use this parameter to check at some
1256 other rate. 0 disables periodic checking.
1257
1234 memtest= [KNL,X86] Enable memtest 1258 memtest= [KNL,X86] Enable memtest
1235 Format: <integer> 1259 Format: <integer>
1236 range: 0,4 : pattern number 1260 range: 0,4 : pattern number
@@ -1428,6 +1452,12 @@ and is between 256 and 4096 characters. It is defined in the file
1428 1452
1429 nolapic_timer [X86-32,APIC] Do not use the local APIC timer. 1453 nolapic_timer [X86-32,APIC] Do not use the local APIC timer.
1430 1454
1455 nox2apic [X86-64,APIC] Do not enable x2APIC mode.
1456
1457 x2apic_phys [X86-64,APIC] Use x2apic physical mode instead of
1458 default x2apic cluster mode on platforms
1459 supporting x2apic.
1460
1431 noltlbs [PPC] Do not use large page/tlb entries for kernel 1461 noltlbs [PPC] Do not use large page/tlb entries for kernel
1432 lowmem mapping on PPC40x. 1462 lowmem mapping on PPC40x.
1433 1463
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 @@
1Hard disk shock protection
2==========================
3
4Author: Elias Oltmanns <eo@nebensachen.de>
5Last modified: 2008-10-03
6
7
80. Contents
9-----------
10
111. Intro
122. The interface
133. References
144. CREDITS
15
16
171. Intro
18--------
19
20ATA/ATAPI-7 specifies the IDLE IMMEDIATE command with unload feature.
21Issuing this command should cause the drive to switch to idle mode and
22unload disk heads. This feature is being used in modern laptops in
23conjunction with accelerometers and appropriate software to implement
24a shock protection facility. The idea is to stop all I/O operations on
25the internal hard drive and park its heads on the ramp when critical
26situations are anticipated. The desire to have such a feature
27available on GNU/Linux systems has been the original motivation to
28implement a generic disk head parking interface in the Linux kernel.
29Please note, however, that other components have to be set up on your
30system in order to get disk shock protection working (see
31section 3. References below for pointers to more information about
32that).
33
34
352. The interface
36----------------
37
38For each ATA device, the kernel exports the file
39block/*/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.
42Otherwise, writing an integer value to this file will take the heads
43of the respective drive off the platter and block all I/O operations
44for the specified number of milliseconds. When the timeout expires and
45no further disk head park request has been issued in the meantime,
46normal operation will be resumed. The maximal value accepted for a
47timeout is 30000 milliseconds. Exceeding this limit will return
48-EOVERFLOW, but heads will be parked anyway and the timeout will be
49set to 30 seconds. However, you can always change a timeout to any
50value between 0 and 30000 by issuing a subsequent head park request
51before the timeout of the previous one has expired. In particular, the
52total timeout can exceed 30 seconds and, more importantly, you can
53cancel a previously set timeout and resume normal operation
54immediately by specifying a timeout of 0. Values below -2 are rejected
55with -EINVAL (see below for the special meaning of -1 and -2). If the
56timeout specified for a recent head park request has not yet expired,
57reading from /sys/block/*/device/unload_heads will report the number
58of milliseconds remaining until normal operation will be resumed;
59otherwise, reading the unload_heads attribute will return 0.
60
61For 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
66A simple
67
68# cat /sys/block/sda/device/unload_heads
69
70will show you how many milliseconds are left before normal operation
71will be resumed.
72
73A word of caution: The fact that the interface operates on a basis of
74milliseconds may raise expectations that cannot be satisfied in
75reality. In fact, the ATA specs clearly state that the time for an
76unload operation to complete is vendor specific. The hint in ATA-7
77that this will typically be within 500 milliseconds apparently has
78been dropped in ATA-8.
79
80There is a technical detail of this implementation that may cause some
81confusion and should be discussed here. When a head park request has
82been issued to a device successfully, all I/O operations on the
83controller port this device is attached to will be deferred. That is
84to say, any other device that may be connected to the same port will
85be affected too. The only exception is that a subsequent head unload
86request to that other device will be executed immediately. Further
87operations on that port will be deferred until the timeout specified
88for either device on the port has expired. As far as PATA (old style
89IDE) configurations are concerned, there can only be two devices
90attached to any single port. In SATA world we have port multipliers
91which means that a user-issued head parking request to one device may
92actually result in stopping I/O to a whole bunch of devices. However,
93since this feature is supposed to be used on laptops and does not seem
94to be very useful in any other environment, there will be mostly one
95device per port. Even if the CD/DVD writer happens to be connected to
96the same port as the hard drive, it generally *should* recover just
97fine from the occasional buffer under-run incurred by a head park
98request to the HD. Actually, when you are using an ide driver rather
99than its libata counterpart (i.e. your disk is called /dev/hda
100instead of /dev/sda), then parking the heads of one drive (drive X)
101will 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
103reset is required to recover from an exception on drive Y that further
104I/O operations on that drive (and the reset itself) will be delayed
105until drive X is no longer in the parked state.
106
107Finally, there are some hard drives that only comply with an earlier
108version of the ATA standard than ATA-7, but do support the unload
109feature nonetheless. Unfortunately, there is no safe way Linux can
110detect these devices, so you won't be able to write to the
111unload_heads attribute. If you know that your device really does
112support the unload feature (for instance, because the vendor of your
113laptop or the hard drive itself told you so), then you can tell the
114kernel to enable the usage of this feature for that drive by writing
115the special value -1 to the unload_heads attribute:
116
117# echo -1 > /sys/block/sda/device/unload_heads
118
119will enable the feature for /dev/sda, and giving -2 instead of -1 will
120disable it again.
121
122
1233. References
124-------------
125
126There are several laptops from different vendors featuring shock
127protection capabilities. As manufacturers have refused to support open
128source development of the required software components so far, Linux
129support for shock protection varies considerably between different
130hardware implementations. Ideally, this section should contain a list
131of pointers at different projects aiming at an implementation of shock
132protection on different systems. Unfortunately, I only know of a
133single project which, although still considered experimental, is fit
134for use. Please feel free to add projects that have been the victims
135of 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
1424. CREDITS
143----------
144
145This implementation of disk head parking has been inspired by a patch
146originally published by Jon Escombe <lists@dresco.co.uk>. My efforts
147to develop an implementation of this feature that is fit to be merged
148into mainline have been aided by various kernel developers, in
149particular by Tejun Heo and Bartlomiej Zolnierkiewicz.
diff --git a/Documentation/networking/cs89x0.txt b/Documentation/networking/cs89x0.txt
index 6387d3decf85..c725d33b316f 100644
--- a/Documentation/networking/cs89x0.txt
+++ b/Documentation/networking/cs89x0.txt
@@ -3,7 +3,7 @@ NOTE
3---- 3----
4 4
5This document was contributed by Cirrus Logic for kernel 2.2.5. This version 5This document was contributed by Cirrus Logic for kernel 2.2.5. This version
6has been updated for 2.3.48 by Andrew Morton <andrewm@uow.edu.au> 6has been updated for 2.3.48 by Andrew Morton.
7 7
8Cirrus make a copy of this driver available at their website, as 8Cirrus make a copy of this driver available at their website, as
9described below. In general, you should use the driver version which 9described below. In general, you should use the driver version which
@@ -690,7 +690,7 @@ latest drivers and technical publications.
6906.4 Current maintainer 6906.4 Current maintainer
691 691
692In February 2000 the maintenance of this driver was assumed by Andrew 692In February 2000 the maintenance of this driver was assumed by Andrew
693Morton <akpm@zip.com.au> 693Morton.
694 694
6956.5 Kernel module parameters 6956.5 Kernel module parameters
696 696
diff --git a/Documentation/networking/vortex.txt b/Documentation/networking/vortex.txt
index 6356d3faed36..bd70976b8160 100644
--- a/Documentation/networking/vortex.txt
+++ b/Documentation/networking/vortex.txt
@@ -1,5 +1,5 @@
1Documentation/networking/vortex.txt 1Documentation/networking/vortex.txt
2Andrew Morton <andrewm@uow.edu.au> 2Andrew Morton
330 April 2000 330 April 2000
4 4
5 5
@@ -11,7 +11,7 @@ The driver was written by Donald Becker <becker@scyld.com>
11Don is no longer the prime maintainer of this version of the driver. 11Don is no longer the prime maintainer of this version of the driver.
12Please report problems to one or more of: 12Please report problems to one or more of:
13 13
14 Andrew Morton <akpm@osdl.org> 14 Andrew Morton
15 Netdev mailing list <netdev@vger.kernel.org> 15 Netdev mailing list <netdev@vger.kernel.org>
16 Linux kernel mailing list <linux-kernel@vger.kernel.org> 16 Linux kernel mailing list <linux-kernel@vger.kernel.org>
17 17
@@ -305,11 +305,6 @@ Donald's wake-on-LAN page:
305 305
306 ftp://ftp.3com.com/pub/nic/3c90x/3c90xx2.exe 306 ftp://ftp.3com.com/pub/nic/3c90x/3c90xx2.exe
307 307
308Driver updates and a detailed changelog for the modifications which
309were made for the 2.3/2,4 series kernel is available at
310
311 http://www.zip.com.au/~akpm/linux/#3c59x-bc
312
313 308
314Autonegotiation notes 309Autonegotiation notes
315--------------------- 310---------------------
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 @@
1This file details changes in 2.6 which affect PCMCIA card driver authors: 1This 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
4The regulator machine driver interface is intended for board/machine specific 4The regulator machine driver interface is intended for board/machine specific
5initialisation code to configure the regulator subsystem. Typical things that 5initialisation code to configure the regulator subsystem.
6machine 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
141. Regulator -> device mapping
15==============================
16Consider the following machine :- 7Consider 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
22The drivers for consumers A & B must be mapped to the correct regulator in 13The drivers for consumers A & B must be mapped to the correct regulator in
23order to control their power supply. This mapping can be achieved in machine 14order to control their power supply. This mapping can be achieved in machine
24initialisation code by calling :- 15initialisation code by creating a struct regulator_consumer_supply for
16each regulator.
17
18struct regulator_consumer_supply {
19 struct device *dev; /* consumer */
20 const char *supply; /* consumer supply - e.g. "vcc" */
21};
25 22
26int regulator_set_device_supply(const char *regulator, struct device *dev, 23e.g. for the machine above
27 const char *supply);
28 24
29and is shown with the following code :- 25static struct regulator_consumer_supply regulator1_consumers[] = {
26{
27 .dev = &platform_consumerB_device.dev,
28 .supply = "Vcc",
29},};
30 30
31regulator_set_device_supply("Regulator-1", devB, "Vcc"); 31static struct regulator_consumer_supply regulator2_consumers[] = {
32regulator_set_device_supply("Regulator-2", devA, "Vcc"); 32{
33 .dev = &platform_consumerA_device.dev,
34 .supply = "Vcc",
35},};
33 36
34This maps Regulator-1 to the 'Vcc' supply for Consumer B and maps Regulator-2 37This maps Regulator-1 to the 'Vcc' supply for Consumer B and maps Regulator-2
35to the 'Vcc' supply for Consumer A. 38to the 'Vcc' supply for Consumer A.
36 39
37 40Constraints can now be registered by defining a struct regulator_init_data
382. Regulator supply configuration. 41for each regulator power domain. This structure also maps the consumers
39================================== 42to their supply regulator :-
40Consider the following machine (again) :- 43
41 44static 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
46Regulator-1 supplies power to Regulator-2. This relationship must be registered 54Regulator-1 supplies power to Regulator-2. This relationship must be registered
47with the core so that Regulator-1 is also enabled when Consumer A enables it's 55with the core so that Regulator-1 is also enabled when Consumer A enables it's
48supply (Regulator-2). 56supply (Regulator-2). The supply regulator is set by the supply_regulator_dev
49 57field below:-
50This relationship can be register with the core via :- 58
51 59static struct regulator_init_data regulator2_data = {
52int regulator_set_supply(const char *regulator, const char *regulator_supply); 60 .supply_regulator_dev = &platform_regulator1_device.dev,
53 61 .constraints = {
54In this example we would use the following code :- 62 .min_uV = 1800000,
55 63 .max_uV = 2000000,
56regulator_set_supply("Regulator-2", "Regulator-1"); 64 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
57 65 .valid_modes_mask = REGULATOR_MODE_NORMAL,
58Relationships can be queried by calling :- 66 },
59 67 .num_consumer_supplies = ARRAY_SIZE(regulator2_consumers),
60const char *regulator_get_supply(const char *regulator); 68 .consumer_supplies = regulator2_consumers,
61
62
633. Power Domain constraint setting.
64===================================
65Each power domain within a system has physical constraints on voltage and
66current. This must be defined in software so that the power domain is always
67operated within specifications.
68
69Consider the following machine (again) :-
70
71 Regulator-1 -+-> Regulator-2 --> [Consumer A @ 1.8 - 2.0V]
72 |
73 +-> [Consumer B @ 3.3V]
74
75This gives us two regulators and two power domains:
76
77 Domain 1: Regulator-2, Consumer B.
78 Domain 2: Consumer A.
79
80Constraints can be registered by calling :-
81
82int regulator_set_platform_constraints(const char *regulator,
83 struct regulation_constraints *constraints);
84
85The example is defined as follows :-
86
87struct regulation_constraints domain_1 = {
88 .min_uV = 3300000,
89 .max_uV = 3300000,
90 .valid_modes_mask = REGULATOR_MODE_NORMAL,
91}; 69};
92 70
93struct regulation_constraints domain_2 = { 71Finally the regulator devices must be registered in the usual manner.
94 .min_uV = 1800000, 72
95 .max_uV = 2000000, 73static 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 = &regulator1_data,
79 },
80},
81{
82 .name = "regulator",
83 .id = DCDC_2,
84 .dev = {
85 .platform_data = &regulator2_data,
86 },
87},
98}; 88};
89/* register regulator 1 device */
90platform_device_register(&wm8350_regulator_devices[0]);
99 91
100regulator_set_platform_constraints("Regulator-1", &domain_1); 92/* register regulator 2 device */
101regulator_set_platform_constraints("Regulator-2", &domain_2); 93platform_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
11Drivers can register a regulator by calling :- 11Drivers can register a regulator by calling :-
12 12
13struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc, 13struct regulator_dev *regulator_register(struct device *dev,
14 void *reg_data); 14 struct regulator_desc *regulator_desc);
15 15
16This will register the regulators capabilities and operations the regulator 16This will register the regulators capabilities and operations to the regulator
17core. The core does not touch reg_data (private to regulator driver). 17core.
18 18
19Regulators can be unregistered by calling :- 19Regulators can be unregistered by calling :-
20 20
diff --git a/Documentation/power/s2ram.txt b/Documentation/power/s2ram.txt
index b05f512130ea..2ebdc6091ce1 100644
--- a/Documentation/power/s2ram.txt
+++ b/Documentation/power/s2ram.txt
@@ -54,3 +54,21 @@ used to run with "radeonfb" (it's an ATI Radeon mobility). It turns out
54that "radeonfb" simply cannot resume that device - it tries to set the 54that "radeonfb" simply cannot resume that device - it tries to set the
55PLL's, and it just _hangs_. Using the regular VGA console and letting X 55PLL's, and it just _hangs_. Using the regular VGA console and letting X
56resume it instead works fine. 56resume it instead works fine.
57
58NOTE
59====
60pm_trace uses the system's Real Time Clock (RTC) to save the magic number.
61Reason for this is that the RTC is the only reliably available piece of
62hardware during resume operations where a value can be set that will
63survive a reboot.
64
65Consequence is that after a resume (even if it is successful) your system
66clock will have a value corresponding to the magic mumber instead of the
67correct date/time! It is therefore advisable to use a program like ntp-date
68or rdate to reset the correct date/time from an external time source when
69using this trace option.
70
71As the clock keeps ticking it is also essential that the reboot is done
72quickly after the resume failure. The trace option does not use the seconds
73or the low order bits of the minutes of the RTC, but a too long delay will
74corrupt the magic value.
diff --git a/Documentation/powerpc/00-INDEX b/Documentation/powerpc/00-INDEX
index 29d839ce7327..e3960b8c8689 100644
--- a/Documentation/powerpc/00-INDEX
+++ b/Documentation/powerpc/00-INDEX
@@ -18,10 +18,6 @@ mpc52xx.txt
18 - Linux 2.6.x on MPC52xx family 18 - Linux 2.6.x on MPC52xx family
19mpc52xx-device-tree-bindings.txt 19mpc52xx-device-tree-bindings.txt
20 - MPC5200 Device Tree Bindings 20 - MPC5200 Device Tree Bindings
21ppc_htab.txt
22 - info about the Linux/PPC /proc/ppc_htab entry
23smp.txt
24 - use and state info about Linux/PPC on MP machines
25sound.txt 21sound.txt
26 - info on sound support under Linux/PPC 22 - info on sound support under Linux/PPC
27zImage_layout.txt 23zImage_layout.txt
diff --git a/Documentation/powerpc/dts-bindings/fsl/83xx-512x-pci.txt b/Documentation/powerpc/dts-bindings/fsl/83xx-512x-pci.txt
new file mode 100644
index 000000000000..35a465362408
--- /dev/null
+++ b/Documentation/powerpc/dts-bindings/fsl/83xx-512x-pci.txt
@@ -0,0 +1,40 @@
1* Freescale 83xx and 512x PCI bridges
2
3Freescale 83xx and 512x SOCs include the same pci bridge core.
4
583xx/512x specific notes:
6- reg: should contain two address length tuples
7 The first is for the internal pci bridge registers
8 The second is for the pci config space access registers
9
10Example (MPC8313ERDB)
11 pci0: pci@e0008500 {
12 cell-index = <1>;
13 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
14 interrupt-map = <
15 /* IDSEL 0x0E -mini PCI */
16 0x7000 0x0 0x0 0x1 &ipic 18 0x8
17 0x7000 0x0 0x0 0x2 &ipic 18 0x8
18 0x7000 0x0 0x0 0x3 &ipic 18 0x8
19 0x7000 0x0 0x0 0x4 &ipic 18 0x8
20
21 /* IDSEL 0x0F - PCI slot */
22 0x7800 0x0 0x0 0x1 &ipic 17 0x8
23 0x7800 0x0 0x0 0x2 &ipic 18 0x8
24 0x7800 0x0 0x0 0x3 &ipic 17 0x8
25 0x7800 0x0 0x0 0x4 &ipic 18 0x8>;
26 interrupt-parent = <&ipic>;
27 interrupts = <66 0x8>;
28 bus-range = <0x0 0x0>;
29 ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000
30 0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
31 0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00100000>;
32 clock-frequency = <66666666>;
33 #interrupt-cells = <1>;
34 #size-cells = <2>;
35 #address-cells = <3>;
36 reg = <0xe0008500 0x100 /* internal registers */
37 0xe0008300 0x8>; /* config space access registers */
38 compatible = "fsl,mpc8349-pci";
39 device_type = "pci";
40 };
diff --git a/Documentation/powerpc/dts-bindings/fsl/8xxx_gpio.txt b/Documentation/powerpc/dts-bindings/fsl/8xxx_gpio.txt
new file mode 100644
index 000000000000..d015dcec4011
--- /dev/null
+++ b/Documentation/powerpc/dts-bindings/fsl/8xxx_gpio.txt
@@ -0,0 +1,40 @@
1GPIO controllers on MPC8xxx SoCs
2
3This is for the non-QE/CPM/GUTs GPIO controllers as found on
48349, 8572, 8610 and compatible.
5
6Every GPIO controller node must have #gpio-cells property defined,
7this information will be used to translate gpio-specifiers.
8
9Required properties:
10- compatible : "fsl,<CHIP>-gpio" followed by "fsl,mpc8349-gpio" for
11 83xx, "fsl,mpc8572-gpio" for 85xx and "fsl,mpc8610-gpio" for 86xx.
12- #gpio-cells : Should be two. The first cell is the pin number and the
13 second cell is used to specify optional parameters (currently unused).
14 - interrupts : Interrupt mapping for GPIO IRQ (currently unused).
15 - interrupt-parent : Phandle for the interrupt controller that
16 services interrupts for this device.
17- gpio-controller : Marks the port as GPIO controller.
18
19Example of gpio-controller nodes for a MPC8347 SoC:
20
21 gpio1: gpio-controller@c00 {
22 #gpio-cells = <2>;
23 compatible = "fsl,mpc8347-gpio", "fsl,mpc8349-gpio";
24 reg = <0xc00 0x100>;
25 interrupts = <74 0x8>;
26 interrupt-parent = <&ipic>;
27 gpio-controller;
28 };
29
30 gpio2: gpio-controller@d00 {
31 #gpio-cells = <2>;
32 compatible = "fsl,mpc8347-gpio", "fsl,mpc8349-gpio";
33 reg = <0xd00 0x100>;
34 interrupts = <75 0x8>;
35 interrupt-parent = <&ipic>;
36 gpio-controller;
37 };
38
39See booting-without-of.txt for details of how to specify GPIO
40information for devices.
diff --git a/Documentation/powerpc/dts-bindings/fsl/dma.txt b/Documentation/powerpc/dts-bindings/fsl/dma.txt
index 86826df00e64..cc453110fc46 100644
--- a/Documentation/powerpc/dts-bindings/fsl/dma.txt
+++ b/Documentation/powerpc/dts-bindings/fsl/dma.txt
@@ -20,7 +20,7 @@ Required properties:
20 - compatible : compatible list, contains 2 entries, first is 20 - compatible : compatible list, contains 2 entries, first is
21 "fsl,CHIP-dma-channel", where CHIP is the processor 21 "fsl,CHIP-dma-channel", where CHIP is the processor
22 (mpc8349, mpc8350, etc.) and the second is 22 (mpc8349, mpc8350, etc.) and the second is
23 "fsl,elo-dma-channel" 23 "fsl,elo-dma-channel". However, see note below.
24 - reg : <registers mapping for channel> 24 - reg : <registers mapping for channel>
25 - cell-index : dma channel index starts at 0. 25 - cell-index : dma channel index starts at 0.
26 26
@@ -82,7 +82,7 @@ Required properties:
82 - compatible : compatible list, contains 2 entries, first is 82 - compatible : compatible list, contains 2 entries, first is
83 "fsl,CHIP-dma-channel", where CHIP is the processor 83 "fsl,CHIP-dma-channel", where CHIP is the processor
84 (mpc8540, mpc8560, etc.) and the second is 84 (mpc8540, mpc8560, etc.) and the second is
85 "fsl,eloplus-dma-channel" 85 "fsl,eloplus-dma-channel". However, see note below.
86 - cell-index : dma channel index starts at 0. 86 - cell-index : dma channel index starts at 0.
87 - reg : <registers mapping for channel> 87 - reg : <registers mapping for channel>
88 - interrupts : <interrupt mapping for DMA channel IRQ> 88 - interrupts : <interrupt mapping for DMA channel IRQ>
@@ -125,3 +125,12 @@ Example:
125 interrupts = <17 2>; 125 interrupts = <17 2>;
126 }; 126 };
127 }; 127 };
128
129Note on DMA channel compatible properties: The compatible property must say
130"fsl,elo-dma-channel" or "fsl,eloplus-dma-channel" to be used by the Elo DMA
131driver (fsldma). Any DMA channel used by fsldma cannot be used by another
132DMA driver, such as the SSI sound drivers for the MPC8610. Therefore, any DMA
133channel that should be used for another driver should not use
134"fsl,elo-dma-channel" or "fsl,eloplus-dma-channel". For the SSI drivers, for
135example, the compatible property should be "fsl,ssi-dma-channel". See ssi.txt
136for more information.
diff --git a/Documentation/powerpc/dts-bindings/fsl/ssi.txt b/Documentation/powerpc/dts-bindings/fsl/ssi.txt
index d100555d488a..a2d963998a65 100644
--- a/Documentation/powerpc/dts-bindings/fsl/ssi.txt
+++ b/Documentation/powerpc/dts-bindings/fsl/ssi.txt
@@ -24,6 +24,12 @@ Required properties:
24 "rj-master" - r.j., SSI is clock master 24 "rj-master" - r.j., SSI is clock master
25 "ac97-slave" - AC97 mode, SSI is clock slave 25 "ac97-slave" - AC97 mode, SSI is clock slave
26 "ac97-master" - AC97 mode, SSI is clock master 26 "ac97-master" - AC97 mode, SSI is clock master
27- fsl,playback-dma: phandle to a node for the DMA channel to use for
28 playback of audio. This is typically dictated by SOC
29 design. See the notes below.
30- fsl,capture-dma: phandle to a node for the DMA channel to use for
31 capture (recording) of audio. This is typically dictated
32 by SOC design. See the notes below.
27 33
28Optional properties: 34Optional properties:
29- codec-handle : phandle to a 'codec' node that defines an audio 35- codec-handle : phandle to a 'codec' node that defines an audio
@@ -36,3 +42,20 @@ Child 'codec' node required properties:
36Child 'codec' node optional properties: 42Child 'codec' node optional properties:
37- clock-frequency : The frequency of the input clock, which typically 43- clock-frequency : The frequency of the input clock, which typically
38 comes from an on-board dedicated oscillator. 44 comes from an on-board dedicated oscillator.
45
46Notes on fsl,playback-dma and fsl,capture-dma:
47
48On SOCs that have an SSI, specific DMA channels are hard-wired for playback
49and capture. On the MPC8610, for example, SSI1 must use DMA channel 0 for
50playback and DMA channel 1 for capture. SSI2 must use DMA channel 2 for
51playback and DMA channel 3 for capture. The developer can choose which
52DMA controller to use, but the channels themselves are hard-wired. The
53purpose of these two properties is to represent this hardware design.
54
55The device tree nodes for the DMA channels that are referenced by
56"fsl,playback-dma" and "fsl,capture-dma" must be marked as compatible with
57"fsl,ssi-dma-channel". The SOC-specific compatible string (e.g.
58"fsl,mpc8610-dma-channel") can remain. If these nodes are left as
59"fsl,elo-dma-channel" or "fsl,eloplus-dma-channel", then the generic Elo DMA
60drivers (fsldma) will attempt to use them, and it will conflict with the
61sound drivers.
diff --git a/Documentation/powerpc/ppc_htab.txt b/Documentation/powerpc/ppc_htab.txt
deleted file mode 100644
index 8b8c7df29fa9..000000000000
--- a/Documentation/powerpc/ppc_htab.txt
+++ /dev/null
@@ -1,118 +0,0 @@
1 Information about /proc/ppc_htab
2=====================================================================
3
4This document and the related code was written by me (Cort Dougan), please
5email me (cort@fsmlabs.com) if you have questions, comments or corrections.
6
7Last Change: 2.16.98
8
9This entry in the proc directory is readable by all users but only
10writable by root.
11
12The ppc_htab interface is a user level way of accessing the
13performance monitoring registers as well as providing information
14about the PTE hash table.
15
161. Reading
17
18 Reading this file will give you information about the memory management
19 hash table that serves as an extended tlb for page translation on the
20 powerpc. It will also give you information about performance measurement
21 specific to the cpu that you are using.
22
23 Explanation of the 604 Performance Monitoring Fields:
24 MMCR0 - the current value of the MMCR0 register
25 PMC1
26 PMC2 - the value of the performance counters and a
27 description of what events they are counting
28 which are based on MMCR0 bit settings.
29 Explanation of the PTE Hash Table fields:
30
31 Size - hash table size in Kb.
32 Buckets - number of buckets in the table.
33 Address - the virtual kernel address of the hash table base.
34 Entries - the number of ptes that can be stored in the hash table.
35 User/Kernel - how many pte's are in use by the kernel or user at that time.
36 Overflows - How many of the entries are in their secondary hash location.
37 Percent full - ratio of free pte entries to in use entries.
38 Reloads - Count of how many hash table misses have occurred
39 that were fixed with a reload from the linux tables.
40 Should always be 0 on 603 based machines.
41 Non-error Misses - Count of how many hash table misses have occurred
42 that were completed with the creation of a pte in the linux
43 tables with a call to do_page_fault().
44 Error Misses - Number of misses due to errors such as bad address
45 and permission violations. This includes kernel access of
46 bad user addresses that are fixed up by the trap handler.
47
48 Note that calculation of the data displayed from /proc/ppc_htab takes
49 a long time and spends a great deal of time in the kernel. It would
50 be quite hard on performance to read this file constantly. In time
51 there may be a counter in the kernel that allows successive reads from
52 this file only after a given amount of time has passed to reduce the
53 possibility of a user slowing the system by reading this file.
54
552. Writing
56
57 Writing to the ppc_htab allows you to change the characteristics of
58 the powerpc PTE hash table and setup performance monitoring.
59
60 Resizing the PTE hash table is not enabled right now due to many
61 complications with moving the hash table, rehashing the entries
62 and many many SMP issues that would have to be dealt with.
63
64 Write options to ppc_htab:
65
66 - To set the size of the hash table to 64Kb:
67
68 echo 'size 64' > /proc/ppc_htab
69
70 The size must be a multiple of 64 and must be greater than or equal to
71 64.
72
73 - To turn off performance monitoring:
74
75 echo 'off' > /proc/ppc_htab
76
77 - To reset the counters without changing what they're counting:
78
79 echo 'reset' > /proc/ppc_htab
80
81 Note that counting will continue after the reset if it is enabled.
82
83 - To count only events in user mode or only in kernel mode:
84
85 echo 'user' > /proc/ppc_htab
86 ...or...
87 echo 'kernel' > /proc/ppc_htab
88
89 Note that these two options are exclusive of one another and the
90 lack of either of these options counts user and kernel.
91 Using 'reset' and 'off' reset these flags.
92
93 - The 604 has 2 performance counters which can each count events from
94 a specific set of events. These sets are disjoint so it is not
95 possible to count _any_ combination of 2 events. One event can
96 be counted by PMC1 and one by PMC2.
97
98 To start counting a particular event use:
99
100 echo 'event' > /proc/ppc_htab
101
102 and choose from these events:
103
104 PMC1
105 ----
106 'ic miss' - instruction cache misses
107 'dtlb' - data tlb misses (not hash table misses)
108
109 PMC2
110 ----
111 'dc miss' - data cache misses
112 'itlb' - instruction tlb misses (not hash table misses)
113 'load miss time' - cycles to complete a load miss
114
1153. Bugs
116
117 The PMC1 and PMC2 counters can overflow and give no indication of that
118 in /proc/ppc_htab.
diff --git a/Documentation/powerpc/smp.txt b/Documentation/powerpc/smp.txt
deleted file mode 100644
index 5b581b849ff7..000000000000
--- a/Documentation/powerpc/smp.txt
+++ /dev/null
@@ -1,34 +0,0 @@
1 Information about Linux/PPC SMP mode
2=====================================================================
3
4This document and the related code was written by me
5(Cort Dougan, cort@fsmlabs.com) please email me if you have questions,
6comments or corrections.
7
8Last Change: 3.31.99
9
10If you want to help by writing code or testing different hardware please
11email me!
12
131. State of Supported Hardware
14
15 PowerSurge Architecture - tested on UMAX s900, Apple 9600
16 The second processor on this machine boots up just fine and
17 enters its idle loop. Hopefully a completely working SMP kernel
18 on this machine will be done shortly.
19
20 The code makes the assumption of only two processors. The changes
21 necessary to work with any number would not be overly difficult but
22 I don't have any machines with >2 processors so it's not high on my
23 list of priorities. If anyone else would like do to the work email
24 me and I can point out the places that need changed. If you have >2
25 processors and don't want to add support yourself let me know and I
26 can take a look into it.
27
28 BeBox
29 BeBox support hasn't been added to the 2.1.X kernels from 2.0.X
30 but work is being done and SMP support for BeBox is in the works.
31
32 CHRP
33 CHRP SMP works and is fairly solid. It's been tested on the IBM F50
34 with 4 processors for quite some time now.
diff --git a/Documentation/scsi/ChangeLog.megaraid b/Documentation/scsi/ChangeLog.megaraid
index 37796fe45bd0..eaa4801f2ce6 100644
--- a/Documentation/scsi/ChangeLog.megaraid
+++ b/Documentation/scsi/ChangeLog.megaraid
@@ -409,7 +409,7 @@ i. Function reordering so that inline functions are defined before they
409 megaraid_mbox_prepare_pthru, megaraid_mbox_prepare_epthru, 409 megaraid_mbox_prepare_pthru, megaraid_mbox_prepare_epthru,
410 megaraid_busywait_mbox 410 megaraid_busywait_mbox
411 411
412 - Andrew Morton <akpm@osdl.org>, 08.19.2004 412 - Andrew Morton, 08.19.2004
413 linux-scsi mailing list 413 linux-scsi mailing list
414 414
415 "Something else to clean up after inclusion: every instance of an 415 "Something else to clean up after inclusion: every instance of an
@@ -471,13 +471,13 @@ vi. Add support for 64-bit applications. Current drivers assume only
471vii. Move the function declarations for the management module from 471vii. Move the function declarations for the management module from
472 megaraid_mm.h to megaraid_mm.c 472 megaraid_mm.h to megaraid_mm.c
473 473
474 - Andrew Morton <akpm@osdl.org>, 08.19.2004 474 - Andrew Morton, 08.19.2004
475 linux-scsi mailing list 475 linux-scsi mailing list
476 476
477viii. Change default values for MEGARAID_NEWGEN, MEGARAID_MM, and 477viii. Change default values for MEGARAID_NEWGEN, MEGARAID_MM, and
478 MEGARAID_MAILBOX to 'n' in Kconfig.megaraid 478 MEGARAID_MAILBOX to 'n' in Kconfig.megaraid
479 479
480 - Andrew Morton <akpm@osdl.org>, 08.19.2004 480 - Andrew Morton, 08.19.2004
481 linux-scsi mailing list 481 linux-scsi mailing list
482 482
483ix. replace udelay with msleep 483ix. replace udelay with msleep
diff --git a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
index b54cb5048dfa..87a7c07ab658 100644
--- a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
+++ b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
@@ -5073,8 +5073,7 @@ struct _snd_pcm_runtime {
5073 with <constant>SNDRV_DMA_TYPE_CONTINUOUS</constant> type and the 5073 with <constant>SNDRV_DMA_TYPE_CONTINUOUS</constant> type and the
5074 <function>snd_dma_continuous_data(GFP_KERNEL)</function> device pointer, 5074 <function>snd_dma_continuous_data(GFP_KERNEL)</function> device pointer,
5075 where <constant>GFP_KERNEL</constant> is the kernel allocation flag to 5075 where <constant>GFP_KERNEL</constant> is the kernel allocation flag to
5076 use. For the SBUS, <constant>SNDRV_DMA_TYPE_SBUS</constant> and 5076 use.
5077 <function>snd_dma_sbus_data(sbus_dev)</function> are used instead.
5078 For the PCI scatter-gather buffers, use 5077 For the PCI scatter-gather buffers, use
5079 <constant>SNDRV_DMA_TYPE_DEV_SG</constant> with 5078 <constant>SNDRV_DMA_TYPE_DEV_SG</constant> with
5080 <function>snd_dma_pci_data(pci)</function> 5079 <function>snd_dma_pci_data(pci)</function>
diff --git a/Documentation/sparc/sbus_drivers.txt b/Documentation/sparc/sbus_drivers.txt
deleted file mode 100644
index eb1e28ad8822..000000000000
--- a/Documentation/sparc/sbus_drivers.txt
+++ /dev/null
@@ -1,309 +0,0 @@
1
2 Writing SBUS Drivers
3
4 David S. Miller (davem@redhat.com)
5
6 The SBUS driver interfaces of the Linux kernel have been
7revamped completely for 2.4.x for several reasons. Foremost were
8performance and complexity concerns. This document details these
9new interfaces and how they are used to write an SBUS device driver.
10
11 SBUS drivers need to include <asm/sbus.h> to get access
12to functions and structures described here.
13
14 Probing and Detection
15
16 Each SBUS device inside the machine is described by a
17structure called "struct sbus_dev". Likewise, each SBUS bus
18found in the system is described by a "struct sbus_bus". For
19each SBUS bus, the devices underneath are hung in a tree-like
20fashion off of the bus structure.
21
22 The SBUS device structure contains enough information
23for you to implement your device probing algorithm and obtain
24the bits necessary to run your device. The most commonly
25used members of this structure, and their typical usage,
26will be detailed below.
27
28 Here is a piece of skeleton code for performing a device
29probe in an SBUS driver under Linux:
30
31 static int __devinit mydevice_probe_one(struct sbus_dev *sdev)
32 {
33 struct mysdevice *mp = kzalloc(sizeof(*mp), GFP_KERNEL);
34
35 if (!mp)
36 return -ENODEV;
37
38 ...
39 dev_set_drvdata(&sdev->ofdev.dev, mp);
40 return 0;
41 ...
42 }
43
44 static int __devinit mydevice_probe(struct of_device *dev,
45 const struct of_device_id *match)
46 {
47 struct sbus_dev *sdev = to_sbus_device(&dev->dev);
48
49 return mydevice_probe_one(sdev);
50 }
51
52 static int __devexit mydevice_remove(struct of_device *dev)
53 {
54 struct sbus_dev *sdev = to_sbus_device(&dev->dev);
55 struct mydevice *mp = dev_get_drvdata(&dev->dev);
56
57 return mydevice_remove_one(sdev, mp);
58 }
59
60 static struct of_device_id mydevice_match[] = {
61 {
62 .name = "mydevice",
63 },
64 {},
65 };
66
67 MODULE_DEVICE_TABLE(of, mydevice_match);
68
69 static struct of_platform_driver mydevice_driver = {
70 .match_table = mydevice_match,
71 .probe = mydevice_probe,
72 .remove = __devexit_p(mydevice_remove),
73 .driver = {
74 .name = "mydevice",
75 },
76 };
77
78 static int __init mydevice_init(void)
79 {
80 return of_register_driver(&mydevice_driver, &sbus_bus_type);
81 }
82
83 static void __exit mydevice_exit(void)
84 {
85 of_unregister_driver(&mydevice_driver);
86 }
87
88 module_init(mydevice_init);
89 module_exit(mydevice_exit);
90
91 The mydevice_match table is a series of entries which
92describes what SBUS devices your driver is meant for. In the
93simplest case you specify a string for the 'name' field. Every
94SBUS device with a 'name' property matching your string will
95be passed one-by-one to your .probe method.
96
97 You should store away your device private state structure
98pointer in the drvdata area so that you can retrieve it later on
99in your .remove method.
100
101 Any memory allocated, registers mapped, IRQs registered,
102etc. must be undone by your .remove method so that all resources
103of your device are released by the time it returns.
104
105 You should _NOT_ use the for_each_sbus(), for_each_sbusdev(),
106and for_all_sbusdev() interfaces. They are deprecated, will be
107removed, and no new driver should reference them ever.
108
109 Mapping and Accessing I/O Registers
110
111 Each SBUS device structure contains an array of descriptors
112which describe each register set. We abuse struct resource for that.
113They each correspond to the "reg" properties provided by the OBP firmware.
114
115 Before you can access your device's registers you must map
116them. And later if you wish to shutdown your driver (for module
117unload or similar) you must unmap them. You must treat them as
118a resource, which you allocate (map) before using and free up
119(unmap) when you are done with it.
120
121 The mapping information is stored in an opaque value
122typed as an "unsigned long". This is the type of the return value
123of the mapping interface, and the arguments to the unmapping
124interface. Let's say you want to map the first set of registers.
125Perhaps part of your driver software state structure looks like:
126
127 struct mydevice {
128 unsigned long control_regs;
129 ...
130 struct sbus_dev *sdev;
131 ...
132 };
133
134 At initialization time you then use the sbus_ioremap
135interface to map in your registers, like so:
136
137 static void init_one_mydevice(struct sbus_dev *sdev)
138 {
139 struct mydevice *mp;
140 ...
141
142 mp->control_regs = sbus_ioremap(&sdev->resource[0], 0,
143 CONTROL_REGS_SIZE, "mydevice regs");
144 if (!mp->control_regs) {
145 /* Failure, cleanup and return. */
146 }
147 }
148
149 Second argument to sbus_ioremap is an offset for
150cranky devices with broken OBP PROM. The sbus_ioremap uses only
151a start address and flags from the resource structure.
152Therefore it is possible to use the same resource to map
153several sets of registers or even to fabricate a resource
154structure if driver gets physical address from some private place.
155This practice is discouraged though. Use whatever OBP PROM
156provided to you.
157
158 And here is how you might unmap these registers later at
159driver shutdown or module unload time, using the sbus_iounmap
160interface:
161
162 static void mydevice_unmap_regs(struct mydevice *mp)
163 {
164 sbus_iounmap(mp->control_regs, CONTROL_REGS_SIZE);
165 }
166
167 Finally, to actually access your registers there are 6
168interface routines at your disposal. Accesses are byte (8 bit),
169word (16 bit), or longword (32 bit) sized. Here they are:
170
171 u8 sbus_readb(unsigned long reg) /* read byte */
172 u16 sbus_readw(unsigned long reg) /* read word */
173 u32 sbus_readl(unsigned long reg) /* read longword */
174 void sbus_writeb(u8 value, unsigned long reg) /* write byte */
175 void sbus_writew(u16 value, unsigned long reg) /* write word */
176 void sbus_writel(u32 value, unsigned long reg) /* write longword */
177
178 So, let's say your device has a control register of some sort
179at offset zero. The following might implement resetting your device:
180
181 #define CONTROL 0x00UL
182
183 #define CONTROL_RESET 0x00000001 /* Reset hardware */
184
185 static void mydevice_reset(struct mydevice *mp)
186 {
187 sbus_writel(CONTROL_RESET, mp->regs + CONTROL);
188 }
189
190 Or perhaps there is a data port register at an offset of
19116 bytes which allows you to read bytes from a fifo in the device:
192
193 #define DATA 0x10UL
194
195 static u8 mydevice_get_byte(struct mydevice *mp)
196 {
197 return sbus_readb(mp->regs + DATA);
198 }
199
200 It's pretty straightforward, and clueful readers may have
201noticed that these interfaces mimick the PCI interfaces of the
202Linux kernel. This was not by accident.
203
204 WARNING:
205
206 DO NOT try to treat these opaque register mapping
207 values as a memory mapped pointer to some structure
208 which you can dereference.
209
210 It may be memory mapped, it may not be. In fact it
211 could be a physical address, or it could be the time
212 of day xor'd with 0xdeadbeef. :-)
213
214 Whatever it is, it's an implementation detail. The
215 interface was done this way to shield the driver
216 author from such complexities.
217
218 Doing DVMA
219
220 SBUS devices can perform DMA transactions in a way similar
221to PCI but dissimilar to ISA, e.g. DMA masters supply address.
222In contrast to PCI, however, that address (a bus address) is
223translated by IOMMU before a memory access is performed and therefore
224it is virtual. Sun calls this procedure DVMA.
225
226 Linux supports two styles of using SBUS DVMA: "consistent memory"
227and "streaming DVMA". CPU view of consistent memory chunk is, well,
228consistent with a view of a device. Think of it as an uncached memory.
229Typically this way of doing DVMA is not very fast and drivers use it
230mostly for control blocks or queues. On some CPUs we cannot flush or
231invalidate individual pages or cache lines and doing explicit flushing
232over ever little byte in every control block would be wasteful.
233
234Streaming DVMA is a preferred way to transfer large amounts of data.
235This process works in the following way:
2361. a CPU stops accessing a certain part of memory,
237 flushes its caches covering that memory;
2382. a device does DVMA accesses, then posts an interrupt;
2393. CPU invalidates its caches and starts to access the memory.
240
241A single streaming DVMA operation can touch several discontiguous
242regions of a virtual bus address space. This is called a scatter-gather
243DVMA.
244
245[TBD: Why do not we neither Solaris attempt to map disjoint pages
246into a single virtual chunk with the help of IOMMU, so that non SG
247DVMA masters would do SG? It'd be very helpful for RAID.]
248
249 In order to perform a consistent DVMA a driver does something
250like the following:
251
252 char *mem; /* Address in the CPU space */
253 u32 busa; /* Address in the SBus space */
254
255 mem = (char *) sbus_alloc_consistent(sdev, MYMEMSIZE, &busa);
256
257 Then mem is used when CPU accesses this memory and u32
258is fed to the device so that it can do DVMA. This is typically
259done with an sbus_writel() into some device register.
260
261 Do not forget to free the DVMA resources once you are done:
262
263 sbus_free_consistent(sdev, MYMEMSIZE, mem, busa);
264
265 Streaming DVMA is more interesting. First you allocate some
266memory suitable for it or pin down some user pages. Then it all works
267like this:
268
269 char *mem = argumen1;
270 unsigned int size = argument2;
271 u32 busa; /* Address in the SBus space */
272
273 *mem = 1; /* CPU can access */
274 busa = sbus_map_single(sdev, mem, size);
275 if (busa == 0) .......
276
277 /* Tell the device to use busa here */
278 /* CPU cannot access the memory without sbus_dma_sync_single() */
279
280 sbus_unmap_single(sdev, busa, size);
281 if (*mem == 0) .... /* CPU can access again */
282
283 It is possible to retain mappings and ask the device to
284access data again and again without calling sbus_unmap_single.
285However, CPU caches must be invalidated with sbus_dma_sync_single
286before such access.
287
288[TBD but what about writeback caches here... do we have any?]
289
290 There is an equivalent set of functions doing the same thing
291only with several memory segments at once for devices capable of
292scatter-gather transfers. Use the Source, Luke.
293
294 Examples
295
296 drivers/net/sunhme.c
297 This is a complicated driver which illustrates many concepts
298discussed above and plus it handles both PCI and SBUS boards.
299
300 drivers/scsi/esp.c
301 Check it out for scatter-gather DVMA.
302
303 drivers/sbus/char/bpp.c
304 A non-DVMA device.
305
306 drivers/net/sunlance.c
307 Lance driver abuses consistent mappings for data transfer.
308It is a nifty trick which we do not particularly recommend...
309Just check it out and know that it's legal.
diff --git a/Documentation/spi/pxa2xx b/Documentation/spi/pxa2xx
index bbe8dee681a5..6bb916d57c95 100644
--- a/Documentation/spi/pxa2xx
+++ b/Documentation/spi/pxa2xx
@@ -96,7 +96,7 @@ Each slave device attached to the PXA must provide slave specific configuration
96information via the structure "pxa2xx_spi_chip" found in 96information via the structure "pxa2xx_spi_chip" found in
97"arch/arm/mach-pxa/include/mach/pxa2xx_spi.h". The pxa2xx_spi master controller driver 97"arch/arm/mach-pxa/include/mach/pxa2xx_spi.h". The pxa2xx_spi master controller driver
98will uses the configuration whenever the driver communicates with the slave 98will uses the configuration whenever the driver communicates with the slave
99device. 99device. All fields are optional.
100 100
101struct pxa2xx_spi_chip { 101struct pxa2xx_spi_chip {
102 u8 tx_threshold; 102 u8 tx_threshold;
@@ -112,14 +112,17 @@ used to configure the SSP hardware fifo. These fields are critical to the
112performance of pxa2xx_spi driver and misconfiguration will result in rx 112performance of pxa2xx_spi driver and misconfiguration will result in rx
113fifo overruns (especially in PIO mode transfers). Good default values are 113fifo overruns (especially in PIO mode transfers). Good default values are
114 114
115 .tx_threshold = 12, 115 .tx_threshold = 8,
116 .rx_threshold = 4, 116 .rx_threshold = 8,
117
118The range is 1 to 16 where zero indicates "use default".
117 119
118The "pxa2xx_spi_chip.dma_burst_size" field is used to configure PXA2xx DMA 120The "pxa2xx_spi_chip.dma_burst_size" field is used to configure PXA2xx DMA
119engine and is related the "spi_device.bits_per_word" field. Read and understand 121engine and is related the "spi_device.bits_per_word" field. Read and understand
120the PXA2xx "Developer Manual" sections on the DMA controller and SSP Controllers 122the PXA2xx "Developer Manual" sections on the DMA controller and SSP Controllers
121to determine the correct value. An SSP configured for byte-wide transfers would 123to determine the correct value. An SSP configured for byte-wide transfers would
122use a value of 8. 124use a value of 8. The driver will determine a reasonable default if
125dma_burst_size == 0.
123 126
124The "pxa2xx_spi_chip.timeout" fields is used to efficiently handle 127The "pxa2xx_spi_chip.timeout" fields is used to efficiently handle
125trailing bytes in the SSP receiver fifo. The correct value for this field is 128trailing bytes in the SSP receiver fifo. The correct value for this field is
@@ -137,7 +140,13 @@ function for asserting/deasserting a slave device chip select. If the field is
137NULL, the pxa2xx_spi master controller driver assumes that the SSP port is 140NULL, the pxa2xx_spi master controller driver assumes that the SSP port is
138configured to use SSPFRM instead. 141configured to use SSPFRM instead.
139 142
140NSSP SALVE SAMPLE 143NOTE: the SPI driver cannot control the chip select if SSPFRM is used, so the
144chipselect is dropped after each spi_transfer. Most devices need chip select
145asserted around the complete message. Use SSPFRM as a GPIO (through cs_control)
146to accomodate these chips.
147
148
149NSSP SLAVE SAMPLE
141----------------- 150-----------------
142The pxa2xx_spi_chip structure is passed to the pxa2xx_spi driver in the 151The pxa2xx_spi_chip structure is passed to the pxa2xx_spi driver in the
143"spi_board_info.controller_data" field. Below is a sample configuration using 152"spi_board_info.controller_data" field. Below is a sample configuration using
@@ -206,18 +215,21 @@ static void __init streetracer_init(void)
206 215
207DMA and PIO I/O Support 216DMA and PIO I/O Support
208----------------------- 217-----------------------
209The pxa2xx_spi driver support both DMA and interrupt driven PIO message 218The pxa2xx_spi driver supports both DMA and interrupt driven PIO message
210transfers. The driver defaults to PIO mode and DMA transfers must enabled by 219transfers. The driver defaults to PIO mode and DMA transfers must be enabled
211setting the "enable_dma" flag in the "pxa2xx_spi_master" structure and 220by setting the "enable_dma" flag in the "pxa2xx_spi_master" structure. The DMA
212ensuring that the "pxa2xx_spi_chip.dma_burst_size" field is non-zero. The DMA 221mode supports both coherent and stream based DMA mappings.
213mode support both coherent and stream based DMA mappings.
214 222
215The following logic is used to determine the type of I/O to be used on 223The following logic is used to determine the type of I/O to be used on
216a per "spi_transfer" basis: 224a per "spi_transfer" basis:
217 225
218if !enable_dma or dma_burst_size == 0 then 226if !enable_dma then
219 always use PIO transfers 227 always use PIO transfers
220 228
229if spi_message.len > 8191 then
230 print "rate limited" warning
231 use PIO transfers
232
221if spi_message.is_dma_mapped and rx_dma_buf != 0 and tx_dma_buf != 0 then 233if spi_message.is_dma_mapped and rx_dma_buf != 0 and tx_dma_buf != 0 then
222 use coherent DMA mode 234 use coherent DMA mode
223 235
diff --git a/Documentation/timers/00-INDEX b/Documentation/timers/00-INDEX
new file mode 100644
index 000000000000..397dc35e1323
--- /dev/null
+++ b/Documentation/timers/00-INDEX
@@ -0,0 +1,10 @@
100-INDEX
2 - this file
3highres.txt
4 - High resolution timers and dynamic ticks design notes
5hpet.txt
6 - High Precision Event Timer Driver for Linux
7hrtimers.txt
8 - subsystem for high-resolution kernel timers
9timer_stats.txt
10 - timer usage statistics
diff --git a/Documentation/hpet.txt b/Documentation/timers/hpet.txt
index 6ad52d9dad6c..e7c09abcfab4 100644
--- a/Documentation/hpet.txt
+++ b/Documentation/timers/hpet.txt
@@ -1,21 +1,32 @@
1 High Precision Event Timer Driver for Linux 1 High Precision Event Timer Driver for Linux
2 2
3The High Precision Event Timer (HPET) hardware is the future replacement 3The High Precision Event Timer (HPET) hardware follows a specification
4for the 8254 and Real Time Clock (RTC) periodic timer functionality. 4by Intel and Microsoft which can be found at
5Each HPET can have up to 32 timers. It is possible to configure the 5
6first two timers as legacy replacements for 8254 and RTC periodic timers. 6 http://www.intel.com/technology/architecture/hpetspec.htm
7A specification done by Intel and Microsoft can be found at 7
8<http://www.intel.com/technology/architecture/hpetspec.htm>. 8Each HPET has one fixed-rate counter (at 10+ MHz, hence "High Precision")
9and up to 32 comparators. Normally three or more comparators are provided,
10each of which can generate oneshot interupts and at least one of which has
11additional hardware to support periodic interrupts. The comparators are
12also called "timers", which can be misleading since usually timers are
13independent of each other ... these share a counter, complicating resets.
14
15HPET devices can support two interrupt routing modes. In one mode, the
16comparators are additional interrupt sources with no particular system
17role. Many x86 BIOS writers don't route HPET interrupts at all, which
18prevents use of that mode. They support the other "legacy replacement"
19mode where the first two comparators block interrupts from 8254 timers
20and from the RTC.
9 21
10The driver supports detection of HPET driver allocation and initialization 22The driver supports detection of HPET driver allocation and initialization
11of the HPET before the driver module_init routine is called. This enables 23of the HPET before the driver module_init routine is called. This enables
12platform code which uses timer 0 or 1 as the main timer to intercept HPET 24platform code which uses timer 0 or 1 as the main timer to intercept HPET
13initialization. An example of this initialization can be found in 25initialization. An example of this initialization can be found in
14arch/i386/kernel/time_hpet.c. 26arch/x86/kernel/hpet.c.
15 27
16The driver provides two APIs which are very similar to the API found in 28The driver provides a userspace API which resembles the API found in the
17the rtc.c driver. There is a user space API and a kernel space API. 29RTC driver framework. An example user space program is provided below.
18An example user space program is provided below.
19 30
20#include <stdio.h> 31#include <stdio.h>
21#include <stdlib.h> 32#include <stdlib.h>
@@ -286,15 +297,3 @@ out:
286 297
287 return; 298 return;
288} 299}
289
290The kernel API has three interfaces exported from the driver:
291
292 hpet_register(struct hpet_task *tp, int periodic)
293 hpet_unregister(struct hpet_task *tp)
294 hpet_control(struct hpet_task *tp, unsigned int cmd, unsigned long arg)
295
296The kernel module using this interface fills in the ht_func and ht_data
297members of the hpet_task structure before calling hpet_register.
298hpet_control simply vectors to the hpet_ioctl routine and has the same
299commands and respective arguments as the user API. hpet_unregister
300is used to terminate usage of the HPET timer reserved by hpet_register.
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 @@
150149 -> Typhoon TV-Tuner PCI (50684) 150149 -> Typhoon TV-Tuner PCI (50684)
151150 -> Geovision GV-600 [008a:763c] 151150 -> Geovision GV-600 [008a:763c]
152151 -> Kozumi KTV-01C 152151 -> Kozumi KTV-01C
153152 -> 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 @@
145144 -> Beholder BeholdTV M6 Extra [5ace:6193] 145144 -> Beholder BeholdTV M6 Extra [5ace:6193]
146145 -> AVerMedia MiniPCI DVB-T Hybrid M103 [1461:f636] 146145 -> AVerMedia MiniPCI DVB-T Hybrid M103 [1461:f636]
147146 -> ASUSTeK P7131 Analog 147146 -> ASUSTeK P7131 Analog
148147 -> Asus Tiger 3in1 [1043:4878]
149148 -> Encore ENLTV-FM v5.3 [1a7f:2008]
150149 -> Avermedia PCI pure analog (M135A) [1461:f11d]
151150 -> Zogis Real Angel 220
152151 -> ADS Tech Instant HDTV [1421:0380]
153152 -> 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
74tuner=73 - Samsung TCPG 6121P30A 74tuner=73 - Samsung TCPG 6121P30A
75tuner=75 - Philips TEA5761 FM Radio 75tuner=75 - Philips TEA5761 FM Radio
76tuner=76 - Xceive 5000 tuner 76tuner=76 - Xceive 5000 tuner
77tuner=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:
7xxxx vend:prod 7xxxx vend:prod
8---- 8----
9spca501 0000:0000 MystFromOri Unknow Camera 9spca501 0000:0000 MystFromOri Unknow Camera
10m5602 0402:5602 ALi Video Camera Controller
10spca501 040a:0002 Kodak DVC-325 11spca501 040a:0002 Kodak DVC-325
11spca500 040a:0300 Kodak EZ200 12spca500 040a:0300 Kodak EZ200
12zc3xx 041e:041e Creative WebCam Live! 13zc3xx 041e:041e Creative WebCam Live!
@@ -42,6 +43,7 @@ zc3xx 0458:7007 Genius VideoCam V2
42zc3xx 0458:700c Genius VideoCam V3 43zc3xx 0458:700c Genius VideoCam V3
43zc3xx 0458:700f Genius VideoCam Web V2 44zc3xx 0458:700f Genius VideoCam Web V2
44sonixj 0458:7025 Genius Eye 311Q 45sonixj 0458:7025 Genius Eye 311Q
46sonixj 0458:702e Genius Slim 310 NB
45sonixj 045e:00f5 MicroSoft VX3000 47sonixj 045e:00f5 MicroSoft VX3000
46sonixj 045e:00f7 MicroSoft VX1000 48sonixj 045e:00f7 MicroSoft VX1000
47ov519 045e:028c Micro$oft xbox cam 49ov519 045e:028c Micro$oft xbox cam
@@ -81,7 +83,7 @@ spca561 046d:092b Labtec Webcam Plus
81spca561 046d:092c Logitech QC chat Elch2 83spca561 046d:092c Logitech QC chat Elch2
82spca561 046d:092d Logitech QC Elch2 84spca561 046d:092d Logitech QC Elch2
83spca561 046d:092e Logitech QC Elch2 85spca561 046d:092e Logitech QC Elch2
84spca561 046d:092f Logitech QC Elch2 86spca561 046d:092f Logitech QuickCam Express Plus
85sunplus 046d:0960 Logitech ClickSmart 420 87sunplus 046d:0960 Logitech ClickSmart 420
86sunplus 0471:0322 Philips DMVC1300K 88sunplus 0471:0322 Philips DMVC1300K
87zc3xx 0471:0325 Philips SPC 200 NC 89zc3xx 0471:0325 Philips SPC 200 NC
@@ -96,6 +98,29 @@ sunplus 04a5:3003 Benq DC 1300
96sunplus 04a5:3008 Benq DC 1500 98sunplus 04a5:3008 Benq DC 1500
97sunplus 04a5:300a Benq DC 3410 99sunplus 04a5:300a Benq DC 3410
98spca500 04a5:300c Benq DC 1016 100spca500 04a5:300c Benq DC 1016
101finepix 04cb:0104 Fujifilm FinePix 4800
102finepix 04cb:0109 Fujifilm FinePix A202
103finepix 04cb:010b Fujifilm FinePix A203
104finepix 04cb:010f Fujifilm FinePix A204
105finepix 04cb:0111 Fujifilm FinePix A205
106finepix 04cb:0113 Fujifilm FinePix A210
107finepix 04cb:0115 Fujifilm FinePix A303
108finepix 04cb:0117 Fujifilm FinePix A310
109finepix 04cb:0119 Fujifilm FinePix F401
110finepix 04cb:011b Fujifilm FinePix F402
111finepix 04cb:011d Fujifilm FinePix F410
112finepix 04cb:0121 Fujifilm FinePix F601
113finepix 04cb:0123 Fujifilm FinePix F700
114finepix 04cb:0125 Fujifilm FinePix M603
115finepix 04cb:0127 Fujifilm FinePix S300
116finepix 04cb:0129 Fujifilm FinePix S304
117finepix 04cb:012b Fujifilm FinePix S500
118finepix 04cb:012d Fujifilm FinePix S602
119finepix 04cb:012f Fujifilm FinePix S700
120finepix 04cb:0131 Fujifilm FinePix unknown model
121finepix 04cb:013b Fujifilm FinePix unknown model
122finepix 04cb:013d Fujifilm FinePix unknown model
123finepix 04cb:013f Fujifilm FinePix F420
99sunplus 04f1:1001 JVC GC A50 124sunplus 04f1:1001 JVC GC A50
100spca561 04fc:0561 Flexcam 100 125spca561 04fc:0561 Flexcam 100
101sunplus 04fc:500c Sunplus CA500C 126sunplus 04fc:500c Sunplus CA500C
@@ -181,6 +206,7 @@ pac207 093a:2468 PAC207
181pac207 093a:2470 Genius GF112 206pac207 093a:2470 Genius GF112
182pac207 093a:2471 Genius VideoCam ge111 207pac207 093a:2471 Genius VideoCam ge111
183pac207 093a:2472 Genius VideoCam ge110 208pac207 093a:2472 Genius VideoCam ge110
209pac207 093a:2476 Genius e-Messenger 112
184pac7311 093a:2600 PAC7311 Typhoon 210pac7311 093a:2600 PAC7311 Typhoon
185pac7311 093a:2601 Philips SPC 610 NC 211pac7311 093a:2601 Philips SPC 610 NC
186pac7311 093a:2603 PAC7312 212pac7311 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 @@
1This document describes the ALi m5602 bridge connected
2to the following supported sensors:
3OmniVision OV9650,
4Samsung s5k83a,
5Samsung s5k4aa,
6Micron mt9m111,
7Pixel plus PO1030
8
9This driver mimics the windows drivers, which have a braindead implementation sending bayer-encoded frames at VGA resolution.
10In 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
12Anyway, 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
4Terminology
5-----------
6
7The 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
18Purpose of the soc-camera subsystem
19-----------------------------------
20
21The soc-camera subsystem provides a unified API between camera host drivers and
22camera sensor drivers. It implements a V4L2 interface to the user, currently
23only the mmap method is supported.
24
25This subsystem has been written to connect drivers for System-on-Chip (SoC)
26video capture interfaces with drivers for CMOS camera sensor chips to enable
27the reuse of sensor drivers with various hosts. The subsystem has been designed
28to support multiple camera host interfaces and multiple cameras per interface,
29although most applications have only one camera sensor.
30
31Existing drivers
32----------------
33
34As of 2.6.27-rc4 there are two host drivers in the mainline: pxa_camera.c for
35PXA27x SoCs and sh_mobile_ceu_camera.c for SuperH SoCs, and four sensor drivers:
36mt9m001.c, mt9m111.c, mt9v022.c and a generic soc_camera_platform.c driver. This
37list is not supposed to be updated, look for more examples in your tree.
38
39Camera host API
40---------------
41
42A host camera driver is registered using the
43
44soc_camera_host_register(struct soc_camera_host *);
45
46function. The host object can be initialized as follows:
47
48static struct soc_camera_host pxa_soc_camera_host = {
49 .drv_name = PXA_CAM_DRV_NAME,
50 .ops = &pxa_soc_camera_host_ops,
51};
52
53All camera host methods are passed in a struct soc_camera_host_ops:
54
55static 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
72from the host, apart from performing host-internal tasks they shall also call
73sensor driver's .init and .release methods respectively. .suspend and .resume
74methods implement host's power-management functionality and its their
75responsibility to call respective sensor's methods. .try_bus_param and
76.set_bus_param are used to negotiate physical connection parameters between the
77host and the sensor. .init_videobuf is called by soc-camera core when a
78video-device is opened, further video-buffer management is implemented completely
79by the specific camera host driver. The rest of the methods are called from
80respective V4L2 operations.
81
82Camera API
83----------
84
85Sensor drivers can use struct soc_camera_link, typically provided by the
86platform, and used to specify to which camera host bus the sensor is connected,
87and arbitrarily provide platform .power and .reset methods for the camera.
88soc_camera_device_register() and soc_camera_device_unregister() functions are
89used to add a sensor driver to or remove one from the system. The registration
90function takes a pointer to struct soc_camera_device as the only parameter.
91This 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
110struct soc_camera_ops provides .probe and .remove methods, which are called by
111the soc-camera core, when a camera is matched against or removed from a camera
112host bus, .init, .release, .suspend, and .resume are called from the camera host
113driver as discussed above. Other members of this struct provide respective V4L2
114functionality.
115
116struct soc_camera_device also links to an array of struct soc_camera_data_format,
117listing pixel formats, supported by the camera.
118
119--
120Author: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
diff --git a/Documentation/w1/00-INDEX b/Documentation/w1/00-INDEX
index 5270cf4cb109..cb49802745dc 100644
--- a/Documentation/w1/00-INDEX
+++ b/Documentation/w1/00-INDEX
@@ -1,5 +1,7 @@
100-INDEX 100-INDEX
2 - This file 2 - This file
3slaves/
4 - Drivers that provide support for specific family codes.
3masters/ 5masters/
4 - Individual chips providing 1-wire busses. 6 - Individual chips providing 1-wire busses.
5w1.generic 7w1.generic
diff --git a/Documentation/w1/masters/ds2490 b/Documentation/w1/masters/ds2490
index 239f9ae01843..28176def3d6f 100644
--- a/Documentation/w1/masters/ds2490
+++ b/Documentation/w1/masters/ds2490
@@ -16,3 +16,55 @@ which allows to build USB <-> W1 bridges.
16DS9490(R) is a USB <-> W1 bus master device 16DS9490(R) is a USB <-> W1 bus master device
17which has 0x81 family ID integrated chip and DS2490 17which has 0x81 family ID integrated chip and DS2490
18low-level operational chip. 18low-level operational chip.
19
20Notes and limitations.
21- The weak pullup current is a minimum of 0.9mA and maximum of 6.0mA.
22- The 5V strong pullup is supported with a minimum of 5.9mA and a
23 maximum of 30.4 mA. (From DS2490.pdf)
24- While the ds2490 supports a hardware search the code doesn't take
25 advantage of it (in tested case it only returned first device).
26- The hardware will detect when devices are attached to the bus on the
27 next bus (reset?) operation, however only a message is printed as
28 the core w1 code doesn't make use of the information. Connecting
29 one device tends to give multiple new device notifications.
30- The number of USB bus transactions could be reduced if w1_reset_send
31 was added to the API. The name is just a suggestion. It would take
32 a write buffer and a read buffer (along with sizes) as arguments.
33 The ds2490 block I/O command supports reset, write buffer, read
34 buffer, and strong pullup all in one command, instead of the current
35 1 reset bus, 2 write the match rom command and slave rom id, 3 block
36 write and read data. The write buffer needs to have the match rom
37 command and slave rom id prepended to the front of the requested
38 write buffer, both of which are known to the driver.
39- The hardware supports normal, flexible, and overdrive bus
40 communication speeds, but only the normal is supported.
41- The registered w1_bus_master functions don't define error
42 conditions. If a bus search is in progress and the ds2490 is
43 removed it can produce a good amount of error output before the bus
44 search finishes.
45- The hardware supports detecting some error conditions, such as
46 short, alarming presence on reset, and no presence on reset, but the
47 driver doesn't query those values.
48- The ds2490 specification doesn't cover short bulk in reads in
49 detail, but my observation is if fewer bytes are requested than are
50 available, the bulk read will return an error and the hardware will
51 clear the entire bulk in buffer. It would be possible to read the
52 maximum buffer size to not run into this error condition, only extra
53 bytes in the buffer is a logic error in the driver. The code should
54 should match reads and writes as well as data sizes. Reads and
55 writes are serialized and the status verifies that the chip is idle
56 (and data is available) before the read is executed, so it should
57 not happen.
58- Running x86_64 2.6.24 UHCI under qemu 0.9.0 under x86_64 2.6.22-rc6
59 with a OHCI controller, ds2490 running in the guest would operate
60 normally the first time the module was loaded after qemu attached
61 the ds2490 hardware, but if the module was unloaded, then reloaded
62 most of the time one of the bulk out or in, and usually the bulk in
63 would fail. qemu sets a 50ms timeout and the bulk in would timeout
64 even when the status shows data available. A bulk out write would
65 show a successful completion, but the ds2490 status register would
66 show 0 bytes written. Detaching qemu from the ds2490 hardware and
67 reattaching would clear the problem. usbmon output in the guest and
68 host did not explain the problem. My guess is a bug in either qemu
69 or the host OS and more likely the host OS.
70-- 03-06-2008 David Fries <David@Fries.net>
diff --git a/Documentation/w1/slaves/00-INDEX b/Documentation/w1/slaves/00-INDEX
new file mode 100644
index 000000000000..f8101d6b07b7
--- /dev/null
+++ b/Documentation/w1/slaves/00-INDEX
@@ -0,0 +1,4 @@
100-INDEX
2 - This file
3w1_therm
4 - The Maxim/Dallas Semiconductor ds18*20 temperature sensor.
diff --git a/Documentation/w1/slaves/w1_therm b/Documentation/w1/slaves/w1_therm
new file mode 100644
index 000000000000..0403aaaba878
--- /dev/null
+++ b/Documentation/w1/slaves/w1_therm
@@ -0,0 +1,41 @@
1Kernel driver w1_therm
2====================
3
4Supported chips:
5 * Maxim ds18*20 based temperature sensors.
6
7Author: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
8
9
10Description
11-----------
12
13w1_therm provides basic temperature conversion for ds18*20 devices.
14supported family codes:
15W1_THERM_DS18S20 0x10
16W1_THERM_DS1822 0x22
17W1_THERM_DS18B20 0x28
18
19Support is provided through the sysfs w1_slave file. Each open and
20read sequence will initiate a temperature conversion then provide two
21lines of ASCII output. The first line contains the nine hex bytes
22read along with a calculated crc value and YES or NO if it matched.
23If the crc matched the returned values are retained. The second line
24displays the retained values along with a temperature in millidegrees
25Centigrade after t=.
26
27Parasite powered devices are limited to one slave performing a
28temperature conversion at a time. If none of the devices are parasite
29powered it would be possible to convert all the devices at the same
30time and then go back to read individual sensors. That isn't
31currently supported. The driver also doesn't support reduced
32precision (which would also reduce the conversion time).
33
34The module parameter strong_pullup can be set to 0 to disable the
35strong pullup or 1 to enable. If enabled the 5V strong pullup will be
36enabled when the conversion is taking place provided the master driver
37must support the strong pullup (or it falls back to a pullup
38resistor). The DS18b20 temperature sensor specification lists a
39maximum current draw of 1.5mA and that a 5k pullup resistor is not
40sufficient. The strong pullup is designed to provide the additional
41current required.
diff --git a/Documentation/w1/w1.generic b/Documentation/w1/w1.generic
index 4c6509dd4789..e3333eec4320 100644
--- a/Documentation/w1/w1.generic
+++ b/Documentation/w1/w1.generic
@@ -79,10 +79,13 @@ w1 master sysfs interface
79<xx-xxxxxxxxxxxxx> - a directory for a found device. The format is family-serial 79<xx-xxxxxxxxxxxxx> - a directory for a found device. The format is family-serial
80bus - (standard) symlink to the w1 bus 80bus - (standard) symlink to the w1 bus
81driver - (standard) symlink to the w1 driver 81driver - (standard) symlink to the w1 driver
82w1_master_add - Manually register a slave device
82w1_master_attempts - the number of times a search was attempted 83w1_master_attempts - the number of times a search was attempted
83w1_master_max_slave_count 84w1_master_max_slave_count
84 - the maximum slaves that may be attached to a master 85 - the maximum slaves that may be attached to a master
85w1_master_name - the name of the device (w1_bus_masterX) 86w1_master_name - the name of the device (w1_bus_masterX)
87w1_master_pullup - 5V strong pullup 0 enabled, 1 disabled
88w1_master_remove - Manually remove a slave device
86w1_master_search - the number of searches left to do, -1=continual (default) 89w1_master_search - the number of searches left to do, -1=continual (default)
87w1_master_slave_count 90w1_master_slave_count
88 - the number of slaves found 91 - the number of slaves found
@@ -90,7 +93,13 @@ w1_master_slaves - the names of the slaves, one per line
90w1_master_timeout - the delay in seconds between searches 93w1_master_timeout - the delay in seconds between searches
91 94
92If you have a w1 bus that never changes (you don't add or remove devices), 95If you have a w1 bus that never changes (you don't add or remove devices),
93you can set w1_master_search to a positive value to disable searches. 96you can set the module parameter search_count to a small positive number
97for an initially small number of bus searches. Alternatively it could be
98set to zero, then manually add the slave device serial numbers by
99w1_master_add device file. The w1_master_add and w1_master_remove files
100generally only make sense when searching is disabled, as a search will
101redetect manually removed devices that are present and timeout manually
102added devices that aren't on the bus.
94 103
95 104
96w1 slave sysfs interface 105w1 slave sysfs interface