aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/DocBook/kernel-api.tmpl1
-rw-r--r--Documentation/DocBook/libata.tmpl2
-rw-r--r--Documentation/RCU/checklist.txt38
-rw-r--r--Documentation/RCU/rcu.txt3
-rw-r--r--Documentation/RCU/torture.txt33
-rw-r--r--Documentation/RCU/whatisRCU.txt3
-rw-r--r--Documentation/ecryptfs.txt77
-rw-r--r--Documentation/feature-removal-schedule.txt8
-rw-r--r--Documentation/filesystems/gfs2.txt43
-rw-r--r--Documentation/kbuild/kconfig-language.txt2
-rw-r--r--Documentation/kbuild/makefiles.txt2
-rw-r--r--Documentation/kernel-parameters.txt29
-rw-r--r--Documentation/powerpc/booting-without-of.txt252
-rw-r--r--Documentation/sound/oss/AWE3276
-rw-r--r--Documentation/sound/oss/CMI833885
-rw-r--r--Documentation/sound/oss/INSTALL.awe134
-rw-r--r--Documentation/sound/oss/MAD1656
-rw-r--r--Documentation/sound/oss/Maestro123
-rw-r--r--Documentation/sound/oss/Maestro392
-rw-r--r--Documentation/sound/oss/NEWS42
-rw-r--r--Documentation/sound/oss/OPL3-SA52
-rw-r--r--Documentation/sound/oss/README.awe218
-rw-r--r--Documentation/sound/oss/Wavefront339
-rw-r--r--Documentation/sound/oss/es137070
-rw-r--r--Documentation/sound/oss/rme96xx767
-rw-r--r--Documentation/sound/oss/solo170
-rw-r--r--Documentation/sound/oss/sonicvibes81
27 files changed, 449 insertions, 2249 deletions
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index 49c745720f47..2b5ac604948c 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -158,6 +158,7 @@ X!Ilib/string.c
158!Emm/filemap.c 158!Emm/filemap.c
159!Emm/memory.c 159!Emm/memory.c
160!Emm/vmalloc.c 160!Emm/vmalloc.c
161!Imm/page_alloc.c
161!Emm/mempool.c 162!Emm/mempool.c
162!Emm/page-writeback.c 163!Emm/page-writeback.c
163!Emm/truncate.c 164!Emm/truncate.c
diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl
index c684abf0d3b2..07a635590b36 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-2005</year> 17 <year>2003-2006</year>
18 <holder>Jeff Garzik</holder> 18 <holder>Jeff Garzik</holder>
19 </copyright> 19 </copyright>
20 20
diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt
index 1d50cf0c905e..f4dffadbcb00 100644
--- a/Documentation/RCU/checklist.txt
+++ b/Documentation/RCU/checklist.txt
@@ -221,3 +221,41 @@ over a rather long period of time, but improvements are always welcome!
221 disable irq on a given acquisition of that lock will result in 221 disable irq on a given acquisition of that lock will result in
222 deadlock as soon as the RCU callback happens to interrupt that 222 deadlock as soon as the RCU callback happens to interrupt that
223 acquisition's critical section. 223 acquisition's critical section.
224
22513. SRCU (srcu_read_lock(), srcu_read_unlock(), and synchronize_srcu())
226 may only be invoked from process context. Unlike other forms of
227 RCU, it -is- permissible to block in an SRCU read-side critical
228 section (demarked by srcu_read_lock() and srcu_read_unlock()),
229 hence the "SRCU": "sleepable RCU". Please note that if you
230 don't need to sleep in read-side critical sections, you should
231 be using RCU rather than SRCU, because RCU is almost always
232 faster and easier to use than is SRCU.
233
234 Also unlike other forms of RCU, explicit initialization
235 and cleanup is required via init_srcu_struct() and
236 cleanup_srcu_struct(). These are passed a "struct srcu_struct"
237 that defines the scope of a given SRCU domain. Once initialized,
238 the srcu_struct is passed to srcu_read_lock(), srcu_read_unlock()
239 and synchronize_srcu(). A given synchronize_srcu() waits only
240 for SRCU read-side critical sections governed by srcu_read_lock()
241 and srcu_read_unlock() calls that have been passd the same
242 srcu_struct. This property is what makes sleeping read-side
243 critical sections tolerable -- a given subsystem delays only
244 its own updates, not those of other subsystems using SRCU.
245 Therefore, SRCU is less prone to OOM the system than RCU would
246 be if RCU's read-side critical sections were permitted to
247 sleep.
248
249 The ability to sleep in read-side critical sections does not
250 come for free. First, corresponding srcu_read_lock() and
251 srcu_read_unlock() calls must be passed the same srcu_struct.
252 Second, grace-period-detection overhead is amortized only
253 over those updates sharing a given srcu_struct, rather than
254 being globally amortized as they are for other forms of RCU.
255 Therefore, SRCU should be used in preference to rw_semaphore
256 only in extremely read-intensive situations, or in situations
257 requiring SRCU's read-side deadlock immunity or low read-side
258 realtime latency.
259
260 Note that, rcu_assign_pointer() and rcu_dereference() relate to
261 SRCU just as they do to other forms of RCU.
diff --git a/Documentation/RCU/rcu.txt b/Documentation/RCU/rcu.txt
index 02e27bf1d365..f84407cba816 100644
--- a/Documentation/RCU/rcu.txt
+++ b/Documentation/RCU/rcu.txt
@@ -45,7 +45,8 @@ o How can I see where RCU is currently used in the Linux kernel?
45 45
46 Search for "rcu_read_lock", "rcu_read_unlock", "call_rcu", 46 Search for "rcu_read_lock", "rcu_read_unlock", "call_rcu",
47 "rcu_read_lock_bh", "rcu_read_unlock_bh", "call_rcu_bh", 47 "rcu_read_lock_bh", "rcu_read_unlock_bh", "call_rcu_bh",
48 "synchronize_rcu", and "synchronize_net". 48 "srcu_read_lock", "srcu_read_unlock", "synchronize_rcu",
49 "synchronize_net", and "synchronize_srcu".
49 50
50o What guidelines should I follow when writing code that uses RCU? 51o What guidelines should I follow when writing code that uses RCU?
51 52
diff --git a/Documentation/RCU/torture.txt b/Documentation/RCU/torture.txt
index a4948591607d..25a3c3f7d378 100644
--- a/Documentation/RCU/torture.txt
+++ b/Documentation/RCU/torture.txt
@@ -28,6 +28,15 @@ nreaders This is the number of RCU reading threads supported.
28 To properly exercise RCU implementations with preemptible 28 To properly exercise RCU implementations with preemptible
29 read-side critical sections. 29 read-side critical sections.
30 30
31nfakewriters This is the number of RCU fake writer threads to run. Fake
32 writer threads repeatedly use the synchronous "wait for
33 current readers" function of the interface selected by
34 torture_type, with a delay between calls to allow for various
35 different numbers of writers running in parallel.
36 nfakewriters defaults to 4, which provides enough parallelism
37 to trigger special cases caused by multiple writers, such as
38 the synchronize_srcu() early return optimization.
39
31stat_interval The number of seconds between output of torture 40stat_interval The number of seconds between output of torture
32 statistics (via printk()). Regardless of the interval, 41 statistics (via printk()). Regardless of the interval,
33 statistics are printed when the module is unloaded. 42 statistics are printed when the module is unloaded.
@@ -44,9 +53,12 @@ test_no_idle_hz Whether or not to test the ability of RCU to operate in
44 a kernel that disables the scheduling-clock interrupt to 53 a kernel that disables the scheduling-clock interrupt to
45 idle CPUs. Boolean parameter, "1" to test, "0" otherwise. 54 idle CPUs. Boolean parameter, "1" to test, "0" otherwise.
46 55
47torture_type The type of RCU to test: "rcu" for the rcu_read_lock() 56torture_type The type of RCU to test: "rcu" for the rcu_read_lock() API,
48 API, "rcu_bh" for the rcu_read_lock_bh() API, and "srcu" 57 "rcu_sync" for rcu_read_lock() with synchronous reclamation,
49 for the "srcu_read_lock()" API. 58 "rcu_bh" for the rcu_read_lock_bh() API, "rcu_bh_sync" for
59 rcu_read_lock_bh() with synchronous reclamation, "srcu" for
60 the "srcu_read_lock()" API, and "sched" for the use of
61 preempt_disable() together with synchronize_sched().
50 62
51verbose Enable debug printk()s. Default is disabled. 63verbose Enable debug printk()s. Default is disabled.
52 64
@@ -118,6 +130,21 @@ o "Free-Block Circulation": Shows the number of torture structures
118 as it is only incremented if a torture structure's counter 130 as it is only incremented if a torture structure's counter
119 somehow gets incremented farther than it should. 131 somehow gets incremented farther than it should.
120 132
133Different implementations of RCU can provide implementation-specific
134additional information. For example, SRCU provides the following:
135
136 srcu-torture: rtc: f8cf46a8 ver: 355 tfle: 0 rta: 356 rtaf: 0 rtf: 346 rtmbe: 0
137 srcu-torture: Reader Pipe: 559738 939 0 0 0 0 0 0 0 0 0
138 srcu-torture: Reader Batch: 560434 243 0 0 0 0 0 0 0 0
139 srcu-torture: Free-Block Circulation: 355 354 353 352 351 350 349 348 347 346 0
140 srcu-torture: per-CPU(idx=1): 0(0,1) 1(0,1) 2(0,0) 3(0,1)
141
142The first four lines are similar to those for RCU. The last line shows
143the per-CPU counter state. The numbers in parentheses are the values
144of the "old" and "current" counters for the corresponding CPU. The
145"idx" value maps the "old" and "current" values to the underlying array,
146and is useful for debugging.
147
121 148
122USAGE 149USAGE
123 150
diff --git a/Documentation/RCU/whatisRCU.txt b/Documentation/RCU/whatisRCU.txt
index 820fee236967..e0d6d99b8f9b 100644
--- a/Documentation/RCU/whatisRCU.txt
+++ b/Documentation/RCU/whatisRCU.txt
@@ -778,6 +778,8 @@ Markers for RCU read-side critical sections:
778 rcu_read_unlock 778 rcu_read_unlock
779 rcu_read_lock_bh 779 rcu_read_lock_bh
780 rcu_read_unlock_bh 780 rcu_read_unlock_bh
781 srcu_read_lock
782 srcu_read_unlock
781 783
782RCU pointer/list traversal: 784RCU pointer/list traversal:
783 785
@@ -804,6 +806,7 @@ RCU grace period:
804 synchronize_net 806 synchronize_net
805 synchronize_sched 807 synchronize_sched
806 synchronize_rcu 808 synchronize_rcu
809 synchronize_srcu
807 call_rcu 810 call_rcu
808 call_rcu_bh 811 call_rcu_bh
809 812
diff --git a/Documentation/ecryptfs.txt b/Documentation/ecryptfs.txt
new file mode 100644
index 000000000000..01d8a08351ac
--- /dev/null
+++ b/Documentation/ecryptfs.txt
@@ -0,0 +1,77 @@
1eCryptfs: A stacked cryptographic filesystem for Linux
2
3eCryptfs is free software. Please see the file COPYING for details.
4For documentation, please see the files in the doc/ subdirectory. For
5building and installation instructions please see the INSTALL file.
6
7Maintainer: Phillip Hellewell
8Lead developer: Michael A. Halcrow <mhalcrow@us.ibm.com>
9Developers: Michael C. Thompson
10 Kent Yoder
11Web Site: http://ecryptfs.sf.net
12
13This software is currently undergoing development. Make sure to
14maintain a backup copy of any data you write into eCryptfs.
15
16eCryptfs requires the userspace tools downloadable from the
17SourceForge site:
18
19http://sourceforge.net/projects/ecryptfs/
20
21Userspace requirements include:
22 - David Howells' userspace keyring headers and libraries (version
23 1.0 or higher), obtainable from
24 http://people.redhat.com/~dhowells/keyutils/
25 - Libgcrypt
26
27
28NOTES
29
30In the beta/experimental releases of eCryptfs, when you upgrade
31eCryptfs, you should copy the files to an unencrypted location and
32then copy the files back into the new eCryptfs mount to migrate the
33files.
34
35
36MOUNT-WIDE PASSPHRASE
37
38Create a new directory into which eCryptfs will write its encrypted
39files (i.e., /root/crypt). Then, create the mount point directory
40(i.e., /mnt/crypt). Now it's time to mount eCryptfs:
41
42mount -t ecryptfs /root/crypt /mnt/crypt
43
44You should be prompted for a passphrase and a salt (the salt may be
45blank).
46
47Try writing a new file:
48
49echo "Hello, World" > /mnt/crypt/hello.txt
50
51The operation will complete. Notice that there is a new file in
52/root/crypt that is at least 12288 bytes in size (depending on your
53host page size). This is the encrypted underlying file for what you
54just wrote. To test reading, from start to finish, you need to clear
55the user session keyring:
56
57keyctl clear @u
58
59Then umount /mnt/crypt and mount again per the instructions given
60above.
61
62cat /mnt/crypt/hello.txt
63
64
65NOTES
66
67eCryptfs version 0.1 should only be mounted on (1) empty directories
68or (2) directories containing files only created by eCryptfs. If you
69mount a directory that has pre-existing files not created by eCryptfs,
70then behavior is undefined. Do not run eCryptfs in higher verbosity
71levels unless you are doing so for the sole purpose of debugging or
72development, since secret values will be written out to the system log
73in that case.
74
75
76Mike Halcrow
77mhalcrow@us.ibm.com
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 42b95e0ad558..24f3c63b3017 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -29,14 +29,6 @@ Who: Adrian Bunk <bunk@stusta.de>
29 29
30--------------------------- 30---------------------------
31 31
32What: drivers that were depending on OBSOLETE_OSS_DRIVER
33 (config options already removed)
34When: before 2.6.19
35Why: OSS drivers with ALSA replacements
36Who: Adrian Bunk <bunk@stusta.de>
37
38---------------------------
39
40What: raw1394: requests of type RAW1394_REQ_ISO_SEND, RAW1394_REQ_ISO_LISTEN 32What: raw1394: requests of type RAW1394_REQ_ISO_SEND, RAW1394_REQ_ISO_LISTEN
41When: November 2006 33When: November 2006
42Why: Deprecated in favour of the new ioctl-based rawiso interface, which is 34Why: Deprecated in favour of the new ioctl-based rawiso interface, which is
diff --git a/Documentation/filesystems/gfs2.txt b/Documentation/filesystems/gfs2.txt
new file mode 100644
index 000000000000..593004b6bbab
--- /dev/null
+++ b/Documentation/filesystems/gfs2.txt
@@ -0,0 +1,43 @@
1Global File System
2------------------
3
4http://sources.redhat.com/cluster/
5
6GFS is a cluster file system. It allows a cluster of computers to
7simultaneously use a block device that is shared between them (with FC,
8iSCSI, NBD, etc). GFS reads and writes to the block device like a local
9file system, but also uses a lock module to allow the computers coordinate
10their I/O so file system consistency is maintained. One of the nifty
11features of GFS is perfect consistency -- changes made to the file system
12on one machine show up immediately on all other machines in the cluster.
13
14GFS uses interchangable inter-node locking mechanisms. Different lock
15modules can plug into GFS and each file system selects the appropriate
16lock module at mount time. Lock modules include:
17
18 lock_nolock -- allows gfs to be used as a local file system
19
20 lock_dlm -- uses a distributed lock manager (dlm) for inter-node locking
21 The dlm is found at linux/fs/dlm/
22
23In addition to interfacing with an external locking manager, a gfs lock
24module is responsible for interacting with external cluster management
25systems. Lock_dlm depends on user space cluster management systems found
26at the URL above.
27
28To use gfs as a local file system, no external clustering systems are
29needed, simply:
30
31 $ mkfs -t gfs2 -p lock_nolock -j 1 /dev/block_device
32 $ mount -t gfs2 /dev/block_device /dir
33
34GFS2 is not on-disk compatible with previous versions of GFS.
35
36The following man pages can be found at the URL above:
37 gfs2_fsck to repair a filesystem
38 gfs2_grow to expand a filesystem online
39 gfs2_jadd to add journals to a filesystem online
40 gfs2_tool to manipulate, examine and tune a filesystem
41 gfs2_quota to examine and change quota values in a filesystem
42 mount.gfs2 to help mount(8) mount a filesystem
43 mkfs.gfs2 to make a filesystem
diff --git a/Documentation/kbuild/kconfig-language.txt b/Documentation/kbuild/kconfig-language.txt
index 7f34778dd23b..125093c3ef76 100644
--- a/Documentation/kbuild/kconfig-language.txt
+++ b/Documentation/kbuild/kconfig-language.txt
@@ -1,7 +1,7 @@
1Introduction 1Introduction
2------------ 2------------
3 3
4The configuration database is collection of configuration options 4The configuration database is a collection of configuration options
5organized in a tree structure: 5organized in a tree structure:
6 6
7 +- Code maturity level options 7 +- Code maturity level options
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index e2cbd59cf2d0..50f4eddf899c 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -390,7 +390,7 @@ more details, with real examples.
390 The kernel may be built with several different versions of 390 The kernel may be built with several different versions of
391 $(CC), each supporting a unique set of features and options. 391 $(CC), each supporting a unique set of features and options.
392 kbuild provide basic support to check for valid options for $(CC). 392 kbuild provide basic support to check for valid options for $(CC).
393 $(CC) is useally the gcc compiler, but other alternatives are 393 $(CC) is usually the gcc compiler, but other alternatives are
394 available. 394 available.
395 395
396 as-option 396 as-option
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 12b3b24bfd2f..ff571f9298e0 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -289,9 +289,6 @@ and is between 256 and 4096 characters. It is defined in the file
289 289
290 autotest [IA64] 290 autotest [IA64]
291 291
292 awe= [HW,OSS] AWE32/SB32/AWE64 wave table synth
293 Format: <io>,<memsize>,<isapnp>
294
295 aztcd= [HW,CD] Aztech CD268 CDROM driver 292 aztcd= [HW,CD] Aztech CD268 CDROM driver
296 Format: <io>,0x79 (?) 293 Format: <io>,0x79 (?)
297 294
@@ -536,10 +533,6 @@ and is between 256 and 4096 characters. It is defined in the file
536 Default value is 0. 533 Default value is 0.
537 Value can be changed at runtime via /selinux/enforce. 534 Value can be changed at runtime via /selinux/enforce.
538 535
539 es1370= [HW,OSS]
540 Format: <lineout>[,<micbias>]
541 See also header of sound/oss/es1370.c.
542
543 es1371= [HW,OSS] 536 es1371= [HW,OSS]
544 Format: <spdif>,[<nomix>,[<amplifier>]] 537 Format: <spdif>,[<nomix>,[<amplifier>]]
545 See also header of sound/oss/es1371.c. 538 See also header of sound/oss/es1371.c.
@@ -580,9 +573,6 @@ and is between 256 and 4096 characters. It is defined in the file
580 gscd= [HW,CD] 573 gscd= [HW,CD]
581 Format: <io> 574 Format: <io>
582 575
583 gus= [HW,OSS]
584 Format: <io>,<irq>,<dma>,<dma16>
585
586 gvp11= [HW,SCSI] 576 gvp11= [HW,SCSI]
587 577
588 hashdist= [KNL,NUMA] Large hashes allocated during boot 578 hashdist= [KNL,NUMA] Large hashes allocated during boot
@@ -841,12 +831,6 @@ and is between 256 and 4096 characters. It is defined in the file
841 (machvec) in a generic kernel. 831 (machvec) in a generic kernel.
842 Example: machvec=hpzx1_swiotlb 832 Example: machvec=hpzx1_swiotlb
843 833
844 mad16= [HW,OSS] Format:
845 <io>,<irq>,<dma>,<dma16>,<mpu_io>,<mpu_irq>,<joystick>
846
847 maui= [HW,OSS]
848 Format: <io>,<irq>
849
850 max_loop= [LOOP] Maximum number of loopback devices that can 834 max_loop= [LOOP] Maximum number of loopback devices that can
851 be mounted 835 be mounted
852 Format: <1-256> 836 Format: <1-256>
@@ -1114,9 +1098,6 @@ and is between 256 and 4096 characters. It is defined in the file
1114 opl3= [HW,OSS] 1098 opl3= [HW,OSS]
1115 Format: <io> 1099 Format: <io>
1116 1100
1117 opl3sa= [HW,OSS]
1118 Format: <io>,<irq>,<dma>,<dma2>,<mpu_io>,<mpu_irq>
1119
1120 opl3sa2= [HW,OSS] Format: 1101 opl3sa2= [HW,OSS] Format:
1121 <io>,<irq>,<dma>,<dma2>,<mss_io>,<mpu_io>,<ymode>,<loopback>[,<isapnp>,<multiple] 1102 <io>,<irq>,<dma>,<dma2>,<mss_io>,<mpu_io>,<ymode>,<loopback>[,<isapnp>,<multiple]
1122 1103
@@ -1357,10 +1338,6 @@ and is between 256 and 4096 characters. It is defined in the file
1357 rcu.qlowmark= [KNL,BOOT] Set threshold of queued 1338 rcu.qlowmark= [KNL,BOOT] Set threshold of queued
1358 RCU callbacks below which batch limiting is re-enabled. 1339 RCU callbacks below which batch limiting is re-enabled.
1359 1340
1360 rcu.rsinterval= [KNL,BOOT,SMP] Set the number of additional
1361 RCU callbacks to queued before forcing reschedule
1362 on all cpus.
1363
1364 rdinit= [KNL] 1341 rdinit= [KNL]
1365 Format: <full_path> 1342 Format: <full_path>
1366 Run specified binary instead of /init from the ramdisk, 1343 Run specified binary instead of /init from the ramdisk,
@@ -1455,9 +1432,6 @@ and is between 256 and 4096 characters. It is defined in the file
1455 1432
1456 sg_def_reserved_size= [SCSI] 1433 sg_def_reserved_size= [SCSI]
1457 1434
1458 sgalaxy= [HW,OSS]
1459 Format: <io>,<irq>,<dma>,<dma2>,<sgbase>
1460
1461 shapers= [NET] 1435 shapers= [NET]
1462 Maximal number of shapers. 1436 Maximal number of shapers.
1463 1437
@@ -1598,9 +1572,6 @@ and is between 256 and 4096 characters. It is defined in the file
1598 1572
1599 snd-ymfpci= [HW,ALSA] 1573 snd-ymfpci= [HW,ALSA]
1600 1574
1601 sonicvibes= [HW,OSS]
1602 Format: <reverb>
1603
1604 sonycd535= [HW,CD] 1575 sonycd535= [HW,CD]
1605 Format: <io>[,<irq>] 1576 Format: <io>[,<irq>]
1606 1577
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt
index 1ccc8a515b44..27b457c09729 100644
--- a/Documentation/powerpc/booting-without-of.txt
+++ b/Documentation/powerpc/booting-without-of.txt
@@ -1440,6 +1440,258 @@ platforms are moved over to use the flattened-device-tree model.
1440 descriptor-types-mask = <012b0ebf>; 1440 descriptor-types-mask = <012b0ebf>;
1441 }; 1441 };
1442 1442
1443 h) Board Control and Status (BCSR)
1444
1445 Required properties:
1446
1447 - device_type : Should be "board-control"
1448 - reg : Offset and length of the register set for the device
1449
1450 Example:
1451
1452 bcsr@f8000000 {
1453 device_type = "board-control";
1454 reg = <f8000000 8000>;
1455 };
1456
1457 i) Freescale QUICC Engine module (QE)
1458 This represents qe module that is installed on PowerQUICC II Pro.
1459 Hopefully it will merge backward compatibility with CPM/CPM2.
1460 Basically, it is a bus of devices, that could act more or less
1461 as a complete entity (UCC, USB etc ). All of them should be siblings on
1462 the "root" qe node, using the common properties from there.
1463 The description below applies to the the qe of MPC8360 and
1464 more nodes and properties would be extended in the future.
1465
1466 i) Root QE device
1467
1468 Required properties:
1469 - device_type : should be "qe";
1470 - model : precise model of the QE, Can be "QE", "CPM", or "CPM2"
1471 - reg : offset and length of the device registers.
1472 - bus-frequency : the clock frequency for QUICC Engine.
1473
1474 Recommended properties
1475 - brg-frequency : the internal clock source frequency for baud-rate
1476 generators in Hz.
1477
1478 Example:
1479 qe@e0100000 {
1480 #address-cells = <1>;
1481 #size-cells = <1>;
1482 #interrupt-cells = <2>;
1483 device_type = "qe";
1484 model = "QE";
1485 ranges = <0 e0100000 00100000>;
1486 reg = <e0100000 480>;
1487 brg-frequency = <0>;
1488 bus-frequency = <179A7B00>;
1489 }
1490
1491
1492 ii) SPI (Serial Peripheral Interface)
1493
1494 Required properties:
1495 - device_type : should be "spi".
1496 - compatible : should be "fsl_spi".
1497 - mode : the spi operation mode, it can be "cpu" or "qe".
1498 - reg : Offset and length of the register set for the device
1499 - interrupts : <a b> where a is the interrupt number and b is a
1500 field that represents an encoding of the sense and level
1501 information for the interrupt. This should be encoded based on
1502 the information in section 2) depending on the type of interrupt
1503 controller you have.
1504 - interrupt-parent : the phandle for the interrupt controller that
1505 services interrupts for this device.
1506
1507 Example:
1508 spi@4c0 {
1509 device_type = "spi";
1510 compatible = "fsl_spi";
1511 reg = <4c0 40>;
1512 interrupts = <82 0>;
1513 interrupt-parent = <700>;
1514 mode = "cpu";
1515 };
1516
1517
1518 iii) USB (Universal Serial Bus Controller)
1519
1520 Required properties:
1521 - device_type : should be "usb".
1522 - compatible : could be "qe_udc" or "fhci-hcd".
1523 - mode : the could be "host" or "slave".
1524 - reg : Offset and length of the register set for the device
1525 - interrupts : <a b> where a is the interrupt number and b is a
1526 field that represents an encoding of the sense and level
1527 information for the interrupt. This should be encoded based on
1528 the information in section 2) depending on the type of interrupt
1529 controller you have.
1530 - interrupt-parent : the phandle for the interrupt controller that
1531 services interrupts for this device.
1532
1533 Example(slave):
1534 usb@6c0 {
1535 device_type = "usb";
1536 compatible = "qe_udc";
1537 reg = <6c0 40>;
1538 interrupts = <8b 0>;
1539 interrupt-parent = <700>;
1540 mode = "slave";
1541 };
1542
1543
1544 iv) UCC (Unified Communications Controllers)
1545
1546 Required properties:
1547 - device_type : should be "network", "hldc", "uart", "transparent"
1548 "bisync" or "atm".
1549 - compatible : could be "ucc_geth" or "fsl_atm" and so on.
1550 - model : should be "UCC".
1551 - device-id : the ucc number(1-8), corresponding to UCCx in UM.
1552 - reg : Offset and length of the register set for the device
1553 - interrupts : <a b> where a is the interrupt number and b is a
1554 field that represents an encoding of the sense and level
1555 information for the interrupt. This should be encoded based on
1556 the information in section 2) depending on the type of interrupt
1557 controller you have.
1558 - interrupt-parent : the phandle for the interrupt controller that
1559 services interrupts for this device.
1560 - pio-handle : The phandle for the Parallel I/O port configuration.
1561 - rx-clock : represents the UCC receive clock source.
1562 0x00 : clock source is disabled;
1563 0x1~0x10 : clock source is BRG1~BRG16 respectively;
1564 0x11~0x28: clock source is QE_CLK1~QE_CLK24 respectively.
1565 - tx-clock: represents the UCC transmit clock source;
1566 0x00 : clock source is disabled;
1567 0x1~0x10 : clock source is BRG1~BRG16 respectively;
1568 0x11~0x28: clock source is QE_CLK1~QE_CLK24 respectively.
1569
1570 Required properties for network device_type:
1571 - mac-address : list of bytes representing the ethernet address.
1572 - phy-handle : The phandle for the PHY connected to this controller.
1573
1574 Example:
1575 ucc@2000 {
1576 device_type = "network";
1577 compatible = "ucc_geth";
1578 model = "UCC";
1579 device-id = <1>;
1580 reg = <2000 200>;
1581 interrupts = <a0 0>;
1582 interrupt-parent = <700>;
1583 mac-address = [ 00 04 9f 00 23 23 ];
1584 rx-clock = "none";
1585 tx-clock = "clk9";
1586 phy-handle = <212000>;
1587 pio-handle = <140001>;
1588 };
1589
1590
1591 v) Parallel I/O Ports
1592
1593 This node configures Parallel I/O ports for CPUs with QE support.
1594 The node should reside in the "soc" node of the tree. For each
1595 device that using parallel I/O ports, a child node should be created.
1596 See the definition of the Pin configuration nodes below for more
1597 information.
1598
1599 Required properties:
1600 - device_type : should be "par_io".
1601 - reg : offset to the register set and its length.
1602 - num-ports : number of Parallel I/O ports
1603
1604 Example:
1605 par_io@1400 {
1606 reg = <1400 100>;
1607 #address-cells = <1>;
1608 #size-cells = <0>;
1609 device_type = "par_io";
1610 num-ports = <7>;
1611 ucc_pin@01 {
1612 ......
1613 };
1614
1615
1616 vi) Pin configuration nodes
1617
1618 Required properties:
1619 - linux,phandle : phandle of this node; likely referenced by a QE
1620 device.
1621 - pio-map : array of pin configurations. Each pin is defined by 6
1622 integers. The six numbers are respectively: port, pin, dir,
1623 open_drain, assignment, has_irq.
1624 - port : port number of the pin; 0-6 represent port A-G in UM.
1625 - pin : pin number in the port.
1626 - dir : direction of the pin, should encode as follows:
1627
1628 0 = The pin is disabled
1629 1 = The pin is an output
1630 2 = The pin is an input
1631 3 = The pin is I/O
1632
1633 - open_drain : indicates the pin is normal or wired-OR:
1634
1635 0 = The pin is actively driven as an output
1636 1 = The pin is an open-drain driver. As an output, the pin is
1637 driven active-low, otherwise it is three-stated.
1638
1639 - assignment : function number of the pin according to the Pin Assignment
1640 tables in User Manual. Each pin can have up to 4 possible functions in
1641 QE and two options for CPM.
1642 - has_irq : indicates if the pin is used as source of exteral
1643 interrupts.
1644
1645 Example:
1646 ucc_pin@01 {
1647 linux,phandle = <140001>;
1648 pio-map = <
1649 /* port pin dir open_drain assignment has_irq */
1650 0 3 1 0 1 0 /* TxD0 */
1651 0 4 1 0 1 0 /* TxD1 */
1652 0 5 1 0 1 0 /* TxD2 */
1653 0 6 1 0 1 0 /* TxD3 */
1654 1 6 1 0 3 0 /* TxD4 */
1655 1 7 1 0 1 0 /* TxD5 */
1656 1 9 1 0 2 0 /* TxD6 */
1657 1 a 1 0 2 0 /* TxD7 */
1658 0 9 2 0 1 0 /* RxD0 */
1659 0 a 2 0 1 0 /* RxD1 */
1660 0 b 2 0 1 0 /* RxD2 */
1661 0 c 2 0 1 0 /* RxD3 */
1662 0 d 2 0 1 0 /* RxD4 */
1663 1 1 2 0 2 0 /* RxD5 */
1664 1 0 2 0 2 0 /* RxD6 */
1665 1 4 2 0 2 0 /* RxD7 */
1666 0 7 1 0 1 0 /* TX_EN */
1667 0 8 1 0 1 0 /* TX_ER */
1668 0 f 2 0 1 0 /* RX_DV */
1669 0 10 2 0 1 0 /* RX_ER */
1670 0 0 2 0 1 0 /* RX_CLK */
1671 2 9 1 0 3 0 /* GTX_CLK - CLK10 */
1672 2 8 2 0 1 0>; /* GTX125 - CLK9 */
1673 };
1674
1675 vii) Multi-User RAM (MURAM)
1676
1677 Required properties:
1678 - device_type : should be "muram".
1679 - mode : the could be "host" or "slave".
1680 - ranges : Should be defined as specified in 1) to describe the
1681 translation of MURAM addresses.
1682 - data-only : sub-node which defines the address area under MURAM
1683 bus that can be allocated as data/parameter
1684
1685 Example:
1686
1687 muram@10000 {
1688 device_type = "muram";
1689 ranges = <0 00010000 0000c000>;
1690
1691 data-only@0{
1692 reg = <0 c000>;
1693 };
1694 };
1443 1695
1444 More devices will be defined as this spec matures. 1696 More devices will be defined as this spec matures.
1445 1697
diff --git a/Documentation/sound/oss/AWE32 b/Documentation/sound/oss/AWE32
deleted file mode 100644
index b5908a66ff55..000000000000
--- a/Documentation/sound/oss/AWE32
+++ /dev/null
@@ -1,76 +0,0 @@
1 Installing and using Creative AWE midi sound under Linux.
2
3This documentation is devoted to the Creative Sound Blaster AWE32, AWE64 and
4SB32.
5
61) Make sure you have an ORIGINAL Creative SB32, AWE32 or AWE64 card. This
7 is important, because the driver works only with real Creative cards.
8
92) The first thing you need to do is re-compile your kernel with support for
10 your sound card. Run your favourite tool to configure the kernel and when
11 you get to the "Sound" menu you should enable support for the following:
12
13 Sound card support,
14 OSS sound modules,
15 100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support,
16 AWE32 synth
17
18 If your card is "Plug and Play" you will also need to enable these two
19 options, found under the "Plug and Play configuration" menu:
20
21 Plug and Play support
22 ISA Plug and Play support
23
24 Now compile and install the kernel in normal fashion. If you don't know
25 how to do this you can find instructions for this in the README file
26 located in the root directory of the kernel source.
27
283) Before you can start playing midi files you will have to load a sound
29 bank file. The utility needed for doing this is called "sfxload", and it
30 is one of the utilities found in a package called "awesfx". If this
31 package is not available in your distribution you can download the AWE
32 snapshot from Creative Labs Open Source website:
33
34 http://www.opensource.creative.com/snapshot.html
35
36 Once you have unpacked the AWE snapshot you will see a "awesfx"
37 directory. Follow the instructions in awesfx/docs/INSTALL to install the
38 utilities in this package. After doing this, sfxload should be installed
39 as:
40
41 /usr/local/bin/sfxload
42
43 To enable AWE general midi synthesis you should also get the sound bank
44 file for general midi from:
45
46 http://members.xoom.com/yar/synthgm.sbk.gz
47
48 Copy it to a directory of your choice, and unpack it there.
49
504) Edit /etc/modprobe.conf, and insert the following lines at the end of the
51 file:
52
53 alias sound-slot-0 sb
54 alias sound-service-0-1 awe_wave
55 install awe_wave /sbin/modprobe --first-time -i awe_wave && /usr/local/bin/sfxload PATH_TO_SOUND_BANK_FILE
56
57 You will of course have to change "PATH_TO_SOUND_BANK_FILE" to the full
58 path of the sound bank file. That will enable the Sound Blaster and AWE
59 wave synthesis. To play midi files you should get one of these programs if
60 you don't already have them:
61
62 Playmidi: http://playmidi.openprojects.net
63
64 AWEMidi Player (drvmidi) Included in the previously mentioned AWE
65 snapshot.
66
67 You will probably have to pass the "-e" switch to playmidi to have it use
68 your midi device. drvmidi should work without switches.
69
70 If something goes wrong please e-mail me. All comments and suggestions are
71 welcome.
72
73 Yaroslav Rosomakho (alons55@dialup.ptt.ru)
74 http://www.yar.opennet.ru
75
76Last Updated: Feb 3 2001
diff --git a/Documentation/sound/oss/CMI8338 b/Documentation/sound/oss/CMI8338
deleted file mode 100644
index 387d058c3f95..000000000000
--- a/Documentation/sound/oss/CMI8338
+++ /dev/null
@@ -1,85 +0,0 @@
1Audio driver for CM8338/CM8738 chips by Chen-Li Tien
2
3
4HARDWARE SUPPORTED
5================================================================================
6C-Media CMI8338
7C-Media CMI8738
8On-board C-Media chips
9
10
11STEPS TO BUILD DRIVER
12================================================================================
13
14 1. Backup the Config.in and Makefile in the sound driver directory
15 (/usr/src/linux/driver/sound).
16 The Configure.help provide help when you config driver in step
17 4, please backup the original one (/usr/src/linux/Document) and
18 copy this file.
19 The cmpci is document for the driver in detail, please copy it
20 to /usr/src/linux/Document/sound so you can refer it. Backup if
21 there is already one.
22
23 2. Extract the tar file by 'tar xvzf cmpci-xx.tar.gz' in the above
24 directory.
25
26 3. Change directory to /usr/src/linux
27
28 4. Config cm8338 driver by 'make menuconfig', 'make config' or
29 'make xconfig' command.
30
31 5. Please select Sound Card (CONFIG_SOUND=m) support and CMPCI
32 driver (CONFIG_SOUND_CMPCI=m) as modules. Resident mode not tested.
33 For driver option, please refer 'DRIVER PARAMETER'
34
35 6. Compile the kernel if necessary.
36
37 7. Compile the modules by 'make modules'.
38
39 8. Install the modules by 'make modules_install'
40
41
42INSTALL DRIVER
43================================================================================
44
45 1. Before first time to run the driver, create module dependency by
46 'depmod -a'
47
48 2. To install the driver manually, enter 'modprobe cmpci'.
49
50 3. Driver installation for various distributions:
51
52 a. Slackware 4.0
53 Add the 'modprobe cmpci' command in your /etc/rc.d/rc.modules
54 file.so you can start the driver automatically each time booting.
55
56 b. Caldera OpenLinux 2.2
57 Use LISA to load the cmpci module.
58
59 c. RedHat 6.0 and S.u.S.E. 6.1
60 Add following command in /etc/conf.modules:
61
62 alias sound cmpci
63
64 also visit http://www.cmedia.com.tw for installation instruction.
65
66DRIVER PARAMETER
67================================================================================
68
69 Some functions for the cm8738 can be configured in Kernel Configuration
70 or modules parameters. Set these parameters to 1 to enable.
71
72 mpuio: I/O ports base for MPU-401, 0 if disabled.
73 fmio: I/O ports base for OPL-3, 0 if disabled.
74 spdif_inverse:Inverse the S/PDIF-in signal, this depends on your
75 CD-ROM or DVD-ROM.
76 spdif_loop: Enable S/PDIF loop, this route S/PDIF-in to S/PDIF-out
77 directly.
78 speakers: Number of speakers used.
79 use_line_as_rear:Enable this if you want to use line-in as
80 rear-out.
81 use_line_as_bass:Enable this if you want to use line-in as
82 bass-out.
83 joystick: Enable joystick. You will need to install Linux joystick
84 driver.
85
diff --git a/Documentation/sound/oss/INSTALL.awe b/Documentation/sound/oss/INSTALL.awe
deleted file mode 100644
index 310f42ca1e83..000000000000
--- a/Documentation/sound/oss/INSTALL.awe
+++ /dev/null
@@ -1,134 +0,0 @@
1================================================================
2 INSTALLATION OF AWE32 SOUND DRIVER FOR LINUX
3 Takashi Iwai <iwai@ww.uni-erlangen.de>
4================================================================
5
6----------------------------------------------------------------
7* Attention to SB-PnP Card Users
8
9If you're using PnP cards, the initialization of PnP is required
10before loading this driver. You have now three options:
11 1. Use isapnptools.
12 2. Use in-kernel isapnp support.
13 3. Initialize PnP on DOS/Windows, then boot linux by loadlin.
14In this document, only the case 1 case is treated.
15
16----------------------------------------------------------------
17* Installation on Red Hat 5.0 Sound Driver
18
19Please use install-rh.sh under RedHat5.0 directory.
20DO NOT USE install.sh below.
21See INSTALL.RH for more details.
22
23----------------------------------------------------------------
24* Installation/Update by Shell Script
25
26 1. Become root
27
28 % su
29
30 2. If you have never configured the kernel tree yet, run make config
31 once (to make dependencies and symlinks).
32
33 # cd /usr/src/linux
34 # make xconfig
35
36 3. Run install.sh script
37
38 # sh ./install.sh
39
40 4. Configure your kernel
41
42 (for Linux 2.[01].x user)
43 # cd /usr/src/linux
44 # make xconfig (or make menuconfig)
45
46 (for Linux 1.2.x user)
47 # cd /usr/src/linux
48 # make config
49
50 Answer YES to both "lowlevel drivers" and "AWE32 wave synth" items
51 in Sound menu. ("lowlevel drivers" will appear only in 2.x
52 kernel.)
53
54 5. Make your kernel (and modules), and install them as usual.
55
56 5a. make kernel image
57 # make zImage
58
59 5b. make modules and install them
60 # make modules && make modules_install
61
62 5c. If you're using lilo, copy the kernel image and run lilo.
63 Otherwise, copy the kernel image to suitable directory or
64 media for your system.
65
66 6. Reboot the kernel if necessary.
67 - If you updated only the modules, you don't have to reboot
68 the system. Just remove the old sound modules here.
69 in
70 # rmmod sound.o (linux-2.0 or OSS/Free)
71 # rmmod awe_wave.o (linux-2.1)
72
73 7. If your AWE card is a PnP and not initialized yet, you'll have to
74 do it by isapnp tools. Otherwise, skip to 8.
75
76 This section described only a brief explanation. For more
77 details, please see the AWE64-Mini-HOWTO or isapnp tools FAQ.
78
79 7a. If you have no isapnp.conf file, generate it by pnpdump.
80 Otherwise, skip to 7d.
81 # pnpdump > /etc/isapnp.conf
82
83 7b. Edit isapnp.conf file. Comment out the appropriate
84 lines containing desirable I/O ports, DMA and IRQs.
85 Don't forget to enable (ACT Y) line.
86
87 7c. Add two i/o ports (0xA20 and 0xE20) in WaveTable part.
88 ex)
89 (CONFIGURE CTL0048/58128 (LD 2
90 # ANSI string -->WaveTable<--
91 (IO 0 (BASE 0x0620))
92 (IO 1 (BASE 0x0A20))
93 (IO 2 (BASE 0x0E20))
94 (ACT Y)
95 ))
96
97 7d. Load the config file.
98 CAUTION: This will reset all PnP cards!
99
100 # isapnp /etc/isapnp.conf
101
102 8. Load the sound module (if you configured it as a module):
103
104 for 2.0 kernel or OSS/Free monolithic module:
105
106 # modprobe sound.o
107
108 for 2.1 kernel:
109
110 # modprobe sound
111 # insmod uart401
112 # insmod sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330
113 (These values depend on your settings.)
114 # insmod awe_wave
115 (Be sure to load awe_wave after sb!)
116
117 See Documentation/sound/oss/AWE32 for
118 more details.
119
120 9. (only for obsolete systems) If you don't have /dev/sequencer
121 device file, make it according to Readme.linux file on
122 /usr/src/linux/drivers/sound. (Run a shell script included in
123 that file). <-- This file no longer exists in the recent kernels!
124
125 10. OK, load your own soundfont file, and enjoy MIDI!
126
127 % sfxload synthgm.sbk
128 % drvmidi foo.mid
129
130 11. For more advanced use (eg. dynamic loading, virtual bank and
131 etc.), please read the awedrv FAQ or the instructions in awesfx
132 and awemidi packages.
133
134Good luck!
diff --git a/Documentation/sound/oss/MAD16 b/Documentation/sound/oss/MAD16
deleted file mode 100644
index 865dbd848742..000000000000
--- a/Documentation/sound/oss/MAD16
+++ /dev/null
@@ -1,56 +0,0 @@
1(This recipe has been edited to update the configuration symbols,
2 and change over to modprobe.conf for 2.6)
3
4From: Shaw Carruthers <shaw@shawc.demon.co.uk>
5
6I have been using mad16 sound for some time now with no problems, current
7kernel 2.1.89
8
9lsmod shows:
10
11mad16 5176 0
12sb 22044 0 [mad16]
13uart401 5576 0 [mad16 sb]
14ad1848 14176 1 [mad16]
15sound 61928 0 [mad16 sb uart401 ad1848]
16
17.config has:
18
19CONFIG_SOUND=m
20CONFIG_SOUND_ADLIB=m
21CONFIG_SOUND_MAD16=m
22CONFIG_SOUND_YM3812=m
23
24modprobe.conf has:
25
26alias char-major-14-* mad16
27options sb mad16=1
28options mad16 io=0x530 irq=7 dma=0 dma16=1 && /usr/local/bin/aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0
29
30
31To get the built in mixer to work this needs to be:
32
33options adlib_card io=0x388 # FM synthesizer
34options sb mad16=1
35options mad16 io=0x530 irq=7 dma=0 dma16=1 mpu_io=816 mpu_irq=5 && /usr/local/bin/aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0
36
37The addition of the "mpu_io=816 mpu_irq=5" to the mad16 options line is
38
39------------------------------------------------------------------------
40The mad16 module in addition supports the following options:
41
42option: meaning: default:
43joystick=0,1 disabled, enabled disabled
44cdtype=0x00,0x02,0x04, disabled, Sony CDU31A, disabled
45 0x06,0x08,0x0a Mitsumi, Panasonic,
46 Secondary IDE, Primary IDE
47cdport=0x340,0x320, 0x340
48 0x330,0x360
49cdirq=0,3,5,7,9,10,11 disabled, IRQ3, ... disabled
50cddma=0,5,6,7 disabled, DMA5, ... DMA5 for Mitsumi or IDE
51cddma=0,1,2,3 disabled, DMA1, ... DMA3 for Sony or Panasonic
52opl4=0,1 OPL3, OPL4 OPL3
53
54for more details see linux/drivers/sound/mad16.c
55
56Rui Sousa
diff --git a/Documentation/sound/oss/Maestro b/Documentation/sound/oss/Maestro
deleted file mode 100644
index 4a80eb3f8e00..000000000000
--- a/Documentation/sound/oss/Maestro
+++ /dev/null
@@ -1,123 +0,0 @@
1 An OSS/Lite Driver for the ESS Maestro family of sound cards
2
3 Zach Brown, December 1999
4
5Driver Status and Availability
6------------------------------
7
8The most recent version of this driver will hopefully always be available at
9 http://www.zabbo.net/maestro/
10
11I will try and maintain the most recent stable version of the driver
12in both the stable and development kernel lines.
13
14ESS Maestro Chip Family
15-----------------------
16
17There are 3 main variants of the ESS Maestro PCI sound chip. The first
18is the Maestro 1. It was originally produced by Platform Tech as the
19'AGOGO'. It can be recognized by Platform Tech's PCI ID 0x1285 with
200x0100 as the device ID. It was put on some sound boards and a few laptops.
21ESS bought the design and cleaned it up as the Maestro 2. This starts
22their marking with the ESS vendor ID 0x125D and the 'year' device IDs.
23The Maestro 2 claims 0x1968 while the Maestro 2e has 0x1978.
24
25The various families of Maestro are mostly identical as far as this
26driver is concerned. It doesn't touch the DSP parts that differ (though
27it could for FM synthesis).
28
29Driver OSS Behavior
30--------------------
31
32This OSS driver exports /dev/mixer and /dev/dsp to applications, which
33mostly adhere to the OSS spec. This driver doesn't register itself
34with /dev/sndstat, so don't expect information to appear there.
35
36The /dev/dsp device exported behaves almost as expected. Playback is
37supported in all the various lovely formats. 8/16bit stereo/mono from
388khz to 48khz, and mmap()ing for playback behaves. Capture/recording
39is limited due to oddities with the Maestro hardware. One can only
40record in 16bit stereo. For recording the maestro uses non interleaved
41stereo buffers so that mmap()ing the incoming data does not result in
42a ring buffer of LRLR data. mmap()ing of the read buffers is therefore
43disallowed until this can be cleaned up.
44
45/dev/mixer is an interface to the AC'97 codec on the Maestro. It is
46worth noting that there are a variety of AC'97s that can be wired to
47the Maestro. Which is used is entirely up to the hardware implementor.
48This should only be visible to the user by the presence, or lack, of
49'Bass' and 'Treble' sliders in the mixer. Not all AC'97s have them.
50
51The driver doesn't support MIDI or FM playback at the moment. Typically
52the Maestro is wired to an MPU MIDI chip, but some hardware implementations
53don't. We need to assemble a white list of hardware implementations that
54have MIDI wired properly before we can claim to support it safely.
55
56Compiling and Installing
57------------------------
58
59With the drivers inclusion into the kernel, compiling and installing
60is the same as most OSS/Lite modular sound drivers. Compilation
61of the driver is enabled through the CONFIG_SOUND_MAESTRO variable
62in the config system.
63
64It may be modular or statically linked. If it is modular it should be
65installed with the rest of the modules for the kernel on the system.
66Typically this will be in /lib/modules/ somewhere. 'alias sound maestro'
67should also be added to your module configs (typically /etc/conf.modules)
68if you're using modular OSS/Lite sound and want to default to using a
69maestro chip.
70
71As this is a PCI device, the module does not need to be informed of
72any IO or IRQ resources it should use, it devines these from the
73system. Sometimes, on sucky PCs, the BIOS fails to allocated resources
74for the maestro. This will result in a message like:
75 maestro: PCI subsystem reports IRQ 0, this might not be correct.
76from the kernel. Should this happen the sound chip most likely will
77not operate correctly. To solve this one has to dig through their BIOS
78(typically entered by hitting a hot key at boot time) and figure out
79what magic needs to happen so that the BIOS will reward the maestro with
80an IRQ. This operation is incredibly system specific, so you're on your
81own. Sometimes the magic lies in 'PNP Capable Operating System' settings.
82
83There are very few options to the driver. One is 'debug' which will
84tell the driver to print minimal debugging information as it runs. This
85can be collected with 'dmesg' or through the klogd daemon.
86
87The other, more interesting option, is 'dsps_order'. Typically at
88install time the driver will only register one available /dev/dsp device
89for its use. The 'dsps_order' module parameter allows for more devices
90to be allocated, as a power of two. Up to 4 devices can be registered
91( dsps_order=2 ). These devices act as fully distinct units and use
92separate channels in the maestro.
93
94Power Management
95----------------
96
97As of version 0.14, this driver has a minimal understanding of PCI
98Power Management. If it finds a valid power management capability
99on the PCI device it will attempt to use the power management
100functions of the maestro. It will only do this on Maestro 2Es and
101only on machines that are known to function well. You can
102force the use of power management by setting the 'use_pm' module
103option to 1, or can disable it entirely by setting it to 0.
104
105When using power management, the driver does a few things
106differently. It will keep the chip in a lower power mode
107when the module is inserted but /dev/dsp is not open. This
108allows the mixer to function but turns off the clocks
109on other parts of the chip. When /dev/dsp is opened the chip
110is brought into full power mode, and brought back down
111when it is closed. It also powers down the chip entirely
112when the module is removed or the machine is shutdown. This
113can have nonobvious consequences. CD audio may not work
114after a power managing driver is removed. Also, software that
115doesn't understand power management may not be able to talk
116to the powered down chip until the machine goes through a hard
117reboot to bring it back.
118
119.. more details ..
120------------------
121
122drivers/sound/maestro.c contains comments that hopefully explain
123the maestro implementation.
diff --git a/Documentation/sound/oss/Maestro3 b/Documentation/sound/oss/Maestro3
deleted file mode 100644
index a113718e8034..000000000000
--- a/Documentation/sound/oss/Maestro3
+++ /dev/null
@@ -1,92 +0,0 @@
1 An OSS/Lite Driver for the ESS Maestro3 family of sound chips
2
3 Zach Brown, January 2001
4
5Driver Status and Availability
6------------------------------
7
8The most recent version of this driver will hopefully always be available at
9 http://www.zabbo.net/maestro3/
10
11I will try and maintain the most recent stable version of the driver
12in both the stable and development kernel lines.
13
14Historically I've sucked pretty hard at actually doing that, however.
15
16ESS Maestro3 Chip Family
17-----------------------
18
19The 'Maestro3' is much like the Maestro2 chip. The noted improvement
20is the removal of the silicon in the '2' that did PCM mixing. All that
21work is now done through a custom DSP called the ASSP, the Asynchronus
22Specific Signal Processor.
23
24The 'Allegro' is a baby version of the Maestro3. I'm not entirely clear
25on the extent of the differences, but the driver supports them both :)
26
27The 'Allegro' shows up as PCI ID 0x1988 and the Maestro3 as 0x1998,
28both under ESS's vendor ID of 0x125D. The Maestro3 can also show up as
290x199a when hardware strapping is used.
30
31The chip can also act as a multi function device. The modem IDs follow
32the audio multimedia device IDs. (so the modem part of an Allegro shows
33up as 0x1989)
34
35Driver OSS Behavior
36--------------------
37
38This OSS driver exports /dev/mixer and /dev/dsp to applications, which
39mostly adhere to the OSS spec. This driver doesn't register itself
40with /dev/sndstat, so don't expect information to appear there.
41
42The /dev/dsp device exported behaves as expected. Playback is
43supported in all the various lovely formats. 8/16bit stereo/mono from
448khz to 48khz, with both read()/write(), and mmap().
45
46/dev/mixer is an interface to the AC'97 codec on the Maestro3. It is
47worth noting that there are a variety of AC'97s that can be wired to
48the Maestro3. Which is used is entirely up to the hardware implementor.
49This should only be visible to the user by the presence, or lack, of
50'Bass' and 'Treble' sliders in the mixer. Not all AC'97s have them.
51The Allegro has an onchip AC'97.
52
53The driver doesn't support MIDI or FM playback at the moment.
54
55Compiling and Installing
56------------------------
57
58With the drivers inclusion into the kernel, compiling and installing
59is the same as most OSS/Lite modular sound drivers. Compilation
60of the driver is enabled through the CONFIG_SOUND_MAESTRO3 variable
61in the config system.
62
63It may be modular or statically linked. If it is modular it should be
64installed with the rest of the modules for the kernel on the system.
65Typically this will be in /lib/modules/ somewhere. 'alias sound-slot-0
66maestro3' should also be added to your module configs (typically
67/etc/modprobe.conf) if you're using modular OSS/Lite sound and want to
68default to using a maestro3 chip.
69
70There are very few options to the driver. One is 'debug' which will
71tell the driver to print minimal debugging information as it runs. This
72can be collected with 'dmesg' or through the klogd daemon.
73
74One is 'external_amp', which tells the driver to attempt to enable
75an external amplifier. This defaults to '1', you can tell the driver
76not to bother enabling such an amplifier by setting it to '0'.
77
78And the last is 'gpio_pin', which tells the driver which GPIO pin number
79the external amp uses (0-15), The Allegro uses 8 by default, all others 1.
80If everything loads correctly and seems to be working but you get no sound,
81try tweaking this value.
82
83Systems known to need a different value
84 Panasonic ToughBook CF-72: gpio_pin=13
85
86Power Management
87----------------
88
89This driver has a minimal understanding of PCI Power Management. It will
90try and power down the chip when the system is suspended, and power
91it up with it is resumed. It will also try and power down the chip
92when the machine is shut down.
diff --git a/Documentation/sound/oss/NEWS b/Documentation/sound/oss/NEWS
deleted file mode 100644
index a81e0ef72ae9..000000000000
--- a/Documentation/sound/oss/NEWS
+++ /dev/null
@@ -1,42 +0,0 @@
1Linux 2.4 Sound Changes
22000-September-25
3Christoph Hellwig, <hch@infradead.org>
4
5
6
7=== isapnp support
8
9The Linux 2.4 Kernel does have reliable in-kernel isapnp support.
10Some drivers (sb.o, ad1816.o awe_wave.o) do now support automatically
11detecting and configuring isapnp devices.
12If you have a not yet supported isapnp soundcard, mail me the content
13of '/proc/isapnp' on your system and some information about your card
14and its driver(s) so I can try to get isapnp working for it.
15
16
17
18=== soundcard resources on kernel commandline
19
20Before Linux 2.4 you had to specify the resources for sounddrivers
21statically linked into the kernel at compile time
22(in make config/menuconfig/xconfig). In Linux 2.4 the resources are
23now specified at the boot-time kernel commandline (e.g. the lilo
24'append=' line or everything that's after the kernel name in grub).
25Read the Configure.help entry for your card for the parameters.
26
27
28=== softoss is gone
29
30In Linux 2.4 the softoss in-kernel software synthesizer is no more aviable.
31Use a user space software synthesizer like timidity instead.
32
33
34
35=== /dev/sndstat and /proc/sound are gone
36
37In older Linux versions those files exported some information about the
38OSS/Free configuration to userspace. In Linux 2.3 they were removed because
39they did not support the growing number of pci soundcards and there were
40some general problems with this interface.
41
42
diff --git a/Documentation/sound/oss/OPL3-SA b/Documentation/sound/oss/OPL3-SA
deleted file mode 100644
index 66a91835d918..000000000000
--- a/Documentation/sound/oss/OPL3-SA
+++ /dev/null
@@ -1,52 +0,0 @@
1OPL3-SA1 sound driver (opl3sa.o)
2
3---
4Note: This howto only describes how to setup the OPL3-SA1 chip; this info
5does not apply to the SA2, SA3, or SA4.
6---
7
8The Yamaha OPL3-SA1 sound chip is usually found built into motherboards, and
9it's a decent little chip offering a WSS mode, a SB Pro emulation mode, MPU401
10and OPL3 FM Synth capabilities.
11
12You can enable inclusion of the driver via CONFIG_SOUND_OPL3SA1=m, or
13CONFIG_SOUND_OPL3SA1=y through 'make config/xconfig/menuconfig'.
14
15You'll need to know all of the relevant info (irq, dma, and io port) for the
16chip's WSS mode, since that is the mode the kernel sound driver uses, and of
17course you'll also need to know about where the MPU401 and OPL3 ports and
18IRQs are if you want to use those.
19
20Here's the skinny on how to load it as a module:
21
22 modprobe opl3sa io=0x530 irq=11 dma=0 dma2=1 mpu_io=0x330 mpu_irq=5
23
24Module options in detail:
25
26 io: This is the WSS's port base.
27 irq: This is the WSS's IRQ.
28 dma: This is the WSS's DMA line. In my BIOS setup screen this was
29 listed as "WSS Play DMA"
30 dma2: This is the WSS's secondary DMA line. My BIOS calls it the
31 "WSS capture DMA"
32
33 mpu_io: This is the MPU401's port base.
34 mpu_irq: This is the MPU401's IRQ.
35
36If you'd like to use the OPL3 FM Synthesizer, make sure you enable
37CONFIG_SOUND_YM3812 (in 'make config'). That'll build the opl3.o module.
38
39Then a simple 'insmod opl3 io=0x388', and you now have FM Synth.
40
41You can also use the SoftOSS software synthesizer instead of the builtin OPL3.
42Here's how:
43
44Say 'y' or 'm' to "SoftOSS software wave table engine" in make config.
45
46If you said yes, the software synth is available once you boot your new
47kernel.
48
49If you chose to build it as a module, just insmod the resulting softoss2.o
50
51Questions? Comments?
52<stiker@northlink.com>
diff --git a/Documentation/sound/oss/README.awe b/Documentation/sound/oss/README.awe
deleted file mode 100644
index 80054cd8fcde..000000000000
--- a/Documentation/sound/oss/README.awe
+++ /dev/null
@@ -1,218 +0,0 @@
1================================================================
2 AWE32 Sound Driver for Linux / FreeBSD
3 version 0.4.3; Nov. 1, 1998
4
5 Takashi Iwai <iwai@ww.uni-erlangen.de>
6================================================================
7
8* GENERAL NOTES
9
10This is a sound driver extension for SoundBlaster AWE32 and other
11compatible cards (AWE32-PnP, SB32, SB32-PnP, AWE64 & etc) to enable
12the wave synth operations. The driver is provided for Linux 1.2.x
13and 2.[012].x kernels, as well as FreeBSD, on Intel x86 and DEC
14Alpha systems.
15
16This driver was written by Takashi Iwai <iwai@ww.uni-erlangen.de>,
17and provided "as is". The original source (awedrv-0.4.3.tar.gz) and
18binary packages are available on the following URL:
19 http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/
20Note that since the author is apart from this web site, the update is
21not frequent now.
22
23
24* NOTE TO LINUX USERS
25
26To enable this driver on linux-2.[01].x kernels, you need turn on
27"AWE32 synth" options in sound menu when configure your linux kernel
28and modules. The precise installation procedure is described in the
29AWE64-Mini-HOWTO and linux-kernel/Documetation/sound/AWE32.
30
31If you're using PnP cards, the card must be initialized before loading
32the sound driver. There're several options to do this:
33 - Initialize the card via ISA PnP tools, and load the sound module.
34 - Initialize the card on DOS, and load linux by loadlin.exe
35 - Use PnP kernel driver (for Linux-2.x.x)
36The detailed instruction for the solution using isapnp tools is found
37in many documents like above. A brief instruction is also included in
38the installation document of this package.
39For PnP driver project, please refer to the following URL:
40 http://www-jcr.lmh.ox.ac.uk/~pnp/
41
42
43* USING THE DRIVER
44
45The awedrv has several different playing modes to realize easy channel
46allocation for MIDI songs. To hear the exact sound quality, you need
47to obtain the extended sequencer program, drvmidi or playmidi-2.5.
48
49For playing MIDI files, you *MUST* load the soundfont file on the
50driver previously by sfxload utility. Otherwise you'll here no sounds
51at all! All the utilities and driver source packages are found in the
52above URL. The sfxload program is included in the package
53awesfx-0.4.3.tgz. Binary packages are available there, too. See the
54instruction in each package for installation.
55
56Loading a soundfont file is very simple. Just execute the command
57
58 % sfxload synthgm.sbk
59
60Then, sfxload transfers the file "synthgm.sbk" to the driver.
61Both SF1 and SF2 formats are accepted.
62
63Now you can hear midi musics by a midi player.
64
65 % drvmidi foo.mid
66
67If you run MIDI player after MOD player, you need to load soundfont
68files again, since MOD player programs clear the previous loaded
69samples by their own data.
70
71If you have only 512kb on the sound card, I recommend to use dynamic
72sample loading via -L option of drvmidi. 2MB GM/GS soundfont file is
73available in most midi files.
74
75 % sfxload synthgm
76 % drvmidi -L 2mbgmgs foo.mid
77
78This makes a big difference (believe me)! For more details, please
79refer to the FAQ list which is available on the URL above.
80
81The current chorus, reverb and equalizer status can be changed by
82aweset utility program (included in awesfx package). Note that
83some awedrv-native programs (like drvmidi and xmp) will change the
84current settings by themselves. The aweset program is effective
85only for other programs like playmidi.
86
87Enjoy.
88
89
90* COMPILE FLAGS
91
92Compile conditions are defined in awe_config.h.
93
94[Compatibility Conditions]
95The following flags are defined automatically when using installation
96shell script.
97
98- AWE_MODULE_SUPPORT
99 indicates your Linux kernel supports module for each sound card
100 (in recent 2.1 or 2.2 kernels and unofficial patched 2.0 kernels
101 as distributed in the RH5.0 package).
102 This flag is automatically set when you're using 2.1.x kernels.
103 You can pass the base address and memory size via the following
104 module options,
105 io = base I/O port address (eg. 0x620)
106 memsize = DRAM size in kilobytes (eg. 512)
107 As default, AWE driver probes these values automatically.
108
109
110[Hardware Conditions]
111You DON'T have to define the following two values.
112Define them only when the driver couldn't detect the card properly.
113
114- AWE_DEFAULT_BASE_ADDR (default: not defined)
115 specifies the base port address of your AWE32 card.
116 0 means to autodetect the address.
117
118- AWE_DEFAULT_MEM_SIZE (default: not defined)
119 specifies the memory size of your AWE32 card in kilobytes.
120 -1 means to autodetect its size.
121
122
123[Sample Table Size]
124From ver.0.4.0, sample tables are allocated dynamically (except
125Linux-1.2.x system), so you need NOT to touch these parameters.
126Linux-1.2.x users may need to increase these values to appropriate size
127if the sound card is equipped with more DRAM.
128
129- AWE_MAX_SF_LISTS, AWE_MAX_SAMPLES, AWE_MAX_INFOS
130
131
132[Other Conditions]
133
134- AWE_ALWAYS_INIT_FM (default: not defined)
135 indicates the AWE driver always initialize FM passthrough even
136 without DRAM on board. Emu8000 chip has a restriction for playing
137 samples on DRAM that at least two channels must be occupied as
138 passthrough channels.
139
140- AWE_DEBUG_ON (default: defined)
141 turns on debugging messages if defined.
142
143- AWE_HAS_GUS_COMPATIBILITY (default: defined)
144 Enables GUS compatibility mode if defined, reading GUS patches and
145 GUS control commands. Define this option to use GMOD or other
146 GUS module players.
147
148- CONFIG_AWE32_MIDIEMU (default: defined)
149 Adds a MIDI emulation device by Emu8000 wavetable. The emulation
150 device can be accessed as an external MIDI, and sends the MIDI
151 control codes directly. XG and GS sysex/NRPN are accepted.
152 No MIDI input is supported.
153
154- CONFIG_AWE32_MIXER (default: not defined)
155 Adds a mixer device for AWE32 bass/treble equalizer control.
156 You can access this device using /dev/mixer?? (usually mixer01).
157
158- AWE_USE_NEW_VOLUME_CALC (default: defined)
159 Use the new method to calculate the volume change as compatible
160 with DOS/Win drivers. This option can be toggled via aweset
161 program, or drvmidi player.
162
163- AWE_CHECK_VTARGET (default: defined)
164 Check the current volume target value when searching for an
165 empty channel to allocate a new voice. This is experimentally
166 implemented in this version. (probably, this option doesn't
167 affect the sound quality severely...)
168
169- AWE_ALLOW_SAMPLE_SHARING (default: defined)
170 Allow sample sharing for differently loaded patches.
171 This function is available only together with awesfx-0.4.3p3.
172 Note that this is still an experimental option.
173
174- DEF_FM_CHORUS_DEPTH (default: 0x10)
175 The default strength to be sent to the chorus effect engine.
176 From 0 to 0xff. Larger numbers may often cause weird sounds.
177
178- DEF_FM_REVERB_DEPTH (default: 0x10)
179 The default strength to be sent to the reverb effect engine.
180 From 0 to 0xff. Larger numbers may often cause weird sounds.
181
182
183* ACKNOWLEDGMENTS
184
185Thanks to Witold Jachimczyk (witek@xfactor.wpi.edu) for much advice
186on programming of AWE32. Much code is brought from his AWE32-native
187MOD player, ALMP.
188The port of awedrv to FreeBSD is done by Randall Hopper
189(rhh@ct.picker.com).
190The new volume calculation routine was derived from Mark Weaver's
191ADIP compatible routines.
192I also thank linux-awe-ml members for their efforts
193to reboot their system many times :-)
194
195
196* TODO'S
197
198- Complete DOS/Win compatibility
199- DSP-like output
200
201
202* COPYRIGHT
203
204Copyright (C) 1996-1998 Takashi Iwai
205
206This program is free software; you can redistribute it and/or modify
207it under the terms of the GNU General Public License as published by
208the Free Software Foundation; either version 2 of the License, or
209(at your option) any later version.
210
211This program is distributed in the hope that it will be useful,
212but WITHOUT ANY WARRANTY; without even the implied warranty of
213MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
214GNU General Public License for more details.
215
216You should have received a copy of the GNU General Public License
217along with this program; if not, write to the Free Software
218Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
diff --git a/Documentation/sound/oss/Wavefront b/Documentation/sound/oss/Wavefront
deleted file mode 100644
index 16f57ea43052..000000000000
--- a/Documentation/sound/oss/Wavefront
+++ /dev/null
@@ -1,339 +0,0 @@
1 An OSS/Free Driver for WaveFront soundcards
2 (Turtle Beach Maui, Tropez, Tropez Plus)
3
4 Paul Barton-Davis, July 1998
5
6 VERSION 0.2.5
7
8Driver Status
9-------------
10
11Requires: Kernel 2.1.106 or later (the driver is included with kernels
122.1.109 and above)
13
14As of 7/22/1998, this driver is currently in *BETA* state. This means
15that it compiles and runs, and that I use it on my system (Linux
162.1.106) with some reasonably demanding applications and uses. I
17believe the code is approaching an initial "finished" state that
18provides bug-free support for the Tropez Plus.
19
20Please note that to date, the driver has ONLY been tested on a Tropez
21Plus. I would very much like to hear (and help out) people with Tropez
22and Maui cards, since I think the driver can support those cards as
23well.
24
25Finally, the driver has not been tested (or even compiled) as a static
26(non-modular) part of the kernel. Alan Cox's good work in modularizing
27OSS/Free for Linux makes this rather unnecessary.
28
29Some Questions
30--------------
31
32**********************************************************************
330) What does this driver do that the maui driver did not ?
34**********************************************************************
35
36* can fully initialize a WaveFront card from cold boot - no DOS
37 utilities needed
38* working patch/sample/program loading and unloading (the maui
39 driver didn't document how to make this work, and assumed
40 user-level preparation of the patch data for writing
41 to the board. ick.)
42* full user-level access to all WaveFront commands
43* for the Tropez Plus, (primitive) control of the YSS225 FX processor
44* Virtual MIDI mode supported - 2 MIDI devices accessible via the
45 WaveFront's MPU401/UART emulation. One
46 accesses the WaveFront synth, the other accesses the
47 external MIDI connector. Full MIDI read/write semantics
48 for both devices.
49* OSS-compliant /dev/sequencer interface for the WaveFront synth,
50 including native and GUS-format patch downloading.
51* semi-intelligent patch management (prototypical at this point)
52
53**********************************************************************
541) What to do about MIDI interfaces ?
55**********************************************************************
56
57The Tropez Plus (and perhaps other WF cards) can in theory support up
58to 2 physical MIDI interfaces. One of these is connected to the
59ICS2115 chip (the WaveFront synth itself) and is controlled by
60MPU/UART-401 emulation code running as part of the WaveFront OS. The
61other is controlled by the CS4232 chip present on the board. However,
62physical access to the CS4232 connector is difficult, and it is
63unlikely (though not impossible) that you will want to use it.
64
65An older version of this driver introduced an additional kernel config
66variable which controlled whether or not the CS4232 MIDI interface was
67configured. Because of Alan Cox's work on modularizing the sound
68drivers, and now backporting them to 2.0.34 kernels, there seems to be
69little reason to support "static" configuration variables, and so this
70has been abandoned in favor of *only* module parameters. Specifying
71"mpuio" and "mpuirq" for the cs4232 parameter will result in the
72CS4232 MIDI interface being configured; leaving them unspecified will
73leave it unconfigured (and thus unusable).
74
75BTW, I have heard from one Tropez+ user that the CS4232 interface is
76more reliable than the ICS2115 one. I have had no problems with the
77latter, and I don't have the right cable to test the former one
78out. Reports welcome.
79
80**********************************************************************
812) Why does line XXX of the code look like this .... ?
82**********************************************************************
83
84Either because it's not finished yet, or because you're a better coder
85than I am, or because you don't understand some aspect of how the card
86or the code works.
87
88I absolutely welcome comments, criticisms and suggestions about the
89design and implementation of the driver.
90
91**********************************************************************
923) What files are included ?
93**********************************************************************
94
95 drivers/sound/README.wavefront -- this file
96
97 drivers/sound/wavefront.patch -- patches for the 2.1.106 sound drivers
98 needed to make the rest of this work
99 DO NOT USE IF YOU'VE APPLIED THEM
100 BEFORE, OR HAVE 2.1.109 OR ABOVE
101
102 drivers/sound/wavfront.c -- the driver
103 drivers/sound/ys225.h -- data declarations for FX config
104 drivers/sound/ys225.c -- data definitions for FX config
105 drivers/sound/wf_midi.c -- the "uart401" driver
106 to support virtual MIDI mode.
107 include/wavefront.h -- the header file
108 Documentation/sound/oss/Tropez+ -- short docs on configuration
109
110**********************************************************************
1114) How do I compile/install/use it ?
112**********************************************************************
113
114PART ONE: install the source code into your sound driver directory
115
116 cd <top-of-your-2.1.106-code-base-e.g.-/usr/src/linux>
117 tar -zxvf <where-you-put/wavefront.tar.gz>
118
119PART TWO: apply the patches
120
121 DO THIS ONLY IF YOU HAVE A KERNEL VERSION BELOW 2.1.109
122 AND HAVE NOT ALREADY INSTALLED THE PATCH(ES).
123
124 cd drivers/sound
125 patch < wavefront.patch
126
127PART THREE: configure your kernel
128
129 cd <top of your kernel tree>
130 make xconfig (or whichever config option you use)
131
132 - choose YES for Sound Support
133 - choose MODULE (M) for OSS Sound Modules
134 - choose MODULE(M) to YM3812/OPL3 support
135 - choose MODULE(M) for WaveFront support
136 - choose MODULE(M) for CS4232 support
137
138 - choose "N" for everything else (unless you have other
139 soundcards you want support for)
140
141
142 make boot
143 .
144 .
145 .
146 <whatever you normally do for a kernel install>
147 make modules
148 .
149 .
150 .
151 make modules_install
152
153Here's my autoconf.h SOUND section:
154
155/*
156 * Sound
157 */
158#define CONFIG_SOUND 1
159#undef CONFIG_SOUND_OSS
160#define CONFIG_SOUND_OSS_MODULE 1
161#undef CONFIG_SOUND_PAS
162#undef CONFIG_SOUND_SB
163#undef CONFIG_SOUND_ADLIB
164#undef CONFIG_SOUND_GUS
165#undef CONFIG_SOUND_MPU401
166#undef CONFIG_SOUND_PSS
167#undef CONFIG_SOUND_MSS
168#undef CONFIG_SOUND_SSCAPE
169#undef CONFIG_SOUND_TRIX
170#undef CONFIG_SOUND_MAD16
171#undef CONFIG_SOUND_WAVEFRONT
172#define CONFIG_SOUND_WAVEFRONT_MODULE 1
173#undef CONFIG_SOUND_CS4232
174#define CONFIG_SOUND_CS4232_MODULE 1
175#undef CONFIG_SOUND_MAUI
176#undef CONFIG_SOUND_SGALAXY
177#undef CONFIG_SOUND_OPL3SA1
178#undef CONFIG_SOUND_SOFTOSS
179#undef CONFIG_SOUND_YM3812
180#define CONFIG_SOUND_YM3812_MODULE 1
181#undef CONFIG_SOUND_VMIDI
182#undef CONFIG_SOUND_UART6850
183/*
184 * Additional low level sound drivers
185 */
186#undef CONFIG_LOWLEVEL_SOUND
187
188************************************************************
1896) How do I configure my card ?
190************************************************************
191
192You need to edit /etc/modprobe.conf. Here's mine (edited to show the
193relevant details):
194
195 # Sound system
196 alias char-major-14-* wavefront
197 alias synth0 wavefront
198 alias mixer0 cs4232
199 alias audio0 cs4232
200 install wavefront /sbin/modprobe cs4232 && /sbin/modprobe -i wavefront && /sbin/modprobe opl3
201 options wavefront io=0x200 irq=9
202 options cs4232 synthirq=9 synthio=0x200 io=0x530 irq=5 dma=1 dma2=0
203 options opl3 io=0x388
204
205Things to note:
206
207 the wavefront options "io" and "irq" ***MUST*** match the "synthio"
208 and "synthirq" cs4232 options.
209
210 you can do without the opl3 module if you don't
211 want to use the OPL/[34] FM synth on the soundcard
212
213 the opl3 io parameter is conventionally not adjustable.
214 In theory, any not-in-use IO port address would work, but
215 just use 0x388 and stick with the crowd.
216
217**********************************************************************
2187) What about firmware ?
219**********************************************************************
220
221Turtle Beach have not given me permission to distribute their firmware
222for the ICS2115. However, if you have a WaveFront card, then you
223almost certainly have the firmware, and if not, its freely available
224on their website, at:
225
226 http://www.tbeach.com/tbs/downloads/scardsdown.htm#tropezplus
227
228The file is called WFOS2001.MOT (for the Tropez+).
229
230This driver, however, doesn't use the pure firmware as distributed,
231but instead relies on a somewhat processed form of it. You can
232generate this very easily. Following an idea from Andrew Veliath's
233Pinnacle driver, the following flex program will generate the
234processed version:
235
236---- cut here -------------------------
237%option main
238%%
239^S[28].*\r$ printf ("%c%.*s", yyleng-1,yyleng-1,yytext);
240<<EOF>> { fputc ('\0', stdout); return; }
241\n {}
242. {}
243---- cut here -------------------------
244
245To use it, put the above in file (say, ws.l) compile it like this:
246
247 shell> flex -ows.c ws.l
248 shell> cc -o ws ws.c
249
250and then use it like this:
251
252 ws < my-copy-of-the-oswf.mot-file > /etc/sound/wavefront.os
253
254If you put it somewhere else, you'll always have to use the wf_ospath
255module parameter (see below) or alter the source code.
256
257**********************************************************************
2587) How do I get it working ?
259**********************************************************************
260
261Optionally, you can reboot with the "new" kernel (even though the only
262changes have really been made to a module).
263
264Then, as root do:
265
266 modprobe wavefront
267
268You should get something like this in /var/log/messages:
269
270 WaveFront: firmware 1.20 already loaded.
271
272or
273
274 WaveFront: no response to firmware probe, assume raw.
275
276then:
277
278 WaveFront: waiting for memory configuration ...
279 WaveFront: hardware version 1.64
280 WaveFront: available DRAM 8191k
281 WaveFront: 332 samples used (266 real, 13 aliases, 53 multi), 180 empty
282 WaveFront: 128 programs slots in use
283 WaveFront: 256 patch slots filled, 142 in use
284
285The whole process takes about 16 seconds, the longest waits being
286after reporting the hardware version (during the firmware download),
287and after reporting program status (during patch status inquiry). Its
288shorter (about 10 secs) if the firmware is already loaded (i.e. only
289warm reboots since the last firmware load).
290
291The "available DRAM" line will vary depending on how much added RAM
292your card has. Mine has 8MB.
293
294To check basically functionality, use play(1) or splay(1) to send a
295.WAV or other audio file through the audio portion. Then use playmidi
296to play a General MIDI file. Try the "-D 0" to hear the
297difference between sending MIDI to the WaveFront and using the OPL/3,
298which is the default (I think ...). If you have an external synth(s)
299hooked to the soundcard, you can use "-e" to route to the
300external synth(s) (in theory, -D 1 should work as well, but I think
301there is a bug in playmidi which prevents this from doing what it
302should).
303
304**********************************************************************
3058) What are the module parameters ?
306**********************************************************************
307
308Its best to read wavefront.c for this, but here is a summary:
309
310integers:
311 wf_raw - if set, ignore apparent presence of firmware
312 loaded onto the ICS2115, reset the whole
313 board, and initialize it from scratch. (default = 0)
314
315 fx_raw - if set, always initialize the YSS225 processor
316 on the Tropez plus. (default = 1)
317
318 < The next 4 are basically for kernel hackers to allow
319 tweaking the driver for testing purposes. >
320
321 wait_usecs - loop timer used when waiting for
322 status conditions on the board.
323 The default is 150.
324
325 debug_default - debugging flags. See sound/wavefront.h
326 for WF_DEBUG_* values. Default is zero.
327 Setting this allows you to debug the
328 driver during module installation.
329strings:
330 ospath - path to get to the pre-processed OS firmware.
331 (default: /etc/sound/wavefront.os)
332
333**********************************************************************
3349) Who should I contact if I have problems?
335**********************************************************************
336
337Just me: Paul Barton-Davis <pbd@op.net>
338
339
diff --git a/Documentation/sound/oss/es1370 b/Documentation/sound/oss/es1370
deleted file mode 100644
index 7b38b1a096a3..000000000000
--- a/Documentation/sound/oss/es1370
+++ /dev/null
@@ -1,70 +0,0 @@
1/proc/sound, /dev/sndstat
2-------------------------
3
4/proc/sound and /dev/sndstat is not supported by the
5driver. To find out whether the driver succeeded loading,
6check the kernel log (dmesg).
7
8
9ALaw/uLaw sample formats
10------------------------
11
12This driver does not support the ALaw/uLaw sample formats.
13ALaw is the default mode when opening a sound device
14using OSS/Free. The reason for the lack of support is
15that the hardware does not support these formats, and adding
16conversion routines to the kernel would lead to very ugly
17code in the presence of the mmap interface to the driver.
18And since xquake uses mmap, mmap is considered important :-)
19and no sane application uses ALaw/uLaw these days anyway.
20In short, playing a Sun .au file as follows:
21
22cat my_file.au > /dev/dsp
23
24does not work. Instead, you may use the play script from
25Chris Bagwell's sox-12.14 package (available from the URL
26below) to play many different audio file formats.
27The script automatically determines the audio format
28and does do audio conversions if necessary.
29http://home.sprynet.com/sprynet/cbagwell/projects.html
30
31
32Blocking vs. nonblocking IO
33---------------------------
34
35Unlike OSS/Free this driver honours the O_NONBLOCK file flag
36not only during open, but also during read and write.
37This is an effort to make the sound driver interface more
38regular. Timidity has problems with this; a patch
39is available from http://www.ife.ee.ethz.ch/~sailer/linux/pciaudio.html.
40(Timidity patched will also run on OSS/Free).
41
42
43MIDI UART
44---------
45
46The driver supports a simple MIDI UART interface, with
47no ioctl's supported.
48
49
50MIDI synthesizer
51----------------
52
53This soundcard does not have any hardware MIDI synthesizer;
54MIDI synthesis has to be done in software. To allow this
55the driver/soundcard supports two PCM (/dev/dsp) interfaces.
56The second one goes to the mixer "synth" setting and supports
57only a limited set of sampling rates (44100, 22050, 11025, 5512).
58By setting lineout to 1 on the driver command line
59(eg. insmod es1370 lineout=1) it is even possible on some
60cards to convert the LINEIN jack into a second LINEOUT jack, thus
61making it possible to output four independent audio channels!
62
63There is a freely available software package that allows
64MIDI file playback on this soundcard called Timidity.
65See http://www.cgs.fi/~tt/timidity/.
66
67
68
69Thomas Sailer
70t.sailer@alumni.ethz.ch
diff --git a/Documentation/sound/oss/rme96xx b/Documentation/sound/oss/rme96xx
deleted file mode 100644
index 87d7b7b65fa1..000000000000
--- a/Documentation/sound/oss/rme96xx
+++ /dev/null
@@ -1,767 +0,0 @@
1Beta release of the rme96xx (driver for RME 96XX cards like the
2"Hammerfall" and the "Hammerfall light")
3
4Important: The driver module has to be installed on a freshly rebooted system,
5otherwise the driver might not be able to acquire its buffers.
6
7features:
8
9 - OSS programming interface (i.e. runs with standard OSS soundsoftware)
10 - OSS/Multichannel interface (OSS multichannel is done by just aquiring
11 more than 2 channels). The driver does not use more than one device
12 ( yet .. this feature may be implemented later )
13 - more than one RME card supported
14
15The driver uses a specific multichannel interface, which I will document
16when the driver gets stable. (take a look at the defines in rme96xx.h,
17which adds blocked multichannel formats i.e instead of
18lrlrlrlr --> llllrrrr etc.
19
20Use the "rmectrl" programm to look at the status of the card ..
21or use xrmectrl, a GUI interface for the ctrl program.
22
23What you can do with the rmectrl program is to set the stereo device for
24OSS emulation (e.g. if you use SPDIF out).
25
26You do:
27
28./ctrl offset 24 24
29
30which makes the stereo device use channels 25 and 26.
31
32Guenter Geiger <geiger@epy.co.at>
33
34copy the first part of the attached source code into rmectrl.c
35and the second part into xrmectrl (or get the program from
36http://gige.xdv.org/pages/soft/pages/rme)
37
38to compile: gcc -o rmectrl rmectrl.c
39------------------------------ snip ------------------------------------
40
41#include <stdio.h>
42#include <sys/types.h>
43#include <sys/stat.h>
44#include <sys/ioctl.h>
45#include <fcntl.h>
46#include <linux/soundcard.h>
47#include <math.h>
48#include <unistd.h>
49#include <stdlib.h>
50#include "rme96xx.h"
51
52/*
53 remctrl.c
54 (C) 2000 Guenter Geiger <geiger@debian.org>
55 HP20020201 - Heiko Purnhagen <purnhage@tnt.uni-hannover.de>
56*/
57
58/* # define DEVICE_NAME "/dev/mixer" */
59# define DEVICE_NAME "/dev/mixer1"
60
61
62void usage(void)
63{
64 fprintf(stderr,"usage: rmectrl [/dev/mixer<n>] [command [options]]\n\n");
65 fprintf(stderr,"where command is one of:\n");
66 fprintf(stderr," help show this help\n");
67 fprintf(stderr," status show status bits\n");
68 fprintf(stderr," control show control bits\n");
69 fprintf(stderr," mix show mixer/offset status\n");
70 fprintf(stderr," master <n> set sync master\n");
71 fprintf(stderr," pro <n> set spdif out pro\n");
72 fprintf(stderr," emphasis <n> set spdif out emphasis\n");
73 fprintf(stderr," dolby <n> set spdif out no audio\n");
74 fprintf(stderr," optout <n> set spdif out optical\n");
75 fprintf(stderr," wordclock <n> set sync wordclock\n");
76 fprintf(stderr," spdifin <n> set spdif in (0=optical,1=coax,2=intern)\n");
77 fprintf(stderr," syncref <n> set sync source (0=ADAT1,1=ADAT2,2=ADAT3,3=SPDIF)\n");
78 fprintf(stderr," adat1cd <n> set ADAT1 on internal CD\n");
79 fprintf(stderr," offset <devnr> <in> <out> set dev (0..3) offset (0..25)\n");
80 exit(-1);
81}
82
83
84int main(int argc, char* argv[])
85{
86 int cards;
87 int ret;
88 int i;
89 double ft;
90 int fd, fdwr;
91 int param,orig;
92 rme_status_t stat;
93 rme_ctrl_t ctrl;
94 char *device;
95 int argidx;
96
97 if (argc < 2)
98 usage();
99
100 if (*argv[1]=='/') {
101 device = argv[1];
102 argidx = 2;
103 }
104 else {
105 device = DEVICE_NAME;
106 argidx = 1;
107 }
108
109 fprintf(stdout,"mixer device %s\n",device);
110 if ((fd = open(device,O_RDONLY)) < 0) {
111 fprintf(stdout,"opening device failed\n");
112 exit(-1);
113 }
114
115 if ((fdwr = open(device,O_WRONLY)) < 0) {
116 fprintf(stdout,"opening device failed\n");
117 exit(-1);
118 }
119
120 if (argc < argidx+1)
121 usage();
122
123 if (!strcmp(argv[argidx],"help"))
124 usage();
125 if (!strcmp(argv[argidx],"-h"))
126 usage();
127 if (!strcmp(argv[argidx],"--help"))
128 usage();
129
130 if (!strcmp(argv[argidx],"status")) {
131 ioctl(fd,SOUND_MIXER_PRIVATE2,&stat);
132 fprintf(stdout,"stat.irq %d\n",stat.irq);
133 fprintf(stdout,"stat.lockmask %d\n",stat.lockmask);
134 fprintf(stdout,"stat.sr48 %d\n",stat.sr48);
135 fprintf(stdout,"stat.wclock %d\n",stat.wclock);
136 fprintf(stdout,"stat.bufpoint %d\n",stat.bufpoint);
137 fprintf(stdout,"stat.syncmask %d\n",stat.syncmask);
138 fprintf(stdout,"stat.doublespeed %d\n",stat.doublespeed);
139 fprintf(stdout,"stat.tc_busy %d\n",stat.tc_busy);
140 fprintf(stdout,"stat.tc_out %d\n",stat.tc_out);
141 fprintf(stdout,"stat.crystalrate %d (0=64k 3=96k 4=88.2k 5=48k 6=44.1k 7=32k)\n",stat.crystalrate);
142 fprintf(stdout,"stat.spdif_error %d\n",stat.spdif_error);
143 fprintf(stdout,"stat.bufid %d\n",stat.bufid);
144 fprintf(stdout,"stat.tc_valid %d\n",stat.tc_valid);
145 exit (0);
146 }
147
148 if (!strcmp(argv[argidx],"control")) {
149 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
150 fprintf(stdout,"ctrl.start %d\n",ctrl.start);
151 fprintf(stdout,"ctrl.latency %d (0=64 .. 7=8192)\n",ctrl.latency);
152 fprintf(stdout,"ctrl.master %d\n",ctrl.master);
153 fprintf(stdout,"ctrl.ie %d\n",ctrl.ie);
154 fprintf(stdout,"ctrl.sr48 %d\n",ctrl.sr48);
155 fprintf(stdout,"ctrl.spare %d\n",ctrl.spare);
156 fprintf(stdout,"ctrl.doublespeed %d\n",ctrl.doublespeed);
157 fprintf(stdout,"ctrl.pro %d\n",ctrl.pro);
158 fprintf(stdout,"ctrl.emphasis %d\n",ctrl.emphasis);
159 fprintf(stdout,"ctrl.dolby %d\n",ctrl.dolby);
160 fprintf(stdout,"ctrl.opt_out %d\n",ctrl.opt_out);
161 fprintf(stdout,"ctrl.wordclock %d\n",ctrl.wordclock);
162 fprintf(stdout,"ctrl.spdif_in %d (0=optical,1=coax,2=intern)\n",ctrl.spdif_in);
163 fprintf(stdout,"ctrl.sync_ref %d (0=ADAT1,1=ADAT2,2=ADAT3,3=SPDIF)\n",ctrl.sync_ref);
164 fprintf(stdout,"ctrl.spdif_reset %d\n",ctrl.spdif_reset);
165 fprintf(stdout,"ctrl.spdif_select %d\n",ctrl.spdif_select);
166 fprintf(stdout,"ctrl.spdif_clock %d\n",ctrl.spdif_clock);
167 fprintf(stdout,"ctrl.spdif_write %d\n",ctrl.spdif_write);
168 fprintf(stdout,"ctrl.adat1_cd %d\n",ctrl.adat1_cd);
169 exit (0);
170 }
171
172 if (!strcmp(argv[argidx],"mix")) {
173 rme_mixer mix;
174 int i;
175
176 for (i=0; i<4; i++) {
177 mix.devnr = i;
178 ioctl(fd,SOUND_MIXER_PRIVATE1,&mix);
179 if (mix.devnr == i) {
180 fprintf(stdout,"devnr %d\n",mix.devnr);
181 fprintf(stdout,"mix.i_offset %2d (0-25)\n",mix.i_offset);
182 fprintf(stdout,"mix.o_offset %2d (0-25)\n",mix.o_offset);
183 }
184 }
185 exit (0);
186 }
187
188/* the control flags */
189
190 if (argc < argidx+2)
191 usage();
192
193 if (!strcmp(argv[argidx],"master")) {
194 int val = atoi(argv[argidx+1]);
195 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
196 printf("master = %d\n",val);
197 ctrl.master = val;
198 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
199 exit (0);
200 }
201
202 if (!strcmp(argv[argidx],"pro")) {
203 int val = atoi(argv[argidx+1]);
204 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
205 printf("pro = %d\n",val);
206 ctrl.pro = val;
207 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
208 exit (0);
209 }
210
211 if (!strcmp(argv[argidx],"emphasis")) {
212 int val = atoi(argv[argidx+1]);
213 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
214 printf("emphasis = %d\n",val);
215 ctrl.emphasis = val;
216 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
217 exit (0);
218 }
219
220 if (!strcmp(argv[argidx],"dolby")) {
221 int val = atoi(argv[argidx+1]);
222 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
223 printf("dolby = %d\n",val);
224 ctrl.dolby = val;
225 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
226 exit (0);
227 }
228
229 if (!strcmp(argv[argidx],"optout")) {
230 int val = atoi(argv[argidx+1]);
231 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
232 printf("optout = %d\n",val);
233 ctrl.opt_out = val;
234 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
235 exit (0);
236 }
237
238 if (!strcmp(argv[argidx],"wordclock")) {
239 int val = atoi(argv[argidx+1]);
240 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
241 printf("wordclock = %d\n",val);
242 ctrl.wordclock = val;
243 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
244 exit (0);
245 }
246
247 if (!strcmp(argv[argidx],"spdifin")) {
248 int val = atoi(argv[argidx+1]);
249 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
250 printf("spdifin = %d\n",val);
251 ctrl.spdif_in = val;
252 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
253 exit (0);
254 }
255
256 if (!strcmp(argv[argidx],"syncref")) {
257 int val = atoi(argv[argidx+1]);
258 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
259 printf("syncref = %d\n",val);
260 ctrl.sync_ref = val;
261 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
262 exit (0);
263 }
264
265 if (!strcmp(argv[argidx],"adat1cd")) {
266 int val = atoi(argv[argidx+1]);
267 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
268 printf("adat1cd = %d\n",val);
269 ctrl.adat1_cd = val;
270 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
271 exit (0);
272 }
273
274/* setting offset */
275
276 if (argc < argidx+4)
277 usage();
278
279 if (!strcmp(argv[argidx],"offset")) {
280 rme_mixer mix;
281
282 mix.devnr = atoi(argv[argidx+1]);
283
284 mix.i_offset = atoi(argv[argidx+2]);
285 mix.o_offset = atoi(argv[argidx+3]);
286 ioctl(fdwr,SOUND_MIXER_PRIVATE1,&mix);
287 fprintf(stdout,"devnr %d\n",mix.devnr);
288 fprintf(stdout,"mix.i_offset to %d\n",mix.i_offset);
289 fprintf(stdout,"mix.o_offset to %d\n",mix.o_offset);
290 exit (0);
291 }
292
293 usage();
294 exit (0); /* to avoid warning */
295}
296
297
298---------------------------- <snip> --------------------------------
299#!/usr/bin/wish
300
301# xrmectrl
302# (C) 2000 Guenter Geiger <geiger@debian.org>
303# HP20020201 - Heiko Purnhagen <purnhage@tnt.uni-hannover.de>
304
305#set defaults "-relief ridged"
306set CTRLPROG "./rmectrl"
307if {$argc} {
308 set CTRLPROG "$CTRLPROG $argv"
309}
310puts "CTRLPROG $CTRLPROG"
311
312frame .butts
313button .butts.exit -text "Exit" -command "exit" -relief ridge
314#button .butts.state -text "State" -command "get_all"
315
316pack .butts.exit -side left
317pack .butts -side bottom
318
319
320#
321# STATUS
322#
323
324frame .status
325
326# Sampling Rate
327
328frame .status.sr
329label .status.sr.text -text "Sampling Rate" -justify left
330radiobutton .status.sr.441 -selectcolor red -text "44.1 kHz" -width 10 -anchor nw -variable srate -value 44100 -font times
331radiobutton .status.sr.480 -selectcolor red -text "48 kHz" -width 10 -anchor nw -variable srate -value 48000 -font times
332radiobutton .status.sr.882 -selectcolor red -text "88.2 kHz" -width 10 -anchor nw -variable srate -value 88200 -font times
333radiobutton .status.sr.960 -selectcolor red -text "96 kHz" -width 10 -anchor nw -variable srate -value 96000 -font times
334
335pack .status.sr.text .status.sr.441 .status.sr.480 .status.sr.882 .status.sr.960 -side top -padx 3
336
337# Lock
338
339frame .status.lock
340label .status.lock.text -text "Lock" -justify left
341checkbutton .status.lock.adat1 -selectcolor red -text "ADAT1" -anchor nw -width 10 -variable adatlock1 -font times
342checkbutton .status.lock.adat2 -selectcolor red -text "ADAT2" -anchor nw -width 10 -variable adatlock2 -font times
343checkbutton .status.lock.adat3 -selectcolor red -text "ADAT3" -anchor nw -width 10 -variable adatlock3 -font times
344
345pack .status.lock.text .status.lock.adat1 .status.lock.adat2 .status.lock.adat3 -side top -padx 3
346
347# Sync
348
349frame .status.sync
350label .status.sync.text -text "Sync" -justify left
351checkbutton .status.sync.adat1 -selectcolor red -text "ADAT1" -anchor nw -width 10 -variable adatsync1 -font times
352checkbutton .status.sync.adat2 -selectcolor red -text "ADAT2" -anchor nw -width 10 -variable adatsync2 -font times
353checkbutton .status.sync.adat3 -selectcolor red -text "ADAT3" -anchor nw -width 10 -variable adatsync3 -font times
354
355pack .status.sync.text .status.sync.adat1 .status.sync.adat2 .status.sync.adat3 -side top -padx 3
356
357# Timecode
358
359frame .status.tc
360label .status.tc.text -text "Timecode" -justify left
361checkbutton .status.tc.busy -selectcolor red -text "busy" -anchor nw -width 10 -variable tcbusy -font times
362checkbutton .status.tc.out -selectcolor red -text "out" -anchor nw -width 10 -variable tcout -font times
363checkbutton .status.tc.valid -selectcolor red -text "valid" -anchor nw -width 10 -variable tcvalid -font times
364
365pack .status.tc.text .status.tc.busy .status.tc.out .status.tc.valid -side top -padx 3
366
367# SPDIF In
368
369frame .status.spdif
370label .status.spdif.text -text "SPDIF In" -justify left
371label .status.spdif.sr -text "--.- kHz" -anchor n -width 10 -font times
372checkbutton .status.spdif.error -selectcolor red -text "Input Lock" -anchor nw -width 10 -variable spdiferr -font times
373
374pack .status.spdif.text .status.spdif.sr .status.spdif.error -side top -padx 3
375
376pack .status.sr .status.lock .status.sync .status.tc .status.spdif -side left -fill x -anchor n -expand 1
377
378
379#
380# CONTROL
381#
382
383proc setprof {} {
384 global CTRLPROG
385 global spprof
386 exec $CTRLPROG pro $spprof
387}
388
389proc setemph {} {
390 global CTRLPROG
391 global spemph
392 exec $CTRLPROG emphasis $spemph
393}
394
395proc setnoaud {} {
396 global CTRLPROG
397 global spnoaud
398 exec $CTRLPROG dolby $spnoaud
399}
400
401proc setoptical {} {
402 global CTRLPROG
403 global spoptical
404 exec $CTRLPROG optout $spoptical
405}
406
407proc setspdifin {} {
408 global CTRLPROG
409 global spdifin
410 exec $CTRLPROG spdifin [expr $spdifin - 1]
411}
412
413proc setsyncsource {} {
414 global CTRLPROG
415 global syncsource
416 exec $CTRLPROG syncref [expr $syncsource -1]
417}
418
419
420proc setmaster {} {
421 global CTRLPROG
422 global master
423 exec $CTRLPROG master $master
424}
425
426proc setwordclock {} {
427 global CTRLPROG
428 global wordclock
429 exec $CTRLPROG wordclock $wordclock
430}
431
432proc setadat1cd {} {
433 global CTRLPROG
434 global adat1cd
435 exec $CTRLPROG adat1cd $adat1cd
436}
437
438
439frame .control
440
441# SPDIF In & SPDIF Out
442
443
444frame .control.spdif
445
446frame .control.spdif.in
447label .control.spdif.in.text -text "SPDIF In" -justify left
448radiobutton .control.spdif.in.input1 -text "Optical" -anchor nw -width 13 -variable spdifin -value 1 -command setspdifin -selectcolor blue -font times
449radiobutton .control.spdif.in.input2 -text "Coaxial" -anchor nw -width 13 -variable spdifin -value 2 -command setspdifin -selectcolor blue -font times
450radiobutton .control.spdif.in.input3 -text "Intern " -anchor nw -width 13 -variable spdifin -command setspdifin -value 3 -selectcolor blue -font times
451
452checkbutton .control.spdif.in.adat1cd -text "ADAT1 Intern" -anchor nw -width 13 -variable adat1cd -command setadat1cd -selectcolor blue -font times
453
454pack .control.spdif.in.text .control.spdif.in.input1 .control.spdif.in.input2 .control.spdif.in.input3 .control.spdif.in.adat1cd
455
456label .control.spdif.space
457
458frame .control.spdif.out
459label .control.spdif.out.text -text "SPDIF Out" -justify left
460checkbutton .control.spdif.out.pro -text "Professional" -anchor nw -width 13 -variable spprof -command setprof -selectcolor blue -font times
461checkbutton .control.spdif.out.emphasis -text "Emphasis" -anchor nw -width 13 -variable spemph -command setemph -selectcolor blue -font times
462checkbutton .control.spdif.out.dolby -text "NoAudio" -anchor nw -width 13 -variable spnoaud -command setnoaud -selectcolor blue -font times
463checkbutton .control.spdif.out.optout -text "Optical Out" -anchor nw -width 13 -variable spoptical -command setoptical -selectcolor blue -font times
464
465pack .control.spdif.out.optout .control.spdif.out.dolby .control.spdif.out.emphasis .control.spdif.out.pro .control.spdif.out.text -side bottom
466
467pack .control.spdif.in .control.spdif.space .control.spdif.out -side top -fill y -padx 3 -expand 1
468
469# Sync Mode & Sync Source
470
471frame .control.sync
472frame .control.sync.mode
473label .control.sync.mode.text -text "Sync Mode" -justify left
474checkbutton .control.sync.mode.master -text "Master" -anchor nw -width 13 -variable master -command setmaster -selectcolor blue -font times
475checkbutton .control.sync.mode.wc -text "Wordclock" -anchor nw -width 13 -variable wordclock -command setwordclock -selectcolor blue -font times
476
477pack .control.sync.mode.text .control.sync.mode.master .control.sync.mode.wc
478
479label .control.sync.space
480
481frame .control.sync.src
482label .control.sync.src.text -text "Sync Source" -justify left
483radiobutton .control.sync.src.input1 -text "ADAT1" -anchor nw -width 13 -variable syncsource -value 1 -command setsyncsource -selectcolor blue -font times
484radiobutton .control.sync.src.input2 -text "ADAT2" -anchor nw -width 13 -variable syncsource -value 2 -command setsyncsource -selectcolor blue -font times
485radiobutton .control.sync.src.input3 -text "ADAT3" -anchor nw -width 13 -variable syncsource -command setsyncsource -value 3 -selectcolor blue -font times
486radiobutton .control.sync.src.input4 -text "SPDIF" -anchor nw -width 13 -variable syncsource -command setsyncsource -value 4 -selectcolor blue -font times
487
488pack .control.sync.src.input4 .control.sync.src.input3 .control.sync.src.input2 .control.sync.src.input1 .control.sync.src.text -side bottom
489
490pack .control.sync.mode .control.sync.space .control.sync.src -side top -fill y -padx 3 -expand 1
491
492label .control.space -text "" -width 10
493
494# Buffer Size
495
496frame .control.buf
497label .control.buf.text -text "Buffer Size (Latency)" -justify left
498radiobutton .control.buf.b1 -selectcolor red -text "64 (1.5 ms)" -width 13 -anchor nw -variable ssrate -value 1 -font times
499radiobutton .control.buf.b2 -selectcolor red -text "128 (3 ms)" -width 13 -anchor nw -variable ssrate -value 2 -font times
500radiobutton .control.buf.b3 -selectcolor red -text "256 (6 ms)" -width 13 -anchor nw -variable ssrate -value 3 -font times
501radiobutton .control.buf.b4 -selectcolor red -text "512 (12 ms)" -width 13 -anchor nw -variable ssrate -value 4 -font times
502radiobutton .control.buf.b5 -selectcolor red -text "1024 (23 ms)" -width 13 -anchor nw -variable ssrate -value 5 -font times
503radiobutton .control.buf.b6 -selectcolor red -text "2048 (46 ms)" -width 13 -anchor nw -variable ssrate -value 6 -font times
504radiobutton .control.buf.b7 -selectcolor red -text "4096 (93 ms)" -width 13 -anchor nw -variable ssrate -value 7 -font times
505radiobutton .control.buf.b8 -selectcolor red -text "8192 (186 ms)" -width 13 -anchor nw -variable ssrate -value 8 -font times
506
507pack .control.buf.text .control.buf.b1 .control.buf.b2 .control.buf.b3 .control.buf.b4 .control.buf.b5 .control.buf.b6 .control.buf.b7 .control.buf.b8 -side top -padx 3
508
509# Offset
510
511frame .control.offset
512
513frame .control.offset.in
514label .control.offset.in.text -text "Offset In" -justify left
515label .control.offset.in.off0 -text "dev\#0: -" -anchor nw -width 10 -font times
516label .control.offset.in.off1 -text "dev\#1: -" -anchor nw -width 10 -font times
517label .control.offset.in.off2 -text "dev\#2: -" -anchor nw -width 10 -font times
518label .control.offset.in.off3 -text "dev\#3: -" -anchor nw -width 10 -font times
519
520pack .control.offset.in.text .control.offset.in.off0 .control.offset.in.off1 .control.offset.in.off2 .control.offset.in.off3
521
522label .control.offset.space
523
524frame .control.offset.out
525label .control.offset.out.text -text "Offset Out" -justify left
526label .control.offset.out.off0 -text "dev\#0: -" -anchor nw -width 10 -font times
527label .control.offset.out.off1 -text "dev\#1: -" -anchor nw -width 10 -font times
528label .control.offset.out.off2 -text "dev\#2: -" -anchor nw -width 10 -font times
529label .control.offset.out.off3 -text "dev\#3: -" -anchor nw -width 10 -font times
530
531pack .control.offset.out.off3 .control.offset.out.off2 .control.offset.out.off1 .control.offset.out.off0 .control.offset.out.text -side bottom
532
533pack .control.offset.in .control.offset.space .control.offset.out -side top -fill y -padx 3 -expand 1
534
535
536pack .control.spdif .control.sync .control.space .control.buf .control.offset -side left -fill both -anchor n -expand 1
537
538
539label .statustext -text Status -justify center -relief ridge
540label .controltext -text Control -justify center -relief ridge
541
542label .statusspace
543label .controlspace
544
545pack .statustext .status .statusspace .controltext .control .controlspace -side top -anchor nw -fill both -expand 1
546
547
548proc get_bit {output sstr} {
549 set idx1 [string last [concat $sstr 1] $output]
550 set idx1 [expr $idx1 != -1]
551 return $idx1
552}
553
554proc get_val {output sstr} {
555 set val [string wordend $output [string last $sstr $output]]
556 set val [string range $output $val [expr $val+1]]
557 return $val
558}
559
560proc get_val2 {output sstr} {
561 set val [string wordend $output [string first $sstr $output]]
562 set val [string range $output $val [expr $val+2]]
563 return $val
564}
565
566proc get_control {} {
567 global spprof
568 global spemph
569 global spnoaud
570 global spoptical
571 global spdifin
572 global ssrate
573 global master
574 global wordclock
575 global syncsource
576 global CTRLPROG
577
578 set f [open "| $CTRLPROG control" r+]
579 set ooo [read $f 1000]
580 close $f
581# puts $ooo
582
583 set spprof [ get_bit $ooo "pro"]
584 set spemph [ get_bit $ooo "emphasis"]
585 set spnoaud [ get_bit $ooo "dolby"]
586 set spoptical [ get_bit $ooo "opt_out"]
587 set spdifin [ expr [ get_val $ooo "spdif_in"] + 1]
588 set ssrate [ expr [ get_val $ooo "latency"] + 1]
589 set master [ expr [ get_val $ooo "master"]]
590 set wordclock [ expr [ get_val $ooo "wordclock"]]
591 set syncsource [ expr [ get_val $ooo "sync_ref"] + 1]
592}
593
594proc get_status {} {
595 global srate
596 global ctrlcom
597
598 global adatlock1
599 global adatlock2
600 global adatlock3
601
602 global adatsync1
603 global adatsync2
604 global adatsync3
605
606 global tcbusy
607 global tcout
608 global tcvalid
609
610 global spdiferr
611 global crystal
612 global .status.spdif.text
613 global CTRLPROG
614
615
616 set f [open "| $CTRLPROG status" r+]
617 set ooo [read $f 1000]
618 close $f
619# puts $ooo
620
621# samplerate
622
623 set idx1 [string last "sr48 1" $ooo]
624 set idx2 [string last "doublespeed 1" $ooo]
625 if {$idx1 >= 0} {
626 set fact1 48000
627 } else {
628 set fact1 44100
629 }
630
631 if {$idx2 >= 0} {
632 set fact2 2
633 } else {
634 set fact2 1
635 }
636 set srate [expr $fact1 * $fact2]
637# ADAT lock
638
639 set val [get_val $ooo lockmask]
640 set adatlock1 0
641 set adatlock2 0
642 set adatlock3 0
643 if {[expr $val & 1]} {
644 set adatlock3 1
645 }
646 if {[expr $val & 2]} {
647 set adatlock2 1
648 }
649 if {[expr $val & 4]} {
650 set adatlock1 1
651 }
652
653# ADAT sync
654 set val [get_val $ooo syncmask]
655 set adatsync1 0
656 set adatsync2 0
657 set adatsync3 0
658
659 if {[expr $val & 1]} {
660 set adatsync3 1
661 }
662 if {[expr $val & 2]} {
663 set adatsync2 1
664 }
665 if {[expr $val & 4]} {
666 set adatsync1 1
667 }
668
669# TC busy
670
671 set tcbusy [get_bit $ooo "busy"]
672 set tcout [get_bit $ooo "out"]
673 set tcvalid [get_bit $ooo "valid"]
674 set spdiferr [expr [get_bit $ooo "spdif_error"] == 0]
675
676# 000=64kHz, 100=88.2kHz, 011=96kHz
677# 111=32kHz, 110=44.1kHz, 101=48kHz
678
679 set val [get_val $ooo crystalrate]
680
681 set crystal "--.- kHz"
682 if {$val == 0} {
683 set crystal "64 kHz"
684 }
685 if {$val == 4} {
686 set crystal "88.2 kHz"
687 }
688 if {$val == 3} {
689 set crystal "96 kHz"
690 }
691 if {$val == 7} {
692 set crystal "32 kHz"
693 }
694 if {$val == 6} {
695 set crystal "44.1 kHz"
696 }
697 if {$val == 5} {
698 set crystal "48 kHz"
699 }
700 .status.spdif.sr configure -text $crystal
701}
702
703proc get_offset {} {
704 global inoffset
705 global outoffset
706 global CTRLPROG
707
708 set f [open "| $CTRLPROG mix" r+]
709 set ooo [read $f 1000]
710 close $f
711# puts $ooo
712
713 if { [string match "*devnr*" $ooo] } {
714 set ooo [string range $ooo [string wordend $ooo [string first devnr $ooo]] end]
715 set val [get_val2 $ooo i_offset]
716 .control.offset.in.off0 configure -text "dev\#0: $val"
717 set val [get_val2 $ooo o_offset]
718 .control.offset.out.off0 configure -text "dev\#0: $val"
719 } else {
720 .control.offset.in.off0 configure -text "dev\#0: -"
721 .control.offset.out.off0 configure -text "dev\#0: -"
722 }
723 if { [string match "*devnr*" $ooo] } {
724 set ooo [string range $ooo [string wordend $ooo [string first devnr $ooo]] end]
725 set val [get_val2 $ooo i_offset]
726 .control.offset.in.off1 configure -text "dev\#1: $val"
727 set val [get_val2 $ooo o_offset]
728 .control.offset.out.off1 configure -text "dev\#1: $val"
729 } else {
730 .control.offset.in.off1 configure -text "dev\#1: -"
731 .control.offset.out.off1 configure -text "dev\#1: -"
732 }
733 if { [string match "*devnr*" $ooo] } {
734 set ooo [string range $ooo [string wordend $ooo [string first devnr $ooo]] end]
735 set val [get_val2 $ooo i_offset]
736 .control.offset.in.off2 configure -text "dev\#2: $val"
737 set val [get_val2 $ooo o_offset]
738 .control.offset.out.off2 configure -text "dev\#2: $val"
739 } else {
740 .control.offset.in.off2 configure -text "dev\#2: -"
741 .control.offset.out.off2 configure -text "dev\#2: -"
742 }
743 if { [string match "*devnr*" $ooo] } {
744 set ooo [string range $ooo [string wordend $ooo [string first devnr $ooo]] end]
745 set val [get_val2 $ooo i_offset]
746 .control.offset.in.off3 configure -text "dev\#3: $val"
747 set val [get_val2 $ooo o_offset]
748 .control.offset.out.off3 configure -text "dev\#3: $val"
749 } else {
750 .control.offset.in.off3 configure -text "dev\#3: -"
751 .control.offset.out.off3 configure -text "dev\#3: -"
752 }
753}
754
755
756proc get_all {} {
757get_status
758get_control
759get_offset
760}
761
762# main
763while {1} {
764 after 200
765 get_all
766 update
767}
diff --git a/Documentation/sound/oss/solo1 b/Documentation/sound/oss/solo1
deleted file mode 100644
index 95c4c83422b3..000000000000
--- a/Documentation/sound/oss/solo1
+++ /dev/null
@@ -1,70 +0,0 @@
1Recording
2---------
3
4Recording does not work on the author's card, but there
5is at least one report of it working on later silicon.
6The chip behaves differently than described in the data sheet,
7likely due to a chip bug. Working around this would require
8the help of ESS (for example by publishing an errata sheet),
9but ESS has not done so far.
10
11Also, the chip only supports 24 bit addresses for recording,
12which means it cannot work on some Alpha mainboards.
13
14
15/proc/sound, /dev/sndstat
16-------------------------
17
18/proc/sound and /dev/sndstat is not supported by the
19driver. To find out whether the driver succeeded loading,
20check the kernel log (dmesg).
21
22
23ALaw/uLaw sample formats
24------------------------
25
26This driver does not support the ALaw/uLaw sample formats.
27ALaw is the default mode when opening a sound device
28using OSS/Free. The reason for the lack of support is
29that the hardware does not support these formats, and adding
30conversion routines to the kernel would lead to very ugly
31code in the presence of the mmap interface to the driver.
32And since xquake uses mmap, mmap is considered important :-)
33and no sane application uses ALaw/uLaw these days anyway.
34In short, playing a Sun .au file as follows:
35
36cat my_file.au > /dev/dsp
37
38does not work. Instead, you may use the play script from
39Chris Bagwell's sox-12.14 package (or later, available from the URL
40below) to play many different audio file formats.
41The script automatically determines the audio format
42and does do audio conversions if necessary.
43http://home.sprynet.com/sprynet/cbagwell/projects.html
44
45
46Blocking vs. nonblocking IO
47---------------------------
48
49Unlike OSS/Free this driver honours the O_NONBLOCK file flag
50not only during open, but also during read and write.
51This is an effort to make the sound driver interface more
52regular. Timidity has problems with this; a patch
53is available from http://www.ife.ee.ethz.ch/~sailer/linux/pciaudio.html.
54(Timidity patched will also run on OSS/Free).
55
56
57MIDI UART
58---------
59
60The driver supports a simple MIDI UART interface, with
61no ioctl's supported.
62
63
64MIDI synthesizer
65----------------
66
67The card has an OPL compatible FM synthesizer.
68
69Thomas Sailer
70t.sailer@alumni.ethz.ch
diff --git a/Documentation/sound/oss/sonicvibes b/Documentation/sound/oss/sonicvibes
deleted file mode 100644
index 84dee2e0b37d..000000000000
--- a/Documentation/sound/oss/sonicvibes
+++ /dev/null
@@ -1,81 +0,0 @@
1/proc/sound, /dev/sndstat
2-------------------------
3
4/proc/sound and /dev/sndstat is not supported by the
5driver. To find out whether the driver succeeded loading,
6check the kernel log (dmesg).
7
8
9ALaw/uLaw sample formats
10------------------------
11
12This driver does not support the ALaw/uLaw sample formats.
13ALaw is the default mode when opening a sound device
14using OSS/Free. The reason for the lack of support is
15that the hardware does not support these formats, and adding
16conversion routines to the kernel would lead to very ugly
17code in the presence of the mmap interface to the driver.
18And since xquake uses mmap, mmap is considered important :-)
19and no sane application uses ALaw/uLaw these days anyway.
20In short, playing a Sun .au file as follows:
21
22cat my_file.au > /dev/dsp
23
24does not work. Instead, you may use the play script from
25Chris Bagwell's sox-12.14 package (available from the URL
26below) to play many different audio file formats.
27The script automatically determines the audio format
28and does do audio conversions if necessary.
29http://home.sprynet.com/sprynet/cbagwell/projects.html
30
31
32Blocking vs. nonblocking IO
33---------------------------
34
35Unlike OSS/Free this driver honours the O_NONBLOCK file flag
36not only during open, but also during read and write.
37This is an effort to make the sound driver interface more
38regular. Timidity has problems with this; a patch
39is available from http://www.ife.ee.ethz.ch/~sailer/linux/pciaudio.html.
40(Timidity patched will also run on OSS/Free).
41
42
43MIDI UART
44---------
45
46The driver supports a simple MIDI UART interface, with
47no ioctl's supported.
48
49
50MIDI synthesizer
51----------------
52
53The card both has an OPL compatible FM synthesizer as well as
54a wavetable synthesizer.
55
56I haven't managed so far to get the OPL synth running.
57
58Using the wavetable synthesizer requires allocating
591-4MB of physically contiguous memory, which isn't possible
60currently on Linux without ugly hacks like the bigphysarea
61patch. Therefore, the driver doesn't support wavetable
62synthesis.
63
64
65No support from S3
66------------------
67
68I do not get any support from S3. Therefore, the driver
69still has many problems. For example, although the manual
70states that the chip should be able to access the sample
71buffer anywhere in 32bit address space, I haven't managed to
72get it working with buffers above 16M. Therefore, the card
73has the same disadvantages as ISA soundcards.
74
75Given that the card is also very noisy, and if you haven't
76already bought it, you should strongly opt for one of the
77comparatively priced Ensoniq products.
78
79
80Thomas Sailer
81t.sailer@alumni.ethz.ch