aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@pretzel.yyz.us>2005-06-22 21:50:57 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-06-22 21:50:57 -0400
commita5324343955997d1439f26518ddac567cd5d134b (patch)
treef43558389c41e3a0f076c4ee55d77c4aa1561779 /Documentation
parent8199d3a79c224bbe5943fa08684e1f93a17881b0 (diff)
parenta4936044001694f033fe4ea94d6034d51a6b465c (diff)
Merge /spare/repo/linux-2.6/
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/DocBook/Makefile2
-rw-r--r--Documentation/DocBook/kernel-api.tmpl1
-rw-r--r--Documentation/DocBook/libata.tmpl156
-rw-r--r--Documentation/DocBook/scsidrivers.tmpl193
-rw-r--r--Documentation/SubmittingPatches8
-rw-r--r--Documentation/cpu-freq/cpufreq-stats.txt128
-rw-r--r--Documentation/cpusets.txt3
-rw-r--r--Documentation/driver-model/device.txt8
-rw-r--r--Documentation/driver-model/driver.txt51
-rw-r--r--Documentation/dvb/README.flexcop205
-rw-r--r--Documentation/dvb/bt8xx.txt69
-rw-r--r--Documentation/dvb/ci.txt219
-rw-r--r--Documentation/dvb/get_dvb_firmware4
-rw-r--r--Documentation/fb/intelfb.txt135
-rw-r--r--Documentation/feature-removal-schedule.txt30
-rw-r--r--Documentation/filesystems/isofs.txt6
-rw-r--r--Documentation/filesystems/sysfs-pci.txt6
-rw-r--r--Documentation/filesystems/sysfs.txt2
-rw-r--r--Documentation/filesystems/tmpfs.txt6
-rw-r--r--Documentation/i2c/busses/i2c-sis69x2
-rw-r--r--Documentation/i2c/chips/adm1021111
-rw-r--r--Documentation/i2c/chips/adm102551
-rw-r--r--Documentation/i2c/chips/adm102693
-rw-r--r--Documentation/i2c/chips/adm103135
-rw-r--r--Documentation/i2c/chips/adm9240177
-rw-r--r--Documentation/i2c/chips/asb10072
-rw-r--r--Documentation/i2c/chips/ds1621108
-rw-r--r--Documentation/i2c/chips/eeprom96
-rw-r--r--Documentation/i2c/chips/fscher169
-rw-r--r--Documentation/i2c/chips/gl518sm74
-rw-r--r--Documentation/i2c/chips/it8796
-rw-r--r--Documentation/i2c/chips/lm6357
-rw-r--r--Documentation/i2c/chips/lm7565
-rw-r--r--Documentation/i2c/chips/lm7722
-rw-r--r--Documentation/i2c/chips/lm7882
-rw-r--r--Documentation/i2c/chips/lm8056
-rw-r--r--Documentation/i2c/chips/lm8376
-rw-r--r--Documentation/i2c/chips/lm85221
-rw-r--r--Documentation/i2c/chips/lm8773
-rw-r--r--Documentation/i2c/chips/lm90121
-rw-r--r--Documentation/i2c/chips/lm9237
-rw-r--r--Documentation/i2c/chips/max161929
-rw-r--r--Documentation/i2c/chips/max687554
-rw-r--r--Documentation/i2c/chips/pc87360189
-rw-r--r--Documentation/i2c/chips/pca953947
-rw-r--r--Documentation/i2c/chips/pcf857469
-rw-r--r--Documentation/i2c/chips/pcf859190
-rw-r--r--Documentation/i2c/chips/sis5595106
-rw-r--r--Documentation/i2c/chips/smsc47b397 (renamed from Documentation/i2c/chips/smsc47b397.txt)46
-rw-r--r--Documentation/i2c/chips/smsc47m152
-rw-r--r--Documentation/i2c/chips/via686a65
-rw-r--r--Documentation/i2c/chips/w83627hf66
-rw-r--r--Documentation/i2c/chips/w83781d402
-rw-r--r--Documentation/i2c/chips/w83l785ts39
-rw-r--r--Documentation/i2c/porting-clients2
-rw-r--r--Documentation/i2c/userspace-tools39
-rw-r--r--Documentation/i2c/writing-clients62
-rw-r--r--Documentation/networking/generic-hdlc.txt51
-rw-r--r--Documentation/networking/multicast.txt1
-rw-r--r--Documentation/networking/net-modules.txt3
-rw-r--r--Documentation/networking/vortex.txt2
-rw-r--r--Documentation/power/devices.txt21
-rw-r--r--Documentation/powerpc/hvcs.txt4
-rw-r--r--Documentation/s390/CommonIO16
-rw-r--r--Documentation/scsi/ChangeLog.megaraid66
-rw-r--r--Documentation/scsi/scsi-changer.txt180
-rw-r--r--Documentation/scsi/scsi_mid_low_api.txt12
-rw-r--r--Documentation/sgi-ioc4.txt45
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt127
-rw-r--r--Documentation/sound/alsa/CMIPCI.txt41
-rw-r--r--Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl6
-rw-r--r--Documentation/sound/alsa/emu10k1-jack.txt74
-rw-r--r--Documentation/sound/alsa/hdspm.txt362
-rw-r--r--Documentation/w1/w1.generic107
-rw-r--r--Documentation/x86_64/boot-options.txt3
75 files changed, 5102 insertions, 502 deletions
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index e69b3d2e7884..87da3478fada 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -8,7 +8,7 @@
8 8
9DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \ 9DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
10 kernel-hacking.xml kernel-locking.xml deviceiobook.xml \ 10 kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
11 procfs-guide.xml writing_usb_driver.xml scsidrivers.xml \ 11 procfs-guide.xml writing_usb_driver.xml \
12 sis900.xml kernel-api.xml journal-api.xml lsm.xml usb.xml \ 12 sis900.xml kernel-api.xml journal-api.xml lsm.xml usb.xml \
13 gadget.xml libata.xml mtdnand.xml librs.xml 13 gadget.xml libata.xml mtdnand.xml librs.xml
14 14
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index 757cef8f8491..bb6a0106be11 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -338,7 +338,6 @@ X!Earch/i386/kernel/mca.c
338X!Iinclude/linux/device.h 338X!Iinclude/linux/device.h
339--> 339-->
340!Edrivers/base/driver.c 340!Edrivers/base/driver.c
341!Edrivers/base/class_simple.c
342!Edrivers/base/core.c 341!Edrivers/base/core.c
343!Edrivers/base/firmware_class.c 342!Edrivers/base/firmware_class.c
344!Edrivers/base/transport_class.c 343!Edrivers/base/transport_class.c
diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl
index cf2fce7707da..6df1dfd18b65 100644
--- a/Documentation/DocBook/libata.tmpl
+++ b/Documentation/DocBook/libata.tmpl
@@ -14,7 +14,7 @@
14 </authorgroup> 14 </authorgroup>
15 15
16 <copyright> 16 <copyright>
17 <year>2003</year> 17 <year>2003-2005</year>
18 <holder>Jeff Garzik</holder> 18 <holder>Jeff Garzik</holder>
19 </copyright> 19 </copyright>
20 20
@@ -44,30 +44,38 @@
44 44
45<toc></toc> 45<toc></toc>
46 46
47 <chapter id="libataThanks"> 47 <chapter id="libataIntroduction">
48 <title>Thanks</title> 48 <title>Introduction</title>
49 <para> 49 <para>
50 The bulk of the ATA knowledge comes thanks to long conversations with 50 libATA is a library used inside the Linux kernel to support ATA host
51 Andre Hedrick (www.linux-ide.org). 51 controllers and devices. libATA provides an ATA driver API, class
52 transports for ATA and ATAPI devices, and SCSI&lt;-&gt;ATA translation
53 for ATA devices according to the T10 SAT specification.
52 </para> 54 </para>
53 <para> 55 <para>
54 Thanks to Alan Cox for pointing out similarities 56 This Guide documents the libATA driver API, library functions, library
55 between SATA and SCSI, and in general for motivation to hack on 57 internals, and a couple sample ATA low-level drivers.
56 libata.
57 </para>
58 <para>
59 libata's device detection
60 method, ata_pio_devchk, and in general all the early probing was
61 based on extensive study of Hale Landis's probe/reset code in his
62 ATADRVR driver (www.ata-atapi.com).
63 </para> 58 </para>
64 </chapter> 59 </chapter>
65 60
66 <chapter id="libataDriverApi"> 61 <chapter id="libataDriverApi">
67 <title>libata Driver API</title> 62 <title>libata Driver API</title>
63 <para>
64 struct ata_port_operations is defined for every low-level libata
65 hardware driver, and it controls how the low-level driver
66 interfaces with the ATA and SCSI layers.
67 </para>
68 <para>
69 FIS-based drivers will hook into the system with ->qc_prep() and
70 ->qc_issue() high-level hooks. Hardware which behaves in a manner
71 similar to PCI IDE hardware may utilize several generic helpers,
72 defining at a bare minimum the bus I/O addresses of the ATA shadow
73 register blocks.
74 </para>
68 <sect1> 75 <sect1>
69 <title>struct ata_port_operations</title> 76 <title>struct ata_port_operations</title>
70 77
78 <sect2><title>Disable ATA port</title>
71 <programlisting> 79 <programlisting>
72void (*port_disable) (struct ata_port *); 80void (*port_disable) (struct ata_port *);
73 </programlisting> 81 </programlisting>
@@ -78,6 +86,9 @@ void (*port_disable) (struct ata_port *);
78 unplug). 86 unplug).
79 </para> 87 </para>
80 88
89 </sect2>
90
91 <sect2><title>Post-IDENTIFY device configuration</title>
81 <programlisting> 92 <programlisting>
82void (*dev_config) (struct ata_port *, struct ata_device *); 93void (*dev_config) (struct ata_port *, struct ata_device *);
83 </programlisting> 94 </programlisting>
@@ -88,6 +99,9 @@ void (*dev_config) (struct ata_port *, struct ata_device *);
88 issue of SET FEATURES - XFER MODE, and prior to operation. 99 issue of SET FEATURES - XFER MODE, and prior to operation.
89 </para> 100 </para>
90 101
102 </sect2>
103
104 <sect2><title>Set PIO/DMA mode</title>
91 <programlisting> 105 <programlisting>
92void (*set_piomode) (struct ata_port *, struct ata_device *); 106void (*set_piomode) (struct ata_port *, struct ata_device *);
93void (*set_dmamode) (struct ata_port *, struct ata_device *); 107void (*set_dmamode) (struct ata_port *, struct ata_device *);
@@ -108,6 +122,9 @@ void (*post_set_mode) (struct ata_port *ap);
108 ->set_dma_mode() is only called if DMA is possible. 122 ->set_dma_mode() is only called if DMA is possible.
109 </para> 123 </para>
110 124
125 </sect2>
126
127 <sect2><title>Taskfile read/write</title>
111 <programlisting> 128 <programlisting>
112void (*tf_load) (struct ata_port *ap, struct ata_taskfile *tf); 129void (*tf_load) (struct ata_port *ap, struct ata_taskfile *tf);
113void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf); 130void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf);
@@ -120,6 +137,9 @@ void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf);
120 taskfile register values. 137 taskfile register values.
121 </para> 138 </para>
122 139
140 </sect2>
141
142 <sect2><title>ATA command execute</title>
123 <programlisting> 143 <programlisting>
124void (*exec_command)(struct ata_port *ap, struct ata_taskfile *tf); 144void (*exec_command)(struct ata_port *ap, struct ata_taskfile *tf);
125 </programlisting> 145 </programlisting>
@@ -129,17 +149,37 @@ void (*exec_command)(struct ata_port *ap, struct ata_taskfile *tf);
129 ->tf_load(), to be initiated in hardware. 149 ->tf_load(), to be initiated in hardware.
130 </para> 150 </para>
131 151
152 </sect2>
153
154 <sect2><title>Per-cmd ATAPI DMA capabilities filter</title>
155 <programlisting>
156int (*check_atapi_dma) (struct ata_queued_cmd *qc);
157 </programlisting>
158
159 <para>
160Allow low-level driver to filter ATA PACKET commands, returning a status
161indicating whether or not it is OK to use DMA for the supplied PACKET
162command.
163 </para>
164
165 </sect2>
166
167 <sect2><title>Read specific ATA shadow registers</title>
132 <programlisting> 168 <programlisting>
133u8 (*check_status)(struct ata_port *ap); 169u8 (*check_status)(struct ata_port *ap);
134void (*dev_select)(struct ata_port *ap, unsigned int device); 170u8 (*check_altstatus)(struct ata_port *ap);
171u8 (*check_err)(struct ata_port *ap);
135 </programlisting> 172 </programlisting>
136 173
137 <para> 174 <para>
138 Reads the Status ATA shadow register from hardware. On some 175 Reads the Status/AltStatus/Error ATA shadow register from
139 hardware, this has the side effect of clearing the interrupt 176 hardware. On some hardware, reading the Status register has
140 condition. 177 the side effect of clearing the interrupt condition.
141 </para> 178 </para>
142 179
180 </sect2>
181
182 <sect2><title>Select ATA device on bus</title>
143 <programlisting> 183 <programlisting>
144void (*dev_select)(struct ata_port *ap, unsigned int device); 184void (*dev_select)(struct ata_port *ap, unsigned int device);
145 </programlisting> 185 </programlisting>
@@ -147,9 +187,13 @@ void (*dev_select)(struct ata_port *ap, unsigned int device);
147 <para> 187 <para>
148 Issues the low-level hardware command(s) that causes one of N 188 Issues the low-level hardware command(s) that causes one of N
149 hardware devices to be considered 'selected' (active and 189 hardware devices to be considered 'selected' (active and
150 available for use) on the ATA bus. 190 available for use) on the ATA bus. This generally has no
191meaning on FIS-based devices.
151 </para> 192 </para>
152 193
194 </sect2>
195
196 <sect2><title>Reset ATA bus</title>
153 <programlisting> 197 <programlisting>
154void (*phy_reset) (struct ata_port *ap); 198void (*phy_reset) (struct ata_port *ap);
155 </programlisting> 199 </programlisting>
@@ -162,17 +206,31 @@ void (*phy_reset) (struct ata_port *ap);
162 functions ata_bus_reset() or sata_phy_reset() for this hook. 206 functions ata_bus_reset() or sata_phy_reset() for this hook.
163 </para> 207 </para>
164 208
209 </sect2>
210
211 <sect2><title>Control PCI IDE BMDMA engine</title>
165 <programlisting> 212 <programlisting>
166void (*bmdma_setup) (struct ata_queued_cmd *qc); 213void (*bmdma_setup) (struct ata_queued_cmd *qc);
167void (*bmdma_start) (struct ata_queued_cmd *qc); 214void (*bmdma_start) (struct ata_queued_cmd *qc);
215void (*bmdma_stop) (struct ata_port *ap);
216u8 (*bmdma_status) (struct ata_port *ap);
168 </programlisting> 217 </programlisting>
169 218
170 <para> 219 <para>
171 When setting up an IDE BMDMA transaction, these hooks arm 220When setting up an IDE BMDMA transaction, these hooks arm
172 (->bmdma_setup) and fire (->bmdma_start) the hardware's DMA 221(->bmdma_setup), fire (->bmdma_start), and halt (->bmdma_stop)
173 engine. 222the hardware's DMA engine. ->bmdma_status is used to read the standard
223PCI IDE DMA Status register.
174 </para> 224 </para>
175 225
226 <para>
227These hooks are typically either no-ops, or simply not implemented, in
228FIS-based drivers.
229 </para>
230
231 </sect2>
232
233 <sect2><title>High-level taskfile hooks</title>
176 <programlisting> 234 <programlisting>
177void (*qc_prep) (struct ata_queued_cmd *qc); 235void (*qc_prep) (struct ata_queued_cmd *qc);
178int (*qc_issue) (struct ata_queued_cmd *qc); 236int (*qc_issue) (struct ata_queued_cmd *qc);
@@ -190,20 +248,26 @@ int (*qc_issue) (struct ata_queued_cmd *qc);
190 ->qc_issue is used to make a command active, once the hardware 248 ->qc_issue is used to make a command active, once the hardware
191 and S/G tables have been prepared. IDE BMDMA drivers use the 249 and S/G tables have been prepared. IDE BMDMA drivers use the
192 helper function ata_qc_issue_prot() for taskfile protocol-based 250 helper function ata_qc_issue_prot() for taskfile protocol-based
193 dispatch. More advanced drivers roll their own ->qc_issue 251 dispatch. More advanced drivers implement their own ->qc_issue.
194 implementation, using this as the "issue new ATA command to
195 hardware" hook.
196 </para> 252 </para>
197 253
254 </sect2>
255
256 <sect2><title>Timeout (error) handling</title>
198 <programlisting> 257 <programlisting>
199void (*eng_timeout) (struct ata_port *ap); 258void (*eng_timeout) (struct ata_port *ap);
200 </programlisting> 259 </programlisting>
201 260
202 <para> 261 <para>
203 This is a high level error handling function, called from the 262This is a high level error handling function, called from the
204 error handling thread, when a command times out. 263error handling thread, when a command times out. Most newer
264hardware will implement its own error handling code here. IDE BMDMA
265drivers may use the helper function ata_eng_timeout().
205 </para> 266 </para>
206 267
268 </sect2>
269
270 <sect2><title>Hardware interrupt handling</title>
207 <programlisting> 271 <programlisting>
208irqreturn_t (*irq_handler)(int, void *, struct pt_regs *); 272irqreturn_t (*irq_handler)(int, void *, struct pt_regs *);
209void (*irq_clear) (struct ata_port *); 273void (*irq_clear) (struct ata_port *);
@@ -216,6 +280,9 @@ void (*irq_clear) (struct ata_port *);
216 is quiet. 280 is quiet.
217 </para> 281 </para>
218 282
283 </sect2>
284
285 <sect2><title>SATA phy read/write</title>
219 <programlisting> 286 <programlisting>
220u32 (*scr_read) (struct ata_port *ap, unsigned int sc_reg); 287u32 (*scr_read) (struct ata_port *ap, unsigned int sc_reg);
221void (*scr_write) (struct ata_port *ap, unsigned int sc_reg, 288void (*scr_write) (struct ata_port *ap, unsigned int sc_reg,
@@ -227,6 +294,9 @@ void (*scr_write) (struct ata_port *ap, unsigned int sc_reg,
227 if ->phy_reset hook called the sata_phy_reset() helper function. 294 if ->phy_reset hook called the sata_phy_reset() helper function.
228 </para> 295 </para>
229 296
297 </sect2>
298
299 <sect2><title>Init and shutdown</title>
230 <programlisting> 300 <programlisting>
231int (*port_start) (struct ata_port *ap); 301int (*port_start) (struct ata_port *ap);
232void (*port_stop) (struct ata_port *ap); 302void (*port_stop) (struct ata_port *ap);
@@ -240,15 +310,17 @@ void (*host_stop) (struct ata_host_set *host_set);
240 tasks. 310 tasks.
241 </para> 311 </para>
242 <para> 312 <para>
243 ->host_stop() is called when the rmmod or hot unplug process
244 begins. The hook must stop all hardware interrupts, DMA
245 engines, etc.
246 </para>
247 <para>
248 ->port_stop() is called after ->host_stop(). It's sole function 313 ->port_stop() is called after ->host_stop(). It's sole function
249 is to release DMA/memory resources, now that they are no longer 314 is to release DMA/memory resources, now that they are no longer
250 actively being used. 315 actively being used.
251 </para> 316 </para>
317 <para>
318 ->host_stop() is called after all ->port_stop() calls
319have completed. The hook must finalize hardware shutdown, release DMA
320and other resources, etc.
321 </para>
322
323 </sect2>
252 324
253 </sect1> 325 </sect1>
254 </chapter> 326 </chapter>
@@ -279,4 +351,24 @@ void (*host_stop) (struct ata_host_set *host_set);
279!Idrivers/scsi/sata_sil.c 351!Idrivers/scsi/sata_sil.c
280 </chapter> 352 </chapter>
281 353
354 <chapter id="libataThanks">
355 <title>Thanks</title>
356 <para>
357 The bulk of the ATA knowledge comes thanks to long conversations with
358 Andre Hedrick (www.linux-ide.org), and long hours pondering the ATA
359 and SCSI specifications.
360 </para>
361 <para>
362 Thanks to Alan Cox for pointing out similarities
363 between SATA and SCSI, and in general for motivation to hack on
364 libata.
365 </para>
366 <para>
367 libata's device detection
368 method, ata_pio_devchk, and in general all the early probing was
369 based on extensive study of Hale Landis's probe/reset code in his
370 ATADRVR driver (www.ata-atapi.com).
371 </para>
372 </chapter>
373
282</book> 374</book>
diff --git a/Documentation/DocBook/scsidrivers.tmpl b/Documentation/DocBook/scsidrivers.tmpl
deleted file mode 100644
index d058e65daf19..000000000000
--- a/Documentation/DocBook/scsidrivers.tmpl
+++ /dev/null
@@ -1,193 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
4
5<book id="scsidrivers">
6 <bookinfo>
7 <title>SCSI Subsystem Interfaces</title>
8
9 <authorgroup>
10 <author>
11 <firstname>Douglas</firstname>
12 <surname>Gilbert</surname>
13 <affiliation>
14 <address>
15 <email>dgilbert@interlog.com</email>
16 </address>
17 </affiliation>
18 </author>
19 </authorgroup>
20 <pubdate>2003-08-11</pubdate>
21
22 <copyright>
23 <year>2002</year>
24 <year>2003</year>
25 <holder>Douglas Gilbert</holder>
26 </copyright>
27
28 <legalnotice>
29 <para>
30 This documentation is free software; you can redistribute
31 it and/or modify it under the terms of the GNU General Public
32 License as published by the Free Software Foundation; either
33 version 2 of the License, or (at your option) any later
34 version.
35 </para>
36
37 <para>
38 This program is distributed in the hope that it will be
39 useful, but WITHOUT ANY WARRANTY; without even the implied
40 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
41 See the GNU General Public License for more details.
42 </para>
43
44 <para>
45 You should have received a copy of the GNU General Public
46 License along with this program; if not, write to the Free
47 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
48 MA 02111-1307 USA
49 </para>
50
51 <para>
52 For more details see the file COPYING in the source
53 distribution of Linux.
54 </para>
55 </legalnotice>
56
57 </bookinfo>
58
59<toc></toc>
60
61 <chapter id="intro">
62 <title>Introduction</title>
63 <para>
64This document outlines the interface between the Linux scsi mid level
65and lower level drivers. Lower level drivers are variously called HBA
66(host bus adapter) drivers, host drivers (HD) or pseudo adapter drivers.
67The latter alludes to the fact that a lower level driver may be a
68bridge to another IO subsystem (and the "ide-scsi" driver is an example
69of this). There can be many lower level drivers active in a running
70system, but only one per hardware type. For example, the aic7xxx driver
71controls adaptec controllers based on the 7xxx chip series. Most lower
72level drivers can control one or more scsi hosts (a.k.a. scsi initiators).
73 </para>
74<para>
75This document can been found in an ASCII text file in the linux kernel
76source: <filename>Documentation/scsi/scsi_mid_low_api.txt</filename> .
77It currently hold a little more information than this document. The
78<filename>drivers/scsi/hosts.h</filename> and <filename>
79drivers/scsi/scsi.h</filename> headers contain descriptions of members
80of important structures for the scsi subsystem.
81</para>
82 </chapter>
83
84 <chapter id="driver-struct">
85 <title>Driver structure</title>
86 <para>
87Traditionally a lower level driver for the scsi subsystem has been
88at least two files in the drivers/scsi directory. For example, a
89driver called "xyz" has a header file "xyz.h" and a source file
90"xyz.c". [Actually there is no good reason why this couldn't all
91be in one file.] Some drivers that have been ported to several operating
92systems (e.g. aic7xxx which has separate files for generic and
93OS-specific code) have more than two files. Such drivers tend to have
94their own directory under the drivers/scsi directory.
95 </para>
96 <para>
97scsi_module.c is normally included at the end of a lower
98level driver. For it to work a declaration like this is needed before
99it is included:
100<programlisting>
101 static Scsi_Host_Template driver_template = DRIVER_TEMPLATE;
102 /* DRIVER_TEMPLATE should contain pointers to supported interface
103 functions. Scsi_Host_Template is defined hosts.h */
104 #include "scsi_module.c"
105</programlisting>
106 </para>
107 <para>
108The scsi_module.c assumes the name "driver_template" is appropriately
109defined. It contains 2 functions:
110<orderedlist>
111<listitem><para>
112 init_this_scsi_driver() called during builtin and module driver
113 initialization: invokes mid level's scsi_register_host()
114</para></listitem>
115<listitem><para>
116 exit_this_scsi_driver() called during closedown: invokes
117 mid level's scsi_unregister_host()
118</para></listitem>
119</orderedlist>
120 </para>
121<para>
122When a new, lower level driver is being added to Linux, the following
123files (all found in the drivers/scsi directory) will need some attention:
124Makefile, Config.help and Config.in . It is probably best to look at what
125an existing lower level driver does in this regard.
126</para>
127 </chapter>
128
129 <chapter id="intfunctions">
130 <title>Interface Functions</title>
131!EDocumentation/scsi/scsi_mid_low_api.txt
132 </chapter>
133
134 <chapter id="locks">
135 <title>Locks</title>
136<para>
137Each Scsi_Host instance has a spin_lock called Scsi_Host::default_lock
138which is initialized in scsi_register() [found in hosts.c]. Within the
139same function the Scsi_Host::host_lock pointer is initialized to point
140at default_lock with the scsi_assign_lock() function. Thereafter
141lock and unlock operations performed by the mid level use the
142Scsi_Host::host_lock pointer.
143</para>
144<para>
145Lower level drivers can override the use of Scsi_Host::default_lock by
146using scsi_assign_lock(). The earliest opportunity to do this would
147be in the detect() function after it has invoked scsi_register(). It
148could be replaced by a coarser grain lock (e.g. per driver) or a
149lock of equal granularity (i.e. per host). Using finer grain locks
150(e.g. per scsi device) may be possible by juggling locks in
151queuecommand().
152</para>
153 </chapter>
154
155 <chapter id="changes">
156 <title>Changes since lk 2.4 series</title>
157<para>
158io_request_lock has been replaced by several finer grained locks. The lock
159relevant to lower level drivers is Scsi_Host::host_lock and there is one
160per scsi host.
161</para>
162<para>
163The older error handling mechanism has been removed. This means the
164lower level interface functions abort() and reset() have been removed.
165</para>
166<para>
167In the 2.4 series the scsi subsystem configuration descriptions were
168aggregated with the configuration descriptions from all other Linux
169subsystems in the Documentation/Configure.help file. In the 2.5 series,
170the scsi subsystem now has its own (much smaller) drivers/scsi/Config.help
171file.
172</para>
173 </chapter>
174
175 <chapter id="credits">
176 <title>Credits</title>
177<para>
178The following people have contributed to this document:
179<orderedlist>
180<listitem><para>
181Mike Anderson <email>andmike@us.ibm.com</email>
182</para></listitem>
183<listitem><para>
184James Bottomley <email>James.Bottomley@steeleye.com</email>
185</para></listitem>
186<listitem><para>
187Patrick Mansfield <email>patmans@us.ibm.com</email>
188</para></listitem>
189</orderedlist>
190</para>
191 </chapter>
192
193</book>
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 9838d32b2fe7..4d35562b1cf9 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -271,7 +271,7 @@ patch, which certifies that you wrote it or otherwise have the right to
271pass it on as a open-source patch. The rules are pretty simple: if you 271pass it on as a open-source patch. The rules are pretty simple: if you
272can certify the below: 272can certify the below:
273 273
274 Developer's Certificate of Origin 1.0 274 Developer's Certificate of Origin 1.1
275 275
276 By making a contribution to this project, I certify that: 276 By making a contribution to this project, I certify that:
277 277
@@ -291,6 +291,12 @@ can certify the below:
291 person who certified (a), (b) or (c) and I have not modified 291 person who certified (a), (b) or (c) and I have not modified
292 it. 292 it.
293 293
294 (d) I understand and agree that this project and the contribution
295 are public and that a record of the contribution (including all
296 personal information I submit with it, including my sign-off) is
297 maintained indefinitely and may be redistributed consistent with
298 this project or the open source license(s) involved.
299
294then you just add a line saying 300then you just add a line saying
295 301
296 Signed-off-by: Random J Developer <random@developer.org> 302 Signed-off-by: Random J Developer <random@developer.org>
diff --git a/Documentation/cpu-freq/cpufreq-stats.txt b/Documentation/cpu-freq/cpufreq-stats.txt
new file mode 100644
index 000000000000..e2d1e760b4ba
--- /dev/null
+++ b/Documentation/cpu-freq/cpufreq-stats.txt
@@ -0,0 +1,128 @@
1
2 CPU frequency and voltage scaling statictics in the Linux(TM) kernel
3
4
5 L i n u x c p u f r e q - s t a t s d r i v e r
6
7 - information for users -
8
9
10 Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
11
12Contents
131. Introduction
142. Statistics Provided (with example)
153. Configuring cpufreq-stats
16
17
181. Introduction
19
20cpufreq-stats is a driver that provices CPU frequency statistics for each CPU.
21This statistics is provided in /sysfs as a bunch of read_only interfaces. This
22interface (when configured) will appear in a seperate directory under cpufreq
23in /sysfs (<sysfs root>/devices/system/cpu/cpuX/cpufreq/stats/) for each CPU.
24Various statistics will form read_only files under this directory.
25
26This driver is designed to be independent of any particular cpufreq_driver
27that may be running on your CPU. So, it will work with any cpufreq_driver.
28
29
302. Statistics Provided (with example)
31
32cpufreq stats provides following statistics (explained in detail below).
33- time_in_state
34- total_trans
35- trans_table
36
37All the statistics will be from the time the stats driver has been inserted
38to the time when a read of a particular statistic is done. Obviously, stats
39driver will not have any information about the the frequcny transitions before
40the stats driver insertion.
41
42--------------------------------------------------------------------------------
43<mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # ls -l
44total 0
45drwxr-xr-x 2 root root 0 May 14 16:06 .
46drwxr-xr-x 3 root root 0 May 14 15:58 ..
47-r--r--r-- 1 root root 4096 May 14 16:06 time_in_state
48-r--r--r-- 1 root root 4096 May 14 16:06 total_trans
49-r--r--r-- 1 root root 4096 May 14 16:06 trans_table
50--------------------------------------------------------------------------------
51
52- time_in_state
53This gives the amount of time spent in each of the frequencies supported by
54this CPU. The cat output will have "<frequency> <time>" pair in each line, which
55will mean this CPU spent <time> usertime units of time at <frequency>. Output
56will have one line for each of the supported freuencies. usertime units here
57is 10mS (similar to other time exported in /proc).
58
59--------------------------------------------------------------------------------
60<mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat time_in_state
613600000 2089
623400000 136
633200000 34
643000000 67
652800000 172488
66--------------------------------------------------------------------------------
67
68
69- total_trans
70This gives the total number of frequency transitions on this CPU. The cat
71output will have a single count which is the total number of frequency
72transitions.
73
74--------------------------------------------------------------------------------
75<mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat total_trans
7620
77--------------------------------------------------------------------------------
78
79- trans_table
80This will give a fine grained information about all the CPU frequency
81transitions. The cat output here is a two dimensional matrix, where an entry
82<i,j> (row i, column j) represents the count of number of transitions from
83Freq_i to Freq_j. Freq_i is in descending order with increasing rows and
84Freq_j is in descending order with increasing columns. The output here also
85contains the actual freq values for each row and column for better readability.
86
87--------------------------------------------------------------------------------
88<mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat trans_table
89 From : To
90 : 3600000 3400000 3200000 3000000 2800000
91 3600000: 0 5 0 0 0
92 3400000: 4 0 2 0 0
93 3200000: 0 1 0 2 0
94 3000000: 0 0 1 0 3
95 2800000: 0 0 0 2 0
96--------------------------------------------------------------------------------
97
98
993. Configuring cpufreq-stats
100
101To configure cpufreq-stats in your kernel
102Config Main Menu
103 Power management options (ACPI, APM) --->
104 CPU Frequency scaling --->
105 [*] CPU Frequency scaling
106 <*> CPU frequency translation statistics
107 [*] CPU frequency translation statistics details
108
109
110"CPU Frequency scaling" (CONFIG_CPU_FREQ) should be enabled to configure
111cpufreq-stats.
112
113"CPU frequency translation statistics" (CONFIG_CPU_FREQ_STAT) provides the
114basic statistics which includes time_in_state and total_trans.
115
116"CPU frequency translation statistics details" (CONFIG_CPU_FREQ_STAT_DETAILS)
117provides fine grained cpufreq stats by trans_table. The reason for having a
118seperate config option for trans_table is:
119- trans_table goes against the traditional /sysfs rule of one value per
120 interface. It provides a whole bunch of value in a 2 dimensional matrix
121 form.
122
123Once these two options are enabled and your CPU supports cpufrequency, you
124will be able to see the CPU frequency statistics in /sysfs.
125
126
127
128
diff --git a/Documentation/cpusets.txt b/Documentation/cpusets.txt
index 1ad26d2c20ae..2f8f24eaefd9 100644
--- a/Documentation/cpusets.txt
+++ b/Documentation/cpusets.txt
@@ -252,8 +252,7 @@ in a tasks processor placement.
252There is an exception to the above. If hotplug funtionality is used 252There is an exception to the above. If hotplug funtionality is used
253to remove all the CPUs that are currently assigned to a cpuset, 253to remove all the CPUs that are currently assigned to a cpuset,
254then the kernel will automatically update the cpus_allowed of all 254then the kernel will automatically update the cpus_allowed of all
255tasks attached to CPUs in that cpuset with the online CPUs of the 255tasks attached to CPUs in that cpuset to allow all CPUs. When memory
256nearest parent cpuset that still has some CPUs online. When memory
257hotplug functionality for removing Memory Nodes is available, a 256hotplug functionality for removing Memory Nodes is available, a
258similar exception is expected to apply there as well. In general, 257similar exception is expected to apply there as well. In general,
259the kernel prefers to violate cpuset placement, over starving a task 258the kernel prefers to violate cpuset placement, over starving a task
diff --git a/Documentation/driver-model/device.txt b/Documentation/driver-model/device.txt
index 58cc5dc8fd3e..a05ec50f8004 100644
--- a/Documentation/driver-model/device.txt
+++ b/Documentation/driver-model/device.txt
@@ -76,6 +76,14 @@ driver_data: Driver-specific data.
76 76
77platform_data: Platform data specific to the device. 77platform_data: Platform data specific to the device.
78 78
79 Example: for devices on custom boards, as typical of embedded
80 and SOC based hardware, Linux often uses platform_data to point
81 to board-specific structures describing devices and how they
82 are wired. That can include what ports are available, chip
83 variants, which GPIO pins act in what additional roles, and so
84 on. This shrinks the "Board Support Packages" (BSPs) and
85 minimizes board-specific #ifdefs in drivers.
86
79current_state: Current power state of the device. 87current_state: Current power state of the device.
80 88
81saved_state: Pointer to saved state of the device. This is usable by 89saved_state: Pointer to saved state of the device. This is usable by
diff --git a/Documentation/driver-model/driver.txt b/Documentation/driver-model/driver.txt
index 6031a68dd3f5..fabaca1ab1b0 100644
--- a/Documentation/driver-model/driver.txt
+++ b/Documentation/driver-model/driver.txt
@@ -5,21 +5,17 @@ struct device_driver {
5 char * name; 5 char * name;
6 struct bus_type * bus; 6 struct bus_type * bus;
7 7
8 rwlock_t lock; 8 struct completion unloaded;
9 atomic_t refcount; 9 struct kobject kobj;
10
11 list_t bus_list;
12 list_t devices; 10 list_t devices;
13 11
14 struct driver_dir_entry dir; 12 struct module *owner;
15 13
16 int (*probe) (struct device * dev); 14 int (*probe) (struct device * dev);
17 int (*remove) (struct device * dev); 15 int (*remove) (struct device * dev);
18 16
19 int (*suspend) (struct device * dev, pm_message_t state, u32 level); 17 int (*suspend) (struct device * dev, pm_message_t state, u32 level);
20 int (*resume) (struct device * dev, u32 level); 18 int (*resume) (struct device * dev, u32 level);
21
22 void (*release) (struct device_driver * drv);
23}; 19};
24 20
25 21
@@ -51,7 +47,6 @@ being converted completely to the new model.
51static struct device_driver eepro100_driver = { 47static struct device_driver eepro100_driver = {
52 .name = "eepro100", 48 .name = "eepro100",
53 .bus = &pci_bus_type, 49 .bus = &pci_bus_type,
54 .devclass = &ethernet_devclass, /* when it's implemented */
55 50
56 .probe = eepro100_probe, 51 .probe = eepro100_probe,
57 .remove = eepro100_remove, 52 .remove = eepro100_remove,
@@ -85,7 +80,6 @@ static struct pci_driver eepro100_driver = {
85 .driver = { 80 .driver = {
86 .name = "eepro100", 81 .name = "eepro100",
87 .bus = &pci_bus_type, 82 .bus = &pci_bus_type,
88 .devclass = &ethernet_devclass, /* when it's implemented */
89 .probe = eepro100_probe, 83 .probe = eepro100_probe,
90 .remove = eepro100_remove, 84 .remove = eepro100_remove,
91 .suspend = eepro100_suspend, 85 .suspend = eepro100_suspend,
@@ -166,27 +160,32 @@ Callbacks
166 160
167 int (*probe) (struct device * dev); 161 int (*probe) (struct device * dev);
168 162
169probe is called to verify the existence of a certain type of 163The probe() entry is called in task context, with the bus's rwsem locked
170hardware. This is called during the driver binding process, after the 164and the driver partially bound to the device. Drivers commonly use
171bus has verified that the device ID of a device matches one of the 165container_of() to convert "dev" to a bus-specific type, both in probe()
172device IDs supported by the driver. 166and other routines. That type often provides device resource data, such
173 167as pci_dev.resource[] or platform_device.resources, which is used in
174This callback only verifies that there actually is supported hardware 168addition to dev->platform_data to initialize the driver.
175present. It may allocate a driver-specific structure, but it should 169
176not do any initialization of the hardware itself. The device-specific 170This callback holds the driver-specific logic to bind the driver to a
177structure may be stored in the device's driver_data field. 171given device. That includes verifying that the device is present, that
178 172it's a version the driver can handle, that driver data structures can
179 int (*init) (struct device * dev); 173be allocated and initialized, and that any hardware can be initialized.
180 174Drivers often store a pointer to their state with dev_set_drvdata().
181init is called during the binding stage. It is called after probe has 175When the driver has successfully bound itself to that device, then probe()
182successfully returned and the device has been registered with its 176returns zero and the driver model code will finish its part of binding
183class. It is responsible for initializing the hardware. 177the driver to that device.
178
179A driver's probe() may return a negative errno value to indicate that
180the driver did not bind to this device, in which case it should have
181released all reasources it allocated.
184 182
185 int (*remove) (struct device * dev); 183 int (*remove) (struct device * dev);
186 184
187remove is called to dissociate a driver with a device. This may be 185remove is called to unbind a driver from a device. This may be
188called if a device is physically removed from the system, if the 186called if a device is physically removed from the system, if the
189driver module is being unloaded, or during a reboot sequence. 187driver module is being unloaded, during a reboot sequence, or
188in other cases.
190 189
191It is up to the driver to determine if the device is present or 190It is up to the driver to determine if the device is present or
192not. It should free any resources allocated specifically for the 191not. It should free any resources allocated specifically for the
diff --git a/Documentation/dvb/README.flexcop b/Documentation/dvb/README.flexcop
new file mode 100644
index 000000000000..a50c70f9ca72
--- /dev/null
+++ b/Documentation/dvb/README.flexcop
@@ -0,0 +1,205 @@
1This README escorted the skystar2-driver rewriting procedure. It describes the
2state of the new flexcop-driver set and some internals are written down here
3too.
4
5This document hopefully describes things about the flexcop and its
6device-offsprings. Goal was to write an easy-to-write and easy-to-read set of
7drivers based on the skystar2.c and other information.
8
9Remark: flexcop-pci.c was a copy of skystar2.c, but every line has been
10touched and rewritten.
11
12History & News
13==============
14 2005-04-01 - correct USB ISOC transfers (thanks to Vadim Catana)
15
16
17
18
19General coding processing
20=========================
21
22We should proceed as follows (as long as no one complains):
23
240) Think before start writing code!
25
261) rewriting the skystar2.c with the help of the flexcop register descriptions
27and splitting up the files to a pci-bus-part and a flexcop-part.
28The new driver will be called b2c2-flexcop-pci.ko/b2c2-flexcop-usb.ko for the
29device-specific part and b2c2-flexcop.ko for the common flexcop-functions.
30
312) Search for errors in the leftover of flexcop-pci.c (compare with pluto2.c
32and other pci drivers)
33
343) make some beautification (see 'Improvements when rewriting (refactoring) is
35done')
36
374) Testing the new driver and maybe substitute the skystar2.c with it, to reach
38a wider tester audience.
39
405) creating an usb-bus-part using the already written flexcop code for the pci
41card.
42
43Idea: create a kernel-object for the flexcop and export all important
44functions. This option saves kernel-memory, but maybe a lot of functions have
45to be exported to kernel namespace.
46
47
48Current situation
49=================
50
510) Done :)
521) Done (some minor issues left)
532) Done
543) Not ready yet, more information is necessary
554) next to be done (see the table below)
565) USB driver is working (yes, there are some minor issues)
57
58What seems to be ready?
59-----------------------
60
611) Rewriting
621a) i2c is cut off from the flexcop-pci.c and seems to work
631b) moved tuner and demod stuff from flexcop-pci.c to flexcop-tuner-fe.c
641c) moved lnb and diseqc stuff from flexcop-pci.c to flexcop-tuner-fe.c
651e) eeprom (reading MAC address)
661d) sram (no dynamic sll size detection (commented out) (using default as JJ told me))
671f) misc. register accesses for reading parameters (e.g. resetting, revision)
681g) pid/mac filter (flexcop-hw-filter.c)
691i) dvb-stuff initialization in flexcop.c (done)
701h) dma stuff (now just using the size-irq, instead of all-together, to be done)
711j) remove flexcop initialization from flexcop-pci.c completely (done)
721l) use a well working dma IRQ method (done, see 'Known bugs and problems and TODO')
731k) cleanup flexcop-files (remove unused EXPORT_SYMBOLs, make static from
74non-static where possible, moved code to proper places)
75
762) Search for errors in the leftover of flexcop-pci.c (partially done)
775a) add MAC address reading
785c) feeding of ISOC data to the software demux (format of the isochronous data
79and speed optimization, no real error) (thanks to Vadim Catana)
80
81What to do in the near future?
82--------------------------------------
83(no special order here)
84
855) USB driver
865b) optimize isoc-transfer (submitting/killing isoc URBs when transfer is starting)
87
88Testing changes
89---------------
90
91O = item is working
92P = item is partially working
93X = item is not working
94N = item does not apply here
95<empty field> = item need to be examined
96
97 | PCI | USB
98item | mt352 | nxt2002 | stv0299 | mt312 | mt352 | nxt2002 | stv0299 | mt312
99-------+-------+---------+---------+-------+-------+---------+---------+-------
1001a) | O | | | | N | N | N | N
1011b) | O | | | | | | O |
1021c) | N | N | | | N | N | O |
1031d) | O | O
1041e) | O | O
1051f) | P
1061g) | O
1071h) | P |
1081i) | O | N
1091j) | O | N
1101l) | O | N
1112) | O | N
1125a) | N | O
1135b)* | N |
1145c) | N | O
115
116* - not done yet
117
118Known bugs and problems and TODO
119--------------------------------
120
1211g/h/l) when pid filtering is enabled on the pci card
122
123DMA usage currently:
124 The DMA is splitted in 2 equal-sized subbuffers. The Flexcop writes to first
125 address and triggers an IRQ when it's full and starts writing to the second
126 address. When the second address is full, the IRQ is triggered again, and
127 the flexcop writes to first address again, and so on.
128 The buffersize of each address is currently 640*188 bytes.
129
130 Problem is, when using hw-pid-filtering and doing some low-bandwidth
131 operation (like scanning) the buffers won't be filled enough to trigger
132 the IRQ. That's why:
133
134 When PID filtering is activated, the timer IRQ is used. Every 1.97 ms the IRQ
135 is triggered. Is the current write address of DMA1 different to the one
136 during the last IRQ, then the data is passed to the demuxer.
137
138 There is an additional DMA-IRQ-method: packet count IRQ. This isn't
139 implemented correctly yet.
140
141 The solution is to disable HW PID filtering, but I don't know how the DVB
142 API software demux behaves on slow systems with 45MBit/s TS.
143
144Solved bugs :)
145--------------
1461g) pid-filtering (somehow pid index 4 and 5 (EMM_PID and ECM_PID) aren't
147working)
148SOLUTION: also index 0 was affected, because net_translation is done for
149these indexes by default
150
1515b) isochronous transfer does only work in the first attempt (for the Sky2PC
152USB, Air2PC is working) SOLUTION: the flexcop was going asleep and never really
153woke up again (don't know if this need fixes, see
154flexcop-fe-tuner.c:flexcop_sleep)
155
156NEWS: when the driver is loaded and unloaded and loaded again (w/o doing
157anything in the while the driver is loaded the first time), no transfers take
158place anymore.
159
160Improvements when rewriting (refactoring) is done
161=================================================
162
163- split sleeping of the flexcop (misc_204.ACPI3_sig = 1;) from lnb_control
164 (enable sleeping for other demods than dvb-s)
165- add support for CableStar (stv0297 Microtune 203x/ALPS) (almost done, incompatibilities with the Nexus-CA)
166
167Debugging
168---------
169- add verbose debugging to skystar2.c (dump the reg_dw_data) and compare it
170 with this flexcop, this is important, because i2c is now using the
171 flexcop_ibi_value union from flexcop-reg.h (do you have a better idea for
172 that, please tell us so).
173
174Everything which is identical in the following table, can be put into a common
175flexcop-module.
176
177 PCI USB
178-------------------------------------------------------------------------------
179Different:
180Register access: accessing IO memory USB control message
181I2C bus: I2C bus of the FC USB control message
182Data transfer: DMA isochronous transfer
183EEPROM transfer: through i2c bus not clear yet
184
185Identical:
186Streaming: accessing registers
187PID Filtering: accessing registers
188Sram destinations: accessing registers
189Tuner/Demod: I2C bus
190DVB-stuff: can be written for common use
191
192Acknowledgements (just for the rewriting part)
193================
194
195Bjarne Steinsbo thought a lot in the first place of the pci part for this code
196sharing idea.
197
198Andreas Oberritter for providing a recent PCI initialization template
199(pluto2.c).
200
201Boleslaw Ciesielski for pointing out a problem with firmware loader.
202
203Vadim Catana for correcting the USB transfer.
204
205comments, critics and ideas to linux-dvb@linuxtv.org.
diff --git a/Documentation/dvb/bt8xx.txt b/Documentation/dvb/bt8xx.txt
index e3cacf4f2345..d64430bf4bb6 100644
--- a/Documentation/dvb/bt8xx.txt
+++ b/Documentation/dvb/bt8xx.txt
@@ -17,74 +17,53 @@ Because of this, you need to enable
17"Device drivers" => "Multimedia devices" 17"Device drivers" => "Multimedia devices"
18 => "Video For Linux" => "BT848 Video For Linux" 18 => "Video For Linux" => "BT848 Video For Linux"
19 19
20Furthermore you need to enable
21"Device drivers" => "Multimedia devices" => "Digital Video Broadcasting Devices"
22 => "DVB for Linux" "DVB Core Support" "Nebula/Pinnacle PCTV/TwinHan PCI Cards"
23
202) Loading Modules 242) Loading Modules
21================== 25==================
22 26
23In general you need to load the bttv driver, which will handle the gpio and 27In general you need to load the bttv driver, which will handle the gpio and
24i2c communication for us. Next you need the common dvb-bt8xx device driver 28i2c communication for us, plus the common dvb-bt8xx device driver.
25and one frontend driver. 29The frontends for Nebula (nxt6000), Pinnacle PCTV (cx24110) and
26 30TwinHan (dst) are loaded automatically by the dvb-bt8xx device driver.
27The bttv driver will HANG YOUR SYSTEM IF YOU DO NOT SPECIFY THE CORRECT
28CARD ID!
29
30(If you don't get your card running and you suspect that the card id you're
31using is wrong, have a look at "bttv-cards.c" for a list of possible card
32ids.)
33
34Pay attention to failures when you load the frontend drivers
35(e.g. dmesg, /var/log/messages).
36 31
373a) Nebula / Pinnacle PCTV 323a) Nebula / Pinnacle PCTV
38-------------------------- 33--------------------------
39 34
40 $ modprobe bttv i2c_hw=1 card=0x68 35 $ modprobe bttv (normally bttv is being loaded automatically by kmod)
41 $ modprobe dvb-bt8xx 36 $ modprobe dvb-bt8xx (or just place dvb-bt8xx in /etc/modules for automatic loading)
42
43For Nebula cards use the "nxt6000" frontend driver:
44 $ modprobe nxt6000
45 37
46For Pinnacle PCTV cards use the "cx24110" frontend driver:
47 $ modprobe cx24110
48 38
493b) TwinHan 393b) TwinHan and Clones
50----------- 40--------------------------
51 41
52 $ modprobe bttv i2c_hw=1 card=0x71 42 $ modprobe bttv i2c_hw=1 card=0x71
53 $ modprobe dvb-bt8xx 43 $ modprobe dvb-bt8xx
54 $ modprobe dst 44 $ modprobe dst
55 45
56The value 0x71 will override the PCI type detection for dvb-bt8xx, which 46The value 0x71 will override the PCI type detection for dvb-bt8xx,
57is necessary for TwinHan cards.# 47which is necessary for TwinHan cards.
58 48
59If you're having an older card (blue color circuit) and card=0x71 locks your 49If you're having an older card (blue color circuit) and card=0x71 locks
60machine, try using 0x68, too. If that does not work, ask on the DVB mailing list. 50your machine, try using 0x68, too. If that does not work, ask on the
51mailing list.
61 52
62The DST module takes a couple of useful parameters, in case the 53The DST module takes a couple of useful parameters.
63dst drivers fails to detect your type of card correctly.
64 54
65dst_type takes values 0 (satellite), 1 (terrestial TV), 2 (cable). 55verbose takes values 0 to 5. These values control the verbosity level.
66 56
67dst_type_flags takes bit combined values: 57debug takes values 0 and 1. You can either disable or enable debugging.
681 = new tuner type packets. You can use this if your card is detected
69 and you have debug and you continually see the tuner packets not
70 working (make sure not a basic problem like dish alignment etc.)
71 58
722 = TS 204. If your card tunes OK, but the picture is terrible, seemingly 59dst_addons takes values 0 and 0x20. A value of 0 means it is a FTA card.
73 breaking up in one half continually, and crc fails a lot, then 600x20 means it has a Conditional Access slot.
74 this is worth a try (or trying to turn off)
75 61
764 = has symdiv. Some cards, mostly without new tuner packets, require 62The autodected values are determined bythe cards 'response
77 a symbol division algorithm. Doesn't apply to terrestial TV.
78
79You can also specify a value to have the autodetected values turned off
80(e.g. 0). The autodected values are determined bythe cards 'response
81string' which you can see in your logs e.g. 63string' which you can see in your logs e.g.
82 64
83dst_check_ci: recognize DST-MOT 65dst_get_device_id: Recognise [DSTMCI]
84
85or
86 66
87dst_check_ci: unable to recognize DSTXCI or STXCI
88 67
89-- 68--
90Authors: Richard Walker, Jamie Honan, Michael Hunold 69Authors: Richard Walker, Jamie Honan, Michael Hunold, Manu Abraham
diff --git a/Documentation/dvb/ci.txt b/Documentation/dvb/ci.txt
new file mode 100644
index 000000000000..62e0701b542a
--- /dev/null
+++ b/Documentation/dvb/ci.txt
@@ -0,0 +1,219 @@
1* For the user
2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3NOTE: This document describes the usage of the high level CI API as
4in accordance to the Linux DVB API. This is a not a documentation for the,
5existing low level CI API.
6~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7
8To utilize the High Level CI capabilities,
9
10(1*) This point is valid only for the Twinhan/clones
11 For the Twinhan/Twinhan clones, the dst_ca module handles the CI
12 hardware handling.This module is loaded automatically if a CI
13 (Common Interface, that holds the CAM (Conditional Access Module)
14 is detected.
15
16(2) one requires a userspace application, ca_zap. This small userland
17 application is in charge of sending the descrambling related information
18 to the CAM.
19
20This application requires the following to function properly as of now.
21
22 (a) Tune to a valid channel, with szap.
23 eg: $ szap -c channels.conf -r "TMC" -x
24
25 (b) a channels.conf containing a valid PMT PID
26
27 eg: TMC:11996:h:0:27500:278:512:650:321
28
29 here 278 is a valid PMT PID. the rest of the values are the
30 same ones that szap uses.
31
32 (c) after running a szap, you have to run ca_zap, for the
33 descrambler to function,
34
35 eg: $ ca_zap patched_channels.conf "TMC"
36
37 The patched means a patch to apply to scan, such that scan can
38 generate a channels.conf_with pmt, which has this PMT PID info
39 (NOTE: szap cannot use this channels.conf with the PMT_PID)
40
41
42 (d) Hopeflly Enjoy your favourite subscribed channel as you do with
43 a FTA card.
44
45(3) Currently ca_zap, and dst_test, both are meant for demonstration
46 purposes only, they can become full fledged applications if necessary.
47
48
49* Cards that fall in this category
50~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51At present the cards that fall in this category are the Twinhan and it's
52clones, these cards are available as VVMER, Tomato, Hercules, Orange and
53so on.
54
55* CI modules that are supported
56~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
57The CI module support is largely dependant upon the firmware on the cards
58Some cards do support almost all of the available CI modules. There is
59nothing much that can be done in order to make additional CI modules
60working with these cards.
61
62Modules that have been tested by this driver at present are
63
64(1) Irdeto 1 and 2 from SCM
65(2) Viaccess from SCM
66(3) Dragoncam
67
68* The High level CI API
69~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70
71* For the programmer
72~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
73With the High Level CI approach any new card with almost any random
74architecture can be implemented with this style, the definitions
75insidethe switch statement can be easily adapted for any card, thereby
76eliminating the need for any additional ioctls.
77
78The disadvantage is that the driver/hardware has to manage the rest. For
79the application programmer it would be as simple as sending/receiving an
80array to/from the CI ioctls as defined in the Linux DVB API. No changes
81have been made in the API to accomodate this feature.
82
83
84* Why the need for another CI interface ?
85~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
86This is one of the most commonly asked question. Well a nice question.
87Strictly speaking this is not a new interface.
88
89The CI interface is defined in the DVB API in ca.h as
90
91typedef struct ca_slot_info {
92 int num; /* slot number */
93
94 int type; /* CA interface this slot supports */
95#define CA_CI 1 /* CI high level interface */
96#define CA_CI_LINK 2 /* CI link layer level interface */
97#define CA_CI_PHYS 4 /* CI physical layer level interface */
98#define CA_DESCR 8 /* built-in descrambler */
99#define CA_SC 128 /* simple smart card interface */
100
101 unsigned int flags;
102#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */
103#define CA_CI_MODULE_READY 2
104} ca_slot_info_t;
105
106
107
108This CI interface follows the CI high level interface, which is not
109implemented by most applications. Hence this area is revisited.
110
111This CI interface is quite different in the case that it tries to
112accomodate all other CI based devices, that fall into the other categories
113
114This means that this CI interface handles the EN50221 style tags in the
115Application layer only and no session management is taken care of by the
116application. The driver/hardware will take care of all that.
117
118This interface is purely an EN50221 interface exchanging APDU's. This
119means that no session management, link layer or a transport layer do
120exist in this case in the application to driver communication. It is
121as simple as that. The driver/hardware has to take care of that.
122
123
124With this High Level CI interface, the interface can be defined with the
125regular ioctls.
126
127All these ioctls are also valid for the High level CI interface
128
129#define CA_RESET _IO('o', 128)
130#define CA_GET_CAP _IOR('o', 129, ca_caps_t)
131#define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t)
132#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t)
133#define CA_GET_MSG _IOR('o', 132, ca_msg_t)
134#define CA_SEND_MSG _IOW('o', 133, ca_msg_t)
135#define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
136#define CA_SET_PID _IOW('o', 135, ca_pid_t)
137
138
139On querying the device, the device yields information thus
140
141CA_GET_SLOT_INFO
142----------------------------
143Command = [info]
144APP: Number=[1]
145APP: Type=[1]
146APP: flags=[1]
147APP: CI High level interface
148APP: CA/CI Module Present
149
150CA_GET_CAP
151----------------------------
152Command = [caps]
153APP: Slots=[1]
154APP: Type=[1]
155APP: Descrambler keys=[16]
156APP: Type=[1]
157
158CA_SEND_MSG
159----------------------------
160Descriptors(Program Level)=[ 09 06 06 04 05 50 ff f1]
161Found CA descriptor @ program level
162
163(20) ES type=[2] ES pid=[201] ES length =[0 (0x0)]
164(25) ES type=[4] ES pid=[301] ES length =[0 (0x0)]
165ca_message length is 25 (0x19) bytes
166EN50221 CA MSG=[ 9f 80 32 19 03 01 2d d1 f0 08 01 09 06 06 04 05 50 ff f1 02 e0 c9 00 00 04 e1 2d 00 00]
167
168
169Not all ioctl's are implemented in the driver from the API, the other
170features of the hardware that cannot be implemented by the API are achieved
171using the CA_GET_MSG and CA_SEND_MSG ioctls. An EN50221 style wrapper is
172used to exchange the data to maintain compatibility with other hardware.
173
174
175/* a message to/from a CI-CAM */
176typedef struct ca_msg {
177 unsigned int index;
178 unsigned int type;
179 unsigned int length;
180 unsigned char msg[256];
181} ca_msg_t;
182
183
184The flow of data can be described thus,
185
186
187
188
189
190 App (User)
191 -----
192 parse
193 |
194 |
195 v
196 en50221 APDU (package)
197 --------------------------------------
198 | | | High Level CI driver
199 | | |
200 | v |
201 | en50221 APDU (unpackage) |
202 | | |
203 | | |
204 | v |
205 | sanity checks |
206 | | |
207 | | |
208 | v |
209 | do (H/W dep) |
210 --------------------------------------
211 | Hardware
212 |
213 v
214
215
216
217
218The High Level CI interface uses the EN50221 DVB standard, following a
219standard ensures futureproofness.
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware
index 3ffdcb394299..a750f0101d9d 100644
--- a/Documentation/dvb/get_dvb_firmware
+++ b/Documentation/dvb/get_dvb_firmware
@@ -107,7 +107,7 @@ sub tda10045 {
107sub tda10046 { 107sub tda10046 {
108 my $sourcefile = "tt_budget_217g.zip"; 108 my $sourcefile = "tt_budget_217g.zip";
109 my $url = "http://www.technotrend.de/new/217g/$sourcefile"; 109 my $url = "http://www.technotrend.de/new/217g/$sourcefile";
110 my $hash = "a25b579e37109af60f4a36c37893957c"; 110 my $hash = "6a7e1e2f2644b162ff0502367553c72d";
111 my $outfile = "dvb-fe-tda10046.fw"; 111 my $outfile = "dvb-fe-tda10046.fw";
112 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); 112 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
113 113
@@ -115,7 +115,7 @@ sub tda10046 {
115 115
116 wgetfile($sourcefile, $url); 116 wgetfile($sourcefile, $url);
117 unzip($sourcefile, $tmpdir); 117 unzip($sourcefile, $tmpdir);
118 extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x3f731, 24479, "$tmpdir/fwtmp"); 118 extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x3f731, 24478, "$tmpdir/fwtmp");
119 verify("$tmpdir/fwtmp", $hash); 119 verify("$tmpdir/fwtmp", $hash);
120 copy("$tmpdir/fwtmp", $outfile); 120 copy("$tmpdir/fwtmp", $outfile);
121 121
diff --git a/Documentation/fb/intelfb.txt b/Documentation/fb/intelfb.txt
new file mode 100644
index 000000000000..c12d39a23c3d
--- /dev/null
+++ b/Documentation/fb/intelfb.txt
@@ -0,0 +1,135 @@
1Intel 830M/845G/852GM/855GM/865G/915G Framebuffer driver
2================================================================
3
4A. Introduction
5 This is a framebuffer driver for various Intel 810/815 compatible
6graphics devices. These would include:
7
8 Intel 830M
9 Intel 810E845G
10 Intel 852GM
11 Intel 855GM
12 Intel 865G
13 Intel 915G
14
15B. List of available options
16
17 a. "video=intelfb"
18 enables the intelfb driver
19
20 Recommendation: required
21
22 b. "mode=<xres>x<yres>[-<bpp>][@<refresh>]"
23 select mode
24
25 Recommendation: user preference
26 (default = 1024x768-32@70)
27
28 c. "vram=<value>"
29 select amount of system RAM in MB to allocate for the video memory
30 if not enough RAM was already allocated by the BIOS.
31
32 Recommendation: 1 - 4 MB.
33 (default = 4 MB)
34
35 d. "voffset=<value>"
36 select at what offset in MB of the logical memory to allocate the
37 framebuffer memory. The intent is to avoid the memory blocks
38 used by standard graphics applications (XFree86). Depending on your
39 usage, adjust the value up or down, (0 for maximum usage, 63/127 MB
40 for the least amount). Note, an arbitrary setting may conflict
41 with XFree86.
42
43 Recommendation: do not set
44 (default = 48 MB)
45
46 e. "accel"
47 enable text acceleration. This can be enabled/reenabled anytime
48 by using 'fbset -accel true/false'.
49
50 Recommendation: enable
51 (default = set)
52
53 f. "hwcursor"
54 enable cursor acceleration.
55
56 Recommendation: enable
57 (default = set)
58
59 g. "mtrr"
60 enable MTRR. This allows data transfers to the framebuffer memory
61 to occur in bursts which can significantly increase performance.
62 Not very helpful with the intel chips because of 'shared memory'.
63
64 Recommendation: set
65 (default = set)
66
67 h. "fixed"
68 disable mode switching.
69
70 Recommendation: do not set
71 (default = not set)
72
73 The binary parameters can be unset with a "no" prefix, example "noaccel".
74 The default parameter (not named) is the mode.
75
76C. Kernel booting
77
78Separate each option/option-pair by commas (,) and the option from its value
79with an equals sign (=) as in the following:
80
81video=i810fb:option1,option2=value2
82
83Sample Usage
84------------
85
86In /etc/lilo.conf, add the line:
87
88append="video=intelfb:800x600-32@75,accel,hwcursor,vram=8"
89
90This will initialize the framebuffer to 800x600 at 32bpp and 75Hz. The
91framebuffer will use 8 MB of System RAM. hw acceleration of text and cursor
92will be enabled.
93
94D. Module options
95
96 The module parameters are essentially similar to the kernel
97parameters. The main difference is that you need to include a Boolean value
98(1 for TRUE, and 0 for FALSE) for those options which don't need a value.
99
100Example, to enable MTRR, include "mtrr=1".
101
102Sample Usage
103------------
104
105Using the same setup as described above, load the module like this:
106
107 modprobe intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1
108
109Or just add the following to /etc/modprobe.conf
110
111 options intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1
112
113and just do a
114
115 modprobe intelfb
116
117
118E. Acknowledgment:
119
120 1. Geert Uytterhoeven - his excellent howto and the virtual
121 framebuffer driver code made this possible.
122
123 2. Jeff Hartmann for his agpgart code.
124
125 3. David Dawes for his original kernel 2.4 code.
126
127 4. The X developers. Insights were provided just by reading the
128 XFree86 source code.
129
130 5. Antonino A. Daplas for his inspiring i810fb driver.
131
132 6. Andrew Morton for his kernel patches maintenance.
133
134###########################
135Sylvain
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index d3c52dd24a2a..26414bc87c65 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -63,3 +63,33 @@ Why: Outside of Linux, the only implementations of anything even
63 people, who might be using implementations that I am not aware 63 people, who might be using implementations that I am not aware
64 of, to adjust to this upcoming change. 64 of, to adjust to this upcoming change.
65Who: Paul E. McKenney <paulmck@us.ibm.com> 65Who: Paul E. McKenney <paulmck@us.ibm.com>
66
67---------------------------
68
69What: IEEE1394 Audio and Music Data Transmission Protocol driver,
70 Connection Management Procedures driver
71When: November 2005
72Files: drivers/ieee1394/{amdtp,cmp}*
73Why: These are incomplete, have never worked, and are better implemented
74 in userland via raw1394 (see http://freebob.sourceforge.net/ for
75 example.)
76Who: Jody McIntyre <scjody@steamballoon.com>
77
78---------------------------
79
80What: raw1394: requests of type RAW1394_REQ_ISO_SEND, RAW1394_REQ_ISO_LISTEN
81When: November 2005
82Why: Deprecated in favour of the new ioctl-based rawiso interface, which is
83 more efficient. You should really be using libraw1394 for raw1394
84 access anyway.
85Who: Jody McIntyre <scjody@steamballoon.com>
86
87---------------------------
88
89What: i2c sysfs name change: in1_ref, vid deprecated in favour of cpu0_vid
90When: November 2005
91Files: drivers/i2c/chips/adm1025.c, drivers/i2c/chips/adm1026.c
92Why: Match the other drivers' name for the same function, duplicate names
93 will be available until removal of old names.
94Who: Grant Coady <gcoady@gmail.com>
95
diff --git a/Documentation/filesystems/isofs.txt b/Documentation/filesystems/isofs.txt
index f64a10506689..424585ff6ea1 100644
--- a/Documentation/filesystems/isofs.txt
+++ b/Documentation/filesystems/isofs.txt
@@ -26,7 +26,11 @@ Mount options unique to the isofs filesystem.
26 mode=xxx Sets the permissions on files to xxx 26 mode=xxx Sets the permissions on files to xxx
27 nojoliet Ignore Joliet extensions if they are present. 27 nojoliet Ignore Joliet extensions if they are present.
28 norock Ignore Rock Ridge extensions if they are present. 28 norock Ignore Rock Ridge extensions if they are present.
29 unhide Show hidden files. 29 hide Completely strip hidden files from the file system.
30 showassoc Show files marked with the 'associated' bit
31 unhide Deprecated; showing hidden files is now default;
32 If given, it is a synonym for 'showassoc' which will
33 recreate previous unhide behavior
30 session=x Select number of session on multisession CD 34 session=x Select number of session on multisession CD
31 sbsector=xxx Session begins from sector xxx 35 sbsector=xxx Session begins from sector xxx
32 36
diff --git a/Documentation/filesystems/sysfs-pci.txt b/Documentation/filesystems/sysfs-pci.txt
index e97d024eae77..988a62fae11f 100644
--- a/Documentation/filesystems/sysfs-pci.txt
+++ b/Documentation/filesystems/sysfs-pci.txt
@@ -7,7 +7,6 @@ that support it. For example, a given bus might look like this:
7 |-- 0000:17:00.0 7 |-- 0000:17:00.0
8 | |-- class 8 | |-- class
9 | |-- config 9 | |-- config
10 | |-- detach_state
11 | |-- device 10 | |-- device
12 | |-- irq 11 | |-- irq
13 | |-- local_cpus 12 | |-- local_cpus
@@ -19,7 +18,7 @@ that support it. For example, a given bus might look like this:
19 | |-- subsystem_device 18 | |-- subsystem_device
20 | |-- subsystem_vendor 19 | |-- subsystem_vendor
21 | `-- vendor 20 | `-- vendor
22 `-- detach_state 21 `-- ...
23 22
24The topmost element describes the PCI domain and bus number. In this case, 23The topmost element describes the PCI domain and bus number. In this case,
25the domain number is 0000 and the bus number is 17 (both values are in hex). 24the domain number is 0000 and the bus number is 17 (both values are in hex).
@@ -31,7 +30,6 @@ files, each with their own function.
31 ---- -------- 30 ---- --------
32 class PCI class (ascii, ro) 31 class PCI class (ascii, ro)
33 config PCI config space (binary, rw) 32 config PCI config space (binary, rw)
34 detach_state connection status (bool, rw)
35 device PCI device (ascii, ro) 33 device PCI device (ascii, ro)
36 irq IRQ number (ascii, ro) 34 irq IRQ number (ascii, ro)
37 local_cpus nearby CPU mask (cpumask, ro) 35 local_cpus nearby CPU mask (cpumask, ro)
@@ -85,4 +83,4 @@ useful return codes should be provided.
85 83
86Legacy resources are protected by the HAVE_PCI_LEGACY define. Platforms 84Legacy resources are protected by the HAVE_PCI_LEGACY define. Platforms
87wishing to support legacy functionality should define it and provide 85wishing to support legacy functionality should define it and provide
88pci_legacy_read, pci_legacy_write and pci_mmap_legacy_page_range functions. \ No newline at end of file 86pci_legacy_read, pci_legacy_write and pci_mmap_legacy_page_range functions.
diff --git a/Documentation/filesystems/sysfs.txt b/Documentation/filesystems/sysfs.txt
index 60f6c2c4d477..dc276598a65a 100644
--- a/Documentation/filesystems/sysfs.txt
+++ b/Documentation/filesystems/sysfs.txt
@@ -214,7 +214,7 @@ Other notes:
214 214
215A very simple (and naive) implementation of a device attribute is: 215A very simple (and naive) implementation of a device attribute is:
216 216
217static ssize_t show_name(struct device * dev, char * buf) 217static ssize_t show_name(struct device *dev, struct device_attribute *attr, char *buf)
218{ 218{
219 return sprintf(buf,"%s\n",dev->name); 219 return sprintf(buf,"%s\n",dev->name);
220} 220}
diff --git a/Documentation/filesystems/tmpfs.txt b/Documentation/filesystems/tmpfs.txt
index 417e3095fe39..0d783c504ead 100644
--- a/Documentation/filesystems/tmpfs.txt
+++ b/Documentation/filesystems/tmpfs.txt
@@ -71,8 +71,8 @@ can be changed on remount. The size parameter also accepts a suffix %
71to limit this tmpfs instance to that percentage of your physical RAM: 71to limit this tmpfs instance to that percentage of your physical RAM:
72the default, when neither size nor nr_blocks is specified, is size=50% 72the default, when neither size nor nr_blocks is specified, is size=50%
73 73
74If both nr_blocks (or size) and nr_inodes are set to 0, neither blocks 74If nr_blocks=0 (or size=0), blocks will not be limited in that instance;
75nor inodes will be limited in that instance. It is generally unwise to 75if nr_inodes=0, inodes will not be limited. It is generally unwise to
76mount with such options, since it allows any user with write access to 76mount with such options, since it allows any user with write access to
77use up all the memory on the machine; but enhances the scalability of 77use up all the memory on the machine; but enhances the scalability of
78that instance in a system with many cpus making intensive use of it. 78that instance in a system with many cpus making intensive use of it.
@@ -97,4 +97,4 @@ RAM/SWAP in 10240 inodes and it is only accessible by root.
97Author: 97Author:
98 Christoph Rohland <cr@sap.com>, 1.12.01 98 Christoph Rohland <cr@sap.com>, 1.12.01
99Updated: 99Updated:
100 Hugh Dickins <hugh@veritas.com>, 01 September 2004 100 Hugh Dickins <hugh@veritas.com>, 13 March 2005
diff --git a/Documentation/i2c/busses/i2c-sis69x b/Documentation/i2c/busses/i2c-sis69x
index 5be48769f65b..b88953dfd580 100644
--- a/Documentation/i2c/busses/i2c-sis69x
+++ b/Documentation/i2c/busses/i2c-sis69x
@@ -42,7 +42,7 @@ I suspect that this driver could be made to work for the following SiS
42chipsets as well: 635, and 635T. If anyone owns a board with those chips 42chipsets as well: 635, and 635T. If anyone owns a board with those chips
43AND is willing to risk crashing & burning an otherwise well-behaved kernel 43AND is willing to risk crashing & burning an otherwise well-behaved kernel
44in the name of progress... please contact me at <mhoffman@lightlink.com> or 44in the name of progress... please contact me at <mhoffman@lightlink.com> or
45via the project's mailing list: <sensors@stimpy.netroedge.com>. Please 45via the project's mailing list: <lm-sensors@lm-sensors.org>. Please
46send bug reports and/or success stories as well. 46send bug reports and/or success stories as well.
47 47
48 48
diff --git a/Documentation/i2c/chips/adm1021 b/Documentation/i2c/chips/adm1021
new file mode 100644
index 000000000000..03d02bfb3df1
--- /dev/null
+++ b/Documentation/i2c/chips/adm1021
@@ -0,0 +1,111 @@
1Kernel driver adm1021
2=====================
3
4Supported chips:
5 * Analog Devices ADM1021
6 Prefix: 'adm1021'
7 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
8 Datasheet: Publicly available at the Analog Devices website
9 * Analog Devices ADM1021A/ADM1023
10 Prefix: 'adm1023'
11 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
12 Datasheet: Publicly available at the Analog Devices website
13 * Genesys Logic GL523SM
14 Prefix: 'gl523sm'
15 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
16 Datasheet:
17 * Intel Xeon Processor
18 Prefix: - any other - may require 'force_adm1021' parameter
19 Addresses scanned: none
20 Datasheet: Publicly available at Intel website
21 * Maxim MAX1617
22 Prefix: 'max1617'
23 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
24 Datasheet: Publicly available at the Maxim website
25 * Maxim MAX1617A
26 Prefix: 'max1617a'
27 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
28 Datasheet: Publicly available at the Maxim website
29 * National Semiconductor LM84
30 Prefix: 'lm84'
31 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
32 Datasheet: Publicly available at the National Semiconductor website
33 * Philips NE1617
34 Prefix: 'max1617' (probably detected as a max1617)
35 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
36 Datasheet: Publicly available at the Philips website
37 * Philips NE1617A
38 Prefix: 'max1617' (probably detected as a max1617)
39 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
40 Datasheet: Publicly available at the Philips website
41 * TI THMC10
42 Prefix: 'thmc10'
43 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
44 Datasheet: Publicly available at the TI website
45 * Onsemi MC1066
46 Prefix: 'mc1066'
47 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
48 Datasheet: Publicly available at the Onsemi website
49
50
51Authors:
52 Frodo Looijaard <frodol@dds.nl>,
53 Philip Edelbrock <phil@netroedge.com>
54
55Module Parameters
56-----------------
57
58* read_only: int
59 Don't set any values, read only mode
60
61
62Description
63-----------
64
65The chips supported by this driver are very similar. The Maxim MAX1617 is
66the oldest; it has the problem that it is not very well detectable. The
67MAX1617A solves that. The ADM1021 is a straight clone of the MAX1617A.
68Ditto for the THMC10. From here on, we will refer to all these chips as
69ADM1021-clones.
70
71The ADM1021 and MAX1617A reports a die code, which is a sort of revision
72code. This can help us pinpoint problems; it is not very useful
73otherwise.
74
75ADM1021-clones implement two temperature sensors. One of them is internal,
76and measures the temperature of the chip itself; the other is external and
77is realised in the form of a transistor-like device. A special alarm
78indicates whether the remote sensor is connected.
79
80Each sensor has its own low and high limits. When they are crossed, the
81corresponding alarm is set and remains on as long as the temperature stays
82out of range. Temperatures are measured in degrees Celsius. Measurements
83are possible between -65 and +127 degrees, with a resolution of one degree.
84
85If an alarm triggers, it will remain triggered until the hardware register
86is read at least once. This means that the cause for the alarm may already
87have disappeared!
88
89This driver only updates its values each 1.5 seconds; reading it more often
90will do no harm, but will return 'old' values. It is possible to make
91ADM1021-clones do faster measurements, but there is really no good reason
92for that.
93
94Xeon support
95------------
96
97Some Xeon processors have real max1617, adm1021, or compatible chips
98within them, with two temperature sensors.
99
100Other Xeons have chips with only one sensor.
101
102If you have a Xeon, and the adm1021 module loads, and both temperatures
103appear valid, then things are good.
104
105If the adm1021 module doesn't load, you should try this:
106 modprobe adm1021 force_adm1021=BUS,ADDRESS
107 ADDRESS can only be 0x18, 0x1a, 0x29, 0x2b, 0x4c, or 0x4e.
108
109If you have dual Xeons you may have appear to have two separate
110adm1021-compatible chips, or two single-temperature sensors, at distinct
111addresses.
diff --git a/Documentation/i2c/chips/adm1025 b/Documentation/i2c/chips/adm1025
new file mode 100644
index 000000000000..39d2b781b5d6
--- /dev/null
+++ b/Documentation/i2c/chips/adm1025
@@ -0,0 +1,51 @@
1Kernel driver adm1025
2=====================
3
4Supported chips:
5 * Analog Devices ADM1025, ADM1025A
6 Prefix: 'adm1025'
7 Addresses scanned: I2C 0x2c - 0x2e
8 Datasheet: Publicly available at the Analog Devices website
9 * Philips NE1619
10 Prefix: 'ne1619'
11 Addresses scanned: I2C 0x2c - 0x2d
12 Datasheet: Publicly available at the Philips website
13
14The NE1619 presents some differences with the original ADM1025:
15 * Only two possible addresses (0x2c - 0x2d).
16 * No temperature offset register, but we don't use it anyway.
17 * No INT mode for pin 16. We don't play with it anyway.
18
19Authors:
20 Chen-Yuan Wu <gwu@esoft.com>,
21 Jean Delvare <khali@linux-fr.org>
22
23Description
24-----------
25
26(This is from Analog Devices.) The ADM1025 is a complete system hardware
27monitor for microprocessor-based systems, providing measurement and limit
28comparison of various system parameters. Five voltage measurement inputs
29are provided, for monitoring +2.5V, +3.3V, +5V and +12V power supplies and
30the processor core voltage. The ADM1025 can monitor a sixth power-supply
31voltage by measuring its own VCC. One input (two pins) is dedicated to a
32remote temperature-sensing diode and an on-chip temperature sensor allows
33ambient temperature to be monitored.
34
35One specificity of this chip is that the pin 11 can be hardwired in two
36different manners. It can act as the +12V power-supply voltage analog
37input, or as the a fifth digital entry for the VID reading (bit 4). It's
38kind of strange since both are useful, and the reason for designing the
39chip that way is obscure at least to me. The bit 5 of the configuration
40register can be used to define how the chip is hardwired. Please note that
41it is not a choice you have to make as the user. The choice was already
42made by your motherboard's maker. If the configuration bit isn't set
43properly, you'll have a wrong +12V reading or a wrong VID reading. The way
44the driver handles that is to preserve this bit through the initialization
45process, assuming that the BIOS set it up properly beforehand. If it turns
46out not to be true in some cases, we'll provide a module parameter to force
47modes.
48
49This driver also supports the ADM1025A, which differs from the ADM1025
50only in that it has "open-drain VID inputs while the ADM1025 has on-chip
51100k pull-ups on the VID inputs". It doesn't make any difference for us.
diff --git a/Documentation/i2c/chips/adm1026 b/Documentation/i2c/chips/adm1026
new file mode 100644
index 000000000000..473c689d7924
--- /dev/null
+++ b/Documentation/i2c/chips/adm1026
@@ -0,0 +1,93 @@
1Kernel driver adm1026
2=====================
3
4Supported chips:
5 * Analog Devices ADM1026
6 Prefix: 'adm1026'
7 Addresses scanned: I2C 0x2c, 0x2d, 0x2e
8 Datasheet: Publicly available at the Analog Devices website
9 http://www.analog.com/en/prod/0,,766_825_ADM1026,00.html
10
11Authors:
12 Philip Pokorny <ppokorny@penguincomputing.com> for Penguin Computing
13 Justin Thiessen <jthiessen@penguincomputing.com>
14
15Module Parameters
16-----------------
17
18* gpio_input: int array (min = 1, max = 17)
19 List of GPIO pins (0-16) to program as inputs
20* gpio_output: int array (min = 1, max = 17)
21 List of GPIO pins (0-16) to program as outputs
22* gpio_inverted: int array (min = 1, max = 17)
23 List of GPIO pins (0-16) to program as inverted
24* gpio_normal: int array (min = 1, max = 17)
25 List of GPIO pins (0-16) to program as normal/non-inverted
26* gpio_fan: int array (min = 1, max = 8)
27 List of GPIO pins (0-7) to program as fan tachs
28
29
30Description
31-----------
32
33This driver implements support for the Analog Devices ADM1026. Analog
34Devices calls it a "complete thermal system management controller."
35
36The ADM1026 implements three (3) temperature sensors, 17 voltage sensors,
3716 general purpose digital I/O lines, eight (8) fan speed sensors (8-bit),
38an analog output and a PWM output along with limit, alarm and mask bits for
39all of the above. There is even 8k bytes of EEPROM memory on chip.
40
41Temperatures are measured in degrees Celsius. There are two external
42sensor inputs and one internal sensor. Each sensor has a high and low
43limit. If the limit is exceeded, an interrupt (#SMBALERT) can be
44generated. The interrupts can be masked. In addition, there are over-temp
45limits for each sensor. If this limit is exceeded, the #THERM output will
46be asserted. The current temperature and limits have a resolution of 1
47degree.
48
49Fan rotation speeds are reported in RPM (rotations per minute) but measured
50in counts of a 22.5kHz internal clock. Each fan has a high limit which
51corresponds to a minimum fan speed. If the limit is exceeded, an interrupt
52can be generated. Each fan can be programmed to divide the reference clock
53by 1, 2, 4 or 8. Not all RPM values can accurately be represented, so some
54rounding is done. With a divider of 8, the slowest measurable speed of a
55two pulse per revolution fan is 661 RPM.
56
57There are 17 voltage sensors. An alarm is triggered if the voltage has
58crossed a programmable minimum or maximum limit. Note that minimum in this
59case always means 'closest to zero'; this is important for negative voltage
60measurements. Several inputs have integrated attenuators so they can measure
61higher voltages directly. 3.3V, 5V, 12V, -12V and battery voltage all have
62dedicated inputs. There are several inputs scaled to 0-3V full-scale range
63for SCSI terminator power. The remaining inputs are not scaled and have
64a 0-2.5V full-scale range. A 2.5V or 1.82V reference voltage is provided
65for negative voltage measurements.
66
67If an alarm triggers, it will remain triggered until the hardware register
68is read at least once. This means that the cause for the alarm may already
69have disappeared! Note that in the current implementation, all hardware
70registers are read whenever any data is read (unless it is less than 2.0
71seconds since the last update). This means that you can easily miss
72once-only alarms.
73
74The ADM1026 measures continuously. Analog inputs are measured about 4
75times a second. Fan speed measurement time depends on fan speed and
76divisor. It can take as long as 1.5 seconds to measure all fan speeds.
77
78The ADM1026 has the ability to automatically control fan speed based on the
79temperature sensor inputs. Both the PWM output and the DAC output can be
80used to control fan speed. Usually only one of these two outputs will be
81used. Write the minimum PWM or DAC value to the appropriate control
82register. Then set the low temperature limit in the tmin values for each
83temperature sensor. The range of control is fixed at 20 °C, and the
84largest difference between current and tmin of the temperature sensors sets
85the control output. See the datasheet for several example circuits for
86controlling fan speed with the PWM and DAC outputs. The fan speed sensors
87do not have PWM compensation, so it is probably best to control the fan
88voltage from the power lead rather than on the ground lead.
89
90The datasheet shows an example application with VID signals attached to
91GPIO lines. Unfortunately, the chip may not be connected to the VID lines
92in this way. The driver assumes that the chips *is* connected this way to
93get a VID voltage.
diff --git a/Documentation/i2c/chips/adm1031 b/Documentation/i2c/chips/adm1031
new file mode 100644
index 000000000000..130a38382b98
--- /dev/null
+++ b/Documentation/i2c/chips/adm1031
@@ -0,0 +1,35 @@
1Kernel driver adm1031
2=====================
3
4Supported chips:
5 * Analog Devices ADM1030
6 Prefix: 'adm1030'
7 Addresses scanned: I2C 0x2c to 0x2e
8 Datasheet: Publicly available at the Analog Devices website
9 http://products.analog.com/products/info.asp?product=ADM1030
10
11 * Analog Devices ADM1031
12 Prefix: 'adm1031'
13 Addresses scanned: I2C 0x2c to 0x2e
14 Datasheet: Publicly available at the Analog Devices website
15 http://products.analog.com/products/info.asp?product=ADM1031
16
17Authors:
18 Alexandre d'Alton <alex@alexdalton.org>
19 Jean Delvare <khali@linux-fr.org>
20
21Description
22-----------
23
24The ADM1030 and ADM1031 are digital temperature sensors and fan controllers.
25They sense their own temperature as well as the temperature of up to one
26(ADM1030) or two (ADM1031) external diodes.
27
28All temperature values are given in degrees Celsius. Resolution is 0.5
29degree for the local temperature, 0.125 degree for the remote temperatures.
30
31Each temperature channel has its own high and low limits, plus a critical
32limit.
33
34The ADM1030 monitors a single fan speed, while the ADM1031 monitors up to
35two. Each fan channel has its own low speed limit.
diff --git a/Documentation/i2c/chips/adm9240 b/Documentation/i2c/chips/adm9240
new file mode 100644
index 000000000000..35f618f32896
--- /dev/null
+++ b/Documentation/i2c/chips/adm9240
@@ -0,0 +1,177 @@
1Kernel driver adm9240
2=====================
3
4Supported chips:
5 * Analog Devices ADM9240
6 Prefix: 'adm9240'
7 Addresses scanned: I2C 0x2c - 0x2f
8 Datasheet: Publicly available at the Analog Devices website
9 http://www.analog.com/UploadedFiles/Data_Sheets/79857778ADM9240_0.pdf
10
11 * Dallas Semiconductor DS1780
12 Prefix: 'ds1780'
13 Addresses scanned: I2C 0x2c - 0x2f
14 Datasheet: Publicly available at the Dallas Semiconductor (Maxim) website
15 http://pdfserv.maxim-ic.com/en/ds/DS1780.pdf
16
17 * National Semiconductor LM81
18 Prefix: 'lm81'
19 Addresses scanned: I2C 0x2c - 0x2f
20 Datasheet: Publicly available at the National Semiconductor website
21 http://www.national.com/ds.cgi/LM/LM81.pdf
22
23Authors:
24 Frodo Looijaard <frodol@dds.nl>,
25 Philip Edelbrock <phil@netroedge.com>,
26 Michiel Rook <michiel@grendelproject.nl>,
27 Grant Coady <gcoady@gmail.com> with guidance
28 from Jean Delvare <khali@linux-fr.org>
29
30Interface
31---------
32The I2C addresses listed above assume BIOS has not changed the
33chip MSB 5-bit address. Each chip reports a unique manufacturer
34identification code as well as the chip revision/stepping level.
35
36Description
37-----------
38[From ADM9240] The ADM9240 is a complete system hardware monitor for
39microprocessor-based systems, providing measurement and limit comparison
40of up to four power supplies and two processor core voltages, plus
41temperature, two fan speeds and chassis intrusion. Measured values can
42be read out via an I2C-compatible serial System Management Bus, and values
43for limit comparisons can be programmed in over the same serial bus. The
44high speed successive approximation ADC allows frequent sampling of all
45analog channels to ensure a fast interrupt response to any out-of-limit
46measurement.
47
48The ADM9240, DS1780 and LM81 are register compatible, the following
49details are common to the three chips. Chip differences are described
50after this section.
51
52
53Measurements
54------------
55The measurement cycle
56
57The adm9240 driver will take a measurement reading no faster than once
58each two seconds. User-space may read sysfs interface faster than the
59measurement update rate and will receive cached data from the most
60recent measurement.
61
62ADM9240 has a very fast 320us temperature and voltage measurement cycle
63with independent fan speed measurement cycles counting alternating rising
64edges of the fan tacho inputs.
65
66DS1780 measurement cycle is about once per second including fan speed.
67
68LM81 measurement cycle is about once per 400ms including fan speed.
69The LM81 12-bit extended temperature measurement mode is not supported.
70
71Temperature
72-----------
73On chip temperature is reported as degrees Celsius as 9-bit signed data
74with resolution of 0.5 degrees Celsius. High and low temperature limits
75are 8-bit signed data with resolution of one degree Celsius.
76
77Temperature alarm is asserted once the temperature exceeds the high limit,
78and is cleared when the temperature falls below the temp1_max_hyst value.
79
80Fan Speed
81---------
82Two fan tacho inputs are provided, the ADM9240 gates an internal 22.5kHz
83clock via a divider to an 8-bit counter. Fan speed (rpm) is calculated by:
84
85rpm = (22500 * 60) / (count * divider)
86
87Automatic fan clock divider
88
89 * User sets 0 to fan_min limit
90 - low speed alarm is disabled
91 - fan clock divider not changed
92 - auto fan clock adjuster enabled for valid fan speed reading
93
94 * User sets fan_min limit too low
95 - low speed alarm is enabled
96 - fan clock divider set to max
97 - fan_min set to register value 254 which corresponds
98 to 664 rpm on adm9240
99 - low speed alarm will be asserted if fan speed is
100 less than minimum measurable speed
101 - auto fan clock adjuster disabled
102
103 * User sets reasonable fan speed
104 - low speed alarm is enabled
105 - fan clock divider set to suit fan_min
106 - auto fan clock adjuster enabled: adjusts fan_min
107
108 * User sets unreasonably high low fan speed limit
109 - resolution of the low speed limit may be reduced
110 - alarm will be asserted
111 - auto fan clock adjuster enabled: adjusts fan_min
112
113 * fan speed may be displayed as zero until the auto fan clock divider
114 adjuster brings fan speed clock divider back into chip measurement
115 range, this will occur within a few measurement cycles.
116
117Analog Output
118-------------
119An analog output provides a 0 to 1.25 volt signal intended for an external
120fan speed amplifier circuit. The analog output is set to maximum value on
121power up or reset. This doesn't do much on the test Intel SE440BX-2.
122
123Voltage Monitor
124
125Voltage (IN) measurement is internally scaled:
126
127 nr label nominal maximum resolution
128 mV mV mV
129 0 +2.5V 2500 3320 13.0
130 1 Vccp1 2700 3600 14.1
131 2 +3.3V 3300 4380 17.2
132 3 +5V 5000 6640 26.0
133 4 +12V 12000 15940 62.5
134 5 Vccp2 2700 3600 14.1
135
136The reading is an unsigned 8-bit value, nominal voltage measurement is
137represented by a reading of 192, being 3/4 of the measurement range.
138
139An alarm is asserted for any voltage going below or above the set limits.
140
141The driver reports and accepts voltage limits scaled to the above table.
142
143VID Monitor
144-----------
145The chip has five inputs to read the 5-bit VID and reports the mV value
146based on detected CPU type.
147
148Chassis Intrusion
149-----------------
150An alarm is asserted when the CI pin goes active high. The ADM9240
151Datasheet has an example of an external temperature sensor driving
152this pin. On an Intel SE440BX-2 the Chassis Intrusion header is
153connected to a normally open switch.
154
155The ADM9240 provides an internal open drain on this line, and may output
156a 20 ms active low pulse to reset an external Chassis Intrusion latch.
157
158Clear the CI latch by writing value 1 to the sysfs chassis_clear file.
159
160Alarm flags reported as 16-bit word
161
162 bit label comment
163 --- ------------- --------------------------
164 0 +2.5 V_Error high or low limit exceeded
165 1 VCCP_Error high or low limit exceeded
166 2 +3.3 V_Error high or low limit exceeded
167 3 +5 V_Error high or low limit exceeded
168 4 Temp_Error temperature error
169 6 FAN1_Error fan low limit exceeded
170 7 FAN2_Error fan low limit exceeded
171 8 +12 V_Error high or low limit exceeded
172 9 VCCP2_Error high or low limit exceeded
173 12 Chassis_Error CI pin went high
174
175Remaining bits are reserved and thus undefined. It is important to note
176that alarm bits may be cleared on read, user-space may latch alarms and
177provide the end-user with a method to clear alarm memory.
diff --git a/Documentation/i2c/chips/asb100 b/Documentation/i2c/chips/asb100
new file mode 100644
index 000000000000..ab7365e139be
--- /dev/null
+++ b/Documentation/i2c/chips/asb100
@@ -0,0 +1,72 @@
1Kernel driver asb100
2====================
3
4Supported Chips:
5 * Asus ASB100 and ASB100-A "Bach"
6 Prefix: 'asb100'
7 Addresses scanned: I2C 0x2d
8 Datasheet: none released
9
10Author: Mark M. Hoffman <mhoffman@lightlink.com>
11
12Description
13-----------
14
15This driver implements support for the Asus ASB100 and ASB100-A "Bach".
16These are custom ASICs available only on Asus mainboards. Asus refuses to
17supply a datasheet for these chips. Thanks go to many people who helped
18investigate their hardware, including:
19
20Vitaly V. Bursov
21Alexander van Kaam (author of MBM for Windows)
22Bertrik Sikken
23
24The ASB100 implements seven voltage sensors, three fan rotation speed
25sensors, four temperature sensors, VID lines and alarms. In addition to
26these, the ASB100-A also implements a single PWM controller for fans 2 and
273 (i.e. one setting controls both.) If you have a plain ASB100, the PWM
28controller will simply not work (or maybe it will for you... it doesn't for
29me).
30
31Temperatures are measured and reported in degrees Celsius.
32
33Fan speeds are reported in RPM (rotations per minute). An alarm is
34triggered if the rotation speed has dropped below a programmable limit.
35
36Voltage sensors (also known as IN sensors) report values in volts.
37
38The VID lines encode the core voltage value: the voltage level your
39processor should work with. This is hardcoded by the mainboard and/or
40processor itself. It is a value in volts.
41
42Alarms: (TODO question marks indicate may or may not work)
43
440x0001 => in0 (?)
450x0002 => in1 (?)
460x0004 => in2
470x0008 => in3
480x0010 => temp1 (1)
490x0020 => temp2
500x0040 => fan1
510x0080 => fan2
520x0100 => in4
530x0200 => in5 (?) (2)
540x0400 => in6 (?) (2)
550x0800 => fan3
560x1000 => chassis switch
570x2000 => temp3
58
59Alarm Notes:
60
61(1) This alarm will only trigger if the hysteresis value is 127C.
62I.e. it behaves the same as w83781d.
63
64(2) The min and max registers for these values appear to
65be read-only or otherwise stuck at 0x00.
66
67TODO:
68* Experiment with fan divisors > 8.
69* Experiment with temp. sensor types.
70* Are there really 13 voltage inputs? Probably not...
71* Cleanups, no doubt...
72
diff --git a/Documentation/i2c/chips/ds1621 b/Documentation/i2c/chips/ds1621
new file mode 100644
index 000000000000..1fee6f1e6bc5
--- /dev/null
+++ b/Documentation/i2c/chips/ds1621
@@ -0,0 +1,108 @@
1Kernel driver ds1621
2====================
3
4Supported chips:
5 * Dallas Semiconductor DS1621
6 Prefix: 'ds1621'
7 Addresses scanned: I2C 0x48 - 0x4f
8 Datasheet: Publicly available at the Dallas Semiconductor website
9 http://www.dalsemi.com/
10 * Dallas Semiconductor DS1625
11 Prefix: 'ds1621'
12 Addresses scanned: I2C 0x48 - 0x4f
13 Datasheet: Publicly available at the Dallas Semiconductor website
14 http://www.dalsemi.com/
15
16Authors:
17 Christian W. Zuckschwerdt <zany@triq.net>
18 valuable contributions by Jan M. Sendler <sendler@sendler.de>
19 ported to 2.6 by Aurelien Jarno <aurelien@aurel32.net>
20 with the help of Jean Delvare <khali@linux-fr.org>
21
22Module Parameters
23------------------
24
25* polarity int
26 Output's polarity: 0 = active high, 1 = active low
27
28Description
29-----------
30
31The DS1621 is a (one instance) digital thermometer and thermostat. It has
32both high and low temperature limits which can be user defined (i.e.
33programmed into non-volatile on-chip registers). Temperature range is -55
34degree Celsius to +125 in 0.5 increments. You may convert this into a
35Fahrenheit range of -67 to +257 degrees with 0.9 steps. If polarity
36parameter is not provided, original value is used.
37
38As for the thermostat, behavior can also be programmed using the polarity
39toggle. On the one hand ("heater"), the thermostat output of the chip,
40Tout, will trigger when the low limit temperature is met or underrun and
41stays high until the high limit is met or exceeded. On the other hand
42("cooler"), vice versa. That way "heater" equals "active low", whereas
43"conditioner" equals "active high". Please note that the DS1621 data sheet
44is somewhat misleading in this point since setting the polarity bit does
45not simply invert Tout.
46
47A second thing is that, during extensive testing, Tout showed a tolerance
48of up to +/- 0.5 degrees even when compared against precise temperature
49readings. Be sure to have a high vs. low temperature limit gap of al least
501.0 degree Celsius to avoid Tout "bouncing", though!
51
52As for alarms, you can read the alarm status of the DS1621 via the 'alarms'
53/sys file interface. The result consists mainly of bit 6 and 5 of the
54configuration register of the chip; bit 6 (0x40 or 64) is the high alarm
55bit and bit 5 (0x20 or 32) the low one. These bits are set when the high or
56low limits are met or exceeded and are reset by the module as soon as the
57respective temperature ranges are left.
58
59The alarm registers are in no way suitable to find out about the actual
60status of Tout. They will only tell you about its history, whether or not
61any of the limits have ever been met or exceeded since last power-up or
62reset. Be aware: When testing, it showed that the status of Tout can change
63with neither of the alarms set.
64
65Temperature conversion of the DS1621 takes up to 1000ms; internal access to
66non-volatile registers may last for 10ms or below.
67
68High Accuracy Temperature Reading
69---------------------------------
70
71As said before, the temperature issued via the 9-bit i2c-bus data is
72somewhat arbitrary. Internally, the temperature conversion is of a
73different kind that is explained (not so...) well in the DS1621 data sheet.
74To cut the long story short: Inside the DS1621 there are two oscillators,
75both of them biassed by a temperature coefficient.
76
77Higher resolution of the temperature reading can be achieved using the
78internal projection, which means taking account of REG_COUNT and REG_SLOPE
79(the driver manages them):
80
81Taken from Dallas Semiconductors App Note 068: 'Increasing Temperature
82Resolution on the DS1620' and App Note 105: 'High Resolution Temperature
83Measurement with Dallas Direct-to-Digital Temperature Sensors'
84
85- Read the 9-bit temperature and strip the LSB (Truncate the .5 degs)
86- The resulting value is TEMP_READ.
87- Then, read REG_COUNT.
88- And then, REG_SLOPE.
89
90 TEMP = TEMP_READ - 0.25 + ((REG_SLOPE - REG_COUNT) / REG_SLOPE)
91
92Note that this is what the DONE bit in the DS1621 configuration register is
93good for: Internally, one temperature conversion takes up to 1000ms. Before
94that conversion is complete you will not be able to read valid things out
95of REG_COUNT and REG_SLOPE. The DONE bit, as you may have guessed by now,
96tells you whether the conversion is complete ("done", in plain English) and
97thus, whether the values you read are good or not.
98
99The DS1621 has two modes of operation: "Continuous" conversion, which can
100be understood as the default stand-alone mode where the chip gets the
101temperature and controls external devices via its Tout pin or tells other
102i2c's about it if they care. The other mode is called "1SHOT", that means
103that it only figures out about the temperature when it is explicitly told
104to do so; this can be seen as power saving mode.
105
106Now if you want to read REG_COUNT and REG_SLOPE, you have to either stop
107the continuous conversions until the contents of these registers are valid,
108or, in 1SHOT mode, you have to have one conversion made.
diff --git a/Documentation/i2c/chips/eeprom b/Documentation/i2c/chips/eeprom
new file mode 100644
index 000000000000..f7e8104b5764
--- /dev/null
+++ b/Documentation/i2c/chips/eeprom
@@ -0,0 +1,96 @@
1Kernel driver eeprom
2====================
3
4Supported chips:
5 * Any EEPROM chip in the designated address range
6 Prefix: 'eeprom'
7 Addresses scanned: I2C 0x50 - 0x57
8 Datasheets: Publicly available from:
9 Atmel (www.atmel.com),
10 Catalyst (www.catsemi.com),
11 Fairchild (www.fairchildsemi.com),
12 Microchip (www.microchip.com),
13 Philips (www.semiconductor.philips.com),
14 Rohm (www.rohm.com),
15 ST (www.st.com),
16 Xicor (www.xicor.com),
17 and others.
18
19 Chip Size (bits) Address
20 24C01 1K 0x50 (shadows at 0x51 - 0x57)
21 24C01A 1K 0x50 - 0x57 (Typical device on DIMMs)
22 24C02 2K 0x50 - 0x57
23 24C04 4K 0x50, 0x52, 0x54, 0x56
24 (additional data at 0x51, 0x53, 0x55, 0x57)
25 24C08 8K 0x50, 0x54 (additional data at 0x51, 0x52,
26 0x53, 0x55, 0x56, 0x57)
27 24C16 16K 0x50 (additional data at 0x51 - 0x57)
28 Sony 2K 0x57
29
30 Atmel 34C02B 2K 0x50 - 0x57, SW write protect at 0x30-37
31 Catalyst 34FC02 2K 0x50 - 0x57, SW write protect at 0x30-37
32 Catalyst 34RC02 2K 0x50 - 0x57, SW write protect at 0x30-37
33 Fairchild 34W02 2K 0x50 - 0x57, SW write protect at 0x30-37
34 Microchip 24AA52 2K 0x50 - 0x57, SW write protect at 0x30-37
35 ST M34C02 2K 0x50 - 0x57, SW write protect at 0x30-37
36
37
38Authors:
39 Frodo Looijaard <frodol@dds.nl>,
40 Philip Edelbrock <phil@netroedge.com>,
41 Jean Delvare <khali@linux-fr.org>,
42 Greg Kroah-Hartman <greg@kroah.com>,
43 IBM Corp.
44
45Description
46-----------
47
48This is a simple EEPROM module meant to enable reading the first 256 bytes
49of an EEPROM (on a SDRAM DIMM for example). However, it will access serial
50EEPROMs on any I2C adapter. The supported devices are generically called
5124Cxx, and are listed above; however the numbering for these
52industry-standard devices may vary by manufacturer.
53
54This module was a programming exercise to get used to the new project
55organization laid out by Frodo, but it should be at least completely
56effective for decoding the contents of EEPROMs on DIMMs.
57
58DIMMS will typically contain a 24C01A or 24C02, or the 34C02 variants.
59The other devices will not be found on a DIMM because they respond to more
60than one address.
61
62DDC Monitors may contain any device. Often a 24C01, which responds to all 8
63addresses, is found.
64
65Recent Sony Vaio laptops have an EEPROM at 0x57. We couldn't get the
66specification, so it is guess work and far from being complete.
67
68The Microchip 24AA52/24LCS52, ST M34C02, and others support an additional
69software write protect register at 0x30 - 0x37 (0x20 less than the memory
70location). The chip responds to "write quick" detection at this address but
71does not respond to byte reads. If this register is present, the lower 128
72bytes of the memory array are not write protected. Any byte data write to
73this address will write protect the memory array permanently, and the
74device will no longer respond at the 0x30-37 address. The eeprom driver
75does not support this register.
76
77Lacking functionality:
78
79* Full support for larger devices (24C04, 24C08, 24C16). These are not
80typically found on a PC. These devices will appear as separate devices at
81multiple addresses.
82
83* Support for really large devices (24C32, 24C64, 24C128, 24C256, 24C512).
84These devices require two-byte address fields and are not supported.
85
86* Enable Writing. Again, no technical reason why not, but making it easy
87to change the contents of the EEPROMs (on DIMMs anyway) also makes it easy
88to disable the DIMMs (potentially preventing the computer from booting)
89until the values are restored somehow.
90
91Use:
92
93After inserting the module (and any other required SMBus/i2c modules), you
94should have some EEPROM directories in /sys/bus/i2c/devices/* of names such
95as "0-0050". Inside each of these is a series of files, the eeprom file
96contains the binary data from EEPROM.
diff --git a/Documentation/i2c/chips/fscher b/Documentation/i2c/chips/fscher
new file mode 100644
index 000000000000..64031659aff3
--- /dev/null
+++ b/Documentation/i2c/chips/fscher
@@ -0,0 +1,169 @@
1Kernel driver fscher
2====================
3
4Supported chips:
5 * Fujitsu-Siemens Hermes chip
6 Prefix: 'fscher'
7 Addresses scanned: I2C 0x73
8
9Authors:
10 Reinhard Nissl <rnissl@gmx.de> based on work
11 from Hermann Jung <hej@odn.de>,
12 Frodo Looijaard <frodol@dds.nl>,
13 Philip Edelbrock <phil@netroedge.com>
14
15Description
16-----------
17
18This driver implements support for the Fujitsu-Siemens Hermes chip. It is
19described in the 'Register Set Specification BMC Hermes based Systemboard'
20from Fujitsu-Siemens.
21
22The Hermes chip implements a hardware-based system management, e.g. for
23controlling fan speed and core voltage. There is also a watchdog counter on
24the chip which can trigger an alarm and even shut the system down.
25
26The chip provides three temperature values (CPU, motherboard and
27auxiliary), three voltage values (+12V, +5V and battery) and three fans
28(power supply, CPU and auxiliary).
29
30Temperatures are measured in degrees Celsius. The resolution is 1 degree.
31
32Fan rotation speeds are reported in RPM (rotations per minute). The value
33can be divided by a programmable divider (1, 2 or 4) which is stored on
34the chip.
35
36Voltage sensors (also known as "in" sensors) report their values in volts.
37
38All values are reported as final values from the driver. There is no need
39for further calculations.
40
41
42Detailed description
43--------------------
44
45Below you'll find a single line description of all the bit values. With
46this information, you're able to decode e. g. alarms, wdog, etc. To make
47use of the watchdog, you'll need to set the watchdog time and enable the
48watchdog. After that it is necessary to restart the watchdog time within
49the specified period of time, or a system reset will occur.
50
51* revision
52 READING & 0xff = 0x??: HERMES revision identification
53
54* alarms
55 READING & 0x80 = 0x80: CPU throttling active
56 READING & 0x80 = 0x00: CPU running at full speed
57
58 READING & 0x10 = 0x10: software event (see control:1)
59 READING & 0x10 = 0x00: no software event
60
61 READING & 0x08 = 0x08: watchdog event (see wdog:2)
62 READING & 0x08 = 0x00: no watchdog event
63
64 READING & 0x02 = 0x02: thermal event (see temp*:1)
65 READING & 0x02 = 0x00: no thermal event
66
67 READING & 0x01 = 0x01: fan event (see fan*:1)
68 READING & 0x01 = 0x00: no fan event
69
70 READING & 0x13 ! 0x00: ALERT LED is flashing
71
72* control
73 READING & 0x01 = 0x01: software event
74 READING & 0x01 = 0x00: no software event
75
76 WRITING & 0x01 = 0x01: set software event
77 WRITING & 0x01 = 0x00: clear software event
78
79* watchdog_control
80 READING & 0x80 = 0x80: power off on watchdog event while thermal event
81 READING & 0x80 = 0x00: watchdog power off disabled (just system reset enabled)
82
83 READING & 0x40 = 0x40: watchdog timebase 60 seconds (see also wdog:1)
84 READING & 0x40 = 0x00: watchdog timebase 2 seconds
85
86 READING & 0x10 = 0x10: watchdog enabled
87 READING & 0x10 = 0x00: watchdog disabled
88
89 WRITING & 0x80 = 0x80: enable "power off on watchdog event while thermal event"
90 WRITING & 0x80 = 0x00: disable "power off on watchdog event while thermal event"
91
92 WRITING & 0x40 = 0x40: set watchdog timebase to 60 seconds
93 WRITING & 0x40 = 0x00: set watchdog timebase to 2 seconds
94
95 WRITING & 0x20 = 0x20: disable watchdog
96
97 WRITING & 0x10 = 0x10: enable watchdog / restart watchdog time
98
99* watchdog_state
100 READING & 0x02 = 0x02: watchdog system reset occurred
101 READING & 0x02 = 0x00: no watchdog system reset occurred
102
103 WRITING & 0x02 = 0x02: clear watchdog event
104
105* watchdog_preset
106 READING & 0xff = 0x??: configured watch dog time in units (see wdog:3 0x40)
107
108 WRITING & 0xff = 0x??: configure watch dog time in units
109
110* in* (0: +5V, 1: +12V, 2: onboard 3V battery)
111 READING: actual voltage value
112
113* temp*_status (1: CPU sensor, 2: onboard sensor, 3: auxiliary sensor)
114 READING & 0x02 = 0x02: thermal event (overtemperature)
115 READING & 0x02 = 0x00: no thermal event
116
117 READING & 0x01 = 0x01: sensor is working
118 READING & 0x01 = 0x00: sensor is faulty
119
120 WRITING & 0x02 = 0x02: clear thermal event
121
122* temp*_input (1: CPU sensor, 2: onboard sensor, 3: auxiliary sensor)
123 READING: actual temperature value
124
125* fan*_status (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
126 READING & 0x04 = 0x04: fan event (fan fault)
127 READING & 0x04 = 0x00: no fan event
128
129 WRITING & 0x04 = 0x04: clear fan event
130
131* fan*_div (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
132 Divisors 2,4 and 8 are supported, both for reading and writing
133
134* fan*_pwm (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
135 READING & 0xff = 0x00: fan may be switched off
136 READING & 0xff = 0x01: fan must run at least at minimum speed (supply: 6V)
137 READING & 0xff = 0xff: fan must run at maximum speed (supply: 12V)
138 READING & 0xff = 0x??: fan must run at least at given speed (supply: 6V..12V)
139
140 WRITING & 0xff = 0x00: fan may be switched off
141 WRITING & 0xff = 0x01: fan must run at least at minimum speed (supply: 6V)
142 WRITING & 0xff = 0xff: fan must run at maximum speed (supply: 12V)
143 WRITING & 0xff = 0x??: fan must run at least at given speed (supply: 6V..12V)
144
145* fan*_input (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
146 READING: actual RPM value
147
148
149Limitations
150-----------
151
152* Measuring fan speed
153It seems that the chip counts "ripples" (typical fans produce 2 ripples per
154rotation while VERAX fans produce 18) in a 9-bit register. This register is
155read out every second, then the ripple prescaler (2, 4 or 8) is applied and
156the result is stored in the 8 bit output register. Due to the limitation of
157the counting register to 9 bits, it is impossible to measure a VERAX fan
158properly (even with a prescaler of 8). At its maximum speed of 3500 RPM the
159fan produces 1080 ripples per second which causes the counting register to
160overflow twice, leading to only 186 RPM.
161
162* Measuring input voltages
163in2 ("battery") reports the voltage of the onboard lithium battery and not
164+3.3V from the power supply.
165
166* Undocumented features
167Fujitsu-Siemens Computers has not documented all features of the chip so
168far. Their software, System Guard, shows that there are a still some
169features which cannot be controlled by this implementation.
diff --git a/Documentation/i2c/chips/gl518sm b/Documentation/i2c/chips/gl518sm
new file mode 100644
index 000000000000..ce0881883bca
--- /dev/null
+++ b/Documentation/i2c/chips/gl518sm
@@ -0,0 +1,74 @@
1Kernel driver gl518sm
2=====================
3
4Supported chips:
5 * Genesys Logic GL518SM release 0x00
6 Prefix: 'gl518sm'
7 Addresses scanned: I2C 0x2c and 0x2d
8 Datasheet: http://www.genesyslogic.com/pdf
9 * Genesys Logic GL518SM release 0x80
10 Prefix: 'gl518sm'
11 Addresses scanned: I2C 0x2c and 0x2d
12 Datasheet: http://www.genesyslogic.com/pdf
13
14Authors:
15 Frodo Looijaard <frodol@dds.nl>,
16 Kyösti Mälkki <kmalkki@cc.hut.fi>
17 Hong-Gunn Chew <hglinux@gunnet.org>
18 Jean Delvare <khali@linux-fr.org>
19
20Description
21-----------
22
23IMPORTANT:
24
25For the revision 0x00 chip, the in0, in1, and in2 values (+5V, +3V,
26and +12V) CANNOT be read. This is a limitation of the chip, not the driver.
27
28This driver supports the Genesys Logic GL518SM chip. There are at least
29two revision of this chip, which we call revision 0x00 and 0x80. Revision
300x80 chips support the reading of all voltages and revision 0x00 only
31for VIN3.
32
33The GL518SM implements one temperature sensor, two fan rotation speed
34sensors, and four voltage sensors. It can report alarms through the
35computer speakers.
36
37Temperatures are measured in degrees Celsius. An alarm goes off while the
38temperature is above the over temperature limit, and has not yet dropped
39below the hysteresis limit. The alarm always reflects the current
40situation. Measurements are guaranteed between -10 degrees and +110
41degrees, with a accuracy of +/-3 degrees.
42
43Rotation speeds are reported in RPM (rotations per minute). An alarm is
44triggered if the rotation speed has dropped below a programmable limit. In
45case when you have selected to turn fan1 off, no fan1 alarm is triggered.
46
47Fan readings can be divided by a programmable divider (1, 2, 4 or 8) to
48give the readings more range or accuracy. Not all RPM values can
49accurately be represented, so some rounding is done. With a divider
50of 2, the lowest representable value is around 1900 RPM.
51
52Voltage sensors (also known as VIN sensors) report their values in volts.
53An alarm is triggered if the voltage has crossed a programmable minimum or
54maximum limit. Note that minimum in this case always means 'closest to
55zero'; this is important for negative voltage measurements. The VDD input
56measures voltages between 0.000 and 5.865 volt, with a resolution of 0.023
57volt. The other inputs measure voltages between 0.000 and 4.845 volt, with
58a resolution of 0.019 volt. Note that revision 0x00 chips do not support
59reading the current voltage of any input except for VIN3; limit setting and
60alarms work fine, though.
61
62When an alarm is triggered, you can be warned by a beeping signal through your
63computer speaker. It is possible to enable all beeping globally, or only the
64beeping for some alarms.
65
66If an alarm triggers, it will remain triggered until the hardware register
67is read at least once (except for temperature alarms). This means that the
68cause for the alarm may already have disappeared! Note that in the current
69implementation, all hardware registers are read whenever any data is read
70(unless it is less than 1.5 seconds since the last update). This means that
71you can easily miss once-only alarms.
72
73The GL518SM only updates its values each 1.5 seconds; reading it more often
74will do no harm, but will return 'old' values.
diff --git a/Documentation/i2c/chips/it87 b/Documentation/i2c/chips/it87
new file mode 100644
index 000000000000..0d0195040d88
--- /dev/null
+++ b/Documentation/i2c/chips/it87
@@ -0,0 +1,96 @@
1Kernel driver it87
2==================
3
4Supported chips:
5 * IT8705F
6 Prefix: 'it87'
7 Addresses scanned: from Super I/O config space, or default ISA 0x290 (8 I/O ports)
8 Datasheet: Publicly available at the ITE website
9 http://www.ite.com.tw/
10 * IT8712F
11 Prefix: 'it8712'
12 Addresses scanned: I2C 0x28 - 0x2f
13 from Super I/O config space, or default ISA 0x290 (8 I/O ports)
14 Datasheet: Publicly available at the ITE website
15 http://www.ite.com.tw/
16 * SiS950 [clone of IT8705F]
17 Prefix: 'sis950'
18 Addresses scanned: from Super I/O config space, or default ISA 0x290 (8 I/O ports)
19 Datasheet: No longer be available
20
21Author: Christophe Gauthron <chrisg@0-in.com>
22
23
24Module Parameters
25-----------------
26
27* update_vbat: int
28
29 0 if vbat should report power on value, 1 if vbat should be updated after
30 each read. Default is 0. On some boards the battery voltage is provided
31 by either the battery or the onboard power supply. Only the first reading
32 at power on will be the actual battery voltage (which the chip does
33 automatically). On other boards the battery voltage is always fed to
34 the chip so can be read at any time. Excessive reading may decrease
35 battery life but no information is given in the datasheet.
36
37* fix_pwm_polarity int
38
39 Force PWM polarity to active high (DANGEROUS). Some chips are
40 misconfigured by BIOS - PWM values would be inverted. This option tries
41 to fix this. Please contact your BIOS manufacturer and ask him for fix.
42
43Description
44-----------
45
46This driver implements support for the IT8705F, IT8712F and SiS950 chips.
47
48This driver also supports IT8712F, which adds SMBus access, and a VID
49input, used to report the Vcore voltage of the Pentium processor.
50The IT8712F additionally features VID inputs.
51
52These chips are 'Super I/O chips', supporting floppy disks, infrared ports,
53joysticks and other miscellaneous stuff. For hardware monitoring, they
54include an 'environment controller' with 3 temperature sensors, 3 fan
55rotation speed sensors, 8 voltage sensors, and associated alarms.
56
57Temperatures are measured in degrees Celsius. An alarm is triggered once
58when the Overtemperature Shutdown limit is crossed.
59
60Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
61triggered if the rotation speed has dropped below a programmable limit. Fan
62readings can be divided by a programmable divider (1, 2, 4 or 8) to give the
63readings more range or accuracy. Not all RPM values can accurately be
64represented, so some rounding is done. With a divider of 2, the lowest
65representable value is around 2600 RPM.
66
67Voltage sensors (also known as IN sensors) report their values in volts. An
68alarm is triggered if the voltage has crossed a programmable minimum or
69maximum limit. Note that minimum in this case always means 'closest to
70zero'; this is important for negative voltage measurements. All voltage
71inputs can measure voltages between 0 and 4.08 volts, with a resolution of
720.016 volt. The battery voltage in8 does not have limit registers.
73
74The VID lines (IT8712F only) encode the core voltage value: the voltage
75level your processor should work with. This is hardcoded by the mainboard
76and/or processor itself. It is a value in volts.
77
78If an alarm triggers, it will remain triggered until the hardware register
79is read at least once. This means that the cause for the alarm may already
80have disappeared! Note that in the current implementation, all hardware
81registers are read whenever any data is read (unless it is less than 1.5
82seconds since the last update). This means that you can easily miss
83once-only alarms.
84
85The IT87xx only updates its values each 1.5 seconds; reading it more often
86will do no harm, but will return 'old' values.
87
88To change sensor N to a thermistor, 'echo 2 > tempN_type' where N is 1, 2,
89or 3. To change sensor N to a thermal diode, 'echo 3 > tempN_type'.
90Give 0 for unused sensor. Any other value is invalid. To configure this at
91startup, consult lm_sensors's /etc/sensors.conf. (2 = thermistor;
923 = thermal diode)
93
94The fan speed control features are limited to manual PWM mode. Automatic
95"Smart Guardian" mode control handling is not implemented. However
96if you want to go for "manual mode" just write 1 to pwmN_enable.
diff --git a/Documentation/i2c/chips/lm63 b/Documentation/i2c/chips/lm63
new file mode 100644
index 000000000000..31660bf97979
--- /dev/null
+++ b/Documentation/i2c/chips/lm63
@@ -0,0 +1,57 @@
1Kernel driver lm63
2==================
3
4Supported chips:
5 * National Semiconductor LM63
6 Prefix: 'lm63'
7 Addresses scanned: I2C 0x4c
8 Datasheet: Publicly available at the National Semiconductor website
9 http://www.national.com/pf/LM/LM63.html
10
11Author: Jean Delvare <khali@linux-fr.org>
12
13Thanks go to Tyan and especially Alex Buckingham for setting up a remote
14access to their S4882 test platform for this driver.
15 http://www.tyan.com/
16
17Description
18-----------
19
20The LM63 is a digital temperature sensor with integrated fan monitoring
21and control.
22
23The LM63 is basically an LM86 with fan speed monitoring and control
24capabilities added. It misses some of the LM86 features though:
25 - No low limit for local temperature.
26 - No critical limit for local temperature.
27 - Critical limit for remote temperature can be changed only once. We
28 will consider that the critical limit is read-only.
29
30The datasheet isn't very clear about what the tachometer reading is.
31
32An explanation from National Semiconductor: The two lower bits of the read
33value have to be masked out. The value is still 16 bit in width.
34
35All temperature values are given in degrees Celsius. Resolution is 1.0
36degree for the local temperature, 0.125 degree for the remote temperature.
37
38The fan speed is measured using a tachometer. Contrary to most chips which
39store the value in an 8-bit register and have a selectable clock divider
40to make sure that the result will fit in the register, the LM63 uses 16-bit
41value for measuring the speed of the fan. It can measure fan speeds down to
4283 RPM, at least in theory.
43
44Note that the pin used for fan monitoring is shared with an alert out
45function. Depending on how the board designer wanted to use the chip, fan
46speed monitoring will or will not be possible. The proper chip configuration
47is left to the BIOS, and the driver will blindly trust it.
48
49A PWM output can be used to control the speed of the fan. The LM63 has two
50PWM modes: manual and automatic. Automatic mode is not fully implemented yet
51(you cannot define your custom PWM/temperature curve), and mode change isn't
52supported either.
53
54The lm63 driver will not update its values more frequently than every
55second; reading them more often will do no harm, but will return 'old'
56values.
57
diff --git a/Documentation/i2c/chips/lm75 b/Documentation/i2c/chips/lm75
new file mode 100644
index 000000000000..8e6356fe05d7
--- /dev/null
+++ b/Documentation/i2c/chips/lm75
@@ -0,0 +1,65 @@
1Kernel driver lm75
2==================
3
4Supported chips:
5 * National Semiconductor LM75
6 Prefix: 'lm75'
7 Addresses scanned: I2C 0x48 - 0x4f
8 Datasheet: Publicly available at the National Semiconductor website
9 http://www.national.com/
10 * Dallas Semiconductor DS75
11 Prefix: 'lm75'
12 Addresses scanned: I2C 0x48 - 0x4f
13 Datasheet: Publicly available at the Dallas Semiconductor website
14 http://www.maxim-ic.com/
15 * Dallas Semiconductor DS1775
16 Prefix: 'lm75'
17 Addresses scanned: I2C 0x48 - 0x4f
18 Datasheet: Publicly available at the Dallas Semiconductor website
19 http://www.maxim-ic.com/
20 * Maxim MAX6625, MAX6626
21 Prefix: 'lm75'
22 Addresses scanned: I2C 0x48 - 0x4b
23 Datasheet: Publicly available at the Maxim website
24 http://www.maxim-ic.com/
25 * Microchip (TelCom) TCN75
26 Prefix: 'lm75'
27 Addresses scanned: I2C 0x48 - 0x4f
28 Datasheet: Publicly available at the Microchip website
29 http://www.microchip.com/
30
31Author: Frodo Looijaard <frodol@dds.nl>
32
33Description
34-----------
35
36The LM75 implements one temperature sensor. Limits can be set through the
37Overtemperature Shutdown register and Hysteresis register. Each value can be
38set and read to half-degree accuracy.
39An alarm is issued (usually to a connected LM78) when the temperature
40gets higher then the Overtemperature Shutdown value; it stays on until
41the temperature falls below the Hysteresis value.
42All temperatures are in degrees Celsius, and are guaranteed within a
43range of -55 to +125 degrees.
44
45The LM75 only updates its values each 1.5 seconds; reading it more often
46will do no harm, but will return 'old' values.
47
48The LM75 is usually used in combination with LM78-like chips, to measure
49the temperature of the processor(s).
50
51The DS75, DS1775, MAX6625, and MAX6626 are supported as well.
52They are not distinguished from an LM75. While most of these chips
53have three additional bits of accuracy (12 vs. 9 for the LM75),
54the additional bits are not supported. Not only that, but these chips will
55not be detected if not in 9-bit precision mode (use the force parameter if
56needed).
57
58The TCN75 is supported as well, and is not distinguished from an LM75.
59
60The LM75 is essentially an industry standard; there may be other
61LM75 clones not listed here, with or without various enhancements,
62that are supported.
63
64The LM77 is not supported, contrary to what we pretended for a long time.
65Both chips are simply not compatible, value encoding differs.
diff --git a/Documentation/i2c/chips/lm77 b/Documentation/i2c/chips/lm77
new file mode 100644
index 000000000000..57c3a46d6370
--- /dev/null
+++ b/Documentation/i2c/chips/lm77
@@ -0,0 +1,22 @@
1Kernel driver lm77
2==================
3
4Supported chips:
5 * National Semiconductor LM77
6 Prefix: 'lm77'
7 Addresses scanned: I2C 0x48 - 0x4b
8 Datasheet: Publicly available at the National Semiconductor website
9 http://www.national.com/
10
11Author: Andras BALI <drewie@freemail.hu>
12
13Description
14-----------
15
16The LM77 implements one temperature sensor. The temperature
17sensor incorporates a band-gap type temperature sensor,
1810-bit ADC, and a digital comparator with user-programmable upper
19and lower limit values.
20
21Limits can be set through the Overtemperature Shutdown register and
22Hysteresis register.
diff --git a/Documentation/i2c/chips/lm78 b/Documentation/i2c/chips/lm78
new file mode 100644
index 000000000000..357086ed7f64
--- /dev/null
+++ b/Documentation/i2c/chips/lm78
@@ -0,0 +1,82 @@
1Kernel driver lm78
2==================
3
4Supported chips:
5 * National Semiconductor LM78
6 Prefix: 'lm78'
7 Addresses scanned: I2C 0x20 - 0x2f, ISA 0x290 (8 I/O ports)
8 Datasheet: Publicly available at the National Semiconductor website
9 http://www.national.com/
10 * National Semiconductor LM78-J
11 Prefix: 'lm78-j'
12 Addresses scanned: I2C 0x20 - 0x2f, ISA 0x290 (8 I/O ports)
13 Datasheet: Publicly available at the National Semiconductor website
14 http://www.national.com/
15 * National Semiconductor LM79
16 Prefix: 'lm79'
17 Addresses scanned: I2C 0x20 - 0x2f, ISA 0x290 (8 I/O ports)
18 Datasheet: Publicly available at the National Semiconductor website
19 http://www.national.com/
20
21Author: Frodo Looijaard <frodol@dds.nl>
22
23Description
24-----------
25
26This driver implements support for the National Semiconductor LM78, LM78-J
27and LM79. They are described as 'Microprocessor System Hardware Monitors'.
28
29There is almost no difference between the three supported chips. Functionally,
30the LM78 and LM78-J are exactly identical. The LM79 has one more VID line,
31which is used to report the lower voltages newer Pentium processors use.
32From here on, LM7* means either of these three types.
33
34The LM7* implements one temperature sensor, three fan rotation speed sensors,
35seven voltage sensors, VID lines, alarms, and some miscellaneous stuff.
36
37Temperatures are measured in degrees Celsius. An alarm is triggered once
38when the Overtemperature Shutdown limit is crossed; it is triggered again
39as soon as it drops below the Hysteresis value. A more useful behavior
40can be found by setting the Hysteresis value to +127 degrees Celsius; in
41this case, alarms are issued during all the time when the actual temperature
42is above the Overtemperature Shutdown value. Measurements are guaranteed
43between -55 and +125 degrees, with a resolution of 1 degree.
44
45Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
46triggered if the rotation speed has dropped below a programmable limit. Fan
47readings can be divided by a programmable divider (1, 2, 4 or 8) to give
48the readings more range or accuracy. Not all RPM values can accurately be
49represented, so some rounding is done. With a divider of 2, the lowest
50representable value is around 2600 RPM.
51
52Voltage sensors (also known as IN sensors) report their values in volts.
53An alarm is triggered if the voltage has crossed a programmable minimum
54or maximum limit. Note that minimum in this case always means 'closest to
55zero'; this is important for negative voltage measurements. All voltage
56inputs can measure voltages between 0 and 4.08 volts, with a resolution
57of 0.016 volt.
58
59The VID lines encode the core voltage value: the voltage level your processor
60should work with. This is hardcoded by the mainboard and/or processor itself.
61It is a value in volts. When it is unconnected, you will often find the
62value 3.50 V here.
63
64In addition to the alarms described above, there are a couple of additional
65ones. There is a BTI alarm, which gets triggered when an external chip has
66crossed its limits. Usually, this is connected to all LM75 chips; if at
67least one crosses its limits, this bit gets set. The CHAS alarm triggers
68if your computer case is open. The FIFO alarms should never trigger; it
69indicates an internal error. The SMI_IN alarm indicates some other chip
70has triggered an SMI interrupt. As we do not use SMI interrupts at all,
71this condition usually indicates there is a problem with some other
72device.
73
74If an alarm triggers, it will remain triggered until the hardware register
75is read at least once. This means that the cause for the alarm may
76already have disappeared! Note that in the current implementation, all
77hardware registers are read whenever any data is read (unless it is less
78than 1.5 seconds since the last update). This means that you can easily
79miss once-only alarms.
80
81The LM7* only updates its values each 1.5 seconds; reading it more often
82will do no harm, but will return 'old' values.
diff --git a/Documentation/i2c/chips/lm80 b/Documentation/i2c/chips/lm80
new file mode 100644
index 000000000000..cb5b407ba3e6
--- /dev/null
+++ b/Documentation/i2c/chips/lm80
@@ -0,0 +1,56 @@
1Kernel driver lm80
2==================
3
4Supported chips:
5 * National Semiconductor LM80
6 Prefix: 'lm80'
7 Addresses scanned: I2C 0x28 - 0x2f
8 Datasheet: Publicly available at the National Semiconductor website
9 http://www.national.com/
10
11Authors:
12 Frodo Looijaard <frodol@dds.nl>,
13 Philip Edelbrock <phil@netroedge.com>
14
15Description
16-----------
17
18This driver implements support for the National Semiconductor LM80.
19It is described as a 'Serial Interface ACPI-Compatible Microprocessor
20System Hardware Monitor'.
21
22The LM80 implements one temperature sensor, two fan rotation speed sensors,
23seven voltage sensors, alarms, and some miscellaneous stuff.
24
25Temperatures are measured in degrees Celsius. There are two sets of limits
26which operate independently. When the HOT Temperature Limit is crossed,
27this will cause an alarm that will be reasserted until the temperature
28drops below the HOT Hysteresis. The Overtemperature Shutdown (OS) limits
29should work in the same way (but this must be checked; the datasheet
30is unclear about this). Measurements are guaranteed between -55 and
31+125 degrees. The current temperature measurement has a resolution of
320.0625 degrees; the limits have a resolution of 1 degree.
33
34Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
35triggered if the rotation speed has dropped below a programmable limit. Fan
36readings can be divided by a programmable divider (1, 2, 4 or 8) to give
37the readings more range or accuracy. Not all RPM values can accurately be
38represented, so some rounding is done. With a divider of 2, the lowest
39representable value is around 2600 RPM.
40
41Voltage sensors (also known as IN sensors) report their values in volts.
42An alarm is triggered if the voltage has crossed a programmable minimum
43or maximum limit. Note that minimum in this case always means 'closest to
44zero'; this is important for negative voltage measurements. All voltage
45inputs can measure voltages between 0 and 2.55 volts, with a resolution
46of 0.01 volt.
47
48If an alarm triggers, it will remain triggered until the hardware register
49is read at least once. This means that the cause for the alarm may
50already have disappeared! Note that in the current implementation, all
51hardware registers are read whenever any data is read (unless it is less
52than 2.0 seconds since the last update). This means that you can easily
53miss once-only alarms.
54
55The LM80 only updates its values each 1.5 seconds; reading it more often
56will do no harm, but will return 'old' values.
diff --git a/Documentation/i2c/chips/lm83 b/Documentation/i2c/chips/lm83
new file mode 100644
index 000000000000..061d9ed8ff43
--- /dev/null
+++ b/Documentation/i2c/chips/lm83
@@ -0,0 +1,76 @@
1Kernel driver lm83
2==================
3
4Supported chips:
5 * National Semiconductor LM83
6 Prefix: 'lm83'
7 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
8 Datasheet: Publicly available at the National Semiconductor website
9 http://www.national.com/pf/LM/LM83.html
10
11
12Author: Jean Delvare <khali@linux-fr.org>
13
14Description
15-----------
16
17The LM83 is a digital temperature sensor. It senses its own temperature as
18well as the temperature of up to three external diodes. It is compatible
19with many other devices such as the LM84 and all other ADM1021 clones.
20The main difference between the LM83 and the LM84 in that the later can
21only sense the temperature of one external diode.
22
23Using the adm1021 driver for a LM83 should work, but only two temperatures
24will be reported instead of four.
25
26The LM83 is only found on a handful of motherboards. Both a confirmed
27list and an unconfirmed list follow. If you can confirm or infirm the
28fact that any of these motherboards do actually have an LM83, please
29contact us. Note that the LM90 can easily be misdetected as a LM83.
30
31Confirmed motherboards:
32 SBS P014
33
34Unconfirmed motherboards:
35 Gigabyte GA-8IK1100
36 Iwill MPX2
37 Soltek SL-75DRV5
38
39The driver has been successfully tested by Magnus Forsström, who I'd
40like to thank here. More testers will be of course welcome.
41
42The fact that the LM83 is only scarcely used can be easily explained.
43Most motherboards come with more than just temperature sensors for
44health monitoring. They also have voltage and fan rotation speed
45sensors. This means that temperature-only chips are usually used as
46secondary chips coupled with another chip such as an IT8705F or similar
47chip, which provides more features. Since systems usually need three
48temperature sensors (motherboard, processor, power supply) and primary
49chips provide some temperature sensors, the secondary chip, if needed,
50won't have to handle more than two temperatures. Thus, ADM1021 clones
51are sufficient, and there is no need for a four temperatures sensor
52chip such as the LM83. The only case where using an LM83 would make
53sense is on SMP systems, such as the above-mentioned Iwill MPX2,
54because you want an additional temperature sensor for each additional
55CPU.
56
57On the SBS P014, this is different, since the LM83 is the only hardware
58monitoring chipset. One temperature sensor is used for the motherboard
59(actually measuring the LM83's own temperature), one is used for the
60CPU. The two other sensors must be used to measure the temperature of
61two other points of the motherboard. We suspect these points to be the
62north and south bridges, but this couldn't be confirmed.
63
64All temperature values are given in degrees Celsius. Local temperature
65is given within a range of 0 to +85 degrees. Remote temperatures are
66given within a range of 0 to +125 degrees. Resolution is 1.0 degree,
67accuracy is guaranteed to 3.0 degrees (see the datasheet for more
68details).
69
70Each sensor has its own high limit, but the critical limit is common to
71all four sensors. There is no hysteresis mechanism as found on most
72recent temperature sensors.
73
74The lm83 driver will not update its values more frequently than every
75other second; reading them more often will do no harm, but will return
76'old' values.
diff --git a/Documentation/i2c/chips/lm85 b/Documentation/i2c/chips/lm85
new file mode 100644
index 000000000000..9549237530cf
--- /dev/null
+++ b/Documentation/i2c/chips/lm85
@@ -0,0 +1,221 @@
1Kernel driver lm85
2==================
3
4Supported chips:
5 * National Semiconductor LM85 (B and C versions)
6 Prefix: 'lm85'
7 Addresses scanned: I2C 0x2c, 0x2d, 0x2e
8 Datasheet: http://www.national.com/pf/LM/LM85.html
9 * Analog Devices ADM1027
10 Prefix: 'adm1027'
11 Addresses scanned: I2C 0x2c, 0x2d, 0x2e
12 Datasheet: http://www.analog.com/en/prod/0,,766_825_ADM1027,00.html
13 * Analog Devices ADT7463
14 Prefix: 'adt7463'
15 Addresses scanned: I2C 0x2c, 0x2d, 0x2e
16 Datasheet: http://www.analog.com/en/prod/0,,766_825_ADT7463,00.html
17 * SMSC EMC6D100, SMSC EMC6D101
18 Prefix: 'emc6d100'
19 Addresses scanned: I2C 0x2c, 0x2d, 0x2e
20 Datasheet: http://www.smsc.com/main/tools/discontinued/6d100.pdf
21 * SMSC EMC6D102
22 Prefix: 'emc6d102'
23 Addresses scanned: I2C 0x2c, 0x2d, 0x2e
24 Datasheet: http://www.smsc.com/main/catalog/emc6d102.html
25
26Authors:
27 Philip Pokorny <ppokorny@penguincomputing.com>,
28 Frodo Looijaard <frodol@dds.nl>,
29 Richard Barrington <rich_b_nz@clear.net.nz>,
30 Margit Schubert-While <margitsw@t-online.de>,
31 Justin Thiessen <jthiessen@penguincomputing.com>
32
33Description
34-----------
35
36This driver implements support for the National Semiconductor LM85 and
37compatible chips including the Analog Devices ADM1027, ADT7463 and
38SMSC EMC6D10x chips family.
39
40The LM85 uses the 2-wire interface compatible with the SMBUS 2.0
41specification. Using an analog to digital converter it measures three (3)
42temperatures and five (5) voltages. It has four (4) 16-bit counters for
43measuring fan speed. Five (5) digital inputs are provided for sampling the
44VID signals from the processor to the VRM. Lastly, there are three (3) PWM
45outputs that can be used to control fan speed.
46
47The voltage inputs have internal scaling resistors so that the following
48voltage can be measured without external resistors:
49
50 2.5V, 3.3V, 5V, 12V, and CPU core voltage (2.25V)
51
52The temperatures measured are one internal diode, and two remote diodes.
53Remote 1 is generally the CPU temperature. These inputs are designed to
54measure a thermal diode like the one in a Pentium 4 processor in a socket
55423 or socket 478 package. They can also measure temperature using a
56transistor like the 2N3904.
57
58A sophisticated control system for the PWM outputs is designed into the
59LM85 that allows fan speed to be adjusted automatically based on any of the
60three temperature sensors. Each PWM output is individually adjustable and
61programmable. Once configured, the LM85 will adjust the PWM outputs in
62response to the measured temperatures without further host intervention.
63This feature can also be disabled for manual control of the PWM's.
64
65Each of the measured inputs (voltage, temperature, fan speed) has
66corresponding high/low limit values. The LM85 will signal an ALARM if any
67measured value exceeds either limit.
68
69The LM85 samples all inputs continuously. The lm85 driver will not read
70the registers more often than once a second. Further, configuration data is
71only read once each 5 minutes. There is twice as much config data as
72measurements, so this would seem to be a worthwhile optimization.
73
74Special Features
75----------------
76
77The LM85 has four fan speed monitoring modes. The ADM1027 has only two.
78Both have special circuitry to compensate for PWM interactions with the
79TACH signal from the fans. The ADM1027 can be configured to measure the
80speed of a two wire fan, but the input conditioning circuitry is different
81for 3-wire and 2-wire mode. For this reason, the 2-wire fan modes are not
82exposed to user control. The BIOS should initialize them to the correct
83mode. If you've designed your own ADM1027, you'll have to modify the
84init_client function and add an insmod parameter to set this up.
85
86To smooth the response of fans to changes in temperature, the LM85 has an
87optional filter for smoothing temperatures. The ADM1027 has the same
88config option but uses it to rate limit the changes to fan speed instead.
89
90The ADM1027 and ADT7463 have a 10-bit ADC and can therefore measure
91temperatures with 0.25 degC resolution. They also provide an offset to the
92temperature readings that is automatically applied during measurement.
93This offset can be used to zero out any errors due to traces and placement.
94The documentation says that the offset is in 0.25 degC steps, but in
95initial testing of the ADM1027 it was 1.00 degC steps. Analog Devices has
96confirmed this "bug". The ADT7463 is reported to work as described in the
97documentation. The current lm85 driver does not show the offset register.
98
99The ADT7463 has a THERM asserted counter. This counter has a 22.76ms
100resolution and a range of 5.8 seconds. The driver implements a 32-bit
101accumulator of the counter value to extend the range to over a year. The
102counter will stay at it's max value until read.
103
104See the vendor datasheets for more information. There is application note
105from National (AN-1260) with some additional information about the LM85.
106The Analog Devices datasheet is very detailed and describes a procedure for
107determining an optimal configuration for the automatic PWM control.
108
109The SMSC EMC6D100 & EMC6D101 monitor external voltages, temperatures, and
110fan speeds. They use this monitoring capability to alert the system to out
111of limit conditions and can automatically control the speeds of multiple
112fans in a PC or embedded system. The EMC6D101, available in a 24-pin SSOP
113package, and the EMC6D100, available in a 28-pin SSOP package, are designed
114to be register compatible. The EMC6D100 offers all the features of the
115EMC6D101 plus additional voltage monitoring and system control features.
116Unfortunately it is not possible to distinguish between the package
117versions on register level so these additional voltage inputs may read
118zero. The EMC6D102 features addtional ADC bits thus extending precision
119of voltage and temperature channels.
120
121
122Hardware Configurations
123-----------------------
124
125The LM85 can be jumpered for 3 different SMBus addresses. There are
126no other hardware configuration options for the LM85.
127
128The lm85 driver detects both LM85B and LM85C revisions of the chip. See the
129datasheet for a complete description of the differences. Other than
130identifying the chip, the driver behaves no differently with regard to
131these two chips. The LM85B is recommended for new designs.
132
133The ADM1027 and ADT7463 chips have an optional SMBALERT output that can be
134used to signal the chipset in case a limit is exceeded or the temperature
135sensors fail. Individual sensor interrupts can be masked so they won't
136trigger SMBALERT. The SMBALERT output if configured replaces one of the other
137functions (PWM2 or IN0). This functionality is not implemented in current
138driver.
139
140The ADT7463 also has an optional THERM output/input which can be connected
141to the processor PROC_HOT output. If available, the autofan control
142dynamic Tmin feature can be enabled to keep the system temperature within
143spec (just?!) with the least possible fan noise.
144
145Configuration Notes
146-------------------
147
148Besides standard interfaces driver adds following:
149
150* Temperatures and Zones
151
152Each temperature sensor is associated with a Zone. There are three
153sensors and therefore three zones (# 1, 2 and 3). Each zone has the following
154temperature configuration points:
155
156* temp#_auto_temp_off - temperature below which fans should be off or spinning very low.
157* temp#_auto_temp_min - temperature over which fans start to spin.
158* temp#_auto_temp_max - temperature when fans spin at full speed.
159* temp#_auto_temp_crit - temperature when all fans will run full speed.
160
161* PWM Control
162
163There are three PWM outputs. The LM85 datasheet suggests that the
164pwm3 output control both fan3 and fan4. Each PWM can be individually
165configured and assigned to a zone for it's control value. Each PWM can be
166configured individually according to the following options.
167
168* pwm#_auto_pwm_min - this specifies the PWM value for temp#_auto_temp_off
169 temperature. (PWM value from 0 to 255)
170
171* pwm#_auto_pwm_freq - select base frequency of PWM output. You can select
172 in range of 10.0 to 94.0 Hz in .1 Hz units.
173 (Values 100 to 940).
174
175The pwm#_auto_pwm_freq can be set to one of the following 8 values. Setting the
176frequency to a value not on this list, will result in the next higher frequency
177being selected. The actual device frequency may vary slightly from this
178specification as designed by the manufacturer. Consult the datasheet for more
179details. (PWM Frequency values: 100, 150, 230, 300, 380, 470, 620, 940)
180
181* pwm#_auto_pwm_minctl - this flags selects for temp#_auto_temp_off temperature
182 the bahaviour of fans. Write 1 to let fans spinning at
183 pwm#_auto_pwm_min or write 0 to let them off.
184
185NOTE: It has been reported that there is a bug in the LM85 that causes the flag
186to be associated with the zones not the PWMs. This contradicts all the
187published documentation. Setting pwm#_min_ctl in this case actually affects all
188PWMs controlled by zone '#'.
189
190* PWM Controlling Zone selection
191
192* pwm#_auto_channels - controls zone that is associated with PWM
193
194Configuration choices:
195
196 Value Meaning
197 ------ ------------------------------------------------
198 1 Controlled by Zone 1
199 2 Controlled by Zone 2
200 3 Controlled by Zone 3
201 23 Controlled by higher temp of Zone 2 or 3
202 123 Controlled by highest temp of Zone 1, 2 or 3
203 0 PWM always 0% (off)
204 -1 PWM always 100% (full on)
205 -2 Manual control (write to 'pwm#' to set)
206
207The National LM85's have two vendor specific configuration
208features. Tach. mode and Spinup Control. For more details on these,
209see the LM85 datasheet or Application Note AN-1260.
210
211The Analog Devices ADM1027 has several vendor specific enhancements.
212The number of pulses-per-rev of the fans can be set, Tach monitoring
213can be optimized for PWM operation, and an offset can be applied to
214the temperatures to compensate for systemic errors in the
215measurements.
216
217In addition to the ADM1027 features, the ADT7463 also has Tmin control
218and THERM asserted counts. Automatic Tmin control acts to adjust the
219Tmin value to maintain the measured temperature sensor at a specified
220temperature. There isn't much documentation on this feature in the
221ADT7463 data sheet. This is not supported by current driver.
diff --git a/Documentation/i2c/chips/lm87 b/Documentation/i2c/chips/lm87
new file mode 100644
index 000000000000..c952c57f0e11
--- /dev/null
+++ b/Documentation/i2c/chips/lm87
@@ -0,0 +1,73 @@
1Kernel driver lm87
2==================
3
4Supported chips:
5 * National Semiconductor LM87
6 Prefix: 'lm87'
7 Addresses scanned: I2C 0x2c - 0x2f
8 Datasheet: http://www.national.com/pf/LM/LM87.html
9
10Authors:
11 Frodo Looijaard <frodol@dds.nl>,
12 Philip Edelbrock <phil@netroedge.com>,
13 Mark Studebaker <mdsxyz123@yahoo.com>,
14 Stephen Rousset <stephen.rousset@rocketlogix.com>,
15 Dan Eaton <dan.eaton@rocketlogix.com>,
16 Jean Delvare <khali@linux-fr.org>,
17 Original 2.6 port Jeff Oliver
18
19Description
20-----------
21
22This driver implements support for the National Semiconductor LM87.
23
24The LM87 implements up to three temperature sensors, up to two fan
25rotation speed sensors, up to seven voltage sensors, alarms, and some
26miscellaneous stuff.
27
28Temperatures are measured in degrees Celsius. Each input has a high
29and low alarm settings. A high limit produces an alarm when the value
30goes above it, and an alarm is also produced when the value goes below
31the low limit.
32
33Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
34triggered if the rotation speed has dropped below a programmable limit. Fan
35readings can be divided by a programmable divider (1, 2, 4 or 8) to give
36the readings more range or accuracy. Not all RPM values can accurately be
37represented, so some rounding is done. With a divider of 2, the lowest
38representable value is around 2600 RPM.
39
40Voltage sensors (also known as IN sensors) report their values in
41volts. An alarm is triggered if the voltage has crossed a programmable
42minimum or maximum limit. Note that minimum in this case always means
43'closest to zero'; this is important for negative voltage measurements.
44
45If an alarm triggers, it will remain triggered until the hardware register
46is read at least once. This means that the cause for the alarm may
47already have disappeared! Note that in the current implementation, all
48hardware registers are read whenever any data is read (unless it is less
49than 1.0 seconds since the last update). This means that you can easily
50miss once-only alarms.
51
52The lm87 driver only updates its values each 1.0 seconds; reading it more
53often will do no harm, but will return 'old' values.
54
55
56Hardware Configurations
57-----------------------
58
59The LM87 has four pins which can serve one of two possible functions,
60depending on the hardware configuration.
61
62Some functions share pins, so not all functions are available at the same
63time. Which are depends on the hardware setup. This driver assumes that
64the BIOS configured the chip correctly. In that respect, it differs from
65the original driver (from lm_sensors for Linux 2.4), which would force the
66LM87 to an arbitrary, compile-time chosen mode, regardless of the actual
67chipset wiring.
68
69For reference, here is the list of exclusive functions:
70 - in0+in5 (default) or temp3
71 - fan1 (default) or in6
72 - fan2 (default) or in7
73 - VID lines (default) or IRQ lines (not handled by this driver)
diff --git a/Documentation/i2c/chips/lm90 b/Documentation/i2c/chips/lm90
new file mode 100644
index 000000000000..2c4cf39471f4
--- /dev/null
+++ b/Documentation/i2c/chips/lm90
@@ -0,0 +1,121 @@
1Kernel driver lm90
2==================
3
4Supported chips:
5 * National Semiconductor LM90
6 Prefix: 'lm90'
7 Addresses scanned: I2C 0x4c
8 Datasheet: Publicly available at the National Semiconductor website
9 http://www.national.com/pf/LM/LM90.html
10 * National Semiconductor LM89
11 Prefix: 'lm99'
12 Addresses scanned: I2C 0x4c and 0x4d
13 Datasheet: Publicly available at the National Semiconductor website
14 http://www.national.com/pf/LM/LM89.html
15 * National Semiconductor LM99
16 Prefix: 'lm99'
17 Addresses scanned: I2C 0x4c and 0x4d
18 Datasheet: Publicly available at the National Semiconductor website
19 http://www.national.com/pf/LM/LM99.html
20 * National Semiconductor LM86
21 Prefix: 'lm86'
22 Addresses scanned: I2C 0x4c
23 Datasheet: Publicly available at the National Semiconductor website
24 http://www.national.com/pf/LM/LM86.html
25 * Analog Devices ADM1032
26 Prefix: 'adm1032'
27 Addresses scanned: I2C 0x4c
28 Datasheet: Publicly available at the Analog Devices website
29 http://products.analog.com/products/info.asp?product=ADM1032
30 * Analog Devices ADT7461
31 Prefix: 'adt7461'
32 Addresses scanned: I2C 0x4c
33 Datasheet: Publicly available at the Analog Devices website
34 http://products.analog.com/products/info.asp?product=ADT7461
35 Note: Only if in ADM1032 compatibility mode
36 * Maxim MAX6657
37 Prefix: 'max6657'
38 Addresses scanned: I2C 0x4c
39 Datasheet: Publicly available at the Maxim website
40 http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578
41 * Maxim MAX6658
42 Prefix: 'max6657'
43 Addresses scanned: I2C 0x4c
44 Datasheet: Publicly available at the Maxim website
45 http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578
46 * Maxim MAX6659
47 Prefix: 'max6657'
48 Addresses scanned: I2C 0x4c, 0x4d (unsupported 0x4e)
49 Datasheet: Publicly available at the Maxim website
50 http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578
51
52
53Author: Jean Delvare <khali@linux-fr.org>
54
55
56Description
57-----------
58
59The LM90 is a digital temperature sensor. It senses its own temperature as
60well as the temperature of up to one external diode. It is compatible
61with many other devices such as the LM86, the LM89, the LM99, the ADM1032,
62the MAX6657, MAX6658 and the MAX6659 all of which are supported by this driver.
63Note that there is no easy way to differentiate between the last three
64variants. The extra address and features of the MAX6659 are not supported by
65this driver. Additionally, the ADT7461 is supported if found in ADM1032
66compatibility mode.
67
68The specificity of this family of chipsets over the ADM1021/LM84
69family is that it features critical limits with hysteresis, and an
70increased resolution of the remote temperature measurement.
71
72The different chipsets of the family are not strictly identical, although
73very similar. This driver doesn't handle any specific feature for now,
74but could if there ever was a need for it. For reference, here comes a
75non-exhaustive list of specific features:
76
77LM90:
78 * Filter and alert configuration register at 0xBF.
79 * ALERT is triggered by temperatures over critical limits.
80
81LM86 and LM89:
82 * Same as LM90
83 * Better external channel accuracy
84
85LM99:
86 * Same as LM89
87 * External temperature shifted by 16 degrees down
88
89ADM1032:
90 * Consecutive alert register at 0x22.
91 * Conversion averaging.
92 * Up to 64 conversions/s.
93 * ALERT is triggered by open remote sensor.
94
95ADT7461
96 * Extended temperature range (breaks compatibility)
97 * Lower resolution for remote temperature
98
99MAX6657 and MAX6658:
100 * Remote sensor type selection
101
102MAX6659
103 * Selectable address
104 * Second critical temperature limit
105 * Remote sensor type selection
106
107All temperature values are given in degrees Celsius. Resolution
108is 1.0 degree for the local temperature, 0.125 degree for the remote
109temperature.
110
111Each sensor has its own high and low limits, plus a critical limit.
112Additionally, there is a relative hysteresis value common to both critical
113values. To make life easier to user-space applications, two absolute values
114are exported, one for each channel, but these values are of course linked.
115Only the local hysteresis can be set from user-space, and the same delta
116applies to the remote hysteresis.
117
118The lm90 driver will not update its values more frequently than every
119other second; reading them more often will do no harm, but will return
120'old' values.
121
diff --git a/Documentation/i2c/chips/lm92 b/Documentation/i2c/chips/lm92
new file mode 100644
index 000000000000..7705bfaa0708
--- /dev/null
+++ b/Documentation/i2c/chips/lm92
@@ -0,0 +1,37 @@
1Kernel driver lm92
2==================
3
4Supported chips:
5 * National Semiconductor LM92
6 Prefix: 'lm92'
7 Addresses scanned: I2C 0x48 - 0x4b
8 Datasheet: http://www.national.com/pf/LM/LM92.html
9 * National Semiconductor LM76
10 Prefix: 'lm92'
11 Addresses scanned: none, force parameter needed
12 Datasheet: http://www.national.com/pf/LM/LM76.html
13 * Maxim MAX6633/MAX6634/MAX6635
14 Prefix: 'lm92'
15 Addresses scanned: I2C 0x48 - 0x4b
16 MAX6633 with address in 0x40 - 0x47, 0x4c - 0x4f needs force parameter
17 and MAX6634 with address in 0x4c - 0x4f needs force parameter
18 Datasheet: http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3074
19
20Authors:
21 Abraham van der Merwe <abraham@2d3d.co.za>
22 Jean Delvare <khali@linux-fr.org>
23
24
25Description
26-----------
27
28This driver implements support for the National Semiconductor LM92
29temperature sensor.
30
31Each LM92 temperature sensor supports a single temperature sensor. There are
32alarms for high, low, and critical thresholds. There's also an hysteresis to
33control the thresholds for resetting alarms.
34
35Support was added later for the LM76 and Maxim MAX6633/MAX6634/MAX6635,
36which are mostly compatible. They have not all been tested, so you
37may need to use the force parameter.
diff --git a/Documentation/i2c/chips/max1619 b/Documentation/i2c/chips/max1619
new file mode 100644
index 000000000000..d6f8d9cd7d7f
--- /dev/null
+++ b/Documentation/i2c/chips/max1619
@@ -0,0 +1,29 @@
1Kernel driver max1619
2=====================
3
4Supported chips:
5 * Maxim MAX1619
6 Prefix: 'max1619'
7 Addresses scanned: I2C 0x18-0x1a, 0x29-0x2b, 0x4c-0x4e
8 Datasheet: Publicly available at the Maxim website
9 http://pdfserv.maxim-ic.com/en/ds/MAX1619.pdf
10
11Authors:
12 Alexey Fisher <fishor@mail.ru>,
13 Jean Delvare <khali@linux-fr.org>
14
15Description
16-----------
17
18The MAX1619 is a digital temperature sensor. It senses its own temperature as
19well as the temperature of up to one external diode.
20
21All temperature values are given in degrees Celsius. Resolution
22is 1.0 degree for the local temperature and for the remote temperature.
23
24Only the external sensor has high and low limits.
25
26The max1619 driver will not update its values more frequently than every
27other second; reading them more often will do no harm, but will return
28'old' values.
29
diff --git a/Documentation/i2c/chips/max6875 b/Documentation/i2c/chips/max6875
new file mode 100644
index 000000000000..b4fb49b41813
--- /dev/null
+++ b/Documentation/i2c/chips/max6875
@@ -0,0 +1,54 @@
1Kernel driver max6875
2=====================
3
4Supported chips:
5 * Maxim max6874, max6875
6 Prefixes: 'max6875'
7 Addresses scanned: 0x50, 0x52
8 Datasheets:
9 http://pdfserv.maxim-ic.com/en/ds/MAX6874-MAX6875.pdf
10
11Author: Ben Gardner <bgardner@wabtec.com>
12
13
14Module Parameters
15-----------------
16
17* allow_write int
18 Set to non-zero to enable write permission:
19 *0: Read only
20 1: Read and write
21
22
23Description
24-----------
25
26The MAXIM max6875 is a EEPROM-programmable power-supply sequencer/supervisor.
27It provides timed outputs that can be used as a watchdog, if properly wired.
28It also provides 512 bytes of user EEPROM.
29
30At reset, the max6875 reads the configuration eeprom into its configuration
31registers. The chip then begins to operate according to the values in the
32registers.
33
34See the datasheet for details on how to program the EEPROM.
35
36
37Sysfs entries
38-------------
39
40eeprom_user - 512 bytes of user-defined EEPROM space. Only writable if
41 allow_write was set and register 0x43 is 0.
42
43eeprom_config - 70 bytes of config EEPROM. Note that changes will not get
44 loaded into register space until a power cycle or device reset.
45
46reg_config - 70 bytes of register space. Any changes take affect immediately.
47
48
49General Remarks
50---------------
51
52A typical application will require that the EEPROMs be programmed once and
53never altered afterwards.
54
diff --git a/Documentation/i2c/chips/pc87360 b/Documentation/i2c/chips/pc87360
new file mode 100644
index 000000000000..89a8fcfa78df
--- /dev/null
+++ b/Documentation/i2c/chips/pc87360
@@ -0,0 +1,189 @@
1Kernel driver pc87360
2=====================
3
4Supported chips:
5 * National Semiconductor PC87360, PC87363, PC87364, PC87365 and PC87366
6 Prefixes: 'pc87360', 'pc87363', 'pc87364', 'pc87365', 'pc87366'
7 Addresses scanned: none, address read from Super I/O config space
8 Datasheets:
9 http://www.national.com/pf/PC/PC87360.html
10 http://www.national.com/pf/PC/PC87363.html
11 http://www.national.com/pf/PC/PC87364.html
12 http://www.national.com/pf/PC/PC87365.html
13 http://www.national.com/pf/PC/PC87366.html
14
15Authors: Jean Delvare <khali@linux-fr.org>
16
17Thanks to Sandeep Mehta, Tonko de Rooy and Daniel Ceregatti for testing.
18Thanks to Rudolf Marek for helping me investigate conversion issues.
19
20
21Module Parameters
22-----------------
23
24* init int
25 Chip initialization level:
26 0: None
27 *1: Forcibly enable internal voltage and temperature channels, except in9
28 2: Forcibly enable all voltage and temperature channels, except in9
29 3: Forcibly enable all voltage and temperature channels, including in9
30
31Note that this parameter has no effect for the PC87360, PC87363 and PC87364
32chips.
33
34Also note that for the PC87366, initialization levels 2 and 3 don't enable
35all temperature channels, because some of them share pins with each other,
36so they can't be used at the same time.
37
38
39Description
40-----------
41
42The National Semiconductor PC87360 Super I/O chip contains monitoring and
43PWM control circuitry for two fans. The PC87363 chip is similar, and the
44PC87364 chip has monitoring and PWM control for a third fan.
45
46The National Semiconductor PC87365 and PC87366 Super I/O chips are complete
47hardware monitoring chipsets, not only controlling and monitoring three fans,
48but also monitoring eleven voltage inputs and two (PC87365) or up to four
49(PC87366) temperatures.
50
51 Chip #vin #fan #pwm #temp devid
52
53 PC87360 - 2 2 - 0xE1
54 PC87363 - 2 2 - 0xE8
55 PC87364 - 3 3 - 0xE4
56 PC87365 11 3 3 2 0xE5
57 PC87366 11 3 3 3-4 0xE9
58
59The driver assumes that no more than one chip is present, and one of the
60standard Super I/O addresses is used (0x2E/0x2F or 0x4E/0x4F)
61
62Fan Monitoring
63--------------
64
65Fan rotation speeds are reported in RPM (revolutions per minute). An alarm
66is triggered if the rotation speed has dropped below a programmable limit.
67A different alarm is triggered if the fan speed is too low to be measured.
68
69Fan readings are affected by a programmable clock divider, giving the
70readings more range or accuracy. Usually, users have to learn how it works,
71but this driver implements dynamic clock divider selection, so you don't
72have to care no more.
73
74For reference, here are a few values about clock dividers:
75
76 slowest accuracy highest
77 measurable around 3000 accurate
78 divider speed (RPM) RPM (RPM) speed (RPM)
79 1 1882 18 6928
80 2 941 37 4898
81 4 470 74 3464
82 8 235 150 2449
83
84For the curious, here is how the values above were computed:
85 * slowest measurable speed: clock/(255*divider)
86 * accuracy around 3000 RPM: 3000^2/clock
87 * highest accurate speed: sqrt(clock*100)
88The clock speed for the PC87360 family is 480 kHz. I arbitrarily chose 100
89RPM as the lowest acceptable accuracy.
90
91As mentioned above, you don't have to care about this no more.
92
93Note that not all RPM values can be represented, even when the best clock
94divider is selected. This is not only true for the measured speeds, but
95also for the programmable low limits, so don't be surprised if you try to
96set, say, fan1_min to 2900 and it finally reads 2909.
97
98
99Fan Control
100-----------
101
102PWM (pulse width modulation) values range from 0 to 255, with 0 meaning
103that the fan is stopped, and 255 meaning that the fan goes at full speed.
104
105Be extremely careful when changing PWM values. Low PWM values, even
106non-zero, can stop the fan, which may cause irreversible damage to your
107hardware if temperature increases too much. When changing PWM values, go
108step by step and keep an eye on temperatures.
109
110One user reported problems with PWM. Changing PWM values would break fan
111speed readings. No explanation nor fix could be found.
112
113
114Temperature Monitoring
115----------------------
116
117Temperatures are reported in degrees Celsius. Each temperature measured has
118associated low, high and overtemperature limits, each of which triggers an
119alarm when crossed.
120
121The first two temperature channels are external. The third one (PC87366
122only) is internal.
123
124The PC87366 has three additional temperature channels, based on
125thermistors (as opposed to thermal diodes for the first three temperature
126channels). For technical reasons, these channels are held by the VLM
127(voltage level monitor) logical device, not the TMS (temperature
128measurement) one. As a consequence, these temperatures are exported as
129voltages, and converted into temperatures in user-space.
130
131Note that these three additional channels share their pins with the
132external thermal diode channels, so you (physically) can't use them all at
133the same time. Although it should be possible to mix the two sensor types,
134the documents from National Semiconductor suggest that motherboard
135manufacturers should choose one type and stick to it. So you will more
136likely have either channels 1 to 3 (thermal diodes) or 3 to 6 (internal
137thermal diode, and thermistors).
138
139
140Voltage Monitoring
141------------------
142
143Voltages are reported relatively to a reference voltage, either internal or
144external. Some of them (in7:Vsb, in8:Vdd and in10:AVdd) are divided by two
145internally, you will have to compensate in sensors.conf. Others (in0 to in6)
146are likely to be divided externally. The meaning of each of these inputs as
147well as the values of the resistors used for division is left to the
148motherboard manufacturers, so you will have to document yourself and edit
149sensors.conf accordingly. National Semiconductor has a document with
150recommended resistor values for some voltages, but this still leaves much
151room for per motherboard specificities, unfortunately. Even worse,
152motherboard manufacturers don't seem to care about National Semiconductor's
153recommendations.
154
155Each voltage measured has associated low and high limits, each of which
156triggers an alarm when crossed.
157
158When available, VID inputs are used to provide the nominal CPU Core voltage.
159The driver will default to VRM 9.0, but this can be changed from user-space.
160The chipsets can handle two sets of VID inputs (on dual-CPU systems), but
161the driver will only export one for now. This may change later if there is
162a need.
163
164
165General Remarks
166---------------
167
168If an alarm triggers, it will remain triggered until the hardware register
169is read at least once. This means that the cause for the alarm may already
170have disappeared! Note that all hardware registers are read whenever any
171data is read (unless it is less than 2 seconds since the last update, in
172which case cached values are returned instead). As a consequence, when
173a once-only alarm triggers, it may take 2 seconds for it to show, and 2
174more seconds for it to disappear.
175
176Monitoring of in9 isn't enabled at lower init levels (<3) because that
177channel measures the battery voltage (Vbat). It is a known fact that
178repeatedly sampling the battery voltage reduces its lifetime. National
179Semiconductor smartly designed their chipset so that in9 is sampled only
180once every 1024 sampling cycles (that is every 34 minutes at the default
181sampling rate), so the effect is attenuated, but still present.
182
183
184Limitations
185-----------
186
187The datasheets suggests that some values (fan mins, fan dividers)
188shouldn't be changed once the monitoring has started, but we ignore that
189recommendation. We'll reconsider if it actually causes trouble.
diff --git a/Documentation/i2c/chips/pca9539 b/Documentation/i2c/chips/pca9539
new file mode 100644
index 000000000000..c4fce6a13537
--- /dev/null
+++ b/Documentation/i2c/chips/pca9539
@@ -0,0 +1,47 @@
1Kernel driver pca9539
2=====================
3
4Supported chips:
5 * Philips PCA9539
6 Prefix: 'pca9539'
7 Addresses scanned: 0x74 - 0x77
8 Datasheet:
9 http://www.semiconductors.philips.com/acrobat/datasheets/PCA9539_2.pdf
10
11Author: Ben Gardner <bgardner@wabtec.com>
12
13
14Description
15-----------
16
17The Philips PCA9539 is a 16 bit low power I/O device.
18All 16 lines can be individually configured as an input or output.
19The input sense can also be inverted.
20The 16 lines are split between two bytes.
21
22
23Sysfs entries
24-------------
25
26Each is a byte that maps to the 8 I/O bits.
27A '0' suffix is for bits 0-7, while '1' is for bits 8-15.
28
29input[01] - read the current value
30output[01] - sets the output value
31direction[01] - direction of each bit: 1=input, 0=output
32invert[01] - toggle the input bit sense
33
34input reads the actual state of the line and is always available.
35The direction defaults to input for all channels.
36
37
38General Remarks
39---------------
40
41Note that each output, direction, and invert entry controls 8 lines.
42You should use the read, modify, write sequence.
43For example. to set output bit 0 of 1.
44 val=$(cat output0)
45 val=$(( $val | 1 ))
46 echo $val > output0
47
diff --git a/Documentation/i2c/chips/pcf8574 b/Documentation/i2c/chips/pcf8574
new file mode 100644
index 000000000000..2752c8ce3167
--- /dev/null
+++ b/Documentation/i2c/chips/pcf8574
@@ -0,0 +1,69 @@
1Kernel driver pcf8574
2=====================
3
4Supported chips:
5 * Philips PCF8574
6 Prefix: 'pcf8574'
7 Addresses scanned: I2C 0x20 - 0x27
8 Datasheet: Publicly available at the Philips Semiconductors website
9 http://www.semiconductors.philips.com/pip/PCF8574P.html
10
11 * Philips PCF8574A
12 Prefix: 'pcf8574a'
13 Addresses scanned: I2C 0x38 - 0x3f
14 Datasheet: Publicly available at the Philips Semiconductors website
15 http://www.semiconductors.philips.com/pip/PCF8574P.html
16
17Authors:
18 Frodo Looijaard <frodol@dds.nl>,
19 Philip Edelbrock <phil@netroedge.com>,
20 Dan Eaton <dan.eaton@rocketlogix.com>,
21 Aurelien Jarno <aurelien@aurel32.net>,
22 Jean Delvare <khali@linux-fr.org>,
23
24
25Description
26-----------
27The PCF8574(A) is an 8-bit I/O expander for the I2C bus produced by Philips
28Semiconductors. It is designed to provide a byte I2C interface to up to 16
29separate devices (8 x PCF8574 and 8 x PCF8574A).
30
31This device consists of a quasi-bidirectional port. Each of the eight I/Os
32can be independently used as an input or output. To setup an I/O as an
33input, you have to write a 1 to the corresponding output.
34
35For more informations see the datasheet.
36
37
38Accessing PCF8574(A) via /sys interface
39-------------------------------------
40
41! Be careful !
42The PCF8574(A) is plainly impossible to detect ! Stupid chip.
43So every chip with address in the interval [20..27] and [38..3f] are
44detected as PCF8574(A). If you have other chips in this address
45range, the workaround is to load this module after the one
46for your others chips.
47
48On detection (i.e. insmod, modprobe et al.), directories are being
49created for each detected PCF8574(A):
50
51/sys/bus/i2c/devices/<0>-<1>/
52where <0> is the bus the chip was detected on (e. g. i2c-0)
53and <1> the chip address ([20..27] or [38..3f]):
54
55(example: /sys/bus/i2c/devices/1-0020/)
56
57Inside these directories, there are two files each:
58read and write (and one file with chip name).
59
60The read file is read-only. Reading gives you the current I/O input
61if the corresponding output is set as 1, otherwise the current output
62value, that is to say 0.
63
64The write file is read/write. Writing a value outputs it on the I/O
65port. Reading returns the last written value.
66
67On module initialization the chip is configured as eight inputs (all
68outputs to 1), so you can connect any circuit to the PCF8574(A) without
69being afraid of short-circuit.
diff --git a/Documentation/i2c/chips/pcf8591 b/Documentation/i2c/chips/pcf8591
new file mode 100644
index 000000000000..5628fcf4207f
--- /dev/null
+++ b/Documentation/i2c/chips/pcf8591
@@ -0,0 +1,90 @@
1Kernel driver pcf8591
2=====================
3
4Supported chips:
5 * Philips PCF8591
6 Prefix: 'pcf8591'
7 Addresses scanned: I2C 0x48 - 0x4f
8 Datasheet: Publicly available at the Philips Semiconductor website
9 http://www.semiconductors.philips.com/pip/PCF8591P.html
10
11Authors:
12 Aurelien Jarno <aurelien@aurel32.net>
13 valuable contributions by Jan M. Sendler <sendler@sendler.de>,
14 Jean Delvare <khali@linux-fr.org>
15
16
17Description
18-----------
19The PCF8591 is an 8-bit A/D and D/A converter (4 analog inputs and one
20analog output) for the I2C bus produced by Philips Semiconductors. It
21is designed to provide a byte I2C interface to up to 4 separate devices.
22
23The PCF8591 has 4 analog inputs programmable as single-ended or
24differential inputs :
25- mode 0 : four single ended inputs
26 Pins AIN0 to AIN3 are single ended inputs for channels 0 to 3
27
28- mode 1 : three differential inputs
29 Pins AIN3 is the common negative differential input
30 Pins AIN0 to AIN2 are positive differential inputs for channels 0 to 2
31
32- mode 2 : single ended and differential mixed
33 Pins AIN0 and AIN1 are single ended inputs for channels 0 and 1
34 Pins AIN2 is the positive differential input for channel 3
35 Pins AIN3 is the negative differential input for channel 3
36
37- mode 3 : two differential inputs
38 Pins AIN0 is the positive differential input for channel 0
39 Pins AIN1 is the negative differential input for channel 0
40 Pins AIN2 is the positive differential input for channel 1
41 Pins AIN3 is the negative differential input for channel 1
42
43See the datasheet for details.
44
45Module parameters
46-----------------
47
48* input_mode int
49
50 Analog input mode:
51 0 = four single ended inputs
52 1 = three differential inputs
53 2 = single ended and differential mixed
54 3 = two differential inputs
55
56
57Accessing PCF8591 via /sys interface
58-------------------------------------
59
60! Be careful !
61The PCF8591 is plainly impossible to detect ! Stupid chip.
62So every chip with address in the interval [48..4f] is
63detected as PCF8591. If you have other chips in this address
64range, the workaround is to load this module after the one
65for your others chips.
66
67On detection (i.e. insmod, modprobe et al.), directories are being
68created for each detected PCF8591:
69
70/sys/bus/devices/<0>-<1>/
71where <0> is the bus the chip was detected on (e. g. i2c-0)
72and <1> the chip address ([48..4f])
73
74Inside these directories, there are such files:
75in0, in1, in2, in3, out0_enable, out0_output, name
76
77Name contains chip name.
78
79The in0, in1, in2 and in3 files are RO. Reading gives the value of the
80corresponding channel. Depending on the current analog inputs configuration,
81files in2 and/or in3 do not exist. Values range are from 0 to 255 for single
82ended inputs and -128 to +127 for differential inputs (8-bit ADC).
83
84The out0_enable file is RW. Reading gives "1" for analog output enabled and
85"0" for analog output disabled. Writing accepts "0" and "1" accordingly.
86
87The out0_output file is RW. Writing a number between 0 and 255 (8-bit DAC), send
88the value to the digital-to-analog converter. Note that a voltage will
89only appears on AOUT pin if aout0_enable equals 1. Reading returns the last
90value written.
diff --git a/Documentation/i2c/chips/sis5595 b/Documentation/i2c/chips/sis5595
new file mode 100644
index 000000000000..b7ae36b8cdf5
--- /dev/null
+++ b/Documentation/i2c/chips/sis5595
@@ -0,0 +1,106 @@
1Kernel driver sis5595
2=====================
3
4Supported chips:
5 * Silicon Integrated Systems Corp. SiS5595 Southbridge Hardware Monitor
6 Prefix: 'sis5595'
7 Addresses scanned: ISA in PCI-space encoded address
8 Datasheet: Publicly available at the Silicon Integrated Systems Corp. site.
9
10Authors:
11 Kyösti Mälkki <kmalkki@cc.hut.fi>,
12 Mark D. Studebaker <mdsxyz123@yahoo.com>,
13 Aurelien Jarno <aurelien@aurel32.net> 2.6 port
14
15 SiS southbridge has a LM78-like chip integrated on the same IC.
16 This driver is a customized copy of lm78.c
17
18 Supports following revisions:
19 Version PCI ID PCI Revision
20 1 1039/0008 AF or less
21 2 1039/0008 B0 or greater
22
23 Note: these chips contain a 0008 device which is incompatible with the
24 5595. We recognize these by the presence of the listed
25 "blacklist" PCI ID and refuse to load.
26
27 NOT SUPPORTED PCI ID BLACKLIST PCI ID
28 540 0008 0540
29 550 0008 0550
30 5513 0008 5511
31 5581 0008 5597
32 5582 0008 5597
33 5597 0008 5597
34 630 0008 0630
35 645 0008 0645
36 730 0008 0730
37 735 0008 0735
38
39
40Module Parameters
41-----------------
42force_addr=0xaddr Set the I/O base address. Useful for boards
43 that don't set the address in the BIOS. Does not do a
44 PCI force; the device must still be present in lspci.
45 Don't use this unless the driver complains that the
46 base address is not set.
47 Example: 'modprobe sis5595 force_addr=0x290'
48
49
50Description
51-----------
52
53The SiS5595 southbridge has integrated hardware monitor functions. It also
54has an I2C bus, but this driver only supports the hardware monitor. For the
55I2C bus driver see i2c-sis5595.
56
57The SiS5595 implements zero or one temperature sensor, two fan speed
58sensors, four or five voltage sensors, and alarms.
59
60On the first version of the chip, there are four voltage sensors and one
61temperature sensor.
62
63On the second version of the chip, the temperature sensor (temp) and the
64fifth voltage sensor (in4) share a pin which is configurable, but not
65through the driver. Sorry. The driver senses the configuration of the pin,
66which was hopefully set by the BIOS.
67
68Temperatures are measured in degrees Celsius. An alarm is triggered once
69when the max is crossed; it is also triggered when it drops below the min
70value. Measurements are guaranteed between -55 and +125 degrees, with a
71resolution of 1 degree.
72
73Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
74triggered if the rotation speed has dropped below a programmable limit. Fan
75readings can be divided by a programmable divider (1, 2, 4 or 8) to give
76the readings more range or accuracy. Not all RPM values can accurately be
77represented, so some rounding is done. With a divider of 2, the lowest
78representable value is around 2600 RPM.
79
80Voltage sensors (also known as IN sensors) report their values in volts. An
81alarm is triggered if the voltage has crossed a programmable minimum or
82maximum limit. Note that minimum in this case always means 'closest to
83zero'; this is important for negative voltage measurements. All voltage
84inputs can measure voltages between 0 and 4.08 volts, with a resolution of
850.016 volt.
86
87In addition to the alarms described above, there is a BTI alarm, which gets
88triggered when an external chip has crossed its limits. Usually, this is
89connected to some LM75-like chip; if at least one crosses its limits, this
90bit gets set.
91
92If an alarm triggers, it will remain triggered until the hardware register
93is read at least once. This means that the cause for the alarm may already
94have disappeared! Note that in the current implementation, all hardware
95registers are read whenever any data is read (unless it is less than 1.5
96seconds since the last update). This means that you can easily miss
97once-only alarms.
98
99The SiS5595 only updates its values each 1.5 seconds; reading it more often
100will do no harm, but will return 'old' values.
101
102Problems
103--------
104Some chips refuse to be enabled. We don't know why.
105The driver will recognize this and print a message in dmesg.
106
diff --git a/Documentation/i2c/chips/smsc47b397.txt b/Documentation/i2c/chips/smsc47b397
index 389edae7f8df..da9d80c96432 100644
--- a/Documentation/i2c/chips/smsc47b397.txt
+++ b/Documentation/i2c/chips/smsc47b397
@@ -1,7 +1,19 @@
1Kernel driver smsc47b397
2========================
3
4Supported chips:
5 * SMSC LPC47B397-NC
6 Prefix: 'smsc47b397'
7 Addresses scanned: none, address read from Super I/O config space
8 Datasheet: In this file
9
10Authors: Mark M. Hoffman <mhoffman@lightlink.com>
11 Utilitek Systems, Inc.
12
1November 23, 2004 13November 23, 2004
2 14
3The following specification describes the SMSC LPC47B397-NC sensor chip 15The following specification describes the SMSC LPC47B397-NC sensor chip
4(for which there is no public datasheet available). This document was 16(for which there is no public datasheet available). This document was
5provided by Craig Kelly (In-Store Broadcast Network) and edited/corrected 17provided by Craig Kelly (In-Store Broadcast Network) and edited/corrected
6by Mark M. Hoffman <mhoffman@lightlink.com>. 18by Mark M. Hoffman <mhoffman@lightlink.com>.
7 19
@@ -10,10 +22,10 @@ by Mark M. Hoffman <mhoffman@lightlink.com>.
10Methods for detecting the HP SIO and reading the thermal data on a dc7100. 22Methods for detecting the HP SIO and reading the thermal data on a dc7100.
11 23
12The thermal information on the dc7100 is contained in the SIO Hardware Monitor 24The thermal information on the dc7100 is contained in the SIO Hardware Monitor
13(HWM). The information is accessed through an index/data pair. The index/data 25(HWM). The information is accessed through an index/data pair. The index/data
14pair is located at the HWM Base Address + 0 and the HWM Base Address + 1. The 26pair is located at the HWM Base Address + 0 and the HWM Base Address + 1. The
15HWM Base address can be obtained from Logical Device 8, registers 0x60 (MSB) 27HWM Base address can be obtained from Logical Device 8, registers 0x60 (MSB)
16and 0x61 (LSB). Currently we are using 0x480 for the HWM Base Address and 28and 0x61 (LSB). Currently we are using 0x480 for the HWM Base Address and
170x480 and 0x481 for the index/data pair. 290x480 and 0x481 for the index/data pair.
18 30
19Reading temperature information. 31Reading temperature information.
@@ -50,7 +62,7 @@ Reading the tach LSB locks the tach MSB.
50The LSB Must be read first. 62The LSB Must be read first.
51 63
52How to convert the tach reading to RPM. 64How to convert the tach reading to RPM.
53The tach reading (TCount) is given by: (Tach MSB * 256) + (Tach LSB) 65The tach reading (TCount) is given by: (Tach MSB * 256) + (Tach LSB)
54The SIO counts the number of 90kHz (11.111us) pulses per revolution. 66The SIO counts the number of 90kHz (11.111us) pulses per revolution.
55RPM = 60/(TCount * 11.111us) 67RPM = 60/(TCount * 11.111us)
56 68
@@ -72,20 +84,20 @@ To program the configuration registers, the following sequence must be followed:
72 84
73Enter Configuration Mode 85Enter Configuration Mode
74To place the chip into the Configuration State The config key (0x55) is written 86To place the chip into the Configuration State The config key (0x55) is written
75to the CONFIG PORT (0x2E). 87to the CONFIG PORT (0x2E).
76 88
77Configuration Mode 89Configuration Mode
78In configuration mode, the INDEX PORT is located at the CONFIG PORT address and 90In configuration mode, the INDEX PORT is located at the CONFIG PORT address and
79the DATA PORT is at INDEX PORT address + 1. 91the DATA PORT is at INDEX PORT address + 1.
80 92
81The desired configuration registers are accessed in two steps: 93The desired configuration registers are accessed in two steps:
82a. Write the index of the Logical Device Number Configuration Register 94a. Write the index of the Logical Device Number Configuration Register
83 (i.e., 0x07) to the INDEX PORT and then write the number of the 95 (i.e., 0x07) to the INDEX PORT and then write the number of the
84 desired logical device to the DATA PORT. 96 desired logical device to the DATA PORT.
85 97
86b. Write the address of the desired configuration register within the 98b. Write the address of the desired configuration register within the
87 logical device to the INDEX PORT and then write or read the config- 99 logical device to the INDEX PORT and then write or read the config-
88 uration register through the DATA PORT. 100 uration register through the DATA PORT.
89 101
90Note: If accessing the Global Configuration Registers, step (a) is not required. 102Note: If accessing the Global Configuration Registers, step (a) is not required.
91 103
@@ -96,18 +108,18 @@ The chip returns to the RUN State. (This is important).
96Programming Example 108Programming Example
97The following is an example of how to read the SIO Device ID located at 0x20 109The following is an example of how to read the SIO Device ID located at 0x20
98 110
99; ENTER CONFIGURATION MODE 111; ENTER CONFIGURATION MODE
100MOV DX,02EH 112MOV DX,02EH
101MOV AX,055H 113MOV AX,055H
102OUT DX,AL 114OUT DX,AL
103; GLOBAL CONFIGURATION REGISTER 115; GLOBAL CONFIGURATION REGISTER
104MOV DX,02EH 116MOV DX,02EH
105MOV AL,20H 117MOV AL,20H
106OUT DX,AL 118OUT DX,AL
107; READ THE DATA 119; READ THE DATA
108MOV DX,02FH 120MOV DX,02FH
109IN AL,DX 121IN AL,DX
110; EXIT CONFIGURATION MODE 122; EXIT CONFIGURATION MODE
111MOV DX,02EH 123MOV DX,02EH
112MOV AX,0AAH 124MOV AX,0AAH
113OUT DX,AL 125OUT DX,AL
@@ -122,12 +134,12 @@ Obtaining the HWM Base Address.
122The following is an example of how to read the HWM Base Address located in 134The following is an example of how to read the HWM Base Address located in
123Logical Device 8. 135Logical Device 8.
124 136
125; ENTER CONFIGURATION MODE 137; ENTER CONFIGURATION MODE
126MOV DX,02EH 138MOV DX,02EH
127MOV AX,055H 139MOV AX,055H
128OUT DX,AL 140OUT DX,AL
129; CONFIGURE REGISTER CRE0, 141; CONFIGURE REGISTER CRE0,
130; LOGICAL DEVICE 8 142; LOGICAL DEVICE 8
131MOV DX,02EH 143MOV DX,02EH
132MOV AL,07H 144MOV AL,07H
133OUT DX,AL ;Point to LD# Config Reg 145OUT DX,AL ;Point to LD# Config Reg
@@ -135,12 +147,12 @@ MOV DX,02FH
135MOV AL, 08H 147MOV AL, 08H
136OUT DX,AL;Point to Logical Device 8 148OUT DX,AL;Point to Logical Device 8
137; 149;
138MOV DX,02EH 150MOV DX,02EH
139MOV AL,60H 151MOV AL,60H
140OUT DX,AL ; Point to HWM Base Addr MSB 152OUT DX,AL ; Point to HWM Base Addr MSB
141MOV DX,02FH 153MOV DX,02FH
142IN AL,DX ; Get MSB of HWM Base Addr 154IN AL,DX ; Get MSB of HWM Base Addr
143; EXIT CONFIGURATION MODE 155; EXIT CONFIGURATION MODE
144MOV DX,02EH 156MOV DX,02EH
145MOV AX,0AAH 157MOV AX,0AAH
146OUT DX,AL 158OUT DX,AL
diff --git a/Documentation/i2c/chips/smsc47m1 b/Documentation/i2c/chips/smsc47m1
new file mode 100644
index 000000000000..34e6478c1425
--- /dev/null
+++ b/Documentation/i2c/chips/smsc47m1
@@ -0,0 +1,52 @@
1Kernel driver smsc47m1
2======================
3
4Supported chips:
5 * SMSC LPC47B27x, LPC47M10x, LPC47M13x, LPC47M14x, LPC47M15x and LPC47M192
6 Addresses scanned: none, address read from Super I/O config space
7 Prefix: 'smsc47m1'
8 Datasheets:
9 http://www.smsc.com/main/datasheets/47b27x.pdf
10 http://www.smsc.com/main/datasheets/47m10x.pdf
11 http://www.smsc.com/main/tools/discontinued/47m13x.pdf
12 http://www.smsc.com/main/datasheets/47m14x.pdf
13 http://www.smsc.com/main/tools/discontinued/47m15x.pdf
14 http://www.smsc.com/main/datasheets/47m192.pdf
15
16Authors:
17 Mark D. Studebaker <mdsxyz123@yahoo.com>,
18 With assistance from Bruce Allen <ballen@uwm.edu>, and his
19 fan.c program: http://www.lsc-group.phys.uwm.edu/%7Eballen/driver/
20 Gabriele Gorla <gorlik@yahoo.com>,
21 Jean Delvare <khali@linux-fr.org>
22
23Description
24-----------
25
26The Standard Microsystems Corporation (SMSC) 47M1xx Super I/O chips
27contain monitoring and PWM control circuitry for two fans.
28
29The 47M15x and 47M192 chips contain a full 'hardware monitoring block'
30in addition to the fan monitoring and control. The hardware monitoring
31block is not supported by the driver.
32
33Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
34triggered if the rotation speed has dropped below a programmable limit. Fan
35readings can be divided by a programmable divider (1, 2, 4 or 8) to give
36the readings more range or accuracy. Not all RPM values can accurately be
37represented, so some rounding is done. With a divider of 2, the lowest
38representable value is around 2600 RPM.
39
40PWM values are from 0 to 255.
41
42If an alarm triggers, it will remain triggered until the hardware register
43is read at least once. This means that the cause for the alarm may
44already have disappeared! Note that in the current implementation, all
45hardware registers are read whenever any data is read (unless it is less
46than 1.5 seconds since the last update). This means that you can easily
47miss once-only alarms.
48
49
50**********************
51The lm_sensors project gratefully acknowledges the support of
52Intel in the development of this driver.
diff --git a/Documentation/i2c/chips/via686a b/Documentation/i2c/chips/via686a
new file mode 100644
index 000000000000..b82014cb7c53
--- /dev/null
+++ b/Documentation/i2c/chips/via686a
@@ -0,0 +1,65 @@
1Kernel driver via686a
2=====================
3
4Supported chips:
5 * Via VT82C686A, VT82C686B Southbridge Integrated Hardware Monitor
6 Prefix: 'via686a'
7 Addresses scanned: ISA in PCI-space encoded address
8 Datasheet: On request through web form (http://www.via.com.tw/en/support/datasheets/)
9
10Authors:
11 Kyösti Mälkki <kmalkki@cc.hut.fi>,
12 Mark D. Studebaker <mdsxyz123@yahoo.com>
13 Bob Dougherty <bobd@stanford.edu>
14 (Some conversion-factor data were contributed by
15 Jonathan Teh Soon Yew <j.teh@iname.com>
16 and Alex van Kaam <darkside@chello.nl>.)
17
18Module Parameters
19-----------------
20
21force_addr=0xaddr Set the I/O base address. Useful for Asus A7V boards
22 that don't set the address in the BIOS. Does not do a
23 PCI force; the via686a must still be present in lspci.
24 Don't use this unless the driver complains that the
25 base address is not set.
26 Example: 'modprobe via686a force_addr=0x6000'
27
28Description
29-----------
30
31The driver does not distinguish between the chips and reports
32all as a 686A.
33
34The Via 686a southbridge has integrated hardware monitor functionality.
35It also has an I2C bus, but this driver only supports the hardware monitor.
36For the I2C bus driver, see <file:Documentation/i2c/busses/i2c-viapro>
37
38The Via 686a implements three temperature sensors, two fan rotation speed
39sensors, five voltage sensors and alarms.
40
41Temperatures are measured in degrees Celsius. An alarm is triggered once
42when the Overtemperature Shutdown limit is crossed; it is triggered again
43as soon as it drops below the hysteresis value.
44
45Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
46triggered if the rotation speed has dropped below a programmable limit. Fan
47readings can be divided by a programmable divider (1, 2, 4 or 8) to give
48the readings more range or accuracy. Not all RPM values can accurately be
49represented, so some rounding is done. With a divider of 2, the lowest
50representable value is around 2600 RPM.
51
52Voltage sensors (also known as IN sensors) report their values in volts.
53An alarm is triggered if the voltage has crossed a programmable minimum
54or maximum limit. Voltages are internally scalled, so each voltage channel
55has a different resolution and range.
56
57If an alarm triggers, it will remain triggered until the hardware register
58is read at least once. This means that the cause for the alarm may
59already have disappeared! Note that in the current implementation, all
60hardware registers are read whenever any data is read (unless it is less
61than 1.5 seconds since the last update). This means that you can easily
62miss once-only alarms.
63
64The driver only updates its values each 1.5 seconds; reading it more often
65will do no harm, but will return 'old' values.
diff --git a/Documentation/i2c/chips/w83627hf b/Documentation/i2c/chips/w83627hf
new file mode 100644
index 000000000000..78f37c2d602e
--- /dev/null
+++ b/Documentation/i2c/chips/w83627hf
@@ -0,0 +1,66 @@
1Kernel driver w83627hf
2======================
3
4Supported chips:
5 * Winbond W83627HF (ISA accesses ONLY)
6 Prefix: 'w83627hf'
7 Addresses scanned: ISA address retrieved from Super I/O registers
8 Datasheet: http://www.winbond.com/PDF/sheet/w83627hf.pdf
9 * Winbond W83627THF
10 Prefix: 'w83627thf'
11 Addresses scanned: ISA address retrieved from Super I/O registers
12 Datasheet: http://www.winbond.com/PDF/sheet/w83627thf.pdf
13 * Winbond W83697HF
14 Prefix: 'w83697hf'
15 Addresses scanned: ISA address retrieved from Super I/O registers
16 Datasheet: http://www.winbond.com/PDF/sheet/697hf.pdf
17 * Winbond W83637HF
18 Prefix: 'w83637hf'
19 Addresses scanned: ISA address retrieved from Super I/O registers
20 Datasheet: http://www.winbond.com/PDF/sheet/w83637hf.pdf
21
22Authors:
23 Frodo Looijaard <frodol@dds.nl>,
24 Philip Edelbrock <phil@netroedge.com>,
25 Mark Studebaker <mdsxyz123@yahoo.com>,
26 Bernhard C. Schrenk <clemy@clemy.org>
27
28Module Parameters
29-----------------
30
31* force_addr: int
32 Initialize the ISA address of the sensors
33* force_i2c: int
34 Initialize the I2C address of the sensors
35* init: int
36 (default is 1)
37 Use 'init=0' to bypass initializing the chip.
38 Try this if your computer crashes when you load the module.
39
40Description
41-----------
42
43This driver implements support for ISA accesses *only* for
44the Winbond W83627HF, W83627THF, W83697HF and W83637HF Super I/O chips.
45We will refer to them collectively as Winbond chips.
46
47This driver supports ISA accesses, which should be more reliable
48than i2c accesses. Also, for Tyan boards which contain both a
49Super I/O chip and a second i2c-only Winbond chip (often a W83782D),
50using this driver will avoid i2c address conflicts and complex
51initialization that were required in the w83781d driver.
52
53If you really want i2c accesses for these Super I/O chips,
54use the w83781d driver. However this is not the preferred method
55now that this ISA driver has been developed.
56
57Technically, the w83627thf does not support a VID reading. However, it's
58possible or even likely that your mainboard maker has routed these signals
59to a specific set of general purpose IO pins (the Asus P4C800-E is one such
60board). The w83627thf driver now interprets these as VID. If the VID on
61your board doesn't work, first see doc/vid in the lm_sensors package. If
62that still doesn't help, email us at lm-sensors@lm-sensors.org.
63
64For further information on this driver see the w83781d driver
65documentation.
66
diff --git a/Documentation/i2c/chips/w83781d b/Documentation/i2c/chips/w83781d
new file mode 100644
index 000000000000..e5459333ba68
--- /dev/null
+++ b/Documentation/i2c/chips/w83781d
@@ -0,0 +1,402 @@
1Kernel driver w83781d
2=====================
3
4Supported chips:
5 * Winbond W83781D
6 Prefix: 'w83781d'
7 Addresses scanned: I2C 0x20 - 0x2f, ISA 0x290 (8 I/O ports)
8 Datasheet: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/w83781d.pdf
9 * Winbond W83782D
10 Prefix: 'w83782d'
11 Addresses scanned: I2C 0x20 - 0x2f, ISA 0x290 (8 I/O ports)
12 Datasheet: http://www.winbond.com/PDF/sheet/w83782d.pdf
13 * Winbond W83783S
14 Prefix: 'w83783s'
15 Addresses scanned: I2C 0x2d
16 Datasheet: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/w83783s.pdf
17 * Winbond W83627HF
18 Prefix: 'w83627hf'
19 Addresses scanned: I2C 0x20 - 0x2f, ISA 0x290 (8 I/O ports)
20 Datasheet: http://www.winbond.com/PDF/sheet/w83627hf.pdf
21 * Asus AS99127F
22 Prefix: 'as99127f'
23 Addresses scanned: I2C 0x28 - 0x2f
24 Datasheet: Unavailable from Asus
25
26Authors:
27 Frodo Looijaard <frodol@dds.nl>,
28 Philip Edelbrock <phil@netroedge.com>,
29 Mark Studebaker <mdsxyz123@yahoo.com>
30
31Module parameters
32-----------------
33
34* init int
35 (default 1)
36 Use 'init=0' to bypass initializing the chip.
37 Try this if your computer crashes when you load the module.
38
39force_subclients=bus,caddr,saddr,saddr
40 This is used to force the i2c addresses for subclients of
41 a certain chip. Typical usage is `force_subclients=0,0x2d,0x4a,0x4b'
42 to force the subclients of chip 0x2d on bus 0 to i2c addresses
43 0x4a and 0x4b. This parameter is useful for certain Tyan boards.
44
45Description
46-----------
47
48This driver implements support for the Winbond W83781D, W83782D, W83783S,
49W83627HF chips, and the Asus AS99127F chips. We will refer to them
50collectively as W8378* chips.
51
52There is quite some difference between these chips, but they are similar
53enough that it was sensible to put them together in one driver.
54The W83627HF chip is assumed to be identical to the ISA W83782D.
55The Asus chips are similar to an I2C-only W83782D.
56
57Chip #vin #fanin #pwm #temp wchipid vendid i2c ISA
58as99127f 7 3 0 3 0x31 0x12c3 yes no
59as99127f rev.2 (type_name = as99127f) 0x31 0x5ca3 yes no
60w83781d 7 3 0 3 0x10-1 0x5ca3 yes yes
61w83627hf 9 3 2 3 0x21 0x5ca3 yes yes(LPC)
62w83782d 9 3 2-4 3 0x30 0x5ca3 yes yes
63w83783s 5-6 3 2 1-2 0x40 0x5ca3 yes no
64
65Detection of these chips can sometimes be foiled because they can be in
66an internal state that allows no clean access. If you know the address
67of the chip, use a 'force' parameter; this will put them into a more
68well-behaved state first.
69
70The W8378* implements temperature sensors (three on the W83781D and W83782D,
71two on the W83783S), three fan rotation speed sensors, voltage sensors
72(seven on the W83781D, nine on the W83782D and six on the W83783S), VID
73lines, alarms with beep warnings, and some miscellaneous stuff.
74
75Temperatures are measured in degrees Celsius. There is always one main
76temperature sensor, and one (W83783S) or two (W83781D and W83782D) other
77sensors. An alarm is triggered for the main sensor once when the
78Overtemperature Shutdown limit is crossed; it is triggered again as soon as
79it drops below the Hysteresis value. A more useful behavior
80can be found by setting the Hysteresis value to +127 degrees Celsius; in
81this case, alarms are issued during all the time when the actual temperature
82is above the Overtemperature Shutdown value. The driver sets the
83hysteresis value for temp1 to 127 at initialization.
84
85For the other temperature sensor(s), an alarm is triggered when the
86temperature gets higher then the Overtemperature Shutdown value; it stays
87on until the temperature falls below the Hysteresis value. But on the
88W83781D, there is only one alarm that functions for both other sensors!
89Temperatures are guaranteed within a range of -55 to +125 degrees. The
90main temperature sensors has a resolution of 1 degree; the other sensor(s)
91of 0.5 degree.
92
93Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
94triggered if the rotation speed has dropped below a programmable limit. Fan
95readings can be divided by a programmable divider (1, 2, 4 or 8 for the
96W83781D; 1, 2, 4, 8, 16, 32, 64 or 128 for the others) to give
97the readings more range or accuracy. Not all RPM values can accurately
98be represented, so some rounding is done. With a divider of 2, the lowest
99representable value is around 2600 RPM.
100
101Voltage sensors (also known as IN sensors) report their values in volts.
102An alarm is triggered if the voltage has crossed a programmable minimum
103or maximum limit. Note that minimum in this case always means 'closest to
104zero'; this is important for negative voltage measurements. All voltage
105inputs can measure voltages between 0 and 4.08 volts, with a resolution
106of 0.016 volt.
107
108The VID lines encode the core voltage value: the voltage level your processor
109should work with. This is hardcoded by the mainboard and/or processor itself.
110It is a value in volts. When it is unconnected, you will often find the
111value 3.50 V here.
112
113The W83782D and W83783S temperature conversion machine understands about
114several kinds of temperature probes. You can program the so-called
115beta value in the sensor files. '1' is the PII/Celeron diode, '2' is the
116TN3904 transistor, and 3435 the default thermistor value. Other values
117are (not yet) supported.
118
119In addition to the alarms described above, there is a CHAS alarm on the
120chips which triggers if your computer case is open.
121
122When an alarm goes off, you can be warned by a beeping signal through
123your computer speaker. It is possible to enable all beeping globally,
124or only the beeping for some alarms.
125
126If an alarm triggers, it will remain triggered until the hardware register
127is read at least once. This means that the cause for the alarm may
128already have disappeared! Note that in the current implementation, all
129hardware registers are read whenever any data is read (unless it is less
130than 1.5 seconds since the last update). This means that you can easily
131miss once-only alarms.
132
133The chips only update values each 1.5 seconds; reading them more often
134will do no harm, but will return 'old' values.
135
136AS99127F PROBLEMS
137-----------------
138The as99127f support was developed without the benefit of a datasheet.
139In most cases it is treated as a w83781d (although revision 2 of the
140AS99127F looks more like a w83782d).
141This support will be BETA until a datasheet is released.
142One user has reported problems with fans stopping
143occasionally.
144
145Note that the individual beep bits are inverted from the other chips.
146The driver now takes care of this so that user-space applications
147don't have to know about it.
148
149Known problems:
150 - Problems with diode/thermistor settings (supported?)
151 - One user reports fans stopping under high server load.
152 - Revision 2 seems to have 2 PWM registers but we don't know
153 how to handle them. More details below.
154
155These will not be fixed unless we get a datasheet.
156If you have problems, please lobby Asus to release a datasheet.
157Unfortunately several others have without success.
158Please do not send mail to us asking for better as99127f support.
159We have done the best we can without a datasheet.
160Please do not send mail to the author or the sensors group asking for
161a datasheet or ideas on how to convince Asus. We can't help.
162
163
164NOTES:
165-----
166 783s has no in1 so that in[2-6] are compatible with the 781d/782d.
167
168 783s pin is programmable for -5V or temp1; defaults to -5V,
169 no control in driver so temp1 doesn't work.
170
171 782d and 783s datasheets differ on which is pwm1 and which is pwm2.
172 We chose to follow 782d.
173
174 782d and 783s pin is programmable for fan3 input or pwm2 output;
175 defaults to fan3 input.
176 If pwm2 is enabled (with echo 255 1 > pwm2), then
177 fan3 will report 0.
178
179 782d has pwm1-2 for ISA, pwm1-4 for i2c. (pwm3-4 share pins with
180 the ISA pins)
181
182Data sheet updates:
183------------------
184 - PWM clock registers:
185
186 000: master / 512
187 001: master / 1024
188 010: master / 2048
189 011: master / 4096
190 100: master / 8192
191
192
193Answers from Winbond tech support
194---------------------------------
195>
196> 1) In the W83781D data sheet section 7.2 last paragraph, it talks about
197> reprogramming the R-T table if the Beta of the thermistor is not
198> 3435K. The R-T table is described briefly in section 8.20.
199> What formulas do I use to program a new R-T table for a given Beta?
200>
201 We are sorry that the calculation for R-T table value is
202confidential. If you have another Beta value of thermistor, we can help
203to calculate the R-T table for you. But you should give us real R-T
204Table which can be gotten by thermistor vendor. Therefore we will calculate
205them and obtain 32-byte data, and you can fill the 32-byte data to the
206register in Bank0.CR51 of W83781D.
207
208
209> 2) In the W83782D data sheet, it mentions that pins 38, 39, and 40 are
210> programmable to be either thermistor or Pentium II diode inputs.
211> How do I program them for diode inputs? I can't find any register
212> to program these to be diode inputs.
213 --> You may program Bank0 CR[5Dh] and CR[59h] registers.
214
215 CR[5Dh] bit 1(VTIN1) bit 2(VTIN2) bit 3(VTIN3)
216
217 thermistor 0 0 0
218 diode 1 1 1
219
220
221(error) CR[59h] bit 4(VTIN1) bit 2(VTIN2) bit 3(VTIN3)
222(right) CR[59h] bit 4(VTIN1) bit 5(VTIN2) bit 6(VTIN3)
223
224 PII thermal diode 1 1 1
225 2N3904 diode 0 0 0
226
227
228Asus Clones
229-----------
230
231We have no datasheets for the Asus clones (AS99127F and ASB100 Bach).
232Here are some very useful information that were given to us by Alex Van
233Kaam about how to detect these chips, and how to read their values. He
234also gives advice for another Asus chipset, the Mozart-2 (which we
235don't support yet). Thanks Alex!
236I reworded some parts and added personal comments.
237
238# Detection:
239
240AS99127F rev.1, AS99127F rev.2 and ASB100:
241- I2C address range: 0x29 - 0x2F
242- If register 0x58 holds 0x31 then we have an Asus (either ASB100 or
243 AS99127F)
244- Which one depends on register 0x4F (manufacturer ID):
245 0x06 or 0x94: ASB100
246 0x12 or 0xC3: AS99127F rev.1
247 0x5C or 0xA3: AS99127F rev.2
248 Note that 0x5CA3 is Winbond's ID (WEC), which let us think Asus get their
249 AS99127F rev.2 direct from Winbond. The other codes mean ATT and DVC,
250 respectively. ATT could stand for Asustek something (although it would be
251 very badly chosen IMHO), I don't know what DVC could stand for. Maybe
252 these codes simply aren't meant to be decoded that way.
253
254Mozart-2:
255- I2C address: 0x77
256- If register 0x58 holds 0x56 or 0x10 then we have a Mozart-2
257- Of the Mozart there are 3 types:
258 0x58=0x56, 0x4E=0x94, 0x4F=0x36: Asus ASM58 Mozart-2
259 0x58=0x56, 0x4E=0x94, 0x4F=0x06: Asus AS2K129R Mozart-2
260 0x58=0x10, 0x4E=0x5C, 0x4F=0xA3: Asus ??? Mozart-2
261 You can handle all 3 the exact same way :)
262
263# Temperature sensors:
264
265ASB100:
266- sensor 1: register 0x27
267- sensor 2 & 3 are the 2 LM75's on the SMBus
268- sensor 4: register 0x17
269Remark: I noticed that on Intel boards sensor 2 is used for the CPU
270 and 4 is ignored/stuck, on AMD boards sensor 4 is the CPU and sensor 2 is
271 either ignored or a socket temperature.
272
273AS99127F (rev.1 and 2 alike):
274- sensor 1: register 0x27
275- sensor 2 & 3 are the 2 LM75's on the SMBus
276Remark: Register 0x5b is suspected to be temperature type selector. Bit 1
277 would control temp1, bit 3 temp2 and bit 5 temp3.
278
279Mozart-2:
280- sensor 1: register 0x27
281- sensor 2: register 0x13
282
283# Fan sensors:
284
285ASB100, AS99127F (rev.1 and 2 alike):
286- 3 fans, identical to the W83781D
287
288Mozart-2:
289- 2 fans only, 1350000/RPM/div
290- fan 1: register 0x28, divisor on register 0xA1 (bits 4-5)
291- fan 2: register 0x29, divisor on register 0xA1 (bits 6-7)
292
293# Voltages:
294
295This is where there is a difference between AS99127F rev.1 and 2.
296Remark: The difference is similar to the difference between
297 W83781D and W83782D.
298
299ASB100:
300in0=r(0x20)*0.016
301in1=r(0x21)*0.016
302in2=r(0x22)*0.016
303in3=r(0x23)*0.016*1.68
304in4=r(0x24)*0.016*3.8
305in5=r(0x25)*(-0.016)*3.97
306in6=r(0x26)*(-0.016)*1.666
307
308AS99127F rev.1:
309in0=r(0x20)*0.016
310in1=r(0x21)*0.016
311in2=r(0x22)*0.016
312in3=r(0x23)*0.016*1.68
313in4=r(0x24)*0.016*3.8
314in5=r(0x25)*(-0.016)*3.97
315in6=r(0x26)*(-0.016)*1.503
316
317AS99127F rev.2:
318in0=r(0x20)*0.016
319in1=r(0x21)*0.016
320in2=r(0x22)*0.016
321in3=r(0x23)*0.016*1.68
322in4=r(0x24)*0.016*3.8
323in5=(r(0x25)*0.016-3.6)*5.14+3.6
324in6=(r(0x26)*0.016-3.6)*3.14+3.6
325
326Mozart-2:
327in0=r(0x20)*0.016
328in1=255
329in2=r(0x22)*0.016
330in3=r(0x23)*0.016*1.68
331in4=r(0x24)*0.016*4
332in5=255
333in6=255
334
335
336# PWM
337
338Additional info about PWM on the AS99127F (may apply to other Asus
339chips as well) by Jean Delvare as of 2004-04-09:
340
341AS99127F revision 2 seems to have two PWM registers at 0x59 and 0x5A,
342and a temperature sensor type selector at 0x5B (which basically means
343that they swapped registers 0x59 and 0x5B when you compare with Winbond
344chips).
345Revision 1 of the chip also has the temperature sensor type selector at
3460x5B, but PWM registers have no effect.
347
348We don't know exactly how the temperature sensor type selection works.
349Looks like bits 1-0 are for temp1, bits 3-2 for temp2 and bits 5-4 for
350temp3, although it is possible that only the most significant bit matters
351each time. So far, values other than 0 always broke the readings.
352
353PWM registers seem to be split in two parts: bit 7 is a mode selector,
354while the other bits seem to define a value or threshold.
355
356When bit 7 is clear, bits 6-0 seem to hold a threshold value. If the value
357is below a given limit, the fan runs at low speed. If the value is above
358the limit, the fan runs at full speed. We have no clue as to what the limit
359represents. Note that there seem to be some inertia in this mode, speed
360changes may need some time to trigger. Also, an hysteresis mechanism is
361suspected since walking through all the values increasingly and then
362decreasingly led to slightly different limits.
363
364When bit 7 is set, bits 3-0 seem to hold a threshold value, while bits 6-4
365would not be significant. If the value is below a given limit, the fan runs
366at full speed, while if it is above the limit it runs at low speed (so this
367is the contrary of the other mode, in a way). Here again, we don't know
368what the limit is supposed to represent.
369
370One remarkable thing is that the fans would only have two or three
371different speeds (transitional states left apart), not a whole range as
372you usually get with PWM.
373
374As a conclusion, you can write 0x00 or 0x8F to the PWM registers to make
375fans run at low speed, and 0x7F or 0x80 to make them run at full speed.
376
377Please contact us if you can figure out how it is supposed to work. As
378long as we don't know more, the w83781d driver doesn't handle PWM on
379AS99127F chips at all.
380
381Additional info about PWM on the AS99127F rev.1 by Hector Martin:
382
383I've been fiddling around with the (in)famous 0x59 register and
384found out the following values do work as a form of coarse pwm:
385
3860x80 - seems to turn fans off after some time(1-2 minutes)... might be
387some form of auto-fan-control based on temp? hmm (Qfan? this mobo is an
388old ASUS, it isn't marketed as Qfan. Maybe some beta pre-attemp at Qfan
389that was dropped at the BIOS)
3900x81 - off
3910x82 - slightly "on-ner" than off, but my fans do not get to move. I can
392hear the high-pitched PWM sound that motors give off at too-low-pwm.
3930x83 - now they do move. Estimate about 70% speed or so.
3940x84-0x8f - full on
395
396Changing the high nibble doesn't seem to do much except the high bit
397(0x80) must be set for PWM to work, else the current pwm doesn't seem to
398change.
399
400My mobo is an ASUS A7V266-E. This behavior is similar to what I got
401with speedfan under Windows, where 0-15% would be off, 15-2x% (can't
402remember the exact value) would be 70% and higher would be full on.
diff --git a/Documentation/i2c/chips/w83l785ts b/Documentation/i2c/chips/w83l785ts
new file mode 100644
index 000000000000..1841cedc25b2
--- /dev/null
+++ b/Documentation/i2c/chips/w83l785ts
@@ -0,0 +1,39 @@
1Kernel driver w83l785ts
2=======================
3
4Supported chips:
5 * Winbond W83L785TS-S
6 Prefix: 'w83l785ts'
7 Addresses scanned: I2C 0x2e
8 Datasheet: Publicly available at the Winbond USA website
9 http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/W83L785TS-S.pdf
10
11Authors:
12 Jean Delvare <khali@linux-fr.org>
13
14Description
15-----------
16
17The W83L785TS-S is a digital temperature sensor. It senses the
18temperature of a single external diode. The high limit is
19theoretically defined as 85 or 100 degrees C through a combination
20of external resistors, so the user cannot change it. Values seen so
21far suggest that the two possible limits are actually 95 and 110
22degrees C. The datasheet is rather poor and obviously inaccurate
23on several points including this one.
24
25All temperature values are given in degrees Celsius. Resolution
26is 1.0 degree. See the datasheet for details.
27
28The w83l785ts driver will not update its values more frequently than
29every other second; reading them more often will do no harm, but will
30return 'old' values.
31
32Known Issues
33------------
34
35On some systems (Asus), the BIOS is known to interfere with the driver
36and cause read errors. The driver will retry a given number of times
37(5 by default) and then give up, returning the old value (or 0 if
38there is no old value). It seems to work well enough so that you should
39not notice anything. Thanks to James Bolt for helping test this feature.
diff --git a/Documentation/i2c/porting-clients b/Documentation/i2c/porting-clients
index 56404918eabc..a7adbdd9ea8a 100644
--- a/Documentation/i2c/porting-clients
+++ b/Documentation/i2c/porting-clients
@@ -57,7 +57,7 @@ Technical changes:
57 Documentation/i2c/sysfs-interface for the individual files. Also 57 Documentation/i2c/sysfs-interface for the individual files. Also
58 convert the units these files read and write to the specified ones. 58 convert the units these files read and write to the specified ones.
59 If you need to add a new type of file, please discuss it on the 59 If you need to add a new type of file, please discuss it on the
60 sensors mailing list <sensors@stimpy.netroedge.com> by providing a 60 sensors mailing list <lm-sensors@lm-sensors.org> by providing a
61 patch to the Documentation/i2c/sysfs-interface file. 61 patch to the Documentation/i2c/sysfs-interface file.
62 62
63* [Attach] For I2C drivers, the attach function should make sure 63* [Attach] For I2C drivers, the attach function should make sure
diff --git a/Documentation/i2c/userspace-tools b/Documentation/i2c/userspace-tools
new file mode 100644
index 000000000000..2622aac65422
--- /dev/null
+++ b/Documentation/i2c/userspace-tools
@@ -0,0 +1,39 @@
1Introduction
2------------
3
4Most mainboards have sensor chips to monitor system health (like temperatures,
5voltages, fans speed). They are often connected through an I2C bus, but some
6are also connected directly through the ISA bus.
7
8The kernel drivers make the data from the sensor chips available in the /sys
9virtual filesystem. Userspace tools are then used to display or set or the
10data in a more friendly manner.
11
12Lm-sensors
13----------
14
15Core set of utilites that will allow you to obtain health information,
16setup monitoring limits etc. You can get them on their homepage
17http://www.lm-sensors.nu/ or as a package from your Linux distribution.
18
19If from website:
20Get lmsensors from project web site. Please note, you need only userspace
21part, so compile with "make user_install" target.
22
23General hints to get things working:
24
250) get lm-sensors userspace utils
261) compile all drivers in I2C section as modules in your kernel
272) run sensors-detect script, it will tell you what modules you need to load.
283) load them and run "sensors" command, you should see some results.
294) fix sensors.conf, labels, limits, fan divisors
305) if any more problems consult FAQ, or documentation
31
32Other utilites
33--------------
34
35If you want some graphical indicators of system health look for applications
36like: gkrellm, ksensors, xsensors, wmtemp, wmsensors, wmgtemp, ksysguardd,
37hardware-monitor
38
39If you are server administrator you can try snmpd or mrtgutils.
diff --git a/Documentation/i2c/writing-clients b/Documentation/i2c/writing-clients
index ad27511e3c7d..f482dae81de3 100644
--- a/Documentation/i2c/writing-clients
+++ b/Documentation/i2c/writing-clients
@@ -171,45 +171,31 @@ The following lists are used internally:
171 171
172 normal_i2c: filled in by the module writer. 172 normal_i2c: filled in by the module writer.
173 A list of I2C addresses which should normally be examined. 173 A list of I2C addresses which should normally be examined.
174 normal_i2c_range: filled in by the module writer.
175 A list of pairs of I2C addresses, each pair being an inclusive range of
176 addresses which should normally be examined.
177 probe: insmod parameter. 174 probe: insmod parameter.
178 A list of pairs. The first value is a bus number (-1 for any I2C bus), 175 A list of pairs. The first value is a bus number (-1 for any I2C bus),
179 the second is the address. These addresses are also probed, as if they 176 the second is the address. These addresses are also probed, as if they
180 were in the 'normal' list. 177 were in the 'normal' list.
181 probe_range: insmod parameter.
182 A list of triples. The first value is a bus number (-1 for any I2C bus),
183 the second and third are addresses. These form an inclusive range of
184 addresses that are also probed, as if they were in the 'normal' list.
185 ignore: insmod parameter. 178 ignore: insmod parameter.
186 A list of pairs. The first value is a bus number (-1 for any I2C bus), 179 A list of pairs. The first value is a bus number (-1 for any I2C bus),
187 the second is the I2C address. These addresses are never probed. 180 the second is the I2C address. These addresses are never probed.
188 This parameter overrules 'normal' and 'probe', but not the 'force' lists. 181 This parameter overrules 'normal' and 'probe', but not the 'force' lists.
189 ignore_range: insmod parameter.
190 A list of triples. The first value is a bus number (-1 for any I2C bus),
191 the second and third are addresses. These form an inclusive range of
192 I2C addresses that are never probed.
193 This parameter overrules 'normal' and 'probe', but not the 'force' lists.
194 force: insmod parameter. 182 force: insmod parameter.
195 A list of pairs. The first value is a bus number (-1 for any I2C bus), 183 A list of pairs. The first value is a bus number (-1 for any I2C bus),
196 the second is the I2C address. A device is blindly assumed to be on 184 the second is the I2C address. A device is blindly assumed to be on
197 the given address, no probing is done. 185 the given address, no probing is done.
198 186
199Fortunately, as a module writer, you just have to define the `normal' 187Fortunately, as a module writer, you just have to define the `normal_i2c'
200and/or `normal_range' parameters. The complete declaration could look 188parameter. The complete declaration could look like this:
201like this:
202 189
203 /* Scan 0x20 to 0x2f, 0x37, and 0x40 to 0x4f */ 190 /* Scan 0x37, and 0x48 to 0x4f */
204 static unsigned short normal_i2c[] = { 0x37,I2C_CLIENT_END }; 191 static unsigned short normal_i2c[] = { 0x37, 0x48, 0x49, 0x4a, 0x4b, 0x4c,
205 static unsigned short normal_i2c_range[] = { 0x20, 0x2f, 0x40, 0x4f, 192 0x4d, 0x4e, 0x4f, I2C_CLIENT_END };
206 I2C_CLIENT_END };
207 193
208 /* Magic definition of all other variables and things */ 194 /* Magic definition of all other variables and things */
209 I2C_CLIENT_INSMOD; 195 I2C_CLIENT_INSMOD;
210 196
211Note that you *have* to call the two defined variables `normal_i2c' and 197Note that you *have* to call the defined variable `normal_i2c',
212`normal_i2c_range', without any prefix! 198without any prefix!
213 199
214 200
215Probing classes (sensors) 201Probing classes (sensors)
@@ -223,39 +209,17 @@ The following lists are used internally. They are all lists of integers.
223 209
224 normal_i2c: filled in by the module writer. Terminated by SENSORS_I2C_END. 210 normal_i2c: filled in by the module writer. Terminated by SENSORS_I2C_END.
225 A list of I2C addresses which should normally be examined. 211 A list of I2C addresses which should normally be examined.
226 normal_i2c_range: filled in by the module writer. Terminated by
227 SENSORS_I2C_END
228 A list of pairs of I2C addresses, each pair being an inclusive range of
229 addresses which should normally be examined.
230 normal_isa: filled in by the module writer. Terminated by SENSORS_ISA_END. 212 normal_isa: filled in by the module writer. Terminated by SENSORS_ISA_END.
231 A list of ISA addresses which should normally be examined. 213 A list of ISA addresses which should normally be examined.
232 normal_isa_range: filled in by the module writer. Terminated by
233 SENSORS_ISA_END
234 A list of triples. The first two elements are ISA addresses, being an
235 range of addresses which should normally be examined. The third is the
236 modulo parameter: only addresses which are 0 module this value relative
237 to the first address of the range are actually considered.
238 probe: insmod parameter. Initialize this list with SENSORS_I2C_END values. 214 probe: insmod parameter. Initialize this list with SENSORS_I2C_END values.
239 A list of pairs. The first value is a bus number (SENSORS_ISA_BUS for 215 A list of pairs. The first value is a bus number (SENSORS_ISA_BUS for
240 the ISA bus, -1 for any I2C bus), the second is the address. These 216 the ISA bus, -1 for any I2C bus), the second is the address. These
241 addresses are also probed, as if they were in the 'normal' list. 217 addresses are also probed, as if they were in the 'normal' list.
242 probe_range: insmod parameter. Initialize this list with SENSORS_I2C_END
243 values.
244 A list of triples. The first value is a bus number (SENSORS_ISA_BUS for
245 the ISA bus, -1 for any I2C bus), the second and third are addresses.
246 These form an inclusive range of addresses that are also probed, as
247 if they were in the 'normal' list.
248 ignore: insmod parameter. Initialize this list with SENSORS_I2C_END values. 218 ignore: insmod parameter. Initialize this list with SENSORS_I2C_END values.
249 A list of pairs. The first value is a bus number (SENSORS_ISA_BUS for 219 A list of pairs. The first value is a bus number (SENSORS_ISA_BUS for
250 the ISA bus, -1 for any I2C bus), the second is the I2C address. These 220 the ISA bus, -1 for any I2C bus), the second is the I2C address. These
251 addresses are never probed. This parameter overrules 'normal' and 221 addresses are never probed. This parameter overrules 'normal' and
252 'probe', but not the 'force' lists. 222 'probe', but not the 'force' lists.
253 ignore_range: insmod parameter. Initialize this list with SENSORS_I2C_END
254 values.
255 A list of triples. The first value is a bus number (SENSORS_ISA_BUS for
256 the ISA bus, -1 for any I2C bus), the second and third are addresses.
257 These form an inclusive range of I2C addresses that are never probed.
258 This parameter overrules 'normal' and 'probe', but not the 'force' lists.
259 223
260Also used is a list of pointers to sensors_force_data structures: 224Also used is a list of pointers to sensors_force_data structures:
261 force_data: insmod parameters. A list, ending with an element of which 225 force_data: insmod parameters. A list, ending with an element of which
@@ -269,16 +233,14 @@ Also used is a list of pointers to sensors_force_data structures:
269So we have a generic insmod variabled `force', and chip-specific variables 233So we have a generic insmod variabled `force', and chip-specific variables
270`force_CHIPNAME'. 234`force_CHIPNAME'.
271 235
272Fortunately, as a module writer, you just have to define the `normal' 236Fortunately, as a module writer, you just have to define the `normal_i2c'
273and/or `normal_range' parameters, and define what chip names are used. 237and `normal_isa' parameters, and define what chip names are used.
274The complete declaration could look like this: 238The complete declaration could look like this:
275 /* Scan i2c addresses 0x20 to 0x2f, 0x37, and 0x40 to 0x4f 239 /* Scan i2c addresses 0x37, and 0x48 to 0x4f */
276 static unsigned short normal_i2c[] = {0x37,SENSORS_I2C_END}; 240 static unsigned short normal_i2c[] = { 0x37, 0x48, 0x49, 0x4a, 0x4b, 0x4c,
277 static unsigned short normal_i2c_range[] = {0x20,0x2f,0x40,0x4f, 241 0x4d, 0x4e, 0x4f, I2C_CLIENT_END };
278 SENSORS_I2C_END};
279 /* Scan ISA address 0x290 */ 242 /* Scan ISA address 0x290 */
280 static unsigned int normal_isa[] = {0x0290,SENSORS_ISA_END}; 243 static unsigned int normal_isa[] = {0x0290,SENSORS_ISA_END};
281 static unsigned int normal_isa_range[] = {SENSORS_ISA_END};
282 244
283 /* Define chips foo and bar, as well as all module parameters and things */ 245 /* Define chips foo and bar, as well as all module parameters and things */
284 SENSORS_INSMOD_2(foo,bar); 246 SENSORS_INSMOD_2(foo,bar);
diff --git a/Documentation/networking/generic-hdlc.txt b/Documentation/networking/generic-hdlc.txt
index 7d1dc6b884f3..31bc8b759b75 100644
--- a/Documentation/networking/generic-hdlc.txt
+++ b/Documentation/networking/generic-hdlc.txt
@@ -1,21 +1,21 @@
1Generic HDLC layer 1Generic HDLC layer
2Krzysztof Halasa <khc@pm.waw.pl> 2Krzysztof Halasa <khc@pm.waw.pl>
3January, 2003
4 3
5 4
6Generic HDLC layer currently supports: 5Generic HDLC layer currently supports:
7- Frame Relay (ANSI, CCITT and no LMI), with ARP support (no InARP). 61. Frame Relay (ANSI, CCITT, Cisco and no LMI).
8 Normal (routed) and Ethernet-bridged (Ethernet device emulation) 7 - Normal (routed) and Ethernet-bridged (Ethernet device emulation)
9 interfaces can share a single PVC. 8 interfaces can share a single PVC.
10- raw HDLC - either IP (IPv4) interface or Ethernet device emulation. 9 - ARP support (no InARP support in the kernel - there is an
11- Cisco HDLC, 10 experimental InARP user-space daemon available on:
12- PPP (uses syncppp.c), 11 http://www.kernel.org/pub/linux/utils/net/hdlc/).
13- X.25 (uses X.25 routines). 122. raw HDLC - either IP (IPv4) interface or Ethernet device emulation.
14 133. Cisco HDLC.
15There are hardware drivers for the following cards: 144. PPP (uses syncppp.c).
16- C101 by Moxa Technologies Co., Ltd. 155. X.25 (uses X.25 routines).
17- RISCom/N2 by SDL Communications Inc. 16
18- and others, some not in the official kernel. 17Generic HDLC is a protocol driver only - it needs a low-level driver
18for your particular hardware.
19 19
20Ethernet device emulation (using HDLC or Frame-Relay PVC) is compatible 20Ethernet device emulation (using HDLC or Frame-Relay PVC) is compatible
21with IEEE 802.1Q (VLANs) and 802.1D (Ethernet bridging). 21with IEEE 802.1Q (VLANs) and 802.1D (Ethernet bridging).
@@ -24,7 +24,7 @@ with IEEE 802.1Q (VLANs) and 802.1D (Ethernet bridging).
24Make sure the hdlc.o and the hardware driver are loaded. It should 24Make sure the hdlc.o and the hardware driver are loaded. It should
25create a number of "hdlc" (hdlc0 etc) network devices, one for each 25create a number of "hdlc" (hdlc0 etc) network devices, one for each
26WAN port. You'll need the "sethdlc" utility, get it from: 26WAN port. You'll need the "sethdlc" utility, get it from:
27 http://hq.pm.waw.pl/hdlc/ 27 http://www.kernel.org/pub/linux/utils/net/hdlc/
28 28
29Compile sethdlc.c utility: 29Compile sethdlc.c utility:
30 gcc -O2 -Wall -o sethdlc sethdlc.c 30 gcc -O2 -Wall -o sethdlc sethdlc.c
@@ -52,12 +52,12 @@ Setting interface:
52* v35 | rs232 | x21 | t1 | e1 - sets physical interface for a given port 52* v35 | rs232 | x21 | t1 | e1 - sets physical interface for a given port
53 if the card has software-selectable interfaces 53 if the card has software-selectable interfaces
54 loopback - activate hardware loopback (for testing only) 54 loopback - activate hardware loopback (for testing only)
55* clock ext - external clock (uses DTE RX and TX clock) 55* clock ext - both RX clock and TX clock external
56* clock int - internal clock (provides clock signal on DCE clock output) 56* clock int - both RX clock and TX clock internal
57* clock txint - TX internal, RX external (provides TX clock on DCE output) 57* clock txint - RX clock external, TX clock internal
58* clock txfromrx - TX clock derived from RX clock (TX clock on DCE output) 58* clock txfromrx - RX clock external, TX clock derived from RX clock
59* rate - sets clock rate in bps (not required for external clock or 59* rate - sets clock rate in bps (for "int" or "txint" clock only)
60 for txfromrx) 60
61 61
62Setting protocol: 62Setting protocol:
63 63
@@ -79,7 +79,7 @@ Setting protocol:
79* x25 - sets X.25 mode 79* x25 - sets X.25 mode
80 80
81* fr - Frame Relay mode 81* fr - Frame Relay mode
82 lmi ansi / ccitt / none - LMI (link management) type 82 lmi ansi / ccitt / cisco / none - LMI (link management) type
83 dce - Frame Relay DCE (network) side LMI instead of default DTE (user). 83 dce - Frame Relay DCE (network) side LMI instead of default DTE (user).
84 It has nothing to do with clocks! 84 It has nothing to do with clocks!
85 t391 - link integrity verification polling timer (in seconds) - user 85 t391 - link integrity verification polling timer (in seconds) - user
@@ -119,13 +119,14 @@ or
119 119
120 120
121 121
122If you have a problem with N2 or C101 card, you can issue the "private" 122If you have a problem with N2, C101 or PLX200SYN card, you can issue the
123command to see port's packet descriptor rings (in kernel logs): 123"private" command to see port's packet descriptor rings (in kernel logs):
124 124
125 sethdlc hdlc0 private 125 sethdlc hdlc0 private
126 126
127The hardware driver has to be build with CONFIG_HDLC_DEBUG_RINGS. 127The hardware driver has to be build with #define DEBUG_RINGS.
128Attaching this info to bug reports would be helpful. Anyway, let me know 128Attaching this info to bug reports would be helpful. Anyway, let me know
129if you have problems using this. 129if you have problems using this.
130 130
131For patches and other info look at http://hq.pm.waw.pl/hdlc/ 131For patches and other info look at:
132<http://www.kernel.org/pub/linux/utils/net/hdlc/>.
diff --git a/Documentation/networking/multicast.txt b/Documentation/networking/multicast.txt
index 5049a64313d1..b06c8c69266f 100644
--- a/Documentation/networking/multicast.txt
+++ b/Documentation/networking/multicast.txt
@@ -47,7 +47,6 @@ ni52 <------------------ Buggy ------------------>
47ni65 YES YES YES Software(#) 47ni65 YES YES YES Software(#)
48seeq NO NO NO N/A 48seeq NO NO NO N/A
49sgiseek <------------------ Buggy ------------------> 49sgiseek <------------------ Buggy ------------------>
50sk_g16 NO NO YES N/A
51smc-ultra YES YES YES Hardware 50smc-ultra YES YES YES Hardware
52sunlance YES YES YES Hardware 51sunlance YES YES YES Hardware
53tulip YES YES YES Hardware 52tulip YES YES YES Hardware
diff --git a/Documentation/networking/net-modules.txt b/Documentation/networking/net-modules.txt
index 3830a83513d2..0b27863f155c 100644
--- a/Documentation/networking/net-modules.txt
+++ b/Documentation/networking/net-modules.txt
@@ -284,9 +284,6 @@ ppp.c:
284seeq8005.c: *Not modularized* 284seeq8005.c: *Not modularized*
285 (Probes ports: 0x300, 0x320, 0x340, 0x360) 285 (Probes ports: 0x300, 0x320, 0x340, 0x360)
286 286
287sk_g16.c: *Not modularized*
288 (Probes ports: 0x100, 0x180, 0x208, 0x220m 0x288, 0x320, 0x328, 0x390)
289
290skeleton.c: *Skeleton* 287skeleton.c: *Skeleton*
291 288
292slhc.c: 289slhc.c:
diff --git a/Documentation/networking/vortex.txt b/Documentation/networking/vortex.txt
index fa12a9e4abdd..80e1cb19609f 100644
--- a/Documentation/networking/vortex.txt
+++ b/Documentation/networking/vortex.txt
@@ -12,7 +12,7 @@ Don is no longer the prime maintainer of this version of the driver.
12Please report problems to one or more of: 12Please report problems to one or more of:
13 13
14 Andrew Morton <andrewm@uow.edu.au> 14 Andrew Morton <andrewm@uow.edu.au>
15 Netdev mailing list <netdev@oss.sgi.com> 15 Netdev mailing list <netdev@vger.kernel.org>
16 Linux kernel mailing list <linux-kernel@vger.kernel.org> 16 Linux kernel mailing list <linux-kernel@vger.kernel.org>
17 17
18Please note the 'Reporting and Diagnosing Problems' section at the end 18Please note the 'Reporting and Diagnosing Problems' section at the end
diff --git a/Documentation/power/devices.txt b/Documentation/power/devices.txt
index 5d4ae9a39f1d..f987afe43e28 100644
--- a/Documentation/power/devices.txt
+++ b/Documentation/power/devices.txt
@@ -207,27 +207,6 @@ SYSTEM_SHUTDOWN, I do not understand this one too much. probably event
207#READY_AFTER_RESUME 207#READY_AFTER_RESUME
208# 208#
209 209
210Driver Detach Power Management
211
212The kernel now supports the ability to place a device in a low-power
213state when it is detached from its driver, which happens when its
214module is removed.
215
216Each device contains a 'detach_state' file in its sysfs directory
217which can be used to control this state. Reading from this file
218displays what the current detach state is set to. This is 0 (On) by
219default. A user may write a positive integer value to this file in the
220range of 1-4 inclusive.
221
222A value of 1-3 will indicate the device should be placed in that
223low-power state, which will cause ->suspend() to be called for that
224device. A value of 4 indicates that the device should be shutdown, so
225->shutdown() will be called for that device.
226
227The driver is responsible for reinitializing the device when the
228module is re-inserted during it's ->probe() (or equivalent) method.
229The driver core will not call any extra functions when binding the
230device to the driver.
231 210
232pm_message_t meaning 211pm_message_t meaning
233 212
diff --git a/Documentation/powerpc/hvcs.txt b/Documentation/powerpc/hvcs.txt
index c0a62e116e6e..dca75cbda6f8 100644
--- a/Documentation/powerpc/hvcs.txt
+++ b/Documentation/powerpc/hvcs.txt
@@ -347,8 +347,8 @@ address that is created by firmware. An example vty-server sysfs entry
347looks like the following: 347looks like the following:
348 348
349 Pow5:/sys/bus/vio/drivers/hvcs/30000004 # ls 349 Pow5:/sys/bus/vio/drivers/hvcs/30000004 # ls
350 . current_vty devspec name partner_vtys 350 . current_vty devspec name partner_vtys
351 .. detach_state index partner_clcs vterm_state 351 .. index partner_clcs vterm_state
352 352
353Each entry is provided, by default with a "name" attribute. Reading the 353Each entry is provided, by default with a "name" attribute. Reading the
354"name" attribute will reveal the device type as shown in the following 354"name" attribute will reveal the device type as shown in the following
diff --git a/Documentation/s390/CommonIO b/Documentation/s390/CommonIO
index a831d9ae5a5e..59d1166d41ee 100644
--- a/Documentation/s390/CommonIO
+++ b/Documentation/s390/CommonIO
@@ -30,7 +30,7 @@ Command line parameters
30 device numbers (0xabcd or abcd, for 2.4 backward compatibility). 30 device numbers (0xabcd or abcd, for 2.4 backward compatibility).
31 You can use the 'all' keyword to ignore all devices. 31 You can use the 'all' keyword to ignore all devices.
32 The '!' operator will cause the I/O-layer to _not_ ignore a device. 32 The '!' operator will cause the I/O-layer to _not_ ignore a device.
33 The order on the command line is not important. 33 The command line is parsed from left to right.
34 34
35 For example, 35 For example,
36 cio_ignore=0.0.0023-0.0.0042,0.0.4711 36 cio_ignore=0.0.0023-0.0.0042,0.0.4711
@@ -72,13 +72,14 @@ Command line parameters
72 /proc/cio_ignore; "add <device range>, <device range>, ..." will ignore the 72 /proc/cio_ignore; "add <device range>, <device range>, ..." will ignore the
73 specified devices. 73 specified devices.
74 74
75 Note: Already known devices cannot be ignored. 75 Note: While already known devices can be added to the list of devices to be
76 ignored, there will be no effect on then. However, if such a device
77 disappears and then reappeares, it will then be ignored.
76 78
77 For example, if device 0.0.abcd is already known and all other devices 79 For example,
78 0.0.a000-0.0.afff are not known,
79 "echo add 0.0.a000-0.0.accc, 0.0.af00-0.0.afff > /proc/cio_ignore" 80 "echo add 0.0.a000-0.0.accc, 0.0.af00-0.0.afff > /proc/cio_ignore"
80 will add 0.0.a000-0.0.abcc, 0.0.abce-0.0.accc and 0.0.af00-0.0.afff to the 81 will add 0.0.a000-0.0.accc and 0.0.af00-0.0.afff to the list of ignored
81 list of ignored devices and skip 0.0.abcd. 82 devices.
82 83
83 The devices can be specified either by bus id (0.0.abcd) or, for 2.4 backward 84 The devices can be specified either by bus id (0.0.abcd) or, for 2.4 backward
84 compatibilty, by the device number in hexadecimal (0xabcd or abcd). 85 compatibilty, by the device number in hexadecimal (0xabcd or abcd).
@@ -98,7 +99,8 @@ Command line parameters
98 99
99 - /proc/s390dbf/cio_trace/hex_ascii 100 - /proc/s390dbf/cio_trace/hex_ascii
100 Logs the calling of functions in the common I/O-layer and, if applicable, 101 Logs the calling of functions in the common I/O-layer and, if applicable,
101 which subchannel they were called for. 102 which subchannel they were called for, as well as dumps of some data
103 structures (like irb in an error case).
102 104
103 The level of logging can be changed to be more or less verbose by piping to 105 The level of logging can be changed to be more or less verbose by piping to
104 /proc/s390dbf/cio_*/level a number between 0 and 6; see the documentation on 106 /proc/s390dbf/cio_*/level a number between 0 and 6; see the documentation on
diff --git a/Documentation/scsi/ChangeLog.megaraid b/Documentation/scsi/ChangeLog.megaraid
index a9356c63b800..5331d91432c7 100644
--- a/Documentation/scsi/ChangeLog.megaraid
+++ b/Documentation/scsi/ChangeLog.megaraid
@@ -1,3 +1,69 @@
1Release Date : Mon Mar 07 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
2Current Version : 2.20.4.6 (scsi module), 2.20.2.6 (cmm module)
3Older Version : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)
4
51. Added IOCTL backward compatibility.
6 Convert megaraid_mm driver to new compat_ioctl entry points.
7 I don't have easy access to hardware, so only compile tested.
8 - Signed-off-by:Andi Kleen <ak@muc.de>
9
102. megaraid_mbox fix: wrong order of arguments in memset()
11 That, BTW, shows why cross-builds are useful-the only indication of
12 problem had been a new warning showing up in sparse output on alpha
13 build (number of exceeding 256 got truncated).
14 - Signed-off-by: Al Viro
15 <viro@parcelfarce.linux.theplanet.co.uk>
16
173. Convert pci_module_init to pci_register_driver
18 Convert from pci_module_init to pci_register_driver
19 (from:http://kerneljanitors.org/TODO)
20 - Signed-off-by: Domen Puncer <domen@coderock.org>
21
224. Use the pre defined DMA mask constants from dma-mapping.h
23 Use the DMA_{64,32}BIT_MASK constants from dma-mapping.h when calling
24 pci_set_dma_mask() or pci_set_consistend_dma_mask(). See
25 http://marc.theaimsgroup.com/?t=108001993000001&r=1&w=2 for more
26 details.
27 Signed-off-by: Tobias Klauser <tklauser@nuerscht.ch>
28 Signed-off-by: Domen Puncer <domen@coderock.org>
29
305. Remove SSID checking for Dobson, Lindsay, and Verde based products.
31 Checking the SSVID/SSID for controllers which have Dobson, Lindsay,
32 and Verde is unnecessary because device ID has been assigned by LSI
33 and it is unique value. So, all controllers with these IOPs have to be
34 supported by the driver regardless SSVID/SSID.
35
366. Date Thu, 27 Jan 2005 04:31:09 +0100
37 From Herbert Poetzl <>
38 Subject RFC: assert_spin_locked() for 2.6
39
40 Greetings!
41
42 overcautious programming will kill your kernel ;)
43 ever thought about checking a spin_lock or even
44 asserting that it must be held (maybe just for
45 spinlock debugging?) ...
46
47 there are several checks present in the kernel
48 where somebody does a variation on the following:
49
50 BUG_ON(!spin_is_locked(&some_lock));
51
52 so what's wrong about that? nothing, unless you
53 compile the code with CONFIG_DEBUG_SPINLOCK but
54 without CONFIG_SMP ... in which case the BUG()
55 will kill your kernel ...
56
57 maybe it's not advised to make such assertions,
58 but here is a solution which works for me ...
59 (compile tested for sh, x86_64 and x86, boot/run
60 tested for x86 only)
61
62 best,
63 Herbert
64
65 - Herbert Poetzl <herbert@13thfloor.at>, Thu, 27 Jan 2005
66
1Release Date : Thu Feb 03 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com> 67Release Date : Thu Feb 03 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
2Current Version : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module) 68Current Version : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)
3Older Version : 2.20.4.4 (scsi module), 2.20.2.4 (cmm module) 69Older Version : 2.20.4.4 (scsi module), 2.20.2.4 (cmm module)
diff --git a/Documentation/scsi/scsi-changer.txt b/Documentation/scsi/scsi-changer.txt
new file mode 100644
index 000000000000..c132687b017a
--- /dev/null
+++ b/Documentation/scsi/scsi-changer.txt
@@ -0,0 +1,180 @@
1
2README for the SCSI media changer driver
3========================================
4
5This is a driver for SCSI Medium Changer devices, which are listed
6with "Type: Medium Changer" in /proc/scsi/scsi.
7
8This is for *real* Jukeboxes. It is *not* supported to work with
9common small CD-ROM changers, neither one-lun-per-slot SCSI changers
10nor IDE drives.
11
12Userland tools available from here:
13 http://linux.bytesex.org/misc/changer.html
14
15
16General Information
17-------------------
18
19First some words about how changers work: A changer has 2 (possibly
20more) SCSI ID's. One for the changer device which controls the robot,
21and one for the device which actually reads and writes the data. The
22later may be anything, a MOD, a CD-ROM, a tape or whatever. For the
23changer device this is a "don't care", he *only* shuffles around the
24media, nothing else.
25
26
27The SCSI changer model is complex, compared to - for example - IDE-CD
28changers. But it allows to handle nearly all possible cases. It knows
294 different types of changer elements:
30
31 media transport - this one shuffles around the media, i.e. the
32 transport arm. Also known as "picker".
33 storage - a slot which can hold a media.
34 import/export - the same as above, but is accessable from outside,
35 i.e. there the operator (you !) can use this to
36 fill in and remove media from the changer.
37 Sometimes named "mailslot".
38 data transfer - this is the device which reads/writes, i.e. the
39 CD-ROM / Tape / whatever drive.
40
41None of these is limited to one: A huge Jukebox could have slots for
42123 CD-ROM's, 5 CD-ROM readers (and therefore 6 SCSI ID's: the changer
43and each CD-ROM) and 2 transport arms. No problem to handle.
44
45
46How it is implemented
47---------------------
48
49I implemented the driver as character device driver with a NetBSD-like
50ioctl interface. Just grabbed NetBSD's header file and one of the
51other linux SCSI device drivers as starting point. The interface
52should be source code compatible with NetBSD. So if there is any
53software (anybody knows ???) which supports a BSDish changer driver,
54it should work with this driver too.
55
56Over time a few more ioctls where added, volume tag support for example
57wasn't covered by the NetBSD ioctl API.
58
59
60Current State
61-------------
62
63Support for more than one transport arm is not implemented yet (and
64nobody asked for it so far...).
65
66I test and use the driver myself with a 35 slot cdrom jukebox from
67Grundig. I got some reports telling it works ok with tape autoloaders
68(Exabyte, HP and DEC). Some People use this driver with amanda. It
69works fine with small (11 slots) and a huge (4 MOs, 88 slots)
70magneto-optical Jukebox. Probably with lots of other changers too, most
71(but not all :-) people mail me only if it does *not* work...
72
73I don't have any device lists, neither black-list nor white-list. Thus
74it is quite useless to ask me whenever a specific device is supported or
75not. In theory every changer device which supports the SCSI-2 media
76changer command set should work out-of-the-box with this driver. If it
77doesn't, it is a bug. Either within the driver or within the firmware
78of the changer device.
79
80
81Using it
82--------
83
84This is a character device with major number is 86, so use
85"mknod /dev/sch0 c 86 0" to create the special file for the driver.
86
87If the module finds the changer, it prints some messages about the
88device [ try "dmesg" if you don't see anything ] and should show up in
89/proc/devices. If not.... some changers use ID ? / LUN 0 for the
90device and ID ? / LUN 1 for the robot mechanism. But Linux does *not*
91look for LUN's other than 0 as default, becauce there are to many
92broken devices. So you can try:
93
94 1) echo "scsi add-single-device 0 0 ID 1" > /proc/scsi/scsi
95 (replace ID with the SCSI-ID of the device)
96 2) boot the kernel with "max_scsi_luns=1" on the command line
97 (append="max_scsi_luns=1" in lilo.conf should do the trick)
98
99
100Trouble?
101--------
102
103If you insmod the driver with "insmod debug=1", it will be verbose and
104prints a lot of stuff to the syslog. Compiling the kernel with
105CONFIG_SCSI_CONSTANTS=y improves the quality of the error messages alot
106because the kernel will translate the error codes into human-readable
107strings then.
108
109You can display these messages with the dmesg command (or check the
110logfiles). If you email me some question becauce of a problem with the
111driver, please include these messages.
112
113
114Insmod options
115--------------
116
117debug=0/1
118 Enable debug messages (see above, default: 0).
119
120verbose=0/1
121 Be verbose (default: 1).
122
123init=0/1
124 Send INITIALIZE ELEMENT STATUS command to the changer
125 at insmod time (default: 1).
126
127timeout_init=<seconds>
128 timeout for the INITIALIZE ELEMENT STATUS command
129 (default: 3600).
130
131timeout_move=<seconds>
132 timeout for all other commands (default: 120).
133
134dt_id=<id1>,<id2>,...
135dt_lun=<lun1>,<lun2>,...
136 These two allow to specify the SCSI ID and LUN for the data
137 transfer elements. You likely don't need this as the jukebox
138 should provide this information. But some devices don't ...
139
140vendor_firsts=
141vendor_counts=
142vendor_labels=
143 These insmod options can be used to tell the driver that there
144 are some vendor-specific element types. Grundig for example
145 does this. Some jukeboxes have a printer to label fresh burned
146 CDs, which is addressed as element 0xc000 (type 5). To tell the
147 driver about this vendor-specific element, use this:
148 $ insmod ch \
149 vendor_firsts=0xc000 \
150 vendor_counts=1 \
151 vendor_labels=printer
152 All three insmod options accept up to four comma-separated
153 values, this way you can configure the element types 5-8.
154 You likely need the SCSI specs for the device in question to
155 find the correct values as they are not covered by the SCSI-2
156 standard.
157
158
159Credits
160-------
161
162I wrote this driver using the famous mailing-patches-around-the-world
163method. With (more or less) help from:
164
165 Daniel Moehwald <moehwald@hdg.de>
166 Dane Jasper <dane@sonic.net>
167 R. Scott Bailey <sbailey@dsddi.eds.com>
168 Jonathan Corbet <corbet@lwn.net>
169
170Special thanks go to
171 Martin Kuehne <martin.kuehne@bnbt.de>
172for a old, second-hand (but full functional) cdrom jukebox which I use
173to develop/test driver and tools now.
174
175Have fun,
176
177 Gerd
178
179--
180Gerd Knorr <kraxel@bytesex.org>
diff --git a/Documentation/scsi/scsi_mid_low_api.txt b/Documentation/scsi/scsi_mid_low_api.txt
index e41703d7d24d..da176c95d0fb 100644
--- a/Documentation/scsi/scsi_mid_low_api.txt
+++ b/Documentation/scsi/scsi_mid_low_api.txt
@@ -936,8 +936,7 @@ Details:
936 * 936 *
937 * Returns SUCCESS if command aborted else FAILED 937 * Returns SUCCESS if command aborted else FAILED
938 * 938 *
939 * Locks: struct Scsi_Host::host_lock held (with irqsave) on entry 939 * Locks: None held
940 * and assumed to be held on return.
941 * 940 *
942 * Calling context: kernel thread 941 * Calling context: kernel thread
943 * 942 *
@@ -955,8 +954,7 @@ Details:
955 * 954 *
956 * Returns SUCCESS if command aborted else FAILED 955 * Returns SUCCESS if command aborted else FAILED
957 * 956 *
958 * Locks: struct Scsi_Host::host_lock held (with irqsave) on entry 957 * Locks: None held
959 * and assumed to be held on return.
960 * 958 *
961 * Calling context: kernel thread 959 * Calling context: kernel thread
962 * 960 *
@@ -974,8 +972,7 @@ Details:
974 * 972 *
975 * Returns SUCCESS if command aborted else FAILED 973 * Returns SUCCESS if command aborted else FAILED
976 * 974 *
977 * Locks: struct Scsi_Host::host_lock held (with irqsave) on entry 975 * Locks: None held
978 * and assumed to be held on return.
979 * 976 *
980 * Calling context: kernel thread 977 * Calling context: kernel thread
981 * 978 *
@@ -993,8 +990,7 @@ Details:
993 * 990 *
994 * Returns SUCCESS if command aborted else FAILED 991 * Returns SUCCESS if command aborted else FAILED
995 * 992 *
996 * Locks: struct Scsi_Host::host_lock held (with irqsave) on entry 993 * Locks: None held
997 * and assumed to be held on return.
998 * 994 *
999 * Calling context: kernel thread 995 * Calling context: kernel thread
1000 * 996 *
diff --git a/Documentation/sgi-ioc4.txt b/Documentation/sgi-ioc4.txt
new file mode 100644
index 000000000000..876c96ae38db
--- /dev/null
+++ b/Documentation/sgi-ioc4.txt
@@ -0,0 +1,45 @@
1The SGI IOC4 PCI device is a bit of a strange beast, so some notes on
2it are in order.
3
4First, even though the IOC4 performs multiple functions, such as an
5IDE controller, a serial controller, a PS/2 keyboard/mouse controller,
6and an external interrupt mechanism, it's not implemented as a
7multifunction device. The consequence of this from a software
8standpoint is that all these functions share a single IRQ, and
9they can't all register to own the same PCI device ID. To make
10matters a bit worse, some of the register blocks (and even registers
11themselves) present in IOC4 are mixed-purpose between these several
12functions, meaning that there's no clear "owning" device driver.
13
14The solution is to organize the IOC4 driver into several independent
15drivers, "ioc4", "sgiioc4", and "ioc4_serial". Note that there is no
16PS/2 controller driver as this functionality has never been wired up
17on a shipping IO card.
18
19ioc4
20====
21This is the core (or shim) driver for IOC4. It is responsible for
22initializing the basic functionality of the chip, and allocating
23the PCI resources that are shared between the IOC4 functions.
24
25This driver also provides registration functions that the other
26IOC4 drivers can call to make their presence known. Each driver
27needs to provide a probe and remove function, which are invoked
28by the core driver at appropriate times. The interface of these
29IOC4 function probe and remove operations isn't precisely the same
30as PCI device probe and remove operations, but is logically the
31same operation.
32
33sgiioc4
34=======
35This is the IDE driver for IOC4. Its name isn't very descriptive
36simply for historical reasons (it used to be the only IOC4 driver
37component). There's not much to say about it other than it hooks
38up to the ioc4 driver via the appropriate registration, probe, and
39remove functions.
40
41ioc4_serial
42===========
43This is the serial driver for IOC4. There's not much to say about it
44other than it hooks up to the ioc4 driver via the appropriate registration,
45probe, and remove functions.
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 71ef0498d5e0..104a994b8289 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -615,9 +615,11 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
615 Module snd-hda-intel 615 Module snd-hda-intel
616 -------------------- 616 --------------------
617 617
618 Module for Intel HD Audio (ICH6, ICH6M, ICH7) 618 Module for Intel HD Audio (ICH6, ICH6M, ICH7), ATI SB450,
619 VIA VT8251/VT8237A
619 620
620 model - force the model name 621 model - force the model name
622 position_fix - Fix DMA pointer (0 = FIFO size, 1 = none, 2 = POSBUF)
621 623
622 Module supports up to 8 cards. 624 Module supports up to 8 cards.
623 625
@@ -635,6 +637,10 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
635 5stack 5-jack in back, 2-jack in front 637 5stack 5-jack in back, 2-jack in front
636 5stack-digout 5-jack in back, 2-jack in front, a SPDIF out 638 5stack-digout 5-jack in back, 2-jack in front, a SPDIF out
637 w810 3-jack 639 w810 3-jack
640 z71v 3-jack (HP shared SPDIF)
641 asus 3-jack
642 uniwill 3-jack
643 F1734 2-jack
638 644
639 CMI9880 645 CMI9880
640 minimal 3-jack in back 646 minimal 3-jack in back
@@ -642,6 +648,15 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
642 full 6-jack in back, 2-jack in front 648 full 6-jack in back, 2-jack in front
643 full_dig 6-jack in back, 2-jack in front, SPDIF I/O 649 full_dig 6-jack in back, 2-jack in front, SPDIF I/O
644 allout 5-jack in back, 2-jack in front, SPDIF out 650 allout 5-jack in back, 2-jack in front, SPDIF out
651 auto auto-config reading BIOS (default)
652
653 Note 2: If you get click noises on output, try the module option
654 position_fix=1 or 2. position_fix=1 will use the SD_LPIB
655 register value without FIFO size correction as the current
656 DMA pointer. position_fix=2 will make the driver to use
657 the position buffer instead of reading SD_LPIB register.
658 (Usually SD_LPLIB register is more accurate than the
659 position buffer.)
645 660
646 Module snd-hdsp 661 Module snd-hdsp
647 --------------- 662 ---------------
@@ -660,7 +675,19 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
660 module did formerly. It will allocate the buffers in advance 675 module did formerly. It will allocate the buffers in advance
661 when any HDSP cards are found. To make the buffer 676 when any HDSP cards are found. To make the buffer
662 allocation sure, load snd-page-alloc module in the early 677 allocation sure, load snd-page-alloc module in the early
663 stage of boot sequence. 678 stage of boot sequence. See "Early Buffer Allocation"
679 section.
680
681 Module snd-hdspm
682 ----------------
683
684 Module for RME HDSP MADI board.
685
686 precise_ptr - Enable precise pointer, or disable.
687 line_outs_monitor - Send playback streams to analog outs by default.
688 enable_monitor - Enable Analog Out on Channel 63/64 by default.
689
690 See hdspm.txt for details.
664 691
665 Module snd-ice1712 692 Module snd-ice1712
666 ------------------ 693 ------------------
@@ -677,15 +704,19 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
677 * TerraTec EWS 88D 704 * TerraTec EWS 88D
678 * TerraTec EWX 24/96 705 * TerraTec EWX 24/96
679 * TerraTec DMX 6Fire 706 * TerraTec DMX 6Fire
707 * TerraTec Phase 88
680 * Hoontech SoundTrack DSP 24 708 * Hoontech SoundTrack DSP 24
681 * Hoontech SoundTrack DSP 24 Value 709 * Hoontech SoundTrack DSP 24 Value
682 * Hoontech SoundTrack DSP 24 Media 7.1 710 * Hoontech SoundTrack DSP 24 Media 7.1
711 * Event Electronics, EZ8
683 * Digigram VX442 712 * Digigram VX442
713 * Lionstracs, Mediastaton
684 714
685 model - Use the given board model, one of the following: 715 model - Use the given board model, one of the following:
686 delta1010, dio2496, delta66, delta44, audiophile, delta410, 716 delta1010, dio2496, delta66, delta44, audiophile, delta410,
687 delta1010lt, vx442, ewx2496, ews88mt, ews88mt_new, ews88d, 717 delta1010lt, vx442, ewx2496, ews88mt, ews88mt_new, ews88d,
688 dmx6fire, dsp24, dsp24_value, dsp24_71, ez8 718 dmx6fire, dsp24, dsp24_value, dsp24_71, ez8,
719 phase88, mediastation
689 omni - Omni I/O support for MidiMan M-Audio Delta44/66 720 omni - Omni I/O support for MidiMan M-Audio Delta44/66
690 cs8427_timeout - reset timeout for the CS8427 chip (S/PDIF transciever) 721 cs8427_timeout - reset timeout for the CS8427 chip (S/PDIF transciever)
691 in msec resolution, default value is 500 (0.5 sec) 722 in msec resolution, default value is 500 (0.5 sec)
@@ -694,20 +725,46 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
694 is not used with all Envy24 based cards (for example in the MidiMan Delta 725 is not used with all Envy24 based cards (for example in the MidiMan Delta
695 serie). 726 serie).
696 727
728 Note: The supported board is detected by reading EEPROM or PCI
729 SSID (if EEPROM isn't available). You can override the
730 model by passing "model" module option in case that the
731 driver isn't configured properly or you want to try another
732 type for testing.
733
697 Module snd-ice1724 734 Module snd-ice1724
698 ------------------ 735 ------------------
699 736
700 Module for Envy24HT (VT/ICE1724) based PCI sound cards. 737 Module for Envy24HT (VT/ICE1724), Envy24PT (VT1720) based PCI sound cards.
701 * MidiMan M Audio Revolution 7.1 738 * MidiMan M Audio Revolution 7.1
702 * AMP Ltd AUDIO2000 739 * AMP Ltd AUDIO2000
703 * TerraTec Aureon Sky-5.1, Space-7.1 740 * TerraTec Aureon 5.1 Sky
741 * TerraTec Aureon 7.1 Space
742 * TerraTec Aureon 7.1 Universe
743 * TerraTec Phase 22
744 * TerraTec Phase 28
745 * AudioTrak Prodigy 7.1
746 * AudioTrak Prodigy 192
747 * Pontis MS300
748 * Albatron K8X800 Pro II
749 * Chaintech ZNF3-150
750 * Chaintech ZNF3-250
751 * Chaintech 9CJS
752 * Chaintech AV-710
753 * Shuttle SN25P
704 754
705 model - Use the given board model, one of the following: 755 model - Use the given board model, one of the following:
706 revo71, amp2000, prodigy71, aureon51, aureon71, 756 revo71, amp2000, prodigy71, prodigy192, aureon51,
707 k8x800 757 aureon71, universe, k8x800, phase22, phase28, ms300,
758 av710
708 759
709 Module supports up to 8 cards and autoprobe. 760 Module supports up to 8 cards and autoprobe.
710 761
762 Note: The supported board is detected by reading EEPROM or PCI
763 SSID (if EEPROM isn't available). You can override the
764 model by passing "model" module option in case that the
765 driver isn't configured properly or you want to try another
766 type for testing.
767
711 Module snd-intel8x0 768 Module snd-intel8x0
712 ------------------- 769 -------------------
713 770
@@ -1026,7 +1083,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1026 module did formerly. It will allocate the buffers in advance 1083 module did formerly. It will allocate the buffers in advance
1027 when any RME9652 cards are found. To make the buffer 1084 when any RME9652 cards are found. To make the buffer
1028 allocation sure, load snd-page-alloc module in the early 1085 allocation sure, load snd-page-alloc module in the early
1029 stage of boot sequence. 1086 stage of boot sequence. See "Early Buffer Allocation"
1087 section.
1030 1088
1031 Module snd-sa11xx-uda1341 (on arm only) 1089 Module snd-sa11xx-uda1341 (on arm only)
1032 --------------------------------------- 1090 ---------------------------------------
@@ -1211,16 +1269,18 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1211 ------------------ 1269 ------------------
1212 1270
1213 Module for AC'97 motherboards based on VIA 82C686A/686B, 8233, 1271 Module for AC'97 motherboards based on VIA 82C686A/686B, 8233,
1214 8233A, 8233C, 8235 (south) bridge. 1272 8233A, 8233C, 8235, 8237 (south) bridge.
1215 1273
1216 mpu_port - 0x300,0x310,0x320,0x330, otherwise obtain BIOS setup 1274 mpu_port - 0x300,0x310,0x320,0x330, otherwise obtain BIOS setup
1217 [VIA686A/686B only] 1275 [VIA686A/686B only]
1218 joystick - Enable joystick (default off) [VIA686A/686B only] 1276 joystick - Enable joystick (default off) [VIA686A/686B only]
1219 ac97_clock - AC'97 codec clock base (default 48000Hz) 1277 ac97_clock - AC'97 codec clock base (default 48000Hz)
1220 dxs_support - support DXS channels, 1278 dxs_support - support DXS channels,
1221 0 = auto (defalut), 1 = enable, 2 = disable, 1279 0 = auto (default), 1 = enable, 2 = disable,
1222 3 = 48k only, 4 = no VRA 1280 3 = 48k only, 4 = no VRA, 5 = enable any sample
1223 [VIA8233/C,8235 only] 1281 rate and different sample rates on different
1282 channels
1283 [VIA8233/C, 8235, 8237 only]
1224 ac97_quirk - AC'97 workaround for strange hardware 1284 ac97_quirk - AC'97 workaround for strange hardware
1225 See the description of intel8x0 module for details. 1285 See the description of intel8x0 module for details.
1226 1286
@@ -1232,18 +1292,23 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1232 default value 1.4. Then the interrupt number will be 1292 default value 1.4. Then the interrupt number will be
1233 assigned under 15. You might also upgrade your BIOS. 1293 assigned under 15. You might also upgrade your BIOS.
1234 1294
1235 Note: VIA8233/5 (not VIA8233A) can support DXS (direct sound) 1295 Note: VIA8233/5/7 (not VIA8233A) can support DXS (direct sound)
1236 channels as the first PCM. On these channels, up to 4 1296 channels as the first PCM. On these channels, up to 4
1237 streams can be played at the same time. 1297 streams can be played at the same time, and the controller
1298 can perform sample rate conversion with separate rates for
1299 each channel.
1238 As default (dxs_support = 0), 48k fixed rate is chosen 1300 As default (dxs_support = 0), 48k fixed rate is chosen
1239 except for the known devices since the output is often 1301 except for the known devices since the output is often
1240 noisy except for 48k on some mother boards due to the 1302 noisy except for 48k on some mother boards due to the
1241 bug of BIOS. 1303 bug of BIOS.
1242 Please try once dxs_support=1 and if it works on other 1304 Please try once dxs_support=5 and if it works on other
1243 sample rates (e.g. 44.1kHz of mp3 playback), please let us 1305 sample rates (e.g. 44.1kHz of mp3 playback), please let us
1244 know the PCI subsystem vendor/device id's (output of 1306 know the PCI subsystem vendor/device id's (output of
1245 "lspci -nv"). 1307 "lspci -nv").
1246 If it doesn't work, try dxs_support=4. If it still doesn't 1308 If dxs_support=5 does not work, try dxs_support=4; if it
1309 doesn't work too, try dxs_support=1. (dxs_support=1 is
1310 usually for old motherboards. The correct implementated
1311 board should work with 4 or 5.) If it still doesn't
1247 work and the default setting is ok, dxs_support=3 is the 1312 work and the default setting is ok, dxs_support=3 is the
1248 right choice. If the default setting doesn't work at all, 1313 right choice. If the default setting doesn't work at all,
1249 try dxs_support=2 to disable the DXS channels. 1314 try dxs_support=2 to disable the DXS channels.
@@ -1497,6 +1562,36 @@ Proc interfaces (/proc/asound)
1497 echo "rvplayer 0 0 block" > /proc/asound/card0/pcm0p/oss 1562 echo "rvplayer 0 0 block" > /proc/asound/card0/pcm0p/oss
1498 1563
1499 1564
1565Early Buffer Allocation
1566=======================
1567
1568Some drivers (e.g. hdsp) require the large contiguous buffers, and
1569sometimes it's too late to find such spaces when the driver module is
1570actually loaded due to memory fragmentation. You can pre-allocate the
1571PCM buffers by loading snd-page-alloc module and write commands to its
1572proc file in prior, for example, in the early boot stage like
1573/etc/init.d/*.local scripts.
1574
1575Reading the proc file /proc/drivers/snd-page-alloc shows the current
1576usage of page allocation. In writing, you can send the following
1577commands to the snd-page-alloc driver:
1578
1579 - add VENDOR DEVICE MASK SIZE BUFFERS
1580
1581 VENDOR and DEVICE are PCI vendor and device IDs. They take
1582 integer numbers (0x prefix is needed for the hex).
1583 MASK is the PCI DMA mask. Pass 0 if not restricted.
1584 SIZE is the size of each buffer to allocate. You can pass
1585 k and m suffix for KB and MB. The max number is 16MB.
1586 BUFFERS is the number of buffers to allocate. It must be greater
1587 than 0. The max number is 4.
1588
1589 - erase
1590
1591 This will erase the all pre-allocated buffers which are not in
1592 use.
1593
1594
1500Links 1595Links
1501===== 1596=====
1502 1597
diff --git a/Documentation/sound/alsa/CMIPCI.txt b/Documentation/sound/alsa/CMIPCI.txt
index 4a7df771b806..1872e24442a4 100644
--- a/Documentation/sound/alsa/CMIPCI.txt
+++ b/Documentation/sound/alsa/CMIPCI.txt
@@ -89,19 +89,22 @@ and use the interleaved 4 channel data.
89 89
90There are some control switchs affecting to the speaker connections: 90There are some control switchs affecting to the speaker connections:
91 91
92"Line-In As Rear" - As mentioned above, the line-in jack is used 92"Line-In Mode" - an enum control to change the behavior of line-in
93 for the rear (3th and 4th channels) output. 93 jack. Either "Line-In", "Rear Output" or "Bass Output" can
94"Line-In As Bass" - The line-in jack is used for the bass (5th 94 be selected. The last item is available only with model 039
95 and 6th channels) output. 95 or newer.
96"Mic As Center/LFE" - The mic jack is used for the bass output. 96 When "Rear Output" is chosen, the surround channels 3 and 4
97 If this switch is on, you cannot use a microphone as a capture 97 are output to line-in jack.
98 source, of course. 98"Mic-In Mode" - an enum control to change the behavior of mic-in
99 99 jack. Either "Mic-In" or "Center/LFE Output" can be
100 selected.
101 When "Center/LFE Output" is chosen, the center and bass
102 channels (channels 5 and 6) are output to mic-in jack.
100 103
101Digital I/O 104Digital I/O
102----------- 105-----------
103 106
104The CM8x38 provides the excellent SPDIF capability with very chip 107The CM8x38 provides the excellent SPDIF capability with very cheap
105price (yes, that's the reason I bought the card :) 108price (yes, that's the reason I bought the card :)
106 109
107The SPDIF playback and capture are done via the third PCM device 110The SPDIF playback and capture are done via the third PCM device
@@ -122,8 +125,9 @@ respectively, so you cannot playback both analog and digital streams
122simultaneously. 125simultaneously.
123 126
124To enable SPDIF output, you need to turn on "IEC958 Output Switch" 127To enable SPDIF output, you need to turn on "IEC958 Output Switch"
125control via mixer or alsactl. Then you'll see the red light on from 128control via mixer or alsactl ("IEC958" is the official name of
126the card so you know that's working obviously :) 129so-called S/PDIF). Then you'll see the red light on from the card so
130you know that's working obviously :)
127The SPDIF input is always enabled, so you can hear SPDIF input data 131The SPDIF input is always enabled, so you can hear SPDIF input data
128from line-out with "IEC958 In Monitor" switch at any time (see 132from line-out with "IEC958 In Monitor" switch at any time (see
129below). 133below).
@@ -205,9 +209,10 @@ In addition to the standard SB mixer, CM8x38 provides more functions.
205MIDI CONTROLLER 209MIDI CONTROLLER
206--------------- 210---------------
207 211
208The MPU401-UART interface is enabled as default only for the first 212The MPU401-UART interface is disabled as default. You need to set
209(CMIPCI) card. You need to set module option "midi_port" properly 213module option "mpu_port" with a valid I/O port address to enable the
210for the 2nd (CMIPCI) card. 214MIDI support. The valid I/O ports are 0x300, 0x310, 0x320 and 0x330.
215Choose the value which doesn't conflict with other cards.
211 216
212There is _no_ hardware wavetable function on this chip (except for 217There is _no_ hardware wavetable function on this chip (except for
213OPL3 synth below). 218OPL3 synth below).
@@ -229,9 +234,11 @@ I don't know why..
229Joystick and Modem 234Joystick and Modem
230------------------ 235------------------
231 236
232The joystick and modem should be available by enabling the control 237The legacy joystick is supported. To enable the joystick support, pass
233switch "Joystick" and "Modem" respectively. But I myself have never 238joystick_port=1 module option. The value 1 means the auto-detection.
234tested them yet. 239If the auto-detection fails, try to pass the exact I/O address.
240
241The modem is enabled dynamically via a card control switch "Modem".
235 242
236 243
237Debugging Information 244Debugging Information
diff --git a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
index e789475304b6..db0b7d2dc477 100644
--- a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
+++ b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
@@ -371,7 +371,7 @@
371 <listitem><para>create <function>probe()</function> callback.</para></listitem> 371 <listitem><para>create <function>probe()</function> callback.</para></listitem>
372 <listitem><para>create <function>remove()</function> callback.</para></listitem> 372 <listitem><para>create <function>remove()</function> callback.</para></listitem>
373 <listitem><para>create pci_driver table which contains the three pointers above.</para></listitem> 373 <listitem><para>create pci_driver table which contains the three pointers above.</para></listitem>
374 <listitem><para>create <function>init()</function> function just calling <function>pci_module_init()</function> to register the pci_driver table defined above.</para></listitem> 374 <listitem><para>create <function>init()</function> function just calling <function>pci_register_driver()</function> to register the pci_driver table defined above.</para></listitem>
375 <listitem><para>create <function>exit()</function> function to call <function>pci_unregister_driver()</function> function.</para></listitem> 375 <listitem><para>create <function>exit()</function> function to call <function>pci_unregister_driver()</function> function.</para></listitem>
376 </itemizedlist> 376 </itemizedlist>
377 </para> 377 </para>
@@ -1198,7 +1198,7 @@
1198 /* initialization of the module */ 1198 /* initialization of the module */
1199 static int __init alsa_card_mychip_init(void) 1199 static int __init alsa_card_mychip_init(void)
1200 { 1200 {
1201 return pci_module_init(&driver); 1201 return pci_register_driver(&driver);
1202 } 1202 }
1203 1203
1204 /* clean up the module */ 1204 /* clean up the module */
@@ -1654,7 +1654,7 @@
1654<![CDATA[ 1654<![CDATA[
1655 static int __init alsa_card_mychip_init(void) 1655 static int __init alsa_card_mychip_init(void)
1656 { 1656 {
1657 return pci_module_init(&driver); 1657 return pci_register_driver(&driver);
1658 } 1658 }
1659 1659
1660 static void __exit alsa_card_mychip_exit(void) 1660 static void __exit alsa_card_mychip_exit(void)
diff --git a/Documentation/sound/alsa/emu10k1-jack.txt b/Documentation/sound/alsa/emu10k1-jack.txt
new file mode 100644
index 000000000000..751d45036a05
--- /dev/null
+++ b/Documentation/sound/alsa/emu10k1-jack.txt
@@ -0,0 +1,74 @@
1This document is a guide to using the emu10k1 based devices with JACK for low
2latency, multichannel recording functionality. All of my recent work to allow
3Linux users to use the full capabilities of their hardware has been inspired
4by the kX Project. Without their work I never would have discovered the true
5power of this hardware.
6
7 http://www.kxproject.com
8 - Lee Revell, 2005.03.30
9
10Low latency, multichannel audio with JACK and the emu10k1/emu10k2
11-----------------------------------------------------------------
12
13Until recently, emu10k1 users on Linux did not have access to the same low
14latency, multichannel features offered by the "kX ASIO" feature of their
15Windows driver. As of ALSA 1.0.9 this is no more!
16
17For those unfamiliar with kX ASIO, this consists of 16 capture and 16 playback
18channels. With a post 2.6.9 Linux kernel, latencies down to 64 (1.33 ms) or
19even 32 (0.66ms) frames should work well.
20
21The configuration is slightly more involved than on Windows, as you have to
22select the correct device for JACK to use. Actually, for qjackctl users it's
23fairly self explanatory - select Duplex, then for capture and playback select
24the multichannel devices, set the in and out channels to 16, and the sample
25rate to 48000Hz. The command line looks like this:
26
27/usr/local/bin/jackd -R -dalsa -r48000 -p64 -n2 -D -Chw:0,2 -Phw:0,3 -S
28
29This will give you 16 input ports and 16 output ports.
30
31The 16 output ports map onto the 16 FX buses (or the first 16 of 64, for the
32Audigy). The mapping from FX bus to physical output is described in
33SB-Live-mixer.txt (or Audigy-mixer.txt).
34
35The 16 input ports are connected to the 16 physical inputs. Contrary to
36popular belief, all emu10k1 cards are multichannel cards. Which of these
37input channels have physical inputs connected to them depends on the card
38model. Trial and error is highly recommended; the pinout diagrams
39for the card have been reverse engineered by some enterprising kX users and are
40available on the internet. Meterbridge is helpful here, and the kX forums are
41packed with useful information.
42
43Each input port will either correspond to a digital (SPDIF) input, an analog
44input, or nothing. The one exception is the SBLive! 5.1. On these devices,
45the second and third input ports are wired to the center/LFE output. You will
46still see 16 capture channels, but only 14 are available for recording inputs.
47
48This chart, borrowed from kxfxlib/da_asio51.cpp, describes the mapping of JACK
49ports to FXBUS2 (multitrack recording input) and EXTOUT (physical output)
50channels.
51
52/*JACK (& ASIO) mappings on 10k1 5.1 SBLive cards:
53--------------------------------------------
54JACK Epilog FXBUS2(nr)
55--------------------------------------------
56capture_1 asio14 FXBUS2(0xe)
57capture_2 asio15 FXBUS2(0xf)
58capture_3 asio0 FXBUS2(0x0)
59~capture_4 Center EXTOUT(0x11) // mapped to by Center
60~capture_5 LFE EXTOUT(0x12) // mapped to by LFE
61capture_6 asio3 FXBUS2(0x3)
62capture_7 asio4 FXBUS2(0x4)
63capture_8 asio5 FXBUS2(0x5)
64capture_9 asio6 FXBUS2(0x6)
65capture_10 asio7 FXBUS2(0x7)
66capture_11 asio8 FXBUS2(0x8)
67capture_12 asio9 FXBUS2(0x9)
68capture_13 asio10 FXBUS2(0xa)
69capture_14 asio11 FXBUS2(0xb)
70capture_15 asio12 FXBUS2(0xc)
71capture_16 asio13 FXBUS2(0xd)
72*/
73
74TODO: describe use of ld10k1/qlo10k1 in conjunction with JACK
diff --git a/Documentation/sound/alsa/hdspm.txt b/Documentation/sound/alsa/hdspm.txt
new file mode 100644
index 000000000000..7a67ff71a9f8
--- /dev/null
+++ b/Documentation/sound/alsa/hdspm.txt
@@ -0,0 +1,362 @@
1Software Interface ALSA-DSP MADI Driver
2
3(translated from German, so no good English ;-),
42004 - winfried ritsch
5
6
7
8 Full functionality has been added to the driver. Since some of
9 the Controls and startup-options are ALSA-Standard and only the
10 special Controls are described and discussed below.
11
12
13 hardware functionality:
14
15
16 Audio transmission:
17
18 number of channels -- depends on transmission mode
19
20 The number of channels chosen is from 1..Nmax. The reason to
21 use for a lower number of channels is only resource allocation,
22 since unused DMA channels are disabled and less memory is
23 allocated. So also the throughput of the PCI system can be
24 scaled. (Only important for low performance boards).
25
26 Single Speed -- 1..64 channels
27
28 (Note: Choosing the 56channel mode for transmission or as
29 receiver, only 56 are transmitted/received over the MADI, but
30 all 64 channels are available for the mixer, so channel count
31 for the driver)
32
33 Double Speed -- 1..32 channels
34
35 Note: Choosing the 56-channel mode for
36 transmission/receive-mode , only 28 are transmitted/received
37 over the MADI, but all 32 channels are available for the mixer,
38 so channel count for the driver
39
40
41 Quad Speed -- 1..16 channels
42
43 Note: Choosing the 56-channel mode for
44 transmission/receive-mode , only 14 are transmitted/received
45 over the MADI, but all 16 channels are available for the mixer,
46 so channel count for the driver
47
48 Format -- signed 32 Bit Little Endian (SNDRV_PCM_FMTBIT_S32_LE)
49
50 Sample Rates --
51
52 Single Speed -- 32000, 44100, 48000
53
54 Double Speed -- 64000, 88200, 96000 (untested)
55
56 Quad Speed -- 128000, 176400, 192000 (untested)
57
58 access-mode -- MMAP (memory mapped), Not interleaved
59 (PCM_NON-INTERLEAVED)
60
61 buffer-sizes -- 64,128,256,512,1024,2048,8192 Samples
62
63 fragments -- 2
64
65 Hardware-pointer -- 2 Modi
66
67
68 The Card supports the readout of the actual Buffer-pointer,
69 where DMA reads/writes. Since of the bulk mode of PCI it is only
70 64 Byte accurate. SO it is not really usable for the
71 ALSA-mid-level functions (here the buffer-ID gives a better
72 result), but if MMAP is used by the application. Therefore it
73 can be configured at load-time with the parameter
74 precise-pointer.
75
76
77 (Hint: Experimenting I found that the pointer is maximum 64 to
78 large never to small. So if you subtract 64 you always have a
79 safe pointer for writing, which is used on this mode inside
80 ALSA. In theory now you can get now a latency as low as 16
81 Samples, which is a quarter of the interrupt possibilities.)
82
83 Precise Pointer -- off
84 interrupt used for pointer-calculation
85
86 Precise Pointer -- on
87 hardware pointer used.
88
89 Controller:
90
91
92 Since DSP-MADI-Mixer has 8152 Fader, it does not make sense to
93 use the standard mixer-controls, since this would break most of
94 (especially graphic) ALSA-Mixer GUIs. So Mixer control has be
95 provided by a 2-dimensional controller using the
96 hwdep-interface.
97
98 Also all 128+256 Peak and RMS-Meter can be accessed via the
99 hwdep-interface. Since it could be a performance problem always
100 copying and converting Peak and RMS-Levels even if you just need
101 one, I decided to export the hardware structure, so that of
102 needed some driver-guru can implement a memory-mapping of mixer
103 or peak-meters over ioctl, or also to do only copying and no
104 conversion. A test-application shows the usage of the controller.
105
106 Latency Controls --- not implemented !!!
107
108
109 Note: Within the windows-driver the latency is accessible of a
110 control-panel, but buffer-sizes are controlled with ALSA from
111 hwparams-calls and should not be changed in run-state, I did not
112 implement it here.
113
114
115 System Clock -- suspended !!!!
116
117 Name -- "System Clock Mode"
118
119 Access -- Read Write
120
121 Values -- "Master" "Slave"
122
123
124 !!!! This is a hardware-function but is in conflict with the
125 Clock-source controller, which is a kind of ALSA-standard. I
126 makes sense to set the card to a special mode (master at some
127 frequency or slave), since even not using an Audio-application
128 a studio should have working synchronisations setup. So use
129 Clock-source-controller instead !!!!
130
131 Clock Source
132
133 Name -- "Sample Clock Source"
134
135 Access -- Read Write
136
137 Values -- "AutoSync", "Internal 32.0 kHz", "Internal 44.1 kHz",
138 "Internal 48.0 kHz", "Internal 64.0 kHz", "Internal 88.2 kHz",
139 "Internal 96.0 kHz"
140
141 Choose between Master at a specific Frequency and so also the
142 Speed-mode or Slave (Autosync). Also see "Preferred Sync Ref"
143
144
145 !!!! This is no pure hardware function but was implemented by
146 ALSA by some ALSA-drivers before, so I use it also. !!!
147
148
149 Preferred Sync Ref
150
151 Name -- "Preferred Sync Reference"
152
153 Access -- Read Write
154
155 Values -- "Word" "MADI"
156
157
158 Within the Auto-sync-Mode the preferred Sync Source can be
159 chosen. If it is not available another is used if possible.
160
161 Note: Since MADI has a much higher bit-rate than word-clock, the
162 card should synchronise better in MADI Mode. But since the
163 RME-PLL is very good, there are almost no problems with
164 word-clock too. I never found a difference.
165
166
167 TX 64 channel ---
168
169 Name -- "TX 64 channels mode"
170
171 Access -- Read Write
172
173 Values -- 0 1
174
175 Using 64-channel-modus (1) or 56-channel-modus for
176 MADI-transmission (0).
177
178
179 Note: This control is for output only. Input-mode is detected
180 automatically from hardware sending MADI.
181
182
183 Clear TMS ---
184
185 Name -- "Clear Track Marker"
186
187 Access -- Read Write
188
189 Values -- 0 1
190
191
192 Don't use to lower 5 Audio-bits on AES as additional Bits.
193
194
195 Safe Mode oder Auto Input ---
196
197 Name -- "Safe Mode"
198
199 Access -- Read Write
200
201 Values -- 0 1
202
203 (default on)
204
205 If on (1), then if either the optical or coaxial connection
206 has a failure, there is a takeover to the working one, with no
207 sample failure. Its only useful if you use the second as a
208 backup connection.
209
210 Input ---
211
212 Name -- "Input Select"
213
214 Access -- Read Write
215
216 Values -- optical coaxial
217
218
219 Choosing the Input, optical or coaxial. If Safe-mode is active,
220 this is the preferred Input.
221
222-------------- Mixer ----------------------
223
224 Mixer
225
226 Name -- "Mixer"
227
228 Access -- Read Write
229
230 Values - <channel-number 0-127> <Value 0-65535>
231
232
233 Here as a first value the channel-index is taken to get/set the
234 corresponding mixer channel, where 0-63 are the input to output
235 fader and 64-127 the playback to outputs fader. Value 0
236 is channel muted 0 and 32768 an amplification of 1.
237
238 Chn 1-64
239
240 fast mixer for the ALSA-mixer utils. The diagonal of the
241 mixer-matrix is implemented from playback to output.
242
243
244 Line Out
245
246 Name -- "Line Out"
247
248 Access -- Read Write
249
250 Values -- 0 1
251
252 Switching on and off the analog out, which has nothing to do
253 with mixing or routing. the analog outs reflects channel 63,64.
254
255
256--- information (only read access):
257
258 Sample Rate
259
260 Name -- "System Sample Rate"
261
262 Access -- Read-only
263
264 getting the sample rate.
265
266
267 External Rate measured
268
269 Name -- "External Rate"
270
271 Access -- Read only
272
273
274 Should be "Autosync Rate", but Name used is
275 ALSA-Scheme. External Sample frequency liked used on Autosync is
276 reported.
277
278
279 MADI Sync Status
280
281 Name -- "MADI Sync Lock Status"
282
283 Access -- Read
284
285 Values -- 0,1,2
286
287 MADI-Input is 0=Unlocked, 1=Locked, or 2=Synced.
288
289
290 Word Clock Sync Status
291
292 Name -- "Word Clock Lock Status"
293
294 Access -- Read
295
296 Values -- 0,1,2
297
298 Word Clock Input is 0=Unlocked, 1=Locked, or 2=Synced.
299
300 AutoSync
301
302 Name -- "AutoSync Reference"
303
304 Access -- Read
305
306 Values -- "WordClock", "MADI", "None"
307
308 Sync-Reference is either "WordClock", "MADI" or none.
309
310 RX 64ch --- noch nicht implementiert
311
312 MADI-Receiver is in 64 channel mode oder 56 channel mode.
313
314
315 AB_inp --- not tested
316
317 Used input for Auto-Input.
318
319
320 actual Buffer Position --- not implemented
321
322 !!! this is a ALSA internal function, so no control is used !!!
323
324
325
326Calling Parameter:
327
328 index int array (min = 1, max = 8),
329 "Index value for RME HDSPM interface." card-index within ALSA
330
331 note: ALSA-standard
332
333 id string array (min = 1, max = 8),
334 "ID string for RME HDSPM interface."
335
336 note: ALSA-standard
337
338 enable int array (min = 1, max = 8),
339 "Enable/disable specific HDSPM sound-cards."
340
341 note: ALSA-standard
342
343 precise_ptr int array (min = 1, max = 8),
344 "Enable precise pointer, or disable."
345
346 note: Use only when the application supports this (which is a special case).
347
348 line_outs_monitor int array (min = 1, max = 8),
349 "Send playback streams to analog outs by default."
350
351
352 note: each playback channel is mixed to the same numbered output
353 channel (routed). This is against the ALSA-convention, where all
354 channels have to be muted on after loading the driver, but was
355 used before on other cards, so i historically use it again)
356
357
358
359 enable_monitor int array (min = 1, max = 8),
360 "Enable Analog Out on Channel 63/64 by default."
361
362 note: here the analog output is enabled (but not routed). \ No newline at end of file
diff --git a/Documentation/w1/w1.generic b/Documentation/w1/w1.generic
index eace3046a858..f937fbe1cacb 100644
--- a/Documentation/w1/w1.generic
+++ b/Documentation/w1/w1.generic
@@ -1,19 +1,92 @@
1Any w1 device must be connected to w1 bus master device - for example 1The 1-wire (w1) subsystem
2ds9490 usb device or w1-over-GPIO or RS232 converter. 2------------------------------------------------------------------
3Driver for w1 bus master must provide several functions(you can find 3The 1-wire bus is a simple master-slave bus that communicates via a single
4them in struct w1_bus_master definition in w1.h) which then will be 4signal wire (plus ground, so two wires).
5called by w1 core to send various commands over w1 bus(by default it is 5
6reset and search commands). When some device is found on the bus, w1 core 6Devices communicate on the bus by pulling the signal to ground via an open
7checks if driver for it's family is loaded. 7drain output and by sampling the logic level of the signal line.
8If driver is loaded w1 core creates new w1_slave object and registers it 8
9in the system(creates some generic sysfs files(struct w1_family_ops in 9The w1 subsystem provides the framework for managing w1 masters and
10w1_family.h), notifies any registered listener and so on...). 10communication with slaves.
11It is device driver's business to provide any communication method 11
12upstream. 12All w1 slave devices must be connected to a w1 bus master device.
13For example w1_therm driver(ds18?20 thermal sensor family driver) 13
14provides temperature reading function which is bound to ->rbin() method 14Example w1 master devices:
15of the above w1_family_ops structure. 15 DS9490 usb device
16w1_smem - driver for simple 64bit memory cell provides ID reading 16 W1-over-GPIO
17method. 17 DS2482 (i2c to w1 bridge)
18 Emulated devices, such as a RS232 converter, parallel port adapter, etc
19
20
21What does the w1 subsystem do?
22------------------------------------------------------------------
23When a w1 master driver registers with the w1 subsystem, the following occurs:
24
25 - sysfs entries for that w1 master are created
26 - the w1 bus is periodically searched for new slave devices
27
28When a device is found on the bus, w1 core checks if driver for it's family is
29loaded. If so, the family driver is attached to the slave.
30If there is no driver for the family, a simple sysfs entry is created
31for the slave device.
32
33
34W1 device families
35------------------------------------------------------------------
36Slave devices are handled by a driver written for a family of w1 devices.
37
38A family driver populates a struct w1_family_ops (see w1_family.h) and
39registers with the w1 subsystem.
40
41Current family drivers:
42w1_therm - (ds18?20 thermal sensor family driver)
43 provides temperature reading function which is bound to ->rbin() method
44 of the above w1_family_ops structure.
45
46w1_smem - driver for simple 64bit memory cell provides ID reading method.
18 47
19You can call above methods by reading appropriate sysfs files. 48You can call above methods by reading appropriate sysfs files.
49
50
51What does a w1 master driver need to implement?
52------------------------------------------------------------------
53
54The driver for w1 bus master must provide at minimum two functions.
55
56Emulated devices must provide the ability to set the output signal level
57(write_bit) and sample the signal level (read_bit).
58
59Devices that support the 1-wire natively must provide the ability to write and
60sample a bit (touch_bit) and reset the bus (reset_bus).
61
62Most hardware provides higher-level functions that offload w1 handling.
63See struct w1_bus_master definition in w1.h for details.
64
65
66w1 master sysfs interface
67------------------------------------------------------------------
68<xx-xxxxxxxxxxxxx> - a directory for a found device. The format is family-serial
69bus - (standard) symlink to the w1 bus
70driver - (standard) symlink to the w1 driver
71w1_master_attempts - the number of times a search was attempted
72w1_master_max_slave_count
73 - the maximum slaves that may be attached to a master
74w1_master_name - the name of the device (w1_bus_masterX)
75w1_master_search - the number of searches left to do, -1=continual (default)
76w1_master_slave_count
77 - the number of slaves found
78w1_master_slaves - the names of the slaves, one per line
79w1_master_timeout - the delay in seconds between searches
80
81If you have a w1 bus that never changes (you don't add or remove devices),
82you can set w1_master_search to a positive value to disable searches.
83
84
85w1 slave sysfs interface
86------------------------------------------------------------------
87bus - (standard) symlink to the w1 bus
88driver - (standard) symlink to the w1 driver
89name - the device name, usually the same as the directory name
90w1_slave - (optional) a binary file whose meaning depends on the
91 family driver
92
diff --git a/Documentation/x86_64/boot-options.txt b/Documentation/x86_64/boot-options.txt
index 44b6eea60ece..b9e6be00cadf 100644
--- a/Documentation/x86_64/boot-options.txt
+++ b/Documentation/x86_64/boot-options.txt
@@ -25,6 +25,9 @@ APICs
25 25
26 noapictimer Don't set up the APIC timer 26 noapictimer Don't set up the APIC timer
27 27
28 no_timer_check Don't check the IO-APIC timer. This can work around
29 problems with incorrect timer initialization on some boards.
30
28Early Console 31Early Console
29 32
30 syntax: earlyprintk=vga 33 syntax: earlyprintk=vga