summaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-06-19 22:45:37 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-06-19 22:45:37 +0000
commit6d403070f28cd44860fdb3a53be5da0275c65cf4 (patch)
tree0d0e7fe7b5fb7568d19e11d7d862b77a866ce081 /Documentation
parentecf1bf5f6c2e668d03b0a9fb026db7aa41e292e1 (diff)
Merge with 2.4.0-test1-ac21 + pile of MIPS cleanups to make merging
possible. Chainsawed RM200 kernel to compile again. Jazz machine status unknown.
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/Changes1030
-rw-r--r--Documentation/Configure.help411
-rw-r--r--Documentation/DocBook/Makefile60
-rw-r--r--Documentation/DocBook/kernel-api.tmpl6
-rw-r--r--Documentation/DocBook/kernel-locking.tmpl80
-rw-r--r--Documentation/DocBook/mousedrivers.tmpl1022
-rw-r--r--Documentation/DocBook/via-audio.tmpl383
-rw-r--r--Documentation/arm/README43
-rw-r--r--Documentation/arm/SA1100/LART5
-rw-r--r--Documentation/filesystems/bfs.txt2
-rw-r--r--Documentation/filesystems/vfs.txt5
-rw-r--r--Documentation/floppy.txt9
-rw-r--r--Documentation/ioctl-number.txt2
-rw-r--r--Documentation/kernel-doc-nano-HOWTO.txt21
-rw-r--r--Documentation/kernel-parameters.txt148
-rw-r--r--Documentation/md.txt25
-rw-r--r--Documentation/networking/8139too.txt14
-rw-r--r--Documentation/networking/shaper.txt13
-rw-r--r--Documentation/networking/sk98lin.txt37
-rw-r--r--Documentation/networking/tlan.txt27
-rw-r--r--Documentation/networking/tulip.txt18
-rw-r--r--Documentation/networking/vortex.txt5
-rw-r--r--Documentation/parport.txt33
-rw-r--r--Documentation/powerpc/00-INDEX4
-rw-r--r--Documentation/powerpc/SBC8260_memory_mapping.txt197
-rw-r--r--Documentation/serial-console.txt23
-rw-r--r--Documentation/sound/Maestro2
-rw-r--r--Documentation/sound/README.ymfsb107
-rw-r--r--Documentation/sound/via82cxxx.txt37
-rw-r--r--Documentation/sysrq.txt4
-rw-r--r--Documentation/usb/input.txt34
-rw-r--r--Documentation/usb/ov511.txt5
-rw-r--r--Documentation/video4linux/bttv/CARDLIST2
-rw-r--r--Documentation/video4linux/bttv/Insmod-options44
-rw-r--r--Documentation/watchdog.txt24
35 files changed, 2765 insertions, 1117 deletions
diff --git a/Documentation/Changes b/Documentation/Changes
index 2c4699d67..0b9e549fc 100644
--- a/Documentation/Changes
+++ b/Documentation/Changes
@@ -2,7 +2,7 @@ Intro
=====
This document is designed to provide a list of the minimum levels of
-software necessary to run the 2.3 kernels, as well as provide brief
+software necessary to run the 2.4 kernels, as well as provide brief
instructions regarding any other "Gotchas" users may encounter when
trying life on the Bleeding Edge. If upgrading from a pre-2.2.x
kernel, please consult the Changes file included with 2.2.x kernels for
@@ -10,861 +10,327 @@ additional information; most of that information will not be repeated
here. Basically, this document assumes that your system is already
functional and running at least 2.2.x kernels.
- It is originally based on my "Changes" file for 2.2.x kernels and
-therefore owes credit to the same people as that file (Jared Mauch,
+This document is originally based on my "Changes" file for 2.0.x kernels
+and therefore owes credit to the same people as that file (Jared Mauch,
Axel Boldt, Alessandro Sigala, and countless other users all over the
-'net). Please feel free to submit changes, corrections, gripes,
-flames, money, etc. to me (kaboom@gatech.edu). If you do so, you don't
-need to bother doing so in the form of a diff, as this is generated by
-texinfo so a diff is useless anyway (though I can incorporate one by
-hand if you insist upon sending it that way ;-).
+'net).
- For those of you in Europe,
-http://www.datanet.hu/generations/linux/Changes2.html is an
-English-language HTML version.
+The latest revision of this document, in various formats, can always
+be found at http://cyberbuzz.gatech.edu/kaboom/linux/Changes-2.4/
+<http://cyberbuzz.gatech.edu/kaboom/linux/Changes-2.4/>.
- The most current version should always be available from
-http://cyberbuzz.gatech.edu/kaboom/linux/ as well.
+Feel free to translate this document. If you do so, please send me a
+URL to your translation for inclusion in future revisions of this
+document.
- Voir
-http://www.linux-france.com/article/sys/Changes-2.2/Changes-2.2.1.html
-pour la traduction français.
+Last updated: June 11, 2000
- Also, don't forget http://www.linuxhq.com/ for all your Linux kernel
-needs.
-
-Last updated: Feb 21, 2000
-Current Author: Chris Ricker (kaboom@gatech.edu or chris.ricker@m.cc.utah.edu).
+Chris Ricker (kaboom@gatech.edu or chris.ricker@genetics.utah.edu).
Current Minimal Requirements
-****************************
+============================
- Upgrade to at *least* these software revisions before thinking you've
+Upgrade to at *least* these software revisions before thinking you've
encountered a bug! If you're unsure what version you're currently
running, the suggested command should tell you.
-- Kernel modutils 2.3.10 ; insmod -V
-- Gnu C 2.7.2.3 ; gcc --version
-- Binutils 2.9.1.0.7 ; ld -v
-- Linux libc5 C Library 5.4.46 ; ls -l /lib/libc*
-- Linux libc6 C Library 2.0.7pre6 ; ls -l /lib/libc*
-- Dynamic Linker (ld.so) 1.9.9 ; ldd --version or ldd -v
-- Linux C++ Library 2.7.2.8 ; ls -l /usr/lib/libg++.so.*
-- Procps 1.2.9 ; ps --version
-- Procinfo 16 ; procinfo -v
-- Psmisc 17 ; pstree -V
-- Net-tools 1.50 ; hostname -V
-- Loadlin 1.6a
-- Sh-utils 1.16 ; basename --v
-- Autofs 3.1.1 ; automount --version
-- NFS (client) 2.2beta40 ; showmount --version
-- nfs-utils (server) 0.1.4
-- Bash 1.14.7 ; bash -version
-- Ncpfs 2.2.0 ; ncpmount -v
-- Pcmcia-cs 3.1.2 ; cardmgr -V
-- PPP 2.4.0b1 ; pppd --version
-- Util-linux 2.9i ; chsh -v
-- isdn4k-utils v3.1beta7 ; isdnctrl 2>&1|grep version
-
-Upgrade notes
-*************
-
-General Information
-===================
-
- To use System V shared memory, you have to mount the shm filesystem
-somewhere. You can do that automatically by adding this line to /etc/fstab:
-
-none /var/shm shm defaults 0 0
-
-Remember to create the mountpoint directory; it does not have to be /var/shm.
-
- <CTRL><ALT><DEL> now performs a cold reboot instead of a warm reboot
-for increased hardware compatibility. If you want a warm reboot and
-know it works on your hardware, add a "reboot=warm" command line option
-in LILO. A small number of machines need "reboot=bios" to reboot via
-the BIOS.
-
- Also, please remember that cua* devices are now obsolete. Switch to
-the corresponding ttyS* device instead (e.g., cua0 -> ttyS0, cua1 ->
-ttyS1, etc.).
-
- In addition, some software still works, but needs to be compiled
-against 2.2 headers for complete functionality. Fdutils binaries
-compiled under 2.0 or earlier kernels should be replaced with ones
-compiled under 2.2, for example.
-
- As of 2.1.115, support for the deprecated major 4 /dev/ttyp* devices
-was removed. If necessary (eg, you get "out of pty" error messages when
-you obviously are not out of pty's), create major 3 /dev/tty* and major
-2 /dev/pty* devices (see Documentation/devices.txt for more
-information). In general, you should make sure that your /dev
-directory is up-to-date if you are experiencing any problems.
-
- Optional support for Unix98 pty devices has also been added. If you
-want to use the Unix98 ptys, you should be running at least
-glibc-2.0.9x, and you must switch completely to Unix98 pty's. The
-general procedure for configuring Unix98 pty support is:
-
-- Compile your kernel with CONFIG_UNIX98_PTYS and CONFIG_DEVPTS_FS.
-- mknod /dev/ptmx c 5 2
- chmod 666 /dev/ptmx
- mkdir /dev/pts
-- Add to /etc/fstab:
-
- none /dev/pts devpts gid=5,mode=620 0 0
-
- (Note: gid=5 is applicable for Red Hat systems for which group "tty" has
- gid 5. Adjust according to your distribution. Use mode=600 if you want
- "mesg n" to be default.)
-- Mount /dev/pts
-
- Frame buffer consoles ("fbcon") are now in the kernel for all
-platforms, not just those non-Intel ones for which VGA text mode is
-impossible. VGAcon is still available for those who want it, but fbcon
-has the advantage of providing a uniform graphical subsystem across all
-Linux ports, and it displays a spiffy penguin logo on boot-up ;-). For
-more information, see the files in Documentation/fb/ ; you may also
-need to download the fbset utilities.
-
-Libc (libc5)
-============
-
- Linux-2.2 is ELF-only. You can still compile a.out apps if you
-really want, but your kernel must be compiled ELF. If you can't
-currently compile ELF, consult the ELF howto at
-http://metalab.unc.edu/mdw/HOWTO/ELF-HOWTO.html and upgrade your system
-accordingly.
-
- For modules to work, you need to be running libc-5.4.x or greater.
-Since updates to libc fix other problems as well (security flaws, for
-example) and since 5.4.7 is missing a few needed symbols, try to get
-the latest 5.4.x you can. Currently, libc-5.4.46 is the latest public
-release.
-
- If you upgrade to libc-5.4.x, you also have to upgrade your dynamic
-linker (ld.so) to at least 1.9.9, or all sorts of weirdness will
-happen. Actually, ld.so-1.8.2 and later will work, but 1.9.9 is widely
-available, so if you need to upgrade, use it. If you get a release
-later than 1.8.5, avoid 1.8.10 as it introduces a few bugs that are
-fixed in later releases. Please make sure you don't install ld.so-2.x
-unless you're running glibc2 / libc6.
-
- If you upgrade to libc-5.4.x, you may also need to upgrade ypbind if
-you're using NIS. For ypbind and glibc, you'll probably need the
-ypbind-3.3-glibc5.diff patch available in the same place as the ypbind
-source.
-
- If you upgrade to libc-5.4.46, please read and pay attention to its
-accompanying release notes. The section about it breaking make is not a
-joke.
-
-GNU libc (libc6)
-================
-
- Older versions of GNU libc (libc6) have a bug in the dynamic linker.
-/etc/ld.so.cache gets mapped into memory and is never unmapped. If one
-of your boot scripts calls ldconfig, /etc/ld.so.cache is deleted. Init,
-however, still references that file; as of 2.1.122, the kernel will
-consequently not be able to remount the root file system r/o at system
-shutdown. To fix this, upgrade to at least the pre6 release of GNU
-libc 2.0.7. As a temporary workaround, modify your boot scripts to do
-the following before calling ldconfig:
-
- ln -f /etc/ld.so.cache /etc/ld.so.cache.old
-
-Modules
-=======
-
- You need to upgrade to the latest version of modutils for the Linux
-2.3 kernel. This version can also be built to work with your 2.0 kernel.
-
- As of 2.1.90-pre1, kerneld has been replaced by a kernel thread,
-kmod. See Documentation/kmod.txt for more information. The main
-user-level change this requires is modification to your init scripts to
-check for the absence of /proc/sys/kernel/modprobe before starting
-kerneld.
-
-Binutils
-========
-
- If you upgrade binutils, please read its accompanying release notes
-to find out the proper way to upgrade it. No, the instruction to "rm
-`which encaps`" is not a joke.
-
- You must use binutils 2.9.1.0.7 or later. Latest release is 2.9.1.0.25.
-Beware that binutils 2.9.1 (note the absence of a suffix) from the FSF
-does not work. If you are upgrading from earlier versions, you should
-consider upgrading to the latest 2.9.5.0.x (beta) release.
-
-Gnu C
-=====
-
- You need at least GCC 2.7.2 to compile the kernel. If you're
-upgrading from an earlier release, you might as well get GCC 2.7.2.3,
-the latest stable public release. If you already have GCC 2.7.2 on
-your system, you don't have to upgrade just so the kernel will work
-(though feel free to upgrade if you want the gcc bug fixes).
-
- Note that the latest compilers (egcs, pgcc, gcc 2.8) may do Bad
-Things while compiling your kernel, particularly if absurd
-optimizations (like -O9) are used. Caveat emptor. Currently, the only
-C compiler available in a binary distribution is egcs. Version 1.0.3
-seems okay; if you have to have a binary, you may be successful using
-that. In general, however, gcc-2.7.2.3 is known to be stable, while
-egcs and others have not been as thoroughly tested yet.
-
-Networking Changes
+Again, keep in mind that this list assumes you are already
+functionally running a Linux 2.2 kernel. Also, not all tools are
+necessary on all systems; obviously, if you don't have any PCMCIA (PC
+Card) hardware, for example, you probably needn't concern yourself
+with pcmcia-cs.
+
+o Gnu C 2.7.2.3 # gcc --version
+o binutils 2.9.1.0.7 # ld -v
+o util-linux 2.10g # chsh -v
+o modutils 2.3.10 # insmod -V
+o e2fsprogs 1.18 # /sbin/tune2fs --version
+o pcmcia-cs 3.1.13 # cardmgr -V
+o PPP 2.4.0b1 # pppd --version
+o isdn4k-utils 3.1beta7 # isdnctrl 2>&1|grep version
+
+Kernel compilation
==================
- Please read Documentation/networking/routing.txt and
-Documentation/networking/policy-routing.txt for more information about
-changes in routing code. OSPF classes have been added, and interface
-routes are generated automatically.
-
- If for some reason you need to override this automatic default
-routing, you have to specify the complete route specification (netmask,
-device, etc.) for the kernel to accept it. Consequently, you need to
-either remove interface routes from your init scripts or add missing
-information to them if you need to replace the automatic routes.
-
- Also note that some routes, such as loopback routes, do not show up
-in some standard tools. Check in /proc/net/rt_local to verify their
-presence.
-
- To turn on IP forwarding, issue the following command: echo 1 >
-/proc/sys/net/ipv4/ip_forward
-
- Similar procedures are necessary to turn on other features. If
-something appears broken, check the /proc/sys/net/ipv4/ directory. "1"
-generally denotes enabled, while "0" generally denotes disabled.
-
- If you're experiencing reports of lots of network errors, chances
-are you need to upgrade to a more recent net-tools that understands the
-new /proc/net/dev format. This will also provide support for new
-features like IPv6.
-
- The IP firewalling and NAT code has been replaced again. The
-userspace tool `iptables' is distributed at:
- http://antarctica.penguincomputing.com/~netfilter/
- http://www.samba.org/netfilter/
- http://netfilter.kernelnotes.org
-
- DHCP clients for 2.0 do not work with the new networking code in the
-2.2 kernel. You will need to upgrade your dhcpcd / dhcpclient.
-
- In 2.0.x the kernel could be configured to drop source routed IP
-packets via a compile time configuration option. In 2.2.x, this has
-been replaced by a sysctl. See Documentation/networking/ip-sysctl.txt
-for more information.
-
-Memory
-======
+GCC
+---
- As of 2.1.41, the format of /proc/meminfo has changed. This broke
-many memory utils, which have to be upgraded. Get the new procps-1.2
-and you should be set.
+You will need at least gcc 2.7.2 to compile the kernel. You currently
+have several options for gcc-derived compilers: gcc 2.7.2.3, various
+versions of egcs, the new gcc 2.95 and upcoming gcc 3.0, and experimental
+compilers like pgcc. For absolute stability, it is still recommended
+that gcc 2.7.2.3 be used to compile your kernel. egcs 1.12 should also
+work. gcc 2.95 is known to have problems, and using pgcc for your kernel
+is just asking for trouble.
-Network File System
-===================
+In addition, please pay attention to compiler optimization. Anything
+greater than -O2 may not be wise. Similarly, if you choose to use gcc-2.95
+or derivatives, be sure not to use -fstrict-aliasing (which, depending on
+your version of gcc 2.95, may necessitate using -fno-strict-aliasing).
- The NFS code in the kernel is currently being revised, resulting in
-much-improved performance. Also, amd is being phased out in favor of
-the much better autofs. You'll also have to get the appropriate utils
-to use autofs as well as the new NFS utils. In addition, you have the
-choice of user-land NFS or kernel-level NFS (knfs).
-
-Util-linux (including mount)
-============================
-
- Among other changes made in the development of Linux kernel 2.2, the
-128 meg limit on IA32 swap partition sizes has been eliminated. To use
-larger swap spaces, you need the new mkswap found in util-linux. You
-also need to upgrade util-linux to get the latest version of mount.
-
- Partitions on 2048 byte sectored media (certain magneto opticals
-most prominently) were broken throughout the whole of 2.1 kernel
-series, meaning that you will be unable to use 2.1-partitioned media on
-Linux 2.2. This is not a 2.2 bug - 2.2 finally does the right thing!
-[If you have to interchange media between Linux 2.1 and 2.2, your best
-bet is to not use partitions at all but create the filesystem on the
-raw device (e.g. /dev/sda) instead. This is also known as the
-superfloppy format.]
-
- To properly create partitions on 2048 byte sectored media with Linux
-2.2, be sure to use no less than fdisk version 2.9i and invoke fdisk
-using '-b 2048' as an option.
-
-
-RPM
-===
-
- If you run Red Hat Linux or any other distribution that uses RPM,
-you need to upgrade RPM to a 2.5.x or later version.
-
-DOSEMU
-======
+Binutils
+--------
- A new "stable" version of DOSEMU is available for 2.2 kernels.
-Upgrade to 0.98.4 or later.
+Linux on IA/32 has recently switched from using as86 to using gas for
+assembling the 16-bit boot code, removing the need for as86 to compile
+your kernel. This change does, however, mean that you need a recent
+release of binutils.
-Loadlin
-=======
+If you can, upgrade to the latest 2.9.5 binutils release. Older
+releases such as 2.8, 2.8.xx, and the FSF's 2.9.1 should be avoided if
+at all possible. The later releases of 2.9.1.0.x (anything where x >= 7)
+can and do compile the kernel properly, but there are many benefits
+to upgrading to 2.9.5 if you're up to it.
- Linux 2.1.22 and later releases use a new method of memory size
-detection, requiring loadlin users to upgrade to loadlin-1.6a.
+System utils
+============
-Sh-utils
-========
+Architectural changes
+---------------------
- As of Linux-2.1.26, the Configure script ("make config") has been
-updated to be POSIX-compliant. As a result, your expr needs to be
-updated. Use sh-utils 1.16 or later.
+DevFS is now in the kernel. See Documentation/filesystems/devfs/* in
+the kernel source tree for all the gory details.
-Parallel Ports
-==============
+System V shared memory is now implemented via a virtual filesystem.
+You do not have to mount it to use it as long as you can live with the
+default maxima for shared memory and segments. If you wish to change
+these variables, you have to mount it with the options nr_blocks
+and/or nr_inodes. POSIX shared memory is also now implemented via a
+virtual filesystem. If you want to use it, you'll need to mount the
+filesystem. The recommended mount location is /dev/shm, and adding the
+following line to /etc/fstab should take care of things:
- As of 2.1.33, parallel port support can now by handled by the parport
-driver. Be aware that your parallel port may no longer be where you
-expect it; for example, LPT1 (under DOS) was sometimes /dev/lp1 in
-Linux, but will probably be /dev/lp0 with the new parport driver. If
-printing breaks with the new driver, try checking your lpd
-configuration. A good source of more information is the
-Documentation/parport.txt file included with the kernel.
+none /dev/shm shm defaults 0 0
-Setserial
-=========
+Remember to create the directory that you intend to mount shm on if
+necessary.
- If you experience random problems (stuck lines, lost characters,
-etc.) with serial lines under recent kernels, upgrading setserial
-should help.
+The Logical Volume Manager (LVM) is now in the kernel. If you want to
+use this, you'll need to install the necessary LVM toolset.
-Syncookies
-==========
+32-bit UID support is now in place. Have fun!
- When you build your kernel with Syncookie support
-(CONFIG_SYN_COOKIES) the syncookie code still defaults to off (unlike
-the 2.0.30+ behavior). You have to explicitly enable it by issuing the
-following command: echo 1 > /proc/sys/net/ipv4/tcp_syncookies
+Linux documentation for functions is transitioning to inline
+documentation via specially-formatted comments near their
+definitions in the source. These comments can be combined with the
+SGML templates in the Documentation/DocBook directory to make DocBook
+files, which can then be converted by DocBook stylesheets to PostScript,
+HTML, PDF files, and several other formats. In order to convert from
+DocBook format to a format of your choice, you'll need to install Jade as
+well as the desired DocBook stylesheets.
-Bash
-====
+Util-linux
+----------
- Old versions of Bash fail to properly handle symlinks, which can
-cause problems when compiling modules. Upgrade to at least 1.14 to fix
-this problem.
+New versions of util-linux provide *fdisk support for larger disks,
+support new options to mount, recognize more supported partition
+types, and similar goodies. You'll probably want to upgrade.
-Sysklogd
-========
+Ksymoops
+--------
- Older versions of sysklogd sometimes segfault under 2.2 kernels.
-Upgrading to the latest release fixes that problem as well as adding
-support for new features like system power-off on halt (with
-appropriate incantations of halt; see the man page) and automatic
-decoding of kernel oopses.
+If the unthinkable happens and your kernel oopses, you'll need a 2.3
+version of ksymoops to decode the report; see REPORTING-BUGS in the
+root of the Linux source for more information.
-Ncpfs
-=====
+Modutils
+--------
- To mount NetWare shares, you'll need to upgrade to a more recent
-version of the ncpfs utils.
+Upgrade to recent modutils to fix various outstanding bugs which are
+seen more frequently under 2.3.x, and to enable auto-loading of USB
+modules.
-SMBfs
-=====
+E2fsprogs
+---------
- To mount SMB (Samba / Windows) shares, you'll need to use the
-smbmount utility included with release 2.0 of Samba.
-Documentation/filesystems/smbfs.txt has more information about this.
-Note that smbmount must have been built against 2.2 headers to work
-with 2.2; if all else fails, recompile it and hope it works ;-). In
-addition, Mike Warfield has a script and some information at
-http://www.wittsend.com/mhw/smbmount.html that you will probably find
-useful.
+The latest version of e2fsprogs fixes several bugs in fsck and
+debugfs. Obviously, it's a good idea to upgrade.
Pcmcia-cs
-=========
-
- If you use pcmcia cards, you'll need to upgrade the daemon and
-support utils to the latest release of pcmcia-cs.
-
-PPP
-===
-
- The PPP driver has been restructured to support multilink and
-to enable it to operate over diverse kinds of media. Those of you
-using PPP networking will need to upgrade your pppd to at least
-version 2.4.0b1. See ftp://linuxcare.com.au/pub/ppp/ for the latest
-version.
+---------
- If you are not using devfs, you must make sure that the special
-device file /dev/ppp exists. It can be made by executing this command
-as root:
+PCMCIA (PC Card) support is now partially implemented in the main
+kernel source. Pay attention when you recompile your kernel ;-).
+Also, be sure to upgrade to the latest pcmcia-cs release.
- mknod /dev/ppp c 108 0
+Intel P6 microcode
+------------------
- If you have built ppp support as modules, you should put the lines
-below in your /etc/modules.conf file.
+A driver has been added to allow updating of Intel P6 microcode,
+accessible as both a devfs regular file and as a normal (misc)
+character device. If you are not using devfs you may need to:
- alias char-major-108 ppp_generic
- alias /dev/ppp ppp_generic
- alias tty-ldisc-3 ppp_async
- alias tty-ldisc-14 ppp_synctty
- alias ppp-compress-21 bsd_comp
- alias ppp-compress-24 ppp_deflate
- alias ppp-compress-26 ppp_deflate
+mkdir /dev/cpu
+mknod /dev/cpu/microcode c 10 184
+chmod 0644 /dev/cpu/microcode
-If you are using devfsd and you have ppp_generic as a module, put the
-following line in your /etc/devfsd.conf:
+as root before you can use this. You'll probably also want to
+get the user-space microcode_ctl utility to use with this.
- LOOKUP ppp MODLOAD
-
-iBCS
-====
-
- A new version of iBCS is necessary for 2.2 kernels.
-
-AppleTalk
-=========
-
- Use the Asun version of netatalk for AppleTalk support, as Umich's
-version is not compatible with 2.2 kernels.
-
-Psmisc
-======
-
- fuser, which comes with psmisc, reads /proc/*/fd/* to do its job.
-Upgrade psmisc if 2.2 changes to /proc broke the version you're using.
-
-PCI utils
-=========
-
- Linux PCI utils are available; these include lspci, which displays
-detailed information about your system's PCI devices (much more than
-the basic things in /proc/pci), and setpci, which allows you to read
-and write PCI configuration registers of your devices.
-
-Powertweak
-==========
-
- The PCI Bridge Optimization has been removed from the kernel. If you
-think your BIOS does a poor job when setting up your chipset, there
-is a utility called PowerTweak whose job is to tune chipset parameters.
-
-Xosview
-=======
-
- Changes to the /proc interface require a recent xosview.
-
-RealPlayer
+Networking
==========
- Current releases of Real Player 5.0 depend on a bug in the sound
-sub-system which is no longer there. Consequently, they don't work.
-Real is aware of the problem and should have an updated version of the
-software available shortly. In the mean time, you can always try
-backing up your copy of rvplayer, and then editing it by:
-
- dd if=/dev/zero of=rvplayer bs=1 count=1 seek=657586 conv=notrunc
- dd if=/dev/zero of=rvplayer bs=1 count=1 seek=665986 conv=notrunc
+General changes
+---------------
- If you're lucky, you'll then have sound....
+The IP firewalling and NAT code has been replaced again. The new
+netfilter software (including ipfwadm and ipchains backwards-
+compatible modules) is currently distributed separately.
- You may also need to edit it with
+If you have advanced network configuration needs, you should probably
+consider using the network tools from ip-route2.
- dd if=/dev/zero of=rvplayer bs=1 count=1 seek=702554 conv=notrunc
+PPP
+---
- as well. Alternately, download rpopen from
-http://onramp.i2k.com/~jeffd/rpopen/ and pre-load it before you run
-rvplayer (it's a shared object which blocks rvplayer from doing the
-NONBLOCKing open of /dev/dsp).
+The PPP driver has been restructured to support multilink and to
+enable it to operate over diverse media layers. If you use PPP,
+upgrade pppd to at least 2.4.0b1.
-Quotas
-======
+If you are not using devfs, you must have the device file /dev/ppp
+which can be made by:
- If you are using large quotas, you should upgrade your quota utils;
-newer versions count file sizes in blocks instead of bytes, providing
-an upper limit of terabytes instead of 4 GB.
+mknod /dev/ppp c 108 0
-Ping
-====
+as root.
- Most distributed ping clients are buggy. Get an updated one from the
-iputils package.
+If you build ppp support as modules, you will need the following in
+your /etc/modules.conf file:
-Patch
-=====
+alias char-major-108 ppp_generic
+alias /dev/ppp ppp_generic
+alias tty-ldisc-3 ppp_async
+alias tty-ldisc-14 ppp_synctty
+alias ppp-compress-21 bsd_comp
+alias ppp-compress-24 ppp_deflate
+alias ppp-compress-26 ppp_deflate
- Really old versions of patch cannot delete files. This can be a
-problem if you try to upgrade via patches. If, for example, you are
-unable to compile Linux 2.2, you may have an outdated version of patch.
-Upgrade, re-patch the kernel, and try again.
+If you use devfsd and build ppp support as modules, you will need
+the following in your /etc/devfsd.conf file:
-Process accounting
-==================
+LOOKUP PPP MODLOAD
- If you use process accounting, you need to recompile the package
-against 2.2 kernel includes for it to work properly. Furthermore, when
-you do so, watch out for a quirky configure script. Your generated
-config.h file needs to
+Isdn4k-utils
+------------
- #define HAVE_LINUX_ACCT_H
+Due to changes in the length of the phone number field, isdn4k-utils
+needs to be recompiled or (preferably) upgraded.
- but instead it often has
+Getting updated software
+========================
- /* #undef HAVE_LINUX_ACCT_H */
+Compilers
+*********
- so be sure to check that when you recompile.
+gcc 2.7.2.3
+-----------
+o ftp://ftp.gnu.org/gnu/gcc/gcc-2.7.2.3.tar.gz
+ <ftp://ftp.gnu.org/gnu/gcc/gcc-2.7.2.3.tar.gz>
+o ftp://metalab.unc.edu/pub/gnu/gcc-2.7.2.3.tar.gz
+ <ftp://metalab.unc.edu/pub/gnu/gcc-2.7.2.3.tar.gz>
-ISDN4Linux
-==========
-Since 2.3.27 here is a new length of the phonenumber field, old utils
-have to recompile, a upgrade to isdn4k-utils.v3.1beta7 or later is
-recomented.
-Older isdn4k-utils versions don't support EXTRAVERSION into kernel version
-string.
-
-Logical Volume Manager
-======================
-Since 2.3.47 the kernel contains the Logical Volume Manager aka LVM. To use it,
-you need to install the LVM tools. More information can be found at the home page
-of the LVM project at http://linux.msede.com/lvm/.
-
-Inline Documentation
-====================
-Many of the functions available for modules to use are now documented
-with specially-formatted comments near their definitions. These
-comments can be combined with the SGML templates in the
-Documentation/DocBook directory to make DocBook files, which can then
-be combined with DocBook stylesheets to make PostScript documents,
-HTML pages, PDF files, and so on. In order to convert from DocBook
-format to a format of your choice, you'll need to install jade, as
-well as some stylesheets.
-
-
-Where to get the files
-**********************
+egcs 1.12
+---------
+o ftp://ftp.varesearch.com/pub/support/hjl/gcc/egcs-1.1.2/egcs-1.1.2-glibc.x86.tar.bz2
+ <ftp://ftp.varesearch.com/pub/support/hjl/gcc/egcs-1.1.2/egcs-1.1.2-glibc.x86.tar.bz2>
+o ftp://ftp.varesearch.com/pub/support/hjl/gcc/egcs-1.1.2/egcs-1.1.2-libc5.x86.tar.bz2
+ <ftp://ftp.varesearch.com/pub/support/hjl/gcc/egcs-1.1.2/egcs-1.1.2-libc5.x86.tar.bz2>
+o ftp://ftp.varesearch.com/pub/support/hjl/gcc/egcs-1.1.2/egcs-1.1.2-alpha.tar.bz2
+ <ftp://ftp.varesearch.com/pub/support/hjl/gcc/egcs-1.1.2/egcs-1.1.2-alpha.tar.bz2>
Binutils
-========
-
-The 2.9.1.0.25 release:
-ftp://ftp.varesearch.com/pub/support/hjl/binutils/2.9.1/binutils-2.9.1.0.25-glibc.x86.tar.gz
-ftp://ftp.varesearch.com/pub/support/hjl/binutils/2.9.1/binutils-2.9.1.0.25.tar.gz
-Installation notes:
-ftp://ftp.varesearch.com/pub/support/hjl/binutils/2.9.1/release.binutils-2.9.1.0.25
-
-The 2.9.5.0.22 release:
-ftp://ftp.varesearch.com/pub/support/hjl/binutils/binutils-2.9.5.0.22.tar.bz2
-Installation notes:
-ftp://ftp.varesearch.com/pub/support/hjl/binutils/release.binutils-2.9.5.0.22
-
-Gnu C
-=====
-
-The egcs-1.0.3 release:
-ftp://tsx-11.mit.edu/pub/linux/packages/GCC/egcs-1.0.3-glibc.x86.tar.bz2
-ftp://tsx-11.mit.edu/pub/linux/packages/GCC/egcs-1.0.3-libc5.x86.tar.bz2
-ftp://metalab.unc.edu/pub/Linux/GCC/egcs-1.0.3-glibc.x86.tar.bz2
-ftp://metalab.unc.edu/pub/Linux/GCC/egcs-1.0.3-libc5.x86.tar.bz2
-Installation notes:
-ftp://tsx-11.mit.edu/pub/linux/packages/GCC/release.egcs-1.0.3
-ftp://metalab.unc.edu/pub/Linux/GCC/release.egcs-1.0.3
-
-Gnu C 2.7.2.3 source:
-ftp://ftp.gnu.org/gnu/gcc/gcc-2.7.2.3.tar.gz
-ftp://metalab.unc.edu/pub/gnu/gcc-2.7.2.3.tar.gz
-
-Linux C Library
-===============
-
-The (libc5) 5.4.46 release:
-ftp://tsx-11.mit.edu/pub/linux/packages/GCC/libc-5.4.46.bin.tar.gz
-ftp://metalab.unc.edu/pub/Linux/GCC/libc-5.4.46.bin.tar.gz
-Installation notes for 5.4.46:
-ftp://tsx-11.mit.edu/pub/linux/packages/GCC/release.libc-5.4.46
-ftp://metalab.unc.edu/pub/Linux/GCC/release.libc-5.4.46
-
-The (libc6) GNU libc 2.0.7pre6 release:
-ftp://ftp.kernel.org/pub/software/libs/glibc/glibc-2.0.7pre6.tar.gz
-ftp://ftp.kernel.org/pub/software/libs/glibc/glibc-2.0.7pre6.tar.bz2
-
-Linux C++ Library
-=================
-
-The 2.7.2 release:
-ftp://ftp.gnu.org/gnu/libg++/libg++-2.7.2.tar.gz
-
-Dynamic Linker
-==============
-
-The 1.9.9 release:
-ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.9.9.tar.gz
-ftp://metalab.unc.edu/pub/Linux/GCC/ld.so-1.9.9.tar.gz
-
-Modules utilities
-=================
-
-The 2.3.10 release:
-ftp://ftp.ocs.com.au/pub/modutils/v2.3/modutils-2.3.10.tar.gz
-
-Procps utilities
-================
-
-The 1.2 release:
-ftp://tsx-11.mit.edu/pub/linux/sources/usr.bin/procps-1.2.9.tar.gz
-ftp://metalab.unc.edu/pub/Linux/system/status/ps/procps-1.2.9.tgz
-
-Procinfo utilities
-==================
-
-The 16 release:
-ftp://ftp.cistron.nl/pub/people/svm/procinfo-16.tar.gz
+********
-Psmisc utilities
-================
+2.9.1 series
+------------
+o ftp://ftp.varesearch.com/pub/support/hjl/binutils/2.9.1/binutils-2.9.1.0.25.tar.gz
+ <ftp://ftp.varesearch.com/pub/support/hjl/binutils/2.9.1/binutils-2.9.1.0.25.tar.gz>
-The 17 release:
-ftp://lrcftp.epfl.ch/pub/linux/local/psmisc/psmisc-17.tar.gz
-ftp://metalab.unc.edu/pub/Linux/system/status/ps/psmisc-17.tar.gz
+2.9.5 series
+------------
+o ftp://ftp.varesearch.com/pub/support/hjl/binutils/binutils-2.9.5.0.29.tar.gz
+ <ftp://ftp.varesearch.com/pub/support/hjl/binutils/binutils-2.9.5.0.29.tar.bz2>
-RPM utilities
-=============
-
-The 2.5.1 source release:
-ftp://ftp.rpm.org/pub/rpm/dist/rpm-2.5.x/rpm-2.5.1-1.src.rpm
-ftp://ftp.rpm.org/pub/rpm/dist/rpm-2.5.x/rpm-2.5.1.tar.gz
-
-DOSEMU
-======
-
-The 0.98.1 release:
-ftp://tsx-11.mit.edu/pub/linux/ALPHA/dosemu/dosemu-0.98.4.tgz
-ftp://ftp.dosemu.org/dosemu/dosemu-0.98.4.tgz
-
-Loadlin
-=======
-
-The 1.6a release:
-ftp://ftp.suse.com/pub/loadlin/update-1.6a/loadlin.exe.gz
-ftp://elserv.ffm.fgan.de/pub/linux/loadlin-1.6/update-1.6a/loadlin.exe.gz
-
-Sh-utils
-========
-
-The 1.16 release:
-ftp://metalab.unc.edu/pub/gnu/sh-utils-1.16.tar.gz
-ftp://ftp.gnu.org/gnu/sh-utils/sh-utils-1.16.tar.gz
+System utilities
+****************
Util-linux
-==========
-
-The 2.9 release:
-ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/util-linux-2.9i.tar.gz
-
-Autofs
-======
-
-The 3.1.3 release:
-ftp://ftp.kernel.org/pub/linux/daemons/autofs/autofs-3.1.3.tar.gz
-
-NFS
-===
-
-The user-land 2.2beta40 release:
-ftp://ftp.mathematik.th-darmstadt.de/pub/linux/okir/dontuse/nfs-server-2.2beta40.tar.gz
-ftp://linux.nrao.edu/mirrors/fb0429.mathematik.th-darmstadt.de/pub/linux/okir/dontuse/nfs-server-2.2beta40.tar.gz
-
-The kernel-level nfs-utils-0.1.4 release:
-ftp://nfs.sourceforge.net/pub/nfs/nfs-utils-0.1.4.tar.gz
-
-Net-tools
-=========
-
-The 1.50 release:
-ftp://ftp.cs-ipv6.lancs.ac.uk/pub/Code/Linux/Net_Tools/net-tools-1.50.tar.gz
-http://www.tazenda.demon.co.uk/phil/net-tools/net-tools-1.50.tar.gz
-
-Ypbind
-======
-
-The 3.3 release:
-ftp://ftp.kernel.org/pub/linux/utils/net/NIS/ypbind-3.3.tar.gz
-
-Sysklogd
-========
-
-The 1.3-31 release:
-ftp://metalab.unc.edu/pub/Linux/system/daemons/sysklogd-1.3-31.tar.gz
-
-Bash
-====
-
-The 1.14.7 release:
-ftp://ftp.gnu.org/gnu/bash/bash-1.14.7.tar.gz
-
-The 2.02.1 release:
-ftp://ftp.gnu.org/gnu/bash/bash-2.02.1.tar.gz
-
-Ncpfs
-=====
-
-The 2.2.0 release:
-ftp://ftp.gwdg.de/pub/linux/misc/ncpfs/ncpfs-2.2.0.tgz
-
-SMBfs
-=====
-
-The 2.0.0 release of Samba:
-ftp://ftp.samba.org/pub/samba/samba-2.0.0.tar.gz
+----------
+o ftp://ftp.cwi.nl/pub/aeb/util-linux/util-linux-2.10g.tar.gz
+ <ftp://ftp.cwi.nl/pub/aeb/util-linux/util-linux-2.10g.tar.gz>
+
+Ksymoops
+--------
+o ftp://ftp.kernel.org/pub/linux/utils/kernel/ksymoops/v2.3
+ <ftp://ftp.kernel.org/pub/linux/utils/kernel/ksymoops/v2.3>
+
+Modutils
+--------
+o ftp://ftp.kernel.org/pub/linux/utils/kernel/modutils/v2.3/modutils-2.3.9.tar.gz
+ <ftp://ftp.kernel.org/pub/linux/utils/kernel/modutils/v2.3/modutils-2.3.9.tar.gz>
+
+E2fsprogs
+---------
+o http://web.mit.edu/tytso/www/linux/dist/e2fsprogs-1.18.tar.gz
+ <http://web.mit.edu/tytso/www/linux/dist/e2fsprogs-1.18.tar.gz>
+o http://web.mit.edu/tytso/www/linux/dist/e2fsprogs-1.18.src.rpm
+ <http://web.mit.edu/tytso/www/linux/dist/e2fsprogs-1.18.src.rpm>
+
+LVM toolset
+-----------
+o http://linux.msede.com/lvm/ <http://linux.msede.com/lvm/>
Pcmcia-cs
-=========
-
-The 3.1.2 release:
-ftp://sourceforge.org/pcmcia/pcmcia-cs-3.1.2.tar.gz
-
-Setserial
-=========
-
-The 2.15 release:
-ftp://tsx-11.mit.edu/pub/linux/sources/sbin/setserial-2.15.tar.gz
-ftp://metalab.unc.edu/pub/Linux/system/serial/setserial-2.15.tar.gz
-
-PPP
-===
-
-The 2.4.0b1 release:
-ftp://linuxcare.com.au/pub/ppp/ppp-2.4.0b1.tar.gz
-
-iptables
-=========
-
-The 1.1.0 release:
-http://antarctica.penguincomputing.com/~netfilter/iptables-1.1.0.tar.bz2
-http://www.samba.org/netfilter/iptables-1.1.0.tar.bz2
-http://netfilter.kernelnotes.org/iptables-1.1.0.tar.bz2
-
-IP Masq Adm
-===========
-
-The 0.4.2 release:
-http://juanjox.linuxhq.com/ipmasqadm-0.4.2.tar.gz
-
-DHCP clients
-============
-
-The 2.0b1p18 ISC dhcpclient release:
-ftp://ftp.isc.org/isc/dhcp/test/dhcp-2.0b1pl8.tar.gz
-
-The 1.3.17-pl2 PhysTech dhcpcd release:
-ftp://ftp.phystech.com/pub/dhcpcd-1.3.17-pl2.tar.gz
-
-iBCS
-====
-
-The 11/05/98 release:
-ftp://tsx-11.mit.edu/pub/linux/BETA/ibcs2/ibcs-2.1-981105-ALPHA.tar.gz
-
-Asun netatalk
-=============
-
-The 2.0a18.2 release:
-ftp://ftp.u.washington.edu/pub/user-supported/asun/netatalk-1.4b2+asun2.0a18.2.tar.gz
-
-Fbset
-=====
-
-The 11/04/98 release:
-http://www.cs.kuleuven.ac.be/~geert/bin/fbset-2.0-pre-19981104.tar.gz
-
-PCI utils
-=========
-
-The 2.1.5 release:
-ftp://atrey.karlin.mff.cuni.cz/pub/linux/pci/pciutils-2.1.5.tar.gz
-ftp://metalab.unc.edu/pub/Linux/hardware/pciutils-2.1.5.tar.gz
-
-Powertweak
-==========
-
-The 0.1.13 release:
-http://linux.powertweak.com/files/powertweak-0.1.13.tgz
-ftp://atrey.karlin.mff.cuni.cz/pub/linux/pci/powertweak/powertweak-0.1.13.tgz
-
-Xosview
-=======
-
-The 1.6.1 release:
-ftp://metalab.unc.edu/pub/Linux/system/status/xstatus/xosview-1.6.1.tar.gz
-
-Quota utils
-===========
-
-The 1.55 release:
-ftp://ftp.uk.linux.org/pub/linux/sct/quota/quota-1.55-10.i386.rpm
-ftp://ftp.uk.linux.org/pub/linux/sct/quota/quota-1.55-10.src.rpm
-
-IP utils
-========
-
-The 03/01/99 release:
-ftp://ftp.inr.ac.ru/ip-routing/iproute2-2.1.99-now-ss990301.tar.gz
-
-Patch
-=====
-
-The 2.5 release:
-ftp://ftp.gnu.org/gnu/patch/patch-2.5.tar.gz
-
-ISDN4Linux
-==========
-
-The v3.1beta7 release:
-ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/testing/isdn4k-utils.v3.1beta7.tar.gz
-
-Logical Volume Manager
-======================
-
-The 0.7 release:
-ftp://linux.msede.com/lvm/v0.7/lvm_0.7.tar.gz
+---------
+o ftp://sourceforge.org/pcmcia/pcmcia-cs-3.1.13.tar.gz
+ <ftp://sourceforge.org/pcmcia/pcmcia-cs-3.1.13.tar.gz>
Jade
-====
+----
+o ftp://ftp.jclark.com/pub/jade/jade-1.2.1.tar.gz
+ <ftp://ftp.jclark.com/pub/jade/jade-1.2.1.tar.gz>
-The 1.2.1 release:
-ftp://ftp.jclark.com/pub/jade/jade-1.2.1.tar.gz
+DocBook Stylesheets
+-------------------
+o http://nwalsh.com/docbook/dsssl/
+ <http://nwalsh.com/docbook/dsssl/>
-DSSSL Stylesheets for the DocBook DTD
-=====================================
+Intel P6 microcode
+------------------
+o http://www.urbanmyth.org/microcode/
+ <http://www.urbanmyth.org/microcode/>
-http://nwalsh.com/docbook/dsssl/
-
-
-Other Info
-==========
-
- Please remember that most of these utils are available on your
-favorite local linux mirror. If you can, please get them from a closer
-site before checking metalab or tsx-11.
-
- You may also want to check for updated versions of this software in a
-package format for the distribution you use.
-
- For those of you running Red Hat (or RPM on a different
-distribution), most of these are available in RPM format. Check around
-your favorite Red Hat mirror site before installing the non-RPM
-version. Remember, you might need to use the --force option to get the
-upgrade to install. ftp://contrib.redhat.com/ ,
-ftp://developer.redhat.com/ , or ftp://updates.redhat.com/ will have
-almost everything you need, and Red Hat 6.1 ships with most necessary
-software.
-
- Those of you running Debian (or a different distribution that
-supports .deb packages) can look in the "unstable" and
-"project/experimental" directories of your favorite Debian mirror. The
-Debian 2.2 release will ship with most packages you need as well.
-
-Please send info about any other packages that 2.3 "broke" or about any
-new features of 2.3 that require extra or new packages for use to Chris
-Ricker (kaboom@gatech.edu or chris.ricker@m.cc.utah.edu).
+Network
+*******
+PPP
+---
+o ftp://linuxcare.com.au/pub/ppp/ppp-2.4.0b1.tar.gz
+ <ftp://linuxcare.com.au/pub/ppp/ppp-2.4.0b1.tar.gz>
+
+Isdn4k-utils
+------------
+o ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/testing/isdn4k-
+ utils.v3.1beta7.tar.gz
+ <ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/testing/isdn4k-
+ utils.v3.1beta7.tar.gz>
+
+Netfilter
+---------
+o http://netfilter.filewatcher.org/iptables-1.1.0.tar.bz2
+ <http://netfilter.filewatcher.org/iptables-1.1.0.tar.bz2>
+o http://www.samba.org/netfilter/iptables-1.1.0.tar.bz2
+ <http://www.samba.org/netfilter/iptables-1.1.0.tar.bz2>
+o http://netfilter.kernelnotes.org/iptables-1.1.0.tar.bz2
+ <http://netfilter.kernelnotes.org/iptables-1.1.0.tar.bz2>
+
+Ip-route2
+---------
+o ftp://ftp.inr.ac.ru/ip-routing/iproute2-2.2.4-now-ss991023.tar.gz
+ <ftp://ftp.inr.ac.ru/ip-routing/iproute2-2.2.4-now-ss991023.tar.gz>
+
+Suggestions and corrections
+===========================
+
+Please feel free to submit changes, corrections, gripes, flames,
+money, etc. to me <chris.ricker@genetics.utah.edu>. Happy Linuxing!
diff --git a/Documentation/Configure.help b/Documentation/Configure.help
index 29ddc2a26..e13f5a71b 100644
--- a/Documentation/Configure.help
+++ b/Documentation/Configure.help
@@ -9,8 +9,8 @@
# http://www.linux.or.jp/JF/JFdocs/Configure.help/
# - Russian, by kaf@linux.nevod.perm.su, at
# http://nevod.perm.su/service/linux/doc/kernel/Configure.help
-# - French, by Tane Pierre (tanep@bigfoot.com), at
-# http://www.kernelfr.org
+# - French, by Pierre Tane (tanep@bigfoot.com), at
+# http://www.traduc.org/kernelfr
# - Spanish, by Carlos Perelló Marín (fperllo@ehome.encis.es), at
# http://visar.csustan.edu/~carlos/
# - Italian, by Alessandro Rubini (rubini@linux.it), at
@@ -125,7 +125,7 @@ CONFIG_X86_UP_IOAPIC
used on systems with several CPU's. If you have a single-CPU system
which uses APIC, you can say Y here to use it. If you say Y here
even though your machine doesn't have APIC, then the kernel will
- still run with now slowdown at all.
+ still run with no slowdown at all.
If you have system with several CPU's, you do not need to say Y
here: APIC will be used automatically.
@@ -161,17 +161,22 @@ CONFIG_LEDS
If you are compiling a kernel for a NetWinder or EBSA-285, you will
be able to select which LEDs are active using the options below. If
- you are compiling a kernel for the EBSA-110 however, the red LED
- will simply flash regularly to indicate that the system is still
- functional. It is safe to say Y here if you have a CATS system, but
- the driver will do nothing.
+ you are compiling a kernel for the EBSA-110 or the LART however, the
+ red LED will simply flash regularly to indicate that the system is
+ still functional. It is safe to say Y here if you have a CATS
+ system, but the driver will do nothing.
Timer LED
CONFIG_LEDS_TIMER
If you say Y here, one of the system LEDs (the green one on the
- NetWinder or the amber one on the EBSA285) will flash regularly to
- indicate that the system is still operational. This is mainly
- useful to kernel hackers who are debugging unstable kernels.
+ NetWinder, the amber one on the EBSA285, or the red one on the LART)
+ will flash regularly to indicate that the system is still
+ operational. This is mainly useful to kernel hackers who are
+ debugging unstable kernels.
+
+ The LART uses the same LED for both Timer LED and CPU usage LED
+ functions. You may choose to use both, but the Timer LED function
+ will overrule the CPU usage LED.
CPU usage LED
CONFIG_LEDS_CPU
@@ -179,6 +184,10 @@ CONFIG_LEDS_CPU
time indication of CPU usage, by lighting whenever the idle task
is not currently executing.
+ The LART uses the same LED for both Timer LED and CPU usage LED
+ functions. You may choose to use both, but the Timer LED function
+ will overrule the CPU usage LED.
+
Kernel FP software completion (EXPERIMENTAL)
CONFIG_MATHEMU
This option is required for IEEE compliant floating point arithmetic
@@ -358,7 +367,7 @@ CONFIG_IDE
Western Digital and Compaq Computer in 1984. It was then named
ST506. Quite a number of disks use the IDE interface.
- AT Attachment (ATA) is a subset of the IDE specifications.
+ AT Attachment (ATA) is the superset of the IDE specifications.
ST506 was also called ATA-1.
Fast-IDE is ATA-2 (also named Fast ATA), Enhanced IDE (EIDE) is
@@ -699,6 +708,14 @@ CONFIG_IDEDMA_PCI_AUTO
It is normally safe to answer Y to this question unless your
motherboard uses a VIA VP2 chipset, in which case you should say N.
+IGNORE word93 Validation BITS
+CONFIG_IDEDMA_IVB
+ Since various rules were applied and created ... et al. as it relates
+ the detection of vaild cable signals. This is a result of unclear terms
+ in ATA-4 and ATA-5 standards.
+
+ It is normally safe to answer Y; however, the default is N.
+
Various ATA, Work(s) In Progress (EXPERIMENTAL)
CONFIG_IDEDMA_PCI_WIP
If you enable this you will be able to use and test highly
@@ -733,7 +750,7 @@ CONFIG_BLK_DEV_AEC62XX
If you say Y here, then say Y to "Use DMA by default when available" as
well.
-AEC62XX Tuning support (WIP)
+AEC62XX Tuning support
CONFIG_AEC62XX_TUNING
Please read the comments at the top of drivers/ide/aec62xx.c
If unsure, say N.
@@ -763,7 +780,7 @@ CONFIG_WDC_ALI15X3
SAY NO!
-AMD7409 chipset support (EXPERIMENTAL)
+AMD7409 chipset support
CONFIG_BLK_DEV_AMD7409
This driver ensures (U)DMA support for the AMD756 Viper chipset.
@@ -784,12 +801,7 @@ CONFIG_BLK_DEV_CMD64X
Say Y here if you have an IDE controller which uses any of these
chipsets: CMD643, CMD646, or CMD648.
-CMD64X chipset RAID support (WIP)
-CONFIG_CMD64X_RAID
- Work in progress for hardware raid ata-33/66..........rev 7 minimum.
- Say N for now.
-
-CY82C693 chipset support (EXPERIMENTAL)
+CY82C693 chipset support
CONFIG_BLK_DEV_CY82C693
This driver adds detection and support for the CY82C693 chipset
used on Digital's PC-Alpha 164SX boards.
@@ -826,11 +838,13 @@ CONFIG_HPT34X_AUTODMA
HPT366 chipset support
CONFIG_BLK_DEV_HPT366
HPT366 is an Ultra DMA chipset for ATA-66.
-
+ HPT368 is an Ultra DMA chipset for ATA-66 RAID Based.
+ HPT370 is an Ultra DMA chipset for ATA-100.
+
This driver adds up to 4 more EIDE devices sharing a single
interrupt.
- The HPT366 chipset in its current form is non-bootable. One solution
+ The HPT366 chipset in its current form is bootable. One solution
for this problem are special LILO commands for redirecting the
reference to device 0x80. The other solution is to say Y to "Boot
off-board chipsets first support" (CONFIG_BLK_DEV_OFFBOARD) unless
@@ -842,15 +856,6 @@ CONFIG_BLK_DEV_HPT366
ide-probe at boot. It is reported to support DVD II drives, by the
manufacturer.
-HPT366 Fast Interrupts (WIP)
-CONFIG_HPT366_FIP
- If unsure, say N.
-
-HPT366 mode three unsupported (EXPERIMENTAL) (WIP)
-CONFIG_HPT366_MODE3
- This is an undocumented mode that the HA366 can default to in many
- cases. If unsure, say N.
-
NS87415 support (EXPERIMENTAL)
CONFIG_BLK_DEV_NS87415
This driver adds detection and support for the NS87415 chip
@@ -877,7 +882,7 @@ CONFIG_BLK_DEV_PIIX
If unsure, say N.
-PIIXn Tuning support (EXPERIMENTAL)
+PIIXn Tuning support
CONFIG_PIIX_TUNING
This driver extension adds DMA mode setting and tuning for all PIIX
IDE controllers by Intel. Since the BIOS can sometimes improperly
@@ -889,9 +894,11 @@ CONFIG_PIIX_TUNING
If unsure, say N.
-PROMISE PDC20246/PDC20262 support
+PROMISE PDC20246/PDC20262/PDC20267 support
CONFIG_BLK_DEV_PDC202XX
Promise Ultra33 or PDC20246
+ Promise Ultra66 or PDC20262
+ Promise Ultra100 or PDC20267
This driver adds up to 4 more EIDE devices sharing a single
interrupt. This add-on card is a bootable PCI UDMA controller. Since
@@ -902,14 +909,6 @@ CONFIG_BLK_DEV_PDC202XX
for more than one card. This card may require that you say Y to
"Special UDMA Feature (EXPERIMENTAL)".
- Promise Ultra66 or PDC20262
-
- This driver adds up to 4 more EIDE devices sharing a single
- interrupt. This add-on card is a bootable PCI UDMA ATA-66
- controller. The driver attempts to dynamic tuning of the chipset at
- boot-time for max-speed. Note tested limits are UDMA-2. Ultra66 BIOS
- 1.11 or newer required.
-
If you say Y here, you need to say Y to "Use DMA by default when
available" as well.
@@ -919,21 +918,16 @@ CONFIG_BLK_DEV_PDC202XX
Special UDMA Feature (EXPERIMENTAL)
CONFIG_PDC202XX_BURST
- For PDC20246 and PDC20262 Ultra DMA chipsets. Designed originally
- for PDC20246/Ultra33 that has BIOS setup failures when using 3 or
- more cards.
+ For PDC20246, PDC20262 and PDC20267 Ultra DMA chipsets. Designed
+ originally for PDC20246/Ultra33 that has BIOS setup failures when
+ using 3 or more cards.
+
+ Unknown for PDC20267 Ultra DMA 100.
Please read the comments at the top of drivers/ide/pdc202xx.c
If unsure, say N.
-Special Mode Feature (WIP)
-CONFIG_PDC202XX_MASTER
- For PDC20246 and PDC20262 Ultra DMA chipsets. This is reserved for
- possible Hardware RAID 0,1 for the FastTrak Series.
-
- Say N.
-
SiS5513 chipset support
CONFIG_BLK_DEV_SIS5513
This driver ensures (U)DMA support for SIS5513 chipset based
@@ -958,7 +952,7 @@ CONFIG_BLK_DEV_TRM290
needed for further tweaking and development.
Please read the comments at the top of drivers/ide/trm290.c.
-VIA82CXXX chipset support (EXPERIMENTAL)
+VIA82CXXX chipset support
CONFIG_BLK_DEV_VIA82CXXX
This allows you to to configure your chipset for a better use while
running (U)DMA: it will allow you to enable efficiently the second
@@ -1551,11 +1545,19 @@ CONFIG_MD_RAID5
If unsure, say Y.
-Boot support (linear, striped)
+RAID Boot support
CONFIG_MD_BOOT
- To boot with an initial linear or striped md device you have to
- answer Y here. For lilo and loadlin options see the file
- Documentation/md.txt.
+ To boot with an initial raid volume (any type) you can select
+ autodetect, or answer Y here and appropriate options to the kernel
+ at boot time.
+ For lilo and loadlin options see the file Documentation/md.txt.
+
+RAID AutoDetect support
+CONFIG_AUTODETECT_RAID
+ An alternative to "Raid Boot support" is autodetect support.
+ With this selected, any partitons of type 0xFD will be considered for
+ inclusion in a RAID array. Information in the RAID-superblock on
+ the partition will determine how it is included.
Support for Acer PICA 1 chipset
CONFIG_ACER_PICA_61
@@ -1791,7 +1793,8 @@ CONFIG_NETFILTER
Various modules exist for netfilter which replace the previous
masquerading (ipmasqadm), packet filtering (ipchains), transparent
proxying, and portforwarding mechanisms. Please see
- Documentation/Changes for the location of these packages.
+ Documentation/Changes under "iptables" for the location of these
+ packages.
Make sure to say N to "Fast switching" below if you intend to say Y
here, as Fast switching currently bypasses netfilter.
@@ -2099,6 +2102,8 @@ CONFIG_ALPHA_GENERIC
SX164 AlphaPC164-SX
Sable AS 2000, AS 2100
Takara Takara
+ Titan Privateer
+ Wildfire AlphaServer GS 40/80/160/320
If you don't know what to do, choose "generic".
@@ -2581,11 +2586,10 @@ CONFIG_SYSVIPC
http://www.linuxdoc.org/docs.html#guide .
Shared memory is now implemented using a new (minimal) virtual file
- system, which you need to mount before programs can use shared
- memory. To do this automatically at system startup just add the
+ system. To mount it automatically at system startup just add the
following line to your /etc/fstab:
- none /var/shm shm defaults 0 0
+ none /dev/shm shm defaults 0 0
Saying Y here enlarges your kernel by about 18 KB. Just say Y.
@@ -2739,25 +2743,27 @@ CONFIG_M386
all x86 CPU types (albeit not optimally fast), you can specify
"386" here.
- If you specify one of "486" or "586" or "Pentium" or "PPro" or
- "Athlon", then the kernel will not necessarily run on earlier
- architectures (e.g. a Pentium optimized kernel will run on a PPro,
- but not necessarily on a i486).
+ The kernel will not necessarily run on earlier architectures than
+ the one you have chosen, e.g. a Pentium optimized kernel will run on
+ a PPro, but not necessarily on a i486.
Here are the settings recommended for greatest speed:
- "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI
- 486DLC/DLC2 and UMC 486SX-S. Only "386" kernels will run on a 386
- class machine.
+ 486DLC/DLC2, UMC 486SX-S and NexGen Nx586. Only "386" kernels will
+ run on a 386 class machine.
- "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or
- SL/SLC/SLC2/SLC3/SX/SX2, AMD/Cyrix 5x86, NexGen Nx586 and
- UMC U5D or U5S.
+ SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
- "586" for generic Pentium CPUs, possibly lacking the TSC
(time stamp counter) register.
- - "Pentium" for the Intel Pentium/Pentium MMX, and AMD K5.
- - "PPro" for the Cyrix/IBM/National Semiconductor 6x86MX, MII and
- Intel Pentium Pro/Celeron/Pentium II/Pentium III.
- - "K6/II/III" for the AMD K6, K6-II and K6-III (aka K6-3D).
+ - "Pentium" for the Intel Pentium/Pentium MMX.
+ - "Pentium-Pro" for the Intel Pentium Pro/Celeron/Pentium II.
+ - "Pentium-III" for the Intel Pentium III.
+ - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
- "Athlon" for the AMD Athlon (K7).
+ - "Crusoe" for the Transmeta Crusoe series.
+ - "Winchip-C6" for original IDT Winchip.
+ - "Winchip-2" for IDT Winchip 2.
+ - "Winchip-2A/3" for IDT Winchips with 3dNow! capabilities.
If you don't know what to do, choose "386".
@@ -3077,7 +3083,7 @@ CONFIG_FB_COMPAT_XPMAC
(XF68_FBDev).
HGA monochrome support (EXPERIMENTAL)
-CONFIG_FBCON_HGA
+CONFIG_FB_HGA
Say Y here if you have a Hercules mono graphics card.
This driver is also available as a module ( = code which can be
@@ -3345,6 +3351,11 @@ CONFIG_FBCON_MAC
bits per pixel packed pixels on Mac. It supports variable font
widths for low resolution screens.
+HGA monochrome support (EXPERIMENTAL)
+CONFIG_FBCON_HGA
+ This is the low level frame buffer console driver for Hercules mono
+ graphics cards.
+
VGA characters/attributes support
CONFIG_FBCON_VGA
This is the low level frame buffer console driver for VGA text mode;
@@ -4619,11 +4630,6 @@ CONFIG_NETLINK
addresses on the local network) small. The ethertap device, which
lets user space programs read and write raw Ethernet frames, also
needs the network link driver.
-
- This driver is also available as a module called netlink_dev.o ( =
- code which can be inserted in and removed from the running kernel
- whenever you want). If you want to compile it as a module, say M
- here and read Documentation/modules.txt.
If unsure, say Y.
@@ -5626,8 +5632,8 @@ CONFIG_SCSI_SYM53C8XX
synchronous data transfers frequency
CONFIG_SCSI_NCR53C8XX_SYNC
- The SCSI Parallel Interface-2 Standard defines 4 classes of transfer
- rates: FAST-5, FAST-10, FAST-20 and FAST-40. The numbers are
+ The SCSI Parallel Interface-2 Standard defines 5 classes of transfer
+ rates: FAST-5, FAST-10, FAST-20, FAST-40 and FAST-80. The numbers are
respectively the maximum data transfer rates in mega-transfers per
second for each class. For example, a FAST-20 Wide 16 device is able
to transfer data at 20 million 16 bit packets per second for a total
@@ -5635,9 +5641,9 @@ CONFIG_SCSI_NCR53C8XX_SYNC
You may specify 0 if you want to only use asynchronous data
transfers. This is the safest and slowest option. Otherwise, specify
- a value between 5 and 40, depending on the capability of your SCSI
+ a value between 5 and 80, depending on the capability of your SCSI
controller. The higher the number, the faster the data transfer.
- Note that 40 should normally be ok since the driver decreases the
+ Note that 80 should normally be ok since the driver decreases the
value automatically according to the controller's capabilities.
Your answer to this question is ignored for controllers with NVRAM,
@@ -5648,7 +5654,7 @@ CONFIG_SCSI_NCR53C8XX_SYNC
second).
The normal answer therefore is not to go with the default but to
- select the maximum value 40 allowing the driver to use the maximum
+ select the maximum value 80 allowing the driver to use the maximum
value supported by each controller. If this causes problems with
your SCSI devices, you should come back and decrease the value.
@@ -8537,9 +8543,10 @@ CONFIG_FMV18X
EtherExpress PRO support
CONFIG_EEXPRESS_PRO
- If you have a network (Ethernet) card of this type, say Y. Note
- however that the EtherExpress PRO/100 Ethernet card has its own
- separate driver. Please read the Ethernet-HOWTO, available from
+ If you have a network (Ethernet) card of this type, say Y. This
+ driver supports intel i82595{FX,TX} based boards. Note however
+ that the EtherExpress PRO/100 Ethernet card has its own separate
+ driver. Please read the Ethernet-HOWTO, available from
http://www.linuxdoc.org/docs.html#howto .
This driver is also available as a module ( = code which can be
@@ -8651,6 +8658,22 @@ CONFIG_SKMC
module, say M here and read Documentation/modules.txt as well as
Documentation/networking/net-modules.txt.
+IBM LAN Adapter/A support
+CONFIG_IBMLANA
+ This is a Micro Channel ethernet adapter. You need to set CONFIG_MCA
+ to use this driver. It is both available as an in-kernel driver and
+ as a module ( = code which can be inserted in and removed from the
+ running kernel whenever you want). If you want to compile it as a module,
+ say M here and read Documentation/modules.txt as well as
+ Documentation/networking/net-modules.txt. If you plan to use more than
+ one network card under linux, read the Multiple-Ethernet-mini-HOWTO,
+ available from sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini. The only
+ currently supported card is the IBM LAN Adapter/A for Ethernet. It will
+ both support 16K and 32K memory windows, however a 32K window gives
+ a better security against packet losses. Usage of multiple boards with
+ this driver should be possible, but has not been tested up to now due
+ to lack of hardware.
+
EISA, VLB, PCI and on board controllers
CONFIG_NET_PCI
This is another class of network cards which attach directly to the
@@ -9594,7 +9617,7 @@ CONFIG_USB_OHCI
USB Human Interface Device (HID) support
CONFIG_USB_HID
Say Y here if you want to connect keyboards, mice, joysticks,
- graphic tablets, UPS's or any other HID based devices to your
+ graphic tablets, or any other HID based devices to your
computer via USB. More information is available:
Documentation/usb/input.txt.
@@ -9626,16 +9649,16 @@ CONFIG_USB_MOUSE
This code is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
- The module will be called usbmouse.o. If you want to compile it as a
- module, say M here and read Documentation/modules.txt.
+ The module will be called usbmouse.o. If you want to compile it as
+ a module, say M here and read Documentation/modules.txt.
If unsure, say N.
Wacom Intuos/Graphire tablet support
CONFIG_USB_WACOM
- Say Y here if you want to use the USB version of the Wacom Intuos or
- Graphire tablet. Make sure to say Y to "Mouse support"
- (CONFIG_INPUT_MOUSEDEV) and "Event interface support"
+ Say Y here if you want to use the USB version of the Wacom Intuos
+ or Graphire tablet. Make sure to say Y to "Mouse support"
+ (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
(CONFIG_INPUT_EVDEV) as well.
This driver is also available as a module ( = code which can be
@@ -9646,7 +9669,7 @@ CONFIG_USB_WACOM
Logitech WingMan Force joystick support
CONFIG_USB_WMFORCE
Say Y here if you want to use the Logitech WingMan Force with Linux
- on the USB port. No force-feedback support yet, but other than that,
+ on the USB port. No force-feedback support yet, but other than that
it should work like a normal joystick.
This driver is also available as a module ( = code which can be
@@ -9667,31 +9690,35 @@ CONFIG_INPUT_KEYBDEV
Mouse support
CONFIG_INPUT_MOUSEDEV
Say Y here if you want your USB HID mouse to be accessible as
- misc devices 32+ under /dev/, as an emulated PS/2 mouse. That way,
- all user space programs will be able to use your mouse.
+ char devices 13:32+ - /dev/input/mouseX and 13:63 - /dev/input/mice
+ as an emulated PS/2 mouse. That way, all user space programs will
+ be able to use your mouse.
If unsure, say Y.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
- The module will be called mousedev.o. If you want to compile it as a
- module, say M here and read Documentation/modules.txt.
+ The module will be called mousedev.o. If you want to compile it as
+ a module, say M here and read Documentation/modules.txt.
Horizontal screen resolution
CONFIG_INPUT_MOUSEDEV_SCREEN_X
- For the mouse emulation to be correct, the mousedev driver needs to
- know the screen resolution you are using (in the X window system).
+ If you're using a digitizer, or a graphic tablet, and want to use
+ it as a mouse then the mousedev driver needs to know the X window
+ screen resolution you are using to correctly scale the data. If
+ you're not using a digitizer, this value is ignored.
Vertical screen resolution
CONFIG_INPUT_MOUSEDEV_SCREEN_Y
- For the mouse emulation to be correct, the mousedev driver needs to
- know the screen resolution you are using (in the X window system).
+ If you're using a digitizer, or a graphic tablet, and want to use
+ it as a mouse then the mousedev driver needs to know the X window
+ screen resolution you are using to correctly scale the data. If
+ you're not using a digitizer, this value is ignored.
Joystick support
CONFIG_INPUT_JOYDEV
Say Y here if you want your USB HID joystick or gamepad to be
- accessible as a /dev/js device. You can't use a normal (non-USB)
- joystick if you say Y here.
+ accessible as char device 13:0+ - /dev/input/jsX device.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
@@ -9701,7 +9728,7 @@ CONFIG_INPUT_JOYDEV
Event interface support
CONFIG_INPUT_EVDEV
Say Y here if you want your USB HID device events be accessible
- under /dev/inputX (misc 64+) in a generic way.
+ under char device 13:64+ - /dev/inputX in a generic way.
This is the future ...
USB Scanner support
@@ -9953,6 +9980,17 @@ CONFIG_USB_DEVICEFS
Most users want to say Y here.
+USB Bandwidth allocation
+CONFIG_USB_BANDWIDTH
+ If you say Y here, the USB subsystem enforces USB bandwidth
+ allocation and will prevent some device opens from succeeding
+ if they would cause USB bandwidth usage to go above 90% of
+ the bus bandwidth.
+
+ If you say N here, these conditions will cause warning messages
+ about USB bandwidth usage to be logged and some devices or
+ drivers may not work correctly.
+
DABUSB driver
CONFIG_USB_DABUSB
A Digital Audio Broadcasting (DAB) Receiver for USB and Linux
@@ -10008,6 +10046,15 @@ CONFIG_USB_DSBR
The module will be called dsbr100.o. If you want to compile it as a
module, say M here and read Documentation/modules.txt.
+Microtek USB scanner support
+CONFIG_USB_MICROTEK
+ Say Y here if you want support for the Microtek X6USB and possibly
+ some other scanners. The scanner will appear as a scsi device to the
+ rest of the system. A patched version of SANE is necessary to use the
+ scanner. It's available at
+ http://fachschaft.cup.uni-muenchen.de/~neukum/scanner.html
+ This driver can be compiled as a module.
+
Minix fs support
CONFIG_MINIX_FS
Minix is a simple operating system used in many classes about OS's.
@@ -10448,6 +10495,13 @@ CONFIG_NFSD_V3
If you would like to include the NFSv3 server as well as the NFSv2
server, say Y here. If unsure, say Y.
+Provide NFS over TCP server support DEVELOPER ONLY
+CONFIG_NFSD_TCP
+ If you are a developer and want to work on fixing problems with
+ NFS server over TCP support, say Y here. If unsure, say N.
+
+ Some problems can be found by looking for FIXME in net/sunrpc/svcsock.c
+
OS/2 HPFS file system support
CONFIG_HPFS_FS
OS/2 is IBM's operating system for PC's, the same as Warp, and HPFS
@@ -11671,7 +11725,7 @@ CONFIG_LP_CONSOLE
If you want kernel messages to be printed out as they occur, you
can have a console on the printer. This option adds support for
doing that; to actually get it to happen you need to pass the
- option "console=lp" to the kernel at boot time.
+ option "console=lp0" to the kernel at boot time.
Note that kernel messages can get lost if the printer is out of
paper (or off, or unplugged, or too busy..), but this behaviour
@@ -12326,6 +12380,22 @@ CONFIG_APPLICOM
If unsure, say N.
+Intel Random Number Generator support
+CONFIG_INTEL_RNG
+ This driver provides kernel-side support for the Random Number
+ Generator hardware found on Intel i8xx-based motherboards.
+
+ Both a character driver, used to read() entropy data, and a timer
+ function which automatically adds entropy directly into the
+ kernel pool, are exported by this driver.
+
+ To compile this driver as a module ( = code which can be inserted in
+ and removed from the running kernel whenever you want), say M here
+ and read Documentation/modules.txt. The module will be called
+ i810_rng.o.
+
+ If unsure, say N.
+
Power Management support
CONFIG_PM
"Power Management" means that parts of your computer are shut
@@ -12650,7 +12720,7 @@ CONFIG_MICROCODE
For latest news and information on obtaining all the required
ingredients for this driver, check:
- http://www.ocston.org/~tigran/patches/microcode .
+ http://www.urbanmyth.org/microcode/
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
@@ -13535,16 +13605,19 @@ CONFIG_SOUND_SONICVIBES
differs slightly from OSS/Free, so PLEASE READ
Documentation/sound/sonicvibes.
-Trident 4DWave DX/NX or SiS 7018 PCI Audio Core
+Trident 4DWave DX/NX, SiS 7018 or ALi 5451 PCI Audio Core
CONFIG_SOUND_TRIDENT
Say Y or M if you have a PCI sound card utilizing the Trident
4DWave-DX/NX chipset or your mother board chipset has SiS 7018
- built-in. The SiS 7018 PCI Audio Core is embedded in SiS960
- Super South Bridge and SiS540/630 Single Chipset.
+ or ALi 5451 built-in. The SiS 7018 PCI Audio Core is embedded
+ in SiS960 Super South Bridge and SiS540/630 Single Chipset.
+ The ALi 5451 PCI Audio Core is embedded in ALi M1535, M1535D,
+ M1535+ or M1535D+ South Bridge.
Use lspci -n to find out if your sound card or chipset uses
Trident 4DWave or SiS 7018. PCI ID 1023:2000 or 1023:2001 stands
- for Trident 4Dwave. PCI ID 1039:7018 stands for SiS7018.
+ for Trident 4Dwave. PCI ID 1039:7018 stands for SiS7018. PCI ID
+ 10B9:5451 stands for ALi5451.
This driver differs slightly from OSS/Free, so PLEASE READ the
comments at the top of driver/sound/trident.c
@@ -13608,7 +13681,9 @@ CONFIG_MAGIC_SYSRQ
if the system crashes for example during kernel debugging (e.g., you
will be able to flush the buffer cache to disk, reboot the system
immediately or dump some status information). This is accomplished
- by pressing various keys while holding SysRq (Alt+PrintScreen). The
+ by pressing various keys while holding SysRq (Alt+PrintScreen). It
+ also works on a serial console (on PC hardware at least), if you
+ send a BREAK and then within 5 seconds a command keypress. The
keys are documented in Documentation/sysrq.txt. Don't say Y unless
you really know what this hack does.
@@ -14734,11 +14809,19 @@ CONFIG_DIO
Processor Type
CONFIG_6xx
- There are three types of PowerPC chips supported. The more common
+ There are four types of PowerPC chips supported. The more common
types (601, 603, 604, 740, 750), the Motorola embedded versions
- (821, 823, 850, 855, 860), and the IBM embedded versions (403 and
- 405). Unless you are building a kernel for one of the embedded
- processor systems, choose 6xx.
+ (821, 823, 850, 855, 860), the IBM embedded versions (403 and
+ 405) and the high end 64 bit Power processors (Power 3, Power 4).
+ Unless you are building a kernel for one of the embedded
+ processor systems, or a 64 bit IBM RS/6000, choose 6xx.
+
+CONFIG_PPC64BRIDGE
+ Currently there is not a 64 bit PowerPC Linux kernel. As a result
+ if you choose the CONFIG_POWER3 or CONFIG_POWER4 options you
+ must choose this option as well. This enables gcc to emit
+ both 32 and 64 bit instructions as well as cause your kernel
+ to be built as a 32 bit kernel.
Machine Type
CONFIG_PMAC
@@ -14750,6 +14833,22 @@ CONFIG_PMAC
only supports one type or the other. However, there is very early
work on support for CHRP, PReP and PowerMac's from a single binary.
+Power management support for PowerBooks
+CONFIG_PMAC_PBOOK
+ This provides support for putting a PowerBook to sleep; it also
+ enables media bay support. Power management works on the
+ PB2400/3400/3500, Wallstreet, Lombard, and Bronze PowerBook G3. You
+ must get the power management daemon, pmud, to make it work and you
+ must have the /dev/pmu device (see the pmud README).
+
+ Get pmud from ftp://linuxcare.com.au/pub/ppclinux/pmud/
+
+ If you have a PowerBook, you should say Y.
+
+ You may also want to compile the dma sound driver as a module and
+ have it autoloaded. The act of removing the module shuts down the
+ sound hardware for more power savings.
+
Support for Open Firmware device tree in /proc
CONFIG_PROC_DEVICETREE
This option adds a device-tree directory under /proc which contains
@@ -15223,6 +15322,11 @@ CONFIG_VIDEO_PMS
from the running kernel whenever you want). If you want to compile
it as a module, say M here and read Documentation/modules.txt.
+SAB3036 tuner support
+CONFIG_TUNER_3036
+ Say Y here to include support for Philips SAB3036 compatible tuners.
+ If in doubt, say N.
+
Compaq SMART2 support
CONFIG_BLK_CPQ_DA
This is the driver for Compaq Smart Array controllers.
@@ -15241,15 +15345,46 @@ CONFIG_ARCH_ARC
to set this option to, please consult any information supplied with
your system.
+Include support for the CATS
+CONFIG_ARCH_CATS
+ Say Y here if you intend to run this kernel on the CATS.
+
+ Saying N will reduce the size of the Footbridge kernel.
+
+Include support for the EBSA285
+CONFIG_ARCH_EBSA285
+ Say Y here if you intend to run this kernel on the EBSA285 card
+ in host ("central function") mode.
+
+ Saying N will reduce the size of the Footbridge kernel.
+
+Include support for the LinkUp Systems L7200 SDB
+CONFIG_ARCH_L7200
+ Say Y here if you intend to run this kernel on a LinkUp Systems
+ L7200 Software Development Board which uses an ARM720T processor.
+ Information on this board can be obtained at:
+
+ http://www.linkupsys.com/
+
+ If you have any questions or comments about the Linux kernel port
+ to this board, send e-mail to sjhill@cotw.com
+
Include support for the NetWinder
CONFIG_ARCH_NETWINDER
- Say Y here if you intend to run this kernel on the NetWinder.
+ Say Y here if you intend to run this kernel on the Rebel.COM
+ NetWinder. Information about this machine can be found at:
+
+ http://www.netwinder.org/
+
+ Saying N will reduce the size of the Footbridge kernel.
Include support for the Compaq Personal Server
CONFIG_ARCH_PERSONAL_SERVER
Say Y here if you intend to run this kernel on the Compaq
Personal Server.
+ Saying N will reduce the size of the Footbridge kernel.
+
The Compaq Personal Server is not available for purchase.
There are no product plans beyond the current research
prototypes at this time. Information is available at:
@@ -15259,17 +15394,6 @@ CONFIG_ARCH_PERSONAL_SERVER
If you have any questions or comments about the Compaq Personal
Server, send e-mail to skiff@crl.dec.com
-Include support for the LinkUp Systems L7200 SDB
-CONFIG_ARCH_L7200
- Say Y here if you intend to run this kernel on a LinkUp Systems
- L7200 Software Development Board which uses an ARM720T processor.
- Information on this board can be obtained at:
-
- http://www.linkupsys.com/
-
- If you have any questions or comments about the Linux kernel port
- to this board, send e-mail to sjhill@cotw.com
-
Math emulation
CONFIG_NWFPE
Say Y to include the NWFPE floating point emulator in the kernel.
@@ -15422,6 +15546,41 @@ CONFIG_BLK_DEV_MFM_AUTODETECT
sometimes doesn't work and it also does some dodgy stuff which
potentially might damage your drive.
+NetWinder /dev/flash support
+CONFIG_NWFLASH
+ If you say Y here and create a character device /dev/flash with
+ major 10 and minor 160 you can manipulate the flash ROM containing
+ the NetWinder firmware. Be careful as accidentally overwriting the
+ flash contents can render your computer unbootable. On no account
+ allow random users access to this device. :-)
+
+ This driver is also available as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want).
+ The module will be called nwflash.o. If you want to compile it as a
+ module, say M here and read Documentation/modules.txt.
+
+ If you're not sure, say N.
+
+Footbridge internal watchdog
+CONFIG_21285_WATCHDOG
+ The Intel Footbridge chip contains a builtin watchdog circuit. Say Y
+ here if you wish to use this. Alternatively say M to compile the
+ driver as a module, which will be called wdt285.o.
+
+ This driver does not work on all machines. In particular, early CATS
+ boards have hardware problems that will cause the machine to simply
+ lock up if the watchdog fires.
+
+ "If in doubt, leave it out" - say N.
+
+NetWinder WB977 watchdog
+CONFIG_977_WATCHDOG
+ Say Y here to include support for the WB977 watchdog included in
+ NetWinder machines. Alternatively say M to compile the driver as
+ a module, which will be called wdt977.o.
+
+ Not sure? It's safe to say N.
+
IrDA subsystem support
CONFIG_IRDA
Say Y here if you want to build support for the IrDA (TM) protocols.
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index 0f84cb218..b487825c7 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -1,11 +1,17 @@
-BOOKS := wanbook.sgml z8530book.sgml mcabook.sgml videobook.sgml kernel-api.sgml parportbook.sgml kernel-hacking.sgml kernel-locking.sgml
+BOOKS := wanbook.sgml z8530book.sgml mcabook.sgml videobook.sgml \
+ kernel-api.sgml parportbook.sgml kernel-hacking.sgml \
+ kernel-locking.sgml via-audio.sgml mousedrivers.sgml
PS := $(patsubst %.sgml, %.ps, $(BOOKS))
PDF := $(patsubst %.sgml, %.pdf, $(BOOKS))
+HTML := $(patsubst %.sgml, %, $(BOOKS))
+IMG-parportbook := parport-share.fig parport-multi.fig parport-structure.fig
+EPS-parportbook := $(patsubst %.fig, %.eps, $(IMG-parportbook))
+JPG-parportbook := $(patsubst %.fig, %.jpeg, $(IMG-parportbook))
$(BOOKS): $(TOPDIR)/scripts/docproc
-.PHONY: books ps pdf clean mrproper db2ps db2pdf
+.PHONY: books ps pdf html clean mrproper db2ps db2pdf db2html
books: $(BOOKS)
@@ -13,7 +19,9 @@ ps: $(PS)
pdf: $(PDF)
-db2ps db2pdf:
+html: $(HTML)
+
+db2ps db2pdf db2html:
@(which $@ > /dev/null 2>&1) || \
(echo "*** You need to install DocBook stylesheets ***"; \
exit 1)
@@ -21,37 +29,45 @@ db2ps db2pdf:
%.eps: %.fig
-fig2dev -Leps $< $@
+%.jpeg: %.fig
+ -fig2dev -Ljpeg $< $@
+
$(TOPDIR)/scripts/docproc:
$(MAKE) -C $(TOPDIR)/scripts docproc
+mousedrivers.sgml: mousedrivers.tmpl
+ $(TOPDIR)/scripts/docgen <$< >$@
+
kernel-hacking.sgml: kernel-hacking.tmpl
$(TOPDIR)/scripts/docgen <$< >$@
kernel-locking.sgml: kernel-locking.tmpl
$(TOPDIR)/scripts/docgen <$< >$@
-wanbook.sgml: wanbook.tmpl
+wanbook.sgml: wanbook.tmpl $(TOPDIR)/drivers/net/wan/syncppp.c
$(TOPDIR)/scripts/docgen $(TOPDIR)/drivers/net/wan/syncppp.c \
<wanbook.tmpl >wanbook.sgml
-z8530book.sgml: z8530book.tmpl
+z8530book.sgml: z8530book.tmpl $(TOPDIR)/drivers/net/wan/z85230.c
$(TOPDIR)/scripts/docgen $(TOPDIR)/drivers/net/wan/z85230.c \
<z8530book.tmpl >z8530book.sgml
-mcabook.sgml: mcabook.tmpl
+via-audio.sgml: via-audio.tmpl $(TOPDIR)/drivers/sound/via82cxxx_audio.c
+ $(TOPDIR)/scripts/docgen $(TOPDIR)/drivers/sound/via82cxxx_audio.c \
+ <via-audio.tmpl >via-audio.sgml
+
+mcabook.sgml: mcabook.tmpl $(TOPDIR)/arch/i386/kernel/mca.c
$(TOPDIR)/scripts/docgen $(TOPDIR)/arch/i386/kernel/mca.c \
<mcabook.tmpl >mcabook.sgml
-videobook.sgml: videobook.tmpl
+videobook.sgml: videobook.tmpl $(TOPDIR)/drivers/char/videodev.c
$(TOPDIR)/scripts/docgen $(TOPDIR)/drivers/char/videodev.c \
<videobook.tmpl >videobook.sgml
-kernel-api.sgml: kernel-api.tmpl
- $(TOPDIR)/scripts/docgen $(TOPDIR)/drivers/char/videodev.c \
+APISOURCES := $(TOPDIR)/drivers/char/videodev.c \
$(TOPDIR)/arch/i386/kernel/mca.c \
$(TOPDIR)/arch/i386/kernel/mtrr.c \
$(TOPDIR)/drivers/char/misc.c \
- $(TOPDIR)/drivers/char/videodev.c \
$(TOPDIR)/drivers/net/net_init.c \
$(TOPDIR)/drivers/net/8390.c \
$(TOPDIR)/drivers/char/serial.c \
@@ -63,10 +79,15 @@ kernel-api.sgml: kernel-api.tmpl
$(TOPDIR)/fs/devfs/base.c \
$(TOPDIR)/kernel/pm.c \
$(TOPDIR)/kernel/ksyms.c \
- $(TOPDIR)/net/netsyms.c \
+ $(TOPDIR)/net/netsyms.c
+
+kernel-api.sgml: kernel-api.tmpl $(APISOURCES)
+ $(TOPDIR)/scripts/docgen $(APISOURCES) \
<kernel-api.tmpl >kernel-api.sgml
-parportbook.sgml: parportbook.tmpl
+parportbook: $(JPG-parportbook)
+parportbook.ps: $(EPS-parportbook)
+parportbook.sgml: parportbook.tmpl $(TOPDIR)/drivers/parport/init.c
$(TOPDIR)/scripts/docgen $(TOPDIR)/drivers/parport/init.c \
<parportbook.tmpl >parportbook.sgml
@@ -74,23 +95,28 @@ DVI := $(patsubst %.sgml, %.dvi, $(BOOKS))
AUX := $(patsubst %.sgml, %.aux, $(BOOKS))
TEX := $(patsubst %.sgml, %.tex, $(BOOKS))
LOG := $(patsubst %.sgml, %.log, $(BOOKS))
+OUT := $(patsubst %.sgml, %.out, $(BOOKS))
clean:
-$(RM) core *~
-$(RM) $(BOOKS)
- -$(RM) $(DVI) $(AUX) $(TEX) $(LOG)
- -$(RM) parport-share.eps parport-multi.eps parport-structure.eps
+ -$(RM) $(DVI) $(AUX) $(TEX) $(LOG) $(OUT)
+ -$(RM) $(JPG-parportbook) $(EPS-parportbook)
mrproper: clean
-$(RM) $(PS) $(PDF)
-
-parportbook.ps: parport-share.eps parport-multi.eps parport-structure.eps
+ -$(RM) -r $(HTML)
%.ps : %.sgml db2ps
db2ps $<
-%.pdf : %.sgml
+%.pdf : %.sgml db2pdf
db2pdf $<
+%: %.sgml db2html
+ -$(RM) -r $@
+ db2html $<
+ if [ ! -z "$(JPG-$@)" ]; then cp $(JPG-$@) $@; fi
+
include $(TOPDIR)/Rules.make
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index 688cdf351..9b5b258c9 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -34,6 +34,12 @@
</bookinfo>
<toc></toc>
+ <chapter id="adt">
+ <title>Data Types</title>
+ <sect1><title>Doubly Linked Lists</title>
+!Iinclude/linux/list.h
+ </sect1>
+ </chapter>
<chapter id="vfs">
<title>The Linux VFS</title>
<sect1><title>The Directory Cache</title>
diff --git a/Documentation/DocBook/kernel-locking.tmpl b/Documentation/DocBook/kernel-locking.tmpl
index 397e7e954..5b687eb76 100644
--- a/Documentation/DocBook/kernel-locking.tmpl
+++ b/Documentation/DocBook/kernel-locking.tmpl
@@ -208,7 +208,12 @@
your task will put itself on the queue, and be woken up when the
semaphore is released. This means the CPU will do something
else while you are waiting, but there are many cases when you
- simply can't sleep, and so have to use a spinlock instead.
+ simply can't sleep (see <xref linkend="sleeping-things">), and so
+ have to use a spinlock instead.
+ </para>
+ <para>
+ Neither type of lock is recursive: see
+ <xref linkend="techniques-deadlocks">.
</para>
<sect1 id="uniprocessor">
@@ -430,7 +435,7 @@
<para>
Hardware interrupts usually communicate with a bottom half,
- tasklet or softirq. Frequently this involved putting work in a
+ tasklet or softirq. Frequently this involves putting work in a
queue, which the BH/softirq will take out.
</para>
@@ -522,8 +527,8 @@
<para>
There is a coding bug where a piece of code tries to grab a
spinlock twice: it will spin forever, waiting for the lock to
- be released (spinlocks and writelocks are not re-entrant in
- Linux). This is trivial to diagnose: not a
+ be released (spinlocks, rwlocks and semaphores are not
+ recursive in Linux). This is trivial to diagnose: not a
stay-up-five-nights-talk-to-fluffy-code-bunnies kind of
problem.
</para>
@@ -754,37 +759,15 @@
</para>
<para>
- Dropping or gaining a spinlock, and any atomic operation are
- all defined to act as memory barriers (ie. as per the
- <function>mb()</function> macro).
- </para>
-
- <para>
- There is a similar, but unrelated, problem with code like the
- following:
- </para>
-
- <programlisting>
- if (!(ctrack-&gt;status &amp; IPS_CONFIRMED)) {
- spin_lock_bh(&amp;ip_conntrack_lock);
- if (!(ctrack-&gt;status &amp; IPS_CONFIRMED)) {
- clean_from_lists(h-&gt;ctrack);
- h-&gt;ctrack-&gt;status |= IPS_CONFIRMED;
- }
- spin_unlock_bh(&amp;ip_conntrack_lock);
- }
- </programlisting>
-
- <para>
- In this case, the author has tried to be tricky: knowing that
- the CONFIRMED bit is set and never reset in the status word,
- you can test it outside the lock, and frequently avoid
- grabbing the lock at all. However, the compiler could cache
- the value in a register, rather than rereading it once the
- lock is obtained, creating a subtle race. The way to get
- around this is to declare the status field `volatile', or use
- a temporary volatile pointer to achieve the same effect in
- this one place.
+ Any atomic operation is defined to act as a memory barrier
+ (ie. as per the <function>mb()</function> macro). Also,
+ spinlock operations act as partial barriers: operations after
+ gaining a spinlock will never be moved to precede the
+ <function>spin_lock()</function> call, and operations before
+ releasing a spinlock will never be moved after the
+ <function>spin_unlock()</function> call.
+ <!-- Manfred Spraul <manfreds@colorfullife.com>
+ 24 May 2000 2.3.99-pre9 -->
</para>
</sect1>
@@ -911,7 +894,8 @@
<para>
You can never call the following routines while holding a
- spinlock, as they may sleep:
+ spinlock, as they may sleep. This also means you need to be in
+ user context.
</para>
<itemizedlist>
@@ -952,11 +936,19 @@
<listitem>
<para>
- <function>printk()</function>, which can be called from
- user context, interestingly enough.
+ <function>down_interruptible()</function> and
+ <function>down()</function>
+ </para>
+ <para>
+ There is a <function>down_trylock()</function> which can be
+ used inside interrupt context, as it will not sleep.
+ <function>up()</function> will also never sleep.
</para>
</listitem>
</itemizedlist>
+
+ <function>printk()</function> can be called in
+ <emphasis>any</emphasis> context, interestingly enough.
</sect1>
<sect1 id="sparc">
@@ -1047,9 +1039,11 @@
Another common problem is deleting timers which restart
themselves (by calling <function>add_timer()</function> at the end
of their timer function). Because this is a fairly common case
- which is prone to races, the function <function>del_timer_sync()</function>
- (<filename class=headerfile>include/linux/timer.h</filename>) is
- provided to handle this case. It returns the number of times the timer
+ which is prone to races, you can put a call to
+ <function>timer_exit()</function> at the very end of your timer function,
+ and user <function>del_timer_sync()</function>
+ (<filename class=headerfile>include/linux/timer.h</filename>)
+ to handle this case. It returns the number of times the timer
had to be deleted before we finally stopped it from adding itself back
in.
</para>
@@ -1093,8 +1087,8 @@
<para>
Thanks to Martin Pool, Philipp Rumpf, Stephen Rothwell, Paul
- Mackerras, Ruedi Aschwanden, Alan Cox for proofreading,
- correcting, flaming, commenting.
+ Mackerras, Ruedi Aschwanden, Alan Cox, Manfred Spraul and Tim
+ Waugh for proofreading, correcting, flaming, commenting.
</para>
<para>
diff --git a/Documentation/DocBook/mousedrivers.tmpl b/Documentation/DocBook/mousedrivers.tmpl
new file mode 100644
index 000000000..5d7be51e1
--- /dev/null
+++ b/Documentation/DocBook/mousedrivers.tmpl
@@ -0,0 +1,1022 @@
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+
+<book id="MouseGuide">
+ <bookinfo>
+ <title>Mouse Drivers</title>
+
+ <authorgroup>
+ <author>
+ <firstname>Alan</firstname>
+ <surname>Cox</surname>
+ <affiliation>
+ <address>
+ <email>alan@redhat.com</email>
+ </address>
+ </affiliation>
+ </author>
+ </authorgroup>
+
+ <copyright>
+ <year>2000</year>
+ <holder>Alan Cox</holder>
+ </copyright>
+
+ <legalnotice>
+ <para>
+ This documentation is free software; you can redistribute
+ it and/or modify it under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later
+ version.
+ </para>
+
+ <para>
+ This program is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+ </para>
+
+ <para>
+ You should have received a copy of the GNU General Public
+ License along with this program; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ MA 02111-1307 USA
+ </para>
+
+ <para>
+ For more details see the file COPYING in the source
+ distribution of Linux.
+ </para>
+ </legalnotice>
+ </bookinfo>
+
+ <toc></toc>
+
+ <chapter id="intro">
+ <title>Introduction</title>
+ <note>
+ <title>Earlier publication</title>
+ <para>
+ Parts of this document first appeared in Linux Magazine under a
+ ninety day exclusivity.
+ </para>
+ </note>
+
+ <para>
+ Mice are conceptually one of the simplest device interfaces in the
+ Linux operating system. Not all mice are handled by the kernel.
+ Instead there is a two layer abstraction.
+ </para>
+
+ <para>
+ The kernel mouse drivers and userspace drivers for the serial mice are
+ all managed by a system daemon called <application>gpm</application>
+ - the general purpose mouse driver. <application>gpm</application>
+ handles cutting and pasting on the text consoles. It provides a
+ general library for mouse-aware applications and it handles the
+ sharing of mouse services with the
+ <application>X Window System</application> user interface.
+ </para>
+ <para>
+ Sometimes a mouse speaks a sufficiently convoluted protocol that the
+ protocol is handled by <application>Gpm</application> itself. Most
+ of the mouse drivers follow a common interface called the bus mouse
+ protocol.
+ </para>
+ <para>
+ Each read from a bus mouse interface device returns a block of data.
+ The first three bytes of each read are defined as follows:
+
+ <table frame=all>
+ <title>Mouse Data Encoding</title>
+ <tgroup cols=2 align=left>
+ <tbody>
+ <row>
+ <entry>Byte 0</entry>
+ <entry>0x80 + the buttons currently down.</entry>
+ </row>
+ <row>
+ <entry>Byte 1</entry>
+ <entry>A signed value for the shift in X position</entry>
+ </row>
+ <row>
+ <entry>Byte 2</entry>
+ <entry>A signed value for the shift in Y position</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ An application can choose to read more than 3 bytes. The rest of the
+ bytes will be zero, or may optionally return some additional
+ device-specific information.
+ </para>
+ <para>
+ The position values are truncated if they exceed the 8bit range (that
+ is -127 &lt;= delta &lt;= 127). While the value -128 does fit into a
+ byte is not allowed.
+ </para>
+ <para>
+ The <mousebutton>buttons</mousebutton> are numbered left to right as
+ 0, 1, 2, 3.. and each button sets the relevant bit. So a user pressing
+ the left and right button of a three button mouse will set bits 0 and 2.
+ </para>
+ <para>
+ All mice are required to support the <function>poll</function>
+ operation. Indeed pretty much every user of a mouse device uses
+ <function>poll</function> to wait for mouse events to occur.
+ </para>
+ <para>
+ Finally the mice support asynchronous I/O. This is a topic we have not
+ yet covered but which I will explain after looking at a simple mouse
+ driver.
+ </para>
+ </chapter>
+
+ <chapter id="driver">
+ <title>A simple mouse driver</title>
+ <para>
+ First we will need the set up functions for our mouse device. To keep
+ this simple our imaginary mouse device has three I/O ports fixed at I/O
+ address 0x300 and always lives on interrupt 5. The ports will be the X
+ position, the Y position and the buttons in that order.
+ </para>
+
+ <programlisting>
+#define OURMOUSE_BASE 0x300
+
+static struct miscdevice our_mouse = {
+ OURMOUSE_MINOR, "ourmouse", &amp;our_mouse_fops
+};
+
+__init ourmouse_init(void)
+{
+
+ if(check_region(OURMOUSE_BASE, 3))
+ return -ENODEV;
+ request_region(OURMOUSE_BASE, 3, "ourmouse");
+
+ misc_register(&amp;our_mouse);
+ return 0;
+}
+ </programlisting>
+
+ <para>
+ The <structname>miscdevice</structname> is new here. Linux normally
+ parcels devices out by major number, and each device has 256 units.
+ For things like mice this is extremely wasteful so a device exists
+ which is used to accumulate all the odd individual devices that
+ computers tend to have.
+ </para>
+ <para>
+ Minor numbers in this space are allocated by a central source, although
+ you can look in the kernel <filename>Documentation/devices.txt</filename>
+ file and pick a free one for development use. This kernel file also
+ carries instructions for registering a device. This may change over time
+ so it is a good idea to obtain a current copy of this file first.
+ </para>
+ <para>
+ Our code then is fairly simple. We check nobody else has taken our
+ address space. Having done so we reserve it to ensure nobody stamps
+ on our device while probing for other ISA bus devices. Such a probe
+ might confuse our device.
+ </para>
+ <para>
+ Then we tell the misc driver that we wish to own a minor number. We also
+ hand it our name (which is used in
+ <filename class="directory">/proc/misc</filename>) and a set of file
+ operations that are to be used. The file operations work exactly like the
+ file operations you would register for a normal character device. The misc
+ device itself is simply acting as a redirector for requests.
+ </para>
+ <para>
+ Next, in order to be able to use and test our code we need to add some
+ module code to support it. This too is fairly simple:
+ </para>
+ <programlisting>
+#ifdef MODULE
+
+int init_module(void)
+{
+ if(ourmouse_init()&lt;0)
+ return -ENODEV:
+ return 0;
+}
+
+void cleanup_module(void)
+{
+ misc_deregister(&amp;our_mouse);
+ free_region(OURMOUSE_BASE, 3);
+}
+
+
+#endif
+ </programlisting>
+
+ <para>
+ The module code provides the normal two functions. The
+ <function>init_module</function> function is called when the module is
+ loaded. In our case it simply calls the initialising function we wrote
+ and returns an error if this fails. This ensures the module will only
+ be loaded if it was successfully set up.
+ </para>
+ <para>
+ The <function>cleanup_module</function> function is called when the
+ module is unloaded. We give the miscellaneous device entry back, and
+ then free our I/O resources. If we didn't free the I/O resources then
+ the next time the module loaded it would think someone else had its I/O
+ space.
+ </para>
+ <para>
+ Once the <function>misc_deregister</function> has been called any
+ attempts to open the mouse device will fail with the error
+ <errorcode>ENODEV</errorcode> (<errorname>No such device</errorname>).
+ </para>
+ <para>
+ Next we need to fill in our file operations. A mouse doesn't need many
+ of these. We need to provide open, release, read and poll. That makes
+ for a nice simple structure:
+ </para>
+
+ <programlisting>
+struct file_operations our_mouse_fops = {
+ NULL, /* Mice don't seek */
+ read_mouse, /* You can read a mouse */
+ write_mouse, /* This won't do a lot */
+ NULL, /* No readdir - not a directory */
+ poll_mouse, /* Poll */
+ NULL, /* No ioctl calls */
+ NULL, /* No mmap */
+ open_mouse, /* Called on open */
+ NULL, /* Flush - 2.2+ only */
+ close_mouse, /* Called on close */
+};
+ </programlisting>
+
+ <para>
+ There is nothing particularly special needed here. We provide functions
+ for all the relevant or required operations and little else. There is
+ nothing stopping us providing an ioctl function for this mouse. Indeed
+ if you have a configurable mouse it may be very appropriate to provide
+ configuration interfaces via ioctl calls.
+ </para>
+ <para>
+ The open and close routines need to manage enabling and disabling the
+ interrupts for the mouse as well as stopping the mouse being unloaded
+ when it is no longer required.
+ </para>
+
+ <programlisting>
+static int mouse_users = 0; /* User count */
+static int mouse_dx = 0; /* Position changes */
+static int mouse_dy = 0;
+static int mouse_event = 0; /* Mouse has moved */
+
+static int open_mouse(struct inode *inode, struct file *file)
+{
+ if(mouse_users++)
+ return 0;
+
+ MOD_INC_USE_COUNT;
+
+ if(request_irq(mouse_intr, OURMOUSE_IRQ, 0, "ourmouse", NULL))
+ {
+ mouse_users--;
+ MOD_DEC_USE_COUNT;
+ return -EBUSY;
+ }
+ mouse_dx = 0;
+ mouse_dy = 0;
+ mouse_event = 0;
+ mouse_buttons = 0;
+ return 0;
+}
+ </programlisting>
+ <para>
+ The open function has to do a small amount of housework. We keep a count
+ of the number of times the mouse is open. This is because we do not want
+ to request the interrupt multiple times. If the mouse has at least one
+ user then it is set up and we simply add to the user count and return
+ <returnvalue>0</returnvalue> for success.
+ </para>
+ <para>
+ Firstly we use <function>MOD_INC_USE_COUNT</function> to ensure that
+ while the mouse is open nobody will unload it and cause a nasty crash.
+ We must do this before we sleep - and grabbing the interrupt might sleep.
+ </para>
+ <para>
+ We grab the interrupt and thus start mouse interrupts. If the interrupt
+ has been borrowed by some other driver then <function>request_irq</function>
+ will fail and we will return an error. If we were capable of sharing an
+ interrupt line we would specify <constant>SA_SHIRQ</constant> instead of
+ <constant>zero</constant>. Provided that everyone claiming an interrupt
+ sets this flag, they get to share the line. <hardware>PCI</hardware> can
+ share interrupts, <hardware>ISA</hardware> normally however cannot.
+ </para>
+ <para>
+ We do the housekeeping. We make the current mouse position the starting
+ point for accumulated changes and declare that nothing has happened
+ since the mouse driver was opened.
+ </para>
+ <para>
+ The release function needs to unwind all these:
+ </para>
+ <programlisting>
+static int close_mouse(struct inode *inode, struct file *file)
+{
+ if(--mouse_users)
+ return 0;
+ free_irq(OURMOUSE_IRQ, NULL);
+ MOD_DEC_USE_COUNT;
+ return 0;
+}
+ </programlisting>
+ <para>
+ We count off a user and provided that there are still other users need
+ take no further action. The last person closing the mouse causes us to
+ free up the interrupt. This stopps interrupts from the mouse from using
+ our CPU time, and lets us use <function>MOD_DEC_USE_COUNT</function> so
+ that the mouse can now be unloaded.
+ </para>
+ <para>
+ We can fill in the write handler at this point as the write function for
+ our mouse simply declines to allow writes:
+ </para>
+
+ <programlisting>
+static ssize_t write_mouse(struct file *file, const char *buffer, size_t
+ count, loff_t *ppos)
+{
+ return -EINVAL;
+}
+ </programlisting>
+
+ <para>
+ This is pretty much self-explanatory. Whenever you write you get told
+ it was an invalid function.
+ </para>
+ <para>
+ To make the poll and read functions work we have to consider how we
+ handle the mouse interrupt.
+ </para>
+
+ <programlisting>
+static struct wait_queue *mouse_wait;
+static spinlock_t mouse_lock = SPIN_LOCK_UNLOCKED;
+
+static void ourmouse_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+{
+ char delta_x;
+ char delta_y;
+ unsigned char new_buttons;
+
+ delta_x = inb(OURMOUSE_BASE);
+ delta_y = inb(OURMOUSE_BASE+1);
+ new_buttons = inb(OURMOUSE_BASE+2);
+
+ if(delta_x || delta_y || new_buttons != mouse_buttons)
+ {
+ /* Something happened */
+
+ spin_lock(&amp;mouse_lock);
+ mouse_event = 1;
+ mouse_dx += delta_x;
+ mouse_dy += delta_y;
+ mouse_buttons = new_buttons;
+ spin_unlock(&amp;mouse_lock);
+
+ wake_up_interruptible(&amp;mouse_wait);
+ }
+}
+ </programlisting>
+
+ <para>
+ The interrupt handler reads the mouse status. The next thing we do is
+ to check whether something has changed. If the mouse was smart it would
+ only interrupt us if something had changed, but let's assume our mouse
+ is stupid as most mice actually tend to be.
+ </para>
+ <para>
+ If the mouse has changed we need to update the status variables. What we
+ don't want is the mouse functions reading these variables to read them
+ during a change. We add a spinlock that protects these variables while we
+ play with them.
+ </para>
+ <para>
+ If a change has occured we also need to wake sleeping processes, so we
+ add a wakeup call and a <structname>wait_queue</structname> to use when
+ we wish to await a mouse event.
+ </para>
+ <para>
+ Now we have the wait queue we can implement the poll function for the
+ mouse relatively easily:
+ </para>
+
+ <programlisting>
+static unsigned int mouse_poll(struct file *file, poll_table *wait)
+{
+ poll_wait(file, &amp;mouse_wait, wait);
+ if(mouse_event)
+ return POLLIN | POLLRDNORM;
+ return 0;
+}
+ </programlisting>
+
+ <para>
+ This is fairly standard poll code. First we add the wait queue to the
+ list of queues we want to monitor for an event. Secondly we check if an
+ event has occured. We only have one kind of event - the
+ <varname>mouse_event</varname> flag tells us that something happened.
+ We know that this something can only be mouse data. We return the flags
+ indicating input and normal reading will succeed.
+ </para>
+ <para>
+ You may be wondering what happens if the function returns saying 'no
+ event yet'. In this case the wake up from the wait queue we added to
+ the poll table will cause the function to be called again. Eventually
+ we will be woken up and have an event ready. At this point the
+ <function>poll</function> call will exit back to the user.
+ </para>
+ <para>
+ After the poll completes the user will want to read the data. We now
+ need to think about how our <function>mouse_read</function> function
+ will work:
+ </para>
+ <programlisting>
+static ssize_t mouse_read(struct file *file, char *buffer,
+ size_t count, loff_t *pos)
+{
+ int dx, dy;
+ unsigned char button;
+ unsigned long flags;
+ int n;
+
+ if(count&lt;3)
+ return -EINVAL;
+
+ /*
+ * Wait for an event
+ */
+
+ while(!mouse_event)
+ {
+ if(file-&gt;f_flags&amp;O_NDELAY)
+ return -EAGAIN;
+ interruptible_sleep_on(&amp;mouse_wait);
+ if(signal_pending(current))
+ return -ERESTARTSYS;
+ }
+ </programlisting>
+
+ <para>
+ We start by validating that the user is reading enough data. We could
+ handle partial reads if we wanted but it isn't terribly useful and the
+ mouse drivers don't bother to try.
+ </para>
+ <para>
+ Next we wait for an event to occur. The loop is fairly standard event
+ waiting in Linux. Having checked that the event has not yet occured, we
+ then check if an event is pending and if not we need to sleep.
+ </para>
+ <para>
+ A user process can set the <constant>O_NDELAY</constant> flag on a file
+ to indicate that it wishes to be told immediately if no event is
+ pending. We check this and give the appropriate error if so.
+ </para>
+ <para>
+ Next we sleep until the mouse or a signal awakens us. A signal will
+ awaken us as we have used <function>wakeup_interruptible</function>.
+ This is important as it means a user can kill processes waiting for
+ the mouse - clearly a desireable property. If we are interrupted we
+ exit the call and the kernel will then process signals and maybe
+ restart the call again - from the beginning.
+ </para>
+ <para>
+ This code contains a classic Linux bug. All will be revealed later in this
+ article as well as explanations for how to avoid it.
+ </para>
+ <programlisting>
+ /* Grab the event */
+
+ spinlock_irqsave(&amp;mouse_lock, flags);
+
+ dx = mouse_dx;
+ dy = mouse_dy;
+ button = mouse_buttons;
+
+ if(dx&lt;=-127)
+ dx=-127;
+ if(dx&gt;=127)
+ dx=127;
+ if(dy&lt;=-127)
+ dy=-127;
+ if(dy&gt;=127)
+ dy=127;
+
+ mouse_dx -= dx;
+ mouse_dy -= dy;
+
+ if(mouse_dx == 0 &amp;&amp; mouse_dy == 0)
+ mouse_event = 0;
+
+ spin_unlock_irqrestore(&amp;mouse_lock, flags);
+ </programlisting>
+ <para>
+ This is the next stage. Having established that there is an event
+ going, we capture it. To be sure that the event is not being updated
+ as we capture it we also take the spinlock and thus prevent parallel
+ updates. Note here we use <function>spinlock_irqsave</function>. We
+ need to disable interrupts on the local processor otherwise bad things
+ will happen.
+ </para>
+ <para>
+ What will occur is that we take the spinlock. While we hold the lock
+ an interrupt will occur. At this point our interrupt handler will try
+ and take the spinlock. It will sit in a loop waiting for the read
+ routine to release the lock. However because we are sitting in a loop
+ in the interrupt handler we will never release the lock. The machine
+ hangs and the user gets upset.
+ </para>
+ <para>
+ By blocking the interrupt on this processor we ensure that the lock
+ holder will always give the lock back without deadlocking.
+ </para>
+ <para>
+ There is a little cleverness in the reporting mechanism too. We can
+ only report a move of 127 per read. We don't however want to lose
+ information by throwing away further movement. Instead we keep
+ returning as much information as possible. Each time we return a
+ report we remove the amount from the pending movement in
+ <varname>mouse_dx</varname> and <varname>mouse_dy</varname>. Eventually
+ when these counts hit zero we clear the <varname>mouse_event</varname>
+ flag as there is nothing else left to report.
+ </para>
+
+ <programlisting>
+ if(put_user(button|0x80, buffer))
+ return -EFAULT;
+ if(put_user((char)dx, buffer+1))
+ return -EFAULT;
+ if(put_user((char)dy, buffer+2))
+ return -EFAULT;
+
+ for(n=3; n < count; n++)
+ if(put_user(0x00, buffer+n))
+ return -EFAULT;
+
+ return count;
+}
+ </programlisting>
+
+ <para>
+ Finally we must put the results in the user supplied buffer. We cannot
+ do this while holding the lock as a write to user memory may sleep.
+ For example the user memory may be residing on disk at this instant.
+ Thus we did our computation beforehand and now copy the data. Each
+ <function>put_user call</function> is filling in one byte of the buffer.
+ If it returns an error we inform the program that it passed us an
+ invalid buffer and abort.
+ </para>
+ <para>
+ Having written the data we blank the rest of the buffer that was read
+ and report the read as being successful.
+ </para>
+ </chapter>
+
+ <chapter id="debugging">
+ <title>Debugging the mouse driver</title>
+
+ <para>
+ We now have an almost perfectly usable mouse driver. If you were to
+ actually try and use it however you would eventually find a couple of
+ problems with it. A few programs will also not work with as it does not
+ yet support asynchronous I/O.
+ </para>
+ <para>
+ First let us look at the bugs. The most obvious one isn't really a driver
+ bug but a failure to consider the consequences. Imagine you bumped the
+ mouse hard by accident and sent it skittering across the desk. The mouse
+ interrupt routine will add up all that movement and report it in steps of
+ 127 until it has reported all of it. Clearly there is a point beyond
+ which mouse movement isn't worth reporting. We need to add this as a
+ limit to the interrupt handler:
+ </para>
+
+ <programlisting>
+static void ourmouse_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+{
+ char delta_x;
+ char delta_y;
+ unsigned char new_buttons;
+
+ delta_x = inb(OURMOUSE_BASE);
+ delta_y = inb(OURMOUSE_BASE+1);
+ new_buttons = inb(OURMOUSE_BASE+2);
+
+ if(delta_x || delta_y || new_buttons != mouse_buttons)
+ {
+ /* Something happened */
+
+ spin_lock(&amp;mouse_lock);
+ mouse_event = 1;
+ mouse_dx += delta_x;
+ mouse_dy += delta_y;
+
+ if(mouse_dx &lt; -4096)
+ mouse_dx = -4096;
+ if(mouse_dx &gt; 4096)
+ mouse_dx = 4096;
+
+ if(mouse_dy &lt; -4096)
+ mouse_dy = -4096;
+ if(mouse_dy &gt; 4096)
+ mouse_dy = 4096;
+
+ mouse_buttons = new_buttons;
+ spin_unlock(&amp;mouse_lock);
+
+ wake_up_interruptible(&amp;mouse_wait);
+ }
+}
+ </programlisting>
+
+ <para>
+ By adding these checks we limit the range of accumulated movement to
+ something sensible.
+ </para>
+ <para>
+ The second bug is a bit more subtle, and that is perhaps why this is
+ such a common mistake. Remember, I said the waiting loop for the read
+ handler had a bug in it. Think about what happens when we execute:
+ </para>
+
+ <programlisting>
+ while(!mouse_event)
+ {
+ </programlisting>
+
+ <para>
+ and an interrupt occurs at this point here. This causes a mouse movement
+ and wakes up the queue.
+ </para>
+
+ <programlisting>
+ interruptible_sleep_on(&amp;mouse_wait);
+ </programlisting>
+
+ <para>
+ Now we sleep on the queue. We missed the wake up and the application
+ will not see an event until the next mouse event occurs. This will
+ lead to just the odd instance when a mouse button gets delayed. The
+ consequences to the user will probably be almost undetectable with a
+ mouse driver. With other drivers this bug could be a lot more severe.
+ </para>
+ <para>
+ There are two ways to solve this. The first is to disable interrupts
+ during the testing and the sleep. This works because when a task sleeps
+ it ceases to disable interrupts, and when it resumes it disables them
+ again. Our code thus becomes:
+ </para>
+
+ <programlisting>
+ save_flags(flags);
+ cli();
+
+ while(!mouse_event)
+ {
+ if(file-&gt;f_flags&amp;O_NDELAY)
+ {
+ restore_flags(flags);
+ return -EAGAIN;
+ }
+ interruptible_sleep_on(&amp;mouse_wait);
+ if(signal_pending(current))
+ {
+ restore_flags(flags);
+ return -ERESTARTSYS;
+ }
+ }
+ restore_flags(flags);
+ </programlisting>
+
+ <para>
+ This is the sledgehammer approach. It works but it means we spend a
+ lot more time turning interrupts on and off. It also affects
+ interrupts globally and has bad properties on multiprocessor machines
+ where turning interrupts off globally is not a simple operation, but
+ instead involves kicking each processor, waiting for them to disable
+ interrupts and reply.
+ </para>
+ <para>
+ The real problem is the race between the event testing and the sleeping.
+ We can avoid that by using the scheduling functions more directly.
+ Indeed this is the way they generally should be used for an interrupt.
+ </para>
+
+ <programlisting>
+ struct wait_queue wait = { current, NULL };
+
+ add_wait_queue(&amp;mouse_wait, &amp;wait);
+ current-&gt;state = TASK_INTERRUPTIBLE;
+
+ while(!mouse_event)
+ {
+ if(file-&gt;f_flags&amp;O_NDELAY)
+ {
+ remove_wait_queue(&amp;mouse_wait, &amp;wait);
+ current-&gt;state = TASK_RUNNING;
+ return -EWOULDBLOCK;
+ }
+ if(signal_pending(current))
+ {
+ remove_wait_queue(&amp;mouse_wait, &amp;wait);
+ current-&gt;state = TASK_RUNNING;
+ return -ERESTARTSYS;
+ }
+ schedule();
+ current-&gt;state = TASK_INTERRUPTIBLE;
+ }
+
+ remove_wait_wait(&amp;mouse_wait, &amp;wait);
+ current-&gt;state = TASK_RUNNING;
+ </programlisting>
+
+ <para>
+ At first sight this probably looks like deep magic. To understand how
+ this works you need to understand how scheduling and events work on
+ Linux. Having a good grasp of this is one of the keys to writing clean
+ efficient device drivers.
+ </para>
+ <para>
+ <function>add_wait_queue</function> does what its name suggests. It adds
+ an entry to the <varname>mouse_wait</varname> list. The entry in this
+ case is the entry for our current process (<varname>current</varname>
+ is the current task pointer).
+ </para>
+ <para>
+ So we start by adding an entry for ourself onto the
+ <varname>mouse_wait</varname> list. This does not put us to sleep
+ however. We are merely tagged onto the list.
+ </para>
+ <para>
+ Next we set our status to <constant>TASK_INTERRUPTIBLE</constant>. Again
+ this does not mean we are now asleep. This flag says what should happen
+ next time the process sleeps. <constant>TASK_INTERRUPTIBLE</constant> says
+ that the process should not be rescheduled. It will run from now until it
+ sleeps and then will need to be woken up.
+ </para>
+ <para>
+ The <function>wakeup_interruptible</function> call in the interrupt
+ handler can now be explained in more detail. This function is also very
+ simple. It goes along the list of processes on the queue it is given and
+ any that are marked as <constant>TASK_INTERRUPTIBLE</constant> it changes
+ to <constant>TASK_RUNNING</constant> and tells the kernel that new
+ processes are runnable.
+ </para>
+ <para>
+ Behind all the wrappers in the original code what is happening is this
+ </para>
+
+ <procedure>
+ <step>
+ <para>
+ We add ourself to the mouse wait queue
+ </para>
+ </step>
+ <step>
+ <para>
+ We mark ourself as sleeping
+ </para>
+ </step>
+ <step>
+ <para>
+ We ask the kernel to schedule tasks again
+ </para>
+ </step>
+ <step>
+ <para>
+ The kernel sees we are asleep and schedules someone else.
+ </para>
+ </step>
+ <step>
+ <para>
+ The mouse interrupt sets our state to <constant>TASK_RUNNING</constant>
+ and makes a note that the kernel should reschedule tasks
+ </para>
+ </step>
+ <step>
+ <para>
+ The kernel sees we are running again and continues our execution
+ </para>
+ </step>
+ </procedure>
+ <para>
+ This is why the apparent magic works. Because we mark ourself as
+ <constant>TASK_INTERRUPTIBLE</constant> and as we add ourselves
+ to the queue before we check if there are events pending, the race
+ condition is removed.
+ </para>
+ <para>
+ Now if an interrupt occurs after we check the queue status and before
+ we call the <function>schedule</function> function in order to sleep,
+ things work out. Instead of missing an event, we are set back to
+ <constant>TASK_RUNNING</constant> by the mouse interrupt. We still call
+ <function>schedule</function> but it will continue running our task.
+ We go back around the loop and this time there may be an event.
+ </para>
+ <para>
+ There will not always be an event. Thus we set ourselves back to
+ <constant>TASK_INTERRUPTIBLE</constant> before resuming the loop.
+ Another process doing a read may already have cleared the event flag,
+ and if so we will need to go back to sleep again. Eventually we will
+ get our event and escape.
+ </para>
+ <para>
+ Finally when we exit the loop we remove ourselves from the
+ <varname>mouse_wait</varname> queue as we are no longer interested
+ in mouse events, and we set ourself back to
+ <constant>TASK_RUNNABLE</constant> as we do not wish to go to sleep
+ again just yet.
+ </para>
+ <note>
+ <title>Note</title>
+ <para>
+ This isn't an easy topic. Don't be afraid to reread the description a
+ few times and also look at other device drivers to see how it works.
+ Finally if you can't grasp it just yet, you can use the code as
+ boilerplate to write other drivers and trust me instead.
+ </para>
+ </note>
+ </chapter>
+
+ <chapter id="asyncio">
+ <title>Asynchronous I/O</title>
+ <para>
+ This leaves the missing feature - Asynchronous I/O. Normally UNIX
+ programs use the <function>poll</function> call (or its variant form
+ <function>select</function>) to wait for an event to occur on one of
+ multiple input or output devices. This model works well for most tasks
+ but because <function>poll</function> and <function>select</function>
+ wait for an event isn't suitable for tasks that are also continually
+ doing computation work. Such programs really want the kernel to kick
+ them when something happens rather than watch for events.
+ </para>
+ <para>
+ Poll is akin to having a row of lights in front of you. You can see at a
+ glance which ones if any are lit. You cannot however get anything useful
+ done while watching them. Asynchronous I/O uses signals which work more
+ like a door bell. Instead of you watching, it tells you that something
+ is up.
+ </para>
+ <para>
+ Asynchronous I/O sends the signal SIGIO to a user process when the I/O
+ events occur. In this case that means when people move the mouse. The
+ SIGIO signal causes the user process to jump to its signal handler and
+ execute code in that handler before returning to whatever was going on
+ previously. It is the application equivalent of an interrupt handler.
+ </para>
+ <para>
+ Most of the code needed for this operation is common to all its users.
+ The kernel provides a simple set of functions for managing asynchronous
+ I/O.
+ </para>
+ <para>
+ Our first job is to allow users to set asynchronous I/O on file handles.
+ To do that we need to add a new function to the file operations table for
+ our mouse:
+ </para>
+
+ <programlisting>
+struct file_operations our_mouse_fops = {
+ NULL, /* Mice don't seek */
+ read_mouse, /* You can read a mouse */
+ write_mouse, /* This won't do a lot */
+ NULL, /* No readdir - not a directory */
+ poll_mouse, /* Poll */
+ NULL, /* No ioctl calls */
+ NULL, /* No mmap */
+ open_mouse, /* Called on open */
+ NULL, /* Flush */
+ close_mouse, /* Called on close */
+ NULL, /* No fsync on a mouse */
+ fasync_mouse, /* Asynchronous I/O */
+};
+ </programlisting>
+
+ <para>
+ Once we have installed this entry the kernel knows we support
+ asynchronous I/O and will allow all the relevant operations on the
+ device. Whenever a user adds or removes asynchronous I/O notification
+ on a file handle it calls our <function>fasync_mouse</function> routine
+ we just added. This routine uses the helper functions to keep the queue
+ of handles up to date:
+ </para>
+
+ <programlisting>
+static struct fasync_struct *mouse_fasync = NULL;
+
+static int fasync_mouse(int fd, struct file *filp, int on)
+{
+ int retval = fasync_helper(fd, filp, on, &amp;mouse_fasync);
+
+ if (retval &lt; 0)
+ return retval;
+ return 0;
+}
+ </programlisting>
+
+ <para>
+ The fasync helper adds and deletes entries by managing the supplied
+ list. We also need to remove entries from this list when the file is
+ closed. This requires we add one line to our close function:
+ </para>
+
+ <programlisting>
+static int close_mouse(struct inode *inode, struct file *file)
+{
+ fasync_mouse(-1, file, 0)
+ if(--mouse_users)
+ return 0;
+ free_irq(OURMOUSE_IRQ, NULL);
+ MOD_DEC_USE_COUNT;
+ return 0;
+}
+ </programlisting>
+
+ <para>
+ When we close the file we now call our own fasync handler as if the
+ user had requested that this file cease to be used for asynchronous
+ I/O. This rather neatly cleans up any loose ends. We certainly don't
+ wait to deliver a signal for a file that no longer exists.
+ </para>
+ <para>
+ At this point the mouse driver supports all the asynchronous I/O
+ operations, and applications using them will not error. They won't
+ however work yet. We need to actually send the signals. Again the
+ kernel provides a function for handling this.
+ </para>
+ <para>
+ We update our interrupt handler a little:
+ </para>
+
+ <programlisting>
+static void ourmouse_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+{
+ char delta_x;
+ char delta_y;
+ unsigned char new_buttons;
+
+ delta_x = inb(OURMOUSE_BASE);
+ delta_y = inb(OURMOUSE_BASE+1);
+ new_buttons = inb(OURMOUSE_BASE+2);
+
+ if(delta_x || delta_y || new_buttons != mouse_buttons)
+ {
+ /* Something happened */
+
+ spin_lock(&amp;mouse_lock);
+ mouse_event = 1;
+ mouse_dx += delta_x;
+ mouse_dy += delta_y;
+
+ if(mouse_dx &lt; -4096)
+ mouse_dx = -4096;
+ if(mouse_dx &gt; 4096)
+ mouse_dx = 4096;
+
+ if(mouse_dy &lt; -4096)
+ mouse_dy = -4096;
+ if(mouse_dy &gt; 4096)
+ mouse_dy = 4096;
+
+ mouse_buttons = new_buttons;
+ spin_unlock(&amp;mouse_lock);
+
+ /* Now we do asynchronous I/O */
+ kill_fasync(&amp;mouse_fasync, SIGIO);
+
+ wake_up_interruptible(&amp;mouse_wait);
+ }
+}
+ </programlisting>
+
+ <para>
+ The new code simply calls the <function>kill_fasync</function> routine
+ provided by the kernel if the queue is non-empty. This sends the
+ required signal (SIGIO in this case) to the process each file handle
+ says should be informed about the exciting new mouse movement that
+ just happened.
+ </para>
+ <para>
+ With this in place and the bugs in the original version fixed, you now
+ have a fully functional mouse driver using the bus mouse protocol. It
+ will work with the <application>X window system</application>, will work
+ with <application>GPM</application> and should work with every other
+ application you need. <application>Doom</application> is of course the
+ ideal way to test your new mouse driver is functioning properly. Be sure
+ to test it thoroughly.
+ </para>
+ </chapter>
+</book>
+
diff --git a/Documentation/DocBook/via-audio.tmpl b/Documentation/DocBook/via-audio.tmpl
new file mode 100644
index 000000000..f1fc19a5d
--- /dev/null
+++ b/Documentation/DocBook/via-audio.tmpl
@@ -0,0 +1,383 @@
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[]>
+
+<book id="ViaAudioGuide">
+ <bookinfo>
+ <title>Via 686 Audio Driver for Linux</title>
+
+ <authorgroup>
+ <author>
+ <firstname>Jeff</firstname>
+ <surname>Garzik</surname>
+ <affiliation>
+ <address>
+ <email>jgarzik@mandrakesoft.com</email>
+ </address>
+ </affiliation>
+ </author>
+ </authorgroup>
+
+ <copyright>
+ <year>2000</year>
+ <holder>Jeff Garzik</holder>
+ </copyright>
+
+ <legalnotice>
+ <para>
+ This documentation is free software; you can redistribute
+ it and/or modify it under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later
+ version.
+ </para>
+
+ <para>
+ This program is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+ </para>
+
+ <para>
+ You should have received a copy of the GNU General Public
+ License along with this program; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ MA 02111-1307 USA
+ </para>
+
+ <para>
+ For more details see the file COPYING in the source
+ distribution of Linux.
+ </para>
+ </legalnotice>
+ </bookinfo>
+
+<toc></toc>
+
+ <chapter id="intro">
+ <title>Introduction</title>
+ <para>
+ The Via VT82C686A and VT82C686A "super southbridge" chips contain
+ AC97-compatible audio logic which features dual full-duplex 16-bit stereo
+ PCM sound channels, plus a third PCM channel intended for use
+ in hardware-assisted FM synthesis.
+ </para>
+ <para>
+ The current Linux kernel audio driver for this family of chips
+ supports audio playback, but recording and hardware-assisted
+ FM support features are not yet available.
+ </para>
+ <para>
+ This driver supports any Linux kernel version after 2.3.50.
+ </para>
+ <para>
+ Please send bug reports to the mailing list <email>linux-via@gtf.org</email>.
+ To subscribe, e-mail <email>majordomo@gtf.org</email> with
+ </para>
+ <programlisting>
+ subscribe linux-via
+ </programlisting>
+ <para>
+ in the body of the message.
+ </para>
+ </chapter>
+
+ <chapter id="install">
+ <title>Driver Installation</title>
+ <para>
+ To use this audio driver, select the
+ CONFIG_SOUND_VIA82CXXX option in the section Sound during kernel configuration.
+ Follow the usual kernel procedures for rebuilding the kernel,
+ or building and installing driver modules.
+ </para>
+ <para>
+ To make this driver the default audio driver, you can add the
+ following to your /etc/conf.modules file:
+ </para>
+ <programlisting>
+ alias sound via82cxxx_audio
+ </programlisting>
+ <para>
+ Note that soundcore and ac97_codec support modules
+ are also required for working audio, in addition to
+ the via82cxxx_audio module itself.
+ </para>
+ </chapter>
+
+ <chapter id="reportbug">
+ <title>Submitting a bug report</title>
+ <sect1 id="bugrepdesc"><title>Description of problem</title>
+ <para>
+ Describe the application you were using to play/record sound, and how
+ to reproduce the problem.
+ </para>
+ </sect1>
+ <sect1 id="bugrepdiag"><title>Diagnostic output</title>
+ <para>
+ Obtain the via-audio-diag diagnostics program from
+ http://gtf.org/garzik/drivers/via82cxxx/ and provide a dump of the
+ audio chip's registers while the problem is occurring. Sample command line:
+ </para>
+ <programlisting>
+ ./via-audio-diag -aps > diag-output.txt
+ </programlisting>
+ </sect1>
+ <sect1 id="bugrepdebug"><title>Driver debug output</title>
+ <para>
+ Define <constant>VIA_DEBUG</constant> at the beginning of the driver, then capture and email
+ the kernel log output. This can be viewed in the system kernel log (if
+ enabled), or via the dmesg program. Sample command line:
+ </para>
+ <programlisting>
+ dmesg > /tmp/dmesg-output.txt
+ </programlisting>
+ </sect1>
+ <sect1 id="bugrepprintk"><title>Bigger kernel message buffer</title>
+ <para>
+ If you wish to increase the size of the buffer displayed by dmesg, then
+ change the <constant>LOG_BUF_LEN</constant> macro at the top of linux/kernel/printk.c, recompile
+ your kernel, and pass the <constant>LOG_BUF_LEN</constant> value to dmesg. Sample command line with
+ <constant>LOG_BUF_LEN</constant> == 32768:
+ </para>
+ <programlisting>
+ dmesg -s 32768 > /tmp/dmesg-output.txt
+ </programlisting>
+ </sect1>
+ </chapter>
+
+ <chapter id="bugs">
+ <title>Known Bugs And Assumptions</title>
+ <para>
+ <variablelist>
+ <varlistentry><term>Recording support</term>
+ <listitem>
+ <para>
+ Recording support is currently missing.
+ </para>
+ </listitem></varlistentry>
+
+ <varlistentry><term>MMAP support</term>
+ <listitem>
+ <para>
+ MMAP support is currently missing. Make sure to
+ test with Quake.
+ </para>
+ </listitem></varlistentry>
+
+ <varlistentry><term>AC97 codec timeout during init</term>
+ <listitem>
+ <para>
+ A warning message "via82cxxx: timeout while reading AC97
+ codec" is printed during driver initialization. This
+ message can safely be ignored.
+ </para>
+ </listitem></varlistentry>
+
+ <varlistentry><term>Low volume</term>
+ <listitem>
+ <para>
+ Volume too low on many systems. Workaround: use mixer program
+ such as xmixer to increase volume.
+ </para>
+ </listitem></varlistentry>
+
+ <varlistentry><term>RealPlayer trouble</term>
+ <listitem>
+ <para>
+ RealPlayer output very scratchy. Workaround: use esd, and
+ configure RealPlayer to output to esd.
+ </para>
+ </listitem></varlistentry>
+
+ <varlistentry><term>Broken apps</term>
+ <listitem>
+ <para>
+ Applications which attempt to open the sound device in read/write
+ mode (O_RDWR) will fail. This is incorrect OSS behavior, but since
+ this driver will eventually support recording as well as playback,
+ we will be able to (in the future) support even broken programs which
+ unconditionally use O_RDWR.
+ </para>
+ </listitem></varlistentry>
+
+ </variablelist>
+
+ </para>
+ </chapter>
+
+ <chapter id="thanks">
+ <title>Thanks</title>
+ <para>
+ Via for providing e-mail support, specs, and NDA'd source code.
+ </para>
+ <para>
+ MandrakeSoft for providing hacking time.
+ </para>
+ <para>
+ AC97 mixer interface fixes and debugging by Ron Cemer <email>roncemer@gte.net</email>.
+ </para>
+ </chapter>
+
+ <chapter id="notes">
+ <title>Random Notes</title>
+ <para>
+ Two /proc pseudo-files provide diagnostic information. This is generally
+ not useful to most users. Power users can disable VIA_PROC_FS macro in the
+ driver source code, and remove the /proc support code. In any case, once
+ version 2.0.0 is released, the /proc support code will be disabled by
+ default. Available /proc pseudo-files:
+ </para>
+ <programlisting>
+ /proc/driver/via/0/info
+ /proc/driver/via/0/ac97
+ </programlisting>
+ <para>
+ This driver by default supports all PCI audio devices which report
+ a vendor id of 0x1106, and a device id of 0x3058. Subsystem vendor
+ and device ids are not examined.
+ </para>
+ <para>
+ Only supports a single sound chip, as this is a motherboard chipset.
+ Some architecture remains for multiple cards, feel free to submit
+ a patch to clean some of that up.
+ </para>
+ <para>
+ No consideration for SMP, this chipset is not known to be found on
+ any SMP motherboards. However, spin_locks must be used anyway in order
+ to handle interrupts correctly.
+ </para>
+ <para>
+ GNU indent formatting options: -kr -i8 -pcs
+ </para>
+ <para>
+ Via has graciously donated e-mail support and source code to help further
+ the development of this driver. Their assistance has been invaluable
+ in the design and coding of the next major version of this driver.
+ </para>
+ <para>
+ The Via audio chip apparently provides a second PCM scatter-gather
+ DMA channel just for FM data, but does not have a full hardware MIDI
+ processor. I haven't put much thought towards a solution here, but it
+ might involve using SoftOSS midi wave table, or simply disabling MIDI
+ support altogether and using the FM PCM channel as a second (input? output?)
+ </para>
+ </chapter>
+
+ <chapter id="changelog">
+ <title>Driver ChangeLog</title>
+
+<sect1 id="version118"><title>
+Version 1.1.8
+</title>
+ <itemizedlist spacing=compact>
+ <listitem>
+ <para>
+ Clean up interrupt handler output. Fixes the following kernel error message:
+ </para>
+ <programlisting>
+ unhandled interrupt ...
+ </programlisting>
+ </listitem>
+
+ <listitem>
+ <para>
+ Convert documentation to DocBook, so that PDF, HTML and PostScript (.ps) output is readily
+ available.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+</sect1>
+
+<sect1 id="version117"><title>
+Version 1.1.7
+</title>
+ <itemizedlist spacing=compact>
+ <listitem>
+ <para>
+ Fix module unload bug where mixer device left registered
+ after driver exit
+ </para>
+ </listitem>
+ </itemizedlist>
+</sect1>
+
+<sect1 id="version116"><title>
+Version 1.1.6
+</title>
+ <itemizedlist spacing=compact>
+ <listitem>
+ <para>
+ Rewrite via_set_rate to mimic ALSA basic AC97 rate setting
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Remove much dead code
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Complete spin_lock_irqsave -> spin_lock_irq conversion in via_dsp_ioctl
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Fix build problem in via_dsp_ioctl
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Optimize included headers to eliminate headers found in linux/drivers/sound
+ </para>
+ </listitem>
+ </itemizedlist>
+</sect1>
+
+<sect1 id="version115"><title>
+Version 1.1.5
+</title>
+ <itemizedlist spacing=compact>
+ <listitem>
+ <para>
+ Disable some overly-verbose debugging code
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Remove unnecessary sound locks
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Fix some ioctls for better time resolution
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Begin spin_lock_irqsave -> spin_lock_irq conversion in via_dsp_ioctl
+ </para>
+ </listitem>
+ </itemizedlist>
+</sect1>
+
+<sect1 id="version114"><title>
+Version 1.1.4
+</title>
+ <itemizedlist spacing=compact>
+ <listitem>
+ <para>
+ Completed rewrite of driver. Eliminated SoundBlaster compatibility
+ completely, and now uses the much-faster scatter-gather DMA engine.
+ </para>
+ </listitem>
+ </itemizedlist>
+</sect1>
+
+ </chapter>
+
+ <chapter id="intfunctions">
+ <title>Internal Functions</title>
+!Idrivers/sound/via82cxxx_audio.c
+ </chapter>
+
+</book>
diff --git a/Documentation/arm/README b/Documentation/arm/README
index 8e927b6f5..95e9bddd5 100644
--- a/Documentation/arm/README
+++ b/Documentation/arm/README
@@ -1,9 +1,7 @@
- ARM Linux 2.2.3
- ===============
+ ARM Linux 2.4.0test1
+ ====================
- * NOTE * The ARM support in the mainstream Linux kernel sources
- is not up to date. Please check ftp.arm.uk.linux.org:/pub/armlinux
- for latest updates.
+ Please check ftp.arm.linux.org.uk:/pub/armlinux for latest updates.
Compilation of kernel
---------------------
@@ -13,10 +11,10 @@ Compilation of kernel
and EGCS are good compilers. Note that GCC-2.7.2.2 ELF is rare, and
you probably don't have it.
- To build ARM Linux natively, you shouldn't have to alter the ARCH = line in
- the top level Makefile. However, if you don't have the ARM Linux ELF tools
- installed as default, then you should change the CROSS_COMPILE line as
- detailed below.
+ To build ARM Linux natively, you shouldn't have to alter the ARCH = line
+ in the top level Makefile. However, if you don't have the ARM Linux ELF
+ tools installed as default, then you should change the CROSS_COMPILE
+ line as detailed below.
If you wish to cross-compile, then alter the following lines in the top
level make file:
@@ -41,27 +39,28 @@ Compilation of kernel
Bug reports etc
---------------
- Please send patches, bug reports and code for the ARM Linux project
- to linux@arm.linux.org.uk Patches will not be included into future
- kernels unless they come to me (or the relevant person concerned).
+ Please send patches to the patch system. For more information, see
+ http://www.arm.linux.org.uk/patches/info.html Always include some
+ explanation as to what the patch does and why it is needed.
+
+ Bug reports should be sent to linux-arm-kernel@lists.arm.linux.org.uk,
+ or submitted through the web form at
+ http://www.arm.linux.org.uk/forms/solution.shtml
When sending bug reports, please ensure that they contain all relevant
information, eg. the kernel messages that were printed before/during
the problem, what you were doing, etc.
- For patches, please include some explanation as to what the patch does
- and why (if relevant).
-
Modules
-------
Although modularisation is supported (and required for the FP emulator),
- each module on an arm2/arm250/arm3 machine when is loaded will take
- memory up to the next 32k boundary due to the size of the pages. Hence is
- modularisation on these machines really worth it?
+ each module on an ARM2/ARM250/ARM3 machine when is loaded will take
+ memory up to the next 32k boundary due to the size of the pages.
+ Therefore, modularisation on these machines really worth it?
- However, arm6 and up machines allow modules to take multiples of 4k, and
+ However, ARM6 and up machines allow modules to take multiples of 4k, and
as such Acorn RiscPCs and other architectures using these processors can
make good use of modularisation.
@@ -124,7 +123,7 @@ Kernel entry (head-armv.S)
The initial entry into the kernel made via head-armv.S uses architecture
independent code. The architecture is selected by the value of 'r1' on
entry, which must be kept unique. You can register a new architecture
- by mailing the following details to rmk@arm.uk.linux.org. Please give
+ by mailing the following details to rmk@arm.linux.org.uk Please give
the mail a subject of 'Register new architecture':
Name: <name of your architecture>
@@ -133,7 +132,7 @@ Kernel entry (head-armv.S)
<description of your architecture>
Please follow this format - it is an automated system. You should
- receive a reply the next day.
+ receive a reply within one day.
---
-Russell King (27/03/1999)
+Russell King (12/06/2000)
diff --git a/Documentation/arm/SA1100/LART b/Documentation/arm/SA1100/LART
index b7cdb8d90..2f73f513e 100644
--- a/Documentation/arm/SA1100/LART
+++ b/Documentation/arm/SA1100/LART
@@ -10,6 +10,5 @@ daughterboards. A quad Ethernet / IDE / PS2 / sound daughterboard
is under development, with plenty of others in different stages of
planning.
-The designs for this board have been released under a GPL-like license;
-
-For lot more info, see the LART page at http://www.lart.tudelft.nl.
+The hardware designs for this board have been released under an open license;
+see the LART page at http://www.lart.tudelft.nl/ for more information.
diff --git a/Documentation/filesystems/bfs.txt b/Documentation/filesystems/bfs.txt
index 892fb5137..d2841e0bc 100644
--- a/Documentation/filesystems/bfs.txt
+++ b/Documentation/filesystems/bfs.txt
@@ -54,4 +54,4 @@ The first 4 bytes should be 0x1badface.
If you have any patches, questions or suggestions regarding this BFS
implementation please contact the author:
-Tigran A. Aivazian <tigran@ocston.org>.
+Tigran A. Aivazian <tigran@veritas.com>
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
index 7256f5aaf..7d1f5ca72 100644
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -176,7 +176,7 @@ filesystem. As of kernel 2.1.99, the following members are defined:
struct super_operations {
void (*read_inode) (struct inode *);
- void (*write_inode) (struct inode *);
+ void (*write_inode) (struct inode *, int);
void (*put_inode) (struct inode *);
void (*delete_inode) (struct inode *);
int (*notify_change) (struct dentry *, struct iattr *);
@@ -198,7 +198,8 @@ or bottom half).
read. Other members are filled in by this method
write_inode: this method is called when the VFS needs to write an
- inode to disc
+ inode to disc. The second parameter indicates whether the write
+ should be synchronous or not, not all filesystems check this flag.
put_inode: called when the VFS inode is removed from the inode
cache. This method is optional
diff --git a/Documentation/floppy.txt b/Documentation/floppy.txt
index 7bd117ee8..463937232 100644
--- a/Documentation/floppy.txt
+++ b/Documentation/floppy.txt
@@ -201,11 +201,10 @@ It also contains additional documentation about the floppy driver.
The latest version can be found at fdutils homepage:
http://fdutils.linux.lu
-The fdutils-5.3 release can be found at:
- http://fdutils.linux.lu/fdutils-5.3.src.tar.gz
- http://www.tux.org/pub/knaff/fdutils/fdutils-5.3.src.tar.gz
- ftp://tsx-11.mit.edu/pub/linux/sources/sbin/fdutils-5.3.src.tar.gz
- ftp://metalab.unc.edu/pub/Linux/utils/disk-management/fdutils-5.3.src.tar.gz
+The fdutils-5.4 release can be found at:
+ http://fdutils.linux.lu/fdutils-5.4.src.tar.gz
+ http://www.tux.org/pub/knaff/fdutils/fdutils-5.4.src.tar.gz
+ ftp://metalab.unc.edu/pub/Linux/utils/disk-management/fdutils-5.4.src.tar.gz
Reporting problems about the floppy driver
==========================================
diff --git a/Documentation/ioctl-number.txt b/Documentation/ioctl-number.txt
index 273c954e5..366f2dbd7 100644
--- a/Documentation/ioctl-number.txt
+++ b/Documentation/ioctl-number.txt
@@ -74,6 +74,8 @@ Code Seq# Include File Comments
0x22 all scsi/sg.h
'1' 00-1F <linux/timepps.h> PPS kit from Ulrich Windl
<ftp://ftp.de.kernel.org/pub/linux/daemons/ntp/PPS/>
+'6' 00-10 <asm-i386/processor.h> Intel P6 microcode update driver
+ <tigran@veritas.com>
'8' all SNP8023 advanced NIC card
<mailto:mcr@solidum.com>
'A' 00-1F linux/apm_bios.h
diff --git a/Documentation/kernel-doc-nano-HOWTO.txt b/Documentation/kernel-doc-nano-HOWTO.txt
index 585d557ab..228a0602d 100644
--- a/Documentation/kernel-doc-nano-HOWTO.txt
+++ b/Documentation/kernel-doc-nano-HOWTO.txt
@@ -57,7 +57,7 @@ format of your choice (for example, 'db2html ...').
If you want to see man pages instead, you can do this:
$ cd linux
-$ scripts/kernel-doc -man $(find -name '*.c') | split-man.pl /tmp/man
+$ scripts/kernel-doc -man $(find -name '*.c' '*.h') | split-man.pl /tmp/man
Here is split-man.pl:
@@ -123,6 +123,25 @@ patterns, which are highlighted appropriately.
Take a look around the source tree for examples.
+
+How to make new SGML template files
+-----------------------------------
+
+SGML template files (*.tmpl) are like normal SGML files, except that
+they can contain escape sequences where extracted documentation should
+be inserted.
+
+!E<filename> is replaced by the documentation, in <filename>, for
+functions that are exported using EXPORT_SYMBOL: the function list is
+collected from files listed in Documentation/DocBook/Makefile.
+
+!I<filename> is replaced by the documentation for functions that are
+_not_ exported using EXPORT_SYMBOL.
+
+!F<filename> <function [functions...]> is replaced by the
+documentation, in <filename>, for the functions listed.
+
+
Tim.
*/ <twaugh@redhat.com>
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 2821f515d..611d8be80 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1,8 +1,8 @@
-June 1999 Kernel Parameters v2.2.9
+June 2000 Kernel Parameters v2.4.0
~~~~~~~~~~~~~~~~~
-The following is a consolidated list of the kernel parameters as defined
-in the file init/main.c and sorted into English Dictionary order (defined
+The following is a consolidated list of the kernel parameters as implemented
+by the __setup() macro and sorted into English Dictionary order (defined
as ignoring all punctuation and sorting digits before letters in a case
insensitive manner), and with descriptions where known.
@@ -10,10 +10,13 @@ The text in square brackets at the beginning of the description state the
restrictions on the kernel for the said kernel parameter to be valid. The
restrictions referred to are that the relevant option is valid if:
+ ACPI ACPI support is enabled.
APIC APIC support is enabled.
APM Advanced Power Management support is enabled.
AX25 Appropriate AX.25 support is enabled.
CD Appropriate CD support is enabled.
+ DEVFS devfs support is enabled.
+ DRM Direct Rendering Management support is enabled.
EIDE EIDE/ATAPI support is enabled.
FB The frame buffer device is enabled.
HW Appropriate hardware is enabled.
@@ -21,6 +24,7 @@ restrictions referred to are that the relevant option is valid if:
JOY Appropriate joystick support is enabled.
LP Printer support is enabled.
LOOP Loopback device support is enabled.
+ M68k M68k architecture is enabled.
MCA MCA bus support is enabled.
MDA MDA console support is enabled.
MOUSE Appropriate mouse support is enabled.
@@ -54,10 +58,20 @@ running once the system is up.
53c7xx= [HW,SCSI] Amiga SCSI controllers.
+ acpi= [HW,ACPI] Advanced Configuration and Power Interface
+
+ ad1816= [HW,SOUND]
+
+ ad1848= [HW,SOUND]
+
adb_buttons= [HW,MOUSE]
+ adlib= [HW,SOUND]
+
advansys= [HW,SCSI]
+ aedsp16= [HW,SOUND]
+
aha152x= [HW,SCSI]
aha1542= [HW,SCSI]
@@ -68,16 +82,22 @@ running once the system is up.
apm= [APM] Advanced Power Management.
+ applicom= [HW]
+
arcrimi= [HW,NET]
- ataflop= [HW, M68k]
+ ataflop= [HW,M68k]
- atamouse= [HW,MOUSE] Atari Mouse.
+ atarimouse= [HW,MOUSE] Atari Mouse.
atascsi= [HW,SCSI] Atari SCSI.
+ awe= [HW,SOUND]
+
aztcd= [HW,CD] Aztec CD driver.
+ baycom_epp= [HW,AX25]
+
baycom_par= [HW,AX25] BayCom Parallel Port AX.25 Modem.
baycom_ser_fdx= [HW,AX25] BayCom Serial Port AX.25 Modem in Full
@@ -92,6 +112,8 @@ running once the system is up.
cdu31a= [HW,CD]
+ chandev= [HW,NET]
+
cm206= [HW,CD]
com20020= [HW,NET]
@@ -100,15 +122,29 @@ running once the system is up.
com90xx= [HW,NET]
+ condev= [HW]
+
console= [KNL] output console + comm spec (speed, control,
parity).
+ cpia_pp= [HW,PPT]
+
+ cs4232= [HW,SOUND]
+
+ cs89x0_dma= [HW,NET]
+
+ ctc= [HW,NET]
+
cyclades= [HW,SERIAL] Cyclades multi-serial port adapter.
+
+ dasd= [HW,NET]
debug [KNL] Enable kernel debugging (events log level).
decnet= [HW,NET]
+ devfs= [DEVFS]
+
digi= [HW,SERIAL] io parameters + enable/disable command.
digiepca= [HW,SERIAL]
@@ -126,6 +162,12 @@ running once the system is up.
edb= [HW,PS2]
+ eicon= [HW,ISDN]
+
+ es1370= [HW,SOUND]
+
+ es1371= [HW,SOUND]
+
ether= [HW,NET] Ethernet cards parameters (iomem, irq,
dev_name).
@@ -141,6 +183,8 @@ running once the system is up.
gscd= [HW,CD]
+ gus= [HW,SOUND]
+
gvp11= [HW,SCSI]
hd= [EIDE] (E)IDE hard drive subsystem geometry
@@ -148,8 +192,6 @@ running once the system is up.
hfmodem= [HW,AX25]
- HiSax= [HW,ISDN]
-
hisax= [HW,ISDN]
in2000= [HW,SCSI]
@@ -166,15 +208,11 @@ running once the system is up.
idebus= [HW] (E)IDE subsystem : VLB/PCI bus speed.
- in2000= [HW,SCSI]
-
- init= [KNL] Default init level.
-
ip= [PNP]
isp16= [HW,CD]
- js_14= [HW,JOY]
+ iucv= [HW,NET]
js_am= [HW,JOY]
@@ -194,6 +232,10 @@ running once the system is up.
js_db9_3= [HW,JOY]
+ js_l4= [HW,JOY]
+
+ js_pci= [HW,JOY,PCI]
+
js_tg= [HW,JOY]
js_tg_2= [HW,JOY]
@@ -204,6 +246,8 @@ running once the system is up.
load_ramdisk= [RAM] List of ramdisks to load from floppy.
+ logi_busmouse= [HW, MOUSE]
+
lp=0 [LP] Specify parallel ports to use, e.g,
lp=port[,port...] lp=none,parport0 (lp0 not configured, lp1 uses
lp=reset first parallel port). 'lp=0' disables the
@@ -224,6 +268,12 @@ running once the system is up.
mac5380= [HW,SCSI]
+ mac53c9x= [HW,SCSI]
+
+ mad16= [HW,SOUND]
+
+ maui= [HW,SOUND]
+
max_loop=[0-255] [LOOP] Set the maximum number of loopback devices
that can be mounted.
@@ -240,11 +290,19 @@ running once the system is up.
md= [HW] RAID subsystems devices and level.
+ mdisk= [HW]
+
mdacon= [MDA]
+ megaraid= [HW,SCSI]
+
mem= [KNL] force use XX Mb of memory when the kernel is not
able to see the whole system memory or for test.
+ memfrac= [KNL]
+
+ mpu401= [HW,SOUND]
+
msmouse= [HW,MOUSE] Microsoft Mouse.
ncr5380= [HW,SCSI]
@@ -257,35 +315,53 @@ running once the system is up.
ncr53c8xx= [HW,SCSI]
+ netdev= [NET]
+
nfsaddrs= [NFS]
nfsroot= [NFS] nfs root filesystem for disk-less boxes.
- nmi_watchdog= [KNL, BUGS=ix86] debugging features for SMP kernels.
+ nmi_watchdog= [KNL,BUGS=ix86] debugging features for SMP kernels.
no387 [BUGS=ix86] Tells the kernel to use the 387 maths
emulation library even if a 387 maths coprocessor
is present.
+ noalign [KNL,ARM]
+
noapic [SMP,APIC] Tells the kernel not to make use of any
APIC that may be present on the system.
noasync [HW, M68K] Disables async and sync negotiation for
all devices.
+ nocache [ARM]
+
nodisconnect [HW,SCSI, M68K] Disables SCSI disconnects.
- no-halt [BUGS=ix86]
+ nohlt [BUGS=ARM]
+
+ no-hlt [BUGS=ix86]
noinitrd [RAM] Tells the kernel not to load any configured
initial RAM disk.
+ nointroute [IA-64]
+
no-scroll [VGA]
nosmp [SMP] Tells an SMP kernel to act as a UP kernel.
nosync [HW, M68K] Disables sync negotiation for all devices.
+ nowb [ARM]
+
+ opl3= [HW,SOUND]
+
+ opl3sa= [HW,SOUND]
+
+ opl3sa2= [HW,SOUND]
+
optcd= [HW,CD]
panic= [KNL] kernel behaviour on panic.
@@ -305,6 +381,8 @@ running once the system is up.
order they are specified on the command
line, starting with parport0.
+ pas2= [HW,SOUND]
+
pas16= [HW,SCSI]
pcbit= [HW,ISDN]
@@ -329,10 +407,17 @@ running once the system is up.
prompt_ramdisk= [RAM] List of RAM disks to prompt for floppy disk
before loading.
+ pss= [HW,SOUND]
+
pt. [PARIDE]
+ quiet= [KNL] Disable log messages.
+
ramdisk= [RAM] Sizes of RAM disks in kilobytes [deprecated].
+ ramdisk_blocksize=
+ [RAM]
+
ramdisk_size= [RAM] New name for the ramdisk parameter.
ramdisk_start= [RAM] Starting block of RAM disk image (so you can
@@ -352,12 +437,27 @@ running once the system is up.
S [KNL] run init in single mode.
+ sb= [HW,SOUND]
+
sbpcd= [HW,CD] Soundblaster CD adapter.
scsi_logging= [SCSI]
+ scsihosts= [SCSI]
+
+ sg_def_reserved_size=
+ [SCSI]
+
+ sgalaxy= [HW,SOUND]
+
+ sim710= [SCSI,HW]
+
sjcd= [HW,CD]
+ smart2= [HW]
+
+ sonicvibes= [HW,SOUND]
+
sonycd535= [HW,CD]
sound= [SOUND]
@@ -366,7 +466,9 @@ running once the system is up.
specialix= [HW,SERIAL] Specialix multi-serial port adapter.
- st= [HW] SCSI tape parameters (buffers, etc.).
+ sscape= [HW,SOUND]
+
+ st= [HW,SCSI] SCSI tape parameters (buffers, etc.).
st0x= [HW,SCSI]
@@ -380,19 +482,35 @@ running once the system is up.
t128= [HW,SCSI]
+ tdfx= [HW,DRM]
+
tmc8xx= [HW,SCSI]
tmscsim= [HW,SCSI]
tp720= [HW,PS2]
+ trix= [HW,SOUND]
+
u14-34f= [HW,SCSI]
+ uart401= [HW,SOUND]
+
+ uart6850= [HW,SOUND]
+
+ usbfix [BUGS=IA-64]
+
video= [FB] frame buffer configuration.
vga= [KNL] on ix386, enable to choose a peculiar video mode
(use vga=ask for menu).
+ vmhalt= [KNL,S390]
+
+ vmpoff= [KNL,S390]
+
+ waveartist= [HW,SOUND]
+
wd33c93= [HW,SCSI]
wd7000= [HW,SCSI]
diff --git a/Documentation/md.txt b/Documentation/md.txt
index 0107ca5d8..7e894fd97 100644
--- a/Documentation/md.txt
+++ b/Documentation/md.txt
@@ -1,15 +1,17 @@
-Tools that manage md devices can be found at sweet-smoke.ufr-info-p7.ibp.fr
-in public/Linux/md035.tar.gz.
+Tools that manage md devices can be found at
+ http://www.<country>.kernel.org/pub/linux/daemons/raid/....
- Marc ZYNGIER <zyngier@ufr-info-p7.ibp.fr>
---
You can boot (if you selected boot support in the configuration) with your md
-device with the following kernel command line:
+device with the following kernel command lines:
-md=<md device no.>,<raid level>,<chunk size factor>,<fault level>,dev0,dev1,...,devn
+for old raid arrays without persistant superblocks:
+ md=<md device no.>,<raid level>,<chunk size factor>,<fault level>,dev0,dev1,...,devn
+for raid arrays with persistant superblocks
+ md=<md device no.>,dev0,dev1,...,devn
+
md device no. = the number of the md device ...
0 means md0,
1 md1,
@@ -19,19 +21,16 @@ md device no. = the number of the md device ...
raid level = -1 linear mode
0 striped mode
- other modes are currently unsupported.
+ other modes are only supported with persistant super blocks
chunk size factor = (raid-0 and raid-1 only)
- Set the chunk size as PAGE_SIZE << n.
+ Set the chunk size as 4k << n.
-fault level = (raid-1 only)
- Set the maximum fault number as n.
- Currently unsupported due to lack of boot support for raid1.
+fault level = totally ignored
dev0-devn: e.g. /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1
-my loadlin line looks like this:
+A possible loadlin line (Harald Hoyer <HarryH@Royal.Net>) looks like this:
e:\loadlin\loadlin e:\zimage root=/dev/md0 md=0,0,4,0,/dev/hdb2,/dev/hdc3 ro
- Harald Hoyer <HarryH@Royal.Net>
diff --git a/Documentation/networking/8139too.txt b/Documentation/networking/8139too.txt
index 879bf6d2f..f27811a2a 100644
--- a/Documentation/networking/8139too.txt
+++ b/Documentation/networking/8139too.txt
@@ -181,11 +181,25 @@ User-mode (or maybe optional /proc) diagnostics program.
11) RTL8139C support untested.
+12) 10base-T support flaky or slow
+
Change History
--------------
+Version 0.9.7 - June 11, 2000
+
+* Fix support for older chips (RTL8139 early chips should now work again)
+
+
+Version 0.9.6 - May 30, 2000
+
+* Fix 4-extra-bytes bug
+ (thanks to Markus Westergren, via Santiago Garcia Mantinan)
+* Yet more improved chip recognition
+
+
Version 0.9.5 - May 17, 2000
* Improved chip version recognition
diff --git a/Documentation/networking/shaper.txt b/Documentation/networking/shaper.txt
index 53ff5aeff..1be0db8c0 100644
--- a/Documentation/networking/shaper.txt
+++ b/Documentation/networking/shaper.txt
@@ -1,6 +1,6 @@
Traffic Shaper For Linux
-This is the current ALPHA release of the traffic shaper for Linux. It works
+This is the current BETA release of the traffic shaper for Linux. It works
within the following limits:
o Minimum shaping speed is currently about 9600 baud (it can only
@@ -37,13 +37,12 @@ and will treat it as such unless patched. Note that for mrouted you can run
mrouted tunnels via a traffic shaper to control bandwidth usage.
The shaper is device/route based. This makes it very easy to use
-with any setup BUT less flexible. You may well want to combine this patch
-with Mike McLagan <mmclagan@linux.org>'s patch to allow routes to be
-specified by source/destination pairs.
+with any setup BUT less flexible. You may need to use iproute2 to set up
+multiple route tables to get the flexibility.
There is no "borrowing" or "sharing" scheme. This is a simple
-traffic limiter. I'd like to implement Van Jacobson and Sally Floyd's CBQ
-architecture into Linux one day (maybe in 2.1 sometime) and do this with
-style.
+traffic limiter. We implement Van Jacobson and Sally Floyd's CBQ
+architecture into Linux 2.2. THis is the preferred solution. Shaper is
+for simple or back compatible setups.
Alan
diff --git a/Documentation/networking/sk98lin.txt b/Documentation/networking/sk98lin.txt
index 863090170..510d2c4ef 100644
--- a/Documentation/networking/sk98lin.txt
+++ b/Documentation/networking/sk98lin.txt
@@ -3,7 +3,7 @@
sk98lin.txt created 11-Nov-1999
-Readme File for sk98lin.o v3.02
+Readme File for sk98lin.o v3.04
SK-NET Gigabit Ethernet Adapter SK-98xx Driver for Linux
This file contains
@@ -24,8 +24,8 @@ This file contains
============
The sk98lin driver supports the SysKonnect SK-NET Gigabit Ethernet
-Adapter SK-98xx family on Linux 2.2.x.
-It has been tested with Linux on Intel/x86 and ALPHA machines.
+Adapter SK-98xx family on Linux 2.2.x and above.
+It has been tested with Linux on Intel/x86, ALPHA and UltraSPARC machines.
From v3.02 on, the driver is integrated in the linux kernel source.
***
@@ -132,7 +132,8 @@ Parameters can be set at the command line while loading the
module with 'insmod'. The configuration tools of some distributions
can also give parameters to the driver module.
If you use the kernel module loader, you can set driver parameters
-in the file /etc/conf.modules. Insert a line of the form:
+in the file /etc/modules.conf (or old name: /etc/conf.modules).
+Insert a line of the form:
options sk98lin ...
@@ -281,14 +282,12 @@ The setting must be done on all adapters that can be reached by
the large frames. If one adapter is not set to receive large frames,
it will simply drop them.
-NOTE: If you look at the statistics (with netstat) in large frame
- mode while there is traffic on the net, you will see the
- RX error counter go up. This is because the adapter hardware
- counts received large frames as errors, although they are
- received correctly. So ignore this counter in that case.
-
You can switch back to the standard ethernet frame size with:
ifconfig eth0 mtu 1500
+
+To make this setting persitent, add a script with the 'ifconfig'
+line to the system startup sequence (named something like "S99sk98lin"
+in /etc/rc.d/rc2.d).
***
@@ -374,15 +373,27 @@ following information is available:
(8) HISTORY
===========
-VERSION 3.02
+VERSION 3.04 (In-Kernel version)
+Problems fixed:
+- Driver start failed on UltraSPARC
+- Rx checksum calculation for big endian machines did not work
+- Jumbo frames were counted as input-errors in netstat
+
+VERSION 3.03 (Standalone version)
+Problems fixed:
+- Compilation did not find script "printver.sh" if "." not in PATH
+Known limitations:
+- None
+
+VERSION 3.02 (In-Kernel version)
Problems fixed:
- None
New Features:
-- Integration in linux kernel source.
+- Integration in Linux kernel source (2.2.14 and 2.3.29)
Known limitations:
- None
-VERSION 3.02
+VERSION 3.01
Problems fixed:
- None
New Features:
diff --git a/Documentation/networking/tlan.txt b/Documentation/networking/tlan.txt
index 1485930fb..901eb44bc 100644
--- a/Documentation/networking/tlan.txt
+++ b/Documentation/networking/tlan.txt
@@ -2,7 +2,10 @@
(C) 1998 James Banks
(C) 1999-2000 Torben Mathiasen <tmm@image.dk, torben.mathiasen@compaq.com>
-TLAN driver for Linux, version 1.5
+For driver information/updates visit http://tlan.kernel.dk
+
+
+TLAN driver for Linux, version 1.8a
README
@@ -65,12 +68,15 @@ II. Driver Options
if a card which only supports 10Mbs is forced into 100Mbs
mode.)
- 5. If the driver is built into the kernel, you can use the 3rd
+ 5. You have to use speed=X duplex=Y together now. If you just
+ do "insmod tlan.o speed=100" the driver will do Auto-Neg.
+ To force a 10Mbps Half-Duplex link do "insmod tlan.o speed=10
+ duplex=1".
+
+ 6. If the driver is built into the kernel, you can use the 3rd
and 4th parameters to set aui and debug respectively. For
example:
-/* kernel-parameters are currently not supported. I will fix this asap. */
-
ether=0,0,0x1,0x7,eth0
This sets aui to 0x1 and debug to 0x7, assuming eth0 is a
@@ -79,11 +85,14 @@ II. Driver Options
The bits in the third byte are assigned as follows:
0x01 = aui
- 0x04 = use half duplex
- 0x08 = use full duplex
- 0x10 = use 10BaseT
- 0x20 = use 100BaseTx
+ 0x02 = use half duplex
+ 0x04 = use full duplex
+ 0x08 = use 10BaseT
+ 0x10 = use 100BaseTx
+ You also need to set both speed and duplex settings when forcing
+ speeds with kernel-parameters.
+ ether=0,0,0x12,0,eth0 will force link to 100Mbps Half-Duplex.
III. Things to try if you have problems.
1. Make sure your card's PCI id is among those listed in
@@ -94,5 +103,5 @@ III. Things to try if you have problems.
There is also a tlan mailing list which you can join by sending "subscribe tlan"
in the body of an email to majordomo@vuser.vu.union.edu.
-
+There is also a tlan website at http://tlan.kernel.dk
diff --git a/Documentation/networking/tulip.txt b/Documentation/networking/tulip.txt
index be41c4031..b936846af 100644
--- a/Documentation/networking/tulip.txt
+++ b/Documentation/networking/tulip.txt
@@ -142,6 +142,24 @@ tulip_core.c - Driver core (a.k.a. where "everything else" goes)
Version history
===============
+0.9.6 (May 31, 2000):
+* Revert 21143-related support flag patch
+* Add HPPA/media-table debugging printk
+
+0.9.5 (May 30, 2000):
+* HPPA support (willy@puffingroup)
+* CSR6 bits and tulip.h cleanup (Chris Smith)
+* Improve debugging messages a bit
+* Add delay after CSR13 write in t21142_start_nway
+* Remove unused ETHER_STATS code
+* Convert 'extern inline' to 'static inline' in tulip.h (Chris Smith)
+* Update DS21143 support flags in tulip_chip_info[]
+* Use spin_lock_irq, not _irqsave/restore, in tulip_start_xmit()
+* Add locking to set_rx_mode()
+* Fix race with chip setting DescOwned bit (Hal Murray)
+* Request 100% of PIO and MMIO resource space assigned to card
+* Remove error message from pci_enable_device failure
+
0.9.4.3 (April 14, 2000):
* mod_timer fix (Hal Murray)
* PNIC2 resusitation (Chris Smith)
diff --git a/Documentation/networking/vortex.txt b/Documentation/networking/vortex.txt
index 850ce4838..19d30079d 100644
--- a/Documentation/networking/vortex.txt
+++ b/Documentation/networking/vortex.txt
@@ -156,7 +156,12 @@ compaq_device_id=N
"Variables to work-around the Compaq PCI BIOS32 problem"....
+watchdog=N
+ Sets the time duration (in milliseconds) after which the kernel
+ decides that the transmitter has become stuck and needs to be reset.
+ This is mainly for debugging purposes. The default value is 400 (0.4
+ seconds).
Additional resources
--------------------
diff --git a/Documentation/parport.txt b/Documentation/parport.txt
index b4d7ff895..59e75b5fa 100644
--- a/Documentation/parport.txt
+++ b/Documentation/parport.txt
@@ -109,7 +109,10 @@ parport
| | |-- active
| | `-- lp
| | `-- timeslice
-| |-- hardware
+| |-- base-addr
+| |-- irq
+| |-- dma
+| |-- modes
| `-- spintime
`-- parport1
|-- autoprobe
@@ -121,7 +124,10 @@ parport
| |-- active
| `-- ppa
| `-- timeslice
- |-- hardware
+ |-- base-addr
+ |-- irq
+ |-- dma
+ |-- modes
`-- spintime
@@ -133,7 +139,28 @@ devices/active A list of the device drivers using that port. A "+"
string "none" means that there are no device drivers
using that port.
-hardware Parallel port's base address, IRQ line and DMA channel.
+base-addr Parallel port's base address, or addresses if the port
+ has more than one in which case they are separated
+ with tabs. These values might not have any sensible
+ meaning for some ports.
+
+irq Parallel port's IRQ, or -1 if none is being used.
+
+dma Parallel port's DMA channel, or -1 if none is being
+ used.
+
+modes Parallel port's hardware modes, comma-separated,
+ meaning:
+
+ PCSPP PC-style SPP registers are available.
+ TRISTATE Port is bidirectional.
+ COMPAT Hardware acceleration for printers is
+ available and will be used.
+ EPP Hardware acceleration for EPP protocol
+ is available and will be used.
+ ECP Hardware acceleration for ECP protocol
+ is available and will be used.
+ DMA DMA is available and will be used.
autoprobe Any IEEE-1284 device ID information that has been
acquired from the (non-IEEE 1284.3) device.
diff --git a/Documentation/powerpc/00-INDEX b/Documentation/powerpc/00-INDEX
index d4ed9cabe..2a46c07a8 100644
--- a/Documentation/powerpc/00-INDEX
+++ b/Documentation/powerpc/00-INDEX
@@ -1,7 +1,7 @@
Index of files in Documentation/powerpc. If you think something about
Linux/PPC needs an entry here, needs correction or you've written one
please mail me.
- Cort Dougan (cort@cs.nmt.edu)
+ Cort Dougan (cort@fsmlabs.com)
00-INDEX
- this file
@@ -9,6 +9,8 @@ ppc_htab.txt
- info about the Linux/PPC /proc/ppc_htab entry
smp.txt
- use and state info about Linux/PPC on MP machines
+SBC8260_memory_mapping.txt
+ - EST SBC8260 board info
sound.txt
- info on sound support under Linux/PPC
zImage_layout.txt
diff --git a/Documentation/powerpc/SBC8260_memory_mapping.txt b/Documentation/powerpc/SBC8260_memory_mapping.txt
new file mode 100644
index 000000000..c61827c07
--- /dev/null
+++ b/Documentation/powerpc/SBC8260_memory_mapping.txt
@@ -0,0 +1,197 @@
+Please mail me (Jon Diekema, diekema_jon@si.com or diekema@cideas.com)
+if you have questions, comments or corrections.
+
+ * EST SBC8260 Linux memory mapping rules
+
+ http://www.estc.com/
+ http://www.estc.com/products/boards/SBC8260-8240_ds.html
+
+ Initial conditions:
+ -------------------
+
+ Tasks that need to be perform by the boot ROM before control is
+ transferred to zImage (compressed Linux kernel):
+
+ - Define the IMMR to 0xf0000000
+
+ - Initialize the memory controller so that RAM is available at
+ physical address 0x00000000. On the SBC8260 is this 16M (64M)
+ SDRAM.
+
+ - The boot ROM should only clear the RAM that it is using.
+
+ The reason for doing this is to enhances the chances of a
+ successful post mortem on a Linux panic. One of the first
+ items to examine is the 16k (LOG_BUF_LEN) circular console
+ buffer called log_buf which is defined in kernel/printk.c.
+
+ - To enhance boot ROM performance, the I-cache can be enabled.
+
+ Date: Mon, 22 May 2000 14:21:10 -0700
+ From: Neil Russell <caret@c-side.com>
+
+ LiMon (LInux MONitor) runs with and starts Linux with MMU
+ off, I-cache enabled, D-cache disabled. The I-cache doesn't
+ need hints from the MMU to work correctly as the D-cache
+ does. No D-cache means no special code to handle devices in
+ the presence of cache (no snooping, etc). The use of the
+ I-cache means that the monitor can run acceptably fast
+ directly from ROM, rather than having to copy it to RAM.
+
+ - Build the board information structure (see
+ include/asm-ppc/est8260.h for its definition)
+
+ - The compressed Linux kernel (zImage) contains a bootstrap loader
+ that is position independent; you can load it into any RAM,
+ ROM or FLASH memory address >= 0x00500000 (above 5 MB), or
+ at its link address of 0x00400000 (4 MB).
+
+ Note: If zImage is loaded at its link address of 0x00400000 (4 MB),
+ then zImage will skip the step of moving itself to
+ its link address.
+
+ - Load R3 with the address of the board information structure
+
+ - Transfer control to zImage
+
+ - The Linux console port is SMC1, and the baud rate is controlled
+ from the bi_baudrate field of the board information structure.
+ On thing to keep in mind when picking the baud rate, is that
+ there is no flow control on the SMC ports. I would stick
+ with something safe and standard like 19200.
+
+ On the EST SBC8260, the SMC1 port is on the COM1 connector of
+ the board.
+
+
+ EST SBC8260 defaults:
+ ---------------------
+
+ Chip
+ Memory Sel Bus Use
+ --------------------- --- --- ----------------------------------
+ 0x00000000-0x03FFFFFF CS2 60x (16M or 64M)/64M SDRAM
+ 0x04000000-0x04FFFFFF CS4 local 4M/16M SDRAM (soldered to the board)
+ 0x21000000-0x21000000 CS7 60x 1B/64K Flash present detect (from the flash SIMM)
+ 0x21000001-0x21000001 CS7 60x 1B/64K Switches (read) and LEDs (write)
+ 0x22000000-0x2200FFFF CS5 60x 8K/64K EEPROM
+ 0xFC000000-0xFCFFFFFF CS6 60x 2M/16M flash (8 bits wide, soldered to the board)
+ 0xFE000000-0xFFFFFFFF CS0 60x 4M/16M flash (SIMM)
+
+ Notes:
+ ------
+
+ - The chip selects can map 32K blocks and up (powers of 2)
+
+ - The SDRAM machine can handled up to 128Mbytes per chip select
+
+ - Linux uses the 60x bus memory (the SDRAM DIMM) for the
+ communications buffers.
+
+ - BATs can map 128K-256Mbytes each. There are four data BATs and
+ four instruction BATs. Generally the data and instruction BATs
+ are mapped the same.
+
+ - The IMMR must be set above the kernel virtual memory addresses,
+ which start at 0xC0000000. Otherwise, the kernel may crash as
+ soon as you start any threads or processes due to VM collisions
+ in the kernel or user process space.
+
+
+ Details from Dan Malek <dan_malek@mvista.com> on 10/29/1999:
+
+ The user application virtual space consumes the first 2 Gbytes
+ (0x00000000 to 0x7FFFFFFF). The kernel virtual text starts at
+ 0xC0000000, with data following. There is a "protection hole"
+ between the end of kernel data and the start of the kernel
+ dynamically allocated space, but this space is still within
+ 0xCxxxxxxx.
+
+ Obviously the kernel can't map any physical addresses 1:1 in
+ these ranges.
+
+
+ Details from Dan Malek <dan_malek@mvista.com> on 5/19/2000:
+
+ During the early kernel initialization, the kernel virtual
+ memory allocator is not operational. Prior to this KVM
+ initialization, we choose to map virtual to physical addresses
+ 1:1. That is, the kernel virtual address exactly matches the
+ physical address on the bus. These mappings are typically done
+ in arch/ppc/kernel/head.S, or arch/ppc/mm/init.c. Only
+ absolutely necessary mappings should be done at this time, for
+ example board control registers or a serial uart. Normal device
+ driver initialization should map resources later when necessary.
+
+ Although platform dependent, and certainly the case for embedded
+ 8xx, traditionally memory is mapped at physical address zero,
+ and I/O devices above phsical address 0x80000000. The lowest
+ and highest (above 0xf0000000) I/O addresses are traditionally
+ used for devices or registers we need to map during kernel
+ initialization and prior to KVM operation. For this reason,
+ and since it followed prior PowerPC platform examples, I chose
+ to map the embedded 8xx kernel to the 0xc0000000 virtual address.
+ This way, we can enable the MMU to map the kernel for proper
+ operation, and still map a few windows before the KVM is operational.
+
+ On some systems, you could possibly run the kernel at the
+ 0x80000000 or any other virtual address. It just depends upon
+ mapping that must be done prior to KVM operational. You can never
+ map devices or kernel spaces that overlap with the user virtual
+ space. This is why default IMMR mapping used by most BDM tools
+ won't work. They put the IMMR at something like 0x10000000 or
+ 0x02000000 for example. You simply can't map these addresses early
+ in the kernel, and continue proper system operation.
+
+ The embedded 8xx/82xx kernel is mature enough that all you should
+ need to do is map the IMMR someplace at or above 0xf0000000 and it
+ should boot far enough to get serial console messages and KGDB
+ connected on any platform. There are lots of other subtle memory
+ management design features that you simply don't need to worry
+ about. If you are changing functions related to MMU initialization,
+ you are likely breaking things that are known to work and are
+ heading down a path of disaster and frustration. Your changes
+ should be to make the flexibility of the processor fit Linux,
+ not force arbitrary and non-workable memory mappings into Linux.
+
+ - You don't want to change KERNELLOAD or KERNELBASE, otherwise the
+ virtual memory and MMU code will get confused.
+
+ arch/ppc/Makefile:KERNELLOAD = 0xc0000000
+
+ include/asm-ppc/page.h:#define PAGE_OFFSET 0xc0000000
+ include/asm-ppc/page.h:#define KERNELBASE PAGE_OFFSET
+
+ - RAM is at physical address 0x00000000, and gets mapped to
+ virtual address 0xC0000000 for the kernel.
+
+
+ Physical addresses used by the Linux kernel:
+ --------------------------------------------
+
+ 0x00000000-0x3FFFFFFF 1GB reserved for RAM
+ 0xF0000000-0xF001FFFF 128K IMMR 64K used for dual port memory,
+ 64K for 8260 registers
+
+
+ Logical addresses used by the Linux kernel:
+ -------------------------------------------
+
+ 0xF0000000-0xFFFFFFFF 256M BAT0 (IMMR: dual port RAM, registers)
+ 0xE0000000-0xEFFFFFFF 256M BAT1 (I/O space for custom boards)
+ 0xC0000000-0xCFFFFFFF 256M BAT2 (RAM)
+ 0xD0000000-0xDFFFFFFF 256M BAT3 (if RAM > 256MByte)
+
+
+ EST SBC8260 Linux mapping:
+ --------------------------
+
+ DBAT0, IBAT0, cache inhibited:
+
+ Chip
+ Memory Sel Use
+ --------------------- --- ---------------------------------
+ 0xF0000000-0xF001FFFF n/a IMMR: dual port RAM, registers
+
+ DBAT1, IBAT1, cache inhibited:
+
diff --git a/Documentation/serial-console.txt b/Documentation/serial-console.txt
index 80fd38300..6c689b0df 100644
--- a/Documentation/serial-console.txt
+++ b/Documentation/serial-console.txt
@@ -1,5 +1,10 @@
Linux Serial Console
+To use a serial port as console you need to compile the support into your
+kernel - by default it is not compiled in. For PC style serial ports
+it's the config option next to "Standard/generic (dumb) serial support".
+You must compile serial support into the kernel and not as a module.
+
It is possible to specify multiple devices for console output. You can
define a new kernel command line option to select which device(s) to
use for console output.
@@ -62,14 +67,20 @@ Replace the sample values as needed.
append = "console=ttyS1,9600"
-4. Init and /etc/ioctl.save
+4. Make sure a getty runs on the serial port so that you can login to
+ it once the system is done booting. This is done by adding a line
+ like this to /etc/inittab (exact syntax depends on your getty):
+
+ S1:23:respawn:/sbin/getty -L ttyS1 9600 vt100
+
+5. Init and /etc/ioctl.save
Sysvinit remembers its stty settings in a file in /etc, called
`/etc/ioctl.save'. REMOVE THIS FILE before using the serial
console for the first time, because otherwise init will probably
set the baudrate to 38400 (baudrate of the virtual console).
-5. /dev/console and X
+6. /dev/console and X
Programs that want to do something with the virtual console usually
open /dev/console. If you have created the new /dev/console device,
and your console is NOT the virtual console some programs will fail.
@@ -78,18 +89,16 @@ Replace the sample values as needed.
Xfree86, svgalib, gpm, SVGATextMode
- I have binary patched the above mentioned programs to use "tty0"
- instead of "console". This will be reported to the maintainers of
- said programs.
+ It should be fixed in modern versions of these programs though.
Note that if you boot without a console= option (or with
console=/dev/tty0), /dev/console is the same as /dev/tty0. In that
case everything will still work.
-6. Thanks
+7. Thanks
Thanks to Geert Uytterhoeven <geert@linux-m68k.org>
for porting the patches from 2.1.4x to 2.1.6x for taking care of
the integration of these patches into m68k, ppc and alpha.
-Miquel van Smoorenburg <miquels@cistron.nl>, 21-Mar-1998
+Miquel van Smoorenburg <miquels@cistron.nl>, 11-Jun-2000
diff --git a/Documentation/sound/Maestro b/Documentation/sound/Maestro
index 940156fc6..f572112ff 100644
--- a/Documentation/sound/Maestro
+++ b/Documentation/sound/Maestro
@@ -6,7 +6,7 @@ Driver Status and Availability
------------------------------
The most recent version of this driver will hopefully always be available at
- http://people.redhat.com/zab/maestro/
+ http://www.zabbo.net/maestro/
I will try and maintain the most recent stable version of the driver
in both the stable and development kernel lines.
diff --git a/Documentation/sound/README.ymfsb b/Documentation/sound/README.ymfsb
new file mode 100644
index 000000000..feda77915
--- /dev/null
+++ b/Documentation/sound/README.ymfsb
@@ -0,0 +1,107 @@
+Legacy audio driver for YMF7xx PCI cards.
+
+
+FIRST OF ALL
+============
+
+ This code references YAMAHA's sample codes and data sheets.
+ I respect and thank for all people they made open the informations
+ about YMF7xx cards.
+
+ And this codes heavily based on Jeff Garzik <jgarzik@pobox.com>'s
+ old VIA 82Cxxx driver (via82cxxx.c). I also respect him.
+
+
+DISCLIMER
+=========
+
+ This driver is currently at early ALPHA stage. It may cause serious
+ damage to your computer when used.
+ PLEASE USE IT AT YOUR OWN RISK.
+
+
+ABOUT THIS DRIVER
+=================
+
+ This code enables you to use your YMF724[A-F], YMF740[A-C], YMF744, YMF754
+ cards. When enabled, your card acts as "SoundBlaster Pro" compatible card.
+ It can only play 22.05kHz / 8bit / Stereo samples, control external MIDI
+ port.
+ If you want to use your card as recent "16-bit" card, you should use
+ Alsa or OSS/Linux driver. Ofcource you can write native PCI driver for
+ your cards :)
+
+
+USAGE
+=====
+
+ # modprobe ymfsb (options)
+
+
+OPTIONS FOR MODULE
+==================
+
+ io : SB base address (0x220, 0x240, 0x260, 0x280)
+ synth_io : OPL3 base address (0x388, 0x398, 0x3a0, 0x3a8)
+ dma : DMA number (0,1,3)
+ master_volume: AC'97 PCM out Vol (0-100)
+ spdif_out : SPDIF-out flag (0:disable 1:enable)
+
+ These options will change in future...
+
+
+FREQUENCY
+=========
+
+ When playing sounds via this driver, you will hear its pitch is slightly
+ lower than original sounds. Since this driver recognizes your card acts
+ with 21.739kHz sample rates rather than 22.050kHz (I think it must be
+ hardware restriction). So many players become tone deafness.
+ To prevent this, you should express some options to your sound player
+ that specify correct sample frequency. For example, to play your MP3 file
+ correctly with mpg123, specify the frequency like following:
+
+ % mpg123 -r 21739 foo.mp3
+
+
+SPDIF OUT
+=========
+
+ With installing modules with option 'spdif_out=1', you can enjoy your
+ sounds from SPDIF-out of your card (if it had).
+ Its Fs is fixed to 48kHz (It never means the sample frequency become
+ up to 48kHz. All sounds via SPDIF-out also 22kHz samples). So your
+ digital-in capable components has to be able to handle 48kHz Fs.
+
+
+COPYING
+=======
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+TODO
+====
+ * support for multiple cards
+ (set the different SB_IO,MPU_IO,OPL_IO for each cards)
+
+ * support for OPL (dmfm) : There will be no requirements... :-<
+
+
+AUTHOR
+======
+
+ Daisuke Nagano <breeze.nagano@nifty.ne.jp>
+
diff --git a/Documentation/sound/via82cxxx.txt b/Documentation/sound/via82cxxx.txt
index af963c3b4..bfaf99b64 100644
--- a/Documentation/sound/via82cxxx.txt
+++ b/Documentation/sound/via82cxxx.txt
@@ -48,6 +48,15 @@ be added to your /etc/conf.modules (or /etc/modules.conf) file:
Driver notes
------------------------------------------------------------------------
+Two /proc pseudo-files provide diagnostic information. This is generally
+not useful to most users. Power users can disable VIA_PROC_FS macro in the
+driver source code, and remove the /proc support code. In any case, once
+version 2.0.0 is released, the /proc support code will be disabled by
+default. Available /proc pseudo-files:
+
+ /proc/driver/via/0/info
+ /proc/driver/via/0/ac97
+
This driver by default supports all PCI audio devices which report
a vendor id of 0x1106, and a device id of 0x3058. Subsystem vendor
and device ids are not examined.
@@ -110,7 +119,8 @@ Known bugs (patches/suggestions welcome)
1) Volume too low on many systems. Workaround: use mixer program
such as xmixer to increase volume.
-2) RealPlayer output very scratchy.
+2) RealPlayer output very scratchy. Workaround: use esd, and
+configure RealPlayer to output to esd.
3) Applications which attempt to open the sound device in read/write
mode (O_RDWR) will fail. This is incorrect OSS behavior, but since
@@ -139,3 +149,28 @@ change the LOG_BUF_LEN macro at the top of linux/kernel/printk.c, recompile
your kernel, and pass the "-s <size>" option to 'dmesg'.
+
+Change history
+------------------------------------------------------------------------
+Version 1.1.7:
+* Fix module unload bug where mixer device left registered
+ after driver exit
+
+Version 1.1.6:
+* Rewrite via_set_rate to mimic ALSA basic AC97 rate setting
+* Remove much dead code
+* Complete spin_lock_irqsave -> spin_lock_irq conversion in via_dsp_ioctl
+* Fix build problem in via_dsp_ioctl
+* Optimize included headers to eliminate headers found in linux/drivers/sound
+
+Version 1.1.5:
+* Disable some overly-verbose debugging code
+* Remove unnecessary sound locks
+* Fix some ioctls for better time resolution
+* Begin spin_lock_irqsave -> spin_lock_irq conversion in via_dsp_ioctl
+
+Version 1.1.4:
+* Completed rewrite of driver. Eliminated SoundBlaster compatibility
+ completely, and now uses the much-faster scatter-gather DMA engine.
+
+
diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt
index b68e71cf9..764392232 100644
--- a/Documentation/sysrq.txt
+++ b/Documentation/sysrq.txt
@@ -25,6 +25,10 @@ On x86 - You press the key combo 'ALT-SysRQ-<command key>'. Note - Some
On SPARC - You press 'ALT-STOP-<command key>', I believe.
+On the serial console (PC style standard serial ports only) -
+ You send a BREAK, then within 5 seconds a command key. Sending
+ BREAK twice is interpreted as a normal BREAK.
+
On other - If you know of the key combos for other architectures, please
let me know so I can add them to this section.
diff --git a/Documentation/usb/input.txt b/Documentation/usb/input.txt
index 262c595e4..c60bd900b 100644
--- a/Documentation/usb/input.txt
+++ b/Documentation/usb/input.txt
@@ -1,6 +1,7 @@
- Linux Input drivers v0.9
- (c) 1999 Vojtech Pavlik <vojtech@suse.cz>
+ Linux Input drivers v1.0
+ (c) 1999-2000 Vojtech Pavlik <vojtech@suse.cz>
Sponsored by SuSE
+ $Id: input.txt,v 1.4 2000/05/28 17:57:22 vojtech Exp $
----------------------------------------------------------------------------
0. Disclaimer
@@ -62,27 +63,27 @@ kernel):
hid.o
After this, the USB keyboard will work straight away, and the USB mouse
-will be available as a character device on major 13, minor 32:
+will be available as a character device on major 13, minor 63:
- crw-r--r-- 1 root root 13, 32 Mar 28 22:45 mouse0
+ crw-r--r-- 1 root root 13, 63 Mar 28 22:45 mice
This device, has to be created, unless you use devfs, in which case it's
created automatically. The commands to do that are:
cd /dev
mkdir input
- mknod input/mouse0 c 13 32
+ mknod input/mice c 13 63
After that you have to point GPM (the textmode mouse cut&paste tool) and
XFree to this device to use it - GPM should be called like:
- gpm -t ps2 -m /dev/input/mouse0
+ gpm -t ps2 -m /dev/input/mice
And in X:
Section "Pointer"
Protocol "ImPS/2"
- Device "/dev/input/mouse0"
+ Device "/dev/input/mice"
ZAxisMapping 4 5
EndSection
@@ -199,10 +200,11 @@ no mice are present.
CONFIG_INPUT_MOUSEDEV_SCREEN_[XY] in the kernel configuration are the size
of your screen (in pixels) in XFree86. This is needed if you want to use
your digitizer in X, because it's movement is sent to X via a virtual PS/2
-mouse. These values won't be used if you use a mouse only.
+mouse and thus needs to be scaled accordingly. These values won't be used if
+you use a mouse only.
- Mousedev.c will generate either PS/2, ImPS/2 (microsoft intellimouse) or
-GenPS/2 (genius netmouse/netscroll) protocols, depending on what the program
+ Mousedev will generate either PS/2, ImPS/2 (Microsoft IntelliMouse) or
+GenPS/2 (Genius NetMouse/NetScroll) protocols, depending on what the program
reading the data wishes. You can set GPM and X to any of these. You'll need
ImPS/2 if you want to make use of a wheel on a USB mouse and GenPS/2 if you
want to use extra (up to 5) buttons. I'm not sure how much is GenPS/2 supported
@@ -249,8 +251,12 @@ independent.
http://www.suse.cz/development/input/
-You'll find both the latest HID driver and the complete Input driver there.
-There is also a mailing list for this:
+You'll find both the latest HID driver and the complete Input driver there
+as well as information how to access the CVS repository for latest revisions
+of the drivers.
+
+
+ There is also a mailing list for this:
majordomo@atrey.karlin.mff.cuni.cz
@@ -278,8 +284,8 @@ can. Here goes a description of the current state of things, which is going
to be extended, but not changed incompatibly as time goes:
You can use blocking and nonblocking reads, also select() on the
-/dev/inputX devices, and you'll always get a whole number of input events on
-a read. Their layout is:
+/dev/input/eventX devices, and you'll always get a whole number of input
+events on a read. Their layout is:
struct input_event {
struct timeval time;
diff --git a/Documentation/usb/ov511.txt b/Documentation/usb/ov511.txt
index 65a0c4caa..4a8e3c3ea 100644
--- a/Documentation/usb/ov511.txt
+++ b/Documentation/usb/ov511.txt
@@ -6,8 +6,9 @@ Author: Mark McClelland
Homepage: http://alpha.dyndns.org/ov511
NEW IN THIS VERSION:
- o 384x288 and 448x336 modes
- o better /proc/video support
+ o Greyscale mode and timestamps restored
+ o Image quality improvements
+ o Experimental GBR422 mode
INTRODUCTION:
diff --git a/Documentation/video4linux/bttv/CARDLIST b/Documentation/video4linux/bttv/CARDLIST
index 02ec58baa..28f11aeac 100644
--- a/Documentation/video4linux/bttv/CARDLIST
+++ b/Documentation/video4linux/bttv/CARDLIST
@@ -42,6 +42,8 @@ bttv.o
card=40 - STB2
card=41 - AVerMedia TVPhone 98
card=42 - ProVideo PV951
+ card=43 - Little OnAir TV
+ card=44 - Sigma TVII-FM
tuner.o
type=0 - Temic PAL
diff --git a/Documentation/video4linux/bttv/Insmod-options b/Documentation/video4linux/bttv/Insmod-options
index 5d1774a32..b6d4c5a6c 100644
--- a/Documentation/video4linux/bttv/Insmod-options
+++ b/Documentation/video4linux/bttv/Insmod-options
@@ -3,7 +3,7 @@ bttv.o
the bt848 (grabber chip) driver
insmod args:
- card=n card type, see cardlist for a list.
+ card=n card type, see CARDLIST for a list.
radio=0/1 card supports radio
pll=0/1/2 pll settings
0: don't use PLL
@@ -31,6 +31,29 @@ bttv.o
remap, card, radio and pll accept up to four comma-separated arguments
(for multiple boards).
+tuner.o
+ The tuner driver. You need this unless you want to use only
+ with a camera or external tuner ...
+
+ insmod args:
+ debug=1 print some debug info to the syslog
+ type=n type of the tuner chip. n as follows:
+ see CARDLIST for a complete list.
+
+tvmixer.o
+ registers a mixer device for the TV card's volume/bass/treble
+ controls (requires a i2c audio control chip like the msp3400).
+
+ insmod args:
+ debug=1 print some debug info to the syslog.
+ devnr=n allocate device #n (0 == /dev/mixer,
+ 1 = /dev/mixer1, ...), default is to
+ use the first free one.
+
+tvaudio.o
+ new, experimental module which is supported to provide a single
+ driver for all simple i2c audio control chips (tda/tea*).
+
msp3400.o
The driver for the msp34xx sound processor chips. If you have a
stereo card, you probably want to insmod this one.
@@ -47,8 +70,6 @@ msp3400.o
amsound=1 Audio carrier is AM/NICAM at 6.5 Mhz. This
should improve things for french people, the
carrier autoscan seems to work with FM only...
- mixer=n allocate mixer device #n. Default is the
- first free slot.
tea6300.o
The driver for the tea6300 fader chip. If you have a stereo
@@ -73,20 +94,3 @@ tda985x.o
insmod args:
debug=1 print some debug info to the syslog.
chip=9850/9855 set the chip type.
-
-tuner.o
- The tuner driver. You need this unless you want to use only
- with a camera or external tuner ...
-
- insmod args:
- debug=1 print some debug info to the syslog
- type=n type of the tuner chip. n as follows:
- 0: Temic PAL tuner
- 1: Philips PAL_I tuner
- 2: Philips NTSC tuner
- 3: Philips SECAM tuner
- 4: no tuner
- 5: Philips PAL tuner
- 6: Temic NTSC tuner
- 7: Temic PAL tuner
-
diff --git a/Documentation/watchdog.txt b/Documentation/watchdog.txt
index 599eda965..893ead8a8 100644
--- a/Documentation/watchdog.txt
+++ b/Documentation/watchdog.txt
@@ -77,17 +77,23 @@ int main(int argc, const char *argv[])
Contact Information
People keep asking about the WDT watchdog timer hardware: The phone contacts
-for ICS Advent are:
+for Industrial Computer Source are:
-US: 619 677 0877 (sales) 0895 (fax)
-UK: 01243 533900
-France (1) 69.18.74.30
+Industrial Computer Source
+http://www.indcompsrc.com
+ICS Advent, San Diego
+6260 Sequence Dr.
+San Diego, CA 92121-4371
+Phone (858) 677-0877
+FAX: (858) 677-0895
+>
+ICS Advent Europe, UK
+Oving Road
+Chichester,
+West Sussex,
+PO19 4ET, UK
+Phone: 00.44.1243.533900
-ICS Advent
-9950 Barnes Canyon Road
-San Diego, CA
-
-http://www.icsadvent.com
and please mention Linux when enquiring.