aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorAnton Altaparmakov <aia21@cantab.net>2005-06-30 04:52:20 -0400
committerAnton Altaparmakov <aia21@cantab.net>2005-06-30 04:52:20 -0400
commitc2d9b8387bce8b4a0fd402fab7dc1319d11a418d (patch)
tree082cf7dd287f61635198011e61c3de1be130cc42 /Documentation
parent2a322e4c08be4e7cb0c04b427ddaaa679fd88863 (diff)
parent9b4311eedb17fa88f02e4876cd6aa9a08e383cd6 (diff)
Automerge with /usr/src/ntfs-2.6.git.
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/Changes24
-rw-r--r--Documentation/DocBook/libata.tmpl96
-rw-r--r--Documentation/SubmittingDrivers14
-rw-r--r--Documentation/SubmittingPatches44
-rw-r--r--Documentation/block/ioprio.txt176
-rw-r--r--Documentation/cciss.txt1
-rw-r--r--Documentation/kernel-parameters.txt17
-rw-r--r--Documentation/networking/dmfe.txt82
-rw-r--r--Documentation/pcmcia/devicetable.txt64
-rw-r--r--Documentation/pcmcia/driver-changes.txt51
-rw-r--r--Documentation/serial/driver4
-rw-r--r--Documentation/video4linux/API.html415
-rw-r--r--Documentation/video4linux/CARDLIST.cx888
-rw-r--r--Documentation/video4linux/CARDLIST.saa71346
-rw-r--r--Documentation/video4linux/CARDLIST.tuner3
-rw-r--r--Documentation/video4linux/README.saa71349
16 files changed, 540 insertions, 474 deletions
diff --git a/Documentation/Changes b/Documentation/Changes
index b37600754762..afebdbcd553a 100644
--- a/Documentation/Changes
+++ b/Documentation/Changes
@@ -44,9 +44,9 @@ running, the suggested command should tell you.
44 44
45Again, keep in mind that this list assumes you are already 45Again, keep in mind that this list assumes you are already
46functionally running a Linux 2.4 kernel. Also, not all tools are 46functionally running a Linux 2.4 kernel. Also, not all tools are
47necessary on all systems; obviously, if you don't have any PCMCIA (PC 47necessary on all systems; obviously, if you don't have any ISDN
48Card) hardware, for example, you probably needn't concern yourself 48hardware, for example, you probably needn't concern yourself with
49with pcmcia-cs. 49isdn4k-utils.
50 50
51o Gnu C 2.95.3 # gcc --version 51o Gnu C 2.95.3 # gcc --version
52o Gnu make 3.79.1 # make --version 52o Gnu make 3.79.1 # make --version
@@ -57,6 +57,7 @@ o e2fsprogs 1.29 # tune2fs
57o jfsutils 1.1.3 # fsck.jfs -V 57o jfsutils 1.1.3 # fsck.jfs -V
58o reiserfsprogs 3.6.3 # reiserfsck -V 2>&1|grep reiserfsprogs 58o reiserfsprogs 3.6.3 # reiserfsck -V 2>&1|grep reiserfsprogs
59o xfsprogs 2.6.0 # xfs_db -V 59o xfsprogs 2.6.0 # xfs_db -V
60o pcmciautils 001
60o pcmcia-cs 3.1.21 # cardmgr -V 61o pcmcia-cs 3.1.21 # cardmgr -V
61o quota-tools 3.09 # quota -V 62o quota-tools 3.09 # quota -V
62o PPP 2.4.0 # pppd --version 63o PPP 2.4.0 # pppd --version
@@ -186,13 +187,20 @@ architecture independent and any version from 2.0.0 onward should
186work correctly with this version of the XFS kernel code (2.6.0 or 187work correctly with this version of the XFS kernel code (2.6.0 or
187later is recommended, due to some significant improvements). 188later is recommended, due to some significant improvements).
188 189
190PCMCIAutils
191-----------
192
193PCMCIAutils replaces pcmcia-cs (see below). It properly sets up
194PCMCIA sockets at system startup and loads the appropriate modules
195for 16-bit PCMCIA devices if the kernel is modularized and the hotplug
196subsystem is used.
189 197
190Pcmcia-cs 198Pcmcia-cs
191--------- 199---------
192 200
193PCMCIA (PC Card) support is now partially implemented in the main 201PCMCIA (PC Card) support is now partially implemented in the main
194kernel source. Pay attention when you recompile your kernel ;-). 202kernel source. The "pcmciautils" package (see above) replaces pcmcia-cs
195Also, be sure to upgrade to the latest pcmcia-cs release. 203for newest kernels.
196 204
197Quota-tools 205Quota-tools
198----------- 206-----------
@@ -349,9 +357,13 @@ Xfsprogs
349-------- 357--------
350o <ftp://oss.sgi.com/projects/xfs/download/> 358o <ftp://oss.sgi.com/projects/xfs/download/>
351 359
360Pcmciautils
361-----------
362o <ftp://ftp.kernel.org/pub/linux/utils/kernel/pcmcia/>
363
352Pcmcia-cs 364Pcmcia-cs
353--------- 365---------
354o <ftp://pcmcia-cs.sourceforge.net/pub/pcmcia-cs/pcmcia-cs-3.1.21.tar.gz> 366o <http://pcmcia-cs.sourceforge.net/>
355 367
356Quota-tools 368Quota-tools
357---------- 369----------
diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl
index 6df1dfd18b65..375ae760dc1e 100644
--- a/Documentation/DocBook/libata.tmpl
+++ b/Documentation/DocBook/libata.tmpl
@@ -84,6 +84,14 @@ void (*port_disable) (struct ata_port *);
84 Called from ata_bus_probe() and ata_bus_reset() error paths, 84 Called from ata_bus_probe() and ata_bus_reset() error paths,
85 as well as when unregistering from the SCSI module (rmmod, hot 85 as well as when unregistering from the SCSI module (rmmod, hot
86 unplug). 86 unplug).
87 This function should do whatever needs to be done to take the
88 port out of use. In most cases, ata_port_disable() can be used
89 as this hook.
90 </para>
91 <para>
92 Called from ata_bus_probe() on a failed probe.
93 Called from ata_bus_reset() on a failed bus reset.
94 Called from ata_scsi_release().
87 </para> 95 </para>
88 96
89 </sect2> 97 </sect2>
@@ -98,6 +106,13 @@ void (*dev_config) (struct ata_port *, struct ata_device *);
98 found. Typically used to apply device-specific fixups prior to 106 found. Typically used to apply device-specific fixups prior to
99 issue of SET FEATURES - XFER MODE, and prior to operation. 107 issue of SET FEATURES - XFER MODE, and prior to operation.
100 </para> 108 </para>
109 <para>
110 Called by ata_device_add() after ata_dev_identify() determines
111 a device is present.
112 </para>
113 <para>
114 This entry may be specified as NULL in ata_port_operations.
115 </para>
101 116
102 </sect2> 117 </sect2>
103 118
@@ -135,6 +150,8 @@ void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf);
135 registers / DMA buffers. ->tf_read() is called to read the 150 registers / DMA buffers. ->tf_read() is called to read the
136 hardware registers / DMA buffers, to obtain the current set of 151 hardware registers / DMA buffers, to obtain the current set of
137 taskfile register values. 152 taskfile register values.
153 Most drivers for taskfile-based hardware (PIO or MMIO) use
154 ata_tf_load() and ata_tf_read() for these hooks.
138 </para> 155 </para>
139 156
140 </sect2> 157 </sect2>
@@ -147,6 +164,8 @@ void (*exec_command)(struct ata_port *ap, struct ata_taskfile *tf);
147 <para> 164 <para>
148 causes an ATA command, previously loaded with 165 causes an ATA command, previously loaded with
149 ->tf_load(), to be initiated in hardware. 166 ->tf_load(), to be initiated in hardware.
167 Most drivers for taskfile-based hardware use ata_exec_command()
168 for this hook.
150 </para> 169 </para>
151 170
152 </sect2> 171 </sect2>
@@ -161,6 +180,10 @@ Allow low-level driver to filter ATA PACKET commands, returning a status
161indicating whether or not it is OK to use DMA for the supplied PACKET 180indicating whether or not it is OK to use DMA for the supplied PACKET
162command. 181command.
163 </para> 182 </para>
183 <para>
184 This hook may be specified as NULL, in which case libata will
185 assume that atapi dma can be supported.
186 </para>
164 187
165 </sect2> 188 </sect2>
166 189
@@ -175,6 +198,14 @@ u8 (*check_err)(struct ata_port *ap);
175 Reads the Status/AltStatus/Error ATA shadow register from 198 Reads the Status/AltStatus/Error ATA shadow register from
176 hardware. On some hardware, reading the Status register has 199 hardware. On some hardware, reading the Status register has
177 the side effect of clearing the interrupt condition. 200 the side effect of clearing the interrupt condition.
201 Most drivers for taskfile-based hardware use
202 ata_check_status() for this hook.
203 </para>
204 <para>
205 Note that because this is called from ata_device_add(), at
206 least a dummy function that clears device interrupts must be
207 provided for all drivers, even if the controller doesn't
208 actually have a taskfile status register.
178 </para> 209 </para>
179 210
180 </sect2> 211 </sect2>
@@ -188,7 +219,13 @@ void (*dev_select)(struct ata_port *ap, unsigned int device);
188 Issues the low-level hardware command(s) that causes one of N 219 Issues the low-level hardware command(s) that causes one of N
189 hardware devices to be considered 'selected' (active and 220 hardware devices to be considered 'selected' (active and
190 available for use) on the ATA bus. This generally has no 221 available for use) on the ATA bus. This generally has no
191meaning on FIS-based devices. 222 meaning on FIS-based devices.
223 </para>
224 <para>
225 Most drivers for taskfile-based hardware use
226 ata_std_dev_select() for this hook. Controllers which do not
227 support second drives on a port (such as SATA contollers) will
228 use ata_noop_dev_select().
192 </para> 229 </para>
193 230
194 </sect2> 231 </sect2>
@@ -204,6 +241,8 @@ void (*phy_reset) (struct ata_port *ap);
204 for device presence (PATA and SATA), typically a soft reset 241 for device presence (PATA and SATA), typically a soft reset
205 (SRST) will be performed. Drivers typically use the helper 242 (SRST) will be performed. Drivers typically use the helper
206 functions ata_bus_reset() or sata_phy_reset() for this hook. 243 functions ata_bus_reset() or sata_phy_reset() for this hook.
244 Many SATA drivers use sata_phy_reset() or call it from within
245 their own phy_reset() functions.
207 </para> 246 </para>
208 247
209 </sect2> 248 </sect2>
@@ -227,6 +266,25 @@ PCI IDE DMA Status register.
227These hooks are typically either no-ops, or simply not implemented, in 266These hooks are typically either no-ops, or simply not implemented, in
228FIS-based drivers. 267FIS-based drivers.
229 </para> 268 </para>
269 <para>
270Most legacy IDE drivers use ata_bmdma_setup() for the bmdma_setup()
271hook. ata_bmdma_setup() will write the pointer to the PRD table to
272the IDE PRD Table Address register, enable DMA in the DMA Command
273register, and call exec_command() to begin the transfer.
274 </para>
275 <para>
276Most legacy IDE drivers use ata_bmdma_start() for the bmdma_start()
277hook. ata_bmdma_start() will write the ATA_DMA_START flag to the DMA
278Command register.
279 </para>
280 <para>
281Many legacy IDE drivers use ata_bmdma_stop() for the bmdma_stop()
282hook. ata_bmdma_stop() clears the ATA_DMA_START flag in the DMA
283command register.
284 </para>
285 <para>
286Many legacy IDE drivers use ata_bmdma_status() as the bmdma_status() hook.
287 </para>
230 288
231 </sect2> 289 </sect2>
232 290
@@ -250,6 +308,10 @@ int (*qc_issue) (struct ata_queued_cmd *qc);
250 helper function ata_qc_issue_prot() for taskfile protocol-based 308 helper function ata_qc_issue_prot() for taskfile protocol-based
251 dispatch. More advanced drivers implement their own ->qc_issue. 309 dispatch. More advanced drivers implement their own ->qc_issue.
252 </para> 310 </para>
311 <para>
312 ata_qc_issue_prot() calls ->tf_load(), ->bmdma_setup(), and
313 ->bmdma_start() as necessary to initiate a transfer.
314 </para>
253 315
254 </sect2> 316 </sect2>
255 317
@@ -279,6 +341,21 @@ void (*irq_clear) (struct ata_port *);
279 before the interrupt handler is registered, to be sure hardware 341 before the interrupt handler is registered, to be sure hardware
280 is quiet. 342 is quiet.
281 </para> 343 </para>
344 <para>
345 The second argument, dev_instance, should be cast to a pointer
346 to struct ata_host_set.
347 </para>
348 <para>
349 Most legacy IDE drivers use ata_interrupt() for the
350 irq_handler hook, which scans all ports in the host_set,
351 determines which queued command was active (if any), and calls
352 ata_host_intr(ap,qc).
353 </para>
354 <para>
355 Most legacy IDE drivers use ata_bmdma_irq_clear() for the
356 irq_clear() hook, which simply clears the interrupt and error
357 flags in the DMA status register.
358 </para>
282 359
283 </sect2> 360 </sect2>
284 361
@@ -292,6 +369,7 @@ void (*scr_write) (struct ata_port *ap, unsigned int sc_reg,
292 <para> 369 <para>
293 Read and write standard SATA phy registers. Currently only used 370 Read and write standard SATA phy registers. Currently only used
294 if ->phy_reset hook called the sata_phy_reset() helper function. 371 if ->phy_reset hook called the sata_phy_reset() helper function.
372 sc_reg is one of SCR_STATUS, SCR_CONTROL, SCR_ERROR, or SCR_ACTIVE.
295 </para> 373 </para>
296 374
297 </sect2> 375 </sect2>
@@ -307,17 +385,29 @@ void (*host_stop) (struct ata_host_set *host_set);
307 ->port_start() is called just after the data structures for each 385 ->port_start() is called just after the data structures for each
308 port are initialized. Typically this is used to alloc per-port 386 port are initialized. Typically this is used to alloc per-port
309 DMA buffers / tables / rings, enable DMA engines, and similar 387 DMA buffers / tables / rings, enable DMA engines, and similar
310 tasks. 388 tasks. Some drivers also use this entry point as a chance to
389 allocate driver-private memory for ap->private_data.
390 </para>
391 <para>
392 Many drivers use ata_port_start() as this hook or call
393 it from their own port_start() hooks. ata_port_start()
394 allocates space for a legacy IDE PRD table and returns.
311 </para> 395 </para>
312 <para> 396 <para>
313 ->port_stop() is called after ->host_stop(). It's sole function 397 ->port_stop() is called after ->host_stop(). It's sole function
314 is to release DMA/memory resources, now that they are no longer 398 is to release DMA/memory resources, now that they are no longer
315 actively being used. 399 actively being used. Many drivers also free driver-private
400 data from port at this time.
401 </para>
402 <para>
403 Many drivers use ata_port_stop() as this hook, which frees the
404 PRD table.
316 </para> 405 </para>
317 <para> 406 <para>
318 ->host_stop() is called after all ->port_stop() calls 407 ->host_stop() is called after all ->port_stop() calls
319have completed. The hook must finalize hardware shutdown, release DMA 408have completed. The hook must finalize hardware shutdown, release DMA
320and other resources, etc. 409and other resources, etc.
410 This hook may be specified as NULL, in which case it is not called.
321 </para> 411 </para>
322 412
323 </sect2> 413 </sect2>
diff --git a/Documentation/SubmittingDrivers b/Documentation/SubmittingDrivers
index de3b252e717d..c3cca924e94b 100644
--- a/Documentation/SubmittingDrivers
+++ b/Documentation/SubmittingDrivers
@@ -13,13 +13,14 @@ Allocating Device Numbers
13------------------------- 13-------------------------
14 14
15Major and minor numbers for block and character devices are allocated 15Major and minor numbers for block and character devices are allocated
16by the Linux assigned name and number authority (currently better 16by the Linux assigned name and number authority (currently this is
17known as H Peter Anvin). The site is http://www.lanana.org/. This 17Torben Mathiasen). The site is http://www.lanana.org/. This
18also deals with allocating numbers for devices that are not going to 18also deals with allocating numbers for devices that are not going to
19be submitted to the mainstream kernel. 19be submitted to the mainstream kernel.
20See Documentation/devices.txt for more information on this.
20 21
21If you don't use assigned numbers then when you device is submitted it will 22If you don't use assigned numbers then when your device is submitted it will
22get given an assigned number even if that is different from values you may 23be given an assigned number even if that is different from values you may
23have shipped to customers before. 24have shipped to customers before.
24 25
25Who To Submit Drivers To 26Who To Submit Drivers To
@@ -32,7 +33,8 @@ Linux 2.2:
32 If the code area has a general maintainer then please submit it to 33 If the code area has a general maintainer then please submit it to
33 the maintainer listed in MAINTAINERS in the kernel file. If the 34 the maintainer listed in MAINTAINERS in the kernel file. If the
34 maintainer does not respond or you cannot find the appropriate 35 maintainer does not respond or you cannot find the appropriate
35 maintainer then please contact Alan Cox <alan@lxorguk.ukuu.org.uk> 36 maintainer then please contact the 2.2 kernel maintainer:
37 Marc-Christian Petersen <m.c.p@wolk-project.de>.
36 38
37Linux 2.4: 39Linux 2.4:
38 The same rules apply as 2.2. The final contact point for Linux 2.4 40 The same rules apply as 2.2. The final contact point for Linux 2.4
@@ -48,7 +50,7 @@ What Criteria Determine Acceptance
48 50
49Licensing: The code must be released to us under the 51Licensing: The code must be released to us under the
50 GNU General Public License. We don't insist on any kind 52 GNU General Public License. We don't insist on any kind
51 of exclusively GPL licensing, and if you wish the driver 53 of exclusive GPL licensing, and if you wish the driver
52 to be useful to other communities such as BSD you may well 54 to be useful to other communities such as BSD you may well
53 wish to release under multiple licenses. 55 wish to release under multiple licenses.
54 56
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 4d1f41b84ebc..6761a7b241a5 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -35,7 +35,7 @@ not in any lower subdirectory.
35 35
36To create a patch for a single file, it is often sufficient to do: 36To create a patch for a single file, it is often sufficient to do:
37 37
38 SRCTREE= linux-2.4 38 SRCTREE= linux-2.6
39 MYFILE= drivers/net/mydriver.c 39 MYFILE= drivers/net/mydriver.c
40 40
41 cd $SRCTREE 41 cd $SRCTREE
@@ -48,17 +48,18 @@ To create a patch for multiple files, you should unpack a "vanilla",
48or unmodified kernel source tree, and generate a diff against your 48or unmodified kernel source tree, and generate a diff against your
49own source tree. For example: 49own source tree. For example:
50 50
51 MYSRC= /devel/linux-2.4 51 MYSRC= /devel/linux-2.6
52 52
53 tar xvfz linux-2.4.0-test11.tar.gz 53 tar xvfz linux-2.6.12.tar.gz
54 mv linux linux-vanilla 54 mv linux-2.6.12 linux-2.6.12-vanilla
55 wget http://www.moses.uklinux.net/patches/dontdiff 55 diff -uprN -X linux-2.6.12-vanilla/Documentation/dontdiff \
56 diff -uprN -X dontdiff linux-vanilla $MYSRC > /tmp/patch 56 linux-2.6.12-vanilla $MYSRC > /tmp/patch
57 rm -f dontdiff
58 57
59"dontdiff" is a list of files which are generated by the kernel during 58"dontdiff" is a list of files which are generated by the kernel during
60the build process, and should be ignored in any diff(1)-generated 59the build process, and should be ignored in any diff(1)-generated
61patch. dontdiff is maintained by Tigran Aivazian <tigran@veritas.com> 60patch. The "dontdiff" file is included in the kernel tree in
612.6.12 and later. For earlier kernel versions, you can get it
62from <http://www.xenotime.net/linux/doc/dontdiff>.
62 63
63Make sure your patch does not include any extra files which do not 64Make sure your patch does not include any extra files which do not
64belong in a patch submission. Make sure to review your patch -after- 65belong in a patch submission. Make sure to review your patch -after-
@@ -66,18 +67,20 @@ generated it with diff(1), to ensure accuracy.
66 67
67If your changes produce a lot of deltas, you may want to look into 68If your changes produce a lot of deltas, you may want to look into
68splitting them into individual patches which modify things in 69splitting them into individual patches which modify things in
69logical stages, this will facilitate easier reviewing by other 70logical stages. This will facilitate easier reviewing by other
70kernel developers, very important if you want your patch accepted. 71kernel developers, very important if you want your patch accepted.
71There are a number of scripts which can aid in this; 72There are a number of scripts which can aid in this:
72 73
73Quilt: 74Quilt:
74http://savannah.nongnu.org/projects/quilt 75http://savannah.nongnu.org/projects/quilt
75 76
76Randy Dunlap's patch scripts: 77Randy Dunlap's patch scripts:
77http://developer.osdl.org/rddunlap/scripts/patching-scripts.tgz 78http://www.xenotime.net/linux/scripts/patching-scripts-002.tar.gz
78 79
79Andrew Morton's patch scripts: 80Andrew Morton's patch scripts:
80http://www.zip.com.au/~akpm/linux/patches/patch-scripts-0.16 81http://www.zip.com.au/~akpm/linux/patches/patch-scripts-0.20
82
83
81 84
822) Describe your changes. 852) Describe your changes.
83 86
@@ -163,6 +166,8 @@ patches. Trivial patches must qualify for one of the following rules:
163 since people copy, as long as it's trivial) 166 since people copy, as long as it's trivial)
164 Any fix by the author/maintainer of the file. (ie. patch monkey 167 Any fix by the author/maintainer of the file. (ie. patch monkey
165 in re-transmission mode) 168 in re-transmission mode)
169URL: <http://www.kernel.org/pub/linux/kernel/people/rusty/trivial/>
170
166 171
167 172
168 173
@@ -291,6 +296,17 @@ now, but you can do this to mark internal company procedures or just
291point out some special detail about the sign-off. 296point out some special detail about the sign-off.
292 297
293 298
299
30012) More references for submitting patches
301
302Andrew Morton, "The perfect patch" (tpp).
303 <http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt>
304
305Jeff Garzik, "Linux kernel patch submission format."
306 <http://linux.yyz.us/patch-format.html>
307
308
309
294----------------------------------- 310-----------------------------------
295SECTION 2 - HINTS, TIPS, AND TRICKS 311SECTION 2 - HINTS, TIPS, AND TRICKS
296----------------------------------- 312-----------------------------------
@@ -359,7 +375,5 @@ and 'extern __inline__'.
3594) Don't over-design. 3754) Don't over-design.
360 376
361Don't try to anticipate nebulous future cases which may or may not 377Don't try to anticipate nebulous future cases which may or may not
362be useful: "Make it as simple as you can, and no simpler" 378be useful: "Make it as simple as you can, and no simpler."
363
364
365 379
diff --git a/Documentation/block/ioprio.txt b/Documentation/block/ioprio.txt
new file mode 100644
index 000000000000..96ccf681075e
--- /dev/null
+++ b/Documentation/block/ioprio.txt
@@ -0,0 +1,176 @@
1Block io priorities
2===================
3
4
5Intro
6-----
7
8With the introduction of cfq v3 (aka cfq-ts or time sliced cfq), basic io
9priorities is supported for reads on files. This enables users to io nice
10processes or process groups, similar to what has been possible to cpu
11scheduling for ages. This document mainly details the current possibilites
12with cfq, other io schedulers do not support io priorities so far.
13
14Scheduling classes
15------------------
16
17CFQ implements three generic scheduling classes that determine how io is
18served for a process.
19
20IOPRIO_CLASS_RT: This is the realtime io class. This scheduling class is given
21higher priority than any other in the system, processes from this class are
22given first access to the disk every time. Thus it needs to be used with some
23care, one io RT process can starve the entire system. Within the RT class,
24there are 8 levels of class data that determine exactly how much time this
25process needs the disk for on each service. In the future this might change
26to be more directly mappable to performance, by passing in a wanted data
27rate instead.
28
29IOPRIO_CLASS_BE: This is the best-effort scheduling class, which is the default
30for any process that hasn't set a specific io priority. The class data
31determines how much io bandwidth the process will get, it's directly mappable
32to the cpu nice levels just more coarsely implemented. 0 is the highest
33BE prio level, 7 is the lowest. The mapping between cpu nice level and io
34nice level is determined as: io_nice = (cpu_nice + 20) / 5.
35
36IOPRIO_CLASS_IDLE: This is the idle scheduling class, processes running at this
37level only get io time when no one else needs the disk. The idle class has no
38class data, since it doesn't really apply here.
39
40Tools
41-----
42
43See below for a sample ionice tool. Usage:
44
45# ionice -c<class> -n<level> -p<pid>
46
47If pid isn't given, the current process is assumed. IO priority settings
48are inherited on fork, so you can use ionice to start the process at a given
49level:
50
51# ionice -c2 -n0 /bin/ls
52
53will run ls at the best-effort scheduling class at the highest priority.
54For a running process, you can give the pid instead:
55
56# ionice -c1 -n2 -p100
57
58will change pid 100 to run at the realtime scheduling class, at priority 2.
59
60---> snip ionice.c tool <---
61
62#include <stdio.h>
63#include <stdlib.h>
64#include <errno.h>
65#include <getopt.h>
66#include <unistd.h>
67#include <sys/ptrace.h>
68#include <asm/unistd.h>
69
70extern int sys_ioprio_set(int, int, int);
71extern int sys_ioprio_get(int, int);
72
73#if defined(__i386__)
74#define __NR_ioprio_set 289
75#define __NR_ioprio_get 290
76#elif defined(__ppc__)
77#define __NR_ioprio_set 273
78#define __NR_ioprio_get 274
79#elif defined(__x86_64__)
80#define __NR_ioprio_set 251
81#define __NR_ioprio_get 252
82#elif defined(__ia64__)
83#define __NR_ioprio_set 1274
84#define __NR_ioprio_get 1275
85#else
86#error "Unsupported arch"
87#endif
88
89_syscall3(int, ioprio_set, int, which, int, who, int, ioprio);
90_syscall2(int, ioprio_get, int, which, int, who);
91
92enum {
93 IOPRIO_CLASS_NONE,
94 IOPRIO_CLASS_RT,
95 IOPRIO_CLASS_BE,
96 IOPRIO_CLASS_IDLE,
97};
98
99enum {
100 IOPRIO_WHO_PROCESS = 1,
101 IOPRIO_WHO_PGRP,
102 IOPRIO_WHO_USER,
103};
104
105#define IOPRIO_CLASS_SHIFT 13
106
107const char *to_prio[] = { "none", "realtime", "best-effort", "idle", };
108
109int main(int argc, char *argv[])
110{
111 int ioprio = 4, set = 0, ioprio_class = IOPRIO_CLASS_BE;
112 int c, pid = 0;
113
114 while ((c = getopt(argc, argv, "+n:c:p:")) != EOF) {
115 switch (c) {
116 case 'n':
117 ioprio = strtol(optarg, NULL, 10);
118 set = 1;
119 break;
120 case 'c':
121 ioprio_class = strtol(optarg, NULL, 10);
122 set = 1;
123 break;
124 case 'p':
125 pid = strtol(optarg, NULL, 10);
126 break;
127 }
128 }
129
130 switch (ioprio_class) {
131 case IOPRIO_CLASS_NONE:
132 ioprio_class = IOPRIO_CLASS_BE;
133 break;
134 case IOPRIO_CLASS_RT:
135 case IOPRIO_CLASS_BE:
136 break;
137 case IOPRIO_CLASS_IDLE:
138 ioprio = 7;
139 break;
140 default:
141 printf("bad prio class %d\n", ioprio_class);
142 return 1;
143 }
144
145 if (!set) {
146 if (!pid && argv[optind])
147 pid = strtol(argv[optind], NULL, 10);
148
149 ioprio = ioprio_get(IOPRIO_WHO_PROCESS, pid);
150
151 printf("pid=%d, %d\n", pid, ioprio);
152
153 if (ioprio == -1)
154 perror("ioprio_get");
155 else {
156 ioprio_class = ioprio >> IOPRIO_CLASS_SHIFT;
157 ioprio = ioprio & 0xff;
158 printf("%s: prio %d\n", to_prio[ioprio_class], ioprio);
159 }
160 } else {
161 if (ioprio_set(IOPRIO_WHO_PROCESS, pid, ioprio | ioprio_class << IOPRIO_CLASS_SHIFT) == -1) {
162 perror("ioprio_set");
163 return 1;
164 }
165
166 if (argv[optind])
167 execvp(argv[optind], &argv[optind]);
168 }
169
170 return 0;
171}
172
173---> snip ionice.c tool <---
174
175
176March 11 2005, Jens Axboe <axboe@suse.de>
diff --git a/Documentation/cciss.txt b/Documentation/cciss.txt
index d599beb9df8a..c8f9a73111da 100644
--- a/Documentation/cciss.txt
+++ b/Documentation/cciss.txt
@@ -17,6 +17,7 @@ This driver is known to work with the following cards:
17 * SA P600 17 * SA P600
18 * SA P800 18 * SA P800
19 * SA E400 19 * SA E400
20 * SA E300
20 21
21If nodes are not already created in the /dev/cciss directory, run as root: 22If nodes are not already created in the /dev/cciss directory, run as root:
22 23
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index f44bb5567c5b..4ec75c06bca4 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -622,6 +622,17 @@ running once the system is up.
622 ips= [HW,SCSI] Adaptec / IBM ServeRAID controller 622 ips= [HW,SCSI] Adaptec / IBM ServeRAID controller
623 See header of drivers/scsi/ips.c. 623 See header of drivers/scsi/ips.c.
624 624
625 irqfixup [HW]
626 When an interrupt is not handled search all handlers
627 for it. Intended to get systems with badly broken
628 firmware running.
629
630 irqpoll [HW]
631 When an interrupt is not handled search all handlers
632 for it. Also check all handlers each timer
633 interrupt. Intended to get systems with badly broken
634 firmware running.
635
625 isapnp= [ISAPNP] 636 isapnp= [ISAPNP]
626 Format: <RDP>, <reset>, <pci_scan>, <verbosity> 637 Format: <RDP>, <reset>, <pci_scan>, <verbosity>
627 638
@@ -1030,6 +1041,10 @@ running once the system is up.
1030 irqmask=0xMMMM [IA-32] Set a bit mask of IRQs allowed to be assigned 1041 irqmask=0xMMMM [IA-32] Set a bit mask of IRQs allowed to be assigned
1031 automatically to PCI devices. You can make the kernel 1042 automatically to PCI devices. You can make the kernel
1032 exclude IRQs of your ISA cards this way. 1043 exclude IRQs of your ISA cards this way.
1044 pirqaddr=0xAAAAA [IA-32] Specify the physical address
1045 of the PIRQ table (normally generated
1046 by the BIOS) if it is outside the
1047 F0000h-100000h range.
1033 lastbus=N [IA-32] Scan all buses till bus #N. Can be useful 1048 lastbus=N [IA-32] Scan all buses till bus #N. Can be useful
1034 if the kernel is unable to find your secondary buses 1049 if the kernel is unable to find your secondary buses
1035 and you want to tell it explicitly which ones they are. 1050 and you want to tell it explicitly which ones they are.
@@ -1115,7 +1130,7 @@ running once the system is up.
1115 See Documentation/ramdisk.txt. 1130 See Documentation/ramdisk.txt.
1116 1131
1117 psmouse.proto= [HW,MOUSE] Highest PS2 mouse protocol extension to 1132 psmouse.proto= [HW,MOUSE] Highest PS2 mouse protocol extension to
1118 probe for (bare|imps|exps). 1133 probe for (bare|imps|exps|lifebook|any).
1119 psmouse.rate= [HW,MOUSE] Set desired mouse report rate, in reports 1134 psmouse.rate= [HW,MOUSE] Set desired mouse report rate, in reports
1120 per second. 1135 per second.
1121 psmouse.resetafter= 1136 psmouse.resetafter=
diff --git a/Documentation/networking/dmfe.txt b/Documentation/networking/dmfe.txt
index c0e8398674ef..046363552d09 100644
--- a/Documentation/networking/dmfe.txt
+++ b/Documentation/networking/dmfe.txt
@@ -1,59 +1,65 @@
1 dmfe.c: Version 1.28 01/18/2000 1Davicom DM9102(A)/DM9132/DM9801 fast ethernet driver for Linux.
2 2
3 A Davicom DM9102(A)/DM9132/DM9801 fast ethernet driver for Linux. 3This program is free software; you can redistribute it and/or
4 Copyright (C) 1997 Sten Wang 4modify it under the terms of the GNU General Public License
5as published by the Free Software Foundation; either version 2
6of the License, or (at your option) any later version.
5 7
6 This program is free software; you can redistribute it and/or 8This program is distributed in the hope that it will be useful,
7 modify it under the terms of the GNU General Public License 9but WITHOUT ANY WARRANTY; without even the implied warranty of
8 as published by the Free Software Foundation; either version 2 10MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 of the License, or (at your option) any later version. 11GNU General Public License for more details.
10 12
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15 13
14This driver provides kernel support for Davicom DM9102(A)/DM9132/DM9801 ethernet cards ( CNET
1510/100 ethernet cards uses Davicom chipset too, so this driver supports CNET cards too ).If you
16didn't compile this driver as a module, it will automatically load itself on boot and print a
17line similar to :
16 18
17 A. Compiler command: 19 dmfe: Davicom DM9xxx net driver, version 1.36.4 (2002-01-17)
18 20
19 A-1: For normal single or multiple processor kernel 21If you compiled this driver as a module, you have to load it on boot.You can load it with command :
20 "gcc -DMODULE -D__KERNEL__ -I/usr/src/linux/net/inet -Wall
21 -Wstrict-prototypes -O6 -c dmfe.c"
22 22
23 A-2: For single or multiple processor with kernel module version function 23 insmod dmfe
24 "gcc -DMODULE -DMODVERSIONS -D__KERNEL__ -I/usr/src/linux/net/inet
25 -Wall -Wstrict-prototypes -O6 -c dmfe.c"
26 24
25This way it will autodetect the device mode.This is the suggested way to load the module.Or you can pass
26a mode= setting to module while loading, like :
27 27
28 B. The following steps teach you how to activate a DM9102 board: 28 insmod dmfe mode=0 # Force 10M Half Duplex
29 insmod dmfe mode=1 # Force 100M Half Duplex
30 insmod dmfe mode=4 # Force 10M Full Duplex
31 insmod dmfe mode=5 # Force 100M Full Duplex
29 32
30 1. Used the upper compiler command to compile dmfe.c 33Next you should configure your network interface with a command similar to :
31 34
32 2. Insert dmfe module into kernel 35 ifconfig eth0 172.22.3.18
33 "insmod dmfe" ;;Auto Detection Mode (Suggest) 36 ^^^^^^^^^^^
34 "insmod dmfe mode=0" ;;Force 10M Half Duplex 37 Your IP Adress
35 "insmod dmfe mode=1" ;;Force 100M Half Duplex
36 "insmod dmfe mode=4" ;;Force 10M Full Duplex
37 "insmod dmfe mode=5" ;;Force 100M Full Duplex
38 38
39 3. Config a dm9102 network interface 39Then you may have to modify the default routing table with command :
40 "ifconfig eth0 172.22.3.18"
41 ^^^^^^^^^^^ Your IP address
42 40
43 4. Activate the IP routing table. For some distributions, it is not 41 route add default eth0
44 necessary. You can type "route" to check.
45 42
46 "route add default eth0"
47 43
44Now your ethernet card should be up and running.
48 45
49 5. Well done. Your DM9102 adapter is now activated.
50 46
47TODO:
51 48
52 C. Object files description: 49Implement pci_driver::suspend() and pci_driver::resume() power management methods.
53 1. dmfe_rh61.o: For Redhat 6.1 50Check on 64 bit boxes.
51Check and fix on big endian boxes.
52Test and make sure PCI latency is now correct for all cases.
54 53
55 If you can make sure your kernel version, you can rename
56 to dmfe.o and directly use it without re-compiling.
57 54
55Authors:
58 56
59 Author: Sten Wang, 886-3-5798797-8517, E-mail: sten_wang@davicom.com.tw 57Sten Wang <sten_wang@davicom.com.tw > : Original Author
58Tobias Ringstrom <tori@unhappy.mine.nu> : Current Maintainer
59
60Contributors:
61
62Marcelo Tosatti <marcelo@conectiva.com.br>
63Alan Cox <alan@redhat.com>
64Jeff Garzik <jgarzik@pobox.com>
65Vojtech Pavlik <vojtech@suse.cz>
diff --git a/Documentation/pcmcia/devicetable.txt b/Documentation/pcmcia/devicetable.txt
new file mode 100644
index 000000000000..045511acafc9
--- /dev/null
+++ b/Documentation/pcmcia/devicetable.txt
@@ -0,0 +1,64 @@
1Matching of PCMCIA devices to drivers is done using one or more of the
2following criteria:
3
4- manufactor ID
5- card ID
6- product ID strings _and_ hashes of these strings
7- function ID
8- device function (actual and pseudo)
9
10You should use the helpers in include/pcmcia/device_id.h for generating the
11struct pcmcia_device_id[] entries which match devices to drivers.
12
13If you want to match product ID strings, you also need to pass the crc32
14hashes of the string to the macro, e.g. if you want to match the product ID
15string 1, you need to use
16
17PCMCIA_DEVICE_PROD_ID1("some_string", 0x(hash_of_some_string)),
18
19If the hash is incorrect, the kernel will inform you about this in "dmesg"
20upon module initialization, and tell you of the correct hash.
21
22You can determine the hash of the product ID strings by running
23"pcmcia-modalias %n.%m" [%n being replaced with the socket number and %m being
24replaced with the device function] from pcmciautils. It generates a string
25in the following form:
26pcmcia:m0149cC1ABf06pfn00fn00pa725B842DpbF1EFEE84pc0877B627pd00000000
27
28The hex value after "pa" is the hash of product ID string 1, after "pb" for
29string 2 and so on.
30
31Alternatively, you can use this small tool to determine the crc32 hash.
32simply pass the string you want to evaluate as argument to this program,
33e.g.
34$ ./crc32hash "Dual Speed"
35
36-------------------------------------------------------------------------
37/* crc32hash.c - derived from linux/lib/crc32.c, GNU GPL v2 */
38#include <string.h>
39#include <stdio.h>
40#include <ctype.h>
41#include <stdlib.h>
42
43unsigned int crc32(unsigned char const *p, unsigned int len)
44{
45 int i;
46 unsigned int crc = 0;
47 while (len--) {
48 crc ^= *p++;
49 for (i = 0; i < 8; i++)
50 crc = (crc >> 1) ^ ((crc & 1) ? 0xedb88320 : 0);
51 }
52 return crc;
53}
54
55int main(int argc, char **argv) {
56 unsigned int result;
57 if (argc != 2) {
58 printf("no string passed as argument\n");
59 return -1;
60 }
61 result = crc32(argv[1], strlen(argv[1]));
62 printf("0x%x\n", result);
63 return 0;
64}
diff --git a/Documentation/pcmcia/driver-changes.txt b/Documentation/pcmcia/driver-changes.txt
new file mode 100644
index 000000000000..9c315ab48a02
--- /dev/null
+++ b/Documentation/pcmcia/driver-changes.txt
@@ -0,0 +1,51 @@
1This file details changes in 2.6 which affect PCMCIA card driver authors:
2
3* in-kernel device<->driver matching
4 PCMCIA devices and their correct drivers can now be matched in
5 kernelspace. See 'devicetable.txt' for details.
6
7* Device model integration (as of 2.6.11)
8 A struct pcmcia_device is registered with the device model core,
9 and can be used (e.g. for SET_NETDEV_DEV) by using
10 handle_to_dev(client_handle_t * handle).
11
12* Convert internal I/O port addresses to unsigned long (as of 2.6.11)
13 ioaddr_t should be replaced by kio_addr_t in PCMCIA card drivers.
14
15* irq_mask and irq_list parameters (as of 2.6.11)
16 The irq_mask and irq_list parameters should no longer be used in
17 PCMCIA card drivers. Instead, it is the job of the PCMCIA core to
18 determine which IRQ should be used. Therefore, link->irq.IRQInfo2
19 is ignored.
20
21* client->PendingEvents is gone (as of 2.6.11)
22 client->PendingEvents is no longer available.
23
24* client->Attributes are gone (as of 2.6.11)
25 client->Attributes is unused, therefore it is removed from all
26 PCMCIA card drivers
27
28* core functions no longer available (as of 2.6.11)
29 The following functions have been removed from the kernel source
30 because they are unused by all in-kernel drivers, and no external
31 driver was reported to rely on them:
32 pcmcia_get_first_region()
33 pcmcia_get_next_region()
34 pcmcia_modify_window()
35 pcmcia_set_event_mask()
36 pcmcia_get_first_window()
37 pcmcia_get_next_window()
38
39* device list iteration upon module removal (as of 2.6.10)
40 It is no longer necessary to iterate on the driver's internal
41 client list and call the ->detach() function upon module removal.
42
43* Resource management. (as of 2.6.8)
44 Although the PCMCIA subsystem will allocate resources for cards,
45 it no longer marks these resources busy. This means that driver
46 authors are now responsible for claiming your resources as per
47 other drivers in Linux. You should use request_region() to mark
48 your IO regions in-use, and request_mem_region() to mark your
49 memory regions in-use. The name argument should be a pointer to
50 your driver name. Eg, for pcnet_cs, name should point to the
51 string "pcnet_cs".
diff --git a/Documentation/serial/driver b/Documentation/serial/driver
index e9c0178cd202..ac7eabbf662a 100644
--- a/Documentation/serial/driver
+++ b/Documentation/serial/driver
@@ -107,8 +107,8 @@ hardware.
107 indicate that the signal is permanently active. If RI is 107 indicate that the signal is permanently active. If RI is
108 not available, the signal should not be indicated as active. 108 not available, the signal should not be indicated as active.
109 109
110 Locking: none. 110 Locking: port->lock taken.
111 Interrupts: caller dependent. 111 Interrupts: locally disabled.
112 This call must not sleep 112 This call must not sleep
113 113
114 stop_tx(port,tty_stop) 114 stop_tx(port,tty_stop)
diff --git a/Documentation/video4linux/API.html b/Documentation/video4linux/API.html
index 4b3d8f640a4a..441407b12a9f 100644
--- a/Documentation/video4linux/API.html
+++ b/Documentation/video4linux/API.html
@@ -1,399 +1,16 @@
1<HTML><HEAD> 1<TITLE>V4L API</TITLE>
2<TITLE>Video4Linux Kernel API Reference v0.1:19990430</TITLE> 2<H1>Video For Linux APIs</H1>
3</HEAD> 3<table border=0>
4<! Revision History: > 4<tr>
5<! 4/30/1999 - Fred Gleason (fredg@wava.com)> 5<td>
6<! Documented extensions for the Radio Data System (RDS) extensions > 6<A HREF=http://www.linuxtv.org/downloads/video4linux/API/V4L1_API.html>
7<BODY bgcolor="#ffffff"> 7V4L original API</a>
8<H3>Devices</H3> 8</td><td>
9Video4Linux provides the following sets of device files. These live on the 9Obsoleted by V4L2 API
10character device formerly known as "/dev/bttv". /dev/bttv should be a 10</td></tr><tr><td>
11symlink to /dev/video0 for most people. 11<A HREF=http://www.linuxtv.org/downloads/video4linux/API/V4L2_API.html>
12<P> 12V4L2 API</a>
13<TABLE> 13</td><td>
14<TR><TH>Device Name</TH><TH>Minor Range</TH><TH>Function</TH> 14Should be used for new projects
15<TR><TD>/dev/video</TD><TD>0-63</TD><TD>Video Capture Interface</TD> 15</td></tr>
16<TR><TD>/dev/radio</TD><TD>64-127</TD><TD>AM/FM Radio Devices</TD> 16</table>
17<TR><TD>/dev/vtx</TD><TD>192-223</TD><TD>Teletext Interface Chips</TD>
18<TR><TD>/dev/vbi</TD><TD>224-239</TD><TD>Raw VBI Data (Intercast/teletext)</TD>
19</TABLE>
20<P>
21Video4Linux programs open and scan the devices to find what they are looking
22for. Capability queries define what each interface supports. The
23described API is only defined for video capture cards. The relevant subset
24applies to radio cards. Teletext interfaces talk the existing VTX API.
25<P>
26<H3>Capability Query Ioctl</H3>
27The <B>VIDIOCGCAP</B> ioctl call is used to obtain the capability
28information for a video device. The <b>struct video_capability</b> object
29passed to the ioctl is completed and returned. It contains the following
30information
31<P>
32<TABLE>
33<TR><TD><b>name[32]</b><TD>Canonical name for this interface</TD>
34<TR><TD><b>type</b><TD>Type of interface</TD>
35<TR><TD><b>channels</b><TD>Number of radio/tv channels if appropriate</TD>
36<TR><TD><b>audios</b><TD>Number of audio devices if appropriate</TD>
37<TR><TD><b>maxwidth</b><TD>Maximum capture width in pixels</TD>
38<TR><TD><b>maxheight</b><TD>Maximum capture height in pixels</TD>
39<TR><TD><b>minwidth</b><TD>Minimum capture width in pixels</TD>
40<TR><TD><b>minheight</b><TD>Minimum capture height in pixels</TD>
41</TABLE>
42<P>
43The type field lists the capability flags for the device. These are
44as follows
45<P>
46<TABLE>
47<TR><TH>Name</TH><TH>Description</TH>
48<TR><TD><b>VID_TYPE_CAPTURE</b><TD>Can capture to memory</TD>
49<TR><TD><b>VID_TYPE_TUNER</b><TD>Has a tuner of some form</TD>
50<TR><TD><b>VID_TYPE_TELETEXT</b><TD>Has teletext capability</TD>
51<TR><TD><b>VID_TYPE_OVERLAY</b><TD>Can overlay its image onto the frame buffer</TD>
52<TR><TD><b>VID_TYPE_CHROMAKEY</b><TD>Overlay is Chromakeyed</TD>
53<TR><TD><b>VID_TYPE_CLIPPING</b><TD>Overlay clipping is supported</TD>
54<TR><TD><b>VID_TYPE_FRAMERAM</b><TD>Overlay overwrites frame buffer memory</TD>
55<TR><TD><b>VID_TYPE_SCALES</b><TD>The hardware supports image scaling</TD>
56<TR><TD><b>VID_TYPE_MONOCHROME</b><TD>Image capture is grey scale only</TD>
57<TR><TD><b>VID_TYPE_SUBCAPTURE</b><TD>Capture can be of only part of the image</TD>
58</TABLE>
59<P>
60The minimum and maximum sizes listed for a capture device do not imply all
61that all height/width ratios or sizes within the range are possible. A
62request to set a size will be honoured by the largest available capture
63size whose capture is no large than the requested rectangle in either
64direction. For example the quickcam has 3 fixed settings.
65<P>
66<H3>Frame Buffer</H3>
67Capture cards that drop data directly onto the frame buffer must be told the
68base address of the frame buffer, its size and organisation. This is a
69privileged ioctl and one that eventually X itself should set.
70<P>
71The <b>VIDIOCSFBUF</b> ioctl sets the frame buffer parameters for a capture
72card. If the card does not do direct writes to the frame buffer then this
73ioctl will be unsupported. The <b>VIDIOCGFBUF</b> ioctl returns the
74currently used parameters. The structure used in both cases is a
75<b>struct video_buffer</b>.
76<P>
77<TABLE>
78<TR><TD><b>void *base</b></TD><TD>Base physical address of the buffer</TD>
79<TR><TD><b>int height</b></TD><TD>Height of the frame buffer</TD>
80<TR><TD><b>int width</b></TD><TD>Width of the frame buffer</TD>
81<TR><TD><b>int depth</b></TD><TD>Depth of the frame buffer</TD>
82<TR><TD><b>int bytesperline</b></TD><TD>Number of bytes of memory between the start of two adjacent lines</TD>
83</TABLE>
84<P>
85Note that these values reflect the physical layout of the frame buffer.
86The visible area may be smaller. In fact under XFree86 this is commonly the
87case. XFree86 DGA can provide the parameters required to set up this ioctl.
88Setting the base address to NULL indicates there is no physical frame buffer
89access.
90<P>
91<H3>Capture Windows</H3>
92The capture area is described by a <b>struct video_window</b>. This defines
93a capture area and the clipping information if relevant. The
94<b>VIDIOCGWIN</b> ioctl recovers the current settings and the
95<b>VIDIOCSWIN</b> sets new values. A successful call to <b>VIDIOCSWIN</b>
96indicates that a suitable set of parameters have been chosen. They do not
97indicate that exactly what was requested was granted. The program should
98call <b>VIDIOCGWIN</b> to check if the nearest match was suitable. The
99<b>struct video_window</b> contains the following fields.
100<P>
101<TABLE>
102<TR><TD><b>x</b><TD>The X co-ordinate specified in X windows format.</TD>
103<TR><TD><b>y</b><TD>The Y co-ordinate specified in X windows format.</TD>
104<TR><TD><b>width</b><TD>The width of the image capture.</TD>
105<TR><TD><b>height</b><TD>The height of the image capture.</TD>
106<TR><TD><b>chromakey</b><TD>A host order RGB32 value for the chroma key.</TD>
107<TR><TD><b>flags</b><TD>Additional capture flags.</TD>
108<TR><TD><b>clips</b><TD>A list of clipping rectangles. <em>(Set only)</em></TD>
109<TR><TD><b>clipcount</b><TD>The number of clipping rectangles. <em>(Set only)</em></TD>
110</TABLE>
111<P>
112Clipping rectangles are passed as an array. Each clip consists of the following
113fields available to the user.
114<P>
115<TABLE>
116<TR><TD><b>x</b></TD><TD>X co-ordinate of rectangle to skip</TD>
117<TR><TD><b>y</b></TD><TD>Y co-ordinate of rectangle to skip</TD>
118<TR><TD><b>width</b></TD><TD>Width of rectangle to skip</TD>
119<TR><TD><b>height</b></TD><TD>Height of rectangle to skip</TD>
120</TABLE>
121<P>
122Merely setting the window does not enable capturing. Overlay capturing
123(i.e. PCI-PCI transfer to the frame buffer of the video card)
124is activated by passing the <b>VIDIOCCAPTURE</b> ioctl a value of 1, and
125disabled by passing it a value of 0.
126<P>
127Some capture devices can capture a subfield of the image they actually see.
128This is indicated when VIDEO_TYPE_SUBCAPTURE is defined.
129The video_capture describes the time and special subfields to capture.
130The video_capture structure contains the following fields.
131<P>
132<TABLE>
133<TR><TD><b>x</b></TD><TD>X co-ordinate of source rectangle to grab</TD>
134<TR><TD><b>y</b></TD><TD>Y co-ordinate of source rectangle to grab</TD>
135<TR><TD><b>width</b></TD><TD>Width of source rectangle to grab</TD>
136<TR><TD><b>height</b></TD><TD>Height of source rectangle to grab</TD>
137<TR><TD><b>decimation</b></TD><TD>Decimation to apply</TD>
138<TR><TD><b>flags</b></TD><TD>Flag settings for grabbing</TD>
139</TABLE>
140The available flags are
141<P>
142<TABLE>
143<TR><TH>Name</TH><TH>Description</TH>
144<TR><TD><b>VIDEO_CAPTURE_ODD</b><TD>Capture only odd frames</TD>
145<TR><TD><b>VIDEO_CAPTURE_EVEN</b><TD>Capture only even frames</TD>
146</TABLE>
147<P>
148<H3>Video Sources</H3>
149Each video4linux video or audio device captures from one or more
150source <b>channels</b>. Each channel can be queries with the
151<b>VDIOCGCHAN</b> ioctl call. Before invoking this function the caller
152must set the channel field to the channel that is being queried. On return
153the <b>struct video_channel</b> is filled in with information about the
154nature of the channel itself.
155<P>
156The <b>VIDIOCSCHAN</b> ioctl takes an integer argument and switches the
157capture to this input. It is not defined whether parameters such as colour
158settings or tuning are maintained across a channel switch. The caller should
159maintain settings as desired for each channel. (This is reasonable as
160different video inputs may have different properties).
161<P>
162The <b>struct video_channel</b> consists of the following
163<P>
164<TABLE>
165<TR><TD><b>channel</b></TD><TD>The channel number</TD>
166<TR><TD><b>name</b></TD><TD>The input name - preferably reflecting the label
167on the card input itself</TD>
168<TR><TD><b>tuners</b></TD><TD>Number of tuners for this input</TD>
169<TR><TD><b>flags</b></TD><TD>Properties the tuner has</TD>
170<TR><TD><b>type</b></TD><TD>Input type (if known)</TD>
171<TR><TD><b>norm</b><TD>The norm for this channel</TD>
172</TABLE>
173<P>
174The flags defined are
175<P>
176<TABLE>
177<TR><TD><b>VIDEO_VC_TUNER</b><TD>Channel has tuners.</TD>
178<TR><TD><b>VIDEO_VC_AUDIO</b><TD>Channel has audio.</TD>
179<TR><TD><b>VIDEO_VC_NORM</b><TD>Channel has norm setting.</TD>
180</TABLE>
181<P>
182The types defined are
183<P>
184<TABLE>
185<TR><TD><b>VIDEO_TYPE_TV</b><TD>The input is a TV input.</TD>
186<TR><TD><b>VIDEO_TYPE_CAMERA</b><TD>The input is a camera.</TD>
187</TABLE>
188<P>
189<H3>Image Properties</H3>
190The image properties of the picture can be queried with the <b>VIDIOCGPICT</b>
191ioctl which fills in a <b>struct video_picture</b>. The <b>VIDIOCSPICT</b>
192ioctl allows values to be changed. All values except for the palette type
193are scaled between 0-65535.
194<P>
195The <b>struct video_picture</b> consists of the following fields
196<P>
197<TABLE>
198<TR><TD><b>brightness</b><TD>Picture brightness</TD>
199<TR><TD><b>hue</b><TD>Picture hue (colour only)</TD>
200<TR><TD><b>colour</b><TD>Picture colour (colour only)</TD>
201<TR><TD><b>contrast</b><TD>Picture contrast</TD>
202<TR><TD><b>whiteness</b><TD>The whiteness (greyscale only)</TD>
203<TR><TD><b>depth</b><TD>The capture depth (may need to match the frame buffer depth)</TD>
204<TR><TD><b>palette</b><TD>Reports the palette that should be used for this image</TD>
205</TABLE>
206<P>
207The following palettes are defined
208<P>
209<TABLE>
210<TR><TD><b>VIDEO_PALETTE_GREY</b><TD>Linear intensity grey scale (255 is brightest).</TD>
211<TR><TD><b>VIDEO_PALETTE_HI240</b><TD>The BT848 8bit colour cube.</TD>
212<TR><TD><b>VIDEO_PALETTE_RGB565</b><TD>RGB565 packed into 16 bit words.</TD>
213<TR><TD><b>VIDEO_PALETTE_RGB555</b><TD>RGV555 packed into 16 bit words, top bit undefined.</TD>
214<TR><TD><b>VIDEO_PALETTE_RGB24</b><TD>RGB888 packed into 24bit words.</TD>
215<TR><TD><b>VIDEO_PALETTE_RGB32</b><TD>RGB888 packed into the low 3 bytes of 32bit words. The top 8bits are undefined.</TD>
216<TR><TD><b>VIDEO_PALETTE_YUV422</b><TD>Video style YUV422 - 8bits packed 4bits Y 2bits U 2bits V</TD>
217<TR><TD><b>VIDEO_PALETTE_YUYV</b><TD>Describe me</TD>
218<TR><TD><b>VIDEO_PALETTE_UYVY</b><TD>Describe me</TD>
219<TR><TD><b>VIDEO_PALETTE_YUV420</b><TD>YUV420 capture</TD>
220<TR><TD><b>VIDEO_PALETTE_YUV411</b><TD>YUV411 capture</TD>
221<TR><TD><b>VIDEO_PALETTE_RAW</b><TD>RAW capture (BT848)</TD>
222<TR><TD><b>VIDEO_PALETTE_YUV422P</b><TD>YUV 4:2:2 Planar</TD>
223<TR><TD><b>VIDEO_PALETTE_YUV411P</b><TD>YUV 4:1:1 Planar</TD>
224</TABLE>
225<P>
226<H3>Tuning</H3>
227Each video input channel can have one or more tuners associated with it. Many
228devices will not have tuners. TV cards and radio cards will have one or more
229tuners attached.
230<P>
231Tuners are described by a <b>struct video_tuner</b> which can be obtained by
232the <b>VIDIOCGTUNER</b> ioctl. Fill in the tuner number in the structure
233then pass the structure to the ioctl to have the data filled in. The
234tuner can be switched using <b>VIDIOCSTUNER</b> which takes an integer argument
235giving the tuner to use. A struct tuner has the following fields
236<P>
237<TABLE>
238<TR><TD><b>tuner</b><TD>Number of the tuner</TD>
239<TR><TD><b>name</b><TD>Canonical name for this tuner (eg FM/AM/TV)</TD>
240<TR><TD><b>rangelow</b><TD>Lowest tunable frequency</TD>
241<TR><TD><b>rangehigh</b><TD>Highest tunable frequency</TD>
242<TR><TD><b>flags</b><TD>Flags describing the tuner</TD>
243<TR><TD><b>mode</b><TD>The video signal mode if relevant</TD>
244<TR><TD><b>signal</b><TD>Signal strength if known - between 0-65535</TD>
245</TABLE>
246<P>
247The following flags exist
248<P>
249<TABLE>
250<TR><TD><b>VIDEO_TUNER_PAL</b><TD>PAL tuning is supported</TD>
251<TR><TD><b>VIDEO_TUNER_NTSC</b><TD>NTSC tuning is supported</TD>
252<TR><TD><b>VIDEO_TUNER_SECAM</b><TD>SECAM tuning is supported</TD>
253<TR><TD><b>VIDEO_TUNER_LOW</b><TD>Frequency is in a lower range</TD>
254<TR><TD><b>VIDEO_TUNER_NORM</b><TD>The norm for this tuner is settable</TD>
255<TR><TD><b>VIDEO_TUNER_STEREO_ON</b><TD>The tuner is seeing stereo audio</TD>
256<TR><TD><b>VIDEO_TUNER_RDS_ON</b><TD>The tuner is seeing a RDS datastream</TD>
257<TR><TD><b>VIDEO_TUNER_MBS_ON</b><TD>The tuner is seeing a MBS datastream</TD>
258</TABLE>
259<P>
260The following modes are defined
261<P>
262<TABLE>
263<TR><TD><b>VIDEO_MODE_PAL</b><TD>The tuner is in PAL mode</TD>
264<TR><TD><b>VIDEO_MODE_NTSC</b><TD>The tuner is in NTSC mode</TD>
265<TR><TD><b>VIDEO_MODE_SECAM</b><TD>The tuner is in SECAM mode</TD>
266<TR><TD><b>VIDEO_MODE_AUTO</b><TD>The tuner auto switches, or mode does not apply</TD>
267</TABLE>
268<P>
269Tuning frequencies are an unsigned 32bit value in 1/16th MHz or if the
270<b>VIDEO_TUNER_LOW</b> flag is set they are in 1/16th KHz. The current
271frequency is obtained as an unsigned long via the <b>VIDIOCGFREQ</b> ioctl and
272set by the <b>VIDIOCSFREQ</b> ioctl.
273<P>
274<H3>Audio</H3>
275TV and Radio devices have one or more audio inputs that may be selected.
276The audio properties are queried by passing a <b>struct video_audio</b> to <b>VIDIOCGAUDIO</b> ioctl. The
277<b>VIDIOCSAUDIO</b> ioctl sets audio properties.
278<P>
279The structure contains the following fields
280<P>
281<TABLE>
282<TR><TD><b>audio</b><TD>The channel number</TD>
283<TR><TD><b>volume</b><TD>The volume level</TD>
284<TR><TD><b>bass</b><TD>The bass level</TD>
285<TR><TD><b>treble</b><TD>The treble level</TD>
286<TR><TD><b>flags</b><TD>Flags describing the audio channel</TD>
287<TR><TD><b>name</b><TD>Canonical name for the audio input</TD>
288<TR><TD><b>mode</b><TD>The mode the audio input is in</TD>
289<TR><TD><b>balance</b><TD>The left/right balance</TD>
290<TR><TD><b>step</b><TD>Actual step used by the hardware</TD>
291</TABLE>
292<P>
293The following flags are defined
294<P>
295<TABLE>
296<TR><TD><b>VIDEO_AUDIO_MUTE</b><TD>The audio is muted</TD>
297<TR><TD><b>VIDEO_AUDIO_MUTABLE</b><TD>Audio muting is supported</TD>
298<TR><TD><b>VIDEO_AUDIO_VOLUME</b><TD>The volume is controllable</TD>
299<TR><TD><b>VIDEO_AUDIO_BASS</b><TD>The bass is controllable</TD>
300<TR><TD><b>VIDEO_AUDIO_TREBLE</b><TD>The treble is controllable</TD>
301<TR><TD><b>VIDEO_AUDIO_BALANCE</b><TD>The balance is controllable</TD>
302</TABLE>
303<P>
304The following decoding modes are defined
305<P>
306<TABLE>
307<TR><TD><b>VIDEO_SOUND_MONO</b><TD>Mono signal</TD>
308<TR><TD><b>VIDEO_SOUND_STEREO</b><TD>Stereo signal (NICAM for TV)</TD>
309<TR><TD><b>VIDEO_SOUND_LANG1</b><TD>European TV alternate language 1</TD>
310<TR><TD><b>VIDEO_SOUND_LANG2</b><TD>European TV alternate language 2</TD>
311</TABLE>
312<P>
313<H3>Reading Images</H3>
314Each call to the <b>read</b> syscall returns the next available image
315from the device. It is up to the caller to set format and size (using
316the VIDIOCSPICT and VIDIOCSWIN ioctls) and then to pass a suitable
317size buffer and length to the function. Not all devices will support
318read operations.
319<P>
320A second way to handle image capture is via the mmap interface if supported.
321To use the mmap interface a user first sets the desired image size and depth
322properties. Next the VIDIOCGMBUF ioctl is issued. This reports the size
323of buffer to mmap and the offset within the buffer for each frame. The
324number of frames supported is device dependent and may only be one.
325<P>
326The video_mbuf structure contains the following fields
327<P>
328<TABLE>
329<TR><TD><b>size</b><TD>The number of bytes to map</TD>
330<TR><TD><b>frames</b><TD>The number of frames</TD>
331<TR><TD><b>offsets</b><TD>The offset of each frame</TD>
332</TABLE>
333<P>
334Once the mmap has been made the VIDIOCMCAPTURE ioctl starts the
335capture to a frame using the format and image size specified in the
336video_mmap (which should match or be below the initial query size).
337When the VIDIOCMCAPTURE ioctl returns the frame is <em>not</em>
338captured yet, the driver just instructed the hardware to start the
339capture. The application has to use the VIDIOCSYNC ioctl to wait
340until the capture of a frame is finished. VIDIOCSYNC takes the frame
341number you want to wait for as argument.
342<p>
343It is allowed to call VIDIOCMCAPTURE multiple times (with different
344frame numbers in video_mmap->frame of course) and thus have multiple
345outstanding capture requests. A simple way do to double-buffering
346using this feature looks like this:
347<pre>
348/* setup everything */
349VIDIOCMCAPTURE(0)
350while (whatever) {
351 VIDIOCMCAPTURE(1)
352 VIDIOCSYNC(0)
353 /* process frame 0 while the hardware captures frame 1 */
354 VIDIOCMCAPTURE(0)
355 VIDIOCSYNC(1)
356 /* process frame 1 while the hardware captures frame 0 */
357}
358</pre>
359Note that you are <em>not</em> limited to only two frames. The API
360allows up to 32 frames, the VIDIOCGMBUF ioctl returns the number of
361frames the driver granted. Thus it is possible to build deeper queues
362to avoid loosing frames on load peaks.
363<p>
364While capturing to memory the driver will make a "best effort" attempt
365to capture to screen as well if requested. This normally means all
366frames that "miss" memory mapped capture will go to the display.
367<P>
368A final ioctl exists to allow a device to obtain related devices if a
369driver has multiple components (for example video0 may not be associated
370with vbi0 which would cause an intercast display program to make a bad
371mistake). The VIDIOCGUNIT ioctl reports the unit numbers of the associated
372devices if any exist. The video_unit structure has the following fields.
373<P>
374<TABLE>
375<TR><TD><b>video</b><TD>Video capture device</TD>
376<TR><TD><b>vbi</b><TD>VBI capture device</TD>
377<TR><TD><b>radio</b><TD>Radio device</TD>
378<TR><TD><b>audio</b><TD>Audio mixer</TD>
379<TR><TD><b>teletext</b><TD>Teletext device</TD>
380</TABLE>
381<P>
382<H3>RDS Datastreams</H3>
383For radio devices that support it, it is possible to receive Radio Data
384System (RDS) data by means of a read() on the device. The data is packed in
385groups of three, as follows:
386<TABLE>
387<TR><TD>First Octet</TD><TD>Least Significant Byte of RDS Block</TD></TR>
388<TR><TD>Second Octet</TD><TD>Most Significant Byte of RDS Block
389<TR><TD>Third Octet</TD><TD>Bit 7:</TD><TD>Error bit. Indicates that
390an uncorrectable error occurred during reception of this block.</TD></TR>
391<TR><TD>&nbsp;</TD><TD>Bit 6:</TD><TD>Corrected bit. Indicates that
392an error was corrected for this data block.</TD></TR>
393<TR><TD>&nbsp;</TD><TD>Bits 5-3:</TD><TD>Received Offset. Indicates the
394offset received by the sync system.</TD></TR>
395<TR><TD>&nbsp;</TD><TD>Bits 2-0:</TD><TD>Offset Name. Indicates the
396offset applied to this data.</TD></TR>
397</TABLE>
398</BODY>
399</HTML>
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88
index 216f705495cc..4377aa11f567 100644
--- a/Documentation/video4linux/CARDLIST.cx88
+++ b/Documentation/video4linux/CARDLIST.cx88
@@ -13,17 +13,17 @@ card=11 - Prolink PlayTV PVR
13card=12 - ASUS PVR-416 13card=12 - ASUS PVR-416
14card=13 - MSI TV-@nywhere 14card=13 - MSI TV-@nywhere
15card=14 - KWorld/VStream XPert DVB-T 15card=14 - KWorld/VStream XPert DVB-T
16card=15 - DVICO FusionHDTV DVB-T1 16card=15 - DViCO FusionHDTV DVB-T1
17card=16 - KWorld LTV883RF 17card=16 - KWorld LTV883RF
18card=17 - DViCO - FusionHDTV 3 Gold 18card=17 - DViCO FusionHDTV 3 Gold-Q
19card=18 - Hauppauge Nova-T DVB-T 19card=18 - Hauppauge Nova-T DVB-T
20card=19 - Conexant DVB-T reference design 20card=19 - Conexant DVB-T reference design
21card=20 - Provideo PV259 21card=20 - Provideo PV259
22card=21 - DVICO FusionHDTV DVB-T Plus 22card=21 - DViCO FusionHDTV DVB-T Plus
23card=22 - digitalnow DNTV Live! DVB-T 23card=22 - digitalnow DNTV Live! DVB-T
24card=23 - pcHDTV HD3000 HDTV 24card=23 - pcHDTV HD3000 HDTV
25card=24 - Hauppauge WinTV 28xxx (Roslyn) models 25card=24 - Hauppauge WinTV 28xxx (Roslyn) models
26card=25 - Digital-Logic MICROSPACE Entertainment Center (MEC) 26card=25 - Digital-Logic MICROSPACE Entertainment Center (MEC)
27card=26 - IODATA GV/BCTV7E 27card=26 - IODATA GV/BCTV7E
28card=27 - PixelView PlayTV Ultra Pro (Stereo) 28card=27 - PixelView PlayTV Ultra Pro (Stereo)
29card=28 - DViCO - FusionHDTV 3 Gold-T 29card=28 - DViCO FusionHDTV 3 Gold-T
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134
index d5ed95d28500..735e8ba02d9f 100644
--- a/Documentation/video4linux/CARDLIST.saa7134
+++ b/Documentation/video4linux/CARDLIST.saa7134
@@ -54,3 +54,9 @@
54 55 -> LifeView FlyDVB-T DUO [5168:0306] 54 55 -> LifeView FlyDVB-T DUO [5168:0306]
55 56 -> Avermedia AVerTV 307 [1461:a70a] 55 56 -> Avermedia AVerTV 307 [1461:a70a]
56 57 -> Avermedia AVerTV GO 007 FM [1461:f31f] 56 57 -> Avermedia AVerTV GO 007 FM [1461:f31f]
57 58 -> ADS Tech Instant TV (saa7135) [1421:0350,1421:0370]
58 59 -> Kworld/Tevion V-Stream Xpert TV PVR7134
59 60 -> Typhoon DVB-T Duo Digital/Analog Cardbus
60 61 -> Philips TOUGH DVB-T reference design
61 62 -> Compro VideoMate TV Gold+II
62 63 -> Kworld Xpert TV PVR7134
diff --git a/Documentation/video4linux/CARDLIST.tuner b/Documentation/video4linux/CARDLIST.tuner
index aeb8df8ce890..e78020f68b2e 100644
--- a/Documentation/video4linux/CARDLIST.tuner
+++ b/Documentation/video4linux/CARDLIST.tuner
@@ -59,3 +59,6 @@ tuner=57 - Philips FQ1236A MK4
59tuner=58 - Ymec TVision TVF-8531MF 59tuner=58 - Ymec TVision TVF-8531MF
60tuner=59 - Ymec TVision TVF-5533MF 60tuner=59 - Ymec TVision TVF-5533MF
61tuner=60 - Thomson DDT 7611 (ATSC/NTSC) 61tuner=60 - Thomson DDT 7611 (ATSC/NTSC)
62tuner=61 - Tena TNF9533-D/IF
63tuner=62 - Philips TEA5767HN FM Radio
64tuner=63 - Philips FMD1216ME MK3 Hybrid Tuner
diff --git a/Documentation/video4linux/README.saa7134 b/Documentation/video4linux/README.saa7134
index 1a446c65365e..1f788e498eff 100644
--- a/Documentation/video4linux/README.saa7134
+++ b/Documentation/video4linux/README.saa7134
@@ -57,6 +57,15 @@ Cards can use either of these two crystals (xtal):
57 - 24.576MHz -> .audio_clock=0x200000 57 - 24.576MHz -> .audio_clock=0x200000
58(xtal * .audio_clock = 51539600) 58(xtal * .audio_clock = 51539600)
59 59
60Some details about 30/34/35:
61
62 - saa7130 - low-price chip, doesn't have mute, that is why all those
63 cards should have .mute field defined in their tuner structure.
64
65 - saa7134 - usual chip
66
67 - saa7133/35 - saa7135 is probably a marketing decision, since all those
68 chips identifies itself as 33 on pci.
60 69
61Credits 70Credits
62======= 71=======