diff options
Diffstat (limited to 'Documentation')
33 files changed, 729 insertions, 217 deletions
diff --git a/Documentation/Changes b/Documentation/Changes index 27232be26e1a..783ddc3ce4e8 100644 --- a/Documentation/Changes +++ b/Documentation/Changes | |||
@@ -65,7 +65,7 @@ o isdn4k-utils 3.1pre1 # isdnctrl 2>&1|grep version | |||
65 | o nfs-utils 1.0.5 # showmount --version | 65 | o nfs-utils 1.0.5 # showmount --version |
66 | o procps 3.2.0 # ps --version | 66 | o procps 3.2.0 # ps --version |
67 | o oprofile 0.9 # oprofiled --version | 67 | o oprofile 0.9 # oprofiled --version |
68 | o udev 058 # udevinfo -V | 68 | o udev 071 # udevinfo -V |
69 | 69 | ||
70 | Kernel compilation | 70 | Kernel compilation |
71 | ================== | 71 | ================== |
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl index d650ce36485f..ec474e5a25ed 100644 --- a/Documentation/DocBook/kernel-api.tmpl +++ b/Documentation/DocBook/kernel-api.tmpl | |||
@@ -239,9 +239,9 @@ X!Ilib/string.c | |||
239 | <title>Network device support</title> | 239 | <title>Network device support</title> |
240 | <sect1><title>Driver Support</title> | 240 | <sect1><title>Driver Support</title> |
241 | !Enet/core/dev.c | 241 | !Enet/core/dev.c |
242 | </sect1> | 242 | !Enet/ethernet/eth.c |
243 | <sect1><title>8390 Based Network Cards</title> | 243 | !Einclude/linux/etherdevice.h |
244 | !Edrivers/net/8390.c | 244 | !Enet/core/wireless.c |
245 | </sect1> | 245 | </sect1> |
246 | <sect1><title>Synchronous PPP</title> | 246 | <sect1><title>Synchronous PPP</title> |
247 | !Edrivers/net/wan/syncppp.c | 247 | !Edrivers/net/wan/syncppp.c |
@@ -286,7 +286,9 @@ X!Edrivers/pci/search.c | |||
286 | --> | 286 | --> |
287 | !Edrivers/pci/msi.c | 287 | !Edrivers/pci/msi.c |
288 | !Edrivers/pci/bus.c | 288 | !Edrivers/pci/bus.c |
289 | !Edrivers/pci/hotplug.c | 289 | <!-- FIXME: Removed for now since no structured comments in source |
290 | X!Edrivers/pci/hotplug.c | ||
291 | --> | ||
290 | !Edrivers/pci/probe.c | 292 | !Edrivers/pci/probe.c |
291 | !Edrivers/pci/rom.c | 293 | !Edrivers/pci/rom.c |
292 | </sect1> | 294 | </sect1> |
diff --git a/Documentation/DocBook/usb.tmpl b/Documentation/DocBook/usb.tmpl index 705c442c7bf4..15ce0f21e5e0 100644 --- a/Documentation/DocBook/usb.tmpl +++ b/Documentation/DocBook/usb.tmpl | |||
@@ -291,7 +291,7 @@ | |||
291 | 291 | ||
292 | !Edrivers/usb/core/hcd.c | 292 | !Edrivers/usb/core/hcd.c |
293 | !Edrivers/usb/core/hcd-pci.c | 293 | !Edrivers/usb/core/hcd-pci.c |
294 | !Edrivers/usb/core/buffer.c | 294 | !Idrivers/usb/core/buffer.c |
295 | </chapter> | 295 | </chapter> |
296 | 296 | ||
297 | <chapter> | 297 | <chapter> |
diff --git a/Documentation/DocBook/writing_usb_driver.tmpl b/Documentation/DocBook/writing_usb_driver.tmpl index 51f3bfb6fb6e..008a341234d0 100644 --- a/Documentation/DocBook/writing_usb_driver.tmpl +++ b/Documentation/DocBook/writing_usb_driver.tmpl | |||
@@ -345,8 +345,7 @@ if (!retval) { | |||
345 | <programlisting> | 345 | <programlisting> |
346 | static inline void skel_delete (struct usb_skel *dev) | 346 | static inline void skel_delete (struct usb_skel *dev) |
347 | { | 347 | { |
348 | if (dev->bulk_in_buffer != NULL) | 348 | kfree (dev->bulk_in_buffer); |
349 | kfree (dev->bulk_in_buffer); | ||
350 | if (dev->bulk_out_buffer != NULL) | 349 | if (dev->bulk_out_buffer != NULL) |
351 | usb_buffer_free (dev->udev, dev->bulk_out_size, | 350 | usb_buffer_free (dev->udev, dev->bulk_out_size, |
352 | dev->bulk_out_buffer, | 351 | dev->bulk_out_buffer, |
diff --git a/Documentation/RCU/torture.txt b/Documentation/RCU/torture.txt new file mode 100644 index 000000000000..e4c38152f7f7 --- /dev/null +++ b/Documentation/RCU/torture.txt | |||
@@ -0,0 +1,122 @@ | |||
1 | RCU Torture Test Operation | ||
2 | |||
3 | |||
4 | CONFIG_RCU_TORTURE_TEST | ||
5 | |||
6 | The CONFIG_RCU_TORTURE_TEST config option is available for all RCU | ||
7 | implementations. It creates an rcutorture kernel module that can | ||
8 | be loaded to run a torture test. The test periodically outputs | ||
9 | status messages via printk(), which can be examined via the dmesg | ||
10 | command (perhaps grepping for "rcutorture"). The test is started | ||
11 | when the module is loaded, and stops when the module is unloaded. | ||
12 | |||
13 | However, actually setting this config option to "y" results in the system | ||
14 | running the test immediately upon boot, and ending only when the system | ||
15 | is taken down. Normally, one will instead want to build the system | ||
16 | with CONFIG_RCU_TORTURE_TEST=m and to use modprobe and rmmod to control | ||
17 | the test, perhaps using a script similar to the one shown at the end of | ||
18 | this document. Note that you will need CONFIG_MODULE_UNLOAD in order | ||
19 | to be able to end the test. | ||
20 | |||
21 | |||
22 | MODULE PARAMETERS | ||
23 | |||
24 | This module has the following parameters: | ||
25 | |||
26 | nreaders This is the number of RCU reading threads supported. | ||
27 | The default is twice the number of CPUs. Why twice? | ||
28 | To properly exercise RCU implementations with preemptible | ||
29 | read-side critical sections. | ||
30 | |||
31 | stat_interval The number of seconds between output of torture | ||
32 | statistics (via printk()). Regardless of the interval, | ||
33 | statistics are printed when the module is unloaded. | ||
34 | Setting the interval to zero causes the statistics to | ||
35 | be printed -only- when the module is unloaded, and this | ||
36 | is the default. | ||
37 | |||
38 | verbose Enable debug printk()s. Default is disabled. | ||
39 | |||
40 | |||
41 | OUTPUT | ||
42 | |||
43 | The statistics output is as follows: | ||
44 | |||
45 | rcutorture: --- Start of test: nreaders=16 stat_interval=0 verbose=0 | ||
46 | rcutorture: rtc: 0000000000000000 ver: 1916 tfle: 0 rta: 1916 rtaf: 0 rtf: 1915 | ||
47 | rcutorture: Reader Pipe: 1466408 9747 0 0 0 0 0 0 0 0 0 | ||
48 | rcutorture: Reader Batch: 1464477 11678 0 0 0 0 0 0 0 0 | ||
49 | rcutorture: Free-Block Circulation: 1915 1915 1915 1915 1915 1915 1915 1915 1915 1915 0 | ||
50 | rcutorture: --- End of test | ||
51 | |||
52 | The command "dmesg | grep rcutorture:" will extract this information on | ||
53 | most systems. On more esoteric configurations, it may be necessary to | ||
54 | use other commands to access the output of the printk()s used by | ||
55 | the RCU torture test. The printk()s use KERN_ALERT, so they should | ||
56 | be evident. ;-) | ||
57 | |||
58 | The entries are as follows: | ||
59 | |||
60 | o "ggp": The number of counter flips (or batches) since boot. | ||
61 | |||
62 | o "rtc": The hexadecimal address of the structure currently visible | ||
63 | to readers. | ||
64 | |||
65 | o "ver": The number of times since boot that the rcutw writer task | ||
66 | has changed the structure visible to readers. | ||
67 | |||
68 | o "tfle": If non-zero, indicates that the "torture freelist" | ||
69 | containing structure to be placed into the "rtc" area is empty. | ||
70 | This condition is important, since it can fool you into thinking | ||
71 | that RCU is working when it is not. :-/ | ||
72 | |||
73 | o "rta": Number of structures allocated from the torture freelist. | ||
74 | |||
75 | o "rtaf": Number of allocations from the torture freelist that have | ||
76 | failed due to the list being empty. | ||
77 | |||
78 | o "rtf": Number of frees into the torture freelist. | ||
79 | |||
80 | o "Reader Pipe": Histogram of "ages" of structures seen by readers. | ||
81 | If any entries past the first two are non-zero, RCU is broken. | ||
82 | And rcutorture prints the error flag string "!!!" to make sure | ||
83 | you notice. The age of a newly allocated structure is zero, | ||
84 | it becomes one when removed from reader visibility, and is | ||
85 | incremented once per grace period subsequently -- and is freed | ||
86 | after passing through (RCU_TORTURE_PIPE_LEN-2) grace periods. | ||
87 | |||
88 | The output displayed above was taken from a correctly working | ||
89 | RCU. If you want to see what it looks like when broken, break | ||
90 | it yourself. ;-) | ||
91 | |||
92 | o "Reader Batch": Another histogram of "ages" of structures seen | ||
93 | by readers, but in terms of counter flips (or batches) rather | ||
94 | than in terms of grace periods. The legal number of non-zero | ||
95 | entries is again two. The reason for this separate view is | ||
96 | that it is easier to get the third entry to show up in the | ||
97 | "Reader Batch" list than in the "Reader Pipe" list. | ||
98 | |||
99 | o "Free-Block Circulation": Shows the number of torture structures | ||
100 | that have reached a given point in the pipeline. The first element | ||
101 | should closely correspond to the number of structures allocated, | ||
102 | the second to the number that have been removed from reader view, | ||
103 | and all but the last remaining to the corresponding number of | ||
104 | passes through a grace period. The last entry should be zero, | ||
105 | as it is only incremented if a torture structure's counter | ||
106 | somehow gets incremented farther than it should. | ||
107 | |||
108 | |||
109 | USAGE | ||
110 | |||
111 | The following script may be used to torture RCU: | ||
112 | |||
113 | #!/bin/sh | ||
114 | |||
115 | modprobe rcutorture | ||
116 | sleep 100 | ||
117 | rmmod rcutorture | ||
118 | dmesg | grep rcutorture: | ||
119 | |||
120 | The output can be manually inspected for the error flag of "!!!". | ||
121 | One could of course create a more elaborate script that automatically | ||
122 | checked for such errors. | ||
diff --git a/Documentation/arm/Samsung-S3C24XX/Overview.txt b/Documentation/arm/Samsung-S3C24XX/Overview.txt index 3af4d29a8938..89aa89d526ac 100644 --- a/Documentation/arm/Samsung-S3C24XX/Overview.txt +++ b/Documentation/arm/Samsung-S3C24XX/Overview.txt | |||
@@ -81,7 +81,8 @@ Adding New Machines | |||
81 | 81 | ||
82 | Any large scale modifications, or new drivers should be discussed | 82 | Any large scale modifications, or new drivers should be discussed |
83 | on the ARM kernel mailing list (linux-arm-kernel) before being | 83 | on the ARM kernel mailing list (linux-arm-kernel) before being |
84 | attempted. | 84 | attempted. See http://www.arm.linux.org.uk/mailinglists/ for the |
85 | mailing list information. | ||
85 | 86 | ||
86 | 87 | ||
87 | NAND | 88 | NAND |
@@ -120,6 +121,43 @@ Clock Management | |||
120 | various clock units | 121 | various clock units |
121 | 122 | ||
122 | 123 | ||
124 | Platform Data | ||
125 | ------------- | ||
126 | |||
127 | Whenever a device has platform specific data that is specified | ||
128 | on a per-machine basis, care should be taken to ensure the | ||
129 | following: | ||
130 | |||
131 | 1) that default data is not left in the device to confuse the | ||
132 | driver if a machine does not set it at startup | ||
133 | |||
134 | 2) the data should (if possible) be marked as __initdata, | ||
135 | to ensure that the data is thrown away if the machine is | ||
136 | not the one currently in use. | ||
137 | |||
138 | The best way of doing this is to make a function that | ||
139 | kmalloc()s an area of memory, and copies the __initdata | ||
140 | and then sets the relevant device's platform data. Making | ||
141 | the function `__init` takes care of ensuring it is discarded | ||
142 | with the rest of the initialisation code | ||
143 | |||
144 | static __init void s3c24xx_xxx_set_platdata(struct xxx_data *pd) | ||
145 | { | ||
146 | struct s3c2410_xxx_mach_info *npd; | ||
147 | |||
148 | npd = kmalloc(sizeof(struct s3c2410_xxx_mach_info), GFP_KERNEL); | ||
149 | if (npd) { | ||
150 | memcpy(npd, pd, sizeof(struct s3c2410_xxx_mach_info)); | ||
151 | s3c_device_xxx.dev.platform_data = npd; | ||
152 | } else { | ||
153 | printk(KERN_ERR "no memory for xxx platform data\n"); | ||
154 | } | ||
155 | } | ||
156 | |||
157 | Note, since the code is marked as __init, it should not be | ||
158 | exported outside arch/arm/mach-s3c2410/, or exported to | ||
159 | modules via EXPORT_SYMBOL() and related functions. | ||
160 | |||
123 | Port Contributors | 161 | Port Contributors |
124 | ----------------- | 162 | ----------------- |
125 | 163 | ||
@@ -149,6 +187,7 @@ Document Changes | |||
149 | 06 Mar 2005 - BJD - Added Christer Weinigel | 187 | 06 Mar 2005 - BJD - Added Christer Weinigel |
150 | 08 Mar 2005 - BJD - Added LCVR to list of people, updated introduction | 188 | 08 Mar 2005 - BJD - Added LCVR to list of people, updated introduction |
151 | 08 Mar 2005 - BJD - Added section on adding machines | 189 | 08 Mar 2005 - BJD - Added section on adding machines |
190 | 09 Sep 2005 - BJD - Added section on platform data | ||
152 | 191 | ||
153 | Document Author | 192 | Document Author |
154 | --------------- | 193 | --------------- |
diff --git a/Documentation/cachetlb.txt b/Documentation/cachetlb.txt index e132fb1163b0..7eb715e07eda 100644 --- a/Documentation/cachetlb.txt +++ b/Documentation/cachetlb.txt | |||
@@ -49,9 +49,6 @@ changes occur: | |||
49 | page table operations such as what happens during | 49 | page table operations such as what happens during |
50 | fork, and exec. | 50 | fork, and exec. |
51 | 51 | ||
52 | Platform developers note that generic code will always | ||
53 | invoke this interface without mm->page_table_lock held. | ||
54 | |||
55 | 3) void flush_tlb_range(struct vm_area_struct *vma, | 52 | 3) void flush_tlb_range(struct vm_area_struct *vma, |
56 | unsigned long start, unsigned long end) | 53 | unsigned long start, unsigned long end) |
57 | 54 | ||
@@ -72,9 +69,6 @@ changes occur: | |||
72 | call flush_tlb_page (see below) for each entry which may be | 69 | call flush_tlb_page (see below) for each entry which may be |
73 | modified. | 70 | modified. |
74 | 71 | ||
75 | Platform developers note that generic code will always | ||
76 | invoke this interface with mm->page_table_lock held. | ||
77 | |||
78 | 4) void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr) | 72 | 4) void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr) |
79 | 73 | ||
80 | This time we need to remove the PAGE_SIZE sized translation | 74 | This time we need to remove the PAGE_SIZE sized translation |
@@ -93,9 +87,6 @@ changes occur: | |||
93 | 87 | ||
94 | This is used primarily during fault processing. | 88 | This is used primarily during fault processing. |
95 | 89 | ||
96 | Platform developers note that generic code will always | ||
97 | invoke this interface with mm->page_table_lock held. | ||
98 | |||
99 | 5) void flush_tlb_pgtables(struct mm_struct *mm, | 90 | 5) void flush_tlb_pgtables(struct mm_struct *mm, |
100 | unsigned long start, unsigned long end) | 91 | unsigned long start, unsigned long end) |
101 | 92 | ||
diff --git a/Documentation/cpusets.txt b/Documentation/cpusets.txt index d17b7d2dd771..a09a8eb80665 100644 --- a/Documentation/cpusets.txt +++ b/Documentation/cpusets.txt | |||
@@ -94,7 +94,7 @@ the available CPU and Memory resources amongst the requesting tasks. | |||
94 | But larger systems, which benefit more from careful processor and | 94 | But larger systems, which benefit more from careful processor and |
95 | memory placement to reduce memory access times and contention, | 95 | memory placement to reduce memory access times and contention, |
96 | and which typically represent a larger investment for the customer, | 96 | and which typically represent a larger investment for the customer, |
97 | can benefit from explictly placing jobs on properly sized subsets of | 97 | can benefit from explicitly placing jobs on properly sized subsets of |
98 | the system. | 98 | the system. |
99 | 99 | ||
100 | This can be especially valuable on: | 100 | This can be especially valuable on: |
diff --git a/Documentation/driver-model/driver.txt b/Documentation/driver-model/driver.txt index fabaca1ab1b0..59806c9761f7 100644 --- a/Documentation/driver-model/driver.txt +++ b/Documentation/driver-model/driver.txt | |||
@@ -14,8 +14,8 @@ struct device_driver { | |||
14 | int (*probe) (struct device * dev); | 14 | int (*probe) (struct device * dev); |
15 | int (*remove) (struct device * dev); | 15 | int (*remove) (struct device * dev); |
16 | 16 | ||
17 | int (*suspend) (struct device * dev, pm_message_t state, u32 level); | 17 | int (*suspend) (struct device * dev, pm_message_t state); |
18 | int (*resume) (struct device * dev, u32 level); | 18 | int (*resume) (struct device * dev); |
19 | }; | 19 | }; |
20 | 20 | ||
21 | 21 | ||
@@ -194,69 +194,13 @@ device; i.e. anything in the device's driver_data field. | |||
194 | If the device is still present, it should quiesce the device and place | 194 | If the device is still present, it should quiesce the device and place |
195 | it into a supported low-power state. | 195 | it into a supported low-power state. |
196 | 196 | ||
197 | int (*suspend) (struct device * dev, pm_message_t state, u32 level); | 197 | int (*suspend) (struct device * dev, pm_message_t state); |
198 | 198 | ||
199 | suspend is called to put the device in a low power state. There are | 199 | suspend is called to put the device in a low power state. |
200 | several stages to successfully suspending a device, which is denoted in | ||
201 | the @level parameter. Breaking the suspend transition into several | ||
202 | stages affords the platform flexibility in performing device power | ||
203 | management based on the requirements of the system and the | ||
204 | user-defined policy. | ||
205 | 200 | ||
206 | SUSPEND_NOTIFY notifies the device that a suspend transition is about | 201 | int (*resume) (struct device * dev); |
207 | to happen. This happens on system power state transitions to verify | ||
208 | that all devices can successfully suspend. | ||
209 | 202 | ||
210 | A driver may choose to fail on this call, which should cause the | 203 | Resume is used to bring a device back from a low power state. |
211 | entire suspend transition to fail. A driver should fail only if it | ||
212 | knows that the device will not be able to be resumed properly when the | ||
213 | system wakes up again. It could also fail if it somehow determines it | ||
214 | is in the middle of an operation too important to stop. | ||
215 | |||
216 | SUSPEND_DISABLE tells the device to stop I/O transactions. When it | ||
217 | stops transactions, or what it should do with unfinished transactions | ||
218 | is a policy of the driver. After this call, the driver should not | ||
219 | accept any other I/O requests. | ||
220 | |||
221 | SUSPEND_SAVE_STATE tells the device to save the context of the | ||
222 | hardware. This includes any bus-specific hardware state and | ||
223 | device-specific hardware state. A pointer to this saved state can be | ||
224 | stored in the device's saved_state field. | ||
225 | |||
226 | SUSPEND_POWER_DOWN tells the driver to place the device in the low | ||
227 | power state requested. | ||
228 | |||
229 | Whether suspend is called with a given level is a policy of the | ||
230 | platform. Some levels may be omitted; drivers must not assume the | ||
231 | reception of any level. However, all levels must be called in the | ||
232 | order above; i.e. notification will always come before disabling; | ||
233 | disabling the device will come before suspending the device. | ||
234 | |||
235 | All calls are made with interrupts enabled, except for the | ||
236 | SUSPEND_POWER_DOWN level. | ||
237 | |||
238 | int (*resume) (struct device * dev, u32 level); | ||
239 | |||
240 | Resume is used to bring a device back from a low power state. Like the | ||
241 | suspend transition, it happens in several stages. | ||
242 | |||
243 | RESUME_POWER_ON tells the driver to set the power state to the state | ||
244 | before the suspend call (The device could have already been in a low | ||
245 | power state before the suspend call to put in a lower power state). | ||
246 | |||
247 | RESUME_RESTORE_STATE tells the driver to restore the state saved by | ||
248 | the SUSPEND_SAVE_STATE suspend call. | ||
249 | |||
250 | RESUME_ENABLE tells the driver to start accepting I/O transactions | ||
251 | again. Depending on driver policy, the device may already have pending | ||
252 | I/O requests. | ||
253 | |||
254 | RESUME_POWER_ON is called with interrupts disabled. The other resume | ||
255 | levels are called with interrupts enabled. | ||
256 | |||
257 | As with the various suspend stages, the driver must not assume that | ||
258 | any other resume calls have been or will be made. Each call should be | ||
259 | self-contained and not dependent on any external state. | ||
260 | 204 | ||
261 | 205 | ||
262 | Attributes | 206 | Attributes |
diff --git a/Documentation/driver-model/porting.txt b/Documentation/driver-model/porting.txt index ff2fef2107f0..98b233cb8b36 100644 --- a/Documentation/driver-model/porting.txt +++ b/Documentation/driver-model/porting.txt | |||
@@ -350,7 +350,7 @@ When a driver is registered, the bus's list of devices is iterated | |||
350 | over. bus->match() is called for each device that is not already | 350 | over. bus->match() is called for each device that is not already |
351 | claimed by a driver. | 351 | claimed by a driver. |
352 | 352 | ||
353 | When a device is successfully bound to a device, device->driver is | 353 | When a device is successfully bound to a driver, device->driver is |
354 | set, the device is added to a per-driver list of devices, and a | 354 | set, the device is added to a per-driver list of devices, and a |
355 | symlink is created in the driver's sysfs directory that points to the | 355 | symlink is created in the driver's sysfs directory that points to the |
356 | device's physical directory: | 356 | device's physical directory: |
diff --git a/Documentation/filesystems/ntfs.txt b/Documentation/filesystems/ntfs.txt index a5fbc8e897fa..614de3124901 100644 --- a/Documentation/filesystems/ntfs.txt +++ b/Documentation/filesystems/ntfs.txt | |||
@@ -50,9 +50,14 @@ userspace utilities, etc. | |||
50 | Features | 50 | Features |
51 | ======== | 51 | ======== |
52 | 52 | ||
53 | - This is a complete rewrite of the NTFS driver that used to be in the kernel. | 53 | - This is a complete rewrite of the NTFS driver that used to be in the 2.4 and |
54 | This new driver implements NTFS read support and is functionally equivalent | 54 | earlier kernels. This new driver implements NTFS read support and is |
55 | to the old ntfs driver. | 55 | functionally equivalent to the old ntfs driver and it also implements limited |
56 | write support. The biggest limitation at present is that files/directories | ||
57 | cannot be created or deleted. See below for the list of write features that | ||
58 | are so far supported. Another limitation is that writing to compressed files | ||
59 | is not implemented at all. Also, neither read nor write access to encrypted | ||
60 | files is so far implemented. | ||
56 | - The new driver has full support for sparse files on NTFS 3.x volumes which | 61 | - The new driver has full support for sparse files on NTFS 3.x volumes which |
57 | the old driver isn't happy with. | 62 | the old driver isn't happy with. |
58 | - The new driver supports execution of binaries due to mmap() now being | 63 | - The new driver supports execution of binaries due to mmap() now being |
@@ -78,7 +83,20 @@ Features | |||
78 | - The new driver supports fsync(2), fdatasync(2), and msync(2). | 83 | - The new driver supports fsync(2), fdatasync(2), and msync(2). |
79 | - The new driver supports readv(2) and writev(2). | 84 | - The new driver supports readv(2) and writev(2). |
80 | - The new driver supports access time updates (including mtime and ctime). | 85 | - The new driver supports access time updates (including mtime and ctime). |
81 | 86 | - The new driver supports truncate(2) and open(2) with O_TRUNC. But at present | |
87 | only very limited support for highly fragmented files, i.e. ones which have | ||
88 | their data attribute split across multiple extents, is included. Another | ||
89 | limitation is that at present truncate(2) will never create sparse files, | ||
90 | since to mark a file sparse we need to modify the directory entry for the | ||
91 | file and we do not implement directory modifications yet. | ||
92 | - The new driver supports write(2) which can both overwrite existing data and | ||
93 | extend the file size so that you can write beyond the existing data. Also, | ||
94 | writing into sparse regions is supported and the holes are filled in with | ||
95 | clusters. But at present only limited support for highly fragmented files, | ||
96 | i.e. ones which have their data attribute split across multiple extents, is | ||
97 | included. Another limitation is that write(2) will never create sparse | ||
98 | files, since to mark a file sparse we need to modify the directory entry for | ||
99 | the file and we do not implement directory modifications yet. | ||
82 | 100 | ||
83 | Supported mount options | 101 | Supported mount options |
84 | ======================= | 102 | ======================= |
@@ -439,6 +457,22 @@ ChangeLog | |||
439 | 457 | ||
440 | Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog. | 458 | Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog. |
441 | 459 | ||
460 | 2.1.25: | ||
461 | - Write support is now extended with write(2) being able to both | ||
462 | overwrite existing file data and to extend files. Also, if a write | ||
463 | to a sparse region occurs, write(2) will fill in the hole. Note, | ||
464 | mmap(2) based writes still do not support writing into holes or | ||
465 | writing beyond the initialized size. | ||
466 | - Write support has a new feature and that is that truncate(2) and | ||
467 | open(2) with O_TRUNC are now implemented thus files can be both made | ||
468 | smaller and larger. | ||
469 | - Note: Both write(2) and truncate(2)/open(2) with O_TRUNC still have | ||
470 | limitations in that they | ||
471 | - only provide limited support for highly fragmented files. | ||
472 | - only work on regular, i.e. uncompressed and unencrypted files. | ||
473 | - never create sparse files although this will change once directory | ||
474 | operations are implemented. | ||
475 | - Lots of bug fixes and enhancements across the board. | ||
442 | 2.1.24: | 476 | 2.1.24: |
443 | - Support journals ($LogFile) which have been modified by chkdsk. This | 477 | - Support journals ($LogFile) which have been modified by chkdsk. This |
444 | means users can boot into Windows after we marked the volume dirty. | 478 | means users can boot into Windows after we marked the volume dirty. |
diff --git a/Documentation/filesystems/xfs.txt b/Documentation/filesystems/xfs.txt index c7d5d0c7067d..74aeb142ae5f 100644 --- a/Documentation/filesystems/xfs.txt +++ b/Documentation/filesystems/xfs.txt | |||
@@ -19,15 +19,43 @@ Mount Options | |||
19 | 19 | ||
20 | When mounting an XFS filesystem, the following options are accepted. | 20 | When mounting an XFS filesystem, the following options are accepted. |
21 | 21 | ||
22 | biosize=size | 22 | allocsize=size |
23 | Sets the preferred buffered I/O size (default size is 64K). | 23 | Sets the buffered I/O end-of-file preallocation size when |
24 | "size" must be expressed as the logarithm (base2) of the | 24 | doing delayed allocation writeout (default size is 64KiB). |
25 | desired I/O size. | 25 | Valid values for this option are page size (typically 4KiB) |
26 | Valid values for this option are 14 through 16, inclusive | 26 | through to 1GiB, inclusive, in power-of-2 increments. |
27 | (i.e. 16K, 32K, and 64K bytes). On machines with a 4K | 27 | |
28 | pagesize, 13 (8K bytes) is also a valid size. | 28 | attr2/noattr2 |
29 | The preferred buffered I/O size can also be altered on an | 29 | The options enable/disable (default is disabled for backward |
30 | individual file basis using the ioctl(2) system call. | 30 | compatibility on-disk) an "opportunistic" improvement to be |
31 | made in the way inline extended attributes are stored on-disk. | ||
32 | When the new form is used for the first time (by setting or | ||
33 | removing extended attributes) the on-disk superblock feature | ||
34 | bit field will be updated to reflect this format being in use. | ||
35 | |||
36 | barrier | ||
37 | Enables the use of block layer write barriers for writes into | ||
38 | the journal and unwritten extent conversion. This allows for | ||
39 | drive level write caching to be enabled, for devices that | ||
40 | support write barriers. | ||
41 | |||
42 | dmapi | ||
43 | Enable the DMAPI (Data Management API) event callouts. | ||
44 | Use with the "mtpt" option. | ||
45 | |||
46 | grpid/bsdgroups and nogrpid/sysvgroups | ||
47 | These options define what group ID a newly created file gets. | ||
48 | When grpid is set, it takes the group ID of the directory in | ||
49 | which it is created; otherwise (the default) it takes the fsgid | ||
50 | of the current process, unless the directory has the setgid bit | ||
51 | set, in which case it takes the gid from the parent directory, | ||
52 | and also gets the setgid bit set if it is a directory itself. | ||
53 | |||
54 | ihashsize=value | ||
55 | Sets the number of hash buckets available for hashing the | ||
56 | in-memory inodes of the specified mount point. If a value | ||
57 | of zero is used, the value selected by the default algorithm | ||
58 | will be displayed in /proc/mounts. | ||
31 | 59 | ||
32 | ikeep/noikeep | 60 | ikeep/noikeep |
33 | When inode clusters are emptied of inodes, keep them around | 61 | When inode clusters are emptied of inodes, keep them around |
@@ -35,12 +63,31 @@ When mounting an XFS filesystem, the following options are accepted. | |||
35 | and is still the default for now. Using the noikeep option, | 63 | and is still the default for now. Using the noikeep option, |
36 | inode clusters are returned to the free space pool. | 64 | inode clusters are returned to the free space pool. |
37 | 65 | ||
66 | inode64 | ||
67 | Indicates that XFS is allowed to create inodes at any location | ||
68 | in the filesystem, including those which will result in inode | ||
69 | numbers occupying more than 32 bits of significance. This is | ||
70 | provided for backwards compatibility, but causes problems for | ||
71 | backup applications that cannot handle large inode numbers. | ||
72 | |||
73 | largeio/nolargeio | ||
74 | If "nolargeio" is specified, the optimal I/O reported in | ||
75 | st_blksize by stat(2) will be as small as possible to allow user | ||
76 | applications to avoid inefficient read/modify/write I/O. | ||
77 | If "largeio" specified, a filesystem that has a "swidth" specified | ||
78 | will return the "swidth" value (in bytes) in st_blksize. If the | ||
79 | filesystem does not have a "swidth" specified but does specify | ||
80 | an "allocsize" then "allocsize" (in bytes) will be returned | ||
81 | instead. | ||
82 | If neither of these two options are specified, then filesystem | ||
83 | will behave as if "nolargeio" was specified. | ||
84 | |||
38 | logbufs=value | 85 | logbufs=value |
39 | Set the number of in-memory log buffers. Valid numbers range | 86 | Set the number of in-memory log buffers. Valid numbers range |
40 | from 2-8 inclusive. | 87 | from 2-8 inclusive. |
41 | The default value is 8 buffers for filesystems with a | 88 | The default value is 8 buffers for filesystems with a |
42 | blocksize of 64K, 4 buffers for filesystems with a blocksize | 89 | blocksize of 64KiB, 4 buffers for filesystems with a blocksize |
43 | of 32K, 3 buffers for filesystems with a blocksize of 16K | 90 | of 32KiB, 3 buffers for filesystems with a blocksize of 16KiB |
44 | and 2 buffers for all other configurations. Increasing the | 91 | and 2 buffers for all other configurations. Increasing the |
45 | number of buffers may increase performance on some workloads | 92 | number of buffers may increase performance on some workloads |
46 | at the cost of the memory used for the additional log buffers | 93 | at the cost of the memory used for the additional log buffers |
@@ -49,10 +96,10 @@ When mounting an XFS filesystem, the following options are accepted. | |||
49 | logbsize=value | 96 | logbsize=value |
50 | Set the size of each in-memory log buffer. | 97 | Set the size of each in-memory log buffer. |
51 | Size may be specified in bytes, or in kilobytes with a "k" suffix. | 98 | Size may be specified in bytes, or in kilobytes with a "k" suffix. |
52 | Valid sizes for version 1 and version 2 logs are 16384 (16k) and | 99 | Valid sizes for version 1 and version 2 logs are 16384 (16k) and |
53 | 32768 (32k). Valid sizes for version 2 logs also include | 100 | 32768 (32k). Valid sizes for version 2 logs also include |
54 | 65536 (64k), 131072 (128k) and 262144 (256k). | 101 | 65536 (64k), 131072 (128k) and 262144 (256k). |
55 | The default value for machines with more than 32MB of memory | 102 | The default value for machines with more than 32MiB of memory |
56 | is 32768, machines with less memory use 16384 by default. | 103 | is 32768, machines with less memory use 16384 by default. |
57 | 104 | ||
58 | logdev=device and rtdev=device | 105 | logdev=device and rtdev=device |
@@ -62,6 +109,11 @@ When mounting an XFS filesystem, the following options are accepted. | |||
62 | optional, and the log section can be separate from the data | 109 | optional, and the log section can be separate from the data |
63 | section or contained within it. | 110 | section or contained within it. |
64 | 111 | ||
112 | mtpt=mountpoint | ||
113 | Use with the "dmapi" option. The value specified here will be | ||
114 | included in the DMAPI mount event, and should be the path of | ||
115 | the actual mountpoint that is used. | ||
116 | |||
65 | noalign | 117 | noalign |
66 | Data allocations will not be aligned at stripe unit boundaries. | 118 | Data allocations will not be aligned at stripe unit boundaries. |
67 | 119 | ||
@@ -91,13 +143,17 @@ When mounting an XFS filesystem, the following options are accepted. | |||
91 | O_SYNC writes can be lost if the system crashes. | 143 | O_SYNC writes can be lost if the system crashes. |
92 | If timestamp updates are critical, use the osyncisosync option. | 144 | If timestamp updates are critical, use the osyncisosync option. |
93 | 145 | ||
94 | quota/usrquota/uqnoenforce | 146 | uquota/usrquota/uqnoenforce/quota |
95 | User disk quota accounting enabled, and limits (optionally) | 147 | User disk quota accounting enabled, and limits (optionally) |
96 | enforced. | 148 | enforced. Refer to xfs_quota(8) for further details. |
97 | 149 | ||
98 | grpquota/gqnoenforce | 150 | gquota/grpquota/gqnoenforce |
99 | Group disk quota accounting enabled and limits (optionally) | 151 | Group disk quota accounting enabled and limits (optionally) |
100 | enforced. | 152 | enforced. Refer to xfs_quota(8) for further details. |
153 | |||
154 | pquota/prjquota/pqnoenforce | ||
155 | Project disk quota accounting enabled and limits (optionally) | ||
156 | enforced. Refer to xfs_quota(8) for further details. | ||
101 | 157 | ||
102 | sunit=value and swidth=value | 158 | sunit=value and swidth=value |
103 | Used to specify the stripe unit and width for a RAID device or | 159 | Used to specify the stripe unit and width for a RAID device or |
@@ -113,15 +169,21 @@ When mounting an XFS filesystem, the following options are accepted. | |||
113 | The "swidth" option is required if the "sunit" option has been | 169 | The "swidth" option is required if the "sunit" option has been |
114 | specified, and must be a multiple of the "sunit" value. | 170 | specified, and must be a multiple of the "sunit" value. |
115 | 171 | ||
172 | swalloc | ||
173 | Data allocations will be rounded up to stripe width boundaries | ||
174 | when the current end of file is being extended and the file | ||
175 | size is larger than the stripe width size. | ||
176 | |||
177 | |||
116 | sysctls | 178 | sysctls |
117 | ======= | 179 | ======= |
118 | 180 | ||
119 | The following sysctls are available for the XFS filesystem: | 181 | The following sysctls are available for the XFS filesystem: |
120 | 182 | ||
121 | fs.xfs.stats_clear (Min: 0 Default: 0 Max: 1) | 183 | fs.xfs.stats_clear (Min: 0 Default: 0 Max: 1) |
122 | Setting this to "1" clears accumulated XFS statistics | 184 | Setting this to "1" clears accumulated XFS statistics |
123 | in /proc/fs/xfs/stat. It then immediately resets to "0". | 185 | in /proc/fs/xfs/stat. It then immediately resets to "0". |
124 | 186 | ||
125 | fs.xfs.xfssyncd_centisecs (Min: 100 Default: 3000 Max: 720000) | 187 | fs.xfs.xfssyncd_centisecs (Min: 100 Default: 3000 Max: 720000) |
126 | The interval at which the xfssyncd thread flushes metadata | 188 | The interval at which the xfssyncd thread flushes metadata |
127 | out to disk. This thread will flush log activity out, and | 189 | out to disk. This thread will flush log activity out, and |
@@ -143,9 +205,9 @@ The following sysctls are available for the XFS filesystem: | |||
143 | XFS_ERRLEVEL_HIGH: 5 | 205 | XFS_ERRLEVEL_HIGH: 5 |
144 | 206 | ||
145 | fs.xfs.panic_mask (Min: 0 Default: 0 Max: 127) | 207 | fs.xfs.panic_mask (Min: 0 Default: 0 Max: 127) |
146 | Causes certain error conditions to call BUG(). Value is a bitmask; | 208 | Causes certain error conditions to call BUG(). Value is a bitmask; |
147 | AND together the tags which represent errors which should cause panics: | 209 | AND together the tags which represent errors which should cause panics: |
148 | 210 | ||
149 | XFS_NO_PTAG 0 | 211 | XFS_NO_PTAG 0 |
150 | XFS_PTAG_IFLUSH 0x00000001 | 212 | XFS_PTAG_IFLUSH 0x00000001 |
151 | XFS_PTAG_LOGRES 0x00000002 | 213 | XFS_PTAG_LOGRES 0x00000002 |
@@ -155,7 +217,7 @@ The following sysctls are available for the XFS filesystem: | |||
155 | XFS_PTAG_SHUTDOWN_IOERROR 0x00000020 | 217 | XFS_PTAG_SHUTDOWN_IOERROR 0x00000020 |
156 | XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040 | 218 | XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040 |
157 | 219 | ||
158 | This option is intended for debugging only. | 220 | This option is intended for debugging only. |
159 | 221 | ||
160 | fs.xfs.irix_symlink_mode (Min: 0 Default: 0 Max: 1) | 222 | fs.xfs.irix_symlink_mode (Min: 0 Default: 0 Max: 1) |
161 | Controls whether symlinks are created with mode 0777 (default) | 223 | Controls whether symlinks are created with mode 0777 (default) |
@@ -164,25 +226,37 @@ The following sysctls are available for the XFS filesystem: | |||
164 | fs.xfs.irix_sgid_inherit (Min: 0 Default: 0 Max: 1) | 226 | fs.xfs.irix_sgid_inherit (Min: 0 Default: 0 Max: 1) |
165 | Controls files created in SGID directories. | 227 | Controls files created in SGID directories. |
166 | If the group ID of the new file does not match the effective group | 228 | If the group ID of the new file does not match the effective group |
167 | ID or one of the supplementary group IDs of the parent dir, the | 229 | ID or one of the supplementary group IDs of the parent dir, the |
168 | ISGID bit is cleared if the irix_sgid_inherit compatibility sysctl | 230 | ISGID bit is cleared if the irix_sgid_inherit compatibility sysctl |
169 | is set. | 231 | is set. |
170 | 232 | ||
171 | fs.xfs.restrict_chown (Min: 0 Default: 1 Max: 1) | 233 | fs.xfs.restrict_chown (Min: 0 Default: 1 Max: 1) |
172 | Controls whether unprivileged users can use chown to "give away" | 234 | Controls whether unprivileged users can use chown to "give away" |
173 | a file to another user. | 235 | a file to another user. |
174 | 236 | ||
175 | fs.xfs.inherit_sync (Min: 0 Default: 1 Max 1) | 237 | fs.xfs.inherit_sync (Min: 0 Default: 1 Max: 1) |
176 | Setting this to "1" will cause the "sync" flag set | 238 | Setting this to "1" will cause the "sync" flag set |
177 | by the chattr(1) command on a directory to be | 239 | by the xfs_io(8) chattr command on a directory to be |
178 | inherited by files in that directory. | 240 | inherited by files in that directory. |
179 | 241 | ||
180 | fs.xfs.inherit_nodump (Min: 0 Default: 1 Max 1) | 242 | fs.xfs.inherit_nodump (Min: 0 Default: 1 Max: 1) |
181 | Setting this to "1" will cause the "nodump" flag set | 243 | Setting this to "1" will cause the "nodump" flag set |
182 | by the chattr(1) command on a directory to be | 244 | by the xfs_io(8) chattr command on a directory to be |
183 | inherited by files in that directory. | 245 | inherited by files in that directory. |
184 | 246 | ||
185 | fs.xfs.inherit_noatime (Min: 0 Default: 1 Max 1) | 247 | fs.xfs.inherit_noatime (Min: 0 Default: 1 Max: 1) |
186 | Setting this to "1" will cause the "noatime" flag set | 248 | Setting this to "1" will cause the "noatime" flag set |
187 | by the chattr(1) command on a directory to be | 249 | by the xfs_io(8) chattr command on a directory to be |
188 | inherited by files in that directory. | 250 | inherited by files in that directory. |
251 | |||
252 | fs.xfs.inherit_nosymlinks (Min: 0 Default: 1 Max: 1) | ||
253 | Setting this to "1" will cause the "nosymlinks" flag set | ||
254 | by the xfs_io(8) chattr command on a directory to be | ||
255 | inherited by files in that directory. | ||
256 | |||
257 | fs.xfs.rotorstep (Min: 1 Default: 1 Max: 256) | ||
258 | In "inode32" allocation mode, this option determines how many | ||
259 | files the allocator attempts to allocate in the same allocation | ||
260 | group before moving to the next allocation group. The intent | ||
261 | is to control the rate at which the allocator moves between | ||
262 | allocation groups when allocating extents for new files. | ||
diff --git a/Documentation/firmware_class/firmware_sample_driver.c b/Documentation/firmware_class/firmware_sample_driver.c index 4bef8c25172c..d3ad2c24490a 100644 --- a/Documentation/firmware_class/firmware_sample_driver.c +++ b/Documentation/firmware_class/firmware_sample_driver.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/device.h> | 15 | #include <linux/device.h> |
16 | #include <linux/string.h> | ||
16 | 17 | ||
17 | #include "linux/firmware.h" | 18 | #include "linux/firmware.h" |
18 | 19 | ||
diff --git a/Documentation/firmware_class/firmware_sample_firmware_class.c b/Documentation/firmware_class/firmware_sample_firmware_class.c index 09eab2f1b373..57b956aecbc5 100644 --- a/Documentation/firmware_class/firmware_sample_firmware_class.c +++ b/Documentation/firmware_class/firmware_sample_firmware_class.c | |||
@@ -14,6 +14,8 @@ | |||
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/timer.h> | 16 | #include <linux/timer.h> |
17 | #include <linux/slab.h> | ||
18 | #include <linux/string.h> | ||
17 | #include <linux/firmware.h> | 19 | #include <linux/firmware.h> |
18 | 20 | ||
19 | 21 | ||
diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87 index 0d0195040d88..7f42e441c645 100644 --- a/Documentation/hwmon/it87 +++ b/Documentation/hwmon/it87 | |||
@@ -4,18 +4,18 @@ Kernel driver it87 | |||
4 | Supported chips: | 4 | Supported chips: |
5 | * IT8705F | 5 | * IT8705F |
6 | Prefix: 'it87' | 6 | Prefix: 'it87' |
7 | Addresses scanned: from Super I/O config space, or default ISA 0x290 (8 I/O ports) | 7 | Addresses scanned: from Super I/O config space (8 I/O ports) |
8 | Datasheet: Publicly available at the ITE website | 8 | Datasheet: Publicly available at the ITE website |
9 | http://www.ite.com.tw/ | 9 | http://www.ite.com.tw/ |
10 | * IT8712F | 10 | * IT8712F |
11 | Prefix: 'it8712' | 11 | Prefix: 'it8712' |
12 | Addresses scanned: I2C 0x28 - 0x2f | 12 | Addresses scanned: I2C 0x28 - 0x2f |
13 | from Super I/O config space, or default ISA 0x290 (8 I/O ports) | 13 | from Super I/O config space (8 I/O ports) |
14 | Datasheet: Publicly available at the ITE website | 14 | Datasheet: Publicly available at the ITE website |
15 | http://www.ite.com.tw/ | 15 | http://www.ite.com.tw/ |
16 | * SiS950 [clone of IT8705F] | 16 | * SiS950 [clone of IT8705F] |
17 | Prefix: 'sis950' | 17 | Prefix: 'it87' |
18 | Addresses scanned: from Super I/O config space, or default ISA 0x290 (8 I/O ports) | 18 | Addresses scanned: from Super I/O config space (8 I/O ports) |
19 | Datasheet: No longer be available | 19 | Datasheet: No longer be available |
20 | 20 | ||
21 | Author: Christophe Gauthron <chrisg@0-in.com> | 21 | Author: Christophe Gauthron <chrisg@0-in.com> |
diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90 index 2c4cf39471f4..438cb24cee5b 100644 --- a/Documentation/hwmon/lm90 +++ b/Documentation/hwmon/lm90 | |||
@@ -24,14 +24,14 @@ Supported chips: | |||
24 | http://www.national.com/pf/LM/LM86.html | 24 | http://www.national.com/pf/LM/LM86.html |
25 | * Analog Devices ADM1032 | 25 | * Analog Devices ADM1032 |
26 | Prefix: 'adm1032' | 26 | Prefix: 'adm1032' |
27 | Addresses scanned: I2C 0x4c | 27 | Addresses scanned: I2C 0x4c and 0x4d |
28 | Datasheet: Publicly available at the Analog Devices website | 28 | Datasheet: Publicly available at the Analog Devices website |
29 | http://products.analog.com/products/info.asp?product=ADM1032 | 29 | http://www.analog.com/en/prod/0,2877,ADM1032,00.html |
30 | * Analog Devices ADT7461 | 30 | * Analog Devices ADT7461 |
31 | Prefix: 'adt7461' | 31 | Prefix: 'adt7461' |
32 | Addresses scanned: I2C 0x4c | 32 | Addresses scanned: I2C 0x4c and 0x4d |
33 | Datasheet: Publicly available at the Analog Devices website | 33 | Datasheet: Publicly available at the Analog Devices website |
34 | http://products.analog.com/products/info.asp?product=ADT7461 | 34 | http://www.analog.com/en/prod/0,2877,ADT7461,00.html |
35 | Note: Only if in ADM1032 compatibility mode | 35 | Note: Only if in ADM1032 compatibility mode |
36 | * Maxim MAX6657 | 36 | * Maxim MAX6657 |
37 | Prefix: 'max6657' | 37 | Prefix: 'max6657' |
@@ -71,8 +71,8 @@ increased resolution of the remote temperature measurement. | |||
71 | 71 | ||
72 | The different chipsets of the family are not strictly identical, although | 72 | The different chipsets of the family are not strictly identical, although |
73 | very similar. This driver doesn't handle any specific feature for now, | 73 | very similar. This driver doesn't handle any specific feature for now, |
74 | but could if there ever was a need for it. For reference, here comes a | 74 | with the exception of SMBus PEC. For reference, here comes a non-exhaustive |
75 | non-exhaustive list of specific features: | 75 | list of specific features: |
76 | 76 | ||
77 | LM90: | 77 | LM90: |
78 | * Filter and alert configuration register at 0xBF. | 78 | * Filter and alert configuration register at 0xBF. |
@@ -91,6 +91,7 @@ ADM1032: | |||
91 | * Conversion averaging. | 91 | * Conversion averaging. |
92 | * Up to 64 conversions/s. | 92 | * Up to 64 conversions/s. |
93 | * ALERT is triggered by open remote sensor. | 93 | * ALERT is triggered by open remote sensor. |
94 | * SMBus PEC support for Write Byte and Receive Byte transactions. | ||
94 | 95 | ||
95 | ADT7461 | 96 | ADT7461 |
96 | * Extended temperature range (breaks compatibility) | 97 | * Extended temperature range (breaks compatibility) |
@@ -119,3 +120,37 @@ The lm90 driver will not update its values more frequently than every | |||
119 | other second; reading them more often will do no harm, but will return | 120 | other second; reading them more often will do no harm, but will return |
120 | 'old' values. | 121 | 'old' values. |
121 | 122 | ||
123 | PEC Support | ||
124 | ----------- | ||
125 | |||
126 | The ADM1032 is the only chip of the family which supports PEC. It does | ||
127 | not support PEC on all transactions though, so some care must be taken. | ||
128 | |||
129 | When reading a register value, the PEC byte is computed and sent by the | ||
130 | ADM1032 chip. However, in the case of a combined transaction (SMBus Read | ||
131 | Byte), the ADM1032 computes the CRC value over only the second half of | ||
132 | the message rather than its entirety, because it thinks the first half | ||
133 | of the message belongs to a different transaction. As a result, the CRC | ||
134 | value differs from what the SMBus master expects, and all reads fail. | ||
135 | |||
136 | For this reason, the lm90 driver will enable PEC for the ADM1032 only if | ||
137 | the bus supports the SMBus Send Byte and Receive Byte transaction types. | ||
138 | These transactions will be used to read register values, instead of | ||
139 | SMBus Read Byte, and PEC will work properly. | ||
140 | |||
141 | Additionally, the ADM1032 doesn't support SMBus Send Byte with PEC. | ||
142 | Instead, it will try to write the PEC value to the register (because the | ||
143 | SMBus Send Byte transaction with PEC is similar to a Write Byte transaction | ||
144 | without PEC), which is not what we want. Thus, PEC is explicitely disabled | ||
145 | on SMBus Send Byte transactions in the lm90 driver. | ||
146 | |||
147 | PEC on byte data transactions represents a significant increase in bandwidth | ||
148 | usage (+33% for writes, +25% for reads) in normal conditions. With the need | ||
149 | to use two SMBus transaction for reads, this overhead jumps to +50%. Worse, | ||
150 | two transactions will typically mean twice as much delay waiting for | ||
151 | transaction completion, effectively doubling the register cache refresh time. | ||
152 | I guess reliability comes at a price, but it's quite expensive this time. | ||
153 | |||
154 | So, as not everyone might enjoy the slowdown, PEC can be disabled through | ||
155 | sysfs. Just write 0 to the "pec" file and PEC will be disabled. Write 1 | ||
156 | to that file to enable PEC again. | ||
diff --git a/Documentation/hwmon/smsc47b397 b/Documentation/hwmon/smsc47b397 index da9d80c96432..20682f15ae41 100644 --- a/Documentation/hwmon/smsc47b397 +++ b/Documentation/hwmon/smsc47b397 | |||
@@ -3,6 +3,7 @@ Kernel driver smsc47b397 | |||
3 | 3 | ||
4 | Supported chips: | 4 | Supported chips: |
5 | * SMSC LPC47B397-NC | 5 | * SMSC LPC47B397-NC |
6 | * SMSC SCH5307-NS | ||
6 | Prefix: 'smsc47b397' | 7 | Prefix: 'smsc47b397' |
7 | Addresses scanned: none, address read from Super I/O config space | 8 | Addresses scanned: none, address read from Super I/O config space |
8 | Datasheet: In this file | 9 | Datasheet: In this file |
@@ -12,11 +13,14 @@ Authors: Mark M. Hoffman <mhoffman@lightlink.com> | |||
12 | 13 | ||
13 | November 23, 2004 | 14 | November 23, 2004 |
14 | 15 | ||
15 | The following specification describes the SMSC LPC47B397-NC sensor chip | 16 | The following specification describes the SMSC LPC47B397-NC[1] sensor chip |
16 | (for which there is no public datasheet available). This document was | 17 | (for which there is no public datasheet available). This document was |
17 | provided by Craig Kelly (In-Store Broadcast Network) and edited/corrected | 18 | provided by Craig Kelly (In-Store Broadcast Network) and edited/corrected |
18 | by Mark M. Hoffman <mhoffman@lightlink.com>. | 19 | by Mark M. Hoffman <mhoffman@lightlink.com>. |
19 | 20 | ||
21 | [1] And SMSC SCH5307-NS, which has a different device ID but is otherwise | ||
22 | compatible. | ||
23 | |||
20 | * * * * * | 24 | * * * * * |
21 | 25 | ||
22 | Methods for detecting the HP SIO and reading the thermal data on a dc7100. | 26 | Methods for detecting the HP SIO and reading the thermal data on a dc7100. |
@@ -127,7 +131,7 @@ OUT DX,AL | |||
127 | The registers of interest for identifying the SIO on the dc7100 are Device ID | 131 | The registers of interest for identifying the SIO on the dc7100 are Device ID |
128 | (0x20) and Device Rev (0x21). | 132 | (0x20) and Device Rev (0x21). |
129 | 133 | ||
130 | The Device ID will read 0X6F | 134 | The Device ID will read 0x6F (for SCH5307-NS, 0x81) |
131 | The Device Rev currently reads 0x01 | 135 | The Device Rev currently reads 0x01 |
132 | 136 | ||
133 | Obtaining the HWM Base Address. | 137 | Obtaining the HWM Base Address. |
diff --git a/Documentation/hwmon/smsc47m1 b/Documentation/hwmon/smsc47m1 index 34e6478c1425..c15bbe68264e 100644 --- a/Documentation/hwmon/smsc47m1 +++ b/Documentation/hwmon/smsc47m1 | |||
@@ -12,6 +12,10 @@ Supported chips: | |||
12 | http://www.smsc.com/main/datasheets/47m14x.pdf | 12 | http://www.smsc.com/main/datasheets/47m14x.pdf |
13 | http://www.smsc.com/main/tools/discontinued/47m15x.pdf | 13 | http://www.smsc.com/main/tools/discontinued/47m15x.pdf |
14 | http://www.smsc.com/main/datasheets/47m192.pdf | 14 | http://www.smsc.com/main/datasheets/47m192.pdf |
15 | * SMSC LPC47M997 | ||
16 | Addresses scanned: none, address read from Super I/O config space | ||
17 | Prefix: 'smsc47m1' | ||
18 | Datasheet: none | ||
15 | 19 | ||
16 | Authors: | 20 | Authors: |
17 | Mark D. Studebaker <mdsxyz123@yahoo.com>, | 21 | Mark D. Studebaker <mdsxyz123@yahoo.com>, |
@@ -30,6 +34,9 @@ The 47M15x and 47M192 chips contain a full 'hardware monitoring block' | |||
30 | in addition to the fan monitoring and control. The hardware monitoring | 34 | in addition to the fan monitoring and control. The hardware monitoring |
31 | block is not supported by the driver. | 35 | block is not supported by the driver. |
32 | 36 | ||
37 | No documentation is available for the 47M997, but it has the same device | ||
38 | ID as the 47M15x and 47M192 chips and seems to be compatible. | ||
39 | |||
33 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is | 40 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is |
34 | triggered if the rotation speed has dropped below a programmable limit. Fan | 41 | triggered if the rotation speed has dropped below a programmable limit. Fan |
35 | readings can be divided by a programmable divider (1, 2, 4 or 8) to give | 42 | readings can be divided by a programmable divider (1, 2, 4 or 8) to give |
diff --git a/Documentation/hwmon/sysfs-interface b/Documentation/hwmon/sysfs-interface index 346400519d0d..764cdc5480e7 100644 --- a/Documentation/hwmon/sysfs-interface +++ b/Documentation/hwmon/sysfs-interface | |||
@@ -272,3 +272,6 @@ beep_mask Bitmask for beep. | |||
272 | 272 | ||
273 | eeprom Raw EEPROM data in binary form. | 273 | eeprom Raw EEPROM data in binary form. |
274 | Read only. | 274 | Read only. |
275 | |||
276 | pec Enable or disable PEC (SMBus only) | ||
277 | Read/Write | ||
diff --git a/Documentation/hwmon/via686a b/Documentation/hwmon/via686a index b82014cb7c53..a936fb3824b2 100644 --- a/Documentation/hwmon/via686a +++ b/Documentation/hwmon/via686a | |||
@@ -18,8 +18,9 @@ Authors: | |||
18 | Module Parameters | 18 | Module Parameters |
19 | ----------------- | 19 | ----------------- |
20 | 20 | ||
21 | force_addr=0xaddr Set the I/O base address. Useful for Asus A7V boards | 21 | force_addr=0xaddr Set the I/O base address. Useful for boards that |
22 | that don't set the address in the BIOS. Does not do a | 22 | don't set the address in the BIOS. Look for a BIOS |
23 | upgrade before resorting to this. Does not do a | ||
23 | PCI force; the via686a must still be present in lspci. | 24 | PCI force; the via686a must still be present in lspci. |
24 | Don't use this unless the driver complains that the | 25 | Don't use this unless the driver complains that the |
25 | base address is not set. | 26 | base address is not set. |
@@ -63,3 +64,15 @@ miss once-only alarms. | |||
63 | 64 | ||
64 | The driver only updates its values each 1.5 seconds; reading it more often | 65 | The driver only updates its values each 1.5 seconds; reading it more often |
65 | will do no harm, but will return 'old' values. | 66 | will do no harm, but will return 'old' values. |
67 | |||
68 | Known Issues | ||
69 | ------------ | ||
70 | |||
71 | This driver handles sensors integrated in some VIA south bridges. It is | ||
72 | possible that a motherboard maker used a VT82C686A/B chip as part of a | ||
73 | product design but was not interested in its hardware monitoring features, | ||
74 | in which case the sensor inputs will not be wired. This is the case of | ||
75 | the Asus K7V, A7V and A7V133 motherboards, to name only a few of them. | ||
76 | So, if you need the force_addr parameter, and end up with values which | ||
77 | don't seem to make any sense, don't look any further: your chip is simply | ||
78 | not wired for hardware monitoring. | ||
diff --git a/Documentation/i2c/busses/i2c-i810 b/Documentation/i2c/busses/i2c-i810 index 0544eb332887..83c3b9743c3c 100644 --- a/Documentation/i2c/busses/i2c-i810 +++ b/Documentation/i2c/busses/i2c-i810 | |||
@@ -2,6 +2,7 @@ Kernel driver i2c-i810 | |||
2 | 2 | ||
3 | Supported adapters: | 3 | Supported adapters: |
4 | * Intel 82810, 82810-DC100, 82810E, and 82815 (GMCH) | 4 | * Intel 82810, 82810-DC100, 82810E, and 82815 (GMCH) |
5 | * Intel 82845G (GMCH) | ||
5 | 6 | ||
6 | Authors: | 7 | Authors: |
7 | Frodo Looijaard <frodol@dds.nl>, | 8 | Frodo Looijaard <frodol@dds.nl>, |
diff --git a/Documentation/i2c/busses/i2c-viapro b/Documentation/i2c/busses/i2c-viapro index 702f5ac68c09..9363b8bd6109 100644 --- a/Documentation/i2c/busses/i2c-viapro +++ b/Documentation/i2c/busses/i2c-viapro | |||
@@ -4,17 +4,18 @@ Supported adapters: | |||
4 | * VIA Technologies, Inc. VT82C596A/B | 4 | * VIA Technologies, Inc. VT82C596A/B |
5 | Datasheet: Sometimes available at the VIA website | 5 | Datasheet: Sometimes available at the VIA website |
6 | 6 | ||
7 | * VIA Technologies, Inc. VT82C686A/B | 7 | * VIA Technologies, Inc. VT82C686A/B |
8 | Datasheet: Sometimes available at the VIA website | 8 | Datasheet: Sometimes available at the VIA website |
9 | 9 | ||
10 | * VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237 | 10 | * VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237 |
11 | Datasheet: available on request from Via | 11 | Datasheet: available on request from Via |
12 | 12 | ||
13 | Authors: | 13 | Authors: |
14 | Frodo Looijaard <frodol@dds.nl>, | 14 | Frodo Looijaard <frodol@dds.nl>, |
15 | Philip Edelbrock <phil@netroedge.com>, | 15 | Philip Edelbrock <phil@netroedge.com>, |
16 | Kyösti Mälkki <kmalkki@cc.hut.fi>, | 16 | Kyösti Mälkki <kmalkki@cc.hut.fi>, |
17 | Mark D. Studebaker <mdsxyz123@yahoo.com> | 17 | Mark D. Studebaker <mdsxyz123@yahoo.com>, |
18 | Jean Delvare <khali@linux-fr.org> | ||
18 | 19 | ||
19 | Module Parameters | 20 | Module Parameters |
20 | ----------------- | 21 | ----------------- |
@@ -28,20 +29,22 @@ Description | |||
28 | ----------- | 29 | ----------- |
29 | 30 | ||
30 | i2c-viapro is a true SMBus host driver for motherboards with one of the | 31 | i2c-viapro is a true SMBus host driver for motherboards with one of the |
31 | supported VIA southbridges. | 32 | supported VIA south bridges. |
32 | 33 | ||
33 | Your lspci -n listing must show one of these : | 34 | Your lspci -n listing must show one of these : |
34 | 35 | ||
35 | device 1106:3050 (VT82C596 function 3) | 36 | device 1106:3050 (VT82C596A function 3) |
36 | device 1106:3051 (VT82C596 function 3) | 37 | device 1106:3051 (VT82C596B function 3) |
37 | device 1106:3057 (VT82C686 function 4) | 38 | device 1106:3057 (VT82C686 function 4) |
38 | device 1106:3074 (VT8233) | 39 | device 1106:3074 (VT8233) |
39 | device 1106:3147 (VT8233A) | 40 | device 1106:3147 (VT8233A) |
40 | device 1106:8235 (VT8231) | 41 | device 1106:8235 (VT8231 function 4) |
41 | devide 1106:3177 (VT8235) | 42 | device 1106:3177 (VT8235) |
42 | devide 1106:3227 (VT8237) | 43 | device 1106:3227 (VT8237R) |
43 | 44 | ||
44 | If none of these show up, you should look in the BIOS for settings like | 45 | If none of these show up, you should look in the BIOS for settings like |
45 | enable ACPI / SMBus or even USB. | 46 | enable ACPI / SMBus or even USB. |
46 | 47 | ||
47 | 48 | Except for the oldest chips (VT82C596A/B, VT82C686A and most probably | |
49 | VT8231), this driver supports I2C block transactions. Such transactions | ||
50 | are mainly useful to read from and write to EEPROMs. | ||
diff --git a/Documentation/i2c/chips/x1205 b/Documentation/i2c/chips/x1205 new file mode 100644 index 000000000000..09407c991fe5 --- /dev/null +++ b/Documentation/i2c/chips/x1205 | |||
@@ -0,0 +1,38 @@ | |||
1 | Kernel driver x1205 | ||
2 | =================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Xicor X1205 RTC | ||
6 | Prefix: 'x1205' | ||
7 | Addresses scanned: none | ||
8 | Datasheet: http://www.intersil.com/cda/deviceinfo/0,1477,X1205,00.html | ||
9 | |||
10 | Authors: | ||
11 | Karen Spearel <kas11@tampabay.rr.com>, | ||
12 | Alessandro Zummo <a.zummo@towertech.it> | ||
13 | |||
14 | Description | ||
15 | ----------- | ||
16 | |||
17 | This module aims to provide complete access to the Xicor X1205 RTC. | ||
18 | Recently Xicor has merged with Intersil, but the chip is | ||
19 | still sold under the Xicor brand. | ||
20 | |||
21 | This chip is located at address 0x6f and uses a 2-byte register addressing. | ||
22 | Two bytes need to be written to read a single register, while most | ||
23 | other chips just require one and take the second one as the data | ||
24 | to be written. To prevent corrupting unknown chips, the user must | ||
25 | explicitely set the probe parameter. | ||
26 | |||
27 | example: | ||
28 | |||
29 | modprobe x1205 probe=0,0x6f | ||
30 | |||
31 | The module supports one more option, hctosys, which is used to set the | ||
32 | software clock from the x1205. On systems where the x1205 is the | ||
33 | only hardware rtc, this parameter could be used to achieve a correct | ||
34 | date/time earlier in the system boot sequence. | ||
35 | |||
36 | example: | ||
37 | |||
38 | modprobe x1205 probe=0,0x6f hctosys=1 | ||
diff --git a/Documentation/i2c/functionality b/Documentation/i2c/functionality index 41ffefbdc60c..60cca249e452 100644 --- a/Documentation/i2c/functionality +++ b/Documentation/i2c/functionality | |||
@@ -17,9 +17,10 @@ For the most up-to-date list of functionality constants, please check | |||
17 | I2C_FUNC_I2C Plain i2c-level commands (Pure SMBus | 17 | I2C_FUNC_I2C Plain i2c-level commands (Pure SMBus |
18 | adapters typically can not do these) | 18 | adapters typically can not do these) |
19 | I2C_FUNC_10BIT_ADDR Handles the 10-bit address extensions | 19 | I2C_FUNC_10BIT_ADDR Handles the 10-bit address extensions |
20 | I2C_FUNC_PROTOCOL_MANGLING Knows about the I2C_M_REV_DIR_ADDR, | 20 | I2C_FUNC_PROTOCOL_MANGLING Knows about the I2C_M_IGNORE_NAK, |
21 | I2C_M_REV_DIR_ADDR and I2C_M_REV_DIR_NOSTART | 21 | I2C_M_REV_DIR_ADDR, I2C_M_NOSTART and |
22 | flags (which modify the i2c protocol!) | 22 | I2C_M_NO_RD_ACK flags (which modify the |
23 | I2C protocol!) | ||
23 | I2C_FUNC_SMBUS_QUICK Handles the SMBus write_quick command | 24 | I2C_FUNC_SMBUS_QUICK Handles the SMBus write_quick command |
24 | I2C_FUNC_SMBUS_READ_BYTE Handles the SMBus read_byte command | 25 | I2C_FUNC_SMBUS_READ_BYTE Handles the SMBus read_byte command |
25 | I2C_FUNC_SMBUS_WRITE_BYTE Handles the SMBus write_byte command | 26 | I2C_FUNC_SMBUS_WRITE_BYTE Handles the SMBus write_byte command |
diff --git a/Documentation/i2c/porting-clients b/Documentation/i2c/porting-clients index 4849dfd6961c..184fac2377aa 100644 --- a/Documentation/i2c/porting-clients +++ b/Documentation/i2c/porting-clients | |||
@@ -82,7 +82,7 @@ Technical changes: | |||
82 | exit and exit_free. For i2c+isa drivers, labels should be named | 82 | exit and exit_free. For i2c+isa drivers, labels should be named |
83 | ERROR0, ERROR1 and ERROR2. Don't forget to properly set err before | 83 | ERROR0, ERROR1 and ERROR2. Don't forget to properly set err before |
84 | jumping to error labels. By the way, labels should be left-aligned. | 84 | jumping to error labels. By the way, labels should be left-aligned. |
85 | Use memset to fill the client and data area with 0x00. | 85 | Use kzalloc instead of kmalloc. |
86 | Use i2c_set_clientdata to set the client data (as opposed to | 86 | Use i2c_set_clientdata to set the client data (as opposed to |
87 | a direct access to client->data). | 87 | a direct access to client->data). |
88 | Use strlcpy instead of strcpy to copy the client name. | 88 | Use strlcpy instead of strcpy to copy the client name. |
diff --git a/Documentation/i2c/writing-clients b/Documentation/i2c/writing-clients index 077275722a7c..cff7b652588a 100644 --- a/Documentation/i2c/writing-clients +++ b/Documentation/i2c/writing-clients | |||
@@ -33,8 +33,8 @@ static struct i2c_driver foo_driver = { | |||
33 | .command = &foo_command /* may be NULL */ | 33 | .command = &foo_command /* may be NULL */ |
34 | } | 34 | } |
35 | 35 | ||
36 | The name can be chosen freely, and may be upto 40 characters long. Please | 36 | The name field must match the driver name, including the case. It must not |
37 | use something descriptive here. | 37 | contain spaces, and may be up to 31 characters long. |
38 | 38 | ||
39 | Don't worry about the flags field; just put I2C_DF_NOTIFY into it. This | 39 | Don't worry about the flags field; just put I2C_DF_NOTIFY into it. This |
40 | means that your driver will be notified when new adapters are found. | 40 | means that your driver will be notified when new adapters are found. |
@@ -43,9 +43,6 @@ This is almost always what you want. | |||
43 | All other fields are for call-back functions which will be explained | 43 | All other fields are for call-back functions which will be explained |
44 | below. | 44 | below. |
45 | 45 | ||
46 | There use to be two additional fields in this structure, inc_use et dec_use, | ||
47 | for module usage count, but these fields were obsoleted and removed. | ||
48 | |||
49 | 46 | ||
50 | Extra client data | 47 | Extra client data |
51 | ================= | 48 | ================= |
@@ -58,6 +55,7 @@ be very useful. | |||
58 | An example structure is below. | 55 | An example structure is below. |
59 | 56 | ||
60 | struct foo_data { | 57 | struct foo_data { |
58 | struct i2c_client client; | ||
61 | struct semaphore lock; /* For ISA access in `sensors' drivers. */ | 59 | struct semaphore lock; /* For ISA access in `sensors' drivers. */ |
62 | int sysctl_id; /* To keep the /proc directory entry for | 60 | int sysctl_id; /* To keep the /proc directory entry for |
63 | `sensors' drivers. */ | 61 | `sensors' drivers. */ |
@@ -275,6 +273,7 @@ For now, you can ignore the `flags' parameter. It is there for future use. | |||
275 | if (is_isa) { | 273 | if (is_isa) { |
276 | 274 | ||
277 | /* Discard immediately if this ISA range is already used */ | 275 | /* Discard immediately if this ISA range is already used */ |
276 | /* FIXME: never use check_region(), only request_region() */ | ||
278 | if (check_region(address,FOO_EXTENT)) | 277 | if (check_region(address,FOO_EXTENT)) |
279 | goto ERROR0; | 278 | goto ERROR0; |
280 | 279 | ||
@@ -310,22 +309,15 @@ For now, you can ignore the `flags' parameter. It is there for future use. | |||
310 | client structure, even though we cannot fill it completely yet. | 309 | client structure, even though we cannot fill it completely yet. |
311 | But it allows us to access several i2c functions safely */ | 310 | But it allows us to access several i2c functions safely */ |
312 | 311 | ||
313 | /* Note that we reserve some space for foo_data too. If you don't | 312 | if (!(data = kzalloc(sizeof(struct foo_data), GFP_KERNEL))) { |
314 | need it, remove it. We do it here to help to lessen memory | ||
315 | fragmentation. */ | ||
316 | if (! (new_client = kmalloc(sizeof(struct i2c_client) + | ||
317 | sizeof(struct foo_data), | ||
318 | GFP_KERNEL))) { | ||
319 | err = -ENOMEM; | 313 | err = -ENOMEM; |
320 | goto ERROR0; | 314 | goto ERROR0; |
321 | } | 315 | } |
322 | 316 | ||
323 | /* This is tricky, but it will set the data to the right value. */ | 317 | new_client = &data->client; |
324 | client->data = new_client + 1; | 318 | i2c_set_clientdata(new_client, data); |
325 | data = (struct foo_data *) (client->data); | ||
326 | 319 | ||
327 | new_client->addr = address; | 320 | new_client->addr = address; |
328 | new_client->data = data; | ||
329 | new_client->adapter = adapter; | 321 | new_client->adapter = adapter; |
330 | new_client->driver = &foo_driver; | 322 | new_client->driver = &foo_driver; |
331 | new_client->flags = 0; | 323 | new_client->flags = 0; |
@@ -451,7 +443,7 @@ much simpler than the attachment code, fortunately! | |||
451 | release_region(client->addr,LM78_EXTENT); | 443 | release_region(client->addr,LM78_EXTENT); |
452 | /* HYBRID SENSORS CHIP ONLY END */ | 444 | /* HYBRID SENSORS CHIP ONLY END */ |
453 | 445 | ||
454 | kfree(client); /* Frees client data too, if allocated at the same time */ | 446 | kfree(data); |
455 | return 0; | 447 | return 0; |
456 | } | 448 | } |
457 | 449 | ||
@@ -576,12 +568,12 @@ SMBus communication | |||
576 | extern s32 i2c_smbus_write_block_data(struct i2c_client * client, | 568 | extern s32 i2c_smbus_write_block_data(struct i2c_client * client, |
577 | u8 command, u8 length, | 569 | u8 command, u8 length, |
578 | u8 *values); | 570 | u8 *values); |
571 | extern s32 i2c_smbus_read_i2c_block_data(struct i2c_client * client, | ||
572 | u8 command, u8 *values); | ||
579 | 573 | ||
580 | These ones were removed in Linux 2.6.10 because they had no users, but could | 574 | These ones were removed in Linux 2.6.10 because they had no users, but could |
581 | be added back later if needed: | 575 | be added back later if needed: |
582 | 576 | ||
583 | extern s32 i2c_smbus_read_i2c_block_data(struct i2c_client * client, | ||
584 | u8 command, u8 *values); | ||
585 | extern s32 i2c_smbus_read_block_data(struct i2c_client * client, | 577 | extern s32 i2c_smbus_read_block_data(struct i2c_client * client, |
586 | u8 command, u8 *values); | 578 | u8 command, u8 *values); |
587 | extern s32 i2c_smbus_write_i2c_block_data(struct i2c_client * client, | 579 | extern s32 i2c_smbus_write_i2c_block_data(struct i2c_client * client, |
diff --git a/Documentation/input/yealink.txt b/Documentation/input/yealink.txt index 85f095a7ad04..0962c5c948be 100644 --- a/Documentation/input/yealink.txt +++ b/Documentation/input/yealink.txt | |||
@@ -2,7 +2,6 @@ Driver documentation for yealink usb-p1k phones | |||
2 | 2 | ||
3 | 0. Status | 3 | 0. Status |
4 | ~~~~~~~~~ | 4 | ~~~~~~~~~ |
5 | |||
6 | The p1k is a relatively cheap usb 1.1 phone with: | 5 | The p1k is a relatively cheap usb 1.1 phone with: |
7 | - keyboard full support, yealink.ko / input event API | 6 | - keyboard full support, yealink.ko / input event API |
8 | - LCD full support, yealink.ko / sysfs API | 7 | - LCD full support, yealink.ko / sysfs API |
@@ -17,9 +16,8 @@ For vendor documentation see http://www.yealink.com | |||
17 | 16 | ||
18 | 1. Compilation (stand alone version) | 17 | 1. Compilation (stand alone version) |
19 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 18 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
20 | |||
21 | Currently only kernel 2.6.x.y versions are supported. | 19 | Currently only kernel 2.6.x.y versions are supported. |
22 | In order to build the yealink.ko module do: | 20 | In order to build the yealink.ko module do |
23 | 21 | ||
24 | make | 22 | make |
25 | 23 | ||
@@ -28,6 +26,21 @@ the Makefile is pointing to the location where your kernel sources | |||
28 | are located, default /usr/src/linux. | 26 | are located, default /usr/src/linux. |
29 | 27 | ||
30 | 28 | ||
29 | 1.1 Troubleshooting | ||
30 | ~~~~~~~~~~~~~~~~~~~ | ||
31 | Q: Module yealink compiled and installed without any problem but phone | ||
32 | is not initialized and does not react to any actions. | ||
33 | A: If you see something like: | ||
34 | hiddev0: USB HID v1.00 Device [Yealink Network Technology Ltd. VOIP USB Phone | ||
35 | in dmesg, it means that the hid driver has grabbed the device first. Try to | ||
36 | load module yealink before any other usb hid driver. Please see the | ||
37 | instructions provided by your distribution on module configuration. | ||
38 | |||
39 | Q: Phone is working now (displays version and accepts keypad input) but I can't | ||
40 | find the sysfs files. | ||
41 | A: The sysfs files are located on the particular usb endpoint. On most | ||
42 | distributions you can do: "find /sys/ -name get_icons" for a hint. | ||
43 | |||
31 | 44 | ||
32 | 2. keyboard features | 45 | 2. keyboard features |
33 | ~~~~~~~~~~~~~~~~~~~~ | 46 | ~~~~~~~~~~~~~~~~~~~~ |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 971589a9752d..5dffcfefc3c7 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -1460,8 +1460,6 @@ running once the system is up. | |||
1460 | stifb= [HW] | 1460 | stifb= [HW] |
1461 | Format: bpp:<bpp1>[:<bpp2>[:<bpp3>...]] | 1461 | Format: bpp:<bpp1>[:<bpp2>[:<bpp3>...]] |
1462 | 1462 | ||
1463 | stram_swap= [HW,M68k] | ||
1464 | |||
1465 | swiotlb= [IA-64] Number of I/O TLB slabs | 1463 | swiotlb= [IA-64] Number of I/O TLB slabs |
1466 | 1464 | ||
1467 | switches= [HW,M68k] | 1465 | switches= [HW,M68k] |
@@ -1517,8 +1515,6 @@ running once the system is up. | |||
1517 | uart6850= [HW,OSS] | 1515 | uart6850= [HW,OSS] |
1518 | Format: <io>,<irq> | 1516 | Format: <io>,<irq> |
1519 | 1517 | ||
1520 | usb-handoff [HW] Enable early USB BIOS -> OS handoff | ||
1521 | |||
1522 | usbhid.mousepoll= | 1518 | usbhid.mousepoll= |
1523 | [USBHID] The interval which mice are to be polled at. | 1519 | [USBHID] The interval which mice are to be polled at. |
1524 | 1520 | ||
diff --git a/Documentation/keys.txt b/Documentation/keys.txt index 4afe03a58c5b..31154882000a 100644 --- a/Documentation/keys.txt +++ b/Documentation/keys.txt | |||
@@ -196,7 +196,7 @@ KEY ACCESS PERMISSIONS | |||
196 | 196 | ||
197 | Keys have an owner user ID, a group access ID, and a permissions mask. The mask | 197 | Keys have an owner user ID, a group access ID, and a permissions mask. The mask |
198 | has up to eight bits each for possessor, user, group and other access. Only | 198 | has up to eight bits each for possessor, user, group and other access. Only |
199 | five of each set of eight bits are defined. These permissions granted are: | 199 | six of each set of eight bits are defined. These permissions granted are: |
200 | 200 | ||
201 | (*) View | 201 | (*) View |
202 | 202 | ||
@@ -224,6 +224,10 @@ five of each set of eight bits are defined. These permissions granted are: | |||
224 | keyring to a key, a process must have Write permission on the keyring and | 224 | keyring to a key, a process must have Write permission on the keyring and |
225 | Link permission on the key. | 225 | Link permission on the key. |
226 | 226 | ||
227 | (*) Set Attribute | ||
228 | |||
229 | This permits a key's UID, GID and permissions mask to be changed. | ||
230 | |||
227 | For changing the ownership, group ID or permissions mask, being the owner of | 231 | For changing the ownership, group ID or permissions mask, being the owner of |
228 | the key or having the sysadmin capability is sufficient. | 232 | the key or having the sysadmin capability is sufficient. |
229 | 233 | ||
@@ -242,15 +246,15 @@ about the status of the key service: | |||
242 | this way: | 246 | this way: |
243 | 247 | ||
244 | SERIAL FLAGS USAGE EXPY PERM UID GID TYPE DESCRIPTION: SUMMARY | 248 | SERIAL FLAGS USAGE EXPY PERM UID GID TYPE DESCRIPTION: SUMMARY |
245 | 00000001 I----- 39 perm 1f1f0000 0 0 keyring _uid_ses.0: 1/4 | 249 | 00000001 I----- 39 perm 1f3f0000 0 0 keyring _uid_ses.0: 1/4 |
246 | 00000002 I----- 2 perm 1f1f0000 0 0 keyring _uid.0: empty | 250 | 00000002 I----- 2 perm 1f3f0000 0 0 keyring _uid.0: empty |
247 | 00000007 I----- 1 perm 1f1f0000 0 0 keyring _pid.1: empty | 251 | 00000007 I----- 1 perm 1f3f0000 0 0 keyring _pid.1: empty |
248 | 0000018d I----- 1 perm 1f1f0000 0 0 keyring _pid.412: empty | 252 | 0000018d I----- 1 perm 1f3f0000 0 0 keyring _pid.412: empty |
249 | 000004d2 I--Q-- 1 perm 1f1f0000 32 -1 keyring _uid.32: 1/4 | 253 | 000004d2 I--Q-- 1 perm 1f3f0000 32 -1 keyring _uid.32: 1/4 |
250 | 000004d3 I--Q-- 3 perm 1f1f0000 32 -1 keyring _uid_ses.32: empty | 254 | 000004d3 I--Q-- 3 perm 1f3f0000 32 -1 keyring _uid_ses.32: empty |
251 | 00000892 I--QU- 1 perm 1f000000 0 0 user metal:copper: 0 | 255 | 00000892 I--QU- 1 perm 1f000000 0 0 user metal:copper: 0 |
252 | 00000893 I--Q-N 1 35s 1f1f0000 0 0 user metal:silver: 0 | 256 | 00000893 I--Q-N 1 35s 1f3f0000 0 0 user metal:silver: 0 |
253 | 00000894 I--Q-- 1 10h 001f0000 0 0 user metal:gold: 0 | 257 | 00000894 I--Q-- 1 10h 003f0000 0 0 user metal:gold: 0 |
254 | 258 | ||
255 | The flags are: | 259 | The flags are: |
256 | 260 | ||
diff --git a/Documentation/m68k/kernel-options.txt b/Documentation/m68k/kernel-options.txt index e191baad8308..d5d3f064f552 100644 --- a/Documentation/m68k/kernel-options.txt +++ b/Documentation/m68k/kernel-options.txt | |||
@@ -626,7 +626,7 @@ ignored (others aren't affected). | |||
626 | can be performed in optimal order. Not all SCSI devices support | 626 | can be performed in optimal order. Not all SCSI devices support |
627 | tagged queuing (:-(). | 627 | tagged queuing (:-(). |
628 | 628 | ||
629 | 4.6 switches= | 629 | 4.5 switches= |
630 | ------------- | 630 | ------------- |
631 | 631 | ||
632 | Syntax: switches=<list of switches> | 632 | Syntax: switches=<list of switches> |
@@ -661,28 +661,6 @@ correctly. | |||
661 | earlier initialization ("ov_"-less) takes precedence. But the | 661 | earlier initialization ("ov_"-less) takes precedence. But the |
662 | switching-off on reset still happens in this case. | 662 | switching-off on reset still happens in this case. |
663 | 663 | ||
664 | 4.5) stram_swap= | ||
665 | ---------------- | ||
666 | |||
667 | Syntax: stram_swap=<do_swap>[,<max_swap>] | ||
668 | |||
669 | This option is available only if the kernel has been compiled with | ||
670 | CONFIG_STRAM_SWAP enabled. Normally, the kernel then determines | ||
671 | dynamically whether to actually use ST-RAM as swap space. (Currently, | ||
672 | the fraction of ST-RAM must be less or equal 1/3 of total memory to | ||
673 | enable this swapping.) You can override the kernel's decision by | ||
674 | specifying this option. 1 for <do_swap> means always enable the swap, | ||
675 | even if you have less alternate RAM. 0 stands for never swap to | ||
676 | ST-RAM, even if it's small enough compared to the rest of memory. | ||
677 | |||
678 | If ST-RAM swapping is enabled, the kernel usually uses all free | ||
679 | ST-RAM as swap "device". If the kernel resides in ST-RAM, the region | ||
680 | allocated by it is obviously never used for swapping :-) You can also | ||
681 | limit this amount by specifying the second parameter, <max_swap>, if | ||
682 | you want to use parts of ST-RAM as normal system memory. <max_swap> is | ||
683 | in kBytes and the number should be a multiple of 4 (otherwise: rounded | ||
684 | down). | ||
685 | |||
686 | 5) Options for Amiga Only: | 664 | 5) Options for Amiga Only: |
687 | ========================== | 665 | ========================== |
688 | 666 | ||
diff --git a/Documentation/mips/AU1xxx_IDE.README b/Documentation/mips/AU1xxx_IDE.README new file mode 100644 index 000000000000..a7e4c4ea3560 --- /dev/null +++ b/Documentation/mips/AU1xxx_IDE.README | |||
@@ -0,0 +1,168 @@ | |||
1 | README for MIPS AU1XXX IDE driver - Released 2005-07-15 | ||
2 | |||
3 | ABOUT | ||
4 | ----- | ||
5 | This file describes the 'drivers/ide/mips/au1xxx-ide.c', related files and the | ||
6 | services they provide. | ||
7 | |||
8 | If you are short in patience and just want to know how to add your hard disc to | ||
9 | the white or black list, go to the 'ADD NEW HARD DISC TO WHITE OR BLACK LIST' | ||
10 | section. | ||
11 | |||
12 | |||
13 | LICENSE | ||
14 | ------- | ||
15 | |||
16 | Copyright (c) 2003-2005 AMD, Personal Connectivity Solutions | ||
17 | |||
18 | This program is free software; you can redistribute it and/or modify it under | ||
19 | the terms of the GNU General Public License as published by the Free Software | ||
20 | Foundation; either version 2 of the License, or (at your option) any later | ||
21 | version. | ||
22 | |||
23 | THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, | ||
24 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | ||
25 | FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR | ||
26 | BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
27 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
28 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
29 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
30 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
31 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
32 | POSSIBILITY OF SUCH DAMAGE. | ||
33 | |||
34 | You should have received a copy of the GNU General Public License along with | ||
35 | this program; if not, write to the Free Software Foundation, Inc., | ||
36 | 675 Mass Ave, Cambridge, MA 02139, USA. | ||
37 | |||
38 | Note: for more information, please refer "AMD Alchemy Au1200/Au1550 IDE | ||
39 | Interface and Linux Device Driver" Application Note. | ||
40 | |||
41 | |||
42 | FILES, CONFIGS AND COMPATABILITY | ||
43 | -------------------------------- | ||
44 | |||
45 | Two files are introduced: | ||
46 | |||
47 | a) 'include/asm-mips/mach-au1x00/au1xxx_ide.h' | ||
48 | containes : struct _auide_hwif | ||
49 | struct drive_list_entry dma_white_list | ||
50 | struct drive_list_entry dma_black_list | ||
51 | timing parameters for PIO mode 0/1/2/3/4 | ||
52 | timing parameters for MWDMA 0/1/2 | ||
53 | |||
54 | b) 'drivers/ide/mips/au1xxx-ide.c' | ||
55 | contains the functionality of the AU1XXX IDE driver | ||
56 | |||
57 | Four configs variables are introduced: | ||
58 | |||
59 | CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA - enable the PIO+DBDMA mode | ||
60 | CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA - enable the MWDMA mode | ||
61 | CONFIG_BLK_DEV_IDE_AU1XXX_BURSTABLE_ON - set Burstable FIFO in DBDMA | ||
62 | controler | ||
63 | CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ - maximum transfer size | ||
64 | per descriptor | ||
65 | |||
66 | If MWDMA is enabled and the connected hard disc is not on the white list, the | ||
67 | kernel switches to a "safe mwdma mode" at boot time. In this mode the IDE | ||
68 | performance is substantial slower then in full speed mwdma. In this case | ||
69 | please add your hard disc to the white list (follow instruction from 'ADD NEW | ||
70 | HARD DISC TO WHITE OR BLACK LIST' section). | ||
71 | |||
72 | |||
73 | SUPPORTED IDE MODES | ||
74 | ------------------- | ||
75 | |||
76 | The AU1XXX IDE driver supported all PIO modes - PIO mode 0/1/2/3/4 - and all | ||
77 | MWDMA modes - MWDMA 0/1/2 -. There is no support for SWDMA and UDMA mode. | ||
78 | |||
79 | To change the PIO mode use the program hdparm with option -p, e.g. | ||
80 | 'hdparm -p0 [device]' for PIO mode 0. To enable the MWDMA mode use the option | ||
81 | -X, e.g. 'hdparm -X32 [device]' for MWDMA mode 0. | ||
82 | |||
83 | |||
84 | PERFORMANCE CONFIGURATIONS | ||
85 | -------------------------- | ||
86 | |||
87 | If the used system doesn't need USB support enable the following kernel configs: | ||
88 | |||
89 | CONFIG_IDE=y | ||
90 | CONFIG_BLK_DEV_IDE=y | ||
91 | CONFIG_IDE_GENERIC=y | ||
92 | CONFIG_BLK_DEV_IDEPCI=y | ||
93 | CONFIG_BLK_DEV_GENERIC=y | ||
94 | CONFIG_BLK_DEV_IDEDMA_PCI=y | ||
95 | CONFIG_IDEDMA_PCI_AUTO=y | ||
96 | CONFIG_BLK_DEV_IDE_AU1XXX=y | ||
97 | CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA=y | ||
98 | CONFIG_BLK_DEV_IDE_AU1XXX_BURSTABLE_ON=y | ||
99 | CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ=128 | ||
100 | CONFIG_BLK_DEV_IDEDMA=y | ||
101 | CONFIG_IDEDMA_AUTO=y | ||
102 | |||
103 | If the used system need the USB support enable the following kernel configs for | ||
104 | high IDE to USB throughput. | ||
105 | |||
106 | CONFIG_BLK_DEV_IDEDISK=y | ||
107 | CONFIG_IDE_GENERIC=y | ||
108 | CONFIG_BLK_DEV_IDEPCI=y | ||
109 | CONFIG_BLK_DEV_GENERIC=y | ||
110 | CONFIG_BLK_DEV_IDEDMA_PCI=y | ||
111 | CONFIG_IDEDMA_PCI_AUTO=y | ||
112 | CONFIG_BLK_DEV_IDE_AU1XXX=y | ||
113 | CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA=y | ||
114 | CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ=128 | ||
115 | CONFIG_BLK_DEV_IDEDMA=y | ||
116 | CONFIG_IDEDMA_AUTO=y | ||
117 | |||
118 | |||
119 | ADD NEW HARD DISC TO WHITE OR BLACK LIST | ||
120 | ---------------------------------------- | ||
121 | |||
122 | Step 1 : detect the model name of your hard disc | ||
123 | |||
124 | a) connect your hard disc to the AU1XXX | ||
125 | |||
126 | b) boot your kernel and get the hard disc model. | ||
127 | |||
128 | Example boot log: | ||
129 | |||
130 | --snipped-- | ||
131 | Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2 | ||
132 | ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx | ||
133 | Au1xxx IDE(builtin) configured for MWDMA2 | ||
134 | Probing IDE interface ide0... | ||
135 | hda: Maxtor 6E040L0, ATA DISK drive | ||
136 | ide0 at 0xac800000-0xac800007,0xac8001c0 on irq 64 | ||
137 | hda: max request size: 64KiB | ||
138 | hda: 80293248 sectors (41110 MB) w/2048KiB Cache, CHS=65535/16/63, (U)DMA | ||
139 | --snipped-- | ||
140 | |||
141 | In this example 'Maxtor 6E040L0'. | ||
142 | |||
143 | Step 2 : edit 'include/asm-mips/mach-au1x00/au1xxx_ide.h' | ||
144 | |||
145 | Add your hard disc to the dma_white_list or dma_black_list structur. | ||
146 | |||
147 | Step 3 : Recompile the kernel | ||
148 | |||
149 | Enable MWDMA support in the kernel configuration. Recompile the kernel and | ||
150 | reboot. | ||
151 | |||
152 | Step 4 : Tests | ||
153 | |||
154 | If you have add a hard disc to the white list, please run some stress tests | ||
155 | for verification. | ||
156 | |||
157 | |||
158 | ACKNOWLEDGMENTS | ||
159 | --------------- | ||
160 | |||
161 | These drivers wouldn't have been done without the base of kernel 2.4.x AU1XXX | ||
162 | IDE driver from AMD. | ||
163 | |||
164 | Additional input also from: | ||
165 | Matthias Lenk <matthias.lenk@amd.com> | ||
166 | |||
167 | Happy hacking! | ||
168 | Enrico Walther <enrico.walther@amd.com> | ||
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index b433c8a27e2d..65895bb51414 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -309,7 +309,7 @@ tcp_tso_win_divisor - INTEGER | |||
309 | can be consumed by a single TSO frame. | 309 | can be consumed by a single TSO frame. |
310 | The setting of this parameter is a choice between burstiness and | 310 | The setting of this parameter is a choice between burstiness and |
311 | building larger TSO frames. | 311 | building larger TSO frames. |
312 | Default: 8 | 312 | Default: 3 |
313 | 313 | ||
314 | tcp_frto - BOOLEAN | 314 | tcp_frto - BOOLEAN |
315 | Enables F-RTO, an enhanced recovery algorithm for TCP retransmission | 315 | Enables F-RTO, an enhanced recovery algorithm for TCP retransmission |
diff --git a/Documentation/serial/driver b/Documentation/serial/driver index 87856d3cfb67..42ef9970bc86 100644 --- a/Documentation/serial/driver +++ b/Documentation/serial/driver | |||
@@ -116,12 +116,15 @@ hardware. | |||
116 | line becoming inactive or the tty layer indicating we want | 116 | line becoming inactive or the tty layer indicating we want |
117 | to stop transmission due to an XOFF character. | 117 | to stop transmission due to an XOFF character. |
118 | 118 | ||
119 | The driver should stop transmitting characters as soon as | ||
120 | possible. | ||
121 | |||
119 | Locking: port->lock taken. | 122 | Locking: port->lock taken. |
120 | Interrupts: locally disabled. | 123 | Interrupts: locally disabled. |
121 | This call must not sleep | 124 | This call must not sleep |
122 | 125 | ||
123 | start_tx(port) | 126 | start_tx(port) |
124 | start transmitting characters. | 127 | Start transmitting characters. |
125 | 128 | ||
126 | Locking: port->lock taken. | 129 | Locking: port->lock taken. |
127 | Interrupts: locally disabled. | 130 | Interrupts: locally disabled. |
@@ -281,26 +284,31 @@ hardware. | |||
281 | Other functions | 284 | Other functions |
282 | --------------- | 285 | --------------- |
283 | 286 | ||
284 | uart_update_timeout(port,cflag,quot) | 287 | uart_update_timeout(port,cflag,baud) |
285 | Update the FIFO drain timeout, port->timeout, according to the | 288 | Update the FIFO drain timeout, port->timeout, according to the |
286 | number of bits, parity, stop bits and quotient. | 289 | number of bits, parity, stop bits and baud rate. |
287 | 290 | ||
288 | Locking: caller is expected to take port->lock | 291 | Locking: caller is expected to take port->lock |
289 | Interrupts: n/a | 292 | Interrupts: n/a |
290 | 293 | ||
291 | uart_get_baud_rate(port,termios) | 294 | uart_get_baud_rate(port,termios,old,min,max) |
292 | Return the numeric baud rate for the specified termios, taking | 295 | Return the numeric baud rate for the specified termios, taking |
293 | account of the special 38400 baud "kludge". The B0 baud rate | 296 | account of the special 38400 baud "kludge". The B0 baud rate |
294 | is mapped to 9600 baud. | 297 | is mapped to 9600 baud. |
295 | 298 | ||
299 | If the baud rate is not within min..max, then if old is non-NULL, | ||
300 | the original baud rate will be tried. If that exceeds the | ||
301 | min..max constraint, 9600 baud will be returned. termios will | ||
302 | be updated to the baud rate in use. | ||
303 | |||
304 | Note: min..max must always allow 9600 baud to be selected. | ||
305 | |||
296 | Locking: caller dependent. | 306 | Locking: caller dependent. |
297 | Interrupts: n/a | 307 | Interrupts: n/a |
298 | 308 | ||
299 | uart_get_divisor(port,termios,oldtermios) | 309 | uart_get_divisor(port,baud) |
300 | Return the divsor (baud_base / baud) for the selected baud rate | 310 | Return the divsor (baud_base / baud) for the specified baud |
301 | specified by termios. If the baud rate is out of range, try | 311 | rate, appropriately rounded. |
302 | the original baud rate specified by oldtermios (if non-NULL). | ||
303 | If that fails, try 9600 baud. | ||
304 | 312 | ||
305 | If 38400 baud and custom divisor is selected, return the | 313 | If 38400 baud and custom divisor is selected, return the |
306 | custom divisor instead. | 314 | custom divisor instead. |
@@ -308,6 +316,46 @@ uart_get_divisor(port,termios,oldtermios) | |||
308 | Locking: caller dependent. | 316 | Locking: caller dependent. |
309 | Interrupts: n/a | 317 | Interrupts: n/a |
310 | 318 | ||
319 | uart_match_port(port1,port2) | ||
320 | This utility function can be used to determine whether two | ||
321 | uart_port structures describe the same port. | ||
322 | |||
323 | Locking: n/a | ||
324 | Interrupts: n/a | ||
325 | |||
326 | uart_write_wakeup(port) | ||
327 | A driver is expected to call this function when the number of | ||
328 | characters in the transmit buffer have dropped below a threshold. | ||
329 | |||
330 | Locking: port->lock should be held. | ||
331 | Interrupts: n/a | ||
332 | |||
333 | uart_register_driver(drv) | ||
334 | Register a uart driver with the core driver. We in turn register | ||
335 | with the tty layer, and initialise the core driver per-port state. | ||
336 | |||
337 | drv->port should be NULL, and the per-port structures should be | ||
338 | registered using uart_add_one_port after this call has succeeded. | ||
339 | |||
340 | Locking: none | ||
341 | Interrupts: enabled | ||
342 | |||
343 | uart_unregister_driver() | ||
344 | Remove all references to a driver from the core driver. The low | ||
345 | level driver must have removed all its ports via the | ||
346 | uart_remove_one_port() if it registered them with uart_add_one_port(). | ||
347 | |||
348 | Locking: none | ||
349 | Interrupts: enabled | ||
350 | |||
351 | uart_suspend_port() | ||
352 | |||
353 | uart_resume_port() | ||
354 | |||
355 | uart_add_one_port() | ||
356 | |||
357 | uart_remove_one_port() | ||
358 | |||
311 | Other notes | 359 | Other notes |
312 | ----------- | 360 | ----------- |
313 | 361 | ||