aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/DocBook/Makefile7
-rw-r--r--Documentation/DocBook/tulip-user.tmpl327
-rw-r--r--Documentation/DocBook/via-audio.tmpl597
3 files changed, 3 insertions, 928 deletions
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index a221039ee4c9..393082c7a3a2 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -7,10 +7,9 @@
7# list of DOCBOOKS. 7# list of DOCBOOKS.
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 via-audio.xml \ 10 kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
11 deviceiobook.xml procfs-guide.xml tulip-user.xml \ 11 procfs-guide.xml writing_usb_driver.xml scsidrivers.xml \
12 writing_usb_driver.xml scsidrivers.xml sis900.xml \ 12 sis900.xml kernel-api.xml journal-api.xml lsm.xml usb.xml \
13 kernel-api.xml journal-api.xml lsm.xml usb.xml \
14 gadget.xml libata.xml mtdnand.xml librs.xml 13 gadget.xml libata.xml mtdnand.xml librs.xml
15 14
16### 15###
diff --git a/Documentation/DocBook/tulip-user.tmpl b/Documentation/DocBook/tulip-user.tmpl
deleted file mode 100644
index 6520d7a1b132..000000000000
--- a/Documentation/DocBook/tulip-user.tmpl
+++ /dev/null
@@ -1,327 +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="TulipUserGuide">
6 <bookinfo>
7 <title>Tulip Driver User's Guide</title>
8
9 <authorgroup>
10 <author>
11 <firstname>Jeff</firstname>
12 <surname>Garzik</surname>
13 <affiliation>
14 <address>
15 <email>jgarzik@pobox.com</email>
16 </address>
17 </affiliation>
18 </author>
19 </authorgroup>
20
21 <copyright>
22 <year>2001</year>
23 <holder>Jeff Garzik</holder>
24 </copyright>
25
26 <legalnotice>
27 <para>
28 This documentation is free software; you can redistribute
29 it and/or modify it under the terms of the GNU General Public
30 License as published by the Free Software Foundation; either
31 version 2 of the License, or (at your option) any later
32 version.
33 </para>
34
35 <para>
36 This program is distributed in the hope that it will be
37 useful, but WITHOUT ANY WARRANTY; without even the implied
38 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
39 See the GNU General Public License for more details.
40 </para>
41
42 <para>
43 You should have received a copy of the GNU General Public
44 License along with this program; if not, write to the Free
45 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
46 MA 02111-1307 USA
47 </para>
48
49 <para>
50 For more details see the file COPYING in the source
51 distribution of Linux.
52 </para>
53 </legalnotice>
54 </bookinfo>
55
56 <toc></toc>
57
58 <chapter id="intro">
59 <title>Introduction</title>
60<para>
61The Tulip Ethernet Card Driver
62is maintained by Jeff Garzik (<email>jgarzik@pobox.com</email>).
63</para>
64
65<para>
66The Tulip driver was developed by Donald Becker and changed by
67Jeff Garzik, Takashi Manabe and a cast of thousands.
68</para>
69
70<para>
71For 2.4.x and later kernels, the Linux Tulip driver is available at
72<ulink url="http://sourceforge.net/projects/tulip/">http://sourceforge.net/projects/tulip/</ulink>
73</para>
74
75<para>
76 This driver is for the Digital "Tulip" Ethernet adapter interface.
77 It should work with most DEC 21*4*-based chips/ethercards, as well as
78 with work-alike chips from Lite-On (PNIC) and Macronix (MXIC) and ASIX.
79</para>
80
81<para>
82 The original author may be reached as becker@scyld.com, or C/O
83 Scyld Computing Corporation,
84 410 Severn Ave., Suite 210,
85 Annapolis MD 21403
86</para>
87
88<para>
89 Additional information on Donald Becker's tulip.c
90 is available at <ulink url="http://www.scyld.com/network/tulip.html">http://www.scyld.com/network/tulip.html</ulink>
91</para>
92
93 </chapter>
94
95 <chapter id="drvr-compat">
96 <title>Driver Compatibility</title>
97
98<para>
99This device driver is designed for the DECchip "Tulip", Digital's
100single-chip ethernet controllers for PCI (now owned by Intel).
101Supported members of the family
102are the 21040, 21041, 21140, 21140A, 21142, and 21143. Similar work-alike
103chips from Lite-On, Macronics, ASIX, Compex and other listed below are also
104supported.
105</para>
106
107<para>
108These chips are used on at least 140 unique PCI board designs. The great
109number of chips and board designs supported is the reason for the
110driver size and complexity. Almost of the increasing complexity is in the
111board configuration and media selection code. There is very little
112increasing in the operational critical path length.
113</para>
114 </chapter>
115
116 <chapter id="board-settings">
117 <title>Board-specific Settings</title>
118
119<para>
120PCI bus devices are configured by the system at boot time, so no jumpers
121need to be set on the board. The system BIOS preferably should assign the
122PCI INTA signal to an otherwise unused system IRQ line.
123</para>
124
125<para>
126Some boards have EEPROMs tables with default media entry. The factory default
127is usually "autoselect". This should only be overridden when using
128transceiver connections without link beat e.g. 10base2 or AUI, or (rarely!)
129for forcing full-duplex when used with old link partners that do not do
130autonegotiation.
131</para>
132 </chapter>
133
134 <chapter id="driver-operation">
135 <title>Driver Operation</title>
136
137<sect1><title>Ring buffers</title>
138
139<para>
140The Tulip can use either ring buffers or lists of Tx and Rx descriptors.
141This driver uses statically allocated rings of Rx and Tx descriptors, set at
142compile time by RX/TX_RING_SIZE. This version of the driver allocates skbuffs
143for the Rx ring buffers at open() time and passes the skb->data field to the
144Tulip as receive data buffers. When an incoming frame is less than
145RX_COPYBREAK bytes long, a fresh skbuff is allocated and the frame is
146copied to the new skbuff. When the incoming frame is larger, the skbuff is
147passed directly up the protocol stack and replaced by a newly allocated
148skbuff.
149</para>
150
151<para>
152The RX_COPYBREAK value is chosen to trade-off the memory wasted by
153using a full-sized skbuff for small frames vs. the copying costs of larger
154frames. For small frames the copying cost is negligible (esp. considering
155that we are pre-loading the cache with immediately useful header
156information). For large frames the copying cost is non-trivial, and the
157larger copy might flush the cache of useful data. A subtle aspect of this
158choice is that the Tulip only receives into longword aligned buffers, thus
159the IP header at offset 14 isn't longword aligned for further processing.
160Copied frames are put into the new skbuff at an offset of "+2", thus copying
161has the beneficial effect of aligning the IP header and preloading the
162cache.
163</para>
164
165</sect1>
166
167<sect1><title>Synchronization</title>
168<para>
169The driver runs as two independent, single-threaded flows of control. One
170is the send-packet routine, which enforces single-threaded use by the
171dev->tbusy flag. The other thread is the interrupt handler, which is single
172threaded by the hardware and other software.
173</para>
174
175<para>
176The send packet thread has partial control over the Tx ring and 'dev->tbusy'
177flag. It sets the tbusy flag whenever it's queuing a Tx packet. If the next
178queue slot is empty, it clears the tbusy flag when finished otherwise it sets
179the 'tp->tx_full' flag.
180</para>
181
182<para>
183The interrupt handler has exclusive control over the Rx ring and records stats
184from the Tx ring. (The Tx-done interrupt can't be selectively turned off, so
185we can't avoid the interrupt overhead by having the Tx routine reap the Tx
186stats.) After reaping the stats, it marks the queue entry as empty by setting
187the 'base' to zero. Iff the 'tp->tx_full' flag is set, it clears both the
188tx_full and tbusy flags.
189</para>
190
191</sect1>
192
193 </chapter>
194
195 <chapter id="errata">
196 <title>Errata</title>
197
198<para>
199The old DEC databooks were light on details.
200The 21040 databook claims that CSR13, CSR14, and CSR15 should each be the last
201register of the set CSR12-15 written. Hmmm, now how is that possible?
202</para>
203
204<para>
205The DEC SROM format is very badly designed not precisely defined, leading to
206part of the media selection junkheap below. Some boards do not have EEPROM
207media tables and need to be patched up. Worse, other boards use the DEC
208design kit media table when it isn't correct for their board.
209</para>
210
211<para>
212We cannot use MII interrupts because there is no defined GPIO pin to attach
213them. The MII transceiver status is polled using an kernel timer.
214</para>
215 </chapter>
216
217 <chapter id="changelog">
218 <title>Driver Change History</title>
219
220 <sect1><title>Version 0.9.14 (February 20, 2001)</title>
221 <itemizedlist>
222 <listitem><para>Fix PNIC problems (Manfred Spraul)</para></listitem>
223 <listitem><para>Add new PCI id for Accton comet</para></listitem>
224 <listitem><para>Support Davicom tulips</para></listitem>
225 <listitem><para>Fix oops in eeprom parsing</para></listitem>
226 <listitem><para>Enable workarounds for early PCI chipsets</para></listitem>
227 <listitem><para>IA64, hppa csr0 support</para></listitem>
228 <listitem><para>Support media types 5, 6</para></listitem>
229 <listitem><para>Interpret a bit more of the 21142 SROM extended media type 3</para></listitem>
230 <listitem><para>Add missing delay in eeprom reading</para></listitem>
231 </itemizedlist>
232 </sect1>
233
234 <sect1><title>Version 0.9.11 (November 3, 2000)</title>
235 <itemizedlist>
236 <listitem><para>Eliminate extra bus accesses when sharing interrupts (prumpf)</para></listitem>
237 <listitem><para>Barrier following ownership descriptor bit flip (prumpf)</para></listitem>
238 <listitem><para>Endianness fixes for >14 addresses in setup frames (prumpf)</para></listitem>
239 <listitem><para>Report link beat to kernel/userspace via netif_carrier_*. (kuznet)</para></listitem>
240 <listitem><para>Better spinlocking in set_rx_mode.</para></listitem>
241 <listitem><para>Fix I/O resource request failure error messages (DaveM catch)</para></listitem>
242 <listitem><para>Handle DMA allocation failure.</para></listitem>
243 </itemizedlist>
244 </sect1>
245
246 <sect1><title>Version 0.9.10 (September 6, 2000)</title>
247 <itemizedlist>
248 <listitem><para>Simple interrupt mitigation (via jamal)</para></listitem>
249 <listitem><para>More PCI ids</para></listitem>
250 </itemizedlist>
251 </sect1>
252
253 <sect1><title>Version 0.9.9 (August 11, 2000)</title>
254 <itemizedlist>
255 <listitem><para>More PCI ids</para></listitem>
256 </itemizedlist>
257 </sect1>
258
259 <sect1><title>Version 0.9.8 (July 13, 2000)</title>
260 <itemizedlist>
261 <listitem><para>Correct signed/unsigned comparison for dummy frame index</para></listitem>
262 <listitem><para>Remove outdated references to struct enet_statistics</para></listitem>
263 </itemizedlist>
264 </sect1>
265
266 <sect1><title>Version 0.9.7 (June 17, 2000)</title>
267 <itemizedlist>
268 <listitem><para>Timer cleanups (Andrew Morton)</para></listitem>
269 <listitem><para>Alpha compile fix (somebody?)</para></listitem>
270 </itemizedlist>
271 </sect1>
272
273 <sect1><title>Version 0.9.6 (May 31, 2000)</title>
274 <itemizedlist>
275 <listitem><para>Revert 21143-related support flag patch</para></listitem>
276 <listitem><para>Add HPPA/media-table debugging printk</para></listitem>
277 </itemizedlist>
278 </sect1>
279
280 <sect1><title>Version 0.9.5 (May 30, 2000)</title>
281 <itemizedlist>
282 <listitem><para>HPPA support (willy@puffingroup)</para></listitem>
283 <listitem><para>CSR6 bits and tulip.h cleanup (Chris Smith)</para></listitem>
284 <listitem><para>Improve debugging messages a bit</para></listitem>
285 <listitem><para>Add delay after CSR13 write in t21142_start_nway</para></listitem>
286 <listitem><para>Remove unused ETHER_STATS code</para></listitem>
287 <listitem><para>Convert 'extern inline' to 'static inline' in tulip.h (Chris Smith)</para></listitem>
288 <listitem><para>Update DS21143 support flags in tulip_chip_info[]</para></listitem>
289 <listitem><para>Use spin_lock_irq, not _irqsave/restore, in tulip_start_xmit()</para></listitem>
290 <listitem><para>Add locking to set_rx_mode()</para></listitem>
291 <listitem><para>Fix race with chip setting DescOwned bit (Hal Murray)</para></listitem>
292 <listitem><para>Request 100% of PIO and MMIO resource space assigned to card</para></listitem>
293 <listitem><para>Remove error message from pci_enable_device failure</para></listitem>
294 </itemizedlist>
295 </sect1>
296
297 <sect1><title>Version 0.9.4.3 (April 14, 2000)</title>
298 <itemizedlist>
299 <listitem><para>mod_timer fix (Hal Murray)</para></listitem>
300 <listitem><para>PNIC2 resuscitation (Chris Smith)</para></listitem>
301 </itemizedlist>
302 </sect1>
303
304 <sect1><title>Version 0.9.4.2 (March 21, 2000)</title>
305 <itemizedlist>
306 <listitem><para>Fix 21041 CSR7, CSR13/14/15 handling</para></listitem>
307 <listitem><para>Merge some PCI ids from tulip 0.91x</para></listitem>
308 <listitem><para>Merge some HAS_xxx flags and flag settings from tulip 0.91x</para></listitem>
309 <listitem><para>asm/io.h fix (submitted by many) and cleanup</para></listitem>
310 <listitem><para>s/HAS_NWAY143/HAS_NWAY/</para></listitem>
311 <listitem><para>Cleanup 21041 mode reporting</para></listitem>
312 <listitem><para>Small code cleanups</para></listitem>
313 </itemizedlist>
314 </sect1>
315
316 <sect1><title>Version 0.9.4.1 (March 18, 2000)</title>
317 <itemizedlist>
318 <listitem><para>Finish PCI DMA conversion (davem)</para></listitem>
319 <listitem><para>Do not netif_start_queue() at end of tulip_tx_timeout() (kuznet)</para></listitem>
320 <listitem><para>PCI DMA fix (kuznet)</para></listitem>
321 <listitem><para>eeprom.c code cleanup</para></listitem>
322 <listitem><para>Remove Xircom Tulip crud</para></listitem>
323 </itemizedlist>
324 </sect1>
325 </chapter>
326
327</book>
diff --git a/Documentation/DocBook/via-audio.tmpl b/Documentation/DocBook/via-audio.tmpl
deleted file mode 100644
index 36e642147d6b..000000000000
--- a/Documentation/DocBook/via-audio.tmpl
+++ /dev/null
@@ -1,597 +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="ViaAudioGuide">
6 <bookinfo>
7 <title>Via 686 Audio Driver for Linux</title>
8
9 <authorgroup>
10 <author>
11 <firstname>Jeff</firstname>
12 <surname>Garzik</surname>
13 </author>
14 </authorgroup>
15
16 <copyright>
17 <year>1999-2001</year>
18 <holder>Jeff Garzik</holder>
19 </copyright>
20
21 <legalnotice>
22 <para>
23 This documentation is free software; you can redistribute
24 it and/or modify it under the terms of the GNU General Public
25 License as published by the Free Software Foundation; either
26 version 2 of the License, or (at your option) any later
27 version.
28 </para>
29
30 <para>
31 This program is distributed in the hope that it will be
32 useful, but WITHOUT ANY WARRANTY; without even the implied
33 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
34 See the GNU General Public License for more details.
35 </para>
36
37 <para>
38 You should have received a copy of the GNU General Public
39 License along with this program; if not, write to the Free
40 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
41 MA 02111-1307 USA
42 </para>
43
44 <para>
45 For more details see the file COPYING in the source
46 distribution of Linux.
47 </para>
48 </legalnotice>
49 </bookinfo>
50
51<toc></toc>
52
53 <chapter id="intro">
54 <title>Introduction</title>
55 <para>
56 The Via VT82C686A "super southbridge" chips contain
57 AC97-compatible audio logic which features dual 16-bit stereo
58 PCM sound channels (full duplex), plus a third PCM channel intended for use
59 in hardware-assisted FM synthesis.
60 </para>
61 <para>
62 The current Linux kernel audio driver for this family of chips
63 supports audio playback and recording, but hardware-assisted
64 FM features, and hardware buffer direct-access (mmap)
65 support are not yet available.
66 </para>
67 <para>
68 This driver supports any Linux kernel version after 2.4.10.
69 </para>
70 <para>
71 Please send bug reports to the mailing list <email>linux-via@gtf.org</email>.
72 To subscribe, e-mail <email>majordomo@gtf.org</email> with
73 </para>
74 <programlisting>
75 subscribe linux-via
76 </programlisting>
77 <para>
78 in the body of the message.
79 </para>
80 </chapter>
81
82 <chapter id="install">
83 <title>Driver Installation</title>
84 <para>
85 To use this audio driver, select the
86 CONFIG_SOUND_VIA82CXXX option in the section Sound during kernel configuration.
87 Follow the usual kernel procedures for rebuilding the kernel,
88 or building and installing driver modules.
89 </para>
90 <para>
91 To make this driver the default audio driver, you can add the
92 following to your /etc/conf.modules file:
93 </para>
94 <programlisting>
95 alias sound via82cxxx_audio
96 </programlisting>
97 <para>
98 Note that soundcore and ac97_codec support modules
99 are also required for working audio, in addition to
100 the via82cxxx_audio module itself.
101 </para>
102 </chapter>
103
104 <chapter id="reportbug">
105 <title>Submitting a bug report</title>
106 <sect1 id="bugrepdesc"><title>Description of problem</title>
107 <para>
108 Describe the application you were using to play/record sound, and how
109 to reproduce the problem.
110 </para>
111 </sect1>
112 <sect1 id="bugrepdiag"><title>Diagnostic output</title>
113 <para>
114 Obtain the via-audio-diag diagnostics program from
115 http://sf.net/projects/gkernel/ and provide a dump of the
116 audio chip's registers while the problem is occurring. Sample command line:
117 </para>
118 <programlisting>
119 ./via-audio-diag -aps > diag-output.txt
120 </programlisting>
121 </sect1>
122 <sect1 id="bugrepdebug"><title>Driver debug output</title>
123 <para>
124 Define <constant>VIA_DEBUG</constant> at the beginning of the driver, then capture and email
125 the kernel log output. This can be viewed in the system kernel log (if
126 enabled), or via the dmesg program. Sample command line:
127 </para>
128 <programlisting>
129 dmesg > /tmp/dmesg-output.txt
130 </programlisting>
131 </sect1>
132 <sect1 id="bugrepprintk"><title>Bigger kernel message buffer</title>
133 <para>
134 If you wish to increase the size of the buffer displayed by dmesg, then
135 change the <constant>LOG_BUF_LEN</constant> macro at the top of linux/kernel/printk.c, recompile
136 your kernel, and pass the <constant>LOG_BUF_LEN</constant> value to dmesg. Sample command line with
137 <constant>LOG_BUF_LEN</constant> == 32768:
138 </para>
139 <programlisting>
140 dmesg -s 32768 > /tmp/dmesg-output.txt
141 </programlisting>
142 </sect1>
143 </chapter>
144
145 <chapter id="bugs">
146 <title>Known Bugs And Assumptions</title>
147 <para>
148 <variablelist>
149 <varlistentry><term>Low volume</term>
150 <listitem>
151 <para>
152 Volume too low on many systems. Workaround: use mixer program
153 such as xmixer to increase volume.
154 </para>
155 </listitem></varlistentry>
156
157 </variablelist>
158
159 </para>
160 </chapter>
161
162 <chapter id="thanks">
163 <title>Thanks</title>
164 <para>
165 Via for providing e-mail support, specs, and NDA'd source code.
166 </para>
167 <para>
168 MandrakeSoft for providing hacking time.
169 </para>
170 <para>
171 AC97 mixer interface fixes and debugging by Ron Cemer <email>roncemer@gte.net</email>.
172 </para>
173 <para>
174 Rui Sousa <email>rui.sousa@conexant.com</email>, for bugfixing
175 MMAP support, and several other notable fixes that resulted from
176 his hard work and testing.
177 </para>
178 <para>
179 Adrian Cox <email>adrian@humboldt.co.uk</email>, for bugfixing
180 MMAP support, and several other notable fixes that resulted from
181 his hard work and testing.
182 </para>
183 <para>
184 Thomas Sailer for further bugfixes.
185 </para>
186 </chapter>
187
188 <chapter id="notes">
189 <title>Random Notes</title>
190 <para>
191 Two /proc pseudo-files provide diagnostic information. This is generally
192 not useful to most users. Power users can disable CONFIG_SOUND_VIA82CXXX_PROCFS,
193 and remove the /proc support code. Once
194 version 2.0.0 is released, the /proc support code will be disabled by
195 default. Available /proc pseudo-files:
196 </para>
197 <programlisting>
198 /proc/driver/via/0/info
199 /proc/driver/via/0/ac97
200 </programlisting>
201 <para>
202 This driver by default supports all PCI audio devices which report
203 a vendor id of 0x1106, and a device id of 0x3058. Subsystem vendor
204 and device ids are not examined.
205 </para>
206 <para>
207 GNU indent formatting options:
208 <programlisting>
209-kr -i8 -ts8 -br -ce -bap -sob -l80 -pcs -cs -ss -bs -di1 -nbc -lp -psl
210 </programlisting>
211 </para>
212 <para>
213 Via has graciously donated e-mail support and source code to help further
214 the development of this driver. Their assistance has been invaluable
215 in the design and coding of the next major version of this driver.
216 </para>
217 <para>
218 The Via audio chip apparently provides a second PCM scatter-gather
219 DMA channel just for FM data, but does not have a full hardware MIDI
220 processor. I haven't put much thought towards a solution here, but it
221 might involve using SoftOSS midi wave table, or simply disabling MIDI
222 support altogether and using the FM PCM channel as a second (input? output?)
223 </para>
224 </chapter>
225
226 <chapter id="changelog">
227 <title>Driver ChangeLog</title>
228
229<sect1 id="version191"><title>
230Version 1.9.1
231</title>
232 <itemizedlist spacing="compact">
233 <listitem>
234 <para>
235 DSP read/write bugfixes from Thomas Sailer.
236 </para>
237 </listitem>
238
239 <listitem>
240 <para>
241 Add new PCI id for single-channel use of Via 8233.
242 </para>
243 </listitem>
244
245 <listitem>
246 <para>
247 Other bug fixes, tweaks, new ioctls.
248 </para>
249 </listitem>
250
251 </itemizedlist>
252</sect1>
253
254<sect1 id="version1115"><title>
255Version 1.1.15
256</title>
257 <itemizedlist spacing="compact">
258 <listitem>
259 <para>
260 Support for variable fragment size and variable fragment number (Rui
261 Sousa)
262 </para>
263 </listitem>
264
265 <listitem>
266 <para>
267 Fixes for the SPEED, STEREO, CHANNELS, FMT ioctls when in read &amp;
268 write mode (Rui Sousa)
269 </para>
270 </listitem>
271
272 <listitem>
273 <para>
274 Mmaped sound is now fully functional. (Rui Sousa)
275 </para>
276 </listitem>
277
278 <listitem>
279 <para>
280 Make sure to enable PCI device before reading any of its PCI
281 config information. (fixes potential hotplug problems)
282 </para>
283 </listitem>
284
285 <listitem>
286 <para>
287 Clean up code a bit and add more internal function documentation.
288 </para>
289 </listitem>
290
291 <listitem>
292 <para>
293 AC97 codec access fixes (Adrian Cox)
294 </para>
295 </listitem>
296
297 <listitem>
298 <para>
299 Big endian fixes (Adrian Cox)
300 </para>
301 </listitem>
302
303 <listitem>
304 <para>
305 MIDI support (Adrian Cox)
306 </para>
307 </listitem>
308
309 <listitem>
310 <para>
311 Detect and report locked-rate AC97 codecs. If your hardware only
312 supports 48Khz (locked rate), then your recording/playback software
313 must upsample or downsample accordingly. The hardware cannot do it.
314 </para>
315 </listitem>
316
317 <listitem>
318 <para>
319 Use new pci_request_regions and pci_disable_device functions in
320 kernel 2.4.6.
321 </para>
322 </listitem>
323
324 </itemizedlist>
325</sect1>
326
327<sect1 id="version1114"><title>
328Version 1.1.14
329</title>
330 <itemizedlist spacing="compact">
331 <listitem>
332 <para>
333 Use VM_RESERVE when available, to eliminate unnecessary page faults.
334 </para>
335 </listitem>
336 </itemizedlist>
337</sect1>
338
339<sect1 id="version1112"><title>
340Version 1.1.12
341</title>
342 <itemizedlist spacing="compact">
343 <listitem>
344 <para>
345 mmap bug fixes from Linus.
346 </para>
347 </listitem>
348 </itemizedlist>
349</sect1>
350
351<sect1 id="version1111"><title>
352Version 1.1.11
353</title>
354 <itemizedlist spacing="compact">
355 <listitem>
356 <para>
357 Many more bug fixes. mmap enabled by default, but may still be buggy.
358 </para>
359 </listitem>
360
361 <listitem>
362 <para>
363 Uses new and spiffy method of mmap'ing the DMA buffer, based
364 on a suggestion from Linus.
365 </para>
366 </listitem>
367 </itemizedlist>
368</sect1>
369
370<sect1 id="version1110"><title>
371Version 1.1.10
372</title>
373 <itemizedlist spacing="compact">
374 <listitem>
375 <para>
376 Many bug fixes. mmap enabled by default, but may still be buggy.
377 </para>
378 </listitem>
379 </itemizedlist>
380</sect1>
381
382<sect1 id="version119"><title>
383Version 1.1.9
384</title>
385 <itemizedlist spacing="compact">
386 <listitem>
387 <para>
388 Redesign and rewrite audio playback implementation. (faster and smaller, hopefully)
389 </para>
390 </listitem>
391
392 <listitem>
393 <para>
394 Implement recording and full duplex (DSP_CAP_DUPLEX) support.
395 </para>
396 </listitem>
397
398 <listitem>
399 <para>
400 Make procfs support optional.
401 </para>
402 </listitem>
403
404 <listitem>
405 <para>
406 Quick interrupt status check, to lessen overhead in interrupt
407 sharing situations.
408 </para>
409 </listitem>
410
411 <listitem>
412 <para>
413 Add mmap(2) support. Disabled for now, it is still buggy and experimental.
414 </para>
415 </listitem>
416
417 <listitem>
418 <para>
419 Surround all syscalls with a semaphore for cheap and easy SMP protection.
420 </para>
421 </listitem>
422
423 <listitem>
424 <para>
425 Fix bug in channel shutdown (hardware channel reset) code.
426 </para>
427 </listitem>
428
429 <listitem>
430 <para>
431 Remove unnecessary spinlocks (better performance).
432 </para>
433 </listitem>
434
435 <listitem>
436 <para>
437 Eliminate "unknown AFMT" message by using a different method
438 of selecting the best AFMT_xxx sound sample format for use.
439 </para>
440 </listitem>
441
442 <listitem>
443 <para>
444 Support for realtime hardware pointer position reporting
445 (DSP_CAP_REALTIME, SNDCTL_DSP_GETxPTR ioctls)
446 </para>
447 </listitem>
448
449 <listitem>
450 <para>
451 Support for capture/playback triggering
452 (DSP_CAP_TRIGGER, SNDCTL_DSP_SETTRIGGER ioctls)
453 </para>
454 </listitem>
455
456 <listitem>
457 <para>
458 SNDCTL_DSP_SETDUPLEX and SNDCTL_DSP_POST ioctls now handled.
459 </para>
460 </listitem>
461
462 <listitem>
463 <para>
464 Rewrite open(2) and close(2) logic to allow only one user at
465 a time. All other open(2) attempts will sleep until they succeed.
466 FIXME: open(O_RDONLY) and open(O_WRONLY) should be allowed to succeed.
467 </para>
468 </listitem>
469
470 <listitem>
471 <para>
472 Reviewed code to ensure that SMP and multiple audio devices
473 are fully supported.
474 </para>
475 </listitem>
476
477 </itemizedlist>
478</sect1>
479
480<sect1 id="version118"><title>
481Version 1.1.8
482</title>
483 <itemizedlist spacing="compact">
484 <listitem>
485 <para>
486 Clean up interrupt handler output. Fixes the following kernel error message:
487 </para>
488 <programlisting>
489 unhandled interrupt ...
490 </programlisting>
491 </listitem>
492
493 <listitem>
494 <para>
495 Convert documentation to DocBook, so that PDF, HTML and PostScript (.ps) output is readily
496 available.
497 </para>
498 </listitem>
499
500 </itemizedlist>
501</sect1>
502
503<sect1 id="version117"><title>
504Version 1.1.7
505</title>
506 <itemizedlist spacing="compact">
507 <listitem>
508 <para>
509 Fix module unload bug where mixer device left registered
510 after driver exit
511 </para>
512 </listitem>
513 </itemizedlist>
514</sect1>
515
516<sect1 id="version116"><title>
517Version 1.1.6
518</title>
519 <itemizedlist spacing="compact">
520 <listitem>
521 <para>
522 Rewrite via_set_rate to mimic ALSA basic AC97 rate setting
523 </para>
524 </listitem>
525 <listitem>
526 <para>
527 Remove much dead code
528 </para>
529 </listitem>
530 <listitem>
531 <para>
532 Complete spin_lock_irqsave -> spin_lock_irq conversion in via_dsp_ioctl
533 </para>
534 </listitem>
535 <listitem>
536 <para>
537 Fix build problem in via_dsp_ioctl
538 </para>
539 </listitem>
540 <listitem>
541 <para>
542 Optimize included headers to eliminate headers found in linux/sound
543 </para>
544 </listitem>
545 </itemizedlist>
546</sect1>
547
548<sect1 id="version115"><title>
549Version 1.1.5
550</title>
551 <itemizedlist spacing="compact">
552 <listitem>
553 <para>
554 Disable some overly-verbose debugging code
555 </para>
556 </listitem>
557 <listitem>
558 <para>
559 Remove unnecessary sound locks
560 </para>
561 </listitem>
562 <listitem>
563 <para>
564 Fix some ioctls for better time resolution
565 </para>
566 </listitem>
567 <listitem>
568 <para>
569 Begin spin_lock_irqsave -> spin_lock_irq conversion in via_dsp_ioctl
570 </para>
571 </listitem>
572 </itemizedlist>
573</sect1>
574
575<sect1 id="version114"><title>
576Version 1.1.4
577</title>
578 <itemizedlist spacing="compact">
579 <listitem>
580 <para>
581 Completed rewrite of driver. Eliminated SoundBlaster compatibility
582 completely, and now uses the much-faster scatter-gather DMA engine.
583 </para>
584 </listitem>
585 </itemizedlist>
586</sect1>
587
588 </chapter>
589
590 <chapter id="intfunctions">
591 <title>Internal Functions</title>
592!Isound/oss/via82cxxx_audio.c
593 </chapter>
594
595</book>
596
597