aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/ABI/testing/debugfs-pktcdvd5
-rw-r--r--Documentation/ABI/testing/sysfs-class-pktcdvd2
-rw-r--r--Documentation/DocBook/gadget.tmpl4
-rw-r--r--Documentation/DocBook/kernel-api.tmpl3
-rw-r--r--Documentation/DocBook/stylesheet.xsl1
-rw-r--r--Documentation/DocBook/usb.tmpl6
-rw-r--r--Documentation/auxdisplay/cfag12864b105
-rw-r--r--Documentation/auxdisplay/cfag12864b-example.c282
-rw-r--r--Documentation/auxdisplay/ks010855
-rw-r--r--Documentation/cdrom/packet-writing.txt2
-rw-r--r--Documentation/driver-model/devres.txt268
-rw-r--r--Documentation/drivers/edac/edac.txt16
-rw-r--r--Documentation/fb/s3fb.txt78
-rw-r--r--Documentation/feature-removal-schedule.txt22
-rw-r--r--Documentation/filesystems/relay.txt9
-rw-r--r--Documentation/filesystems/ufs.txt9
-rw-r--r--Documentation/gpio.txt271
-rw-r--r--Documentation/ioctl-number.txt3
-rw-r--r--Documentation/isdn/README.gigaset65
-rw-r--r--Documentation/kdump/kdump.txt8
-rw-r--r--Documentation/kernel-doc-nano-HOWTO.txt39
-rw-r--r--Documentation/kernel-parameters.txt2
-rw-r--r--Documentation/local_ops.txt163
-rw-r--r--Documentation/nfsroot.txt4
-rw-r--r--Documentation/rbtree.txt192
-rw-r--r--Documentation/rtc.txt46
-rw-r--r--Documentation/scsi/ChangeLog.megaraid16
-rw-r--r--Documentation/spi/spi-summary3
-rw-r--r--Documentation/sysrq.txt44
29 files changed, 1639 insertions, 84 deletions
diff --git a/Documentation/ABI/testing/debugfs-pktcdvd b/Documentation/ABI/testing/debugfs-pktcdvd
index 03dbd883cc41..bf9c16b64c34 100644
--- a/Documentation/ABI/testing/debugfs-pktcdvd
+++ b/Documentation/ABI/testing/debugfs-pktcdvd
@@ -1,6 +1,6 @@
1What: /debug/pktcdvd/pktcdvd[0-7] 1What: /debug/pktcdvd/pktcdvd[0-7]
2Date: Oct. 2006 2Date: Oct. 2006
3KernelVersion: 2.6.19 3KernelVersion: 2.6.20
4Contact: Thomas Maier <balagi@justmail.de> 4Contact: Thomas Maier <balagi@justmail.de>
5Description: 5Description:
6 6
@@ -11,8 +11,7 @@ The pktcdvd module (packet writing driver) creates
11these files in debugfs: 11these files in debugfs:
12 12
13/debug/pktcdvd/pktcdvd[0-7]/ 13/debug/pktcdvd/pktcdvd[0-7]/
14 info (0444) Lots of human readable driver 14 info (0444) Lots of driver statistics and infos.
15 statistics and infos. Multiple lines!
16 15
17Example: 16Example:
18------- 17-------
diff --git a/Documentation/ABI/testing/sysfs-class-pktcdvd b/Documentation/ABI/testing/sysfs-class-pktcdvd
index c4c55edc9a5c..b1c3f0263359 100644
--- a/Documentation/ABI/testing/sysfs-class-pktcdvd
+++ b/Documentation/ABI/testing/sysfs-class-pktcdvd
@@ -1,6 +1,6 @@
1What: /sys/class/pktcdvd/ 1What: /sys/class/pktcdvd/
2Date: Oct. 2006 2Date: Oct. 2006
3KernelVersion: 2.6.19 3KernelVersion: 2.6.20
4Contact: Thomas Maier <balagi@justmail.de> 4Contact: Thomas Maier <balagi@justmail.de>
5Description: 5Description:
6 6
diff --git a/Documentation/DocBook/gadget.tmpl b/Documentation/DocBook/gadget.tmpl
index a34442436128..e7fc96433408 100644
--- a/Documentation/DocBook/gadget.tmpl
+++ b/Documentation/DocBook/gadget.tmpl
@@ -482,13 +482,13 @@ slightly.
482<para>Gadget drivers 482<para>Gadget drivers
483rely on common USB structures and constants 483rely on common USB structures and constants
484defined in the 484defined in the
485<filename>&lt;linux/usb_ch9.h&gt;</filename> 485<filename>&lt;linux/usb/ch9.h&gt;</filename>
486header file, which is standard in Linux 2.6 kernels. 486header file, which is standard in Linux 2.6 kernels.
487These are the same types and constants used by host 487These are the same types and constants used by host
488side drivers (and usbcore). 488side drivers (and usbcore).
489</para> 489</para>
490 490
491!Iinclude/linux/usb_ch9.h 491!Iinclude/linux/usb/ch9.h
492</sect1> 492</sect1>
493 493
494<sect1 id="core"><title>Core Objects and Methods</title> 494<sect1 id="core"><title>Core Objects and Methods</title>
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index 3fa0c4b4541e..0bb90237e230 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -316,6 +316,9 @@ X!Earch/i386/kernel/mca.c
316 <sect1><title>DMI Interfaces</title> 316 <sect1><title>DMI Interfaces</title>
317!Edrivers/firmware/dmi_scan.c 317!Edrivers/firmware/dmi_scan.c
318 </sect1> 318 </sect1>
319 <sect1><title>EDD Interfaces</title>
320!Idrivers/firmware/edd.c
321 </sect1>
319 </chapter> 322 </chapter>
320 323
321 <chapter id="security"> 324 <chapter id="security">
diff --git a/Documentation/DocBook/stylesheet.xsl b/Documentation/DocBook/stylesheet.xsl
index 3ccce886c349..974e17ccf106 100644
--- a/Documentation/DocBook/stylesheet.xsl
+++ b/Documentation/DocBook/stylesheet.xsl
@@ -4,4 +4,5 @@
4<param name="funcsynopsis.style">ansi</param> 4<param name="funcsynopsis.style">ansi</param>
5<param name="funcsynopsis.tabular.threshold">80</param> 5<param name="funcsynopsis.tabular.threshold">80</param>
6<!-- <param name="paper.type">A4</param> --> 6<!-- <param name="paper.type">A4</param> -->
7<param name="generate.section.toc.level">2</param>
7</stylesheet> 8</stylesheet>
diff --git a/Documentation/DocBook/usb.tmpl b/Documentation/DocBook/usb.tmpl
index 143e5ff7deb8..a2ebd651b05a 100644
--- a/Documentation/DocBook/usb.tmpl
+++ b/Documentation/DocBook/usb.tmpl
@@ -187,13 +187,13 @@
187 187
188<chapter><title>USB-Standard Types</title> 188<chapter><title>USB-Standard Types</title>
189 189
190 <para>In <filename>&lt;linux/usb_ch9.h&gt;</filename> you will find 190 <para>In <filename>&lt;linux/usb/ch9.h&gt;</filename> you will find
191 the USB data types defined in chapter 9 of the USB specification. 191 the USB data types defined in chapter 9 of the USB specification.
192 These data types are used throughout USB, and in APIs including 192 These data types are used throughout USB, and in APIs including
193 this host side API, gadget APIs, and usbfs. 193 this host side API, gadget APIs, and usbfs.
194 </para> 194 </para>
195 195
196!Iinclude/linux/usb_ch9.h 196!Iinclude/linux/usb/ch9.h
197 197
198 </chapter> 198 </chapter>
199 199
@@ -574,7 +574,7 @@ for (;;) {
574#include &lt;asm/byteorder.h&gt;</programlisting> 574#include &lt;asm/byteorder.h&gt;</programlisting>
575 The standard USB device model requests, from "Chapter 9" of 575 The standard USB device model requests, from "Chapter 9" of
576 the USB 2.0 specification, are automatically included from 576 the USB 2.0 specification, are automatically included from
577 the <filename>&lt;linux/usb_ch9.h&gt;</filename> header. 577 the <filename>&lt;linux/usb/ch9.h&gt;</filename> header.
578 </para> 578 </para>
579 579
580 <para>Unless noted otherwise, the ioctl requests 580 <para>Unless noted otherwise, the ioctl requests
diff --git a/Documentation/auxdisplay/cfag12864b b/Documentation/auxdisplay/cfag12864b
new file mode 100644
index 000000000000..3572b98f45b8
--- /dev/null
+++ b/Documentation/auxdisplay/cfag12864b
@@ -0,0 +1,105 @@
1 ===================================
2 cfag12864b LCD Driver Documentation
3 ===================================
4
5License: GPLv2
6Author & Maintainer: Miguel Ojeda Sandonis <maxextreme@gmail.com>
7Date: 2006-10-27
8
9
10
11--------
120. INDEX
13--------
14
15 1. DRIVER INFORMATION
16 2. DEVICE INFORMATION
17 3. WIRING
18 4. USERSPACE PROGRAMMING
19
20
21---------------------
221. DRIVER INFORMATION
23---------------------
24
25This driver support one cfag12864b display at time.
26
27
28---------------------
292. DEVICE INFORMATION
30---------------------
31
32Manufacturer: Crystalfontz
33Device Name: Crystalfontz 12864b LCD Series
34Device Code: cfag12864b
35Webpage: http://www.crystalfontz.com
36Device Webpage: http://www.crystalfontz.com/products/12864b/
37Type: LCD (Liquid Crystal Display)
38Width: 128
39Height: 64
40Colors: 2 (B/N)
41Controller: ks0108
42Controllers: 2
43Pages: 8 each controller
44Addresses: 64 each page
45Data size: 1 byte each address
46Memory size: 2 * 8 * 64 * 1 = 1024 bytes = 1 Kbyte
47
48
49---------
503. WIRING
51---------
52
53The cfag12864b LCD Series don't have official wiring.
54
55The common wiring is done to the parallel port as shown:
56
57Parallel Port cfag12864b
58
59 Name Pin# Pin# Name
60
61Strobe ( 1)------------------------------(17) Enable
62Data 0 ( 2)------------------------------( 4) Data 0
63Data 1 ( 3)------------------------------( 5) Data 1
64Data 2 ( 4)------------------------------( 6) Data 2
65Data 3 ( 5)------------------------------( 7) Data 3
66Data 4 ( 6)------------------------------( 8) Data 4
67Data 5 ( 7)------------------------------( 9) Data 5
68Data 6 ( 8)------------------------------(10) Data 6
69Data 7 ( 9)------------------------------(11) Data 7
70 (10) [+5v]---( 1) Vdd
71 (11) [GND]---( 2) Ground
72 (12) [+5v]---(14) Reset
73 (13) [GND]---(15) Read / Write
74 Line (14)------------------------------(13) Controller Select 1
75 (15)
76 Init (16)------------------------------(12) Controller Select 2
77Select (17)------------------------------(16) Data / Instruction
78Ground (18)---[GND] [+5v]---(19) LED +
79Ground (19)---[GND]
80Ground (20)---[GND] E A Values:
81Ground (21)---[GND] [GND]---[P1]---(18) Vee · R = Resistor = 22 ohm
82Ground (22)---[GND] | · P1 = Preset = 10 Kohm
83Ground (23)---[GND] ---- S ------( 3) V0 · P2 = Preset = 1 Kohm
84Ground (24)---[GND] | |
85Ground (25)---[GND] [GND]---[P2]---[R]---(20) LED -
86
87
88------------------------
894. USERSPACE PROGRAMMING
90------------------------
91
92The cfag12864bfb describes a framebuffer device (/dev/fbX).
93
94It has a size of 1024 bytes = 1 Kbyte.
95Each bit represents one pixel. If the bit is high, the pixel will
96turn on. If the pixel is low, the pixel will turn off.
97
98You can use the framebuffer as a file: fopen, fwrite, fclose...
99Although the LCD won't get updated until the next refresh time arrives.
100
101Also, you can mmap the framebuffer: open & mmap, munmap & close...
102which is the best option for most uses.
103
104Check Documentation/auxdisplay/cfag12864b-example.c
105for a real working userspace complete program with usage examples.
diff --git a/Documentation/auxdisplay/cfag12864b-example.c b/Documentation/auxdisplay/cfag12864b-example.c
new file mode 100644
index 000000000000..7bfac354d4c9
--- /dev/null
+++ b/Documentation/auxdisplay/cfag12864b-example.c
@@ -0,0 +1,282 @@
1/*
2 * Filename: cfag12864b-example.c
3 * Version: 0.1.0
4 * Description: cfag12864b LCD userspace example program
5 * License: GPLv2
6 *
7 * Author: Copyright (C) Miguel Ojeda Sandonis <maxextreme@gmail.com>
8 * Date: 2006-10-31
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2 as
12 * published by the Free Software Foundation.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 *
23 */
24
25/*
26 * ------------------------
27 * start of cfag12864b code
28 * ------------------------
29 */
30
31#include <string.h>
32#include <fcntl.h>
33#include <unistd.h>
34#include <sys/types.h>
35#include <sys/stat.h>
36#include <sys/mman.h>
37
38#define CFAG12864B_WIDTH (128)
39#define CFAG12864B_HEIGHT (64)
40#define CFAG12864B_SIZE (128 * 64 / 8)
41#define CFAG12864B_BPB (8)
42#define CFAG12864B_ADDRESS(x, y) ((y) * CFAG12864B_WIDTH / \
43 CFAG12864B_BPB + (x) / CFAG12864B_BPB)
44#define CFAG12864B_BIT(n) (((unsigned char) 1) << (n))
45
46#undef CFAG12864B_DOCHECK
47#ifdef CFAG12864B_DOCHECK
48 #define CFAG12864B_CHECK(x, y) ((x) < CFAG12864B_WIDTH && \
49 (y) < CFAG12864B_HEIGHT)
50#else
51 #define CFAG12864B_CHECK(x, y) (1)
52#endif
53
54int cfag12864b_fd;
55unsigned char * cfag12864b_mem;
56unsigned char cfag12864b_buffer[CFAG12864B_SIZE];
57
58/*
59 * init a cfag12864b framebuffer device
60 *
61 * No error: return = 0
62 * Unable to open: return = -1
63 * Unable to mmap: return = -2
64 */
65int cfag12864b_init(char *path)
66{
67 cfag12864b_fd = open(path, O_RDWR);
68 if (cfag12864b_fd == -1)
69 return -1;
70
71 cfag12864b_mem = mmap(0, CFAG12864B_SIZE, PROT_READ | PROT_WRITE,
72 MAP_SHARED, cfag12864b_fd, 0);
73 if (cfag12864b_mem == MAP_FAILED) {
74 close(cfag12864b_fd);
75 return -2;
76 }
77
78 return 0;
79}
80
81/*
82 * exit a cfag12864b framebuffer device
83 */
84void cfag12864b_exit(void)
85{
86 munmap(cfag12864b_mem, CFAG12864B_SIZE);
87 close(cfag12864b_fd);
88}
89
90/*
91 * set (x, y) pixel
92 */
93void cfag12864b_set(unsigned char x, unsigned char y)
94{
95 if (CFAG12864B_CHECK(x, y))
96 cfag12864b_buffer[CFAG12864B_ADDRESS(x, y)] |=
97 CFAG12864B_BIT(x % CFAG12864B_BPB);
98}
99
100/*
101 * unset (x, y) pixel
102 */
103void cfag12864b_unset(unsigned char x, unsigned char y)
104{
105 if (CFAG12864B_CHECK(x, y))
106 cfag12864b_buffer[CFAG12864B_ADDRESS(x, y)] &=
107 ~CFAG12864B_BIT(x % CFAG12864B_BPB);
108}
109
110/*
111 * is set (x, y) pixel?
112 *
113 * Pixel off: return = 0
114 * Pixel on: return = 1
115 */
116unsigned char cfag12864b_isset(unsigned char x, unsigned char y)
117{
118 if (CFAG12864B_CHECK(x, y))
119 if (cfag12864b_buffer[CFAG12864B_ADDRESS(x, y)] &
120 CFAG12864B_BIT(x % CFAG12864B_BPB))
121 return 1;
122
123 return 0;
124}
125
126/*
127 * not (x, y) pixel
128 */
129void cfag12864b_not(unsigned char x, unsigned char y)
130{
131 if (cfag12864b_isset(x, y))
132 cfag12864b_unset(x, y);
133 else
134 cfag12864b_set(x, y);
135}
136
137/*
138 * fill (set all pixels)
139 */
140void cfag12864b_fill(void)
141{
142 unsigned short i;
143
144 for (i = 0; i < CFAG12864B_SIZE; i++)
145 cfag12864b_buffer[i] = 0xFF;
146}
147
148/*
149 * clear (unset all pixels)
150 */
151void cfag12864b_clear(void)
152{
153 unsigned short i;
154
155 for (i = 0; i < CFAG12864B_SIZE; i++)
156 cfag12864b_buffer[i] = 0;
157}
158
159/*
160 * format a [128*64] matrix
161 *
162 * Pixel off: src[i] = 0
163 * Pixel on: src[i] > 0
164 */
165void cfag12864b_format(unsigned char * matrix)
166{
167 unsigned char i, j, n;
168
169 for (i = 0; i < CFAG12864B_HEIGHT; i++)
170 for (j = 0; j < CFAG12864B_WIDTH / CFAG12864B_BPB; j++) {
171 cfag12864b_buffer[i * CFAG12864B_WIDTH / CFAG12864B_BPB +
172 j] = 0;
173 for (n = 0; n < CFAG12864B_BPB; n++)
174 if (matrix[i * CFAG12864B_WIDTH +
175 j * CFAG12864B_BPB + n])
176 cfag12864b_buffer[i * CFAG12864B_WIDTH /
177 CFAG12864B_BPB + j] |=
178 CFAG12864B_BIT(n);
179 }
180}
181
182/*
183 * blit buffer to lcd
184 */
185void cfag12864b_blit(void)
186{
187 memcpy(cfag12864b_mem, cfag12864b_buffer, CFAG12864B_SIZE);
188}
189
190/*
191 * ----------------------
192 * end of cfag12864b code
193 * ----------------------
194 */
195
196#include <stdio.h>
197#include <string.h>
198
199#define EXAMPLES 6
200
201void example(unsigned char n)
202{
203 unsigned short i, j;
204 unsigned char matrix[CFAG12864B_WIDTH * CFAG12864B_HEIGHT];
205
206 if (n > EXAMPLES)
207 return;
208
209 printf("Example %i/%i - ", n, EXAMPLES);
210
211 switch (n) {
212 case 1:
213 printf("Draw points setting bits");
214 cfag12864b_clear();
215 for (i = 0; i < CFAG12864B_WIDTH; i += 2)
216 for (j = 0; j < CFAG12864B_HEIGHT; j += 2)
217 cfag12864b_set(i, j);
218 break;
219
220 case 2:
221 printf("Clear the LCD");
222 cfag12864b_clear();
223 break;
224
225 case 3:
226 printf("Draw rows formatting a [128*64] matrix");
227 memset(matrix, 0, CFAG12864B_WIDTH * CFAG12864B_HEIGHT);
228 for (i = 0; i < CFAG12864B_WIDTH; i++)
229 for (j = 0; j < CFAG12864B_HEIGHT; j += 2)
230 matrix[j * CFAG12864B_WIDTH + i] = 1;
231 cfag12864b_format(matrix);
232 break;
233
234 case 4:
235 printf("Fill the lcd");
236 cfag12864b_fill();
237 break;
238
239 case 5:
240 printf("Draw columns unsetting bits");
241 for (i = 0; i < CFAG12864B_WIDTH; i += 2)
242 for (j = 0; j < CFAG12864B_HEIGHT; j++)
243 cfag12864b_unset(i, j);
244 break;
245
246 case 6:
247 printf("Do negative not-ing all bits");
248 for (i = 0; i < CFAG12864B_WIDTH; i++)
249 for (j = 0; j < CFAG12864B_HEIGHT; j ++)
250 cfag12864b_not(i, j);
251 break;
252 }
253
254 puts(" - [Press Enter]");
255}
256
257int main(int argc, char *argv[])
258{
259 unsigned char n;
260
261 if (argc != 2) {
262 printf(
263 "Sintax: %s fbdev\n"
264 "Usually: /dev/fb0, /dev/fb1...\n", argv[0]);
265 return -1;
266 }
267
268 if (cfag12864b_init(argv[1])) {
269 printf("Can't init %s fbdev\n", argv[1]);
270 return -2;
271 }
272
273 for (n = 1; n <= EXAMPLES; n++) {
274 example(n);
275 cfag12864b_blit();
276 while (getchar() != '\n');
277 }
278
279 cfag12864b_exit();
280
281 return 0;
282}
diff --git a/Documentation/auxdisplay/ks0108 b/Documentation/auxdisplay/ks0108
new file mode 100644
index 000000000000..92b03b60c613
--- /dev/null
+++ b/Documentation/auxdisplay/ks0108
@@ -0,0 +1,55 @@
1 ==========================================
2 ks0108 LCD Controller Driver Documentation
3 ==========================================
4
5License: GPLv2
6Author & Maintainer: Miguel Ojeda Sandonis <maxextreme@gmail.com>
7Date: 2006-10-27
8
9
10
11--------
120. INDEX
13--------
14
15 1. DRIVER INFORMATION
16 2. DEVICE INFORMATION
17 3. WIRING
18
19
20---------------------
211. DRIVER INFORMATION
22---------------------
23
24This driver support the ks0108 LCD controller.
25
26
27---------------------
282. DEVICE INFORMATION
29---------------------
30
31Manufacturer: Samsung
32Device Name: KS0108 LCD Controller
33Device Code: ks0108
34Webpage: -
35Device Webpage: -
36Type: LCD Controller (Liquid Crystal Display Controller)
37Width: 64
38Height: 64
39Colors: 2 (B/N)
40Pages: 8
41Addresses: 64 each page
42Data size: 1 byte each address
43Memory size: 8 * 64 * 1 = 512 bytes
44
45
46---------
473. WIRING
48---------
49
50The driver supports data parallel port wiring.
51
52If you aren't building LCD related hardware, you should check
53your LCD specific wiring information in the same folder.
54
55For example, check Documentation/auxdisplay/cfag12864b.
diff --git a/Documentation/cdrom/packet-writing.txt b/Documentation/cdrom/packet-writing.txt
index 7715d2247c4d..cf1f8126991c 100644
--- a/Documentation/cdrom/packet-writing.txt
+++ b/Documentation/cdrom/packet-writing.txt
@@ -93,7 +93,7 @@ Notes
93Using the pktcdvd sysfs interface 93Using the pktcdvd sysfs interface
94--------------------------------- 94---------------------------------
95 95
96Since Linux 2.6.19, the pktcdvd module has a sysfs interface 96Since Linux 2.6.20, the pktcdvd module has a sysfs interface
97and can be controlled by it. For example the "pktcdvd" tool uses 97and can be controlled by it. For example the "pktcdvd" tool uses
98this interface. (see http://people.freenet.de/BalaGi#pktcdvd ) 98this interface. (see http://people.freenet.de/BalaGi#pktcdvd )
99 99
diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt
new file mode 100644
index 000000000000..5163b85308f5
--- /dev/null
+++ b/Documentation/driver-model/devres.txt
@@ -0,0 +1,268 @@
1Devres - Managed Device Resource
2================================
3
4Tejun Heo <teheo@suse.de>
5
6First draft 10 January 2007
7
8
91. Intro : Huh? Devres?
102. Devres : Devres in a nutshell
113. Devres Group : Group devres'es and release them together
124. Details : Life time rules, calling context, ...
135. Overhead : How much do we have to pay for this?
146. List of managed interfaces : Currently implemented managed interfaces
15
16
17 1. Intro
18 --------
19
20devres came up while trying to convert libata to use iomap. Each
21iomapped address should be kept and unmapped on driver detach. For
22example, a plain SFF ATA controller (that is, good old PCI IDE) in
23native mode makes use of 5 PCI BARs and all of them should be
24maintained.
25
26As with many other device drivers, libata low level drivers have
27sufficient bugs in ->remove and ->probe failure path. Well, yes,
28that's probably because libata low level driver developers are lazy
29bunch, but aren't all low level driver developers? After spending a
30day fiddling with braindamaged hardware with no document or
31braindamaged document, if it's finally working, well, it's working.
32
33For one reason or another, low level drivers don't receive as much
34attention or testing as core code, and bugs on driver detach or
35initilaization failure doesn't happen often enough to be noticeable.
36Init failure path is worse because it's much less travelled while
37needs to handle multiple entry points.
38
39So, many low level drivers end up leaking resources on driver detach
40and having half broken failure path implementation in ->probe() which
41would leak resources or even cause oops when failure occurs. iomap
42adds more to this mix. So do msi and msix.
43
44
45 2. Devres
46 ---------
47
48devres is basically linked list of arbitrarily sized memory areas
49associated with a struct device. Each devres entry is associated with
50a release function. A devres can be released in several ways. No
51matter what, all devres entries are released on driver detach. On
52release, the associated release function is invoked and then the
53devres entry is freed.
54
55Managed interface is created for resources commonly used by device
56drivers using devres. For example, coherent DMA memory is acquired
57using dma_alloc_coherent(). The managed version is called
58dmam_alloc_coherent(). It is identical to dma_alloc_coherent() except
59for the DMA memory allocated using it is managed and will be
60automatically released on driver detach. Implementation looks like
61the following.
62
63 struct dma_devres {
64 size_t size;
65 void *vaddr;
66 dma_addr_t dma_handle;
67 };
68
69 static void dmam_coherent_release(struct device *dev, void *res)
70 {
71 struct dma_devres *this = res;
72
73 dma_free_coherent(dev, this->size, this->vaddr, this->dma_handle);
74 }
75
76 dmam_alloc_coherent(dev, size, dma_handle, gfp)
77 {
78 struct dma_devres *dr;
79 void *vaddr;
80
81 dr = devres_alloc(dmam_coherent_release, sizeof(*dr), gfp);
82 ...
83
84 /* alloc DMA memory as usual */
85 vaddr = dma_alloc_coherent(...);
86 ...
87
88 /* record size, vaddr, dma_handle in dr */
89 dr->vaddr = vaddr;
90 ...
91
92 devres_add(dev, dr);
93
94 return vaddr;
95 }
96
97If a driver uses dmam_alloc_coherent(), the area is guaranteed to be
98freed whether initialization fails half-way or the device gets
99detached. If most resources are acquired using managed interface, a
100driver can have much simpler init and exit code. Init path basically
101looks like the following.
102
103 my_init_one()
104 {
105 struct mydev *d;
106
107 d = devm_kzalloc(dev, sizeof(*d), GFP_KERNEL);
108 if (!d)
109 return -ENOMEM;
110
111 d->ring = dmam_alloc_coherent(...);
112 if (!d->ring)
113 return -ENOMEM;
114
115 if (check something)
116 return -EINVAL;
117 ...
118
119 return register_to_upper_layer(d);
120 }
121
122And exit path,
123
124 my_remove_one()
125 {
126 unregister_from_upper_layer(d);
127 shutdown_my_hardware();
128 }
129
130As shown above, low level drivers can be simplified a lot by using
131devres. Complexity is shifted from less maintained low level drivers
132to better maintained higher layer. Also, as init failure path is
133shared with exit path, both can get more testing.
134
135
136 3. Devres group
137 ---------------
138
139Devres entries can be grouped using devres group. When a group is
140released, all contained normal devres entries and properly nested
141groups are released. One usage is to rollback series of acquired
142resources on failure. For example,
143
144 if (!devres_open_group(dev, NULL, GFP_KERNEL))
145 return -ENOMEM;
146
147 acquire A;
148 if (failed)
149 goto err;
150
151 acquire B;
152 if (failed)
153 goto err;
154 ...
155
156 devres_remove_group(dev, NULL);
157 return 0;
158
159 err:
160 devres_release_group(dev, NULL);
161 return err_code;
162
163As resource acquision failure usually means probe failure, constructs
164like above are usually useful in midlayer driver (e.g. libata core
165layer) where interface function shouldn't have side effect on failure.
166For LLDs, just returning error code suffices in most cases.
167
168Each group is identified by void *id. It can either be explicitly
169specified by @id argument to devres_open_group() or automatically
170created by passing NULL as @id as in the above example. In both
171cases, devres_open_group() returns the group's id. The returned id
172can be passed to other devres functions to select the target group.
173If NULL is given to those functions, the latest open group is
174selected.
175
176For example, you can do something like the following.
177
178 int my_midlayer_create_something()
179 {
180 if (!devres_open_group(dev, my_midlayer_create_something, GFP_KERNEL))
181 return -ENOMEM;
182
183 ...
184
185 devres_close_group(dev, my_midlayer_something);
186 return 0;
187 }
188
189 void my_midlayer_destroy_something()
190 {
191 devres_release_group(dev, my_midlayer_create_soemthing);
192 }
193
194
195 4. Details
196 ----------
197
198Lifetime of a devres entry begins on devres allocation and finishes
199when it is released or destroyed (removed and freed) - no reference
200counting.
201
202devres core guarantees atomicity to all basic devres operations and
203has support for single-instance devres types (atomic
204lookup-and-add-if-not-found). Other than that, synchronizing
205concurrent accesses to allocated devres data is caller's
206responsibility. This is usually non-issue because bus ops and
207resource allocations already do the job.
208
209For an example of single-instance devres type, read pcim_iomap_table()
210in lib/iomap.c.
211
212All devres interface functions can be called without context if the
213right gfp mask is given.
214
215
216 5. Overhead
217 -----------
218
219Each devres bookkeeping info is allocated together with requested data
220area. With debug option turned off, bookkeeping info occupies 16
221bytes on 32bit machines and 24 bytes on 64bit (three pointers rounded
222up to ull alignment). If singly linked list is used, it can be
223reduced to two pointers (8 bytes on 32bit, 16 bytes on 64bit).
224
225Each devres group occupies 8 pointers. It can be reduced to 6 if
226singly linked list is used.
227
228Memory space overhead on ahci controller with two ports is between 300
229and 400 bytes on 32bit machine after naive conversion (we can
230certainly invest a bit more effort into libata core layer).
231
232
233 6. List of managed interfaces
234 -----------------------------
235
236IO region
237 devm_request_region()
238 devm_request_mem_region()
239 devm_release_region()
240 devm_release_mem_region()
241
242IRQ
243 devm_request_irq()
244 devm_free_irq()
245
246DMA
247 dmam_alloc_coherent()
248 dmam_free_coherent()
249 dmam_alloc_noncoherent()
250 dmam_free_noncoherent()
251 dmam_declare_coherent_memory()
252 dmam_pool_create()
253 dmam_pool_destroy()
254
255PCI
256 pcim_enable_device() : after success, all PCI ops become managed
257 pcim_pin_device() : keep PCI device enabled after release
258
259IOMAP
260 devm_ioport_map()
261 devm_ioport_unmap()
262 devm_ioremap()
263 devm_ioremap_nocache()
264 devm_iounmap()
265 pcim_iomap()
266 pcim_iounmap()
267 pcim_iomap_table() : array of mapped addresses indexed by BAR
268 pcim_iomap_regions() : do request_region() and iomap() on multiple BARs
diff --git a/Documentation/drivers/edac/edac.txt b/Documentation/drivers/edac/edac.txt
index 7b3d969d2964..3c5a9e4297b4 100644
--- a/Documentation/drivers/edac/edac.txt
+++ b/Documentation/drivers/edac/edac.txt
@@ -339,7 +339,21 @@ Device Symlink:
339 339
340 'device' 340 'device'
341 341
342 Symlink to the memory controller device 342 Symlink to the memory controller device.
343
344Sdram memory scrubbing rate:
345
346 'sdram_scrub_rate'
347
348 Read/Write attribute file that controls memory scrubbing. The scrubbing
349 rate is set by writing a minimum bandwith in bytes/sec to the attribute
350 file. The rate will be translated to an internal value that gives at
351 least the specified rate.
352
353 Reading the file will return the actual scrubbing rate employed.
354
355 If configuration fails or memory scrubbing is not implemented, the value
356 of the attribute file will be -1.
343 357
344 358
345 359
diff --git a/Documentation/fb/s3fb.txt b/Documentation/fb/s3fb.txt
new file mode 100644
index 000000000000..8a04c0da0c91
--- /dev/null
+++ b/Documentation/fb/s3fb.txt
@@ -0,0 +1,78 @@
1
2 s3fb - fbdev driver for S3 Trio/Virge chips
3 ===========================================
4
5
6Supported Hardware
7==================
8
9 S3 Trio32
10 S3 Trio64 (and variants V+, UV+, V2/DX, V2/GX)
11 S3 Virge (and variants VX, DX, GX and GX2+)
12 S3 Plato/PX (completely untested)
13 S3 Aurora64V+ (completely untested)
14
15 - only PCI bus supported
16 - only BIOS initialized VGA devices supported
17 - probably not working on big endian
18
19I tested s3fb on Trio64 (plain, V+ and V2/DX) and Virge (plain, VX, DX),
20all on i386.
21
22
23Supported Features
24==================
25
26 * 4 bpp pseudocolor modes (with 18bit palette, two variants)
27 * 8 bpp pseudocolor mode (with 18bit palette)
28 * 16 bpp truecolor modes (RGB 555 and RGB 565)
29 * 24 bpp truecolor mode (RGB 888) on (only on Virge VX)
30 * 32 bpp truecolor mode (RGB 888) on (not on Virge VX)
31 * text mode (activated by bpp = 0)
32 * interlaced mode variant (not available in text mode)
33 * doublescan mode variant (not available in text mode)
34 * panning in both directions
35 * suspend/resume support
36 * DPMS support
37
38Text mode is supported even in higher resolutions, but there is limitation
39to lower pixclocks (maximum between 50-60 MHz, depending on specific hardware).
40This limitation is not enforced by driver. Text mode supports 8bit wide fonts
41only (hardware limitation) and 16bit tall fonts (driver limitation).
42
43There are two 4 bpp modes. First mode (selected if nonstd == 0) is mode with
44packed pixels, high nibble first. Second mode (selected if nonstd == 1) is mode
45with interleaved planes (1 byte interleave), MSB first. Both modes support
468bit wide fonts only (driver limitation).
47
48Suspend/resume works on systems that initialize video card during resume and
49if device is active (for example used by fbcon).
50
51
52Missing Features
53================
54(alias TODO list)
55
56 * secondary (not initialized by BIOS) device support
57 * big endian support
58 * Zorro bus support
59 * MMIO support
60 * 24 bpp mode support on more cards
61 * support for fontwidths != 8 in 4 bpp modes
62 * support for fontheight != 16 in text mode
63 * composite and external sync (is anyone able to test this?)
64 * hardware cursor
65 * video overlay support
66 * vsync synchronization
67 * feature connector support
68 * acceleration support (8514-like 2D, Virge 3D, busmaster transfers)
69 * better values for some magic registers (performance issues)
70
71
72Known bugs
73==========
74
75 * cursor disable in text mode doesn't work
76
77--
78Ondrej Zajicek <santiago@crfreenet.org>
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index fa844fd7bded..c585aa8d62b4 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -215,6 +215,13 @@ Who: Jean Delvare <khali@linux-fr.org>,
215 215
216--------------------------- 216---------------------------
217 217
218What: drivers depending on OBSOLETE_OSS
219When: options in 2.6.22, code in 2.6.24
220Why: OSS drivers with ALSA replacements
221Who: Adrian Bunk <bunk@stusta.de>
222
223---------------------------
224
218What: IPv4 only connection tracking/NAT/helpers 225What: IPv4 only connection tracking/NAT/helpers
219When: 2.6.22 226When: 2.6.22
220Why: The new layer 3 independant connection tracking replaces the old 227Why: The new layer 3 independant connection tracking replaces the old
@@ -312,3 +319,18 @@ Why: In kernel tree version of driver is unmaintained. Sk98lin driver
312 replaced by the skge driver. 319 replaced by the skge driver.
313Who: Stephen Hemminger <shemminger@osdl.org> 320Who: Stephen Hemminger <shemminger@osdl.org>
314 321
322---------------------------
323
324What: Compaq touchscreen device emulation
325When: Oct 2007
326Files: drivers/input/tsdev.c
327Why: The code says it was obsolete when it was written in 2001.
328 tslib is a userspace library which does anything tsdev can do and
329 much more besides in userspace where this code belongs. There is no
330 longer any need for tsdev and applications should have converted to
331 use tslib by now.
332 The name "tsdev" is also extremely confusing and lots of people have
333 it loaded when they don't need/use it.
334Who: Richard Purdie <rpurdie@rpsys.net>
335
336---------------------------
diff --git a/Documentation/filesystems/relay.txt b/Documentation/filesystems/relay.txt
index d6788dae0349..7fbb6ffe5769 100644
--- a/Documentation/filesystems/relay.txt
+++ b/Documentation/filesystems/relay.txt
@@ -157,7 +157,7 @@ TBD(curr. line MT:/API/)
157 channel management functions: 157 channel management functions:
158 158
159 relay_open(base_filename, parent, subbuf_size, n_subbufs, 159 relay_open(base_filename, parent, subbuf_size, n_subbufs,
160 callbacks) 160 callbacks, private_data)
161 relay_close(chan) 161 relay_close(chan)
162 relay_flush(chan) 162 relay_flush(chan)
163 relay_reset(chan) 163 relay_reset(chan)
@@ -251,7 +251,7 @@ static struct rchan_callbacks relay_callbacks =
251 251
252And an example relay_open() invocation using them: 252And an example relay_open() invocation using them:
253 253
254 chan = relay_open("cpu", NULL, SUBBUF_SIZE, N_SUBBUFS, &relay_callbacks); 254 chan = relay_open("cpu", NULL, SUBBUF_SIZE, N_SUBBUFS, &relay_callbacks, NULL);
255 255
256If the create_buf_file() callback fails, or isn't defined, channel 256If the create_buf_file() callback fails, or isn't defined, channel
257creation and thus relay_open() will fail. 257creation and thus relay_open() will fail.
@@ -289,6 +289,11 @@ they use the proper locking for such a buffer, either by wrapping
289writes in a spinlock, or by copying a write function from relay.h and 289writes in a spinlock, or by copying a write function from relay.h and
290creating a local version that internally does the proper locking. 290creating a local version that internally does the proper locking.
291 291
292The private_data passed into relay_open() allows clients to associate
293user-defined data with a channel, and is immediately available
294(including in create_buf_file()) via chan->private_data or
295buf->chan->private_data.
296
292Channel 'modes' 297Channel 'modes'
293--------------- 298---------------
294 299
diff --git a/Documentation/filesystems/ufs.txt b/Documentation/filesystems/ufs.txt
index 2b5a56a6a558..7a602adeca2b 100644
--- a/Documentation/filesystems/ufs.txt
+++ b/Documentation/filesystems/ufs.txt
@@ -21,7 +21,7 @@ ufstype=type_of_ufs
21 supported as read-write 21 supported as read-write
22 22
23 ufs2 used in FreeBSD 5.x 23 ufs2 used in FreeBSD 5.x
24 supported as read-only 24 supported as read-write
25 25
26 5xbsd synonym for ufs2 26 5xbsd synonym for ufs2
27 27
@@ -50,12 +50,11 @@ ufstype=type_of_ufs
50POSSIBLE PROBLEMS 50POSSIBLE PROBLEMS
51================= 51=================
52 52
53There is still bug in reallocation of fragment, in file fs/ufs/balloc.c, 53See next section, if you have any.
54line 364. But it seems working on current buffer cache configuration.
55 54
56 55
57BUG REPORTS 56BUG REPORTS
58=========== 57===========
59 58
60Any ufs bug report you can send to daniel.pirkl@email.cz (do not send 59Any ufs bug report you can send to daniel.pirkl@email.cz or
61partition tables bug reports.) 60to dushistov@mail.ru (do not send partition tables bug reports).
diff --git a/Documentation/gpio.txt b/Documentation/gpio.txt
new file mode 100644
index 000000000000..09dd510c4a5f
--- /dev/null
+++ b/Documentation/gpio.txt
@@ -0,0 +1,271 @@
1GPIO Interfaces
2
3This provides an overview of GPIO access conventions on Linux.
4
5
6What is a GPIO?
7===============
8A "General Purpose Input/Output" (GPIO) is a flexible software-controlled
9digital signal. They are provided from many kinds of chip, and are familiar
10to Linux developers working with embedded and custom hardware. Each GPIO
11represents a bit connected to a particular pin, or "ball" on Ball Grid Array
12(BGA) packages. Board schematics show which external hardware connects to
13which GPIOs. Drivers can be written generically, so that board setup code
14passes such pin configuration data to drivers.
15
16System-on-Chip (SOC) processors heavily rely on GPIOs. In some cases, every
17non-dedicated pin can be configured as a GPIO; and most chips have at least
18several dozen of them. Programmable logic devices (like FPGAs) can easily
19provide GPIOs; multifunction chips like power managers, and audio codecs
20often have a few such pins to help with pin scarcity on SOCs; and there are
21also "GPIO Expander" chips that connect using the I2C or SPI serial busses.
22Most PC southbridges have a few dozen GPIO-capable pins (with only the BIOS
23firmware knowing how they're used).
24
25The exact capabilities of GPIOs vary between systems. Common options:
26
27 - Output values are writable (high=1, low=0). Some chips also have
28 options about how that value is driven, so that for example only one
29 value might be driven ... supporting "wire-OR" and similar schemes
30 for the other value.
31
32 - Input values are likewise readable (1, 0). Some chips support readback
33 of pins configured as "output", which is very useful in such "wire-OR"
34 cases (to support bidirectional signaling). GPIO controllers may have
35 input de-glitch logic, sometimes with software controls.
36
37 - Inputs can often be used as IRQ signals, often edge triggered but
38 sometimes level triggered. Such IRQs may be configurable as system
39 wakeup events, to wake the system from a low power state.
40
41 - Usually a GPIO will be configurable as either input or output, as needed
42 by different product boards; single direction ones exist too.
43
44 - Most GPIOs can be accessed while holding spinlocks, but those accessed
45 through a serial bus normally can't. Some systems support both types.
46
47On a given board each GPIO is used for one specific purpose like monitoring
48MMC/SD card insertion/removal, detecting card writeprotect status, driving
49a LED, configuring a transceiver, bitbanging a serial bus, poking a hardware
50watchdog, sensing a switch, and so on.
51
52
53GPIO conventions
54================
55Note that this is called a "convention" because you don't need to do it this
56way, and it's no crime if you don't. There **are** cases where portability
57is not the main issue; GPIOs are often used for the kind of board-specific
58glue logic that may even change between board revisions, and can't ever be
59used on a board that's wired differently. Only least-common-denominator
60functionality can be very portable. Other features are platform-specific,
61and that can be critical for glue logic.
62
63Plus, this doesn't define an implementation framework, just an interface.
64One platform might implement it as simple inline functions accessing chip
65registers; another might implement it by delegating through abstractions
66used for several very different kinds of GPIO controller.
67
68That said, if the convention is supported on their platform, drivers should
69use it when possible:
70
71 #include <asm/gpio.h>
72
73If you stick to this convention then it'll be easier for other developers to
74see what your code is doing, and help maintain it.
75
76
77Identifying GPIOs
78-----------------
79GPIOs are identified by unsigned integers in the range 0..MAX_INT. That
80reserves "negative" numbers for other purposes like marking signals as
81"not available on this board", or indicating faults.
82
83Platforms define how they use those integers, and usually #define symbols
84for the GPIO lines so that board-specific setup code directly corresponds
85to the relevant schematics. In contrast, drivers should only use GPIO
86numbers passed to them from that setup code, using platform_data to hold
87board-specific pin configuration data (along with other board specific
88data they need). That avoids portability problems.
89
90So for example one platform uses numbers 32-159 for GPIOs; while another
91uses numbers 0..63 with one set of GPIO controllers, 64-79 with another
92type of GPIO controller, and on one particular board 80-95 with an FPGA.
93The numbers need not be contiguous; either of those platforms could also
94use numbers 2000-2063 to identify GPIOs in a bank of I2C GPIO expanders.
95
96Whether a platform supports multiple GPIO controllers is currently a
97platform-specific implementation issue.
98
99
100Using GPIOs
101-----------
102One of the first things to do with a GPIO, often in board setup code when
103setting up a platform_device using the GPIO, is mark its direction:
104
105 /* set as input or output, returning 0 or negative errno */
106 int gpio_direction_input(unsigned gpio);
107 int gpio_direction_output(unsigned gpio);
108
109The return value is zero for success, else a negative errno. It should
110be checked, since the get/set calls don't have error returns and since
111misconfiguration is possible. (These calls could sleep.)
112
113Setting the direction can fail if the GPIO number is invalid, or when
114that particular GPIO can't be used in that mode. It's generally a bad
115idea to rely on boot firmware to have set the direction correctly, since
116it probably wasn't validated to do more than boot Linux. (Similarly,
117that board setup code probably needs to multiplex that pin as a GPIO,
118and configure pullups/pulldowns appropriately.)
119
120
121Spinlock-Safe GPIO access
122-------------------------
123Most GPIO controllers can be accessed with memory read/write instructions.
124That doesn't need to sleep, and can safely be done from inside IRQ handlers.
125
126Use these calls to access such GPIOs:
127
128 /* GPIO INPUT: return zero or nonzero */
129 int gpio_get_value(unsigned gpio);
130
131 /* GPIO OUTPUT */
132 void gpio_set_value(unsigned gpio, int value);
133
134The values are boolean, zero for low, nonzero for high. When reading the
135value of an output pin, the value returned should be what's seen on the
136pin ... that won't always match the specified output value, because of
137issues including wire-OR and output latencies.
138
139The get/set calls have no error returns because "invalid GPIO" should have
140been reported earlier in gpio_set_direction(). However, note that not all
141platforms can read the value of output pins; those that can't should always
142return zero. Also, these calls will be ignored for GPIOs that can't safely
143be accessed wihtout sleeping (see below).
144
145Platform-specific implementations are encouraged to optimise the two
146calls to access the GPIO value in cases where the GPIO number (and for
147output, value) are constant. It's normal for them to need only a couple
148of instructions in such cases (reading or writing a hardware register),
149and not to need spinlocks. Such optimized calls can make bitbanging
150applications a lot more efficient (in both space and time) than spending
151dozens of instructions on subroutine calls.
152
153
154GPIO access that may sleep
155--------------------------
156Some GPIO controllers must be accessed using message based busses like I2C
157or SPI. Commands to read or write those GPIO values require waiting to
158get to the head of a queue to transmit a command and get its response.
159This requires sleeping, which can't be done from inside IRQ handlers.
160
161Platforms that support this type of GPIO distinguish them from other GPIOs
162by returning nonzero from this call:
163
164 int gpio_cansleep(unsigned gpio);
165
166To access such GPIOs, a different set of accessors is defined:
167
168 /* GPIO INPUT: return zero or nonzero, might sleep */
169 int gpio_get_value_cansleep(unsigned gpio);
170
171 /* GPIO OUTPUT, might sleep */
172 void gpio_set_value_cansleep(unsigned gpio, int value);
173
174Other than the fact that these calls might sleep, and will not be ignored
175for GPIOs that can't be accessed from IRQ handlers, these calls act the
176same as the spinlock-safe calls.
177
178
179Claiming and Releasing GPIOs (OPTIONAL)
180---------------------------------------
181To help catch system configuration errors, two calls are defined.
182However, many platforms don't currently support this mechanism.
183
184 /* request GPIO, returning 0 or negative errno.
185 * non-null labels may be useful for diagnostics.
186 */
187 int gpio_request(unsigned gpio, const char *label);
188
189 /* release previously-claimed GPIO */
190 void gpio_free(unsigned gpio);
191
192Passing invalid GPIO numbers to gpio_request() will fail, as will requesting
193GPIOs that have already been claimed with that call. The return value of
194gpio_request() must be checked. (These calls could sleep.)
195
196These calls serve two basic purposes. One is marking the signals which
197are actually in use as GPIOs, for better diagnostics; systems may have
198several hundred potential GPIOs, but often only a dozen are used on any
199given board. Another is to catch conflicts between drivers, reporting
200errors when drivers wrongly think they have exclusive use of that signal.
201
202These two calls are optional because not not all current Linux platforms
203offer such functionality in their GPIO support; a valid implementation
204could return success for all gpio_request() calls. Unlike the other calls,
205the state they represent doesn't normally match anything from a hardware
206register; it's just a software bitmap which clearly is not necessary for
207correct operation of hardware or (bug free) drivers.
208
209Note that requesting a GPIO does NOT cause it to be configured in any
210way; it just marks that GPIO as in use. Separate code must handle any
211pin setup (e.g. controlling which pin the GPIO uses, pullup/pulldown).
212
213
214GPIOs mapped to IRQs
215--------------------
216GPIO numbers are unsigned integers; so are IRQ numbers. These make up
217two logically distinct namespaces (GPIO 0 need not use IRQ 0). You can
218map between them using calls like:
219
220 /* map GPIO numbers to IRQ numbers */
221 int gpio_to_irq(unsigned gpio);
222
223 /* map IRQ numbers to GPIO numbers */
224 int irq_to_gpio(unsigned irq);
225
226Those return either the corresponding number in the other namespace, or
227else a negative errno code if the mapping can't be done. (For example,
228some GPIOs can't used as IRQs.) It is an unchecked error to use a GPIO
229number that hasn't been marked as an input using gpio_set_direction(), or
230to use an IRQ number that didn't originally come from gpio_to_irq().
231
232These two mapping calls are expected to cost on the order of a single
233addition or subtraction. They're not allowed to sleep.
234
235Non-error values returned from gpio_to_irq() can be passed to request_irq()
236or free_irq(). They will often be stored into IRQ resources for platform
237devices, by the board-specific initialization code. Note that IRQ trigger
238options are part of the IRQ interface, e.g. IRQF_TRIGGER_FALLING, as are
239system wakeup capabilities.
240
241Non-error values returned from irq_to_gpio() would most commonly be used
242with gpio_get_value().
243
244
245
246What do these conventions omit?
247===============================
248One of the biggest things these conventions omit is pin multiplexing, since
249this is highly chip-specific and nonportable. One platform might not need
250explicit multiplexing; another might have just two options for use of any
251given pin; another might have eight options per pin; another might be able
252to route a given GPIO to any one of several pins. (Yes, those examples all
253come from systems that run Linux today.)
254
255Related to multiplexing is configuration and enabling of the pullups or
256pulldowns integrated on some platforms. Not all platforms support them,
257or support them in the same way; and any given board might use external
258pullups (or pulldowns) so that the on-chip ones should not be used.
259
260There are other system-specific mechanisms that are not specified here,
261like the aforementioned options for input de-glitching and wire-OR output.
262Hardware may support reading or writing GPIOs in gangs, but that's usually
263configuration dependednt: for GPIOs sharing the same bank. (GPIOs are
264commonly grouped in banks of 16 or 32, with a given SOC having several such
265banks.) Code relying on such mechanisms will necessarily be nonportable.
266
267Dynamic definition of GPIOs is not currently supported; for example, as
268a side effect of configuring an add-on board with some GPIO expanders.
269
270These calls are purely for kernel space, but a userspace API could be built
271on top of it.
diff --git a/Documentation/ioctl-number.txt b/Documentation/ioctl-number.txt
index 5a8bd5bd88ef..8f750c0efed5 100644
--- a/Documentation/ioctl-number.txt
+++ b/Documentation/ioctl-number.txt
@@ -94,8 +94,7 @@ Code Seq# Include File Comments
94'L' 00-1F linux/loop.h 94'L' 00-1F linux/loop.h
95'L' E0-FF linux/ppdd.h encrypted disk device driver 95'L' E0-FF linux/ppdd.h encrypted disk device driver
96 <http://linux01.gwdg.de/~alatham/ppdd.html> 96 <http://linux01.gwdg.de/~alatham/ppdd.html>
97'M' all linux/soundcard.h conflict! 97'M' all linux/soundcard.h
98'M' 00-1F linux/isicom.h conflict!
99'N' 00-1F drivers/usb/scanner.h 98'N' 00-1F drivers/usb/scanner.h
100'P' all linux/soundcard.h 99'P' all linux/soundcard.h
101'Q' all linux/soundcard.h 100'Q' all linux/soundcard.h
diff --git a/Documentation/isdn/README.gigaset b/Documentation/isdn/README.gigaset
index fa0d4cca964a..55b2852904a4 100644
--- a/Documentation/isdn/README.gigaset
+++ b/Documentation/isdn/README.gigaset
@@ -8,29 +8,33 @@ GigaSet 307x Device Driver
8 This release supports the connection of the Gigaset 307x/417x family of 8 This release supports the connection of the Gigaset 307x/417x family of
9 ISDN DECT bases via Gigaset M101 Data, Gigaset M105 Data or direct USB 9 ISDN DECT bases via Gigaset M101 Data, Gigaset M105 Data or direct USB
10 connection. The following devices are reported to be compatible: 10 connection. The following devices are reported to be compatible:
11 307x/417x: 11
12 Gigaset SX255isdn 12 Bases:
13 Gigaset SX353isdn 13 Siemens Gigaset 3070/3075 isdn
14 Sinus 45 [AB] isdn (Deutsche Telekom) 14 Siemens Gigaset 4170/4175 isdn
15 Sinus 721X/XA 15 Siemens Gigaset SX205/255
16 Siemens Gigaset SX353
17 T-Com Sinus 45 [AB] isdn
18 T-Com Sinus 721X[A] [SE]
16 Vox Chicago 390 ISDN (KPN Telecom) 19 Vox Chicago 390 ISDN (KPN Telecom)
17 M101: 20
18 Sinus 45 Data 1 (Telekom) 21 RS232 data boxes:
19 M105: 22 Siemens Gigaset M101 Data
20 Gigaset USB Adapter DECT 23 T-Com Sinus 45 Data 1
21 Sinus 45 Data 2 (Telekom) 24
22 Sinus 721 data 25 USB data boxes:
26 Siemens Gigaset M105 Data
27 Siemens Gigaset USB Adapter DECT
28 T-Com Sinus 45 Data 2
29 T-Com Sinus 721 data
23 Chicago 390 USB (KPN) 30 Chicago 390 USB (KPN)
31
24 See also http://www.erbze.info/sinus_gigaset.htm and 32 See also http://www.erbze.info/sinus_gigaset.htm and
25 http://gigaset307x.sourceforge.net/ 33 http://gigaset307x.sourceforge.net/
26 34
27 We had also reports from users of Gigaset M105 who could use the drivers 35 We had also reports from users of Gigaset M105 who could use the drivers
28 with SX 100 and CX 100 ISDN bases (only in unimodem mode, see section 2.4.) 36 with SX 100 and CX 100 ISDN bases (only in unimodem mode, see section 2.4.)
29 If you have another device that works with our driver, please let us know. 37 If you have another device that works with our driver, please let us know.
30 For example, Gigaset SX205isdn/Sinus 721 X SE and Gigaset SX303isdn bases
31 are just versions without answering machine of models known to work, so
32 they should work just as well; but so far we are lacking positive reports
33 on these.
34 38
35 Chances of getting an USB device to work are good if the output of 39 Chances of getting an USB device to work are good if the output of
36 lsusb 40 lsusb
@@ -60,14 +64,28 @@ GigaSet 307x Device Driver
60 To get the device working, you have to load the proper kernel module. You 64 To get the device working, you have to load the proper kernel module. You
61 can do this using 65 can do this using
62 modprobe modulename 66 modprobe modulename
63 where modulename is usb_gigaset (M105) or bas_gigaset (direct USB 67 where modulename is ser_gigaset (M101), usb_gigaset (M105), or
64 connection to the base). 68 bas_gigaset (direct USB connection to the base).
69
70 The module ser_gigaset provides a serial line discipline N_GIGASET_M101
71 which drives the device through the regular serial line driver. To use it,
72 run the Gigaset M101 daemon "gigasetm101d" (also available from
73 http://sourceforge.net/projects/gigaset307x/) with the device file of the
74 RS232 port to the M101 as an argument, for example:
75 gigasetm101d /dev/ttyS1
76 This will open the device file, set its line discipline to N_GIGASET_M101,
77 and then sleep in the background, keeping the device open so that the
78 line discipline remains active. To deactivate it, kill the daemon, for
79 example with
80 killall gigasetm101d
81 before disconnecting the device.
65 82
662.2. Device nodes for user space programs 832.2. Device nodes for user space programs
67 ------------------------------------ 84 ------------------------------------
68 The device can be accessed from user space (eg. by the user space tools 85 The device can be accessed from user space (eg. by the user space tools
69 mentioned in 1.2.) through the device nodes: 86 mentioned in 1.2.) through the device nodes:
70 87
88 - /dev/ttyGS0 for M101 (RS232 data boxes)
71 - /dev/ttyGU0 for M105 (USB data boxes) 89 - /dev/ttyGU0 for M105 (USB data boxes)
72 - /dev/ttyGB0 for the base driver (direct USB connection) 90 - /dev/ttyGB0 for the base driver (direct USB connection)
73 91
@@ -168,6 +186,19 @@ GigaSet 307x Device Driver
168 You can also use /sys/class/tty/ttyGxy/cidmode for changing the CID mode 186 You can also use /sys/class/tty/ttyGxy/cidmode for changing the CID mode
169 setting (ttyGxy is ttyGU0 or ttyGB0). 187 setting (ttyGxy is ttyGU0 or ttyGB0).
170 188
1892.6. M105 Undocumented USB Requests
190 ------------------------------
191
192 The Gigaset M105 USB data box understands a couple of useful, but
193 undocumented USB commands. These requests are not used in normal
194 operation (for wireless access to the base), but are needed for access
195 to the M105's own configuration mode (registration to the base, baudrate
196 and line format settings, device status queries) via the gigacontr
197 utility. Their use is disabled in the driver by default for safety
198 reasons but can be enabled by setting the kernel configuration option
199 "Support for undocumented USB requests" (GIGASET_UNDOCREQ) to "Y" and
200 recompiling.
201
171 202
1723. Troubleshooting 2033. Troubleshooting
173 --------------- 204 ---------------
diff --git a/Documentation/kdump/kdump.txt b/Documentation/kdump/kdump.txt
index 073306818347..79775a4130b5 100644
--- a/Documentation/kdump/kdump.txt
+++ b/Documentation/kdump/kdump.txt
@@ -311,10 +311,10 @@ Following are the arch specific command line options to be used while
311loading dump-capture kernel. 311loading dump-capture kernel.
312 312
313For i386, x86_64 and ia64: 313For i386, x86_64 and ia64:
314 "init 1 irqpoll maxcpus=1" 314 "1 irqpoll maxcpus=1"
315 315
316For ppc64: 316For ppc64:
317 "init 1 maxcpus=1 noirqdistrib" 317 "1 maxcpus=1 noirqdistrib"
318 318
319 319
320Notes on loading the dump-capture kernel: 320Notes on loading the dump-capture kernel:
@@ -332,8 +332,8 @@ Notes on loading the dump-capture kernel:
332* You must specify <root-dev> in the format corresponding to the root 332* You must specify <root-dev> in the format corresponding to the root
333 device name in the output of mount command. 333 device name in the output of mount command.
334 334
335* "init 1" boots the dump-capture kernel into single-user mode without 335* Boot parameter "1" boots the dump-capture kernel into single-user
336 networking. If you want networking, use "init 3." 336 mode without networking. If you want networking, use "3".
337 337
338* We generally don' have to bring up a SMP kernel just to capture the 338* We generally don' have to bring up a SMP kernel just to capture the
339 dump. Hence generally it is useful either to build a UP dump-capture 339 dump. Hence generally it is useful either to build a UP dump-capture
diff --git a/Documentation/kernel-doc-nano-HOWTO.txt b/Documentation/kernel-doc-nano-HOWTO.txt
index 284e7e198e93..2075c0658bf5 100644
--- a/Documentation/kernel-doc-nano-HOWTO.txt
+++ b/Documentation/kernel-doc-nano-HOWTO.txt
@@ -101,16 +101,20 @@ The format of the block comment is like this:
101 101
102/** 102/**
103 * function_name(:)? (- short description)? 103 * function_name(:)? (- short description)?
104(* @parameterx: (description of parameter x)?)* 104(* @parameterx(space)*: (description of parameter x)?)*
105(* a blank line)? 105(* a blank line)?
106 * (Description:)? (Description of function)? 106 * (Description:)? (Description of function)?
107 * (section header: (section description)? )* 107 * (section header: (section description)? )*
108(*)?*/ 108(*)?*/
109 109
110The short function description cannot be multiline, but the other 110The short function description ***cannot be multiline***, but the other
111descriptions can be (and they can contain blank lines). Avoid putting a 111descriptions can be (and they can contain blank lines). If you continue
112spurious blank line after the function name, or else the description will 112that initial short description onto a second line, that second line will
113be repeated! 113appear further down at the beginning of the description section, which is
114almost certainly not what you had in mind.
115
116Avoid putting a spurious blank line after the function name, or else the
117description will be repeated!
114 118
115All descriptive text is further processed, scanning for the following special 119All descriptive text is further processed, scanning for the following special
116patterns, which are highlighted appropriately. 120patterns, which are highlighted appropriately.
@@ -121,6 +125,31 @@ patterns, which are highlighted appropriately.
121'@parameter' - name of a parameter 125'@parameter' - name of a parameter
122'%CONST' - name of a constant. 126'%CONST' - name of a constant.
123 127
128NOTE 1: The multi-line descriptive text you provide does *not* recognize
129line breaks, so if you try to format some text nicely, as in:
130
131 Return codes
132 0 - cool
133 1 - invalid arg
134 2 - out of memory
135
136this will all run together and produce:
137
138 Return codes 0 - cool 1 - invalid arg 2 - out of memory
139
140NOTE 2: If the descriptive text you provide has lines that begin with
141some phrase followed by a colon, each of those phrases will be taken as
142a new section heading, which means you should similarly try to avoid text
143like:
144
145 Return codes:
146 0: cool
147 1: invalid arg
148 2: out of memory
149
150every line of which would start a new section. Again, probably not
151what you were after.
152
124Take a look around the source tree for examples. 153Take a look around the source tree for examples.
125 154
126 155
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 25d298517104..d25acd51e181 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1396,6 +1396,8 @@ and is between 256 and 4096 characters. It is defined in the file
1396 in <PAGE_SIZE> units (needed only for swap files). 1396 in <PAGE_SIZE> units (needed only for swap files).
1397 See Documentation/power/swsusp-and-swap-files.txt 1397 See Documentation/power/swsusp-and-swap-files.txt
1398 1398
1399 retain_initrd [RAM] Keep initrd memory after extraction
1400
1399 rhash_entries= [KNL,NET] 1401 rhash_entries= [KNL,NET]
1400 Set number of hash buckets for route cache 1402 Set number of hash buckets for route cache
1401 1403
diff --git a/Documentation/local_ops.txt b/Documentation/local_ops.txt
new file mode 100644
index 000000000000..b0aca0705d1e
--- /dev/null
+++ b/Documentation/local_ops.txt
@@ -0,0 +1,163 @@
1 Semantics and Behavior of Local Atomic Operations
2
3 Mathieu Desnoyers
4
5
6 This document explains the purpose of the local atomic operations, how
7to implement them for any given architecture and shows how they can be used
8properly. It also stresses on the precautions that must be taken when reading
9those local variables across CPUs when the order of memory writes matters.
10
11
12
13* Purpose of local atomic operations
14
15Local atomic operations are meant to provide fast and highly reentrant per CPU
16counters. They minimize the performance cost of standard atomic operations by
17removing the LOCK prefix and memory barriers normally required to synchronize
18across CPUs.
19
20Having fast per CPU atomic counters is interesting in many cases : it does not
21require disabling interrupts to protect from interrupt handlers and it permits
22coherent counters in NMI handlers. It is especially useful for tracing purposes
23and for various performance monitoring counters.
24
25Local atomic operations only guarantee variable modification atomicity wrt the
26CPU which owns the data. Therefore, care must taken to make sure that only one
27CPU writes to the local_t data. This is done by using per cpu data and making
28sure that we modify it from within a preemption safe context. It is however
29permitted to read local_t data from any CPU : it will then appear to be written
30out of order wrt other memory writes on the owner CPU.
31
32
33* Implementation for a given architecture
34
35It can be done by slightly modifying the standard atomic operations : only
36their UP variant must be kept. It typically means removing LOCK prefix (on
37i386 and x86_64) and any SMP sychronization barrier. If the architecture does
38not have a different behavior between SMP and UP, including asm-generic/local.h
39in your archtecture's local.h is sufficient.
40
41The local_t type is defined as an opaque signed long by embedding an
42atomic_long_t inside a structure. This is made so a cast from this type to a
43long fails. The definition looks like :
44
45typedef struct { atomic_long_t a; } local_t;
46
47
48* How to use local atomic operations
49
50#include <linux/percpu.h>
51#include <asm/local.h>
52
53static DEFINE_PER_CPU(local_t, counters) = LOCAL_INIT(0);
54
55
56* Counting
57
58Counting is done on all the bits of a signed long.
59
60In preemptible context, use get_cpu_var() and put_cpu_var() around local atomic
61operations : it makes sure that preemption is disabled around write access to
62the per cpu variable. For instance :
63
64 local_inc(&get_cpu_var(counters));
65 put_cpu_var(counters);
66
67If you are already in a preemption-safe context, you can directly use
68__get_cpu_var() instead.
69
70 local_inc(&__get_cpu_var(counters));
71
72
73
74* Reading the counters
75
76Those local counters can be read from foreign CPUs to sum the count. Note that
77the data seen by local_read across CPUs must be considered to be out of order
78relatively to other memory writes happening on the CPU that owns the data.
79
80 long sum = 0;
81 for_each_online_cpu(cpu)
82 sum += local_read(&per_cpu(counters, cpu));
83
84If you want to use a remote local_read to synchronize access to a resource
85between CPUs, explicit smp_wmb() and smp_rmb() memory barriers must be used
86respectively on the writer and the reader CPUs. It would be the case if you use
87the local_t variable as a counter of bytes written in a buffer : there should
88be a smp_wmb() between the buffer write and the counter increment and also a
89smp_rmb() between the counter read and the buffer read.
90
91
92Here is a sample module which implements a basic per cpu counter using local.h.
93
94--- BEGIN ---
95/* test-local.c
96 *
97 * Sample module for local.h usage.
98 */
99
100
101#include <asm/local.h>
102#include <linux/module.h>
103#include <linux/timer.h>
104
105static DEFINE_PER_CPU(local_t, counters) = LOCAL_INIT(0);
106
107static struct timer_list test_timer;
108
109/* IPI called on each CPU. */
110static void test_each(void *info)
111{
112 /* Increment the counter from a non preemptible context */
113 printk("Increment on cpu %d\n", smp_processor_id());
114 local_inc(&__get_cpu_var(counters));
115
116 /* This is what incrementing the variable would look like within a
117 * preemptible context (it disables preemption) :
118 *
119 * local_inc(&get_cpu_var(counters));
120 * put_cpu_var(counters);
121 */
122}
123
124static void do_test_timer(unsigned long data)
125{
126 int cpu;
127
128 /* Increment the counters */
129 on_each_cpu(test_each, NULL, 0, 1);
130 /* Read all the counters */
131 printk("Counters read from CPU %d\n", smp_processor_id());
132 for_each_online_cpu(cpu) {
133 printk("Read : CPU %d, count %ld\n", cpu,
134 local_read(&per_cpu(counters, cpu)));
135 }
136 del_timer(&test_timer);
137 test_timer.expires = jiffies + 1000;
138 add_timer(&test_timer);
139}
140
141static int __init test_init(void)
142{
143 /* initialize the timer that will increment the counter */
144 init_timer(&test_timer);
145 test_timer.function = do_test_timer;
146 test_timer.expires = jiffies + 1;
147 add_timer(&test_timer);
148
149 return 0;
150}
151
152static void __exit test_exit(void)
153{
154 del_timer_sync(&test_timer);
155}
156
157module_init(test_init);
158module_exit(test_exit);
159
160MODULE_LICENSE("GPL");
161MODULE_AUTHOR("Mathieu Desnoyers");
162MODULE_DESCRIPTION("Local Atomic Ops");
163--- END ---
diff --git a/Documentation/nfsroot.txt b/Documentation/nfsroot.txt
index 719f9a9d60c0..16a7cae2721d 100644
--- a/Documentation/nfsroot.txt
+++ b/Documentation/nfsroot.txt
@@ -67,8 +67,8 @@ nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
67 <nfs-options> Standard NFS options. All options are separated by commas. 67 <nfs-options> Standard NFS options. All options are separated by commas.
68 The following defaults are used: 68 The following defaults are used:
69 port = as given by server portmap daemon 69 port = as given by server portmap daemon
70 rsize = 1024 70 rsize = 4096
71 wsize = 1024 71 wsize = 4096
72 timeo = 7 72 timeo = 7
73 retrans = 3 73 retrans = 3
74 acregmin = 3 74 acregmin = 3
diff --git a/Documentation/rbtree.txt b/Documentation/rbtree.txt
new file mode 100644
index 000000000000..7224459b469e
--- /dev/null
+++ b/Documentation/rbtree.txt
@@ -0,0 +1,192 @@
1Red-black Trees (rbtree) in Linux
2January 18, 2007
3Rob Landley <rob@landley.net>
4=============================
5
6What are red-black trees, and what are they for?
7------------------------------------------------
8
9Red-black trees are a type of self-balancing binary search tree, used for
10storing sortable key/value data pairs. This differs from radix trees (which
11are used to efficiently store sparse arrays and thus use long integer indexes
12to insert/access/delete nodes) and hash tables (which are not kept sorted to
13be easily traversed in order, and must be tuned for a specific size and
14hash function where rbtrees scale gracefully storing arbitrary keys).
15
16Red-black trees are similar to AVL trees, but provide faster real-time bounded
17worst case performance for insertion and deletion (at most two rotations and
18three rotations, respectively, to balance the tree), with slightly slower
19(but still O(log n)) lookup time.
20
21To quote Linux Weekly News:
22
23 There are a number of red-black trees in use in the kernel.
24 The anticipatory, deadline, and CFQ I/O schedulers all employ
25 rbtrees to track requests; the packet CD/DVD driver does the same.
26 The high-resolution timer code uses an rbtree to organize outstanding
27 timer requests. The ext3 filesystem tracks directory entries in a
28 red-black tree. Virtual memory areas (VMAs) are tracked with red-black
29 trees, as are epoll file descriptors, cryptographic keys, and network
30 packets in the "hierarchical token bucket" scheduler.
31
32This document covers use of the Linux rbtree implementation. For more
33information on the nature and implementation of Red Black Trees, see:
34
35 Linux Weekly News article on red-black trees
36 http://lwn.net/Articles/184495/
37
38 Wikipedia entry on red-black trees
39 http://en.wikipedia.org/wiki/Red-black_tree
40
41Linux implementation of red-black trees
42---------------------------------------
43
44Linux's rbtree implementation lives in the file "lib/rbtree.c". To use it,
45"#include <linux/rbtree.h>".
46
47The Linux rbtree implementation is optimized for speed, and thus has one
48less layer of indirection (and better cache locality) than more traditional
49tree implementations. Instead of using pointers to separate rb_node and data
50structures, each instance of struct rb_node is embedded in the data structure
51it organizes. And instead of using a comparison callback function pointer,
52users are expected to write their own tree search and insert functions
53which call the provided rbtree functions. Locking is also left up to the
54user of the rbtree code.
55
56Creating a new rbtree
57---------------------
58
59Data nodes in an rbtree tree are structures containing a struct rb_node member:
60
61 struct mytype {
62 struct rb_node node;
63 char *keystring;
64 };
65
66When dealing with a pointer to the embedded struct rb_node, the containing data
67structure may be accessed with the standard container_of() macro. In addition,
68individual members may be accessed directly via rb_entry(node, type, member).
69
70At the root of each rbtree is an rb_root structure, which is initialized to be
71empty via:
72
73 struct rb_root mytree = RB_ROOT;
74
75Searching for a value in an rbtree
76----------------------------------
77
78Writing a search function for your tree is fairly straightforward: start at the
79root, compare each value, and follow the left or right branch as necessary.
80
81Example:
82
83 struct mytype *my_search(struct rb_root *root, char *string)
84 {
85 struct rb_node *node = root->rb_node;
86
87 while (node) {
88 struct mytype *data = container_of(node, struct mytype, node);
89 int result;
90
91 result = strcmp(string, data->keystring);
92
93 if (result < 0)
94 node = node->rb_left;
95 else if (result > 0)
96 node = node->rb_right;
97 else
98 return data;
99 }
100 return NULL;
101 }
102
103Inserting data into an rbtree
104-----------------------------
105
106Inserting data in the tree involves first searching for the place to insert the
107new node, then inserting the node and rebalancing ("recoloring") the tree.
108
109The search for insertion differs from the previous search by finding the
110location of the pointer on which to graft the new node. The new node also
111needs a link to its parent node for rebalancing purposes.
112
113Example:
114
115 int my_insert(struct rb_root *root, struct mytype *data)
116 {
117 struct rb_node **new = &(root->rb_node), *parent = NULL;
118
119 /* Figure out where to put new node */
120 while (*new) {
121 struct mytype *this = container_of(*new, struct mytype, node);
122 int result = strcmp(data->keystring, this->keystring);
123
124 parent = *new;
125 if (result < 0)
126 new = &((*new)->rb_left);
127 else if (result > 0)
128 new = &((*new)->rb_right);
129 else
130 return FALSE;
131 }
132
133 /* Add new node and rebalance tree. */
134 rb_link_node(data->node, parent, new);
135 rb_insert_color(data->node, root);
136
137 return TRUE;
138 }
139
140Removing or replacing existing data in an rbtree
141------------------------------------------------
142
143To remove an existing node from a tree, call:
144
145 void rb_erase(struct rb_node *victim, struct rb_root *tree);
146
147Example:
148
149 struct mytype *data = mysearch(mytree, "walrus");
150
151 if (data) {
152 rb_erase(data->node, mytree);
153 myfree(data);
154 }
155
156To replace an existing node in a tree with a new one with the same key, call:
157
158 void rb_replace_node(struct rb_node *old, struct rb_node *new,
159 struct rb_root *tree);
160
161Replacing a node this way does not re-sort the tree: If the new node doesn't
162have the same key as the old node, the rbtree will probably become corrupted.
163
164Iterating through the elements stored in an rbtree (in sort order)
165------------------------------------------------------------------
166
167Four functions are provided for iterating through an rbtree's contents in
168sorted order. These work on arbitrary trees, and should not need to be
169modified or wrapped (except for locking purposes):
170
171 struct rb_node *rb_first(struct rb_root *tree);
172 struct rb_node *rb_last(struct rb_root *tree);
173 struct rb_node *rb_next(struct rb_node *node);
174 struct rb_node *rb_prev(struct rb_node *node);
175
176To start iterating, call rb_first() or rb_last() with a pointer to the root
177of the tree, which will return a pointer to the node structure contained in
178the first or last element in the tree. To continue, fetch the next or previous
179node by calling rb_next() or rb_prev() on the current node. This will return
180NULL when there are no more nodes left.
181
182The iterator functions return a pointer to the embedded struct rb_node, from
183which the containing data structure may be accessed with the container_of()
184macro, and individual members may be accessed directly via
185rb_entry(node, type, member).
186
187Example:
188
189 struct rb_node *node;
190 for (node = rb_first(&mytree); node; node = rb_next(node))
191 printk("key=%s\n", rb_entry(node, int, keystring));
192
diff --git a/Documentation/rtc.txt b/Documentation/rtc.txt
index 7cf1ec5bcdd3..1ef6bb88cd00 100644
--- a/Documentation/rtc.txt
+++ b/Documentation/rtc.txt
@@ -149,7 +149,7 @@ RTC class framework, but can't be supported by the older driver.
149 is connected to an IRQ line, it can often issue an alarm IRQ up to 149 is connected to an IRQ line, it can often issue an alarm IRQ up to
150 24 hours in the future. 150 24 hours in the future.
151 151
152 * RTC_WKALM_SET, RTC_WKALM_READ ... RTCs that can issue alarms beyond 152 * RTC_WKALM_SET, RTC_WKALM_RD ... RTCs that can issue alarms beyond
153 the next 24 hours use a slightly more powerful API, which supports 153 the next 24 hours use a slightly more powerful API, which supports
154 setting the longer alarm time and enabling its IRQ using a single 154 setting the longer alarm time and enabling its IRQ using a single
155 request (using the same model as EFI firmware). 155 request (using the same model as EFI firmware).
@@ -167,6 +167,28 @@ Linux out of a low power sleep state (or hibernation) back to a fully
167operational state. For example, a system could enter a deep power saving 167operational state. For example, a system could enter a deep power saving
168state until it's time to execute some scheduled tasks. 168state until it's time to execute some scheduled tasks.
169 169
170Note that many of these ioctls need not actually be implemented by your
171driver. The common rtc-dev interface handles many of these nicely if your
172driver returns ENOIOCTLCMD. Some common examples:
173
174 * RTC_RD_TIME, RTC_SET_TIME: the read_time/set_time functions will be
175 called with appropriate values.
176
177 * RTC_ALM_SET, RTC_ALM_READ, RTC_WKALM_SET, RTC_WKALM_RD: the
178 set_alarm/read_alarm functions will be called. To differentiate
179 between the ALM and WKALM, check the larger fields of the rtc_wkalrm
180 struct (like tm_year). These will be set to -1 when using ALM and
181 will be set to proper values when using WKALM.
182
183 * RTC_IRQP_SET, RTC_IRQP_READ: the irq_set_freq function will be called
184 to set the frequency while the framework will handle the read for you
185 since the frequency is stored in the irq_freq member of the rtc_device
186 structure. Also make sure you set the max_user_freq member in your
187 initialization routines so the framework can sanity check the user
188 input for you.
189
190If all else fails, check out the rtc-test.c driver!
191
170 192
171-------------------- 8< ---------------- 8< ----------------------------- 193-------------------- 8< ---------------- 8< -----------------------------
172 194
@@ -237,7 +259,7 @@ int main(int argc, char **argv)
237 "\n...Update IRQs not supported.\n"); 259 "\n...Update IRQs not supported.\n");
238 goto test_READ; 260 goto test_READ;
239 } 261 }
240 perror("ioctl"); 262 perror("RTC_UIE_ON ioctl");
241 exit(errno); 263 exit(errno);
242 } 264 }
243 265
@@ -284,7 +306,7 @@ int main(int argc, char **argv)
284 /* Turn off update interrupts */ 306 /* Turn off update interrupts */
285 retval = ioctl(fd, RTC_UIE_OFF, 0); 307 retval = ioctl(fd, RTC_UIE_OFF, 0);
286 if (retval == -1) { 308 if (retval == -1) {
287 perror("ioctl"); 309 perror("RTC_UIE_OFF ioctl");
288 exit(errno); 310 exit(errno);
289 } 311 }
290 312
@@ -292,7 +314,7 @@ test_READ:
292 /* Read the RTC time/date */ 314 /* Read the RTC time/date */
293 retval = ioctl(fd, RTC_RD_TIME, &rtc_tm); 315 retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
294 if (retval == -1) { 316 if (retval == -1) {
295 perror("ioctl"); 317 perror("RTC_RD_TIME ioctl");
296 exit(errno); 318 exit(errno);
297 } 319 }
298 320
@@ -320,14 +342,14 @@ test_READ:
320 "\n...Alarm IRQs not supported.\n"); 342 "\n...Alarm IRQs not supported.\n");
321 goto test_PIE; 343 goto test_PIE;
322 } 344 }
323 perror("ioctl"); 345 perror("RTC_ALM_SET ioctl");
324 exit(errno); 346 exit(errno);
325 } 347 }
326 348
327 /* Read the current alarm settings */ 349 /* Read the current alarm settings */
328 retval = ioctl(fd, RTC_ALM_READ, &rtc_tm); 350 retval = ioctl(fd, RTC_ALM_READ, &rtc_tm);
329 if (retval == -1) { 351 if (retval == -1) {
330 perror("ioctl"); 352 perror("RTC_ALM_READ ioctl");
331 exit(errno); 353 exit(errno);
332 } 354 }
333 355
@@ -337,7 +359,7 @@ test_READ:
337 /* Enable alarm interrupts */ 359 /* Enable alarm interrupts */
338 retval = ioctl(fd, RTC_AIE_ON, 0); 360 retval = ioctl(fd, RTC_AIE_ON, 0);
339 if (retval == -1) { 361 if (retval == -1) {
340 perror("ioctl"); 362 perror("RTC_AIE_ON ioctl");
341 exit(errno); 363 exit(errno);
342 } 364 }
343 365
@@ -355,7 +377,7 @@ test_READ:
355 /* Disable alarm interrupts */ 377 /* Disable alarm interrupts */
356 retval = ioctl(fd, RTC_AIE_OFF, 0); 378 retval = ioctl(fd, RTC_AIE_OFF, 0);
357 if (retval == -1) { 379 if (retval == -1) {
358 perror("ioctl"); 380 perror("RTC_AIE_OFF ioctl");
359 exit(errno); 381 exit(errno);
360 } 382 }
361 383
@@ -368,7 +390,7 @@ test_PIE:
368 fprintf(stderr, "\nNo periodic IRQ support\n"); 390 fprintf(stderr, "\nNo periodic IRQ support\n");
369 return 0; 391 return 0;
370 } 392 }
371 perror("ioctl"); 393 perror("RTC_IRQP_READ ioctl");
372 exit(errno); 394 exit(errno);
373 } 395 }
374 fprintf(stderr, "\nPeriodic IRQ rate is %ldHz.\n", tmp); 396 fprintf(stderr, "\nPeriodic IRQ rate is %ldHz.\n", tmp);
@@ -387,7 +409,7 @@ test_PIE:
387 "\n...Periodic IRQ rate is fixed\n"); 409 "\n...Periodic IRQ rate is fixed\n");
388 goto done; 410 goto done;
389 } 411 }
390 perror("ioctl"); 412 perror("RTC_IRQP_SET ioctl");
391 exit(errno); 413 exit(errno);
392 } 414 }
393 415
@@ -397,7 +419,7 @@ test_PIE:
397 /* Enable periodic interrupts */ 419 /* Enable periodic interrupts */
398 retval = ioctl(fd, RTC_PIE_ON, 0); 420 retval = ioctl(fd, RTC_PIE_ON, 0);
399 if (retval == -1) { 421 if (retval == -1) {
400 perror("ioctl"); 422 perror("RTC_PIE_ON ioctl");
401 exit(errno); 423 exit(errno);
402 } 424 }
403 425
@@ -416,7 +438,7 @@ test_PIE:
416 /* Disable periodic interrupts */ 438 /* Disable periodic interrupts */
417 retval = ioctl(fd, RTC_PIE_OFF, 0); 439 retval = ioctl(fd, RTC_PIE_OFF, 0);
418 if (retval == -1) { 440 if (retval == -1) {
419 perror("ioctl"); 441 perror("RTC_PIE_OFF ioctl");
420 exit(errno); 442 exit(errno);
421 } 443 }
422 } 444 }
diff --git a/Documentation/scsi/ChangeLog.megaraid b/Documentation/scsi/ChangeLog.megaraid
index a056bbe67c7e..37796fe45bd0 100644
--- a/Documentation/scsi/ChangeLog.megaraid
+++ b/Documentation/scsi/ChangeLog.megaraid
@@ -1,3 +1,19 @@
1Release Date : Thu Nov 16 15:32:35 EST 2006 -
2 Sumant Patro <sumant.patro@lsi.com>
3Current Version : 2.20.5.1 (scsi module), 2.20.2.6 (cmm module)
4Older Version : 2.20.4.9 (scsi module), 2.20.2.6 (cmm module)
5
61. Changes in Initialization to fix kdump failure.
7 Send SYNC command on loading.
8 This command clears the pending commands in the adapter
9 and re-initialize its internal RAID structure.
10 Without this change, megaraid driver either panics or fails to
11 initialize the adapter during kdump's second kernel boot
12 if there are pending commands or interrupts from other devices
13 sharing the same IRQ.
142. Authors email-id domain name changed from lsil.com to lsi.com.
15 Also modified the MODULE_AUTHOR to megaraidlinux@lsi.com
16
1Release Date : Fri May 19 09:31:45 EST 2006 - Seokmann Ju <sju@lsil.com> 17Release Date : Fri May 19 09:31:45 EST 2006 - Seokmann Ju <sju@lsil.com>
2Current Version : 2.20.4.9 (scsi module), 2.20.2.6 (cmm module) 18Current Version : 2.20.4.9 (scsi module), 2.20.2.6 (cmm module)
3Older Version : 2.20.4.8 (scsi module), 2.20.2.6 (cmm module) 19Older Version : 2.20.4.8 (scsi module), 2.20.2.6 (cmm module)
diff --git a/Documentation/spi/spi-summary b/Documentation/spi/spi-summary
index 72795796b13d..ecc7c9eb9f29 100644
--- a/Documentation/spi/spi-summary
+++ b/Documentation/spi/spi-summary
@@ -284,7 +284,6 @@ SPI protocol drivers somewhat resemble platform device drivers:
284 static struct spi_driver CHIP_driver = { 284 static struct spi_driver CHIP_driver = {
285 .driver = { 285 .driver = {
286 .name = "CHIP", 286 .name = "CHIP",
287 .bus = &spi_bus_type,
288 .owner = THIS_MODULE, 287 .owner = THIS_MODULE,
289 }, 288 },
290 289
@@ -312,7 +311,7 @@ might look like this unless you're creating a class_device:
312 chip = kzalloc(sizeof *chip, GFP_KERNEL); 311 chip = kzalloc(sizeof *chip, GFP_KERNEL);
313 if (!chip) 312 if (!chip)
314 return -ENOMEM; 313 return -ENOMEM;
315 dev_set_drvdata(&spi->dev, chip); 314 spi_set_drvdata(spi, chip);
316 315
317 ... etc 316 ... etc
318 return 0; 317 return 0;
diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt
index 61613166981b..452c0f152304 100644
--- a/Documentation/sysrq.txt
+++ b/Documentation/sysrq.txt
@@ -64,11 +64,6 @@ On all - write a character to /proc/sysrq-trigger. e.g.:
64 64
65* What are the 'command' keys? 65* What are the 'command' keys?
66~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 66~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
67'r' - Turns off keyboard raw mode and sets it to XLATE.
68
69'k' - Secure Access Key (SAK) Kills all programs on the current virtual
70 console. NOTE: See important comments below in SAK section.
71
72'b' - Will immediately reboot the system without syncing or unmounting 67'b' - Will immediately reboot the system without syncing or unmounting
73 your disks. 68 your disks.
74 69
@@ -76,21 +71,37 @@ On all - write a character to /proc/sysrq-trigger. e.g.:
76 71
77'd' - Shows all locks that are held. 72'd' - Shows all locks that are held.
78 73
79'o' - Will shut your system off (if configured and supported). 74'e' - Send a SIGTERM to all processes, except for init.
80 75
81's' - Will attempt to sync all mounted filesystems. 76'f' - Will call oom_kill to kill a memory hog process.
82 77
83'u' - Will attempt to remount all mounted filesystems read-only. 78'g' - Used by kgdb on ppc platforms.
84 79
85'p' - Will dump the current registers and flags to your console. 80'h' - Will display help (actually any other key than those listed
81 above will display help. but 'h' is easy to remember :-)
86 82
87't' - Will dump a list of current tasks and their information to your 83'i' - Send a SIGKILL to all processes, except for init.
88 console. 84
85'k' - Secure Access Key (SAK) Kills all programs on the current virtual
86 console. NOTE: See important comments below in SAK section.
89 87
90'm' - Will dump current memory info to your console. 88'm' - Will dump current memory info to your console.
91 89
92'n' - Used to make RT tasks nice-able 90'n' - Used to make RT tasks nice-able
93 91
92'o' - Will shut your system off (if configured and supported).
93
94'p' - Will dump the current registers and flags to your console.
95
96'r' - Turns off keyboard raw mode and sets it to XLATE.
97
98's' - Will attempt to sync all mounted filesystems.
99
100't' - Will dump a list of current tasks and their information to your
101 console.
102
103'u' - Will attempt to remount all mounted filesystems read-only.
104
94'v' - Dumps Voyager SMP processor info to your console. 105'v' - Dumps Voyager SMP processor info to your console.
95 106
96'w' - Dumps tasks that are in uninterruptable (blocked) state. 107'w' - Dumps tasks that are in uninterruptable (blocked) state.
@@ -102,17 +113,6 @@ On all - write a character to /proc/sysrq-trigger. e.g.:
102 it so that only emergency messages like PANICs or OOPSes would 113 it so that only emergency messages like PANICs or OOPSes would
103 make it to your console.) 114 make it to your console.)
104 115
105'f' - Will call oom_kill to kill a memory hog process.
106
107'e' - Send a SIGTERM to all processes, except for init.
108
109'g' - Used by kgdb on ppc platforms.
110
111'i' - Send a SIGKILL to all processes, except for init.
112
113'h' - Will display help (actually any other key than those listed
114 above will display help. but 'h' is easy to remember :-)
115
116* Okay, so what can I use them for? 116* Okay, so what can I use them for?
117~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 117~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
118Well, un'R'aw is very handy when your X server or a svgalib program crashes. 118Well, un'R'aw is very handy when your X server or a svgalib program crashes.