diff -uNr linux.2.4.14.pristine/Documentation/kbuild/cml2-reference.sgml linux/Documentation/kbuild/cml2-reference.sgml
--- linux.2.4.14.pristine/Documentation/kbuild/cml2-reference.sgml Wed Dec 31 19:00:00 1969
+++ linux/Documentation/kbuild/cml2-reference.sgml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,1300 @@
+CML1">
+CML2">
+]>
+
+
+
+
+
+ CML2 Language Reference
+
+ Eric
+ Steven
+ Raymond
+
+
+ Thyrsus Enterprises
+
+ esr@thyrsus.com
+
+
+
+ $Date: 2001/03/31 06:06:11 $
+ This is version 0.9.1
+
+ 2000
+ Eric S. Raymond
+
+
+ Copyright
+ Permission is granted to copy, distribute and/or modify
+ this document under the terms of the Open Publication License,
+ version 2.0.
+
+
+
+This is a reference manual for CML2, the Configuration Menu Language
+designed to support Linux kernel configuration. For higher-level
+discussion of the language and the concepts behind it, see the
+paper The CML2 Language, available at the CML2 project website.
+Configuration hackers should read that paper first to get a feel
+for the language.
+
+
+
+Roadmap to This Document
+First, there's a section on invoking the &CML2; tools. Then
+there's a complete language reference. Then there's a description of
+the configuration file output formats. Finally, a document change
+history.
+
+For tips on good menu design, see The CML2
+Language.
+
+
+Running the &CML2; tools
+
+The &CML2; toolkit consists of two Python programs:
+cmlcompile and cmlconfigure.
+The compiler, cmlcompile, generates a pickled
+representation of a rulebase from one or more files of &CML2; rules.
+The interpreter, cmlconfigure, reads in a rulebase
+and uses it to inform a configuration dialogue with the user.
+
+The cmlconfigure program queries its environment to discover
+what I/O facilities are available. It will use X if it's on an
+X display and Tkinter can be found. Otherwise, it will look for the
+curses library and support a full-screen character interface. If it
+can't find curses and a TERM in the environment, it
+will fall back to a line-oriented mode.
+
+The end result is a pair of configuration files, the
+defconfig and the macrofile.
+These are in formats inherited from &CML1; (see for complete specification). The
+defconfig consists of a set of variable
+definitions in shell syntax; it can be re-read by a future instance of
+cmlconfigure to set defaults. The macrofile is a list of C-style
+#define macros intended to be included in kernel
+C code.
+
+The compiler, cmlcompiler, requires one or
+more &CML2; rules files as arguments. It has two options:
+
+
+
+ filename
+
+ Set the file to which the compiled rulebase is
+ written. By default, if no -o option is given, the rulebase goes
+ to rules.out.
+
+
+
+
+
+ Enable debugging output to
+ stdout.
+
+
+
+The interpreter, cmlconfigure, takes at most
+one filename argument: the rulebase to be interpreted. If no
+argument is specified, it reads from rules.out.
+The interpreter recognizes the following options:
+
+
+
+
+
+ Batch mode. Read in a compiled rulebase, apply any other command-line
+ options, and immediately write out the rulebase. Most useful with -D
+ to change a single option or a small handful of options from the
+ command line.
+
+
+
+
+ outfile
+
+ Set the location to which cmlconfigure should
+ write its file of C macros. There is no default; if there is no
+ , option no macro file is written.
+
+
+
+
+ configfile
+
+ Read in a configuration. The file is expected to be in the same
+ defconfig format written by cmlconfigure.
+ Values (including n) are set as though selected
+ interactively by the user.
+
+ If the file does not exist, complain but continue. This behavior
+ allows the configurator to look for defaults files which may not exist.
+
+
+
+
+
+ configfile
+
+ Read in a configuration. The file is expected to be in the same
+ defconfig format written by cmlconfigure. Values (including
+ n) are frozen and will be displayed but not
+ modifiable during the configure run.
+
+
+
+
+
+
+ List. Run in batch mode to generate a menu map (that is, a
+ tree diagram of all the menus and question symbols in the system.)
+
+
+
+
+ outfile
+
+ Set the location to which cmlconfigure should write its defconfig
+ file of shell variable settings.
+ This file will be loadable by cmlconfigure. There is no default;
+ if there is no option no defconfig file is
+ written.
+
+
+
+
+
+
+ Force tty (line-oriented) mode.
+
+
+
+
+
+
+ Force curses (screen-oriented) mode.
+
+
+
+
+
+
+ Force X (GUI using Tk) mode.
+
+
+
+
+
+
+ Increment the debug flag.
+
+
+
+
+
+
+ Preset a symbol. sets
+ FOO=y at startup.
+ -DFOO=xxx may be used to
+ specify a value. The trit values y, m, n are understood. The
+ value of a preset symbol is frozen; that is, it will never be
+ queried.
+
+
+
+
+
+
+ Don't hide elided symbols. When this option is on, suppressions
+ are ignored. Only symbols that have derived a frozen value from
+ -D or constraints are skipped. This may be useful if you know
+ that you want to set configuration symbols deep in the hierarchy
+ and have their requirements propagate upwards, as opposed to the
+ normal sequence in which you refine your way down from the top of
+ the tree with symbols becoming visible only when they are unmasked
+ by previous questions.
+
+
+
+
+
+
+ Print the configurator version and exit.
+
+
+
+
+
+
+ Make undefined symbols in files loaded (e.g. by i or I commands) a
+ non-fatal rather than fatal error. Useful for reading in old config
+ files in which some symbols are obsolete.
+
+
+
+
+The environment variable CML2OPTIONS may specify command-line switches
+(but not arguments). Switches taken from CML2OPTIONS are processed
+before switches specified on the actual command line.
+
+The environment variable BROWSER may specify a colon-separated list
+of browser commands, to be used in making URLs in the help widgets
+live. Each command should have the string "%s" in it where the URL
+can be substituted. The &CML2; front end will try the commands in
+succession until one succeeds. The default sequence is mozilla, then
+any netscape already running, then a new netscape instance, then
+lynx, then w3m.
+
+
+
+&CML2; Language Elements
+
+Syntax
+
+Lexically, a CML program consists of tokens: barewords,
+whitespace, strings and punctuation (there is one exception associated
+with the icon declaration). A bareword is a token
+composed of alphanumeric characters and _
+(underscore). Whitespace is any mix of spaces, tabs, and linefeeds. A
+string is delimited by either single or double quotes and may contain
+whitespace. Everything else is punctuation. Some pairs of
+punctuation characters stick together; ==,
+!=, <=, >=. All
+other punctuation is treated as single-character tokens.
+
+Here are lexical rules, regular expressions describing valid tokens:
+
+ ::= [A-Za-z][A-Za-z0-9_]*
+ ::= '[^']*'|"[^&dquot;]*";
+ ::= [0-9]+
+ ::= 0x[A-Fa-f0-9]+
+ ::= [ymn]
+]]>
+
+base64-data is any number of lines in RFC2045 base64
+format, terminated by a newline or comment.
+
+Also, note that there is a lexical-level inclusion facility.
+The token source is interpreted as a request to treat
+the immediately following token as a filename (string quotes are first
+stripped if it is a string). Upon encountering this directive, the
+compiler opens the file (which may be a relative or absolute
+pathname), and reads input from that file until EOF. On
+that EOF, the current input source is immediately
+popped back to the including file. Relative pathnames are interpreted
+relative to the directory of the including file.
+
+Comments are supported, and run from a # to end-of-line.
+
+Here is a BNF of the grammar. Following it, each language element
+will be described in detail.
+
+ ::= | ;; Integer literal
+
+;; A CML system consists of a sequence of declarations.
+;;
+ ::= *
+
+;; A declaration may be of one of the following types:
+;;
+ ::=
+ |
+ |
+ |
+ |
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+ |
+ |
+ |
+
+ |
+ |
+ |
+ |
+
+;; A source statement declares a file to be inserted in place of
+;; the source statement in the ruleset.
+;;
+ ::= 'source'
+
+;; A symbols definition creates configuration symbols,
+;; and associates prompt strings with them.
+;;
+ ::= 'symbols' {}*
+
+;; A menus definition creates menu symbols,
+;; and associates banner strings with them.
+;;
+ ::= 'menus' {}*
+
+;; An explanatins declaration creates explanation symbols
+;; to be used by requirements
+;;
+ ::= 'explanations' {}*
+
+;; A helpfile declaration declares a file to be scanned for help text
+;;
+ ::= 'helpfile'
+
+;; A private declaration declares that the associated symbols should
+;; not be exported in the end-result configuration
+;;
+ ::= 'private' *
+
+;; A visibility rule associates a visibility predicate with symbols.
+;; Optionally, it may declare that the suppressed symbols are constrained
+;; in value by the predicate symbols.
+;;
+ ::= 'unless' 'suppress' ['dependent'] *;
+
+;; A menu definition links a sequence or subtree of symbols with a
+;; menu identifier. Subtrees generate implied dependency statements.
+;;
+ ::= 'menu' *
+ ::=
+ | '{' * '}'
+
+ ::= ;; Empty suffix declares boolean type
+ | '?' ;; declares trit type
+ | '!' ;; declares vital trit type
+ | '%' ;; declares decimal type
+ | '@' ;; declares hexadecimal type
+ | '$' ;; declares string type
+
+;; A radio-menu definition links a choice of symbols with a menu identifier.
+;;
+ ::= 'choices' * 'default'
+
+;; A derivation binds a symbol to a formula, so the value of that
+;; symbol is always the current value of the formula.
+;;
+ ::= 'derive' 'from'
+
+;; A default definition sets the value a symbol will have unless it is
+;; explicitly set by the user's answer to a question. It may have a
+;; range or enum specification attached.
+;;
+ ::= 'default' 'from' []
+
+ ::= 'range' { | { '-' }}+
+ | 'enum' { '=' }+
+
+;; A requirement definition constrains the value of one or more symbols
+;; by requiring that the given expression be true in any valid configuration.
+;;
+ ::= {'require'|'prohibit'}
+ ['explanation ']
+
+;; We have to declare a start menu, for the beginning of execution
+;;
+ ::= 'start'
+
+;; A prefix definition sets a string to be prepended to all symbols
+;; when they are named in a configuration file.
+;;
+ ::= 'prefix'
+
+;; A banner definition sets a string to used in the configurator
+;; greeting line.
+;;
+ ::= 'banner'
+
+;; A condition statement ties a CML2 control flag to a symbol
+;;
+ ::= 'condition' 'on'
+
+;; A warndepend flags symbols that make dependents dangerous
+;;
+ ::= 'warndepend' *
+
+;; An icon definition associates data for a graphic icon with the
+;; rulebase.
+;;
+ := 'icon'
+
+;; A debug definition enables debugging output.
+;;
+ ::= 'debug'
+
+;; An expression is a formula
+;;
+ ::= '+'
+ | '-'
+ | '*'
+ |
+
+ ::= 'or'
+ | 'and'
+ | 'implies'
+ |
+
+ ::= '=='
+ | '!='
+ | '<='
+ | '>='
+ |
+ | 'not'
+
+ ::= '|' ;; maximum or sum or union value
+ | '&' ;; minimum or multiple or intersection value
+ | '$' ;; similarity value
+ |
+
+ ::=
+ |
+ |
+ |
+ |
+ | '(' ')'
+]]>
+
+Operators have the precedence implied by the above productions. From
+least to most binding, precedence classes are:
+
+ =, <=, >, <
+ 7: &, |, $
+]]>
+
+
+Data types and classes
+
+&CML2; supports the following data types:
+
+
+
+ Booleans. These may have the values `y' or `n'
+
+
+
+ Tristates or trits. These may have the values `y', 'm', or `n'
+ `Vital' trits have a visibility property described in .
+
+
+
+ Decimal integers. 32-bit signed integers with decimal I/O formatting.
+
+
+
+ Hexadecimal integers. 32-bit signed integers with hexadecimal I/O formatting.
+
+
+
+ Strings. Strings are literal data in the ASCII character set encoding.
+
+
+
+Support for trits may be disabled at runtime. See for discussion of the condition/on
+declaration.
+
+There are four classes of symbols; constant symbols, query symbols,
+derivation symbols, and frozen symbols.
+
+A constant is one of the boolean/tristate literals
+y or m or
+n, or an integer literal, or a string
+literal.
+
+A query symbol is an ordinary, mutable symbol with a prompt string.
+Each query must occur exactly once in the menu tree. Query symbols
+may be set by the user.
+
+A derivation is a symbol bound to an expression. Derivation symbols
+are immutable, but may vary as the symbols in their formula change
+value. Derived symbols have no associated prompt string and may not
+appear in the menu tree.
+
+A frozen symbol is a query symbol which has been immutably bound
+to a particular value. Once frozen, the value of a symbol may not be
+changed.
+
+
+Meaning of the language elements
+
+
+Source statements
+
+A source statement declares a file to be
+inserted in place of the source statement in the file, and treated as
+if the entire contents of that file were present in the current file
+at the point of their source statement.
+
+Any implementation of &CML2; must allow
+source statements to be nested to a depth of at
+least 15 levels. The reference implementation has no hard
+limit.
+
+
+Symbol declarations
+
+The body of a symbols section consists of
+pairs of tokens; a configuration symbol and a prompt string.
+
+Rationale: Having these name-to-prompt associations be separate from
+the dependency rules will help make the text parts of the system
+easier to localize for different languages. Declaring all query symbols
+up front means we can do better and faster sanity checks. Some
+symbols (derivations) are not pre-declared.
+
+
+Menu declarations
+
+The body of a menus section consists of pairs
+of tokens; a menu name and a banner string. The effect of each
+declaration is to declare an empty menu (to be filled in later by a
+menu definition) and associate a banner string with it.
+
+Any implementation of &CML2; must allow menus to be nested to a depth of
+at least 15 levels. The reference implementation has no hard limit.
+
+Rationale: Having these menu-to-banner associations be separate from
+the dependency rules will help make the text parts of the system
+easier to localize for different languages. Declaring all menu names
+up front means we can do better and faster sanity checks.
+
+
+Explanation declarations
+
+The body of an explanation section consists
+of pairs of tokens; an explanation symbol and a banner string.
+Explanation symbols are used to associate explanatory text with
+requirements.
+
+Rationale: This declaration tells the compiler that it's OK for
+the explanation symbol not to occur in a menu.
+
+
+Helpfile declarations
+
+A helpfile declaration tells the compiler to
+mine a given file for help texts. The compiler's assumption is that
+the file is in the format of a &CML1; help file: entries are begun by
+two lines, the first containing a prompt string and the second
+beginning with the symbol prefix (See for
+discussion).
+
+The format of helpfiles may be changed in future releases.
+
+
+Private declarations
+
+A private declaration sets the
+private bit on each symbol of a list of
+symbol names. Symbols on which this bit is set are not written to the
+final configuration file.
+
+Rationale: Sometimes you may want to make multiple queries, the
+results of which are not used directly in the configuration file but
+become independent variables in the derivation of a symbol that is
+used. In this kind of case, it is good practice to make the query
+symbols private.
+
+
+Visibility rules
+
+A visibility declaration associates a visibility predicate with a set of
+configuration symbols. The fact that several symbols may occur on the
+right side of such a rule is just a notational convenience; the rule
+
+
+ unless GUARD suppress SYMBOL1 SYMBOL2 SYMBOL3
+
+
+is exactly equivalent to
+
+
+ unless GUARD suppress SYMBOL1
+ unless GUARD suppress SYMBOL2
+ unless GUARD suppress SYMBOL3
+
+
+Putting a menu on the right side of a visibility rule suppresses that
+menu and all its children.
+
+Dependence
+
+Optionally, a rule may declare that the suppressed symbols are
+constrained in value by the predicate symbols. That is, if there is a
+rule
+
+
+ unless GUARD suppress dependent SYMBOL
+
+
+then the value of SYMBOL is constrained by
+the value of GUARD in the following way:
+
+
+guard trit bool
+----- ------ -------
+ y y,m,n y,n
+ m m,n y,n
+ n n n
+
+
+The reason for this odd, type-dependent logic table is that we
+want to be able to have boolean option symbols that configure options
+for modular ancestors. This is why the guard symbol value
+m permits a dependent boolean symbol (but not a
+dependent modular symbol) to be y.
+
+If the guard part is an expression, SYMBOL is
+made dependent on each symbol that occurs in the guard. Such guards
+may not contain alternations or implies. Thus, if
+FOO and BAR and
+BAZ are trit symbols,
+
+
+ unless FOO!=n and BAR==m suppress dependent BAZ
+
+
+is equivalent to the following rules:
+
+
+ unless FOO!=n and BAR==m suppress BAZ
+ require BAZ <= FOO and BAZ <= BAR
+
+
+Putting a menu on the right side of a visibility rule with `dependent'
+puts the constraint on all the configuration symbols in that menu.
+Any submenus will inherit the constraint and pass it downward to
+their submenus.
+
+Dependency works both ways. If a dependent symbol is set
+y or m, the value of the
+ancestor symbol may be forced; see
+ for discussion.
+
+Rationale: The syntax is unless...suppress
+rather than if...query because the normal state of a
+symbol or menu is visible. The dependent
+construction replaces the dep_tristate and
+dep_bool constructs in &CML1;.
+
+
+
+Menu definitions
+
+A menu definition associates a sequence of configuration symbols and
+(sub)menu identifiers with a menu identifier (and its banner string).
+It is an error for any symbol or menu name to be referenced in more
+than one menu.
+
+Symbol references in menus may have suffixes which change the default
+boolean type of the symbol. The suffixes are as follows:
+
+
+ ? trit type
+ ! vital trit type
+ % decimal type
+ @ hexadecimal type
+ $ string type
+
+
+A choices definition associates a choice of boolean
+configuration symbols with a menu identifier (and its banner
+string). It declares a default symbol to be set to
+y at the time the menu is instantiated.
+
+In a complete &CML2; system, these definitions link all menus together
+into a single big tree, which is normally traversed depth-first
+(except that visibility predicates may suppress parts of it).
+
+If the list of symbols has subtrees in it (indicated by curly braces)
+then the symbol immediately before the opening curly brace is declared
+a visibility and dependency guard for all symbols within the braces.
+That is, the menu declaration
+
+
+ menu foo
+ SYM1 SYM2 {SYM3 SYM4} SYM5
+
+
+not only associates SYM[12345] with foo, it also registers rules
+equivalent to
+
+
+ unless SYM2 suppress dependent SYM3 SYM4
+
+
+Such subtree declarations may be nested to any depth.
+
+It is perfectly legal for a menu-ID to have no child nodes. In &CML2;,
+this is how you embed text in menus, by making it the banner of
+a menu symbol with no children.
+
+
+Derivations
+
+A derivation binds a symbol to a formula, so the value of that
+symbol is always the current value of the formula. Symbols
+may be evaluated either when a menu containing them is instantiated
+or at the time the final configuration file is written.
+
+The compiler performs type inference to deduce the type of a
+derived symbol. In particular, derived symbols for which the
+top-level expression is an arithmetic operator are deduced to be
+decimal. Derived symbols for which the top level of the expression is
+a boolean operator are deduced to be bool. Derived
+symbols for which the top level of the expression is a
+trit operator are deduced to be trit.
+
+Derived symbols are never set directly by the user and have no
+associated prompt string.
+
+
+Defaults
+
+A default definition sets the value a symbol will have until it is
+explicitly set by the user's answer to a question. The right-hand
+side of a default is not limited to being a constant value; it
+may be any valid expression.
+
+Defaults may be evaluated either when a menu containing them is
+instantiated or at the time the final configuration file is written.
+
+If a symbol is not explicitly defaulted, it gets the zero value
+of its type; n for bools and trits,
+0 for decimal and hexadecimal symbols, and the
+empty string for strings.
+
+The optional range or enumeration part may be used to constrain
+legal values for decimal or hexadecimal-valued symbol. A default
+declaration may have either a range or an enumeration part, but not
+both.
+
+ A range specification consists of any number of either single
+values or paired upper and lower bounds separated by a dash,
+interpreted as inclusive ranges. The symbol has a legal value if it
+either matches a specified single value or is contained in one of the
+intervals.
+
+An enumeration consists of a series of pairs separated by '='.
+Each pair associates a symbol (which must have been previously
+declared in an explanation statement) with an integer value. The
+symbol must match one of the values. The front end may use the prompt
+value of the symbol in each pair to stand in for the value (e.g. when
+generating a pull-down menu of alternatives.)
+
+
+Requirements
+
+Requirements as sanity checks
+
+A requirement definition constrains the value of one or more
+symbols by requiring that the given expression be true in any valid
+configuration. All constraints involving a given configuration symbol
+are checked each time that symbol is modified. Every constraint is
+checked just before the configuration file is written.
+
+If the optional explanation clause is present, the string
+associated with the specified symbol is taken to be an explanation that
+the front end can use if when the constraint is violated. Otherwise,
+the explanation will be a display of the constraint expression.
+
+It is up to individual &CML2; front ends to decide how to handle
+constraint violations. Here are some possible policies:
+
+
+
+ Complain and die. Not recommended, but perhaps appropriate for
+ a batch-mode front end.
+
+
+ Conservative recovery: Disallow the modification that
+ would violate the constraint. (Thus, earlier answers have priority
+ over later ones.) Note that front ends using this policy should
+ back out side-effects of symbol changes as well as the change to
+ the primary symbol.
+
+
+
+ Flag-and-continue: visibly flag all symbols involved in a
+ constraint violation (and unflag them whenever a constraint violation
+ is fixed). Require the user to resolve all constraint violations
+ before the configuration file is saved.
+
+
+
+ Backtracking: Present all the menus involved in the
+ constraint. Accept modifications of any of them, but do not
+ allow the modifications to be committed until all constraints are
+ satisfied.
+
+
+
+The reference implementation uses conservative backtracking,
+with side-effects being backed out as well.
+
+A prohibit definition requires that the
+attached predicate not be true. This is
+syntactic sugar, added to accommodate the fact that human beings have
+trouble reasoning about the distribution of negation in complex
+predicates.
+
+
+Using requirements to force variables
+
+Requirements have a second role. Certain kinds of requirements
+can be used to deduce values for variables the user has not yet set;
+the &CML2; interpreter does this automatically.
+
+Every time a symbol is changed, the change is tried on each
+declared constraint. The constraint is algebraically simplified by
+substituting in constant, derived and frozen symbols. If the
+simplified constraint forces an expression of the form A ==
+B to be true, and either A is a query symbol
+and B is a constant or the reverse, then the
+assignment needed to make A == B true is
+forced.
+
+Thus, given the rules
+
+
+derive SPARC from SPARC32 or SPARC64
+require SPARC implies ISA==n and PCMCIA==n and VT==y and VT_CONSOLE==y
+ and BUSMOUSE==y and SUN_MOUSE==y and SERIAL==y and SERIAL_CONSOLE==y
+ and SUN_KEYBOARD==y
+
+
+when either SPARC32 or SPARC64
+changes to y, the nine assignments implied by the
+right side of the second rule will be performed automatically. If
+this kind of requirement is triggered by a guard consisting entirely
+of frozen symbols, all the assigned symbols become frozen.
+
+If A is a boolean or
+trit symbol and B simplifies to a
+boolean or trit constant (or vice-versa),
+assignments may be similarly forced by other relationals (notably
+A != B, A < B, A >
+B, A <= B, and A >=
+B). If forcing the relational to be true implies only one
+possible value for the symbol involved, then that assignment is
+forced.
+
+Note that whether a relational forces a unique value may depend on
+whether trits are enabled or not.
+
+
+
+Start declaration
+
+The start definition specifies the name of the
+root menu of the hierarchy. One such declaration is required per
+&CML2; ruleset.
+
+
+Prefix declaration
+
+A prefix declaration sets a string to be
+prepended to each symbol name whenever it is written out to a result
+configuration file. This prefix is also ignored when present as a
+prefix of symbol names, whether in a rule file or when read in from a
+defconfig file.
+
+Rationale: This was added so the &CML2; rule system for the
+Linux kernel would not have to include the common
+CONFIG_ prefix, which adds bulk and makes reading
+the rules file visually confusing. The alternative of wiring that
+prefix into the code would compromise &CML2;'s potential usefulness
+for other applications. Prefix-stripping in rule files was added as
+a backward-compatibility hack to permit names such as CONFIG_3C515
+that have leading numerics and would be treated as numbers if
+given without prefix.
+
+
+Banner declaration
+
+A banner definition sets the menu id banner
+string to used in the configurator greeting line. The string attached
+to the specified menu id should identify the system being
+configured.
+
+Rationale: As for the prefix string.
+
+
+Condition statement
+
+The condition statement ties a &CML2; feature
+flag to a query symbol; that is, the value of the feature flag is the
+value of the symbol. The initial value of the flag when a rulebase is
+read in is simply the associated symbol's default. If there is no
+symbol associated with the the flag, the flag's value is
+n.
+
+At present only one flag, named trits, is
+supported. When this flag is n, trit-valued
+symbols are treated as booleans and may only assume the values
+y and n.
+
+When this flag is m, modules are enabled
+and will be manually queried.
+
+When this flag is y, questions about
+modular symbols that are not `vital' are suppressed (the tied-trit
+flag symbol itself is automatically vital). Individual trit-valued
+symbols become visible again if they become set to a non-default
+value. At configuration-save time, modular symbols are set to
+m if they are visible, n if
+they are not.
+
+This flag may affect the front end's presentation of
+alternatives for modular symbols. It also affects forcing of ancestor
+symbols. When the trits flag is m or
+y, setting a boolean symbol only forces its trit
+ancestors to the value m; when trits is off, they
+are forced to y. See for discussion.
+
+Rationale: Setting this flag to y says, in
+effect, "Don't bother me with questions about modular
+drivers. Configure in all the stubs that go with the other choices, e.g.
+processor and bus types." It is intended for novice use. The `vital'
+property is intended to be attached to devices which can be compiled
+modular but which need to be hard-linked in (e.g. so Linux can be
+booted...).
+
+
+Warndepend declaration
+
+The warndepend declaration takes a list of
+symbol names. All dependents of each symbol have their prompts
+suffixed with the name of the symbol in parentheses to indicate that
+they are dependent on it.
+
+Rationale: Added to support the EXPERIMENTAL
+symbol in the Linux kernel configuration. This declaration is better
+than tracking experimental status by hand because it guarantees that
+subsidiary symbols dependent on an experimental feature will always be
+flagged for the user.
+
+
+Icon declaration
+
+An icon declaration associates graphic data
+(encoded in RFC2045 base64) with the rulebase. Front ends may use
+this data as an identification icon.
+
+The reference front-end implementation uses the image to iconify
+the configurator when it is minimized while running in X mode.
+
+The reference front-end accepts the image in GIF format. In the
+future (when underlying library support permits) PNG support will be
+added and GIF removed.
+
+
+Debug
+
+This declaration enables debugging output from the compiler (it
+has no effect on front-end behavior). It takes an integer value and
+uses it to set the current debug level. It may change or be removed
+in future releases.
+
+
+Expressions
+
+All arithmetic is integer. The compiler permits some kinds of
+type promotion, described below.
+
+For purposes of the relational operators, trit values are
+strictly ordered with y >
+m > n.
+
+Boolean logical expressions may be used as parts of integer-valued
+formulas (e,g in derivations and constraints). The value of true is 1,
+and of false is 0.
+
+It is a compile-time error to apply the logical operators
+or/and/implies to trit or numeric values. Also,
+expressions occurring in guards (in unless/suppress,
+or require/prohibit declarations) must yield a value
+of boolean type. The compiler does type propagation in expressions to
+check these constraints.
+
+The purpose of these restriction is to enable compile-time
+detection of situations where confusion of trit or
+numeric with boolean values might induce subtle errors. For the same
+reason, if the symbol FOO is trit-valued it is a
+compile-time error to say just FOO in an expression, as
+opposed to FOO!=n or some other more explicit
+relational.
+
+Thus, because the symbol SCSI is trit-valued:
+
+
+ unless SCSI suppress A2091_SCSI
+
+is illegal and will raise an error. Write an unambiguous test
+instead:
+
+
+ unless SCSI>=m suppress A2091_SCSI
+
+
+The obvious booleans operations (and, or) are supported; they are
+commutative and associative. An 'implies' operation is also supported:
+
+
+ FOO implies BAR <=> not (FOO and (not BAR))
+
+
+The implies operation is neither commutative nor associative.
+
+The usual relational tests (==,
+!=, >=, <=,
+>, <) are supported.
+Relationals bind more tightly than boolean operators, so
+FOO!=n and BAR==m behaves as expected. Additionally,
+and binds more tightly than or, so
+that FOO or BAR and BAZ is FOO or (BAR and
+BAZ).
+
+The following additional ternary-logic operations are available.
+It is an error to apply these to operands with types other than
+bool or trit.
+
+Max or union; notation |. Here is a truth table:
+
+
+ y m n
+ +------
+y | y y y
+m | y m m
+n | y m n
+
+
+Min or intersection; notation &. Here is a
+truth table:
+
+
+ y m n
+ +------
+y | y m n
+m | m m n
+n | n n n
+
+
+ Similarity; notation $. Here is a truth
+ table:
+
+
+ y m n
+ +------
+y | y n n
+m | n m n
+n | n n n
+
+
+The operator precedence implied by the BNF above is implemented
+in the parser.
+
+
+
+Symbol Assignment and Side
+Effects
+
+Setting a symbol's value may have side-effects on other symbols
+in two ways.
+
+First, it may trigger a change in other variables through
+explicit requirements. See for
+discussion.
+
+Second, each symbol has two implicit lists associated with it:
+of symbols it depends on (ancestors) and symbols that depend on it
+(dependents). Whenever a symbol is changed, any side-effects are
+propagated through those lists. Changing the value of the symbol
+upward (n to m, or
+m to y) may change the value of
+ancestors; changing it downward (y to
+m or m to n) may
+affect the value of dependents.
+
+See also for discussion of the two
+syntactically different ways dependencies can be created, and section
+V for discussion of the deduction algorithm.
+
+&CML2; interpreters are required to implement all-or-nothing side
+effects; that is, after an assignment, either the assignment and
+all its side-effects have been performed, or (in the event the
+new values would violate a requirement) none of them are.
+
+The reference implementation achieves this by implementing two-phase
+commit; the assignment and its side-effects can be made tentatively,
+constraints checked, and then either committed or rolled back.
+
+Side-effect bindings remain linked to the symbol whose value change
+triggered them, and are backed out whenever that symbol is changed
+again. Backing out a side-effect may expose previous side-effects
+on a symbol. To see how this works, consider the following sequence of
+actions given the constraints (FOO==y implies BAR==y) and
+(BAZ==y implies BAR==n):
+
+
+ 1. User sets FOO=y. As a side-effect, this sets BAR=y
+ 2. User sets BAZ=y. As a side-effect, this sets BAR=n
+ 3. User sets BAZ=n. This does not have a direct side-effect on BAR.
+ However, since the value BAZ has changed, its side-effect BAR=n
+ is backed out. The value of BAR is again y.
+
+
+The reference implementation journals all side-effects and always
+looks for the most recent binding of a symbol when evaluating it.
+
+
+
+
+
+&CML2; configuration file formats
+
+
+Defconfig format
+
+A defconfig file consists of a series
+of lines in the format of Unix shell variable assignments. Each line
+is led with a symbol name (prefixed if there is a
+prefix declaration in the rulebase), continues with a
+=, and finishes with a value. The value may be
+y, n, or
+m for boolean or
+tristate symbols. It may be a quoted string for
+string literals, or an (unquoted) numeric literal for
+decimal or hexadecimal symbols.
+
+When a symbol FOO has not been set, &CML2; may
+emit a comment of the form
+#CONFIG_FOO is not set.
+In &CML1;, these comments were also emitted
+for symbols with the value n.
+
+In the future, &CML2; will write explicit
+FOO=n defconfig lines when a boolean or tristate
+symbol has been set by the user (or as a side-effect of user
+actions). This change would break compatibility wuith the current
+&CML1;-based configuration tools.
+
+Rationale: The change in treatment of symbols with value n is
+important in order to allow defconfigs to contain partial
+configurations that suppress features, e.g. such as might be generated
+by an autoprobe utility checking for the presence of buses or
+controller types.
+
+In the reference implementation, symbols are written in depth-first
+traversal order. Derived symbols are written after the query symbols;
+each derived symbol is written out if any of the symbols in its
+formula has been set.
+
+
+Macrofile format
+
+A macrofile is a series of C #define macro lines corresponding to
+configuration symbols. The macro corresponding to a symbol has the
+same name as that symbol, prefixed if there is a "prefix" declaration
+in the rulebase.
+
+If a boolean or tristate symbol has the value
+y, &CML2; generates a line defining the
+corresponding macro to have the value 1.
+
+If a boolean or tristate symbol has the value
+n, &CML2; generates a line undefining the
+corresponding macro.
+
+If a boolean or tristate symbol has the value
+m, &CML2; generates two lines. The first
+undefines the corresponding macro. The second defines a macro with
+the same name and the suffix "_MODULE" to be
+1.
+
+Each decimal and hexadecimal symbol generates a line defining the
+corresponding macro to the value of the numeric literal.
+
+Each string symbol generates a line defining the corresponding macro
+to the value of the string, as a C string literal in double quotes.
+
+These format conventions are identical to &CML1;'s.
+
+
+
+
+Change history
+
+
+ 0.1 -- 24 May 2000
+ Original &CML2; specification.
+
+ 0.2.0 -- 31 May 2000
+ Removed whenever/sets from the language. Everything is now done
+ with deduction.
+
+ 0.2.1 -- 4 June 2000
+ Added warndepend.
+
+ 0.3.0 -- 9 June 2000
+ Deduction algorithm rewritten and documented in section
+ V.
+
+ 0.4.0 -- 20 June 2000:
+ Value stacking is implemented.
+
+ 0.5.0 -- 26 June 2000:
+ Fuller support for ranges. Spec format converted to
+ DocBook.
+
+ 0.6.0 -- 30 June 2000:
+ Eliminated a lexical class.
+
+ 0.7.0 -- 6 July 2000:
+ The "options" directive was removed.
+
+ 0.7.0 -- 12 Aug 2000:
+ Added the `explanation' declaration.
+
+ 0.9.2 -- 15 Jan 2001:
+ Reference manual split out of the paper.
+
+ 0.9.8 -- 29 Mar 2001:
+ Module-suppression feature added.
+
+
+
+
+
diff -uNr linux.2.4.14.pristine/Documentation/kbuild/cml2-transition.txt linux/Documentation/kbuild/cml2-transition.txt
--- linux.2.4.14.pristine/Documentation/kbuild/cml2-transition.txt Wed Dec 31 19:00:00 1969
+++ linux/Documentation/kbuild/cml2-transition.txt Wed Nov 14 17:01:24 2001
@@ -0,0 +1,129 @@
+ Transition guide for CML2
+
+ Prerequisites
+
+You will need Python 2.0 or later to run CML2. Note: many Linux
+distributions still ship with the older Python 1.5.2 version, so you
+may find you need to upgrade. I made the jump to requiring 2.0
+because doing so reduces the amount of Python code that will have to
+ship with kernels and other CML2-configured systems by almost 500
+lines and should improve the Tcl/Tk support.
+
+For detailed Python-2.0 installation instructions, see
+. You will need the Python-2.0 and
+Tkinter-2.0-8.0 packages, but not expat. Note: if you install from
+sources, you will have to configure in curses in the Modules/Setup
+file in order for `make menuconfig` to work.
+
+ Using CML2 to configure Linux
+
+The CML2 installation supplies oldconfig, menuconfig, and xconfig make
+productions that are drop-in replacements for their CML1 equivalents.
+The `make config' production is different in that it tries to pick
+the best user interface for your environment rather than doing line mode;
+to force line mode, do `make ttyconfig'. The `make advent' production
+runs a somewhat different line-oriented configurator.
+
+You should be aware that the CML2 configurators no longer generate
+.config and autoconf.h files directly. Instead, they read and
+generate and edit a config.out file that is like a .config except for
+having explicit sets to 'n'; that is, where the .config format said "#
+FOO is not set" a CML2 config may say "FOO=n". This change supports
+passing around partial configurations with drivers and features
+explicitly configured out. It is intended to help support tools like
+Giacomo Catenazzi's kernel-autoconfiguration program.
+
+Ordinarily this change should be transparent. The `make *config'
+functions automatically follow the configurator run with a run of a
+script called configtrans that reads the new-format config.out you
+just generated and writes translations in the old format to the right
+places (.config and include/linux/autoconf.h). If the `make
+oldconfig' and `make editconfig' productions don't find a config.out
+but do find an existing .config, they'll copy it.
+
+When you want to save a configuration, save the config.out file
+rather than the .config file. You can always regenerate .config
+and include/linux/autoconf.h from it by running `make oldconfig'
+
+ Known Problems
+
+The xconfig front end does a lot of dynamic window resizing. This
+seems to tickle bugs in some window managers (notably in older
+versions of Enlightenment, but I have seen very occasional misbehavior
+under Sawmill as well). If you find the configurator window is placed
+oddly after a menu action, or lacks borders, or can't be moved or
+resized, you should probably either upgrade your window manager
+version or change window managers.
+
+ How To Report Bugs
+
+The best way to report an apparent bug varies depending on what kind
+it is. Many CML2 `bugs' are actually user-interface feature requests;
+many other `bugs' are actually problems with the CML2 rules files (among
+other things, the rulesfile controls the shape of the menu hierarchy).
+
+If you think you've found a rules-file problem, the best kind of bug
+report is a rulesfile patch accompanied by an explanation.
+
+Things that look like deduction bugs are almost always problems in the
+rules files. When a symbol BAR seems to have been set incorrectly, try
+typing `C BAR' to see all the constraints that symbol participates in.
+If you can pin down which rule is at fault, please report that.
+
+If you think you've found a genuine bug in how CML2 does its
+deduction, please send me three things:
+
+1. Your config.out or .config before. (If you're starting with a
+ blank slate, no .config or config.out, it's OK to just tell me that.)
+
+2. A session transcript made with ttyconfig illustrating the problem.
+
+3. Your config.out or .config afterwards.
+
+A session transcript made with ttyconfig is usually much more helpful
+than your natural-language description of the problem, because when
+you try to describe the problem you won't necessarily know what
+inmportant information you're leaving out.
+
+This kind of debugging is what ttyconfig is really for, and it has some
+special commants to support making these bug-trace transcripts. Use
+'e' to display the state of a symbol. Also, the `y' command has a
+suffix form; you can say "y FOO" and symbol FOO will be set to y
+without affecting the symbol you're currently being prompted for.
+This also works for 'm' and 'n'.
+
+ Kernel tree changes
+
+All files with the basename Config.in or config.in are obsolete.
+The following files can be also deleted once CML2 is in place:
+
+scripts/Configure
+scripts/Makefile
+scripts/Menuconfig
+scripts/README.Menuconfig
+scripts/header.tk
+scripts/tail.tk
+scripts/tkcond.c
+scripts/tkgen.c
+scripts/tkparse.c
+scripts/tkparse.h
+scripts/checkhelp.pl
+scripts/checkconfig.pl
+scripts/checkincludes.pl
+scripts/lxdialog/BIG.FAT.WARNING
+scripts/lxdialog/Makefile
+scripts/lxdialog/checklist.c
+scripts/lxdialog/colors.h
+scripts/lxdialog/dialog.h
+scripts/lxdialog/inputbox.c
+scripts/lxdialog/lxdialog*
+scripts/lxdialog/lxdialog.c
+scripts/lxdialog/menubox.c
+scripts/lxdialog/msgbox.c
+scripts/lxdialog/textbox.c
+scripts/lxdialog/util.c
+scripts/lxdialog/yesno.c
+Documentation/kbuild/config-language.txt
+Documentation/Configure.help
+
+The Configure.help information is now part of the CML2 rules files.
diff -uNr linux.2.4.14.pristine/arch/alpha/rules.cml linux/arch/alpha/rules.cml
--- linux.2.4.14.pristine/arch/alpha/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/arch/alpha/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,88 @@
+# Alpha processors
+
+# This is the top-level menu for architecture-dependent alpha stuff
+
+private ALPHA_AVANTI_REAL
+
+choices alphatype # Alpha system type
+ ALPHA_GENERIC ALPHA_ALCOR ALPHA_XL ALPHA_BOOK1 ALPHA_AVANTI_REAL
+ ALPHA_CABRIOLET ALPHA_DP264 ALPHA_EB164 ALPHA_EB64P
+ ALPHA_EB66 ALPHA_EB66P ALPHA_EIGER ALPHA_JENSEN ALPHA_LX164
+ ALPHA_MIATA ALPHA_MIKASA ALPHA_NAUTILUS ALPHA_NONAME ALPHA_NORITAKE
+ ALPHA_PC164 ALPHA_P2K ALPHA_RAWHIDE ALPHA_RUFFIAN ALPHA_RX164
+ ALPHA_SX164 ALPHA_SABLE ALPHA_SHARK ALPHA_TAKARA ALPHA_TITAN
+ ALPHA_WILDFIRE
+ default ALPHA_GENERIC
+
+derive ALPHA_AVANTI from ALPHA_XL or ALPHA_AVANTI_REAL
+require ALPHA implies PCI == (ALPHA_JENSEN or ALPHA_WILDFIRE or ALPHA_TITAN)
+
+derive ALPHA_EV4 from ALPHA_NONAME or ALPHA_BOOK1 or ALPHA_EB66 or ALPHA_EB66P
+ or ALPHA_P2K or ALPHA_CABRIOLET or ALPHA_AVANTI
+ or ALPHA_EB64P or ALPHA_XL or
+ ((ALPHA_MIKASA or ALPHA_NORITAKE) and (ALPHA_PRIMO==n))
+ or (ALPHA_SABLE and ALPHA_GAMMA==n)
+ or ALPHA_JENSEN
+derive ALPHA_LCA from ALPHA_NONAME or ALPHA_BOOK1 or ALPHA_EB66
+ or ALPHA_EB66P or ALPHA_P2K
+derive ALPHA_APECS from ALPHA_CABRIOLET or ALPHA_AVANTI or ALPHA_EB64P
+ or ALPHA_XL or
+ ((ALPHA_MIKASA or ALPHA_NORITAKE) and (ALPHA_PRIMO==n))
+derive ALPHA_EV5 from ALPHA_EB164 or ALPHA_PC164 or ALPHA_ALCOR or ALPHA_XL
+ or ALPHA_TAKARA or ALPHA_PRIMO or ALPHA_GAMMA
+ or ALPHA_MIATA or ALPHA_LX164 or ALPHA_SX164
+ or ALPHA_RUFFIAN or ALPHA_RAWHIDE or ALPHA_RX164
+derive ALPHA_CIA from ALPHA_EB164 or ALPHA_PC164 or ALPHA_ALCOR or ALPHA_XL
+ or ALPHA_TAKARA or ALPHA_PRIMO or ALPHA_MIATA
+ or ALPHA_LX164 or ALPHA_SX164 or ALPHA_RUFFIAN
+
+derive ALPHA_T2 from ALPHA_SABLE
+derive ALPHA_PYXIS from ALPHA_MIATA or ALPHA_LX164
+ or ALPHA_SX164 or ALPHA_RUFFIAN
+derive ALPHA_EV6 from ALPHA_DP264 or ALPHA_EIGER
+ or ALPHA_NAUTILUS or ALPHA_TITAN or ALPHA_WILDFIRE
+derive ALPHA_TSUNAMI from ALPHA_DP264 or ALPHA_EIGER
+derive ALPHA_MCPCIA from ALPHA_RAWHIDE
+derive ALPHA_POLARIS from ALPHA_RX164
+derive ALPHA_IRONGATE from ALPHA_NAUTILUS
+
+derive ALPHA_EISA from ALPHA_ALCOR or ALPHA_MIKASA or ALPHA_SABLE
+ or ALPHA_NORITAKE or ALPHA_RAWHIDE
+
+derive PCI_CONSOLE from (ALPHA or IA64) and FB
+derive ALPHA_BROKEN_IRQ_MASK from ALPHA_GENERIC or ALPHA_PC164
+
+require ALPHA_CABRIOLET implies ALPHA_EB64P
+
+unless ALPHA_DP264 or ALPHA_EIGER suppress ALPHA_EV67
+require ALPHA_WILDFIRE or ALPHA_TITAN or ALPHA_NAUTILUS # or ALPHA_SHARK
+ implies ALPHA_EV67
+
+unless ALPHA_SRM==y suppress SRM_ENV
+require SRM_ENV==y implies PROC_FS!=n
+
+menu alpha # Alpha configuration options
+ alphatype
+ ALPHA_EV67
+ ALPHA_PRIMO
+ ALPHA_GAMMA
+ ALPHA_SRM
+ BINFMT_EM86?
+ ALPHA_LEGACY_START_ADDRESS
+ SRM_ENV?
+
+unless ALPHA_MIKASA or ALPHA_NORITAKE suppress ALPHA_PRIMO
+unless ALPHA_SABLE suppress ALPHA_GAMMA
+
+derive FORCE_ALPHA_SRM from ALPHA_JENSEN or ALPHA_MIKASA or ALPHA_SABLE
+ or ALPHA_NORITAKE or ALPHA_DP264 or ALPHA_RAWHIDE
+ or ALPHA_EIGER or ALPHA_WILDFIRE or ALPHA_TITAN
+default ALPHA_SRM from FORCE_ALPHA_SRM
+private FORCE_ALPHA_SRM
+unless FORCE_ALPHA_SRM==n suppress ALPHA_SRM
+
+# LARGE_VMALLOC is racy, if you *really* need it then fix it first
+derive CONFIG_ALPHA_LARGE_VMALLOC from n
+
+# End
+
diff -uNr linux.2.4.14.pristine/arch/arm/rules.cml linux/arch/arm/rules.cml
--- linux.2.4.14.pristine/arch/arm/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/arch/arm/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,175 @@
+# ARM machines
+
+# This is the top-level menu for architecture-dependent ARM stuff
+
+choices armtype # ARM processor type
+ ARCH_ANAKIN
+ ARCH_A5K # This has help attached
+ ARCH_ARC ARCH_CLPS7500
+ ARCH_CLPS711X
+ ARCH_CO285 ARCH_EBSA110
+ ARCH_CAMELOT ARCH_FOOTBRIDGE ARCH_INTEGRATOR ARCH_L7200
+ ARCH_RPC ARCH_SA1100 ARCH_SHARK
+ default ARCH_RPC
+
+derive ARCH_ARCA5K from ARCH_ARC or ARCH_A5K
+derive PCI_INTEGRATOR from ARCH_INTEGRATOR and PCI
+
+menu clps711xtypes # CLPS711X/EP721X Implementations
+ ARCH_CDB89712 ARCH_CLEP7312 ARCH_EDB7211 ARCH_P720T
+
+# XXX Maybe these should indicate register compatibility
+# instead of being mutually exclusive.
+derive ARCH_EP7211 from ARCH_EDB7211
+derive ARCH_EP7212 from ARCH_P720T
+
+private SA1100_XP860_REAL
+
+menu sa1100type # SA1100 implementations
+ SA1100_ASSABET {ASSABET_NEPONSET}
+ SA1100_ADSBITSY
+ SA1100_BRUTUS
+ SA1100_CERF {cerf_ram cerf_flash SA1100_CERF_CPLD}
+ SA1100_H3600
+ # SA1100_EMPEG
+ SA1100_EXTENEX1 {SA1100_EXTENEX1_16MB}
+ SA1100_FLEXANET SA1100_FREEBIRD SA1100_GRAPHICSCLIENT
+ SA1100_GRAPHICSMASTER SA1100_JORNADA720 SA1100_HUW_WEBPANEL
+ SA1100_ITSY SA1100_LART SA1100_NANOENGINE SA1100_OMNIMETER
+ SA1100_PANGOLIN SA1100_PLEB SA1100_SHERMAN SA1100_SIMPAD
+ SA1100_PFS168 SA1100_VICTOR SA1100_XP860_REAL SA1100_YOPY
+
+choices cerf_ram # Cerf RAM available
+ SA1100_CERF_8MB SA1100_CERF_16MB SA1100_CERF_32MB SA1100_CERF_64MB
+ default SA1100_CERF_8MB
+
+choices cerf_flash # Cerf flash available
+ SA1100_CERF_FLASH_8MB SA1100_CERF_FLASH_16MB SA1100_CERF_FLASH_32MB
+ default SA1100_CERF_FLASH_8MB
+
+derive SA1111 from ASSABET_NEPONSET or SA1100_XP860
+ or SA1100_GRAPHICSMASTER or SA1100_ADSBITSY
+derive FORCE_MAX_ZONEORDER from 9 # Only used by SA1111 support
+derive SA1100_XP860 from SA1100_XP860_REAL or ASSABET_NEPONSET
+
+default SA1100_BRUTUS from ARCH_SA1100
+
+unless ARCH_FOOTBRIDGE suppress
+ footbridge ARCH_EBSA285_ADDIN ARCH_EBSA285_HOST
+ ARCH_CATS ARCH_NETWINDER ARCH_PERSONAL_SERVER
+unless ARCH_CLPS711X suppress ARCH_P720T
+
+require ARCH_FTVPCI or FOOTBRIDGE_HOST implies PCI==y
+
+# Select CPU types depending on the architecture selected.
+# We use this to select which CPUs are supported, and to select
+# the compiler tuning options.
+unless ARCH_RPC suppress CPU_ARM610
+unless ARCH_CLPS7500==n and ARCH_RPC suppress CPU_ARM710
+#derive CPU_ARM7 from ARCH_CLPS7500
+default CPU_ARM710 from ARCH_CLPS7500
+default CPU_ARM720T from ARCH_CLPS711X or ARCH_L7200 or ARCH_CDB89712
+unless (ARCH_CLPS711X or ARCH_L7200)==n and ARCH_INTEGRATOR suppress CPU_ARM720T
+unless ARCH_INTEGRATOR suppress dependent CPU_ARM920T #CPU_ARM1020
+#default CPU_ARM1020 from ARCH_INTEGRATOR
+unless ARCH_RPC suppress CPU_SA110
+unless CPU_32 suppress ARTHUR ARM_THUMB
+unless ARCH_CLPS711X suppress clps711xtypes
+unless ARCH_SA1100 suppress sa1100type
+
+default CPU_SA110 from ARCH_EBSA110 or ARCH_FTVPCI or FOOTBRIDGE
+unless ARCH_EBSA110!=n and ARCH_FTVPCI!=n and FOOTBRIDGE!=n suppress CPU_SA110
+
+unless EXPERIMENTAL suppress CPU_FREQ
+
+menu arm # ARM port
+ armtype
+ clps711xtypes
+ EP72XX_ROM_BOOT
+ footbridge
+ ARCH_EBSA285_ADDIN ARCH_EBSA285_HOST
+ ARCH_CATS ARCH_NETWINDER ARCH_PERSONAL_SERVER
+ sa1100type
+ ARCH_FTVPCI
+ PAGESIZE_16
+ CPU_ARM610 CPU_ARM710 CPU_ARM720T
+ CPU_ARM920T {
+ CPU_ARM920_CPU_IDLE
+ CPU_ARM920_D_CACHE_ON CPU_ARM920_I_CACHE_ON
+ CPU_ARM920_WRITETHROUGH
+ }
+ CPU_ARM926T {
+ CPU_ARM926_CPU_IDLE
+ CPU_ARM926_D_CACHE_ON CPU_ARM926_I_CACHE_ON
+ CPU_ARM926_FORCE_WRITETHROUGH
+ CPU_ARM926_ROUND_ROBIN
+ }
+ CPU_ARM1020 {
+ CPU_ARM1020_CPU_IDLE
+ CPU_ARM1020_D_CACHE_ON CPU_ARM1020_I_CACHE_ON
+ CPU_ARM1020_FORCE_WRITETHROUGH
+ CPU_ARM1020_ROUND_ROBIN
+ }
+ CPU_SA110
+ ALIGNMENT_TRAP #TEXT_SECTIONS
+ ARTHUR? ARM_THUMB CPU_FREQ
+ LEDS {LEDS_TIMER LEDS_CPU}
+ angelboot_legend ANGELBOOT
+
+derive FOOTBRIDGE from ARCH_FOOTBRIDGE or ARCH_CO285
+derive FOOTBRIDGE_HOST from ARCH_CATS or ARCH_EBSA285_HOST
+ or ARCH_NETWINDER or ARCH_PERSONAL_SERVER
+derive FOOTBRIDGE_ADDIN from ARCH_CO285 or ARCH_EBSA285_ADDIN
+derive ARCH_EBSA285 from ARCH_EBSA285_HOST or ARCH_EBSA285_ADDIN
+derive CPU_SA1100 from ARCH_SA1100
+
+unless CPU_26 suppress PAGESIZE_16
+
+# Easy check for Acorn-style architectures
+derive ARCH_ACORN from ARCH_ARCA5K or ARCH_RPC
+
+# Select our input device
+derive ARM_PC_KEYB from FOOTBRIDGE_HOST or ARCH_CLPS7500
+derive PC_KEYMAP from FOOTBRIDGE_HOST or ARCH_SA1100 or ARCH_INTEGRATOR
+ or ARCH_CLPS7500 or ARCH_P720T
+derive KMI_KEYB from ARCH_INTEGRATOR
+derive KMI_MOUSE from ARCH_INTEGRATOR
+
+# Figure out whether this system uses 26-bit or 32-bit CPUs. Nobody has
+# ever built a machine that can take both, and now that ARM3 is obsolete
+# nobody is likely to either.
+derive CPU_26 from ARM and ARCH_ARCA5K
+derive CPU_32 from ARM and (CPU_26==n)
+
+# In CML1,
+# `or ARCH_TBOX or ARCH_SHARK or ARCH_NEXUSPCI
+# was part of this guard.
+derive CPU_32v4 from ARCH_EBSA110 or ARCH_FOOTBRIDGE or ARCH_CLPS711X
+ or ARCH_SA1100 or ARCH_CLPS7500
+ or ARCH_L7200 or ARCH_INTEGRATOR or ARCH_FTVPCI
+ or ARCH_ANAKIN or ARCH_CAMELOT
+derive L7200_KEYB from ARCH_L7200
+derive CPU_32v3 from ARCH_RPC or ARCH_CLPS7500
+
+unless CPU_32 and ARCH_EBSA110!=y suppress ALIGNMENT_TRAP #TEXT_SECTIONS
+unless CPU_32 suppress ARTHUR
+
+derive ISA_DMA from FOOTBRIDGE_HOST or ARCH_SHARK or ARCH_CLPS7500
+ or ARCH_EBSA110 or ARCH_CDB89712 or ARCH_EDB7211
+require ISA_DMA implies ISA==y
+
+unless ARCH_NETWINDER or ARCH_EBSA110 or ARCH_EBSA285 or ARCH_FTVPCI
+ or ARCH_SA1100 or ARCH_CO285 or ARCH_P720T or ARCH_CDB89712
+ suppress LEDS
+unless ARCH_NETWINDER or ARCH_EBSA285 or ARCH_CO285
+ or ARCH_SA1100 or ARCH_P720T suppress LEDS_TIMER LEDS_CPU
+default LEDS_TIMER from ARCH_EBSA110
+
+derive RPCMOUSE from ARCH_ACORN and BUSMOUSE!=n and ARCH_RPC==y
+derive KBDMOUSE from ARCH_ACORN and BUSMOUSE!=n and ARCH_RPC!=y
+
+# The Future TV card used to be manufactured by Nexus Electronics.
+# Remnants of this history still lurk in the kernel sources.
+derive ARCH_NEXUSPCI from ARCH_FTVPCI
+
+# End
diff -uNr linux.2.4.14.pristine/arch/cris/rules.cml linux/arch/cris/rules.cml
--- linux.2.4.14.pristine/arch/cris/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/arch/cris/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,246 @@
+# This is the top-level menu for architecture-dependent CRIS stuff
+
+private CRIS
+
+default ETRAX_DRAM_SIZE from 8
+default ETRAX_FLASH_BUSWIDTH from 2
+default ETRAX_ROOT_DEVICE from "/dev/mtdblock3"
+default ETRAX_LED1G from 2
+default ETRAX_LED1R from 3
+default ETRAX_LED2G from 4
+default ETRAX_LED2R from 5
+default ETRAX_LED3R from 2
+default ETRAX_LED3G from 2
+default ETRAX_LED4R from 2
+default ETRAX_LED4G from 2
+default ETRAX_LED5R from 2
+default ETRAX_LED5G from 2
+default ETRAX_LED6R from 2
+default ETRAX_LED6G from 2
+default ETRAX_LED7R from 2
+default ETRAX_LED7G from 2
+default ETRAX_LED8Y from 2
+default ETRAX_LED9Y from 2
+default ETRAX_LED10Y from 2
+default ETRAX_LED11Y from 2
+default ETRAX_LED12R from 2
+default ETRAX_DEF_R_WAITSTATES from 0x95a6
+default ETRAX_DEF_R_BUS_CONFIG from 0x104
+default ETRAX_DEF_R_DRAM_CONFIG from 0x1a200040
+default ETRAX_DEF_R_DRAM_TIMING from 0x5611
+default ETRAX_DEF_R_SDRAM_CONFIG from 0xd2fa7878
+default ETRAX_DEF_R_SDRAM_TIMING from 0x80004801
+default ETRAX_DEF_R_PORT_PA_DIR from 0x1c
+default ETRAX_DEF_R_PORT_PA_DATA from 0x00
+default ETRAX_DEF_R_PORT_PB_CONFIG from 0x00
+default ETRAX_DEF_R_PORT_PB_DIR from 0x00
+default ETRAX_DEF_R_PORT_PB_DATA from 0xff
+#default ELTEST_IPADR from 0xab1005af
+#default ELTEST_NETWORK from 0xab100000
+#default ELTEST_NETMASK from 0xffff0000
+#default ELTEST_BROADCAST from 0xab10ffff
+#default ELTEST_GATEWAY from 0xab100101
+#default ELTEST_ETHADR from 0x00408ccd0000
+default ETRAX_SER0_DTR_ON_PB_BIT from 4
+default ETRAX_SER0_RI_ON_PB_BIT from 5
+default ETRAX_SER0_DSR_ON_PB_BIT from 6
+default ETRAX_SER0_CD_ON_PB_BIT from 7
+default ETRAX_SER1_DTR_ON_PB_BIT from 4
+default ETRAX_SER1_RI_ON_PB_BIT from 5
+default ETRAX_SER1_DSR_ON_PB_BIT from 6
+default ETRAX_SER1_CD_ON_PB_BIT from 7
+default ETRAX_SER2_DTR_ON_PA_BIT from 4
+default ETRAX_SER2_RI_ON_PA_BIT from 5
+default ETRAX_SER2_DSR_ON_PA_BIT from 6
+default ETRAX_SER2_CD_ON_PA_BIT from 7
+default ETRAX_RS485_ON_PA_BIT from 3
+default ETRAX_SYNCHRONOUS_SERIAL0_DMA from ETRAX_SYNCHRONOUS_SERIAL_PORT0
+default ETRAX_SYNCHRONOUS_SERIAL1_DMA from ETRAX_SYNCHRONOUS_SERIAL_PORT1
+default ETRAX_PA_BUTTON_BITMASK from 0x02
+default ETRAX_PA_CHANGEABLE_DIR from 0x00
+default ETRAX_PA_CHANGEABLE_BITS from 0xff
+default ETRAX_PB_CHANGEABLE_DIR from 0x00
+default ETRAX_PB_CHANGEABLE_BITS from 0x0ff
+default ETRAX_PTABLE_SECTOR from 65536
+default ETRAX_DS1302_RSTBIT from 2
+default ETRAX_DS1302_SCLBIT from 1
+default ETRAX_DS1302_SDABIT from 0
+default ETRAX_SHUTDOWN_BIT from 12
+default ETRAX_POWERBUTTON_BIT from 25
+default PROFILE_SHIFT from 2
+
+# These used to be questions in the CRIS setup menu.
+derive ETRAX_ETHERNET from CRIS and NET_ETHERNET
+derive ETRAX_SERIAL from CRIS and SERIAL!=n
+derive ETRAX_IDE from CRIS and IDE!=n
+derive ETRAX_I2C from CRIS and I2C!=n
+derive ETRAX_USB_HOST from CRIS and USB!=n
+
+unless ETRAX_SERIAL suppress crisserial
+
+unless ETRAX_SDRAM==n suppress ETRAX_DEF_R_DRAM_CONFIG ETRAX_DEF_R_DRAM_TIMING
+
+unless ETRAX_ETHERNET suppress cris_net_led
+choices cris_net_led # Network LED behavior
+ ETRAX_NETWORK_LED_ON_WHEN_LINK ETRAX_NETWORK_LED_ON_WHEN_ACTIVITY
+ default ETRAX_NETWORK_LED_ON_WHEN_ACTIVITY
+
+menu cris # Axis Communications ETRAX 100LX
+ cristype
+ ETRAX_WATCHDOG
+ BINFMT_JAVA?
+ ETRAX_DRAM_SIZE%
+ ETRAX_FLASH_BUSWIDTH%
+ ETRAX_ROOT_DEVICE$
+ crisleds
+ ETRAX_LED1G% ETRAX_LED1R%
+ ETRAX_LED2G% ETRAX_LED2R%
+ ETRAX_LED3R% ETRAX_LED3G%
+ ETRAX_LED4G% ETRAX_LED4R%
+ ETRAX_LED5G% ETRAX_LED5R%
+ ETRAX_LED6R% ETRAX_LED6G%
+ ETRAX_LED7R% ETRAX_LED7G%
+ ETRAX_LED8Y% ETRAX_LED9Y% ETRAX_LED10Y% ETRAX_LED11Y% ETRAX_LED12R%
+ cris_net_led
+ crisdebug
+ crisrescue
+ ETRAX_DEF_R_WAITSTATES@
+ ETRAX_DEF_R_BUS_CONFIG@
+ ETRAX_SDRAM {
+ ETRAX_DEF_R_SDRAM_CONFIG@ ETRAX_DEF_R_SDRAM_TIMING@
+ }
+ # else
+ ETRAX_DEF_R_DRAM_CONFIG@ ETRAX_DEF_R_DRAM_TIMING@
+ ETRAX_DEF_R_PORT_PA_DIR@
+ ETRAX_DEF_R_PORT_PA_DATA@
+ ETRAX_DEF_R_PORT_PB_CONFIG@
+ ETRAX_DEF_R_PORT_PB_DIR@
+ ETRAX_DEF_R_PORT_PB_DATA@
+ ETRAX_ETHERNET_LPSLAVE {ETRAX_ETHERNET_LPSLAVE_HAS_LEDS}
+ #ETRAX_ETHERNET ETRAX_SERIAL
+ crisserial
+ ETRAX_PARPORT {ETRAX_PARALLEL_PORT0 ETRAX_PARALLEL_PORT1}
+ ETRAX_AXISFLASHMAP {ETRAX_PTABLE_SECTOR%}
+ ETRAX_I2C_USES_PB_NOT_PB_I2C
+ ETRAX_I2C_EEPROM etrax_eeprom
+ ETRAX_GPIO {
+ ETRAX_PA_BUTTON_BITMASK@
+ ETRAX_PA_CHANGEABLE_DIR@
+ ETRAX_PA_CHANGEABLE_BITS@
+ ETRAX_PB_CHANGEABLE_DIR@
+ ETRAX_PB_CHANGEABLE_BITS@
+ }
+ JULIETTE
+ ETRAX_DS1302 {etrax_rtc}
+ ETRAX_SOFT_SHUTDOWN {ETRAX_SHUTDOWN_BIT% ETRAX_POWERBUTTON_BIT%}
+ PROFILE {PROFILE_SHIFT%}
+
+unless ETRAX_NO_LEDS==n suppress ETRAX_LED1G ETRAX_LED1R ETRAX_LED2G ETRAX_LED2R ETRAX_LED3R ETRAX_LED3G
+unless ETRAX_CSP0_LEDS suppress
+ ETRAX_LED4G ETRAX_LED4R
+ ETRAX_LED5G ETRAX_LED5R
+ ETRAX_LED6R ETRAX_LED6G
+ ETRAX_LED7R ETRAX_LED7G
+ #ETRAX_LED8Y ETRAX_LED9Y ETRAX_LED10Y ETRAX_LED11Y ETRAX_LED12R
+
+require ETRAX_ETHERNET==y implies NET_ETHERNET==y
+require ETRAX_IDE==y implies BLK_DEV_IDE==y and BLK_DEV_IDEDISK==y and
+ BLK_DEV_IDECD==y and BLK_DEV_IDEDMA==y
+ and DMA_NONPCI==y
+require ETRAX_USB_HOST implies USB==y
+
+require ETRAX_PARPORT implies PARPORT==y and PARPORT_1284==y and PRINTER==y
+
+# Here we define the symbols necessary to enable MTD support for the flash.
+require ETRAX_AXISFLASHMAP implies MTD==y and MTD_CFI==y and
+ MTD_CFI_INTELEXT==n and MTD_CFI_AMDSTD==y and
+ MTD_CHAR==y
+# This is probably an error
+#derive MTD_AMDSTD from ETRAX_AXISFLASHMAP
+derive MTD_PARITIONS from ETRAX_AXISFLASHMAP
+
+choices cristype # Processor type
+ ETRAX100LX ETRAX100LX_V2 SVINTO_SIM
+ default ETRAX100LX
+
+choices crisleds # Product LED port
+ ETRAX_PA_LEDS ETRAX_PB_LEDS ETRAX_CSP0_LEDS ETRAX_NO_LEDS
+ default ETRAX_PA_LEDS
+
+choices crisdebug # Product debug port
+ ETRAX_DEBUG_PORT0 ETRAX_DEBUG_PORT1 ETRAX_DEBUG_PORT2
+ ETRAX_DEBUG_PORT3 ETRAX_DEBUG_PORT_NULL
+ default ETRAX_DEBUG_PORT0
+
+choices crisrescue # Product rescue port
+ ETRAX_RESCUE_SER0 ETRAX_RESCUE_SER1 ETRAX_RESCUE_SER2 ETRAX_RESCUE_SER3
+ default ETRAX_RESCUE_SER0
+
+default ETRAX_SERIAL_RX_TIMEOUT_TICKS from 5
+derive ETRAX_SERIAL_FAST_TIMER from n # This will change
+
+menu crisserial # CRIS serial port
+ ETRAX_SERIAL_PORT0
+ # ETRAX_SERIAL_FAST_TIMER {
+ ETRAX_SERIAL_FLUSH_DMA_FAST {ETRAX_SERIAL_RX_TIMEOUT_TICKS%}
+ #}
+ ETRAX_SER0_DTR_RI_DSR_CD_ON_PB {
+ ETRAX_SER0_DTR_ON_PB_BIT%
+ ETRAX_SER0_RI_ON_PB_BIT%
+ ETRAX_SER0_DSR_ON_PB_BIT%
+ ETRAX_SER0_CD_ON_PB_BIT%
+ }
+ ETRAX_SERIAL_PORT1 {
+ ETRAX_SER1_DTR_RI_DSR_CD_ON_PB {
+ ETRAX_SER1_DTR_ON_PB_BIT%
+ ETRAX_SER1_RI_ON_PB_BIT%
+ ETRAX_SER1_DSR_ON_PB_BIT%
+ ETRAX_SER1_CD_ON_PB_BIT%
+ }
+ }
+ ETRAX_SERIAL_PORT2 {
+ ETRAX_SER2_DTR_RI_DSR_CD_ON_PA {
+ ETRAX_SER2_DTR_ON_PA_BIT%
+ ETRAX_SER2_RI_ON_PA_BIT%
+ ETRAX_SER2_DSR_ON_PA_BIT%
+ ETRAX_SER2_CD_ON_PA_BIT%
+ }
+ }
+ ETRAX_SERIAL_PORT3
+ ETRAX_RS485 {ETRAX_RS485_ON_PA {ETRAX_RS485_ON_PA_BIT%} ETRAX_RS485_DISABLE_RECEIVER}
+ ETRAX_SYNCHRONOUS_SERIAL {
+ ETRAX_SYNCHRONOUS_SERIAL_PORT0 {
+ ETRAX_SYNCHRONOUS_SERIAL0_DMA
+ }
+ ETRAX_SYNCHRONOUS_SERIAL_PORT1 {
+ ETRAX_SYNCHRONOUS_SERIAL1_DMA
+ }
+ }
+
+require ETRAX_SER0_DTR_RI_DSR_CD_ON_PB==n or ETRAX_SER1_DTR_RI_DSR_CD_ON_PB==n
+ explanation crisconflict_complaint
+
+choices ide_reset # IDE reset pin
+ ETRAX_IDE_PB7_RESET
+ ETRAX_IDE_G27_RESET
+ ETRAX_IDE_CSE1_16_RESET
+ ETRAX_IDE_CSP0_8_RESET
+ default ETRAX_IDE_PB7_RESET
+
+choices etrax_eeprom
+ ETRAX_I2C_EEPROM_PROBE ETRAX_I2C_EEPROM_2KB
+ ETRAX_I2C_EEPROM_8KB ETRAX_I2C_EEPROM_16KB
+ default ETRAX_I2C_EEPROM_PROBE
+
+menu etrax_rtc
+ ETRAX_DS1302_RST_ON_GENERIC_PORT
+ ETRAX_DS1302_RSTBIT% ETRAX_DS1302_SCLBIT% ETRAX_DS1302_SDABIT%
+
+# Etrax100 LX v1 has a MMU "feature" requiring a low mapping
+derive CRIS_LOW_MAP from ETRAX100LX
+derive ETRAX_DRAM_VIRTUAL_BASE from CRIS_LOW_MAP ? 0x60000000 : 0xc0000000
+
+# Enable the debugger from the kernelhacking menu
+derive ETRAX_KGDB from CRIS and KGDB
+
+# End
diff -uNr linux.2.4.14.pristine/arch/i386/rules.cml linux/arch/i386/rules.cml
--- linux.2.4.14.pristine/arch/i386/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/arch/i386/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,77 @@
+# from arch/i386/config.in
+
+#private X86
+
+# Perhaps this should default on for 686 clones as well?
+default MTRR from M686 or MPENTIUMIII
+
+# This is the top-level menu for architecture-dependent i386 stuff
+menu x86 # Intel options
+ x86type
+ MICROCODE?
+ TOSHIBA? I8K?
+ X86_MSR?
+ X86_CPUID?
+ himem
+ MTRR
+ X86_UP_APIC
+ X86_UP_IOAPIC
+ MULTIQUAD
+ # Visual Workstation support is utterly broken.
+ # If you want to see it working mail an VW540 to hch@infradead.org 8)
+ #VISWS
+
+unless M686 suppress MICROCODE
+unless SMP!=y suppress X86_UP_APIC X86_UP_IOAPIC
+unless SMP!=n suppress MULTIQUAD
+#require VISWS implies PCI == y
+
+derive X86_LOCAL_APIC from X86_UP_IOAPIC
+
+choices x86type # Intel x86 processor types
+ M386 M486 M586 M586TSC M586MMX M686 MPENTIUMIII MPENTIUM4 MK6 MK7
+ MCRUSOE MWINCHIPC6 MWINCHIP2 MWINCHIP3D MCYRIXIII
+ default M686
+
+choices himem # High Memory Support
+ NOHIGHMEM HIGHMEM4G HIGHMEM64G
+ default NOHIGHMEM
+
+derive X86_WP_WORKS_OK from (M386==n)
+derive X86_INVLPG from (M386==n)
+derive X86_BSWAP from (M386==n)
+derive X86_POPAD_OK from (M386==n)
+derive X86_TSC from M586TSC or M586MMX or M686 or MPENTIUMIII or MK6 or MK7
+ or MCRUSOE or MWINCHIP2 or MWINCHIP3D or MPENTIUM4
+ or MCYRIXIII
+derive X86_GOOD_APIC from M586MMX or M686 or MPENTIUMIII or MK7 or MPENTIUM4
+derive X86_PGE from M686 or MPENTIUMIII or MK7 or MPENTIUM4
+derive X86_USE_3DNOW from MK7 or MWINCHIP3D or MCYRIXIII
+derive X86_CMPXCHG from M386==n
+derive X86_USE_STRING_486 from M486 or M586 or M586TSC or M586MMX
+derive X86_ALIGNMENT_16 from M486 or M586 or M586TSC or M586MMX or MK6
+ or MWINCHIPC6 or MWINCHIP2 or MWINCHIP3D
+ or MCYRIXIII
+derive X86_USE_PPRO_CHECKSUM from M686 or MPENTIUMIII or MK6 or MK7
+ or MWINCHIPC6 or MWINCHIP2 or MWINCHIP3D
+ or MPENTIUM4
+derive X86_PAE from HIGHMEM64G
+derive X86_IO_APIC from X86_UP_IOAPIC or SMP
+
+#derive X86_LOCAL_APIC from X86 and X86_UP_IOAPIC or SMP # or VISWS
+#derive X86_VISWS_APIC from X86 and VISWS
+derive X86_XADD from X86 and M386==n
+
+# There are PCI-only machines out there, but as of 2.40-test1 I'm told
+# nobody has tested the kernel with an x86 lacking ISA. Giacomo Catenazzi
+# believes that some motherboard chips use the ISA support code anyway even
+# if you don't have an ISA bus.
+require X86 implies ISA==y
+
+# Configure.help implies that RTC has to be compiled in hard if SMP is
+# on, but compiling it modular is reported to work by hklygre@online.no.
+require X86 and SMP implies RTC!=n
+
+derive X86_L1_CACHE_SHIFT from 5 - (M386 or M486) + (MPENTIUM4 * 2) + MK6
+
+# End
diff -uNr linux.2.4.14.pristine/arch/ia64/rules.cml linux/arch/ia64/rules.cml
--- linux.2.4.14.pristine/arch/ia64/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/arch/ia64/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,75 @@
+# IA64 port
+
+# This is the top-level menu for architecture-dependent Itanium stuff
+
+unless EXPERIMENTAL suppress ACPI_KERNEL_CONFIG IA32SUPPORT
+
+choices ia64type # IA-64 processor type
+ ITANIUM MCKINLEY
+ default ITANIUM
+
+choices ia64system # IA-64 system type
+ IA64_GENERIC IA64_DIG IA64_HP_SIM
+ IA64_SGI_SN1 IA64_SGI_SN2
+ default IA64_GENERIC
+
+derive IA64_SGI_SN from IA64_SGI_SN1 or IA64_SGI_SN2
+derive PERCPU_IRQ from IA64_SGI_SN
+derive ACPI_EFI from IA64 and ACPI
+
+# FIXME: This creates a constraint violation in the initial state.
+#require IA64_HP_SIM==n implies ACPI_KERNEL_CONFIG==y
+
+
+require IA64_SGI_SN_SIM implies DEVFS_DEBUG==y and DEVFS_FS==y and IA64_MCA==y
+
+choices pagesize # Kernel page size
+ IA64_PAGE_SIZE_4KB IA64_PAGE_SIZE_8KB
+ IA64_PAGE_SIZE_16KB IA64_PAGE_SIZE_64KB
+ default IA64_PAGE_SIZE_16KB
+
+choices granularity # Physical memory granularity
+ IA64_GRANULE_16MB IA64_GRANULE_64MB
+ default IA64_GRANULE_16MB
+
+unless IA64_HP_SIM or IA64_GENERIC suppress SIMETH SIM_SERIAL
+#unless ITANIUM suppress ITANIUM_ASTEP_SPECIFIC
+unless ITANIUM suppress ITANIUM_BSTEP_SPECIFIC
+#unless MCKINLEY suppress MCKINLEY_ASTEP_SPECIFIC
+
+unless IA64_SGI_SN suppress
+ IA64_SGI_SN_DEBUG IA64_SGI_SN_SIM IA64_SGI_AUTOTEST
+ SERIAL_SGI_L1_PROTOCOL PCIBA
+
+menu ia64 # Itanium processors
+ ia64type
+ ia64system
+ pagesize granularity
+ ITANIUM_ASTEP_SPECIFIC {MCKINLEY_ASTEP_SPECIFIC {MCKINLEY_A0_SPECIFIC}}
+ ITANIUM_BSTEP_SPECIFIC
+ #IA64_SGI_SN {
+ IA64_SGI_SN_DEBUG IA64_SGI_SN_SIM IA64_SGI_AUTOTEST
+ SERIAL_SGI_L1_PROTOCOL PCIBA?
+ #}
+ IA64_MCA ACPI_KERNEL_CONFIG PERFMON
+ IA64_PALINFO? EFI_VARS?
+ SIMETH? SIM_SERIAL SCSI_SIM
+ IA32SUPPORT
+
+require IA64_SGI_SN implies DISCONTIGMEM==y and NUMA==y
+
+require SCSI_SIM implies SCSI!=n
+
+derive IA64_BRL_EMU from ITANIUM or IA64_SGI_SN1
+#derive IA64_SGI_IO from IA64_SGI_SN1
+
+unless IA64_DIG suppress
+ ITANIUM_ASTEP_SPECIFIC
+ #IA64_AZUSA_HACKS
+ # IA64_FW_EMU
+ IA64_MCA
+ # IA64_IRQ_ACPI
+
+derive IA64_L1_CACHE_SHIFT from (IA64_SGI_SN1 or MCKINLEY) ? 7 : 6
+
+# End
diff -uNr linux.2.4.14.pristine/arch/m68k/rules.cml linux/arch/m68k/rules.cml
--- linux.2.4.14.pristine/arch/m68k/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/arch/m68k/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,52 @@
+# Motorola 680x0-based machines
+
+# Derive as much as we can from architecture-independent questions
+derive AMIGA_FLOPPY from BLK_DEV_FD & AMIGA
+derive ATARI_FLOPPY from BLK_DEV_FD & ATARI
+
+private M68K
+
+unless EXPERIMENTAL suppress dependent M68KFPU_EMU AMIGA_PCMCIA
+unless EXPERT suppress ADVANCED
+unless SUN3!=y suppress SINGLE_MEMORY_CHUNK
+
+menu m68k # Motorola 68K processor options
+ MAC
+ AMIGA {ZORRO {ZORRO_NAMES} AMIGA_PCMCIA STRAM_SWAP STRAM_PROC}
+ ATARI {HADES}
+ APOLLO
+ VME {
+ MVME147 {MVME147_NET? MVME147_SCSI MVME147_SCC}
+ MVME16x {MVME16x_NET? MVME16x_SCSI MVME162_SCC}
+ BVME6000 {
+ BVME6000_NET? BVME6000_SCSI BVME6000_SCC
+ }
+ }
+ HP300 {DIO}
+ SUN3
+ SUN3X
+ M68020 {M68030 {M68040 {M68060}}}
+ M68KFPU_EMU {M68KFPU_EMU_EXTRAPREC M68KFPU_EMU_ONLY}
+ ADVANCED {RMW_INSNS SINGLE_MEMORY_CHUNK CONFIG_060_WRITETHROUGH}
+ Q40
+ USERIAL
+
+unless M68060 suppress CONFIG_060_WRITETHROUGH
+
+require M68K implies (PCI==HADES)
+derive NUBUS from MAC
+derive M68K_L2_CACHE from MAC
+
+derive DN_SERIAL from APOLLO and SERIAL==y
+
+# These were separate questions in CML1
+derive MAC_SCC from MAC & SERIAL
+derive SUN3_SCSI from (SUN3 | SUN3X) & SCSI
+
+derive SUN_MOUSE from SUN3X_ZS
+derive SUN_KEYBOARD from SUN3X_ZS
+
+# Hmmm...this is going to force SERIAL on, I think...
+require VME implies SERIAL_CONSOLE==y
+
+# End
diff -uNr linux.2.4.14.pristine/arch/mips/rules.cml linux/arch/mips/rules.cml
--- linux.2.4.14.pristine/arch/mips/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/arch/mips/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,142 @@
+# MIPS 32 and 64-bit ports
+
+# This is the top-level menu for architecture-dependent Mips stuff
+# Both MIPS32 and MIPS64 ports are handled here because they have
+# lots of port-specific questions in common that would be illegal
+# to duplicate across menus.
+
+unless EXPERIMENTAL suppress dependent
+ ACER_PICA_61 ALGOR_P4032 BAGET_MIPS DECSTATION DDB5074 NINO
+
+private MIPS MIPS32 MIPS64 MIPS_PS2_KEYB
+
+require MIPS implies SMP
+
+unless EXPERT suppress CPU_HAS_LLSC CPU_HAS_LLDSCD CPU_HAS_WB
+unless WIZARD suppress CROSSCOMPILE #MIPS_FPE_MODULE
+#unless MODULES!=n suppress MIPS_FPE_MODULE
+
+unless QTRONIX_KEYBOARD==n suppress MIPS_PS2_KEYB IT8172_SCR0
+unless MIPS_ITE8172 suppress IT8172_REVC MIPS_PS2_KEYB IT8172_SCR1
+unless MIPS_ITE8172 or MIPS_IVR suppress IT8172_SCR0
+
+menu mips # MIPS machine selection
+ mipstype
+ # MIPS32 items begin here ----------------------------------------
+ ACER_PICA_61 ALGOR_P4032 BAGET_MIPS
+ DECSTATION DDB5074
+ MIPS_EV96100 MIPS_EV64120 {EVB_PCI1 galileo_clock}
+ MIPS_ATLAS MIPS_MALTA
+ NINO {nino_model}
+ MIPS_MAGNUM_4000 MOMENCO_OCELOT DDB5476 DDB5477
+ OLIVETTI_M700 SGI_IP22 SNI_RM200_PCI
+ MIPS_ITE8172 MIPS_IVR
+ QTRONIX_KEYBOARD
+ # Deal with nasty dependency interlock involving QTRONIX_KEYBOARD
+ IT8172_REVC
+ MIPS_PS2_KEYB
+ IT8172_SCR0
+ IT8172_SCR1
+ # Back to top level...
+ MIPS_PB1000
+ CPU_HAS_LLSC CPU_HAS_LLDSCD CPU_HAS_WB
+ CROSSCOMPILE
+ #MIPS_FPE_MODULE
+ # MIPS64 items begin here ----------------------------------------
+ SGI_IP27 {
+ SGI_SN0_N_MODE MAPPED_KERNEL
+ REPLICATE_KTEXT REPLICATE_EXHANDLERS
+ }
+ MIPS_INSANE_LARGE MIPS32_COMPAT
+
+require MOMENCO_OCELOT==y implies SYSCLK_100==y
+
+derive IT8172_CIR from QTRONIX_KEYBOARD
+
+choices galileo_clock # Galileo Chip Clock
+ CONFIG_SYSCLK_75 CONFIG_SYSCLK_83 CONFIG_SYSCLK_100
+ default CONFIG_SYSCLK_83
+
+choices nino_model # Nino Model Number
+ NINO_4MB NINO_8MB NINO_16MB
+ default NINO_8MB
+
+unless MIPS32 suppress
+ ACER_PICA_61 ALGOR_P4032 BAGET_MIPS DECSTATION DDB5074
+ MIPS_MAGNUM_4000 OLIVETTI_M700 SGI_IP22 SNI_RM200_PCI
+ CPU_HAS_LLSC CPU_HAS_LLDSCD CPU_HAS_WB
+unless MIPS64 suppress
+ SGI_IP27 SGI_SN0_N_MODE # SGI_SN0_XXL
+ MIPS_INSANE_LARGE MIPS32_COMPAT
+
+default CPU_HAS_LLSC from MIPS64 or (CPU_R3000==n)
+default CPU_HAS_LLDSCD from MIPS32
+default CPU_HAS_WB from CPU_R3000 and DECSTATION
+
+require (ALGOR_P4032 or SNI_RM200_PCI or DDB5074) implies PCI==y
+require (MIPS_MAGNUM_4000 or OLIVETTI_M700 or ACER_PICA_61
+ or SNI_RM200_PCI or DDB5074)
+ implies ISA==y
+derive MIPS_PC_KEYB from MIPS_MAGNUM_4000 or OLIVETTI_M700 or ACER_PICA_61
+ or SGI_IP22 or SNI_RM200_PCI or FOOTBRIDGE
+ or MIPS_PS2_KEYB or MIPS_ITE8172
+ or (IT8712 and QTRONIX_KEYBOARD==n)
+require DDB5074 or SNI_RM200_PCI or SGI_IP27 or MIPS_EV96100 or MIPS_EV64120
+ or MIPS_MALTA or MOMENCO_OCELOT or DDB5477 or MIPS_ITE8172
+ or MIPS_IVR
+ implies PCI==y
+require DECSTATION or SGI_IP22 implies IDE==n
+require (MIPS_MAGNUM_4000 or OLIVETTI_M700) implies FB==y
+derive ARC32 from
+ MIPS_MAGNUM_4000 or OLIVETTI_M700 or ACER_PICA_61
+ or SGI_IP22 or SNI_RM200_PCI
+
+#derive HAVE_IO_PORTS from MIPS_MAGNUM_4000 or OLIVETTI_M700 or ACER_PICA_61
+# or SNI_RM200_PCI or DDB5074
+derive MIPS_JAZZ from MIPS_MAGNUM_4000 or OLIVETTI_M700 or ACER_PICA_61
+ or MIPS_MAGNUM_4000 or OLIVETTI_M700
+derive FB_G364 from MIPS_MAGNUM_4000 or OLIVETTI_M700
+derive SGI from SGI_IP22 or SGI_IP27
+derive BOOT_ELF32 from SGI_IP22
+derive BOARD_SCACHE from SGI_IP22
+derive ARC_MEMORY from SGI_IP22
+derive BOOT_ELF64 from SGI_IP27
+derive ARC64 from SGI_IP27
+derive COHERENT_IO from SGI_IP27
+derive QL_ISP_A64 from SGI_IP27
+
+derive VIDEO_G364 from n
+
+choices mipstype # MIPS-32 CPU selection
+ CPU_R3000 CPU_R6000 CPU_VR41XX CPU_R4300 CPU_R4X00
+ CPU_R5000 CPU_R5432 CPU_RM7000 CPU_R8000
+ CPU_NEVADA CPU_R10000 CPU_SB1 CPU_MIPS32 CPU_MIPS64
+ default CPU_R4X00
+unless MIPS32 suppress CPU_R3000 CPU_R6000
+
+derive ELF_KERNEL from MIPS
+
+derive MIPS_GT96100 from MIPS_EV96100
+derive SWAP_IO_SPACE from MIPS_EV96100 or MIPS_ATLAS or MIPS_MALTA
+ or MOMENCO_OCELOT
+derive OLD_TIME_C from MIPS_EV64120 or ALGOR_P4032 or MIPS_MAGNUM_4000
+ or OLIVETTI_M700 or MOMENCO_OCELOT or SGI_IP22 or SNI_RM200_PCI
+derive NEW_TIME_C from DDB5074 or DDB5477
+derive MIPS_GT64120 from MIPS_EV64120
+derive I8259 from ACER_PICA_61 or MIPS_MALTA or SNI_RM200_PCI or DDB5074
+derive HAVE_STD_PC_SERIAL_PORT from MIPS_MALTA or DDB5074
+derive NEW_IRQ from MIPS_MALTA or MOMENCO_OCELOT or SGI_IP22
+ or DDB5477 or MIPS_PB1000
+derive ROTTEN_IRQ from SNI_RM200_PCI or DDB5074
+derive IT8712 from MIPS_ITE8172
+derive MIPS_AU1000 from MIPS_PB1000
+derive NEW_PCI from MIPS_EV96100 or MIPS_ITE8172
+derive PCI_AUTO from MIPS_EV96100 or MIPS_ITE8172
+
+# This was a separate query in CML1
+derive MIPS_RTC from MIPS & RTC
+
+derive L1_CACHE_SHIFT from SGI_IP27 ? 7 : 5
+derive CONFIG_MAPPED_PCI_IO from SGI_IP27
+
+# End
diff -uNr linux.2.4.14.pristine/arch/parisc/rules.cml linux/arch/parisc/rules.cml
--- linux.2.4.14.pristine/arch/parisc/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/arch/parisc/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,20 @@
+# HP PA-RISC port
+
+#unless PCI suppress GSC_DINO PCI_LBA
+#default GSC_DINO from PCI and PARISC
+
+menu parisc
+ KWDB
+ #GSC
+ IOMMU_CCIO IODC_CONSOLE
+ GSC_LASI {
+ PARPORT_GSC? #LASI_82596
+ }
+ GSC_DINO PCI_LBA
+
+derive IOSAPIC from PCI_LBA
+derive IOMMU_SBA from PCI_LBA
+
+require PARISC implies SMP == n
+
+# End
diff -uNr linux.2.4.14.pristine/arch/ppc/rules.cml linux/arch/ppc/rules.cml
--- linux.2.4.14.pristine/arch/ppc/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/arch/ppc/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,84 @@
+# from arch/ppc/config.in
+
+# This is the top-level menu for architecture-dependent Power PC stuff
+
+private CONFIG_6xx_GENERIC
+unless CONFIG_8xx suppress PCI_QSPAN
+
+unless DANGEROUS suppress TAU_INT
+
+choices ppctype # Power PC processor type
+ CONFIG_6xx CONFIG_4xx POWER3 POWER4 CONFIG_8260 CONFIG_8xx
+ default CONFIG_6xx
+
+choices ppc4xxtype
+ OAK WALNUT
+ default OAK
+
+choices ppc6xxtype
+ CONFIG_6xx_GENERIC GEMINI APUS
+ default CONFIG_6xx_GENERIC
+
+choices ppc82xxtype
+ EST8260
+ default EST8260
+
+# This doesn't seem to be used in the C code anywhere
+derive ABSTRACT_CONSOLE from APUS
+
+derive FB_CONSOLE from APUS
+
+choices ppc8xxtype
+ RPXLITE RPXCLASSIC BSEIP FADS
+ TQM823L TQM850L TQM855L TQM860L FPS850L TQM860
+ SPD823TS IVMS8 IVML24 SM850 MBX WINCEPT
+ default RPXLITE
+
+derive TQM8xxL from TQM823L or TQM850L or FPS850L
+ or TQM855L or TQM860L or SM850
+
+#default PCI_PERMEDIA from PCI
+
+menu ppc
+ ppctype
+ ppc82xxtype
+ ppc4xxtype
+ ppc6xxtype ALTIVEC
+ TAU {TAU_INT TAU_AVERAGE}
+ BOOTX_TEXT PPC601_SYNC_FIX
+ ppc8xxtype
+ CONFIG_8xx_COPYBACK CONFIG_8xx_CPU6 UCODE_PATCH
+ PCI_QSPAN
+ PCI_PERMEDIA
+
+unless CONFIG_4xx suppress ppc4xxtype
+unless CONFIG_6xx suppress ppc6xxtype ALTIVEC PMAC_PBOOK PMAC_BACKLIGHT
+ BOOTX_TEXT PPC601_SYNC_FIX
+unless CONFIG_8xx suppress ppc8xxtype CONFIG_8xx_COPYBACK CONFIG_8xx_CPU6 PCI_QSPAN
+unless CONFIG_8260 suppress ppc82xxtype
+
+derive PPC_STD_MMU from CONFIG_6xx or POWER3 or POWER4
+derive ALL_PPC from PPC and PPC_STD_MMU==n
+derive MACH_SPECIFIC from ALL_PPC
+derive PPC64BRIDGE from POWER3 or POWER4
+
+require CONFIG_8260 implies CONFIG_6xx==y
+require CONFIG_8260 or CONFIG_8xx implies SERIAL_CONSOLE==y
+require (APUS or CONFIG_8260) implies PCI
+require PCI_QSPAN or PCI_PERMEDIA implies PCI == y
+#require PCI_QSPAN implies PCI == y
+
+#unless APUS suppress PCI_PERMEDIA
+
+require APUS implies (FB and FB_CONSOLE and AMIGA and ZORRO and AMIGAMOUSE!=n and MOUSE!=n and BUSMOUSE!=n)
+unless APUS suppress AMIGA_BUILTIN_SERIAL
+require (APUS and (AMIGA_BUILTIN_SERIAL!=n or GVPIOEXT!=n or MULTIFACE_III_TTY!=n))
+ implies SERIAL_CONSOLE==y
+derive APUS_FAST_EXCEPT from APUS
+
+require PPC implies ISA==n
+
+# Not clear this is used anywhere
+derive KERNEL_ELF from PPC
+
+# End
diff -uNr linux.2.4.14.pristine/arch/s390/rules.cml linux/arch/s390/rules.cml
--- linux.2.4.14.pristine/arch/s390/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/arch/s390/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,26 @@
+# IBM S/390 mainframe port
+
+# This is the top-level menu for architecture-dependent System 390 stuff
+
+private S390 S390X
+
+menu s390 # System 390 processor options
+ FAST_IRQ
+ IPL {s390_ipl}
+ CHANDEV
+ PROCESS_DEBUG PFAULT SHARED_KERNEL
+
+choices s390_ipl # IPL method generated into head.S
+ IPL_TAPE IPL_VM
+ default IPL_TAPE
+
+unless ARCH_S390==n suppress
+ ISA PCI PNP MCA TC PARPORT HOTPLUG IDE SCSI
+ CD_NO_IDESCSI USB IEEE1394 I2O
+
+require ARCH_S390 implies ISA==n and PCI==n and PNP==n and MCA==n and TC==n
+ and PARPORT==n and HOTPLUG==n and IDE==n and SCSI==n
+ and CD_NO_IDESCSI==n and USB==n and IEEE1394==n and ADB==n
+ and I2O==n and BINFMT_AOUT==n and KCORE_ELF==y
+
+# End
diff -uNr linux.2.4.14.pristine/arch/sh/rules.cml linux/arch/sh/rules.cml
--- linux.2.4.14.pristine/arch/sh/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/arch/sh/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,54 @@
+# SuperH port
+
+# This is the top-level menu for architecture-dependent SuperH stuff
+
+# Even on SuperH devices which don't have an ISA bus,
+# this variable helps the PCMCIA modules handle
+# IRQ requesting properly -- Greg Banks.
+require SUPERH implies ISA == y
+
+default MEMORY_START from 0x08000000
+default HD64461_IRQ from 36
+default HD64465_IRQ from 5
+default HD64465_IOBASE from 0xb0000000
+
+choices superhsys # SuperH system type
+ SH_GENERIC
+ SH_SOLUTION_ENGINE
+ SH_7751_SOLUTION_ENGINE
+ SH_STB1_HARP
+ SH_STB1_OVERDRIVE
+ SH_HP620 SH_HP680 SH_HP690
+ SH_CQREEK SH_DMIDA SH_EC3104 SH_DREAMCAST SH_CAT68701
+ SH_BIGSUR SH_SH2000
+ SH_UNKNOWN
+ default SH_GENERIC
+
+choices superhtype # SuperH processor type
+ CPU_SUBTYPE_SH7707 CPU_SUBTYPE_SH7708 CPU_SUBTYPE_SH7709 CPU_SUBTYPE_SH7750 CPU_SUBTYPE_SH7751 CPU_SUBTYPE_ST40STB1
+ default CPU_SUBTYPE_SH7708
+
+menu superh # SuperH options
+ superhsys
+ superhtype
+ MEMORY_START@
+ HD64461 {HD64461_IRQ% HD64461_ENABLER}
+ HD64465 {HD64465_IRQ% HD64465_IOBASE@}
+ SH_STANDARD_BIOS
+ SH_EARLY_PRINTK
+ CF_ENABLER
+
+unless SH_GENERIC or SH_SOLUTION_ENGINE or SH_UNKNOWN suppress CF_ENABLER
+unless SH_STANDARD_BIOS suppress SH_EARLY_PRINTK
+unless HD64461 suppress HD64461_IRQ
+unless HD64461 suppress HD64461_ENABLER
+
+derive CPU_SH3 from CPU_SUBTYPE_SH7707 or CPU_SUBTYPE_SH7708 or CPU_SUBTYPE_SH7709
+derive CPU_SH4 from CPU_SUBTYPE_SH7750 or CPU_SUBTYPE_SH7751 or CPU_SUBTYPE_ST40STB1
+derive SH_HP600 from SH_HP620 or SH_HP680 or SH_HP690
+derive SH_RTC from SH_GENERIC or SH_SOLUTION_ENGINE or SH_STB1_OVERDRIVE or SH_HP620 or SH_HP680 or SH_HP690 or SH_CQREEK or SH_DMIDA or SH_EC3104 or SH_UNKNOWN
+
+# This was a separate question in CML1.
+derive HD64465_PCMCIA from HD64465 & PCMCIA
+
+# End
diff -uNr linux.2.4.14.pristine/arch/sparc/rules.cml linux/arch/sparc/rules.cml
--- linux.2.4.14.pristine/arch/sparc/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/arch/sparc/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,37 @@
+# SPARC32 port configuration
+
+# The CML1 for the Sparc 64 configuration asserted these rules
+# for all Sun machines, but it looks like some of them are broken
+# by SUN3X boxes.
+#
+require SPARC implies ISA==n and PCMCIA==n and VT==y and VT_CONSOLE==y
+ and BUSMOUSE==y and SUN_MOUSE==y and SERIAL==y and SERIAL_CONSOLE==y
+ and ISAPNP==n
+derive SBUS from SPARC or SUN3X
+derive SBUSCHAR from SPARC or SUN3X
+derive SUN_SERIAL from SPARC or SUN3X
+derive SUN_CONSOLE from SPARC
+derive SUN_AUXIO from SPARC
+derive SUN_IO from SPARC
+
+unless (SUN4==n) suppress sbus_misc sparcaudio
+
+unless SPARC32 suppress SUN4
+unless SPARC64 suppress SPARC32_COMPAT
+
+menu sparc # Sparc processor options
+ SUN4
+ sbus_misc
+ sparcaudio
+ SUNOS_EMUL
+ SOLARIS_EMUL?
+ SPARC32_COMPAT {BINFMT_AOUT32}
+
+require (SPARC64 and PCI) implies
+ BLK_DEV_IDEPCI==y and IDEDMA_NEW_DRIVE_LISTINGS==y and
+ BLK_DEV_NS87415==y and BLK_DEV_CMD64X==y
+ # and BLK_DEV_IDEDMA==y
+ # and BLK_DEV_IDE_MODES==y
+ # and IDEDMA_AUTO==y
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/acpi/rules.cml linux/drivers/acpi/rules.cml
--- linux.2.4.14.pristine/drivers/acpi/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/acpi/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,27 @@
+# Power management support
+
+default PM from ACPI_KERNEL_CONFIG
+default ACPI from ACPI_KERNEL_CONFIG
+
+#default ACPI_INTERPRETER from ACPI_KERNEL_CONFIG
+#unless EXPERIMENTAL suppress dependent ACPI_INTERPRETER
+derive ACPI_INTERPRETER from ACPI_KERNEL_CONFIG
+
+menu pm # Power management
+ PM {
+ ACPI {
+ ACPI_DEBUG
+ ACPI_BUSMGR? {
+ ACPI_SYS? ACPI_CPU? ACPI_BUTTON?
+ ACPI_AC? ACPI_EC? ACPI_CMBATT? ACPI_THERMAL?
+ }
+ }
+ APM? {
+ APM_IGNORE_USER_SUSPEND APM_DO_ENABLE APM_CPU_IDLE
+ APM_DISPLAY_BLANK # APM_IGNORE_MULTIPLE_SUSPEND
+ #APM_IGNORE_SUSPEND_BOUNCE
+ APM_RTC_IS_GMT APM_ALLOW_INTS
+ APM_REAL_MODE_POWER_OFF
+ }
+ }
+
diff -uNr linux.2.4.14.pristine/drivers/atm/rules.cml linux/drivers/atm/rules.cml
--- linux.2.4.14.pristine/drivers/atm/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/atm/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,61 @@
+# from drivers/atm/Config.in
+
+unless ATM suppress atm
+unless INET suppress ATM_TCP
+unless X86 suppress ATM_ZATM_EXACT_TS
+unless PCI or SBUS suppress ATM_FORE200E_MAYBE
+unless PCI suppress ATM_FORE200E_PCA
+unless SBUS suppress ATM_FORE200E_SBA
+
+unless PCI suppress ATM_ENI # eni.c
+unless PCI suppress ATM_ZATM # zatm.c
+unless PCI suppress ATM_NICSTAR # nicstar.c
+unless PCI suppress ATM_AMBASSADOR # ambassador.c; EISA version is
+ # not supported
+unless PCI suppress ATM_HORIZON # horizon.c
+unless PCI suppress ATM_IA # iphase.c
+
+unless EXPERIMENTAL suppress PPPOATM
+
+default ATM_FORE200E_DEBUG from 0
+default ATM_FORE200E_TX_RETRY from 16
+default ATM_FORE200E_SBA_FW from ""
+default ATM_FORE200E_PCA_FW from ""
+
+menu atm # ATM drivers
+ ATM_TCP? ATM_LANAI?
+ ATM_ENI? {
+ ATM_ENI_DEBUG ATM_ENI_TUNE_BURST {
+ ATM_ENI_BURST_TX_16W ATM_ENI_BURST_TX_8W
+ ATM_ENI_BURST_TX_4W ATM_ENI_BURST_TX_2W
+ ATM_ENI_BURST_RX_16W ATM_ENI_BURST_RX_8W
+ ATM_ENI_BURST_RX_4W ATM_ENI_BURST_RX_2W
+ }
+ }
+ ATM_ZATM? {ATM_ZATM_DEBUG ATM_ZATM_EXACT_TS}
+ ATM_FIRESTREAM?
+ # ATM_TNETA1570 {ATM_TNETA1570_DEBUG}
+ ATM_NICSTAR? {ATM_NICSTAR_USE_SUNI ATM_NICSTAR_USE_IDT77105}
+ ATM_IDT77252? {ATM_IDT77252_RCV_ALL}
+ ATM_AMBASSADOR? {ATM_AMBASSADOR_DEBUG}
+ ATM_HORIZON? {ATM_HORIZON_DEBUG}
+ ATM_IA? {ATM_IA_DEBUG}
+ ATM_FORE200E_MAYBE? {
+ ATM_FORE200E_PCA {ATM_FORE200E_PCA_DEFAULT_FW}
+ ATM_FORE200E_PCA_FW$
+ ATM_FORE200E_SBA {ATM_FORE200E_SBA_DEFAULT_FW}
+ ATM_FORE200E_SBA_FW$
+ ATM_FORE200E_TX_RETRY% ATM_FORE200E_DEBUG%
+ }
+ PPPOATM?
+
+derive ATM_FORE200E from ATM & (ATM_FORE200E_MAYBE | m)
+
+unless ATM_FORE200E_PCA==n suppress ATM_FORE200E_PCA_FW
+unless ATM_FORE200E_SBA==n suppress ATM_FORE200E_SBA_FW
+
+require (ATM_FORE200E_MAYBE!=n and PCI) implies ATM_FORE200E_PCA == y
+
+derive CONFIG_ATM_IDT77252_USE_SUNI from ATM_IDT77252_RCV_ALL
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/block/paride/rules.cml linux/drivers/block/paride/rules.cml
--- linux.2.4.14.pristine/drivers/block/paride/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/block/paride/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,20 @@
+# Parallel-port IDE configuration
+
+# The parallel-port IDE support (ppIDE) doesn't need PARPORT, but if PARPORT
+# is configured as a module, ppIDE must also be a module. This rule replaces
+# the bogus CONFIG_PARIDE_PARPORT option that controlled the choices
+# given to the user in the old language.
+prohibit (PARPORT==m) and (PARIDE==y)
+
+unless PARIDE_EPAT!=n and EXPERIMENTAL suppress PARIDE_EPATC8
+
+menu paride_devices # Parallel-port IDE devices
+ # Parallel IDE high-level drivers
+ PARIDE_PD? PARIDE_PCD? PARIDE_PF? PARIDE_PT? PARIDE_PG?
+ # Parallel IDE protocol modules
+ PARIDE_ATEN? PARIDE_BPCK? PARIDE_BPCK6? PARIDE_COMM? PARIDE_DSTR?
+ PARIDE_FIT2? PARIDE_FIT3? PARIDE_EPAT? PARIDE_EPIA? PARIDE_FRIQ?
+ PARIDE_FRPW? PARIDE_KBIC? PARIDE_KTTI? PARIDE_ON20? PARIDE_ON26?
+ PARIDE_EPATC8
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/block/rules.cml linux/drivers/block/rules.cml
--- linux.2.4.14.pristine/drivers/block/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/block/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,207 @@
+# Block device configuration
+
+unless DANGEROUS suppress WDC_ALI15X3
+
+unless AMIGA suppress BLK_DEV_GAYLE
+unless ATARI suppress BLK_DEV_FALCON_IDE ATARI_ACSI
+unless ARCH_ACORN suppress BLK_DEV_IDE_ICSIDE BLK_DEV_IDE_RAPIDE
+unless MAC and EXPERIMENTAL suppress BLK_DEV_SWIM_IOP BLK_DEV_MAC_IDE
+unless PPC or ARM suppress BLK_DEV_SL82C105
+unless PPC suppress BLK_DEV_IDE_PMAC MAC_FLOPPY
+unless X86 or IA64 suppress BLK_DEV_PIIX
+unless X86 suppress BLK_DEV_HD_ONLY BLK_DEV_HD_IDE BLK_DEV_SIS5513
+unless CRIS suppress ide_reset ETRAX_IDE_DELAY
+unless ARCH_ARCA5K suppress
+ BLK_DEV_FD1772 BLK_DEV_MFM BLK_DEV_MFM_AUTODETECT
+unless ARCH_S390 suppress DASD BLK_DEV_XPRAM
+unless ARCH_S390==n suppress BLK_DEV_FD PARIDE
+unless ZORRO suppress BLK_DEV_BUDDHA AMIGA_Z2RAM
+unless ISAPNP==y suppress BLK_DEV_ISAPNP
+unless PCI suppress BLK_DEV_RZ1000 BLK_DEV_IDEPCI
+ BLK_CPQ_DA BLK_CPQ_CISS_DA BLK_DEV_DAC960
+unless MCA suppress BLK_DEV_PS2
+unless EXPERIMENTAL suppress dependent
+ IDEDMA_NEW_DRIVE_LISTINGS BLK_DEV_OPTI621
+ BLK_DEV_PDC4030 BLK_DEV_BUDDHA
+unless ISA suppress BLK_DEV_XD
+unless MIPS suppress BLK_DEV_IT8172
+unless Q40 suppress BLK_DEV_Q40IDE
+
+# Correction from Colin Slater
+unless CONFIG_8xx suppress BLK_DEV_MPC8xx_IDE
+unless CONFIG_8xx suppress mpc8xxtype
+unless BLK_DEV_MPC8xx_IDE suppress mpc8xxtype
+
+unless NET suppress dependent BLK_DEV_NBD
+unless IDE!=n suppress dependent ide_blockdevs
+
+require DASD_ECKD <= DASD
+require DASD_FBA <= DASD
+#require DASD_CKD <= DASD
+require DASD_DIAG <= DASD
+
+menu block_devices # Block devices
+ # Floppies
+ BLK_DEV_FD? BLK_DEV_SWIM_IOP BLK_DEV_FD1772? MAC_FLOPPY
+ ide_blockdevs
+ BLK_DEV_PS2! AMIGA_Z2RAM!
+ ATARI_ACSI! {ACSI_MULTI_LUN ATARI_SLM!} # Atari
+ BLK_CPQ_DA! BLK_CPQ_CISS_DA!
+ BLK_DEV_MFM! {BLK_DEV_MFM_AUTODETECT} # Acorn
+ add_block_devices
+ DASD? {
+ DASD_ECKD? {DASD_AUTO_ECKD}
+ DASD_FBA? {DASD_AUTO_FBA}
+ # DASD_CKD?
+ DASD_DIAG? {DASD_AUTO_DIAG}
+ }
+
+# Normally, in a stock Linux tree, we suppress the vendor-specific menu.
+# Comment out this line if your source tree includes the right stuff...
+derive BLK_DEV_IDEDISK_VENDOR from n
+derive BLK_DEV_COMMERIAL from n
+
+unless BLK_DEV_IDEDISK_VENDOR suppress ide_vendorhooks
+
+default ETRAX_IDE_DELAY from 15
+
+menu ide_blockdevs # IDE block devices
+ BLK_DEV_IDE!
+ BLK_DEV_HD_ONLY
+ ide_options
+ ide_chipsets
+ ide_reset # See the cris rulesfile
+ ETRAX_IDE_DELAY% # Only used on CRIS port, so far
+ IDE_CHIPSETS {other_ide_chipsets}
+ BLK_DEV_IDE_PMAC {BLK_DEV_IDEDMA_PMAC {BLK_DEV_IDEDMA_PMAC_AUTO}} # Mac
+ BLK_DEV_IDE_ICSIDE {BLK_DEV_IDEDMA_ICS {IDEDMA_ICS_AUTO}}
+ IDEDMA_IVB
+ BLK_DEV_IDE_RAPIDE
+ BLK_DEV_GAYLE {BLK_DEV_IDEDOUBLER}
+ BLK_DEV_BUDDHA BLK_DEV_FALCON_IDE BLK_DEV_MAC_IDE
+ BLK_DEV_Q40IDE # Q40
+ BLK_DEV_MPC8xx_IDE {mpc8xxtype} # PPC
+ ide_vendorhooks
+
+choices mpc8xxtype # Type of MPC8xx IDE interface
+ IDE_8xx_PCCARD IDE_8xx_DIRECT IDE_EXT_DIRECT
+ default IDE_8xx_PCCARD
+
+unless BLK_DEV_COMMERIAL==n suppress BLK_DEV_TIVO
+
+menu ide_vendorhooks # IDE vendor-specific hooks
+ BLK_DEV_IDEDISK_FUJITSU
+ BLK_DEV_IDEDISK_IBM
+ BLK_DEV_IDEDISK_MAXTOR
+ BLK_DEV_IDEDISK_QUANTUM
+ BLK_DEV_IDEDISK_SEAGATE
+ BLK_DEV_IDEDISK_WD
+ BLK_DEV_TIVO
+
+derive DMA_NONPCI from BLK_DEV_TIVO
+
+menu ide_options # IDE options -- see Documentation/ide.txt for help/info
+ BLK_DEV_HD_IDE
+ BLK_DEV_IDEDISK! {IDEDISK_MULTI_MODE}
+ BLK_DEV_IDECS!
+ BLK_DEV_IDECD!
+ BLK_DEV_IDETAPE!
+ BLK_DEV_IDEFLOPPY!
+ BLK_DEV_IDESCSI!
+
+menu ide_chipsets # IDE chipset support/bugfixes
+ BLK_DEV_CMD640 {BLK_DEV_CMD640_ENHANCED}
+ BLK_DEV_ISAPNP
+ BLK_DEV_RZ1000
+ BLK_DEV_IDEPCI {
+ IDEPCI_SHARE_IRQ
+ BLK_DEV_IDEDMA_PCI {
+ IDEDMA_PCI_AUTO
+ IDEDMA_NEW_DRIVE_LISTINGS
+ IDEDMA_PCI_WIP
+ BLK_DEV_ALI15X3 {WDC_ALI15X3}
+ BLK_DEV_AMD74XX {AMD74XX_OVERRIDE}
+ BLK_DEV_HPT34X {HPT34X_AUTODMA}
+ BLK_DEV_HPT366
+ BLK_DEV_PIIX {PIIX_TUNING}
+ BLK_DEV_IT8172 {IT8172_TUNING}
+ BLK_DEV_NS87415
+ BLK_DEV_PDC202XX {PDC202XX_BURST PDC202XX_FORCE}
+ BLK_DEV_SVWKS
+ BLK_DEV_SIS5513
+ BLK_DEV_SLC90E66
+ BLK_DEV_TRM290
+ BLK_DEV_VIA82CXXX
+ }
+ BLK_DEV_OFFBOARD
+ BLK_DEV_AEC62XX {AEC62XX_TUNING}
+ BLK_DEV_CMD64X
+ BLK_DEV_CY82C693
+ BLK_DEV_CS5530
+ BLK_DEV_OPTI621
+ BLK_DEV_SL82C105
+ }
+
+derive BLK_DEV_ADMA from BLK_DEV_IDEDMA_PCI
+
+# Other chipset dependencies
+unless EXPERIMENTAL suppress
+ IDEDMA_PCI_WIP BLK_DEV_NS87415 BLK_DEV_TRM290
+unless IDEDMA_PCI_WIP suppress AMD74XX_OVERRIDE HPT34X_AUTODMA
+unless IDEDMA_PCI_AUTO suppress PIIX_TUNING
+
+menu other_ide_chipsets # Other IDE chipset support (most need boot parameters)
+ BLK_DEV_4DRIVES BLK_DEV_ALI14XX BLK_DEV_DTC2278 BLK_DEV_HT6560B
+ BLK_DEV_PDC4030 BLK_DEV_QD65XX BLK_DEV_UMC8672
+
+default BLK_DEV_RAM_SIZE from 24576
+
+menu add_block_devices # Additional block devices
+ BLK_DEV_LOOP?
+ BLK_DEV_NBD?
+ MD {
+ BLK_DEV_MD? {MD_LINEAR? MD_RAID0? MD_RAID1? MD_RAID5?}
+ MD_MULTIPATH? BLK_DEV_LVM?
+ BLK_DEV_ATARAID? {BLK_DEV_ATARAID_PDC? BLK_DEV_ATARAID_HPT?}
+ }
+ BLK_DEV_DAC960?
+ BLK_DEV_RAM? {BLK_DEV_RAM_SIZE% {BLK_DEV_INITRD}}
+ BLK_DEV_XPRAM?
+ BLK_DEV_XD?
+ PARIDE? {paride_devices}
+
+unless EXPERIMENTAL and BLK_DEV_IDE!=n suppress BLK_DEV_ATARAID
+unless BLK_DEV_IDE==n suppress BLK_DEV_HD_ONLY
+unless BLK_DEV_IDE!=n suppress ide_options ide_chipsets other_ide_chipsets
+unless BLK_DEV_IDEDISK==y suppress IDEDISK_MULTI_MODE BLK_DEV_PDC4030
+
+
+unless BLK_DEV_IDE!=n suppress BLK_DEV_IDE_PMAC BLK_DEV_IDE_ICSIDE
+
+require BLK_DEV_IDEDISK <= BLK_DEV_IDE
+require BLK_DEV_IDECS <= BLK_DEV_IDE and BLK_DEV_IDECS <= PCMCIA
+require BLK_DEV_IDECD <= BLK_DEV_IDE
+require BLK_DEV_IDETAPE <= BLK_DEV_IDE
+require BLK_DEV_IDEFLOPPY <= BLK_DEV_IDE
+require BLK_DEV_IDESCSI <= BLK_DEV_IDE
+
+derive BLK_DEV_IDEDMA from BLK_DEV_IDEDMA_PCI or
+ BLK_DEV_IDEDMA_PMAC or BLK_DEV_IDEDMA_ICS or
+ (SPARC64 and PCI)
+derive IDEDMA_AUTO from IDEDMA_PCI_AUTO or BLK_DEV_IDEDMA_PMAC_AUTO or IDEDMA_ICS_AUTO
+ or (SPARC64 and PCI)
+
+derive BLK_DEV_IDE_MODES from
+ IDE_CHIPSETS or BLK_DEV_AEC62XX or BLK_DEV_ALI15X3 or
+ BLK_DEV_AMD74XX or BLK_DEV_CMD640 or BLK_DEV_CMD64X or
+ BLK_DEV_CS5530 or BLK_DEV_CY82C693 or BLK_DEV_HPT34X or
+ BLK_DEV_HPT366 or BLK_DEV_IDE_PMAC or BLK_DEV_OPTI621 or
+ BLK_DEV_SVWKS or BLK_DEV_PDC202XX or BLK_DEV_PIIX or
+ BLK_DEV_SIS5513 or BLK_DEV_SLC90E66 or BLK_DEV_SL82C105 or
+ BLK_DEV_MPC8xx_IDE or (SPARC64 and PCI)
+derive BLK_DEV_HD from BLK_DEV_HD_IDE or BLK_DEV_HD_ONLY
+
+unless BLK_DEV_IDEDMA_PCI or BLK_DEV_IDEDMA_PMAC or BLK_DEV_IDEDMA_ICS
+ suppress IDEDMA_IVB
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/bluetooth/rules.cml linux/drivers/bluetooth/rules.cml
--- linux.2.4.14.pristine/drivers/bluetooth/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/bluetooth/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,6 @@
+# Bluetooth driver configuration (see also net/bluetooth.cml)
+
+menu bluetooth_drivers
+ BLUEZ_HCIUSB? BLUEZ_HCIUART? BLUEZ_HCIVHCI?
+
+# end
diff -uNr linux.2.4.14.pristine/drivers/cdrom/rules.cml linux/drivers/cdrom/rules.cml
--- linux.2.4.14.pristine/drivers/cdrom/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/cdrom/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,13 @@
+# from drivers/cdrom/Config.in:
+
+default MCD_BASE from 0x300
+default MCD_IRQ from 11
+
+menu nativecdrom
+ AZTCD? GSCD? SBPCD? {SBPCD2 {SBPCD3 {SBPCD4}}}
+ MCD? {MCD_IRQ% MCD_BASE@}
+ MCDX? OPTCD? CM206? SJCD? ISP16_CDI? CDU31A? CDU535?
+
+unless SBPCD==y suppress SBPCD2
+unless MCD==y suppress MCD_IRQ MCD_BASE
+
diff -uNr linux.2.4.14.pristine/drivers/char/ftape/rules.cml linux/drivers/char/ftape/rules.cml
--- linux.2.4.14.pristine/drivers/char/ftape/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/char/ftape/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,42 @@
+# Tape configuration
+
+# From drivers/char/Config.in and drivers/char/ftape/Config.in, continued
+
+default FT_ALPHA_CLOCK from 0
+
+#unless OBSOLETE suppress qic
+unless WIZARD and QIC02_TAPE!=n suppress QIC02_DYNCONF
+unless EXPERIMENTAL suppress dependent FT_NR_BUFFERS FT_FDC_THR FT_FDC_MAX_RATE
+unless ALPHA suppress FT_ALPHA_CLOCK
+
+default FT_FDC_IRQ from 0 range 0-15
+default FT_FDC_DMA from 0 range 0-5
+default FT_FDC_BASE from 0
+default FT_FDC_MAX_RATE from 2000
+default FT_FDC_THR from 8
+default FT_NR_BUFFERS from 3
+default ZFT_DFLT_BLK_SZ from 10240
+
+menu qic # QIC tape support
+ QIC02_TAPE? QIC02_DYNCONF
+ FTAPE? {ZFTAPE? {ZFT_DFLT_BLK_SZ%}}
+ FT_NR_BUFFERS% FT_PROC_FS ftdebug
+ # Floppy tape hardware configuration
+ ftcontroller
+ FT_FDC_BASE@ FT_FDC_IRQ% FT_FDC_DMA%
+ FT_FDC_THR% FT_FDC_MAX_RATE% FT_ALPHA_CLOCK%
+
+choices ftdebug # Floppy tape debugging output level
+ FT_NORMAL_DEBUG FT_FULL_DEBUG FT_NO_TRACE FT_NO_TRACE_AT_ALL
+ default FT_NORMAL_DEBUG
+
+choices ftcontroller # Floppy tape controller
+ FT_STD_FDC FT_MACH2 FT_PROBE_FC10 FT_ALT_FDC
+ default FT_STD_FDC
+
+derive ZFT_COMPRESSOR from m & (m | ZFTAPE)
+unless FT_STD_FDC suppress FT_FDC_BASE FT_FDC_IRQ FT_FDC_DMA
+
+require FT_PROC_FS implies PROC_FS == y
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/char/joystick/rules.cml linux/drivers/char/joystick/rules.cml
--- linux.2.4.14.pristine/drivers/char/joystick/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/char/joystick/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,31 @@
+# Joysticks
+
+unless PARPORT!=n suppress INPUT_GAMECON INPUT_DB9 INPUT_TURBOGRAFX
+unless AMIGA suppress INPUT_AMIJOY
+
+menu joysticks # Joystick support
+ gameports_legend
+ INPUT_NS558? INPUT_LIGHTNING? INPUT_PCIGAME? INPUT_CS461X?
+ INPUT_EMU10K1?
+ port_joystick_legend
+ INPUT_ANALOG? INPUT_A3D?
+ INPUT_ADI? INPUT_COBRA? INPUT_GF2K?
+ INPUT_GRIP? INPUT_INTERACT? INPUT_TMDC? INPUT_SIDEWINDER?
+ serial_support_legend
+ INPUT_SERIO? {INPUT_SERPORT?}
+ serial_joystick_legend
+ INPUT_WARRIOR? INPUT_MAGELLAN? INPUT_SPACEORB? INPUT_SPACEBALL?
+ INPUT_STINGER? INPUT_IFORCE_232? INPUT_IFORCE_USB?
+ parallel_joystick_legend
+ INPUT_DB9? INPUT_GAMECON? INPUT_TURBOGRAFX?
+ system_joystick_legend
+ INPUT_AMIJOY?
+
+# Must explicitly set to n for drivers/sound/Config.in
+derive INPUT_GAMEPORT from JOYSTICK
+
+require INPUT_IFORCE_USB <= USB
+require INPUT_IFORCE_USB <= INPUT
+require INPUT_IFORCE_USB <= INPUT_IFORCE_232
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/char/pcmcia/rules.cml linux/drivers/char/pcmcia/rules.cml
--- linux.2.4.14.pristine/drivers/char/pcmcia/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/char/pcmcia/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,11 @@
+# PCMCIA character-device configuration
+
+unless PCMCIA!=n and SERIAL!=n suppress dependent pcmcia_chardevs
+#unless CARDBUS!=n suppress PCMCIA_SERIAL_CB
+
+menu pcmcia_chardevs # PCMCIA? character device support
+ PCMCIA_SERIAL_CS?
+
+derive PCMCIA_CHRDEV from PCMCIA_SERIAL_CS
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/char/rules.cml linux/drivers/char/rules.cml
--- linux.2.4.14.pristine/drivers/char/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/char/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,219 @@
+# Character device configuration
+
+# Console support
+
+unless X86 or SUPERH or IA64 suppress VIDEO_SELECT MDA_CONSOLE
+unless X86 or (ALPHA and VT)
+ or (MIPS and VT and (SGI_IP22==n))
+ or (ALL_PPC and VT)
+ or (ARM and ARCH_ACORN and ARCH_EBSA110)
+ suppress VGA_CONSOLE
+unless SPARC or SUN3X suppress PROM_CONSOLE
+unless SGI_IP22 suppress SGI_PROM_CONSOLE SGI_NEWPORT_CONSOLE
+unless ARCH_S390==n suppress INPUT
+unless MIPS suppress SGI_NEWPORT_GFX
+unless (X86 and VT) or (MIPS and VT and (SGI_IP22==n) and (DECSTATION==n))
+ or (ALPHA and VT) or (PPC and VT)
+ suppress FB
+unless PARISC suppress STI_CONSOLE
+unless CONFIG_8xx suppress CONFIG_SMC2_UART CONFIG_USE_SCC_IO
+unless ALL_PPC suppress MAC_SERIAL
+unless ARCH_S390 suppress TN3270 TN3215
+#unless SUN3X_ZS suppress SUN_KEYBOARD
+unless CPU_LITTLE_ENDIAN suppress FORWARD_KEYBOARD
+unless ARC32 suppress ARC_CONSOLE
+
+unless VT suppress VGA_CONSOLE
+
+menu console # Console drivers
+ VGA_CONSOLE VIDEO_SELECT MDA_CONSOLE? STI_CONSOLE
+ PROM_CONSOLE SGI_PROM_CONSOLE SGI_NEWPORT_CONSOLE! SGI_NEWPORT_GFX!
+ TN3270? {TN3270_CONSOLE} # S/390
+ TN3215 {TN3215_CONSOLE} # S/390
+ HWC {HWC_CONSOLE HWC_CPI?} # S/390
+ #SUN_KEYBOARD
+ FORWARD_KEYBOARD ARC_CONSOLE
+ FB {framebuffer}
+
+# According to Helge Deller's STI-console mini-HOWTO...
+require STI_CONSOLE==n or SERIAL_CONSOLE==n
+
+default FB from M68K
+
+# Serial devices
+
+unless EXPERIMENTAL suppress dependent CYZ_INTR ISI ATARI_DSP56K
+unless EXPERT suppress SERIAL_EXTENDED SERIAL_NONSTANDARD
+
+unless ARCH_ACORN and SERIAL!=n suppress ATOMWIDE_SERIAL DUALSP_SERIAL
+unless MIPS32 suppress DZ
+unless MIPS32 and TC suppress ZS
+unless ATARI suppress ATARI_MFPSER ATARI_SCC ATARI_MIDI ATARI_DSP56K
+unless AMIGA suppress AMIGA_BUILTIN_SERIAL
+unless AMIGA_PCMCIA suppress WHIPPET_SERIAL
+unless MIPS suppress SGI_SERIAL
+unless SUN3 or SUN3X suppress SUN3X_ZS
+#unless M68K suppress USERIAL
+unless SUPERH suppress SH_SCI
+unless FOOTBRIDGE suppress SERIAL_21285
+unless HP300 and DIO suppress HPDCA
+unless SPARC64 and SBUS suppress SAB82532
+unless ISA or PCI suppress RIO
+unless MIPS suppress SERIAL_TX3912 AU1000_UART
+unless IT8712 suppress QTRONIX_KEYBOARD IT8172_SCR0 IT8172_SCR1
+unless EXPERIMENTAL and ZORRO suppress A2232
+
+unless DIGIEPCA==n suppress DIGI
+#require RIO or SX implies GENERIC_SERIAL == (RIO | SX)
+require ISI <= m
+require SYNCLINK <= m
+require N_HDLC <= m
+
+private SERIAL_NONSTANDARD SERIAL_EXTENDED DONGLE
+
+menu rs232c # RS-232 serial devices
+ ATOMWIDE_SERIAL? DUALSP_SERIAL? SERIAL_ACPI
+ SERIAL_EXTENDED {
+ SERIAL_MANY_PORTS SERIAL_SHARE_IRQ
+ SERIAL_DETECT_IRQ SERIAL_MULTIPORT HUB6
+ }
+ SERIAL_NONSTANDARD {
+ COMPUTONE? ROCKETPORT?
+ CYCLADES? {CYZ_INTR}
+ DIGIEPCA? DIGI? ESPSERIAL? MOXA_INTELLIO? MOXA_SMARTIO?
+ ISI? SYNCLINK? N_HDLC? RISCOM8?
+ SPECIALIX? {SPECIALIX_RTSCTS}
+ SX? STALDRV
+ RIO? {RIO_OLDPCI}
+ STALLION? ISTALLION?
+ SERIAL_TX3912 {SERIAL_TX3912_CONSOLE}
+ AU1000_UART {AU1000_SERIAL_CONSOLE}
+ }
+ SMC2_UART {ALTSMC2 CONS_SMC2} # CONFIG_8xx
+ USE_SCC_IO # CONFIG_8xx
+ SUN3X_ZS # Sun3X
+ MAC_SERIAL? # PowerMac Serial
+ SERIAL167 # VME
+ DZ ZS SGI_SERIAL # MIPS only
+ ATARI_MFPSER? ATARI_SCC? {ATARI_SCC_DMA} # ATARI
+ ATARI_MIDI? ATARI_DSP56K?
+ AMIGA_BUILTIN_SERIAL? WHIPPET_SERIAL? A2232? # AMIGA
+ #USERIAL # MAC
+ SERIAL_21285 {
+ SERIAL_21285_CONSOLE SERIAL_21285_OLD
+ }
+ HPDCA? # M68K
+ SAB82532? # Sun Ultra
+
+# Miscellaneous character devices
+
+# http://www.rcsys.com/dt.htm (Apple II3 and IIgs and PC104 versions too,
+# but this driver looks like it supports ISA only)
+unless ISA suppress DTLK
+
+# PC104 too, but see http://us.applicom-int.com/us/applicom_en/applicom_en.html
+unless ISA or PCI suppress APPLICOM
+
+unless X86 and EXPERIMENTAL suppress SONYPI
+
+menu char_devs_misc # Miscellaneous character devices
+ DTLK? R3964? APPLICOM? SONYPI?
+
+# Character device selection
+
+unless ARCH_S390 suppress S390_TAPE
+unless ARCH_S390==n suppress
+ VT SERIAL I2C graphics char_devs_misc MOUSE JOYSTICK qic DONGLE
+unless TN3270==n suppress TN3215
+unless TN3270==y suppress TN3270_CONSOLE
+unless IRDA!=n suppress dependent DONGLE
+unless X86 suppress MWAVE
+
+# The nasty part of this expression is a direct translation of the CML1
+# The structure of the port file suggests that it's not really necessary.
+#unless (M68K==n) or APOLLO or (AMIGA or ATARI or MAC or HP300 or SUN3
+# or SUN3X) and
+# (ATARI_MFPSER or ATARI_SCC or ATARI_MIDI or MAC_SCC
+# or AMIGA_BUILTIN_SERIAL or GVPIOEXT
+# or MULTIFACE_III_TTY or HPDCA or SUN3X_ZS or SGI)
+# suppress SERIAL_CONSOLE
+unless (CONFIG_SMC2_UART or MAC_SERIAL==y or SERIAL==y) suppress SERIAL_CONSOLE
+
+unless PARPORT!=n suppress dependent PRINTER LP_CONSOLE PPDEV
+
+default UNIX98_PTY_COUNT from 256 range 0-2048
+
+menu cdevs # Character devices
+ VT {VT_CONSOLE}
+ SERIAL? {rs232c}
+ UNIX98_PTYS {UNIX98_PTY_COUNT%}
+ SH_SCI? # SuperH
+ console
+ SERIAL_CONSOLE
+ INPUT? {input}
+ pcmcia_chardevs
+ I2C? {i2c}
+ VIDEO_DEV? {video radio}
+ graphics
+ char_devs_misc
+ PRINTER? {LP_CONSOLE}
+ PPDEV?
+ MOUSE? {mice}
+ JOYSTICK? {joysticks}
+ qic
+ S390_TAPE? {
+ S390_TAPE_CHAR S390_TAPE_BLOCK S390_TAPE_3490 S390_TAPE_3480
+ }
+ DONGLE {dongles}
+ MWAVE?
+
+unless EXPERIMENTAL suppress dependent AGP
+unless PCI suppress AGP # agp source files include pci.h
+unless PCI suppress DRM_TDFX # From tdfxfb.c
+unless SPARC suppress DRM_FFB
+
+# Graphics
+
+menu graphics # Kernel-level graphics support
+ AGP? {
+ AGP_INTEL AGP_I810 AGP_VIA AGP_AMD AGP_SIS AGP_ALI AGP_SWORKS
+ }
+ DRM {
+ DRM_TDFX? DRM_GAMMA? DRM_R128? DRM_FFB? DRM_RADEON?
+ DRM_I810? DRM_MGA?
+ }
+unless AGP!=n suppress dependent DRM_I810 DRM_MGA
+
+# Watchdog cards
+
+unless X86 suppress WDT PCWATCHDOG ACQUIRE_WDT
+unless PCI suppress WDTPCI
+unless SPARC64 and PCI suppress WATCHDOG_CP1XXX WATCHDOG_RIO
+unless FOOTBRIDGE suppress CONFIG_21285_WATCHDOG
+unless FOOTBRIDGE and ARCH_NETWINDER suppress CONFIG_977_WATCHDOG
+
+menu watchdog # Watchdog cards
+ SOFT_WATCHDOG? WATCHDOG_NOWAYOUT
+ WDT? {WDT_501 {WDT_501_FAN}} WDTPCI?
+ PCWATCHDOG? ACQUIRE_WDT? ADVANTECH_WDT? CONFIG_21285_WATCHDOG?
+ EUROTECH_WDT? IB700_WDT? I810_TCO? CONFIG_60XX_WDT? W83877F_WDT?
+ MIXCOMWD? CONFIG_977_WATCHDOG? MACHZ_WDT?
+ WATCHDOG_CP1XXX? WATCHDOG_RIO?
+
+# Mice
+
+unless AMIGA suppress AMIGAMOUSE
+unless ATARI suppress ATARIMOUSE
+#unless SUN3X_ZS suppress SUN_MOUSE
+
+menu mice # Mice
+ BUSMOUSE? {ATIXL_BUSMOUSE? LOGIBUSMOUSE? MS_BUSMOUSE? ADBMOUSE?}
+ AMIGAMOUSE? ATARIMOUSE? #SUN_MOUSE
+ PSMOUSE CONFIG_82C710_MOUSE? PC110_PAD?
+
+require (AMIGA and (AMIGAMOUSE==n)) implies BUSMOUSE == y
+require (ATARI and (ATARIMOUSE==n)) implies BUSMOUSE == y
+require (SUN3X and (SUN_MOUSE==n)) implies BUSMOUSE == y
+require ADBMOUSE <= ADB_KEYBOARD
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/fc4/rules.cml linux/drivers/fc4/rules.cml
--- linux.2.4.14.pristine/drivers/fc4/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/fc4/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,20 @@
+# from drivers/fc4/Config.in
+
+menu fc4 # Fiber Channel support
+ fc4_drivers_legend
+ FC4_SOC? FC4_SOCAL?
+ fc4_targets_legend
+ SCSI_PLUTO? SCSI_FCAL_SUN? SCSI_FCAL_GENERIC?
+
+unless SCSI!=n suppress dependent
+ fc4_targets_legend SCSI_PLUTO SCSI_FCAL_GENERIC SCSI_FCAL_SUN
+
+derive SCSI_FCAL from SCSI_FCAL_GENERIC | SCSI_FCAL_SUN
+private SCSI_FCAL_GENERIC SCSI_FCAL_SUN
+
+default FC4_SOC from n
+default FC4_SOCAL from n
+default SCSI_PLUTO from n
+default SCSI_FCAL_GENERIC from n
+default SCSI_FCAL_SUN from n
+
diff -uNr linux.2.4.14.pristine/drivers/hotplug/rules.cml linux/drivers/hotplug/rules.cml
--- linux.2.4.14.pristine/drivers/hotplug/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/hotplug/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,9 @@
+# Hotplug devices
+
+unless EXPERIMENTAL suppress CONFIG_HOTPLUG_PCI
+unless X86 suppress hotplug_pci
+
+menu hotplug_pci # Support for PCI Hotplug
+ HOTPLUG_PCI_COMPAQ {HOTPLUG_PCI_COMPAQ_NVRAM}
+
+#end
diff -uNr linux.2.4.14.pristine/drivers/i2c/rules.cml linux/drivers/i2c/rules.cml
--- linux.2.4.14.pristine/drivers/i2c/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/i2c/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,19 @@
+# I2C driver configuration
+
+unless PARPORT!=n suppress dependent I2C_PHILIPSPAR
+unless SPARC64 suppress BBC_I2C
+unless (M68K or ALL_PPC) suppress ADBMOUSE
+unless MIPS_ITE8172 suppress dependent ITE_I2C_ALGO
+unless CONFIG_8xx suppress dependent I2C_ALGO8XX
+unless CONFIG_405 suppress dependent I2C_PPC405_ALGO
+
+menu i2c # I2C? support
+ BBC_I2C?
+ I2C_ALGOBIT? {I2C_PHILIPSPAR? I2C_ELV? I2C_VELLEMAN?}
+ I2C_ALGOPCF? {I2C_ELEKTOR?} I2C_CHARDEV?
+ ITE_I2C_ALGO? {ITE_I2C_ADAP?}
+ I2C_ALGO8XX? {I2C_RPXLITE?}
+ I2C_PPC405_ALGO? {I2C_PPC405_ADAP?}
+ I2C_PROC?
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/ieee1394/rules.cml linux/drivers/ieee1394/rules.cml
--- linux.2.4.14.pristine/drivers/ieee1394/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/ieee1394/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,12 @@
+# from drivers/ieee1394/Config.in
+
+unless EXPERIMENTAL and PCI suppress ieee1394
+
+menu ieee1394 # IEEE 1394 (FireWire) support
+ IEEE1394_PCILYNX? { IEEE1394_PCILYNX_LOCALRAM IEEE1394_PCILYNX_PORTS }
+ #IEEE1394_AIC5800?
+ IEEE1394_OHCI1394? { IEEE1394_VIDEO1394? }
+ IEEE1394_SBP2?
+ IEEE1394_RAWIO?
+ IEEE1394_VERBOSEDEBUG
+
diff -uNr linux.2.4.14.pristine/drivers/input/rules.cml linux/drivers/input/rules.cml
--- linux.2.4.14.pristine/drivers/input/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/input/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,15 @@
+# Input core configuration
+
+menu input
+ INPUT_KEYBDEV?
+ INPUT_MOUSEDEV? {INPUT_MOUSEDEV_SCREEN_X% INPUT_MOUSEDEV_SCREEN_Y%}
+ INPUT_JOYDEV? INPUT_EVDEV?
+
+unless NET suppress I2O_LAN
+unless SCSI!=n suppress I2O_SCSI
+unless PCI suppress I2O_PCI
+
+menu i2o # I2O? support
+ I2O_PCI? I2O_BLOCK? I2O_LAN? I2O_SCSI? I2O_PROC?
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/isdn/rules.cml linux/drivers/isdn/rules.cml
--- linux.2.4.14.pristine/drivers/isdn/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/isdn/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,77 @@
+# ISDN support
+
+unless ISDN!=n suppress isdn
+unless INET suppress ISDN_PPP
+unless X25!=n suppress dependent ISDN_X25
+unless EXPERIMENTAL suppress dependent
+ HISAX_HFC_SX ISDN_DRV_PCBIT ISDN_DRV_ACT2000
+ ISDN_CAPI_MIDDLEWARE ISDN_DRV_AVMB1_B1PCIV4 ISDN_DRV_AVMB1_C4
+unless SPARC suppress HISAX_AMD7930
+unless MODULES!=n suppress HYSDN
+unless ISDN_CAPI==n suppress HYSDN_CAPI
+unless ISA suppress ISDN_DRV_EICON_ISA
+unless PCI!=n suppress ISDN_DRV_EICON_PCI
+unless EXPERIMENTAL and PCI==n suppress ISDN_DRV_EICON_DIVAS
+unless PCMCIA!=n suppress HISAX_SEDLBAUER_CS
+unless PCI suppress ISDN_DRV_TPAM
+unless EXPERIMENTAL suppress HISAX_ST5481
+
+require HYSDN != n implies PROC_FS == y
+
+menu isdn
+ ISDN_PPP {ISDN_PPP_VJ ISDN_MPP ISDN_PPP_BSDCOMP?}
+ ISDN_AUDIO {ISDN_TTY_FAX}
+ ISDN_X25
+ isdn_features_legend ISDN_DRV_LOOP? ISDN_DIVERSION?
+ isdn_passive isdn_active
+
+menu isdn_passive
+ ISDN_DRV_HISAX? {
+ isdn_dchannel_legend
+ HISAX_EURO {
+ DE_AOC HISAX_NO_SENDCOMPLETE HISAX_NO_LLC
+ HISAX_NO_KEYPAD
+ }
+ HISAX_1TR6 HISAX_NI1
+ isdn_hisax_legend
+ HISAX_16_0 HISAX_16_3 HISAX_TELESPCI HISAX_S0BOX HISAX_AVM_A1
+ HISAX_FRITZPCI HISAX_AVM_A1_PCMCIA HISAX_ELSA
+ HISAX_IX1MICROR2 HISAX_DIEHLDIVA HISAX_ASUSCOM HISAX_TELEINT
+ HISAX_HFCS HISAX_SEDLBAUER HISAX_ELSA_CS?
+ HISAX_SPORTSTER HISAX_MIC
+ HISAX_NETJET HISAX_NETJET_U HISAX_NICCY HISAX_ISURF
+ HISAX_HSTSAPHIR HISAX_BKM_A4T HISAX_SCT_QUADRO HISAX_GAZEL
+ HISAX_HFC_PCI HISAX_W6692 HISAX_HFC_SX # HISAX_TESTEMU
+ HISAX_AMD7930 HISAX_ST5481?
+ HISAX_DEBUG
+ }
+ HISAX_SEDLBAUER_CS?
+
+unless ISDN_DRV_EICON_OLD==y suppress ISDN_DRV_EICON_DIVAS
+
+unless ISDN_CAPI_CAPI20!=n suppress dependent ISDN_CAPI_CAPIFS
+
+menu isdn_active
+ ISDN_DRV_ICN? ISDN_DRV_PCBIT? ISDN_DRV_SC? ISDN_DRV_ACT2000?
+ ISDN_DRV_EICON {
+ ISDN_DRV_EICON_OLD? {ISDN_DRV_EICON_PCI}
+ ISDN_DRV_EICON_DIVAS?
+ ISDN_DRV_EICON_ISA
+ }
+ ISDN_DRV_TPAM?
+ ISDN_CAPI? {
+ ISDN_DRV_AVMB1_VERBOSE_REASON ISDN_CAPI_CAPI20?
+ ISDN_CAPI_MIDDLEWARE {ISDN_CAPI_CAPIFS}
+ ISDN_CAPI_CAPIDRV?
+ ISDN_DRV_AVMB1_B1ISA?
+ ISDN_DRV_AVMB1_B1PCI? {ISDN_DRV_AVMB1_B1PCIV4}
+ ISDN_DRV_AVMB1_T1ISA? ISDN_DRV_AVMB1_B1PCMCIA?
+ ISDN_DRV_AVMB1_AVM_CS? ISDN_DRV_AVMB1_T1PCI? ISDN_DRV_AVMB1_C4?
+ }
+ HYSDN? {HYSDN_CAPI}
+
+derive ISDN_CAPI_CAPIFS_BOOL from ISDN_CAPI_CAPI20!=n and ISDN_CAPI_MIDDLEWARE
+
+require (ISDN_DRV_EICON_OLD==n) or (ISDN_DRV_EICON_DIVAS==n)
+
+# End
Binary files linux.2.4.14.pristine/drivers/isdn/rules.cml-old and linux/drivers/isdn/rules.cml-old differ
diff -uNr linux.2.4.14.pristine/drivers/macintosh/rules.cml linux/drivers/macintosh/rules.cml
--- linux.2.4.14.pristine/drivers/macintosh/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/macintosh/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,20 @@
+# Macintosh driver configuration
+
+unless MACINTOSH_DRIVERS suppress macintosh_drivers
+unless ALL_PPC suppress ADB_MACIO ADB_PMU
+unless MAC suppress ADB_MACII ADB_MACIISI ADB_IOP ADB_PMU68K
+
+menu macintosh_drivers
+ ADB {ADB_MACIO ADB_MACII ADB_MACIISI ADB_IOP ADB_PMU68K
+ INPUT_ADBHID {MAC_ADBKEYCODES MAC_EMUMOUSEBTN}
+ ADB_KEYBOARD
+ }
+ # Not just ADB support, but other things the chipset does.
+ ADB_CUDA ADB_PMU {PMAC_PBOOK PMAC_BACKLIGHT}
+
+require INPUT_ADBHID <= INPUT
+
+# You can only have one of these.
+require INPUT_ADBHID==n or ADB_KEYBOARD==n
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/media/radio/rules.cml linux/drivers/media/radio/rules.cml
--- linux.2.4.14.pristine/drivers/media/radio/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/media/radio/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,36 @@
+# Radio card drivers
+
+unless EXPERIMENTAL suppress RADIO_MIROPCM20_RDS
+unless SOUND_ACI_MIXER!=n suppress dependent RADIO_MIROPCM20
+
+default RADIO_AZTECH_PORT from 0x350 range 0x350 0x358
+default RADIO_GEMTEK_PORT from 0x34c range 0x20c 0x30c 0x24c 0x34c
+default RADIO_RTRACK2_PORT from 0x30c range 0x20f 0x30f
+default RADIO_RTRACK_PORT from 0x20f range 0x20c 0x30c
+default RADIO_SF16FMI_PORT from 0x284 range 0x284 0x384
+default RADIO_TERRATEC_PORT from 0x590
+default RADIO_TRUST_PORT from 0x350
+default RADIO_TYPHOON_MUTEFREQ from 0x87500
+default RADIO_TYPHOON_PORT from 0x316 range 0x316 0x336
+default RADIO_ZOLTRIX_PORT from 0x20c range 0x20c 0x30c
+
+menu radio # Radio adapters
+ RADIO_CADET?
+ RADIO_RTRACK? {RADIO_RTRACK_PORT@}
+ RADIO_RTRACK2? {RADIO_RTRACK2_PORT@}
+ RADIO_AZTECH? {RADIO_AZTECH_PORT@}
+ RADIO_GEMTEK? {RADIO_GEMTEK_PORT@} RADIO_GEMTEK_PCI?
+ RADIO_MAXIRADIO?
+ RADIO_MAESTRO?
+ RADIO_MIROPCM20? {RADIO_MIROPCM20_RDS?}
+ RADIO_SF16FMI? {RADIO_SF16FMI_PORT@}
+ RADIO_TERRATEC? {RADIO_TERRATEC_PORT@}
+ RADIO_TRUST? {RADIO_TRUST_PORT@}
+ RADIO_TYPHOON? {
+ RADIO_TYPHOON_PROC_FS RADIO_TYPHOON_PORT@ RADIO_TYPHOON_MUTEFREQ%
+ }
+ RADIO_ZOLTRIX? {RADIO_ZOLTRIX_PORT@}
+
+require RADIO_TYPHOON_PROC_FS implies PROC_FS == y
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/media/video/rules.cml linux/drivers/media/video/rules.cml
--- linux.2.4.14.pristine/drivers/media/video/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/media/video/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,178 @@
+# Video driver configuration
+
+unless VIDEO_DEV!=n suppress dependent video
+unless PARPORT!=n suppress dependent I2C_PARPORT VIDEO_BWQCAM VIDEO_CQCAM
+unless I2C!=n suppress dependent I2C_PARPORT VIDEO_ZORAN
+unless EXPERIMENTAL suppress dependent VIDEO_CQCAM VIDEO_CPIA VIDEO_VINO
+unless USB!=n suppress VIDEO_CPIA_USB
+#unless SGI suppress VIDEO_VINO # CML1 doesn't actually define SGI
+unless MIPS suppress VIDEO_VINO
+unless PCI suppress dependent VIDEO_STRADIS VIDEO_ZORAN VIDEO_DEV
+unless PPC suppress VIDEO_PLANB
+unless EXPERIMENTAL and PARPORT!=n and PARPORT_1284 suppress VIDEO_W9966
+
+require (VIDEO_SAA5249 <= I2C) and (TUNER_3036 <= I2C)
+require VIDEO_BT848!=n implies SOUND!=n and PCI==y and I2C_ALGOBIT != n
+
+menu video # Video For Linux
+ VIDEO_PROC_FS
+ I2C_PARPORT?
+ VIDEO_BT848? VIDEO_PMS? VIDEO_PLANB?
+ VIDEO_BWQCAM? VIDEO_CQCAM? VIDEO_W9966?
+ VIDEO_CPIA? {VIDEO_CPIA_PP? VIDEO_CPIA_USB?}
+ VIDEO_SAA5249? TUNER_3036? VIDEO_VINO? VIDEO_STRADIS?
+ VIDEO_ZORAN? {VIDEO_ZORAN_BUZ? VIDEO_ZORAN_DC10? VIDEO_ZORAN_LML33?}
+
+ VIDEO_ZR36120?
+ VIDEO_MEYE?
+
+# from drivers/video/Config.in
+
+unless EXPERIMENTAL suppress dependent
+ FB_RIVA FB_CLGEN FB_PM2 FB_VIRGE FB_RETINAZ3 FB_FM2 FB_HGA
+ FB_MATROX FB_ATY FB_RADEON FB_ATY128 FB_3DFX FB_SIS FB_VIRTUAL
+ FB_VOODOO1
+unless PPC or X86 suppress FB_VGA16
+unless ATARI or PCI suppress FB_ATY FB_RADEON FB_ATY128
+unless PCI suppress
+ FB_RIVA FB_PM2_FIFO_DISCONNECT FB_PM2_PCI FB_MATROX FB_3DFX FB_IMSTT
+ FB_IGA
+unless PCI or AMIGA suppress FB_CLGEN FB_PM2
+unless AMIGA suppress FB_PM2_CVPPC FB_AMIGA FONT_PEARL_8x8
+unless ARCH_ACORN suppress FB_ACORN
+#unless ARCH_NETWINDER suppress FB_CYBER2000
+unless ZORRO suppress FB_CYBER FB_VIRGE FB_RETINAZ3 FB_FM2
+unless ATARI suppress FB_ATARI
+unless PPC suppress FB_OF FB_CONTROL FB_PLATINUM
+unless PPC or MAC suppress FB_VALKYRIE
+unless ARM suppress FB_SA1100
+unless ALPHA suppress FB_TGA
+unless X86 suppress FB_VESA FB_HGA
+#unless VISWS suppress FB_SGIVW
+unless SPARC suppress
+ FB_SBUS FONT_SUN8x16 FONT_SUN12x22
+unless SPARC64 suppress FB_CREATOR
+unless SPARC32 suppress FB_TCX FB_CGFOURTEEN FB_P9100
+unless MAC suppress FONT_6x11
+unless ARM or ARCH_ACORN suppress FONT_ACORN_8x8
+unless PPC suppress FB_COMPAT_XPMAC
+unless SUPERH and HD64461 suppress FB_HIT
+unless SUPERH suppress FB_E1355
+unless SH_DREAMCAST suppress FB_DC FB_PVR2
+unless PARISC suppress FB_STI
+unless DECSTATION and TC suppress FB_PMAG_BA FB_PMAGB_B FB_MAXINE
+unless NINO suppress FB_TX3912
+
+default E1355_REG_BASE from 0xa8000000
+default E1355_FB_BASE from 0xa8200000
+
+private FBCON_FONTS
+
+menu framebuffer
+ FB_VGA16? FB_ATY? {FB_ATY_GX FB_ATY_CT}
+ FB_RADEON? FB_ATY128? FB_3DFX?
+ FB_SIS? {FB_SIS_300 FB_SIS_315}
+ FB_VOODOO1? FB_RIVA? FB_CLGEN? FB_STI
+ FB_PM2? {FB_PM2_FIFO_DISCONNECT FB_PM2_PCI FB_PM2_CVPPC}
+ FB_ACORN FB_CYBER2000? FB_SA1100
+ FB_AMIGA? {FB_AMIGA_OCS FB_AMIGA_ECS FB_AMIGA_AGA}
+ FB_CYBER? FB_VIRGE FB_RETINAZ3? FB_FM2 FB_ATARI
+ FB_OF FB_CONTROL FB_PLATINUM FB_IMSTT FB_CT65550 FB_S3TRIO
+ FB_VALKYRIE
+ FB_COMPAT_XPMAC
+ FB_TGA? FB_VESA FB_HGA? #FB_SGIVW?
+ FB_MATROX? {
+ FB_MATROX_MILLENIUM FB_MATROX_MYSTIQUE
+ FB_MATROX_G100 {FB_MATROX_G450?}
+ FB_MATROX_I2C? {FB_MATROX_MAVEN?}
+ FB_MATROX_MULTIHEAD
+ }
+ FB_SBUS {FB_CREATOR FB_CGTHREE FB_TCX FB_CGFOURTEEN FB_P9100 FB_LEO}
+ FB_BWTWO FB_CGSIX
+ FB_PVR2? {FB_PVR2_DEBUG}
+ FB_E1355 {E1355_REG_BASE@ E1355_FB_BASE@}
+ FB_DC? FB_HIT?
+ FB_PMAG_BA FB_PMAGB_B FB_MAXINE
+ FB_TX3912
+ FB_IGA FB_VIRTUAL?
+ FBCON_ADVANCED {
+ FBCON_MFB?
+ FBCON_CFB2? FBCON_CFB4? FBCON_CFB8?
+ FBCON_CFB16? FBCON_CFB24? FBCON_CFB32?
+ FBCON_AFB? FBCON_ILBM?
+ FBCON_IPLAN2P2? FBCON_IPLAN2P4? FBCON_IPLAN2P8?
+ FBCON_MAC? FBCON_VGA_PLANES? FBCON_VGA? FBCON_HGA?
+ }
+ FBCON_FONTWIDTH8_ONLY
+ FONT_SUN8x16 FONT_SUN12x22
+ FBCON_FONTS {
+ FONT_8x8 FONT_8x16 FONT_PEARL_8x8 FONT_ACORN_8x8 FONT_6x11
+ }
+
+unless FB_PM2==y suppress FB_PM2_FIFO_DISCONNECT FB_PM2_PCI FB_PM2_CVPPC
+unless FB_OF or MAC suppress FB_VALKYRIE
+require FB_MATROX_I2C <= I2C_ALGOBIT
+unless FB_MATROX_G100 suppress FB_MATROX_MAVEN FB_MATROX_MULTIHEAD
+require X86 implies (VIDEO_SELECT >= FB)
+unless FB_SUN3 or FB_SBUS suppress FB_BWTWO FB_CGSIX
+unless FB_PCI suppress FB_IGA
+unless FBCON_FONTWIDTH8_ONLY==n suppress FONT_SUN12x22 FONT_6x11
+
+require FB_MATROX_I2C!=n implies I2C==y
+
+derive DUMMY_CONSOLE from FB or (SGI_IP22 and (SGI_NEWPORT_CONSOLE==n))
+#derive BUS_I2C from FB and VISWS
+derive FB_MAC from FB and MAC
+derive FB_HP300 from FB and HP300
+derive FB_APOLLO from FB and APOLLO
+derive FB_Q40 from FB and Q40
+# This was a question in CML1, 'Sun3 framebuffer support'
+derive FB_SUN3 from FB and (SUN3 or SUN3X)
+
+# These defaults will set our feature symbols if the user did not select
+# them explicitly in FBCON_ADVANCED
+default FBCON_MFB from FBCON_ADVANCED |
+ FB_ACORN | FB_AMIGA | FB_ATARI | FB_CYBER | FB_MAC |
+ FB_RETINAZ3 | FB_VIRGE | FB_VIRTUAL | FB_BWTWO | FB_CLGEN |
+ FB_TX3912
+default FBCON_CFB2 from FB_ACORN | FB_MAC | FB_SA1100 | FB_VIRTUAL | FB_TX3912
+default FBCON_CFB4 from FB_ACORN | FB_MAC | FB_VIRTUAL | FB_TX3912
+default FBCON_CFB8 from FB_ACORN | FB_ATARI | FB_ATY | FB_MAC
+ | FB_OF | FB_TGA | FB_VESA | FB_VIRTUAL | FB_TCX | FB_CGTHREE
+ | FB_CONTROL | FB_CLGEN | FB_CGFOURTEEN | FB_G364 | FB_VIRGE
+ | FB_CYBER | FB_VALKYRIE | FB_PLATINUM | FB_IGA | FB_MATROX
+ | FB_CT65550 | FB_PM2 | FB_P9100 | FB_ATY128 | FB_RIVA # | FB_SGIVW
+ | FB_CYBER2000 | FB_SA1100 | FB_3DFX | FB_SIS | FB_RADEON
+ | FB_PMAG_BA | FB_PMAGB_B | FB_MAXINE | FB_TX3912
+default FBCON_CFB16 from FB_ATARI | FB_ATY | FB_MAC | FB_VESA |
+ FB_VIRTUAL | FB_Q40 | FB_RADEON | FB_CONTROL | FB_CLGEN |
+ FB_VIRGE | FB_CYBER | FB_VALKYRIE | FB_PLATINUM |
+ FB_CT65550 | FB_MATROX | FB_PM2 | #FB_SGIVW |
+ FB_RIVA | FB_ATY128 | FB_CYBER2000 | FB_3DFX | FB_SIS |
+ FB_PVR2 | FB_VOODOO1
+default FBCON_CFB24 from FB_ATY | FB_VIRTUAL | FB_CLGEN
+ | FB_VESA | FB_MATROX | FB_PM2 | FB_ATY128 | FB_RADEON
+ | FB_CYBER2000 | FB_PVR2 | FB_VOODOO1
+default FBCON_CFB32 from FB_ATARI | FB_ATY | FB_VESA | FB_VIRTUAL |
+ FB_CONTROL | FB_CLGEN | FB_TGA | FB_PLATINUM | FB_MATROX |
+ FB_PM2 | FB_RIVA | FB_ATY128 | FB_FM2 | FB_3DFX | FB_SIS |
+ FB_PVR2 # | FB_SGIVW | FB_RADEON | FB_VOODOO1
+default FBCON_AFB from FB_AMIGA
+default FBCON_ILBM from FB_AMIGA
+default FBCON_IPLAN2P2 from FB_ATARI
+default FBCON_IPLAN2P4 from FB_ATARI
+default FBCON_IPLAN2P8 from FB_ATARI
+#default FBCON_IPLAN2P16 from FB_ATARI
+default FBCON_MAC from FB_MAC | FB_VIRTUAL
+default FBCON_VGA_PLANES from FB_VGA16
+default FBCON_HGA from FB_HGA
+derive FBCON_STI from FB_STI
+
+# These defaults will set font symbols
+default FONT_8x8 from y
+default FONT_8x16 from y
+default FONT_6x11 from MAC and FBCON_FONTWIDTH8_ONLY==n
+default FONT_PEARL_8x8 from AMIGA
+default FONT_ACORN_8x8 from (ARM or ARCH_ACORN)
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/message/fusion/rules.cml linux/drivers/message/fusion/rules.cml
--- linux.2.4.14.pristine/drivers/message/fusion/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/message/fusion/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,22 @@
+# Fusion MPT drivers
+
+derive FUSION_BOOT from FUSION & BLK_DEV_SD
+
+unless NET suppress FUSION_LAN
+
+menu fusion_mpt # Fusion MPT drivers
+ FUSION_ISENSE? FUSION_CTL? FUSION_LAN?
+
+#require FUSION_ISENSE < y and FUSION_CTL < y
+#require FUSION_LAN > n implies NET_FC == y
+
+# In CML1, there isc a comment referring to the three symbols
+# in the fusion_mpt menu that says:
+
+ # These be define_tristate, but we leave them define_bool
+ # for backward compatibility with pre-linux-2.2.15 kernels.
+ # (Bugzilla:fibrebugs, #384)
+
+# I have not tried to implement this because I don't grok the error.
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/mtd/rules.cml linux/drivers/mtd/rules.cml
--- linux.2.4.14.pristine/drivers/mtd/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/mtd/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,118 @@
+# MTD driver configuration
+
+unless PPC suppress MTD_RPXLITE MTD_TQM8XXL MTD_DBOX2 MTD_CFI_FLAGADM
+unless PCI suppress MTD_PMC551
+unless SUPERH suppress MTD_SOLUTIONENGINE
+#unless EXPERIMENTAL suppress MTD_CFI_VIRTUAL_ER
+unless SPARC64 suppress MTD_SUN_UFLASH
+
+unless MTD_DOCPROBE!=n suppress
+ MTD_DOCPROBE_ADDRESS MTD_DOCPROBE_HIGH MTD_DOCPROBE_55AA
+
+default MTD_DEBUG_VERBOSE from 0
+default MTDRAM_TOTAL_SIZE from 4096
+default MTDRAM_ERASE_SIZE from 128
+default MTD_PHYSMAP_START from 0x80000000
+default MTD_PHYSMAP_LEN from 0x40000000
+default MTD_PHYSMAP_BUSWIDTH from 2
+default MTD_CSTM_MIPS_IXX_START from 0x80000000
+default MTD_CSTM_MIPS_IXX_LEN from 0x40000000
+default MTD_CSTM_MIPS_IXX_BUSWIDTH from 2
+default MTDRAM_ABS_POS from 0
+default MTD_DOCPROBE_ADDRESS from 0x00000000
+
+private MTD_CFI_ADV_OPTIONS MTD_DOCPROBE_ADVANCED
+
+choices mtd_data_swap # Flash cmd/query data swapping
+ MTD_CFI_NOSWAP MTD_CFI_BE_BYTE_SWAP MTD_CFI_LE_BYTE_SWAP
+ default MTD_CFI_NOSWAP
+
+menu mtd_mapping # Mapping drivers for chip access
+ MTD_PHYSMAP? {
+ MTD_PHYSMAP_START@
+ MTD_PHYSMAP_LEN@
+ MTD_PHYSMAP_BUSWIDTH%
+ }
+
+default MTD_CFI_I1 from MTD_CFI_B1
+unless MTD_CFI_B2 or MTD_CFI_B4 suppress MTD_CFI_I1
+unless MTD_CFI!=n suppress mtd_mapping MTD_NORA MTD_RPXLITE MTD_SC520CDP
+ MTD_NETSC520 MTD_DC21285 MTD_IQ80310 MTD_DBOX2 MTD_CFI_FLAGADM
+unless MTD_PARTITIONS!=n suppress MTD_PNC2000 MTD_NETSC520 MTD_SBC_GXX
+ MTD_ELAN_104NC MTD_DC21285
+unless MTD_CFI_INTELEXT!=n suppress MTD_SBC_GXX MTD_ELAN_104NC MTD_DBOX2
+unless REBOOT_PARTS suppress dependent MTD_SA1100
+
+unless ARCH_SA1100 suppress MTD_SA1100
+unless ARCH_FOOTBRIDGE suppress MTD_DC21285
+#unless XSCALE_IQ80310 suppress MTD_IQ80310
+unless MTD_JEDEC!=n suppress dependent MTD_DBOX2 MTD_MIXMEM MTD_OCTAGON MTD_VMAX
+unless X86 suppress MTD_PNC2000 MTD_SC520CDP MTD_NETSC520 MTD_SBC_GXX
+ MTD_ELAN_104NC MTD_MIXMEM MTD_OCTAGON CONFIG_MTD MTD_L440GX
+unless ARM and ARCH_P720T suppress MTD_NAND_SPIA
+unless MOMENCO_OCELOT suppress MTD_OCELOT
+unless ARM suppress MTD_AFS_PARTS MTD_ARM_INTEGRATOR MTD_CDB89712
+unless SA1100_LART suppress MTD_LART
+
+# This also depended on a nonexistent MTD_CFI_INTELSTD in CML1
+unless MTD_CFI_AMDSTD!=n suppress MTD_DBOX2
+
+derive MTD_GEN_PROBE from MTD_CFI | MTD_JEDECPROBE
+unless MTD_GEN_PROBE!=n suppress MTD_CFI_ADV_OPTIONS
+
+menu mtd
+ MTD_DEBUG {MTD_DEBUG_VERBOSE%}
+ MTD_PARTITIONS? {MTD_REDBOOT_PARTS? MTD_BOOTLDR_PARTS? MTD_AFS_PARTS?}
+
+ mtd_translation_legend
+ MTD_CHAR?
+ MTD_BLOCK? {MTD_BLOCK_RO?}
+ FTL? {NFTL? {NFTL_RW}}
+
+ mtd_driver_legend
+ MTD_CFI? MTD_JEDECPROBE?
+ MTD_CFI_ADV_OPTIONS
+ {
+ mtd_data_swap
+ MTD_CFI_GEOMETRY {MTD_CFI_B1 MTD_CFI_B2 MTD_CFI_B4}
+ MTD_CFI_I1 MTD_CFI_I2 MTD_CFI_I4
+ }
+ MTD_CFI_INTELEXT? MTD_CFI_AMDSTD? MTD_SHARP?
+ MTD_RAM? MTD_ROM? MTD_JEDEC?
+ MTD_ABSENT? MTD_OBSOLETE_CHIPS {MTD_AMDSTD?}
+
+ mtd_mapping
+ MTD_SUN_UFLASH? MTD_NORA? MTD_PNC2000? MTD_RPXLITE?
+ MTD_SC520CDP? MTD_NETSC520?
+ MTD_SBC_GXX? MTD_ELAN_104NC?
+ MTD_SA1100? {MTD_SA1100_BOOTLDR_PARTITIONS}
+ MTD_DC21285? MTD_IQ80310? MTD_DBOX2?
+ MTD_CSTM_MIPS_IXX? {
+ MTD_CSTM_MIPS_IXX_START@
+ MTD_CSTM_MIPS_IXX_LEN@
+ MTD_CSTM_MIPS_IXX_BUSWIDTH%
+ }
+ MTD_CFI_FLAGADM? MTD_MIXMEM? MTD_OCTAGON? MTD_VMAX?
+ MTD_SOLUTIONENGINE? # SUPERH
+ MTD_ARM_INTEGRATOR? MTD_CDB89712? # ARM
+
+ mtd_driver_selfcontained
+ MTD_L440GX? MTD_OCELOT?
+ MTD_PMC551? {MTD_PMC551_BUGFIX MTD_PMC551_DEBUG}
+ MTD_SLRAM?
+ MTD_LART? MTD_TQM8XXL?
+ MTD_MTDRAM? {MTDRAM_TOTAL_SIZE% MTDRAM_ERASE_SIZE% MTDRAM_ABS_POS@}
+ MTD_BLKMTD?
+
+ mtd_docdrivers
+ MTD_DOC1000? MTD_DOC2000? MTD_DOC2001?
+ MTD_DOCPROBE_ADVANCED {
+ MTD_DOCPROBE_ADDRESS@ MTD_DOCPROBE_HIGH MTD_DOCPROBE_55AA
+ }
+
+ mtd_nand_legend
+ MTD_NAND? {MTD_NAND_ECC MTD_NAND_VERIFY_WRITE MTD_NAND_SPIA?}
+
+derive MTD_DOCPROBE from MTD_DOC2000 | MTD_DOC2001
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/net/appletalk/rules.cml linux/drivers/net/appletalk/rules.cml
--- linux.2.4.14.pristine/drivers/net/appletalk/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/net/appletalk/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,15 @@
+# Appletalk configuration
+
+unless ISA suppress LTPC # ltpc.c
+unless ISA or MCA suppress COPS # cops.c
+
+unless ATALK!=n suppress dependent COPS IPDDP
+
+menu appletalk_drivers # Appletalk devices
+ APPLETALK {
+ LTPC?
+ COPS? {COPS_DAYNA COPS_TANGENT}
+ IPDDP? {IPDDP_ENCAP IPDDP_DECAP}
+ }
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/net/arcnet/rules.cml linux/drivers/net/arcnet/rules.cml
--- linux.2.4.14.pristine/drivers/net/arcnet/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/net/arcnet/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,17 @@
+# ARCnet configuration
+
+unless ISA suppress ARCNET_COM90xx # com90xx.c
+unless ISA suppress ARCNET_COM90xxIO # com90io.c
+unless ISA suppress ARCNET_RIM_I # arc-rimi.c
+
+menu arcnet_drivers # ARCnet support
+ ARCNET_1201? ARCNET_1051? ARCNET_RAW? ARCNET_COM90xx? ARCNET_COM90xxIO?
+ ARCNET_RIM_I?
+ ARCNET_COM20020? # {ARCNET_COM20020_ISA? ARCNET_COM20020_PCI?}
+
+# These used to be questions, but there isn't a whole lot of point when
+# the answers can be computed.
+derive ARCNET_COM20020_ISA from ARCNET_COM20020 & ISA
+derive ARCNET_COM20020_PCI from ARCNET_COM20020 & PCI
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/net/fc/rules.cml linux/drivers/net/fc/rules.cml
--- linux.2.4.14.pristine/drivers/net/fc/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/net/fc/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,10 @@
+# Fiber Channel configuration
+
+unless SCSI!=n suppress dependent IPHASE5526
+unless EXPERIMENTAL suppress dependent RCPCI SHAPER
+unless PCI suppress dependent RCPCI #rcpci45.c
+
+menu fiber_channel # Fiber Channel drivers
+ IPHASE5526? RCPCI? SHAPER?
+
+# End
\ No newline at end of file
diff -uNr linux.2.4.14.pristine/drivers/net/hamradio/rules.cml linux/drivers/net/hamradio/rules.cml
--- linux.2.4.14.pristine/drivers/net/hamradio/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/net/hamradio/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,8 @@
+# Ham Radio configuration
+
+unless NET suppress HAMRADIO
+
+menu hamradio # Amateur Radio protocols and drivers
+ AX25? {AX25_DAMA_SLAVE NETROM? ROSE? ax25}
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/net/irda/rules.cml linux/drivers/net/irda/rules.cml
--- linux.2.4.14.pristine/drivers/net/irda/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/net/irda/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,25 @@
+# IRDA driver configuration
+
+unless EXPERIMENTAL suppress dependent SMC_IRCC_FIR USB_IRDA ALI_FIR VLSI_FIR
+unless ISA or (ISAPNP!=n) suppress NSC_FIR #nsc-ircc.c
+unless ISA or (ISAPNP!=n) suppress WINBOND_FIR #w83977af_ir.c
+unless PCI suppress TOSHIBA_FIR #toshoboe.c
+unless ISA suppress SMC_IRCC_FIR #smc-ircc.c
+unless USB!=n suppress dependent USB_IRDA
+unless ARCH_EP7211 suppress EP7211_IR
+unless ARCH_SA1100 suppress SA1100_FIR
+
+# All these had a dep_tristate on CONFIG_IRDA
+menu irda_drivers # Infrared-port device drivers
+ # SIR device drivers
+ IRTTY_SIR? IRPORT_SIR?
+ # FIR device drivers
+ USB_IRDA? NSC_FIR? WINBOND_FIR? TOSHIBA_FIR? SMC_IRCC_FIR? ALI_FIR?
+ VLSI_FIR? SA1100_FIR?
+
+menu dongles # IRDA dongles
+ ESI_DONGLE? ACTISYS_DONGLE? TEKRAM_DONGLE? GIRBIL_DONGLE?
+ LITELINK_DONGLE? OLD_BELKIN_DONGLE?
+ EP7211_IR?
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/net/pcmcia/rules.cml linux/drivers/net/pcmcia/rules.cml
--- linux.2.4.14.pristine/drivers/net/pcmcia/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/net/pcmcia/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,32 @@
+# PCMCIA configuration
+
+unless ARCNET!=n suppress dependent ARCNET_COM20020_CS
+unless ISA or PCI or PNP!=n or PCMCIA!=n suppress AIRONET4500_NONCS #Configure.help
+unless PNP!=n suppress AIRONET4500_PNP #Configure.help
+unless PCMCIA!=n suppress AIRONET4500_I365 #Configure.help
+unless TR suppress PCMCIA_XIRTULIP
+unless IBMTR!=y suppress PCMCIA_IBMTR
+unless CARDBUS suppress PCMCIA_XIRCOM PCMCIA_XIRTULIP
+unless NET_RADIO suppress NET_PCMCIA_RADIO
+
+menu pcmcia_drivers # PCMCIA network device support
+ PCMCIA_3C589? PCMCIA_3C574? PCMCIA_FMVJ18X? PCMCIA_PCNET? PCMCIA_NMCLAN?
+ PCMCIA_SMC91C92? PCMCIA_XIRC2PS? PCMCIA_AXNET?
+ ARCNET_COM20020_CS? PCMCIA_IBMTR?
+ PCMCIA_XIRTULIP?
+ PCMCIA_XIRCOM?
+ NET_PCMCIA_RADIO {
+ PCMCIA_RAYCS? PCMCIA_HERMES?
+ PCMCIA_NETWAVE?
+ PCMCIA_WAVELAN? AIRONET4500_CS?
+ }
+
+# This was removed in 2.4.6-pre5. Kept for the ac tree.
+derive PCMCIA_NETCARD from PCMCIA_3C589==y or PCMCIA_3C574==y or
+ PCMCIA_FMVJ18X==y or PCMCIA_PCNET==y or
+ PCMCIA_NMCLAN==y or PCMCIA_SMC91C92==y or
+ PCMCIA_XIRC2PS==y or PCMCIA_RAYCS==y or
+ PCMCIA_NETWAVE==y or PCMCIA_WAVELAN==y or
+ PCMCIA_XIRTULIP==y
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/net/rules.cml linux/drivers/net/rules.cml
--- linux.2.4.14.pristine/drivers/net/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/net/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,185 @@
+# Network driver configuration
+
+private NET_ETHERNET NET_POCKET
+
+unless NETLINK suppress ETHERTAP
+unless HOTPLUG==y and PCMCIA!=n suppress dependent pcmcia_drivers
+unless X86 or ALPHA or SPARC or PPC suppress
+ EQUALIZER ETHERTAP NET_SB1000 NET_RADIO WAN ARCNET
+unless ISAPNP!=n suppress NET_SB1000
+unless ARCH_S390==n suppress
+ ethernet_lospeed ethernet_hispeed fddi_drivers tokenring_drivers
+ NET_FC ATALK NET_PCMCIA
+unless X86 or ALPHA or (MIPS and DECSTATION and BAGET_MIPS) or PPC suppress
+ ISDN
+unless ARCH_S390 suppress CTC IUCV
+unless X86 or ALPHA or SPARC or PPC or ARCH_S390 suppress FDDI NET_ETHERNET TR
+unless PCI or ISA or MCA or ARCH_S390 suppress TR
+
+menu net_drivers # Network device configuration
+ DUMMY? BONDING? TUN? EQUALIZER? ETHERTAP? NET_SB1000?
+ NET_ETHERNET {ethernet_lospeed ethernet_hispeed}
+ ISDN? {isdn}
+ FDDI {fddi_drivers}
+ NET_RADIO {wireless}
+ TR {tokenring_drivers}
+ NET_FC {fiber_channel}
+ WAN {wan_drivers}
+ ARCNET? {arcnet_drivers}
+ ATALK? {appletalk_drivers}
+ NET_PCMCIA {pcmcia_drivers}
+ CTC? IUCV?
+
+require NET_PCMCIA <= PCMCIA and NET_PCMCIA <= NET_ETHERNET
+
+# Low-speed Ethernet
+
+private NET_VENDOR_3COM NET_VENDOR_SMC NET_VENDOR_RACAL
+
+unless EXPERIMENTAL suppress dependent
+ ELMC_II NI5010 AC3200 DM9102 TULIP_MWI
+ LNE390 NE3210 CONFIG_8139TOO_8129 ES3210 CONFIG_8139CP
+ EPIC100 SUNDANCE CONFIG_8139CP
+#unless OBSOLETE suppress FMV18X SEEQ8005 ZNET ETHERTAP SK_G16
+
+unless MCA suppress ELMC ELMC_II ULTRAMCA SKMC NE2_MCA IBMLANA
+unless ISA suppress
+ CONFIG_3C515 EL1 EL2 ELPLUS EL16 WD80x3 ULTRA NET_SB1000
+ CS89x0 ATP
+unless EISA suppress LNE390 NE3210
+unless ISA or EISA suppress AC3200
+unless ISA or ISAPNP!=n or EISA or MCA suppress EL3 # 3c509 source
+unless EISA or PCI or CARDBUS!=n suppress VORTEX # Vortex help screen
+unless ISA or ISAPNP!=n or PCI suppress LANCE # Lance source
+unless SPARC or SPARC64 suppress SUNLANCE
+unless ISA suppress ULTRA # SMC-ULTRA
+unless EISA suppress ULTRA32 # SMC-ULTRA32
+unless PCI suppress dependent
+ PCNET32 TULIP EEPRO100 NE2K_PCI CONFIG_8139TOO CONFIG_8139TOO_8129
+ WINBOND_840 HAPPYMEAL ADAPTEC_STARFIRE
+unless ISA suppress NI52 #No references to other busses in ni52.c
+unless ISA suppress NI65 #No real references to other busses in ni65.c
+unless EISA or PCI suppress DE4X5 DGRS DM9102 TLAN
+unless ARM and ARCH_ACORN!=y suppress ARM_AM79C961A
+unless ARM and ARCH_ACORN==y suppress ARM_ETHER1 ARM_ETHER3 ARM_ETHERH
+unless ALL_PPC suppress MACE BMAC GMAC
+#unless GEMINI suppress NCR885E
+unless PPC suppress NCR885E
+unless CONFIG_4xx suppress OAKNET
+unless ZORRO suppress ARIADNE ARIADNE2 A2065 HYDRA
+unless PARISC suppress LASI_82596
+unless MIPS_JAZZ suppress MIPS_GT96100ETH MIPS_JAZZ_SONIC
+unless MIPS suppress MIPS_AU1000_ENET CONFIG_8139CP
+unless MIPS and EXPERIMENTAL suppress SGISEEQ # Guard was `SGI' in CML1
+unless SGI_IP27 or IA64_SGI_SN1 suppress SGI_IOC3_ETH
+unless X86 suppress ATP
+unless X86 or ALPHA or PPC suppress NET_VENDOR_3COM
+unless X86 or ALPHA suppress LANCE NET_VENDOR_SMC NET_VENDOR_RACAL
+ SKMC NET_POCKET
+unless ISA or EISA or MCA suppress DEPCA #depca.c
+unless ISA or EISA or MCA suppress HP100
+unless ISA or MCA suppress AT1700 #at1700.c
+unless SPARC suppress HAPPYMEAL SUNBMAC SUNQE
+unless DECSTATION suppress DECLANCE
+unless BAGET_MIPS suppress BAGETLANCE
+unless (CONFIG_8xx or CONFIG_8260) suppress SCC_ENET FEC_ENET ENET_BIG_BUFFERS
+unless AMIGA and PCMCIA!=n suppress APNE
+unless APOLLO suppress APOLLO_ELPLUS
+unless MAC suppress MAC8390 MACSONIC SMC9194 MAC89x0 MACMACE
+unless ATARI suppress ATARILANCE
+unless SUN3X or SPARC suppress SUN3LANCE
+unless SUN3 suppress SUN3_82586
+unless HP300 suppress HPLANCE
+unless SUPERH suppress STNIC
+unless ISA suppress NI5010 #ni5010.c
+unless ISA suppress E2100 EWRK3 EEXPRESS EEXPRESS_PRO FMV18X HPLAN HPLAN_PLUS
+ ETH16I NE2000 SEEQ8005 SK_G16
+
+menu ethernet_lospeed # Ethernet (10 or 100Mbit)
+ ARM_AM79C961A ARM_ETHER1? ARM_ETHER3? ARM_ETHERH? # ARM
+ MACE? {MACE_AAUI_PORT} # PPC
+ BMAC? GMAC? NCR885E? OAKNET? # PPC
+ ARIADNE? ARIADNE2? A2065? HYDRA? # ZORRO
+ LASI_82596? # PARISC
+ MIPS_JAZZ_SONIC? # MIPS_JAZZ
+ MIPS_GT96100ETH MIPS_AU1000_ENET # MIPS
+ SGISEEQ # SGI
+ SGI_IOC3_ETH # SGI_IP27
+ STNIC? # SuperH
+ SUNLANCE? SUN3LANCE? HAPPYMEAL? SUNBMAC? SUNQE? SUN3_82586? # Sun
+ DECLANCE BAGETLANCE? # MIPS
+ SCC_ENET {scc_ethernet} # CONFIG_8xx
+ ENET_BIG_BUFFERS
+ FEC_ENET {USE_MDIO FCC1_ENET {FCC2_ENET {FCC3_ENET}}} # CONFIG_8260
+ MAC8390 MACSONIC? MAC89x0? MACMACE # MAC
+ APNE? # AMIGA_PCMCIA
+ HPLANCE # Generic M68K
+ ATARILANCE? {ATARI_BIONET? ATARI_PAMSNET?} # ATARI
+ NET_VENDOR_3COM {eth_3com_drivers}
+ LANCE? WINBOND_840?
+ NET_VENDOR_SMC {eth_smc_drivers}
+ NET_VENDOR_RACAL {eth_racal_drivers}
+ AT1700? DEPCA? HP100? SKMC? NE2_MCA? IBMLANA?
+ E2100? EWRK3? EEXPRESS? EEXPRESS_PRO? FMV18X?
+ HPLAN_PLUS? HPLAN? LP486E? ETH16I? NE2000? SEEQ8005? SK_G16? CS89x0?
+ AC3200? DE4X5? DGRS? NE3210? ES3210? CONFIG_8139CP?
+ PCNET32? ADAPTEC_STARFIRE? APRICOT? DM9102?
+ TULIP? {TULIP_MMIO TULIP_MWI}
+ EEPRO100?
+ LNE390? FEALNX? NATSEMI? NE2K_PCI? CONFIG_8139TOO_8129
+ CONFIG_8139TOO? {CONFIG_8139TOO_PIO CONFIG_8139TOO_TUNE_TWISTER}
+ SIS900? TLAN? VIA_RHINE? EPIC100? SUNDANCE? ZNET LAN_SAA9730
+ NET_POCKET {eth_pocket_drivers}
+
+# This was originally a separate question referring to the same hardware
+derive NE2K_ZORRO from ARIADNE2
+
+choices scc_ethernet
+ SCC1_ENET SCC2_ENET SCC3_ENET
+ default SCC1_ENET
+
+menu eth_3com_drivers # 3Com Ethernet cards
+ EL1? EL2? ELPLUS? EL16? EL3? CONFIG_3C515?
+ ELMC? ELMC_II? VORTEX? APOLLO_ELPLUS?
+
+menu eth_smc_drivers # SMC Ethernet cards
+ WD80x3? ULTRAMCA? ULTRA? ULTRA32? SMC9194?
+
+menu eth_racal_drivers # Racal-Interlan (Micom) NI cards
+ NI5010? NI52? NI65?
+
+unless PARPORT!=n suppress dependent eth_pocket_drivers
+unless X86 and ISA suppress DE600 DE620
+
+menu eth_pocket_drivers # Pocket Ethernet adapters
+ ATP? DE600? DE620?
+
+# High-speed Ethernet
+
+unless PCI suppress YELLOWFIN #yellowfin.c
+unless PCI suppress ACENIC #acenic.c
+unless PCI suppress DL2K
+unless PCI suppress SK98LIN #sk98lin/skge.c
+unless PCI suppress SUNGEM
+
+unless EXPERIMENTAL suppress dependent YELLOWFIN
+unless SPARC suppress MYRI_SBUS
+unless INET suppress HIPPI
+
+menu ethernet_hispeed # Ethernet (1000 Mbit)
+ NS83820? HAMACHI? YELLOWFIN?
+ ACENIC? {ACENIC_OMIT_TIGON_I}
+ DL2K? SK98LIN? SUNGEM? MYRI_SBUS?
+ VETH?
+
+# FDDI
+
+unless EISA or PCI suppress DEFXX # From defxx.c
+unless PCI suppress SKFP # PCI only, according to skfp/skfddi.c
+unless PCI suppress ROADRUNNER # rrunner.c
+
+menu fddi_drivers # FDDI driver support
+ DEFXX? SKFP? HIPPI {ROADRUNNER? {ROADRUNNER_LARGE_RINGS}}
+
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/net/tokenring/rules.cml linux/drivers/net/tokenring/rules.cml
--- linux.2.4.14.pristine/drivers/net/tokenring/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/net/tokenring/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,14 @@
+# Token Ring configuration
+
+unless MCA suppress MADGEMC
+unless ISA or ISAPNP!=n or MCA or PCMCIA!=n suppress IBMTR #ibmtr.c
+unless PCI suppress IBMOL #olympic.txt
+unless PCI or MCA suppress IBMLS #Mike Phillips
+unless ISA or PCI suppress TMS380TR #tms380tr.c
+unless ISA or MCA suppress SMCTR #smctr.c
+
+menu tokenring_drivers # Token Ring devices
+ IBMTR? IBMLS? IBMOL? TMS380TR? {TMSPCI? TMSISA? ABYSS?
+MADGEMC?} SMCTR?
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/net/wan/rules.cml linux/drivers/net/wan/rules.cml
--- linux.2.4.14.pristine/drivers/net/wan/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/net/wan/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,66 @@
+# Wide-Area Networking configuration
+
+private WAN_ROUTER_DRIVERS
+
+unless EXPERIMENTAL suppress dependent CYCLADES_SYNC
+
+unless ISA suppress HOSTESS_SV11 #http://www.comtrol.co.uk/sv24.htm#sv11
+unless ISA suppress COSA # http://www.pavoucek.cz/cosa.html
+unless PCI suppress LANMEDIA # lmc/lmc_main.c
+unless ISA suppress COMX_HW_LOCOMX # 98% sure from comx-hw-locomx.c
+unless ISA suppress COMX_HW_MIXCOM # 98% sure from comx-hw-mixcom.c
+unless ISA suppress SEALEVEL_4021 # http://www.sealevel.com/selection.htm
+unless ISA or PCI suppress SDLA # sdla*.c; <=s508 is ISA, but there
+ # appears to be support for PCI s514
+unless ISA suppress CYCLADES_SYNC # 98% sure from cycx*
+unless (CYCLADES_SYNC!=n) suppress CYCLOMX_X25
+unless ISA suppress SBNI # sbni.c
+
+unless WAN_ROUTER!=n suppress WAN_ROUTER_DRIVERS
+unless LAPB!=n suppress dependent COMX_PROTO_LAPB
+
+default DLCI_COUNT from 24
+default DLCI_MAX from 8
+
+menu wan_drivers # Wan drivers
+ HOSTESS_SV11? COSA? LANMEDIA?
+ COMX? {
+ COMX_HW_COMX? COMX_HW_LOCOMX? COMX_HW_MIXCOM?
+ COMX_PROTO_PPP? COMX_PROTO_LAPB? COMX_PROTO_FR?
+ }
+ FARSYNC? DSCC4?
+ SEALEVEL_4021?
+ SYNCLINK_SYNCPPP?
+ HDLC? {HDLC_PPP HDLC_X25 N2? C101?}
+ DLCI? {DLCI_COUNT% DLCI_MAX% SDLA?}
+ WAN_ROUTER_DRIVERS {wan_router_drivers}
+
+unless (COMX_HW_LOCOMX!=n) or (COMX_HW_MIXCOM!=n) suppress COMX_PROTO_PPP
+unless (COMX_HW_LOCOMX!=n) or (COMX_HW_MIXCOM!=n) suppress COMX_PROTO_LAPB
+unless (COMX_HW_LOCOMX!=n) or (COMX_HW_MIXCOM!=n) suppress COMX_PROTO_FR
+
+menu wan_router_drivers # WAN router drivers
+ VENDOR_SANGOMA? {
+ WANPIPE_CHDLC WANPIPE_FR WANPIPE_X25
+ WANPIPE_PPP {WANPIPE_MULTPPP}
+ }
+ CYCLADES_SYNC? {CYCLOMX_X25}
+ LAPBETHER? X25_ASY? SBNI? {SBNI_MULTILINE}
+
+require LAPBETHER <= LAPB and LAPBETHER <= X25
+require X25_ASY <= LAPB and LAPBETHER <= X25
+
+# There is no way to detect a Comtrol sv11 - force it modular for now.
+require HOSTESS_SV11 <= m explanation hostess_complaint
+# The COSA/SRP driver has not been tested as non-modular yet.
+require COSA <= m explanation cosa_complaint
+# The Etinc driver has not been tested as non-modular yet.
+require DSCC4 <= m explanation dscc4_complaint
+# There is no way to detect a Sealevel - force it modular for now.
+require SEALEVEL_4021 <= m explanation sealevel_complaint
+# This constraint is not explained
+require SYNCLINK_SYNCPPP <= m
+# SDLA must be modular if DLCI is
+require SDLA <= DLCI
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/net/wireless/rules.cml linux/drivers/net/wireless/rules.cml
--- linux.2.4.14.pristine/drivers/net/wireless/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/net/wireless/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,26 @@
+# Wireless (802.11) support
+
+unless INET suppress dependent STRIP
+unless EXPERIMENTAL suppress dependent AIRONET4500_ISA AIRONET4500_I365
+unless PCI suppress AIRONET4500_PCI PLX_HERMES
+unless ISA suppress AIRONET4500_ISA
+unless ISA suppress WAVELAN # brief reference to MCA, but Doc.help
+ # and wavelan.{c|txt} say ISA only.
+unless ISA suppress ARLAN # arlan.c
+unless ALL_PPC suppress APPLE_AIRPORT
+
+menu wireless # Wireless LAN
+ STRIP? WAVELAN?
+ ARLAN? AIRONET4500? {
+ AIRONET4500_NONCS? {
+ AIRONET4500_PNP AIRONET4500_PCI AIRONET4500_ISA
+ AIRONET4500_I365 AIRONET4500_PROC?
+ }
+ }
+ AIRO? AIRO_CS?
+ HERMES? APPLE_AIRPORT? PLX_HERMES?
+
+require AIRONET4500_PROC <= m explanation aironet_complaint
+
+# yes, this works even when no drivers are selected
+derive NET_WIRELESS from ISA or PCI or ALL_PPC or PCMCIA!=n
diff -uNr linux.2.4.14.pristine/drivers/parport/rules.cml linux/drivers/parport/rules.cml
--- linux.2.4.14.pristine/drivers/parport/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/parport/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,48 @@
+# Parallel-port configuration
+
+unless PARPORT!=n suppress dependent parport
+unless EXPERIMENTAL suppress
+ PARPORT_PC_FIFO SUN_BPP PARPORT_SUNBPP PARPORT_MFC3 PARPORT_PC_SUPERIO
+unless X86 or ALPHA suppress PARPORT_PC
+unless ZORRO or APUS suppress GVPIOEXT MULTIFACE_III_TTY
+unless SBUS==y suppress SUN_BPP
+unless PARPORT_AMIGA==n and ZORRO suppress PARPORT_MFC3
+
+menu parport # Parallel port support
+ PARPORT_PC? {PARPORT_PC_FIFO PARPORT_PC_SUPERIO}
+ PARPORT_SERIAL?
+ PARPORT_PC_PCMCIA?
+ PARPORT_MFC3? SUN_BPP? {PARPORT_SUNBPP?} PARPORT_OTHER PARPORT_1284
+ GVPIOEXT? {GVPIOEXT_LP? GVPIOEXT_PLIP?}
+ MULTIFACE_III_TTY?
+
+# The CML1 here was
+# if [ "$CONFIG_PARPORT_PC" != "n" -a "$CONFIG_SERIAL" != "n" ]; then
+# if [ "$CONFIG_SERIAL" = "m" ]; then
+# define_tristate CONFIG_PARPORT_PC_CML1 m
+# else
+# define_tristate CONFIG_PARPORT_PC_CML1 $CONFIG_PARPORT_PC
+# fi
+private PARPORT_PC_CML1
+derive PARPORT_PC_CML1 from (SERIAL and PARPORT)&(SERIAL==m ? m : PARPORT_PC)
+unless PARPORT_PC_CML1!=n suppress dependent PARPORT_SERIAL
+
+# These used to be separate questions
+derive PARPORT_ARC from PARPORT & ARM
+derive PARPORT_AMIGA from PARPORT & AMIGA
+derive PARPORT_ATARI from PARPORT & ATARI
+derive PARIDE_PARPORT from PARPORT | m
+
+# I'm not sure this is correct. The M68K people have oscillated back and
+# forth a few times about whether READBACK and 1284 are equivalent.
+derive PRINTER_READBACK from PARPORT_1284
+
+# Don't bother with this if parport_pc is a module; it only affects
+# the presence or not of some __init's, which are no-ops for modules.
+# unless PARPORT_PC==y and HOTPLUG and PCMCIA!=n suppress PARPORT_PC_PCMCIA
+
+# Force PARPORT_PC on x86 machines but leave the question open on others.
+require X86 implies PARPORT_PC==PARPORT
+unless X86==n suppress PARPORT_PC
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/pcmcia/rules.cml linux/drivers/pcmcia/rules.cml
--- linux.2.4.14.pristine/drivers/pcmcia/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/pcmcia/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,10 @@
+# PCMCIA configuration
+
+unless PCMCIA!=n suppress pcmcia
+unless PCI suppress CARDBUS I82092
+#unless HD64465 suppress HD64465_PCMCIA
+
+menu pcmcia # PCMCIA/CardBus support
+ CARDBUS I82092 I82365 TCIC #HD64465_PCMCIA
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/sbus/rules.cml linux/drivers/sbus/rules.cml
--- linux.2.4.14.pristine/drivers/sbus/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/sbus/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,22 @@
+# from drivers/sbus/char/Config.in:
+
+unless SPARC suppress TADPOLE_TS102_UCTRL SUN_JSFLASH
+unless EXPERIMENTAL suppress dependent
+ SUN_VIDEOPIX SUN_AURORA TADPOLE_TS102_UCTRL SUN_JSFLASH
+
+menu sbus_misc
+ SUN_OPENPROMIO? SUN_MOSTEK_RTC? #SUN_BPP?
+ SUN_VIDEOPIX? SUN_AURORA? TADPOLE_TS102_UCTRL? SUN_JSFLASH?
+ # The CML1 code queried for RTC? and derived APM_RTC_IS_GMT here,
+ # but we handle that in the architecture-independent features section
+
+# from drivers/sbus/audio/Config.in:
+
+unless EXPERIMENTAL suppress dependent sparcaudio
+
+menu sparcaudio
+ SPARCAUDIO? {
+ SPARCAUDIO_AMD7930? SPARCAUDIO_CS4231?
+ SPARCAUDIO_DBRI? SPARCAUDIO_DUMMY?
+ }
+
diff -uNr linux.2.4.14.pristine/drivers/scsi/rules.cml linux/drivers/scsi/rules.cml
--- linux.2.4.14.pristine/drivers/scsi/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/scsi/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,212 @@
+# from drivers/scsi/Config.in,
+# drivers/acorn/scsi/Config.in, drivers/scsi/pcmcia/Config.in
+
+private SCSI_PCMCIA
+
+menu scsi
+ scsi_devices scsi_drivers
+ FUSION? {fusion_mpt}
+
+#unless EXPERIMENTAL suppress dependent SCSI_DEBUG_QUEUES
+unless PCI suppress
+ SCSI_INITIO SCSI_INIA100 SCSI_NCR53C7xx SCSI_NCR53C8XX SCSI_SYM53C8XX
+unless PARPORT!=n suppress dependent SCSI_PPA SCSI_IMM
+unless PARISC suppress SCSI_ZALON SCSI_LASI SCSI_LASI700
+unless CHR_DEV_ST!=n suppress dependent CHR_DEV_OSST
+
+menu scsi_devices # SCSI? disk support
+ BLK_DEV_SD! SD_EXTRA_DEVS%
+ CHR_DEV_ST? ST_EXTRA_DEVS%
+ CHR_DEV_OSST?
+ BLK_DEV_SR! {BLK_DEV_SR_VENDOR} SR_EXTRA_DEVS%
+ CHR_DEV_SG!
+ # Some SCSI? devices (e.g. CD jukebox) support multiple LUNs
+ SCSI_DEBUG_QUEUES SCSI_MULTI_LUN SCSI_CONSTANTS SCSI_LOGGING
+
+unless BLK_DEV_SD == m suppress SD_EXTRA_DEVS
+unless CHR_DEV_ST == m suppress ST_EXTRA_DEVS
+unless BLK_DEV_SR == m suppress SR_EXTRA_DEVS
+
+unless EXPERIMENTAL suppress dependent
+ SCSI_NCR53C8XX_SYMBIOS_COMPAT SCSI_DEBUG
+ SCSI_CUMANA_1 SCSI_ECOSCSI SCSI_OAK1 A4000T_SCSI
+ A4091_SCSI WARPENGINE_SCSI BLZ603EPLUS_SCSI OKTAGON_SCSI
+unless ISA suppress SCSI_AHA152X SCSI_AHA1542
+unless PCI suppress
+ SCSI_AHA1740
+ SCSI_QLOGIC_ISP
+ SCSI_QLOGIC_FC
+ SCSI_QLOGIC_1280
+ SCSI_DC390T BLK_DEV_3W_XXXX_RAID SCSI_INITIO SCSI_INIA100
+ SCSI_SEAGATE SCSI_CPQFCTS SCSI_IPS
+unless MCA suppress SCSI_FD_MCS SCSI_IBMMCA SCSI_MCA_53C9X SCSI_NCR_D700
+unless HOTPLUG==y and PCMCIA==y suppress SCSI_PCMCIA
+#unless CARDBUS!=n suppress PCMCIA_APA1480
+unless PPC suppress SCSI_MESH SCSI_MAC53C94
+unless MIPS_JAZZ suppress JAZZ_ESP
+unless ARCH_ACORN suppress SCSI_ACORNSCSI_3
+ SCSI_ARXESCSI SCSI_CUMANA_2 SCSI_EESOXSCSI SCSI_POWERTECSCSI
+ SCSI_CUMANA_1 SCSI_ECOSCSI SCSI_OAK1
+unless MIPS suppress SGIWD93_SCSI # CML1 doesn't actually define SGI
+unless DECSTATION==y and TC==y suppress SCSI_DECNCR
+unless DECSTATION==y suppress SCSI_DECSII
+unless SPARC suppress SCSI_SUNESP SCSI_QLOGICPTI
+unless X86 suppress SCSI_IPS SCSI_ULTRASTOR
+unless X86 or ALPHA or PPC suppress
+ SCSI_AIC7XXX SCSI_AIC7XXX_OLD SCSI_ADVANSYS SCSI_NCR53C8XX
+ SCSI_SYM53C8XX
+unless X86 or ALPHA suppress
+ BLK_DEV_3W_XXXX_RAID SCSI_7000FASST SCSI_ACARD SCSI_IN2000
+ SCSI_AM53C974 SCSI_MEGARAID SCSI_BUSLOGIC SCSI_DTC3280 SCSI_EATA
+ SCSI_FUTURE_DOMAIN SCSI_FD_MCS SCSI_GDTH SCSI_GENERIC_NCR5380
+ SCSI_INITIO SCSI_INIA100 SCSI_PAS16 SCSI_PCI2000 SCSI_PCI2220I
+ SCSI_PSI240I SCSI_QLOGIC_FAS SCSI_QLOGIC_ISP
+ SCSI_QLOGIC_FC SCSI_QLOGIC_1280 SCSI_SEAGATE SCSI_DC390T SCSI_T128 SCSI_U14_34F
+unless AMIGA suppress A3000_SCSI A4000T_SCSI
+unless ZORRO suppress
+ A2091_SCSI GVP11_SCSI
+ CYBERSTORM_SCSI CYBERSTORMII_SCSI #CYBERSTORMIII_SCSI
+ BLZ2060_SCSI BLZ1230_SCSI FASTLANE_SCSI A4091_SCSI WARPENGINE_SCSI
+ BLZ603EPLUS_SCSI OKTAGON_SCSI
+unless ATARI suppress ATARI_SCSI
+unless HADES suppress TT_DMA_EMUL
+unless MAC suppress MAC_SCSI SCSI_MAC_ESP
+unless SUN3X suppress SUN3X_ESP
+
+# The technically legal combinations are:
+#
+# SCSI_AIC7XXX SCSI_AIC7XXX_OLD
+# n n
+# n y
+# y n
+# m m
+# m n
+#
+unless SCSI_AIC7XXX==n suppress SCSI_AIC7XXX_OLD
+
+default AIC7XXX_CMDS_PER_DEVICE from 253
+default AIC7XXX_OLD_CMDS_PER_DEVICE from 8
+default AIC7XXX_RESET_DELAY_MS from 5000
+
+default SCSI_EATA_MAX_TAGS from 16
+default SCSI_MESH_SYNC_RATE from 5
+default SCSI_NCR53C8XX_DEFAULT_TAGS from 8
+default SCSI_NCR53C8XX_MAX_TAGS from 32
+default SCSI_NCR53C8XX_SYNC from 10
+default SCSI_SYM53C8XX_DMA_ADDRESSING_MODE from 1
+default SCSI_SYM53C8XX_DEFAULT_TAGS from 16
+default SCSI_SYM53C8XX_MAX_TAGS from 64
+default SCSI_U14_34F_MAX_TAGS from 8
+default SD_EXTRA_DEVS from 40
+default SR_EXTRA_DEVS from 2
+default ST_EXTRA_DEVS from 2
+
+menu scsi_drivers # SCSI low-level drivers
+ SGIWD93_SCSI! SCSI_DECNCR! SCSI_DECSII!
+ BLK_DEV_3W_XXXX_RAID! SCSI_7000FASST!
+ SCSI_ACARD! SCSI_AHA152X! SCSI_AHA1542! SCSI_AHA1740!
+ SCSI_AIC7XXX! {
+ AIC7XXX_CMDS_PER_DEVICE%
+ #AIC7XXX_TCQ_ON_BY_DEFAULT AIC7XXX_PROC_STATS
+ AIC7XXX_RESET_DELAY_MS%
+ AIC7XXX_BUILD_FIRMWARE
+ }
+ SCSI_AIC7XXX_OLD! {
+ AIC7XXX_OLD_CMDS_PER_DEVICE%
+ AIC7XXX_OLD_TCQ_ON_BY_DEFAULT
+ AIC7XXX_OLD_PROC_STATS
+ }
+ SCSI_IPS! SCSI_DPT_I2O! SCSI_ADVANSYS!
+ SCSI_IN2000! SCSI_AM53C974! SCSI_MEGARAID!
+ SCSI_BUSLOGIC! {SCSI_OMIT_FLASHPOINT}
+ SCSI_CPQFCTS?
+ SCSI_DMX3191D! SCSI_DTC3280!
+ SCSI_EATA! {
+ SCSI_EATA_TAGGED_QUEUE SCSI_EATA_LINKED_COMMANDS
+ SCSI_EATA_MAX_TAGS% SCSI_EATA_DMA! SCSI_EATA_PIO!
+ }
+ SCSI_FUTURE_DOMAIN! SCSI_FD_MCS! SCSI_GDTH!
+ SCSI_GENERIC_NCR5380! {SCSI_GENERIC_NCR53C400 ncr5380}
+ SCSI_INITIO! SCSI_INIA100!
+ SCSI_PPA! SCSI_IMM! SCSI_IZIP_EPP16 SCSI_IZIP_SLOW_CTR
+ SCSI_NCR53C406A! SCSI_SYM53C416! SCSI_SIM710!
+ SCSI_NCR_D700? SCSI_LASI700?
+ SCSI_NCR53C7xx! {
+ SCSI_NCR53C7xx_sync
+ SCSI_NCR53C7xx_FAST SCSI_NCR53C7xx_DISCONNECT
+ }
+ SCSI_ZALON? SCSI_LASI?
+ SCSI_NCR53C8XX! SCSI_SYM53C8XX!
+ SCSI_NCR53C8XX_DEFAULT_TAGS% SCSI_NCR53C8XX_MAX_TAGS%
+ SCSI_NCR53C8XX_SYNC% SCSI_NCR53C8XX_PROFILE SCSI_NCR53C8XX_IOMAPPED
+ SCSI_NCR53C8XX_PQS_PDS SCSI_NCR53C8XX_NO_DISCONNECT
+ SCSI_NCR53C8XX_SYMBIOS_COMPAT
+ SCSI_SYM53C8XX_2? {
+ SCSI_SYM53C8XX_DMA_ADDRESSING_MODE%
+ SCSI_SYM53C8XX_DEFAULT_TAGS%
+ SCSI_SYM53C8XX_MAX_TAGS%
+ SCSI_SYM53C8XX_IOMAPPED
+ }
+ SCSI_IBMMCA! {IBMMCA_SCSI_ORDER_STANDARD IBMMCA_SCSI_DEV_RESET}
+ SCSI_MCA_53C9X!
+ SCSI_PAS16! SCSI_PCI2000! SCSI_PCI2220I! SCSI_PSI240I! SCSI_QLOGIC_FAS!
+ SCSI_QLOGIC_ISP! SCSI_QLOGIC_FC! {SCSI_QLOGIC_FC_FIRMWARE}
+ SCSI_QLOGIC_1280! SCSI_SEAGATE!
+ SCSI_DC390T! {SCSI_DC390T_NOGENSUPP}
+ SCSI_T128!
+ SCSI_U14_34F! {SCSI_U14_34F_LINKED_COMMANDS SCSI_U14_34F_MAX_TAGS%}
+ SCSI_ULTRASTOR!
+ SCSI_MESH! {SCSI_MESH_SYNC_RATE%}
+ SCSI_MAC53C94! JAZZ_ESP
+ SCSI_ACORNSCSI_3! {SCSI_ACORNSCSI_TAGGED_QUEUE SCSI_ACORNSCSI_SYNC}
+ SCSI_ARXESCSI! SCSI_CUMANA_2! SCSI_EESOXSCSI! SCSI_POWERTECSCSI!
+ SCSI_CUMANA_1! SCSI_ECOSCSI! SCSI_OAK1!
+ SCSI_PCMCIA {
+ PCMCIA_AHA152X! PCMCIA_QLOGIC!
+ PCMCIA_FDOMAIN! PCMCIA_NINJA_SCSI! #PCMCIA_APA1480!
+ }
+ # SPARC SCSCI
+ SCSI_SUNESP! SCSI_QLOGICPTI!
+ # M68K SCSI!
+ A3000_SCSI! A4000T_SCSI
+ A2091_SCSI! GVP11_SCSI!
+ CYBERSTORM_SCSI! CYBERSTORMII_SCSI! #CYBERSTORMIII_SCSI!
+ BLZ2060_SCSI! BLZ1230_SCSI! FASTLANE_SCSI! A4091_SCSI WARPENGINE_SCSI
+ BLZ603EPLUS_SCSI OKTAGON_SCSI!
+ ATARI_SCSI! {
+ ATARI_SCSI_TOSHIBA_DELAY ATARI_SCSI_RESET_BOOT TT_DMA_EMUL
+ }
+ MAC_SCSI! SCSI_MAC_ESP! SUN3X_ESP
+ # Debugging
+ SCSI_DEBUG?
+ #SCSI_SIM
+
+derive CONFIG_53C700_IO_MAPPED from SCSI_NCR_D700!=n
+derive CONFIG_53C700_MEM_MAPPED from SCSI_LASI700!=n
+derive CONFIG_53C700_LE_ON_BE from SCSI_LASI700!=n
+derive CONFIG_53C700_USE_CONSISTENT from SCSI_LASI700!=n
+
+unless SCSI_PPA!=n and SCSI_IMM!=n suppress SCSI_IZIP_EPP16 SCSI_IZIP_SLOW_CTR
+unless SCSI_NCR53C7xx!=y suppress SCSI_NCR53C8XX SCSI_SYM53C8XX
+unless (PARISC and SCSI_ZALON!=n) or SCSI_NCR53C8XX!=n or SCSI_SYM53C8XX!=n suppress
+ SCSI_NCR53C8XX_DEFAULT_TAGS SCSI_NCR53C8XX_MAX_TAGS
+ SCSI_NCR53C8XX_SYNC SCSI_NCR53C8XX_PROFILE SCSI_NCR53C8XX_IOMAPPED
+unless SCSI_NCR53C8XX!=n or SCSI_SYM53C8XX!=n suppress
+ SCSI_NCR53C8XX_PQS_PDS SCSI_NCR53C8XX_NO_DISCONNECT
+ SCSI_NCR53C8XX_SYMBIOS_COMPAT
+unless SCSI_SYM53C8XX!=n suppress dependent SCSI_NCR53C8XX_PQS_PDS
+unless ARCH_ARCA5K suppress SCSI_ECOSCSI
+#unless IA64 suppress SCSI_SIM
+require PCMCIA_AHA152X <= m
+require PCMCIA_QLOGIC <= m
+require PCMCIA_FDOMAIN <= m
+#require PCMCIA_APA1480 <= m
+derive PCMCIA_SCSICARD from (PCMCIA_QLOGIC!=n) or (PCMCIA_AHA152X!=n) or
+ (PCMCIA_FDOMAIN!=n) or (PCMCIA_NINJA_SCSI!=n)
+ # or (PCMCIA_APA1480!=n)
+choices ncr5380 # NCR5380/53c400 mapping method (use Port for T130B)
+ SCSI_G_NCR5380_PORT SCSI_G_NCR5380_MEM
+ default SCSI_G_NCR5380_PORT
+
+# End
+
diff -uNr linux.2.4.14.pristine/drivers/sound/rules.cml linux/drivers/sound/rules.cml
--- linux.2.4.14.pristine/drivers/sound/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/sound/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,172 @@
+# Sound driver configuration
+
+unless EXPERIMENTAL suppress dependent SOUND_AD1816
+#unless VISWS suppress SOUND_VWSND
+unless ISAPNP!=n suppress SOUND_AD1816 #from Documentation/sound/AD1816
+unless ARM or ARCH_CLPS7500 suppress SOUND_VIDC
+unless ARM and SOUND_OSS!=n suppress SOUND_WAVEARTIST
+unless AMIGA or ATARI or ALL_PPC or APUS suppress DMASOUND # Generic DMA sound
+unless ATARI suppress DMASOUND_ATARI # ATARI specific
+unless ALL_PPC suppress DMASOUND_AWACS # PowerMac/APUS specific
+unless (AMIGA or APUS) suppress DMASOUND_PAULA DMASOUND_Q40 # Amiga specific
+unless Q40 suppress DMASOUND_Q40 # Q40 Specific
+unless PCI suppress SOUND_CMPCI # PCI only, according to cmpci.c
+unless PCI suppress SOUND_EMU10K1 # PCI only, according to emu10k1/main.c
+unless PCI suppress SOUND_ES1370 # PCI only, according to es1370.c
+unless PCI suppress SOUND_ES1371 # PCI only, according to es1371.c
+unless PCI suppress SOUND_ESSSOLO1 # PCI only, according to esssolo1.c
+unless PCI suppress SOUND_MAESTRO # PCI only, according to maestro.c
+ # and from Documentation/sound/Maestro
+unless PCI suppress SOUND_MAESTRO3 # PCI only, according to maestro.c
+ # and from Documentation/sound/Maestro
+unless PCI suppress SOUND_SONICVIBES # PCI only, according to sonicvibes.c
+unless PCI suppress SOUND_TRIDENT # PCI only, according to trident.c
+unless ISA suppress SOUND_MSNDCLAS # From msnd_pinnacle.c
+ # (supports both clas and pin)
+unless ISA or ISAPNP!=n suppress SOUND_MSNDPIN #From msnd_pinnacle.c
+unless ISA or (ISAPNP!=n) suppress SOUND_MAD16 #from mad16.c
+unless ISAPNP!=n suppress SOUND_CS4232 #from cs4232.c
+unless ISAPNP!=n suppress SOUND_SSCAPE #from sscape.c
+unless ISA suppress SOUND_ADLIB #from adlib_card.c and opl3.c
+unless ISA suppress SOUND_YM3812 #from opl3.c
+unless ISA suppress SOUND_WAVEFRONT #from wavfront.c
+unless ISA suppress SOUND_MAUI #from maui.c
+unless ISA suppress SOUND_AEDSP16 #from aedsp16.c
+unless ISA suppress SOUND_PAS #from pas2_card.c
+unless PCI suppress SOUND_NM256 #Documentation/sound/NM256, nm256_audio.c
+unless ISA suppress SOUND_TRIX #trix.c
+unless ISAPNP!=n suppress SOUND_AWE32_SYNTH #Documentation/sound/README.awe, awe_wave.c. Brief reference to PCI.
+unless ISA suppress SOUND_SGALAXY #sgalaxy.c
+unless ISA or (ISAPNP!=n) suppress SOUND_GUS #Documentation/sound/ultrasound, gus_card.c
+unless (ISAPNP!=n) suppress SOUND_OPL3SA2 #Documentation/sound/OPL3-SA2
+unless ISA suppress SOUND_OPL3SA1 #opl3sa.c
+unless PCI suppress SOUND_YMFPCI SOUND_YMFPCI_LEGACY #It's legacy PCI support
+unless ISA suppress SOUND_PSS #Documentation/sound/PSS, pss.c
+unless PCI suppress SOUND_ICH #i810_audio.c
+unless PCI suppress SOUND_VIA82CXXX #Documentation/sound/via82cxxx.txt, via82cxxx_audio.c
+unless ISA suppress SOUND_DMAP #preallocated buffer only needed for ISA cards.
+
+# Copied from CML1.
+unless DDB5477 suppress SOUND_VRC5477
+
+default MAUI_BOOT_FILE from '/etc/sound/oswf.mot'
+default TRIX_BOOT_FILE from '/etc/sound/trxpro.hex'
+
+default SOUND_CMPCI_FMIO from 0x388 range 0x388 0x3c8 0x3e0 0x3e8
+default SOUND_CMPCI_MPUIO from 0x330 range 0x330, 0x320 0x310 0x300
+default SOUND_CMPCI_SPEAKERS from 2 range 2 4 5 6
+default MSNDCLAS_INIT_FILE from '/etc/sound/msndinit.bin'
+default MSNDCLAS_IO from 0x290 range 0x210 0x220 0x230 0x240 0x250 0x260 0x290 0x3E0
+default MSNDCLAS_IRQ from 5 range 5 7 9 10 11 12
+default MSNDPIN_IDE_IRQ from 0
+default MSNDPIN_MPU_IRQ from 0
+default MSNDCLAS_MEM from 0xd0000 range 0xB0000 0xC8000 0xD0000 0xD8000 0xE0000 0xE8000
+default MSNDCLAS_PERM_FILE from '/etc/sound/msndperm.bin'
+default MSNDPIN_CFG from 0x250 range 0x250 0x260 0x270
+default MSNDPIN_INIT_FILE from '/etc/sound/pndspini.bin'
+default MSNDPIN_IO from 0x290 range 0x210 0x220 0x230 0x240 0x250 0x260 0x290 0x3E0
+default MSNDPIN_IRQ from 5 range 5 7 9 10 11 12
+default MSNDPIN_MEM from 0xd0000 range 0xB0000 0xC8000 0xD0000 0xD8000 0xE0000 0xE8000
+default MSNDPIN_PERM_FILE from '/etc/sound/pndsperm.bin'
+default MSNDPIN_IDE_IO1 from 0
+default MSNDPIN_IDE_IO0 from 0
+default MSNDPIN_MPU_IO from 0
+default MSNDPIN_JOYSTICK_IO from 0
+default MSND_FIFOSIZE from 128
+
+default PSS_BOOT_FILE from '/etc/sound/dsp001.ld'
+default SC6600_CDROM from 4
+ enum NO_CDROM=4 IDE_CDROM=3 PANASONIC_CDROM=1 SONY_CDROM=0
+default SC6600_CDROMBASE from 0
+
+unless SOUND_CMPCI_SPEAKERS != 2
+ suppress SOUND_CMPCI_LINE_REAR SOUND_CMPCI_LINE_BASS
+
+menu sound # Sound support
+ SOUND_BT878?
+ SOUND_CMPCI? {
+ SOUND_CMPCI_FM {SOUND_CMPCI_FMIO@}
+ SOUND_CMPCI_MIDI {SOUND_CMPCI_MPUIO@}
+ SOUND_CMPCI_JOYSTICK
+ SOUND_CMPCI_CM8738 {
+ SOUND_CMPCI_SPDIFINVERSE SOUND_CMPCI_SPDIFLOOP
+ SOUND_CMPCI_SPEAKERS%
+ SOUND_CMPCI_LINE_REAR SOUND_CMPCI_LINE_BASS
+ }
+ }
+ SOUND_EMU10K1? {MIDI_EMU10K1}
+ SOUND_FUSION? SOUND_CS4281?
+ SOUND_ES1370? SOUND_ES1371? SOUND_ESSSOLO1?
+ SOUND_MAESTRO? SOUND_MAESTRO3? SOUND_ICH? SOUND_RME96XX? SOUND_SONICVIBES?
+ #SOUND_VWSND?
+ SOUND_VRC5477?
+ SOUND_TRIDENT?
+ SOUND_MSNDCLAS? {
+ msndclas_legend
+ MSNDCLAS_INIT_FILE$ MSNDCLAS_PERM_FILE$
+ MSNDCLAS_IRQ% MSNDCLAS_MEM@ MSNDCLAS_IO@
+ }
+ SOUND_MSNDPIN? {
+ msndpin_legend
+ MSNDPIN_INIT_FILE$ MSNDPIN_PERM_FILE$
+ MSNDPIN_IRQ% MSNDPIN_MEM@ MSNDPIN_IO@
+ MSNDPIN_DIGITAL MSNDPIN_NONPNP {
+ MSNDPIN_CFG@ MSNDPIN_MPU_IO@ MSNDPIN_MPU_IRQ%
+ MSNDPIN_IDE_IO0@ MSNDPIN_IDE_IO1@
+ MSNDPIN_IDE_IRQ% MSNDPIN_JOYSTICK_IO@
+ }
+ }
+ MSND_FIFOSIZE%
+ SOUND_OSS? {
+ SOUND_TRACEINIT SOUND_DMAP
+ SOUND_AD1816? SOUND_SGALAXY? SOUND_ADLIB? SOUND_ACI_MIXER?
+ SOUND_CS4232?
+ SOUND_SSCAPE? SOUND_GUS? {SOUND_GUS16 SOUND_GUSMAX}
+ SOUND_VMIDI?
+ SOUND_TRIX? {TRIX_HAVE_BOOT {TRIX_BOOT_FILE$}}
+ SOUND_MSS? SOUND_MPU401? SOUND_NM256?
+ SOUND_MAD16? {MAD16_OLDCARD}
+ SOUND_PAS? PAS_JOYSTICK
+ SOUND_PSS? {PSS_MIXER PSS_HAVE_BOOT {PSS_BOOT_FILE$}}
+ SOUND_SB? SOUND_AWE32_SYNTH? SOUND_WAVEFRONT?
+ SOUND_MAUI? {MAUI_HAVE_BOOT {MAUI_BOOT_FILE$}}
+ SOUND_YM3812? SOUND_OPL3SA1?
+ SOUND_YMFPCI? SOUND_YMFPCI_LEGACY
+ SOUND_OPL3SA2? SOUND_UART6850?
+ SOUND_AEDSP16? {
+ SC6600 {SC6600_JOY SC6600_CDROM% SC6600_CDROMBASE@}
+ AEDSP16_SBPRO AEDSP16_MSS AEDSP16_MPU401
+ SOUND_VIDC? SOUND_WAVEARTIST?
+ }
+ SOUND_VIA82CXXX? {MIDI_VIA82CXXX}
+ }
+ DMASOUND? {
+ DMASOUND_ATARI? DMASOUND_AWACS? DMASOUND_PAULA? DMASOUND_Q40?
+ }
+ SOUND_TVMIXER?
+
+unless SOUND_MSNDCLAS!=n or SOUND_MSNDPIN!=n suppress MSND_FIFOSIZE
+# Strengthen some dependencies already implied by brackets
+unless SOUND_MSNDCLAS==y suppress
+ msndclas_legend MSNDPIN_IRQ MSNDPIN_MEM MSNDPIN_IO
+unless SOUND_MSNDPIN==y suppress
+ msndpin_legend
+ MSNDPIN_IRQ MSNDPIN_MEM MSNDPIN_IO MSNDPIN_DIGITAL MSNDPIN_NONPNP
+unless SOUND_TRIX==y suppress TRIX_HAVE_BOOT
+unless SOUND_MAUI==y suppress MAUI_HAVE_BOOT
+unless SOUND_MPU401!=n suppress AEDSP16_MPU401
+
+unless SOUND_SB!=n suppress AEDSP16_MSS AEDSP16_SBPRO
+require (AEDSP16_SBPRO==n) or (AEDSP16_MSS==n) explanation aed_complaint
+
+derive MSNDCLAS_HAVE_BOOT from SOUND_MSNDCLAS==y
+derive MSNDPIN_HAVE_BOOT from SOUND_MSNDPIN==y
+
+# If INPUT_GAMEPORT is selected *and* one of the drivers that uses
+# gameport is built in then INPUT_GAMEPORT must also be built in.
+# Otherwise there is no restriction on INPUT_GAMEPORT.
+require (INPUT_GAMEPORT!=n) and (SOUND_ESSSOLO1==y or SOUND_ES1370==y
+ or SOUND_ES1371==y or SOUND_SONICVIBES==y)
+ implies INPUT_GAMEPORT==y
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/telephony/rules.cml linux/drivers/telephony/rules.cml
--- linux.2.4.14.pristine/drivers/telephony/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/telephony/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,7 @@
+# from drivers/telephony/Config.in
+
+unless PCMCIA!=n suppress PHONE_IXJ_PCMCIA
+
+menu telephony # Telephony Support
+ PHONE? {PHONE_IXJ? PHONE_IXJ_PCMCIA?}
+
diff -uNr linux.2.4.14.pristine/drivers/usb/rules.cml linux/drivers/usb/rules.cml
--- linux.2.4.14.pristine/drivers/usb/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/usb/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,83 @@
+# Universal Serial Bus
+
+unless EXPERIMENTAL suppress dependent
+ USB_SERIAL_WHITEHEAT USB_SERIAL_FTDI_SIO USB_SERIAL_DIGI_ACCELEPORT
+ USB_CATC USB_PEGASUS USB_RIO500 USB_DSBR USB_MDC800 USB_HIDDEV
+ USB_SERIAL_XIRCOM USB_STORAGE_SDDR09 USB_STORAGE_HP8200e
+ USB_STORAGE_DATAFAB USB_USBNET USB_BANDWIDTH USB_BLUETOOTH
+
+unless SCSI!=n suppress USB_MICROTEK
+# unless SOUND!=n suppress USB_AUDIO
+unless SCSI!=n suppress USB_STORAGE
+# unless VIDEO_DEV!=n suppress USB_IBMCAM
+# unless VIDEO_DEV!=n suppress USB_OV511
+unless PARPORT!=n suppress USB_USS720
+unless NET!=n suppress USB_CATC USB_PEGASUS
+# unless VIDEO_DEV!=n suppress USB_DSBR
+unless ETRAX_USB_HOST suppress
+ usb_etrax_legend ETRAX_USB_HOST_PORT1 ETRAX_USB_HOST_PORT2
+unless USB_UHCI==n suppress USB_UHCI_ALT
+#unless USB_UHCI_ALT==n suppress USB_UHCI
+
+# These constraints avoid forward-declaration problems
+require USB_HID!=n or USB_KBD!=n or USB_MOUSE!=n or USB_WACOM!=n
+ implies INPUT!=n
+require USB_IBMCAM!=n or USB_OV511!=n or USB_PWC!=n
+ or USB_SE401!=n or USB_DSBR!=n implies VIDEO_DEV!=n
+
+default INPUT_MOUSEDEV_SCREEN_X from 1024
+default INPUT_MOUSEDEV_SCREEN_Y from 768
+
+menu usb # USB? support
+ USB_DEBUG
+ usb_options_legend
+ USB_DEVICEFS USB_BANDWIDTH USB_LONG_TIMEOUT
+ usb_controllers_legend
+ USB_UHCI? USB_UHCI_ALT?
+ USB_OHCI?
+ usb_devices_legend
+ USB_PRINTER?
+ USB_AUDIO? USB_ACM?
+ USB_SERIAL? {usb_serial}
+ USB_STORAGE! {
+ USB_STORAGE_DEBUG USB_STORAGE_DATAFAB USB_STORAGE_FREECOM
+ USB_STORAGE_ISD200 USB_STORAGE_DPCM USB_STORAGE_HP8200e
+ USB_STORAGE_SDDR09 USB_STORAGE_JUMPSHOT
+ }
+ USB_BLUETOOTH?
+ usb_hid_legend
+ USB_HID? USB_HIDDEV USB_KBD? USB_MOUSE?
+ USB_WACOM?
+ usb_imaging_legend
+ USB_DC2XX? USB_MDC800? USB_SCANNER? USB_MICROTEK? USB_HPUSBSCSI?
+ usb_multimedia_legend
+ USB_IBMCAM? USB_OV511? USB_PWC? USB_SE401? USB_DSBR? USB_DABUSB?
+ usb_network_legend
+ USB_KAWETH? USB_CATC? USB_CDCETHER? USB_USBNET?
+ USB_PEGASUS?
+ usb_port_legend
+ USB_USS720?
+ usb_misc_legend
+ USB_RIO500?
+ usb_etrax_legend
+ ETRAX_USB_HOST_PORT1 ETRAX_USB_HOST_PORT2
+
+# FIXME: Video4Linux support is needed for USB Multimedia device support
+# require VIDEO_DEV >= (USB_IBMCAM | USB_OV511 | USB_PWC | USB_SE401 | USB_DSBR | USB_DABUSB)
+
+# FIXME: Networking support is needed for USB Networking device support
+# require NET >= (USB_CATC | USB_PEGASUS)
+
+require (USB_UHCI==n) or (USB_UHCI_ALT==n) or ((USB_UHCI==m) and (USB_UHCI_ALT==m))
+ explanation usb_complaint
+unless USB_HID!=y suppress USB_KBD USB_MOUSE
+require USB_MICROTEK <= SCSI
+# require USB_AUDIO <= SOUND
+require USB_STORAGE <= SCSI
+# require USB_IBMCAM <= VIDEO_DEV
+# require USB_OV511 <= VIDEO_DEV
+require USB_USS720 <= PARPORT
+require USB_PEGASUS <= NET
+# require USB_DSBR <= VIDEO_DEV
+
+# End
diff -uNr linux.2.4.14.pristine/drivers/usb/serial/rules.cml linux/drivers/usb/serial/rules.cml
--- linux.2.4.14.pristine/drivers/usb/serial/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/drivers/usb/serial/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,27 @@
+# USB serial evices
+
+unless EXPERIMENTAL suppress
+ USB_SERIAL_KEYSPAN USB_SERIAL_KEYSPAN_PDA USB_SERIAL_OMNINET
+ USB_SERIAL_EMPEG USB_SERIAL_MCT_U232 USB_SERIAL_PL2303
+ USB_SERIAL_CYBERJACK USB_SERIAL_IR
+menu usb_serial # USB serial devices
+ USB_SERIAL_GENERIC USB_SERIAL_VISOR? USB_SERIAL_IR?
+ USB_SERIAL_EDGEPORT? USB_SERIAL_DIGI_ACCELEPORT?
+ USB_SERIAL_EMPEG? USB_SERIAL_WHITEHEAT? USB_SERIAL_FTDI_SIO?
+ USB_SERIAL_KEYSPAN_PDA?
+ USB_SERIAL_KEYSPAN? {
+ USB_SERIAL_KEYSPAN_USA28
+ USB_SERIAL_KEYSPAN_USA28X
+ USB_SERIAL_KEYSPAN_USA28XA
+ USB_SERIAL_KEYSPAN_USA28XB
+ USB_SERIAL_KEYSPAN_USA19
+ USB_SERIAL_KEYSPAN_USA18X
+ USB_SERIAL_KEYSPAN_USA19W
+ USB_SERIAL_KEYSPAN_USA49W
+ }
+ USB_SERIAL_MCT_U232? USB_SERIAL_PL2303? USB_SERIAL_CYBERJACK?
+ USB_SERIAL_XIRCOM?
+ USB_SERIAL_OMNINET? USB_SERIAL_BELKIN?
+ USB_SERIAL_DEBUG
+
+# End
diff -uNr linux.2.4.14.pristine/fs/nls/rules.cml linux/fs/nls/rules.cml
--- linux.2.4.14.pristine/fs/nls/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/fs/nls/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,38 @@
+# National Language Support
+
+derive SMB_NLS from (SMB_FS != n)
+
+default NLS_DEFAULT from "iso8859-1"
+
+menu nls # National Language Support
+ NLS_DEFAULT$
+ NLS_CODEPAGE_437?
+ NLS_CODEPAGE_737?
+ NLS_CODEPAGE_775?
+ NLS_CODEPAGE_850?
+ NLS_CODEPAGE_852?
+ NLS_CODEPAGE_855?
+ NLS_CODEPAGE_857?
+ NLS_CODEPAGE_860?
+ NLS_CODEPAGE_861? NLS_CODEPAGE_862? NLS_CODEPAGE_863?
+ NLS_CODEPAGE_864? NLS_CODEPAGE_865? NLS_CODEPAGE_866?
+ NLS_CODEPAGE_869?
+ NLS_CODEPAGE_936?
+ NLS_CODEPAGE_950?
+ NLS_CODEPAGE_932?
+ NLS_CODEPAGE_949?
+ NLS_CODEPAGE_874?
+ NLS_ISO8859_8?
+ NLS_CODEPAGE_1251?
+ NLS_ISO8859_1? NLS_ISO8859_2? NLS_ISO8859_3? NLS_ISO8859_4?
+ NLS_ISO8859_5? NLS_ISO8859_6? NLS_ISO8859_7?
+ NLS_ISO8859_9?
+ NLS_ISO8859_13? NLS_ISO8859_14? NLS_ISO8859_15?
+ NLS_KOI8_R? NLS_KOI8_U?
+ NLS_UTF8?
+
+derive NLS from JOLIET==y or FAT_FS!=n or NTFS_FS!=n
+ or NCPFS_NLS==y or SMB_FS==y
+unless NLS!=n suppress nls
+
+# End
diff -uNr linux.2.4.14.pristine/fs/partitions/rules.cml linux/fs/partitions/rules.cml
--- linux.2.4.14.pristine/fs/partitions/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/fs/partitions/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,46 @@
+# File partition types
+
+unless EXPERIMENTAL suppress LDM_PARTITION
+
+# These defaults are what will take effect
+# if the user doesn't select EXPERT
+default OSF_PARTITION from ALPHA
+default MSDOS_PARTITION from ALPHA or ATARI or MAC or SGI_IP22 or SGI_IP27
+default AMIGA_PARTITION from AMIGA or AFFS_FS
+default MAC_PARTITION from MAC
+default ACORN_PARTITION from ARCH_ACORN
+default ACORN_PARTITION_ADFS from ARCH_ACORN
+#default ACORN_PARTITION_CUMANA from ARCH_ACORN
+default ACORN_PARTITION_ICS from ARCH_ACORN
+default ACORN_PARTITION_POWERTEC from ARCH_ACORN
+default ACORN_PARTITION_RISCIX from ARCH_ACORN
+default ATARI_PARTITION from ATARI
+default IBM_PARTITION from ARCH_S390
+default SGI_PARTITION from SGI_IP22 or SGI_IP27
+default ULTRIX_PARTITION from DECSTATION
+default SUN_PARTITION from SPARC
+
+menu parttypes # Partition types
+ ACORN_PARTITION {
+# ACORN_PARTITION_CUMANA
+ ACORN_PARTITION_ICS
+ ACORN_PARTITION_ADFS
+ ACORN_PARTITION_POWERTEC
+ ACORN_PARTITION_RISCIX
+ }
+ OSF_PARTITION
+ AMIGA_PARTITION
+ ATARI_PARTITION
+ IBM_PARTITION
+ MAC_PARTITION
+ MSDOS_PARTITION {
+ BSD_DISKLABEL MINIX_SUBPARTITION
+ SOLARIS_X86_PARTITION
+ UNIXWARE_DISKLABEL
+ }
+ LDM_PARTITION {LDM_DEBUG}
+ SGI_PARTITION
+ ULTRIX_PARTITION
+ SUN_PARTITION
+
+# End
diff -uNr linux.2.4.14.pristine/fs/rules.cml linux/fs/rules.cml
--- linux.2.4.14.pristine/fs/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/fs/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,77 @@
+# File system configuration
+
+unless EXPERIMENTAL suppress dependent
+ ADFS_FS HFS_FS BFS_FS EFS_FS
+ DEVFS_FS QNX4FS_FS AFFS_FS
+ NTFS_RW UDF_RW UFS_FS_WRITE INTERMEZZO_FS
+unless DANGEROUS suppress ADFS_FS_RW NTFS_RW QNX4FS_RW UDF_RW UFS_FS_WRITE
+
+unless INET suppress CODA_FS NFS_FS SMB_FS NFSD
+unless (IPX!=n or INET!=n) suppress NCP_FS
+require ROOT_NFS <= IP_PNP
+unless M68K suppress PROC_HARDWARE
+unless PPC suppress PROC_DEVICETREE
+unless SPARC suppress SUN_OPENPROMFS
+unless NET suppress INTERMEZZO_FS
+
+default JFFS_FS_VERBOSE from 0
+default JFFS2_FS_DEBUG from 0
+default SMB_NLS_REMOTE from "cp437"
+
+# CONFIG_JBD could be its own option (even modular), but until there are
+# other users than ext3, we will simply make it be the same as CONFIG_EXT3_FS
+derive JBD from EXT3_FS
+
+menu ufs # Linux file system options
+ EXT2_FS! EXT3_FS! {JBD_DEBUG}
+ QUOTA AUTOFS_FS! AUTOFS4_FS! ROMFS_FS!
+ REISERFS_FS! {REISERFS_CHECK REISERFS_PROC_INFO}
+ PROC_FS {PROC_HARDWARE PROC_DEVICETREE SUN_OPENPROMFS?}
+ DEVFS_FS {DEVFS_MOUNT DEVFS_DEBUG}
+ DEVPTS_FS
+ ADFS_FS! {ADFS_FS_RW}
+ JFFS_FS! {JFFS_FS_VERBOSE% JFFS_PROC_FS}
+ JFFS2_FS! {JFFS2_FS_DEBUG%}
+
+menu lfs # Legacy Unix file systems
+ UFS_FS! {UFS_FS_WRITE} SYSV_FS!
+ BFS_FS! MINIX_FS! EFS_FS! VXFS_FS!
+
+menu nfs # Network file systems
+ CODA_FS? INTERMEZZO_FS NFS_FS! {NFS_V3 ROOT_NFS} NFSD! {NFSD_V3}
+ SMB_FS? {SMB_NLS_DEFAULT {SMB_NLS_REMOTE$}}
+ NCP_FS? {ncpfs}
+
+menu mfs # Microsoft file systems
+ FAT_FS? {VFAT_FS? MSDOS_FS? {UMSDOS_FS?}} NTFS_FS? {NTFS_RW}
+
+menu ofs # Other foreign file systems
+ ISO9660_FS! {JOLIET ZISOFS}
+ UDF_FS? {UDF_RW} AFFS_FS? HFS_FS?
+ CRAMFS? TMPFS RAMFS? HPFS_FS? QNX4FS_FS? {QNX4FS_RW}
+
+derive ZISOFS_FS from ZISOFS & ISO9660_FS
+derive ZLIB_FS_INFLATE from CRAMFS | ZISOFS_FS
+
+menu ncpfs # NCP filesystem configuration
+ NCPFS_PACKET_SIGNING NCPFS_IOCTL_LOCKING
+ NCPFS_STRONG NCPFS_NFS_NS NCPFS_OS2_NS NCPFS_SMALLDOS
+ NCPFS_NLS NCPFS_EXTRAS
+
+unless EXPERT suppress parttypes
+
+menu fs # File Systems
+ ufs lfs nfs mfs ofs parttypes nls
+
+# Local rules
+require ROOT_NFS <= NFS_FS
+require DEVPTS_FS <= UNIX98_PTYS
+unless NET suppress nfs
+unless NCP_FS!=n suppress ncpfs
+
+# $ = if both y, y; if both m, m; if both n, n; otherwise n
+derive SUNRPC from NFS_FS $ NFSD
+derive LOCKD from NFS_FS $ NFSD
+derive LOCKD_V4 from NFSD_V3 or NFS_V3
+
+# End
diff -uNr linux.2.4.14.pristine/net/ax25/rules.cml linux/net/ax25/rules.cml
--- linux.2.4.14.pristine/net/ax25/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/net/ax25/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,15 @@
+# AX.25 configuration
+
+menu ax25 # AX.25 network device drivers
+ MKISS? CONFIG_6PACK? BPQETHER? DMASCC?
+ SOUNDMODEM? {soundmodem}
+ SCC? {SCC_DELAY SCC_TRXECHO}
+ BAYCOM_SER_FDX? BAYCOM_SER_HDX? BAYCOM_PAR? BAYCOM_EPP? YAM?
+
+menu soundmodem # Soundcard modem drivers
+ SOUNDMODEM_SBC SOUNDMODEM_WSS
+ SOUNDMODEM_AFSK1200 SOUNDMODEM_AFSK2400_7 SOUNDMODEM_AFSK2400_8
+ SOUNDMODEM_AFSK2666 SOUNDMODEM_HAPN4800 SOUNDMODEM_PSK4800
+ SOUNDMODEM_FSK9600
+
+# End
diff -uNr linux.2.4.14.pristine/net/bluetooth/rules.cml linux/net/bluetooth/rules.cml
--- linux.2.4.14.pristine/net/bluetooth/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/net/bluetooth/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,6 @@
+# Bluetooth configuration
+
+menu bluetooth
+ BLUEZ_L2CAP? bluetooth_drivers
+
+# end
diff -uNr linux.2.4.14.pristine/net/decnet/rules.cml linux/net/decnet/rules.cml
--- linux.2.4.14.pristine/net/decnet/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/net/decnet/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,9 @@
+# DECNET configuration
+
+unless EXPERIMENTAL suppress dependent DECNET_ROUTER
+
+unless NETFILTER suppress DECNET_ROUTE_FWMARK
+menu decnet # Decnet options
+ DECNET_SIOCGIFCONF DECNET_ROUTER {DECNET_ROUTE_FWMARK}
+
+# End
diff -uNr linux.2.4.14.pristine/net/ipv4/rules.cml linux/net/ipv4/rules.cml
--- linux.2.4.14.pristine/net/ipv4/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/net/ipv4/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,125 @@
+# IPV4 configuration
+
+# From net/ipv4/Config.in and net/ipv4/netfilter/Config.in
+
+private IP_ADVANCED_ROUTER
+
+# derive RTNETLINK from IP_ADVANCED_ROUTER
+# derive NETLINK from IP_ADVANCED_ROUTER
+
+menu ipv4 # IP Version 4 configuration
+ IP_MULTICAST
+ IP_ADVANCED_ROUTER {
+ IP_MULTIPLE_TABLES IP_ROUTE_FWMARK IP_ROUTE_NAT
+ IP_ROUTE_MULTIPATH IP_ROUTE_TOS IP_ROUTE_VERBOSE
+ IP_ROUTE_LARGE_TABLES
+ }
+ IP_PNP {IP_PNP_DHCP IP_PNP_BOOTP IP_PNP_RARP} #IP_PNP_ARP
+ NET_IPIP? NET_IPGRE? NET_IPGRE_BROADCAST
+ IP_MROUTE {IP_PIMSM_V1 IP_PIMSM_V2}
+ ARPD INET_ECN SYN_COOKIES
+ ipv4_netfilter
+
+unless EXPERIMENTAL and RTNETLINK suppress ARPD
+unless NETFILTER suppress IP_ROUTE_FWMARK
+unless IP_MULTICAST suppress IP_MROUTE
+unless IP_MULTICAST and NET_IPGRE!=n suppress NET_IPGRE_BROADCAST
+
+menu ipv4_netfilter # IP netfilter configuration
+ IP_NF_CONNTRACK? {IP_NF_FTP? IP_NF_IRC?} IP_NF_QUEUE?
+ IP_NF_IPTABLES? {
+ IP_NF_MATCH_LIMIT? IP_NF_MATCH_MAC? IP_NF_MATCH_MARK?
+ IP_NF_MATCH_MULTIPORT? IP_NF_MATCH_TOS? IP_NF_MATCH_LENGTH?
+ IP_NF_MATCH_TTL? IP_NF_MATCH_TCPMSS? IP_NF_MATCH_STATE?
+ IP_NF_MATCH_UNCLEAN? IP_NF_MATCH_OWNER?
+ IP_NF_FILTER? {IP_NF_TARGET_REJECT? IP_NF_TARGET_MIRROR?}
+ IP_NF_NAT? {
+ IP_NF_TARGET_MASQUERADE? IP_NF_TARGET_REDIRECT?
+ IP_NF_NAT_SNMP_BASIC?
+ }
+ IP_NF_MANGLE? {
+ IP_NF_TARGET_TOS? IP_NF_TARGET_MARK?
+ IP_NF_TARGET_LOG? IP_NF_TARGET_TCPMSS?
+ }
+ }
+ IP_NF_COMPAT_IPCHAINS? {IP_NF_COMPAT_IPFWADM?}
+
+derive IP_NF_NAT_IRC from IP_NF_NAT & IP_NF_IRC
+
+unless NETFILTER suppress ipv4_netfilter
+unless EXPERIMENTAL suppress dependent
+ IP_NF_MATCH_UNCLEAN IP_NF_MATCH_OWNER IP_NF_TARGET_MIRROR
+unless EXPERIMENTAL and NETLINK suppress IP_NF_QUEUE
+unless IP_NF_CONNTRACK!=n suppress IP_NF_MATCH_STATE IP_NF_NAT
+
+# Harald Welte writes:
+#
+# Basically there are the following dependencies:
+#
+# 1. you compile connection tracking (IP_NF_CONNTRACK) as module
+# a) iptables (IP_NF_IPTABLES) compiled as module
+# - you can compile ANY or BOTH of ipchains
+# (IP_NF_COMPAT_IPCHAINS), ipfwadm (IP_NF_COMPAT_IPFWADM) as
+# module ONLY (not static)
+
+require IP_NF_CONNTRACK==m and IP_NF_IPTABLES==m
+ implies IP_NF_COMPAT_IPCHAINS <= m and IP_NF_COMPAT_IPFWADM <= m
+
+# b) iptables compiled static
+# - NO possibility of compiling ipchains or ipfwadm at all,
+# either as module or static
+
+require IP_NF_CONNTRACK==m and IP_NF_IPTABLES==y
+ implies IP_NF_COMPAT_IPCHAINS == n and IP_NF_COMPAT_IPFWADM == n
+
+# c) iptables NOT compiled at all
+# - you can compile ONE OF ipchains, ipfwadm statically
+# - you can compile BOTH of them as modules
+
+require IP_NF_CONNTRACK==m and IP_NF_IPTABLES==n
+ implies IP_NF_COMPAT_IPCHAINS != y or IP_NF_COMPAT_IPFWADM != y
+
+# 2. you compile connection tracking statically into the kernel
+# - NO possibility of compiling ipchains or ipfwadm at all,
+# either module or static
+# - iptables can be compiled modular or static
+
+require IP_NF_CONNTRACK==y
+ implies IP_NF_COMPAT_IPCHAINS == n and IP_NF_COMPAT_IPFWADM == n
+
+# This is a direct translation of the CML1 constraint
+require (IP_NF_COMPAT_IPCHAINS != y) or (IP_NF_CONNTRACK != y)
+ explanation ipchains_complaint
+
+#
+# there's another interesting dependency, I'll describe the problem first:
+#
+# Netfilter has modules called connection tracking and nat helpers. For
+# most protocols, they will appear in pairs (as opposed to only one module
+# called ip_masq_XXX in 2.2.x). They are performing independent functionality,
+# and you will never need the NAT helper on a non-nat box.
+#
+# 1. connection tracking (IP_NF_CONNTRACK) is on (M or Y)
+# Full NAT (IP_NF_NAT) off
+# - if IP_NF_FTP is OFF, none of ip_conntrack_ftp.c/ip_nat_ftp.c
+# are compiled
+# - if IP_NF_FTP is ON (M or Y), ip_conntrcak_ftp.c is compiled
+# (as module or statically, as apropriate)
+# 2. connection tracking is on (M or Y), Full NAT is on (M or Y)
+# - if IP_NF_FTP is OFF, none of ip_conntrack_ftp.c/ip_nat_ftp.c
+# are compiled
+# - if IP_NF_FTP is ON (M or Y), both ip_conntrack_ftp.c AND
+# ip_nat_ftp.c are compiled (module or static, as user wishes)
+#
+# I'm asking myself if we now should be proud of having the most complicated
+# dependencies of the whole kernel ;)
+
+# Urrgghhh..is this expressed by the following constraint from CMl1?
+# If they want FTP, set to $CONFIG_IP_NF_NAT (m or y),
+# or $CONFIG_IP_NF_FTP (m or y), whichever is weaker. Argh.
+derive IP_NF_NAT_FTP from IP_NF_FTP & IP_NF_NAT
+
+derive IP_NF_NAT_NEEDED from
+ (IP_NF_NAT!=n) or (IP_NF_COMPAT_IPCHAINS!=n) or (IP_NF_COMPAT_IPFWADM!=n)
+
+# End
diff -uNr linux.2.4.14.pristine/net/ipv6/rules.cml linux/net/ipv6/rules.cml
--- linux.2.4.14.pristine/net/ipv6/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/net/ipv6/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,25 @@
+# IPv6 configuration
+
+unless EXPERIMENTAL suppress IP6_NF_MATCH_OWNER
+
+unless IPV6!=n and NETLINK and RTNETLINK suppress IPV6_NETLINK
+unless NETFILTER and IPV6!=n suppress ipv6_netfilter
+
+menu ipv6 # IPv6 options
+ IPV6_NETLINK # RT6_POLICY IPV6_FIREWALL
+ ipv6_netfilter
+
+menu ipv6_netfilter # IP netfilter configuration
+ #IP6_NF_CONNTRACK? {IP6_NF_FTP?} IP6_NF_QUEUE?
+ IP6_NF_IPTABLES? {
+ IP6_NF_MATCH_LIMIT? IP6_NF_MATCH_MAC? IP6_NF_MATCH_MULTIPORT?
+ IP6_NF_MATCH_MARK? IP6_NF_MATCH_OWNER?
+ IP6_NF_MATCH_TOS? #IP6_NF_MATCH_STATE?
+ # IP6_NF_MATCH_UNCLEAN?
+ IP6_NF_FILTER? # {IP6_NF_TARGET_REJECT? IP6_NF_TARGET_MIRROR?}
+ # IP6_NF_NAT? {IP6_NF_TARGET_MASQUERADE? IP6_NF_TARGET_REDIRECT?}
+ IP6_NF_MANGLE? {IP6_NF_TARGET_MARK?}
+ IP6_NF_TARGET_LOG?
+ }
+
+# End
diff -uNr linux.2.4.14.pristine/net/irda/rules.cml linux/net/irda/rules.cml
--- linux.2.4.14.pristine/net/irda/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/net/irda/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,16 @@
+# IRDA configuration
+
+# From net/irda/Config.in, net/irda/ircomm/Config.in,
+# net/irda/irlan/Config.in, net/irda/compressors/Config.in
+
+#unless NETDEVICES!=n suppress IRNET
+unless IRDA!=n suppress irda
+
+menu irda # IrDA (infrared) support
+ IRLAN? IRCOMM? IRDA_ULTRA
+ IRDA_OPTIONS {IRDA_CACHE_LAST_LSAP IRDA_FAST_RR IRDA_DEBUG}
+ #IRDA_COMPRESSION {IRDA_DEFLATE?}
+ IRNET?
+ irda_drivers
+
+# End
diff -uNr linux.2.4.14.pristine/net/rules.cml linux/net/rules.cml
--- linux.2.4.14.pristine/net/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/net/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,51 @@
+# Networking configuration
+
+# From net/Config.h, net/khttpd/Config.in, net/ipx/Config.in
+
+unless EXPERIMENTAL suppress dependent
+ IPX IPV6 KHTTPD ATM IPX X25 LAPB LLC NET_DIVERT WAN_ROUTER
+ NET_FASTROUTE NET_HW_FLOWCONTROL # NET_PROFILE
+ PPP_MULTILINK VLAN_8021Q
+
+unless ARCH_S390==n suppress PLIP SLIP PPP IRDA
+unless PARPORT!=n suppress dependent PLIP
+#unless LLC suppress NETBEUI
+unless ARCH_ACORN suppress ECONET
+unless INET suppress ATM_MPOA ECONET KHTTPD
+
+menu net # Networking options
+ NETLINK {RTNETLINK NETLINK_DEV?}
+ NETFILTER {NETFILTER_DEBUG}
+ INET {ipv4}
+ PPP? {ppp_options}
+ SLIP? {slip_options}
+ PLIP?
+ PACKET? {PACKET_MMAP}
+ IPV6? {ipv6}
+ FILTER UNIX? KHTTPD?
+ ATM {ATM_CLIP {ATM_CLIP_NO_ICMP} ATM_LANE? {ATM_MPOA?}}
+ IPX? {IPX_INTERN} # SPX?
+ DECNET? {decnet}
+ X25? LAPB? BRIDGE? LLC NET_DIVERT
+ ECONET? {ECONET_AUNUDP ECONET_NATIVE}
+ WAN_ROUTER? NET_FASTROUTE NET_HW_FLOWCONTROL VLAN_8021Q?
+ NET_SCHED {netsched} # NET_PROFILE
+ IRDA? {irda}
+ BLUEZ? {bluetooth}
+ NETDEVICES {net_drivers atm}
+
+# PPP
+
+unless FILTER suppress dependent PPP_FILTER
+
+menu ppp_options # PPP options
+ PPP_MULTILINK PPP_FILTER
+ PPP_ASYNC? PPP_SYNC_TTY? PPP_DEFLATE? PPP_BSDCOMP?
+ PPPOE?
+
+# SLIP
+
+menu slip_options # SLIP? options
+ SLIP_COMPRESSED SLIP_SMART SLIP_MODE_SLIP6
+
+# End
diff -uNr linux.2.4.14.pristine/net/sched/rules.cml linux/net/sched/rules.cml
--- linux.2.4.14.pristine/net/sched/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/net/sched/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,26 @@
+# IP scheduling configuration
+
+private NET_QOS
+
+unless ATM suppress NET_SCH_ATM
+unless NETFILTER suppress NET_SCH_INGRESS
+
+menu netsched # Traffic control configuration
+ NET_SCH_CBQ? NET_SCH_CSZ? # NET_SCH_HPFQ? NET_SCH_HFCS?
+ NET_SCH_ATM NET_SCH_PRIO? NET_SCH_RED? NET_SCH_SFQ?
+ NET_SCH_TEQL? NET_SCH_TBF? NET_SCH_GRED?
+ NET_SCH_DSMARK? NET_SCH_INGRESS?
+ NET_QOS {
+ NET_ESTIMATOR
+ NET_CLS {
+ NET_CLS_TCINDEX? NET_CLS_ROUTE4? NET_CLS_FW?
+ NET_CLS_U32? NET_CLS_RSVP? NET_CLS_RSVP6? NET_CLS_POLICE
+ }
+ }
+unless NET_QOS suppress NET_CLS_RSVP NET_CLS_RSVP6
+
+require NET_SCHED implies NETLINK==y and RTNETLINK==y
+
+derive NET_CLS_ROUTE from NET_CLS_ROUTE4!=n
+
+# End
diff -uNr linux.2.4.14.pristine/rules.cml linux/rules.cml
--- linux.2.4.14.pristine/rules.cml Wed Dec 31 19:00:00 1969
+++ linux/rules.cml Wed Nov 14 17:01:24 2001
@@ -0,0 +1,470 @@
+# Linux kernel configuration
+#
+prefix "CONFIG_" # Stripped at read time, prepended at save time
+
+# Configuration symbols and help texts. In 2.5 these will
+# probably be distributed back out to the directories.
+source "symbols.cml"
+
+start main # Start with the menu named 'main'
+banner whoami # Use the `welcome' text to ID the configurator
+condition trits on MODULES # Only recognize trits when MODULES is on
+condition nohelp on EXPERT # Only make undocumented symbols visible when this is on
+warndepend EXPERIMENTAL # Append (EXPERIMENTAL) to dependent queries
+warndepend DANGEROUS
+#warndepend OBSOLETE
+
+source "fs/rules.cml"
+source "fs/nls/rules.cml"
+source "fs/partitions/rules.cml"
+source "net/ax25/rules.cml"
+source "drivers/net/hamradio/rules.cml"
+source "net/ipv4/rules.cml"
+source "net/rules.cml"
+source "net/decnet/rules.cml"
+source "net/ipv6/rules.cml"
+source "net/sched/rules.cml"
+source "net/irda/rules.cml"
+source "net/bluetooth/rules.cml"
+
+source "drivers/net/irda/rules.cml"
+source "drivers/net/rules.cml"
+source "drivers/net/fc/rules.cml"
+source "drivers/net/wan/rules.cml"
+source "drivers/net/tokenring/rules.cml"
+source "drivers/net/arcnet/rules.cml"
+source "drivers/net/pcmcia/rules.cml"
+source "drivers/net/appletalk/rules.cml"
+source "drivers/mtd/rules.cml"
+source "drivers/block/rules.cml"
+source "drivers/block/paride/rules.cml"
+source "drivers/char/rules.cml"
+source "drivers/hotplug/rules.cml"
+source "drivers/i2c/rules.cml"
+source "drivers/char/joystick/rules.cml"
+source "drivers/char/ftape/rules.cml"
+source "drivers/media/radio/rules.cml"
+source "drivers/media/video/rules.cml"
+source "drivers/char/pcmcia/rules.cml"
+source "drivers/scsi/rules.cml"
+source "drivers/message/fusion/rules.cml"
+source "drivers/sound/rules.cml"
+source "drivers/cdrom/rules.cml"
+source "drivers/isdn/rules.cml"
+source "drivers/sbus/rules.cml"
+source "drivers/fc4/rules.cml"
+source "drivers/usb/rules.cml"
+source "drivers/usb/serial/rules.cml"
+source "drivers/input/rules.cml"
+source "drivers/atm/rules.cml"
+source "drivers/parport/rules.cml"
+source "drivers/pcmcia/rules.cml"
+source "drivers/net/wireless/rules.cml"
+source "drivers/telephony/rules.cml"
+source "drivers/ieee1394/rules.cml"
+source "drivers/acpi/rules.cml"
+source "drivers/macintosh/rules.cml"
+source "drivers/bluetooth/rules.cml"
+
+source "arch/i386/rules.cml"
+source "arch/alpha/rules.cml"
+source "arch/sparc/rules.cml"
+source "arch/mips/rules.cml"
+source "arch/ppc/rules.cml"
+source "arch/m68k/rules.cml"
+source "arch/arm/rules.cml"
+source "arch/sh/rules.cml"
+source "arch/ia64/rules.cml"
+source "arch/parisc/rules.cml"
+source "arch/s390/rules.cml"
+source "arch/cris/rules.cml"
+
+default NVRAM from ATARI
+unless X86 or ATARI suppress NVRAM
+
+default CMDLINE from "console=ttyS0,9600 console=tty0 root=/dev/sda2"
+
+unless ARCH_NETWINDER suppress DS1620 NWBUTTON NWBUTTON_REBOOT NWFLASH
+unless ALL_PPC
+ or (ARCH_EBSA110 or ARCH_SA1100 or ARCH_PERSONAL_SERVER or ARCH_CATS)
+ or MIPS64 or ARCH_P720T or ARCH_CDB89712 or ARCH_CAMELOT or ARCH_ANAKIN
+ suppress CMDLINE
+unless (MIPS and (DECSTATION or DDB5074)) or SUPERH suppress CPU_LITTLE_ENDIAN
+unless MIPS suppress SGI_DS1286 # MIPS_FPU_EMULATOR
+
+unless M386 or M486 or CONFIG_4xx or CONFIG_8xx suppress MATH_EMULATION
+unless S390X suppress S390_SUPPORT
+unless SPARC64 and PCI suppress ENVCTRL DISPLAY7SEG
+unless SPARC64 and SBUS suppress OBP_FLASH
+unless EXPERIMENTAL and (ALPHA or IA64 or S390) suppress MATHEMU
+unless ARM suppress FPE_NWFPE FPE_FASTFPE
+unless APUS or ATARI or AMIGA or HP300 or SH_GENERIC or SH_STB1_OVERDRIVE or SH_SOLUTION_ENGINE suppress HEARTBEAT
+unless ARCH_SA1100 or ARCH_EDB7211 or MIPS64 suppress DISCONTIGMEM
+unless X86 and PCI suppress INTEL_RNG
+unless ALL_PPC suppress PREP_RESIDUAL PPC_RTAS
+unless PPC suppress PPC_RTAS GEN_RTC
+unless CONFIG_4xx and APUS suppress PPC_RTC
+unless ARCH_S390==n and APUS == n suppress RTC
+unless MIPS or IA64_SGI_SN1 suppress NUMA
+unless MIPS suppress MIPS_FPU_EMULATOR
+
+require X86 and M386==n and M486==n implies MATH_EMULATION==n
+require ARCH_S390 implies RTC==n
+require SPARC64 and PCI==y implies RTC==y
+
+menu archihacks # Architecture-specific hardware hacks
+ MATH_EMULATION
+ MATHEMU?
+ FPE_NWFPE? FPE_FASTFPE?
+ MIPS_FPU_EMULATOR
+ S390_SUPPORT
+ HEARTBEAT
+ PPC_RTAS PREP_RESIDUAL
+ CMDLINE$
+ CPU_LITTLE_ENDIAN
+ DISCONTIGMEM {NUMA}
+ DS1620?
+ NWBUTTON? {NWBUTTON_REBOOT} NWFLASH?
+ NVRAM?
+ INTEL_RNG?
+ RTC? PPC_RTC? GEN_RTC
+ SGI_DS1286
+ H8
+ ENVCTRL? DISPLAY7SEG?
+ OBP_FLASH?
+
+# This was a query symbol with the text "EFI Real Time Clock Services" in CML1
+derive EFI_RTC from RTC!=n and EFI_VARS!=n
+
+default MATHEMU from EXPERIMENTAL and (ALPHA or IA64)
+
+# This is MIPS32 cruft from CML1
+default CPU_LITTLE_ENDIAN from DECSTATION or DDB5074 or DDB5477 or NINO
+derive BINFMT_IRIX from (CPU_LITTLE_ENDIAN and MIPS32)
+#derive FORWARD_KEYBOARD from CPU_LITTLE_ENDIAN
+
+# Choice of architecture and cross-architecture dependencies
+
+private SPARC
+
+choices arch # Processor architecture
+ X86
+ ALPHA
+ SPARC32
+ SPARC64
+ MIPS32
+ MIPS64
+ PPC
+ M68K
+ ARM
+ SUPERH
+ IA64
+ PARISC
+ S390
+ S390X
+ CRIS
+ default X86
+
+derive SPARC from SPARC32 or SPARC64
+derive MIPS from MIPS32 or MIPS64
+derive PPC32 from PPC
+derive UID16 from X86 or ALPHA or SPARC32 or PPC or M68K or SUPERH or S390
+derive BINFMT_ELF32 from SPARC32_COMPAT and MIPS32_COMPAT!=n
+derive ARCH_S390 from S390 or S390X
+derive ARCH_S390X from S390X
+derive RWSEM_GENERIC_SPINLOCK from CRIS or M68K or IA64 or MIPS
+ or PARISC or PPC or ARCH_S390 or SUPERH or SPARC32
+derive CONFIG_RWSEM_XCHGADD_ALGORITHM from (X86 and M386==n)
+ or ALPHA or SPARC64 or ARM
+
+# System bus configuration
+
+#unless OBSOLETE suppress CD_NO_IDESCSI MCA
+unless X86 suppress MCA EISA
+unless MIPS32 suppress TC
+unless (PCI and (X86 or SUPERH)) suppress pci_access
+unless (ISA or PCI) suppress IDE
+unless PCI suppress USB HOTPLUG_PCI
+unless (X86 or ALPHA or MIPS32 or PPC) suppress usb
+unless (X86 and PCI and EXPERIMENTAL) or PPC or ARM or SPARC suppress IEEE1394
+unless (M68K or ALL_PPC) suppress MACINTOSH_DRIVERS
+unless SPARC suppress FC4
+unless ARCH_S390==n suppress buses
+
+private CD_NO_IDESCSI
+
+menu buses # Select system buses and controller types
+ ISA {EISA}
+ PCI {PCI_NAMES pci_access}
+ PNP? {ISAPNP?}
+ MCA
+ TC
+ PARPORT?
+ HOTPLUG {PCMCIA? pcmcia HOTPLUG_PCI? {hotplug_pci}}
+ IDE?
+ SCSI!
+ CD_NO_IDESCSI
+ USB!
+ IEEE1394?
+ MACINTOSH_DRIVERS
+ I2O!
+ MTD!
+ FC4!
+ WATCHDOG
+
+unless ISA suppress dependent ISAPNP
+
+choices pci_access # PCI access mode
+ PCI_GOBIOS PCI_GODIRECT PCI_GOANY
+ default PCI_GOANY
+
+unless (TC or (MIPS32==n)) suppress PARPORT
+derive PCI_BIOS from PCI_GOBIOS or PCI_GOANY
+derive PCI_DIRECT from PCI_GODIRECT or PCI_GOANY
+
+# Feature selections independent across all ports
+
+unless EXPERIMENTAL or ARCH_S390 suppress kcore
+
+default BINFMT_ELF from y
+
+unless PPC and SMP suppress IRQ_ALL_CPUS
+
+menu generic
+ MODULES? {KMOD} #{MODVERSIONS KMOD}
+ NET SYSVIPC BSD_PROCESS_ACCT SYSCTL
+ kcore
+ BINFMT_SOM? BINFMT_AOUT? BINFMT_ELF? BINFMT_MISC?
+ SMP {IRQ_ALL_CPUS}
+
+require SMP implies (X86 or PPC or ALPHA_SABLE or ALPHA_RAWHIDE
+ or ALPHA_DP264 or ALPHA_WILDFIRE or ALPHA_TITAN
+ or ALPHA_GENERIC or SPARC32 or MIPS64 or ARCH_S390)
+
+unless PARISC suppress BINFMT_SOM
+unless X86 or ALPHA or SPARC suppress kcore BINFMT_AOUT BINFMT_ELF
+unless X86 or ALPHA or SPARC or ARCH_S390 suppress BINFMT_ELF
+unless (ARM==n) or (ARCH_ACORN or PCI) suppress SOUND
+unless ARCH_S390==n suppress SOUND
+require BINFMT_AOUT!=n or BINFMT_ELF!=n
+
+choices kcore
+ KCORE_ELF KCORE_AOUT
+ default KCORE_ELF
+
+# Policy options
+
+private EXPERT WIZARD DANGEROUS #TUNING
+
+menu policy # Build policy options
+ EXPERIMENTAL {EXPERT {WIZARD {DANGEROUS}} #TUNING
+
+# Application support
+
+unless ISA or PCI suppress telephony
+
+private HAMRADIO
+
+menu applications
+ SOUND? {sound}
+ telephony
+ HAMRADIO {hamradio}
+
+# Kernel hacking
+
+#default KDB_STBSIZE from 10000
+#default PROFILE_SHIFT from 2
+
+unless SERIAL!=n or (ARCH_S390 and CTC==y) suppress REMOTE_DEBUG
+
+menu kernelhacking # Kernel-hacking options
+ KGDB
+ XMON
+ REMOTE_DEBUG {GDB_CONSOLE} MIPS_UNCACHED
+ LL_DEBUG
+ NO_FRAME_POINTER
+ DEBUG_KERNEL {
+ MAGIC_SYSRQ
+ DEBUG_ERRORS DEBUG_USER DEBUG_INFO DEBUG_SLAB DEBUG_SPINLOCK
+ DEBUG_HIGHMEM DEBUG_IOVIRT DEBUG_BUGVERBOSE
+ }
+ NO_PGT_CACHE
+ DEBUG_LL
+ DEBUG_DC21285_PORT DEBUG_CLPS711X_UART2
+ DEBUG_KERNEL_WITH_GDB_STUB
+ IA64_EARLY_PRINTK IA64_DEBUG_CMPXCHG IA64_DEBUG_IRQ IA64_PRINT_HAZARDS DISABLE_VHPT
+ #KDB {KDB_FRAMEPTR KDB_STBSIZE%}
+ IA32_SUPPORT?
+ #PROFILE {PROFILE_SHIFT%}
+
+unless CRIS or PPC suppress KGDB
+unless PPC suppress XMON
+unless MIPS suppress REMOTE_DEBUG LL_DEBUG MIPS_UNCACHED
+unless SMP==n suppress MIPS_UNCACHED
+unless ARM suppress NO_FRAME_POINTER DEBUG_ERRORS DEBUG_USER DEBUG_INFO
+unless ARM and CPU_26 suppress NO_PGT_CACHE
+# These options are only for real kernel hackers
+# who want to get their hands dirty.
+unless EXPERIMENTAL and ARM suppress DEBUG_LL
+unless DEBUG_LL and FOOTBRIDGE suppress DEBUG_DC21285_PORT
+unless DEBUG_LL and ARCH_CLPS711X suppress DEBUG_CLPS711X_UART2
+unless (SUPERH and SH_STANDARD_BIOS) suppress DEBUG_KERNEL_WITH_GDB_STUB
+unless X86 suppress DEBUG_HIGHMEM DEBUG_IOVIRT DEBUG_BUGVERBOSE
+unless IA64 suppress
+ IA64_EARLY_PRINTK IA64_DEBUG_CMPXCHG IA64_DEBUG_IRQ IA64_PRINT_HAZARDS
+ IA32_SUPPORT DISABLE_VHPT # KDB
+
+# Tie architecture-dependent derivations together here
+
+derive HAVE_DEC_LOCK from (SMP and (ALPHA or X86_CMPXCHG)) or SPARC
+derive HIGHMEM from HIGHMEM64G or SPARC
+derive MAC_HID from (ALL_PPC and INPUT!=n) or (MAC and INPUT_ADBHID)
+derive PC_KEYB from ARM_PC_KEYB or MIPS_PC_KEYB
+
+# These are either fossils or things 2.4.14 has not filled in yet.
+#derive GENERIC_BUST_SPINLOCK from n
+#derive GENERIC_ISA_DMA from n
+
+# Main menu
+
+unless EXPERIMENTAL suppress dependent MDA_CONSOLE video
+
+menu main # Configure a Linux kernel
+ arch
+ policy
+ generic
+ # Per-processor options (selected in arch)
+ x86
+ alpha
+ sparc
+ mips
+ ppc
+ m68k
+ arm
+ superh
+ ia64
+ parisc
+ s390
+ cris
+ # Buses and controller types
+ buses
+ parport
+ #pcmcia
+ scsi
+ nativecdrom
+ fc4
+ usb
+ ieee1394
+ macintosh_drivers
+ i2o
+ # Device classes
+ pm
+ archihacks
+ mtd
+ block_devices
+ net
+ applications
+ cdevs
+ fs
+ watchdog
+ kernelhacking
+
+default HEARTBEAT from HP300 # Has a dedicated heartbeat LED
+
+# Some of these may be more restrictive than needed; they are a straight
+# translation of the CML1 code (except SGI turns into MIPS)
+unless X86 suppress x86
+unless ALPHA suppress alpha
+unless SPARC suppress sparc
+unless MIPS suppress mips
+unless PPC suppress ppc
+unless M68K suppress m68k
+unless ARM suppress arm
+unless SUPERH suppress superh
+unless IA64 suppress ia64
+unless PARISC suppress parisc
+unless ARCH_S390 suppress s390
+unless CRIS suppress cris
+unless ARCH_S390==n suppress parport
+# Always query block_devices
+unless SCSI!=n suppress dependent scsi
+unless CD_NO_IDESCSI suppress dependent nativecdrom
+unless I2O!=n suppress dependent i2o
+unless X86 or IA64 or (ARM and EXPERIMENTAL) suppress pm
+unless MTD!=n suppress mtd
+unless ARCH_S390==n suppress applications
+unless IEEE1394!=n suppress dependent ieee1394
+unless X86 or ARM or (MIPS and DECSTATION==n and SGI_IP22==n) suppress i2o
+unless (MIPS==n) and (DECSTATION==n) and (BAGET_MIPS==n) suppress HAMRADIO
+unless X86 or ALPHA or (MIPS and DECSTATION and BAGET_MIPS) or PPC suppress
+ nativecdrom
+unless FC4!=n suppress dependent fc4
+unless USB!=n suppress dependent usb
+unless WATCHDOG suppress dependent watchdog
+# Always query for fs
+unless WIZARD suppress kernelhacking
+
+# These symbols are here only to reduce the size of the CML1 diff report.
+#
+# Support for the Visual Workstation has been deprecated by the author;
+# this is some debris from that.
+derive FB_SGIVW from n
+derive SOUND_VWSND from n
+derive X86_VISWS_APIC from n
+derive BUS_I2C from n
+# These are symbols that CML1 used internally but which didn't affect C code.
+# When CML2 cutover happens, they should be nuked unless they've actually
+# grown a reference in C code or a makefile.
+derive CMDLINE_BOOL from n
+derive CPU_ADVANCED from EXPERT
+derive DRM_AGP from DRM and AGP!=n
+derive FB_PCI from FB and PCI
+derive NET_ISA from NET_ETHERNET and ISA
+derive NET_PCI from NET_ETHERNET and (EISA or PCI)
+derive PARTITION_ADVANCED from EXPERT
+# MODVERSIONS will not be supported in kbuild 2.5 until KAO releases a version
+# of modutils that handles the new symbol format.
+derive MODVERSIONS from n
+
+# Icon for the linux-kernel rulesystem (base64 encoding of a penguin image)
+icon
+R0lGODlhMQAVAPcEAAEBAgICAwEAAAAABAICBAQDBAQEBAYGBAUFBwUFAQcHCAAADQcICAkJBA0N
+BAoKCQwMDQICFg4OEA8PGhMTBBAQBBUVBBcXBBgXBBsbBRkZBB4eAx4eBBERERISEhMTFBcTExYW
+FhcXGRQVGBQVHRcYGhkaFhsbGxwcHRERJxwbIh8fIhsbLB0fLh4gIiMjBSEhBCcnAiUlBCUlDioq
+BC0tBC4uAiQhGyIiHC4nHC8rHToqBTAmFjExBDU1BDc3BDk5BDo6BD88AD4+BDg4HSEhIScnJyYm
+JCYnKSkqJygpKyssKiwsLSkqMTApIDAuKzAwJTMyLjg1LTExNzY2NFs/AEg4F0FBBERDBEVFBEZG
+BkJCAkpKBExMBE5OCUtLEFdBDFBAGFBPE1NTBFFRBFRUBFJSDVlWAlpaBV1dBV1bBVxbCVRUHE9P
+IVVNKVdXNWlNAmRcAWZdDW9UGG1YFHFSAHZdAWJiBGdnBGtgBWtrBG5qBW1tBG9vFHFhF3JyBXNz
+Anp6BHx8BHR2HXZoBmNjJWRkInZkNHFxI39xNlJTWXd3SXt8Q39/foZkBoxuA4hwA5JrBZB0Bpx6
+B4KCBIaGBIyFAoqKBI+PBIiIAImJCoaGFY2HF4mJFpGRBJaXBJGRApyTAZubBJ2dA5SUEIKCLqOj
+BKWlBKmpBKyrBK6uBKyjC6ioFLauBrGxBLe3BLW1ALq6BL2+BLy5A7u7Jb+8OICAY4qKfK6uTcHB
+BMXGA8bFBMTFDMrKBM3NBM7OAMrJDcbGEcnIGc/SAtfLBNLSBNLUA9bWBNTUAN7eBNnaD9XWENrW
+ENvbENjVJd3dLN/gJOPiA+PjBOHhBOXlBObmCOrqBO3tBO7uBunpA/DwBfb2Avf3BPX1BPv6Afv7
+Bfj4BP//AP//A/39BP//BP//BufnN8jJTdjYQ9jYRcfHVpGRkJ+flJeXopSUqJiYpZycq56gkaqq
+gKGhmqOjpaSkpKGhqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAKAPcAIf4OTWFkZSB3
+aXRoIEdJTVAALAAAAAAxABUAAAj+AAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC
+BAgQIEAgQIAAAQIQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ
+IEAggIEPJzoYCECAAAECBAgQIECAAAECBAgQIECAAAECBAwQIECAAAECBAgQIECAAAECBAgQIEAg
+gIIiR4ocKWKAAAECBAgQIECAAAECBAgQIECAAAECBAgQaGCAAAECBAgQIECAAAECBAgQIECAQIAT
+IwIEeIACRQACBAgQIECAAAECBDjA0MABhgECBAwQyGJtFAECBAgQIECAAAECBAj+ECBAgAABAkcg
+BHjQgcARBQEIECBAgAABAgQImLIG7losgBYIEDBAoBI5aRwIECBAgAABAgQIECBAgAABAgQMHFHS
+ZIoiBkcgBCBAgAABAgQIECBgQBa5WGSuECBggECFT5iyEDBAgIABAwQIECBgwIABAgQIEEhyg44f
+NxCQhAhgwAABAgQIECBAgIAvcqdqOCBAgAABAjS4VCBAoEEFAgQqNCBAgAABAgQMEAjQgscjSXMe
+QFERgAABAgQIECBAgICFa+QuOSBggACWU72SWSAQ6JS1QDRyadtVgQCQSqhyWQjwgJWyRIdqLdNW
+aAEHWbswECBAwAABIOS48TH+QMAAgR+uyFm70iAQNXLFUKECR44PASCuyEn7QYAIuG2M4p1rJi7Y
+Cl3UyKEhQICAAQJ3yEkjQ4AAAQME0pArloUAQAfFyL0CAqQYuU8NCOgh52tLBEPkkCGy16gUuWy8
+NJE5pccAAQIGCHgi1wsIAQMEDBCgRO4VDQIctJH706PBMXKBHBDARM5VjBSbxM1aRG/eu2figImx
+oeEHAQIEDBCQRc6VDAIECBgg8IqcKA0ErpCzloaADHLX0hggEIscqBksTpEbZaseO3fqxO368oAA
+AQIECBCoII3cJw0EZPiSQUAaOUoVCPAhdywLATLkimUh0EAaOUA4Jvwil+n+Frx286Bt29ZGQgIC
+BAgYIFCDHDc8BgjoIXeFBjluaAgQEEVOVg8Cl8i54kCABjluaaZw8ratzzp08syt4iWuU4QABAgY
+IGDhFDluqgT9SXaNCxBy5HJVsuCLnCkOBFCRo+YJoAwL3MRVY0aMnDhh6cSRcyYnlLhrpLIQMGCA
+QA1Ur3btiiXrVaohBEYdy/WnxqVdlCoQ+NHLl6gfBPhE02UpzyxjsnDRgjWIUKRWw3atMUCAAAEC
+HLpwyXLlyhUyMghUINNlCIwGXLg0IECgR5krPwwQ8KImDqRHe86weZNFiKNJdtaYyWKBAAECBAwQ
+IECAAAECBAgQIEDAAAGVAgYIECBAwAABAwQIEAjQQYcVMHDq7CBxYgSIKnDCSDFhgAABAgQIECBA
+gAABAgQIECBAgAABAgQIECBAgAABAgQIGCBAwIAEF0yi5Hgy5cgSKjmcIIEQgAABAgQIECBAgAAB
+AgQIECBAgAABAgQIECBAgAABAgQIECBAgACBAAEMdCgBsEOBAAEejAjRgAABAgQIBAQAOw==
+#
+# The following sets edit modes for GNU EMACS
+# Local Variables:
+# compile-command:"scripts/cmlcompile.py rules.cml"
+# End:
diff -uNr linux.2.4.14.pristine/scripts/cml.py linux/scripts/cml.py
--- linux.2.4.14.pristine/scripts/cml.py Wed Dec 31 19:00:00 1969
+++ linux/scripts/cml.py Wed Nov 14 17:01:24 2001
@@ -0,0 +1,323 @@
+"""
+cml.py -- types for communication between CML2 compiler and configurators.
+"""
+import string, sys, os, time
+
+version="1.8.6"
+
+class trit:
+ "A boolean or trit value"
+ type = "trit"
+ def __init__(self, value):
+ if isinstance(value, trit):
+ value = value.value
+ self.value = value
+ def __repr__(self):
+ return "nmy"[self.value]
+ def __nonzero__(self):
+ return self.value
+ def __hash__(self):
+ return self.value # This magic needed to make trits valid dictionary keys
+ def __long__(self):
+ return self.value != 0
+ def __cmp__(self, other):
+ if not isinstance(other, trit):
+ return -1 # None < any trit
+ elif isinstance(other, trit):
+ diff = self.value - other.value
+ if diff == 0:
+ return 0
+ else:
+ return diff / abs(diff)
+ else:
+ return None
+ def __and__(self, other):
+ return trit(min(self.value, other.value))
+ def __or__(self, other):
+ return trit(max(self.value, other.value))
+
+# Trit value constants
+y = trit(2)
+m = trit(1)
+n = trit(0)
+
+# This describes a configuration symbol...
+
+class ConfigSymbol:
+ "Compiled information about a menu or configuration symbol"
+ def __init__(self, name, type, default=None, prompt=None, file=None, lineno=None):
+ # Name, location, type, default.
+ self.name = name
+ self.file = file # Definition location source file
+ self.lineno = lineno # Definition location source line
+ self.type = type # Type of symbol
+ self.range = None # Range tuple
+ self.enum = None
+ self.discrete = None
+ self.helptext = None # Help reference
+ self.default = default # Value to use if none has been set.
+ self.vital = 0 # Force visibility
+ # Hierarchy location
+ self.ancestors = [] # Ancestors of symbol (as set up by {})
+ self.dependents = [] # Dependents of symbol (as set up by {})
+ self.menu = None # Unique parent menu of this symbol
+ self.depth = 0 # Nesting depth in its subtree
+ # Auxiliary information
+ self.prompt = prompt # Associated question string
+ self.visibility = None # List of explicit visibility rules for symbol
+ self.items = [] # Menus only -- associated symbols
+ self.private = 0 # Suppress emission in the config file?
+
+ # Compute the value of a symbol
+ def eval(self, debug=0):
+ "Value of symbol; passes back None if the symbol is unset."
+ if self.default is not None:
+ result = evaluate(self.default, debug)
+ if result and self.type =="bool":
+ result = y
+ if debug > 3:
+ sys.stderr.write("...eval(%s)->%s (through default %s)\n" % \
+ (`self`, result, self.default))
+ return result
+ else:
+ if debug > 2:
+ sys.stderr.write("...eval(%s)->None (default empty)\n" % \
+ (`self`))
+ return None
+
+ # Access to help.
+ #
+ # This is the only place in the front end that knows about the CML1
+ # helpfile conventions.
+ def help(self):
+ "Is there help for the given symbol?"
+ if self.helptext:
+ return self.helptext
+ # Next five lines implement the CML1 convention for choices help;
+ # attach it to the first alternative. But they check for help
+ # attached to the symbol itself first.
+ if self.menu and self.menu.type == "choices":
+ self = self.menu
+ if self.type == "choices" and not self.helptext:
+ self = self.items[0]
+ return self.helptext
+
+ # Predicates
+ def is_derived(self):
+ "Is this a derived symbol?"
+ return self.prompt is None
+ def is_logical(self):
+ "Is this a logical symbol?"
+ return self.type in ("bool", "trit")
+ def is_numeric(self):
+ "Is this a numeric symbol?"
+ return self.type in ("decimal", "hexadecimal")
+ def is_symbol(self):
+ "Is this a real symbol? (not a menu, not a choices, not a message)"
+ return self.type in ("bool","trit", "decimal","hexadecimal", "string")
+
+ def __repr__(self):
+ # So the right thing happens when we print symbols in expressions
+ return self.name
+ def dump(self):
+ res = "'%s', type %s," % (self.prompt, self.type)
+ if self.range:
+ res = res + " range %s," % (self.range,)
+ if self.menu:
+ res = res + " in %s," % (self.menu.name,)
+ if self.ancestors:
+ res = res + " under %s," % (self.ancestors,)
+ if self.dependents:
+ res = res + " over %s," % (self.dependents,)
+ if self.visibility is not None:
+ res = res + " visibility %s," % (display_expression(self.visibility),)
+ if self.default is not None:
+ res = res + " default %s," % (`self.default`,)
+ if self.items:
+ res = res + " items %s," % (self.items,)
+ if self.private:
+ res = res + " private,"
+ return res
+ def __str__(self):
+ # Note that requirements are not shown
+ res = "%s={" % (self.name)
+ res = res + self.dump()
+ return res[:-1] + "}"
+
+class Requirement:
+ "A requirement, together with a message to be shown if it's violated."
+ def __init__(self, wff, message, file, line):
+ self.predicate = wff
+ self.message = message
+ self.file = file
+ self.line = line
+
+ def str(self):
+ return display_expression(self.predicate)[1:-1]
+
+ def __repr__(self):
+ if self.message:
+ return self.message
+ else:
+ return display_expression(self.predicate)
+
+# This describes an entire configuration.
+
+class CMLRulebase:
+ "A dictionary of ConfigSymbols and a set of constraints."
+ def __init__(self, start="", dict={}, requirements=[], prefix="", banner="", icon=None):
+ self.version = version
+ self.start = start # Start menu name
+ self.dictionary = dict # Configuration symbols
+ self.prefix = prefix # Prepend this to all symbols
+ self.banner = banner # ID the configuration domain
+ self.constraints = requirements # All requirements
+ self.icon = icon # Icon for this rulebase
+ self.trit_tie = None # Are trits enabled?
+ self.help_tie = None # Help required for visibility?
+ def __repr__(self):
+ res = "Start menu = %s\n" % (self.start,)
+ for k in self.dictionary.keys():
+ res = res + str(self.dictionary[k]) + "\n"
+ if self.prefix:
+ res = res + "Prefix:" + `self.prefix`
+ if self.banner:
+ res = res + "Banner:" + `self.banner`
+ return res
+ def optimize_constraint_access(self):
+ "Assign constraints to their associated symbols."
+ for entry in self.dictionary.values():
+ entry.constraints = []
+ for requirement in self.reduced:
+ for symbol in flatten_expr(requirement):
+ if not requirement in symbol.constraints:
+ symbol.constraints.append(requirement)
+
+# These functions are used by both interpreter and compiler
+
+def evaluate(exp, debug=0):
+ "Compute current value of an expression."
+ if debug > 2:
+ sys.stderr.write("evaluate(%s) begins...\n" % (`exp`,))
+ if type(exp) is type(()):
+ # Ternary operator
+ if exp[0] == '?':
+ guard = evaluate(exp[1], debug)
+ if guard:
+ return evaluate(exp[2], debug)
+ else:
+ return evaluate(exp[3], debug)
+ # Logical operations -- always trit-valued
+ elif exp[0] == 'not':
+ return trit(not evaluate(exp[1], debug))
+ elif exp[0] == 'or':
+ return trit(evaluate(exp[1], debug) or evaluate(exp[2], debug))
+ elif exp[0] == 'and':
+ return trit(evaluate(exp[1], debug) and evaluate(exp[2], debug))
+ elif exp[0] == 'implies':
+ return trit(not ((evaluate(exp[1], debug) and not evaluate(exp[2], debug))))
+ elif exp[0] == '==':
+ return trit(evaluate(exp[1], debug) == evaluate(exp[2], debug))
+ elif exp[0] == '!=':
+ return trit(evaluate(exp[1], debug) != evaluate(exp[2], debug))
+ elif exp[0] == '<=':
+ return trit(evaluate(exp[1], debug) <= evaluate(exp[2], debug))
+ elif exp[0] == '>=':
+ return trit(evaluate(exp[1], debug) >= evaluate(exp[2], debug))
+ # Arithmetic operations -- sometimes trit-valued
+ elif exp[0] == '|':
+ return evaluate(exp[1], debug) | evaluate(exp[2], debug)
+ elif exp[0] == '&':
+ return evaluate(exp[1], debug) & evaluate(exp[2], debug)
+ elif exp[0] == '$':
+ left = evaluate(exp[1])
+ right = evaluate(exp[2])
+ if left != right:
+ return n
+ else:
+ return left
+ elif exp[0] == '+':
+ return long(evaluate(exp[1],debug)) + long(evaluate(exp[2],debug))
+ elif exp[0] == '-':
+ return long(evaluate(exp[1],debug)) - long(evaluate(exp[2],debug))
+ elif exp[0] == '*':
+ return long(evaluate(exp[1],debug)) * long(evaluate(exp[2],debug))
+ else:
+ raise SyntaxError, "Unknown operation %s in expression" % (exp[0],)
+ elif isinstance(exp, trit) or type(exp) in (type(""), type(0), type(0L)):
+ if debug > 2:
+ sys.stderr.write("...evaluate(%s) returns itself\n" % (`exp`,))
+ return exp
+ elif isinstance(exp, ConfigSymbol):
+ result = exp.eval(debug)
+ if result:
+ return result
+ else:
+ return n
+ else:
+ raise ValueError,"unknown object %s %s in expression" % (exp,type(exp))
+
+def flatten_expr(node):
+ "Flatten an expression -- skips the operators"
+ if type(node) is type(()) or type(node) is type([]):
+ sublists = map(flatten_expr, node)
+ flattened = []
+ for m in sublists:
+ flattened = flattened + m
+ return flattened
+ elif isinstance(node, ConfigSymbol):
+ if node.is_derived():
+ return flatten_expr(node.default)
+ else:
+ return [node]
+ else:
+ return []
+
+def display_expression(exp):
+ "Display an expression in canonicalized infix form."
+ if type(exp) is type(()):
+ if exp[0] == "not":
+ return "not " + display_expression(exp[1])
+ elif exp[0] == '?':
+ return "(%s ? %s : %s)" % (display_expression(exp[1]), display_expression(exp[2]), display_expression(exp[3]))
+ else:
+ return "(%s %s %s)" % (display_expression(exp[1]), exp[0], display_expression(exp[2]))
+ elif isinstance(exp, ConfigSymbol):
+ return exp.name
+ else:
+ return `exp`
+
+class Baton:
+ "Ship progress indication to stdout."
+ def __init__(self, prompt, endmsg=None):
+ sys.stdout.write(prompt + "... \010")
+ sys.stdout.flush()
+ self.count = 0
+ self.endmsg = endmsg
+ self.time = time.time()
+ return
+
+ def twirl(self, ch=None):
+ if not os.isatty(1):
+ return
+ if ch:
+ sys.stdout.write(ch)
+ else:
+ sys.stdout.write("-/|\\"[self.count % 4])
+ sys.stdout.write("\010")
+ self.count = self.count + 1
+ sys.stdout.flush()
+ return
+
+ def announce(self, msg):
+ if self.count:
+ sys.stdout.write('\n')
+ sys.stdout.flush()
+
+ def end(self, msg=None):
+ if msg == None:
+ msg = self.endmsg
+ sys.stdout.write("...(%2.2f sec) %s.\n" % (time.time() - self.time, msg))
+ return
+
+# cml.py ends here.
diff -uNr linux.2.4.14.pristine/scripts/cmladvent.py linux/scripts/cmladvent.py
--- linux.2.4.14.pristine/scripts/cmladvent.py Wed Dec 31 19:00:00 1969
+++ linux/scripts/cmladvent.py Wed Nov 14 17:01:24 2001
@@ -0,0 +1,851 @@
+#!/usr/bin/env python
+#
+# cmladvent.py -- CML2 configurator adventure-game front end
+# by Eric S. Raymond,
+#
+# This illustrates how easy it is to wrap a front end around cmlsystem.
+# Purely in the interests of science, of course...
+#
+import sys
+
+if sys.version[0] < '2':
+ print "Python 2.0 or later is required for this program."
+ sys.exit(0)
+
+import os, string, getopt, cmd, re, time, whrandom, random
+import cml, cmlsystem
+
+# Globals
+debug = inclusions = 0
+proflog = partialsave = None
+banner = ""
+gruestate = darkturns = 0
+lanternloc = None
+
+directions = ('n','e','s','w','ne','sw','se','nw','dn','up')
+
+# User-visible strings in the configurator. Separated out in order to
+# support internationalization.
+_eng = {
+ # Strings used in the command help -- these should align
+ "LHELP":"look [target] -- look here or at target (direction or option).",
+ "NHELP":"nearby -- list nearby rooms (useful with go)",
+ "GHELP":"go -- go to a named menu (follow with the label).",
+ "IHELP":"inventory -- show which options you have picked up.",
+ "THELP":"take [module] -- set options, follow with option names.",
+ "SETHELP":"set -- set numeric or string; follow with symbol and value.",
+ "DHELP":"drop -- unset options, follow with option names or `all'.",
+ "LDHELP":"load -- read in a configuration (follow with the filename).",
+ "SHELP":"save -- save the configuration (follow with a filename).",
+ "XYZZY":"xyzzy -- toggle suppression flag.",
+ "QHELP":"quit -- quit, discarding changes.",
+ "XHELP":"exit -- exit, saving the configuration.",
+ # Grue/lantern messages
+ "BRASSOFF":"A brass lantern (unlit).",
+ "BRASSON":"A brass lantern (lit).",
+ "DARK":"It is very dark. If you continue, you are likely to be eaten by a grue.",
+ "EATEN":"*CHOMP*! You have been eaten by a slavering grue. Game over.",
+ "GLOW":"The lantern radiates a mellow golden light.",
+ "LANTERN":"lantern",
+ "LANTERNDROP":"Lantern: dropped.",
+ "LANTERNTAKE":"Lantern: taken.",
+ "LONGLANTERN":"A brass lantern is here.",
+ "LANTERNHELP":"""
+You see a brass lantern with a ring-shaped handle, hooded and paned with
+clear glass. A toggle on the lamp connects to a firestriker inside it.
+On the bottom is stamped a maker's mark that reads:
+
+ Another fine product of FrobozzCo.
+ Made in Plumbat, Great Underground Empire
+""",
+ # Other strings
+ "ABORTED":"Configurator aborted.",
+ "BADOPTION":"cmladvent: unknown option on command line.\n",
+ "BOOLEAN":"`y' and `n' can only be applied to booleans or tristates",
+ "CANNOTSET":" Can't assign this value for bool or trit symbol.",
+ "CONSTRAINTS":"Constraints:",
+ "DEFAULT":"Default: ",
+ "DERIVED":"Symbol %s is derived and cannot be set.",
+ "DIRHELP":"You can move in compass directions n,e,w,s,ne,nw,se,sw, up, or dn for down.",
+ "DONE":"Done",
+ "DROPPED":"%s: dropped.",
+ "EH?":"Eh?",
+ "EXIT":"Exit",
+ "EXITS":"Passages exit up, %s.",
+ "EXTRAROOMS":"Other nearby rooms are: %s.",
+ "GOODBYE":"You emerge, blinking, into the daylight.",
+ "INROOM":"In %s room.",
+ "INVISIBLE":"Symbol is invisible",
+ "ISHERE":"There is an option named %s here.",
+ "LOADFAIL":"Loading '%s' failed, continuing...",
+ "MDISABLED":"Module-valued symbols are not enabled",
+ "MNOTVALID":" m is not a valid value for %s",
+ "NEW":"(NEW)",
+ "NNOTVALID":" n is not a valid value for %s",
+ "NOANCEST":"No ancestors.",
+ "NOBUTTON":"I don't see button %s here.",
+ "NOCMDLINE":"%s is the wrong type to be set from the command line",
+ "NODEPS":"No dependents.",
+ "NODIR":"You see nothing special in that direction.",
+ "NOFILE":"cmlconfigure: '%s' does not exist or is unreadable.",
+ "NOHAVE":"You don't have %s.",
+ "NOHELP":"No help available for %s",
+ "NOHERE":"I see no `%s' here.",
+ "NOMATCHES":"No matches.",
+ "NONEXIST":"No such location.",
+ "NOSUCHAS":"No such thing as",
+ "NOTSAVED":"Configuration not saved",
+ "NOWAY":"You can't go in that direction from here.",
+ "OUTOFBOUNDS":"Legal values are in %s",
+ "PARAMS":" Config = %s, prefix = %s",
+ "PASSAGEALL":"Passages lead off in all directions.",
+ "PASSAGEUP":"A passage leads upwards.",
+ "PHELP":"press -- press a button (follow with the button name).",
+ "POSTMORTEM":"The ruleset was inconsistent. A state dump is in the file `post.mortem'.",
+ "REALLY":"Really exit without saving?",
+ "ROLLBACK":"%s=%s would have violated these requirements:",
+ "ROOMBANNER":"The %s room. A sign reads `%s'.",
+ "SAVEAS":"Save As...",
+ "SAVEEND":"Done",
+ "SAVESTART":"Saving %s",
+ "SAVING":"Saving...",
+ "SHOW_ANC":"Show ancestors of symbol: ",
+ "SHOW_DEP":"Show dependents of symbol: ",
+ "SIDEEFFECTS":"Side Effects",
+ "SIDEFROM":"Side effects from %s:",
+ "SUPPRESSOFF":"Suppression turned off.",
+ "SUPPRESSON":"Suppression turned on.",
+ "SYMUNKNOWN":"cmlconfigure: unknown symbol %s\n",
+ "TAKEN":"%s: taken.",
+ "TRIT":"`m' can only be applied to tristates",
+ "TRYPRESS":"That doesn't work. You might try pressing another button.",
+ "TWISTY":"You are in a maze of twisty little %s menus, all different.",
+ "USESET":"What? Configure %s with your bare hands?",
+ "VALUE":"Value of %s is %s.",
+ "VISIBLE":"Symbol is visible.",
+ "VISIBILITY":"Visibility: ",
+ "WALLCHOICE":"There is a row of buttons on the wall of this room. They read:",
+ "WALLDEFAULT":"The button marked %s is pressed.",
+ "WELCOME":"Welcome to CML2 Adventure, version %s.",
+ # General help
+ "GENHELP":"""Welcome to the adventure configurator. For a command summary, type `commands'.
+In general, a three-letter abbreviation of any command word is sufficient
+to identify it to the parser.
+
+This interface emulates the style of classic text adventure games such as
+Colossal Cave Adventure and Zork. Configuration menus are rooms, and
+configuration options are objects that can be taken and dropped (except
+for choice/radiobutton symbols, which become buttons on various room walls).
+Objects and rooms may silently appear and disappear as visibilities
+change.
+
+Have fun, and beware of the lurking grue!
+"""
+}
+
+grafitti = (
+ 'N tensvggb ernqf: "Gur Jhzchf jnf urer. Nera\'g lbh tynq ur\'f abg urer abj?"',
+ 'N tensvggb ernqf: "Uryyb, fnvybe!"',
+ 'N tensvggb ernqf: "Sebqb yvirf!"',
+ 'N tensvggb ernqf: "Guvf fcnpr sbe erag."',
+ 'N tensvggb ernqf: "Guvf Jnl gb gur Rterff..."',
+ # Bofpher Pbybffny Pnir Nqiragher ersreraprf ortva urer.
+ 'Ba bar jnyy vf n tynff-sebagrq obk ubyqvat na nkr.\aBa gur tynff vf jevggra: "OERNX TYNFF VA PNFR BS QJNEIRF"',
+ 'N tensvggb ernqf: "Srr svr sbr sbb!',
+ # Bofpher Mbex ersreraprf ortva urer.
+ 'N tensvggb ernqf: "Ragunevba gur Jvfr fyrcg urer."',
+ 'N tensvggb ernqf: "N mbexzvq fnirq vf n mbexzvq rnearq."',
+ 'Bar jnyy qvfcynlf n sbezny cbegenvg bs W. Cvrecbag Syngurnq.',
+ 'Bar jnyy qvfcynlf n qhfgl cbegenvg bs gur Rzcrebe Zhzob VV.',
+ 'Bar jnyy qvfcynlf n cvpgher bs gur terng tenabyn fzrygref bs Cyhzong.',
+ 'Bar jnyy qvfcynlf n gnpxl oynpx-iryirg cnvagvat bs n tbyqra-sheerq zvak jvgu uhtr rlrf.',
+ # Bofpher Q&Q ersreraprf ortva urer
+ 'N tensvggb ernqf: "Vg pbhyq bayl or orggre ng Pnfgyr Terlunjx"',
+ 'N tensvggb ernqf: "Cnenylfvf vf va gur rlr bs gur orubyqre"',
+ # Bofpher wbxr sbe QrPnzc/Cengg snaf
+ 'N tensvggb ernqf: "Lativ vf n ybhfr!"',
+ # Abg-fb-bofpher Yvahk ersreraprf ortva urer.
+ 'Ba bar jnyy vf n cubgbtencu bs Yvahf Gbeinyqf, qevaxvat Thvaarff.',
+ 'N jnyy oenpxrg ubyqf n qvfpneqrq cnve bs Nyna Pbk\'f fhatynffrf. Oebamrq.',
+ 'Ba bar jnyy vf n cbegenvg bs EZF va shyy Fg. Vtahpvhf qent.',
+ 'Ba bar jnyy vf n cvpgher bs Yneel Jnyy ubyqvat n ynetr chzcxva.',
+ 'Ba bar jnyy vf jung nccrnef gb or n cubgbtencu bs Thvqb\'f gvzr znpuvar.',
+ 'Gur sybbe vf yvggrerq jvgu fcrag .45 furyyf. Revp Enlzbaq zhfg unir orra urer.',
+ )
+grafittishuffle = []
+grafitticount = 0
+
+# Eventually, do more intelligent selection using LOCALE
+lang = _eng
+
+def roll(n):
+ "Return a random number in the range 0..n-1."
+ return random.randrange(n)
+
+def shuffle(size):
+ "Generate a random permutation of 0...(size - 1)."
+ shuffle = range(size)
+ for i in range(1, size+1):
+ j = random.randrange(i)
+ holder = shuffle[i - 1]
+ shuffle[i - 1] = shuffle[j]
+ shuffle[j] = holder
+ return shuffle
+
+def rot13(str):
+ res = ""
+ for c in str:
+ if c in string.uppercase:
+ res += chr(ord('A') + ((ord(c)-ord('A')) + 13) % 26)
+ elif c in string.lowercase:
+ res += chr(ord('a') + ((ord(c)-ord('a')) + 13) % 26)
+ else:
+ res += c
+ return res
+
+def newroom(room):
+ # There is a chance of grafitti
+ global grafitticount, grafittishuffle
+ if grafitticount < len(grafitti):
+ if not hasattr(room, "visits") and roll(3) == 0:
+ room.grafitti = grafitti[grafittishuffle[grafitticount]]
+ grafitticount += 1
+ # State machine for lantern and grue
+ global lanternloc, gruestate, darkturns
+ if gruestate == 0: # Initial state
+ if not hasattr(room, "visits") and roll(4) == 0:
+ gruestate += 1
+ lanternloc = room
+ elif gruestate == 1: # Lantern has been placed
+ if roll(4) == 0:
+ gruestate += 1
+ elif gruestate == 2: # It's dark now
+ darkturns += 1
+ if darkturns > 2 and roll(4) == 0:
+ print lang["EATEN"]
+ raise SystemExit
+
+def visit(room, level=0):
+ "Visit a room, and describe at any of four verbosity levels."
+ # 0 = quiet, 1 = name only, 2 = name + help,
+ # 3 = name + help + exits, 4 = name + help + exits + contents
+ configuration.visit(room)
+ # Compute visible exits
+ room.exits = filter(lambda x: x.type in ("menu", "choices"), room.items)
+ room.exits = filter(configuration.is_visible, room.exits)
+ # This way of assigning directions has the defect that they may
+ # change as submenus become visible/invisible. Unfortunately,
+ # the alternative is not being able to assign directions at all
+ # for long menus.
+ room.directions = {}
+ for (dir,other) in zip(directions[:-1], room.exits):
+ room.directions[dir] = other
+ if level == 0:
+ return
+ elif level == 1:
+ print lang["INROOM"] % room.name
+ else:
+ print lang["ROOMBANNER"] % (room.name, room.prompt)
+ # Only display room exits at level 3 or up
+ if level >= 3:
+ if len(room.exits) > 9:
+ print lang["PASSAGEALL"]
+ elif room.exits:
+ print lang["EXITS"] % ", ".join(room.directions.keys())
+ elif room != configuration.start:
+ print lang["PASSAGEUP"]
+ print
+ # Display help at level 2 or up
+ help = room.help()
+ if help:
+ sys.stdout.write(help)
+ # Display grafitti at level 2 or up.
+ if hasattr(room, "grafitti"):
+ print rot13(room.grafitti) + "\n"
+ # Only display other contents of room at level 4 or up
+ if level >= 4:
+ if room.type == "choices":
+ print lang["WALLCHOICE"]
+ print ", ".join(map(lambda x:x.name, room.items))
+ print lang["WALLDEFAULT"] % room.menuvalue.name
+ else:
+ for symbol in room.items:
+ if symbol.is_symbol() and configuration.is_visible(symbol) and not symbol.eval():
+ print lang["ISHERE"] % symbol.name
+ # Some things are always shown
+ if lanternloc == room:
+ print lang["LONGLANTERN"]
+ if gruestate == 2:
+ print lang["DARK"]
+
+def inventory():
+ # Write mutable symbols, including defaulted modular symbols.
+ configuration.module_suppress = 0
+ if lanternloc == 'user':
+ if gruestate == 3:
+ print lang["BRASSON"]
+ else:
+ print lang["BRASSOFF"]
+ __inventory_recurse(configuration.start)
+ if configuration.trit_tie:
+ configuration.module_suppress = (configuration.trit_tie.eval() == cml.m)
+ # Write all derived symbols
+ #config_sh.write(configuration.lang["SHDERIVED"])
+ #for entry in configuration.dictionary.values():
+ # if entry.is_derived():
+ # __inventory_recurse(entry, config_sh)
+
+def __inventory_recurse(node):
+ if not configuration.saveable(node):
+ return
+ elif node.items:
+ for child in node.items:
+ __inventory_recurse(child)
+ elif node.type != 'message':
+ symname = configuration.prefix + node.name
+ value = node.eval(configuration.debug)
+ if not value or not node.setcount:
+ return
+ try:
+ if node.type == "decimal":
+ sys.stdout.write("%s=%d\n" % (symname, value))
+ elif node.type == "hexadecimal":
+ sys.stdout.write("%s=0x%x\n" % (symname, value))
+ elif node.type == "string":
+ sys.stdout.write("%s=\"%s\"\n" % (symname, value))
+ elif node.type in ("bool", "trit"):
+ sys.stdout.write("%s=%s\n" % (symname, `value`))
+ except:
+ (errtype, errval, errtrace) = sys.exc_info()
+ print "Internal error %s while writing %s." % (errtype, node)
+ raise SystemExit, 1
+
+class advent_menu(cmd.Cmd):
+ "Adventure-game interface class."
+
+ def set_symbol(self, symbol, value, freeze=0):
+ "Set the value of a symbol -- line-oriented error messages."
+ if symbol.is_numeric() and symbol.range:
+ if not configuration.range_check(symbol, value):
+ print lang["OUTOFBOUNDS"] % (symbol.range,)
+ return 0
+ (ok, explanation) = configuration.set_symbol(symbol, value, freeze)
+ if not ok:
+ print lang["ROLLBACK"] % (symbol.name, value)
+ if explanation:
+ sys.stdout.writelines(string.join(explanation, "\n") + "\n")
+ return ok
+
+ def __init__(self, config=None, banner=""):
+ cmd.Cmd.__init__(self)
+ self.config = config
+ if banner and configuration.banner.find("%s") > -1:
+ self.banner = configuration.banner % banner
+ elif banner:
+ self.banner = banner
+ else:
+ self.banner = configuration.banner
+ self.current = configuration.start;
+ self.prompt = "> "
+ print lang["TWISTY"]%(configuration.banner,)
+ self.last = None
+ visit(configuration.start, 4)
+
+ def do_look(self, line):
+ if not line: # Look at where we are
+ visit(self.current, 4)
+ elif line == "up": # Look up
+ if self.current == configuration.start:
+ print lang["NODIR"]
+ else:
+ visit(self.current.menu, 2)
+ elif line in directions: # Look in a direction
+ if line in self.current.directions.keys():
+ visit(self.current.directions[line], 2)
+ else:
+ print lang["NODIR"]
+ # Look at an option
+ elif line in map(lambda x: x.name, filter(lambda x: x.is_logical(), self.current.items)):
+ symbol = configuration.dictionary[line]
+ print lang["VALUE"] % (line, symbol.eval())
+ help = symbol.help()
+ if help:
+ sys.stdout.write(help)
+ else:
+ print lang["NOHERE"] % line
+ do_loo = do_look
+
+ def do_nearby(self, line):
+ if self.current != configuration.start:
+ print lang["ROOMBANNER"] % (self.current.menu.name, self.current.menu.prompt)
+ for (dir, symbol) in self.current.directions.items():
+ if symbol.type in ("menu", "choices") and configuration.is_visible(symbol):
+ print ("%-2s: " % dir) + lang["ROOMBANNER"] % (symbol.name, symbol.prompt)
+ if len(self.current.exits) > len(directions):
+ print lang["EXTRAROOMS"] % ", ".join(map(lambda x: x.name, self.current.exits[9:]))
+ print
+ do_nea = do_nearby
+
+ def do_go(self, line):
+ if not line:
+ print lang["EH?"]
+ return
+ symbol = configuration.dictionary.get(line)
+ if symbol and symbol.type in ("menu", "choices"):
+ self.current = symbol
+ if not configuration.is_visible(self.current) and not self.current.frozen:
+ print lang["SUPPRESSOFF"]
+ self.suppressions = 0
+ else:
+ print lang["NONEXIST"]
+
+ def do_dir(self, dir):
+ to = self.current.directions.get(dir)
+ if to:
+ self.current = to
+ else:
+ print lang["NOWAY"]
+ def do_n(self, line): self.do_dir('n')
+ def do_e(self, line): self.do_dir('e')
+ def do_w(self, line): self.do_dir('w')
+ def do_s(self, line): self.do_dir('s')
+ def do_ne(self, line): self.do_dir('ne')
+ def do_nw(self, line): self.do_dir('nw')
+ def do_se(self, line): self.do_dir('se')
+ def do_sw(self, line): self.do_dir('sw')
+ def do_u(self, line): self.do_up(line)
+ def do_d(self, line): self.do_dir('dn')
+
+ def do_up(self, line):
+ if self.current == configuration.start:
+ print lang["GOODBYE"]
+ raise SystemExit
+ else:
+ self.current = self.current.menu
+
+ def do_inventory(self, line):
+ inventory()
+ do_inv = do_inventory
+
+ def do_drop(self, line):
+ if not line:
+ print lang["EH?"]
+ return
+ words = line.lower().split()
+ if words == ["all"] and self.current.type != "choices":
+ words = map(lambda x:x.name, filter(lambda x:x.is_logical() and configuration.is_visible(x) and not x.eval(), self.current.items))
+ if lanternloc == 'user':
+ words.append(lang["LANTERN"])
+ for thing in words:
+ if thing == lang["LANTERN"]:
+ lanternloc = self.current
+ gruestate = 1
+ print lang["LANTERNDROP"]
+ else:
+ symbolname = thing.upper()
+ symbol = configuration.dictionary.get(symbolname)
+ if not symbol:
+ print lang["NOSUCHAS"], symbolname
+ continue
+ elif not symbol.eval():
+ print lang["NOHAVE"] % symbolname
+ continue
+ elif symbol.menu.type == "choices":
+ if symbol.menu != self.current:
+ print lang["NOBUTTON"] % symbolname
+ else:
+ print lang["TRYPRESS"]
+ return
+ elif symbol.is_logical():
+ ok = self.set_symbol(symbol, cml.n)
+ elif symbol.is_numeric():
+ ok = self.set_symbol(symbol, 0)
+ elif symbol.type == "string":
+ ok = self.set_symbol(symbol, "")
+ if ok:
+ print lang["DROPPED"] % symbol.name
+ do_dro = do_drop
+
+ def do_take(self, line):
+ global lanternloc
+ if not line:
+ print lang["EH?"]
+ return
+ words = line.lower().split()
+ if words == ["all"] and self.current.type != "choices":
+ words = map(lambda x:x.name, filter(lambda x:x.is_logical() and configuration.is_visible(x) and not x.eval(), self.current.items))
+ if lanternloc == self.current:
+ words.append(lang["LANTERN"])
+ if ("module" in words):
+ tritval = cml.m
+ words.remove("module")
+ else:
+ tritval = cml.y
+ for thing in words:
+ if thing == lang["LANTERN"]:
+ lanternloc = 'user'
+ print lang["LANTERNTAKE"]
+ else:
+ symbolname = thing.upper()
+ symbol = configuration.dictionary.get(symbolname)
+ if not symbol:
+ print lang["NOSUCHAS"], symbolname
+ elif symbol.menu != self.current:
+ print lang["NOHERE"] % symbol.name
+ elif symbol.is_logical():
+ if self.set_symbol(symbol, tritval):
+ print lang["TAKEN"] % symbol.name
+ else:
+ print lang["USESET"] % symbol.name
+ do_tak = do_take
+
+ def do_press(self, line):
+ if not line:
+ print lang["EH?"]
+ else:
+ symbol = configuration.dictionary.get(line)
+ if not symbol or symbol.menu != self.current:
+ print lang["NOHERE"] % line
+ else:
+ self.set_symbol(symbol, cml.y)
+ do_pus = do_push = do_pre = do_press
+
+ def do_light(self, line):
+ global gruestate
+ if lanternloc == 'user':
+ print lang["GLOW"]
+ gruestate = 3
+ else:
+ print lang["NOHERE"] % lang["LANTERN"]
+ do_lig = do_light
+
+ def do_set(self, line):
+ try:
+ (symname, value) = line.split()
+ except:
+ print lang["EH?"]
+ if not symbol:
+ print lang["NOSUCHAS"], symbol.name
+ elif symbol.menu != self.current:
+ print lang["NOHERE"] % symbol.name
+ elif symbol.menu.type == "choices" or symbol.is_logical():
+ print lang["CANTDO"]
+ elif symbol.is_numeric():
+ self.set_symbol(symbol, int(value))
+ elif symbol.type == "string":
+ self.set_symbol(symbol, value)
+
+ def do_xyzzy(self, line):
+ # Toggle the suppressions flag
+ configuration.suppressions = not configuration.suppressions
+ if configuration.suppressions:
+ print lang["SUPPRESSON"]
+ else:
+ print lang["SUPPRESSOFF"]
+ return 0
+
+ def do_load(self, line):
+ if not line:
+ print lang["EH?"]
+ return
+ file = string.strip(line)
+ if file.find(' ') > -1:
+ (file, option) = file.split(' ')
+ try:
+ (changes, errors) = configuration.load(file, freeze=(option == "frozen"))
+ except IOError:
+ print lang["LOADFAIL"] % file
+ else:
+ if errors:
+ print errors
+ print lang["INCCHANGES"] % (changes,file)
+ if configuration.side_effects:
+ sys.stdout.writelines(string.join(configuration.side_effects, "\n") + "\n")
+ do_loa = do_load
+
+ def do_save(self, line):
+ if not line:
+ print lang["EH?"]
+ return
+ file = string.strip(line)
+ failure = configuration.save(file, cml.Baton(lang["SAVESTART"] % file, lang["SAVEEND"]))
+ if failure:
+ print failure
+ do_sav = do_save
+
+ def do_exit(self, line):
+ # Terminate this cmd instance, saving configuration
+ self.do_s(config)
+ return 1
+ do_exi = do_exit
+
+ def do_quit(self, line):
+ # Terminate this cmd instance, not saving configuration
+ return 1
+ do_qui = do_quit
+
+ # Debugging commands -- not documented
+ def do_verbose(self, line):
+ # Set the debug flag
+ if not line:
+ configuration.debug += 1
+ else:
+ configuration.debug = int(line)
+ return 0
+ do_ver = do_verbose
+
+ def do_examine(self, line):
+ # Examine the state of a given symbol
+ symbol = string.strip(line)
+ if configuration.dictionary.has_key(symbol):
+ entry = configuration.dictionary[symbol]
+ print entry
+ if entry.constraints:
+ print lang["CONSTRAINTS"]
+ for wff in entry.constraints:
+ print cml.display_expression(wff)
+ if configuration.is_visible(entry):
+ print lang["VISIBLE"]
+ else:
+ print lang["INVISIBLE"]
+ help = entry.help()
+ if help:
+ print help
+ else:
+ print lang["NOHELP"] % (entry.name,)
+ elif symbol == "lantern":
+ if lanternloc == "user" or lanternloc == self.current:
+ print lang["LANTERNHELP"]
+ else:
+ print lang["NOHERE"] % lang["LANTERN"]
+ else:
+ print lang["NOSUCHAS"], symbol
+ return 0
+ do_exa = do_examine
+
+ def emptyline(self):
+ return 0
+ def do_commands(self, line):
+ print string.join(map(lambda x: lang[x],
+ ("LHELP", "NHELP", "GHELP", "IHELP",
+ "DHELP", "THELP", "PHELP", "SETHELP",
+ "LDHELP", "SHELP", "XYZZY",
+ "QHELP", "XHELP", "DIRHELP")),
+ "\n")
+ def help_look(self):
+ print lang["LHELP"]
+ help_loo = help_look
+ def help_nearby(self):
+ print lang["NHELP"]
+ help_nea = help_nearby
+ def help_go(self):
+ print lang["GHELP"]
+ def help_inventory(self):
+ print lang["IHELP"]
+ help_inv = help_inventory
+ def help_drop(self):
+ print lang["DHELP"]
+ help_dro = help_drop
+ def help_take(self):
+ print lang["THELP"]
+ help_tak = help_take
+ def help_press(self):
+ print lang["PHELP"]
+ help_pus = help_push = help_pre = help_press
+ def help_set(self):
+ print lang["SETHELP"]
+ def help_xyzzy(self):
+ print lang["XYZZY"]
+ def help_load(self):
+ print lang["LDHELP"]
+ help_loa = help_load
+ def help_save(self):
+ print lang["SHELP"]
+ help_sav = help_save
+ def help_quit(self):
+ print lang["QHELP"]
+ help_qui = help_quit
+ def help_exit(self):
+ print lang["XHELP"]
+ help_exi = help_exit
+ def do_help(self, line):
+ print lang["GENHELP"]
+ def postcmd(self, stop, line):
+ if stop:
+ return stop
+ if self.current != self.last:
+ newroom(self.current)
+ visit(self.current, 4 - 3 * hasattr(self.current, 'visits'))
+ self.last = self.current
+ return None
+
+# Rulebase loading and option processing
+
+def load_system(cmd_options, cmd_arguments):
+ "Read in the rulebase and handle command-line arguments."
+ global debug, config, inclusions
+ debug = inclusions = 0;
+ config = None
+
+ if not cmd_arguments:
+ rulebase = "rules.out"
+ else:
+ rulebase = cmd_arguments[0]
+ try:
+ open(rulebase, 'rb')
+ except IOError:
+ print lang["NOFILE"] % (rulebase,)
+ raise SystemExit
+ configuration = cmlsystem.CMLSystem(rulebase)
+
+ process_options(configuration, cmd_options)
+
+ configuration.debug_emit(1, lang["PARAMS"] % (config,configuration.prefix))
+
+ # Perhaps the user needs modules enabled initially
+ if configuration.trit_tie and cml.evaluate(configuration.trit_tie):
+ configuration.trits_enabled = 1
+
+ # Don't count all these automatically generated settings
+ # for purposes of figuring out whether we should confirm a quit.
+ configuration.commits = 0
+
+ return configuration
+
+def process_include(configuration, file, freeze):
+ "Process a -i or -I inclusion option."
+ # Failure to find an include file is non-fatal
+ try:
+ (changes, errors) = configuration.load(file, freeze)
+ except IOError:
+ print lang["LOADFAIL"] % file
+ return
+ if errors:
+ print errors
+ elif configuration.side_effects:
+ print lang["SIDEFROM"] % file
+ sys.stdout.writelines(string.join(configuration.side_effects, "\n") + "\n")
+
+def process_define(configuration, val, freeze):
+ "Process a -d=xxx or -D=xxx option."
+ parts = string.split(val, "=")
+ sym = parts[0]
+ if configuration.dictionary.has_key(sym):
+ sym = configuration.dictionary[sym]
+ else:
+ configuration.errout.write(lang["SYMUNKNOWN"] % (`sym`,))
+ sys.exit(1)
+ if sym.is_derived():
+ configuration.debug_emit(1, lang["DERIVED"] % (`sym`,))
+ sys.exit(1)
+ elif sym.is_logical():
+ if len(parts) == 1:
+ val = 'y'
+ elif parts[1] == 'y':
+ val = 'y'
+ elif parts[1] == 'm':
+ configuration.trits_enabled = 1
+ val = 'm'
+ elif parts[1] == 'n':
+ val = 'n'
+ elif len(parts) == 1:
+ print lang["NOCMDLINE"] % (`sym`,)
+ sys.exit(1)
+ else:
+ val = parts[1]
+ (ok, explanation) = configuration.set_symbol(sym,
+ configuration.value_from_string(sym, val),
+ freeze)
+ if not ok:
+ print lang["ROLLBACK"] % (symbol.name, value)
+ if configuration.side_effects:
+ sys.stdout.writelines(string.join(explanation,"\n")+"\n")
+
+def process_options(configuration, options):
+ # Process command-line options second so they override
+ global list, config, debug, inclusions, banner
+ config = "config.out"
+ for (switch, val) in options:
+ if switch == '-b':
+ force_batch = 1
+ elif switch == '-B':
+ banner = val
+ elif switch == '-d':
+ process_define(configuration, val, freeze=0)
+ elif switch == '-D':
+ process_define(configuration, val, freeze=1)
+ elif switch == '-i':
+ process_include(configuration, val, freeze=0)
+ inclusions += 1
+ elif switch == '-I':
+ process_include(configuration, val, freeze=1)
+ inclusions += 1
+ elif switch == '-l':
+ list = 1
+ elif switch == '-o':
+ config = val
+ elif switch == '-v':
+ debug = debug + 1
+ configuration.debug = configuration.debug + 1
+ elif switch == '-S':
+ configuration.suppressions = 0
+
+# Main sequence -- isolated here so we can profile it
+
+def main(options, arguments):
+ global configuration
+
+ try:
+ configuration = load_system(options, arguments)
+ except KeyboardInterrupt:
+ raise SystemExit
+
+ # Set seed for random-number functions
+ whrandom.seed(int(time.time()) % 256, os.getpid() % 256, 23)
+ global grafittishuffle
+ grafittishuffle = shuffle(len(grafitti))
+
+ print lang["WELCOME"] % cml.version
+ configuration.errout = sys.stdout
+ advent_menu(config, banner).cmdloop()
+
+if __name__ == '__main__':
+ try:
+ runopts = "abB:cD:d:h:i:I:lo:P:R:StVvWx"
+ (options,arguments) = getopt.getopt(sys.argv[1:], runopts)
+ if os.environ.has_key("CML2OPTIONS"):
+ (envopts, envargs) = getopt.getopt(
+ os.environ["CML2OPTIONS"].split(),
+ runopts)
+ options = envopts + options
+ except:
+ print lang["BADOPTION"]
+ sys.exit(1)
+
+ for (switch, val) in options:
+ if switch == "-V":
+ print "cmladvent", cml.version
+ raise SystemExit
+ elif switch == '-P':
+ proflog = val
+ try:
+ import readline
+ except:
+ pass
+
+ try:
+ if proflog:
+ import profile, pstats
+ profile.run("main(options, arguments)", proflog)
+ else:
+ main(options, arguments)
+ except KeyboardInterrupt:
+ #if configuration.commits > 0:
+ # print lang["NOTSAVED"]
+ print lang["ABORTED"]
+ except "UNSATISFIABLE":
+ #configuration.save("post.mortem")
+ print lang["POSTMORTEM"]
+ raise SystemExit, 1
+
+# That's all, folks!
diff -uNr linux.2.4.14.pristine/scripts/cmlcompile.py linux/scripts/cmlcompile.py
--- linux.2.4.14.pristine/scripts/cmlcompile.py Wed Dec 31 19:00:00 1969
+++ linux/scripts/cmlcompile.py Wed Nov 14 17:01:24 2001
@@ -0,0 +1,1174 @@
+#!/usr/bin/env python
+"""
+Compiler for CML2
+
+by Eric S. Raymond,
+"""
+import sys
+
+if sys.version[0] < '2':
+ print "Python 2.0 or later is required for this program."
+ sys.exit(0)
+
+import string, os, getopt, shlex, cPickle, cml, cStringIO
+
+# Globals
+debug = 0; errors = 0; profile = 0
+outfile = "rules.out"
+requirements = []
+dictionary = {}
+bad_symbols = {}
+bool_tests = []
+help_dict = {}
+depth = 0
+start = prefix = banner = ""
+trit_tie = help_tie = icon = None
+warndepend = []
+forward_private = []
+explicit_ancestors = {}
+expression_parser = None # Just to make this a global
+
+# Lexical analysis
+_keywords = (
+ 'banner', 'choices', 'condition', 'debug',
+ 'default', 'dependent', 'derive', 'enum',
+ 'explanation', 'explanations', 'icon', 'menu',
+ 'menus', 'nohelp', 'on', 'prefix',
+ 'private', 'prohibit', 'range', 'require',
+ 'start', 'suppress', 'symbols', 'text',
+ 'trits', 'unless', 'warndepend'
+ )
+_ternaryops = ('?', ':')
+_arithops = ('*', '+', '-')
+_boolops = ('and', 'or', 'implies')
+_relops = ('==', '!=', '<', '>', '>=', '<=')
+_termops = ('|', '&', '$') # min, max, similarity
+_operators = _termops + _relops + _boolops + _arithops + _ternaryops + ("(", ")")
+_tritvals = ("n", "m", "y")
+_atoms = ("trit", "string", "decimal", "hexadecimal")
+_suffixes = ("&", "?", "!", "%", "@", "$")
+
+class Token:
+ "CML2's internal token type."
+ def __init__(self, type, attr=None):
+ self.type = type
+ self.attr = attr
+ if debug > 1: print "CML token: ", `self`
+ def __repr__(self):
+ if self.type == "EOF":
+ return "EOF"
+ elif self.attr is not None:
+ return self.type + "=" + `self.attr`
+ else:
+ return self.type
+ def __cmp__(self, o):
+ return cmp(self.type, o)
+ def __getitem__(self, i):
+ raise IndexError
+
+class lexwrapper(shlex.shlex):
+ "Lexer subclass that returns Tokens with type-annotation information."
+ def __init__(self, stream, file):
+ # This is a speed hack....
+ file_contents = cStringIO.StringIO(stream.read())
+ stream.close()
+ shlex.shlex.__init__(self, file_contents, file)
+
+ def lex_token(self):
+ # Get a (type, attr) token tuple, handling inclusion
+ raw = self.get_token()
+ if type(raw) is not type(""): # Pushed-back token
+ return raw
+ elif not raw:
+ return Token("EOF")
+ elif raw[0] in self.quotes:
+ return Token('string', raw[1:-1])
+ elif raw in _tritvals:
+ return Token('trit', raw)
+ elif len(raw) > 2 and \
+ raw[0] == '0' and raw[1] == 'x' and raw[2] in string.hexdigits:
+ return Token('hexadecimal', long(raw[2:], 16))
+ elif raw[0] in string.digits:
+ return Token('decimal', int(raw))
+ elif raw in ('!', '=', '<', '>'): # Relational tests
+ next = self.get_token()
+ if next == '=':
+ return Token(raw+next)
+ else:
+ self.push_token(next)
+ return Token('word', raw)
+ elif raw == 'text':
+ data = ""
+ while 1:
+ line = self.instream.readline()
+ if line == "" or line == ".\n": # Terminated by dot.
+ break
+ if line[0] == '.':
+ line = line[1:]
+ data = data + line
+ return Token("text", data)
+ elif raw == 'icon':
+ data = ""
+ while 1:
+ line = self.instream.readline()
+ if line == "" or line == "\n": # Terminated by blank line
+ break
+ data = data + line
+ self.push_token(data)
+ return Token(raw)
+ elif raw in _keywords or raw in _operators:
+ return Token(raw)
+ else:
+ # Nasty hack alert. If there is a declared prefix for the
+ # rulebase, ignore it as a prefix of names. This will
+ # enable us to be backward-compatible with names like like
+ # CONFIG_3C515 that have leading numerics when stripped.
+ if prefix and raw[:len(prefix)] == prefix:
+ raw = raw[len(prefix):]
+ return Token('word', raw)
+
+ def complain(self, str):
+ # Report non-fatal parse error; format like C compiler message.
+ global errors
+ if not debug and not errors:
+ sys.stderr.write('\n')
+ sys.stderr.write(self.error_leader() + " " + str + "\n")
+ errors = errors + 1
+
+ def croak(self, str):
+ # Report a fatal parse error and die
+ self.complain(str)
+ sys.exit(1)
+
+ def demand(self, type, attr=None):
+ # Require a given token or token type, croak if we don't get it
+ tok = self.lex_token()
+ if tok.type == "EOF":
+ self.croak("premature EOF")
+ elif attr is not None and tok.attr != attr:
+ self.croak("syntax error, saw `%s' while expecting `%s'" % (tok, attr))
+ elif tok.type != type:
+ self.croak("syntax error, expecting token of type `%s' (actually saw %s=%s)" % (type, tok.type, tok.attr))
+ else:
+ return tok.attr
+
+ def sourcehook(self, newfile):
+ # Override the hook in the shlex class
+ try:
+ if newfile[0] == '"':
+ newfile = newfile[1:-1]
+ # This implements cpp-like semantics for relative-path inclusion.
+ if type(self.infile) is type("") and not os.path.isabs(newfile):
+ newfile = os.path.join(os.path.dirname(self.infile), newfile)
+ return (newfile, open(newfile, "r"))
+ except IOError:
+ self.complain("I/O error while opening '%s'" % (newfile,))
+ sys.exit(1)
+
+# Parsing
+
+class ExpressionError:
+ "Express a compile-time error."
+ def __init__(self, explain):
+ self.args = ("expression error " + explain,)
+
+def parse_atom(input):
+ if debug >= 2: print "entering parse_atom..."
+ op = input.lex_token()
+ if op.type in _atoms:
+ if debug >= 2: print "parse_atom returns", op.attr
+ return op
+ elif op.type == '(':
+ sub = parse_expr_inner(input)
+ close = input.lex_token()
+ if close != ')':
+ raise ExpressionError, "while expecting a close paren"
+ else:
+ if debug >= 2: print "parse_atom returns singleton", sub
+ return sub
+ elif op.type in _keywords:
+ raise ExpressionError, "keyword %s while expecting atom" % op.type
+ elif op.type == 'word':
+ if debug >= 2: print "parse_atom returns", op.attr
+ return op
+
+def parse_term(input):
+ if debug >= 2: print "entering parse_term..."
+ left = parse_atom(input)
+ op = input.lex_token()
+ if op.type not in _termops:
+ input.push_token(op)
+ if debug >= 2: print "parse_term returns singleton", left
+ return left
+ right = parse_term(input)
+ expr = (op.type, left, right)
+ if debug >= 2: print "parse_term returns", expr
+ return expr
+
+def parse_relational(input):
+ if debug >= 2: print "entering parse_relational..."
+ left = parse_term(input)
+ op = input.lex_token()
+ if op.type not in _relops:
+ input.push_token(op)
+ if debug >= 2: print "parse_relational returns singleton", left
+ return left
+ right = parse_term(input)
+ expr = (op.type, left, right)
+ if debug >= 2: print "parse_relational returns", expr
+ return(op.type, left, right)
+
+def parse_assertion(input):
+ if debug >= 2: print "entering parse_assertion..."
+ negate = input.lex_token()
+ if negate.type == 'not':
+ return ('not', parse_relational(input))
+ input.push_token(negate)
+ return parse_relational(input)
+
+def parse_conjunct(input):
+ if debug >= 2: print "entering parse_conjunct..."
+ left = parse_assertion(input)
+ op = input.lex_token()
+ if op.type != 'and':
+ input.push_token(op)
+ if debug >= 2: print "parse_conjunct returns singleton", left
+ return left
+ else:
+ expr = ('and', left, parse_conjunct(input))
+ if debug >= 2: print "parse_conjunct returns", expr
+ return expr
+
+def parse_disjunct(input):
+ if debug >= 2: print "entering parse_disjunct..."
+ left = parse_conjunct(input)
+ op = input.lex_token()
+ if op.type != 'or':
+ input.push_token(op)
+ if debug >= 2: print "parse_disjunct returns singleton", left
+ return left
+ else:
+ expr = ('or', left, parse_disjunct(input))
+ if debug >= 2: print "parse_disjunct returns", expr
+ return expr
+
+def parse_factor(input):
+ if debug >= 2:
+ print "entering parse_factor..."
+ left = parse_disjunct(input)
+ op = input.lex_token()
+ if op.type != 'implies':
+ input.push_token(op)
+ if debug >= 2: print "parse_factor returns singleton", left
+ return left
+ else:
+ expr = ('implies', left, parse_disjunct(input))
+ if debug >= 2: print "parse_factor returns", expr
+ return expr
+
+def parse_summand(input):
+ if debug >= 2: print "entering parse_summand..."
+ left = parse_factor(input)
+ op = input.lex_token()
+ if op.type != '*':
+ input.push_token(op)
+ if debug >= 2: print "parse_summand returns singleton", left
+ return left
+ else:
+ expr = ('*', left, parse_expr_inner(input))
+ if debug >= 2: print "parse_summand returns", expr
+ return expr
+
+def parse_ternary(input):
+ if debug >= 2: print "entering parse_ternary..."
+ guard = parse_summand(input)
+ op = input.lex_token()
+ if op.type != '?':
+ input.push_token(op)
+ if debug >= 2: print "parse_ternary returns singleton", guard
+ return guard
+ else:
+ trueval = parse_summand(input)
+ op = input.lex_token()
+ if op.type != ':':
+ raise ExpressionError("while expecting : in ternary")
+ falseval = parse_summand(input)
+ expr = ('?', guard, trueval, falseval)
+ if debug >= 2: print "parse_ternary returns", expr
+ return expr
+
+def parse_expr_inner(input):
+ if debug >= 2: print "entering parse_inner_expr..."
+ left = parse_ternary(input)
+ op = input.lex_token()
+ if op.type not in ('+', '-'):
+ input.push_token(op)
+ if debug >= 2: print "parse_expr_inner returns singleton", left
+ return left
+ else:
+ expr = (op.type, left, parse_expr_inner(input))
+ if debug >= 2: print "parse_expr_inner returns", expr
+ return expr
+
+def parse_expr(input):
+ "Parse an expression."
+ try:
+ exp = parse_expr_inner(input)
+ return exp
+ except ExpressionError, exp:
+ input.croak(exp.args[0])
+ return None
+
+# Expression parsing ends here
+
+def pure_conjunction(guard):
+ if type(guard) is not type(()):
+ return 1
+ elif guard[0] == 'and' or guard[0] in _relops:
+ return pure_conjunction(guard[1]) and pure_conjunction(guard[2])
+ else:
+ return 0
+
+def make_dependent(guard, symbol):
+ "Create a dependency lnk, indirecting properly through menus."
+ if debug > 2:
+ print "Making %s dependent on %s" % (symbol.name, guard.name)
+ # If symbol is a menu, we'd really like to create a dependency link
+ # for each of its children. But they won't be defined at this point
+ # if the reference is forward.
+ symbol.ancestors.append(guard)
+ guard.dependents.append(symbol)
+
+def parse(input, baton):
+ # Parse an entire CML program
+ global debug, start, requirements, dictionary, bad_symbols, depth
+ global help_dict, prefix, banner, icon, trit_tie, help_tie
+ global warndepend, explicit_ancestors
+ input.source = "source"
+ if debug:
+ print "Calling parse()"
+ input.debug = 1
+ while 1:
+ if not debug and not errors:
+ baton.twirl()
+ leader = input.lex_token()
+ if debug > 1: print "Parsing declaration beginning with %s..." % (leader,)
+ if leader.type == "EOF":
+ break
+ elif leader.type == "start":
+ start = input.lex_token().attr
+ elif leader.type in ("symbols", "menus", "explanations"):
+ deduced_type = None
+ if leader.type == "menus":
+ deduced_type = "menu"
+ elif leader.type == "explanations":
+ deduced_type = "explanation"
+ while 1:
+ tok = input.lex_token()
+ if tok.type == "word":
+ name = tok.attr
+ else:
+ input.push_token(tok)
+ break
+ prompt = input.demand("string")
+
+ if dictionary.has_key(name):
+ ref = dictionary[name]
+ input.complain('duplicate symbols %s (see "%s", line %d)'
+ % (name, ref.file, ref.lineno))
+ else:
+ dictionary[name] = cml.ConfigSymbol(name,
+ deduced_type,
+ None, prompt,
+ input.infile,
+ input.lineno)
+ explicit_ancestors[dictionary[name]] = []
+ # These symbols may be followed by optional help text
+ tok = input.lex_token()
+ if tok.type == "text":
+ dictionary[name].helptext = tok.attr
+ else:
+ input.push_token(tok)
+ if debug:
+ print "%d symbols read" % (len(dictionary),)
+ elif leader.type == "unless":
+ guard = parse_expr(input)
+ bool_tests.append((guard, input.infile, input.lineno))
+ input.demand("suppress")
+ dependent = input.lex_token()
+ make_dep = 0
+ if dependent.type == "dependent":
+ make_dep = 1
+ if not pure_conjunction(guard):
+ input.complain("illegal guard clause")
+ else:
+ input.push_token(dependent)
+ list = parse_wordlist(input)
+ list.reverse()
+ for symbol in list:
+ if make_dep:
+ #if debug: print "Creating dependencies on %s" % (guard,)
+ explicit_ancestors[symbol].append(guard)
+ else:
+ # Add it to ordinary visibility constraints
+ if symbol.visibility:
+ symbol.visibility = ('and', guard, symbol.visibility)
+ else:
+ symbol.visibility = guard
+ elif leader.type == "menu":
+ name = input.demand("word")
+ list = parse_wordlist(input, 1)
+ if not dictionary.has_key(name):
+ input.complain("%s is not a declared menu ID" % name)
+ #elif dictionary[name].items:
+ # input.complain("more than one declaration of %s" % name)
+ else:
+ entry = dictionary[name]
+ entry.items += list
+ for symbol in list:
+ if symbol.menu:
+ input.complain("symbol %s in %s occurs in another menu (%s)"
+ % (symbol.name, name, symbol.menu.name))
+ else:
+ symbol.menu = dictionary[name]
+ elif leader.type == "choices":
+ name = input.demand("word")
+ list = parse_wordlist(input)
+ input.demand('default')
+ default = input.demand("word")
+ if not dictionary.has_key(name):
+ input.complain("%s is not a declared menu ID" % (name,))
+ elif not dictionary.has_key(default):
+ input.complain("default %s must be a known symbol"%(`default`,))
+ elif dictionary[default] not in list:
+ input.complain("default %s must be in the menu" % (`default`,))
+ else:
+ dictionary[name].default = dictionary[default]
+ dictionary[name].items = list
+ dictionary[name].type = "choices"
+ for symbol in list:
+ if symbol.menu:
+ input.complain("symbol %s occurs in another menu (%s)"
+ % (symbol.name, symbol.menu.name))
+ else:
+ symbol.menu = dictionary[name]
+ elif leader.type == "derive":
+ name = input.demand("word")
+ input.demand("word", "from")
+ expr = parse_expr(input)
+ if dictionary.has_key(name):
+ input.complain("symbol %s is already defined" % (name,))
+ else:
+ dictionary[name] = cml.ConfigSymbol(name,
+ None, expr, None,
+ input.infile, input.lineno)
+ if name in forward_private:
+ dictionary[name].private = 1
+ forward_private.remove(name)
+ elif leader.type in ("require", "prohibit"):
+ expr = parse_expr(input)
+ if leader.type == "prohibit":
+ expr = ('==', expr, cml.n)
+ next = input.lex_token()
+ if next.type != 'explanation':
+ input.push_token(next)
+ msg = None
+ else:
+ expl = input.lex_token()
+ if expl.type != 'word':
+ input.complain("while expecting a word of explanation, I see %s" % (`expl`,))
+ continue
+ if not dictionary.has_key(expl.attr):
+ input.complain("unknown symbol where explanation expected")
+ elif dictionary[expl.attr].type != 'explanation':
+ input.complain("expecting an explanation symbol here")
+ else:
+ msg = dictionary[expl.attr].prompt
+ requirements.append(cml.Requirement(expr, msg, input.infile, input.lineno))
+ bool_tests.append((expr, input.infile, input.lineno))
+ elif leader.type == "default":
+ symbol = input.demand("word")
+ input.demand("word", "from")
+ expr = parse_expr(input)
+ if not dictionary.has_key(symbol):
+ input.complain("%s is not a valid symbol to default"%(symbol,))
+ elif dictionary[symbol].default:
+ input.complain("%s already has a default" % (symbol,))
+ else:
+ entry = dictionary[symbol]
+ entry.default = expr
+ next = input.lex_token()
+ if next.type == "range":
+ entry.range = []
+ while 1:
+ low = input.lex_token()
+ if low.type in _keywords:
+ input.push_token(low)
+ break
+ elif low.type in ("decimal", "hexadecimal"):
+ low = low.attr
+ else:
+ input.complain("bad token %s where range literal expected" % (low.attr))
+ rangesep = input.lex_token()
+ if rangesep.type in _keywords:
+ entry.range.append(low)
+ input.push_token(rangesep)
+ break
+ elif rangesep.type in ("decimal", "hexadecimal"):
+ entry.range.append(low)
+ input.push_token(rangesep)
+ continue
+ elif rangesep.type == '-':
+ high = input.lex_token()
+ if high.type in ("decimal", "hexadecimal"):
+ high = high.attr
+ entry.range.append((low, high))
+ continue
+ else:
+ input.croak("malformed range")
+ break
+ elif next.type == "enum":
+ entry.range = []
+ entry.enum = 1
+ while 1:
+ name = input.lex_token()
+ if name.type in _keywords:
+ input.push_token(name)
+ break
+ elif name.type != 'word':
+ input.complain("bad token %s where enum name expected" % (name.attr))
+ continue
+ elif not dictionary.has_key(name.attr):
+ input.croak("unknown symbol in enum")
+ else:
+ name = dictionary[name.attr].prompt
+ input.demand('word', "=")
+ value = input.lex_token()
+ if value.type in ("decimal", "hexadecimal"):
+ value = value.attr
+ entry.range.append((name, value))
+ continue
+ else:
+ input.croak("malformed enum")
+ else:
+ input.push_token(next)
+ continue
+ elif leader.type == 'private':
+ while 1:
+ nxt = input.lex_token()
+ if nxt.type != 'word':
+ input.push_token(nxt)
+ break
+ if dictionary.has_key(nxt.attr):
+ dictionary[nxt.attr].private = 1
+ else:
+ forward_private.append(nxt.attr)
+ elif leader.type == 'debug':
+ debug = input.lex_token().attr
+ elif leader.type == 'prefix':
+ prefix = input.lex_token().attr
+ elif leader.type == 'banner':
+ banner = dictionary[input.lex_token().attr].prompt
+ elif leader.type == 'icon':
+ if icon:
+ input.complain("multiple icon declarations")
+ icon = input.lex_token().attr
+ elif leader.type == 'condition':
+ flag = input.lex_token()
+ input.demand("on")
+ val = None
+ switch = input.lex_token()
+ if switch.type in ("decimal", "hexadecimal"):
+ val = int(switch.attr)
+ elif switch.type == "string":
+ val = switch.attr
+ elif switch.type == "trit":
+ val = (switch.attr == "y") # No flag is module-valued yet
+ elif not dictionary.has_key(switch.attr):
+ input.complain("unknown symbol in condition starement")
+ continue
+ # Someday is today
+ if flag == "trits":
+ if val:
+ trit_tie = val
+ else:
+ trit_tie = dictionary[switch.attr]
+ trit_tie.vital = 1
+ elif flag == "nohelp":
+ help_tie = dictionary[switch.attr]
+ else:
+ input.complain("unknown flag %s in condition statement" % (flag,))
+ elif leader.type == 'warndepend':
+ iffy = parse_wordlist(input)
+ for symbol in iffy:
+ warndepend.append(symbol)
+ else:
+ input.croak("syntax error, unknown statement %s" % (leader.attr,))
+
+def parse_wordlist(input, do_nesting=None):
+ # Get a nonempty list of config symbols and menu ids.
+ # Interpret the {} shorthand if second argument is nonempty
+ global requirements
+ condition_stack = [] # Stack of active conditions for {} shorthand
+ list = [] # Result list
+ entry = None # Last symbol resolved
+ while 1:
+ symbol = input.lex_token()
+ if not symbol.type in ("word",) + _suffixes:
+ #if debug > 1:
+ # print "parse_wordlist() terminates returning %s and pushes keyword %s" % (list, symbol.type)
+ input.push_token(symbol)
+ break
+ elif symbol.attr == '}':
+ if not do_nesting:
+ input.complain("sublists aren't allowed outside menus")
+ elif entry:
+ condition_stack = condition_stack[0:-1]
+ continue
+ elif symbol.type == '?': # This is also an operator
+ if not do_nesting:
+ input.complain("? type suffix is not allowed outside menus")
+ elif entry:
+ entry.type = 'trit'
+ continue
+ elif symbol.attr == '!':
+ if not do_nesting:
+ input.complain("! type suffix is not allowed outside menus")
+ elif entry:
+ entry.type = 'trit'
+ entry.vital = 1
+ continue
+ elif symbol.attr == '%':
+ if not do_nesting:
+ input.complain("% type suffix is not allowed outside menus")
+ elif entry:
+ entry.type = 'decimal'
+ continue
+ elif symbol.attr == '@':
+ if not do_nesting:
+ input.complain("@ type suffix is not allowed outside menus")
+ elif entry:
+ entry.type = 'hexadecimal'
+ continue
+ elif symbol.type == '$': # This is also an operator
+ if not do_nesting:
+ input.complain("$ type suffix is not allowed outside menus")
+ elif entry:
+ entry.type = 'string'
+ continue
+ elif symbol.attr == '{':
+ if not do_nesting:
+ input.complain("sublists aren't allowed outside menus")
+ elif entry:
+ if entry.type == "string":
+ input.complain("string symbol is not a legal submenu guard")
+ else:
+ condition_stack.append(entry)
+ continue
+ elif dictionary.has_key(symbol.attr):
+ entry = dictionary[symbol.attr]
+ if entry.type is None:
+ entry.type = "bool"
+ list.append(entry)
+ if do_nesting:
+ entry.depth = len(condition_stack)
+ if condition_stack:
+ make_dependent(condition_stack[-1], entry)
+ else:
+ input.complain("unknown symbol %s in wordlist" % (symbol,))
+ # Fall through here in case there is a following {.
+ # The wrong condition will end up getting set, but
+ # at least the parse can continue detecting errors.
+ # input.croak("unknown symbol %s in wordlist" % (symbol,))
+ #raise SystemExit, 1
+ if not list:
+ input.complain("syntax error, expected a nonempty word list")
+ # Because word lists are always the trailing element of a declaration,
+ # we don't need to resync on error here. Returning an empty list
+ # will allow the parse to proceed, catching more errors.
+ return list
+
+# Functions for validating the parse tree
+
+def simple_error(file, line, errmsg):
+ global errors
+ if not debug and not errors:
+ sys.stderr.write('\n')
+ sys.stderr.write(error_leader(file, line) + errmsg)
+ errors = errors + 1
+
+def validate_boolean(expr, file, line, ok=0):
+ # Check for ambiguous boolean expr terms.
+ if isinstance(expr, cml.ConfigSymbol):
+ if expr.type in ("trit", "decimal", "hexadecimal") and not ok:
+ simple_error(file, line, "test of %s is ambiguous\n" % (expr.name,))
+ elif type(expr) is type(()):
+ validate_boolean(expr[1], file, line, expr[0] in _relops)
+ validate_boolean(expr[2], file, line, expr[0] in _relops)
+
+def validate_expr(expr, file, line):
+ # Check for bad type combinations in expressions
+ global errors
+ # Return a leaf node type, inaccurate but good enough for
+ # consistency checking.
+ if isinstance(expr, cml.ConfigSymbol):
+ if expr.is_numeric():
+ return "integer"
+ elif expr.is_logical():
+ return "trit"
+ else:
+ return expr.type
+ elif isinstance(expr, cml.trit):
+ return "trit"
+ elif type(expr) in (type(0), type(0L)):
+ return "integer"
+ elif type(expr) == type(""):
+ return "string"
+ elif expr[0] == '?':
+ left = validate_expr(expr[2], file, line)
+ right = validate_expr(expr[3], file, line)
+ if left != right:
+ simple_error(file, line, "types %s and %s don't match in ternary expression\n" % (left, right))
+ return left
+ elif expr[0] in _arithops:
+ left = validate_expr(expr[1], file, line)
+ if left not in ("integer", "trit"):
+ simple_error(file, line, "bad %s left operand for arithmetic operator %s\n" % (left, expr[0]))
+ right = validate_expr(expr[2], file, line)
+ if right not in ("integer", "trit"):
+ simple_error(file, line, "bad %s right operand for arithmetic operator %s\n" % (right, expr[0]))
+ return "integer"
+ elif expr[0] in _boolops or expr[0] in _termops:
+ left = validate_expr(expr[1], file, line)
+ if left != "trit":
+ simple_error(file, line, "bad %s left operand for trit operator %s\n" % (left, expr[0]))
+ right = validate_expr(expr[2], file, line)
+ if right != "trit":
+ simple_error(file, line, "bad %s right operand for trit operator %s\n" % (right, expr[0]))
+ return "trit"
+ elif expr[0] in _relops:
+ left = validate_expr(expr[1], file, line)
+ right = validate_expr(expr[2], file, line)
+ if left != right:
+ simple_error(file, line, "types %s and %s don't match in %s expression\n" % (expr[0], left, right))
+ return "trit"
+ else:
+ if not debug and not errors:
+ sys.stderr.write('\n')
+ sys.stderr.write(error_leader(file, line) + \
+ "internal error: unexpected node %s in expression\n" % expr[0])
+ errors = errors + 1
+
+def symbols_by_preorder(node):
+ # Get a list of config symbols in natural traverse order
+ if node.items:
+ sublists = map(symbols_by_preorder, node.items)
+ flattened = []
+ for m in sublists:
+ flattened = flattened + m
+ return flattened
+ else:
+ return [node.name]
+
+def resolve(exp):
+ # Replace symbols in an expr with resolved versions
+ global bad_symbols, errors
+ if type(exp) is type(()):
+ if exp[0] == 'not':
+ return ('not', resolve(exp[1]))
+ elif exp[0] == '?':
+ return ('?', resolve(exp[1]), resolve(exp[2]), resolve(exp[3]))
+ else:
+ return (exp[0], resolve(exp[1]), resolve(exp[2]))
+ elif isinstance(exp, cml.ConfigSymbol): # Symbol, already resolved
+ return exp
+ elif isinstance(exp, cml.trit): # Trit, already resolved
+ return exp
+ elif type(exp) in (type(0), type("")): # Constant, already resolved
+ return exp
+ elif not hasattr(exp, "type"):
+ sys.stderr.write("Symbol %s has no type.\n" % (exp,))
+ errors = errors + 1
+ return None
+ elif exp.type == 'trit':
+ if exp.attr == 'y':
+ return cml.y
+ elif exp.attr == 'm':
+ return cml.m
+ elif exp.attr == 'n':
+ return cml.n
+ elif exp.type in _atoms:
+ return exp.attr
+ elif dictionary.has_key(exp.attr):
+ return dictionary[exp.attr]
+ else:
+ bad_symbols[exp.attr] = 1
+ return None
+
+def ancestry_check(symbol, counts):
+ # Check for circular ancestry chains
+ # print "Checking ancestry of %s: %s" % (symbol, symbol.ancestors)
+ counts[symbol] = 1
+ for ancestor in symbol.ancestors:
+ if counts.has_key(ancestor.name):
+ raise NameError, symbol.name + " through " + ancestor.name
+ else:
+ map(lambda symbol, counts=counts: ancestry_check(symbol, counts), symbol.ancestors)
+
+def circularity_check(name, exp, counts):
+ # Recursive circularity check...
+ # print "Expression check of %s against %s" % (name, exp)
+ if type(exp) is type(()):
+ if exp[0] == '?':
+ circularity_check(name, exp[1], counts)
+ circularity_check(name, exp[2], counts)
+ circularity_check(name, exp[3], counts)
+ else:
+ circularity_check(name, exp[1], counts)
+ circularity_check(name, exp[2], counts)
+ elif isinstance(exp, cml.ConfigSymbol) and name == exp.name:
+ raise NameError, name
+ elif hasattr(exp, "default"):
+ vars = cml.flatten_expr(exp.default)
+ # print "Components of %s default: %s" % (exp.name vars)
+ for v in vars:
+ if v.name == name:
+ raise NameError, name
+ elif counts.has_key(v.name):
+ pass # Already checked this branch
+ else:
+ counts[v.name] = 1
+ circularity_check(name, v.name, counts)
+
+def transitive_depends(guard, entry):
+ "Test transitive completion of dependency."
+ # We don't also check visibility, because visibility guards can
+ # have disjunctions and it would be wrong to propagate up both branches.
+ if entry.menu:
+ searchpath = entry.ancestors + entry.menu.ancestors
+ else:
+ searchpath = entry.ancestors
+ if guard in searchpath:
+ return 1
+ for x in searchpath:
+ if transitive_depends(x, guard):
+ return 1
+ return 0
+
+def error_leader(file, line):
+ global errors
+ return '"%s", line %d:' % (file, line)
+
+def postcomplain(msg):
+ global errors
+ if not debug and not errors:
+ sys.stderr.write('\n')
+ sys.stderr.write("cmlcompile: " + msg)
+ errors += 1
+
+def main(debug, outfile, arguments):
+ "Sequence a compilation"
+ global profile, expression_parser, requirements, bad_symbols, errors
+
+ if not debug:
+ baton = cml.Baton("Compiling rules, please wait")
+ else:
+ baton = None
+
+ if profile:
+ import time
+ now = zerotime = basetime = time.time();
+
+ # Parse everything
+ try:
+ if not arguments:
+ parse(lexwrapper(sys.stdin, "stdin"), baton)
+ else:
+ for file in arguments:
+ parse(lexwrapper(open(file), file), baton)
+ except IOError, details:
+ sys.stderr.write("cmlcompile: I/O error, %s\n" % (details,))
+ raise SystemExit, 1
+
+
+ if profile:
+ now = time.time();
+ print "Rule parsing:", now - basetime
+ basetime = now
+ if not debug and not errors:
+ baton.twirl()
+
+ # Sanity and consistency checks:
+
+ # We need a main menu declaration
+ if not start:
+ postcomplain("missing a start declaration.\n")
+ raise SystemExit, 1
+ elif not dictionary.has_key(start):
+ postcomplain("declared start menu '%s' does not exist.\n"%(start,))
+ raise SystemExit, 1
+ if not debug and not errors:
+ baton.twirl()
+
+ # Check for unfulfilled forward declarations
+ if forward_private:
+ postcomplain("symbols declared private but never defined: %s\n" % forward_private)
+
+ # Check that all symbols other than those on the right side of
+ # derives are either known or themselves derived.
+ for entry in dictionary.values():
+ if entry.visibility:
+ entry.visibility = resolve(entry.visibility)
+ if entry.default:
+ entry.default = resolve(entry.default)
+ requirements = map(lambda x: cml.Requirement(resolve(x.predicate), x.message, x.file, x.line), requirements)
+ if bad_symbols:
+ postcomplain("%d symbols could not be resolved:\n"%(len(bad_symbols),))
+ sys.stderr.write(`bad_symbols.keys()` + "\n")
+ if not debug and not errors:
+ baton.twirl()
+
+ # Now associate a type with all derived symbols. Since such symbols
+ # are never queried, the only place this is used is in formatting
+ # the symbol's appearance in the final configuration file.
+ #
+ # (The outer loop forces this to keep spinning until it has done all
+ # possible deductions, even in the presence of forward declarations.)
+ while 1:
+ deducecount = 0
+ for entry in dictionary.values():
+ if entry.is_derived() and not entry.type:
+ derived_type = None
+ if entry.default == cml.m:
+ derived_type = "trit"
+ elif entry.default == cml.n or entry.default == cml.y:
+ derived_type = "bool"
+ elif type(entry.default) is type(()):
+ if entry.default[0] in _boolops + _relops:
+ derived_type = "bool"
+ elif entry.default[0] in _termops:
+ derived_type = "trit"
+ elif entry.default[0] in _arithops:
+ derived_type = "decimal"
+ elif entry.default[0] == '?':
+ if isinstance(entry.default[2], cml.ConfigSymbol):
+ derived_type = entry.default[2].type
+ elif isinstance(entry.default[2], cml.trit):
+ derived_type = "trit"
+ elif type(entry.default[2]) in (type(0), type(0L)):
+ derived_type = "decimal"
+ elif type(entry.default[2]) is type(""):
+ derived_type = "string"
+ elif type(entry.default) is type(0):
+ derived_type = "decimal" # Could be hex
+ elif isinstance(entry.default, cml.ConfigSymbol):
+ derived_type = entry.default.type
+ if derived_type:
+ entry.type = derived_type
+ deducecount = 1
+ if not deducecount:
+ break
+
+ for entry in dictionary.values():
+ if entry.is_derived() and not entry.type:
+ postcomplain(error_leader(entry.file, entry.lineno) + \
+ 'can\'t deduce type for derived symbol %s\n' % (entry.name,))
+ if not debug and not errors:
+ baton.twirl()
+
+ # Now run our ambiguity check on all unless expressions.
+ for (guard, file, line) in bool_tests:
+ validate_boolean(resolve(guard), file, line)
+ if not debug and not errors:
+ baton.twirl()
+
+ # Handle explicit dependencies
+ for symbol in explicit_ancestors.keys():
+ for guard in explicit_ancestors[symbol]:
+ for guardsymbol in cml.flatten_expr(resolve(guard)):
+ make_dependent(guardsymbol, symbol)
+ if not debug and not errors:
+ baton.twirl()
+
+
+ # Check that every symbol in the table is referenced from a menu
+ # exactly once (except explanations). We checked for multiple
+ # inclusions at parse-tree generation time. Now...
+ bad_symbols = {}
+ for entry in dictionary.values():
+ if entry.prompt and entry.type!='explanation' and not entry.menu and \
+ entry.name != start and entry.prompt != banner:
+ bad_symbols[entry.name] = 1
+ if bad_symbols:
+ postcomplain("%d symbols have no menus"%(len(bad_symbols),))
+ sys.stderr.write("\n" +`bad_symbols.keys()` + "\n")
+ if not debug and not errors:
+ baton.twirl()
+
+ # Check for forward references in visibility constraints.
+ # Note: this is *not* a fatal error.
+ preorder = symbols_by_preorder(dictionary[start])
+ for i in range(len(preorder)):
+ key = preorder[i]
+ forwards = []
+ for guards in cml.flatten_expr(dictionary[key].visibility):
+ if guards.name in preorder[i+1:]:
+ forwards.append(guards.name)
+ if forwards:
+ sym = dictionary[key]
+ postcomplain('"%s", line %d: %s requires %s forward\n' % (sym.file, sym.lineno, key, forwards))
+ errors -= 1
+ if not debug and not errors:
+ baton.twirl()
+
+ # Check for circularities in derives and defaults.
+ try:
+ for entry in dictionary.values():
+ if entry.default:
+ expr_counts = {}
+ circularity_check(entry.name, entry.default, expr_counts)
+ if entry.visibility:
+ expr_counts = {}
+ circularity_check(entry.name, entry.visibility, expr_counts)
+ if entry.ancestors:
+ ancestor_counts = {}
+ ancestry_check(entry, ancestor_counts)
+ except NameError:
+ postcomplain("%s depends on itself\n"%(sys.exc_value,))
+ if not debug and not errors:
+ baton.twirl()
+
+ # Various small hacks combined here to save traversal overhead.
+ for entry in dictionary.values():
+ # Validate the formulas for boolean derived symbols.
+ if entry.is_derived():
+ if entry.menu:
+ postcomplain("menu %s contains derived symbol %s\n"%(entry.menu.name, `entry`))
+ if entry.type == "bool":
+ validate_boolean(entry.default, entry.file, entry.lineno)
+ else:
+ validate_expr(entry.default, entry.file, entry.lineno)
+ continue
+ #if not entry.default is None:
+ # validate_expr(entry.default, entry.file, entry.lineno)
+ # Give childless menus the `message' type. This will make
+ # it easier for the front end to do special things with these objects.
+ if entry.type == 'menu':
+ if not entry.items:
+ entry.type = 'message'
+ continue
+ # Check for type messages between symbols and their defaults.
+ if entry.is_symbol() and not entry.default is None:
+ if type(entry.default) in (type(0L),type(0)) and not entry.is_numeric():
+ postcomplain("%s is not of numeric type but has numeric constant default\n" % entry.name)
+ elif type(entry.default) == type("") and not entry.type == "string":
+ postcomplain("%s is not of string type but has string constant default\n" % entry.name)
+
+ # Symbols with decimal/hexadecimal/string type must have a default.
+ if entry.type in ("decimal", "hexadecimal", "string"):
+ if entry.default is None:
+ postcomplain("%s needs a default\n"%(`entry`,))
+ elif entry.range:
+ # This member can be used by front ends to determine whether the
+ # entry's value should be queried with a pulldown of its values.
+ entry.discrete = not filter(lambda x: type(x) is type(()), entry.range)
+ # This member can be used by front ends to determine whether the
+ # entry's value should be queried with a pulldown of enums.
+ entry.enum = type(entry.range[0]) is type(()) \
+ and type(entry.range[0][0]) is type("")
+ # Now hack the prompts of anything dependent on a warndepend symbol
+ for guard in warndepend:
+ if entry.prompt and transitive_depends(guard, entry):
+ entry.prompt = entry.prompt + " (" + guard.name + ")"
+ if not debug and not errors:
+ baton.twirl()
+
+ # Check for constraint violations. If the defaults set up by the
+ # rule file are not consistent, it's not likely the user will make
+ # a consistent one. Don't try this if we've seen syntax errors, as
+ # they tend to produce Nones in expressions that this will barf on.
+ if not errors:
+ for wff in requirements:
+ if not cml.evaluate(wff.predicate, debug):
+ postcomplain(error_leader(wff.file, wff.line) + " constraint violation: %s\n" % `wff`)
+ if not debug and not errors:
+ baton.twirl()
+
+ # Now integrate the help references
+ for key in dictionary.keys():
+ if help_dict.has_key(key):
+ dictionary[key].helptext = help_dict[key]
+ del help_dict[key]
+ if debug:
+ missing = []
+ for entry in dictionary.values():
+ if not entry.type in ("message", "menu", "choices", "explanation") and entry.prompt and not entry.help():
+ missing.append(entry.name)
+ if missing:
+ postcomplain("The following symbols lack help entries: %s\n" % missing)
+ orphans = help_dict.keys()
+ if orphans:
+ postcomplain("The following help entries do not correspond to symbols: %s\n" % orphans)
+ if not debug and not errors:
+ baton.end("Done")
+
+ if profile:
+ now = time.time();
+ print "Sanity checks:", now - basetime
+ basetime = now
+
+ # Package everything up for pickling
+ if errors:
+ postcomplain("rulebase write suppressed due to errors.\n")
+ raise SystemExit, 1
+ else:
+ system = cml.CMLRulebase(dictionary[start], dictionary, requirements, prefix, banner, icon)
+ system.trit_tie = trit_tie
+ system.help_tie = help_tie
+
+ # Precomputation to speed up the configurator's load time
+ system.reduced = map(lambda x: x.predicate, system.constraints)
+ system.optimize_constraint_access()
+ if debug:
+ cc = dc = tc = 0
+ for symbol in system.dictionary.values():
+ if not symbol.is_derived():
+ tc = tc + 1
+ if symbol.dependents:
+ dc = dc + 1
+ if symbol.constraints:
+ cc = cc + 1
+ print "%d total symbols; %d symbols are involved in constraints; %d in dependencies." % (tc, cc, dc)
+
+ try:
+ if debug: print "cmlcompile: output directed to %s" % (outfile)
+ out = open(outfile, "wb")
+ cPickle.dump(system, out, 1)
+ out.close()
+ except:
+ postcomplain('couldn\'t open output file "%s"\n' % (outfile,))
+ sys.exit(1)
+
+ if profile:
+ now = time.time();
+ print "Rulebase output:", now - basetime
+ basetime = now
+ print "Total time:", now - zerotime
+
+if __name__ == '__main__':
+ (options, arguments) = getopt.getopt(sys.argv[1:], "o:Pv")
+ for (switch, val) in options:
+ if switch == '-o':
+ outfile = val
+ elif switch == '-P':
+ profile = 1
+ elif switch == '-v':
+ debug = debug + 1
+
+ if profile:
+ import profile
+ profile.run("main(debug, outfile, arguments)")
+ else:
+ main(debug, outfile, arguments)
+
+# That's all, folks!
diff -uNr linux.2.4.14.pristine/scripts/cmlconfigure.py linux/scripts/cmlconfigure.py
--- linux.2.4.14.pristine/scripts/cmlconfigure.py Wed Dec 31 19:00:00 1969
+++ linux/scripts/cmlconfigure.py Wed Nov 14 17:01:24 2001
@@ -0,0 +1,2701 @@
+#!/usr/bin/env python
+#
+# cmlconfigure.py -- CML2 configurator front ends
+# by Eric S. Raymond,
+#
+# Here is the actual code for the configurator front ends.
+#
+import sys
+
+if sys.version[0] < '2':
+ print "Python 2.0 or later is required for this program."
+ raise SystemExit, 1
+
+import os, string, getopt, cmd, re, time
+import cml, cmlsystem, webbrowser
+
+# Globals
+debug = list = inclusions = 0
+force_batch = force_tty = force_curses = force_x = None
+readlog = proflog = None
+banner = ""
+
+# User-visible strings in the configurator. Separated out in order to
+# support internationalization.
+_eng = {
+ "ABORTED":"Configurator aborted.",
+ "ANCESTORBUTTON":"Show ancestors of...",
+ "BACKBUTTON":"Back",
+ "BADOPTION":"cmlconfigure: unknown option on command line.\n",
+ "BADREQUIRE":"Some requirements are violated: ",
+ "BOOLEAN":"`y' and `n' can only be applied to booleans or tristates",
+ "CANCEL":"Cancel",
+ "CANNOTSET":" Can't assign this value for bool or trit symbol.",
+ "CANTGO":"Cannot go to that symbol (it's probably derived).",
+ "CHARINVAL":"Invalid character in numeric field",
+ "CMDHELP":"Command summary",
+ "CONFIRM":"Confirmation",
+ "CONSTRAINTS":"Constraints:",
+ "CURSQUERY":"Type '?' for help",
+ "CURSESSET":"Curses mode set symbol %s to value %s",
+ "DEFAULT":"Default: ",
+ "DEPENDENTBUTTON":"Show dependents of...",
+ "DERIVED":"Symbol %s is derived and cannot be set.",
+ "DONE":"Done",
+ "EDITING":"Editing %s",
+ "EFFECTS":"Side effects:",
+ "EMPTYSEARCH":"You must enter a regular expression to search for",
+ "SUPPRESSBUTTON":"Suppress",
+ "SUPPRESSOFF":"Suppression turned off",
+ "SUPPRESSON":"Suppression turned on",
+ "EXIT":"Exit",
+ "EXITCONFIRM":"[Press q to exit, any other key to continue]",
+ "FIELDEDIT":"Field Editor help",
+ "FILEBUTTON":"File",
+ "FREEZEBUTTON":"Freeze",
+ "FREEZE":"Freeze all symbols with a user-supplied value?",
+ "FREEZELABEL":"(FROZEN)",
+ "FROZEN":"This symbol has been frozen and cannot be modified.",
+ "GHELP":"g -- go to a named symbol or menu (follow g with the label)",
+ "GO":"Go",
+ "GOBUTTON":"Go to...",
+ "GOTOBYNAME":"Go to symbol by name: ",
+ "GPROMPT":"Symbol to set or edit: ",
+ "HELPBUTTON":"Help",
+ "HELPFOR":"Help for %s",
+ "HSEARCHBUTTON":"Search help text",
+ "ICAPHELP":"I -- read in and freeze a configuration (follow I with the filename)",
+ "IHELP":"i -- read in a configuration (follow i with the filename)",
+ "INCCHANGES":"%d change(s) from %s",
+ "INFO":"Information",
+ "INVISIBLE":"Symbol is invisible",
+ "LOADFILE":"Load configuration from: ",
+ "LOADBUTTON":"Load",
+ "LOADFAIL":"Loading '%s' failed, continuing...",
+ "LOADFREEZE":"Load frozen configuration from: ",
+ "MDISABLED":"Module-valued symbols are not enabled",
+ "MHELP":"m -- set the value of the current symbol to m",
+ "MNOTVALID":" m is not a valid value for %s",
+ "MORE":"(More lines omitted...)",
+ "NAVBUTTON":"Navigation",
+ "NEW":"(NEW)",
+ "NHELP":"n -- set the value of the current symbol to n",
+ "NNOTVALID":" n is not a valid value for %s",
+ "NOANCEST":"No ancestors.",
+ "NOCMDLINE":"%s is the wrong type to be set from the command line",
+ "NOCURSES":"Your Python seems to be lacking curses support.",
+ "NODEPS":"No dependents.",
+ "NOFILE":"cmlconfigure: '%s' does not exist or is unreadable.",
+ "NOHELP":"No help available for %s",
+ "NOMATCHES":"No matches.",
+ "NONEXIST":"No such symbol or menu.",
+ "NOPOP":"Can't pop back further",
+ "NOSUCHAS":"No such symbol as",
+ "NOSYMBOL":"No symbol is currently selected.",
+ "NOTKINTER":"Can't find the tkinter, falling back to curses mode...",
+ "NOTSAVED":"Configuration not saved",
+ "OK":"Operation complete",
+ "OUTOFBOUNDS":"Legal values are in %s",
+ "PAGEPROMPT":"[Press Enter to continue] ",
+ "PARAMS":" Config = %s, prefix = %s",
+ "POSTMORTEM":"The ruleset was inconsistent. A state dump is in the file `post.mortem'.",
+ "PHELP":"p -- back up to previous symbol",
+ "PRESSANY":"[Press any key to continue]",
+ "PROBLEM":"Problem",
+ "QHELP":"q -- quit, discarding changes",
+ "QUITBUTTON":"Quit",
+ "QUITCONFIRM":"Really exit without saving?",
+ "RADIOBAD":" That's not a valid selection.",
+ "DISCRETEVALS":"%s may have these values:\n",
+ "REALLY":"Really exit without saving?",
+ "ROLLBACK":"%s=%s would have violated these requirements:",
+ "SAVEAS":"Save As...",
+ "SAVEBUTTON":"Save & Exit",
+ "SAVECONFIRM":"Save confirmation",
+ "SAVEEND":"Done",
+ "SAVEFILE":"Save configuration to: ",
+ "SAVESTART":"Saving %s",
+ "SAVING":"Saving...",
+ "SEARCHBUTTON":"Search symbols",
+ "SEARCHFAIL":"No matches.",
+ "SEARCHHELP":"Search help text for: ",
+ "SEARCHSYMBOLS":"Search symbols for regular expression: ",
+ "SHELP":"s -- save the configuration (follow with a filename)",
+ "SHOW_ANC":"Show ancestors of symbol: ",
+ "SHOW_DEP":"Show dependents of symbol: ",
+ "SIDEEFFECTS":"Side Effects",
+ "SIDEFROM":"Side effects from %s:",
+ "SKIPCALLED":" Skip-to-query called from %s",
+ "SKIPEXIT":" Skip-to-query arrived at %s",
+ "SYMUNKNOWN":"cmlconfigure: unknown symbol %s\n",
+ "TERMNOTSET":"TERM is not set.",
+ "TERMTOOSMALL":"Your terminal is too small to support curses mode.",
+ "TOOLONG":"String is too long to edit. Use cmlconfigure -t.",
+ "TRIT":"`m' can only be applied to tristates",
+ "TTYQUERY":"Type '?' at any prompt for help, 'h' for command help.",
+ "TTYSUMMARY":" Command summary:",
+ "UNSUPPRESSBUTTON":"Unsuppress",
+ "UNKNOWN":"Unknown command %s -- type `h' for a command summary",
+ "UPBUTTON":"Up",
+ "VERSION":", version %s.",
+ "VISIBLE":"Symbol is visible",
+ "VISIBILITY":"Visibility: ",
+ "WELCOME":"Welcome to the %s",
+ "XHELP":"x -- exit, saving the configuration",
+ "YHELP":"y -- set the value of the current symbol to y",
+ "YNOTVALID":" y is not a valid value for %s",
+
+ "TTYHELP":"""
+Type '?' to see help text associated with the current symbol.
+Typing Return accepts the default for the query.
+
+Each prompt consists of a label, followed by a colon, followed by prompt text,
+followed by a value and a bracketed range indication. The brackets indicate
+whether the symbol is bool [] modular <> or integer/string (). The current
+value in the brackets may be blank (indicating bool or trit n), 'M' (indicating
+trit m) or an integer or string literal. If `?' follows, it means help is
+available for this symbol.
+""",
+ "CURSHELP":"""\
+Use up- and down-arrows to change the current selection. Use spacebar, Enter
+to enter a selected sub-menu, or to toggle the value of a selected boolean
+symbol, or to cycle through the possible y/m/n values of a selected tristate
+symbol, or to begin editing the value of a symbol that has string or decimal
+or hexadecimal type. Use left-arrow to back out of a menu.
+Ctrl-L refreshes the screen.
+
+'y', 'm', and 'n' set boolean or trit symbols to the corresponding values.
+
+When you are editing a symbol value, the highlight on its value field will
+switched off. A subset of Emacs's default key bindings is available to edit
+the field; to see details, enter such a field (by typing a space with the
+symbol selected) and press your tab key. Other characters will usually be
+inserted at the cursor location. Press up-arrow or down-arrow or Enter to
+stop editing a field.
+
+Type `x' to save configuration and exit, `q' to exit without saving, `s' to
+save the configuration to a named file, and `i' to read in a configuration by
+filename. -I reads in a configuration and freezes the variables.
+
+Type '?' to see any help text associated with the current symbol. Type 'h'
+to see this command summary again. Some expert commands are documented
+in separate help; press TAB from this help screen to see it.\
+""",
+ "EDITHELP":"""\
+Numbers and short strings can be edited in their display fields near the
+left edge of the screen. To edit longer strings, enter a right arrow at the
+left edge of the display field. This will pop up a wide window in which you
+can edit the value. The field editor supports a subset of Emacs's default
+key bindings.
+
+ Ctrl-A Go to left edge of window.
+ Ctrl-B Cursor left, wrapping to previous line if appropriate.
+ Ctrl-D Delete character under cursor.
+ Ctrl-E Go to right edge (nospaces off) or end of line (nospaces on).
+ Ctrl-F Cursor right, wrapping to next line when appropriate.
+ Ctrl-H Delete character backward.
+ Ctrl-J Terminate if the window is 1 line, otherwise insert newline.
+ Ctrl-K If line is blank, delete it, otherwise clear to end of line.
+ Ctrl-L Refresh screen
+ Ctrl-N Cursor down; move down one line.
+ Ctrl-O Insert a blank line at cursor location.
+ Ctrl-P Cursor up; move up one line.
+ KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N
+ KEY_BACKSPACE = Ctrl-h
+
+To leave the field editor, press Enter or carriage return, or use the up and
+down arrows. Ctrl-g leaves the field editor ant revers to the unedited value.\
+""",
+ "EXPERTHELP":"""\
+Here are the expert commands:
+
+/ -- Search for symbols matching a given regular expression in either
+ the symbol name or prompt text.
+
+g -- Go to symbol. Go directly to symbol. Do not pass go, do not collect $200.
+ If the target symbol is suppressed, clear the suppression flag.
+
+i -- Load a configuration. Set all the variables in the given config file.
+
+I -- Load a configuration. Set all the variables in the config file,
+ then freeze them so they can't be overridden.
+
+e -- Examine the value of the named symbol.
+
+S -- Toggle the suppression flag (normally on). When the suppression flag
+ is off, invisible symbols are not skipped.
+
+Type 'h' to see the help for ordinary commands.
+""",
+ "TKCMDHELP":"""\
+The main window is a configuration menu browser. It presents you with a menu of
+symbols and sub-menu buttons. If there is help available for a symbol or menu,
+there will be an active `Help' button off to the right. In the help window,
+URLS are live; clicking on them will launch a browser.
+
+You can set boolean or tristate symbols simply by clicking on the appropriate
+value. You can change the values of numeric and string symbols by editing
+their fill-in fields.
+
+In the file menu, the `Load' command allows you to load a configuration file.
+Values in the configuration file are set as though the user had selected them.
+
+In the file menu, the `Freeze' command freezes all symbols that have
+been set by user actions (including loading configuration files) so they
+won't be queried again and cannot subsequently be overridden.
+
+In the File menu, the `Save' command saves the configuration file to the
+location specified by configurator command-line options). The `Save As...'
+command saves the defconfig file (only) to a named location.
+
+The Back command in the Navigation menu (and the toolbar button) returns you to
+the menu visited before this one. When you back out of a sub-menu, the label
+on its button is highlighted in blue.
+
+The Go command in the Navigation menu moves you to a named menu, or to the
+menu containing a named symbol. After a `Go' command the target is
+highlighted blue.
+
+The Search command in the Navigation menu matches a given regular expression
+against the names and prompt text of all configuration symbols. It generates
+a menu that includes all hits, and turns off the elisions flag.
+
+The Suppress/Unsuppress command in the Navigation toggles whether suppressed
+symbols are visible or not. Normally, suppressed symbols are invisible and the
+menu entry reads `Unsuppress'. The suppression flag may also be cleared by
+using the `Go' command to visit a suppressed symbol, or by doing a Search.
+"""
+}
+
+# Eventually, do more intelligent selection using LOCALE
+lang = _eng
+
+# Shared code
+
+def cgenprompt(symbol):
+ "Generate an appropriate prompt for the given symbol."
+ value = symbol.eval()
+ if symbol.type in ("bool", "trit"):
+ if symbol.type == "trit" and configuration.trits_enabled:
+ format = "<%s>"
+ else:
+ format = "[%s]"
+ if value == cml.y:
+ return format % "Y"
+ elif value == cml.m:
+ return format % "m"
+ elif value == cml.n:
+ return format % " "
+ elif symbol.type == "choices":
+ if symbol.menuvalue:
+ return symbol.menuvalue.name
+ elif symbol.default:
+ return symbol.default.name
+ else:
+ return "??"
+ elif symbol.type in ("message", "menu"):
+ return ""
+ elif symbol.type in ("decimal", "hexadecimal", "string"):
+ return str(value)
+ else:
+ return "??"
+
+# Line-oriented interface
+
+class tty_style_menu(cmd.Cmd):
+ "A class for browsing a CML2 menu subtree with line_oriented commands."
+
+ def skip_to_query(self, function, showbase=0):
+ configuration.debug_emit(2, lang["SKIPCALLED"] % (self.current.name,))
+ if showbase:
+ if self.current.type == "menu":
+ self.menu_banner(self.current)
+ configuration.visit(self.current)
+ while 1:
+ self.current = function(self.current)
+ if self.current == configuration.start:
+ break;
+ elif self.current.frozen:
+ sys.stdout.write(self.generate_prompt(self.current) + lang["FREEZELABEL"] + "\n")
+ continue
+ elif not configuration.is_visible(self.current):
+ continue
+ elif self.current.type == "message":
+ print self.current.prompt
+ elif self.current.type in ("menu", "choices"):
+ self.menu_banner(self.current)
+ configuration.visit(self.current)
+ if not self.current.type in ("message", "menu"):
+ break;
+ configuration.debug_emit(2, lang["SKIPEXIT"] % (self.current.name,))
+ if self.current == configuration.start:
+ self.do_s(config)
+ raise SystemExit
+
+ def menu_banner(self, menu):
+ sys.stdout.write("*\n* %s: %s\n*\n" % (menu.name, menu.prompt))
+
+ def generate_prompt(self, symbol):
+ leader = " " * symbol.depth
+ genpart = cgenprompt(symbol)
+ if symbol.help and not symbol.frozen:
+ havehelp = "?"
+ else:
+ havehelp = ""
+ if inclusions and not symbol.included and symbol.is_symbol():
+ genpart += " " + lang["NEW"]
+ if symbol.type in ("bool", "trit"):
+ return leader+"%s: %s %s%s: " % (symbol.name, symbol.prompt, genpart, havehelp)
+ elif symbol.enum:
+ dflt = cml.evaluate(symbol, debug)
+ if symbol.frozen:
+ p = ""
+ else:
+ p = leader + lang["DISCRETEVALS"] % (symbol.prompt,)
+ selected = ""
+ for (label, value) in symbol.range:
+ if value == dflt:
+ selected = "(" + label + ")"
+ if not symbol.frozen:
+ p = p + leader + "%2d: %s\n" % (value, label)
+ return p + leader + "%s: %s %s%s: " % (symbol.name, symbol.prompt,selected, havehelp)
+
+ elif symbol.type in ("decimal", "hexadecimal", "string"):
+ dflt = cml.evaluate(symbol, debug)
+ return leader + "%s: %s (%s)%s: " % (symbol.name, symbol.prompt, dflt, havehelp)
+ elif symbol.type == "choices":
+ if symbol.frozen:
+ p = ""
+ else:
+ p = leader + lang["DISCRETEVALS"] % (symbol.prompt)
+ index = 0
+ selected= ""
+ for v in symbol.items:
+ index = index + 1
+ if not symbol.frozen:
+ p = p + leader + "%2d: %s%s%s\n" % (index, v.name, " " * (32 - len(v.name)), v.prompt)
+ if v.eval():
+ selected = v.name
+ return p + leader + "%s: %s (%s)%s: " % (symbol.name, symbol.prompt,selected, havehelp)
+
+ def set_symbol(self, symbol, value, freeze=0):
+ "Set the value of a symbol -- line-oriented error messages."
+ if symbol.is_numeric() and symbol.range:
+ if not configuration.range_check(symbol, value):
+ print lang["OUTOFBOUNDS"] % (symbol.range,)
+ return
+ (ok, effects, violation) = configuration.set_symbol(symbol, value, freeze)
+ if effects:
+ print lang["EFFECTS"]
+ sys.stdout.writelines(string.join(effects, "\n") + "\n\n")
+ if not ok:
+ print lang["ROLLBACK"] % (symbol.name, value)
+ if violation:
+ sys.stdout.writelines(string.join(violation, "\n") + "\n")
+
+ def page(self, text):
+ text = string.split(text, "\n")
+ pagedepth = os.environ.get("LINES")
+ if pagedepth:
+ pagedepth = int(pagedepth)
+ else:
+ pagedepth = 24
+ base = 0
+ try:
+ while base < len(text):
+ for i in range(base, base+pagedepth):
+ if i >= len(text):
+ break;
+ print text[i]
+ base = base + pagedepth
+ raw_input(lang["PAGEPROMPT"])
+ except KeyboardInterrupt:
+ print ""
+
+ def __init__(self, config=None, banner=""):
+ cmd.Cmd.__init__(self)
+ self.config = config
+ if banner and configuration.banner.find("%s") > -1:
+ self.banner = configuration.banner % banner
+ elif banner:
+ self.banner = banner
+ else:
+ self.banner = configuration.banner
+ self.current = configuration.start;
+ self.skip_to_query(configuration.next_node, 1)
+ # This handles the case that all variables were frozen.
+ self.prompt = self.generate_prompt(self.current)
+
+ def do_g(self, line):
+ if configuration.dictionary.has_key(line):
+ self.current = configuration.dictionary[line]
+ configuration.visit(self.current)
+ if not configuration.is_visible(self.current) and not self.current.frozen:
+ print lang["SUPPRESSOFF"]
+ self.suppressions = 0
+ if self.current.type in ("menu", "message"):
+ self.skip_to_query(configuration.next_node, 1)
+ else:
+ print lang["NONEXIST"]
+ def do_i(self, line):
+ file = string.strip(line)
+ try:
+ (changes, errors) = configuration.load(file, freeze=0)
+ except IOError:
+ print lang["LOADFAIL"] % file
+ else:
+ if errors:
+ print errors
+ print lang["INCCHANGES"] % (changes,file)
+ if configuration.side_effects:
+ sys.stdout.writelines(string.join(configuration.side_effects, "\n") + "\n")
+ def do_I(self, line):
+ file = string.strip(line)
+ try:
+ (changes, errors) = configuration.load(file, freeze=1)
+ except IOError:
+ print lang["LOADFAIL"] % file
+ else:
+ if errors:
+ print errors
+ print lang["INCCHANGES"] % (changes,file)
+ if configuration.side_effects:
+ sys.stdout.writelines(string.join(configuration.side_effects, "\n") + "\n")
+ def do_y(self, line):
+ if not line:
+ target = self.current
+ else:
+ # Undocumented feature -- "y FOO" sets FOO to y.
+ # No skip is done afterwards.
+ line = string.strip(line)
+ if not configuration.dictionary.has_key(line):
+ print lang["NONEXIST"]
+ return
+ else:
+ target = configuration.dictionary[line]
+ if not target.type in ("trit", "bool"):
+ print lang["YNOTVALID"] % (target.name)
+ else:
+ self.set_symbol(target, cml.y)
+ if target == self.current:
+ self.skip_to_query(configuration.next_node)
+ return None
+ def do_m(self, line):
+ if not line:
+ target = self.current
+ else:
+ # Undocumented feature -- "m FOO" sets FOO to m.
+ # No skip is done afterwards.
+ line = string.strip(line)
+ if not configuration.dictionary.has_key(line):
+ print lang["NONEXIST"]
+ return
+ else:
+ target = configuration.dictionary[line]
+ if not target.type == "trit":
+ print lang["MNOTVALID"] % (target.name)
+ elif not configuration.trits_enabled and not target.vital:
+ print lang["MNOTVALID"] % (target.name)
+ else:
+ self.set_symbol(target, cml.m)
+ if target == self.current:
+ self.skip_to_query(configuration.next_node)
+ return None
+ def do_n(self, line):
+ if not line:
+ target = self.current
+ else:
+ # Undocumented feature -- "n FOO" sets FOO to n.
+ # No skip is done afterwards.
+ line = string.strip(line)
+ if not configuration.dictionary.has_key(line):
+ print lang["NONEXIST"]
+ return
+ else:
+ target = configuration.dictionary[line]
+ if not target.type in ("trit", "bool"):
+ print lang["NNOTVALID"] % (target.name)
+ else:
+ self.set_symbol(target, cml.n)
+ if target == self.current:
+ self.skip_to_query(configuration.next_node)
+ return None
+ def do_p(self, line):
+ self.skip_to_query(configuration.previous_node)
+ return None
+ def do_s(self, line):
+ file = string.strip(line)
+ failure = configuration.save(file, cml.Baton(lang["SAVESTART"] % file, lang["SAVEEND"]))
+ if failure:
+ print failure
+ def do_x(self, line):
+ # Terminate this cmd instance, saving configuration
+ self.do_s(config)
+ return 1
+ def do_C(self, line):
+ # Undocumented -- present for debugging.
+ filter = None
+ if line:
+ line = line.strip()
+ if configuration.dictionary.has_key(line):
+ filter = configuration.dictionary[line]
+ for i in range(len(configuration.constraints)):
+ constraint = configuration.constraints[i].predicate
+ reduced = configuration.reduced[i]
+ if reduced in (cml.n, cml.m, cml.y):
+ continue
+ if filter and filter not in cml.flatten_expr(constraint):
+ continue
+ if constraint == reduced:
+ print cml.display_expression(reduced)[1:-1]
+ else:
+ print "%s -> %s" % (constraint,cml.display_expression(reduced)[1:-1])
+ return 0
+ def do_q(self, line):
+ # Terminate this cmd instance, not saving configuration
+ raise SystemExit, 1
+ # Debugging commands -- not documented
+ def do_v(self, line):
+ # Set the debug flag
+ if not line:
+ configuration.debug += 1
+ else:
+ configuration.debug = int(line)
+ return 0
+ def do_e(self, line):
+ # Examine the state of a given symbol
+ symbol = string.strip(line)
+ if configuration.dictionary.has_key(symbol):
+ entry = configuration.dictionary[symbol]
+ print entry
+ if entry.constraints:
+ print lang["CONSTRAINTS"]
+ for wff in entry.constraints:
+ print cml.display_expression(wff)
+ if configuration.is_visible(entry):
+ print lang["VISIBLE"]
+ else:
+ print lang["INVISIBLE"]
+ help = entry.help()
+ if help:
+ print help
+ else:
+ print lang["NOHELP"] % (entry.name,)
+ else:
+ print lang["NOSUCHAS"], symbol
+ return 0
+ def do_E(self, line):
+ # Dump the state of the bindings stack (undocumented)
+ print configuration.binddump()
+ return 0
+ def do_S(self, line):
+ # Toggle the suppressions flag
+ configuration.suppressions = not configuration.suppressions
+ if configuration.suppressions:
+ print lang["SUPPRESSON"]
+ else:
+ print lang["SUPPRESSOFF"]
+ return 0
+ def emptyline(self):
+ if self.current and self.current.type == "choices":
+ if self.current.default:
+ # print lang["TTYSETTING"] % (`self.current.default`)
+ self.set_symbol(self.current.default, cml.y)
+ self.skip_to_query(configuration.next_node)
+ return 0
+ def default(self, line):
+ v = string.strip(line)
+ if v == "h":
+ self.page(string.join(map(lambda x: lang[x],
+ ("TTYSUMMARY",
+ "GHELP", "IHELP", "ICAPHELP", "YHELP",
+ "MHELP", "NHELP", "PHELP", "SHELP",
+ "QHELP", "XHELP", "TTYHELP")), "\n"))
+ elif self.current.type == 'choices':
+ try:
+ ind = string.atoi(v)
+ except ValueError:
+ ind = -1
+ if ind <= 0 or ind > len(self.current.items):
+ print lang["RADIOBAD"]
+ else:
+ # print lang["TTYSETTING"] % (`self.current.items[ind - 1]`)
+ self.set_symbol(self.current.items[ind - 1], cml.y)
+ self.skip_to_query(configuration.next_node)
+ elif self.current.type in ("bool", "trit"):
+ print lang["CANNOTSET"]
+ else:
+ self.set_symbol(self.current, v)
+ self.skip_to_query(configuration.next_node)
+ return None
+ def help_g(self):
+ print lang["GHELP"]
+ def help_i(self):
+ print lang["IHELP"]
+ def help_I(self):
+ print lang["ICAPHELP"]
+ def help_y(self):
+ print lang["YHELP"]
+ def help_m(self):
+ print lang["MHELP"]
+ def help_n(self):
+ print lang["NHELP"]
+ def help_p(self):
+ print lang["PHELP"]
+ def help_s(self):
+ print lang["SHELP"]
+ def help_q(self):
+ print lang["QHELP"]
+ def help_x(self):
+ print lang["XHELP"]
+ def do_help(self, line):
+ help = self.current.help()
+ if help:
+ self.page(help)
+ else:
+ print lang["NOHELP"] % (self.current.name,)
+
+ def postcmd(self, stop, line):
+ if stop:
+ return stop
+ self.prompt = self.generate_prompt(self.current)
+ return None
+
+# Curses interface
+
+class MenuBrowser:
+ "Support abstract browser operations on a stack of indexable objects."
+ def __init__(self, debug=0, errout=sys.stderr):
+ self.page_stack = []
+ self.selection_stack = []
+ self.viewbase_stack = []
+ self.viewport_height = 0
+ self.debug = debug
+ self.errout = errout
+
+ def match(self, a, b):
+ "Browseable-object comparison."
+ return a == b
+
+ def push(self, browseable, selected=None):
+ "Push a browseable object onto the location stack."
+ if self.debug:
+ self.errout.write("MenuBrowser.push(): pushing %s=@%d, selection=%s\n" % (browseable, id(browseable), `selected`))
+ selnum = 0
+ if selected == None:
+ if self.debug:
+ self.errout.write("MenuBrowser.push(): selection defaulted\n")
+ else:
+ for i in range(len(browseable)):
+ selnum = len(browseable) - i - 1
+ if self.match(browseable[selnum], selected):
+ break
+ if self.debug:
+ self.errout.write("MenuBrowser.push(): selection set to %d\n" % (selnum))
+ self.page_stack.append(browseable)
+ self.selection_stack.append(selnum)
+ self.viewbase_stack.append(selnum - selnum % self.viewport_height)
+ if self.debug:
+ object = self.page_stack[-1]
+ selection = self.selection_stack[-1]
+ viewbase = self.viewbase_stack[-1]
+ self.errout.write("MenuBrowser.push(): pushed %s=@%d->%d, selection=%d, viewbase=%d\n" % (object, id(object), len(self.page_stack), selection, viewbase))
+
+ def pop(self):
+ "Pop a browseable object off the location stack."
+ if not self.page_stack:
+ if self.debug:
+ self.errout.write("MenuBrowser.pop(): stack empty\n")
+ return None
+ else:
+ item = self.page_stack[-1]
+ self.page_stack = self.page_stack[:-1]
+ self.selection_stack = self.selection_stack[:-1]
+ self.viewbase_stack = self.viewbase_stack[:-1]
+ if self.debug:
+ if len(self.page_stack) == 0:
+ self.errout.write("MenuBrowser.pop(): stack is empty.")
+ else:
+ self.errout.write("MenuBrowser.pop(): new level %d, object=@%d, selection=%d, viewbase=%d\n" % (len(self.page_stack), id(self.page_stack[-1]), self.selection_stack[-1], self.viewbase_stack[-1]))
+ return item
+
+ def stackdepth(self):
+ "Return the current stack depth."
+ return len(self.page_stack)
+
+ def list(self):
+ "Return all elements of the current object that ought to be visible."
+ if not self.page_stack:
+ return None
+ object = self.page_stack[-1]
+ viewbase = self.viewbase_stack[-1]
+
+ if self.debug:
+ self.errout.write("MenuBrowser.list(): stack level %d. object @%d, listing %s\n" % (len(self.page_stack)-1, id(object), object[viewbase:viewbase+self.viewport_height]))
+
+ # This requires a slice method
+ return object[viewbase:viewbase+self.viewport_height]
+
+ def top(self):
+ "Return the top-of-stack menu"
+ if self.debug >= 2:
+ self.errout.write("MenuBrowser.top(): level=%d, @%d\n" % (len(self.page_stack)-1,id(self.page_stack[-1])))
+ return self.page_stack[-1]
+
+ def selected(self):
+ "Return the currently selected element in the top menu."
+ object = self.page_stack[-1]
+ selection = self.selection_stack[-1]
+ if self.debug:
+ self.errout.write("MenuBrowser.selected(): at %d, object=@%d, %s\n" % (len(self.page_stack)-1, id(object), self.selection_stack[-1]))
+ return object[selection]
+
+ def viewbase(self):
+ "Return the viewport base of the current menu."
+ object = self.page_stack[-1]
+ base = self.viewbase_stack[-1]
+ if self.debug:
+ self.errout.write("MenuBrowser.viewbase(): at level=%d, object=@%d, %d\n" % (len(self.page_stack)-1, id(object), base,))
+ return base
+
+ def thumb(self):
+ "Return top and bottom boundaries of a thumb scaled to the viewport."
+ object = self.page_stack[-1]
+ windowscale = float(self.viewport_height) / float(len(object))
+ thumb_top = self.viewbase() * windowscale
+ thumb_bottom = thumb_top + windowscale * self.viewport_height - 1
+ return (thumb_top, thumb_bottom)
+
+ def move(self, delta=1, wrap=0):
+ "Move the selection on the current item downward."
+ if delta == 0:
+ return
+ object = self.page_stack[-1]
+ oldloc = self.selection_stack[-1]
+
+ # Change the selection. Requires a length method
+ if oldloc + delta in range(len(object)):
+ newloc = oldloc + delta
+ elif wrap:
+ newloc = (oldloc + delta) % len(object)
+ elif delta > 0:
+ newloc = len(object) - 1
+ else:
+ newloc = 0
+ return self.goto(newloc)
+
+ def goto(self, newloc):
+ "Move the selection to the menu item with the given number."
+ oldloc = self.selection_stack[-1]
+ self.selection_stack[-1] = newloc
+ # When the selection is moved out of the viewport, move the viewbase
+ # just part enough to track it.
+ oldbase = self.viewbase_stack[-1]
+ if newloc in range(oldbase, oldbase + self.viewport_height):
+ pass
+ elif newloc < oldbase:
+ self.viewbase_stack[-1] = newloc
+ else:
+ self.scroll(newloc - (oldbase + self.viewport_height) + 1)
+ if self.debug:
+ self.errout.write("MenuBrowser.down(): at level=%d, object=@%d, old selection=%d, new selection = %d, new base = %d\n" % (len(self.page_stack)-1, id(self.page_stack[-1]), oldloc, newloc, self.viewbase_stack[-1]))
+ return (oldloc != newloc)
+
+ def scroll(self, delta=1, wrap=0):
+ "Scroll the viewport up or down in the current option."
+ object = self.page_stack[-1]
+ if not wrap:
+ oldbase = self.viewbase_stack[-1]
+ if delta > 0 and oldbase+delta > len(object)-self.viewport_height:
+ return
+ elif delta < 0 and oldbase + delta < 0:
+ return
+ self.viewbase_stack[-1] = (self.viewbase_stack[-1] + delta) % len(object)
+
+ def dump(self):
+ "Dump the whole stack of objects."
+ self.errout.write("Viewport height: %d\n" % (self.viewport_height,))
+ for i in range(len(self.page_stack)):
+ self.errout.write("Page: %d\n" % (i,))
+ self.errout.write("Selection: %d\n" % (self.selection_stack[i],))
+ self.errout.write(`self.page_stack[i]` + "\n");
+
+ def next(self, wrap=0):
+ return self.move(1, wrap)
+
+ def previous(self, wrap=0):
+ return self.move(-1, wrap)
+
+ def page_down(self):
+ return self.move(2*self.viewport_height-1)
+
+ def page_up(self):
+ return self.move(-(2*self.viewport_height-1))
+
+class PopupBaton:
+ "A popup window with a twirly-baton."
+ def __init__(self, startmsg, master):
+ self.subwin = master.window.subwin(3, len(startmsg)+3,
+ (master.lines-3)/2,
+ (master.columns-len(startmsg)-3)/2)
+ self.subwin.clear()
+ self.subwin.box()
+ self.subwin.addstr(1,1, startmsg)
+ self.subwin.refresh()
+ self.count = 0
+
+ def twirl(self, ch=None):
+ if ch:
+ self.subwin.addch(ch)
+ else:
+ self.subwin.addch("-/|\\"[self.count % 4])
+ self.subwin.addch("\010")
+ self.subwin.refresh()
+ self.count = self.count + 1
+
+ def announce(self, msg):
+ pass
+
+ def end(self, msg=None):
+ pass
+
+class WindowBaton:
+ "Put a twirly-baton at the upper right corner to indicate activity."
+ def __init__(self, master):
+ self.master = master
+ self.count = 0
+
+ def twirl(self, ch=None):
+ if ch:
+ self.master.window.addch(0, self.master.columns-1, ch)
+ else:
+ self.master.window.addch(0, self.master.columns-1, "-/|\\"[self.count % 4])
+ self.master.window.addch("\010")
+ self.master.window.refresh()
+ self.count = self.count + 1
+
+ def announce(self, msg):
+ pass
+
+ def end(self, msg=None):
+ self.master.window.addch(0, self.master.columns-1, " ")
+ self.master.window.refresh()
+ pass
+
+class curses_style_menu:
+ "Command interpreter for line-oriented configurator."
+ input_nmatch = re.compile(r">>>.*\(([0-9]+)\)$")
+ valwidth = 8 # This is a constant
+
+ def __init__(self, stdscr, config, banner):
+ if banner and configuration.banner.find("%s") > -1:
+ self.banner = configuration.banner % banner
+ elif banner:
+ self.banner = banner
+ else:
+ self.banner = configuration.banner
+ self.input_queue = []
+ self.menus = self.values = self.textbox = None
+ self.window = stdscr
+ self.msgbuf = ""
+ self.lastmenu = None
+
+ menudebug = 0
+ if configuration.debug > 1:
+ menudebug = configuration.debug - 2
+ self.menus = MenuBrowser(menudebug,configuration.errout)
+
+ (self.lines, self.columns) = self.window.getmaxyx()
+ if self.lines < 9 or self.columns < 60:
+ raise "TERMTOOSMALL"
+ self.menus.viewport_height = self.lines-1
+
+ if curses.has_colors():
+ curses.init_pair(curses.COLOR_BLUE, curses.COLOR_BLUE, curses.COLOR_BLACK)
+ curses.init_pair(curses.COLOR_GREEN, curses.COLOR_GREEN, curses.COLOR_BLACK)
+ self.window.clear()
+ self.window.scrollok(0)
+ self.window.idlok(1)
+
+ # Most of the work gets done here
+ self.interact(config)
+
+ # Input (with logging support)
+
+ def getch(self, win):
+ if not readlog:
+ try:
+ ch = win.getch()
+ except KeyboardInterrupt:
+ curses.endwin()
+ raise
+ else:
+ time.sleep(1)
+ if input_queue:
+ ch = self.input_queue[0]
+ input_queue = input_queue[1:]
+ while 1:
+ line = readlog.readline()
+ if line == "":
+ ch = -1
+ break
+ m = curses_style_menu.input_nmatch.match(line)
+ if m:
+ ch = string.atoi(m.group(1))
+ break
+ if configuration.debug:
+ configuration.debug_emit(1, ">>> '%s' (%d)"% (curses.keyname(ch), ch))
+ return ch
+
+ def ungetch(self, c):
+ if readlog:
+ self.input_queue = c + self.input_queue
+ else:
+ curses.ungetch(c)
+
+ # Notification
+
+ def help_popup(self, instructions, msglist, beep=1):
+ "Pop up a help message."
+ if configuration.debug:
+ configuration.errout.write("***" + lang[instructions] + "\n")
+ configuration.errout.write(string.join(msglist, "\n"))
+ msgwidth = 0
+ pad = 2 # constant, must be >= 1
+ msgparts = []
+ for line in msglist:
+ unemitted = line
+ ww = self.columns - pad
+ while unemitted:
+ msgparts.append(unemitted[:ww])
+ unemitted = unemitted[ww:]
+ if len(msgparts) > self.lines - pad*2 - 1:
+ msgparts = msgparts[:self.lines - pad*2 - 2] + [lang["MORE"]]
+ for msg in msgparts:
+ if len(msg) > msgwidth:
+ msgwidth = len(msg)
+ msgwidth = min(self.columns - pad*2, msgwidth)
+ start_x = (self.columns - msgwidth) / 2
+ start_y = (self.lines - len(msgparts)) / 2
+ leave = lang[instructions]
+ msgwidth = max(msgwidth, len(leave))
+ subwin = self.window.subwin(len(msgparts)+1+pad*2, msgwidth+pad*2,
+ start_y-pad, start_x-pad)
+ subwin.clear()
+ for i in range(len(msgparts)):
+ subwin.addstr(pad+i, pad+(msgwidth-len(msgparts[i]))/2,
+ msgparts[i], curses.A_BOLD)
+ subwin.addstr(pad*2+len(msgparts)-1, pad+(msgwidth-len(leave))/2,
+ leave)
+ subwin.box()
+ if beep:
+ curses.beep()
+ self.window.noutrefresh()
+ subwin.noutrefresh()
+ curses.doupdate()
+ value = self.getch(self.window)
+ subwin.clear()
+ subwin.noutrefresh()
+ self.window.noutrefresh()
+ curses.doupdate()
+ return value
+
+ def query_popup(self, prompt, initval=None):
+ "Pop up a window to accept a string."
+ maxsymwidth = 30 # Constant
+ if initval and len(initval) > maxsymwidth:
+ self.help_popup("PRESSANY", (lang["TOOLONG"],), beep=1)
+ return initval
+ gwinwidth = (len(prompt) + maxsymwidth)
+ start_y = self.lines/2-3
+ start_x = (self.columns - gwinwidth)/2
+ subwin = self.window.subwin(3, 2+gwinwidth, start_y-1, start_x-1)
+ subwin.clear()
+ subwin.box()
+ self.window.addstr(start_y, start_x, prompt, curses.A_BOLD)
+ self.window.refresh()
+ subwin.refresh()
+ subsubwin = subwin.subwin(1,maxsymwidth,start_y,start_x+len(prompt))
+ if initval:
+ subsubwin.addstr(0, 0, initval[:maxsymwidth-1])
+ subsubwin.touchwin()
+ configuration.debug_emit(1, "+++ %s"% (prompt,))
+ textbox = curses.textpad.Textbox(subsubwin)
+ popupval = textbox.edit()
+ self.window.touchwin()
+ if initval and textbox.lastcmd == curses.ascii.BEL:
+ return initval
+ else:
+ return popupval
+
+ # Symbol state changes
+
+ def set_symbol(self, sym, val, freeze=0):
+ "Try to set a symbol, display constraints in a popup if it fails."
+ configuration.debug_emit(1, lang["CURSESSET"] % (sym.name, val))
+ (ok, effects, violation) = configuration.set_symbol(sym, val, freeze)
+ if not ok:
+ effects.append("\n")
+ self.help_popup("PRESSANY",
+ effects + [lang["BADREQUIRE"]] + violation, beep=1)
+ elif violation:
+ self.help_popup("PRESSANY", violation, beep=0)
+
+ # User interaction
+
+ def in_menu(self):
+ "Return 1 if we're in a symbol menu, 0 otherwise"
+ return isinstance(self.menus.selected(), cml.ConfigSymbol)
+
+ def recompute(self, here):
+ "Recompute the visible-members set for the given menu."
+ # First, make sure any choices menus immediately
+ # below this one get their defaults asserted. Has
+ # to be done here because the visibility of stuff
+ # in a menu may depend on a choice submenu before
+ # it, so we need the default value to be hardened,
+ map(configuration.visit, here.items)
+ # Now compute visibilities.
+ visible = filter(lambda x: configuration.is_visible(x), here.items)
+ lookingat = self.menus.selected()
+ if lookingat in visible:
+ selected = self.menus.selected()
+ self.menus.pop()
+ self.menus.push(visible, selected)
+ self.seek_mutable(1)
+ else:
+ if configuration.suppressions:
+ configuration.debug_emit(1, lang["SUPPRESSOFF"])
+ configuration.suppressions = 0
+ self.menus.pop()
+ self.menus.push(here.items)
+ # We've recomputed the top-of-stack item,
+ # so we must regenerate all associated prompts.
+ self.values = map(cgenprompt, self.menus.top())
+
+ def redisplay(self, repaint):
+ "Repaint the screen."
+ sel_symbol = current_line = None
+ if self.banner and self.in_menu():
+ title = self.msgbuf + (" " * (self.columns - len(self.msgbuf) - len(self.banner) -1)) + self.banner
+ else:
+ title = (" " * ((self.columns-len(self.msgbuf)) / 2)) + self.msgbuf
+ self.window.move(0, 0)
+ self.window.clrtoeol()
+ self.window.addstr(title, curses.A_BOLD)
+
+ (thumb_top, thumb_bottom) = self.menus.thumb()
+
+ # Display the current band of entries
+ screenlines = self.menus.list()
+ if self.in_menu():
+ screenvals = self.values[self.menus.viewbase():self.menus.viewbase()+self.menus.viewport_height]
+ configuration.debug_emit(1, "screenvals: " + `screenvals`)
+ else:
+ current_prompt = None
+
+ for i in range(self.lines - 1):
+ self.window.move(i+1, 0)
+ self.window.clrtoeol()
+ if len(self.menus.top()) <= self.lines - 1:
+ thumb = None
+ elif i <= thumb_bottom and i >= thumb_top:
+ thumb = curses.ACS_CKBOARD
+ else:
+ thumb = curses.ACS_VLINE
+ if i < len(screenlines):
+ child = screenlines[i]
+ if type(child) is type(""):
+ self.window.addstr(i+1, 0, child)
+ elif child.type == "message":
+ self.window.addstr(i+1, 0, child.prompt + " ")
+ self.window.hline(i+1, len(child.prompt) + 2,
+ curses.ACS_HLINE, self.columns-len(child.prompt)-3)
+ else:
+ if child == self.menus.selected():
+ lpointer = ">"
+ rpointer = "<"
+ highlight = curses.A_REVERSE
+ current_line = i
+ current_prompt = screenvals[i]
+ sel_symbol = child
+ else:
+ lpointer = rpointer = " "
+ highlight = curses.A_NORMAL
+ if curses.has_colors():
+ if child.frozen:
+ highlight=curses.color_pair(curses.COLOR_BLUE)
+ elif child.inspected:
+ highlight=curses.color_pair(curses.COLOR_GREEN)
+ elif child.setcount or child.included:
+ highlight=curses.color_pair(curses.COLOR_GREEN)
+ # OK, now assemble the rest of the line
+ leftpart = (" " * child.depth) + child.prompt
+ if inclusions and not child.included and child.is_symbol():
+ leftpart = leftpart + " " + lang["NEW"]
+ if child.frozen:
+ leftpart = leftpart + " " + lang["FREEZELABEL"]
+ if child.help():
+ helpflag = "?"
+ else:
+ helpflag = ""
+ rightpart = "(" + child.name + helpflag + ")"
+ # Now make sure the information will fit in the line
+ fixedlen = 1+curses_style_menu.valwidth+1+len(rightpart)+(thumb!=None) + 1
+ leftpart = leftpart[:self.columns-fixedlen]
+ filler = " " * (self.columns - len(leftpart) - fixedlen)
+ line = leftpart + filler + rightpart
+ # Write it
+ self.window.move(i+1, 0)
+ self.window.addstr(lpointer)
+ if "edit" in repaint and child == self.menus.selected():
+ self.window.move(i+1, curses_style_menu.valwidth+2)
+ self.window.attron(highlight)
+ else:
+ self.window.attron(highlight)
+ valstring = screenvals[i][:curses_style_menu.valwidth]
+ self.window.addstr(valstring + (" " * (curses_style_menu.valwidth - len(valstring))) + " ")
+ self.window.addstr(line)
+ self.window.attroff(highlight)
+
+ # Ignore error from writing to last cell of
+ # last line; the old curses module in 1.5.2
+ # doesn't like this. The try/catch around the
+ # thumb write does the same thing.
+ try:
+ self.window.addstr(rpointer)
+ except:
+ pass
+ if thumb:
+ try:
+ self.window.addch(i+1, self.columns-1, thumb)
+ except:
+ pass
+
+ if type(self.menus.selected()) is not type(""):
+ self.window.move(current_line + 1, 0)
+ if "main" in repaint or "edithelp" in repaint:
+ self.window.noutrefresh()
+ if "edit" in repaint:
+ self.textbox.win.touchwin()
+ self.textbox.win.noutrefresh()
+ curses.doupdate()
+ return (current_line, current_prompt, sel_symbol)
+
+ def accept_field(self, selected, value, oldval):
+ "Process the contents of a field edit."
+ if selected.type == "hexadecimal":
+ if oldval[:2] != "0x":
+ value = "0x" + value
+ value = string.strip(value)
+ if selected.is_numeric():
+ value = string.atoi(value, 0)
+ if not configuration.range_check(selected, value):
+ self.help_popup("PRESSANY",
+ (lang["OUTOFBOUNDS"] % (selected.range,),))
+ return
+ self.set_symbol(selected, value)
+
+ def symbol_menu_command(self, cmd, operand):
+ "Handle commands that don't directly hack the screen or exit."
+ recompute = 0
+ if cmd == curses.KEY_LEFT:
+ if self.menus.stackdepth() <= 1:
+ self.msgbuf = lang["NOPOP"]
+ else:
+ self.menus.pop()
+ self.lastmenu = self.menus.selected()
+ recompute = 1
+ elif cmd == ord('y'):
+ if not self.in_menu():
+ self.help_popup("PRESSANY", (lang["NOSYMBOL"],))
+ elif operand.type in ("bool", "trit"):
+ self.set_symbol(operand, cml.y)
+ else:
+ self.help_popup("PRESSANY", (lang["BOOLEAN"],))
+ recompute = 1
+ if operand.menu.type != "choices":
+ self.ungetch(curses.KEY_DOWN)
+ elif cmd == ord('m'):
+ if not self.in_menu():
+ self.help_popup("PRESSANY", (lang["NOSYMBOL"],))
+ elif not configuration.trits_enabled:
+ self.help_popup("PRESSANY", (lang["MDISABLED"],))
+ elif operand.type == "trit":
+ self.set_symbol(operand, cml.m)
+ elif operand.type == "bool":
+ self.set_symbol(operand, cml.y) # Shortcut from old menuconfig
+ else:
+ self.help_popup("PRESSANY", (lang["TRIT"],))
+ recompute = 1
+ if operand.menu.type != "choices":
+ self.ungetch(curses.KEY_DOWN)
+ elif cmd == ord('n'):
+ if not self.in_menu():
+ self.help_popup("PRESSANY", (lang["NOSYMBOL"],))
+ elif operand.type in ("bool", "trit") and \
+ operand.menu.type != "choices":
+ self.set_symbol(operand, cml.n)
+ else:
+ self.help_popup("PRESSANY", (lang["BOOLEAN"],))
+ recompute = 1
+ if operand.menu.type != "choices":
+ self.ungetch(curses.KEY_DOWN)
+ elif cmd == ord('i'):
+ file = self.query_popup(lang["LOADFILE"])
+ try:
+ (changes, errors) = configuration.load(file, freeze=0)
+ except:
+ self.help_popup("PRESSANY", [lang["LOADFAIL"] % file])
+ else:
+ if errors:
+ self.help_popup("PRESSANY", (errors,))
+ else:
+ # Note, we don't try to display side effects here.
+ # From a file include, there are very likely to
+ # be more of them than can fit in a popup.
+ self.help_popup("PRESSANY",
+ [lang["INCCHANGES"]%(changes,file)], beep=0)
+ recompute = 1
+ elif cmd == ord('I'):
+ file = self.query_popup(lang["LOADFILE"])
+ try:
+ (changes, errors) = configuration.load(file, freeze=0)
+ except:
+ self.help_popup("PRESSANY", [lang["LOADFAIL"] % file])
+ else:
+ if errors:
+ self.help_popup("PRESSANY", (errors,))
+ else:
+ # Note, we don't try to display side effects here.
+ # From a file include, there are very likely to
+ # be more of them than can fit in a popup.
+ self.help_popup("PRESSANY",
+ [lang["INCCHANGES"]%(changes,file)], beep=0)
+ recompute = 1
+ elif cmd == ord('S'):
+ configuration.suppressions = not configuration.suppressions
+ recompute = 1
+ elif cmd == ord('/'):
+ pattern = self.query_popup(lang["SEARCHSYMBOLS"])
+ if pattern:
+ hits = configuration.symbolsearch(pattern)
+ configuration.debug_emit(1, "hits: " + str(hits))
+ if len(hits.items):
+ configuration.suppressions = 0
+ self.menus.push(hits.items)
+ else:
+ self.help_popup("PRESSANY", (lang["SEARCHFAIL"],))
+ recompute = 1
+ elif cmd == ord('s'):
+ failure = configuration.save(config)
+ if failure:
+ self.help_popup("PRESSANY", [failure])
+ else:
+ self.help_popup("PRESSANY",
+ (lang["UNKNOWN"]%(curses.keyname(cmd)),))
+ return recompute
+
+ def seek_mutable(self, direction, movefirst=0):
+ if movefirst:
+ self.menus.move(delta=direction, wrap=1)
+ while self.menus.selected().type =="message" \
+ or self.menus.selected().frozen:
+ self.menus.move(delta=direction, wrap=1)
+
+ def interact(self, config):
+ "Configuration through a curses-based UI"
+ self.menus.push(configuration.start.items)
+ recompute = 1
+ repaint = ["main"]
+ curses.ungetch(curses.ascii.TAB) # Get to a help screen.
+ while 1:
+ if isinstance(self.menus.selected(), cml.ConfigSymbol):
+ # In theory we could optimize this by only computing
+ # visibilities for children we have space to display,
+ # but never mind. We'll settle for recomputing only
+ # when a variable changes value.
+ here = self.menus.selected().menu
+ configuration.visit(here)
+ if recompute:
+ self.recompute(here)
+ recompute = 0
+ # Clear the decks, issue the current menu title
+ self.msgbuf = here.prompt
+ sel_symbol = None
+
+ # Repaint the screen
+ (current_line,current_prompt,sel_symbol) = self.redisplay(repaint)
+ newval = current_prompt
+
+ # OK, here is the command interpretation
+ if "edit" in repaint:
+ cmd = self.getch(self.textbox.win)
+ else:
+ cmd = self.getch(self.window)
+
+ if "edithelp" in repaint:
+ repaint = ["main", "edit"]
+ self.textbox.win.move(oldy, oldx)
+ self.menus.pop()
+ continue
+ elif "edit" in repaint:
+ if cmd in (curses.KEY_DOWN, curses.KEY_UP, curses.KEY_ENTER,
+ curses.ascii.NL, curses.ascii.CR, curses.ascii.BEL,
+ ord(curses.ascii.ctrl('p')), ord(curses.ascii.ctrl('n'))):
+ if cmd != curses.ascii.BEL:
+ newval = self.textbox.gather()
+ self.accept_field(sel_symbol,
+ newval,
+ current_prompt)
+ # allow window to be deallocated
+ self.textbox = None
+ recompute = 1
+ repaint = ["main"]
+ self.msgbuf = ""
+ if cmd in (curses.KEY_DOWN, curses.KEY_UP):
+ self.ungetch(cmd)
+ elif curses.ascii.isprint(cmd):
+ if sel_symbol.type == "decimal" and not curses.ascii.isdigit(cmd):
+ curses.beep()
+ elif sel_symbol.type == "hexadecimal" and not curses.ascii.isxdigit(cmd):
+ curses.beep()
+ else:
+ self.textbox.do_command(cmd)
+ elif cmd == curses.ascii.TAB:
+ self.msgbuf = lang["FIELDEDIT"]
+ self.menus.push(string.split(lang["EDITHELP"], "\n"))
+ (oldy, oldx) = self.textbox.win.getyx()
+ repaint = ["edithelp"]
+ continue
+ elif cmd == curses.KEY_RIGHT and self.textbox.win.getyx()[1]>=curses_style_menu.valwidth:
+ oldval = newval
+ newval = self.query_popup(sel_symbol.name+": ", oldval)
+ if newval:
+ self.accept_field(sel_symbol, newval, oldval)
+ self.textbox.win.clear()
+ self.textbox.win.addstr(0, 0, newval[0:curses_style_menu.valwidth])
+ recompute = 1
+ self.textbox = None
+ repaint = ["main"]
+ else:
+ self.textbox.do_command(cmd)
+ else:
+ if cmd == curses.ascii.FF:
+ self.window.touchwin()
+ self.window.refresh()
+ elif cmd == curses.KEY_RESIZE or cmd == -1:
+ # Second test works around a bug in the old curses module
+ # it gives back a -1 on resizes instead of KEY_RESIZE.
+ (self.lines, self.columns) = self.window.getmaxyx()
+ self.menus.viewport_height = self.lines-1
+ recompute = 1
+ elif cmd in (curses.ascii.TAB, ord('h')):
+ if self.in_menu():
+ self.menus.push(string.split(lang["CURSHELP"], "\n"))
+ self.msgbuf = lang["WELCOME"] % (configuration.banner) \
+ + lang["VERSION"] % (cml.version,) \
+ + " " + lang["CURSQUERY"]
+ self.helpmode = 1
+ elif self.helpmode == 1:
+ self.menus.pop()
+ self.menus.push(string.split(lang["EXPERTHELP"], "\n"))
+ self.msgbuf = lang["CMDHELP"]
+ self.helpmode = 2
+ else:
+ self.menus.pop()
+ recompute = 1
+ elif cmd == ord('e'):
+ if not self.in_menu():
+ self.help_popup("PRESSANY", (lang["NOSYMBOL"],))
+ else:
+ self.help_popup("PRESSANY", (str(sel_symbol),), beep=0)
+ elif cmd == ord('g'):
+ symname = self.query_popup(lang["GPROMPT"])
+ if not configuration.dictionary.has_key(symname):
+ self.help_popup("PRESSANY", (lang["NONEXIST"],))
+ else:
+ entry = configuration.dictionary[symname]
+ if entry.type in ("menu", "choices"):
+ self.menus.push(entry.items)
+ recompute = 1
+ elif entry.type == "message" or not entry.menu:
+ self.help_popup("PRESSANY", (lang["CANTGO"],))
+ else:
+ self.menus.push(entry.menu.items, entry)
+ recompute = 1
+ elif cmd == ord('?'):
+ if not self.in_menu():
+ self.help_popup("PRESSANY", (lang["NOSYMBOL"],))
+ else:
+ help = sel_symbol.help()
+ if help:
+ self.msgbuf = lang["HELPFOR"] % (sel_symbol.name,)
+ self.menus.push(string.split(help, "\n"))
+ else:
+ self.help_popup("PRESSANY",
+ (lang["NOHELP"] % (sel_symbol.name,),))
+ elif cmd in (curses.KEY_DOWN, curses.ascii.ctrl('n')):
+ if not self.in_menu():
+ self.menus.scroll(1)
+ else:
+ self.seek_mutable(1, 1)
+ elif cmd == curses.KEY_UP:
+ if not self.in_menu():
+ self.menus.scroll(-1)
+ else:
+ self.seek_mutable(-1, 1)
+ elif cmd in (curses.KEY_NPAGE, curses.ascii.ctrl('p')):
+ if self.in_menu():
+ self.menus.page_down()
+ notlast = (self.menus.selected() != self.menus.list()[-1])
+ self.seek_mutable(notlast)
+ elif cmd == curses.KEY_PPAGE:
+ if self.in_menu():
+ self.menus.page_up()
+ notlast = (self.menus.selected() != self.menus.list()[-1])
+ self.seek_mutable(notlast)
+ elif cmd == curses.KEY_HOME:
+ if self.in_menu():
+ self.menus.goto(0)
+ self.seek_mutable(0)
+ elif cmd == curses.KEY_END:
+ if self.in_menu():
+ self.menus.goto(len(self.menus.list())-1)
+ self.seek_mutable(0)
+ # This guard intercepts all other commands in helpmode
+ elif not self.in_menu():
+ if self.menus.stackdepth() == 1:
+ here = configuration.start.items[0]
+ while not configuration.is_visible(here):
+ here = configuration.next_node(here)
+ self.menus.push(here.menu.items, here)
+ else:
+ self.menus.pop()
+ # Following commands are not executed in helpmode
+ elif cmd == ord('x'):
+ failure = configuration.save(config,
+ PopupBaton(lang["SAVING"], self))
+ if failure:
+ self.help_popup("PRESSANY", [failure])
+ break
+ elif cmd == ord('q'):
+ if configuration.commits == 0:
+ break
+ cmd = self.help_popup("EXITCONFIRM", (lang["REALLY"],), beep=0)
+ if cmd == ord('q'):
+ raise SystemExit, 1
+ elif cmd in (curses.KEY_ENTER,ord(' '),ord('\r'),ord('\n'),curses.KEY_RIGHT) :
+ # Operate on the current object
+ if sel_symbol.type == "message":
+ curses.beep()
+ elif sel_symbol.type in ("menu", "choices"):
+ self.menus.push(sel_symbol.items)
+ sel_symbol.inspected += 1
+ while not configuration.is_visible(self.menus.selected()) or self.menus.selected().type == "message":
+ if not self.menus.move(1, 0):
+ break
+ elif here.type == "choices" and sel_symbol.eval():
+ pass
+ elif cmd == curses.KEY_RIGHT:
+ pass
+ elif sel_symbol.type == "bool" or (sel_symbol.type == "trit" and not configuration.trits_enabled):
+ if sel_symbol.eval() == cml.y:
+ toggled = cml.n
+ else:
+ toggled = cml.y
+ self.set_symbol(sel_symbol, toggled)
+ elif sel_symbol.type == "trit":
+ if sel_symbol.eval() == cml.y:
+ toggled = cml.n
+ elif sel_symbol.eval() == cml.m:
+ toggled = cml.y
+ else:
+ toggled = cml.m
+ self.set_symbol(sel_symbol, toggled)
+ else:
+ win = curses.newwin(1, curses_style_menu.valwidth+1, current_line+1, 1)
+ self.textbox = curses.textpad.Textbox(win)
+ self.textbox.win.addstr(0, 0, current_prompt[:curses_style_menu.valwidth])
+ newval = current_prompt
+ self.textbox.win.move(0, 0)
+ self.msgbuf = lang["EDITING"] % (sel_symbol.name[:self.columns-1],)
+ repaint = ["main", "edit"]
+ recompute = 1
+ else:
+ recompute = self.symbol_menu_command(cmd, sel_symbol)
+
+# Tkinter interface
+
+# This is wrapped in try/expect in case the Tkinter import fails.
+# We need the import here because these classes have Frame as a parent.
+try:
+ from Tkinter import *
+
+ class ValidatedField(Frame):
+ "Accept a string, decimal or hex value in a labeled field."
+ def __init__(self, master, symbol, prompt, variable, hook):
+ Frame.__init__(self, master)
+ self.symbol = symbol
+ self.hook = hook
+ self.fieldval = variable
+ self.L = Label(self, text=prompt, anchor=W)
+ self.L.pack(side=LEFT)
+ self.E = Entry(self, textvar=self.fieldval)
+ self.E.pack({'side':'left', 'expand':YES, 'fill':X})
+ self.E.bind('', self.handlePost)
+ self.E.bind('', self.handleEnter)
+ self.fieldval.set(str(cml.evaluate(symbol)))
+ self.errorwin = None
+ def handleEnter(self, event):
+ self.E.bind('', self.handlePost)
+ def handlePost(self, event):
+ if self.errorwin:
+ return
+ self.E.bind('', lambda e: None)
+ result = string.strip(self.fieldval.get())
+ if self.symbol.type == "decimal":
+ if not re.compile("[" + string.digits +"]+$").match(result):
+ self.error_popup(title=lang["PROBLEM"],
+ banner=self.symbol.name,
+ text=lang["CHARINVAL"])
+ return
+ elif self.symbol.type == "hexadecimal":
+ if not re.compile("(0x)?["+string.hexdigits+"]+$").match(result):
+ self.error_popup(title=lang["PROBLEM"],
+ banner=self.symbol.name,
+ text=lang["CHARINVAL"])
+ return
+ apply(self.hook, (self.symbol, result))
+ def error_popup(self, title, banner, text):
+ self.errorwin = Toplevel()
+ self.errorwin.title(title)
+ self.errorwin.iconname(title)
+ Label(self.errorwin, text=banner).pack()
+ Label(self.errorwin, text=text).pack()
+ Button(self.errorwin, text=lang["DONE"],
+ command=lambda x=self.errorwin: Widget.destroy(x), bd=2).pack()
+
+
+ class PromptGo(Frame):
+ "Accept a string value in a browser-like prompt window."
+ def __init__(self, master, label, command):
+ Frame.__init__(self, master)
+ # We really want to do this to make the window appear
+ # within the workframe:
+ #self.promptframe = Frame(master)
+ # Unfortunately, the scroll function in the canvas seems
+ # to get confused when we try this
+ self.promptframe = Frame(Toplevel())
+ self.promptframe.master.bind('', self.handleDestroy);
+ self.fieldval = StringVar(self.promptframe)
+ self.promptframe.L = Label(self.promptframe,
+ text=lang[label], anchor=W)
+ self.promptframe.L.pack(side=LEFT)
+ self.promptframe.E = Entry(self.promptframe, textvar=self.fieldval)
+ self.promptframe.E.pack({'side':'left', 'expand':YES, 'fill':X})
+ self.promptframe.E.bind('', self.dispatch)
+ self.promptframe.E.focus_set()
+ self.command = command
+ Button(self.promptframe, text=lang["GO"],
+ command=self.dispatch, bd=2).pack()
+ self.promptframe.pack()
+ # Scroll to top of canvas and refresh/resize
+ self.master.menuframe.resetscroll()
+ self.master.refresh()
+ def dispatch(self, event=None):
+ apply(self.command, (self.fieldval.get(),))
+ # if PromptGo is implemented as top level widget this is not
+ # sufficient:
+ #self.promptframe.destroy()
+ # instead the top level widget must be destroyed
+ self.promptframe.master.destroy()
+ def handleDestroy(self, event=None):
+ apply(self.command, (None,))
+
+
+ class ScrolledFrame(Frame):
+ "A Frame object with a scrollbar on the right."
+ def __init__(self, master, **kw):
+ apply(Frame.__init__, (self, master), kw)
+
+ self.scrollbar = Scrollbar(self, orient=VERTICAL)
+ self.canvas = Canvas(self, yscrollcommand=self.scrollbar.set)
+ self.scrollbar.config(command=self.canvas.yview)
+ self.scrollbar.pack(fill=Y, side=RIGHT)
+ self.canvas.pack(side=LEFT, fill=BOTH, expand=YES)
+
+ # create the inner frame
+ self.inner = Frame(self.canvas)
+
+ # track changes to its size
+ self.inner.bind('', self.__configure)
+
+ # place the frame inside the canvas
+ # (this also runs the __configure method)
+ self.canvas.create_window(0, 0, window=self.inner, anchor=NW)
+
+ def showscroll(self, flag):
+ if flag:
+ self.scrollbar.pack(fill=Y, side=RIGHT)
+ else:
+ self.scrollbar.pack_forget()
+
+ def resetscroll(self, loc=0.0):
+ self.canvas.yview("moveto", loc)
+
+ def __configure(self, event):
+ # update the scrollbars to match the size of the inner frame
+ size = self.inner.winfo_reqwidth(), self.inner.winfo_reqheight()
+ self.canvas.config(scrollregion="0 0 %s %s" % size)
+
+
+ def helpwin(title, banner, text):
+ # help message window with a self-destruct button
+ helpwin = Toplevel()
+ helpwin.title(title)
+ helpwin.iconname(title)
+ if banner:
+ Label(helpwin, text=banner).pack()
+ textframe = Frame(helpwin)
+ scroll = Scrollbar(textframe)
+ helpwin.textwidget = Text(textframe, setgrid=TRUE)
+ textframe.pack(side=TOP, expand=YES, fill=BOTH)
+ helpwin.textwidget.config(yscrollcommand=scroll.set)
+ helpwin.textwidget.pack(side=LEFT, expand=YES, fill=BOTH)
+ scroll.config(command=helpwin.textwidget.yview)
+ scroll.pack(side=RIGHT, fill=BOTH)
+ Button(helpwin, text=lang["DONE"],
+ command=lambda x=helpwin: x.destroy(), bd=2).pack()
+ helpwin.textwidget.tag_config('url', foreground='blue', underline=YES)
+ helpwin.textwidget.tag_bind('url', '', launch_browser)
+ helpwin.textwidget.tag_bind('url', '', lambda event, x=helpwin.textwidget: x.config(cursor='hand2'))
+ helpwin.textwidget.tag_bind('url', '', lambda event, x=helpwin.textwidget: x.config(cursor='xterm'))
+ tag_urls(helpwin.textwidget, text)
+ helpwin.textwidget.config(state=DISABLED) # prevent editing
+ helpwin.lift()
+
+ def tag_urls(textwidget, text):
+ getURL = re.compile('((?:http|ftp|mailto|file)://[-.~/_?=#%\w]+\w)')
+ textlist = getURL.split(text)
+ for n in range(len(textlist)):
+ if n % 2 == 1:
+ textwidget.insert(END, textlist[n], ('url', textlist[n]))
+ else:
+ textwidget.insert(END, textlist[n])
+
+ def launch_browser(event):
+ url = event.widget.tag_names(CURRENT)[1]
+ webbrowser.open(url)
+
+ def make_icon_window(base, image):
+ try:
+ # Some older pythons will error out on this
+ icon_image = PhotoImage(data=image)
+ icon_window = Toplevel()
+ Label(icon_window, image=icon_image, bg='black').pack()
+ base.master.iconwindow(icon_window)
+ # Avoid TkInter brain death. PhotoImage objects go out of
+ # scope when the enclosing function returns. Therefore
+ # we have to explicitly link them to something.
+ base.keepalive.append(icon_image)
+ except:
+ pass
+
+
+ class ConfigMenu(Frame):
+ "Top-level CML2 configurator object."
+ def __init__(self, menu, config, banner):
+ Frame.__init__(self, master=None)
+ self.config = config
+ announce = configuration.banner + lang["VERSION"] % cml.version
+ if banner and announce.find("%s") > -1:
+ announce %= banner
+ self.master.title(announce)
+ self.master.iconname(announce)
+ self.master.resizable(FALSE, TRUE)
+ Pack.config(self, fill=BOTH, expand=YES)
+ self.keepalive = [] # Use this to anchor the PhotoImage object
+ if configuration.icon:
+ make_icon_window(self, configuration.icon)
+ self.menustack = []
+ self.locstack = []
+
+ ## Test icon display with the following:
+ # icon_image = PhotoImage(data=configuration.icon)
+ # Label(self, image=icon_image).pack(side=TOP, pady=10)
+ # self.keepalive.append(icon_image)
+ self.header = Frame(self)
+ self.header.pack(side=TOP, fill=X)
+
+ self.menubar = Frame(self.header, relief=RAISED, bd=2)
+ self.menubar.pack(side=TOP, fill=X, expand=YES)
+ self.filemenu = self.makeMenu(lang["FILEBUTTON"],
+ (("LOADBUTTON", self.load),
+ ("FREEZEBUTTON", self.freeze),
+ ("SAVEBUTTON", self.save),
+ ("SAVEAS", self.save_as),
+ ("QUITBUTTON", self.leave),
+ ))
+ self.navmenu = self.makeMenu(lang["NAVBUTTON"],
+ (("BACKBUTTON", self.pop),
+ ("UPBUTTON", self.up),
+ ("GOBUTTON", self.goto),
+ ("SEARCHBUTTON", self.symbolsearch),
+ ("HSEARCHBUTTON", self.helpsearch),
+ ("UNSUPPRESSBUTTON",self.toggle_suppress),
+ ("ANCESTORBUTTON",self.show_ancestors),
+ ("DEPENDENTBUTTON",self.show_dependents),
+ ))
+ self.helpmenu = self.makeMenu(lang["HELPBUTTON"],
+ (("HELPBUTTON", self.cmdhelp),))
+ self.menulabel=Label(self.menubar)
+ self.menulabel.pack(side=RIGHT)
+
+ self.toolbar = Frame(self.header, relief=RAISED, bd=2)
+ self.backbutton = Button(self.toolbar, text=lang["BACKBUTTON"],
+ command=self.pop)
+ self.backbutton.pack(side=LEFT)
+ self.helpbutton = Button(self.toolbar, text=lang["HELPBUTTON"],
+ command=lambda self=self: self.help(self.menustack[-1]))
+ self.helpbutton.pack(side=RIGHT)
+
+ self.menuframe = ScrolledFrame(self)
+ self.menuframe.pack(side=BOTTOM, fill=BOTH, expand=YES)
+
+ self.workframe = None
+
+ # Time to set up the main menu
+ self.lastmenu = None
+ self.push(configuration.start)
+
+ def makeMenu(self, label, ops):
+ mbutton = Menubutton(self.menubar, text=label, underline=0)
+ mbutton.pack(side=LEFT)
+ dropdown = Menu(mbutton)
+ for (legend, function) in ops:
+ dropdown.add_command(label=lang[legend], command=function)
+ mbutton['menu'] = dropdown
+ return dropdown
+
+ # Repainting
+
+ def build(self):
+ "Build widgets for all symbols in a menu, but don't pack them."
+
+ if self.workframe:
+ Widget.destroy(self.workframe)
+ self.workframe = Frame(self.menuframe.inner)
+ self.visible = []
+
+ menu = self.menustack[-1]
+ w = Label(self.workframe, text=menu.prompt)
+ w.pack(side=TOP, fill=X, expand=YES)
+ self.menulabel.config(text="(" + menu.name +")")
+
+ self.symbol2widget = {}
+ self.ties = {}
+ self.textparts = {}
+ for node in menu.items:
+ id = node.name + ": " + node.prompt
+ if inclusions and not node.included and node.is_symbol():
+ id += " " + lang["NEW"]
+ myframe = Frame(self.workframe)
+ if node.type == "message":
+ new = Label(myframe, text=node.prompt)
+ self.textparts[node.name] = new
+ elif node.frozen:
+ value = str(node.eval(debug))
+ new = Label(myframe, text=node.name + ": " + \
+ node.prompt + " = " + value)
+ self.textparts[node.name] = new
+ new.config(fg='blue')
+ elif node.type == "menu":
+ new = Button(myframe, text=node.prompt,
+ command=lambda x=self,y=node:x.push(y))
+ self.textparts[node.name] = new
+ elif node.type == "choices":
+ new = Menubutton(myframe, relief=RAISED,
+ text=node.prompt)
+ self.textparts[node.name] = new
+ cmenu = Menu(new, tearoff=0)
+ self.ties[node.name] = StringVar(self.workframe)
+ for alt in node.items:
+ cmenu.add_radiobutton(
+ label=alt.name+": "+alt.prompt,
+ variable=self.ties[node.name], value=alt.name,
+ command=lambda self=self, x=alt:self.setchoice(x))
+ # This is inelegant, but it will get the job done...
+ self.symbol2widget[alt] = new
+ new.config(menu=cmenu)
+ elif node.type in ("trit", "bool"):
+ new = Frame(myframe)
+ self.ties[node.name] = IntVar(self.workframe)
+ if configuration.trits_enabled:
+ w = Radiobutton(new, text="y", relief=GROOVE,
+ variable=self.ties[node.name], value=cml.y,
+ command=lambda x=node, self=self: \
+ self.set_symbol(x, cml.y))
+ w.pack(anchor=W, side=LEFT)
+ w = Radiobutton(new, text="m", relief=GROOVE,
+ variable=self.ties[node.name], value=cml.m,
+ command=lambda x=node, self=self: \
+ self.set_symbol(x, cml.m))
+ if node.type == "bool":
+ w.config(state=DISABLED, text="-")
+ w.pack(anchor=W, side=LEFT)
+ w = Radiobutton(new, text="n", relief=GROOVE,
+ variable=self.ties[node.name], value=cml.n,
+ command=lambda x=node, self=self: \
+ self.set_symbol(x, cml.n))
+ w.pack(anchor=W, side=LEFT)
+ else:
+ w = Checkbutton(new, relief=GROOVE,
+ variable=self.ties[node.name],
+ command=lambda x=node, self=self: \
+ self.set_symbol(x, (cml.n, cml.y)[self.ties[x.name].get()]))
+ w.pack(anchor=W, side=LEFT)
+ tw = Label(new, text=id, relief=GROOVE, anchor=W)
+ tw.pack(anchor=E, side=LEFT, fill=X, expand=YES)
+ self.textparts[node.name] = tw
+ elif node.discrete:
+ new = Menubutton(myframe, relief=RAISED,
+ text=node.name+": "+node.prompt,
+ anchor=W)
+ self.textparts[node.name] = new
+ cmenu = Menu(new, tearoff=0)
+ self.ties[node.name] = StringVar(self.workframe)
+ for value in node.range:
+ if node.type == "decimal":
+ label=`value`
+ elif node.type == "hexadecimal":
+ label = "0x%x" % value
+ cmenu.add_radiobutton(label=label, value=label,
+ variable=self.ties[node.name],
+ command=lambda self=self, symbol=node, label=label:self.set_symbol(symbol, label))
+ new.config(menu=cmenu)
+ elif node.enum:
+ new = Menubutton(myframe, relief=RAISED,
+ text=node.name+": "+node.prompt,
+ anchor=W)
+ self.textparts[node.name] = new
+ cmenu = Menu(new, tearoff=0)
+ self.ties[node.name] = StringVar(self.workframe)
+ for (label, value) in node.range:
+ cmenu.add_radiobutton(label=label, value=value,
+ variable=self.ties[node.name],
+ command=lambda self=self, symbol=node, label=label, value=value:self.set_symbol(symbol, value))
+ new.config(menu=cmenu)
+ elif node.type == "decimal":
+ self.ties[node.name] = StringVar(self.workframe)
+ new = ValidatedField(myframe, node,
+ id, self.ties[node.name],
+ lambda n, v, s=self: s.set_symbol(n, int(v)))
+ self.textparts[node.name] = new.L
+ elif node.type == "hexadecimal":
+ self.ties[node.name] = StringVar(self.workframe)
+ new = ValidatedField(myframe, node,
+ id, self.ties[node.name],
+ lambda n, v, s=self: s.set_symbol(n, int(v, 16)))
+ self.textparts[node.name] = new.L
+ elif node.type == "string":
+ self.ties[node.name] = StringVar(self.workframe)
+ new = ValidatedField(myframe, node,
+ id, self.ties[node.name],
+ self.set_symbol)
+ self.textparts[node.name] = new.L
+ new.pack(side=LEFT, anchor=W, fill=X, expand=YES)
+ help = Button(myframe, text=lang["HELPBUTTON"],
+ command=lambda symbol=node, self=self: self.help(symbol))
+ help.pack(side=RIGHT, anchor=E)
+ if not node.help():
+ help.config(state=DISABLED)
+ myframe.pack(side=TOP, fill=X, expand=YES)
+ self.symbol2widget[node] = myframe
+
+ # This isn't widget layout, it grays out the Back buttons
+ if len(self.menustack) <= 1:
+ self.backbutton.config(state=DISABLED)
+ self.navmenu.entryconfig(1, state=DISABLED)
+ else:
+ self.backbutton.config(state=NORMAL)
+ self.navmenu.entryconfig(1, state=NORMAL)
+
+ # Likewise, this grays out the help button when appropriate.
+ here = self.menustack[-1]
+ if isinstance(here, cml.ConfigSymbol) and here.help():
+ self.helpbutton.config(state=NORMAL)
+ else:
+ self.helpbutton.config(state=DISABLED)
+
+ # This grays out the "up" button
+ if not here.menu:
+ self.navmenu.entryconfig(2, state=DISABLED)
+ else:
+ self.navmenu.entryconfig(2, state=NORMAL)
+
+ # Pan canvas to the top of the widget list
+ self.menuframe.resetscroll()
+
+ def setchoice(self, symbol):
+ # Handle a choice-menu selection.
+ self.set_symbol(symbol, cml.y)
+ self.lastmenu = symbol
+
+ def refresh(self):
+ self.workframe.update()
+
+ # Dynamic resizing. This code can flake out in some odd
+ # ways, notably by where it puts the resized window (this
+ # is probably tickling a window-manager bug). We want
+ # normal placement somewhere in an unused area of the root
+ # window. What we get too often (at least under
+ # Enlightenment) is the window placed where the top of
+ # frame isn't visible -- which is annoying, because it
+ # makes it hard to move the window to a better spot.
+ widgetheight = self.workframe.winfo_reqheight()
+ # Allow 50 vertical pixels for window frame cruft.
+ maxheight = self.winfo_screenheight() - 50
+ oversized = widgetheight > maxheight
+ self.menuframe.showscroll(oversized)
+ if oversized:
+ # This assumes the scrollbar widget will be < 25 pixels wide
+ newwidth = self.workframe.winfo_width() + 25
+ newheight = maxheight
+ else:
+ newwidth = self.workframe.winfo_width()
+ newheight = widgetheight + \
+ self.menubar.winfo_height()+self.menubar.winfo_height()
+ self.master.geometry("%dx%d" % (newwidth, newheight))
+
+ self.workframe.lift()
+
+ def display(self):
+ menu = self.menustack[-1].items
+ newvisible = filter(lambda x: configuration.is_visible(x), menu)
+ # Insert all widgets that must newly become visible
+ for symbol in menu:
+ # Color the menu text
+ textpart = self.textparts[symbol.name]
+ if symbol.type in ("menu", "choices"):
+ if symbol.inspected:
+ textpart.config(fg='dark green')
+ elif not symbol.frozen:
+ textpart.config(fg='black')
+ elif symbol.type in ("trit", "bool"):
+ if symbol.setcount or symbol.included:
+ textpart.config(fg='dark green')
+ # Fill in the menu value
+ if self.ties.has_key(symbol.name):
+ if symbol.type == "choices":
+ self.ties[symbol.name].set(symbol.menuvalue.name)
+ elif symbol.type in ("string", "decimal") or symbol.enum:
+ self.ties[symbol.name].set(str(symbol.eval()))
+ elif symbol.type == "hexadecimal":
+ self.ties[symbol.name].set("0x%x" % symbol.eval())
+ else:
+ enumval = symbol.eval()
+ if not configuration.trits_enabled and symbol.is_logical():
+ enumval = min(enumval.value, cml.m.value)
+ self.ties[symbol.name].set(enumval)
+ # Now hack the widget visibilities
+ if symbol in newvisible and symbol not in self.visible:
+ argdict = {'anchor':W, 'side':TOP}
+ if self.menustack[-1].type != "choices":
+ argdict['expand'] = YES
+ argdict['fill'] = X
+ # Fiendishly clever hack alert: avoid excessive screen
+ # updating by repacking widgets in place as they pop
+ # in and out of visibility. Look for a first visible symbol
+ # after the current one. If you find one, use it to
+ # generate a "before" option for packing. Otherwise,
+ # generate an "after" option that packs after the last
+ # visible item.
+ if self.visible:
+ foundit = 0
+ for anchor in menu[menu.index(symbol):]:
+ if anchor in self.visible:
+ argdict['before'] = self.symbol2widget[anchor]
+ foundit = 1
+ break
+ if not foundit:
+ argdict['after'] = self.symbol2widget[self.visible[-1]]
+ self.visible.append(symbol)
+ self.symbol2widget[symbol].pack(argdict)
+ # We've used all the anchor points, clean up invisible ones
+ for symbol in menu:
+ if symbol not in newvisible:
+ self.symbol2widget[symbol].pack_forget()
+ elif symbol.type == "choices":
+ if symbol.menuvalue:
+ self.symbol2widget[symbol].winfo_children()[0].config(text="%s (%s)" % (symbol.prompt, symbol.menuvalue.name))
+ elif symbol.discrete:
+ self.symbol2widget[symbol].winfo_children()[0].config(text="%s: %s (%s)" % (symbol.name, symbol.prompt, str(symbol.eval())))
+ self.workframe.pack(side=BOTTOM)
+ self.toolbar.pack(side=BOTTOM, fill=X, expand=YES)
+ self.visible = newvisible
+
+ self.refresh()
+
+ # Operations on symbols and menus
+
+ def set_symbol(self, symbol, value):
+ "Set symbol, checking validity."
+ #print "set_symbol(%s, %s)" % (symbol.name, value)
+ if symbol.is_numeric() and symbol.range:
+ if not configuration.range_check(symbol, value):
+ Dialog(self,
+ title = lang["PROBLEM"],
+ text = lang["OUTOFBOUNDS"] % (symbol.range,),
+ bitmap = 'error',
+ default = 0,
+ strings = (lang["DONE"],))
+ return
+ old_tritflag = configuration.trits_enabled
+ # The set_grab() is an attempt to head off race conditions.
+ # We don't want the symbol widgets to accept new input
+ # events while the side-effects of a symbol set are still
+ # being computed.
+ self.master.grab_set()
+ (ok, effects, violation) = configuration.set_symbol(symbol,value)
+ self.master.grab_release()
+ if not ok:
+ explain = ""
+ if effects:
+ explain = lang["EFFECTS"] + "\n" \
+ + string.join(effects, "\n") + "\n"
+ explain += lang["ROLLBACK"] % (symbol.name, value) + \
+ "\n" + string.join(violation, "\n") + "\n"
+ Dialog(self,
+ title = lang["PROBLEM"],
+ text = explain,
+ bitmap = 'error',
+ default = 0,
+ strings = (lang["DONE"],))
+ else:
+ if old_tritflag != configuration.trits_enabled:
+ self.build()
+ if violation:
+ Dialog(self,
+ title = lang["SIDEEFFECTS"],
+ text = string.join(violation, "\n"),
+ bitmap = 'info',
+ default = 0,
+ strings = (lang["DONE"],))
+ self.display()
+
+ def help(self, symbol):
+ helpwin(title=lang["HELPBUTTON"],
+ banner=lang["HELPFOR"] % (symbol.name),
+ text = symbol.help())
+
+ def push(self, menu, highlight=None):
+ configuration.visit(menu)
+ self.menustack.append(menu)
+ self.locstack.append(self.menuframe.canvas.canvasy(0))
+ self.build()
+ self.lastmenu = highlight
+ self.display()
+ menu.inspected += 1
+
+ def pop(self):
+ if len(self.menustack) > 1:
+ from_menu = self.menustack[-1]
+ self.menustack = self.menustack[:-1]
+ self.build()
+ self.lastmenu = from_menu
+ self.display()
+ from_loc = self.locstack[-1]
+ self.locstack = self.locstack[:-1]
+ self.menuframe.resetscroll(from_loc)
+
+ # File menu operations
+
+ def enable_file_ops(self, ok):
+ if ok:
+ self.filemenu.entryconfig(1, state=NORMAL)
+ self.filemenu.entryconfig(2, state=NORMAL)
+ self.filemenu.entryconfig(3, state=NORMAL)
+ self.filemenu.entryconfig(4, state=NORMAL)
+ #self.filemenu.entryconfig(5, state=NORMAL)
+ else:
+ self.filemenu.entryconfig(1, state=DISABLED)
+ self.filemenu.entryconfig(2, state=DISABLED)
+ self.filemenu.entryconfig(3, state=DISABLED)
+ self.filemenu.entryconfig(4, state=DISABLED)
+ #self.filemenu.entryconfig(5, state=DISABLED)
+
+ def load(self):
+ self.enable_file_ops(0)
+ PromptGo(self, "LOADFILE", self.load_internal)
+ def load_internal(self, file):
+ "Load a configuration file."
+ if file:
+ old_tritflag = configuration.trits_enabled
+ try:
+ (changes, errors) = configuration.load(file, freeze=0)
+ except IOError:
+ Dialog(self,
+ title = lang["PROBLEM"],
+ text = lang["LOADFAIL"] % file,
+ bitmap = 'error',
+ default = 0,
+ strings = (lang["DONE"],))
+ else:
+ if errors:
+ Dialog(self,
+ title = lang["PROBLEM"],
+ text = errors,
+ bitmap = 'error',
+ default = 0,
+ strings = (lang["DONE"],))
+ else:
+ # Note, we don't try to display side effects here.
+ # From a file include, there are very likely to
+ # be more of them than can fit in a popup.
+ Dialog(self,
+ title = lang["OK"],
+ text = lang["INCCHANGES"] % (changes,file),
+ bitmap = 'hourglass',
+ default = 0,
+ strings = (lang["DONE"],))
+ self.enable_file_ops(1)
+ def freeze(self):
+ ans = Dialog(self,
+ title = lang["CONFIRM"],
+ text = lang["FREEZE"],
+ bitmap = 'questhead',
+ default = 0,
+ strings = (lang["FREEZEBUTTON"], lang["CANCEL"]))
+ if ans.num == 0:
+ for key in configuration.dictionary.keys():
+ entry = configuration.dictionary[key]
+ if entry.eval():
+ entry.final = 1
+
+ def save_internal(self, config):
+ failure = configuration.save(config)
+ if not failure:
+ return 1
+ else:
+ ans = Dialog(self,
+ title = lang["PROBLEM"],
+ text = failure,
+ bitmap = 'error',
+ default = 0,
+ strings = (lang["CANCEL"], lang["DONE"]))
+ return ans.num
+
+ def save(self):
+ if self.save_internal(self.config):
+ self.quit()
+
+ def save_as(self):
+ # Disable everything but quit while this is going on
+ self.enable_file_ops(0)
+ PromptGo(self, "SAVEFILE", self.save_as_internal)
+ def save_as_internal(self, file):
+ if file:
+ self.save_internal(file)
+ self.enable_file_ops(1)
+
+ def leave(self):
+ if configuration.commits == 0:
+ self.quit()
+ else:
+ ans = Dialog(self,
+ title = lang["QUITCONFIRM"],
+ text = lang["REALLY"],
+ bitmap = 'questhead',
+ default = 0,
+ strings = (lang["EXIT"], lang["CANCEL"]))
+ if ans.num == 0:
+ self.quit()
+ raise SystemExit, 1
+
+ # Navigation menu options
+
+ def enable_nav_ops(self, ok):
+ if ok:
+ self.navmenu.entryconfig(1, state=NORMAL)
+ self.navmenu.entryconfig(2, state=NORMAL)
+ self.navmenu.entryconfig(3, state=NORMAL)
+ self.navmenu.entryconfig(4, state=NORMAL)
+ #self.navmenu.entryconfig(5, state=NORMAL)
+ self.navmenu.entryconfig(6, state=NORMAL)
+ self.navmenu.entryconfig(7, state=NORMAL)
+ else:
+ self.navmenu.entryconfig(1, state=DISABLED)
+ self.navmenu.entryconfig(2, state=DISABLED)
+ self.navmenu.entryconfig(3, state=DISABLED)
+ self.navmenu.entryconfig(4, state=DISABLED)
+ #self.navmenu.entryconfig(5, state=DISABLED)
+ self.navmenu.entryconfig(6, state=DISABLED)
+ self.navmenu.entryconfig(7, state=DISABLED)
+
+ def up(self):
+ here = self.menustack[-1]
+ if here.menu:
+ self.push(here.menu, here)
+
+ def goto(self):
+ self.enable_nav_ops(0)
+ PromptGo(self, "GOTOBYNAME", self.goto_internal)
+ def goto_internal(self, symname):
+ if symname:
+ if not configuration.dictionary.has_key(symname):
+ Dialog(self,
+ title = lang["PROBLEM"],
+ text = lang["NONEXIST"],
+ bitmap = 'error',
+ default = 0,
+ strings = (lang["DONE"],))
+ else:
+ symbol = configuration.dictionary[symname]
+ # We can't go to a symbol in a choices menu directly;
+ # instead we must go to its parent.
+ if symbol.menu and symbol.menu.type == "choices":
+ symbol = symbol.menu
+ if not configuration.is_mutable(symbol):
+ Dialog(self,
+ title = lang["PROBLEM"],
+ text = lang["FROZEN"],
+ bitmap = 'hourglass',
+ default = 0,
+ strings = (lang["DONE"],))
+ elif not configuration.is_visible(symbol):
+ configuration.suppressions = 0
+ if symbol.type in ("menu", "choices"):
+ self.push(symbol)
+ else:
+ self.push(symbol.menu, symbol)
+ self.enable_nav_ops(1)
+
+ def symbolsearch(self):
+ self.enable_nav_ops(0)
+ PromptGo(self, "SEARCHSYMBOLS", self.symbolsearch_internal)
+ def symbolsearch_internal(self, pattern):
+ if not pattern is None:
+ if pattern:
+ hits = configuration.symbolsearch(pattern)
+ hits.inspected = 0
+ if hits.items:
+ configuration.suppressions = 0
+ self.push(hits)
+ else:
+ Dialog(self,
+ title = lang["PROBLEM"],
+ text = lang["NOMATCHES"],
+ bitmap = 'error',
+ default = 0,
+ strings = (lang["DONE"],))
+ else:
+ Dialog(self,
+ title = lang["PROBLEM"],
+ text = lang["EMPTYSEARCH"],
+ bitmap = 'error',
+ default = 0,
+ strings = (lang["DONE"],))
+ self.enable_nav_ops(1)
+
+ def helpsearch(self):
+ self.enable_nav_ops(0)
+ PromptGo(self, "SEARCHHELP", self.helpsearch_internal)
+ def helpsearch_internal(self, pattern):
+ if not pattern is None:
+ if pattern:
+ hits = configuration.helpsearch(pattern)
+ hits.inspected = 0
+ if hits.items:
+ configuration.suppressions = 0
+ self.push(hits)
+ else:
+ Dialog(self,
+ title = lang["PROBLEM"],
+ text = lang["NOMATCHES"],
+ bitmap = 'error',
+ default = 0,
+ strings = (lang["DONE"],))
+ else:
+ Dialog(self,
+ title = lang["PROBLEM"],
+ text = lang["EMPTYSEARCH"],
+ bitmap = 'error',
+ default = 0,
+ strings = (lang["DONE"],))
+ self.enable_nav_ops(1)
+
+ def show_ancestors(self):
+ self.enable_nav_ops(0)
+ PromptGo(self, "SHOW_ANC", self.show_ancestors_internal)
+ def show_ancestors_internal(self, symname):
+ if symname:
+ entry = configuration.dictionary.get(symname)
+ if not entry:
+ Dialog(self,
+ title = lang["INFO"],
+ text = lang["NONEXIST"],
+ bitmap = 'error',
+ default = 0,
+ strings = (lang["DONE"],))
+ elif not entry.ancestors:
+ Dialog(self,
+ title = lang["PROBLEM"],
+ text = lang["NOANCEST"],
+ bitmap = 'info',
+ default = 0,
+ strings = (lang["DONE"],))
+ else:
+ hits = cml.ConfigSymbol("ancestors", "menu")
+ hits.items = entry.ancestors
+ # Give result a parent only if all members have same parent
+ hits.menu = None
+ hits.frozen = 0
+ hits.inspected = 0
+ for symbol in hits.items:
+ if not configuration.is_visible(symbol):
+ configuration.suppressions = 0
+ if hits.menu == None:
+ hits.menu = symbol.menu
+ elif symbol.menu != hits.menu:
+ hits.menu = None
+ break
+ self.push(hits)
+ self.enable_nav_ops(1)
+
+ def show_dependents(self):
+ self.enable_nav_ops(0)
+ PromptGo(self, "SHOW_ANC", self.show_dependents_internal)
+ def show_dependents_internal(self, symname):
+ if symname:
+ entry = configuration.dictionary.get(symname)
+ if not entry:
+ Dialog(self,
+ title = lang["INFO"],
+ text = lang["NONEXIST"],
+ bitmap = 'error',
+ default = 0,
+ strings = (lang["DONE"],))
+ elif not entry.dependents:
+ Dialog(self,
+ title = lang["PROBLEM"],
+ text = lang["NOANCEST"],
+ bitmap = 'info',
+ default = 0,
+ strings = (lang["DONE"],))
+ else:
+ hits = cml.ConfigSymbol("dependents", "menu")
+ hits.items = entry.dependents
+ # Give result a parent only if all members have same parent
+ hits.menu = None
+ hits.frozen = 0
+ hits.inspected = 0
+ for symbol in hits.items:
+ if not configuration.is_visible(symbol):
+ configuration.suppressions = 0
+ if hits.menu == None:
+ hits.menu = symbol.menu
+ elif symbol.menu != hits.menu:
+ hits.menu = None
+ break
+ self.push(hits)
+ self.enable_nav_ops(1)
+
+ def toggle_suppress(self):
+ configuration.suppressions = not configuration.suppressions
+ if configuration.suppressions:
+ self.navmenu.entryconfig(6, label=lang["UNSUPPRESSBUTTON"])
+ else:
+ self.navmenu.entryconfig(6, label=lang["SUPPRESSBUTTON"])
+ self.build()
+ self.display()
+
+ # Help menu operations
+
+ def cmdhelp(self):
+ helpwin(title=lang["HELPBUTTON"],
+ banner=lang["HELPFOR"] % (configuration.banner,),
+ text=lang["TKCMDHELP"])
+
+except ImportError:
+ pass
+
+def tkinter_style_menu(config, banner):
+ "X front end for configurator."
+ ConfigMenu(configuration.start, config, banner).mainloop()
+
+# Report generator
+
+def menu_tree_list(node, indent):
+ "Print a map of a menu subtree."
+ totalindent = (indent + 4 * node.depth)
+ trailer = (" " * (40 - totalindent - len(node.name))) + `node.prompt`
+ print " " * totalindent, node.name, trailer
+ if configuration.debug:
+ if node.visibility:
+ print " " * 41, lang["VISIBILITY"], cml.display_expression(node.visibility)
+ if node.default:
+ print " " * 41, lang["DEFAULT"], cml.display_expression(node.default)
+ if node.items:
+ for child in node.items:
+ menu_tree_list(child, indent + 4)
+
+# Environment probes
+
+def is_under_X():
+ # It would be nice to just check WINDOWID, but some terminal
+ # emulators don't set it. One of those is kvt.
+ if os.environ.has_key("WINDOWID"):
+ return 1
+ else:
+ import commands
+ (status, output) = commands.getstatusoutput("xdpyinfo")
+ return status == 0
+
+# Rulebase loading and option processing
+
+def load_system(cmd_options, cmd_arguments):
+ "Read in the rulebase and handle command-line arguments."
+ global debug, config, inclusions
+ debug = inclusions = 0;
+ config = None
+
+ if not cmd_arguments:
+ rulebase = "rules.out"
+ else:
+ rulebase = cmd_arguments[0]
+ try:
+ open(rulebase, 'rb')
+ except IOError:
+ print lang["NOFILE"] % (rulebase,)
+ raise SystemExit
+ configuration = cmlsystem.CMLSystem(rulebase)
+
+ process_options(configuration, cmd_options)
+
+ configuration.debug_emit(1, lang["PARAMS"] % (config,configuration.prefix))
+
+ # Perhaps the user needs modules enabled initially
+ if configuration.trit_tie and cml.evaluate(configuration.trit_tie):
+ configuration.trits_enabled = 1
+
+ # Don't count all these automatically generated settings
+ # for purposes of figuring out whether we should confirm a quit.
+ configuration.commits = 0
+
+ return configuration
+
+def process_include(configuration, file, freeze):
+ "Process a -i or -I inclusion option."
+ # Failure to find an include file is non-fatal
+ try:
+ (changes, errors) = configuration.load(file, freeze)
+ except IOError:
+ print lang["LOADFAIL"] % file
+ return
+ if errors:
+ print errors
+ elif configuration.side_effects:
+ print lang["SIDEFROM"] % file
+ sys.stdout.writelines(string.join(configuration.side_effects, "\n") + "\n")
+
+def process_define(configuration, val, freeze):
+ "Process a -d=xxx or -D=xxx option."
+ parts = string.split(val, "=")
+ sym = parts[0]
+ if configuration.dictionary.has_key(sym):
+ sym = configuration.dictionary[sym]
+ else:
+ configuration.errout.write(lang["SYMUNKNOWN"] % (`sym`,))
+ sys.exit(1)
+ if sym.is_derived():
+ configuration.debug_emit(1, lang["DERIVED"] % (`sym`,))
+ sys.exit(1)
+ elif sym.is_logical():
+ if len(parts) == 1:
+ val = 'y'
+ elif parts[1] == 'y':
+ val = 'y'
+ elif parts[1] == 'm':
+ configuration.trits_enabled = 1
+ val = 'm'
+ elif parts[1] == 'n':
+ val = 'n'
+ elif len(parts) == 1:
+ print lang["NOCMDLINE"] % (`sym`,)
+ sys.exit(1)
+ else:
+ val = parts[1]
+ (ok, effects, violation) = configuration.set_symbol(sym,
+ configuration.value_from_string(sym, val),
+ freeze)
+ if not ok:
+ if effects:
+ print lang["EFFECTS"]
+ sys.stdout.writelines(string.join(effects,"\n")+"\n")
+ print lang["ROLLBACK"] % (symbol.name, value)
+ if configuration.side_effects:
+ sys.stdout.writelines(string.join(violation,"\n")+"\n")
+
+def process_options(configuration, options):
+ # Process command-line options second so they override
+ global list, config
+ global force_batch, force_x, force_tty, force_curses, debug
+ global readlog, inclusions, banner
+ config = "config.out"
+ for (switch, val) in options:
+ if switch == '-b':
+ force_batch = 1
+ elif switch == '-B':
+ banner = val
+ elif switch == '-d':
+ process_define(configuration, val, freeze=0)
+ elif switch == '-D':
+ process_define(configuration, val, freeze=1)
+ elif switch == '-i':
+ process_include(configuration, val, freeze=0)
+ inclusions += 1
+ elif switch == '-I':
+ process_include(configuration, val, freeze=1)
+ inclusions += 1
+ elif switch == '-l':
+ list = 1
+ elif switch == '-o':
+ config = val
+ elif switch == '-v':
+ debug = debug + 1
+ configuration.debug = configuration.debug + 1
+ elif switch == '-S':
+ configuration.suppressions = 0
+ elif switch == '-R':
+ readlog = open(val, "r")
+
+# Main sequence -- isolated here so we can profile it
+
+def main(options, arguments):
+ global force_batch, force_x, force_curses, force_tty
+ global configuration
+
+ try:
+ configuration = load_system(options, arguments)
+ except KeyboardInterrupt:
+ raise SystemExit
+
+ if list:
+ try:
+ menu_tree_list(configuration.start, 0)
+ except EnvironmentError:
+ pass # Don't emit a traceback when we interrupt the listing
+ raise SystemExit
+ # Perhaps we're in batchmode. If so, only process options.
+ if force_batch:
+ # Have to realize all choices values first...
+ for entry in configuration.dictionary.values():
+ if entry.type == "choices":
+ configuration.visit(entry)
+ configuration.save(config)
+ return
+
+ # Next, try X
+ if force_x:
+ tkinter_style_menu(config, banner)
+ return
+
+ # Next, try curses
+ if force_curses and not force_tty:
+ try:
+ curses.wrapper(curses_style_menu, config, banner)
+ return
+ except "TERMTOOSMALL":
+ print lang["TERMTOOSMALL"]
+ force_tty = 1
+
+ # If both failed, go glass-tty
+ if force_tty:
+ print lang["WELCOME"]%(configuration.banner,) + lang["VERSION"]%(cml.version,)
+ configuration.errout = sys.stdout
+ print lang["TTYQUERY"]
+ tty_style_menu(config, banner).cmdloop()
+
+if __name__ == '__main__':
+ try:
+ runopts = "bB:cD:d:h:i:I:lo:P:R:StVvWx"
+ (options,arguments) = getopt.getopt(sys.argv[1:], runopts)
+ if os.environ.has_key("CML2OPTIONS"):
+ (envopts, envargs) = getopt.getopt(
+ os.environ["CML2OPTIONS"].split(),
+ runopts)
+ options = envopts + options
+ except:
+ print lang["BADOPTION"]
+ sys.exit(1)
+
+ for (switch, val) in options:
+ if switch == "-V":
+ print "cmlconfigure", cml.version
+ raise SystemExit
+ elif switch == '-P':
+ proflog = val
+ elif switch == '-x':
+ force_x = 1
+ elif switch == '-t':
+ force_tty = 1
+ elif switch == '-c':
+ force_curses = 1
+
+ # Probe the environment to see if we can use X for the front end.
+ if not force_tty and not force_curses and not force_x:
+ force_x = is_under_X()
+
+ # Do we see X capability?
+ if force_x:
+ try:
+ from Tkinter import *
+ from Dialog import *
+ except:
+ print lang["NOTKINTER"]
+ time.sleep(5)
+ force_curses = 1
+ force_x = 0
+
+ # Probe the environment to see if we can come up in ncurses mode
+ if not force_tty and not force_x:
+ if not os.environ.has_key('TERM'):
+ print lang["TERMNOTSET"]
+ force_tty = 1
+ else:
+ import traceback
+ try:
+ import curses, curses.textpad, curses.wrapper
+ force_curses = 1
+ except:
+ ImportError
+ print lang["NOCURSES"]
+ force_tty = 1
+
+ if force_tty:
+ # It's been reported that this import fails under some 1.5.2s.
+ # No disaster; it's just a convenience to have command history
+ # in the line-oriented mode.
+ try:
+ import readline
+ except:
+ pass
+
+ try:
+ if proflog:
+ import profile, pstats
+ profile.run("main(options, arguments)", proflog)
+ else:
+ main(options, arguments)
+ except KeyboardInterrupt:
+ #if configuration.commits > 0:
+ # print lang["NOTSAVED"]
+ print lang["ABORTED"]
+ raise SystemExit, 2
+ except "UNSATISFIABLE":
+ #configuration.save("post.mortem")
+ print lang["POSTMORTEM"]
+ raise SystemExit, 3
+
+# That's all, folks!
diff -uNr linux.2.4.14.pristine/scripts/cmlsystem.py linux/scripts/cmlsystem.py
--- linux.2.4.14.pristine/scripts/cmlsystem.py Wed Dec 31 19:00:00 1969
+++ linux/scripts/cmlsystem.py Wed Nov 14 17:01:24 2001
@@ -0,0 +1,1111 @@
+"""
+cmlsystem.py -- CML2 configurator front-end support
+
+by Eric S. Raymond,
+
+Mode-independent code for front ends. This supplies one big class that you
+initialize by loading a compiled rulebase. The class provides functions for
+doing tests and manipulations on the rulebase, and for writing out
+configuration files.
+"""
+
+import os, sys, re
+import cml
+
+_eng = {
+ "ABOUT":"About to write %s=%s (type %s)",
+ "BADEQUALS":"bad token `%s' while expecting '='.",
+ "BADVERSION":"Compiler/configurator version mismatch, recompile the rulebase please.\n",
+ "BADTOKEN":"bad token `%s' while expecting symbol.",
+ "BADTRIT":"Boolean symbol %s cannot have value m.",
+ "BINDING":" Binding from constraint: %s (source %s)",
+ "CHECKDONE":" ...menu %s check done",
+ "CHECKING":" Checking menu %s...",
+ "COMMIT":" Committing new bindings.",
+ "CONSTRAINT":" Value %s for %s failed constraint %s",
+ #"DERIVED":"Cannot set derived symbol %s",
+ "EXCLUDED":" %s value %s excluded by %s",
+ "FAILREQ":" Failed constraint %s",
+ #"FORBIDDEN":"%s=%s would violate %s",
+ "FROZEN":" (frozen)",
+ "HELPFLAG":"Help-required flag is %s",
+ "INCONST":"Symbol %s forced to n during recovery attempt.\n",
+ "INVISANC":" %s not visible, ancestor %s false",
+ "INVISME":" %s not visible, %s guard %s is false",
+ "INVISSTART":" is_visible(%s) called",
+ "MODULESN":"All M-valued symbols will be forced to Y.",
+ "MODULESM":"All tristate symbols will default to M.",
+ "MODULESY":"Tristate symbols won't default to M.",
+ "NOHELP":" %s not visible, it has no help",
+ "RADIOINVIS":" Query of choices menu %s elided, button pressed",
+ "READING":"Reading configuration from %s",
+ "RECOVERY":"Attempting recovery from invalid configuration:",
+ "RECOVEROK":"Recovery OK.",
+ "REDUNDANT":" Redundant assignment forced by %s",
+ "RENAME":"Attempt to rename %s to %s failed.",
+ "ROLLBACK":" Rolling back new bindings: ",
+ "SAVEEND":"#\n# That's all, folks!\n",
+ "SETTING":"%s=%s",
+ "SHAUTOGEN":"#\n# Automatically generated, don't edit\n#\n",
+ "SHDERIVED":"#\n# Derived symbols\n#\n",
+ "SIDEEFFECT":" (deduced from %s)",
+ "SUBINVIS":" %s not visible, all subqueries invisible.",
+ "TRIGGER":" Set of %s = %s triggered by guard %s",
+ "TRITFLAG":"Trit flag is now %s",
+ "TRITSOFF":" %s not visible, trits are suppressed",
+ "TYPEUNKNOWN":"Node %s unknown value type: %s %s",
+ "UNCHANGED":" Symbol %s unchanged",
+ "UNLOAD1":"File load violated these constraints:",
+ "UNLOAD2":"Undoing file loads, recovery failed these constraints:",
+ #"UNSATISFIABLE":"Ruleset found unsatisfiable while setting %s",
+ "USERSETTING":"User action on %s.",
+ "VALIDRANGE":" Valid range of %s is %s",
+ "VALUNKNOWN":"Node %s %s has unknown value: %s",
+ "VISIBLE":" Query of %s *not* elided",
+}
+
+class CMLSystem(cml.CMLRulebase):
+ "A rulebase, from the point of view of a front end."
+ def __init__(self, rulebase):
+ import cPickle
+ rules = cPickle.load(open(rulebase, "rb"))
+
+ # Copy the symbol table, adding runtime value state.
+ self.__dict__ = rules.__dict__
+ for entry in self.dictionary.values():
+ entry.frozen = 0 # True if it has been frozen
+ if entry.type == "choices":
+ entry.menuvalue = entry.default
+ else:
+ entry.menuvalue = None
+ entry.inspected = 0 # Track menu inspections
+ entry.setcount = 0 # Should this symbol be written?
+ entry.included = 0 # Seen in an inclusion?
+ entry.bindingstack = [] # Symbol's value stack
+ self.oldbindings = {}
+ self.newbindings = {}
+ self.chilled = {}
+ self.touched = [] # Does it have an uncommitted binding?
+
+ # Enhance the ConfigSymbol methods to deal with the value state
+ cml.ConfigSymbol.oldeval = cml.ConfigSymbol.eval
+ def _neweval(symbol, debug=0, self=self): # Not a method!
+ value = self.__bindeval(symbol, debug=debug)
+ if value != None:
+ return value
+ value = cml.ConfigSymbol.oldeval(symbol, debug)
+ if value != None:
+ return value
+ elif symbol.type in ("decimal", "hexadecimal"):
+ return 0
+ elif symbol.type == "string":
+ return ""
+ elif symbol.type == "bool":
+ return cml.n
+ elif symbol.type == "trit":
+ if self.module_default and not symbol.constraints:
+ return cml.m
+ else:
+ return cml.n
+ else:
+ return None # for menu, choices, and message-valued symbols
+ cml.ConfigSymbol.eval = _neweval
+
+ def _newstr(symbol): # Not a method!
+ res = "%s={" % (symbol.name)
+ res = res + symbol.dump()
+ value = symbol.eval()
+ if value != None:
+ res = res + " value " + str(value) + ","
+ if symbol.frozen:
+ res = res + " frozen,"
+ return res[:-1] + "}"
+ cml.ConfigSymbol.__str__ = _newstr
+
+ # Extra state for the configuration object
+ self.debug = 0 # Initially, no status logging
+ self.errout = sys.stderr # Where to do status logging
+ self.suppressions = 1 # Yes, do visibility checks
+ self.inclusion = 0 # Are we doing a file inclusion?
+ self.trits_enabled = 0 # Initially, support booleans only
+ self.commits = 0 # Value sets since last save
+ self.lang = _eng # Someday we'll support more languages.
+ self.side_effects = [] # Track side effects
+ self.module_suppress = 0 # Make trits invisible
+ self.module_default = 0 # Should we default to modular?
+
+ if rules.version != cml.version:
+ sys.stderr.write(self.lang["BADVERSION"])
+ raise SystemExit, 1
+
+ # Utility code
+
+ def debug_emit(self, threshold, msg):
+ "Conditionally emit a debug message to the designated error stream."
+ if self.debug >= threshold:
+ self.errout.write(msg + "\n")
+
+ # Handling of symbol bindings is encapsulated here. The semantics we
+ # want is for every side-effect to be associated with the symbol
+ # whose user-specified change in value triggered it. That way, if
+ # and when the user changes the symbol's value again, we can back out'
+ # all previous side-effects contingent on that symbol.
+ #
+ # Essentially what we're doing here is journalling all bindings.
+ # It has to be this way, because different values of the same symbol
+ # could trigger completely different side effects depending on
+ # how the constraints are written.
+ class __Binding:
+ def __init__(self, symbol, value, source, link):
+ self.symbol = symbol
+ self.value = value
+ self.source = source
+ self.link = link
+ self.visible = 1
+
+ def __bindeval(self, symbol, debug=0):
+ "Get the most recent visible value for symbol off the binding stack."
+ #self.debug_emit(2, " bindeval(%s)" % (symbol.name))
+ if not hasattr(symbol, "bindingstack"):
+ return None
+ for binding in symbol.bindingstack:
+ if binding.visible:
+ return binding.value
+ def __bindsymbol(self, symbol, value, source=None):
+ "Bind symbol to a given value."
+ self.debug_emit(2, " bindsymbol(%s, %s, %s)" % (symbol.name, value, `source`))
+ if not source:
+ source = symbol
+ # Here is the actual binding-stack hack
+ newbinding = self.__Binding(symbol,value, source,self.newbindings.get(source))
+ self.newbindings[source] = newbinding
+ symbol.bindingstack = [newbinding] + symbol.bindingstack
+ # Side-effect tracking
+ if source == None or source == symbol:
+ side = ""
+ else:
+ side = self.lang["SIDEEFFECT"] % (`source`,)
+ side = self.lang["SETTING"] % (symbol.name, value) + side
+ if source and source != symbol:
+ self.side_effects.append(side)
+ if symbol == self.trit_tie:
+ if value == cml.n:
+ self.side_effects.append(self.lang["MODULESN"])
+ elif value == cml.m:
+ self.side_effects.append(self.lang["MODULESM"])
+ elif value == cml.y:
+ self.side_effects.append(self.lang["MODULESY"])
+ # Debugging support
+ if self.debug:
+ self.debug_emit(1, " " + side)
+ # Mark it to be written
+ menu = symbol
+ while menu:
+ menu.setcount += 1
+ menu = menu.menu
+ def __unbindsymbol(self, symbol, context):
+ "Remove all bindings of a given symbol from a given context"
+ listhead = context.get(symbol)
+ if listhead:
+ while listhead:
+ listhead.symbol.bindingstack.remove(listhead)
+ listhead = listhead.link
+ del context[symbol]
+ if symbol.menu.type == "choices":
+ for sibling in symbol.menu.items:
+ if sibling.eval():
+ symbol.menu.menuvalue = sibling
+ break
+ def __bindcommit(self):
+ "Commit all new bindings."
+ undo = []
+ # When we undo side-effects from a choice symbol, all the side-effects
+ # from setting its siblings have to be backed out too.
+ for primary in self.newbindings.keys():
+ if primary.menu.type == "choices":
+ undo.extend(primary.menu.items)
+ else:
+ undo.append(primary)
+ # This is the magic moment that undoes side-effects
+ for symbol in undo:
+ self.__unbindsymbol(symbol, self.oldbindings)
+ self.oldbindings.update(self.newbindings)
+ self.newbindings.clear()
+ self.commits = self.commits + 1
+ def __bindreveal(self, primary):
+ "Make every old binding of symbol visible."
+ bindings = self.oldbindings.get(primary)
+ if bindings:
+ listhead = bindings
+ while listhead:
+ listhead.visible = 1
+ listhead = listhead.link
+ def __bindconceal(self, primary):
+ "Temporarily make old bindings hanging on a given primary invisible."
+ bindings = self.oldbindings.get(primary)
+ if bindings:
+ listhead = bindings
+ while listhead:
+ listhead.visible = 0
+ listhead = listhead.link
+ def binddump(self, context=None):
+ "Dump the state of the bindings stack."
+ res = ""
+ if context == None:
+ context=self.oldbindings
+ for (primary, bindings) in context.items():
+ res = res + "# %s(%s, touched=%d): " % (primary.name,("inactive","active")[bindings.visible], primary in self.touched)
+ while bindings:
+ res = res + bindings.symbol.name + "=" + `bindings.value` + ", "
+ bindings = bindings.link
+ res = res[:-2] + "\n"
+ return res
+
+ #
+ # Loading and saving
+ #
+ def load(self, file, freeze=0):
+ "Load bindings from a defconfig-format configuration file."
+ import shlex
+ stream = shlex.shlex(open(file), file)
+ self.debug_emit(1, self.lang["READING"] % (file,))
+ changes = 0
+ errors = ""
+ self.inclusion = 1
+ self.side_effects = [] # Not needed if we're using set_symbol below
+ while 1:
+ dobind = 1
+ symname = stream.get_token()
+ if not symname:
+ break
+ if len(self.prefix) and symname[0:len(self.prefix)] == self.prefix:
+ symname = symname[len(self.prefix):]
+ if self.dictionary.has_key(symname):
+ symbol = self.dictionary[symname]
+ else:
+ symbol = None
+ errmsg = stream.error_leader()+self.lang["BADTOKEN"]%(symname)
+ errors = errors + errmsg + "\n"
+ dobind = 0
+
+ sep = stream.get_token()
+ if sep != '=':
+ errmsg = stream.error_leader()+self.lang["BADEQUALS"]%(sep,)
+ errors = errors + errmsg + "\n"
+ dobind = 0
+ value = stream.get_token()
+
+ # Do this check early to avoid Python errors if the file
+ # is malformed.
+ if not dobind:
+ continue
+
+ if value[0] in stream.quotes:
+ value = value[1:-1]
+
+ if not symbol:
+ continue
+ # We can't permit these files to override derivations
+ if symbol.is_derived():
+ #errmsg = stream.error_leader()+self.lang["DERIVED"]%(symbol.name,)
+ #errors = errors + errmsg + "\n"
+ continue
+
+ # Michael Chastain's case -- treat variable as new if
+ # value is m but the type cas been changed to bool
+ if value == 'm' and symbol.type == "bool":
+ errmsg = stream.error_leader()+self.lang["BADTRIT"]%(symbol,)
+ errors = errors + errmsg + "\n"
+ continue
+
+ # Note that we've seen this in an inclusion -- it's not new.
+ symbol.included = 1
+
+ # If we load a configuration with trit values,
+ # force those to be enabled.
+ if symbol.type == "trit" and value == "m":
+ self.trits_enabled = 1
+
+ # Don't count changes to variables that are already set at the
+ # desired value. Do them, though, so they can be frozen.
+ oldval = symbol.eval()
+ # Use this for consistency checking by file
+ self.__set_symbol_internal(symbol,
+ self.value_from_string(symbol,value))
+ self.chilled.clear()
+ if value != oldval:
+ changes = changes + 1
+
+ stream.instream.close()
+ self.inclusion = 0
+ violations = self.sanecheck()
+ if not violations:
+ self.__commit(freeze)
+ else:
+ errors += self.lang["UNLOAD1"]+"\n" + "\n".join(violations) + "\n"
+ # This is an attempt to recover from inconsistent
+ # configurations. (Unusual case -- typically happens only
+ # when a new constraint is added to a rulebase, not in the
+ # more common case of new symbols.) General recovery is
+ # very hard, it involves constrained satisfaction problems
+ # for which there are not just no good algorithms, there
+ # are no clean definitions. We settle for a simple,
+ # stupid hack. Force all the unfrozen symbols in the
+ # violated constraints to n and see what happens.
+ nukem = []
+ self.debug_emit(1, self.lang["RECOVERY"])
+ for i in range(len(self.constraints)):
+ if not cml.evaluate(self.reduced[i], self.debug):
+ flattened = cml.flatten_expr(self.constraints[i].predicate)
+ for sym in flattened:
+ if not sym in nukem and not sym.frozen and sym.is_logical():
+ nukem.append(sym)
+ if nukem:
+ errors += self.lang["RECOVERY"] + "\n"
+ for sym in nukem:
+ errors += self.lang["INCONST"] % (sym.name,)
+ self.__set_symbol_internal(sym, cml.n)
+ self.chilled.clear()
+ violations = self.sanecheck()
+ if not violations:
+ self.__commit(freeze)
+ errors += self.lang["RECOVEROK"]
+ else:
+ self.__rollback()
+ errors += self.lang["UNLOAD2"]+"\n" + "\n".join(violations) + "\n"
+ return (changes, errors)
+
+ def saveable(self, node):
+ "Should this symbol be visible in the configuration written out?"
+ if node.setcount:
+ return 1
+ if node.visibility == cml.n: # Result of variable freezes
+ return 0
+ elif node.ancestors and node.ancestors[-1].eval() == cml.n:
+ return 0
+ return 1
+
+ def save(self, config, baton=None):
+ "Save a configuration to the named output file."
+ newbindings = None
+ if self.newbindings:
+ newbindings = self.newbindings
+ self.newbindings = {}
+ try:
+ shelltemp = ".tmpconfig%d.sh" % os.getpid()
+ config_sh = open(shelltemp, "w")
+ config_sh.write(self.lang["SHAUTOGEN"])
+ # Write mutable symbols, including defaulted modular symbols.
+ self.module_suppress = 0
+ self.__save_recurse(self.start, config_sh, baton=None)
+ if self.trit_tie:
+ self.module_suppress = (self.trit_tie.eval() == cml.m)
+ # Write all derived symbols
+ config_sh.write(self.lang["SHDERIVED"])
+ for entry in self.dictionary.values():
+ if entry.is_derived():
+ if baton:
+ baton.twirl()
+ self.__save_recurse(entry, config_sh)
+ # Perhaps this is a crash dump from an inconsistent ruleset?
+ if newbindings:
+ self.newbindings = newbindings
+ config_sh.write("#\n# Uncommitted bindings\n#\n")
+ config_sh.write(self.binddump(self.newbindings))
+ config_sh.write(self.lang["SAVEEND"])
+ config_sh.close()
+ try:
+ os.rename(shelltemp, config)
+ except OSError:
+ reason = self.lang["RENAME"] % (shelltemp, config,)
+ raise IOError, reason
+ self.commits = 0
+ if baton:
+ baton.end()
+ return None
+ except IOError, details:
+ return details.args[0]
+
+ def __save_recurse(self, node, shellstream, baton=None):
+ if not self.saveable(node):
+ return
+ elif node.items:
+ shellstream.write("\n#\n# %s\n#\n" % (node.prompt,))
+ for child in node.items:
+ self.__save_recurse(child, shellstream)
+ shellstream.write("\n")
+ elif node.type != 'message':
+ symname = self.prefix + node.name
+ value = node.eval(self.debug)
+ self.debug_emit(2, self.lang["ABOUT"] %(symname,value,type(value)))
+ try:
+ if node.type == "decimal":
+ shellstream.write("%s=%d\n" % (symname, value))
+ elif node.type == "hexadecimal":
+ shellstream.write("%s=0x%x\n" % (symname, value))
+ elif node.type == "string":
+ shellstream.write("%s=\"%s\"\n" % (symname, value))
+ elif node.type in ("bool", "trit"):
+ shellstream.write("%s=%s\n" % (symname, `value`))
+ elif value == None and node.is_logical():
+ shellstream.write("%s=n\n" % (symname,))
+ else:
+ raise ValueError, self.lang["VALUNKNOWN"] % (node,node.type,value)
+ except:
+ (errtype, errval, errtrace) = sys.exc_info()
+ print "Internal error %s while writing %s." % (errtype, node)
+ raise SystemExit, 1
+ if baton:
+ baton.twirl()
+
+ # Symbol predicates.
+
+ def is_mutable(self, symbol):
+ "Is a symbol mutable (not frozen, not derived)?"
+ return isinstance(symbol, cml.ConfigSymbol) and not symbol.is_derived() and not symbol.frozen
+
+ def is_visible(self, query):
+ "Should we ask this question?"
+ self.debug_emit(2, self.lang["INVISSTART"] % (query.name,))
+ # Maybe we're not doing elisions
+ if not self.suppressions:
+ return 1
+ # Maybe we're suppressing trits entirely.
+ if not self.__trit_visible(query):
+ return 0
+ # Maybe it has no help.
+ if not self.__help_visible(query):
+ return 0
+ # Check to see if the symbol or any menu in the chain above it
+ # is suppressed by a visibility constraint.
+ if not self.__upward_visible(query):
+ return 0
+ # OK, now check that all ancestors are visible
+ if not self.__dep_visible(query):
+ return 0
+ # Now check ancestors of the containing menu
+ if query.menu and not self.__dep_visible(query.menu):
+ return 0
+ # Elide a menu if all subqueries are invisible, or a choices if one is.
+ if not self.__subqueries_visible(query):
+ return 0
+ # All tests passed, it's visible
+ self.debug_emit(2, self.lang["VISIBLE"] % (query.name))
+ return 1
+
+ def is_visible_choices_item(self, query):
+ # Maybe we're not doing elisions
+ if not self.suppressions:
+ return 1
+ # The query should be a symbol
+ if not query.is_symbol():
+ return 0
+ # Is the 'choices menu' visible ?
+ # Is the query really in a menu ?
+ if not query.menu:
+ return 0
+ # Is the query really in a 'choices menu' ?
+ if not query.menu.type == "choices":
+ return 0
+ # Check to see if the symbol or any menu in the chain above it
+ # is suppressed by a visibility constraint.
+ if not self.__upward_visible(query.menu):
+ return 0
+ # OK, now check that all ancestors are visible
+ if not self.__dep_visible(query.menu):
+ return 0
+ # Now check ancestors of the containing menu
+ if query.menu.menu and not self.__dep_visible(query.menu.menu):
+ return 0
+ # The 'choices menu' seems to be visible.
+ # Now check that the query is visible.
+ # Maybe it has no help.
+ if not self.__help_visible(query):
+ return 0
+ # OK, now check that all ancestors are visible
+ if not self.__dep_visible(query):
+ return 0
+ # All tests passed, it's visible
+ return 1
+
+ def is_visible_menus_choices(self, query):
+ # Maybe we're not doing elisions
+ if not self.suppressions:
+ return 1
+ # Maybe we're suppressing trits entirely.
+ if not self.__trit_visible(query):
+ return 0
+ # Maybe it has no help.
+ if not self.__help_visible(query):
+ return 0
+ # OK, now check that all ancestors are visible
+ if not self.__dep_visible(query):
+ return 0
+ # Elide a menu if all subqueries are invisible, or a choices if one is.
+ if not self.__subqueries_visible(query):
+ return 0
+ # All tests passed, it's visible
+ return 1
+ #
+ # All the properties of visibility are implemented here
+ #
+ def __trit_visible(self, query):
+ if query.type == "trit":
+ if self.module_suppress and not query.vital and not query.constraints and not query.setcount:
+ self.debug_emit(2, self.lang["TRITSOFF"] % query.name)
+ return 0
+ return 1
+
+ def __help_visible(self, query):
+ if query.is_symbol() and not query.help() and self.help_tie and not self.help_tie.eval():
+ self.debug_emit(2, self.lang["NOHELP"] % query.name)
+ return 0
+ return 1
+
+ def __upward_visible(self, query):
+ upward = query
+ while upward != self.start:
+ if upward.visibility != None and not cml.evaluate(upward.visibility):
+ self.debug_emit(2, self.lang["INVISME"] % (query.name, upward.name, cml.display_expression(upward.visibility)))
+ return 0
+ upward = upward.menu
+ return 1
+
+ def __subqueries_visible(self, query):
+ if query.items:
+ setcount = 0
+ if query.type == 'menu' or query.type == 'choices':
+ for child in query.items:
+ if child.type != "message":
+ if self.is_visible_menus_choices(child):
+ setcount = 1
+ break
+ if setcount == 0:
+ return 0
+ return 1
+
+ #
+ # All the properties of the dependency relationship are implemented here
+ #
+ def __dep_value_ok(self, symbol, value):
+ "Do ancestry relationships allow given value of given symbol"
+ for ancestor in symbol.ancestors:
+ v = cml.evaluate(ancestor, self.debug)
+ if (symbol.type == "trit" and value > v):
+ break
+ elif (symbol.type =="bool" and value > (v != cml.n)):
+ break
+ else:
+ return 1 # Tricky use of for-else
+ self.debug_emit(2, self.lang["EXCLUDED"] % (`symbol`, `cml.trit(value)`, `ancestor`))
+ return 0
+
+ def __dep_visible(self, symbol):
+ "Do ancestry relations allow a symbol to be visible?"
+ # Note: we don't need to recurse here, assuming dependencies
+ # get propagated correctly.
+ for super in symbol.ancestors:
+ if not cml.evaluate(super):
+ self.debug_emit(2,self.lang["INVISANC"]%(symbol.name,super.name))
+ return 0
+ return 1
+
+ def __dep_force_ancestors(self, dependent, dependvalue, ancestor):
+ "Force a symbol's ancestors based on the symbol's value."
+ self.debug_emit(2, " dep_force_ancestors(%s, %s, %s)" % (`dependent`, `dependvalue`, `ancestor`))
+ if dependent.type in ("bool", "trit") and ancestor.is_logical():
+ anctype = ancestor.type
+ ancvalue = cml.evaluate(ancestor)
+ if dependvalue > ancvalue:
+ if dependent.type == anctype or not self.trits_enabled:
+ self.__set_symbol_internal(ancestor, dependvalue,dependent)
+ elif dependent.type == "trit":
+ self.__set_symbol_internal(ancestor, dependvalue,dependent)
+ # Recurse upwards, first through ancestors...
+ for upper in ancestor.ancestors:
+ self.__dep_force_ancestors(dependent, dependvalue, upper)
+ # ...and then through the containing menu.
+ for upper in ancestor.menu.ancestors:
+ self.__dep_force_ancestors(dependent, dependvalue, upper)
+
+ def __dep_force_dependents(self, guard, guardvalue, dependent):
+ self.debug_emit(2, " dep_force_dependents(%s, %s, %s)" % (`guard`, `guardvalue`, `dependent`))
+ if guard.type in ("bool", "trit") and dependent.is_logical():
+ deptype = dependent.type
+ depvalue = cml.evaluate(dependent)
+ if guardvalue < depvalue:
+ if guard.type == deptype or not self.trits_enabled:
+ self.__set_symbol_internal(dependent, guardvalue, guard)
+ elif deptype == "trit":
+ self.__set_symbol_internal(dependent, guardvalue, guard)
+ elif guardvalue == cml.n:
+ self.__set_symbol_internal(dependent, guardvalue, guard)
+ # Recurse downwards...
+ if dependent.items:
+ for child in dependent.items:
+ self.__dep_force_dependents(guard, guardvalue, child)
+ else:
+ for lower in dependent.dependents:
+ self.__dep_force_dependents(guard, guardvalue, lower)
+
+ #
+ # The following methods handle variable bindings
+ #
+ def __rollback(self):
+ "Roll back all new bindings."
+ self.debug_emit(1, self.lang["ROLLBACK"] + `self.touched`)
+ self.touched = []
+ for symbol in self.newbindings.keys():
+ self.__unbindsymbol(symbol, self.newbindings)
+ self.side_effects = []
+
+ def __commit(self, freeze=0, baton=None):
+ "Commit all new bindings."
+ if freeze:
+ self.debug_emit(1, self.lang["COMMIT"] + self.lang["FROZEN"])
+ else:
+ self.debug_emit(1, self.lang["COMMIT"])
+ if self.trit_tie and self.trit_tie in self.touched:
+ self.trits_enabled = cml.evaluate(self.trit_tie)
+ self.module_suppress = self.module_default = (self.trits_enabled == cml.m)
+ self.debug_emit(1, self.lang["TRITFLAG"] % (`cml.trit(self.trits_enabled)`,))
+ if self.help_tie and self.help_tie in self.touched:
+ self.debug_emit(1, self.lang["HELPFLAG"] % self.help_tie.eval())
+ for entry in self.touched:
+ if freeze:
+ entry.frozen = freeze
+ if entry.menu.type == "choices":
+ entry.menu.frozen = 1
+ entry.menu.value = entry.name
+ for sibling in entry.menu.items:
+ sibling.frozen = freeze
+ self.touched = []
+ if baton:
+ baton.twirl("#")
+ if freeze:
+ # Optimization hack -- undo this if variables can ever be unfrozen.
+ # In the meantime, this greatly reduces the amount of expression
+ # evaluation needed after variables have been frozen.
+ for i in range(len(self.reduced)):
+ simplified = self.__eval_frozen(self.reduced[i])
+ if simplified != None:
+ self.reduced[i] = simplified
+ self.optimize_constraint_access()
+ if baton:
+ baton.twirl("#")
+ # Must do this *after* checking freezes
+ self.__bindcommit() # The magic moment
+ if baton:
+ baton.end()
+
+ def sanecheck(self):
+ "Sanity-check a configuration and report on its side effects."
+ violations = []
+ for i in range(len(self.constraints)):
+ if not cml.evaluate(self.reduced[i], self.debug):
+ violations.append(repr(self.constraints[i]));
+ self.debug_emit(1, self.lang["FAILREQ"]%(self.constraints[i],))
+ return violations
+
+ def set_symbol(self, symbol, value, freeze=0):
+ "Bind a symbol, tracking side effects."
+ self.debug_emit(1, self.lang["USERSETTING"] % (symbol.name,))
+ self.side_effects = []
+ self.__set_symbol_internal(symbol, value)
+ self.chilled.clear()
+ violations = self.sanecheck()
+ if not violations:
+ self.__commit(freeze)
+ return (1, self.side_effects, [])
+ else:
+ effects = self.side_effects
+ self.__rollback() # This will clear self.side_effects
+ return (0, effects, violations)
+
+ def __set_symbol_internal(self, symbol, value, source=None):
+ "Recursively bind a symbol, with side effects."
+ self.debug_emit(2, " set_symbol_internal(%s, %s, %s)" % (symbol.name, value, `source`))
+ if not source:
+ source = symbol
+ # The "touched" property marks this symbol changed for freeze purposes.
+ # It has to stay on until the next commit.
+ self.touched.append(symbol)
+ # If it already has the desired value, we're done.
+ if symbol.eval(self.debug) == value:
+ self.debug_emit(1, self.lang["UNCHANGED"] % (symbol.name,))
+ return
+ # Barf on attempt to change the value of a changed value
+ if self.chilled.has_key(symbol):
+ self.__bindsymbol(symbol, value, source) # record for debugging
+ raise "UNSATISFIABLE"
+ # Membership in chilled means we should treat the binding as frozen for
+ # simplification purposes. It has to be turned off when the current
+ # call to set_symbol is done; otherwise side effects from inclusion
+ # sequences would collide with each other.
+ self.chilled[symbol] = 1
+ # Here's where the value actually gets set
+ self.__bindsymbol(symbol, value, source)
+ # Make the side-effects of this symbol's previous bindings
+ # temporarily invisible while computing side effects. This
+ # is necessary because things like dependent suppressions
+ # need to be calculated according to the effects they would
+ # have when the old bindings are removed, as they will be
+ # if this change is committed (whew!)
+ self.__bindconceal(symbol)
+ # If this symbol was in a choices and is being set true,
+ # then unset and chill all its siblings.
+ if symbol.menu.type == "choices" and value:
+ symbol.menu.menuvalue = symbol
+ for sibling in symbol.menu.items:
+ if sibling != symbol:
+ self.__set_symbol_internal(sibling, cml.n, source)
+ # Other side effects...
+ if self.trit_tie and symbol == self.trit_tie and value == cml.n:
+ for entry in self.dictionary.values():
+ if entry.type == "trit" and not entry.is_derived() and entry.eval() == cml.m:
+ self.__set_symbol_internal(entry, cml.y, source)
+ # Now propagate the value change through ancestry chains
+ if symbol.is_logical():
+ if value > cml.n:
+ for ancestor in symbol.ancestors + symbol.menu.ancestors:
+ self.__dep_force_ancestors(symbol, value, ancestor)
+ if value < cml.y:
+ for dependent in symbol.dependents:
+ self.__dep_force_dependents(symbol, value, dependent)
+ # Perhaps we can deduce other values through explicit constraints?
+ # This is where we'd plug in a full SAT algorithm if we were going
+ # to use one.
+ if not self.inclusion and symbol.visibility:
+ self.__bind_from_constraint(symbol.visibility, source)
+ # Now loop through the constraints associated with this
+ # symbol, simplifying out assigned variables and trying to
+ # freeze more variables each time. The outer loop guarantees
+ # that as long as the constraints imply at least one more
+ # tentative setting, we'll keep going.
+ while 1:
+ cc = 0
+ for wff in symbol.constraints:
+ cc += self.__bind_from_constraint(wff, source)
+ if not cc:
+ break;
+ # OK, now make the old bindings of this symbol visible again
+ # (the change we just made might get rolled back later).
+ self.__bindreveal(symbol)
+
+ def value_from_string(self, sym, val):
+ "Set symbol from string according to the symbol type."
+ if sym.is_logical():
+ if val == "y":
+ val = cml.y
+ elif val == "m":
+ val = cml.m
+ elif val == "n":
+ val = cml.n
+ elif sym.type == "decimal":
+ val = int(val)
+ elif sym.type == "hexadecimal":
+ val = long(val, 16)
+ return val
+
+ def __eval_frozen(self, wff):
+ "Test whether a given expr is entirely constant, chilled or frozen."
+ if isinstance(wff,cml.trit) or type(wff) in (type(0),type(0L),type("")):
+ return wff
+ elif isinstance(wff, cml.ConfigSymbol):
+ if wff.frozen or self.chilled.has_key(wff):
+ return wff.eval()
+ elif wff.is_derived():
+ return self.__eval_frozen(wff.default)
+ else:
+ return None
+ elif wff[0] == 'not':
+ below = self.__eval_frozen(wff[1])
+ if below == None:
+ return None
+ else:
+ return cml.trit(not below)
+ elif wff[0] == '?':
+ guard = self.__eval_frozen(wff[1])
+ if guard == None:
+ return None
+ if guard:
+ return self.__eval_frozen(wff[2])
+ else:
+ return self.__eval_frozen(wff[3])
+ else:
+ left = self.__eval_frozen(wff[1])
+ right = self.__eval_frozen(wff[2])
+ if left != None and right != None:
+ return cml.evaluate((wff[0], left, right))
+ elif left == None and right == None:
+ return None
+ # OK, now the grotty part starts
+ elif wff[0] == 'and':
+ if left == cml.n or right == cml.n:
+ return cml.n
+ elif left in (cml.y, cml.m):
+ return right
+ elif right in (cml.y, cml.m):
+ return left
+ else:
+ return None
+ elif wff[0] == 'or':
+ if left in (cml.y, cml.m) or right in (cml.y, cml.m):
+ return cml.y
+ elif left == cml.n:
+ return right
+ elif right == cml.n:
+ return left
+ else:
+ return None
+ elif wff[0] == 'implies':
+ if left in (cml.y, cml.m):
+ return right
+ elif left == cml.n:
+ return cml.y
+ elif right == cml.n:
+ return not left
+ else:
+ return None
+ else:
+ return None
+
+ def __bind_from_constraint(self, wff, source):
+ "Set symbols based on asserted equalities or inequalities."
+ self.debug_emit(2, self.lang["BINDING"] % (cml.display_expression(wff), `source`))
+ if not wff or self.__eval_frozen(wff) != None:
+ return 0
+ elif isinstance(wff, cml.ConfigSymbol):
+ return 0
+ op = wff[0]
+ left = wff[1]
+ right = wff[2]
+ if op == '?':
+ guard = self.__eval_frozen(left)
+ if guard == None:
+ return 0
+ elif guard:
+ return self.__bind_from_constraint(right, source)
+ else:
+ return self.__bind_from_constraint(wff[3], source)
+ elif op == 'implies':
+ if self.__eval_frozen(left):
+ return self.__bind_from_constraint(right, source)
+ elif self.__eval_frozen(right) == cml.n:
+ return self.__bind_from_constraint(('==',right,cml.n), source)
+ elif op == 'and':
+ return self.__bind_from_constraint(left, source) or self.__bind_from_constraint(right, source)
+ elif op == '<':
+ return self.__bind_from_constraint(('>=', right, left), source)
+ elif op == '>':
+ return self.__bind_from_constraint(('<=', right, left), source)
+ else:
+ # Before we can force a binding, we need exactly one operand
+ # to be mutable...
+ left_mutable = self.is_mutable(left) and not self.chilled.has_key(left)
+ right_mutable = self.is_mutable(right) and not self.chilled.has_key(right)
+ if left_mutable == right_mutable:
+ self.debug_emit(3, "0 or 2 mutables in %s, %s" % (left, right))
+ return 0
+ # We need to keep the recursion from spinning forever.
+ leftval = cml.evaluate(left)
+ if isinstance(left, cml.ConfigSymbol):
+ leftnonnull = left.eval()
+ else:
+ leftnonnull = leftval
+ rightval = cml.evaluate(right)
+ if isinstance(right, cml.ConfigSymbol):
+ rightnonnull = right.eval()
+ else:
+ rightnonnull = rightval
+ # Now we may have the conditions to force a binding.
+ # The bindsymbols in the `redundant' assignments are need in order
+ # to make the backout logic work when a binding is unset.
+ if op == '==':
+ if left_mutable:
+ if leftnonnull == rightval:
+ self.__bindsymbol(left, rightval, source)
+ self.debug_emit(2, self.lang["REDUNDANT"] % (wff,))
+ return 0
+ else:
+ self.__set_symbol_internal(left, rightval, source)
+ return 1
+ elif right_mutable:
+ if rightnonnull == leftval:
+ self.__bindsymbol(right, leftval, source)
+ self.debug_emit(1, self.lang["REDUNDANT"] % (wff,))
+ return 0
+ else:
+ self.__set_symbol_internal(right, leftval, source)
+ return 1
+ elif op == '<=':
+ if left_mutable and rightval == cml.n:
+ if leftnonnull == cml.n:
+ self.__bindsymbol(left, cml.n, source)
+ self.debug_emit(1, self.lang["REDUNDANT"] % (wff,))
+ return 0
+ else:
+ self.__set_symbol_internal(left, cml.n, source)
+ return 1
+ if right_mutable and leftval == cml.y:
+ if rightnonnull == cml.y:
+ self.__bindsymbol(right, cml.y, source)
+ self.debug_emit(1, self.lang["REDUNDANT"] % (wff,))
+ return 0
+ else:
+ self.__set_symbol_internal(right, cml.y, source)
+ return 1
+ elif op == '>=':
+ if left_mutable and rightval == cml.y:
+ if leftnonnull == cml.y:
+ self.__bindsymbol(left, cml.y, source)
+ self.debug_emit(1, self.lang["REDUNDANT"] % (wff,))
+ return 0
+ else:
+ self.__set_symbol_internal(left, cml.y, source)
+ return 1
+ if right_mutable and leftval == cml.y:
+ if rightnonnull == cml.y:
+ self.__bindsymbol(right, cml.y, source)
+ self.debug_emit(1, self.lang["REDUNDANT"] % (wff,))
+ return 0
+ else:
+ self.__set_symbol_internal(right, cml.y, source)
+ return 1
+ elif op == '!=':
+ if left_mutable and rightval == cml.y and (left.type == "bool" or not self.trits_enabled):
+ if leftnonnull == cml.n:
+ self.__bindsymbol(left, cml.n, source)
+ self.debug_emit(1, self.lang["REDUNDANT"] % (wff,))
+ return 0
+ else:
+ self.__set_symbol_internal(left, cml.n, source)
+ return 1
+ if right_mutable and left == cml.y and (right.type == "bool" or not self.trits_enabled):
+ if rightnonnull == cml.n:
+ self.__bindsymbol(right, cml.n, source)
+ self.debug_emit(1, self.lang["REDUNDANT"] % (wff,))
+ return 0
+ else:
+ self.__set_symbol_internal(right, cml.n, source)
+ return 1
+ if left_mutable and rightval == cml.n and (left.type == "bool" or not self.trits_enabled):
+ if leftnonnull == cml.y:
+ self.__bindsymbol(left, cml.y, source)
+ self.debug_emit(1, self.lang["REDUNDANT"] % (wff,))
+ return 0
+ else:
+ self.__set_symbol_internal(left, cml.y, source)
+ return 1
+ if right_mutable and leftval == cml.n and (right.type == "bool" or not self.trits_enabled):
+ if rightnonnull == cml.y:
+ self.__bindsymbol(right, cml.y, source)
+ self.debug_emit(1, self.lang["REDUNDANT"] % (wff,))
+ return 0
+ else:
+ self.__set_symbol_internal(right, cml.y, source)
+ return 1
+ return 0
+
+ #
+ # Navigation helpers
+ #
+
+ def visit(self, entry):
+ "Register the fact that we've visited a menu."
+ #self.debug_emit(1, "Visiting %s (%s) starts"%(entry.name,entry.type))
+ if not hasattr(entry, "visits"):
+ entry.visits = 1
+ else:
+ entry.visits = entry.visits + 1
+ # Set choices defaults -- do it now for the side-effects
+ # (If you do it sooner you can get weird constraint failures)
+ if entry.visits == 1 and entry.type == "choices" and not entry.frozen:
+ if entry.default and self.is_visible_choices_item(entry.default):
+ self.set_symbol(entry.default, cml.y)
+ #self.debug_emit(1, "Visiting %s (%s) ends" % (entry.name,entry.type))
+
+ def next_node(self, here):
+ "Return the next menu or symbol in depth-first order."
+ if here.type == 'menu' and not here.default:
+ here = here.items[0];
+ else:
+ while here.menu:
+ up = here.menu
+ where = up.items.index(here)
+ if where >= len(here.menu.items) - 1:
+ here = up
+ else:
+ here = up.items[where+1]
+ break
+ if here == None:
+ here = self.start
+ return here
+
+ def previous_node(self, here):
+ "Return the previous menu or symbol in depth-first order."
+ if here.type == 'menu' and not here.default:
+ here = here.items[0];
+ else:
+ while here.menu:
+ up = here.menu
+ where = up.items.index(here)
+ if where == 0:
+ here = up
+ else:
+ here = up.items[where-1]
+ break
+ if here == None:
+ here = self.start
+ return here
+
+ def search(self, pattern, hook):
+ "Return a menu composed of symbols matching a given regexp."
+ regexp = re.compile(pattern)
+ hits = cml.ConfigSymbol("search", "menu")
+ for entry in self.dictionary.values():
+ if entry.prompt and entry.type != "message":
+ text = hook(entry)
+ if text == None:
+ continue
+ elif regexp.search(text):
+ hits.items.append(entry)
+ # Give the result menu a parent only if all members have same parent
+ hits.menu = None
+ hits.frozen = 0
+ for symbol in hits.items:
+ if hits.menu == None:
+ hits.menu = symbol.menu
+ elif symbol.menu != hits.menu:
+ hits.menu = None
+ break
+ return hits
+
+ def symbolsearch(self, pattern):
+ "Return a menu composed of symbols matching a given regexp."
+ return self.search(pattern, lambda x: x.name + x.prompt)
+
+ def helpsearch(self, pattern):
+ "Return a menu composed of symbols matching a given regexp."
+ return self.search(pattern, lambda x: x.help())
+
+ # Input validation
+
+ def range_check(self, symbol, value):
+ "Check whether a value is within a symbol's specified valid range."
+ if not symbol.range:
+ return 1
+ elif symbol.enum:
+ for (label, possibility) in symbol.range:
+ if value == possibility:
+ return 1
+ else:
+ for span in symbol.range:
+ if type(span) is type(0):
+ if value == span:
+ return 1
+ elif value >= span[0] and value <= span[1]:
+ return 1
+ return 0
+
+# End
diff -uNr linux.2.4.14.pristine/scripts/configtrans.py linux/scripts/configtrans.py
--- linux.2.4.14.pristine/scripts/configtrans.py Wed Dec 31 19:00:00 1969
+++ linux/scripts/configtrans.py Wed Nov 14 17:01:24 2001
@@ -0,0 +1,113 @@
+#!/usr/bin/env python
+"""
+configtrans.py -- translate between CML1 and CML2 config formats.
+
+This handles the impedance mismatch between CML2's explicit NAME=VALUE
+output format and the formats expected by the Linux build machinery.
+
+Note: it also makes backups whenever it touches a file.
+
+configtrans.py -h includeout -s configout cml2file
+configtrans.py -t oldconfig
+"""
+import sys, os, getopt, re
+
+def linetrans(hook, instream, outstream, trailer=None):
+ "Line-by-line translation between streams."
+ if not hasattr(instream, "readline"):
+ instream = open(instream, "r")
+ if not hasattr(outstream, "readline"):
+ outstream = open(outstream, "w")
+ while 1:
+ line = instream.readline()
+ if not line:
+ break
+ new = hook(line)
+ if new:
+ outstream.write(new)
+ instream.close()
+ if trailer:
+ outstream.write(trailer)
+ outstream.close()
+
+def write_include(line):
+ "Transform a SYMBOL=VALUE line to CML1 include format."
+ match = isnotset.match(line)
+ if match:
+ return "#undef %s\n" % match.group(1)
+ if line == "#\n":
+ return None
+ elif line[0] == "#":
+ return "/* " + line[1:].strip() + " */\n"
+ eq = line.find("=")
+ if eq == -1:
+ return line
+ else:
+ symbol = line[:eq]
+ value = line[eq+1 :].strip()
+ if value == 'y':
+ return "#define %s 1\n" % symbol
+ elif value == 'm':
+ return "#undef %s\n#define %s_MODULE 1\n" % (symbol, symbol)
+ elif value == 'n':
+ return "#undef %s\n" % symbol
+ else:
+ return "#define %s %s\n" % (symbol, value)
+
+def write_defconfig(line):
+ "Transform a SYMBOL=VALUE line to CML1 defconfig format."
+ eq = line.find("=")
+ if eq == -1:
+ return line
+ else:
+ symbol = line[:eq]
+ value = line[eq+1:].strip()
+ if value == 'n':
+ return "# %s is not set\n" % symbol
+ else:
+ return line
+
+def revert(line):
+ "Translate a CML1 defconfig file to CML2 format."
+ match = isnotset.match(line)
+ if match:
+ return "%s=n\n" % match.group(1)
+ else:
+ return line
+
+if __name__ == '__main__':
+ isnotset = re.compile("^# (.*) is not set")
+ include = defconfig = translate = None
+ (options, arguments) = getopt.getopt(sys.argv[1:], "h:s:t")
+ for (switch, val) in options:
+ if switch == '-h':
+ includefile = val
+ try:
+ os.rename(val, val + ".old")
+ except OSError:
+ pass
+ elif switch == '-s':
+ defconfig = val
+ try:
+ os.rename(val, val + ".old")
+ except OSError:
+ pass
+ elif switch == '-t':
+ translate = 1
+ if len(arguments) > 0:
+ try:
+ if includefile:
+ linetrans(write_include, arguments[0], includefile, "#define AUTOCONF_INCLUDED\n")
+ if defconfig:
+ linetrans(write_defconfig, arguments[0], defconfig)
+ except IOError, args:
+ sys.stderr.write("configtrans: " + args[1] + "\n");
+ raise SystemExit, 1
+ elif translate:
+ linetrans(revert, sys.stdin, sys.stdout)
+ else:
+ print "usage: configtrans.py -t [-h includefile] [-s defconfig] file"
+ raise SystemExit, 1
+
+# That's all, folks!
+
diff -uNr linux.2.4.14.pristine/scripts/kxref.py linux/scripts/kxref.py
--- linux.2.4.14.pristine/scripts/kxref.py Wed Dec 31 19:00:00 1969
+++ linux/scripts/kxref.py Wed Nov 14 17:01:24 2001
@@ -0,0 +1,578 @@
+#!/usr/bin/env python
+"""
+kxref.py -- generate configuration symbol cross-reference for the kernel tree
+
+This is a report generator intended to catch problems and inconsistencies
+in the configuration-symbol namespace. It uses information generated by
+the CML2 compiler -- notably, it relies on the compiler's scanning of
+help files.
+
+All this does is generate cross-reference reports on configuration
+symbols. But they can be filtered and presented in various
+interesting ways. Basic usage is like this:
+
+ kxref.py [-e | -f filter | -h] [-l] [-x symbol] [-n re] [sourcetree]
+
+You can set a filter using a boolean-expression minilanguage. The predicates
+available are as follows:
+
+ c -- select all symbols present in code (.c, .h, .S files)
+ m -- select all symbols present in makefiles
+ n -- select all symbols defined in CML2 rulesfiles
+ h -- select all symbols for which help is available
+ d -- select all symbols that occur in defconfigs
+ x -- select all symbols that are derived in CML2.
+ p -- select all symbols that are private in CML2.
+ o -- select all symbols present in CML1 configuration files
+ a -- select all symbols declared in CML1 configuration files
+
+Operations available are as follows:
+
+ & -- and (set intersection)
+ | -- or (set intersection)
+ ~ -- not (set complement).
+
+You may use parentheses for expression grouping.
+
+The most interesting report is probably ~((c|m)&(h|x)&o), which flags
+all "exceptional" symbols -- that is, everything that doesn't both
+occurs in code or makefiles, and either has help or is derived, and
+occur in a CML1 configuration file. When the configuration system is
+properly cleaned up this set should be empty. This is the filter you
+get if you specify -e.
+
+This program caches a cross-reference database in a file named
+xref.out, So all reports after the first are generated really fast.
+You should remove this file whenever you apply a patch.
+
+The -i option inverts the report so it's keyed by file, rather than
+by symbol.
+
+The -g option generates a patch removing file lines containing the
+reported (presumably orphaned) symbols. Use with caution...it's
+really only safe for hacking defconfigs.
+
+The -x option is for debugging. It generates a report on an individual
+symbol specified as an argument to the option. Flag letters are as
+above, with f= giving the value of the computed filter predicate.
+
+The -h option checks for duplicate or superfluous file inclusions
+in the source tree.
+
+The -l switch suppresses printing printing of cross-references;
+only symbols matching the given filter(s) are listed.
+
+The -n suppresses listing of files matching the given regexp.
+If all the files a symbol occurs in are excluded, it will be omitted
+from the listings.
+
+The -t option produces a listing of symbols which either have
+inconsistent CML1 types or types that differ between CML1 and CML2.
+
+The program has some knowledge of file syntax. It ignores the
+contents of comments in C, CML1, and CML2 files (e.g. does not
+cross-reference symbols in such comments).
+
+Some interesting reports:
+
+n&~p&~a -- identifies CML2 symbols no longer declared or defined in CML1
+
+"""
+import sys, os, re, getopt, cPickle, cmlsystem
+
+xrefs = None
+cml1types = None
+rulebase = None
+
+def suffix(haystack, *needle):
+ "Does a filename have any of the given suffixes?"
+ for suf in needle:
+ if haystack[-len(suf):] == suf:
+ return 1
+ return 0
+
+def prefix(haystack, *needle):
+ "Does a filename have any of the given prefixes?"
+ for pre in needle:
+ if haystack[len(pre):] == pre:
+ return 1
+ return 0
+
+# Code for recognizing symbols and stripping out comments
+
+# It's OK that this matches _MODULE symbols, we'll filter those out later.
+configpref = re.compile("(? -1:
+ findit = configre.search(lines[0])
+ symbol = namestrip(findit.group(0))
+ if not mycml1types.has_key(symbol):
+ mycml1types[symbol] = []
+ mycml1types[symbol].append(("choice", file))
+ if lines[0].find('" ') > -1:
+ break
+ lines.pop(0)
+
+ for file in files:
+ node = os.path.join(dir, file)[2:]
+ if os.path.isfile(node) and not ignore(node):
+ filevisitor(dict, node)
+
+ xrefdict = {}
+ here = os.getcwd()
+ os.chdir(sourcetree)
+ os.path.walk(".", xrefvisit, xrefdict)
+ os.chdir(here)
+ # Data reduction -- collapse CML1 cross references of identical type
+ for (key, value) in mycml1types.items():
+ if len(value) <= 1:
+ continue # Only interested in the multiples
+ else:
+ tdict = {}
+ for (type, file) in value:
+ tdict[type] = []
+ for (type, file) in value:
+ tdict[type].append(file)
+ reslist = []
+ for type in tdict:
+ reslist.append((type, tdict[type]))
+ mycml1types[key] = reslist
+ return (xrefdict, mycml1types)
+
+# Predicates for filtering the reports
+
+def namestrip(name):
+ if rulebase.prefix and name[:len(rulebase.prefix)] == rulebase.prefix:
+ return name[len(rulebase.prefix):]
+ else:
+ return name
+
+def in_code(name):
+ "Does a name occur in code?"
+ if not xrefs.has_key(name):
+ return 0
+ for file in xrefs[name]:
+ if suffix(file, ".c", ".S") or (suffix(file, ".h") and not suffix(file, "autoconf.h")):
+ return 1
+ return 0
+
+def in_help(name):
+ "Does a name occur in some help file?"
+ # Catch choice names that aren't in Configure.help directly.
+ entry = rulebase.dictionary.get(namestrip(name))
+ if entry and entry.help():
+ return 1
+ # This catches names that are in a helpfile but not known to CML2.
+ if not xrefs.has_key(name):
+ return 0
+ for file in xrefs[name]:
+ if suffix(file, ".help"):
+ return 1
+ # False negative if there is ever a choice name that CML2
+ # doesn't know about.
+ return 0
+
+def in_makefile(name):
+ "Does a name occur in a makefile?"
+ if not xrefs.has_key(name):
+ return 0
+ for file in xrefs[name]:
+ if suffix(file, "akefile"):
+ return 1
+ return 0
+
+def in_cml1(name):
+ "Does a name occur in a CML1 file?"
+ if not xrefs.has_key(name):
+ return 0
+ for file in xrefs[name]:
+ if suffix(file, "onfig.in"):
+ return 1
+ return 0
+
+def cml1_declared(name):
+ "Is a name declared (assigned a type) in a CML1 file?"
+ return cml1types.has_key(name)
+
+def in_defconfig(name):
+ if not xrefs.has_key(name):
+ return 0
+ "Does a this symbol occur in a defconfig?"
+ for file in xrefs[name]:
+ if file.find("defconfig") > -1 or file.find("configs/") > -1:
+ return 1
+ return 0
+
+def in_cml2(name):
+ "Is this a valid CML2 symbol?"
+ return rulebase.dictionary.has_key(namestrip(name))
+
+def is_derived(name):
+ "Is this a CML2 derived name?"
+ entry = rulebase.dictionary.get(namestrip(name))
+ if entry and entry.is_derived():
+ return 1
+ else:
+ return 0
+
+def is_private(name):
+ "Is this a CML2 private symbol?"
+ entry = rulebase.dictionary.get(namestrip(name))
+ if entry and entry.private:
+ return 1
+ else:
+ return 0
+
+# Report generation
+
+def setfilter(filterspec):
+ "Set the filter function."
+ if not filterspec:
+ function = "def myfilter(name): return 1"
+ else:
+ expression = ""
+ for c in filterspec:
+ if c == "(" or c == ")":
+ expression += c
+ elif c == "a":
+ expression += " cml1_declared(name)"
+ elif c == "c":
+ expression += " in_code(name)"
+ elif c == "h":
+ expression += " in_help(name)"
+ elif c == 'm':
+ expression += " in_makefile(name)"
+ elif c == "o":
+ expression += " in_cml1(name)"
+ elif c == "n":
+ expression += " in_cml2(name)"
+ elif c == "d":
+ expression += " in_defconfig(name)"
+ elif c == "x":
+ expression += " is_derived(name)"
+ elif c == "p":
+ expression += " is_private(name)"
+ elif c == "~":
+ expression += " not"
+ elif c == "&":
+ expression += " and"
+ elif c == "|":
+ expression += " or"
+ function = "def myfilter(name): return" + expression
+ #sys.stderr.write("Filter function: " + function + "\n")
+ exec function in globals()
+
+def report(keys, norefs=0):
+ "Generate a filtered report on the cross-references."
+ for symbol in keys:
+ refs = filter(lambda x: not (suppress and suppress.search(x)), xrefs[symbol])
+ if refs:
+ if norefs:
+ print symbol
+ else:
+ sys.stdout.write(symbol + ":")
+ for file in refs:
+ sys.stdout.write(" " + file)
+ sys.stdout.write("\n")
+
+def generate_patch(file, symbols):
+ "Generate a patch deleting the given symbols from the given file."
+ pfp = open(file, "rb")
+ contents = pfp.read()
+ pfp.close()
+ for symbol in symbols:
+ contents = re.compile("^.*" + symbol + "[^A-Z0-9].*\n", re.M).sub("", contents)
+ pfp = open(file + ".tweaked", "wb")
+ pfp.write(contents)
+ pfp.close()
+ os.system("diff -u %s %s.tweaked; rm %s.tweaked" % (file, file, file))
+
+# Inclusion checking. This lives here because we use the CML2 rulebase to
+# check which CONFIG_ symbols are defined (just checking for a CONFIG_ stem
+# isn't reliable as CML2 doesn't completely own that namespace).
+
+includere = re.compile(r'^\s*#\s*include\s*[<"](\S*)[>"]', re.M)
+
+def includecheck(tree):
+ "Check the inclusion structure of a source tree."
+ def includevisit(dummy, dir, files):
+ "Visit a directory on behalf of the inclusion checker."
+ def filevisitor(dummy, file):
+ "Visit a file on behalf of the inclusion checker."
+ fp = open(file)
+ contents = fp.read()
+ fp.close()
+ # First get the list of included files
+ inclusions = includere.findall(contents)
+ # This strips slashes, so it has to be done after
+ contents = c_comment_strip(contents)
+ # Check to see if we have defined CONFIG_ symbols in the file
+ matched = []
+ for match in configpref.findall(contents):
+ if suffix(match, "_MODULE"):
+ match = match[:-7]
+ match = namestrip(match) # Strip prefix
+ if rulebase.dictionary.has_key(match) and match not in matched:
+ matched.append(match)
+ # Check for duplicates
+ dups = {}
+ for header in inclusions:
+ dups[header] = 0
+ for header in inclusions:
+ dups[header] += 1
+ for header in inclusions:
+ if dups[header] > 1:
+ print "%s: %s is included %d times" % (file, header, dups[header])
+ # OK, check to see if we have autoconf inclusion.
+ have_autoconf = 0
+ for header in inclusions:
+ if header == "autoconf.h" or header == "linux/config.h":
+ have_autoconf = 1
+ break
+ if not matched and have_autoconf:
+ print "%s: has unnecessary configure file inclusion" % file
+ elif matched and not have_autoconf:
+ print "%s: needs configure file inclusion for %s" % (file, matched)
+
+ for file in files:
+ if suffix(file, ".c", ".h", ".S"):
+ node = os.path.join(dir, file)[2:]
+ if os.path.isfile(node) and not ignore(node):
+ filevisitor(None, node)
+
+ here = os.getcwd()
+ os.chdir(sourcetree)
+ os.path.walk(".", includevisit, None)
+ os.chdir(here)
+
+# The main program
+
+def load_context(tree):
+ "Load context, including CML2 rulebase and cross-reference database."
+ global rulebase, xrefs, cml1types
+
+ # Get a CML2 rulebase.
+ if not os.path.exists(os.path.join(tree, "rules.out")):
+ print "This program requires a CML2 rulebase in the source tree."
+ raise SystemExit, 1
+ else:
+ rulebase = cmlsystem.CMLSystem(os.path.join(tree, "rules.out"))
+
+ # Try to find a saved cross-reference database. If no such database
+ # exists, generate one and cache it.
+ xref_file = os.path.join(tree, "xref.out")
+ if os.path.exists(xref_file):
+ sys.stderr.write("Reading cross-reference database...")
+ ifp = open(xref_file, "rb")
+ (xrefs, cml1types) = cPickle.load(ifp)
+ ifp.close()
+ sys.stderr.write("done.\n")
+ else:
+ sys.stderr.write("Regenerating cross-reference database...")
+ (xrefs, cml1types) = makexref(tree)
+ ofp = open(xref_file, "w")
+ cPickle.dump((xrefs, cml1types), ofp, 1)
+ ofp.close()
+ sys.stderr.write("done.\n")
+
+if __name__ == "__main__":
+ setfilter(None)
+ examine = ""
+ norefs = 0
+ typecheck = 0
+ suppress = None
+ invert = genpatch = checkincludes = 0
+ (options, arguments) = getopt.getopt(sys.argv[1:], "ef:ghiln:x:t")
+ for (switch, val) in options:
+ if switch == '-f':
+ setfilter(val)
+ elif switch == '-e':
+ setfilter("~((c|m)&(h|x)&o)")
+ elif switch == '-i':
+ invert = 1
+ elif switch == '-g':
+ invert = genpatch = 1
+ elif switch == '-h':
+ checkincludes = 1
+ elif switch == '-l':
+ norefs = 1
+ elif switch == '-n':
+ suppress = re.compile(val)
+ elif switch == '-t':
+ typecheck = 1
+ elif switch == '-x':
+ examine = val
+
+
+ if len(arguments) < 1:
+ sourcetree = "."
+ else:
+ sourcetree = arguments[0]
+
+ # Load or regenerate the cross-reference database
+ load_context(sourcetree)
+
+ if not checkincludes:
+ # OK, now filter the database
+ keys = filter(myfilter, xrefs.keys())
+ keys.sort()
+
+ # If invert was specified, invert the database so it's keyed by file
+ if invert:
+ inverted = {}
+ for key in keys:
+ for file in xrefs[key]:
+ if not inverted.has_key(file):
+ inverted[file] = []
+ if key not in inverted[file]:
+ inverted[file].append(key)
+ xrefs = inverted
+ keys = inverted.keys()
+ keys.sort()
+
+ if genpatch:
+ for file in keys:
+ generate_patch(file, xrefs[file])
+ elif checkincludes:
+ includecheck(sourcetree)
+ elif examine:
+ shortname = namestrip(examine)
+ if not rulebase.dictionary.has_key(shortname) and not cml1types.has_key(examine):
+ print "%s: no such symbol" % examine
+ else:
+ print "%s: a=%d c=%d h=%d o=%d n=%d m=%d d=%d x=%s f=%d" % (examine, cml1_declared(examine), in_code(examine), in_help(examine), in_cml1(examine), in_cml2(examine), in_makefile(examine), in_defconfig(examine), is_derived(examine), myfilter(examine))
+ elif typecheck:
+ print "CML1 type consistency report:"
+ hits = []
+ ok = 0
+ for (key, item) in cml1types.items():
+ if len(item) == 1:
+ ok += 1
+ else:
+ hits.append(key)
+ print "%d symbols have consistent type declarations." % ok
+ if hits:
+ print "Non-declared or multiply-declared symbols:"
+ for symbol in hits:
+ print "%s:" % symbol
+ for (type, locs) in cml1types[symbol]:
+ print " %-8s: %s" % (type, " ".join(locs))
+ print "CML2 type cross-check:"
+ typematch = 0
+ missing = 0
+ matching = 0
+ typemap = {"bool":"bool", "trit":"tristate", "string":"string", "decimal":"int", "hexadecimal":"hex"}
+ for (key, item) in cml1types.items():
+ if not rulebase.dictionary.has_key(namestrip(key)):
+ missing += 1
+ continue
+ elif len(item) != 1:
+ continue
+ cml2symbol = rulebase.dictionary[namestrip(key)]
+ cml1type = item[0][0]
+ if typemap[cml2symbol.type] == cml1type:
+ matching += 1
+ elif cml2symbol.menu and cml2symbol.menu.type=="choices" and cml1type=="choice":
+ matching += 1
+ else:
+ print '"%s", line %d: %s, %s -> %s' % (cml2symbol.file, cml2symbol.lineno, key, item[0][0], cml2symbol.type)
+ print "%d CML1 symbols missing, %d type matches" % (missing, matching)
+ else:
+ # OK, list the filtered symbols
+ try:
+ report(keys, norefs)
+ except KeyboardInterrupt, IOError:
+ pass # In case we break a pipe by interrupting
+
+# That's all, folks!
diff -uNr linux.2.4.14.pristine/symbols.cml linux/symbols.cml
--- linux.2.4.14.pristine/symbols.cml Wed Dec 31 19:00:00 1969
+++ linux/symbols.cml Fri Nov 16 00:13:58 2001
@@ -0,0 +1,18966 @@
+# Linux kernel configuration symbols and help texts
+#
+# Maintained by:
+# Eric S. Raymond
+# Steven Cole
+#
+# Translations of this file available on the WWW:
+#
+# - Japanese, maintained by the JF Project , at
+#
+# - Russian, by , at
+#
+# - French, by Pierre Tane , at
+#
+# - Polish, by Cezar Cichocki , at
+#
+# - German, by SuSE, at . This patch
+# also includes infrastructure to support different languages.
+#
+# To access a document on the WWW, you need to have a direct Internet
+# connection and a browser program such as netscape or lynx. If you
+# only have email access, you can still use FTP and WWW servers: send
+# an email to with the text
+# send usenet/news.answers/internet-services/access-via-email
+# in the body of the message.
+#
+# Information about what a kernel is, what it does, how to patch and
+# compile it and much more is contained in the Kernel-HOWTO, available
+# at . Before you start
+# compiling, make sure that you have the necessary versions of all
+# programs and libraries required to compile and run this kernel; they
+# are listed in the . Make sure to read the
+# toplevel kernel README file as well.
+#
+# The format of this file is described in the CML2 Reference Manual.
+# To be nice to menuconfig, limit your line length to 70 characters.
+# Use emacs's kfill.el to edit and ispell.el to spell check this file.
+#
+# Comments of the form "# Choice:" followed by a menu name are used
+# internally by the maintainers' consistency-checking tools.
+#
+# When adding a help text to this file, please try to be as gentle as
+# possible. Don't use unexplained acronyms and generally write for the
+# hypothetical ignorant but intelligent user who has just bought a PC,
+# removed Windows, installed Linux and is now recompiling the kernel
+# for the first time. Tell them what to do if they're unsure. Technical
+# information should go in a README in the Documentation directory.
+#
+# Mention all the relevant READMEs and HOWTOs in the help text.
+# Make them file URLs relative to the top level of the source tree so
+# that help browsers can turn them into hotlinks. All URLs ahould be
+# surrounded by <>.
+#
+# Repetitions are fine since the help texts are not meant to be read
+# in sequence. It is good style to include URLs pointing to more
+# detailed technical information, pictures of the hardware, etc.
+#
+# The most important thing to include in a help entry is *motivation*.
+# Explain why someone configuring a kernel might want to select your
+# option.
+#
+# All this was shamelessly stolen from several different sources. Many
+# thanks to all the contributors. Feel free to use these help texts in
+# your own kernel configuration tools. The texts are copyrighted (c)
+# 2001 by Eric S. Raymond and many others and are governed by the GNU
+# General Public License.
+
+symbols
+#
+# External prerequisites (not yet implemented).
+#
+# GCC_VERSION "GNU CC version (get with gcc --version)"
+# GMAKE_VERSION "GNU MAKE version (get with `make --version')"
+# BINUTILS_VERSION "Binutils version (get with `ld -v')"
+# UTIL_VERSION "Linux utilities (get with `fdformat --version`)"
+# MODUTILS_VERSION "Module utilities version (get with `insmod -V')"
+# E2FSPROGS_VERSION "EFS2 programs version (get with `tune2fs')"
+# REISERPROGS_VERSION "Reiser utils version (get with `reiserfsck 2>&1|grep reiserfsprogs')"
+# PCMCIA_CS_VERSION "PCMCIA tools version (get with `cardmgr -V')"
+# PPP_VERSION "PPP version (get with `pppd --version')"
+# ISDN4K_UTILS_VERSION "ISDN tools version (get with `isdnctrl 2>&1|grep version')"
+#
+# General query classes
+#
+# To see *all* questions, check *all* of these
+EXPERIMENTAL 'Prompt for development and/or incomplete code/drivers'
+text
+Some of the various things that Linux supports (such as network
+drivers, file systems, network protocols, etc.) can be in a state
+of development where the functionality, stability, or the level of
+testing is not yet high enough for general use. This is usually
+known as the "alpha-test" phase amongst developers. If a feature is
+currently in alpha-test, then the developers usually discourage
+uninformed widespread use of this feature by the general public to
+avoid "Why doesn't this work?" type mail messages. However, active
+testing and use of these systems is welcomed. Just be aware that it
+may not meet the normal level of reliability or it may fail to work
+in some special cases. Detailed bug reports from people familiar
+with the kernel internals are usually welcomed by the developers
+(before submitting bug reports, please read the documents README,
+MAINTAINERS, REPORTING-BUGS, Documentation/BUG-HUNTING, and
+Documentation/oops-tracing.txt in the kernel source).
+
+This option will also make obsoleted drivers available. These are
+drivers that have been replaced by something else, and/or are
+scheduled to be removed in a future kernel release.
+
+Unless you intend to help test and develop a feature or driver that
+falls into this category, or you have a situation that requires
+using these features, you should probably say N here, which will
+cause this configure script to present you with fewer choices. If
+you say Y here, you will be offered the choice of using features or
+drivers that are currently considered to be in the alpha-test phase.
+.
+#OBSOLETE 'Prompt for drivers for obsolete features and hardware'
+EXPERT 'Prompt for expert choices (those with no help attached)' text
+
+Show user configuration choices that have no associated help. These are
+presumed to be expert-level choices that most people will not want to see.
+.
+WIZARD 'Prompt for features that require kernel source changes.' text
+
+If you enable this configuration switch, kernel-hacking choices
+will become available. These are not for the faint of heart...
+.
+DANGEROUS 'Prompt for features that can trash data.' text
+
+This condition includes configuration options for dangerous code -- that
+is bleeding-edge experimental stuff that could trash or corrupt your data.
+.
+# TUNING 'Prompt for performance tweaks'
+#
+# Platform-independent questions
+MODULES 'Enable loadable module support' text
+Kernel modules are small pieces of compiled code which can be
+inserted in or removed from the running kernel, using the programs
+insmod and rmmod. This is described in the file
+Documentation/modules.txt, including the fact that you have to say
+"make modules" in order to compile the modules that you chose during
+kernel configuration. Modules can be device drivers, file systems,
+binary executable formats, and so on. If you think that you may want
+to make use of modules with this kernel in the future, then say Y
+here. If unsure, say Y.
+.
+#MODVERSIONS 'Set version information on all symbols for modules'
+KMOD 'Kernel module loader support' text
+Normally when you have selected some drivers and/or file systems to
+be created as loadable modules, you also have the responsibility to
+load the corresponding modules (using the programs insmod or
+modprobe) before you can use them. If you say Y here however, the
+kernel will be able to load modules for itself: when a part of the
+kernel needs a module, it runs modprobe with the appropriate
+arguments, thereby loading the module if it is available. (This is a
+replacement for kerneld.) Say Y here and read about configuring it
+in Documentation/kmod.txt.
+.
+NET 'Networking support' text
+Unless you really know what you are doing, you should say Y here.
+The reason is that some programs need kernel networking support even
+when running on a stand-alone machine that isn't connected to any
+other computer. If you are upgrading from an older kernel, you
+should consider updating your networking tools too because changes
+in the kernel and the tools often go hand in hand. The tools are
+contained in the package net-tools, the location and version number
+of which are given in Documentation/Changes.
+
+For a general introduction to Linux networking, it is highly
+recommended to read the NET-3-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+.
+NETDEVICES 'Network device support' text
+You can say N here if you don't intend to connect your Linux box to
+any other computer at all or if all your connections will be over a
+telephone line with a modem either via UUCP (UUCP is a protocol to
+forward mail and news between unix hosts over telephone lines; read
+the UUCP-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto ) or dialing up a shell
+account or a BBS, even using term (term is a program which gives you
+almost full Internet connectivity if you have a regular dial up
+shell account on some Internet connected Unix computer. Read
+http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html ).
+
+You'll have to say Y if your computer contains a network card that
+you want to use under Linux (make sure you know its name because you
+will be asked for it and read the Ethernet-HOWTO (especially if you
+plan to use more than one network card under Linux)) or if you want
+to use SLIP (Serial Line Internet Protocol is the protocol used to
+send Internet traffic over telephone lines or null modem cables) or
+CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better
+and newer replacement for SLIP) or PLIP (Parallel Line Internet
+Protocol is mainly used to create a mini network by connecting the
+parallel ports of two local machines) or AX.25/KISS (protocol for
+sending Internet traffic over amateur radio links).
+
+Make sure to read the NET-3-HOWTO. Eventually, you will have to read
+Olaf Kirch's excellent and free book "Network Administrator's
+Guide", to be found in http://www.linuxdoc.org/docs.html#guide . If
+unsure, say Y.
+.
+SYSVIPC 'System V IPC' text
+Inter Process Communication is a suite of library functions and
+system calls which let processes (running programs) synchronize and
+exchange information. It is generally considered to be a good thing,
+and some programs won't run unless you say Y here. In particular, if
+you want to run the DOS emulator dosemu under Linux (read the
+DOSEMU-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto ), you'll need to say Y
+here.
+
+You can find documentation about IPC with "info ipc" and also in
+section 6.4 of the Linux Programmer's Guide, available from
+http://www.linuxdoc.org/docs.html#guide .
+.
+BSD_PROCESS_ACCT 'BSD Process Accounting' text
+If you say Y here, a user level program will be able to instruct the
+kernel (via a special system call) to write process accounting
+information to a file: whenever a process exits, information about
+that process will be appended to the file by the kernel. The
+information includes things such as creation time, owning user,
+command name, memory usage, controlling terminal etc. (the complete
+list is in the struct acct in include/linux/acct.h). It is up to the
+user level program to do useful things with this information. This
+is generally a good idea, so say Y.
+.
+SYSCTL 'Sysctl support' text
+The sysctl interface provides a means of dynamically changing
+certain kernel parameters and variables on the fly without requiring
+a recompile of the kernel or reboot of the system. The primary
+interface consists of a system call, but if you say Y to "/proc
+file system support", a tree of modifiable sysctl entries will be
+generated beneath the /proc/sys directory. They are explained in the
+files in Documentation/sysctl/. Note that enabling this option will
+enlarge the kernel by at least 8 KB.
+
+As it is generally a good thing, you should say Y here unless
+building a kernel for install/rescue disks or your system is very
+limited in memory.
+.
+BINFMT_AOUT 'Kernel support for a.out binaries' text
+A.out (Assembler.OUTput) is a set of formats for libraries and
+executables used in the earliest versions of UNIX. Linux used the
+a.out formats QMAGIC and ZMAGIC until they were replaced with the
+ELF format.
+
+As more and more programs are converted to ELF, the use for a.out
+will gradually diminish. If you disable this option it will reduce
+your kernel by one page. This is not much and by itself does not
+warrant removing support. However its removal is a good idea if you
+wish to ensure that absolutely none of your programs will use this
+older executable format. If you don't know what to answer at this
+point then answer Y. If someone told you "You need a kernel with
+QMAGIC support" then you'll have to say Y here. You may answer M to
+compile a.out support as a module and later load the module when you
+want to use a program or library in a.out format. The module will be
+called binfmt_aout.o. Saying M or N here is dangerous though,
+because some crucial programs on your system might still be in A.OUT
+format.
+.
+BINFMT_SOM 'Kernel support for SOM binaries'
+
+BINFMT_ELF 'Kernel support for ELF binaries' text
+ELF (Executable and Linkable Format) is a format for libraries and
+executables used across different architectures and operating
+systems. Saying Y here will enable your kernel to run ELF binaries
+and enlarge it by about 13 KB. ELF support under Linux has now all
+but replaced the traditional Linux a.out formats (QMAGIC and ZMAGIC)
+because it is portable (this does *not* mean that you will be able
+to run executables from different architectures or operating systems
+however) and makes building run-time libraries very easy. Many new
+executables are distributed solely in ELF format. You definitely
+want to say Y here.
+
+Information about ELF is contained in the ELF HOWTO available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you find that after upgrading from Linux kernel 1.2 and saying Y
+here, you still can't run any ELF binaries (they just crash), then
+you'll have to install the newest ELF runtime libraries, including
+ld.so (check the file Documentation/Changes for location and latest
+version).
+
+If you want to compile this 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 binfmt_elf.o. Saying M or N here is dangerous because some
+crucial programs on your system might be in ELF format.
+.
+BINFMT_MISC 'Kernel support for MISC binaries' text
+If you say Y here, it will be possible to plug wrapper-driven binary
+formats into the kernel. You will like this especially when you use
+programs that need an interpreter to run like Java, Python or
+Emacs-Lisp. It's also useful if you often run DOS executables under
+the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto ). Once you have
+registered such a binary class with the kernel, you can start one of
+those programs simply by typing in its name at a shell prompt; Linux
+will automatically feed it to the correct interpreter.
+
+You can do other nice things, too. Read the file
+Documentation/binfmt_misc.txt to learn how to use this feature, and
+Documentation/java.txt for information about how to include Java
+support.
+
+You must say Y to "/proc file system support" (CONFIG_PROC_FS) to
+use this part of the kernel.
+
+You may say M here for module support and later load the module when
+you have use for it; the module is called binfmt_misc.o. If you
+don't know what to answer at this point, say Y.
+.
+BINFMT_JAVA 'Kernel support for JAVA binaries'
+
+SMP 'Symmetric Multi-Processing support' text
+This enables support for systems with more than one CPU. If you have
+a system with only one CPU, like most personal computers, say N. If
+you have a system with more than one CPU, say Y.
+
+If you say N here, the kernel will run on single and multiprocessor
+machines, but will use only one CPU of a multiprocessor machine. If
+you say Y here, the kernel will run on many, but not all,
+singleprocessor machines. On a singleprocessor machine, the kernel
+will run faster if you say N here.
+
+Note that if you say Y here and choose architecture "586" or
+"Pentium" under "Processor family", the kernel will not work on 486
+architectures. Similarly, multiprocessor kernels for the "PPro"
+architecture may not work on all Pentium based boards.
+
+People using multiprocessor machines who say Y here should also say
+Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
+Management" code will be disabled if you say Y here.
+
+See also the files Documentation/smp.tex, Documentation/smp.txt,
+Documentation/i386/IO-APIC.txt, Documentation/nmi_watchdog.txt and the
+SMP-FAQ on the WWW at http://www.irisa.fr/prive/mentre/smp-faq/ .
+
+If you don't know what to do here, say N.
+.
+IRQ_ALL_CPUS 'Distribute interrupts on all CPUs by default'
+
+VGA_CONSOLE 'VGA text console' text
+Saying Y here will allow you to use Linux in text mode through a
+display that complies with the generic VGA standard. Virtually
+everyone wants that.
+
+The program SVGATextMode can be used to utilize SVGA video cards to
+their full potential in text mode. Download it from
+ftp://metalab.unc.edu/pub/Linux/utils/console .
+
+Say Y.
+.
+SOUND 'Sound card support' text
+If you have a sound card in your computer, i.e. if it can say more
+than an occasional beep, say Y. Be sure to have all the information
+about your sound card and its configuration down (I/O port,
+interrupt and DMA channel), because you will be asked for it.
+
+You want to read the Sound-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . General information
+about the modular sound system is contained in the files
+Documentation/sound/Introduction. The file
+Documentation/sound/README.OSS contains some slightly outdated but
+still useful information as well.
+
+If you have a PnP sound card and you want to configure it at boot
+time using the ISA PnP tools (read
+http://www.roestock.demon.co.uk/isapnptools/ ), then you need to
+compile the sound card support as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want)
+and load that module after the PnP configuration is finished. To do
+this, say M here and read Documentation/modules.txt as well as
+Documentation/sound/README.modules; the module will be called
+soundcore.o.
+
+I'm told that even without a sound card, you can make your computer
+say more than an occasional beep, by programming the PC speaker.
+Kernel patches and supporting utilities to do that are in the pcsp
+package, available at ftp://ftp.infradead.org/pub/pcsp/ .
+.
+#
+# Architecture-dependent hardware hacks
+PPC_RTAS 'RTAS (RunTime Abstraction Services) in /proc' text
+When you use this option, you will be able to use RTAS from
+userspace.
+
+RTAS stands for RunTime Abstraction Services and should
+provide a portable way to access and set system information. This is
+commonly used on RS/6000 (pSeries) computers.
+
+You can access RTAS via the special proc filesystem entry rtas.
+Don't confuse this rtas entry with the one in /proc/device-tree/rtas
+which is readonly.
+
+If you don't know if you can use RTAS look into
+/proc/device-tree/rtas. If there are some entries, it is very likely
+that you will be able to use RTAS.
+
+You can do cool things with rtas. To print out information about
+various sensors in the system, just do a
+
+ $ cat /proc/rtas/sensors
+
+or if you power off your machine at night but want it running when
+you enter your office at 7:45 am, do a
+
+ # date -d 'tomorrow 7:30' +%s > /proc/rtas/poweron
+
+and shutdown.
+
+If unsure, say Y
+.
+PREP_RESIDUAL 'Support for PReP Residual Data' text
+Some PReP systems have residual data passed to the kernel by the
+firmware. This allows detection of memory size, devices present and
+other useful pieces of information. Sometimes this information is not
+present or incorrect.
+
+Unless you expect to boot on a PReP system, there is not need to select
+yes.
+.
+#CMDLINE_BOOL 'Default bootloader kernel arguments'
+CMDLINE 'Initial kernel command line' text
+On some architectures (EBSA110 and CATS), there is currently no way
+for the boot loader to pass arguments to the kernel. For these
+architectures, you should supply some command-line options at build
+time by entering them here. As a minimum, you should specify the
+memory size and the root device (e.g., mem=64M root=/dev/nfs)
+.
+CPU_LITTLE_ENDIAN 'Generate little endian code' text
+Some MIPS machines can be configured for either little or big endian
+byte order. These modes require different kernels. Say Y if your
+machine is little endian, N if it's a big endian machine.
+.
+MIPS_FPU_EMULATOR 'Kernel floating-point emulation' text
+This option enables the MIPS software floatingpoint support. Due to the
+way floatingpoint works you should always enable this option unless
+you exactly know what you're doing.
+.
+HEARTBEAT 'Use power LED as a heartbeat'
+
+DISCONTIGMEM 'Discontiguous Memory Support'
+
+# Kernel core (/proc/kcore) format (default is ELF)
+KCORE_ELF 'ELF' text
+If you enabled support for /proc file system then the file
+/proc/kcore will contain the kernel core image. This can be used
+in gdb:
+
+$ cd /usr/src/linux ; gdb vmlinux /proc/kcore
+
+You have two choices here: ELF and A.OUT. Selecting ELF will make
+/proc/kcore appear in ELF core format as defined by the Executable
+and Linking Format specification. Selecting A.OUT will choose the
+old "a.out" format which may be necessary for some old versions
+of binutils or on some architectures.
+
+This is especially useful if you have compiled the kernel with the
+"-g" option to preserve debugging information. It is mainly used
+for examining kernel data structures on the live kernel so if you
+don't understand what this means or are not a kernel hacker, just
+leave it at its default value ELF.
+.
+KCORE_AOUT 'a.out'
+
+#
+# PCI access modes used in multiple ports
+PCI_GOBIOS 'BIOS' text
+On PCI systems, the BIOS can be used to detect the PCI devices and
+determine their configuration. However, some old PCI motherboards
+have BIOS bugs and may crash if this is done. Also, some embedded
+PCI-based systems don't have any BIOS at all. Linux can also try to
+detect the PCI hardware directly without using the BIOS.
+
+With this option, you can specify how Linux should detect the PCI
+devices. If you choose "BIOS", the BIOS will be used, if you choose
+"Direct", the BIOS won't be used, and if you choose "Any", the
+kernel will try the direct access method and falls back to the BIOS
+if that doesn't work. If unsure, go with the default, which is
+"Any".
+.
+PCI_GODIRECT 'Direct'
+
+PCI_GOANY 'Any'
+
+#
+# System busses
+ISA 'Support for ISA-bus hardware'
+
+EISA 'Support for EISA-bus hardware' text
+The Extended Industry Standard Architecture (EISA) bus was
+developed as an open alternative to the IBM MicroChannel bus.
+
+The EISA bus provided some of the features of the IBM MicroChannel
+bus while maintaining backward compatibility with cards made for
+the older ISA bus. The EISA bus saw limited use between 1988 and 1995
+when it was made obsolete by the PCI bus.
+
+Say Y here if you are building a kernel for an EISA-based machine.
+
+Otherwise, say N.
+.
+PCI 'Support for PCI bus hardware' text
+Find out whether you have a PCI motherboard. PCI is the name of a
+bus system, i.e. the way the CPU talks to the other stuff inside
+your box. Other bus systems are ISA, EISA, Microchannel (MCA) or
+VESA. If you have PCI, say Y, otherwise N.
+
+The PCI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , contains valuable
+information about which PCI hardware does work under Linux and which
+doesn't.
+.
+PCI_NAMES 'PCI device name database' text
+By default, the kernel contains a database of all known PCI device
+names to make the information in /proc/pci, /proc/ioports and
+similar files comprehensible to the user. This database increases
+size of the kernel image by about 80KB, but it gets freed after the
+system boots up, so it doesn't take up kernel memory. Anyway, if you
+are building an installation floppy or kernel for an embedded system
+where kernel image size really matters, you can disable this feature
+and you'll get device ID numbers instead of names.
+
+When in doubt, say Y.
+.
+IDE 'ATA/IDE/MFM/RLL support' text
+If you say Y here, your kernel will be able to manage low cost mass
+storage units such as ATA/(E)IDE and ATAPI units. The most common
+cases are IDE hard drives and ATAPI CDROM drives.
+
+If your system is pure SCSI and doesn't use these interfaces, you
+can say N here.
+
+Integrated Disk Electronics (IDE aka ATA-1) is a connecting standard
+for mass storage units such as hard disks. It was designed by
+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 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
+ATA-3. It provides support for larger disks (up to 8.4GB by means of
+the LBA standard), more disks (4 instead of 2) and for other mass
+storage units such as tapes and cdrom. UDMA/33 (aka UltraDMA/33) is
+ATA-4 and provides faster (and more CPU friendly) transfer modes
+than previous PIO (Programmed processor Input/Output) from previous
+ATA/IDE standards by means of fast DMA controllers.
+
+ATA Packet Interface (ATAPI) is a protocol used by EIDE tape and
+CDROM drives, similar in many respects to the SCSI protocol.
+
+SMART IDE (Self Monitoring, Analysis and Reporting Technology) was
+designed in order to prevent data corruption and disk crash by
+detecting pre hardware failure conditions (heat, access time, and
+the like...). Disks built since June 1995 may follow this
+standard. The kernel itself don't manage this; however there are
+quite a number of user programs such as smart that can query the
+status of SMART parameters disk.
+
+If you want 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 ide.o.
+
+For further information, please read Documentation/ide.txt.
+
+If unsure, say Y.
+.
+SCSI 'SCSI support' text
+If you want to use a SCSI hard disk, SCSI tape drive, SCSI CDROM or
+any other SCSI device under Linux, say Y and make sure that you know
+the name of your SCSI host adapter (the card inside your computer
+that "speaks" the SCSI protocol, also called SCSI controller),
+because you will be asked for it.
+
+You also need to say Y here if you want support for the parallel
+port version of the 100 MB IOMEGA ZIP drive.
+
+Please read the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . The
+SCSI-Programming-HOWTO contains information about how to add or
+remove an SCSI device from a running Linux machine without
+rebooting.
+
+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 scsi_mod.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt and
+Documentation/scsi.txt. However, do not compile this as a module if
+your root file system (the one containing the directory /) is
+located on a SCSI device.
+.
+CD_NO_IDESCSI 'Support CD-ROM drives that are not SCSI or IDE/ATAPI'
+text
+If you have a CDROM drive that is neither SCSI nor IDE/ATAPI, say Y
+here, otherwise N. Read the CDROM-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+Note that the answer to this question doesn't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about these CDROM drives. If you are unsure what you
+have, say Y and find out whether you have one of the following
+drives.
+
+For each of these drivers, a file Documentation/cdrom/
+exists. Especially in cases where you do not know exactly which kind
+of drive you have you should read there. Most of these drivers use a
+file drivers/cdrom/.h where you can define your
+interface parameters and switch some internal goodies.
+
+All these CDROM drivers are also usable as a module ( = code which
+can be inserted in and removed from the running kernel whenever you
+want). If you want to compile them as module, say M instead of Y and
+read Documentation/modules.txt.
+
+If you want to use any of these CDROM drivers, you also have to
+answer Y or M to "ISO 9660 CDROM file system support" below (this
+answer will get "defaulted" for you if you enable any of the Linux
+CDROM drivers).
+.
+HOTPLUG 'Support for hot-pluggable devices' text
+Say Y here if you want to plug devices into your computer while
+the system is running, and be able to use them quickly. In many
+cases, the devices can likewise be unplugged at any time too.
+
+One well known example of this is PCMCIA- or PC-cards, credit-card
+size devices such as network cards, modems or hard drives which are
+plugged into slots found on all modern laptop computers. Another
+example, used on modern desktops as well as laptops, is USB.
+
+Enable HOTPLUG and KMOD, and build a modular kernel. Get agent
+software (at http://linux-hotplug.sourceforge.net) and install it.
+Then your kernel will automatically call out to a user mode "policy
+agent" (/sbin/hotplug) to load modules and set up software needed
+to use devices as you hotplug them.
+.
+PRINTER 'Parallel printer support' text
+If you intend to attach a printer to the parallel port of your Linux
+box (as opposed to using a serial printer; if the connector at the
+printer has 9 or 25 holes ["female"], then it's serial), say Y. Also
+read the Printing-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+It is possible to share one parallel port among several devices
+(e.g. printer and ZIP drive) and it is safe to compile the
+corresponding drivers into the kernel. If you want to compile this
+driver as a module however ( = code which can be inserted in and
+removed from the running kernel whenever you want), say M here and
+read Documentation/modules.txt and Documentation/parport.txt. The
+module will be called lp.o.
+
+If you have several parallel ports, you can specify which ports to
+use with the "lp" kernel command line option. (Try "man bootparam"
+or see the documentation of your boot loader (lilo or loadlin) about
+how to pass options to the kernel at boot time.) The syntax of the
+"lp" command line option can be found in drivers/char/lp.c.
+
+If you have more than 8 printers, you need to increase the LP_NO
+macro in lp.c and the PARPORT_MAX macro in parport.h.
+.
+#
+HOTPLUG_PCI 'Generic PCI hotplug support'
+
+HOTPLUG_PCI_COMPAQ 'Compaq PCI Hotplug driver'
+
+HOTPLUG_PCI_COMPAQ_NVRAM 'Save configuration into NVRAM on Compaq servers'
+
+#
+# Kernel debugging
+MAGIC_SYSRQ 'Magic System Request Key support' text
+If you say Y here, you will have some control over the system even
+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). 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.
+.
+#DEBUG_MALLOC 'Debug kmalloc/kfree'
+REMOTE_DEBUG 'Remote GDB kernel debugging' text
+If you say Y here, it will be possible to remotely debug the MIPS
+kernel using gdb. This enlarges your kernel image disk size by
+several megabytes and requires a machine with more than 16 MB,
+better 32 MB RAM to avoid excessive linking time. This is only
+useful for kernel hackers. If unsure, say N.
+.
+GDB_CONSOLE 'Console output to GDB'
+
+LL_DEBUG 'Low-level debugging'
+
+MIPS_UNCACHED 'Run uncached' text
+If you say Y here there kernel will disable all CPU caches. This will
+reduce the system's performance dramatically but can help finding
+otherwise hard to track bugs. It can also useful if you're doing
+hardware debugging with a logic analyzer and need to see all traffic
+on the bus.
+.
+DEBUG_KERNEL 'Kernel debugging'
+
+DEBUG_HIGHMEM 'Debug high memory support' text
+This options enables addition error checking for high memory systems.
+Disable for production systems.
+.
+DEBUG_IOVIRT 'Memory mapped I/O debugging'
+
+DEBUG_BUGVERBOSE 'Verbose BUG() reporting (adds 70K)'
+
+#
+# File system configuration
+QUOTA 'Quota support' text
+If you say Y here, you will be able to set per user limits for disk
+usage (also called disk quotas). Currently, it works only for the
+ext2 file system. You need additional software in order to use quota
+support; for details, read the Quota mini-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . Probably the quota
+support is only useful for multi user systems. If unsure, say N.
+.
+AUTOFS_FS 'Kernel automounter support' text
+The automounter is a tool to automatically mount remote file systems
+on demand. This implementation is partially kernel-based to reduce
+overhead in the already-mounted case; this is unlike the BSD
+automounter (amd), which is a pure user space daemon.
+
+To use the automounter you need the user-space tools from the autofs
+package; you can find the location in Documentation/Changes. You
+also want to answer Y to "NFS file system support", below.
+
+If you want to use the newer version of the automounter with more
+features, say N here and say Y to "Kernel automounter v4 support",
+below.
+
+If you want to compile this 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 autofs.o.
+
+If you are not a part of a fairly large, distributed network, you
+probably do not need an automounter, and can say N here.
+.
+AUTOFS4_FS 'Kernel automounter version 4 support (also supports v3)'
+text
+The automounter is a tool to automatically mount remote file systems
+on demand. This implementation is partially kernel-based to reduce
+overhead in the already-mounted case; this is unlike the BSD
+automounter (amd), which is a pure user space daemon.
+
+To use the automounter you need the user-space tools from
+ftp://ftp.kernel.org/pub/linux/daemons/autofs/testing-v4 ; you also
+want to answer Y to "NFS file system support", below.
+
+If you want to compile this 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 autofs4.o. You will need to add "alias autofs autofs4" to
+your modules configuration file.
+
+If you are not a part of a fairly large, distributed network or
+don't have a laptop which needs to dynamically reconfigure to the
+local network, you probably do not need an automounter, and can say
+N here.
+.
+REISERFS_FS 'Reiserfs support' text
+
+Stores not just filenames but the files themselves in a balanced
+tree. Uses journaling.
+
+Balanced trees are more efficient than traditional
+filesystem architectural foundations.
+
+In general, ReiserFS is as fast as ext2, but is very efficient
+with large directories and small files. Additional patches are
+needed for NFS and quotas, please see www.reiserfs.org for
+links.
+
+It is more easily extended to have features currently found in
+database and keyword search systems than block allocation based
+filesystems are. The next version will be so extended, and will
+support plugins consistent with our motto ``It takes more than a
+license to make source code open.''
+
+Read www.reiserfs.org to learn more about reiserfs.
+
+Sponsored by Threshold Networks, Emusic.com, and Bigstorage.com.
+
+If you like it, you can pay us to add new features to it that you
+need, buy a support contract, or pay us to port it to another OS.
+.
+REISERFS_CHECK 'Enable extra Reiserfs consistency checks' text
+If you set this to yes, then ReiserFS will perform every check it
+can possibly imagine of its internal consistency throughout its
+operation. It will also go substantially slower. More than once we
+have forgotten that this was on, and then gone despondent over the
+latest benchmarks.:-) Use of this option allows our team to go all
+out in checking for consistency when debugging without fear of its
+effect on end users. If you are on the verge of sending in a bug
+report, say yes and you might get a useful error message. Almost
+everyone should say no.
+.
+REISERFS_PROC_INFO ' Stats in /proc/fs/reiserfs'
+
+ADFS_FS 'ADFS file system support' text
+The Acorn Disc Filing System is the standard file system of the
+RiscOS operating system which runs on Acorn's ARM-based Risc PC
+systems and the Acorn Archimedes range of machines. If you say Y
+here, Linux will be able to read from ADFS partitions on hard drives
+and from ADFS-formatted floppy discs. If you also want to be able to
+write to those devices, say Y to "ADFS write support" below.
+
+The ADFS partition should be the first partition (i.e.,
+/dev/[hs]d?1) on each of your drives. Please read the file
+Documentation/filesystems/adfs.txt for further details.
+
+This code is also available as a module called adfs.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 N.
+.
+ADFS_FS_RW 'ADFS write support' text
+If you say Y here, you will be able to write to ADFS partitions on
+hard drives and ADFS-formatted floppy disks. This is experimental
+codes, so if you're unsure, say N.
+.
+AFFS_FS 'Amiga FFS file system support' text
+The Fast File System (FFS) is the common file system used on hard
+disks by Amiga(tm) systems since AmigaOS Version 1.3 (34.20). Say Y
+if you want to be able to read and write files from and to an Amiga
+FFS partition on your hard drive. Amiga floppies however cannot be
+read with this driver due to an incompatibility of the floppy
+controller used in an Amiga and the standard floppy controller in
+PCs and workstations. Read Documentation/filesystems/affs.txt and
+fs/affs/Changes.
+
+With this driver you can also mount disk files used by Bernd
+Schmidt's Un*X Amiga Emulator (http://www.freiburg.linux.de/~uae/ ).
+If you want to do this, you will also need to say Y or M to "Loop
+device support", above.
+
+This file system is also available as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module is called affs.o. If you want to compile it as a module,
+say M here and read Documentation/modules.txt. If unsure, say N.
+.
+HFS_FS 'Apple Macintosh file system support' text
+If you say Y here, you will be able to mount Macintosh-formatted
+floppy disks and hard drive partitions with full read-write access.
+Please read fs/hfs/HFS.txt to learn about the available mount
+options.
+
+This file system support is also available as a module ( = code
+which can be inserted in and removed from the running kernel
+whenever you want). The module is called hfs.o. If you want to
+compile it as a module, say M here and read
+Documentation/modules.txt.
+.
+BFS_FS 'BFS file system support' text
+Boot File System (BFS) is a file system used under SCO UnixWare to
+allow the bootloader access to the kernel image and other important
+files during the boot process. It is usually mounted under /stand
+and corresponds to the slice marked as "STAND" in the UnixWare
+partition. You should say Y if you want to read or write
+the files on your /stand slice from within Linux. You then also
+need to say Y to "UnixWare slices support", below. More information
+about the BFS file system is contained in the file
+Documentation/filesystems/bfs.txt.
+
+If you don't know what this is about, say N.
+
+If you want to compile this 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 bfs.o. Note that the file system of your root partition (the
+one containing the directory /) cannot be compiled as a module.
+.
+#
+# MS-DOS file systems
+FAT_FS 'DOS FAT fs support' text
+If you want to use one of the FAT-based file systems (the MS-DOS,
+VFAT (Windows 95) and UMSDOS (used to run Linux on top of an
+ordinary DOS partition) file systems), then you must say Y or M here
+to include FAT support. You will then be able to mount partitions or
+diskettes with FAT-based file systems and transparently access the
+files on them, i.e. MSDOS files will look and behave just like all
+other Unix files.
+
+This FAT support is not a file system in itself, it only provides
+the foundation for the other file systems. You will have to say Y or
+M to at least one of "MSDOS fs support" or "VFAT fs support" in
+order to make use of it.
+
+Another way to read and write MSDOS floppies and hard drive
+partitions from within Linux (but not transparently) is with the
+mtools ("man mtools") program suite. You don't need to say Y here in
+order to do that.
+
+If you need to move large files on floppies between a DOS and a
+Linux box, say Y here, mount the floppy under Linux with an MSDOS
+file system and use GNU tar's M option. GNU tar is a program
+available for Unix and DOS ("man tar" or "info tar").
+
+It is now also becoming possible to read and write compressed FAT
+file systems; read Documentation/filesystems/fat_cvf.txt for
+details.
+
+The FAT support will enlarge your kernel by about 37 KB. If unsure,
+say Y.
+
+If you want to compile this as a module however ( = 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 fat.o. Note that if you compile the FAT support as a
+module, you cannot compile any of the FAT-based file systems into
+the kernel -- they will have to be modules as well. The file system
+of your root partition (the one containing the directory /) cannot
+be a module, so don't say M here if you intend to use UMSDOS as your
+root file system.
+.
+MSDOS_FS 'MSDOS fs support' text
+This allows you to mount MSDOS partitions of your hard drive (unless
+they are compressed; to access compressed MSDOS partitions under
+Linux, you can either use the DOS emulator DOSEMU, described in the
+DOSEMU-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , or try dmsdosfs in
+ftp://metalab.unc.edu/pub/Linux/system/filesystems/dosfs . If you
+intend to use dosemu with a non-compressed MSDOS partition, say Y
+here) and MSDOS floppies. This means that file access becomes
+transparent, i.e. the MSDOS files look and behave just like all
+other Unix files.
+
+If you want to use UMSDOS, the Unix-like file system on top of a
+DOS file system, which allows you to run Linux from within a DOS
+partition without repartitioning, you'll have to say Y or M here.
+
+If you have Windows 95 or Windows NT installed on your MSDOS
+partitions, you should use the VFAT file system (say Y to "VFAT fs
+support" below), or you will not be able to see the long filenames
+generated by Windows 95 / Windows NT.
+
+This option will enlarge your kernel by about 7 KB. If unsure,
+answer Y. This will only work if you said Y to "DOS FAT fs support"
+as well. If you want to compile this as a module however ( = 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 msdos.o.
+.
+UMSDOS_FS 'Unix-like file system on top of standard MSDOS fs' text
+Say Y here if you want to run Linux from within an existing DOS
+partition of your hard drive. The advantage of this is that you can
+get away without repartitioning your hard drive (which often implies
+backing everything up and restoring afterwards) and hence you're
+able to quickly try out Linux or show it to your friends; the
+disadvantage is that Linux becomes susceptible to DOS viruses and
+that UMSDOS is somewhat slower than ext2fs. Another use of UMSDOS
+is to write files with long unix filenames to MSDOS floppies; it
+also allows Unix-style soft-links and owner/permissions of files on
+MSDOS floppies. You will need a program called umssync in order to
+make use of UMSDOS; read Documentation/filesystems/umsdos.txt.
+
+To get utilities for initializing/checking UMSDOS file system, or
+latest patches and/or information, visit the UMSDOS home page at
+http://www.voyager.hr/~mnalis/umsdos/ .
+
+This option enlarges your kernel by about 28 KB and it only works if
+you said Y to both "DOS FAT fs support" and "MSDOS fs support"
+above. If you want to compile this 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 umsdos.o. Note that the file system of your root partition
+(the one containing the directory /) cannot be a module, so saying M
+could be dangerous. If unsure, say N.
+.
+VFAT_FS 'VFAT (Windows-95) fs support' text
+This option provides support for normal Windows file systems with
+long filenames. That includes non-compressed FAT-based file systems
+used by Windows 95, Windows 98, Windows NT 4.0, and the Unix
+programs from the mtools package.
+
+You cannot use the VFAT file system for your Linux root partition
+(the one containing the directory /); use UMSDOS instead if you
+want to run Linux from within a DOS partition (i.e. say Y to
+"UMSDOS: Unix like fs on top of std MSDOS fs", below).
+
+The VFAT support enlarges your kernel by about 10 KB and it only
+works if you said Y to the "DOS FAT fs support" above. Please read
+the file Documentation/filesystems/vfat.txt for details. If unsure,
+say Y.
+
+If you want to compile this 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 vfat.o.
+.
+EFS_FS 'EFS file system support (read-only)' text
+EFS is an older file system used for non-ISO9660 CDROMs and hard
+disk partitions by SGI's IRIX operating system (IRIX 6.0 and newer
+uses the XFS file system for hard disk partitions however).
+
+This implementation only offers read-only access. If you don't know
+what all this is about, it's safe to say N. For more information
+about EFS see its home page at http://aeschi.ch.eu.org/efs/ .
+
+If you want to compile the EFS file system support 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 efs.o.
+.
+JFFS_FS 'Journalling Flash File System (JFFS) support' text
+JFFS is the Journaling Flash File System developed by Axis
+Communications in Sweden, aimed at providing a crash/powerdown-safe
+filesystem for disk-less embedded devices. Further information is
+available at (http://developer.axis.com/software/jffs/).
+.
+JFFS_FS_VERBOSE 'JFFS debugging verbosity (0 = quiet, 3 = noisy)' text
+Determines the verbosity level of the JFFS debugging messages.
+.
+JFFS_PROC_FS 'JFFS stats available in /proc filesystem'
+
+JFFS2_FS 'Journalling Flash File System v2 (JFFS2) support'
+
+JFFS2_FS_DEBUG 'JFFS2 debugging verbosity (0 = quiet, 3 = noisy)'
+
+CRAMFS 'Compressed ROM file system support' text
+Saying Y here includes support for CramFs (Compressed ROM File
+System). Cramfs is designed to be a simple, small, and compressed
+file system for ROM based embedded systems. CramFs is read-only,
+limited to 256MB file systems (with 16MB files), and doesn't support
+16/32 bits uid/gid, hard links and timestamps.
+
+See Documentation/filesystems/cramfs.txt and fs/cramfs/README
+for further information.
+
+If you want to compile this 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 cramfs.o. Note that the root file system (the one containing
+the directory /) cannot be compiled as a module.
+
+If unsure, say N.
+.
+TMPFS 'Virtual memory file system support' text
+Tmpfs is a file system which keeps all files in virtual memory.
+
+In contrast to RAM disks, which get allocated a fixed amount of
+physical RAM, tmpfs grows and shrinks to accommodate the files it
+contains and is able to swap unneeded pages out to swap space.
+
+Everything is "virtual" in the sense that no files will be created
+on your hard drive; if you reboot, everything in tmpfs will be
+lost.
+
+You should mount the filesystem somewhere to be able to use
+POSIX shared memory. Adding the following line to /etc/fstab should
+take care of things:
+
+tmpfs /dev/shm tmpfs defaults 0 0
+
+Remember to create the directory that you intend to mount tmpfs on
+if necessary (/dev/shm is automagically created if you use devfs).
+
+You can set limits for the number of blocks and inodes used by the
+filesystem with the mount options "size", "nr_blocks" and
+"nr_inodes". These parameters accept a suffix k, m or g for kilo,
+mega and giga and can be changed on remount.
+
+The initial permissions of the root directory can be set with the
+mount option "mode".
+.
+RAMFS 'Simple RAM-based file system support' text
+Ramfs is a file system which keeps all files in RAM. It allows
+read and write access.
+
+It is more of an programming example than a useable filesystem. If
+you need a file system which lives in RAM with limit checking use
+tmpfs.
+
+If you want to compile this 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 ramfs.o.
+.
+ISO9660_FS 'ISO 9660 CD-ROM file system support' text
+This is the standard file system used on CDROMs. It was previously
+known as "High Sierra File System" and is called "hsfs" on other
+Unix systems. The so-called Rock-Ridge extensions which allow for
+long Unix filenames and symbolic links are also supported by this
+driver. If you have a CDROM drive and want to do more with it than
+just listen to audio CDs and watch its LEDs, say Y (and read
+Documentation/filesystems/isofs.txt and the CDROM-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto ), thereby enlarging
+your kernel by about 27 KB; otherwise say N.
+
+If you want to compile this 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 isofs.o.
+.
+JOLIET 'Microsoft Joliet CD-ROM extensions' text
+Joliet is a Microsoft extension for the ISO 9660 CDROM file system
+which allows for long filenames in unicode format (unicode is the
+new 16 bit character code, successor to ASCII, which encodes the
+characters of almost all languages of the world; see
+http://www.unicode.org for more information). Say Y here if you want
+to be able to read Joliet CDROMs under Linux.
+.
+ZISOFS 'Transparent decompression extension' text
+This is a Linux-specific extension to RockRidge which lets you store
+data in compressed form on a CD-ROM and have it transparently
+decompressed when the CD-ROM is accessed. See
+ for the tools
+necessary to create such a filesystem. Say Y here if you want to be
+able to read such compressed CD-ROMs.
+.
+MINIX_FS 'Minix fs support' text
+Minix is a simple operating system used in many classes about OS's.
+The minix file system (method to organize files on a hard disk
+partition or a floppy disk) was the original file system for Linux,
+but has been superseded by the second extended file system ext2fs.
+You don't want to use the minix file system on your hard disk
+because of certain built-in restrictions, but it is sometimes found
+on older Linux floppy disks. This option will enlarge your kernel by
+about 28 KB. If unsure, say N.
+
+If you want to compile this 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 minix.o. Note that the file system of your root partition
+(the one containing the directory /) cannot be compiled as a module.
+.
+VXFS_FS 'FreeVxFS file system support (VERITAS VxFS(TM) compatible)'
+text
+FreeVxFS is a filesystem driver that support the VERITAS VxFS(TM)
+filesystem format. VERITAS VxFS(TM) is the standard filesystem
+of SCO UnixWare (and possibly others) and optionally available
+for Sunsoft Solaris, HP-UX and many other operating systems.
+Currently only readonly access is supported.
+
+NOTE: the filesystem type as used by mount(1), mount(2) and fstab(5)
+ is 'vxfs' as it describes the filesystem format, not the
+ actual driver.
+
+This file system is also available as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module is called freevxfs.o. If you want to compile it as a module,
+say M here and read Documentation/modules.txt. If unsure, say N.
+.
+NTFS_FS 'NTFS file system support (read-only)' text
+NTFS is the file system of Microsoft Windows NT. Say Y if you want
+to get read access to files on NTFS partitions of your hard drive.
+The Linux NTFS driver supports most of the mount options of the VFAT
+driver, see . Saying Y here
+will give you read-only access to NTFS partitions.
+
+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 ntfs.o. If you want to compile it as a
+module, say M here and read .
+.
+NTFS_RW 'NTFS write support' text
+If you say Y here, you will (maybe) be able to write to NTFS file
+systems as well as read from them. The read-write support in NTFS
+is far from being complete and is not well tested. If you say Y
+here, back up your NTFS volume first, since it will probably get
+damaged. Also, download the Linux-NTFS project distribution from
+Sourceforge at and always run the
+included ntfsfix utility after writing to an NTFS partition from
+Linux to fix some of the damage done by the driver. You should run
+ntfsfix _after_ unmounting the partition in Linux but _before_
+rebooting into Windows. When Windows next boots, chkdsk will be
+run automatically to fix the remaining damage.
+Please note that write support is limited to Windows NT4 and
+earlier versions.
+
+If unsure, say N.
+.
+HPFS_FS 'OS/2 HPFS file system support' text
+OS/2 is IBM's operating system for PC's, the same as Warp, and HPFS
+is the file system used for organizing files on OS/2 hard disk
+partitions. Say Y if you want to be able to read files from and
+write files to an OS/2 HPFS partition on your hard drive. OS/2
+floppies however are in regular MSDOS format, so you don't need this
+option in order to be able to read them. Read
+Documentation/filesystems/hpfs.txt.
+
+This file system is also available as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module is called hpfs.o. If you want to compile it as a module,
+say M here and read Documentation/modules.txt. If unsure, say N.
+.
+PROC_FS '/proc file system support' text
+This is a virtual file system providing information about the status
+of the system. "Virtual" means that it doesn't take up any space on
+your hard disk: the files are created on the fly by the kernel when
+you try to access them. Also, you cannot read the files with older
+version of the program less: you need to use more or cat.
+
+It's totally cool; for example, "cat /proc/interrupts" gives
+information about what the different IRQs are used for at the moment
+(there is a small number of Interrupt ReQuest lines in your computer
+that are used by the attached devices to gain the CPU's attention --
+often a source of trouble if two devices are mistakenly configured
+to use the same IRQ). The program procinfo to display some
+information about your system gathered from the /proc file system.
+
+Before you can use the /proc file system, it has to be mounted,
+meaning it has to be given a location in the directory hierarchy.
+That location should be /proc. A command such as "mount -t proc proc
+/proc" or the equivalent line in /etc/fstab does the job.
+
+The /proc file system is explained in the file
+Documentation/filesystems/proc.txt and on the proc(5) manpage ("man
+5 proc").
+
+This option will enlarge your kernel by about 67 KB. Several
+programs depend on this, so everyone should say Y here.
+.
+DEVFS_FS '/dev file system support' text
+This is support for devfs, a virtual file system (like /proc) which
+provides the file system interface to device drivers, normally found
+in /dev. Devfs does not depend on major and minor number
+allocations. Device drivers register entries in /dev which then
+appear automatically, which means that the system administrator does
+not have to create character and block special device files in the
+/dev directory using the mknod command (or MAKEDEV script) anymore.
+
+This is work in progress. If you want to use this, you *must* read
+the material in Documentation/filesystems/devfs/, especially the
+file README there.
+
+If unsure, say N.
+.
+DEVFS_MOUNT 'Automatically mount devfs at boot time' text
+This option appears if you have CONFIG_DEVFS_FS enabled. Setting
+this to 'Y' will make the kernel automatically mount devfs onto /dev
+when the system is booted, before the init thread is started.
+You can override this with the "devfs=nomount" boot option.
+
+If unsure, say N.
+.
+DEVFS_DEBUG 'Debug devfs' text
+If you say Y here, then the /dev file system code will generate
+debugging messages. See the file
+Documentation/filesystems/devfs/boot-options for more details.
+
+If unsure, say N.
+.
+DEVPTS_FS '/dev/pts file system for Unix98 PTYs' text
+You should say Y here if you said Y to "Unix98 PTY support" above.
+You'll then get a virtual file system which can be mounted on
+/dev/pts with "mount -t devpts". This, together with the pseudo
+terminal master multiplexer /dev/ptmx, is used for pseudo terminal
+support as described in The Open Group's Unix98 standard: in order
+to acquire a pseudo terminal, a process opens /dev/ptmx; the number
+of the pseudo terminal is then made available to the process and the
+pseudo terminal slave can be accessed as /dev/pts/. What was
+traditionally /dev/ttyp2 will then be /dev/pts/2, for example.
+
+The GNU C library glibc 2.1 contains the requisite support for this
+mode of operation; you also need client programs that use the Unix98
+API. Please read Documentation/Changes for more information about
+the Unix98 pty devices.
+
+Note that the experimental "/dev file system support"
+(CONFIG_DEVFS_FS) is a more general facility.
+.
+QNX4FS_FS 'QNX4 file system support (read only)' text
+This is the file system used by the operating system QNX 4. Say Y if
+you intend to mount QNX hard disks or floppies. Unless you say Y to
+"QNX4FS read-write support" below, you will only be able to read
+these file systems.
+
+This file system support is also available as a module ( = code
+which can be inserted in and removed from the running kernel
+whenever you want). The module is called qnx4.o. If you want to
+compile it as a module, say M here and read
+Documentation/modules.txt.
+
+If you don't know whether you need it, then you don't need it:
+answer N.
+.
+QNX4FS_RW 'QNX4FS write support' text
+Say Y if you want to test write support for QNX4 file systems.
+.
+ROMFS_FS 'ROM file system support' text
+This is a very small read-only file system mainly intended for
+initial ram disks of installation disks, but it could be used for
+other read-only media as well. Read
+Documentation/filesystems/romfs.txt for details.
+
+This file system support is also available as a module ( = code
+which can be inserted in and removed from the running kernel
+whenever you want). The module is called romfs.o. If you want to
+compile it as a module, say M here and read
+Documentation/modules.txt. Note that the file system of your root
+partition (the one containing the directory /) cannot be a module.
+
+If you don't know whether you need it, then you don't need it:
+answer N.
+.
+EXT2_FS 'Second extended fs support' text
+This is the de facto standard Linux file system (method to organize
+files on a storage device) for hard disks.
+
+You want to say Y here, unless you intend to use Linux exclusively
+from inside a DOS partition using the UMSDOS file system. The
+advantage of the latter is that you can get away without
+repartitioning your hard drive (which often implies backing
+everything up and restoring afterwards); the disadvantage is that
+Linux becomes susceptible to DOS viruses and that UMSDOS is somewhat
+slower than ext2fs. Even if you want to run Linux in this fashion,
+it might be a good idea to have ext2fs around: it enables you to
+read more floppy disks and facilitates the transition to a *real*
+Linux partition later. Another (rare) case which doesn't require
+ext2fs is a diskless Linux box which mounts all files over the
+network using NFS (in this case it's sufficient to say Y to "NFS
+file system support" below). Saying Y here will enlarge your kernel
+by about 44 KB.
+
+The Ext2fs-Undeletion mini-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , gives information about
+how to retrieve deleted files on ext2fs file systems.
+
+To change the behavior of ext2 file systems, you can use the tune2fs
+utility ("man tune2fs"). To modify attributes of files and
+directories on ext2 file systems, use chattr ("man chattr").
+
+Ext2fs partitions can be read from within DOS using the ext2tool
+command line tool package (available via FTP (user: anonymous) from
+ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2 ) and from
+within Windows NT using the ext2nt command line tool package from
+ftp://metalab.unc.edu/pub/Linux/utils/dos . Explore2fs is a
+graphical explorer for ext2fs partitions which runs on Windows 95
+and Windows NT and includes experimental write support; it is
+available from
+http://jnewbigin-pc.it.swin.edu.au/Linux/Explore2fs.htm .
+
+If you want to compile this file system 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 ext2.o. Be aware however that the file system of your
+root partition (the one containing the directory /) cannot be
+compiled as a module, and so this could be dangerous. Most everyone
+wants to say Y here.
+.
+EXT3_FS 'Ext3 journalling file system support'
+
+JBD_DEBUG 'JBD (ext3) debugging support'
+
+SYSV_FS 'System V/Xenix/V7/Coherent file system support (read only)'
+text
+SCO, Xenix and Coherent are commercial Unix systems for Intel
+machines, and Version 7 was used on the DEC PDP-11. Saying Y
+here would allow you to read from their floppies and hard disk
+partitions. If you also want to write to these media, say Y to
+"SYSV file system write support" below.
+
+If you have floppies or hard disk partitions like that, it is likely
+that they contain binaries from those other Unix systems; in order
+to run these binaries, you will want to install linux-abi which is a
+a set of kernel modules that lets you run SCO, Xenix, Wyse, UnixWare,
+Dell Unix and System V programs under Linux. It's available via FTP
+(user: ftp) from ftp://ftp.openlinux.org/pub/people/hch/linux-abi).
+NOTE: that will work only for binaries from Intel-based systems;
+PDP ones will have to wait until somebody ports Linux to -11 ;-)
+
+If you only intend to mount files from some other Unix over the
+network using NFS, you don't need the System V file system support
+(but you need NFS file system support obviously).
+
+Note that this option is generally not needed for floppies, since a
+good portable way to transport files and directories between unixes
+(and even other operating systems) is given by the tar program ("man
+tar" or preferably "info tar"). Note also that this option has
+nothing whatsoever to do with the option "System V IPC". Read about
+the System V file system in Documentation/filesystems/sysv-fs.txt.
+Saying Y here will enlarge your kernel by about 27 KB.
+
+If you want to compile this 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 sysv.o.
+
+If you haven't heard about all of this before, it's safe to say N.
+.
+UDF_FS 'UDF file system support (read-only)' text
+This is the new file system used on some CDROMs and DVDs. Say Y if
+you intend to mount DVD discs or CDRW's written in packet mode, or
+if written to by other UDF utilities, such as DirectCD. This UDF
+file system support is read-only. If you want to write to UDF
+file systems on some media, you need to say Y to "UDF read-write
+support" below in addition. Please read
+Documentation/filesystems/udf.txt.
+
+This file system support is also available as a module ( = code
+which can be inserted in and removed from the running kernel
+whenever you want). The module is called udf.o. If you want to
+compile it as a module, say M here and read
+Documentation/modules.txt.
+
+If unsure, say N.
+.
+UDF_RW 'UDF write support' text
+Say Y if you want to test write support for UDF file systems.
+Due to lack of support for writing to CDR/CDRW's, this option
+is only supported for hard discs, DVD-RAM, and loopback files.
+.
+UFS_FS 'UFS file system support (read-only)' text
+BSD and derivate versions of Unix (such as SunOS, FreeBSD, NetBSD,
+OpenBSD and NeXTstep) use a file system called UFS. Some System V
+Unixes can create and mount hard disk partitions and diskettes using
+this file system as well. Saying Y here will allow you to read from
+these partitions; if you also want to write to them, say Y to the
+experimental "UFS file system write support", below. Please read the
+file Documentation/filesystems/ufs.txt for more information.
+
+If you only intend to mount files from some other Unix over the
+network using NFS, you don't need the UFS file system support (but
+you need NFS file system support obviously).
+
+Note that this option is generally not needed for floppies, since a
+good portable way to transport files and directories between unixes
+(and even other operating systems) is given by the tar program ("man
+tar" or preferably "info tar").
+
+When accessing NeXTstep files, you may need to convert them from the
+NeXT character set to the Latin1 character set; use the program
+recode ("info recode") for this purpose.
+
+If you want to compile the UFS file system support 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 ufs.o.
+
+If you haven't heard about all of this before, it's safe to say N.
+.
+UFS_FS_WRITE 'UFS file system write support' text
+Say Y here if you want to try writing to UFS partitions. This is
+experimental, so you should back up your UFS partitions beforehand.
+.
+CODA_FS 'Coda file system support (advanced network fs)' text
+Coda is an advanced network file system, similar to NFS in that it
+enables you to mount file systems of a remote server and access them
+with regular Unix commands as if they were sitting on your hard
+disk. Coda has several advantages over NFS: support for disconnected
+operation (e.g. for laptops), read/write server replication,
+security model for authentication and encryption, persistent client
+caches and write back caching.
+
+If you say Y here, your Linux box will be able to act as a Coda
+*client*. You will need user level code as well, both for the client
+and server. Servers are currently user level, i.e. they need no
+kernel support. Please read Documentation/filesystems/coda.txt and
+check out the Coda home page http://www.coda.cs.cmu.edu .
+
+If you want to compile the coda client support 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 coda.o.
+.
+INTERMEZZO_FS 'InterMezzo file system support (replicating fs)'
+
+NFS_FS 'NFS file system support' text
+If you are connected to some other (usually local) Unix computer
+(using SLIP, PLIP, PPP or Ethernet) and want to mount files residing
+on that computer (the NFS server) using the Network File Sharing
+protocol, say Y. "Mounting files" means that the client can access
+the files with usual UNIX commands as if they were sitting on the
+client's hard disk. For this to work, the server must run the
+programs nfsd and mountd (but does not need to have NFS file system
+support enabled in its kernel). NFS is explained in the Network
+Administrator's Guide, available from
+http://www.linuxdoc.org/docs.html#guide , on its man page: "man
+nfs", and in the NFS-HOWTO.
+
+A superior but less widely used alternative to NFS is provided by
+the Coda file system; see "Coda file system support" below.
+
+If you say Y here, you should have said Y to TCP/IP networking also.
+This option would enlarge your kernel by about 27 KB.
+
+This file system is also available as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module is called nfs.o. If you want to compile it as a module,
+say M here and read Documentation/modules.txt.
+
+If you are configuring a diskless machine which will mount its root
+file system over NFS at boot time, say Y here and to "IP: kernel
+level autoconfiguration" above and to "Root file system on NFS"
+below. You cannot compile this driver as a module in this case.
+There are two packages designed for booting diskless machines over
+the net: netboot and etherboot, both available via FTP from
+ftp://metalab.unc.edu/pub/Linux/system/boot/ethernet/ .
+
+If you don't know what all this is about, say N.
+.
+NFS_V3 'Provide NFSv3 client support' text
+Say Y here if you want your NFS client to be able to speak the newer
+version 3 of the NFS protocol.
+
+If unsure, say N.
+.
+ROOT_NFS 'Root file system on NFS' text
+If you want your Linux box to mount its whole root file system (the
+one containing the directory /) from some other computer over the
+net via NFS (presumably because your box doesn't have a hard disk),
+say Y. Read Documentation/nfsroot.txt for details. It is likely that
+in this case, you also want to say Y to "IP: kernel level
+autoconfiguration" so that your box can discover its network address
+at boot time.
+
+Most people say N here.
+.
+NFSD 'NFS server support' text
+If you want your Linux box to act as an NFS *server*, so that other
+computers on your local network which support NFS can access certain
+directories on your box transparently, you have two options: you can
+use the self-contained user space program nfsd, in which case you
+should say N here, or you can say Y and use the kernel based NFS
+server. The advantage of the kernel based solution is that it is
+faster.
+
+In either case, you will need support software; the respective
+locations are given in the file Documentation/Changes in the NFS
+section.
+
+If you say Y here, you will get support for version 2 of the NFS
+protocol (NFSv2). If you also want NFSv3, say Y to the next question
+as well.
+
+Please read the NFS-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+The NFS server is also available as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module is called nfsd.o. If you want to compile it as a module,
+say M here and read Documentation/modules.txt. If unsure, say N.
+.
+NFSD_V3 'Provide NFSv3 server support' text
+If you would like to include the NFSv3 server as well as the NFSv2
+server, say Y here. If unsure, say Y.
+.
+SMB_FS 'SMB file system support (to mount Windows shares etc.)' text
+SMB (Server Message Block) is the protocol Windows for Workgroups
+(WfW), Windows 95/98, Windows NT and OS/2 Lan Manager use to share
+files and printers over local networks. Saying Y here allows you to
+mount their file systems (often called "shares" in this context) and
+access them just like any other Unix directory. Currently, this
+works only if the Windows machines use TCP/IP as the underlying
+transport protocol, and not NetBEUI. For details, read
+Documentation/filesystems/smbfs.txt and the SMB-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto .
+
+Note: if you just want your box to act as an SMB *server* and make
+files and printing services available to Windows clients (which need
+to have a TCP/IP stack), you don't need to say Y here; you can use
+the program samba (available via FTP (user: anonymous) in
+ftp://metalab.unc.edu/pub/Linux/system/network/samba ) for that.
+
+General information about how to connect Linux, Windows machines and
+Macs is on the WWW at http://www.eats.com/linux_mac_win.html .
+
+If you want to compile the SMB support 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 smbfs.o. Most people say N, however.
+.
+SMB_NLS_DEFAULT 'Use a default NLS' text
+Enabling this will make smbfs use nls translations by default. You
+need to specify the local charset (CONFIG_NLS_DEFAULT) in the nls
+settings and you need to give the default nls for the SMB server as
+CONFIG_SMB_NLS_REMOTE.
+
+The nls settings can be changed at mount time, if your smbmount
+supports that, using the codepage and iocharset parameters.
+
+smbmount from samba 2.2.0 or later supports this.
+.
+NCP_FS 'NCP file system support (to mount NetWare volumes)' text
+NCP (NetWare Core Protocol) is a protocol that runs over IPX and is
+used by Novell NetWare clients to talk to file servers. It is to IPX
+what NFS is to TCP/IP, if that helps. Saying Y here allows you to
+mount NetWare file server volumes and to access them just like any
+other Unix directory. For details, please read the file
+Documentation/filesystems/ncpfs.txt in the kernel source and the
+IPX-HOWTO from http://www.linuxdoc.org/docs.html#howto .
+
+You do not have to say Y here if you want your Linux box to act as a
+file *server* for Novell NetWare clients.
+
+General information about how to connect Linux, Windows machines and
+Macs is on the WWW at http://www.eats.com/linux_mac_win.html .
+
+If you want to compile this 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 ncpfs.o. Say N unless you are connected to a Novell network.
+.
+SMB_NLS_REMOTE 'Default Remote NLS Option' text
+This setting allows you to specify a default value for which
+codepage the server uses. If this field is left blank no
+translations will be done by default. The local codepage/charset
+default to CONFIG_NLS_DEFAULT.
+
+The nls settings can be changed at mount time, if your smbmount
+supports that, using the codepage and iocharset parameters.
+
+smbmount from samba 2.2.0 or later supports this.
+.
+#
+# NCP Filesystem configuration
+NCPFS_PACKET_SIGNING 'Packet signatures' text
+NCP allows packets to be signed for stronger security. If you want
+security, say Y. Normal users can leave it off. To be able to use
+packet signing you must use ncpfs > 2.0.12.
+.
+NCPFS_IOCTL_LOCKING 'Proprietary file locking' text
+Allows locking of records on remote volumes. Say N unless you have
+special applications which are able to utilize this locking scheme.
+.
+NCPFS_STRONG 'Clear remove/delete inhibit when needed' text
+Allows manipulation of files flagged as Delete or Rename Inhibit. To
+use this feature you must mount volumes with the ncpmount parameter
+"-s" (ncpfs-2.0.12 and newer). Say Y unless you are not mounting
+volumes with -f 444.
+.
+NCPFS_NFS_NS 'Use NFS namespace if available' text
+Allows you to utilize NFS namespace on NetWare servers. It brings
+you case sensitive filenames. Say Y. You can disable it at
+mount-time with the `-N nfs' parameter of ncpmount.
+.
+NCPFS_OS2_NS 'Use LONG (OS/2) namespace if available' text
+Allows you to utilize OS2/LONG namespace on NetWare servers.
+Filenames in this namespace are limited to 255 characters, they are
+case insensitive, and case in names is preserved. Say Y. You can
+disable it at mount time with the -N os2 parameter of ncpmount.
+.
+NCPFS_SMALLDOS 'Lowercase DOS filenames on LONG namespace volume' text
+If you say Y here, every filename on a NetWare server volume using
+the OS2/LONG namespace and created under DOS or on a volume using
+DOS namespace will be converted to lowercase characters.
+Saying N here will give you these filenames in uppercase.
+
+This is only a cosmetic option since the OS2/LONG namespace is case
+insensitive. The only major reason for this option is backward
+compatibility when moving from DOS to OS2/LONG namespace support.
+Long filenames (created by Win95) will not be affected.
+
+This option does not solve the problem that filenames appear
+differently under Linux and under Windows, since Windows does an
+additional conversions on the client side. You can achieve similar
+effects by saying Y to "Allow using of Native Language Support"
+below.
+.
+NCPFS_NLS 'Use Native Language Support' text
+Allows you to use codepages and I/O charsets for file name
+translation between the server file system and input/output. This
+may be useful, if you want to access the server with other operating
+systems, e.g. Windows 95. See also NLS for more Information.
+
+To select codepages and I/O charsets use ncpfs-2.2.0.13 or newer.
+.
+NCPFS_EXTRAS 'Symbolic links and mode permission bits' text
+This enables the use of symbolic links and an execute permission
+bit on NCPFS. The file server need not have long name space or NFS
+name space loaded for these to work.
+
+To use the new attributes, it is recommended to use the flags
+'-f 600 -d 755' on the ncpmount command line.
+.
+#
+# Native language support configuration
+NLS_DEFAULT 'Default NLS Option' text
+The default NLS used when mounting file system. Currently, the valid
+values are:
+big5, cp437, cp737, cp775, cp850, cp852, cp855, cp857, cp860, cp861,
+cp862, cp863, cp864, cp865, cp866, cp869, cp874, cp932, cp936,
+cp949, cp950, euc-jp, euc-kr, gb2312, iso8859-1, iso8859-2, iso8859-3,
+iso8859-4, iso8859-5, iso8859-6, iso8859-7, iso8859-8, iso8859-9,
+iso8859-14, iso8859-15, koi8-r, sjis
+If you specify a wrong value, it will use the built-in NLS; compatible
+with iso8859-1.
+
+If unsure, specify it as "iso8859-1".
+.
+NLS_CODEPAGE_437 'Codepage 437 (United States, Canada)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored
+in so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage that is used in
+the United States and parts of Canada. This is recommended.
+.
+NLS_CODEPAGE_737 'Codepage 737 (Greek)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored
+in so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage that is used for
+Greek. If unsure, say N.
+.
+NLS_CODEPAGE_775 'Codepage 775 (Baltic Rim)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored
+in so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage that is used
+for the Baltic Rim Languages. If unsure, say N.
+.
+NLS_CODEPAGE_850 'Codepage 850 (Europe)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage that is used for
+much of Europe -- United Kingdom, Germany, Spain, Italy, and [add
+more countries here]. It has some characters useful to many European
+languages that are not part of the US codepage 437.
+
+If unsure, say Y.
+.
+NLS_CODEPAGE_852 'Codepage 852 (Central/Eastern Europe)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the Latin 2 codepage used by DOS
+for much of Central and Eastern Europe. It has all the required
+characters for these languages: Albanian, Croatian, Czech, English,
+Finnish, Hungarian, Irish, German, Polish, Romanian, Serbian (Latin
+transcription), Slovak, Slovenian, and Sorbian.
+.
+NLS_CODEPAGE_855 'Codepage 855 (Cyrillic)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for Cyrillic.
+.
+NLS_CODEPAGE_857 'Codepage 857 (Turkish)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for Turkish.
+.
+NLS_CODEPAGE_860 'Codepage 860 (Portuguese)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for Portuguese.
+.
+NLS_CODEPAGE_861 'Codepage 861 (Icelandic)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for Icelandic.
+.
+NLS_CODEPAGE_862 'Codepage 862 (Hebrew)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for Hebrew.
+.
+NLS_CODEPAGE_863 'Codepage 863 (Canadian French)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for Canadian
+French.
+.
+NLS_CODEPAGE_864 'Codepage 864 (Arabic)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for Arabic.
+.
+NLS_CODEPAGE_865 'Codepage 865 (Norwegian, Danish)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for the Nordic
+European countries.
+.
+NLS_CODEPAGE_866 'Codepage 866 (Cyrillic/Russian)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for
+Cyrillic/Russian.
+.
+NLS_CODEPAGE_869 'Codepage 869 (Greek)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for Greek.
+.
+NLS_CODEPAGE_936 'Simplified Chinese charset (CP936, GB2312)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for Simplified
+Chinese(GBK).
+.
+NLS_CODEPAGE_950 'Traditional Chinese charset (Big5)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for Traditional
+Chinese(Big5).
+.
+NLS_CODEPAGE_932 'Japanese charsets (Shift-JIS, EUC-JP)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for Shift-JIS
+or EUC-JP. To use EUC-JP, you can use 'euc-jp' as mount option or
+NLS Default value during kernel configuration , instead of 'cp932'
+.
+NLS_CODEPAGE_949 'Korean charset (CP949, EUC-KR)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for UHC.
+.
+NLS_CODEPAGE_874 'Thai charset (CP874, TIS-620)' text
+The Microsoft FAT file system family can deal with filenames in
+native language character sets. These character sets are stored in
+so-called DOS codepages. You need to include the appropriate
+codepage if you want to be able to read/write these filenames on
+DOS/Windows partitions correctly. This does apply to the filenames
+only, not to the file contents. You can include several codepages;
+say Y here if you want to include the DOS codepage for Thai.
+.
+NLS_ISO8859_8 'Hebrew charsets (ISO-8859-8, CP1255)' text
+If you want to display filenames with native language characters
+from the Microsoft FAT file system family or from JOLIET CDROMs
+correctly on the screen, you need to include the appropriate
+input/output character sets. Say Y here for ISO8859-8, the Hebrew
+character set.
+.
+NLS_CODEPAGE_1251 'Windows CP1251 (Bulgarian, Belarusian)'
+
+NLS_ISO8859_1 'NLS ISO 8859-1 (Latin 1; Western European Languages)'
+text
+If you want to display filenames with native language characters
+from the Microsoft FAT file system family or from JOLIET CDROMs
+correctly on the screen, you need to include the appropriate
+input/output character sets. Say Y here for the Latin 1 character
+set, which covers most West European languages such as Albanian,
+Catalan, Danish, Dutch, English, Faeroese, Finnish, French, German,
+Galician, Irish, Icelandic, Italian, Norwegian, Portuguese, Spanish,
+and Swedish. It is also the default for the US. If unsure, say Y.
+.
+NLS_ISO8859_2 'NLS ISO 8859-2 (Latin 2; Slavic/Central European Languages)'
+text
+If you want to display filenames with native language characters
+from the Microsoft FAT file system family or from JOLIET CDROMs
+correctly on the screen, you need to include the appropriate
+input/output character sets. Say Y here for the Latin 2 character
+set, which works for most Latin-written Slavic and Central European
+languages: Czech, German, Hungarian, Polish, Rumanian, Croatian,
+Slovak, Slovene.
+.
+NLS_ISO8859_3 'NLS ISO 8859-3 (Latin 3; Esperanto, Galician, Maltese, Turkish)'
+text
+If you want to display filenames with native language characters
+from the Microsoft FAT file system family or from JOLIET CDROMs
+correctly on the screen, you need to include the appropriate
+input/output character sets. Say Y here for the Latin 3 character
+set, which is popular with authors of Esperanto, Galician, Maltese,
+and Turkish.
+.
+NLS_ISO8859_4 'NLS ISO 8859-4 (Latin 4; old Baltic charset)' text
+If you want to display filenames with native language characters
+from the Microsoft FAT file system family or from JOLIET CDROMs
+correctly on the screen, you need to include the appropriate
+input/output character sets. Say Y here for the Latin 4 character
+set which introduces letters for Estonian, Latvian, and
+Lithuanian. It is an incomplete predecessor of Latin 6.
+.
+NLS_ISO8859_5 'NLS ISO 8859-5 (Cyrillic)' text
+If you want to display filenames with native language characters
+from the Microsoft FAT file system family or from JOLIET CDROMs
+correctly on the screen, you need to include the appropriate
+input/output character sets. Say Y here for ISO8859-5, a Cyrillic
+character set with which you can type Bulgarian, Byelorussian,
+Macedonian, Russian, Serbian, and Ukrainian. Note that the charset
+KOI8-R is preferred in Russia.
+.
+NLS_ISO8859_6 'NLS ISO 8859-6 (Arabic)' text
+If you want to display filenames with native language characters
+from the Microsoft FAT file system family or from JOLIET CDROMs
+correctly on the screen, you need to include the appropriate
+input/output character sets. Say Y here for ISO8859-6, the Arabic
+character set.
+.
+NLS_ISO8859_7 'NLS ISO 8859-7 (Modern Greek)' text
+If you want to display filenames with native language characters
+from the Microsoft FAT file system family or from JOLIET CDROMs
+correctly on the screen, you need to include the appropriate
+input/output character sets. Say Y here for ISO8859-7, the Modern
+Greek character set.
+.
+NLS_ISO8859_9 'NLS ISO 8859-9 (Latin 5; Turkish)' text
+If you want to display filenames with native language characters
+from the Microsoft FAT file system family or from JOLIET CDROMs
+correctly on the screen, you need to include the appropriate
+input/output character sets. Say Y here for the Latin 5 character
+set, and it replaces the rarely needed Icelandic letters in Latin 1
+with the Turkish ones. Useful in Turkey.
+.
+NLS_ISO8859_13 'NLS ISO 8859-13 (Latin 7; Baltic)'
+
+NLS_ISO8859_14 'NLS ISO 8859-14 (Latin 8; Celtic)' text
+If you want to display filenames with native language characters
+from the Microsoft FAT file system family or from JOLIET CDROMs
+correctly on the screen, you need to include the appropriate
+input/output character sets. Say Y here for the Latin 8 character
+set, which adds the last accented vowels for Welsh (aka Cymraeg)
+(and Manx Gaelic) hat were missing in Latin 1.
+http://linux.speech.cymru.org/ has further information.
+.
+NLS_ISO8859_15 'NLS ISO 8859-15 (Latin 9; Western European languages with Euro)'
+text
+If you want to display filenames with native language characters
+from the Microsoft FAT file system family or from JOLIET CDROMs
+correctly on the screen, you need to include the appropriate
+input/output character sets. Say Y here for the Latin 9 character
+set, which covers most West European languages such as Albanian,
+Catalan, Danish, Dutch, English, Estonian, Faeroese, Finnish,
+French, German, Galician, Irish, Icelandic, Italian, Norwegian,
+Portuguese, Spanish, and Swedish. Latin 9 is an update to
+Latin 1 (ISO 8859-1) that removes a handful of rarely used
+characters and instead adds support for Estonian, corrects the
+support for French and Finnish, and adds the new Euro character. If
+unsure, say Y.
+.
+NLS_KOI8_R 'NLS KOI8-R (Russian)' text
+If you want to display filenames with native language characters
+from the Microsoft FAT file system family or from JOLIET CDROMs
+correctly on the screen, you need to include the appropriate
+input/output character sets. Say Y here for the preferred Russian
+character set.
+.
+NLS_KOI8_U 'NLS KOI8-U/RU (Ukrainian, Belarusian)'
+
+NLS_UTF8 'NLS UTF8'
+
+#
+# Partition configuration
+#PARTITION_ADVANCED 'Advanced partition selection'
+ACORN_PARTITION 'Acorn partition support'
+
+#ACORN_PARTITION_CUMANA 'Cumana partition support'
+ACORN_PARTITION_ICS 'ICS partition support'
+
+ACORN_PARTITION_ADFS 'Native filecore partition support'
+
+ACORN_PARTITION_POWERTEC 'PowerTec partition support'
+
+ACORN_PARTITION_RISCIX 'RISCiX partition support'
+
+OSF_PARTITION 'Alpha OSF partition support' text
+Say Y here if you would like to use hard disks under Linux which
+were partitioned on an Alpha machine.
+.
+AMIGA_PARTITION 'Amiga partition table support'
+
+ATARI_PARTITION 'Atari partition table support'
+
+IBM_PARTITION 'IBM disk label and partition support'
+
+MAC_PARTITION 'Macintosh partition map support' text
+Say Y here if you would like to use hard disks under Linux which
+were partitioned on a Macintosh.
+.
+MSDOS_PARTITION 'PC BIOS (MSDOS partition tables) support' text
+Say Y here if you would like to use hard disks under Linux which
+were partitioned on an x86 PC (not necessarily by DOS).
+.
+BSD_DISKLABEL 'BSD disklabel (FreeBSD partition tables) support' text
+FreeBSD uses its own hard disk partition scheme on your PC. It
+requires only one entry in the primary partition table of your disk
+and manages it similarly to DOS extended partitions, putting in its
+first sector a new partition table in BSD disklabel format. Saying Y
+here allows you to read these disklabels and further mount FreeBSD
+partitions from within Linux if you have also said Y to "UFS
+file system support", above. If you don't know what all this is
+about, say N.
+.
+MINIX_SUBPARTITION 'Minix subpartition support' text
+Minix 2.0.0/2.0.2 subpartition table support for Linux.
+Say Y here if you want to mount and use Minix 2.0.0/2.0.2
+subpartitions.
+.
+SOLARIS_X86_PARTITION 'Solaris (x86) partition table support' text
+Like most systems, Solaris x86 uses its own hard disk partition
+table format, incompatible with all others. Saying Y here allows you
+to read these partition tables and further mount Solaris x86
+partitions from within Linux if you have also said Y to "UFS
+file system support", above.
+.
+UNIXWARE_DISKLABEL 'UnixWare slices support' text
+Like some systems, UnixWare uses its own slice table inside a
+partition (VTOC - Virtual Table of Contents). Its format is
+incompatible with all other OSes. Saying Y here allows you to read
+VTOC and further mount UnixWare partitions read-only from within
+Linux if you have also said Y to "UFS file system support" or
+"System V and Coherent file system support", above.
+
+This is mainly used to carry data from a UnixWare box to your
+Linux box via a removable medium like magneto-optical, ZIP or
+removable IDE drives. Note, however, that a good portable way to
+transport files and directories between unixes (and even other
+operating systems) is given by the tar program ("man tar" or
+preferably "info tar").
+
+If you don't know what all this is about, say N.
+.
+LDM_PARTITION 'Windows Logical Disk Manager (Dynamic Disk) support'
+text
+Say Y here if you would like to use hard disks under Linux which
+were partitioned using Windows 2000's or XP's Logical Disk Manager.
+They are also known as "Dynamic Disks".
+
+Windows 2000 introduced the concept of Dynamic Disks to get around
+the limitations of the PC's partitioning scheme. The Logical Disk
+Manager allows the user to repartion a disk and create spanned,
+mirrored, striped or RAID volumes, all without the need for
+rebooting.
+
+Normal partitions are now called Basic Disks under Windows 2000 and XP.
+
+Technical documentation to accompany this driver is available from:
+
+
+If unsure, say N.
+.
+LDM_DEBUG 'Windows LDM extra logging' text
+Say Y here if you would like LDM to log verbosely. This could be
+helpful if the driver doesn't work as expected and you'd like to
+report a bug.
+
+If unsure, say N.
+.
+SGI_PARTITION 'SGI partition support' text
+Say Y here if you would like to be able to read the hard disk
+partition table format used by SGI machines.
+.
+ULTRIX_PARTITION 'Ultrix partition table support' text
+Say Y here if you would like to be able to read the hard disk
+partition table format used by DEC (now Compaq) Ultrix machines.
+Otherwise, say N.
+.
+SUN_PARTITION 'Sun partition table support' text
+Like most systems, SunOS uses its own hard disk partition table
+format, incompatible with all others. Saying Y here allows you to
+read these partition tables and further mount SunOS partitions from
+within Linux if you have also said Y to "UFS file system support",
+above. This is mainly used to carry data from a SPARC under SunOS to
+your Linux box via a removable medium like magneto-optical or ZIP
+drives; note however that a good portable way to transport files and
+directories between unixes (and even other operating systems) is
+given by the tar program ("man tar" or preferably "info tar"). If
+you don't know what all this is about, say N.
+.
+#
+# Amateur Radio protocols and AX.25 device configuration
+HAMRADIO 'Amateur Radio support' text
+If you want to connect your Linux box to an amateur radio, answer Y
+here. You want to read http://www.tapr.org/tapr/html/pkthome.html
+and the HAM-HOWTO and the AX25-HOWTO, both available from
+http://www.linuxdoc.org/docs.html#howto .
+
+Note that the answer to this question won't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about amateur radio.
+.
+AX25 'Amateur Radio AX.25 Level 2 protocol' text
+This is the protocol used for computer communication over amateur
+radio. It is either used by itself for point-to-point links, or to
+carry other protocols such as tcp/ip. To use it, you need a device
+that connects your Linux box to your amateur radio. You can either
+use a low speed TNC (a Terminal Node Controller acts as a kind of
+modem connecting your computer's serial port to your radio's
+microphone input and speaker output) supporting the KISS protocol or
+one of the various SCC cards that are supported by the generic Z8530
+or the DMA SCC driver. Another option are the Baycom modem serial
+and parallel port hacks or the sound card modem (supported by their
+own drivers). If you say Y here, you also have to say Y to one of
+those drivers.
+
+Information about where to get supporting software for Linux amateur
+radio as well as information about how to configure an AX.25 port is
+contained in the AX25-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . You might also want to
+check out the file Documentation/networking/ax25.txt in the kernel
+source. More information about digital amateur radio in general is
+on the WWW at http://www.tapr.org/tapr/html/pkthome.html .
+
+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 ax25.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+AX25_DAMA_SLAVE 'AX.25 DAMA Slave support' text
+DAMA is a mechanism to prevent collisions when doing AX.25
+networking. A DAMA server (called "master") accepts incoming traffic
+from clients (called "slaves") and redistributes it to other slaves.
+If you say Y here, your Linux box will act as a DAMA slave; this is
+transparent in that you don't have to do any special DAMA
+configuration. (Linux cannot yet act as a DAMA server.) If unsure,
+say N.
+.
+#AX25_DAMA_MASTER 'AX.25 DAMA Master support'
+NETROM 'Amateur Radio NET/ROM support' text
+NET/ROM is a network layer protocol on top of AX.25 useful for
+routing.
+
+A comprehensive listing of all the software for Linux amateur radio
+users as well as information about how to configure an AX.25 port is
+contained in the AX25-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . You also might want to
+check out the file Documentation/networking/ax25.txt. More
+information about digital amateur radio in general is on the WWW at
+http://www.tapr.org/tapr/html/pkthome.html .
+
+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 netrom.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+ROSE 'Amateur Radio X.25 PLP (Rose)' text
+The Packet Layer Protocol (PLP) is a way to route packets over X.25
+connections in general and amateur radio AX.25 connections in
+particular, essentially an alternative to NET/ROM.
+
+A comprehensive listing of all the software for Linux amateur radio
+users as well as information about how to configure an AX.25 port is
+contained in the AX25-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . You also might want to
+check out the file Documentation/networking/ax25.txt. More
+information about digital amateur radio in general is on the WWW at
+http://www.tapr.org/tapr/html/pkthome.html .
+
+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 rose.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+#
+# IP configuration
+IP_MULTICAST 'IP multicasting' text
+This is code for addressing several networked computers at once,
+enlarging your kernel by about 2 KB. You need multicasting if you
+intend to participate in the MBONE, a high bandwidth network on top
+of the Internet which carries audio and video broadcasts. More
+information about the MBONE is on the WWW at
+http://www-itg.lbl.gov/mbone/ . Information about the multicast
+capabilities of the various network cards is contained in
+Documentation/networking/multicast.txt. For most people, it's safe
+to say N.
+.
+IP_ADVANCED_ROUTER 'Advanced router' text
+If you intend to run your Linux box mostly as a router, i.e. as a
+computer that forwards and redistributes network packets, say Y; you
+will then be presented with several options that allow more precise
+control about the routing process.
+
+The answer to this question won't directly affect the kernel:
+answering N will just cause this configure script to skip all the
+questions about advanced routing.
+
+Note that your box can only act as a router if you enable IP
+forwarding in your kernel; you can do that by saying Y to "/proc
+file system support" and "Sysctl support" below and executing the
+line
+
+ echo "1" > /proc/sys/net/ipv4/ip_forward
+
+at boot time after the /proc file system has been mounted.
+
+If you turn on IP forwarding, you will also get the rp_filter, which
+automatically rejects incoming packets if the routing table entry
+for their source address doesn't match the network interface they're
+arriving on. This has security advantages because it prevents the
+so-called IP spoofing, however it can pose problems if you use
+asymmetric routing (packets from you to a host take a different path
+than packets from that host to you) or if you operate a non-routing
+host which has several IP addresses on different interfaces. To turn
+rp_filter off use:
+
+ echo 0 > /proc/sys/net/ipv4/conf//rp_filter
+or
+ echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
+
+If unsure, say N here.
+.
+IP_MULTIPLE_TABLES 'Policy routing' text
+Normally, a router decides what to do with a received packet based
+solely on the packet's final destination address. If you say Y here,
+the Linux router will also be able to take the packet's source
+address into account. Furthermore, if you also say Y to "IP: use TOS
+value as routing key" below, the TOS (Type-Of-Service) field of the
+packet can be used for routing decisions as well. In addition, if
+you say Y here and to "IP: fast network address translation" below,
+the router will also be able to modify source and destination
+addresses of forwarded packets.
+
+If you are interested in this, please see the preliminary
+documentation at http://www.compendium.com.ar/policy-routing.txt and
+ftp://post.tepkom.ru/pub/vol2/Linux/docs/advanced-routing.tex . You
+will need supporting software from ftp://ftp.inr.ac.ru/ip-routing/
+
+If unsure, say N.
+.
+IP_ROUTE_FWMARK 'Use netfilter MARK value as routing key' text
+If you say Y here, you will be able to specify different routes for
+packets with different mark values (see iptables(8), MARK target).
+.
+IP_ROUTE_NAT 'Fast network address translation' text
+If you say Y here, your router will be able to modify source and
+destination addresses of packets that pass through it, in a manner
+you specify. General information about Network Address Translation
+can be gotten from the document
+http://www.csn.tu-chemnitz.de/~mha/linux-ip-nat/diplom/nat.html
+.
+IP_ROUTE_MULTIPATH 'Equal cost multipath' text
+Normally, the routing tables specify a single action to be taken in
+a deterministic manner for a given packet. If you say Y here
+however, it becomes possible to attach several actions to a packet
+pattern, in effect specifying several alternative paths to travel
+for those packets. The router considers all these paths to be of
+equal "cost" and chooses one of them in a non-deterministic fashion
+if a matching packet arrives.
+.
+IP_ROUTE_TOS 'Use TOS value as routing key' text
+The header of every IP packet carries a TOS (Type Of Service) value
+with which the packet requests a certain treatment, e.g. low latency
+(for interactive traffic), high throughput, or high reliability. If
+you say Y here, you will be able to specify different routes for
+packets with different TOS values.
+.
+IP_ROUTE_VERBOSE 'Verbose route monitoring' text
+If you say Y here, which is recommended, then the kernel will print
+verbose messages regarding the routing, for example warnings about
+received packets which look strange and could be evidence of an
+attack or a misconfigured system somewhere. The information is
+handled by the klogd daemon which is responsible for kernel messages
+("man klogd").
+.
+IP_ROUTE_LARGE_TABLES 'Large routing tables' text
+If you have routing zones that grow to more than about 64 entries,
+you may want to say Y here to speed up the routing process.
+.
+IP_PNP 'Kernel level IP autoconfiguration' text
+This enables automatic configuration of IP addresses of devices and
+of the routing table during kernel boot, based on either information
+supplied on the kernel command line or by BOOTP or RARP protocols.
+You need to say Y only for diskless machines requiring network
+access to boot (in which case you want to say Y to "Root file system
+on NFS" as well), because all other machines configure the network
+in their startup scripts.
+.
+IP_PNP_DHCP 'DHCP support'
+
+IP_PNP_BOOTP 'BOOTP support' text
+If you want your Linux box to mount its whole root file system (the
+one containing the directory /) from some other computer over the
+net via NFS and you want the IP address of your computer to be
+discovered automatically at boot time using the BOOTP protocol (a
+special protocol designed for doing this job), say Y here. In case
+the boot ROM of your network card was designed for booting Linux and
+does BOOTP itself, providing all necessary information on the kernel
+command line, you can say N here. If unsure, say Y. Note that if you
+want to use BOOTP, a BOOTP server must be operating on your network.
+Read Documentation/nfsroot.txt for details.
+.
+IP_PNP_RARP 'RARP support' text
+If you want your Linux box to mount its whole root file system (the
+one containing the directory /) from some other computer over the
+net via NFS and you want the IP address of your computer to be
+discovered automatically at boot time using the RARP protocol (an
+older protocol which is being obsoleted by BOOTP and DHCP), say Y
+here. Note that if you want to use RARP, a RARP server must be
+operating on your network. Read Documentation/nfsroot.txt for
+details.
+.
+#IP_PNP_ARP 'ARP support'
+NET_IPIP 'IP tunneling' text
+Tunneling means encapsulating data of one protocol type within
+another protocol and sending it over a channel that understands the
+encapsulating protocol. This particular tunneling driver implements
+encapsulation of IP within IP, which sounds kind of pointless, but
+can be useful if you want to make your (or some other) machine
+appear on a different network than it physically is, or to use
+mobile-IP facilities (allowing laptops to seamlessly move between
+networks without changing their IP addresses; check out
+http://anchor.cs.binghamton.edu/~mobileip/LJ/index.html ).
+
+Saying Y to this option will produce two modules ( = code which can
+be inserted in and removed from the running kernel whenever you
+want). Most people won't need this and can say N.
+.
+NET_IPGRE 'GRE tunnels over IP' text
+Tunneling means encapsulating data of one protocol type within
+another protocol and sending it over a channel that understands the
+encapsulating protocol. This particular tunneling driver implements
+GRE (Generic Routing Encapsulation) and at this time allows
+encapsulating of IPv4 or IPv6 over existing IPv4 infrastructure.
+This driver is useful if the other endpoint is a Cisco router: Cisco
+likes GRE much better than the other Linux tunneling driver ("IP:
+tunneling" above). In addition, GRE allows multicast redistribution
+through the tunnel.
+.
+NET_IPGRE_BROADCAST 'Broadcast GRE over IP' text
+One application of GRE/IP is to construct a broadcast WAN (Wide Area
+Network), which looks like a normal Ethernet LAN (Local Area
+Network), but can be distributed all over the Internet. If you want
+to do that, say Y here and to "IP: multicast routing" below.
+.
+IP_MROUTE 'IP multicast routing' text
+This is used if you want your machine to act as a router for IP
+packets that have several destination addresses. It is needed on the
+MBONE, a high bandwidth network on top of the Internet which carries
+audio and video broadcasts. In order to do that, you would most
+likely run the program mrouted. Information about the multicast
+capabilities of the various network cards is contained in
+Documentation/networking/multicast.txt. If you haven't heard about
+it, you don't need it.
+.
+IP_PIMSM_V1 'PIM-SM version 1 support' text
+Kernel side support for Sparse Mode PIM (Protocol Independent
+Multicast) version 1. This multicast routing protocol is used widely
+because Cisco supports it. You need special software to use it
+(pimd-v1). Please see http://netweb.usc.edu/pim/ for more
+information about PIM.
+
+Say Y if you want to use PIM-SM v1. Note that you can say N here if
+you just want to use Dense Mode PIM.
+.
+IP_PIMSM_V2 'PIM-SM version 2 support' text
+Kernel side support for Sparse Mode PIM version 2. In order to use
+this, you need an experimental routing daemon supporting it (pimd or
+gated-5). This routing protocol is not used widely, so say N unless
+you want to play with it.
+.
+ARPD 'ARP daemon support' text
+Normally, the kernel maintains an internal cache which maps IP
+addresses to hardware addresses on the local network, so that
+Ethernet/Token Ring/ etc. frames are sent to the proper address on
+the physical networking layer. For small networks having a few
+hundred directly connected hosts or less, keeping this address
+resolution (ARP) cache inside the kernel works well. However,
+maintaining an internal ARP cache does not work well for very large
+switched networks, and will use a lot of kernel memory if TCP/IP
+connections are made to many machines on the network.
+
+If you say Y here, the kernel's internal ARP cache will never grow
+to more than 256 entries (the oldest entries are expired in a LIFO
+manner) and communication will be attempted with the user space ARP
+daemon arpd. Arpd then answers the address resolution request either
+from its own cache or by asking the net.
+
+This code is experimental and also obsolete. If you want to use it,
+you need to find a version of the daemon arpd on the net somewhere,
+and you should also say Y to "Kernel/User network link driver",
+below. If unsure, say N.
+.
+INET_ECN 'TCP Explicit Congestion Notification support' text
+Explicit Congestion Notification (ECN) allows routers to notify
+clients about network congestion, resulting in fewer dropped packets
+and increased network performance. This option adds ECN support to the
+Linux kernel, as well as a sysctl (/proc/sys/net/ipv4/tcp_ecn) which
+allows ECN support to be disabled at runtime.
+
+Note that, on the Internet, there are many broken firewalls which
+refuse connections from ECN-enabled machines, and it may be a while
+before these firewalls are fixed. Until then, to access a site behind
+such a firewall (some of which are major sites, at the time of this
+writing) you will have to disable this option, either by saying N now
+or by using the sysctl.
+
+If in doubt, say N.
+.
+SYN_COOKIES 'SYN flood protection' text
+Normal TCP/IP networking is open to an attack known as "SYN
+flooding". This denial-of-service attack prevents legitimate remote
+users from being able to connect to your computer during an ongoing
+attack and requires very little work from the attacker, who can
+operate from anywhere on the Internet.
+
+SYN cookies provide protection against this type of attack. If you
+say Y here, the TCP/IP stack will use a cryptographic challenge
+protocol known as "SYN cookies" to enable legitimate users to
+continue to connect, even when your machine is under attack. There
+is no need for the legitimate users to change their TCP/IP software;
+SYN cookies work transparently to them. For technical information
+about SYN cookies, check out
+ftp://koobera.math.uic.edu/syncookies.html .
+
+If you are SYN flooded, the source address reported by the kernel is
+likely to have been forged by the attacker; it is only reported as
+an aid in tracing the packets to their actual source and should not
+be taken as absolute truth.
+
+SYN cookies may prevent correct error reporting on clients when the
+server is really overloaded. If this happens frequently better turn
+them off.
+
+If you say Y here, note that SYN cookies aren't enabled by default;
+you can enable them by saying Y to "/proc file system support" and
+"Sysctl support" below and executing the command
+
+ echo 1 >/proc/sys/net/ipv4/tcp_syncookies
+
+at boot time after the /proc file system has been mounted.
+
+If unsure, say Y.
+.
+#SPX 'SPX networking'
+#
+# IPX configuration
+IPX_INTERN 'Full internal IPX network' text
+Every IPX network has an address that identifies it. Sometimes it is
+useful to give an IPX "network" address to your Linux box as well
+(for example if your box is acting as a file server for different
+IPX networks: it will then be accessible from everywhere using the
+same address). The way this is done is to create a virtual internal
+"network" inside your box and to assign an IPX address to this
+network. Say Y here if you want to do this; read the IPX-HOWTO at
+http://www.linuxdoc.org/docs.html#howto for details.
+
+The full internal IPX network enables you to allocate sockets on
+different virtual nodes of the internal network. This is done by
+evaluating the field sipx_node of the socket address given to the
+bind call. So applications should always initialize the node field
+to 0 when binding a socket on the primary network. In this case the
+socket is assigned the default node that has been given to the
+kernel when the internal network was created. By enabling the full
+internal IPX network the cross-forwarding of packets targeted at
+'special' sockets to sockets listening on the primary network is
+disabled. This might break existing applications, especially RIP/SAP
+daemons. A RIP/SAP daemon that works well with the full internal net
+can be found on ftp://ftp.gwdg.de/pub/linux/misc/ncpfs .
+
+If you don't know what you are doing, say N.
+.
+#
+# Network configuration
+PACKET 'Packet socket' text
+The Packet protocol is used by applications which communicate
+directly with network devices without an intermediate network
+protocol implemented in the kernel, e.g. tcpdump. If you want them
+to work, choose Y.
+
+This driver is also available as a module called af_packet.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 you use modprobe or
+kmod, you may also want to add "alias net-pf-17 af_packet" to
+/etc/modules.conf.
+
+If unsure, say Y.
+.
+PACKET_MMAP 'Packet socket: mmapped IO' text
+If you say Y here, the Packet protocol driver will use an IO
+mechanism that results in faster communication.
+
+If unsure, say N.
+.
+NETLINK 'Kernel/User network link driver' text
+This driver allows for two-way communication between the kernel and
+user processes. It does so by creating a new socket family, PF_NETLINK.
+Over this socket, the kernel can send and receive datagrams carrying
+information. It is documented on many systems in netlink(7), a HOWTO is
+provided as well, for example on
+http://snafu.freedom.org/linux2.2/docs/netlink-HOWTO.html
+
+So far, the kernel uses this feature to publish some network related
+information if you say Y to "Routing messages", below. You also need
+to say Y here if you want to use arpd, a daemon that helps keep the
+internal ARP cache (a mapping between IP addresses and hardware
+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.
+
+If unsure, say Y.
+.
+RTNETLINK 'Routing messages' text
+If you say Y here, user space programs can receive some network
+related routing information over the netlink. 'rtmon', supplied
+with the iproute2 package (ftp://ftp.inr.ac.ru), can read and
+interpret this data. Information sent to the kernel over this link
+is ignored.
+.
+NETLINK_DEV 'Netlink device emulation' text
+This option will be removed soon. Any programs that want to use
+character special nodes like /dev/tap0 or /dev/route (all with major
+number 36) need this option, and need to be rewritten soon to use
+the real netlink socket.
+This is a backward compatibility option, choose Y for now.
+.
+NETFILTER 'Network packet filtering (replaces ipchains)' text
+Netfilter is a framework for filtering and mangling network packets
+that pass through your Linux box.
+
+The most common use of packet filtering is to run your Linux box as
+a firewall protecting a local network from the Internet. The type of
+firewall provided by this kernel support is called a "packet
+filter", which means that it can reject individual network packets
+based on type, source, destination etc. The other kind of firewall,
+a "proxy-based" one, is more secure but more intrusive and more
+bothersome to set up; it inspects the network traffic much more
+closely, modifies it and has knowledge about the higher level
+protocols, which a packet filter lacks. Moreover, proxy-based
+firewalls often require changes to the programs running on the local
+clients. Proxy-based firewalls don't need support by the kernel, but
+they are often combined with a packet filter, which only works if
+you say Y here.
+
+You should also say Y here if you intend to use your Linux box as
+the gateway to the Internet for a local network of machines without
+globally valid IP addresses. This is called "masquerading": if one
+of the computers on your local network wants to send something to
+the outside, your box can "masquerade" as that computer, i.e. it
+forwards the traffic to the intended outside destination, but
+modifies the packets to make it look like they came from the
+firewall box itself. It works both ways: if the outside host
+replies, the Linux box will silently forward the traffic to the
+correct local computer. This way, the computers on your local net
+are completely invisible to the outside world, even though they can
+reach the outside and can receive replies. It is even possible to
+run globally visible servers from within a masqueraded local network
+using a mechanism called portforwarding. Masquerading is also often
+called NAT (Network Address Translation).
+
+Another use of Netfilter is in transparent proxying: if a machine on
+the local network tries to connect to an outside host, your Linux
+box can transparently forward the traffic to a local server,
+typically a caching proxy server.
+
+Various modules exist for netfilter which replace the previous
+masquerading (ipmasqadm), packet filtering (ipchains), transparent
+proxying, and portforwarding mechanisms. Please see
+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.
+
+Chances are that you should say Y here if you compile a kernel which
+will run as a router and N for regular hosts. If unsure, say N.
+.
+NETFILTER_DEBUG 'Network packet filtering debugging' text
+You can say Y here if you want to get additional messages useful in
+debugging the netfilter code.
+.
+FILTER 'Socket filtering' text
+The Linux Socket Filter is derived from the Berkeley Packet Filter.
+If you say Y here, user-space programs can attach a filter to any
+socket and thereby tell the kernel that it should allow or disallow
+certain types of data to get through the socket. Linux Socket
+Filtering works on all socket types except TCP for now. See the text
+file Documentation/networking/filter.txt for more information.
+
+You need to say Y here if you want to use PPP packet filtering
+(see the CONFIG_PPP_FILTER option below).
+
+If unsure, say N.
+.
+UNIX 'Unix domain sockets' text
+If you say Y here, you will include support for Unix domain sockets;
+sockets are the standard Unix mechanism for establishing and
+accessing network connections. Many commonly used programs such as
+the X Window system and syslog use these sockets even if your
+machine is not connected to any network. Unless you are working on
+an embedded system or something similar, you therefore definitely
+want to say Y here.
+
+However, the socket support is also available 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. The module will be called
+unix.o. If you try building this as a module and you have said Y to
+"Kernel module loader support" above, be sure to add 'alias net-pf-1
+unix' to your /etc/modules.conf file. Note that several important
+services won't work correctly if you say M here and then neglect to
+load the module.
+
+Say Y unless you know what you are doing.
+.
+INET 'TCP/IP networking' text
+These are the protocols used on the Internet and on most local
+Ethernets. It is highly recommended to say Y here (this will enlarge
+your kernel by about 144 KB), since some programs (e.g. the X window
+system) use TCP/IP even if your machine is not connected to any
+other computer. You will get the so-called loopback device which
+allows you to ping yourself (great fun, that!).
+
+For an excellent introduction to Linux networking, please read the
+NET-3-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+This option is also necessary if you want to use the full power of
+term (term is a program which gives you almost full Internet
+connectivity if you have a regular dial up shell account on some
+Internet connected Unix computer; for more information, read
+http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html ).
+
+If you say Y here and also to "/proc file system support" and
+"Sysctl support" below, you can change various aspects of the
+behavior of the TCP/IP code by writing to the (virtual) files in
+/proc/sys/net/ipv4/*; the options are explained in the file
+Documentation/networking/ip-sysctl.txt.
+
+Short answer: say Y.
+.
+IPV6 'The IPv6 protocol' text
+This is experimental support for the next version of the Internet
+Protocol: IP version 6 (also called IPng "IP next generation").
+Features of this new protocol include: expanded address space,
+authentication and privacy, and seamless interoperability with the
+current version of IP (IP version 4). For general information about
+IPv6, see http://playground.sun.com/pub/ipng/html/ipng-main.html ;
+for specific information about IPv6 under Linux read the HOWTO at
+http://www.bieringer.de/linux/IPv6/ and the file net/ipv6/README in
+the kernel source.
+
+If you want to use IPv6, please upgrade to the newest net-tools as
+given in Documentation/Changes. You will still be able to do regular
+IPv4 networking as well.
+
+This protocol support 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 ipv6.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+
+It is safe to say N here for now.
+.
+ATM 'Asynchronous Transfer Mode (ATM)' text
+ATM is a high-speed networking technology for Local Area Networks
+and Wide Area Networks. It uses a fixed packet size and is
+connection oriented, allowing for the negotiation of minimum
+bandwidth requirements.
+
+In order to participate in an ATM network, your Linux box needs an
+ATM networking card. If you have that, say Y here and to the driver
+of your ATM card below.
+
+Note that you need a set of user-space programs to actually make use
+of ATM. See the file Documentation/networking/atm.txt for further
+details.
+.
+ATM_CLIP 'Classical IP over ATM' text
+Classical IP over ATM for PVCs and SVCs, supporting InARP and
+ATMARP. If you want to communication with other IP hosts on your ATM
+network, you will typically either say Y here or to "LAN Emulation
+(LANE)" below.
+.
+ATM_CLIP_NO_ICMP 'Do NOT send ICMP if no neighbour' text
+Normally, an "ICMP host unreachable" message is sent if a neighbour
+cannot be reached because there is no VC to it in the kernel's
+ATMARP table. This may cause problems when ATMARP table entries are
+briefly removed during revalidation. If you say Y here, packets to
+such neighbours are silently discarded instead.
+.
+ATM_LANE 'LAN Emulation (LANE) support' text
+LAN Emulation emulates services of existing LANs across an ATM
+network. Besides operating as a normal ATM end station client, Linux
+LANE client can also act as an proxy client bridging packets between
+ELAN and Ethernet segments. You need LANE if you want to try MPOA.
+.
+ATM_MPOA 'Multi-Protocol Over ATM (MPOA) support' text
+Multi-Protocol Over ATM allows ATM edge devices such as routers,
+bridges and ATM attached hosts establish direct ATM VCs across
+subnetwork boundaries. These shortcut connections bypass routers
+enhancing overall network performance.
+.
+IPX 'The IPX protocol' text
+This is support for the Novell networking protocol, IPX, commonly
+used for local networks of Windows machines. You need it if you want
+to access Novell NetWare file or print servers using the Linux
+Novell client ncpfs (available from
+ftp://metalab.unc.edu/pub/Linux/system/filesystems/ ) or from within
+the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto ). In order to do the
+former, you'll also have to say Y to "NCP file system support",
+below.
+
+IPX is similar in scope to IP, while SPX, which runs on top of IPX,
+is similar to TCP. There is also experimental support for SPX in
+Linux (see "SPX networking", below).
+
+To turn your Linux box into a fully featured NetWare file server and
+IPX router, say Y here and fetch either lwared from
+ftp://metalab.unc.edu/pub/Linux/system/network/daemons/ or mars_nwe
+from ftp://ftp.gwdg.de/pub/linux/misc/ncpfs . For more information,
+read the IPX-HOWTO available from
+http://www.linuxdoc.org/docs.html#howto .
+
+General information about how to connect Linux, Windows machines and
+Macs is on the WWW at http://www.eats.com/linux_mac_win.html .
+
+The IPX driver would enlarge your kernel by about 16 KB. 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 ipx.o. If you want to compile it as a module, say M here
+and read Documentation/modules.txt. Unless you want to integrate
+your Linux box with a local Novell network, say N.
+.
+ATALK 'AppleTalk protocol support' text
+AppleTalk is the way Apple computers speak to each other on a
+network. If your Linux box is connected to such a network and you
+want to join the conversation, say Y. You will need to use the
+netatalk package so that your Linux box can act as a print and file
+server for Macs as well as access AppleTalk printers. Check out
+http://www.zettabyte.net/netatalk/ on the WWW for details. EtherTalk
+is the name used for AppleTalk over Ethernet and the cheaper and
+slower LocalTalk is AppleTalk over a proprietary Apple network using
+serial links. EtherTalk and LocalTalk are fully supported by Linux.
+
+General information about how to connect Linux, Windows machines and
+Macs is on the WWW at http://www.eats.com/linux_mac_win.html . The
+NET-3-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , contains valuable
+information as well.
+
+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 is called appletalk.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt. You almost
+certainly want to compile it as a module so you can restart your
+AppleTalk stack without rebooting your machine. I hear that the
+GNU boycott of Apple is over, so even politically correct people
+are allowed to say Y here.
+.
+APPLETALK 'AppleTalk interfaces support' text
+AppleTalk is the way Apple computers speak to each other on a
+network. If your Linux box is connected to such a network and you
+want to join the conversation, say Y.
+.
+DECNET 'DECnet networking' text
+The DECnet networking protocol was used in many products made by
+Digital (now Compaq). It provides reliable stream and sequenced
+packet communications over which run a variety of services similar
+to those which run over TCP/IP.
+
+To find some tools to use with the kernel layer support, please
+look at Patrick Caulfield's web site:
+http://linux.dreamtime.org/decnet/
+
+More detailed documentation is available in the
+Documentation/networking/decnet.txt file.
+
+Be sure to say Y to "/proc file system support" and "Sysctl support"
+below when using DECnet, since you will need sysctl support to aid
+in configuration at run time.
+
+The DECnet code is also available as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module is called decnet.o.
+.
+X25 'CCITT X.25 Packet Layer' text
+X.25 is a set of standardized network protocols, similar in scope to
+frame relay; the one physical line from your box to the X.25 network
+entry point can carry several logical point-to-point connections
+(called "virtual circuits") to other computers connected to the X.25
+network. Governments, banks, and other organizations tend to use it
+to connect to each other or to form Wide Area Networks (WANs). Many
+countries have public X.25 networks. X.25 consists of two
+protocols: the higher level Packet Layer Protocol (PLP) (say Y here
+if you want that) and the lower level data link layer protocol LAPB
+(say Y to "LAPB Data Link Driver" below if you want that).
+
+You can read more about X.25 at http://www.sangoma.com/x25.htm and
+http://www.cisco.com/univercd/data/doc/software/11_0/rpcg/cx25.htm .
+Information about X.25 for Linux is contained in the files
+Documentation/networking/x25.txt and
+Documentation/networking/x25-iface.txt.
+
+One connects to an X.25 network either with a dedicated network card
+using the X.21 protocol (not yet supported by Linux) or one can do
+X.25 over a standard telephone line using an ordinary modem (say Y
+to "X.25 async driver" below) or over Ethernet using an ordinary
+Ethernet card and either the 802.2 LLC protocol (say Y to "802.2
+LLC" below) or LAPB over Ethernet (say Y to "LAPB Data Link Driver"
+and "LAPB over Ethernet driver" below).
+
+If you want 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 x25.o. If unsure, say N.
+.
+LAPB 'LAPB Data Link Driver' text
+Link Access Procedure, Balanced (LAPB) is the data link layer (i.e.
+the lower) part of the X.25 protocol. It offers a reliable
+connection service to exchange data frames with one other host, and
+it is used to transport higher level protocols (mostly X.25 Packet
+Layer, the higher part of X.25, but others are possible as well).
+Usually, LAPB is used with specialized X.21 network cards, but Linux
+currently supports LAPB only over Ethernet connections. If you want
+to use LAPB connections over Ethernet, say Y here and to "LAPB over
+Ethernet driver" below. Read
+Documentation/networking/lapb-module.txt for technical details.
+
+If you want to compile this driver as a module though ( = 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 lapb.o. If unsure, say N.
+.
+BRIDGE '802.1d Ethernet Bridging' text
+If you say Y here, then your Linux box will be able to act as an
+Ethernet bridge, which means that the different Ethernet segments it
+is connected to will appear as one Ethernet to the participants.
+Several such bridges can work together to create even larger
+networks of Ethernets using the IEEE 802.1 spanning tree algorithm.
+As this is a standard, Linux bridges will cooperate properly with
+other third party bridge products.
+
+In order to use the ethernet bridge, you'll need the bridge
+configuration tools; see Documentation/networking/bridge.txt for
+location. Please read the Bridge mini-HOWTO for more information.
+
+Note that if your box acts as a bridge, it probably contains several
+Ethernet devices, but the kernel is not able to recognize more than
+one at boot time without help; for details read the Ethernet-HOWTO,
+available from in http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this code 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 bridge.o.
+
+If unsure, say N.
+.
+LLC '802.2 LLC' text
+This is a Logical Link Layer protocol used for X.25 connections over
+Ethernet, using ordinary Ethernet cards.
+.
+#NETBEUI 'Netbeui'
+NET_DIVERT 'Frame Diverter' text
+The Frame Diverter allows you to divert packets from the
+network, that are not aimed at the interface receiving it (in
+promisc. mode). Typically, a Linux box setup as an ethernet bridge
+with the Frames Diverter on, can do some *really* transparent www
+caching using a Squid proxy for example.
+
+This is very useful when you don't want to change your router's
+config (or if you simply don't have access to it).
+
+The other possible usages of diverting Ethernet Frames are numberous:
+ - reroute smtp traffic to another interface
+ - traffic-shape certain network streams
+ - transparently proxy smtp connections
+ - etc...
+
+For more informations, please refer to:
+ http://www.freshmeat.net/projects/etherdivert
+ http://perso.wanadoo.fr/magpie/EtherDivert.html
+
+If unsure, say N
+.
+ECONET 'Acorn Econet/AUN protocols' text
+Econet is a fairly old and slow networking protocol mainly used by
+Acorn computers to access file and print servers. It uses native
+Econet network cards. AUN is an implementation of the higher level
+parts of Econet that runs over ordinary Ethernet connections, on
+top of the UDP packet protocol, which in turn runs on top of the
+Internet protocol IP.
+
+If you say Y here, you can choose with the next two options whether
+to send Econet/AUN traffic over a UDP Ethernet connection or over
+a native Econet network card.
+
+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 econet.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+ECONET_AUNUDP 'AUN over UDP' text
+Say Y here if you want to send Econet/AUN traffic over a UDP
+connection (UDP is a packet based protocol that runs on top of the
+Internet protocol IP) using an ordinary Ethernet network card.
+.
+ECONET_NATIVE 'Native Econet' text
+Say Y here if you have a native Econet network card installed in
+your computer.
+.
+WAN_ROUTER 'WAN router' text
+Wide Area Networks (WANs), such as X.25, frame relay and leased
+lines, are used to interconnect Local Area Networks (LANs) over vast
+distances with data transfer rates significantly higher than those
+achievable with commonly used asynchronous modem connections.
+Usually, a quite expensive external device called a `WAN router' is
+needed to connect to a WAN.
+
+As an alternative, WAN routing can be built into the Linux kernel.
+With relatively inexpensive WAN interface cards available on the
+market, a perfectly usable router can be built for less than half
+the price of an external router. If you have one of those cards and
+wish to use your Linux box as a WAN router, say Y here and also to
+the WAN driver for your card, below. You will then need the
+wan-tools package which is available from ftp://ftp.sangoma.com .
+Read Documentation/networking/wan-router.txt for more information.
+
+The WAN routing support is also available as a module called
+wanrouter.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 N.
+.
+NET_FASTROUTE 'Fast switching (read help!)' text
+Saying Y here enables direct NIC-to-NIC (NIC = Network Interface
+Card) data transfers on the local network, which is fast.
+
+IMPORTANT NOTE: This option is NOT COMPATIBLE with "Network packet
+filtering" (CONFIG_NETFILTER). Say N here if you say Y there.
+
+However, it will work with all options in the "IP: advanced router"
+section (except for "IP: use TOS value as routing key" and
+"IP: use FWMARK value as routing key").
+
+At the moment, few devices support fast switching (tulip is one of
+them, a modified 8390 driver can be found at
+ftp://ftp.inr.ac.ru/ip-routing/fastroute/fastroute-8390.tar.gz ).
+
+If unsure, say N.
+.
+NET_HW_FLOWCONTROL 'Forwarding between high speed interfaces' text
+This option enables NIC (Network Interface Card) hardware throttling
+during periods of extremal congestion. At the moment only a couple
+of device drivers support it (really only one -- tulip, a modified
+8390 driver can be found at
+ftp://ftp.inr.ac.ru/ip-routing/fastroute/fastroute-8390.tar.gz ).
+
+Really, this option is applicable to any machine attached to a fast
+enough network, and even a 10 Mb NIC is able to kill a not very slow
+box, such as a 120MHz Pentium.
+
+However, do not say Y here if you did not experience any serious
+problems.
+.
+VLAN_8021Q '802.1Q VLAN Support'
+
+NET_SCHED 'QoS and/or fair queueing' text
+When the kernel has several packets to send out over a network
+device, it has to decide which ones to send first, which ones to
+delay, and which ones to drop. This is the job of the packet
+scheduler, and several different algorithms for how to do this
+"fairly" have been proposed.
+
+If you say N here, you will get the standard packet scheduler, which
+is a FIFO (first come, first served). If you say Y here, you will be
+able to choose from among several alternative algorithms which can
+then be attached to different network devices. This is useful for
+example if some of your network devices are real time devices that
+need a certain minimum data flow rate, or if you need to limit the
+maximum data flow rate for traffic which matches specified criteria.
+This code is considered to be experimental.
+
+To administer these schedulers, you'll need the user-level utilities
+from the package iproute2+tc at ftp://ftp.inr.ac.ru/ip-routing/ .
+That package also contains some documentation; for more, check out
+http://snafu.freedom.org/linux2.2/iproute-notes.html .
+
+This Quality of Service (QoS) support will enable you to use
+Differentiated Services (diffserv) and Resource Reservation Protocol
+(RSVP) on your Linux router if you also say Y to "QoS support",
+"Packet classifier API" and to some classifiers below. Documentation
+and software is at http://icawww1.epfl.ch/linux-diffserv/ .
+
+If you say Y here and to "/proc file system" below, you will be able
+to read status information about packet schedulers from the file
+/proc/net/psched.
+
+The available schedulers are listed in the following questions; you
+can say Y to as many as you like. If unsure, say N now.
+.
+#NET_PROFILE 'Network code profiler'
+PPPOATM 'PPP over ATM'
+
+#
+# IPv4 filtering configuration
+IP_NF_CONNTRACK 'Connection tracking (required for masq/NAT)' text
+Connection tracking keeps a record of what packets have passed
+through your machine, in order to figure out how they are related
+into connections.
+
+This is required to do Masquerading or other kinds of Network
+Address Translation (except for Fast NAT). It can also be used to
+enhance packet filtering (see `Connection state match support'
+below).
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_FTP 'FTP protocol support' text
+Tracking FTP connections is problematic: special helpers are
+required for tracking them, and doing masquerading and other forms
+of Network Address Translation on them.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `Y'.
+.
+IP_NF_IRC 'IRC protocol support' text
+There is a commonly-used extension to IRC called
+Direct Client-to-Client Protocol (DCC). This enables users to send
+files to each other, and also chat to each other without the need
+of a server. DCC Sending is used anywhere you send files over IRC,
+and DCC Chat is most commonly used by Eggdrop bots. If you are
+using NAT, this extension will enable you to send files and initiate
+chats. Note that you do NOT need this extension to get files or
+have others initiate chats, or everything else in IRC.
+
+If you want to compile it as a module, say 'M' here and read
+Documentation/modules.txt. If unsure, say 'N'.
+.
+IP_NF_QUEUE 'User space queueing via NETLINK' text
+Netfilter has the ability to queue packets to user space: the
+netlink device can be used to access them using this driver.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_IPTABLES 'IP tables support (required for filtering/masq/NAT)'
+text
+iptables is a general, extensible packet identification framework.
+The packet filtering and full NAT (masquerading, port forwarding,
+etc) subsystems now use this: say `Y' or `M' here if you want to use
+either of those.
+.
+IP_NF_MATCH_LIMIT 'limit match support' text
+limit matching allows you to control the rate at which a rule can be
+matched: mainly useful in combination with the LOG target ("LOG
+target support", below) and to avoid some Denial of Service attacks.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_MATCH_MAC 'MAC address match support' text
+mac matching allows you to match packets based on the source
+ethernet address of the packet.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_MATCH_MARK 'Netfilter MARK match support' text
+Netfilter mark matching allows you to match packets based on the
+`nfmark' value in the packet. This can be set by the MARK target
+(see below).
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_MATCH_MULTIPORT 'Multiple port match support' text
+Multiport matching allows you to match TCP or UDP packets based on
+a series of source or destination ports: normally a rule can only
+match a single range of ports.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_MATCH_TOS 'TOS match support' text
+TOS matching allows you to match packets based on the Type Of
+Service fields of the IP packet.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_MATCH_LENGTH 'LENGTH match support' text
+This option allows you to match the length of a packet against a
+specific value or range of values.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_MATCH_TTL 'TTL match support' text
+This adds CONFIG_IP_NF_MATCH_TTL option, which enabled the user
+to match packets by their TTL value.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_MATCH_TCPMSS 'TCPMSS match support' text
+This option adds a `tcpmss' match, which allows you to examine the
+MSS value of TCP SYN packets, which control the maximum packet size
+for that connection.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_MATCH_STATE 'Connection state match support' text
+Connection state matching allows you to match packets based on their
+relationship to a tracked connection (ie. previous packets). This
+is a powerful tool for packet classification.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_MATCH_UNCLEAN 'Unclean match support' text
+Unclean packet matching matches any strange or invalid packets, by
+looking at a series of fields in the IP, TCP, UDP and ICMP headers.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_MATCH_OWNER 'Owner match support' text
+Packet owner matching allows you to match locally-generated packets
+based on who created them: the user, group, process or session.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_FILTER 'Packet filtering' text
+Packet filtering defines a table `filter', which has a series of
+rules for simple packet filtering at local input, forwarding and
+local output. See the man page for iptables(8).
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_TARGET_REJECT 'REJECT target support' text
+The REJECT target allows a filtering rule to specify that an ICMP
+error should be issued in response to an incoming packet, rather
+than silently being dropped.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_TARGET_MIRROR 'MIRROR target support' text
+The MIRROR target allows a filtering rule to specify that an
+incoming packet should be bounced back to the sender.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_NAT 'Full NAT (Network Address Translation)' text
+The Full NAT option allows masquerading, port forwarding and other
+forms of full Network Address Port Translation. It is controlled by
+the `nat' table in iptables: see the man page for iptables(8).
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_TARGET_MASQUERADE 'MASQUERADE target support' text
+Masquerading is a special case of NAT: all outgoing connections are
+changed to seem to come from a particular interface's address, and
+if the interface goes down, those connections are lost. This is
+only useful for dialup accounts with dynamic IP address (ie. your IP
+address will be different on next dialup).
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_TARGET_REDIRECT 'REDIRECT target support' text
+REDIRECT is a special case of NAT: all incoming connections are
+mapped onto the incoming interface's address, causing the packets to
+come to the local machine instead of passing through. This is
+useful for transparent proxies.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_NAT_SNMP_BASIC 'Basic SNMP-ALG support' text
+
+This module implements an Application Layer Gateway (ALG) for
+SNMP payloads. In conjunction with NAT, it allows a network
+management system to access multiple private networks with
+conflicting addresses. It works by modifying IP addresses
+inside SNMP payloads to match IP-layer NAT mapping.
+
+This is the "basic" form of SNMP-ALG, as described in RFC 2962
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_MANGLE 'Packet mangling' text
+This option adds a `mangle' table to iptables: see the man page for
+iptables(8). This table is used for various packet alterations
+which can effect how the packet is routed.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_TARGET_TOS 'TOS target support' text
+This option adds a `TOS' target, which allows you to create rules in
+the `mangle' table which alter the Type Of Service field of an IP
+packet prior to routing.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_TARGET_MARK 'MARK target support' text
+This option adds a `MARK' target, which allows you to create rules
+in the `mangle' table which alter the netfilter mark (nfmark) field
+associated with the packet packet prior to routing. This can change
+the routing method (see `IP: use netfilter MARK value as routing
+key') and can also be used by other subsystems to change their
+behavior.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_TARGET_LOG 'LOG target support' text
+This option adds a `LOG' target, which allows you to create rules in
+any iptables table which records the packet header to the syslog.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_TARGET_TCPMSS 'TCPMSS target support' text
+This option adds a `TCPMSS' target, which allows you to alter the
+MSS value of TCP SYN packets, to control the maximum size for that
+connection (usually limiting it to your outgoing interface's MTU
+minus 40).
+
+This is used to overcome criminally braindead ISPs or servers which
+block ICMP Fragmentation Needed packets. The symptoms of this
+problem are that everything works fine from your Linux
+firewall/router, but machines behind it can never exchange large
+packets:
+ 1) Web browsers connect, then hang with no data received.
+ 2) Small mail works fine, but large emails hang.
+ 3) ssh works fine, but scp hangs after initial handshaking.
+
+Workaround: activate this option and add a rule to your firewall
+configuration like:
+
+ iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
+ -j TCPMSS --clamp-mss-to-pmtu
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_COMPAT_IPCHAINS 'ipchains (2.2-style) support' text
+This option places ipchains (with masquerading and redirection
+support) back into the kernel, using the new netfilter
+infrastructure. It is not recommended for new installations (see
+`Packet filtering'). With this enabled, you should be able to use
+the ipchains tool exactly as in 2.2 kernels.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP_NF_COMPAT_IPFWADM 'ipfwadm (2.0-style) support' text
+This option places ipfwadm (with masquerading and redirection
+support) back into the kernel, using the new netfilter
+infrastructure. It is not recommended for new installations (see
+`Packet filtering'). With this enabled, you should be able to use
+the ipfwadm tool exactly as in 2.0 kernels.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+#
+# IPv6 filtering configuration
+#IP6_NF_CONNTRACK 'Connection tracking (required for masq/NAT)'
+#IP6_NF_FTP 'FTP protocol support'
+#IP6_NF_QUEUE 'Userspace queueing via NETLINK'
+IP6_NF_IPTABLES 'IPv6 tables support (required for filtering/masq/NAT)'
+text
+ip6tables is a general, extensible packet identification framework.
+Currently only the packet filtering and packet mangling subsystem
+for IPv6 use this, but connection tracking is going to follow.
+Say 'Y' or 'M' here if you want to use either of those.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP6_NF_MATCH_LIMIT 'IPv6 limit match support' text
+limit matching allows you to control the rate at which a rule can be
+matched: mainly useful in combination with the LOG target ("LOG
+target support", below) and to avoid some Denial of Service attacks.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP6_NF_MATCH_MAC 'MAC address match support' text
+mac matching allows you to match packets based on the source
+ethernet address of the packet.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP6_NF_MATCH_MARK 'Netfilter MARK match support' text
+Netfilter mark matching allows you to match packets based on the
+`nfmark' value in the packet. This can be set by the MARK target
+(see below).
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP6_NF_MATCH_MULTIPORT 'Multiple port match support' text
+Multiport matching allows you to match TCP or UDP packets based on
+a series of source or destination ports: normally a rule can only
+match a single range of ports.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP6_NF_MATCH_TOS 'TOS match support'
+
+#IP6_NF_MATCH_STATE 'Connection state match support'
+#IP6_NF_MATCH_UNCLEAN 'Unclean match support'
+IP6_NF_MATCH_OWNER 'Owner match support' text
+Packet owner matching allows you to match locally-generated packets
+based on who created them: the user, group, process or session.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP6_NF_FILTER 'Packet filtering' text
+Packet filtering defines a table `filter', which has a series of
+rules for simple packet filtering at local input, forwarding and
+local output. See the man page for iptables(8).
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+#IP6_NF_TARGET_REJECT 'REJECT target support'
+#IP6_NF_TARGET_MIRROR 'MIRROR target support'
+IP6_NF_MANGLE 'Packet mangling' text
+This option adds a `mangle' table to iptables: see the man page for
+iptables(8). This table is used for various packet alterations
+which can effect how the packet is routed.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+#IP6_NF_TARGET_TOS 'TOS target support'
+IP6_NF_TARGET_MARK 'MARK target support' text
+This option adds a `MARK' target, which allows you to create rules
+in the `mangle' table which alter the netfilter mark (nfmark) field
+associated with the packet packet prior to routing. This can change
+the routing method (see `IP: use netfilter MARK value as routing
+key') and can also be used by other subsystems to change their
+behavior.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+IP6_NF_TARGET_LOG 'LOG target support' text
+This option adds a `LOG' target, which allows you to create rules in
+any ip6tables table which records the packet header to the syslog.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. If unsure, say `N'.
+.
+#
+# DECnet configuration
+DECNET_SIOCGIFCONF 'DECnet SIOCFIGCONF support' text
+ This option should only be turned on if you are really sure that
+ you know what you are doing. It can break other applications which
+ use this system call and the proper way to get the information
+ provided by this call is to use rtnetlink.
+
+ If unsure, say N.
+.
+DECNET_ROUTER 'DECnet router support' text
+ Add support for turning your DECnet Endnode into a level 1 or 2
+ router. This is an unfinished option for developers only. If you do
+ say Y here, then make sure that you also say Y to "Kernel/User
+ network link driver", "Routing messages" and "Network packet
+ filtering". The first two are required to allow configuration via
+ rtnetlink (currently you need Alexey Kuznetsov's iproute2 package
+ from ftp://ftp.inr.ac.ru). The "Network packet filtering" option
+ will be required for the forthcoming routing daemon to work.
+
+ See Documentation/networking/decnet.txt for more information.
+.
+DECNET_ROUTE_FWMARK 'Use FWMARK value as DECnet routing key' text
+If you say Y here, you will be able to specify different routes for
+packets with different FWMARK ("firewalling mark") values
+(see ipchains(8), "-m" argument).
+.
+#
+# IPv6 configuration
+IPV6_NETLINK 'IPv6: routing messages via old netlink' text
+You can say Y here to receive routing messages from the IPv6 code
+through the old netlink interface. However, a better option is to
+say Y to "Kernel/User network link driver" and to "Routing
+messages" instead.
+.
+#RT6_POLICY 'IPv6: flow policy support'
+#IPV6_FIREWALL 'IPv6: firewall support'
+#
+# Traffic control configuration.
+NET_SCH_CBQ 'CBQ packet scheduler' text
+Say Y here if you want to use the Class-Based Queueing (CBQ) packet
+scheduling algorithm for some of your network devices. This
+algorithm classifies the waiting packets into a tree-like hierarchy
+of classes; the leaves of this tree are in turn scheduled by
+separate algorithms (called "disciplines" in this context).
+
+See the top of net/sched/sch_cbq.c for references about the CBQ
+algorithm.
+
+CBQ is a commonly used scheduler, so if you're unsure, you should
+say Y here. Then say Y to all the queueing algorithms below that you
+want to use as CBQ disciplines. Then say Y to "Packet classifier
+API" and say Y to all the classifiers you want to use; a classifier
+is a routine that allows you to sort your outgoing traffic into
+classes based on a certain criterion.
+
+This code is also available as a module called sch_cbq.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.
+.
+NET_SCH_CSZ 'CSZ packet scheduler' text
+Say Y here if you want to use the Clark-Shenker-Zhang (CSZ) packet
+scheduling algorithm for some of your network devices. At the
+moment, this is the only algorithm that can guarantee service for
+real-time applications (see the top of net/sched/sch_csz.c for
+details and references about the algorithm).
+
+Note: this scheduler is currently broken.
+
+This code is also available as a module called sch_csz.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.
+.
+#NET_SCH_HPFQ 'H-PFQ packet scheduler'
+#NET_SCH_HFCS 'H-FSC packet scheduler'
+NET_SCH_ATM 'ATM pseudo-scheduler'
+
+NET_SCH_PRIO 'The simplest PRIO pseudo-scheduler' text
+Say Y here if you want to use an n-band priority queue packet
+"scheduler" for some of your network devices or as a leaf discipline
+for the CBQ scheduling algorithm. If unsure, say Y.
+
+This code is also available as a module called sch_prio.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.
+.
+NET_SCH_RED 'RED queue' text
+Say Y here if you want to use the Random Early Detection (RED)
+packet scheduling algorithm for some of your network devices (see
+the top of net/sched/sch_red.c for details and references about the
+algorithm).
+
+This code is also available as a module called sch_red.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.
+.
+NET_SCH_SFQ 'SFQ queue' text
+Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
+packet scheduling algorithm for some of your network devices or as a
+leaf discipline for the CBQ scheduling algorithm (see the top of
+net/sched/sch_sfq.c for details and references about the SFQ
+algorithm).
+
+This code is also available as a module called sch_sfq.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.
+.
+NET_SCH_TEQL 'TEQL queue' text
+Say Y here if you want to use the True Link Equalizer (TLE) packet
+scheduling algorithm for some of your network devices or as a leaf
+discipline for the CBQ scheduling algorithm. This queueing
+discipline allows the combination of several physical devices into
+one virtual device. (see the top of net/sched/sch_teql.c for
+details).
+
+This code is also available as a module called sch_teql.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.
+.
+NET_SCH_TBF 'TBF queue' text
+Say Y here if you want to use the Simple Token Bucket Filter (TBF)
+packet scheduling algorithm for some of your network devices or as a
+leaf discipline for the CBQ scheduling algorithm (see the top of
+net/sched/sch_tbf.c for a description of the TBF algorithm).
+
+This code is also available as a module called sch_tbf.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.
+.
+NET_SCH_GRED 'GRED queue'
+
+NET_SCH_DSMARK 'Diffserv field marker'
+
+NET_SCH_INGRESS 'Ingress Qdisc'
+
+NET_QOS 'QoS support' text
+Say Y here if you want to include Quality Of Service scheduling
+features, which means that you will be able to request certain
+rate-of-flow limits for your network devices.
+
+This Quality of Service (QoS) support will enable you to use
+Differentiated Services (diffserv) and Resource Reservation Protocol
+(RSVP) on your Linux router if you also say Y to "Packet classifier
+API" and to some classifiers below. Documentation and software is at
+http://icawww1.epfl.ch/linux-diffserv/ .
+
+Note that the answer to this question won't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about QoS support.
+.
+NET_ESTIMATOR 'Rate estimator' text
+In order for Quality of Service scheduling to work, the current
+rate-of-flow for a network device has to be estimated; if you say Y
+here, the kernel will do just that.
+.
+NET_CLS 'Packet classifier API' text
+The CBQ scheduling algorithm requires that network packets which are
+scheduled to be sent out over a network device be classified
+according to some criterion. If you say Y here, you will get a
+choice of several different packet classifiers with the following
+questions.
+
+This will enable you to use Differentiated Services (diffserv) and
+Resource Reservation Protocol (RSVP) on your Linux router.
+Documentation and software is at
+http://icawww1.epfl.ch/linux-diffserv/ .
+.
+NET_CLS_TCINDEX 'TC index classifier'
+
+NET_CLS_ROUTE4 'Routing tables based classifier' text
+If you say Y here, you will be able to classify outgoing packets
+according to the route table entry they matched. If unsure, say Y.
+
+This code is also available as a module called cls_route.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.
+.
+NET_CLS_FW 'Firewall based classifier' text
+If you say Y here, you will be able to classify outgoing packets
+according to firewall criteria you specified.
+
+This code is also available as a module called cls_fw.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.
+.
+NET_CLS_U32 'U32 classifier' text
+If you say Y here, you will be able to classify outgoing packets
+according to their destination address. If unsure, say Y.
+
+This code is also available as a module called cls_u32.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
+.
+NET_CLS_RSVP 'Special RSVP classifier' text
+The Resource Reservation Protocol (RSVP) permits end systems to
+request a minimum and maximum data flow rate for a connection; this
+is important for real time data such as streaming sound or video.
+
+Say Y here if you want to be able to classify outgoing packets based
+on their RSVP requests.
+
+This code is also available as a module called cls_rsvp.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
+.
+NET_CLS_RSVP6 'Special RSVP classifier for IPv6' text
+The Resource Reservation Protocol (RSVP) permits end systems to
+request a minimum and maximum data flow rate for a connection; this
+is important for real time data such as streaming sound or video.
+
+Say Y here if you want to be able to classify outgoing packets based
+on their RSVP requests and you are using the new Internet Protocol
+IPv6 as opposed to the older and more common IPv4.
+
+This code is also available as a module called cls_rsvp6.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
+.
+NET_CLS_POLICE 'Traffic policing (needed for in/egress)'
+
+#
+# IrDA protocol configuration
+IRDA 'IrDA subsystem support' text
+Say Y here if you want to build support for the IrDA (TM) protocols.
+The Infrared Data Associations (tm) specifies standards for wireless
+infrared communication and is supported by most laptops and PDA's.
+
+To use Linux support for the IrDA (tm) protocols, you will also need
+some user-space utilities like irattach. For more information, see the file
+Documentation/networking/irda.txt. You also want to read the
+IR-HOWTO, available at http://www.linuxdoc.org/docs.html#howto .
+
+This support is also available as a module called irda.o. If you
+want to compile it as a module, say M here and read
+Documentation/modules.txt.
+.
+IRDA_ULTRA 'Ultra (connectionless) protocol'
+
+IRDA_OPTIONS 'IrDA protocol options' text
+Say Y here if you want to configure any of the following IrDA options.
+.
+IRDA_CACHE_LAST_LSAP 'IrDA cache last LSAP' text
+Say Y here if you want IrLMP to cache the last LSAP used. This makes
+sense since most frames will be sent/received on the same
+connection. Enabling this option will save a hash-lookup per frame.
+
+If unsure, say Y.
+.
+IRDA_FAST_RR 'IrDA Fast RRs' text
+Say Y here is you want IrLAP to send fast RR (Receive Ready) frames
+when acting as a primary station. This will make IrLAP send out a RR
+frame immediately when receiving a frame if its own transmit queue
+is currently empty. This will give a lot of speed improvement when
+receiving much data since the secondary station will not have to
+wait the max. turn around time before it is allowed to transmit the
+next time. If the transmit queue of the secondary is also empty the
+primary will back off waiting longer for sending out the RR frame
+until the timeout reaches the normal value. Enabling this option
+will make the IR-diode burn more power and thus reduce your battery
+life.
+
+If unsure, say N.
+.
+IRDA_DEBUG 'IrDA debugging information' text
+Say Y here if you want the IrDA subsystem to write debug information
+to your syslog. You can change the debug level in
+/proc/sys/net/irda/debug
+
+If unsure, say Y (since it makes it easier to find the bugs).
+.
+#IRDA_COMPRESSION 'IrLAP compression support'
+#IRDA_DEFLATE 'IrLAP Deflate compression'
+IRCOMM 'IrCOMM protocol' text
+Say Y here if you want to build support for the IrCOMM protocol. If
+you want to compile it as a module (you will get ircomm.o and
+ircomm-tty.o), say M here and read Documentation/modules.txt. IrCOMM
+implements serial port emulation, and makes it possible to use all
+existing applications that understands TTY's with an infrared link.
+Thus you should be able to use application like PPP, minicom and
+others. Enabling this option will create two modules called ircomm
+and ircomm_tty.
+.
+IRLAN 'IrLAN protocol' text
+Say Y here if you want to build support for the IrLAN protocol. If
+you want to compile it as a module (irlan.o), say M here and read
+Documentation/modules.txt. IrLAN emulates an Ethernet and makes it
+possible to put up a wireless LAN using infrared beams.
+
+The IrLAN protocol can be used to talk with infrared access points
+like the HP NetbeamIR, or the ESI JetEye NET. You can also connect
+to another Linux machine running the IrLAN protocol for ad-hoc
+networking!
+.
+IRNET 'IrNET protocol' text
+Say Y here if you want to build support for the IrNET protocol. If
+you want to compile it as a module (irnet.o), say M here and read
+Documentation/modules.txt. IrNET is a PPP driver, so you will also
+need a working PPP subsystem (driver, daemon and config)...
+
+IrNET is an alternate way to tranfer TCP/IP traffic over IrDA. It
+uses synchronous PPP over a set of point to point IrDA sockets. You
+can use it between Linux machine or with W2k.
+.
+#
+# kHTTPd
+#
+KHTTPD 'Kernel httpd acceleration' text
+The kernel httpd acceleration daemon (kHTTPd) is a (limited) web
+server built into the kernel. It is limited since it can only serve
+files from the file system and cannot deal with executable content
+such as CGI scripts. Serving files is sped up if you use kHTTPd.
+If kHTTPd is not able to fulfill a request, it can transparently
+pass it through to a user space web server such as apache.
+
+Saying "M" here builds the kHTTPd module; this is NOT enough to have
+a working kHTTPd. For safety reasons, the module has to be activated
+by doing a "echo 1 > /proc/sys/net/khttpd/start" after inserting the
+module.
+
+Before using this, read the README in net/khttpd !
+
+The kHTTPd is experimental. Be careful when using it on a production
+machine. Also note that kHTTPd doesn't support virtual servers yet.
+.
+#
+# Network device configuration
+DUMMY 'Dummy net driver support' text
+This is essentially a bit-bucket device (i.e. traffic you send to
+this device is consigned into oblivion) with a configurable IP
+address. It is most commonly used in order to make your currently
+inactive SLIP address seem like a real address for local programs.
+If you use SLIP or PPP, you might want to say Y here. Since this
+thing often comes in handy, the default is Y. It won't enlarge your
+kernel either. What a deal. Read about it in the Network
+Administrator's Guide, available from
+http://www.linuxdoc.org/docs.html#guide .
+
+If you want to compile this 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 dummy.o. If you want to use more than one dummy device at a
+time, you need to compile this driver as a module. Instead of
+'dummy', the devices will then be called 'dummy0', 'dummy1' etc.
+.
+BONDING 'Bonding driver support' text
+Say 'Y' or 'M' if you wish to be able to 'bond' multiple Ethernet
+Channels together. This is called 'Etherchannel' by Cisco,
+'Trunking' by Sun, and 'Bonding' in Linux.
+
+If you have two ethernet connections to some other computer, you can
+make them behave like one double speed connection using this driver.
+Naturally, this has to be supported at the other end as well, either
+with a similar Bonding Linux driver, a Cisco 5500 switch or a
+SunTrunking SunSoft driver.
+
+This is similar to the EQL driver, but it merges Ethernet segments
+instead of serial lines.
+
+If you want to compile this 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 bonding.o.
+.
+TUN 'Universal TUN/TAP device driver support' text
+TUN/TAP provides packet reception and transmission for user space programs.
+It can be viewed as a simple Point-to-Point or Ethernet device, which
+instead of receiving packets from a physical media, receives them from
+user space program and instead of sending packets via physical media
+writes them to the user space program.
+
+When a program opens /dev/net/tun, driver creates and registers
+corresponding net device tunX or tapX. After a program closed above
+devices, driver will automatically delete tunXX or tapXX device and all
+routes corresponding to it.
+
+Please read Documentation/networking/tuntap.txt for more information.
+
+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 tun.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+
+If you don't know what to use this for, you don't need it.
+.
+EQUALIZER 'EQL (serial line load balancing) support' text
+If you have two serial connections to some other computer (this
+usually requires two modems and two telephone lines) and you use
+SLIP (the protocol for sending Internet traffic over telephone
+lines) or PPP (a better SLIP) on them, you can make them behave like
+one double speed connection using this driver. Naturally, this has
+to be supported at the other end as well, either with a similar EQL
+Linux driver or with a Livingston Portmaster 2e.
+
+Say Y if you want this and read Documentation/networking/eql.txt.
+You may also want to read section 6.2 of the NET-3-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto .
+
+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 eql.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt. If unsure,
+say N.
+.
+ETHERTAP 'Ethertap network tap' text
+If you say Y here (and have said Y to "Kernel/User network link
+driver", above) and create a character special file /dev/tap0 with
+major number 36 and minor number 16 using mknod ("man mknod"), you
+will be able to have a user space program read and write raw
+Ethernet frames from/to that special file. tap0 can be configured
+with ifconfig and route like any other Ethernet device but it is not
+connected to any physical LAN; everything written by the user to
+/dev/tap0 is treated by the kernel as if it had come in from a LAN
+to the device tap0; everything the kernel wants to send out over the
+device tap0 can instead be read by the user from /dev/tap0: the user
+mode program replaces the LAN that would be attached to an ordinary
+Ethernet device. Please read the file
+Documentation/networking/ethertap.txt for more information.
+
+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 ethertap.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+
+If you don't know what to use this for, you don't need it.
+.
+NET_SB1000 'General Instruments Surfboard 1000' text
+This is a driver for the General Instrument (also known as
+NextLevel) SURFboard 1000 internal
+cable modem. This is an ISA card which is used by a number of cable
+TV companies to provide cable modem access. It's a one-way
+downstream-only cable modem, meaning that your upstream net link is
+provided by your regular phone modem.
+
+At present this driver only compiles as a module, so say M here if
+you have this card. The module will be called sb1000.o. Then read
+Documentation/networking/README.sb1000 for information on how to use
+this module, as it needs special ppp scripts for establishing a
+connection. Further documentation and the necessary scripts can be
+found at:
+
+http://www.jacksonville.net/~fventuri/
+http://home.adelphia.net/~siglercm/sb1000.html
+http://linuxpower.cx/~cable/
+
+If you don't have this card, of course say N.
+.
+#
+# Ethernet
+NET_ETHERNET 'Ethernet (10 or 100Mbit)' text
+Ethernet (also called IEEE 802.3 or ISO 8802-2) is the most common
+type of Local Area Network (LAN) in universities and companies.
+
+Common varieties of Ethernet are: 10BASE-2 or Thinnet (10 Mbps over
+coaxial cable, linking computers in a chain), 10BASE-T or twisted
+pair (10 Mbps over twisted pair cable, linking computers to central
+hubs), 10BASE-F (10 Mbps over optical fiber links, using hubs),
+100BASE-TX (100 Mbps over two twisted pair cables, using hubs),
+100BASE-T4 (100 Mbps over 4 standard voice-grade twisted pair
+cables, using hubs), 100BASE-FX (100 Mbps over optical fiber links)
+[the 100BASE varieties are also known as Fast Ethernet], and Gigabit
+Ethernet (1 Gbps over optical fiber or short copper links).
+
+If your Linux machine will be connected to an Ethernet and you have
+an Ethernet network interface card (NIC) installed in your computer,
+say Y here and read the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . You will then also have
+to say Y to the driver for your particular NIC.
+
+Note that the answer to this question won't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about Ethernet network cards. If unsure, say N.
+.
+ARM_AM79C961A 'EBSA-110 Ethernet interface (AM79C961A)' text
+If you wish to compile a kernel for the EBSA-110, then you should
+always answer Y to this.
+.
+MACE 'MACE (Power Mac Ethernet) support' text
+Power Macintoshes and clones with Ethernet built-in on the
+motherboard will usually use a MACE (Medium Access Control for
+Ethernet) interface. Say Y to include support for the MACE chip.
+
+This driver is also available as a module called mace.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.
+.
+MACE_AAUI_PORT 'Use AAUI port instead of TP by default' text
+Some Apple machines (notably the Apple Network Server) which use the
+MACE ethernet chip have an Apple AUI port (small 15-pin connector),
+instead of an 8-pin RJ45 connector for twisted-pair ethernet. Say
+Y here if you have such a machine. If unsure, say N.
+The driver will default to AAUI on ANS anyway, and if you use it as
+a module, you can provide the port_aaui=0|1 to force the driver
+setting.
+.
+BMAC 'BMAC (G3 Ethernet) support' text
+Say Y for support of BMAC Ethernet interfaces. These are used on G3
+computers.
+
+This driver is also available as a module called bmac.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.
+.
+GMAC 'GMAC (G4/iBook Ethernet) support' text
+Say Y for support of GMAC Ethernet interfaces. These are used on G4
+and iBook computers.
+
+This driver is also available as a module called gmac.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.
+.
+NCR885E 'Symbios 53c885 (Synergy Ethernet) support'
+
+OAKNET 'National DP83902AV (Oak Ethernet) support' text
+Say Y if your machine has this type of Ethernet network card.
+
+This driver is also available as a module called oaknet.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.
+.
+ARIADNE 'Ariadne support' text
+If you have a Village Tronic Ariadne Ethernet adapter, say Y.
+Otherwise, say N.
+
+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 is called ariadne.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+ARIADNE2 'Ariadne II and X-Surf support' text
+This driver is for the Village Tronic Ariadne II and the Individual
+Computers X-Surf Ethernet cards. If you have such a card, say Y.
+Otherwise, say N.
+
+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 ariadne2.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+A2065 'A2065 support' text
+If you have a Commodore A2065 Ethernet adapter, say Y. Otherwise,
+say N.
+
+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 is called a2065.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+HYDRA 'Hydra support' text
+If you have a Hydra Ethernet adapter, say Y. Otherwise, say N.
+
+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 is called hydra.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+LASI_82596 'Lasi ethernet'
+
+MIPS_JAZZ_SONIC 'MIPS JAZZ onboard SONIC Ethernet support' text
+This is the driver for the onboard card of MIPS Magnum 4000,
+Acer PICA, Olivetti M700-10 and a few other identical OEM systems.
+.
+#MIPS_GT96100 'MIPS GT96100 support'
+MIPS_GT96100ETH 'MIPS GT96100 Ethernet support'
+
+MIPS_AU1000_ENET 'MIPS AU1000 Ethernet support'
+
+SGI_IOC3_ETH 'SGI IOC3 Ethernet' text
+If you have a network (Ethernet) card of this type, say Y and read
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+.
+STNIC 'National Semiconductor DP83902AV support' text
+If you have a network adaptor with National Semiconductor DP83902AV,
+say Y or M (for module).
+
+If unsure, say N.
+.
+NET_VENDOR_3COM '3COM cards' text
+If you have a network (Ethernet) card belonging to this class, say Y
+and read the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+Note that the answer to this question doesn't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about 3COM cards. If you say Y, you will be asked for
+your specific card in the following questions.
+.
+EL1 '3c501 "EtherLink" support' text
+If you have a network (Ethernet) card of this type, say Y and read
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . Also, consider buying a
+new card, since the 3c501 is slow, broken, and obsolete: you will
+have problems. Some people suggest to ping ("man ping") a nearby
+machine every minute ("man cron") when using this card.
+
+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 3c501.o. 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.
+.
+EL2 '3c503 "EtherLink II" support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called 3c503.o. 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.
+.
+ELPLUS '3c505 "EtherLink Plus" support' text
+Information about this network (Ethernet) card can be found in
+Documentation/networking/3c505.txt. If you have a card of this type,
+say Y and read the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this 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 as well as
+Documentation/networking/net-modules.txt. The module will be called
+3c505.o.
+.
+EL16 '3c507 (EtherLink 16) support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called 3c507.o. 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.
+.
+EL3 '3c509/3c529 (MCA)/3c579 "EtherLink III" support' text
+If you have a network (Ethernet) card belonging to the 3Com
+EtherLinkIII series, say Y and read the Ethernet-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto .
+
+If your card is not working you may need to use the DOS
+setup disk to disable Plug & Play mode, and to select the default
+media type.
+
+If you want to compile this 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 as well as
+Documentation/networking/net-modules.txt. The module will be called
+3c509.o.
+.
+CONFIG_3C515 '3c515 ISA Fast EtherLink' text
+If you have a 3Com ISA EtherLink XL "Corkscrew" 3c515 Fast Ethernet
+network card, say Y and read the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this 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 as well as
+Documentation/networking/net-modules.txt. The module will be called
+3c515.o.
+.
+ELMC '3c523 "EtherlinkMC" support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called 3c523.o. 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.
+.
+ELMC_II '3c527 "EtherLink/MC 32" support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called 3c527.o. 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.
+.
+VORTEX '3c590/3c900 series (592/595/597) "Vortex/Boomerang/Cyclone" support'
+text
+This option enables driver support for a large number of 10mbps and
+10/100mbps EISA, PCI and PCMCIA 3Com network cards:
+
+"Vortex" (Fast EtherLink 3c590/3c592/3c595/3c597) EISA and PCI
+"Boomerang" (EtherLink XL 3c900 or 3c905) PCI
+"Cyclone" (3c540/3c900/3c905/3c980/3c575/3c656) PCI and Cardbus
+"Tornado" (3c905) PCI
+"Hurricane" (3c555/3cSOHO) PCI
+
+If you have such a card, say Y and read the Ethernet-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto . More specific
+information is in Documentation/networking/vortex.txt and in the
+comments at the beginning of drivers/net/3c59x.c.
+
+If you want to compile this 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 as well as
+Documentation/networking/net-modules.txt.
+.
+LANCE 'AMD LANCE and PCnet (AT1500 and NE2100) support' text
+If you have a network (Ethernet) card of this type, say Y and read
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . Some LinkSys cards are
+of this type.
+
+If you want 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. This is recommended.
+The module will be called lance.o.
+.
+NET_VENDOR_SMC 'Western Digital/SMC cards' text
+If you have a network (Ethernet) card belonging to this class, say Y
+and read the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+Note that the answer to this question doesn't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about Western Digital cards. If you say Y, you will be
+asked for your specific card in the following questions.
+.
+WD80x3 'WD80*3 support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called wd.o. 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.
+.
+ULTRAMCA 'SMC Ultra MCA support' text
+If you have a network (Ethernet) card of this type and are running
+an MCA based system (PS/2), say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called smc-mca.o. 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.
+.
+ULTRA 'SMC Ultra support' text
+If you have a network (Ethernet) card of this type, say Y and read
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+Important: There have been many reports that, with some motherboards
+mixing an SMC Ultra and an Adaptec AHA154x SCSI card (or compatible,
+such as some BusLogic models) causes corruption problems with many
+operating systems. The Linux smc-ultra driver has a work-around for
+this but keep it in mind if you have such a SCSI card and have
+problems.
+
+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 smc-ultra.o. 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.
+.
+ULTRA32 'SMC Ultra32 EISA support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called smc-ultra32.o. 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.
+.
+SMC9194 'SMC 9194 support' text
+This is support for the SMC9xxx based Ethernet cards. Choose this
+option if you have a DELL laptop with the docking station, or
+another SMC9192/9194 based chipset. Say Y if you want it compiled
+into the kernel, and read the file
+Documentation/networking/smc9.txt and the Ethernet-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto .
+
+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 smc9194.o. 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.
+.
+NET_VENDOR_RACAL 'Racal-Interlan (Micom) NI cards' text
+If you have a network (Ethernet) card belonging to this class, such
+as the NI5010, NI5210 or NI6210, say Y and read the Ethernet-HOWTO,
+available from http://www.linuxdoc.org/docs.html#howto .
+
+Note that the answer to this question doesn't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about NI cards. If you say Y, you will be asked for
+your specific card in the following questions.
+.
+NI5010 'NI5010 support' text
+If you have a network (Ethernet) card of this type, say Y and read
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . Note that this is still
+experimental code.
+
+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 ni5010.o. 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.
+.
+NI52 'NI5210 support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called ni52.o. 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.
+.
+NI65 'NI6510 support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called ni65.o. 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.
+.
+AT1700 'AT1700/1720 support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+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. The module will be called
+at1700.o.
+.
+DEPCA 'DEPCA, DE10x, DE200, DE201, DE202, DE422 support' text
+If you have a network (Ethernet) card of this type, say Y and read
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto as well as
+drivers/net/depca.c.
+
+If you want to compile this 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 as well as
+Documentation/networking/net-modules.txt. The module will be called
+depca.o.
+.
+E2100 'Cabletron E21xx support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called e2100.o. 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.
+.
+EWRK3 'EtherWORKS 3 (DE203, DE204, DE205) support' text
+This driver supports the DE203, DE204 and DE205 network (Ethernet)
+cards. If this is for you, say Y and read
+Documentation/networking/ewrk3.txt in the kernel source as well as
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this 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 as well as
+Documentation/networking/net-modules.txt. The module will be called
+ewrk3.o.
+.
+EEXPRESS 'EtherExpress 16 support' text
+If you have an EtherExpress16 network (Ethernet) card, say Y and
+read the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . Note that the Intel
+EtherExpress16 card used to be regarded as a very poor choice
+because the driver was very unreliable. We now have a new driver
+that should do better.
+
+If you want 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 as well as
+Documentation/networking/net-modules.txt. The module will be called
+eexpress.o.
+.
+EEXPRESS_PRO 'EtherExpressPro support/EtherExpress 10 (i82595) support'
+text
+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
+inserted in and removed from the running kernel whenever you want).
+The module will be called eepro.o. 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.
+.
+FMV18X 'FMV-181/182/183/184 support' text
+If you have a Fujitsu FMV-181/182/183/184 network (Ethernet) card,
+say Y and read the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you use an FMV-183 or FMV-184 and it is not working, you may need
+to disable Plug & Play mode of the card.
+
+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 fmv18x.o. 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.
+.
+HPLAN_PLUS 'HP PCLAN+ (27247B and 27252A) support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called hp-plus.o. 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.
+.
+HPLAN 'HP PCLAN (27245 and other 27xxx series) support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called hp.o. 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.
+.
+LP486E 'LP486E on board Ethernet'
+
+HP100 'HP 10/100VG PCLAN (ISA, EISA, PCI) support' text
+If you have a network (Ethernet) card of this type, say Y and read
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this 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 as well as
+Documentation/networking/net-modules.txt. The module will be called
+hp100.o.
+.
+ETH16I 'ICL EtherTeam 16i/32 support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called eth16i.o. 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.
+.
+NE2000 'NE2000/NE1000 support' text
+If you have a network (Ethernet) card of this type, say Y and read
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . Many Ethernet cards
+without a specific driver are compatible with NE2000.
+
+If you have a PCI NE2000 card however, say N here and Y to "PCI
+NE2000 support", above. If you have a NE2000 card and are running on
+an MCA system (a bus system used on some IBM PS/2 computers and
+laptops), say N here and Y to "NE/2 (ne2000 MCA version) support",
+below.
+
+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 ne.o. 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.
+.
+SEEQ8005 'SEEQ8005 support' text
+This is a driver for the SEEQ 8005 network (Ethernet) card. If this
+is for you, read the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this 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 as well as
+Documentation/networking/net-modules.txt. The module will be called
+ewrk3.o.
+.
+SK_G16 'SK_G16 support' text
+If you have a network (Ethernet) card of this type, say Y and read
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+.
+SKMC 'SKnet MCA support' text
+These are Micro Channel ethernet adapters. You need to say Y to "MCA
+support" in order to use this driver. Supported cards are the SKnet
+Junior MC2 and the SKnet MC2(+). The driver automatically
+distinguishes between the two cards. Note that using multiple boards
+of different type hasn't been tested with this driver. Say Y if you
+have one of these ethernet adapters.
+
+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 is called sk_mca.o. 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.
+.
+NE2_MCA 'NE/2 (ne2000 MCA version) support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called ne2.o. 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.
+.
+IBMLANA 'IBM LAN Adapter/A support' text
+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.
+.
+PCNET32 'AMD PCnet32 (VLB and PCI) support' text
+If you have a PCnet32 or PCnetPCI based network (Ethernet) card,
+answer Y here and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called pcnet32.o. 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.
+.
+ADAPTEC_STARFIRE 'Adaptec Starfire support' text
+Say Y here if you have an Adaptec Starfire (or DuraLAN) PCI network
+adapter. The DuraLAN chip is used on the 64 bit PCI boards from
+Adaptec e.g. the ANA-6922A. The older 32 bit boards use the tulip
+driver.
+
+If you want 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. This is recommended.
+The module will be called starfire.o.
+.
+AC3200 'Ansel Communications EISA 3200 support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called ac3200.o. 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.
+.
+APRICOT 'Apricot Xen-II on board Ethernet' text
+If you have a network (Ethernet) controller of this type, say Y and
+read the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this 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 as well as
+Documentation/networking/net-modules.txt. The module will be called
+apricot.o.
+.
+CS89x0 'CS89x0 support (Daynaport CS and LC cards)' text
+Support for CS89x0 chipset based Ethernet cards. If you have a
+network (Ethernet) card of this type, say Y and read the
+Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto as well as
+Documentation/networking/cs89x0.txt.
+
+If you want to compile this 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 as well as
+Documentation/networking/net-modules.txt. The module will be called
+cs89x.o.
+.
+DE4X5 'Generic DECchip & DIGITAL EtherWORKS PCI/EISA' text
+This is support for the DIGITAL series of PCI/EISA Ethernet cards.
+These include the DE425, DE434, DE435, DE450 and DE500 models. If
+you have a network card of this type, say Y and read the
+Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . More specific
+information is contained in Documentation/networking/de4x5.txt.
+
+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 de4x5.o. 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.
+.
+TULIP 'DECchip Tulip (dc21x4x) PCI support' text
+This driver is developed for the SMC EtherPower series Ethernet
+cards and also works with cards based on the DECchip
+21040/21041/21140 (Tulip series) chips. Some LinkSys PCI cards are
+of this type. (If your card is NOT SMC EtherPower 10/100 PCI
+(smc9332dst), you can also try the driver for "Generic DECchip"
+cards, above. However, most people with a network card of this type
+will say Y here.) Do read the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . More specific
+information is contained in Documentation/networking/tulip.txt.
+
+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 tulip.o. 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.
+.
+TULIP_MWI 'New Tulip bus configuration' text
+This configures your Tulip card specifically for the card and
+system cache line size type you are using.
+
+This is experimental code, not yet tested on many boards.
+
+If unsure, say N.
+.
+TULIP_MMIO 'Use PCI shared mem for NIC registers'
+
+DGRS 'Digi Intl. RightSwitch SE-X support' text
+This is support for the Digi International RightSwitch series of
+PCI/EISA Ethernet switch cards. These include the SE-4 and the SE-6
+models. If you have a network card of this type, say Y and read the
+Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . More specific
+information is contained in Documentation/networking/dgrs.txt.
+
+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 dgrs.o. 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.
+.
+DM9102 'Davicom DM910x/DM980x support' text
+This driver is for DM9102(A)/DM9132/DM9801 compatible PCI cards from
+Davicom ( http://www.davicom.com.tw ). If you have such a network
+(Ethernet) card, say Y. Some information is contained in the file
+Documentation/networking/dmfe.txt.
+
+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 dmfe.o. 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.
+.
+EEPRO100 'EtherExpress Pro/100 support' text
+If you have an Intel EtherExpress PRO/100 PCI network (Ethernet)
+card, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called eepro100.o. 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.
+.
+#EEPRO100_PM 'Enable Power Management'
+FEALNX 'Myson MTD-8xx PCI Ethernet support'
+
+LNE390 'Mylex EISA LNE390A/LNE390B support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called lne390.o. 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.
+.
+NE3210 'Novell/Eagle/Microdyne NE3210 EISA support' text
+If you have a network (Ethernet) card of this type, say Y and read
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . Note that this driver
+will NOT WORK for NE3200 cards as they are completely different.
+
+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 ne3210.o. 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.
+.
+NATSEMI 'National Semiconductor DP8381x series PCI Ethernet support'
+text
+This driver is for the National Semiconductor DP83810 series,
+including the 83815 chip.
+More specific information and updates are available from
+http://www.scyld.com/network/natsemi.html
+.
+NE2K_PCI 'PCI NE2000 and clones support' text
+This driver is for NE2000 compatible PCI cards. It will not work
+with ISA NE2000 cards (they have their own driver, "NE2000/NE1000
+support" below). If you have a PCI NE2000 network (Ethernet) card,
+say Y and read the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+This driver also works for the following NE2000 clone cards:
+ RealTek RTL-8029 Winbond 89C940 Compex RL2000 KTI ET32P2
+ NetVin NV5000SC Via 86C926 SureCom NE34 Winbond
+ Holtek HT80232 Holtek HT80229
+
+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 ne2k-pci.o. 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.
+.
+CONFIG_8139TOO 'RealTek RTL-8139 PCI Fast Ethernet Adapter support'
+text
+This is a driver for the Fast Ethernet PCI network cards based on
+the RTL8139 chips. If you have one of those, say Y and read
+Documentation/networking/8139too.txt as well as the Ethernet-HOWTO,
+available from http://www.linuxdoc.org/docs.html#howto .
+
+If you want 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. This is recommended.
+The module will be called 8139too.o.
+.
+CONFIG_8139TOO_PIO 'Use PIO instead of MMIO' text
+This instructs the driver to use programmed I/O ports (PIO) instead
+of PCI shared memory (MMIO). This can possibly solve some problems in
+case your mainboard has memory consistency issues. If unsure, say N.
+.
+CONFIG_8139TOO_TUNE_TWISTER 'Support for automatic channel equalization'
+text
+This implements a function which might come in handy in case you are
+using low quality on long cabling. It tries to match the transceiver
+to the cable characteristics. This is experimental since hardly
+documented by the manufacturer. If unsure, say N.
+.
+CONFIG_8139TOO_8129 'Support for older RTL-8129/8130 boards' text
+This enables support for the older and uncommon RTL-8129 and
+RTL-8130 chips, which support MII via an external transceiver, instead
+of an internal one. Disabling this option will save some memory
+by making the code size smaller. If unsure, say Y.
+.
+SIS900 'SiS 900/7016 PCI Fast Ethernet Adapter support' text
+This is a driver for the Fast Ethernet PCI network cards based on
+the SiS 900 and SiS 7016 chips. The SiS 900 core is also embedded in
+SiS 630 and SiS 540 chipsets. If you have one of those, say Y and
+read the Ethernet-HOWTO, available at
+http://www.linuxdoc.org/docs.html#howto . Please read
+Documentation/networking/sis900.txt and comments at the beginning of
+drivers/net/sis900.c for more information.
+
+This driver also supports AMD 79C901 HomePNA so that you can use
+your phone line as a network cable.
+
+If you want 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. This is recommended.
+The module will be called sis900.o.
+.
+TLAN 'TI ThunderLAN support' text
+If you have a PCI Ethernet network card based on the ThunderLAN chip
+which is supported by this driver, say Y and read the
+Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+Devices currently supported by this driver are Compaq Netelligent,
+Compaq NetFlex and Olicom cards. Please read the file
+Documentation/networking/tlan.txt for more details.
+
+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 tlan.o. 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.
+
+Please email feedback to torben.mathiasen@compaq.com.
+.
+VIA_RHINE 'VIA Rhine support' text
+If you have a VIA "rhine" based network card (Rhine-I (3043) or
+Rhine-2 (VT86c100A)), say Y here.
+
+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 via-rhine.o. 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.
+.
+ES3210 'Racal-Interlan EISA ES3210 support' text
+If you have a network (Ethernet) card of this type, say Y and 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
+inserted in and removed from the running kernel whenever you want).
+The module will be called es3210.o. 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.
+.
+CONFIG_8139CP 'RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support'
+text
+This is a driver for the Fast Ethernet PCI network cards based on
+the RTL8139C+ chips. If you have one of those, say Y and read
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you want 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. This is recommended.
+The module will be called 8139cp.o.
+.
+EPIC100 'SMC EtherPower II' text
+This driver is for the SMC EtherPower II 9432 PCI Ethernet NIC,
+which is based on the SMC83c17x (EPIC/100).
+More specific information and updates are available from
+http://www.scyld.com/network/epic100.html
+.
+SUNDANCE 'Sundance Alta PCI Ethernet support' text
+This driver is for the Sundance "Alta" chip.
+More specific information and updates are available from
+http://www.scyld.com/network/sundance.html
+.
+ZNET 'Zenith Z-Note support' text
+The Zenith Z-Note notebook computer has a built-in network
+(Ethernet) card, and this is the Linux driver for it. Note that the
+IBM Thinkpad 300 is compatible with the Z-Note and is also supported
+by this driver. Read the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+.
+LAN_SAA9730 'Philips SAA9730 Ethernet support'
+
+NET_POCKET 'Pocket and portable adapters' text
+Cute little network (Ethernet) devices which attach to the parallel
+port ("pocket adapters"), commonly used with laptops. If you have
+one of those, say Y and read the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you want to plug a network (or some other) card into the PCMCIA
+(or PC-card) slot of your laptop instead (PCMCIA is the standard for
+credit card size extension cards used by all modern laptops), you
+need the pcmcia-cs package (location contained in the file
+Documentation/Changes) and you can say N here.
+
+Laptop users should read the Linux Laptop home page at
+http://www.cs.utexas.edu/users/kharker/linux-laptop/ .
+
+Note that the answer to this question doesn't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about this class of network devices. If you say Y, you
+will be asked for your specific device in the following questions.
+.
+ATP 'AT-LAN-TEC/RealTek pocket adapter support' text
+This is a network (Ethernet) device which attaches to your parallel
+port. Read drivers/net/atp.c as well as the Ethernet-HOWTO,
+available from http://www.linuxdoc.org/docs.html#howto , if you
+want to use this. If you intend to use this driver, you should have
+said N to the "Parallel printer support", because the two drivers
+don't like each other.
+
+If you want to compile this driver as a module however ( = 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 atp.o.
+.
+DE600 'D-Link DE600 pocket adapter support' text
+This is a network (Ethernet) device which attaches to your parallel
+port. Read Documentation/networking/DLINK.txt as well as the
+Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , if you want to use
+this. It is possible to have several devices share a single parallel
+port and it is safe to compile the corresponding drivers into the
+kernel.
+
+If you want to compile this driver as a module however ( = 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 de600.o.
+.
+DE620 'D-Link DE620 pocket adapter support' text
+This is a network (Ethernet) device which attaches to your parallel
+port. Read Documentation/networking/DLINK.txt as well as the
+Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , if you want to use
+this. It is possible to have several devices share a single parallel
+port and it is safe to compile the corresponding drivers into the
+kernel.
+
+If you want to compile this driver as a module however ( = 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 de620.o.
+.
+#
+# Gigabit Ethernet
+MYRI_SBUS 'MyriCOM Gigabit Ethernet support' text
+This driver supports MyriCOM Sbus gigabit ethernet cards.
+
+If you want 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. This is recommended.
+The module will be called myri_sbus.o.
+.
+NS83820 'National Semiconduct DP83820 support'
+
+HAMACHI 'Packet Engines Hamachi GNIC-II support' text
+If you have a Gigabit Ethernet card of this type, say Y and read
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this 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 as well as
+Documentation/networking/net-modules.txt. The module will be called
+hamachi.o.
+.
+YELLOWFIN 'Packet Engines Yellowfin Gigabit-NIC support' text
+Say Y here if you have a Packet Engines G-NIC PCI Gigabit Ethernet
+adapter or the SYM53C885 Ethernet controller. The Gigabit adapter is
+used by the Beowulf Linux cluster project. See
+http://cesdis.gsfc.nasa.gov/linux/drivers/yellowfin.html for more
+information about this driver in particular and Beowulf in general.
+
+If you want 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. This is recommended.
+The module will be called yellowfin.o.
+.
+ACENIC 'Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support' text
+Say Y here if you have an Alteon AceNIC, 3Com 3C985(B), NetGear
+GA620, SGI Gigabit or Farallon PN9000-SX PCI Gigabit Ethernet
+adapter. The driver allows for using the Jumbo Frame option (9000
+bytes/frame) however it requires that your switches can handle this
+as well. To enable Jumbo Frames, add `mtu 9000' to your ifconfig
+line.
+
+If you want 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. This is recommended.
+The module will be called acenic.o.
+.
+DL2K 'D-Link DL2000-based Gigabit Ethernet support' text
+This driver supports D-Link 2000-based gigabit ethernet cards, which
+includes
+ D-Link DGE-550T Gigabit Ethernet Adapter.
+ D-Link DL2000-based Gigabit Ethernet Adapter.
+
+If you want 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. This is recommended.
+The module will be called dl2k.o.
+.
+ACENIC_OMIT_TIGON_I 'Omit support for old Tigon I based AceNICs' text
+Say Y here if you only have Tigon II based AceNICs and want to leave
+out support for the older Tigon I based cards which are no longer
+being sold (ie. the original Alteon AceNIC and 3Com 3C985 (non B
+version)). This will reduce the size of the driver object by
+app. 100KB. If you are not sure whether your card is a Tigon I or a
+Tigon II, say N here.
+
+The safe and default value for this is N.
+.
+SK98LIN 'SysKonnect SK-98xx support' text
+Say Y here if you have a SysKonnect SK-98xx Gigabit Ethernet Server
+Adapter. The following adapters are supported by this driver:
+- SK-9841 (single link 1000Base-LX)
+- SK-9842 (dual link 1000Base-LX)
+- SK-9843 (single link 1000Base-SX)
+- SK-9844 (dual link 1000Base-SX)
+- SK-9821 (single link 1000Base-T)
+- SK-9822 (dual link 1000Base-T)
+- SK-9861 (single link Volition connector)
+- SK-9862 (dual link Volition connector)
+The driver also supports the following adapters from Allied Telesyn:
+- AT2970...
+
+The dual link adapters support a link-failover feature.
+Read Documentation/networking/sk98lin.txt for information about
+optional driver parameters.
+Questions concerning this driver may be addressed to:
+ linux@syskonnect.de
+
+If you want 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. This is recommended.
+The module will be called sk98lin.o.
+.
+SUNGEM 'Sun GEM support'
+
+FDDI 'FDDI driver support' text
+Fiber Distributed Data Interface is a high speed local area network
+design; essentially a replacement for high speed Ethernet. FDDI can
+run over copper or fiber. If you are connected to such a network and
+want a driver for the FDDI card in your computer, say Y here (and
+then also Y to the driver for your FDDI card, below). Most people
+will say N.
+.
+DEFXX 'Digital DEFEA and DEFPA adapter support' text
+This is support for the DIGITAL series of EISA (DEFEA) and PCI
+(DEFPA) controllers which can connect you to a local FDDI network.
+.
+SKFP 'SysKonnect FDDI PCI support' text
+Say Y here if you have a SysKonnect FDDI PCI adapter.
+The following adapters are supported by this driver:
+- SK-5521 (SK-NET FDDI-UP)
+- SK-5522 (SK-NET FDDI-UP DAS)
+- SK-5541 (SK-NET FDDI-FP)
+- SK-5543 (SK-NET FDDI-LP)
+- SK-5544 (SK-NET FDDI-LP DAS)
+- SK-5821 (SK-NET FDDI-UP64)
+- SK-5822 (SK-NET FDDI-UP64 DAS)
+- SK-5841 (SK-NET FDDI-FP64)
+- SK-5843 (SK-NET FDDI-LP64)
+- SK-5844 (SK-NET FDDI-LP64 DAS)
+- Netelligent 100 FDDI DAS Fibre SC
+- Netelligent 100 FDDI SAS Fibre SC
+- Netelligent 100 FDDI DAS UTP
+- Netelligent 100 FDDI SAS UTP
+- Netelligent 100 FDDI SAS Fibre MIC
+
+Read Documentation/networking/skfp.txt for information about
+the driver.
+
+Questions concerning this driver can be addressed to:
+ linux@syskonnect.de
+
+If you want 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. This is recommended.
+The module will be called skfp.o.
+.
+HIPPI 'HIgh Performance Parallel Interface (HIPPI) support' text
+HIgh Performance Parallel Interface (HIPPI) is a 800Mbit/sec and
+1600Mbit/sec dual-simplex switched or point-to-point network. HIPPI
+can run over copper (25m) or fiber (300m on multi-mode or 10km on
+single-mode). HIPPI networks are commonly used for clusters and to
+connect to super computers. If you are connected to a HIPPI network
+and have a HIPPI network card in your computer that you want to use
+under Linux, say Y here (you must also remember to enable the driver
+for your HIPPI card below). Most people will say N here.
+.
+ROADRUNNER 'Essential RoadRunner HIPPI PCI adapter support' text
+Say Y here if this is your PCI HIPPI network card.
+
+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 rrunner.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt. If unsure,
+say N.
+.
+ROADRUNNER_LARGE_RINGS 'Use large TX/RX rings' text
+If you say Y here, the RoadRunner driver will preallocate up to 2 MB
+of additional memory to allow for fastest operation, both for
+transmitting and receiving. This memory cannot be used by any other
+kernel code or by user space programs. Say Y here only if you have
+the memory.
+.
+VETH 'iSeries Virtual Ethernet driver support'
+
+#
+# IP-over-serial and IP-over-parallel support
+PLIP 'PLIP (parallel port) support' text
+PLIP (Parallel Line Internet Protocol) is used to create a
+reasonably fast mini network consisting of two (or, rarely, more)
+local machines. A PLIP link from a Linux box is a popular means to
+install a Linux distribution on a machine which doesn't have a CDROM
+drive (a minimal system has to be transferred with floppies first).
+The kernels on both machines need to have this PLIP option enabled
+for this to work.
+
+The PLIP driver has two modes, mode 0 and mode 1. The parallel ports
+(the connectors at the computers with 25 holes) are connected with
+"null printer" or "Turbo Laplink" cables which can transmit 4 bits
+at a time (mode 0) or with special PLIP cables, to be used on
+bidirectional parallel ports only, which can transmit 8 bits at a
+time (mode 1); you can find the wiring of these cables in
+Documentation/networking/PLIP.txt. The cables can be up to 15m long.
+Mode 0 works also if one of the machines runs DOS/Windows and has
+some PLIP software installed, e.g. the Crynwr PLIP packet driver
+(http://oak.oakland.edu/simtel.net/msdos/pktdrvr-pre.html ) and
+winsock or NCSA's telnet.
+
+If you want to use PLIP, say Y and read the PLIP mini-HOWTO as well
+as the NET-3-HOWTO, both available from
+http://www.linuxdoc.org/docs.html#howto . Note that the PLIP
+protocol has been changed and this PLIP driver won't work together
+with the PLIP support in Linux versions 1.0.x. This option enlarges
+your kernel by about 8 KB.
+
+If you want to compile this 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 as well as
+Documentation/networking/net-modules.txt. The module will be called
+plip.o. If unsure, say Y or M, in case you buy a laptop later.
+.
+PPP 'PPP (point-to-point protocol) support' text
+PPP (Point to Point Protocol) is a newer and better SLIP. It serves
+the same purpose: sending Internet traffic over telephone (and other
+serial) lines. Ask your access provider if they support it, because
+otherwise you can't use it; most internet access providers these
+days support PPP rather than SLIP.
+
+To use PPP, you need an additional program called pppd as described
+in Documentation/networking/ppp.txt and in the PPP-HOWTO, available
+at http://www.linuxdoc.org/docs.html#howto . If you upgrade
+from an older kernel, you might need to upgrade pppd as well. The
+PPP option enlarges your kernel by about 16 KB.
+
+There are actually two versions of PPP: the traditional PPP for
+asynchronous lines, such as regular analog phone lines, and
+synchronous PPP which can be used over digital ISDN lines for
+example. If you want to use PPP over phone lines or other
+asynchronous serial lines, you need to say Y (or M) here and also to
+the next option, "PPP support for async serial ports". For PPP over
+synchronous lines, you should say Y (or M) here and to "Support
+synchronous PPP", below.
+
+This driver is also available as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+If you said Y to "Version information on all symbols" above, then
+you cannot compile the PPP driver into the kernel; you can then only
+compile it as a module. The module will be called ppp_generic.o. 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.
+.
+PPP_MULTILINK 'PPP multilink support' text
+PPP multilink is a protocol (defined in RFC 1990) which allows you
+to combine several (logical or physical) lines into one logical PPP
+connection, so that you can utilize your full bandwidth.
+
+This has to be supported at the other end as well and you need a
+version of the pppd daemon which understands the multilink protocol.
+
+If unsure, say N.
+.
+PPP_FILTER 'PPP filtering' text
+Say Y here if you want to be able to filter the packets passing over
+PPP interfaces. This allows you to control which packets count as
+activity (i.e. which packets will reset the idle timer or bring up
+a demand-dialled link) and which packets are to be dropped entirely.
+You need to say Y here if you wish to use the pass-filter and
+active-filter options to pppd.
+
+If unsure, say N.
+.
+PPP_ASYNC 'PPP support for async serial ports' text
+Say Y (or M) here if you want to be able to use PPP over standard
+asynchronous serial ports, such as COM1 or COM2 on a PC. If you use
+a modem (not a synchronous or ISDN modem) to contact your ISP, you
+need this option.
+
+This code is also available as a module (code which can be inserted
+into and removed from the running kernel). If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+
+If unsure, say Y.
+.
+PPP_SYNC_TTY 'PPP support for sync tty ports' text
+Say Y (or M) here if you want to be able to use PPP over synchronous
+(HDLC) tty devices, such as the SyncLink adapter. These devices
+are often used for high-speed leased lines like T1/E1.
+
+This code is also available as a module (code which can be inserted
+into and removed from the running kernel). If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+PPP_DEFLATE 'PPP Deflate compression' text
+Support for the Deflate compression method for PPP, which uses the
+Deflate algorithm (the same algorithm that gzip uses) to compress
+each PPP packet before it is sent over the wire. The machine at the
+other end of the PPP link (usually your ISP) has to support the
+Deflate compression method as well for this to be useful. Even if
+they don't support it, it is safe to say Y here.
+
+This code is also available as a module (code which can be inserted
+into and removed from the running kernel). If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+PPP_BSDCOMP 'PPP BSD-Compress compression' text
+Support for the BSD-Compress compression method for PPP, which uses
+the LZW compression method to compress each PPP packet before it is
+sent over the wire. The machine at the other end of the PPP link
+(usually your ISP) has to support the BSD-Compress compression
+method as well for this to be useful. Even if they don't support it,
+it is safe to say Y here.
+
+The PPP Deflate compression method ("PPP Deflate compression",
+above) is preferable to BSD-Compress, because it compresses better
+and is patent-free.
+
+Note that the BSD compression code will always be compiled as a
+module; it is called bsd_comp.o and will show up in the directory
+modules once you have said "make modules". If unsure, say N.
+.
+PPPOE 'PPP over Ethernet' text
+Support for PPP over Ethernet.
+
+This driver requires a specially patched pppd daemon. The patch to
+pppd, along with binaries of a patched pppd package can be found at:
+http://www.shoshin.uwaterloo.ca/~mostrows
+.
+SLIP 'SLIP (serial line) support' text
+Say Y if you intend to use SLIP or CSLIP (compressed SLIP) to
+connect to your Internet service provider or to connect to some
+other local Unix box or if you want to configure your Linux box as a
+Slip/CSlip server for other people to dial in. SLIP (Serial Line
+Internet Protocol) is a protocol used to send Internet traffic over
+serial connections such as telephone lines or null modem cables;
+nowadays, the protocol PPP is more commonly used for this same
+purpose.
+
+Normally, your access provider has to support SLIP in order for you
+to be able to use it, but there is now a SLIP emulator called SLiRP
+around (available via FTP (user: anonymous) from
+ftp://metalab.unc.edu/pub/Linux/system/network/serial/ ) which
+allows you to use SLIP over a regular dial up shell connection. If
+you plan to use SLiRP, make sure to say Y to CSLIP, below. The
+NET-3-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , explains how to
+configure SLIP. Note that you don't need this option if you just
+want to run term (term is a program which gives you almost full
+Internet connectivity if you have a regular dial up shell account on
+some Internet connected Unix computer. Read
+http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html ). SLIP
+support will enlarge your kernel by about 4 KB. If unsure, say N.
+
+If you want to compile this 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 as well as
+Documentation/networking/net-modules.txt. The module will be called
+slip.o.
+.
+SLIP_COMPRESSED 'CSLIP compressed headers' text
+This protocol is faster than SLIP because it uses compression on the
+TCP/IP headers (not on the data itself), but it has to be supported
+on both ends. Ask your access provider if you are not sure and
+answer Y, just in case. You will still be able to use plain SLIP. If
+you plan to use SLiRP, the SLIP emulator (available from
+ftp://metalab.unc.edu/pub/Linux/system/network/serial/ ) which
+allows you to use SLIP over a regular dial up shell connection, you
+definitely want to say Y here. The NET-3-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , explains how to configure
+CSLIP. This won't enlarge your kernel.
+.
+SLIP_SMART 'Keepalive and linefill' text
+Adds additional capabilities to the SLIP driver to support the
+RELCOM line fill and keepalive monitoring. Ideal on poor quality
+analogue lines.
+.
+SLIP_MODE_SLIP6 'Six bit SLIP encapsulation' text
+Just occasionally you may need to run IP over hostile serial
+networks that don't pass all control characters or are only seven
+bit. Saying Y here adds an extra mode you can use with SLIP:
+"slip6". In this mode, SLIP will only send normal ASCII symbols over
+the serial device. Naturally, this has to be supported at the other
+end of the link as well. It's good enough, for example, to run IP
+over the async ports of a Camtec JNT Pad. If unsure, say N.
+.
+#
+# Wireless LAN
+NET_RADIO 'Wireless LAN (non-hamradio)' text
+Support for wireless LANs and everything having to do with radio,
+but not with amateur radio or FM broadcasting.
+
+Saying Y here also enables the Wireless Extensions (creates
+/proc/net/wireless and enables ifconfig access). The Wireless
+Extension is a generic API allowing a driver to expose to the user
+space configuration and statistics specific to common Wireless LANs.
+The beauty of it is that a single set of tool can support all the
+variations of Wireless LANs, regardless of their type (as long as
+the driver supports Wireless Extension). Another advantage is that
+these parameters may be changed on the fly without restarting the
+driver (or Linux). If you wish to use Wireless Extensions with
+wireless PCMCIA (PC-) cards, you need to say Y here; you can fetch
+the tools from
+http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html .
+
+Some user-level drivers for scarab devices which don't require
+special kernel support are available from
+ftp://shadow.cabi.net/pub/Linux .
+.
+STRIP 'STRIP (Metricom Starmode radio IP)' text
+Say Y if you have a Metricom radio and intend to use Starmode Radio
+IP. STRIP is a radio protocol developed for the MosquitoNet project
+(on the WWW at http://mosquitonet.stanford.edu/ ) to send Internet
+traffic using Metricom radios. Metricom radios are small, battery
+powered, 100kbit/sec packet radio transceivers, about the size and
+weight of a cellular telephone. (You may also have heard them called
+"Metricom modems" but we avoid the term "modem" because it misleads
+many people into thinking that you can plug a Metricom modem into a
+phone line and use it as a modem.)
+
+You can use STRIP on any Linux machine with a serial port, although
+it is obviously most useful for people with laptop computers. If you
+think you might get a Metricom radio in the future, there is no harm
+in saying Y to STRIP now, except that it makes the kernel a bit
+bigger.
+
+You can also compile this 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
+strip.o.
+.
+WAVELAN 'AT&T WaveLAN & DEC RoamAbout DS support' text
+The Lucent WaveLAN (formerly NCR and AT&T; or DEC RoamAbout DS) is
+a Radio LAN (wireless Ethernet-like Local Area Network) using the
+radio frequencies 900 MHz and 2.4 GHz.
+
+This driver support the ISA version of the WaveLAN card. A separate
+driver for the PCMCIA (PC-card) hardware is available in David
+Hinds' pcmcia-cs package (see the file Documentation/Changes for
+location).
+
+If you want to use an ISA WaveLAN card under Linux, say Y and read
+the Ethernet-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . Some more specific
+information is contained in Documentation/networking/wavelan.txt and
+in the source code drivers/net/wavelan.p.h.
+
+You will also need the wireless tools package available from
+http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html .
+Please read the man pages contained therein.
+
+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 wavelan.o. 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.
+.
+ARLAN 'Aironet Arlan 655 & IC2200 DS support' text
+Aironet makes Arlan, a class of wireless LAN adapters. These use the
+www.Telxon.com chip, which is also used on several similar cards.
+This driver is tested on the 655 and IC2200 series cards. Look at
+http://www.ylenurme.ee/~elmer/655/ for the latest information.
+
+The driver is built as two modules, arlan and arlan-proc. The latter
+is the /proc interface and is not needed most of time.
+
+On some computers the card ends up in non-valid state after some
+time. Use a ping-reset script to clear it.
+.
+AIRONET4500 'Aironet 4500/4800 series adapters' text
+www.aironet.com (recently bought by Cisco) makes these 802.11 DS
+adapters. Driver by Elmer Joandi (elmer@ylenurme.ee).
+
+Say Y here if you have such an adapter, and then say Y below to
+the option that applies to your particular type of card (PCI, ISA,
+or PCMCIA).
+
+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 aironet4500_core.o. 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.
+
+quick config parameters:
+ SSID=tsunami - "The Password"
+ adhoc=1 there are no Access Points around
+ master=1 Adhoc master (the one who creates network
+ sync)
+ slave=1 Adhoc slave (btw, it is still forming own net
+ sometimes, and has problems with firmware...
+ change IbssJoinNetTimeout from /proc...)
+ channel=1..? meaningful in adhoc mode
+
+If you have problems with screwing up card, both_bap_lock=1 is a
+conservative value (performance hit 15%).
+
+All other parameters can be set via the proc interface.
+.
+AIRONET4500_NONCS 'Aironet 4500/4800 ISA/PCI/PNP/365 support' text
+If you have an ISA, PCI or PCMCIA Aironet 4500/4800 wireless LAN
+card, say Y here, and then also to the options below that apply
+to you.
+
+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 aironet4500_card.o. If you want to
+compile it as a module, say M here and read
+Documentation/modules.txt
+.
+AIRONET4500_PNP 'Aironet 4500/4800 PNP support' text
+If you have an ISA Aironet 4500/4800 card which you want to use in
+PNP (Plug and Play) mode, say Y here. This is the recommended mode
+for ISA cards. Remember however to enable the PNP jumper on the
+board if you say Y here.
+.
+AIRONET4500_PCI 'Aironet 4500/4800 PCI support' text
+If you have an PCI Aironet 4500/4800 card, say Y here.
+.
+AIRONET4500_ISA 'Aironet 4500/4800 ISA broken support' text
+If you have an ISA Aironet 4500/4800 card which you want to run in
+non-PNP mode, say Y here. This is not recommended and does not work
+correctly at this point. Say N.
+.
+AIRONET4500_I365 'Aironet 4500/4800 I365 broken support' text
+If you have a PCMCIA Aironet 4500/4800 card which you want to use
+without the standard PCMCIA cardservices provided by the pcmcia-cs
+package, say Y here. This is not recommended, so say N.
+.
+AIRONET4500_PROC 'Aironet 4500/4800 PROC interface' text
+If you say Y here (and to the "/proc file system" below), you will
+be able to configure your Aironet card via the
+/proc/sys/aironet4500 interface.
+
+Additional info: look in drivers/net/aironet4500_rids.c.
+
+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 aironet4500_proc.o. If you want to
+compile it as a module, say M here and read
+Documentation/modules.txt.
+
+NOTE: the proc interface uses a lot of memory, so it is recommended
+ to compile it as a module and remove the module after
+ configuration.
+.
+AIRO 'Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards' text
+This is the standard Linux driver to support Cisco/Aironet ISA
+and PCI 802.11 wireless cards.
+It supports the new 802.11b cards from Cisco (Cisco 34X, Cisco 35X
+- with or without encryption) as well as card before the Cisco
+aquisition (Aironet 4500, Aironet 4800, Aironet 4800B).
+
+This driver support both the standard Linux Wireless Extensions
+and Cisco proprietary API, so both the Linux Wireless Tools and the
+Cisco Linux utilities can be used to configure the card.
+
+The driver can be compiled as a module and will be named "airo.o".
+.
+AIRO_CS 'Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards' text
+This is the standard Linux driver to support Cisco/Aironet PCMCIA
+802.11 wireless cards. This driver is the same as the Aironet
+driver part of the Linux Pcmcia package.
+It supports the new 802.11b cards from Cisco (Cisco 34X, Cisco 35X
+- with or without encryption) as well as card before the Cisco
+aquisition (Aironet 4500, Aironet 4800, Aironet 4800B). It also
+supports OEM of Cisco such as the DELL TrueMobile 4800 and Xircom
+802.11b cards.
+
+This driver support both the standard Linux Wireless Extensions
+and Cisco proprietary API, so both the Linux Wireless Tools and the
+Cisco Linux utilities can be used to configure the card.
+
+To use your PC-cards, you will need supporting software from David
+Hinds' pcmcia-cs package (see the file Documentation/Changes for
+location). You also want to check out the PCMCIA-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto .
+.
+HERMES 'Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)' text
+A driver for 802.11b wireless cards based based on the "Hermes" or
+Intersil HFA384x (Prism 2) MAC controller. This includes the vast
+majority of the PCMCIA 802.11b cards (which are nearly all rebadges)
+- except for the Cisco/Aironet cards. Cards supported include the
+Apple Airport (not a PCMCIA card), WavelanIEEE/Orinoco,
+Cabletron/EnteraSys Roamabout, ELSA AirLancer, MELCO Buffalo, Avaya,
+IBM High Rate Wireless, Farralon Syyline, Samsung MagicLAN, Netgear
+MA401, LinkSys WPC-11, D-Link DWL-650, 3Com AirConnect, Intel
+PRO/Wireless, and Symbol Spectrum24 High Rate amongst others.
+
+This option includes the guts of the driver, but in order to
+actually use a card you will also need to enable support for PCMCIA
+Hermes cards, PLX9052 based PCI adaptors or the Apple Airport below.
+
+You will also very likely also need the Wireless Tools in order to
+configure your card and that /etc/pcmcia/wireless.opts works :
+ http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html
+.
+APPLE_AIRPORT 'Apple Airport support (built-in)' text
+Enable support for the Apple Airport card (which is essentially a
+Lucent Orinoco card with a non-standard interface) built into some
+newer Apple Macintosh machines.
+.
+PLX_HERMES 'Hermes in PLX9052 based PCI adaptor support (Netgear MA301 etc.)'
+text
+Enable support for PCMCIA cards supported by the "Hermes" (aka
+orinoco_cs) driver when used in PLX9052 based PCI adaptors. These
+adaptors are not a full PCMCIA controller but act as a more limited
+PCI <-> PCMCIA bridge. Several vendors sell such adaptors so that
+802.11b PCMCIA cards can be used in desktop machines. The Netgear
+MA301 is such an adaptor.
+
+Support for these adaptors is so far still incomplete and buggy.
+You have been warned.
+.
+
+#
+# WAN devices configuration
+WAN 'Wan interfaces support' text
+Wide Area Networks (WANs), such as X.25, frame relay and leased
+lines, are used to interconnect Local Area Networks (LANs) over vast
+distances with data transfer rates significantly higher than those
+achievable with commonly used asynchronous modem connections.
+Usually, a quite expensive external device called a `WAN router' is
+needed to connect to a WAN.
+
+As an alternative, a relatively inexpensive WAN interface card can
+allow your Linux box to directly connect to a WAN. If you have one
+of those cards and wish to use it under Linux, say Y here and also
+to the WAN driver for your card, below.
+
+If unsure, say N.
+.
+HOSTESS_SV11 'Comtrol Hostess SV-11 support' text
+This is a network card for low speed synchronous serial links, at
+up to 256Kbps. It supports both PPP and Cisco HDLC.
+
+At this point, the driver can only be compiled as a module.
+.
+COSA 'COSA/SRP sync serial board support' text
+This is a driver for COSA and SRP synchronous serial boards. These
+boards allow to connect synchronous serial devices (for example
+base-band modems, or any other device with the X.21, V.24, V.35 or
+V.36 interface) to your Linux box. The cards can work as the
+character device, synchronous PPP network device, or the Cisco HDLC
+network device.
+
+To actually use the COSA or SRP board, you will need user-space
+utilities for downloading the firmware to the cards and to set them
+up. Look at the http://www.fi.muni.cz/~kas/cosa/ for more
+information about the cards (including the pointer to the user-space
+utilities). You can also read the comment at the top of the
+drivers/net/cosa.c for details about the cards and the driver
+itself.
+
+The driver will be compiled as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module will be called cosa.o. For general information about
+modules read Documentation/modules.txt.
+.
+LANMEDIA 'LanMedia Corp. serial boards (SSI/V.35, T1/E1, HSSI, T3)'
+text
+This is a driver for the following Lan Media family of serial boards.
+
+LMC 1000 board allows you to connect synchronous serial devices (for
+example base-band modems, or any other device with the X.21, V.24,
+V.35 or V.36 interface) to your Linux box.
+
+LMC 1200 with on board DSU board allows you to connect your Linux
+box dirrectly to a T1 or E1 circuit.
+
+LMC 5200 board provides a HSSI interface capable of runnig up to
+52 mbits per second.
+
+LMC 5245 board connects directly to a T3 circuit saving the
+additional external hardware.
+
+To change setting such as syncPPP vs cisco HDLC or clock source you
+will need lmcctl. It it available at ftp.lanmedia.com.
+
+This code is also available as a module called lmc.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.
+.
+COMX 'MultiGate (COMX) synchronous serial board support' text
+Say Y if you want to use any board from the MultiGate (COMX) family.
+These boards are synchronous serial adapters for the PC,
+manufactured by ITConsult-Pro Co, Hungary.
+
+Read linux/Documentation/networking/comx.txt for help on configuring
+and using COMX interfaces. Further info on these cards can be found
+at http://www.itc.hu or .
+
+You must say Y to "/proc file system support" (CONFIG_PROC_FS) to
+use this driver.
+
+If you want to compile this as a module, say M and read
+Documentation/modules.txt. The module will be called comx.o.
+.
+COMX_HW_COMX 'Support for COMX/CMX/HiCOMX boards' text
+Hardware driver for the 'CMX', 'COMX' and 'HiCOMX' boards from the
+MultiGate family. Say Y if you have one of these.
+
+You will need additional firmware to use these cards, which are
+downloadable from ftp://ftp.itc.hu/.
+
+If you want to compile this as a module, say M and read
+Documentation/modules.txt. The module will be called comx-hw-comx.o.
+.
+COMX_HW_LOCOMX 'Support for LoCOMX board' text
+Hardware driver for the 'LoCOMX' board from the MultiGate family.
+Say Y if you have a board like this.
+
+If you want to compile this as a module, say M and read
+Documentation/modules.txt. The module will be called
+comx-hw-locomx.o.
+.
+COMX_HW_MIXCOM 'Support for MixCOM board' text
+Hardware driver for the 'MixCOM' board from the MultiGate family.
+Say Y if you have a board like this.
+
+If you want to use the watchdog device on this card, you should
+select it in the Watchdog Cards section of the Character Devices
+configuration. The ISDN interface of this card is Teles 16.3
+compatible, you should enable it in the ISDN configuration menu. The
+driver for the flash ROM of this card is available separately on
+ftp://ftp.itc.hu/.
+
+If you want to compile this as a module, say M and read
+Documentation/modules.txt. The module will be called
+comx-hw-mixcom.o.
+.
+COMX_PROTO_PPP 'Support for HDLC and syncPPP protocols on MultiGate boards'
+text
+Cisco-HDLC and synchronous PPP protocol driver for all MultiGate
+boards. Say Y if you want to use either protocol on your MultiGate
+boards.
+
+If you want to compile this as a module, say M and read
+Documentation/modules.txt. The module will be called
+comx-proto-ppp.o.
+.
+COMX_PROTO_LAPB 'Support for LAPB protocol on MultiGate boards' text
+LAPB protocol driver for all MultiGate boards. Say Y if you
+want to use this protocol on your MultiGate boards.
+
+If you want to compile this as a module, say M and read
+Documentation/modules.txt. The module will be called
+comx-proto-lapb.o.
+.
+COMX_PROTO_FR 'Support for Frame Relay on MultiGate boards' text
+Frame Relay protocol driver for all MultiGate boards. Say Y if you
+want to use this protocol on your MultiGate boards.
+
+If you want to compile this as a module, say M and read
+Documentation/modules.txt. The module will be called
+comx-proto-fr.o.
+.
+DSCC4 'Etinc PCISYNC serial board support' text
+This is a driver for Etinc PCISYNC boards based on the Infineon
+(ex. Siemens) DSCC4 chipset. It is supposed to work with the four
+ports card. Take a look at http://www.cogenit.fr/dscc4
+for further informations about the driver and his configuration.
+
+The driver will be compiled as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module will be called dscc4.o. For general information about
+modules read Documentation/modules.txt.
+.
+FARSYNC 'FarSync T-Series X.21 (and V.35/V.24) cards'
+
+SEALEVEL_4021 'Sealevel Systems 4021 support' text
+This is a driver for the Sealevel Systems ACB 56 serial I/O adapter.
+
+This driver can only be compiled as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+If you want to do that, say M here. The module will be called
+sealevel.o.
+.
+SYNCLINK_SYNCPPP 'SyncLink HDLC/SYNCPPP support' text
+Enables HDLC/SYNCPPP support for the SyncLink WAN driver.
+Normally the SyncLink WAN driver works with the main PPP
+driver (ppp.c) and pppd program. HDLC/SYNCPPP support allows use
+of the Cisco HDLC/PPP driver (syncppp.c).
+The SyncLink WAN driver (in character devices) must also be enabled.
+.
+HDLC 'Generic HDLC driver' text
+Say Y to this option if your Linux box contains a WAN card supported
+by this driver and you are planning to connect the box to a WAN
+( = Wide Area Network). You will need supporting software from
+http://hq.pm.waw.pl/hdlc/.
+Generic HDLC driver currently supports raw HDLC, Cisco HDLC, Frame
+Relay, synchronous Point-to-Point Protocol (PPP) and X.25.
+
+If unsure, say N here.
+.
+HDLC_PPP 'Synchronous Point-to-Point Protocol (PPP) support' text
+Say Y to this option if you want generic HDLC driver to support
+PPP over WAN (Wide Area Network) connections.
+
+If unsure, say N here.
+.
+HDLC_X25 'CCITT X.25 over HDLC support' text
+Say Y to this option if you want generic HDLC driver to support
+X.25 protocol over WAN (Wide Area Network) connections.
+
+If unsure, say N here.
+.
+N2 'SDL RISCom/N2 support' text
+This driver is for RISCom/N2 single or dual channel ISA cards
+made by SDL Communications Inc. If you have such a card,
+say Y here and see http://hq.pm.waw.pl/pub/hdlc/
+
+Note that N2csu and N2dds cards are not supported by this driver.
+
+If unsure, say N here.
+.
+C101 'Moxa C101 support' text
+This driver is for C101 SuperSync ISA cards made by Moxa
+Technologies Co., Ltd. If you have such a card,
+say Y here and see http://hq.pm.waw.pl/pub/hdlc/
+
+If unsure, say N here.
+.
+DLCI 'Frame Relay (DLCI) support' text
+This is support for the frame relay protocol; frame relay is a fast
+low-cost way to connect to a remote Internet access provider or to
+form a private wide area network. The one physical line from your
+box to the local "switch" (i.e. the entry point to the frame relay
+network, usually at the phone company) can carry several logical
+point-to-point connections to other computers connected to the frame
+relay network. For a general explanation of the protocol, check out
+http://www.frforum.com/ on the WWW. To use frame relay, you need
+supporting hardware (called FRAD) and certain programs from the
+net-tools package as explained in
+Documentation/networking/framerelay.txt.
+
+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 dlci.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+DLCI_COUNT 'Max open DLCI' text
+This is the maximal number of logical point-to-point frame relay
+connections (the identifiers of which are called DCLIs) that
+the driver can handle. The default is probably fine.
+.
+DLCI_MAX 'Max DLCI per device' text
+You can specify here how many logical point-to-point frame relay
+connections (the identifiers of which are called DCLIs) should be
+handled by each of your hardware frame relay access devices. Go with
+the default.
+.
+SDLA 'SDLA (Sangoma S502/S508) support' text
+Say Y here if you need a driver for the Sangoma S502A, S502E, and
+S508 Frame Relay Access Devices. These are multi-protocol cards, but
+only frame relay is supported by the driver at this time. Please
+read Documentation/framerelay.txt.
+
+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 sdla.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+WAN_ROUTER_DRIVERS 'WAN router drivers' text
+If you have a WAN interface card and you want your Linux box to act
+as a WAN router, thereby connecting you Local Area Network to the
+outside world over the WAN connection, say Y here and then to the
+driver for your card below. In addition, you need to say Y to "Wan
+Router".
+
+You will need the wan-tools package which is available from
+ftp://ftp.sangoma.com . Read Documentation/networking/wan-router.txt
+for more information.
+
+Note that the answer to this question won't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about WAN router drivers. If unsure, say N.
+.
+VENDOR_SANGOMA 'Sangoma WANPIPE(tm) multiprotocol cards' text
+
+WANPIPE from Sangoma Technologies Inc. (http://www.sangoma.com)
+is a family of intelligent multiprotocol WAN adapters with data
+transfer rates up to 4Mbps. They are also known as Synchronous
+Data Link Adapters (SDLA) and are designated as S514-PCI or S508-ISA.
+These cards support
+
+ - X.25, Frame Relay, PPP, Cisco HDLC protocols.
+
+ - API support for protocols like HDLC (LAPB),
+ HDLC Streaming, X.25, Frame Relay and BiSync.
+
+ - Ethernet Bridging over Frame Relay protocol.
+
+ - MULTILINK PPP
+
+ - Async PPP (Modem Dialup)
+
+If you have one or more of these cards, say M to this option; you
+may then also want to read the file
+Documentation/networking/wanpipe.txt. The next questions will ask
+you about the protocols you want the driver to support.
+
+The driver will be compiled as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module will be called wanpipe.o. For general information about
+modules read Documentation/modules.txt.
+.
+WANPIPE_X25 'WANPIPE X.25 support' text
+Say Y to this option if you are planning to connect a WANPIPE card
+to an X.25 network. Note, this feature also includes the X.25 API
+support used to develope custom applications over the X.25 protocol.
+If you say N, the X.25 support will not be included in the driver.
+The X.25 option is supported on S514-PCI and S508-ISA cards.
+.
+WANPIPE_CHDLC 'WANPIPE Cisco HDLC support' text
+Say Y to this option if you are planning to connect a WANPIPE card
+to a leased line using the Cisco HDLC protocol. This now supports
+Dual Port Cisco HDLC on the S514-PCI/S508-ISA cards.
+This support also allows user to build applications using the
+HDLC streaming API.
+
+CHDLC Streaming driver also supports MULTILINK PPP
+support that can bind multiple WANPIPE T1 cards into
+a single logical channel.
+
+If you say N, the Cisco HDLC support and
+HDLC streaming API and MULTILINK PPP will not be
+included in the driver.
+.
+WANPIPE_FR 'WANPIPE Frame Relay support' text
+Say Y to this option if you are planning to connect a WANPIPE card
+to a frame relay network, or use frame relay API to develope
+custom applications over the Frame Relay protocol.
+This feature also contains the Ethernet Bridging over Frame Relay,
+where a WANPIPE frame relay link can be directly connected to the Linux
+kernel bridge. If you say N, the frame relay support will
+not be included in the driver. The Frame Relay option is
+supported on S514-PCI and S508-ISA cards.
+.
+WANPIPE_PPP 'WANPIPE PPP support' text
+Say Y to this option if you are planning to connect a WANPIPE card
+to a leased line using Point-to-Point protocol (PPP). If you say N,
+the PPP support will not be included in the driver. The PPP option
+is supported on S514-PCI/S508-ISA cards.
+.
+WANPIPE_MULTPPP 'WANPIPE Multi-Port PPP support' text
+Say Y to this option if you are planning to connect a WANPIPE card
+to a leased line using Point-to-Point protocol (PPP). Note, the
+MultiPort PPP uses the Linux Kernel SyncPPP protocol over the Sangoma
+HDLC Streaming adapter. In this case each Sangoma adapter port
+can support an independent PPP connection. For example, a single
+Quad-Port PCI adapter can support up to four independent
+PPP links. If you say N,the PPP support will not be included
+in the driver. The PPP option is supported on S514-PCI/S508-ISA cards.
+.
+CYCLADES_SYNC 'Cyclom 2X(tm) multiprotocol cards' text
+Cyclom 2X from Cyclades Corporation (http://www.cyclades.com and
+http://www.cyclades.com.br) is an intelligent multiprotocol WAN
+adapter with data transfer rates up to 512 Kbps. These cards support
+the X.25 and SNA related protocols. If you have one or more of these
+cards, say Y to this option. The next questions will ask you about
+the protocols you want the driver to support (for now only X.25 is
+supported).
+
+While no documentation is available at this time please grab the
+wanconfig tarball in http://www.conectiva.com.br/~acme/cycsyn-devel
+(with minor changes to make it compile with the current wanrouter
+include files; efforts are being made to use the original package
+available at ftp://ftp.sangoma.com ).
+
+Feel free to contact me or the cycsyn-devel mailing list at
+acme@conectiva.com.br and cycsyn-devel@bazar.conectiva.com.br for
+additional details, I hope to have documentation available as soon
+as possible. (Cyclades Brazil is writing the Documentation).
+
+The driver will be compiled as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module will be called cyclomx.o. For general information about
+modules read Documentation/modules.txt.
+.
+CYCLOMX_X25 'Cyclom 2X X.25 support' text
+Say Y to this option if you are planning to connect a Cyclom 2X card
+to an X.25 network.
+
+If you say N, the X.25 support will not be included in the driver
+(saves about 11 KB of kernel memory).
+.
+# X.25 network drivers
+LAPBETHER 'LAPB over Ethernet driver' text
+This is a driver for a pseudo device (typically called /dev/lapb0)
+which allows you to open an LAPB point-to-point connection to some
+other computer on your Ethernet network. In order to do this, you
+need to say Y or M to the driver for your Ethernet card as well as
+to "LAPB Data Link Driver".
+
+If you want 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 lapbether.o. If unsure, say N.
+.
+X25_ASY 'X.25 async driver' text
+This is a driver for sending and receiving X.25 frames over regular
+asynchronous serial lines such as telephone lines equipped with
+ordinary modems. Experts should note that this driver doesn't
+currently comply with the asynchronous HDLS framing protocols in
+CCITT recommendation X.25.
+
+If you want 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 x25_asy.o. If unsure, say N.
+.
+SBNI 'SBNI12-xx support' text
+This is a driver for ISA SBNI12-xx cards which are low cost
+alternatives to leased line modems. Say Y if you want to insert
+the driver into the kernel or say M to compile it as a module (the
+module will be called sbni.o).
+
+You can find more information and last versions of drivers and
+utilities at http://www.granch.ru . If you have any question you
+can send email to sbni@granch.ru.
+
+Say N if unsure.
+.
+SBNI_MULTILINE 'Multiple line feature support'
+
+NET_FC 'Fibre Channel driver support' text
+Fibre Channel is a high speed serial protocol mainly used to connect
+large storage devices to the computer; it is compatible with and
+intended to replace SCSI.
+
+If you intend to use Fibre Channel, you need to have a Fibre channel
+adaptor card in your computer; say Y here and to the driver for your
+adaptor below. You also should have said Y to "SCSI support" and
+"SCSI generic support".
+.
+IPHASE5526 'Interphase 5526 Tachyon chipset based adaptor support' text
+Say Y here if you have a Fibre Channel adaptor of this kind.
+
+The 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 iph5526.o. For general information about
+modules read Documentation/modules.txt.
+.
+RCPCI 'Red Creek Hardware VPN' text
+This is a driver for hardware which provides a Virtual Private
+Network (VPN). Say Y if you have it.
+
+This code is also available as a module called rcpci.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.
+.
+SHAPER 'Traffic Shaper' text
+The traffic shaper is a virtual network device that allows you to
+limit the rate of outgoing data flow over some other network device.
+The traffic that you want to slow down can then be routed through
+these virtual devices. See Documentation/networking/shaper.txt for
+more information.
+
+An alternative to this traffic shaper is the experimental
+Class-Based Queueing (CBQ) scheduling support which you get if you
+say Y to "QoS and/or fair queueing" above.
+
+To set up and configure shaper devices, you need the shapecfg
+program, available from ftp://shadow.cabi.net/pub/Linux in the
+shaper package.
+
+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 shaper.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt. If unsure,
+say N.
+.
+#
+# Token Ring driver configuration
+TR 'Token Ring driver support' text
+Token Ring is IBM's way of communication on a local network; the
+rest of the world uses Ethernet. To participate on a Token Ring
+network, you need a special Token ring network card. If you are
+connected to such a Token Ring network and want to use your Token
+Ring card under Linux, say Y here and to the driver for your
+particular card below and read the Token-Ring mini-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto . Most people can
+say N here.
+.
+IBMTR 'IBM Tropic chipset based adapter support' text
+This is support for all IBM Token Ring cards that don't use DMA. If
+you have such a beast, say Y and read the Token-Ring mini-HOWTO,
+available from http://www.linuxdoc.org/docs.html#howto .
+
+Warning: this driver will almost definitely fail if more than one
+active Token Ring card is present.
+
+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 ibmtr.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+IBMOL 'IBM Olympic chipset PCI adapter support' text
+This is support for all non-Lanstreamer IBM PCI Token Ring Cards.
+Specifically this is all IBM PCI, PCI Wake On Lan, PCI II, PCI II
+Wake On Lan, and PCI 100/16/4 adapters.
+
+If you have such an adapter, say Y and read the Token-Ring
+mini-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+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 olympic.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+
+Also read the file Documentation/networking/olympic.txt or check the
+Linux Token Ring Project site for the latest information at
+http://www.linuxtr.net .
+.
+IBMLS 'IBM Lanstreamer chipset PCI adapter support' text
+This is support for IBM Lanstreamer PCI Token Ring Cards.
+
+If you have such an adapter, say Y and read the Token-Ring
+mini-HOWTO available via FTP (user:anonymous) from
+ftp://metalab.unc/edu/pub/Linux/docs/HOWTO.
+
+This driver is also available as a modules ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The modules will be called lanstreamer.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+TMS380TR 'Generic TMS380 Token Ring ISA/PCI/MCA/EISA adapter support'
+text
+This driver provides generic support for token ring adapters
+based on the Texas Instruments TMS380 series chipsets. This
+includes the SysKonnect TR4/16(+) ISA (SK-4190), SysKonnect
+TR4/16(+) PCI (SK-4590), SysKonnect TR4/16 PCI (SK-4591),
+Compaq 4/16 PCI, Thomas-Conrad TC4048 4/16 PCI, and several
+Madge adapters. If you say Y here, you will be asked to select
+which cards to support below. If you're using modules, each
+class of card will be supported by a separate module.
+
+If you have such an adapter and would like to use it, say Y and
+read the Token-Ring mini-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+Also read the file Documentation/networking/tms380tr.txt or
+check http://www.auk.cx/tms380tr/ .
+
+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 tms380tr.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+TMSPCI 'Generic TMS380 PCI support' text
+This tms380 module supports generic TMS380-based PCI cards.
+
+These cards are known to work:
+ - Compaq 4/16 TR PCI
+ - SysKonnect TR4/16 PCI (SK-4590/SK-4591)
+ - Thomas-Conrad TC4048 PCI 4/16
+ - 3Com Token Link Velocity
+
+This driver is available as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module will be called tmspci.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+TMSISA 'Generic TMS380 ISA support'
+
+ABYSS 'Madge Smart 16/4 PCI Mk2 support' text
+This tms380 module supports the Madge Smart 16/4 PCI Mk2
+cards (51-02).
+
+This driver is available as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module will be called abyss.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+MADGEMC 'Madge Smart 16/4 Ringnode MicroChannel' text
+This tms380 module supports the Madge Smart 16/4 MC16 and MC32
+MicroChannel adapters.
+
+This driver is available as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module will be called madgemc.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+SMCTR 'SMC ISA/MCA Token Ring adapter support' text
+This is support for the ISA and MCA SMC Token Ring cards,
+specifically SMC TokenCard Elite (8115T) and SMC TokenCard Elite/A
+(8115T/A) adapters.
+
+If you have such an adapter and would like to use it, say Y or M and
+read the Token-Ring mini-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto and the file
+Documentation/networking/smctr.txt.
+
+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 smctr.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+MKISS 'Serial port KISS driver for AX.25' text
+KISS is a protocol used for the exchange of data between a computer
+and a Terminal Node Controller (a small embedded system commonly
+used for networking over AX.25 amateur radio connections; it
+connects the computer's serial port with the radio's microphone
+input and speaker output).
+
+Although KISS is less advanced than the 6pack protocol, it has
+the advantage that it is already supported by most modern TNCs
+without the need for a firmware upgrade.
+
+If you want 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 mkiss.o.
+.
+CONFIG_6PACK 'Serial port 6PACK driver for AX.25' text
+6pack is a transmission protocol for the data exchange between your
+PC and your TNC (the Terminal Node Controller acts as a kind of
+modem connecting your computer's serial port to your radio's
+microphone input and speaker output). This protocol can be used as
+an alternative to KISS for networking over AX.25 amateur radio
+connections, but it has some extended functionality.
+
+Note that this driver is still experimental and might cause
+problems. For details about the features and the usage of the
+driver, read Documentation/networking/6pack.txt.
+
+If you want 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 6pack.o.
+.
+BPQETHER 'BPQ Ethernet driver' text
+AX.25 is the protocol used for computer communication over amateur
+radio. If you say Y here, you will be able to send and receive AX.25
+traffic over Ethernet (also called "BPQ AX.25"), which could be
+useful if some other computer on your local network has a direct
+amateur radio connection.
+.
+DMASCC 'High-speed (DMA) SCC driver for AX.25' text
+This is a driver for high-speed SCC boards, i.e. those supporting
+DMA on one port. You usually use those boards to connect your
+computer to an amateur radio modem (such as the WA4DSY 56kbps
+modem), in order to send and receive AX.25 packet radio network
+traffic.
+
+Currently, this driver supports Ottawa PI/PI2, Paccomm/Gracilis
+PackeTwin, and S5SCC/DMA boards. They are detected automatically.
+If you have one of these cards, say Y here and read the AX25-HOWTO,
+available from http://www.linuxdoc.org/docs.html#howto .
+
+This driver can operate multiple boards simultaneously. If you
+compile it as a module (by saying M instead of Y), it will be called
+dmascc.o. If you don't pass any parameter to the driver, all
+possible I/O addresses are probed. This could irritate other devices
+that are currently not in use. You may specify the list of addresses
+to be probed by "dmascc=addr1,addr2,..." (when compiled into the
+kernel image) or "io=addr1,addr2,..." (when loaded as a module). The
+network interfaces will be called dmascc0 and dmascc1 for the board
+detected first, dmascc2 and dmascc3 for the second one, and so on.
+
+Before you configure each interface with ifconfig, you MUST set
+certain parameters, such as channel access timing, clock mode, and
+DMA channel. This is accomplished with a small utility program,
+dmascc_cfg, available at
+http://www.nt.tuwien.ac.at/~kkudielk/Linux/ . Please be sure to get
+at least version 1.27 of dmascc_cfg, as older versions will not
+work with the current driver.
+.
+SCC 'Z8530 SCC driver for AX.25' text
+These cards are used to connect your Linux box to an amateur radio
+in order to communicate with other computers. If you want to use
+this, read Documentation/networking/z8530drv.txt and the AX25-HOWTO,
+available from http://www.linuxdoc.org/docs.html#howto . Also
+make sure to say Y to "Amateur Radio AX.25 Level 2" support.
+
+If you want to compile this 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 scc.o.
+.
+SCC_DELAY 'Additional delay for PA0HZP OptoSCC compatible boards' text
+Say Y here if you experience problems with the SCC driver not
+working properly; please read Documentation/networking/z8530drv.txt
+for details. If unsure, say N.
+.
+SCC_TRXECHO 'Support for TRX that feedback the tx signal to rx'
+
+BAYCOM_SER_FDX 'BAYCOM ser12 full-duplex driver for AX.25' text
+This is one of two drivers for Baycom style simple amateur radio
+modems that connect to a serial interface. The driver supports the
+ser12 design in full duplex mode. In addition, it allows the
+baudrate to be set between 300 and 4800 baud (however not all modems
+support all baudrates). This is the preferred driver. The next
+driver, "BAYCOM ser12 half duplex driver for AX.25" is the old
+driver and still provided in case this driver does not work with
+your serial interface chip. To configure the driver, use the sethdlc
+utility available in the standard ax25 utilities package. For
+information on the modems, see http://www.baycom.de and
+Documentation/networking/baycom.txt.
+
+If you want 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. This is recommended.
+The module will be called baycom_ser_fdx.o.
+.
+BAYCOM_SER_HDX 'BAYCOM ser12 half-duplex driver for AX.25' text
+This is one of two drivers for Baycom style simple amateur radio
+modems that connect to a serial interface. The driver supports the
+ser12 design in full duplex mode. This is the old driver. It is
+still provided in case your serial interface chip does not work with
+the full duplex driver. This driver is depreciated. To configure the
+driver, use the sethdlc utility available in the standard ax25
+utilities package. For information on the modems, see
+http://www.baycom.de and Documentation/networking/baycom.txt.
+
+If you want 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. This is recommended.
+The module will be called baycom_ser_hdx.o.
+.
+BAYCOM_PAR 'BAYCOM picpar and par96 driver for AX.25' text
+This is a driver for Baycom style simple amateur radio modems that
+connect to a parallel interface. The driver supports the picpar and
+par96 designs. To configure the driver, use the sethdlc utility
+available in the standard ax25 utilities package. For information on
+the modems, see http://www.baycom.de and the file
+Documentation/networking/baycom.txt.
+
+If you want 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. This is recommended.
+The module will be called baycom_par.o.
+.
+BAYCOM_EPP 'BAYCOM EPP driver for AX.25' text
+This is a driver for Baycom style simple amateur radio modems that
+connect to a parallel interface. The driver supports the EPP
+designs. To configure the driver, use the sethdlc utility available
+in the standard ax25 utilities package. For information on the
+modems, see http://www.baycom.de and the file
+Documentation/networking/baycom.txt.
+
+If you want 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. This is recommended.
+The module will be called baycom_par.o.
+.
+SOUNDMODEM 'Sound card modem driver for AX.25' text
+This experimental driver allows a standard Sound Blaster or
+WindowsSoundSystem compatible sound card to be used as a packet
+radio modem (NOT as a telephone modem!), to send digital traffic
+over amateur radio.
+
+To configure the driver, use the sethdlc, smdiag and smmixer
+utilities available in the standard ax25 utilities package. For
+information on how to key the transmitter, see
+http://www.ife.ee.ethz.ch/~sailer/pcf/ptt_circ/ptt.html and
+Documentation/networking/soundmodem.txt.
+
+If you want 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. This is recommended.
+The module will be called soundmodem.o.
+.
+SOUNDMODEM_SBC 'Sound card modem support for Sound Blaster and compatible cards'
+text
+This option enables the soundmodem driver to use Sound Blaster and
+compatible cards. If you have a dual mode card (i.e. a WSS cards
+with a Sound Blaster emulation) you should say N here and Y to
+"Sound card modem support for WSS and Crystal cards", below, because
+this usually results in better performance. This option also
+supports SB16/32/64 in full duplex mode.
+.
+SOUNDMODEM_WSS 'Sound card modem support for WSS and Crystal cards'
+text
+This option enables the soundmodem driver to use WindowsSoundSystem
+compatible cards. These cards feature a codec chip from either
+Analog Devices (such as AD1848, AD1845, AD1812) or Crystal
+Semiconductors (such as CS4248, CS423x). This option also supports
+the WSS full duplex operation which currently works with Crystal
+CS423x chips. If you don't need full duplex operation, do not enable
+it to save performance.
+.
+SOUNDMODEM_AFSK1200 'Sound card modem support for 1200 baud AFSK modulation'
+text
+This option enables the soundmodem driver 1200 baud AFSK modem,
+compatible to popular modems using TCM3105 or AM7911. The
+demodulator requires about 12% of the CPU power of a Pentium 75 CPU
+per channel.
+.
+SOUNDMODEM_AFSK2400_7 'Sound card modem support for 2400 baud AFSK modulation (7.3728MHz crystal)'
+text
+This option enables the soundmodem driver 2400 baud AFSK modem,
+compatible to TCM3105 modems (over-)clocked with a 7.3728MHz
+crystal. Note that the availability of this driver does _not_ imply
+that I recommend building such links. It is only here since users
+especially in eastern Europe have asked me to do so. In fact this
+modulation scheme has many disadvantages, mainly its incompatibility
+with many transceiver designs and the fact that the TCM3105 (if
+used) is operated widely outside its specifications.
+.
+SOUNDMODEM_AFSK2400_8 'Sound card modem support for 2400 baud AFSK modulation (8MHz crystal)'
+text
+This option enables the soundmodem driver 2400 baud AFSK modem,
+compatible to TCM3105 modems (over-)clocked with an 8MHz crystal.
+Note that the availability of this driver does _not_ imply that I
+recommend building such links. It is only here since users
+especially in eastern Europe have asked me to do so. In fact this
+modulation scheme has many disadvantages, mainly its incompatibility
+with many transceiver designs and the fact that the TCM3105 (if
+used) is operated widely outside its specifications.
+.
+SOUNDMODEM_AFSK2666 'Sound card modem support for 2666 baud AFSK modulation'
+text
+This option enables the soundmodem driver 2666 baud AFSK modem.
+This modem is experimental, and not compatible to anything
+else I know of.
+.
+SOUNDMODEM_HAPN4800 'Sound card modem support for 4800 baud HAPN-1 modulation'
+text
+This option enables the soundmodem driver 4800 baud HAPN-1
+compatible modem. This modulation seems to be widely used 'down
+under' and in the Netherlands. Here, nobody uses it, so I could not
+test if it works. It is compatible to itself, however :-)
+.
+SOUNDMODEM_PSK4800 'Sound card modem support for 4800 baud 8PSK modulation'
+text
+This option enables the soundmodem driver 4800 baud 8PSK modem.
+This modem is experimental, and not compatible to anything
+else I know of.
+.
+SOUNDMODEM_FSK9600 'Sound card modem support for 9600 baud FSK G3RUH modulation'
+text
+This option enables the soundmodem driver 9600 baud FSK modem,
+compatible to the G3RUH standard. The demodulator requires about 4%
+of the CPU power of a Pentium 75 CPU per channel. You can say Y to
+both 1200 baud AFSK and 9600 baud FSK if you want (but obviously you
+can only use one protocol at a time, depending on what the other end
+can understand).
+.
+YAM 'YAM driver for AX.25' text
+The YAM is a modem for packet radio which connects to the serial
+port and includes some of the functions of a Terminal Node
+Controller. If you have one of those, say Y here.
+
+If you want to compile this 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.
+.
+#
+# Arcnet configuration
+ARCNET 'Generic ARCnet support' text
+If you have a network card of this type, say Y and check out the
+(arguably) beautiful poetry in Documentation/networking/arcnet.txt.
+
+You need both this driver, and the driver for the particular ARCnet
+chipset of your card. If you don't know, then it's probably a
+COM90xx type card, so say Y (or M) to "ARCnet COM90xx chipset
+support" below.
+
+You might also want to have a look at the Ethernet-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto (even though ARCnet
+is not really Ethernet).
+
+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 arcnet.o. 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.
+.
+ARCNET_1201 'Enable standard ARCNet packet format (RFC 1201)'
+
+ARCNET_1051 'Enable old ARCNet packet format (RFC 1051)' text
+This allows you to use RFC1051 with your ARCnet card via the virtual
+arc0s device. You only need arc0s if you want to talk to ARCnet
+software complying with the "old" standard, specifically, the DOS
+arcnet.com packet driver, Amigas running AmiTCP, and some variants
+of NetBSD. You do not need to say Y here to communicate with
+industry-standard RFC1201 implementations, like the arcether.com
+packet driver or most DOS/Windows ODI drivers. RFC1201 is included
+automatically as the arc0 device. Please read the ARCnet
+documentation in Documentation/networking/arcnet.txt for more
+information about using arc0e and arc0s.
+.
+ARCNET_RAW 'Enable raw mode packet interface'
+
+ARCNET_COM90xx 'ARCnet COM90xx (normal) chipset driver' text
+This is the chipset driver for the standard COM90xx cards. If you
+have always used the old ARCnet driver without knowing what type of
+card you had, this is probably the one for you.
+
+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 com90xx.o. 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.
+.
+ARCNET_COM90xxIO 'ARCnet COM90xx (IO mapped) chipset driver' text
+This is the chipset driver for the COM90xx cards, using them in
+IO-mapped mode instead of memory-mapped mode. This is slower than
+the normal driver. Only use it if your card doesn't support shared
+memory.
+
+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 com90io.o. 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.
+.
+ARCNET_RIM_I 'ARCnet COM90xx (RIM I) chipset driver' text
+This is yet another chipset driver for the COM90xx cards, but this
+time only using memory-mapped mode, and no IO ports at all. This
+driver is completely untested, so if you have one of these cards,
+please mail dwmw2@infradead.org, especially if it works!
+
+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 arc-rimi.o. 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.
+.
+ARCNET_COM20020 'ARCnet COM20020 chipset driver' text
+This is the driver for the new COM20020 chipset. It supports such
+things as promiscuous mode, so packet sniffing is possible, and
+extra diagnostic information.
+
+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 com20020.o. 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.
+.
+#ARCNET_COM20020_ISA 'Support for COM20020 on ISA'
+#ARCNET_COM20020_PCI 'Support for COM20020 on PCI'
+# IRDA support
+IRTTY_SIR 'IrTTY IrDA Device Driver' text
+Say Y here if you want to build support for the IrTTY line
+discipline. If you want to compile it as a module (irtty.o), say M
+here and read Documentation/modules.txt. IrTTY makes it possible to
+use Linux's own serial driver for all IrDA ports that are 16550
+compatible. Most IrDA chips are 16550 compatible so you should
+probably say Y to this option. Using IrTTY will however limit the
+speed of the connection to 115200 bps (IrDA SIR mode)
+
+If unsure, say Y.
+.
+IRPORT_SIR 'IrPORT IrDA serial driver' text
+Say Y here if you want to build support for the IrPORT IrDA device
+driver. If you want to compile it as a module (irport.o), say M here
+and read Documentation/modules.txt. IrPORT can be used instead of
+IrTTY and sometimes this can be better. One example is if your IrDA
+port does not have echo-canceling, which will work OK with IrPORT
+since this driver is working in half-duplex mode only. You don't
+need to use irattach with IrPORT, but you just insert it the same
+way as FIR drivers (insmod irport io=0x3e8 irq=11). Notice that
+IrPORT is a SIR device driver which means that speed is limited to
+115200 bps.
+
+If unsure, say Y.
+.
+USB_IRDA 'USB IrDA FIR dongle Device Driver'
+
+NSC_FIR 'NSC PC87108/PC87338 IrDA Device Driver' text
+Say Y here if you want to build support for the NSC PC87108 and
+PC87338 IrDA chipsets. This driver supports SIR,
+MIR and FIR (4Mbps) speeds.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. The module will be called nsc-ircc.o.
+.
+WINBOND_FIR 'Winbond W83977AF IrDA Device Driver' text
+Say Y here if you want to build IrDA support for the Winbond
+W83977AF super-io chipset. This driver should be used for the IrDA
+chipset in the Corel NetWinder. The driver supports SIR, MIR and FIR
+(4Mbps) speeds.
+
+If you want to compile it as a module, say M here and read
+Documentation/modules.txt. The module will be called w83977af_ir.o.
+.
+TOSHIBA_FIR 'Toshiba Type-O IR Port device driver' text
+Say Y here if you want to build support for the Toshiba Type-O IR
+chipset. This chipset is used by the Toshiba Libretto 100CT, and
+many more laptops. If you want to compile it as a module, say M here
+and read Documentation/modules.txt. The module will be called
+toshoboe.o.
+.
+SMC_IRCC_FIR 'SMC IrCC' text
+Say Y here if you want to build support for the SMC Infrared
+Communications Controller. It is used in the Fujitsu Lifebook 635t
+and Sony PCG-505TX. If you want to compile it as a module, say M
+here and read Documentation/modules.txt. The module will be called
+smc-ircc.o.
+.
+ALI_FIR 'ALi M5123 FIR'
+
+VLSI_FIR 'VLSI 82C147 SIR/MIR/FIR' text
+Say Y here if you want to build support for the VLSI 82C147
+PCI-IrDA Controller. This controller is used by the HP OmniBook 800
+and 5500 notebooks. The driver provides support for SIR, MIR and
+FIR (4Mbps) speeds.
+
+If you want to compile it as a module, say M here and read
+. The module will be called vlsi_ir.o.
+.
+# Dongles
+DONGLE 'Serial dongle support' text
+Say Y here if you have an infrared device that connects to your
+computer's serial port. These devices are called dongles. Then say Y
+or M to the driver for your particular dongle below.
+
+Note that the answer to this question won't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about serial dongles.
+.
+ESI_DONGLE 'ESI JetEye PC dongle' text
+Say Y here if you want to build support for the Extended Systems
+JetEye PC dongle. If you want to compile it as a module, say M here
+and read Documentation/modules.txt. The ESI dongle attaches to the
+normal 9-pin serial port connector, and can currently only be used
+by IrTTY. To activate support for ESI dongles you will have to
+start irattach like this: "irattach -d esi".
+.
+ACTISYS_DONGLE 'ACTiSYS IR-220L and IR220L+ dongle' text
+Say Y here if you want to build support for the ACTiSYS
+IR-220L and IR220L+ dongles. If you want to compile it as a module,
+say M here and read Documentation/modules.txt. The ACTiSYS dongles
+attaches to the normal 9-pin serial port connector, and can
+currently only be used by IrTTY. To activate support for ACTiSYS
+dongles you will have to start irattach like this:
+"irattach -d actisys" or "irattach -d actisys+".
+.
+TEKRAM_DONGLE 'Tekram IrMate 210B dongle' text
+Say Y here if you want to build support for the Tekram IrMate 210B
+dongle. If you want to compile it as a module, say M here
+and read Documentation/modules.txt. The Tekram dongle attaches to
+the normal 9-pin serial port connector, and can currently only be
+used by IrTTY. To activate support for Tekram dongles you will have
+to start irattach like this: "irattach -d tekram".
+.
+GIRBIL_DONGLE 'Greenwich GIrBIL dongle' text
+Say Y here if you want to build support for the Greenwich GIrBIL
+dongle. If you want to compile it as a module, say M here and read
+Documentation/modules.txt. The Greenwich dongle attaches to the
+normal 9-pin serial port connector, and can currently only be used
+by IrTTY. To activate support for Greenwich dongles you will have to
+insert "irattach -d girbil" in the /etc/irda/drivers script.
+.
+LITELINK_DONGLE 'Parallax LiteLink dongle' text
+Say Y here if you want to build support for the Parallax Litelink
+dongle. If you want to compile it as a module, say M here and read
+Documentation/modules.txt. The Parallax dongle attaches to the
+normal 9-pin serial port connector, and can currently only be used
+by IrTTY. To activate support for Parallax dongles you will have to
+start irattach like this "irattach -d litelink".
+.
+OLD_BELKIN_DONGLE 'Old Belkin dongle' text
+Say Y here if you want to build support for the Adaptec Airport 1000
+and 2000 dongles. If you want to compile it as a module, say M here
+and read Documentation/modules.txt. The module will be called
+old_belkin.o. Some information is contained in the comments at the
+top of drivers/net/irda/old_belkin.c.
+.
+EP7211_IR 'EP7211 I/R support'
+
+SA1100_FIR 'SA1100 Internal IR'
+
+# Miscellaneous character devices
+MWAVE 'ACP Modem (Mwave) support' text
+The ACP modem (Mwave) for Linux is a WinModem. It is composed of a
+kernel driver and a user level application. Together these components
+support direct attachment to public switched telephone networks (PSTNs)
+and support selected world wide countries.
+
+This version of the ACP Modem driver supports the IBM Thinkpad 600E,
+600, and 770 that include on board ACP modem hardware.
+
+The modem also supports the standard communications port interface
+(ttySx) and is compatible with the Hayes AT Command Set.
+
+The user level application needed to use this driver can be found at
+the IBM Linux Technology Center (LTC) web site:
+http://www.ibm.com/linux/ltc/
+
+If you own one of the above IBM Thinkpads which has the Mwave chipset
+in it, 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 mwave.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+#
+# PCMCIA Network device configuration
+NET_PCMCIA 'PCMCIA network device support' text
+Say Y if you would like to include support for any PCMCIA or CardBus
+network adapters, then say Y to the driver for your particular card
+below. PCMCIA- or PC-cards are credit-card size devices often used
+with laptops computers; CardBus is the newer and faster version of
+PCMCIA.
+
+To use your PC-cards, you will need supporting software from David
+Hinds' pcmcia-cs package (see the file Documentation/Changes for
+location). You also want to check out the PCMCIA-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto .
+
+If unsure, say N.
+.
+PCMCIA_3C589 '3Com 3c589 PCMCIA support' text
+Say Y here if you intend to attach a 3Com 3c589 or compatible PCMCIA
+(PC-card) Ethernet card to your computer.
+
+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 3c589_cs.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt. If unsure,
+say N.
+.
+PCMCIA_3C574 '3Com 3c574 PCMCIA support' text
+Say Y here if you intend to attach a 3Com 3c574 or compatible PCMCIA
+(PC-card) Fast Ethernet card to your computer.
+
+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 3c574_cs.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt. If unsure,
+say N.
+.
+PCMCIA_FMVJ18X 'Fujitsu FMV-J18x PCMCIA support' text
+Say Y here if you intend to attach a Fujitsu FMV-J18x or compatible
+PCMCIA (PC-card) Ethernet card to your computer.
+
+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 fmvj18x_cs.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt. If unsure,
+say N.
+.
+PCMCIA_PCNET 'NE2000 compatible PCMCIA support' text
+Say Y here if you intend to attach an NE2000 compatible PCMCIA
+(PC-card) Ethernet or Fast Ethernet card to your computer.
+
+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 pcnet_cs.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt. If unsure,
+say N.
+.
+PCMCIA_NMCLAN 'New Media PCMCIA support' text
+Say Y here if you intend to attach a New Media Ethernet or LiveWire
+PCMCIA (PC-card) Ethernet card to your computer.
+
+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 nmclan_cs.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt. If unsure,
+say N.
+.
+PCMCIA_SMC91C92 'SMC 91Cxx PCMCIA support' text
+Say Y here if you intend to attach an SMC 91Cxx compatible PCMCIA
+(PC-card) Ethernet or Fast Ethernet card to your computer.
+
+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 smc91c92_cs.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt. If
+unsure, say N.
+.
+PCMCIA_XIRC2PS 'Xircom 16-bit PCMCIA support' text
+Say Y here if you intend to attach a Xircom 16-bit PCMCIA
+(PC-card) Ethernet or Fast Ethernet card to your computer.
+
+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 xirc2ps_cs.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt. If unsure,
+say N.
+.
+PCMCIA_AXNET 'Broken NS8390-cards support'
+
+ARCNET_COM20020_CS 'COM20020 ARCnet PCMCIA support' text
+Say Y here if you intend to attach this type of ARCnet PCMCIA card
+to your computer.
+
+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 com20020_cs.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt. If
+unsure, say N.
+.
+PCMCIA_IBMTR 'IBM PCMCIA Token Ring adapter support' text
+Say Y here if you intend to attach this type of Token Ring PCMCIA
+card to your computer. You then also need to say Y to "Token Ring
+driver support".
+
+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 ibmtr_cs.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+PCMCIA_XIRTULIP 'Xircom Tulip-like CardBus support (old driver)' text
+This driver is for the Digital "Tulip" Ethernet CardBus adapters.
+It should work with most DEC 21*4*-based chips/ethercards, as well
+as with work-alike chips from Lite-On (PNIC) and Macronix (MXIC) and
+ASIX.
+
+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 xircom_tulip_cb.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. If
+unsure, say N.
+.
+PCMCIA_XIRCOM 'Xircom CardBus support (new driver)'
+
+NET_PCMCIA_RADIO 'PCMCIA Wireless LAN' text
+Say Y here if you would like to use a PCMCIA (PC-card) device to
+connect to a wireless local area network. Then say Y to the driver
+for your particular card below.
+
+To use your PC-cards, you will need supporting software from David
+Hinds' pcmcia-cs package (see the file Documentation/Changes for
+location). You also want to check out the PCMCIA-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto .
+.
+PCMCIA_RAYCS 'Aviator/Raytheon 2.4MHz wireless support' text
+Say Y here if you intend to attach an Aviator/Raytheon PCMCIA
+(PC-card) wireless Ethernet networking card to your computer.
+Please read the file Documentation/networking/ray_cs.txt for
+details.
+
+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 ray_cs.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt. If unsure,
+say N.
+.
+PCMCIA_HERMES 'Hermes support (Orinoco/WavelanIEEE/PrismII/Symbol 802.11b cards)'
+text
+A driver for "Hermes" chipset based PCMCIA wireless adaptors, such
+as the Lucent WavelanIEEE/Orinoco cards and their OEM (Cabletron/
+EnteraSys RoamAbout 802.11, ELSA Airlancer, Melco Buffalo and others).
+It should also be usable on various Prism II based cards such as the
+Linksys, D-Link and Farallon Skyline. It should also work on Symbol
+cards such as the 3Com AirConnect and Ericsson WLAN.
+
+To use your PC-cards, you will need supporting software from David
+Hinds' pcmcia-cs package (see the file Documentation/Changes for
+location). You also want to check out the PCMCIA-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto .
+
+You will also very likely also need the Wireless Tools in order to
+configure your card and that /etc/pcmcia/wireless.opts works :
+ http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html
+.
+PCMCIA_NETWAVE 'Xircom Netwave AirSurfer wireless support' text
+Say Y here if you intend to attach this type of PCMCIA (PC-card)
+wireless Ethernet networking card to your computer.
+
+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 netwave_cs.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt. If unsure,
+say N.
+.
+PCMCIA_WAVELAN 'AT&T/Lucent Wavelan wireless support' text
+Say Y here if you intend to attach an AT&T/Lucent Wavelan PCMCIA
+(PC-card) wireless Ethernet networking card to your computer. This
+driver is for the non-IEEE-802.11 Wavelan cards.
+
+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 wavelan_cs.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt. If unsure,
+say N.
+.
+AIRONET4500_CS 'Aironet 4500/4800 PCMCIA support' text
+Say Y here if you have a PCMCIA Aironet 4500/4800 card which you
+want to use with the standard PCMCIA cardservices provided by the
+pcmcia-cs package.
+
+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 aironet4500_cs.o. If you want to
+compile it as a module, say M here and read
+Documentation/modules.txt.
+.
+#
+# AppleTalk driver configuration
+LTPC 'Apple/Farallon LocalTalk PC card support' text
+This allows you to use the AppleTalk PC card to connect to LocalTalk
+networks. The card is also known as the Farallon PhoneNet PC card.
+If you are in doubt, this card is the one with the 65C02 chip on it.
+You also need version 1.3.3 or later of the netatalk package.
+This driver is experimental, which means that it may not work.
+See the file Documentation/networking/ltpc.txt.
+.
+COPS 'COPS LocalTalk PC card support' text
+This allows you to use COPS AppleTalk cards to connect to LocalTalk
+networks. You also need version 1.3.3 or later of the netatalk
+package. This driver is experimental, which means that it may not
+work. This driver will only work if you choose "AppleTalk DDP"
+networking support, above.
+Please read the file Documentation/networking/cops.txt.
+.
+COPS_DAYNA 'Dayna firmware support' text
+Support COPS compatible cards with Dayna style firmware (Dayna
+DL2000/ Daynatalk/PC (half length), COPS LT-95, Farallon PhoneNET PC
+III, Farallon PhoneNET PC II).
+.
+COPS_TANGENT 'Tangent firmware support' text
+Support COPS compatible cards with Tangent style firmware (Tangent
+ATB_II, Novell NL-1000, Daystar Digital LT-200.
+.
+IPDDP 'AppleTalk-IP driver support' text
+This allows IP networking for users who only have AppleTalk
+networking available. This feature is experimental. With this
+driver, you can encapsulate IP inside AppleTalk (e.g. if your Linux
+box is stuck on an AppleTalk only network) or decapsulate (e.g. if
+you want your Linux box to act as an Internet gateway for a zoo of
+AppleTalk connected Macs). Please see the file
+Documentation/networking/ipddp.txt for more information.
+
+If you say Y here, the AppleTalk-IP support will be compiled into
+the kernel. In this case, you can either use encapsulation or
+decapsulation, but not both. With the following two questions, you
+decide which one you want.
+
+If you say M here, the AppleTalk-IP support will be compiled as a
+module ( = code which can be inserted in and removed from the
+running kernel whenever you want, read Documentation/modules.txt).
+The module is called ipddp.o. In this case, you will be able to use
+both encapsulation and decapsulation simultaneously, by loading two
+copies of the module and specifying different values for the module
+option ipddp_mode.
+.
+IPDDP_ENCAP 'IP to AppleTalk-IP Encapsulation support' text
+If you say Y here, the AppleTalk-IP code will be able to encapsulate
+IP packets inside AppleTalk frames; this is useful if your Linux box
+is stuck on an AppleTalk network (which hopefully contains a
+decapsulator somewhere). Please see
+Documentation/networking/ipddp.txt for more information. If you said
+Y to "AppleTalk-IP driver support" above and you say Y here, then
+you cannot say Y to "AppleTalk-IP to IP Decapsulation support",
+below.
+.
+IPDDP_DECAP 'AppleTalk-IP to IP Decapsulation support' text
+If you say Y here, the AppleTalk-IP code will be able to decapsulate
+AppleTalk-IP frames to IP packets; this is useful if you want your
+Linux box to act as an Internet gateway for an AppleTalk network.
+Please see Documentation/networking/ipddp.txt for more information.
+If you said Y to "AppleTalk-IP driver support" above and you say Y
+here, then you cannot say Y to "IP to AppleTalk-IP Encapsulation
+support", above.
+.
+#
+# Floppy drives
+BLK_DEV_FD 'Normal floppy disk support' text
+If you want to use the floppy disk drive(s) of your PC under Linux,
+say Y. Information about this driver, especially important for IBM
+Thinkpad users, is contained in Documentation/floppy.txt. That file
+also contains the location of the Floppy driver FAQ as well as
+location of the fdutils package used to configure additional
+parameters of the driver at run time.
+
+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 floppy.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+#AMIGA_FLOPPY 'Amiga floppy support'
+#ATARI_FLOPPY 'Atari floppy support'
+BLK_DEV_SWIM_IOP 'Macintosh IIfx/Quadra 900/Quadra 950 floppy support'
+
+BLK_DEV_IDE 'Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support' text
+If you say Y here, you will use the full-featured IDE driver to
+control up to ten ATA/IDE interfaces, each being able to serve a
+"master" and a "slave" device, for a total of up to twenty ATA/IDE
+disk/cdrom/tape/floppy drives.
+
+Useful information about large (>540 MB) IDE disks, multiple
+interfaces, what to do if ATA/IDE devices are not automatically
+detected, sound card ATA/IDE ports, module support, and other
+topics, is contained in Documentation/ide.txt. For detailed
+information about hard drives, consult the Disk-HOWTO and the
+Multi-Disk-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+To fine-tune ATA/IDE drive/interface parameters for improved
+performance, look for the hdparm package at
+http://www.ibiblio.org/pub/Linux/system/hardware .
+
+If you want 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 and
+Documentation/ide.txt. The module will be called ide-mod.o. Do not
+compile this driver as a module if your root file system (the one
+containing the directory /) is located on an IDE device.
+
+If you have one or more IDE drives, say Y or M here. If your system
+has no IDE drives, or if memory requirements are really tight, you
+could say N here, and select the "Old hard disk driver" below
+instead to save about 13 KB of memory in the kernel.
+.
+#
+# Memory Technology Device (MTD) support
+MTD 'Memory Technology Device (MTD) support' text
+Memory Technology Devices are flash, RAM and similar chips, often
+used for solid state filesystems on embedded devices. This option
+will provide the generic support for MTD drivers to register
+themselves with the kernel and for potential users of MTD devices
+to enumerate the devices which are present and obtain a handle on
+them. It will also allow you to select individual drivers for
+particular hardware and users of MTD devices. If unsure, say N.
+.
+MTD_DEBUG 'MTD debugging support' text
+This turns on low-level debugging for the entire MTD sub-system.
+Normally, you should say 'N'.
+.
+MTD_DEBUG_VERBOSE 'MTD debugging verbosity (0 = quiet, 3 = noisy)' text
+Determines the verbosity level of the MTD debugging messages.
+.
+MTD_PARTITIONS 'MTD partitioning support' text
+If you have a device which needs to divide its flash chip(s) up
+into multiple 'partitions', each of which appears to the user as
+a separate MTD device, you require this option to be enabled. If
+unsure, say 'Y'.
+
+Note, however, that you don't need this option for the DiskOnChip
+devices. Partitioning on NFTL 'devices' is a different - that's the
+'normal' form of partitioning used on a block device.
+.
+MTD_REDBOOT_PARTS 'RedBoot partition table parsing' text
+RedBoot is a ROM monitor and bootloader which deals with multiple
+'images' in flash devices by putting a table in the last erase
+block of the device, similar to a partition table, which gives
+the offsets, lengths and names of all the images stored in the
+flash.
+
+If you need code which can detect and parse this table, and register
+MTD 'partitions' corresponding to each image in the table, enable
+this option.
+
+You will still need the parsing functions to be called by the driver
+for your particular device. It won't happen automatically. The
+SA1100 map driver (CONFIG_MTD_SA1100) has an option for this, for
+example.
+.
+MTD_BOOTLDR_PARTS 'Compaq bootldr partition table parsing' text
+The Compaq bootldr deals with multiple 'images' in flash devices
+by putting a table in one of the first erase blocks of the device,
+similar to a partition table, which gives the offsets, lengths and
+names of all the images stored in the flash.
+
+If you need code which can detect and parse this table, and register
+MTD 'partitions' corresponding to each image in the table, enable
+this option.
+
+You will still need the parsing functions to be called by the driver
+for your particular device. It won't happen automatically. The
+SA1100 map driver (CONFIG_MTD_SA1100) has an option for this, for
+example.
+.
+MTD_AFS_PARTS 'ARM Firmware Suite partition parsing' text
+The ARM Firmware Suite allows the user to divide flash devices into
+multiple 'images'. Each such image has a header containing its name
+and offset/size etc.
+
+If you need code which can detect and parse these tables, and register
+MTD 'partitions' corresponding to each image detected, enable
+this option.
+
+You will still need the parsing functions to be called by the driver
+for your particular device. It won't happen automatically. The
+'armflash' map driver (CONFIG_MTD_ARMFLASH) does this, for example.
+.
+MTD_CHAR 'Direct chardevice access to MTD devices' text
+This provides a character device for each MTD device present in
+the system, allowing the user to read and write directly to the
+memory chips, and also use ioctl() to obtain information about
+the device, or to erase parts of it.
+.
+MTD_BLOCK 'Caching block device access to MTD devices' text
+Although most flash chips have an erase size too large to be useful
+as block devices, it is possible to use MTD devices which are based
+on RAM chips in this manner. This block device is a user of MTD devices
+performing that function.
+
+At the moment, it is also required for the Journalling Flash File
+System(s) to obtain a handle on the MTD device when it's mounted
+(although JFFS and JFFS2 don't actually use any of the functionality
+of the mtdblock device).
+
+Later, it may be extended to perform read/erase/modify/write cycles
+on flash chips to emulate a smaller block size. Needless to say,
+this is very unsafe, but could be useful for filesystems which are
+almost never written to.
+
+You do not need this option for use with the DiskOnChip devices. For
+those, enable NFTL support (CONFIG_NFTL) instead.
+.
+MTD_BLOCK_RO 'Readonly block device access to MTD devices' text
+This allows you to mount read-only filesystems (such as cramfs) from
+an MTD device, without the overhead (and danger) of the caching
+driver.
+
+You do not need this option for use with the DiskOnChip devices. For
+those, enable NFTL support (CONFIG_NFTL) instead.
+.
+FTL 'FTL (Flash Translation Layer) support' text
+This provides support for the original Flash Translation Layer which
+is part of the PCMCIA specification. It uses a kind of pseudo-
+filesystem on a flash device to emulate a block device with 512-byte
+sectors, on top of which you put a 'normal' filesystem.
+
+You may find that the algorithms used in this code are patented
+unless you live in the Free World where software patents aren't
+legal - in the USA you are only permitted to use this on PCMCIA
+hardware, although under the terms of the GPL you're obviously
+permitted to copy, modify and distribute the code as you wish. Just
+not use it.
+.
+NFTL 'NFTL (NAND Flash Translation Layer) support' text
+This provides support for the NAND Flash Translation Layer which is
+used on M-Systems' DiskOnChip devices. It uses a kind of pseudo-
+filesystem on a flash device to emulate a block device with 512-byte
+sectors, on top of which you put a 'normal' filesystem.
+
+You may find that the algorithms used in this code are patented
+unless you live in the Free World where software patents aren't
+legal - in the USA you are only permitted to use this on DiskOnChip
+hardware, although under the terms of the GPL you're obviously
+permitted to copy, modify and distribute the code as you wish. Just
+not use it.
+.
+NFTL_RW 'Write support for NFTL' text
+If you're lucky, this will actually work. Don't whinge if it doesn't.
+Send mail to the MTD mailing list if
+you want to help to make it more reliable.
+.
+MTD_CFI 'Detect flash chips by Common Flash Interface (CFI) probe'
+text
+The Common Flash Interface specification was developed by Intel,
+AMD and other flash manufactures that provides a universal method
+for probing the capabilities of flash devices. If you wish to
+support any device that is CFI-compliant, you need to enable this
+option. Visit (http://www.amd.com/products/nvd/overview/cfi.html)
+for more information on CFI.
+.
+MTD_JEDECPROBE 'Detect non-CFI AMD/JEDEC-compatible flash chips'
+
+#MTD_CFI_VIRTUAL_ER 'CFI Virtual erase regions'
+MTD_CFI_ADV_OPTIONS 'CFI Advanced configuration options' text
+If you need to specify a specific endianness for access to flash
+chips, or if you wish to reduce the size of the kernel by including
+support for only specific arrangements of flash chips, say 'Y'. This
+option does not directly affect the code, but will enable other
+configuration options which allow you to do so.
+
+If unsure, say 'N'.
+.
+MTD_CFI_NOSWAP 'None' text
+This option defines the way in which the CPU attempts to arrange
+data bits when writing the 'magic' commands to the chips. Saying
+'NO', which is the default when CONFIG_MTD_CFI_ADV_OPTIONS isn't
+enabled, means that the CPU will not do any swapping; the chips
+are expected to be wired to the CPU in 'host-endian' form.
+Specific arrangements are possible with the BIG_ENDIAN_BYTE and
+LITTLE_ENDIAN_BYTE, if the bytes are reversed.
+
+If you have a LART, on which the data (and address) lines were
+connected in a fashion which ensured that the nets were as short
+as possible, resulting in a bit-shuffling which seems utterly
+random to the untrained eye, you need the LART_ENDIAN_BYTE option.
+
+Yes, there really exists something sicker than PDP-endian :)
+.
+MTD_CFI_BE_BYTE_SWAP 'Big-endian byte'
+
+MTD_CFI_LE_BYTE_SWAP 'Little-endian byte'
+
+#MTD_CFI_LART_BIT_SWAP 'LART-endian byte'
+MTD_CFI_GEOMETRY 'Specific CFI Flash geometry selection' text
+This option does not affect the code directly, but will enable
+some other configuration options which would allow you to reduce
+the size of the kernel by including support for only certain
+arrangements of CFI chips. If unsure, say 'N' and all options
+which are supported by the current code will be enabled.
+.
+MTD_CFI_B1 'Support 8-bit buswidth' text
+If you wish to support CFI devices on a physical bus which is
+8 bits wide, say 'Y'.
+.
+MTD_CFI_B2 'Support 16-bit buswidth' text
+If you wish to support CFI devices on a physical bus which is
+16 bits wide, say 'Y'.
+.
+MTD_CFI_B4 'Support 32-bit buswidth' text
+If you wish to support CFI devices on a physical bus which is
+32 bits wide, say 'Y'.
+.
+MTD_CFI_I1 'Support 1-chip flash interleave' text
+If your flash chips are not interleaved - i.e. you only have one
+flash chip addressed by each bus cycle, then say 'Y'.
+.
+MTD_CFI_I2 'Support 2-chip flash interleave' text
+If your flash chips are interleaved in pairs - i.e. you have two
+flash chips addressed by each bus cycle, then say 'Y'.
+.
+MTD_CFI_I4 'Support 4-chip flash interleave' text
+If your flash chips are interleaved in fours - i.e. you have four
+flash chips addressed by each bus cycle, then say 'Y'.
+.
+MTD_CFI_INTELEXT 'CFI support for Intel/Sharp Extended Command Set chips'
+text
+The Common Flash Interface defines a number of different command
+sets which a CFI-compliant chip may claim to implement. This code
+provides support for one of those command sets, used on Intel
+StrataFlash and other parts.
+.
+MTD_CFI_AMDSTD 'CFI support for AMD/Fujitsu Standard Command Set chips'
+text
+The Common Flash Interface defines a number of different command
+sets which a CFI-compliant chip may claim to implement. This code
+provides support for one of those command sets, used on chips
+chips including the AMD Am29LV320.
+.
+MTD_SHARP 'pre-CFI Sharp chip support' text
+This option enables support for flash chips using Sharp-compatible
+commands, including some which are not CFI-compatible and hence
+cannot be used with the CONFIG_MTD_CFI_INTELxxx options.
+.
+MTD_RAM 'Support for RAM chips in bus mapping' text
+This option enables basic support for RAM chips accessed through
+a bus mapping driver.
+.
+MTD_ROM 'Support for ROM chips in bus mapping' text
+This option enables basic support for ROM chips accessed through
+.
+MTD_JEDEC 'JEDEC device support' text
+Enable older older JEDEC flash interface devices for self programming
+flash. It is commonly used in older AMD chips. It is only called
+JEDEC because the JEDEC association (http://www.jedec.org/)
+distributes the identification codes for the chips. WARNING!!!! This
+code does not compile and is incomplete as are the specific JEDEC
+devices drivers.
+.
+MTD_ABSENT 'Support for absent chips in bus mapping'
+
+MTD_OBSOLETE_CHIPS 'Older (theoretically obsoleted now) drivers for non-CFI chips'
+
+MTD_AMDSTD 'AMD compatible flash chip support (non-CFI)' text
+This option enables support for flash chips using AMD-compatible
+commands, including some which are not CFI-compatible and hence
+cannot be used with the CONFIG_MTD_CFI_AMDSTD option.
+
+It also works on AMD compatible chips that do conform to CFI.
+.
+MTD_PHYSMAP 'Flash chip mapping in physical memory' text
+This provides a 'mapping' driver which allows the CFI probe and
+command set driver code to communicate with flash chips which
+are mapped physically into the CPU's memory. You will need to
+configure the physical address and size of the flash chips on
+your particular board as well as the bus width.
+.
+MTD_PHYSMAP_START 'Physical start location of flash chip mapping' text
+This is the physical memory location at which the flash chips
+are mapped on your particular target board. Refer to the
+memory map which should hopefully be in the documentation for
+your board.
+.
+MTD_PHYSMAP_LEN 'Physical length of flash chip mapping' text
+This is the total length of the mapping of the flash chips on
+your particular board. If there is space, or aliases, in the
+physical memory map between the chips, this could be larger
+than the total amount of flash present. Refer to the memory
+map which should hopefully be in the documentation for your
+.
+MTD_PHYSMAP_BUSWIDTH 'Buswidth of flash in bytes' text
+This is the total width of the data bus of the flash devices
+in octets. For example, if you have a data bus width of 32
+bits, you would set the bus width octect value to 4. This is
+used internally by the CFI drivers.
+.
+MTD_SUN_UFLASH 'Flash chip mapping on Sun Microsystems boardsets' text
+This provides a 'mapping' driver which supports the way in
+which user-programmable flash chips are connected on various
+Sun Microsystems boardsets. This driver will require CFI support
+in the kernel, so if you did not enable CFI previously, do that now.
+.
+MTD_NORA 'Flash chip mapping on Nora' text
+If you had to ask, you don't have one. Say 'N'.
+.
+MTD_PNC2000 'Flash chip mapping on Photron PNC-2000' text
+PNC-2000 is the name of Network Camera product from PHOTRON
+Ltd. in Japan. It uses CFI-compliant flash.
+.
+MTD_RPXLITE 'Flash chip mapping on RPXlite or CLLF PPC board' text
+The RPXLite PowerPC board has CFI-compliant chips mapped in
+a strange sparse mapping. This 'mapping' driver supports that
+arrangement, allowing the CFI probe and command set driver code
+to communicate with the chips on the RPXLite board. More at
+(http://www.embeddedplanet.com/rpx_lite_specification_sheet.htm).
+.
+MTD_SC520CDP 'Flash chip mapping on AMD SC520 CDP board' text
+The SC520 CDP board has two banks of CFI-compliant chips and one
+Dual-in-line JEDEC chip. This 'mapping' driver supports that
+arrangement, implementing three MTD devices.
+.
+MTD_NETSC520 'CFI Flash device mapped on AMD NetSc520'
+
+MTD_SBC_GXX 'Flash chip mapping on Arcom Control Systems SBC-MediaGX'
+
+MTD_ELAN_104NC 'Flash chip mapping on Arcom Control Systems ELAN-104NC'
+text
+This provides a driver for the on-board flash of the Arcom Control
+System's ELAN-104NC development board. By default the flash
+is split into 3 partitions which are accessed as separate MTD
+devices. This board utilizes Intel StrataFlash. More info at
+(http://www.arcomcontrols.com/products/icp/pc104/processors/).
+.
+MTD_SA1100 'CFI Flash device mapped on StrongARM SA11x0' text
+This enables access to the flash chips on most platforms based on the
+SA1100 and SA1110, including the Assabet and the Compaq iPAQ. If you
+.
+MTD_SA1100_BOOTLDR_PARTITIONS 'Support for Compaq bootldr partition tables on SA11x0'
+
+MTD_DC21285 'Flash chip mapping on Compaq iPAQ/Bitsy' text
+This provides a driver for the flash accessed using Intel's
+21285 bridge used with Intel's StrongARM processors. More info at
+(http://developer.intel.com/design/bridge/quicklist/dsc-21285.htm).
+.
+MTD_IQ80310 'CFI Flash device mapped on the XScale IQ80310 board'
+
+MTD_DBOX2 'CFI Flash device mapped on D-Box2'
+
+MTD_CSTM_MIPS_IXX 'Flash chip mapping on ITE QED-4N-S01B, Globespan IVR or custom board'
+text
+This provides a mapping driver for the Integrated Tecnology
+Express, Inc (ITE) QED-4N-S01B eval board and the Globespan IVR Reference
+Board. It provides the necessary addressing, length, buswidth, vpp code
+and addition setup of the flash device for these boards. In addition,
+this mapping driver can be used for other boards via setting of the
+CONFIG_MTD_CSTM_MIPS_IXX_START/LEN/BUSWIDTH parameters. This mapping
+will provide one mtd device using one partition. The start address can
+be offset from the beginning of flash and the len can be less than the
+total flash device size to allow a window into the flash. Both CFI and
+JEDEC probes are called.
+.
+MTD_CSTM_MIPS_IXX_START 'Physical start location of flash chip mapping'
+text
+This is the physical memory location that the MTD driver will
+use for the flash chips on your particular target board.
+Refer to the memory map which should hopefully be in the
+documentation for your board.
+.
+MTD_CSTM_MIPS_IXX_LEN 'Physical length of flash chip mapping' text
+This is the total length that the MTD driver will use for the
+flash chips on your particular board. Refer to the memory
+map which should hopefully be in the documentation for your
+board.
+.
+MTD_CSTM_MIPS_IXX_BUSWIDTH 'Buswidth of flash in bytes' text
+This is the total bus width of the mapping of the flash chips
+on your particular board.
+.
+MTD_CFI_FLAGADM 'CFI Flash device mapping on the Flaga Digital Module'
+text
+Mapping for the Flaga digital module. If you don´t have one, ignore this
+setting.
+.
+MTD_OCELOT 'Momenco Ocelot boot flash device'
+
+MTD_PMC551 'Ramix PMC551 PCI Mezzanine ram card support' text
+This provides a MTD device driver for the Ramix PMC551 RAM PCI card
+from Ramix Inc. (http://www.ramix.com/products/memory/pmc551.html).
+These devices come in memory configurations from 32M - 1G. If you
+have one, you probably want to enable this.
+
+If this driver is compiled as a module you get the ability to select the
+size of the aperture window pointing into the devices memory. What this
+means is that if you have a 1G card, normally the kernel will use a 1G
+memory map as it's view of the device. As a module, you can select a
+1M window into the memory and the driver will "slide" the window around
+the PMC551's memory. This was particularly useful on the 2.2 kernels
+on PPC architectures as there was limited kernel space to deal with.
+.
+MTD_PMC551_BUGFIX 'PMC551 256M DRAM Bugfix' text
+Some of Ramix's PMC551 boards with 256M configurations have invalid column
+and row mux values. This option will fix them, but will break other memory
+configurations. If unsure say N.
+.
+MTD_PMC551_DEBUG 'PMC551 Debugging' text
+This option makes the PMC551 more verbose during it's operation and is only
+really usefull if you are developing on this driver or suspect a possible
+hardware or driver bug. If unsure say N.
+.
+MTD_DOC1000 'M-Systems Disk-On-Chip 1000 support' text
+This provides an MTD device driver for the M-Systems DiskOnChip
+1000 devices, which are obsolete so you probably want to say 'N'.
+.
+MTD_DOC2000 'M-Systems Disk-On-Chip 2000 and Millennium support' text
+This provides an MTD device driver for the M-Systems DiskOnChip
+2000 and Millennium devices. Originally designed for the DiskOnChip
+2000, it also now includes support for the DiskOnChip Millennium.
+If you have problems with this driver and the DiskOnChip Millennium,
+you may wish to try the alternative Millennium driver below. To use
+the alternative driver, you will need to undefine DOC_SINGLE_DRIVER
+in the drivers/mtd/devices/docprobe.c source code.
+
+If you use this device, you probably also want to enable the NFTL
+'NAND Flash Translation Layer' option below, which is used to emulate
+a block device by using a kind of filesystem on the flash chips.
+.
+MTD_DOC2001 'Alternative Disk-On-Chip Millennium support' text
+This provides an alternative MTD device driver for the M-Systems
+DiskOnChip Millennium devices. Use this if you have problems with
+the combined DiskOnChip 2000 and Millennium driver above. To get
+the DiskOnChip probe code to load and use this driver instead of
+the other one, you will need to undefine DOC_SINGLE_DRIVER near
+the beginning of drivers/mtd/devices/docprobe.c
+
+If you use this device, you probably also want to enable the NFTL
+'NAND Flash Translation Layer' option below, which is used to emulate
+a block device by using a kind of filesystem on the flash chips.
+.
+MTD_DOCPROBE_ADVANCED 'Advanced detection options for DiskOnChip' text
+This option allows you to specify nonstandard address at which to
+probe for a DiskOnChip, or to change the detection options. You're
+unlikely to need any of this unless you're using LinuxBIOS. Say 'N'.
+.
+MTD_DOCPROBE_ADDRESS 'Physical address of DiskOnChip' text
+By default, the probe for DiskOnChip devices will look for a DiskOnChip
+at every multiple of 0x2000 between 0xC8000 and 0xEE000. This option
+allows you to specify a single address at which to probe for the device,
+which is useful if you have other devices in that range which get upset
+when they're probed.
+
+(Note that on PowerPC, the normal probe will only check at 0xE4000000.)
+
+Normally, you should leave this set to zero, to allow the probe at the
+normal addresses.
+.
+MTD_DOCPROBE_HIGH 'Probe high addresses' text
+By default, the probe for DiskOnChip devices will look for a DiskOnChip
+at every multiple of 0x2000 between 0xC8000 and 0xEE000. This option
+changes to make it probe between 0xFFFC8000 and 0xFFFEE000. Unless
+you're using LinuxBIOS, this is unlikely to be useful to you. Say 'N'.
+.
+MTD_DOCPROBE_55AA 'Probe for 0x55 0xAA BIOS Extension Signature' text
+Check for the 0x55 0xAA signature of a DiskOnChip, and do not continue
+with probing if it is absent. The signature will always be present for
+a DiskOnChip 2000 or a normal DiskOnChip Millennium. Only if you have
+overwritten the first block of a DiskOnChip Millennium will it be
+absent. Enable this option if you are using LinuxBIOS or if you need
+to recover a DiskOnChip Millennium on which you have managed to wipe
+the first block.
+.
+MTD_SLRAM 'Use extra onboard system memory as MTD device' text
+If your CPU cannot cache all of the physical memory in your machine,
+you can still use it for storage or swap by using this driver to
+present it to the system as a Memory Technology Device.
+.
+MTD_LART '28F160xx flash driver for LART'
+
+MTD_MTDRAM 'Debugging RAM test driver' text
+This enables a test MTD device driver which uses vmalloc() to
+provide storage. You probably want to say 'N' unless you're
+testing stuff.
+.
+MTDRAM_TOTAL_SIZE 'MTDRAM device size in KB' text
+This allows you to configure the total size of the MTD device
+emulated by the MTDRAM driver. If the MTDRAM driver is built
+as a module, it is also possible to specify this as a parameter when
+loading the module.
+.
+MTDRAM_ERASE_SIZE 'MTDRAM erase block size in KB' text
+This allows you to configure the size of the erase blocks in the
+device emulated by the MTDRAM driver. If the MTDRAM driver is built
+as a module, it is also possible to specify this as a parameter when
+loading the module.
+.
+MTDRAM_ABS_POS 'SRAM Hexadecimal Absolute position or 0' text
+If you have system RAM accessible by the CPU but not used by Linux
+in normal operation, you can give the physical address at which the
+available RAM starts, and the MTDRAM driver will use it instead of
+allocating space from Linux's available memory. Otherwise, leave
+this set to zero. Most people will want to leave this as zero.
+.
+MTD_BLKMTD 'MTD emulation using block device'
+
+MTD_MIXMEM 'JEDEC Flash device mapped on Mixcom piggyback card' text
+This supports the paging arrangement for access to flash chips
+on the MixCOM piggyback card, allowing the flash chip drivers
+to get on with their job of driving the flash chips without
+having to know about the paging. If you have one of these boards,
+you probably want to enable this mapping driver. More info is at
+(http://www.itc.hu/).
+.
+MTD_OCTAGON 'JEDEC Flash device mapped on Octagon 5066 SBC' text
+This provides a 'mapping' driver which supports the way in which
+the flash chips are connected in the Octagon-5066 Single Board
+Computer. More information on the board is available at
+(http://www.octagonsystems.com/Products/5066/5066.html).
+.
+MTD_VMAX 'JEDEC Flash device mapped on Tempustech VMAX SBC301' text
+This provides a 'mapping' driver which supports the way in which
+the flash chips are connected in the Tempustech VMAX SBC301 Single
+Board Computer. More information on the board is available at
+(http://www.tempustech.com/tt301.htm).
+.
+MTD_L440GX 'BIOS flash chip on Intel L440GX boards'
+
+MTD_TQM8XXL 'CFI Flash device mapped on TQM8XXL'
+
+MTD_SOLUTIONENGINE 'CFI Flash device mapped on Hitachi SolutionEngine'
+
+MTD_ARM_INTEGRATOR 'CFI Flash device mapped on ARM Integrator/P720T'
+
+MTD_CDB89712 'Cirrus CDB89712 evaluation board mappings'
+
+MTD_NAND 'Support for NAND flash devices' text
+This enables support for accessing all type of NAND flash
+devices.
+.
+MTD_NAND_ECC 'Support for software ECC algorithm' text
+This enables software-based ECC for use with NAND flash chips. It
+can detect and correct 1 bit errors per 256 byte blocks. This
+should be used to increase the reliability of the data stored and
+read on the device.
+.
+MTD_NAND_VERIFY_WRITE 'Support for verify read after write' text
+This adds an extra check when data is written to the flash. The
+NAND flash device internally checks only bits transitioning
+from 1 to 0. There is a rare possibility that even though the
+device thinks the write was successful, a bit could have been
+flipped accidentaly due to device wear, gamma rays, whatever.
+Enable this if you are really paranoid.
+.
+MTD_NAND_SPIA 'Support for the SPIA board' text
+If you had to ask, you don't have one. Say 'N'.
+.
+#
+# Block device driver configuration
+BLK_DEV_HD_ONLY 'Old hard disk (MFM/RLL/IDE) driver' text
+There are two drivers for MFM/RLL/IDE hard disks. Most people use
+the newer enhanced driver, but this old one is still around for two
+reasons. Some older systems have strange timing problems and seem to
+work only with the old driver (which itself does not work with some
+newer systems). The other reason is that the old driver is smaller,
+since it lacks the enhanced functionality of the new one. This makes
+it a good choice for systems with very tight memory restrictions, or
+for systems with only older MFM/RLL/ESDI drives. Choosing the old
+driver can save 13 KB or so of kernel memory.
+
+If you are unsure, then just choose the Enhanced IDE/MFM/RLL driver
+instead of this one. For more detailed information, read the
+Disk-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+.
+BLK_DEV_HD_IDE 'Use old disk-only driver on primary interface' text
+There are two drivers for MFM/RLL/IDE disks. Most people use just
+the new enhanced driver by itself. This option however installs the
+old hard disk driver to control the primary IDE/disk interface in
+the system, leaving the new enhanced IDE driver to take care of only
+the 2nd/3rd/4th IDE interfaces. Doing this will prevent you from
+having an IDE/ATAPI CDROM or tape drive connected to the primary IDE
+interface. Choosing this option may be useful for older systems
+which have MFM/RLL/ESDI controller+drives at the primary port
+address (0x1f0), along with IDE drives at the secondary/3rd/4th port
+addresses.
+
+Normally, just say N here; you will then use the new driver for all
+4 interfaces.
+.
+BLK_DEV_IDEDISK 'Include IDE/ATA-2 DISK support' text
+This will include enhanced support for MFM/RLL/IDE hard disks. If
+you have a MFM/RLL/IDE disk, and there is no special reason to use
+the old hard disk driver instead, say Y. If you have an SCSI-only
+system, you can say N here.
+
+If you want 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 ide-disk.o. Do not compile this driver as a module if your
+root file system (the one containing the directory /) is located on
+the IDE disk. If unsure, say Y.
+.
+IDEDISK_MULTI_MODE 'Use multi-mode by default' text
+If you get this error, try to say Y here:
+
+hda: set_multmode: status=0x51 { DriveReady SeekComplete Error }
+hda: set_multmode: error=0x04 { DriveStatusError }
+
+If in doubt, say N.
+.
+BLK_DEV_IDECS 'PCMCIA IDE support'
+
+BLK_DEV_IDECD 'Include IDE/ATAPI CD-ROM support' text
+If you have a CDROM drive using the ATAPI protocol, say Y. ATAPI is
+a newer protocol used by IDE CDROM and TAPE drives, similar to the
+SCSI protocol. Most new CDROM drives use ATAPI, including the
+NEC-260, Mitsumi FX400, Sony 55E, and just about all non-SCSI
+double(2X) or better speed drives.
+
+If you say Y here, the CDROM drive will be identified at boot time
+along with other IDE devices, as "hdb" or "hdc", or something
+similar (check the boot messages with dmesg). If this is your only
+CDROM drive, you can say N to all other CDROM options, but be sure
+to say Y or M to "ISO 9660 CDROM file system support".
+
+Read the CDROM-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto and the file
+Documentation/cdrom/ide-cd. Note that older versions of lilo (the
+Linux boot loader) cannot properly deal with IDE/ATAPI CDROMs, so
+install lilo-16 or higher, available from
+ftp://metalab.unc.edu/pub/Linux/system/boot/lilo .
+
+If you want to compile the 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 ide-cd.o.
+.
+BLK_DEV_IDETAPE 'Include IDE/ATAPI TAPE support' text
+If you have an IDE tape drive using the ATAPI protocol, say Y.
+ATAPI is a newer protocol used by IDE tape and CDROM drives, similar
+to the SCSI protocol. If you have an SCSI tape drive however, you
+can say N here.
+
+You should also say Y if you have an OnStream DI-30 tape drive; this
+will not work with the SCSI protocol, until there is support for the
+SC-30 and SC-50 versions.
+
+If you say Y here, the tape drive will be identified at boot time
+along with other IDE devices, as "hdb" or "hdc", or something
+similar, and will be mapped to a character device such as "ht0"
+(check the boot messages with dmesg). Be sure to consult the
+drivers/ide/ide-tape.c and Documentation/ide.txt files for usage
+information.
+
+If you want to compile the 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 ide-tape.o.
+.
+BLK_DEV_IDEFLOPPY 'Include IDE/ATAPI FLOPPY support' text
+If you have an IDE floppy drive which uses the ATAPI protocol,
+answer Y. ATAPI is a newer protocol used by IDE CDROM/tape/floppy
+drives, similar to the SCSI protocol.
+
+The LS-120 and the IDE/ATAPI Iomega ZIP drive are also supported by
+this driver. For information about jumper settings and the question
+of when a ZIP drive uses a partition table, see
+http://www.win.tue.nl/~aeb/linux/zip/zip-1.html .
+(ATAPI PD-CD/CDR drives are not supported by this driver; support
+for PD-CD/CDR drives is available if you answer Y to
+"SCSI emulation support", below).
+
+If you say Y here, the FLOPPY drive will be identified along with
+other IDE devices, as "hdb" or "hdc", or something similar (check
+the boot messages with dmesg).
+
+If you want to compile the 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 ide-floppy.o.
+.
+BLK_DEV_IDESCSI 'SCSI emulation support' text
+This will provide SCSI host adapter emulation for IDE ATAPI devices,
+and will allow you to use a SCSI device driver instead of a native
+ATAPI driver.
+
+This is useful if you have an ATAPI device for which no native
+driver has been written (for example, an ATAPI PD-CD or CDR drive);
+you can then use this emulation together with an appropriate SCSI
+device driver. In order to do this, say Y here and to "SCSI support"
+and "SCSI generic support", below. You must then provide the kernel
+command line "hdx=scsi" (try "man bootparam" or see the
+documentation of your boot loader (lilo or loadlin) about how to
+pass options to the kernel at boot time) for devices if you want the
+native EIDE sub-drivers to skip over the native support, so that
+this SCSI emulation can be used instead. This is required for use of
+CD-RW's.
+
+Note that this option does NOT allow you to attach SCSI devices to a
+box that doesn't have a SCSI host adapter installed.
+
+If both this SCSI emulation and native ATAPI support are compiled
+into the kernel, the native support will be used.
+.
+BLK_DEV_CMD640 'CMD640 chipset bugfix/support' text
+The CMD-Technologies CMD640 IDE chip is used on many common 486 and
+Pentium motherboards, usually in combination with a "Neptune" or
+"SiS" chipset. Unfortunately, it has a number of rather nasty
+design flaws that can cause severe data corruption under many common
+conditions. Say Y here to include code which tries to automatically
+detect and correct the problems under Linux. This option also
+enables access to the secondary IDE ports in some CMD640 based
+systems.
+
+This driver will work automatically in PCI based systems (most new
+systems have PCI slots). But if your system uses VESA local bus
+(VLB) instead of PCI, you must also supply a kernel boot parameter
+to enable the CMD640 bugfix/support: "ide0=cmd640_vlb". (Try "man
+bootparam" or see the documentation of your boot loader about how to
+pass options to the kernel.)
+
+The CMD640 chip is also used on add-in cards by Acculogic, and on
+the "CSA-6400E PCI to IDE controller" that some people have. For
+details, read Documentation/ide.txt.
+.
+BLK_DEV_CMD640_ENHANCED 'CMD640 enhanced support' text
+This option includes support for setting/autotuning PIO modes and
+prefetch on CMD640 IDE interfaces. For details, read
+Documentation/ide.txt. If you have a CMD640 IDE interface and your
+BIOS does not already do this for you, then say Y here. Otherwise
+say N.
+.
+BLK_DEV_ISAPNP 'ISA-PNP EIDE support' text
+If you have an ISA EIDE card that is PnP (Plug and Play) and
+requires setup first before scanning for devices, say Y here.
+
+If unsure, say N.
+.
+BLK_DEV_RZ1000 'RZ1000 chipset bugfix/support' text
+The PC-Technologies RZ1000 IDE chip is used on many common 486 and
+Pentium motherboards, usually along with the "Neptune" chipset.
+Unfortunately, it has a rather nasty design flaw that can cause
+severe data corruption under many conditions. Say Y here to include
+code which automatically detects and corrects the problem under
+Linux. This may slow disk throughput by a few percent, but at least
+things will operate 100% reliably.
+.
+BLK_DEV_IDEPCI 'Generic PCI IDE chipset support' text
+Say Y here for PCI systems which use IDE drive(s).
+This option helps the IDE driver to automatically detect and
+configure all PCI-based IDE interfaces in your system.
+.
+IDEPCI_SHARE_IRQ 'Support for sharing PCI IDE interrupts' text
+Some ATA/IDE chipsets have hardware support which allows for
+sharing a single IRQ with other cards. To enable support for
+this in the ATA/IDE driver, say Y here.
+
+It is safe to say Y to this question, in most cases.
+If unsure, say N.
+.
+BLK_DEV_IDEDMA_PCI 'Generic PCI bus-master DMA support' text
+If your PCI system uses IDE drive(s) (as opposed to SCSI, say) and
+is capable of bus-master DMA operation (most Pentium PCI systems),
+you will want to say Y here to reduce CPU overhead. You can then use
+the "hdparm" utility to enable DMA for drives for which it was not
+enabled automatically. By default, DMA is not enabled automatically
+for these drives, but you can change that by saying Y to the
+following question "Use DMA by default when available". You can get
+the latest version of the hdparm utility from
+ftp://metalab.unc.edu/pub/Linux/system/hardware/ .
+
+Read the comments at the beginning of drivers/ide/ide-dma.c and
+the file Documentation/ide.txt for more information.
+
+It is safe to say Y to this question.
+.
+IDEDMA_PCI_AUTO 'Use PCI DMA by default when available' text
+Prior to kernel version 2.1.112, Linux used to automatically use
+DMA for IDE drives and chipsets which support it. Due to concerns
+about a couple of cases where buggy hardware may have caused damage,
+the default is now to NOT use DMA automatically. To revert to the
+previous behaviour, say Y to this question.
+
+If you suspect your hardware is at all flakey, say N here.
+Do NOT email the IDE kernel people regarding this issue!
+
+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.
+.
+IDEDMA_NEW_DRIVE_LISTINGS 'Good-Bad DMA Model-Firmware' text
+If you say Y here, the model and firmware revision of your drive
+will be compared against a blacklist of buggy drives that claim to
+be (U)DMA capable but aren't. This is a blanket on/off test with no
+speed limit options.
+
+Straight GNU GCC 2.7.3/2.8.X compilers are known to be safe;
+whereas, many versions of EGCS have a problem and miscompile if you
+say Y here.
+
+If in doubt, say N.
+.
+IDEDMA_PCI_WIP 'ATA Work(s) In Progress' text
+If you enable this you will be able to use and test highly
+developmental projects. If you say N, this configure script will
+simply skip those options.
+
+It is SAFEST to say N to this question.
+.
+BLK_DEV_OFFBOARD 'Boot off-board chipsets first support' text
+Normally, IDE controllers built into the motherboard (on-board
+controllers) are assigned to ide0 and ide1 while those on add-in PCI
+cards (off-board controllers) are relegated to ide2 and ide3.
+Answering Y here will allow you to reverse the situation, with
+off-board controllers on ide0/1 and on-board controllers on ide2/3.
+This can improve the usability of some boot managers such as lilo
+when booting from a drive on an off-board controller.
+
+If you say Y here, and you actually want to reverse the device scan
+order as explained above, you also need to issue the kernel command
+line option "ide=reverse". (Try "man bootparam" or see the
+documentation of your boot loader (lilo or loadlin) about how to
+pass options to the kernel at boot time.)
+
+Note that, if you do this, the order of the hd* devices will be
+rearranged which may require modification of fstab and other files.
+
+If in doubt, say N.
+.
+BLK_DEV_AEC62XX 'AEC62XX chipset support' text
+This driver adds up to 4 more EIDE devices sharing a single
+interrupt. This add-on card is a bootable PCI UDMA controller. In
+order to get this card to initialize correctly in some cases, you
+should say Y here, and preferably also to "Use DMA by default when
+available".
+
+The ATP850U/UF is an UltraDMA 33 chipset base.
+The ATP860 is an UltraDMA 66 chipset base.
+The ATP860M(acintosh) version is an UltraDMA 66 chipset base.
+
+Please read the comments at the top of drivers/ide/aec62xx.c
+If you say Y here, then say Y to "Use DMA by default when available" as
+well.
+.
+AEC62XX_TUNING 'AEC62XX Tuning support' text
+Please read the comments at the top of drivers/ide/aec62xx.c
+If unsure, say N.
+.
+BLK_DEV_ALI15X3 'ALI M15x3 chipset support' text
+This driver ensures (U)DMA support for ALI 1533, 1543 and 1543C
+onboard chipsets. It also tests for Simplex mode and enables
+normal dual channel support.
+
+If you say Y here, you also need to say Y to "Use DMA by default
+when available", above.
+Please read the comments at the top of drivers/ide/alim15x3.c
+
+If unsure, say N.
+.
+WDC_ALI15X3 'ALI M15x3 WDC support' text
+This allows for UltraDMA support for WDC drives that ignore CRC
+checking. You are a fool for enabling this option, but there have
+been requests. DO NOT COMPLAIN IF YOUR DRIVE HAS FS CORRUPTION, IF
+YOU ENABLE THIS! No one will listen, just laugh for ignoring this
+SERIOUS WARNING.
+
+Using this option can allow WDC drives to run at ATA-4/5 transfer
+rates with only an ATA-2 support structure.
+
+SAY NO!
+.
+BLK_DEV_AMD74XX 'AMD Viper (7401/7409/7411) chipset support'
+
+AMD74XX_OVERRIDE 'AMD Viper ATA-66 Override support (WIP)'
+
+BLK_DEV_CMD64X 'CMD64X chipset support' text
+Say Y here if you have an IDE controller which uses any of these
+chipsets: CMD643, CMD646, or CMD648.
+.
+BLK_DEV_CY82C693 'CY82C693 chipset support' text
+This driver adds detection and support for the CY82C693 chipset
+used on Digital's PC-Alpha 164SX boards.
+
+If you say Y here, you need to say Y to "Use DMA by default
+when available" as well.
+.
+BLK_DEV_CS5530 'Cyrix CS5530 MediaGX chipset support' text
+Include support for UDMA on the Cyrix MediaGX 5530 chipset. This
+will automatically be detected and configured if found.
+
+It is safe to say Y to this question.
+
+People with SCSI-only systems should say N here. If unsure, say Y.
+.
+BLK_DEV_HPT34X 'HPT34X chipset support' text
+This driver adds up to 4 more EIDE devices sharing a single
+interrupt. The HPT343 chipset in its current form is a non-bootable
+controller; the HPT345/HPT363 chipset is a bootable (needs BIOS FIX)
+PCI UDMA controllers. This driver requires dynamic tuning of the
+chipset during the ide-probe at boot time. It is reported to support
+DVD II drives, by the manufacturer.
+.
+HPT34X_AUTODMA 'HPT34X AUTODMA support (WIP)' text
+This is a dangerous thing to attempt currently! Please read the
+comments at the top of drivers/ide/hpt34x.c If you say Y here,
+then say Y to "Use DMA by default when available" as well.
+
+If unsure, say N.
+.
+BLK_DEV_HPT366 'HPT366 chipset support' text
+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 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
+your mother board has the chipset natively mounted. Regardless one
+should use the fore mentioned option and call at LILO or include
+"ide=reverse" in LILO's append-line.
+
+This driver requires dynamic tuning of the chipset during the
+ide-probe at boot. It is reported to support DVD II drives, by the
+manufacturer.
+.
+#HPT366_FIP 'HPT366 Fast Interrupts (WIP)'
+#HPT366_MODE3 'HPT366 mode Three (WIP)'
+BLK_DEV_PIIX 'Intel PIIXn chipsets support' text
+This driver adds PIO mode setting and tuning for all PIIX IDE
+controllers by Intel. Since the BIOS can sometimes improperly tune
+PIO 0-4 mode settings, this allows dynamic tuning of the chipset
+via the standard end-user tool 'hdparm'.
+
+Please read the comments at the top of drivers/ide/piix.c.
+
+If you say Y here, you should also say Y to "PIIXn Tuning support",
+below.
+
+If unsure, say N.
+.
+PIIX_TUNING 'PIIXn Tuning support' text
+This driver extension adds DMA mode setting and tuning for all PIIX
+IDE controllers by Intel. Since the BIOS can sometimes improperly
+set up the device/adapter combination and speed limits, it has
+become a necessity to back/forward speed devices as needed.
+
+Case 430HX/440FX PIIX3 need speed limits to reduce UDMA to DMA mode
+2 if the BIOS can not perform this task at initialization.
+
+If unsure, say N.
+.
+BLK_DEV_IT8172 'IT8172 IDE support'
+
+IT8172_TUNING 'IT8172 IDE Tuning support'
+
+BLK_DEV_NS87415 'NS87415 chipset support' text
+This driver adds detection and support for the NS87415 chip
+(used in SPARC64, among others).
+
+Please read the comments at the top of drivers/ide/ns87415.c.
+.
+BLK_DEV_OPTI621 'OPTi 82C621 chipset enhanced support' text
+This is a driver for the OPTi 82C621 EIDE controller.
+Please read the comments at the top of drivers/ide/opti621.c.
+.
+BLK_DEV_PDC202XX 'PROMISE PDC20246/PDC20262/PDC20265/PDC20267/PDC20268 support'
+text
+Promise Ultra33 or PDC20246
+Promise Ultra66 or PDC20262
+Promise Ultra100 or PDC20265/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
+multiple cards can be installed and there are BIOS ROM problems that
+happen if the BIOS revisions of all installed cards (three-max) do
+not match, the driver attempts to do dynamic tuning of the chipset
+at boot-time for max-speed. Ultra33 BIOS 1.25 or newer is required
+for more than one card. This card may require that you say Y to
+"Special UDMA Feature (EXPERIMENTAL)".
+
+If you say Y here, you need to say Y to "Use DMA by default when
+available" as well.
+
+Please read the comments at the top of drivers/ide/pdc202xx.c
+
+If unsure, say N.
+.
+PDC202XX_BURST 'Special UDMA Feature' text
+For PDC20246, PDC20262, PDC20265 and PDC20267 Ultra DMA chipsets.
+Designed originally for PDC20246/Ultra33 that has BIOS setup
+failures when using 3 or more cards.
+
+Unknown for PDC20265/PDC20267 Ultra DMA 100.
+
+Please read the comments at the top of drivers/ide/pdc202xx.c
+
+If unsure, say N.
+.
+PDC202XX_FORCE 'Special FastTrak Feature'
+
+BLK_DEV_SVWKS 'ServerWorks OSB4/CSB5 chipsets support'
+
+BLK_DEV_SIS5513 'SiS5513 chipset support' text
+This driver ensures (U)DMA support for SIS5513 chipset based
+mainboards. SiS620/530 UDMA mode 4, SiS5600/5597 UDMA mode 2, all
+other DMA mode 2 limited chipsets are unsupported to date.
+
+If you say Y here, you need to say Y to "Use DMA by default when
+available" as well.
+
+Please read the comments at the top of drivers/ide/sis5513.c
+.
+BLK_DEV_SLC90E66 'SLC90E66 chipset support' text
+This driver ensures (U)DMA support for Victroy66 SouthBridges for
+SMsC with Intel NorthBridges. This is an Ultra66 based chipset.
+The nice thing about it is that you can mix Ultra/DMA/PIO devices
+and it will handle timing cycles. Since this is an improved look-a-like
+to the PIIX4 it should be a nice addition.
+
+If you say Y here, you need to say Y to "Use DMA by default when
+available" as well.
+
+Please read the comments at the top of drivers/ide/slc90e66.c
+.
+BLK_DEV_TRM290 'Tekram TRM290 chipset support' text
+This driver adds support for bus master DMA transfers
+using the Tekram TRM290 PCI IDE chip. Volunteers are
+needed for further tweaking and development.
+Please read the comments at the top of drivers/ide/trm290.c.
+.
+BLK_DEV_VIA82CXXX 'VIA82CXXX chipset support' text
+This allows you to configure your chipset for a better use while
+running (U)DMA: it will allow you to enable efficiently the second
+channel dma usage, as it may not be set by BIOS. It allows you to
+pass a kernel command line at boot time in order to set fifo
+config. If no command line is provided, it will try to set fifo
+configuration at its best. It will allow you to get information from
+/proc/ide/via provided you enabled "proc" support.
+
+Please read the comments at the top of drivers/ide/via82cxxx.c
+
+If you say Y here, then say Y to "Use DMA by default when available"
+as well.
+
+If unsure, say N.
+.
+BLK_DEV_SL82C105 'Winbond SL82c105 support' text
+If you have a Winbond SL82c105 IDE controller, say Y here to enable
+special configuration for this chip. This is common on various CHRP
+motherboards, but could be used elsewhere. If in doubt, say Y.
+.
+BLK_DEV_IDE_PMAC 'Builtin PowerMac IDE support' text
+This driver provides support for the built-in IDE controller on most
+of the recent Apple Power Macintoshes and PowerBooks.
+If unsure, say Y.
+.
+BLK_DEV_IDEDMA_PMAC 'PowerMac IDE DMA support' text
+This option allows the driver for the built-in IDE controller on
+Power Macintoshes and PowerBooks to use DMA (direct memory access)
+to transfer data to and from memory. Saying Y is safe and improves
+performance.
+.
+BLK_DEV_IDEDMA_PMAC_AUTO 'Use DMA by default' text
+This option allows the driver for the built-in IDE controller on
+Power Macintoshes and PowerBooks to use DMA automatically, without
+it having to be explicitly enabled. This option is provided because
+of concerns about a couple of cases where using DMA on buggy PC
+hardware may have caused damage. Saying Y should be safe on all
+Apple machines.
+.
+BLK_DEV_IDE_ICSIDE 'ICS IDE interface support' text
+On Acorn systems, say Y here if you wish to use the ICS IDE
+interface card. This is not required for ICS partition support.
+If you are unsure, say N to this.
+.
+BLK_DEV_IDEDMA_ICS 'ICS DMA support' text
+Say Y here if you want to add DMA (Direct Memory Access) support to
+the ICS IDE driver.
+.
+IDEDMA_ICS_AUTO 'Use ICS DMA by default' text
+Prior to kernel version 2.1.112, Linux used to automatically use
+DMA for IDE drives and chipsets which support it. Due to concerns
+about a couple of cases where buggy hardware may have caused damage,
+the default is now to NOT use DMA automatically. To revert to the
+previous behaviour, say Y to this question.
+
+If you suspect your hardware is at all flakey, say N here.
+Do NOT email the IDE kernel people regarding this issue!
+.
+BLK_DEV_IDE_RAPIDE 'RapIDE interface support'
+
+IDE_CHIPSETS 'Other IDE chipset support' text
+Say Y here if you want to include enhanced support for various IDE
+interface chipsets used on motherboards and add-on cards. You can
+then pick your particular IDE chip from among the following options.
+This enhanced support may be necessary for Linux to be able to
+access the 3rd/4th drives in some systems. It may also enable
+setting of higher speed I/O rates to improve system performance with
+these chipsets. Most of these also require special kernel boot
+parameters to actually turn on the support at runtime; you can find
+a list of these in the file Documentation/ide.txt.
+
+People with SCSI-only systems can say N here.
+.
+BLK_DEV_4DRIVES 'Generic 4 drives/port support' text
+Certain older chipsets, including the Tekram 690CD, use a single set
+of I/O ports at 0x1f0 to control up to four drives, instead of the
+customary two drives per port. Support for this can be enabled at
+runtime using the "ide0=four" kernel boot parameter if you say Y
+here.
+.
+BLK_DEV_ALI14XX 'ALI M14xx support' text
+This driver is enabled at runtime using the "ide0=ali14xx" kernel
+boot parameter. It enables support for the secondary IDE interface
+of the ALI M1439/1443/1445/1487/1489 chipsets, and permits faster
+I/O speeds to be set as well. See the files Documentation/ide.txt
+and drivers/ide/ali14xx.c for more info.
+.
+BLK_DEV_DTC2278 'DTC-2278 support' text
+This driver is enabled at runtime using the "ide0=dtc2278" kernel
+boot parameter. It enables support for the secondary IDE interface
+of the DTC-2278 card, and permits faster I/O speeds to be set as
+well. See the Documentation/ide.txt and drivers/ide/dtc2278.c
+files for more info.
+.
+BLK_DEV_HT6560B 'Holtek HT6560B support' text
+This driver is enabled at runtime using the "ide0=ht6560b" kernel
+boot parameter. It enables support for the secondary IDE interface
+of the Holtek card, and permits faster I/O speeds to be set as well.
+See the Documentation/ide.txt and drivers/ide/ht6560b.c files for
+more info.
+.
+BLK_DEV_PDC4030 'PROMISE DC4030 support' text
+This driver provides support for the secondary IDE interface and
+cache of Promise IDE chipsets, e.g. DC4030 and DC5030. This driver
+is known to incur timeouts/retries during heavy I/O to drives
+attached to the secondary interface. CDROM and TAPE devices are not
+supported yet. This driver is enabled at runtime using the
+"ide0=dc4030" kernel boot parameter. See the Documentation/ide.txt
+and drivers/ide/pdc4030.c files for more info.
+.
+BLK_DEV_QD65XX 'QDI QD65XX support'
+
+BLK_DEV_UMC8672 'UMC 8672 support' text
+This driver is enabled at runtime using the "ide0=umc8672" kernel
+boot parameter. It enables support for the secondary IDE interface
+of the UMC-8672, and permits faster I/O speeds to be set as well.
+See the files Documentation/ide.txt and drivers/ide/umc8672.c for
+more info.
+.
+BLK_DEV_GAYLE 'Amiga Gayle IDE interface support' text
+This is the IDE driver for the builtin IDE interface on some Amiga
+models. It supports both the `A1200 style' (used in A600 and A1200)
+and `A4000 style' (used in A4000 and A4000T) of the Gayle IDE
+interface. Say Y if you have such an Amiga model and want to use IDE
+devices (hard disks, CD-ROM drives, etc.) that are connected to the
+builtin IDE interface.
+.
+BLK_DEV_IDEDOUBLER 'Amiga IDE Doubler support' text
+This driver provides support for the so-called `IDE doublers' (made
+by various manufacturers, e.g. Eyetech) that can be connected to the
+builtin IDE interface of some Amiga models. Using such an IDE
+doubler, you can connect up to four instead of two IDE devices on
+the Amiga's builtin IDE interface.
+
+Note that the normal Amiga Gayle IDE driver may not work correctly
+if you have an IDE doubler and don't enable this driver!
+
+Say Y if you have an IDE doubler. The driver is enabled at kernel
+runtime using the "ide=doubler" kernel boot parameter.
+.
+BLK_DEV_BUDDHA 'Buddha/Catweasel IDE interface support' text
+This is the IDE driver for the IDE interfaces on the Buddha and
+Catweasel expansion boards. It supports up to two interfaces on the
+Buddha and three on the Catweasel.
+
+Say Y if you have a Buddha or Catweasel expansion board and want to
+use IDE devices (hard disks, CD-ROM drives, etc.) that are connected
+to one of its IDE interfaces.
+.
+BLK_DEV_FALCON_IDE 'Falcon IDE interface support' text
+This is the IDE driver for the builtin IDE interface on the Atari
+Falcon. Say Y if you have a Falcon and want to use IDE devices (hard
+disks, CD-ROM drives, etc.) that are connected to the builtin IDE
+interface.
+.
+BLK_DEV_MAC_IDE 'Macintosh Quadra/Powerbook IDE interface support' text
+This is the IDE driver for the builtin IDE interface on some m68k
+Macintosh models. It supports both the `Quadra style' (used in
+Quadra/ Centris 630 and Performa 588 models) and `Powerbook style'
+(used in the Powerbook 150 and 190 models) IDE interface.
+
+Say Y if you have such an Macintosh model and want to use IDE
+devices (hard disks, CD-ROM drives, etc.) that are connected to the
+builtin IDE interface.
+.
+BLK_DEV_Q40IDE 'Q40/Q60 IDE interface support'
+
+BLK_DEV_PS2 'PS/2 ESDI hard disk support' text
+Say Y here if you have a PS/2 machine with a MCA bus and an ESDI
+hard disk.
+
+If you want to compile the 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 ps2esdi.o.
+.
+AMIGA_Z2RAM 'Amiga Zorro II ramdisk support' text
+This enables support for using Chip RAM and Zorro II RAM as a
+ramdisk or as a swap partition. Say Y if you want to include this
+driver in the kernel. 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 is called z2ram.o. If you want
+to compile it as a module, say M here and read
+Documentation/modules.txt.
+.
+ATARI_ACSI 'Atari ACSI support' text
+This enables support for the Atari ACSI interface. The driver
+supports hard disks and CD-ROMs, which have 512-byte sectors, or can
+be switched to that mode. Due to the ACSI command format, only disks
+up to 1 GB are supported. Special support for certain ACSI to SCSI
+adapters, which could relax that, isn't included yet. The ACSI
+driver is also the basis for certain other drivers for devices
+attached to the ACSI bus: Atari SLM laser printer, BioNet-100
+Ethernet, and PAMsNet Ethernet. If you want to use one of these
+devices, you need ACSI support, too.
+
+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 acsi.o.
+.
+ACSI_MULTI_LUN 'Probe all LUNs on each ACSI device' text
+If you have a ACSI device that supports more than one LUN (Logical
+Unit Number), e.g. a CD jukebox, you should say Y here so that all
+will be found by the ACSI driver. An ACSI device with multiple LUNs
+acts logically like multiple ACSI devices. The vast majority of ACSI
+devices have only one LUN, and so most people can say N here and
+should in fact do so, because it is safer.
+.
+ATARI_SLM 'Atari SLM laser printer support' text
+If you have an Atari SLM laser printer, say Y to include support for
+it in the kernel. Otherwise, say N. 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
+acsi_slm.o. Be warned: the driver needs much ST-RAM and can cause
+problems due to that fact!
+.
+BLK_CPQ_DA 'Compaq SMART2 support' text
+ This is the driver for Compaq Smart Array controllers.
+ Everyone using these boards should say Y here.
+ See the file Documentation/cpqarray.txt for the current list of
+ boards supported by this driver, and for further information
+ on the use of this driver.
+.
+BLK_CPQ_CISS_DA 'Compaq Smart Array support' text
+ This is the driver for Compaq Smart Array 5xxx controllers.
+ Everyone using these boards should say Y here.
+ See Documentation/cciss.txt for the current list of
+ boards supported by this driver, and for further information
+ on the use of this driver.
+.
+BLK_DEV_LOOP 'Loopback device support' text
+Saying Y here will allow you to use a regular file as a block
+device; you can then create a file system on that block device and
+mount it just as you would mount other block devices such as hard
+drive partitions, CDROM drives or floppy drives. The loop devices
+are block special device files with major number 7 and typically
+called /dev/loop0, /dev/loop1 etc.
+
+This is useful if you want to check an ISO 9660 file system before
+burning the CD, or if you want to use floppy images without first
+writing them to floppy. Furthermore, some Linux distributions avoid
+the need for a dedicated Linux partition by keeping their complete
+root file system inside a DOS FAT file using this loop device
+driver.
+
+The loop device driver can also be used to "hide" a file system in a
+disk partition, floppy, or regular file, either using encryption
+(scrambling the data) or steganography (hiding the data in the low
+bits of, say, a sound file). This is also safe if the file resides
+on a remote file server. If you want to do this, you will first have
+to acquire and install a kernel patch from
+ftp://ftp.kerneli.org/pub/kerneli/ , and then you need to
+say Y to this option.
+
+Note that alternative ways to use encrypted file systems are
+provided by the cfs package, which can be gotten from
+ftp://ftp.kerneli.org/pub/kerneli/net-source/ , and the newer tcfs
+package, available at http://tcfs.dia.unisa.it/ . You do not need to
+say Y here if you want to use one of these. However, using cfs
+requires saying Y to "NFS file system support" below while using
+tcfs requires applying a kernel patch. An alternative steganography
+solution is provided by StegFS, also available from
+ftp://ftp.kerneli.org/pub/kerneli/net-source/ .
+
+To use the loop device, you need the losetup utility and a recent
+version of the mount program, both contained in the util-linux
+package. The location and current version number of util-linux is
+contained in the file Documentation/Changes.
+
+Note that this loop device has nothing to do with the loopback
+device used for network connections from the machine to itself.
+
+If you want 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 loop.o.
+
+Most users will answer N here.
+.
+BLK_DEV_NBD 'Network block device support' text
+Saying Y here will allow your computer to be a client for network
+block devices, i.e. it will be able to use block devices exported by
+servers (mount file systems on them etc.). Communication between
+client and server works over TCP/IP networking, but to the client
+program this is hidden: it looks like a regular local file access to
+a block device special file such as /dev/nd0.
+
+Network block devices also allows you to run a block-device in
+userland (making server and client physically the same computer,
+communicating using the loopback network device).
+
+Read Documentation/nbd.txt for more information, especially about
+where to find the server code, which runs in user space and does not
+need special kernel support.
+
+Note that this has nothing to do with the network file systems NFS
+or Coda; you can say N here even if you intend to use NFS or Coda.
+
+If you want 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 nbd.o.
+
+If unsure, say N.
+.
+MD 'Multiple devices driver support (RAID and LVM)'
+
+BLK_DEV_MD 'Multiple devices driver support' text
+This driver lets you combine several hard disk partitions into one
+logical block device. This can be used to simply append one
+partition to another one or to combine several redundant hard disks
+into a RAID1/4/5 device so as to provide protection against hard
+disk failures. This is called "Software RAID" since the combining of
+the partitions is done by the kernel. "Hardware RAID" means that the
+combining is done by a dedicated controller; if you have such a
+controller, you do not need to say Y here.
+
+More information about Software RAID on Linux is contained in the
+Software-RAID mini-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . There you will also
+learn where to get the supporting user space utilities raidtools.
+
+If unsure, say N.
+.
+MD_LINEAR 'Linear (append) mode' text
+If you say Y here, then your multiple devices driver will be able to
+use the so-called linear mode, i.e. it will combine the hard disk
+partitions by simply appending one to the other.
+
+If you want to compile this 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 linear.o.
+
+If unsure, say Y.
+.
+MD_RAID0 'RAID-0 (striping) mode' text
+If you say Y here, then your multiple devices driver will be able to
+use the so-called raid0 mode, i.e. it will combine the hard disk
+partitions into one logical device in such a fashion as to fill them
+up evenly, one chunk here and one chunk there. This will increase
+the throughput rate if the partitions reside on distinct disks.
+
+Information about Software RAID on Linux is contained in the
+Software-RAID mini-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . There you will also
+learn where to get the supporting user space utilities raidtools.
+
+If you want to compile this 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 raid0.o.
+
+If unsure, say Y.
+.
+MD_RAID1 'RAID-1 (mirroring) mode' text
+A RAID-1 set consists of several disk drives which are exact copies
+of each other. In the event of a mirror failure, the RAID driver
+will continue to use the operational mirrors in the set, providing
+an error free MD (multiple device) to the higher levels of the
+kernel. In a set with N drives, the available space is the capacity
+of a single drive, and the set protects against a failure of (N - 1)
+drives.
+
+Information about Software RAID on Linux is contained in the
+Software-RAID mini-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . There you will also
+learn where to get the supporting user space utilities raidtools.
+
+If you want to use such a RAID-1 set, say Y. This code is also
+available as a module called raid1.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.
+.
+MD_RAID5 'RAID-4/RAID-5 mode' text
+A RAID-5 set of N drives with a capacity of C MB per drive provides
+the capacity of C * (N - 1) MB, and protects against a failure
+of a single drive. For a given sector (row) number, (N - 1) drives
+contain data sectors, and one drive contains the parity protection.
+For a RAID-4 set, the parity blocks are present on a single drive,
+while a RAID-5 set distributes the parity across the drives in one
+of the available parity distribution methods.
+
+Information about Software RAID on Linux is contained in the
+Software-RAID mini-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . There you will also
+learn where to get the supporting user space utilities raidtools.
+
+If you want to use such a RAID-4/RAID-5 set, say Y. This code is
+also available as a module called raid5.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.
+.
+MD_MULTIPATH 'Multipath I/O support'
+
+BLK_DEV_LVM 'Logical Volume Manager (LVM) support' text
+This driver lets you combine several hard disks, hard disk
+partitions, multiple devices or even loop devices (for evaluation
+purposes) into a volume group. Imagine a volume group as a kind of
+virtual disk. Logical volumes, which can be thought of as virtual
+partitions, can be created in the volume group. You can resize
+volume groups and logical volumes after creation time, corresponding
+to new capacity needs. Logical volumes are accessed as block
+devices named /dev/VolumeGroupName/LogicalVolumeName.
+
+For details see Documentation/LVM-HOWTO. You will need supporting
+user space software; location is in Documentation/Changes.
+
+If you want to compile this support 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 lvm-mod.o.
+.
+BLK_DEV_ATARAID 'Support for IDE Raid controllers'
+
+BLK_DEV_ATARAID_PDC 'Support Promise software RAID (Fasttrak(tm))'
+
+BLK_DEV_ATARAID_HPT 'Highpoint 370 software RAID'
+
+BLK_DEV_RAM 'RAM disk support' text
+Saying Y here will allow you to use a portion of your RAM memory as
+a block device, so that you can make file systems on it, read and
+write to it and do all the other things that you can do with normal
+block devices (such as hard drives). It is usually used to load and
+store a copy of a minimal root file system off of a floppy into RAM
+during the initial install of Linux.
+
+Note that the kernel command line option "ramdisk=XX" is now
+obsolete. For details, read Documentation/ramdisk.txt.
+
+If you want to compile this as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want),
+say M and read Documentation/modules.txt. The module will be called
+rd.o.
+
+Most normal users won't need the RAM disk functionality, and can
+thus say N here.
+.
+BLK_DEV_RAM_SIZE 'Default RAM disk size' text
+The default value is 4096. Only change this if you know what are
+you doing. If you are using IBM S/390, then set this to 8192.
+.
+BLK_DEV_INITRD 'Initial RAM disk (initrd) support' text
+The initial RAM disk is a RAM disk that is loaded by the boot loader
+(loadlin or lilo) and that is mounted as root before the normal boot
+procedure. It is typically used to load modules needed to mount the
+"real" root file system, etc. See Documentation/initrd.txt for
+details.
+.
+BLK_DEV_XPRAM 'XPRAM disk support'
+
+BLK_DEV_XD 'XT hard disk support' text
+Very old 8 bit hard disk controllers used in the IBM XT computer
+will be supported if you say Y here.
+
+If you want to compile the 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 xd.o.
+
+It's pretty unlikely that you have one of these: say N.
+.
+BLK_DEV_DAC960 'Mylex DAC960/DAC1100 PCI RAID Controller support' text
+This driver adds support for the Mylex DAC960, AcceleRAID, and
+eXtremeRAID PCI RAID controllers. See the file
+Documentation/README.DAC960 for further information about this
+driver.
+
+If you want to compile the 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 DAC960.o.
+.
+IDEDMA_IVB 'IGNORE word93 Validation BITS' text
+Since various rules were applied and created ... et al. as it relates
+the detection of valid 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.
+.
+#
+# PARIDE configuration
+PARIDE 'Parallel port IDE device support' text
+There are many external CD-ROM and disk devices that connect through
+your computer's parallel port. Most of them are actually IDE devices
+using a parallel port IDE adapter. This option enables the PARIDE
+subsystem which contains drivers for many of these external drives.
+Read Documentation/paride.txt for more information.
+
+If you have said Y to the "Parallel-port support" configuration
+option, you may share a single port between your printer and other
+parallel port devices. Answer Y to build PARIDE support into your
+kernel, or M if you would like to build it as a loadable module. If
+your parallel port support is in a loadable module, you must build
+PARIDE as a module. If you built PARIDE support into your kernel,
+you may still build the individual protocol modules and high-level
+drivers as loadable modules. If you build this support as a module,
+it will be called paride.o.
+
+To use the PARIDE support, you must say Y or M here and also to at
+least one high-level driver (e.g. "Parallel port IDE disks",
+"Parallel port ATAPI CD-ROMs", "Parallel port ATAPI disks" etc.) and
+to at least one protocol driver (e.g. "ATEN EH-100 protocol",
+"MicroSolutions backpack protocol", "DataStor Commuter protocol"
+etc.).
+.
+PARIDE_PD 'Parallel port IDE disks' text
+This option enables the high-level driver for IDE-type disk devices
+connected through a parallel port. If you chose to build PARIDE
+support into your kernel, you may answer Y here to build in the
+parallel port IDE driver, otherwise you should answer M to build
+it as a loadable module. The module will be called pd.o. You
+must also have at least one parallel port protocol driver in your
+system. Among the devices supported by this driver are the SyQuest
+EZ-135, EZ-230 and SparQ drives, the Avatar Shark and the backpack
+hard drives from MicroSolutions.
+.
+PARIDE_PCD 'Parallel port ATAPI CD-ROMs' text
+This option enables the high-level driver for ATAPI CD-ROM devices
+connected through a parallel port. If you chose to build PARIDE
+support into your kernel, you may answer Y here to build in the
+parallel port ATAPI CD-ROM driver, otherwise you should answer M to
+build it as a loadable module. The module will be called pcd.o. You
+must also have at least one parallel port protocol driver in your
+system. Among the devices supported by this driver are the
+MicroSolutions backpack CD-ROM drives and the Freecom Power CD. If
+you have such a CD-ROM drive, you should also say Y or M to "ISO
+9660 CDROM file system support" below, because that's the file
+system used on CDROMs.
+.
+PARIDE_PF 'Parallel port ATAPI disks' text
+This option enables the high-level driver for ATAPI disk devices
+connected through a parallel port. If you chose to build PARIDE
+support into your kernel, you may answer Y here to build in the
+parallel port ATAPI disk driver, otherwise you should answer M
+to build it as a loadable module. The module will be called pf.o.
+You must also have at least one parallel port protocol driver in
+your system. Among the devices supported by this driver are the
+MicroSolutions backpack PD/CD drive and the Imation Superdisk
+LS-120 drive.
+.
+PARIDE_PT 'Parallel port ATAPI tapes' text
+This option enables the high-level driver for ATAPI tape devices
+connected through a parallel port. If you chose to build PARIDE
+support into your kernel, you may answer Y here to build in the
+parallel port ATAPI disk driver, otherwise you should answer M
+to build it as a loadable module. The module will be called pt.o.
+You must also have at least one parallel port protocol driver in
+your system. Among the devices supported by this driver is the
+parallel port version of the HP 5GB drive.
+.
+PARIDE_PG 'Parallel port generic ATAPI devices' text
+This option enables a special high-level driver for generic ATAPI
+devices connected through a parallel port. The driver allows user
+programs, such as cdrecord, to send ATAPI commands directly to a
+device.
+
+If you chose to build PARIDE support into your kernel, you may
+answer Y here to build in the parallel port generic ATAPI driver,
+otherwise you should answer M to build it as a loadable module. The
+module will be called pg.o.
+
+You must also have at least one parallel port protocol driver in
+your system.
+
+This driver implements an API loosely related to the generic SCSI
+driver. See include/linux/pg.h for details.
+
+You can obtain the most recent version of cdrecord from
+ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/ . Versions 1.6.1a3 and
+later fully support this driver.
+.
+PARIDE_ATEN 'ATEN EH-100 protocol' text
+This option enables support for the ATEN EH-100 parallel port IDE
+protocol. This protocol is used in some inexpensive low performance
+parallel port kits made in Hong Kong. If you chose to build PARIDE
+support into your kernel, you may answer Y here to build in the
+protocol driver, otherwise you should answer M to build it as a
+loadable module. The module will be called aten.o. You must also
+have a high-level driver for the type of device that you want to
+support.
+.
+PARIDE_BPCK 'Micro Solutions BACKPACK Series 5 protocol' text
+This option enables support for the Micro Solutions BACKPACK parallel
+port Series 5 IDE protocol. (Most BACKPACK drives made before 1999 were
+Series 5) Series 5 drives will NOT always have the Series noted on the
+bottom of the drive. Series 6 drivers will.
+
+In other words, if your BACKPACK drive dosen't say "Series 6" on the
+bottom, enable this option.
+
+If you chose to build PARIDE support into your kernel, you may answer Y
+here to build in the protocol driver, otherwise you should answer M to
+build it as a loadable module. The module will be called bpck.o. You
+must also have a high-level driver for the type of device that you want
+to support.
+.
+PARIDE_BPCK6 'Micro Solutions BACKPACK Series 6 protocol' text
+This option enables support for the Micro Solutions BACKPACK parallel
+port Series 6 IDE protocol. (Most BACKPACK drives made after 1999 were
+Series 6) Series 6 drives will have the Series noted on the bottom of
+the drive. Series 5 drivers don't always have it noted.
+
+In other words, if your BACKPACK drive says "Series 6" on the bottom,
+enable this option.
+
+If you chose to build PARIDE support into your kernel, you may answer Y
+here to build in the protocol driver, otherwise you should answer M to
+build it as a loadable module. The module will be called bpck6.o. You
+must also have a high-level driver for the type of device that you want
+to support.
+.
+PARIDE_COMM 'DataStor Commuter protocol' text
+This option enables support for the Commuter parallel port IDE
+protocol from DataStor. If you chose to build PARIDE support
+into your kernel, you may answer Y here to build in the protocol
+driver, otherwise you should answer M to build it as a loadable
+module. The module will be called comm.o. You must also have
+a high-level driver for the type of device that you want to support.
+.
+PARIDE_DSTR 'DataStor EP-2000 protocol' text
+This option enables support for the EP-2000 parallel port IDE
+protocol from DataStor. If you chose to build PARIDE support
+into your kernel, you may answer Y here to build in the protocol
+driver, otherwise you should answer M to build it as a loadable
+module. The module will be called dstr.o. You must also have
+a high-level driver for the type of device that you want to support.
+.
+PARIDE_FIT2 'FIT TD-2000 protocol' text
+This option enables support for the TD-2000 parallel port IDE
+protocol from Fidelity International Technology. This is a simple
+(low speed) adapter that is used in some portable hard drives. If
+you chose to build PARIDE support into your kernel, you may answer Y
+here to build in the protocol driver, otherwise you should answer M
+to build it as a loadable module. The module will be called ktti.o.
+You must also have a high-level driver for the type of device that
+you want to support.
+.
+PARIDE_FIT3 'FIT TD-3000 protocol' text
+This option enables support for the TD-3000 parallel port IDE
+protocol from Fidelity International Technology. This protocol is
+used in newer models of their portable disk, CD-ROM and PD/CD
+devices. If you chose to build PARIDE support into your kernel, you
+may answer Y here to build in the protocol driver, otherwise you
+should answer M to build it as a loadable module. The module will be
+called fit3.o. You must also have a high-level driver for the type
+of device that you want to support.
+.
+PARIDE_EPAT 'Shuttle EPAT/EPEZ protocol' text
+This option enables support for the EPAT parallel port IDE protocol.
+EPAT is a parallel port IDE adapter manufactured by Shuttle
+Technology and widely used in devices from major vendors such as
+Hewlett-Packard, SyQuest, Imation and Avatar. If you chose to build
+PARIDE support into your kernel, you may answer Y here to build in
+the protocol driver, otherwise you should answer M to build it as a
+loadable module. The module will be called epat.o. You must also
+have a high-level driver for the type of device that you want to
+support.
+.
+PARIDE_EPIA 'Shuttle EPIA protocol' text
+This option enables support for the (obsolete) EPIA parallel port
+IDE protocol from Shuttle Technology. This adapter can still be
+found in some no-name kits. If you chose to build PARIDE support
+into your kernel, you may answer Y here to build in the protocol
+driver, otherwise you should answer M to build it as a loadable
+module. The module will be called epia.o. You must also have a
+high-level driver for the type of device that you want to support.
+.
+PARIDE_FRIQ 'Freecom IQ ASIC-2 protocol' text
+This option enables support for version 2 of the Freecom IQ parallel
+port IDE adapter. This adapter is used by the Maxell Superdisk
+drive. If you chose to build PARIDE support into your kernel, you
+may answer Y here to build in the protocol driver, otherwise you
+should answer M to build it as a loadable module. The module will be
+called friq.o. You must also have a high-level driver for the type
+of device that you want to support.
+.
+PARIDE_FRPW 'FreeCom power protocol' text
+This option enables support for the Freecom power parallel port IDE
+protocol. If you chose to build PARIDE support into your kernel, you
+may answer Y here to build in the protocol driver, otherwise you
+should answer M to build it as a loadable module. The module will be
+called frpw.o. You must also have a high-level driver for the type
+of device that you want to support.
+.
+PARIDE_KBIC 'KingByte KBIC-951A/971A protocols' text
+This option enables support for the KBIC-951A and KBIC-971A parallel
+port IDE protocols from KingByte Information Corp. KingByte's
+adapters appear in many no-name portable disk and CD-ROM products,
+especially in Europe. If you chose to build PARIDE support into your
+kernel, you may answer Y here to build in the protocol driver,
+otherwise you should answer M to build it as a loadable module. The
+module will be called kbic.o. You must also have a high-level driver
+for the type of device that you want to support.
+.
+PARIDE_KTTI 'KT PHd protocol' text
+This option enables support for the "PHd" parallel port IDE protocol
+from KT Technology. This is a simple (low speed) adapter that is
+used in some 2.5" portable hard drives. If you chose to build PARIDE
+support into your kernel, you may answer Y here to build in the
+protocol driver, otherwise you should answer M to build it as a
+loadable module. The module will be called ktti.o. You must also
+have a high-level driver for the type of device that you want to
+support.
+.
+PARIDE_ON20 'OnSpec 90c20 protocol' text
+This option enables support for the (obsolete) 90c20 parallel port
+IDE protocol from OnSpec (often marketed under the ValuStore brand
+name). If you chose to build PARIDE support into your kernel, you
+may answer Y here to build in the protocol driver, otherwise you
+should answer M to build it as a loadable module. The module will
+be called on20.o. You must also have a high-level driver for the
+type of device that you want to support.
+.
+PARIDE_ON26 'OnSpec 90c26 protocol' text
+This option enables support for the 90c26 parallel port IDE protocol
+from OnSpec Electronics (often marketed under the ValuStore brand
+name). If you chose to build PARIDE support into your kernel, you
+may answer Y here to build in the protocol driver, otherwise you
+should answer M to build it as a loadable module. The module will be
+called on26.o. You must also have a high-level driver for the type
+of device that you want to support.
+.
+PARIDE_EPATC8 'Support c7/c8 chips' text
+This option enables support for the newer Shuttle EP1284 (aka c7 and
+c8) chip. You need this if you are using any recent Imation SuperDisk
+(LS-120) drive.
+.
+#
+# Character device configuration
+VT 'Virtual terminal' text
+If you say Y here, you will get support for terminal devices with
+display and keyboard devices. These are called "virtual" because you
+can run several virtual terminals (also called virtual consoles) on
+one physical terminal. This is rather useful, for example one
+virtual terminal can collect system messages and warnings, another
+one can be used for a text-mode user session, and a third could run
+an X session, all in parallel. Switching between virtual terminals
+is done with certain key combinations, usually Alt-.
+
+The setterm command ("man setterm") can be used to change the
+properties (such as colors or beeping) of a virtual terminal. The
+man page console_codes(4) ("man console_codes") contains the special
+character sequences that can be used to change those properties
+directly. The fonts used on virtual terminals can be changed with
+the setfont ("man setfont") command and the key bindings are defined
+with the loadkeys ("man loadkeys") command.
+
+You need at least one virtual terminal device in order to make use
+of your keyboard and monitor. Therefore, only people configuring an
+embedded system would want to say N here in order to save some
+memory; the only way to log into such a system is then via a serial
+or network connection.
+
+If unsure, say Y, or else you won't be able to do much with your new
+shiny Linux system :-)
+.
+VT_CONSOLE 'Support for console on virtual terminal' text
+The system console is the device which receives all kernel messages
+and warnings and which allows logins in single user mode. If you
+answer Y here, a virtual terminal (the device used to interact with
+a physical terminal) can be used as system console. This is the most
+common mode of operations, so you should say Y here unless you want
+the kernel messages be output only to a serial port (in which case
+you should say Y to "Console on serial port", below).
+
+If you do say Y here, by default the currently visible virtual
+terminal (/dev/tty0) will be used as system console. You can change
+that with a kernel command line option such as "console=tty3" which
+would use the third virtual terminal as system console. (Try "man
+bootparam" or see the documentation of your boot loader (lilo or
+loadlin) about how to pass options to the kernel at boot time.)
+
+If unsure, say Y.
+.
+STI_CONSOLE 'STI console'
+
+SERIAL 'Standard/generic (8250/16550 and compatible UARTs) serial support'
+text
+This selects whether you want to include the driver for the standard
+serial ports. The standard answer is Y. People who might say N here
+are those that are setting up dedicated Ethernet WWW/FTP servers, or
+users that have one of the various bus mice instead of a serial
+mouse and don't intend to use their machine's standard serial port
+for anything. (Note that the Cyclades and Stallion multi serial port
+drivers do not need this driver built in for them to work.)
+
+If you want to compile this driver as a module, say M here and read
+Documentation/modules.txt. The module will be called serial.o.
+[WARNING: Do not compile this driver as a module if you are using
+non-standard serial ports, since the configuration information will
+be lost when the driver is unloaded. This limitation may be lifted
+in the future.]
+
+BTW1: If you have a mouseman serial mouse which is not recognized by
+the X window system, try running gpm first.
+
+BTW2: If you intend to use a software modem (also called Winmodem)
+under Linux, forget it. These modems are crippled and require
+proprietary drivers which are only available under Windows.
+
+Most people will say Y or M here, so that they can use serial mice,
+modems and similar devices connecting to the standard serial ports.
+.
+SERIAL_CONSOLE 'Support for console on serial port' text
+If you say Y here, it will be possible to use a serial port as the
+system console (the system console is the device which receives all
+kernel messages and warnings and which allows logins in single user
+mode). This could be useful if some terminal or printer is connected
+to that serial port.
+
+Even if you say Y here, the currently visible virtual console
+(/dev/tty0) will still be used as the system console by default, but
+you can alter that using a kernel command line option such as
+"console=ttyS1". (Try "man bootparam" or see the documentation of
+your boot loader (lilo or loadlin) about how to pass options to the
+kernel at boot time.)
+
+If you don't have a VGA card installed and you say Y here, the
+kernel will automatically use the first serial line, /dev/ttyS0, as
+system console.
+
+If unsure, say N.
+.
+ATOMWIDE_SERIAL 'Atomwide serial port support' text
+If you have an Atomwide Serial card for an Acorn system, say Y to
+this option. The driver can handle 1, 2, or 3 port cards.
+If unsure, say N
+.
+DUALSP_SERIAL 'Dual serial port support' text
+If you have the Serial Port's dual serial card for an Acorn system,
+say Y to this option. If unsure, say N
+.
+SERIAL_ACPI 'Support for serial ports defined by ACPI tables'
+
+SERIAL_EXTENDED 'Extended dumb serial driver options' text
+If you wish to use any non-standard features of the standard "dumb"
+driver, say Y here. This includes HUB6 support, shared serial
+interrupts, special multiport support, support for more than the
+four COM 1/2/3/4 boards, etc.
+
+Note that the answer to this question won't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about serial driver options. If unsure, say N.
+.
+SERIAL_MANY_PORTS 'Support more than 4 serial ports' text
+Say Y here if you have dumb serial boards other than the four
+standard COM 1/2/3/4 ports. This may happen if you have an AST
+FourPort, Accent Async, Boca (read the Boca mini-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto ), or other custom
+serial port hardware which acts similar to standard serial port
+hardware. If you only use the standard COM 1/2/3/4 ports, you can
+say N here to save some memory. You can also say Y if you have an
+"intelligent" multiport card such as Cyclades, Digiboards, etc.
+.
+SERIAL_SHARE_IRQ 'Support for sharing serial interrupts' text
+Some serial boards have hardware support which allows multiple dumb
+serial ports on the same board to share a single IRQ. To enable
+support for this in the serial driver, say Y here.
+.
+SERIAL_DETECT_IRQ 'Auto-detect IRQ on standard ports (unsafe)' text
+Say Y here if you want the kernel to try to guess which IRQ
+to use for your serial port.
+
+This is considered unsafe; it is far better to configure the IRQ in
+a boot script using the setserial command.
+
+If unsure, say N.
+.
+SERIAL_MULTIPORT 'Support special multiport boards' text
+Some multiport serial ports have special ports which are used to
+signal when there are any serial ports on the board which need
+servicing. Say Y here to enable the serial driver to take advantage
+of those special I/O ports.
+.
+HUB6 'Support the Bell Technologies HUB6 card' text
+Say Y here to enable support in the dumb serial driver to support
+the HUB6 card.
+.
+SERIAL_NONSTANDARD 'Non-standard serial port support' text
+Say Y here if you have any non-standard serial boards -- boards
+which aren't supported using the standard "dumb" serial driver.
+This includes intelligent serial boards such as Cyclades,
+Digiboards, etc. These are usually used for systems that need many
+serial ports because they serve many terminals or dial-in
+connections.
+
+Note that the answer to this question won't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about non-standard serial boards.
+
+Most people can say N here.
+.
+COMPUTONE 'Computone IntelliPort Plus serial support' text
+This driver supports the entire family of Intelliport II/Plus
+controllers with the exception of the MicroChannel controllers and
+products previous to the Intelliport II. These are multiport cards,
+which give you many serial ports. You would need something like
+this to connect more than two modems to your Linux box, for
+instance in order to become a dial-in server. If you have a
+card like that, say Y here and read Documentation/computone.txt.
+
+If you want to compile this 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. You will get two
+modules called ip2.o and ip2main.o.
+.
+ROCKETPORT 'Comtrol Rocketport support' text
+This is a driver for the Comtrol Rocketport cards which provide
+multiple serial ports. You would need something like this to connect
+more than two modems to your Linux box, for instance in order to
+become a dial-in server.
+
+If you want to compile this driver as a module, say M here and read
+Documentation/modules.txt. The module will be called rocket.o.
+.
+CYCLADES 'Cyclades async mux support' text
+This is a driver for a card that gives you many serial ports. You
+would need something like this to connect more than two modems to
+your Linux box, for instance in order to become a dial-in server.
+For information about the Cyclades-Z card, read
+drivers/char/README.cycladesZ.
+
+As of 1.3.9x kernels, this driver's minor numbers start at 0 instead
+of 32.
+
+If you want to compile this 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 cyclades.o.
+
+If you haven't heard about it, it's safe to say N.
+.
+CYZ_INTR 'Cyclades-Z interrupt mode operation' text
+The Cyclades-Z family of multiport cards allows 2 (two) driver op
+modes: polling and interrupt. In polling mode, the driver will check
+the status of the Cyclades-Z ports every certain amount of time
+(which is called polling cycle and is configurable). In interrupt
+mode, it will use an interrupt line (IRQ) in order to check the
+status of the Cyclades-Z ports. The default op mode is polling. If
+unsure, say N.
+.
+DIGIEPCA 'Digiboard Intelligent async support' text
+This is a driver for Digi International's Xx, Xeve, and Xem series
+of cards which provide multiple serial ports. You would need
+something like this to connect more than two modems to your Linux
+box, for instance in order to become a dial-in server. This driver
+supports the original PC (ISA) boards as well as PCI, and EISA. If
+you have a card like this, say Y here and read the file
+Documentation/digiepca.txt.
+
+NOTE: There is another, separate driver for the Digiboard PC boards:
+"Digiboard PC/Xx Support" below. You should (and can) only select
+one of the two drivers.
+
+If you want to compile this driver as a module, say M here and read
+Documentation/modules.txt. The module will be called epca.o.
+.
+DIGI 'Digiboard PC/Xx Support' text
+This is a driver for the Digiboard PC/Xe, PC/Xi, and PC/Xeve cards
+that give you many serial ports. You would need something like this
+to connect more than two modems to your Linux box, for instance in
+order to become a dial-in server. If you have a card like that, say
+Y here and read the file Documentation/digiboard.txt.
+
+If you want to compile this driver as a module, say M here and read
+Documentation/modules.txt. The module will be called pcxx.o.
+.
+ESPSERIAL 'Hayes ESP serial port support' text
+This is a driver which supports Hayes ESP serial ports. Both single
+port cards and multiport cards are supported. Make sure to read
+Documentation/hayes-esp.txt.
+
+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 esp.o.
+If unsure, say N.
+.
+MOXA_INTELLIO 'Moxa Intellio support' text
+Say Y here if you have a Moxa Intellio multiport serial card.
+
+This driver can also be built as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module will be called moxa.o. If you want to do that, say M
+here.
+.
+MOXA_SMARTIO 'Moxa SmartIO support' text
+Say Y here if you have a Moxa SmartIO multiport serial card.
+
+This driver can also be built as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module will be called mxser.o. If you want to do that, say M
+here.
+.
+ISI 'Multi-Tech multiport card support' text
+This is a driver for the Multi-Tech cards which provide several
+serial ports. The driver is experimental and can currently only be
+built as a module ( = code which can be inserted in and removed from
+the running kernel whenever you want). Please read
+Documentation/modules.txt. The module will be called isicom.o
+.
+SYNCLINK 'Microgate SyncLink adapter support' text
+Provides support for the SyncLink ISA and PCI
+multiprotocol serial adapters. These adapters
+support asynchronous and HDLC bit synchronous
+communication up to 10Mbps (PCI adapter).
+
+This driver can only be built as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module will be called synclink.o. If you want to do that, say M
+here.
+.
+N_HDLC 'Synchronous HDLC line discipline support'
+RISCOM8 'SDL RISCom/8 card support' text
+This is a driver for the SDL Communications RISCom/8 multiport card,
+which gives you many serial ports. You would need something like
+this to connect more than two modems to your Linux box, for instance
+in order to become a dial-in server. If you have a card like that,
+say Y here and read the file Documentation/riscom8.txt.
+
+Also it's possible to say M here and compile this driver as kernel
+loadable module; the module will be called riscom8.o.
+.
+SPECIALIX 'Specialix IO8+ card support' text
+This is a driver for the Specialix IO8+ multiport card (both the
+ISA and the PCI version) which gives you many serial ports. You
+would need something like this to connect more than two modems to
+your Linux box, for instance in order to become a dial-in server.
+
+If you have a card like that, say Y here and read the file
+Documentation/specialix.txt. Also it's possible to say M here and
+compile this driver as kernel loadable module which will be called
+specialix.o.
+.
+SPECIALIX_RTSCTS 'Specialix DTR/RTS pin is RTS' text
+The Specialix card can only support either RTS or DTR. If you say N
+here, the driver will use the pin as "DTR" when the tty is in
+software handshake mode. If you say Y here or hardware handshake is
+on, it will always be RTS. Read the file Documentation/specialix.txt
+for more information.
+.
+SX 'Specialix SX (and SI) card support' text
+This is a driver for the SX and SI multiport serial cards.
+Please read the file Documentation/sx.txt for details.
+
+This driver can only be built as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The module will be called sx.o. If you want to do that, say M here.
+.
+STALDRV 'Stallion multiport serial support' text
+Stallion cards give you many serial ports. You would need something
+like this to connect more than two modems to your Linux box, for
+instance in order to become a dial-in server. If you say Y here, you
+will be asked for your specific card model in the next questions.
+Make sure to read drivers/char/README.stallion in this case. If you
+have never heard about all this, it's safe to say N.
+.
+RIO 'Specialix RIO system support'
+
+RIO_OLDPCI 'Support really old RIO/PCI cards'
+
+SH_SCI 'SuperH SCI (serial) support' text
+Selecting this option will allow the Linux kernel to transfer
+data over SCI (Serial Communication Interface) and/or SCIF
+which are built into the Hitachi SuperH processor.
+
+If unsure, say N.
+.
+STALLION 'Stallion EasyIO or EC8/32 support' text
+If you have an EasyIO or EasyConnection 8/32 multiport Stallion
+card, then this is for you; say Y. Make sure to read
+Documentation/stallion.txt.
+
+If you want to compile this 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 stallion.o.
+.
+ISTALLION 'Stallion EC8/64, ONboard, Brumby support' text
+If you have an EasyConnection 8/64, ONboard, Brumby or Stallion
+serial multiport card, say Y here. Make sure to read
+Documentation/stallion.txt.
+
+To compile it 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
+istallion.o.
+.
+SERIAL_TX3912 'TMPTX3912/PR31700 serial port support'
+
+SERIAL_TX3912_CONSOLE 'Console on TMPTX3912/PR31700 serial port'
+
+AU1000_UART 'Enable Au1000 UART Support'
+
+AU1000_SERIAL_CONSOLE 'Enable Au1000 serial console'
+
+UNIX98_PTYS 'Unix98 PTY support' text
+A pseudo terminal (PTY) is a software device consisting of two
+halves: a master and a slave. The slave device behaves identical to
+a physical terminal; the master device is used by a process to
+read data from and write data to the slave, thereby emulating a
+terminal. Typical programs for the master side are telnet servers
+and xterms.
+
+Linux has traditionally used the BSD-like names /dev/ptyxx for
+masters and /dev/ttyxx for slaves of pseudo terminals. This scheme
+has a number of problems. The GNU C library glibc 2.1 and later,
+however, supports the Unix98 naming standard: in order to acquire a
+pseudo terminal, a process opens /dev/ptmx; the number of the pseudo
+terminal is then made available to the process and the pseudo
+terminal slave can be accessed as /dev/pts/. What was
+traditionally /dev/ttyp2 will then be /dev/pts/2, for example.
+
+The entries in /dev/pts/ are created on the fly by a virtual
+file system; therefore, if you say Y here you should say Y to
+"/dev/pts file system for Unix98 PTYs" as well.
+
+If you want to say Y here, you need to have the C library glibc 2.1
+or later (equal to libc-6.1, check with "ls -l /lib/libc.so.*").
+Read the instructions in Documentation/Changes pertaining to pseudo
+terminals. It's safe to say N.
+.
+UNIX98_PTY_COUNT 'Maximum number of Unix98 PTYs in use (0-2048)' text
+The maximum number of Unix98 PTYs that can be used at any one time.
+The default is 256, and should be enough for desktop systems. Server
+machines which support incoming telnet/rlogin/ssh connections and/or
+serve several X terminals may want to increase this: every incoming
+connection and every xterm uses up one PTY.
+
+When not in use, each additional set of 256 PTYs occupy
+approximately 8 KB of kernel memory on 32-bit architectures.
+.
+LP_CONSOLE 'Support for console on line printer' text
+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=lp0" to the kernel at boot time.
+
+If the printer is out of paper (or off, or unplugged, or too
+busy..) the kernel will stall until the printer is ready again.
+By defining CONSOLE_LP_STRICT to 0 (at your own risk) you
+can make the kernel continue when this happens,
+but it'll lose the kernel messages.
+
+If unsure, say N.
+.
+PPDEV 'Support for user-space parallel port device drivers' text
+Saying Y to this adds support for /dev/parport device nodes. This
+is needed for programs that want portable access to the parallel
+port, for instance deviceid (which displays Plug-and-Play device
+IDs).
+
+This is the parallel port equivalent of SCSI generic support (sg).
+It is safe to say N to this -- it is not needed for normal printing
+or parallel port CD-ROM/disk support.
+
+This support is also available as a module. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. The
+module will be called ppdev.o.
+
+If unsure, say N.
+.
+BUSMOUSE 'Bus Mouse Support' text
+Say Y here if your machine has a bus mouse as opposed to a serial
+mouse. Most people have a regular serial MouseSystem or
+Microsoft mouse (made by Logitech) that plugs into a COM port
+(rectangular with 9 or 25 pins). These people say N here. If you
+have something else, read the Busmouse-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , and say Y here.
+
+If you have a laptop, you either have to check the documentation or
+experiment a bit to find out whether the trackball is a serial mouse
+or not; it's best to say Y here for you.
+
+This is the generic bus mouse driver code. If you have a bus mouse,
+you will have to say Y here and also to the specific driver for your
+mouse below.
+
+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 busmouse.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+ATIXL_BUSMOUSE 'ATIXL busmouse support' text
+This is a rare type of busmouse that is connected to the back of an
+ATI video card. Say Y if you have one of those. Note however that
+most mice by ATI are actually Microsoft busmice; you should say Y to
+"Microsoft busmouse support" above if you have one of those. Read
+the Busmouse-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this 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 atixlmouse.o.
+
+If you are unsure, say N and read the HOWTO nevertheless: it will
+tell you what you have.
+.
+LOGIBUSMOUSE 'Logitech busmouse support' text
+Logitech mouse connected to a proprietary interface card. It's
+generally a round connector with 9 pins. Note that the newer mice
+made by Logitech don't use the Logitech protocol anymore; for those,
+you don't need this option. You want to read the Busmouse-HOWTO ,
+available from http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this 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 busmouse.o. If you are unsure, say N and read the HOWTO
+nevertheless: it will tell you what you have.
+.
+MS_BUSMOUSE 'Microsoft busmouse support' text
+These animals (also called Inport mice) are connected to an
+expansion board using a round connector with 9 pins. If this is what
+you have, say Y and read the Busmouse-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you are unsure, say N and read the HOWTO nevertheless: it will
+tell you what you have. Also be aware that several vendors talk
+about 'Microsoft busmouse' and actually mean PS/2 busmouse -- so
+count the pins on the connector.
+
+If you want to compile this 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 msbusmouse.o.
+.
+MOUSE 'Mouse Support (not serial and bus mice)' text
+This is for machines with a mouse which is neither a serial nor a
+bus mouse. Examples are PS/2 mice (such as the track balls on some
+laptops) and some digitizer pads. Most people have a regular serial
+MouseSystem or Microsoft mouse (made by Logitech) that plugs into a
+COM port (rectangular with 9 or 25 pins). These people say N here.
+If you have something else, read the Busmouse-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . This HOWTO contains
+information about all non-serial mice, not just bus mice.
+
+If you have a laptop, you either have to check the documentation or
+experiment a bit to find out whether the trackball is a serial mouse
+or not; it's best to say Y here for you.
+
+Note that the answer to this question won't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about non-serial mice. If unsure, say Y.
+.
+PSMOUSE 'PS/2 mouse (aka "auxiliary device") support' text
+The PS/2 mouse connects to a special mouse port that looks much like
+the keyboard port (small circular connector with 6 pins). This way,
+the mouse does not use any serial ports. This port can also be used
+for other input devices like light pens, tablets, keypads. Compaq,
+AST and IBM all use this as their mouse port on currently shipping
+machines. The trackballs of some laptops are PS/2 mice also. In
+particular, the C&T 82C710 mouse on TI Travelmates is a PS/2 mouse.
+
+Although PS/2 mice are not technically bus mice, they are explained
+in detail in the Busmouse-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+When using a PS/2 mouse, you can get problems if you want to use the
+mouse both on the Linux console and under X. Using the "-R" option
+of the Linux mouse managing program gpm (available from
+ftp://metalab.unc.edu/pub/Linux/system/mouse ) solves this
+problem, or you can get the "mconv2" utility from the same location.
+.
+CONFIG_82C710_MOUSE 'C&T 82C710 mouse port support (as on TI Travelmate)'
+text
+This is a certain kind of PS/2 mouse used on the TI Travelmate. If
+you are unsure, try first to say N here and come back if the mouse
+doesn't work. Read the Busmouse-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+.
+PC110_PAD 'PC110 digitizer pad support' text
+This drives the digitizer pad on the IBM PC110 palmtop. It can turn
+the digitizer pad into a PS/2 mouse emulation with tap gestures or
+into an absolute pad.
+
+If you want to compile this 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 pc110pad.o.
+.
+QIC02_TAPE 'QIC-02 tape support' text
+If you have a non-SCSI tape drive like that, say Y. Or, if you want
+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
+tpqic02.o.
+.
+QIC02_DYNCONF 'Do you want runtime configuration for QIC-02' text
+You can either configure this driver once and for all by editing a
+header file (include/linux/tpqic02.h), in which case you should
+say N, or you can fetch a program via anonymous FTP which is able
+to configure this driver during runtime. The program to do this is
+called 'qic02conf' and it is part of the tpqic02-support-X.Y.tar.gz
+support package.
+
+If you want to use the qic02conf program, say Y.
+.
+WATCHDOG 'Watchdog Timer Support' text
+If you say Y here (and to one of the following options) and create a
+character special file /dev/watchdog with major number 10 and minor
+number 130 using mknod ("man mknod"), you will get a watchdog, i.e.:
+subsequently opening the file and then failing to write to it for
+longer than 1 minute will result in rebooting the machine. This
+could be useful for a networked machine that needs to come back
+online as fast as possible after a lock-up. There's both a watchdog
+implementation entirely in software (which can sometimes fail to
+reboot the machine) and a driver for hardware watchdog boards, which
+are more robust and can also keep track of the temperature inside
+your computer. For details, read Documentation/watchdog.txt in the
+kernel source.
+
+The watchdog is usually used together with the watchdog daemon
+which is available via FTP (user: anonymous) from
+ftp://tsx-11.mit.edu/pub/linux/sources/sbin/ . This daemon can also
+monitor NFS connections and can reboot the machine when the process
+table is full.
+
+If unsure, say N.
+.
+WATCHDOG_NOWAYOUT 'Disable watchdog shutdown on close' text
+The default watchdog behaviour (which you get if you say N here) is
+to stop the timer if the process managing it closes the file
+/dev/watchdog. It's always remotely possible that this process might
+get killed. If you say Y here, the watchdog cannot be stopped once
+it has been started.
+.
+WDT 'WDT Watchdog timer' text
+If you have a WDT500P or WDT501P watchdog board, say Y here,
+otherwise N. It is not possible to probe for this board, which means
+that you have to inform the kernel about the IO port and IRQ using
+the "wdt=" kernel option (try "man bootparam" or see the
+documentation of your boot loader (lilo or loadlin) about how to
+pass options to the kernel at boot time).
+
+If you want to compile this 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 wdt.o.
+.
+WDTPCI 'WDT PCI Watchdog timer' text
+If you have a PCI WDT500/501 watchdog board, say Y here,
+otherwise N. It is not possible to probe for this board, which means
+that you have to inform the kernel about the IO port and IRQ using
+the "wdt=" kernel option (try "man bootparam" or see the
+documentation of your boot loader (lilo or loadlin) about how to
+pass options to the kernel at boot time).
+
+If you want to compile this 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 wdt_pci.o.
+.
+WDT_501 'WDT501 features' text
+Saying Y here and creating a character special file /dev/temperature
+with major number 10 and minor number 131 ("man mknod") will give
+you a thermometer inside your computer: reading from
+/dev/temperature yields one byte, the temperature in degrees
+Fahrenheit. This works only if you have a WDT501P watchdog board
+installed.
+.
+WDT_501_FAN 'Fan Tachometer' text
+Enable the Fan Tachometer on the WDT501. Only do this if you have a
+fan tachometer actually set up.
+.
+SOFT_WATCHDOG 'Software Watchdog' text
+A software monitoring watchdog. This will fail to reboot your system
+from some situations that the hardware watchdog will recover
+from. Equally it's a lot cheaper to install.
+
+This driver is also available 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. The module will be called softdog.o.
+.
+PCWATCHDOG 'Berkshire Products PC Watchdog' text
+This is the driver for the Berkshire Products PC Watchdog card.
+This card simply watches your kernel to make sure it doesn't freeze,
+and if it does, it reboots your computer after a certain amount of
+time. This driver is like the WDT501 driver but for different
+hardware. Please read Documentation/pcwd-watchdog.txt. The PC
+watchdog cards can be ordered from http://www.berkprod.com .
+
+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 is called pcwd.o. If you want to compile it as a module,
+say M here and read Documentation/modules.txt.
+
+Most people will say N.
+.
+ACQUIRE_WDT 'Acquire SBC Watchdog Timer' text
+This is the driver for the hardware watchdog on the PSC-6x86 Single
+Board Computer produced by Acquire Inc (and others). This watchdog
+simply watches your kernel to make sure it doesn't freeze, and if
+it does, it reboots your computer after a certain amount of time.
+
+This driver is like the WDT501 driver but for different hardware.
+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 is called pscwdt.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt. Most people
+will say N.
+.
+ADVANTECH_WDT 'Advantech SBC Watchdog Timer'
+
+EUROTECH_WDT 'Eurotech CPU-1220/1410 Watchdog Timer'
+
+IB700_WDT 'IB700 SBC Watchdog Timer'
+
+I810_TCO 'i810 TCO timer/watchdog support' text
+Hardware driver for the TCO timer built into the Intel i810 and i815
+chipset family. The TCO (Total Cost of Ownership) timer is a watchdog
+timer that will reboot the machine after it's second expiration. The
+expiration time can be configured by commandline argument
+"i810_margin=" where is the counter initial value. It is
+decremented every 0.6 secs, the default is 50 which gives a timeout
+of 30 seconds and one minute until reset.
+
+On some motherboards the driver may fail to reset the chipset's
+NO_REBOOT flag which prevents the watchdog from rebooting the machine.
+If this is the case you will get a kernel message like
+"i810tco init: failed to reset NO_REBOOT flag".
+
+If you want to compile this as a module, say M and read
+Documentation/modules.txt. The module will be called
+i810-tco.o.
+.
+CONFIG_21285_WATCHDOG 'Footbridge internal watchdog' text
+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.
+.
+MIXCOMWD 'Mixcom Watchdog' text
+This is a driver for the Mixcom hardware watchdog cards. This
+watchdog simply watches your kernel to make sure it doesn't freeze,
+and if it does, it reboots your computer after a certain amount of
+time.
+
+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 is called mixcomwd.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt. Most people
+will say N.
+.
+CONFIG_60XX_WDT 'SBC-60XX Watchdog Timer' text
+ This driver can be used with the watchdog timer found on some
+ single board computers, namely the 6010 PII based computer.
+ It may well work with other cards. It reads port 0x443 to enable
+ and re-set the watchdog timer, and reads port 0x45 to disable
+ the watchdog. If you have a card that behave in similar ways,
+ you can probably make this driver work with your card as well.
+
+ You can compile this driver directly into the kernel, or use
+ it as a module. The module will be called sbc60xxwdt.o.
+.
+W83877F_WDT 'W83877F (EMACS) Watchdog Timer'
+
+CONFIG_977_WATCHDOG 'NetWinder WB83C977 watchdog' text
+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.
+.
+MACHZ_WDT 'ZF MachZ Watchdog' text
+If you are using a ZF Micro MachZ processor, say Y here, otherwise N.
+This is the driver for the watchdog timer builtin on that processor
+using ZF-Logic interface. This watchdog simply watches your kernel to
+make sure it doesn't freeze, and if it does, it reboots your computer
+after a certain amount of time.
+
+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 is called machzwd.o. If you want to compile it as a module,
+say M here and read Documentation/modules.txt.
+.
+DS1620 'DS1620 thermometer support' text
+Say Y here to include support for the thermal management hardware
+found in the NetWinder. This driver allows the user to control the
+temperature set points and to read the current temperature.
+
+It is also possible to say M here to build it as a module (ds1620.o)
+It is recommended to be used on a NetWinder, but it is not a
+necessity.
+.
+NWBUTTON 'NetWinder Button' text
+If you say Y here and create a character device node /dev/nwbutton
+with major and minor numbers 10 and 158 ("man mknod"), then every
+time the orange button is pressed a number of times, the number of
+times the button was pressed will be written to that device.
+
+This is most useful for applications, as yet unwritten, which
+perform actions based on how many times the button is pressed in a
+row.
+
+Do not hold the button down for too long, as the driver does not
+alter the behaviour of the hardware reset circuitry attached to the
+button; it will still execute a hard reset if the button is held
+down for longer than approximately five seconds.
+
+This driver is also available 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. The module will be called nwbutton.o.
+
+Most people will answer Y to this question and "Reboot Using Button"
+below to be able to initiate a system shutdown from the button.
+.
+NWBUTTON_REBOOT 'Reboot Using Button' text
+If you say Y here, then you will be able to initiate a system
+shutdown and reboot by pressing the orange button a number of times.
+The number of presses to initiate the shutdown is two by default,
+but this can be altered by modifying the value of NUM_PRESSES_REBOOT
+in nwbutton.h and recompiling the driver or, if you compile the
+driver as a module, you can specify the number of presses at load
+time with "insmod button reboot_count=".
+.
+NWFLASH 'NetWinder /dev/flash support' text
+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.
+.
+NVRAM '/dev/nvram support' text
+If you say Y here and create a character special file /dev/nvram
+with major number 10 and minor number 144 using mknod ("man mknod"),
+you get read and write access to the 50 bytes of non-volatile memory
+in the real time clock (RTC), which is contained in every PC and
+most Ataris.
+
+This memory is conventionally called "CMOS RAM" on PCs and "NVRAM"
+on Ataris. /dev/nvram may be used to view settings there, or to
+change them (with some utility). It could also be used to frequently
+save a few bits of very important data that may not be lost over
+power-off and for which writing to disk is too insecure. Note
+however that most NVRAM space in a PC belongs to the BIOS and you
+should NEVER idly tamper with it. See Ralf Brown's interrupt list
+for a guide to the use of CMOS bytes by your BIOS.
+
+On Atari machines, /dev/nvram is always configured and does not need
+to be selected.
+
+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 nvram.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+INTEL_RNG 'Intel Random Number Generator support' text
+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.
+.
+RTC 'Enhanced Real Time Clock Support' text
+If you say Y here and create a character special file /dev/rtc with
+major number 10 and minor number 135 using mknod ("man mknod"), you
+will get access to the real time clock (or hardware clock) built
+into your computer.
+
+Every PC has such a clock built in. It can be used to generate
+signals from as low as 1Hz up to 8192Hz, and can also be used
+as a 24 hour alarm. It reports status information via the file
+/proc/driver/rtc and its behaviour is set by various ioctls on
+/dev/rtc.
+
+If you run Linux on a multiprocessor machine and said Y to
+"Symmetric Multi Processing" above, you should say Y here to read
+and set the RTC in an SMP compatible fashion.
+
+If you think you have a use for such a device (such as periodic data
+sampling), then say Y here, and read Documentation/rtc.txt for
+details.
+
+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 is called rtc.o. If you want to compile it as a module,
+say M here and read Documentation/modules.txt.
+.
+#EFI_RTC 'EFI Real Time Clock Services'
+GEN_RTC 'Generic /dev/rtc emulation'
+
+H8 'Tadpole ANA H8 Support' text
+The Hitachi H8/337 is a microcontroller used to deal with the power
+and thermal environment. If you say Y here, you will be able to
+communicate with it via a character special device.
+
+If unsure, say N.
+.
+VIDEO_DEV 'Video For Linux' text
+Support for audio/video capture and overlay devices and FM radio
+cards. The exact capabilities of each device vary. User tools for
+this are available from
+ftp://ftp.uk.linux.org/pub/linux/video4linux .
+
+If you are interested in writing a driver for such an audio/video
+device or user software interacting with such a driver, please read
+the file Documentation/video4linux/API.html.
+
+This driver is also available as a module called videodev.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.
+.
+VIDEO_PROC_FS 'Video For Linux /proc file system information' text
+If you say Y here, you are able to access video device information
+in /proc/video.
+
+To use this option, you have to check, that the "/proc file system
+support" (CONFIG_PROC_FS) is enabled too.
+.
+I2C_PARPORT 'I2C on parallel port' text
+I2C is a simple serial bus system used in many micro controller
+applications. Saying Y here will allow you to use your parallel port
+as an I2C interface.
+
+If you want 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 i2c-parport.o.
+.
+RADIO_CADET 'ADS Cadet AM/FM Radio Tuner Card' text
+Choose Y here if you have one of these AM/FM radio cards, and then
+fill in the port address below.
+
+In order to control your radio card, you will need to use programs
+that are compatible with the Video for Linux API. Information on
+this API and pointers to "v4l" programs may be found on the WWW at
+http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+Further documentation on this driver can be found on the WWW at
+http://linux.blackhawke.net/cadet.html .
+
+If you want 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 radio-cadet.o.
+.
+RADIO_RTRACK 'AIMSlab RadioTrack (aka RadioReveal) support' text
+Choose Y here if you have one of these FM radio cards, and then fill
+in the port address below.
+
+Note that newer AIMSlab RadioTrack cards have a different chipset
+and are not supported by this driver. For these cards, use the
+RadioTrack II driver below.
+
+If you have a GemTeks combined (PnP) sound- and radio card you must
+use this driver as a module and setup the card with isapnptools. You
+must also pass the module a suitable io parameter, 0x248 has been
+reported to be used by these cards.
+
+In order to control your radio card, you will need to use programs
+that are compatible with the Video for Linux API. Information on
+this API and pointers to "v4l" programs may be found on the WWW at
+http://roadrunner.swansea.uk.linux.org/v4l.shtml . More information
+is contained in the file Documentation/video4linux/radiotrack.txt.
+
+If you want 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 radio-aimslab.o.
+.
+RADIO_RTRACK_PORT 'RadioTrack I/O port' text
+Enter either 0x30f or 0x20f here. The card default is 0x30f, if you
+haven't changed the jumper setting on the card.
+.
+RADIO_RTRACK2 'AIMSlab RadioTrack II support' text
+Choose Y here if you have this FM radio card, and then fill in the
+port address below.
+
+In order to control your radio card, you will need to use programs
+that are compatible with the Video for Linux API. Information on
+this API and pointers to "v4l" programs may be found on the WWW at
+http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+If you want 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 radio-rtrack2.o.
+.
+RADIO_RTRACK2_PORT 'RadioTrack II I/O port' text
+Enter either 0x30c or 0x20c here. The card default is 0x30c, if you
+haven't changed the jumper setting on the card.
+.
+RADIO_AZTECH 'Aztech/Packard Bell Radio' text
+Choose Y here if you have one of these FM radio cards, and then fill
+in the port address below.
+
+In order to control your radio card, you will need to use programs
+that are compatible with the Video for Linux API. Information on
+this API and pointers to "v4l" programs may be found on the WWW at
+http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+If you want 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 radio-aztech.o.
+.
+RADIO_AZTECH_PORT 'Aztech/Packard Bell radio card I/O port' text
+Enter either 0x350 or 0x358 here. The card default is 0x350, if you
+haven't changed the setting of jumper JP3 on the card. Removing the
+jumper sets the card to 0x358.
+.
+RADIO_GEMTEK 'GemTek Radio Card support' text
+Choose Y here if you have this FM radio card, and then fill in the
+port address below.
+
+In order to control your radio card, you will need to use programs
+that are compatible with the Video for Linux API. Information on
+this API and pointers to "v4l" programs may be found on the WWW at
+http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+If you want 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 radio-gemtek.o.
+.
+RADIO_GEMTEK_PORT 'GemTek I/O port' text
+Enter either 0x20c, 0x30c, 0x24c or 0x34c here. The card default is
+0x34c, if you haven't changed the jumper setting on the card. On
+Sound Vision 16 Gold PnP with FM Radio (ESS1869+FM Gemtek), the i/o
+port is 0x28c.
+.
+RADIO_GEMTEK_PCI 'GemTek PCI Radio Card support'
+
+RADIO_MAXIRADIO 'Guillemot MAXI Radio FM 2000 Radio Card'
+
+RADIO_MAESTRO 'Maestro on board radio'
+
+RADIO_MIROPCM20 'miroSOUND PCM20 radio' text
+Choose Y here if you have this sound card. You also need to say Y
+to "ACI mixer (miroSOUND PCM1-pro/PCM12/PCM20 radio)" (in "Sound")
+for this to work.
+
+In order to control your radio card, you will need to use programs
+that are compatible with the Video for Linux API. Information on
+this API and pointers to "v4l" programs may be found on the WWW at
+http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+If you want 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 miropcm20.o
+.
+RADIO_MIROPCM20_RDS 'miroSOUND PCM20 radio RDS user interface' text
+Choose Y here if you want to see RDS/RBDS information like RadioText,
+Programme Service name, Clock Time and date, Programme TYpe and
+Traffic Announcement/Programme identification. You also need to say
+Y to "miroSOUND PCM20 radio" and devfs!
+
+It's not possible to read the raw RDS packets from the device, so
+the driver cant provide an V4L interface for this. But the
+availability of RDS is reported over V4L by the basic driver already.
+Here RDS can be read from files in /dev/v4l/rds.
+
+As module the driver will be called miropcm20-rds.o.
+.
+RADIO_SF16FMI 'SF16FMI Radio' text
+Choose Y here if you have one of these FM radio cards, and then fill
+in the port address below.
+
+In order to control your radio card, you will need to use programs
+that are compatible with the Video for Linux API. Information on
+this API and pointers to "v4l" programs may be found on the WWW at
+http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+If you want 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 radio-sf16fmi.o
+.
+RADIO_SF16FMI_PORT 'SF16FMI I/O port (0x284 or 0x384)' text
+Enter the I/O port of your SF16FMI radio card.
+.
+RADIO_TERRATEC 'TerraTec ActiveRadio' text
+Choose Y here if you have this FM radio card, and then fill in the
+port address below. (TODO)
+
+Note: This driver is in its early stages. Right now volume and
+frequency control and muting works at least for me, but
+unfortunately i have not found anybody who wants to use this card
+with Linux. So if it is this what YOU are trying to do right now,
+PLEASE DROP ME A NOTE!! Rolf Offermanns (rolf@offermanns.de)
+
+In order to control your radio card, you will need to use programs
+that are compatible with the Video for Linux API. Information on
+this API and pointers to "v4l" programs may be found on the WWW at
+http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+If you want 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 radio-terratec.o.
+.
+RADIO_TERRATEC_PORT 'Terratec I/O port (normally 0x590)' text
+Fill in the i/o port of your TerraTec FM radio card. If unsure, go
+with the default.
+
+### Add these
+# Zoran ZR36057/36060 support
+# CONFIG_VIDEO_ZORAN
+.
+RADIO_TRUST 'Trust FM radio card' text
+This is a driver for the Trust FM radio cards. Say Y if you have
+such a card and want to use it under Linux.
+
+This driver is also available as a module called radio-trust.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.
+.
+RADIO_TRUST_PORT 'Trust I/O port (usually 0x350 or 0x358)' text
+Enter the i/o port of your Trust FM radio card. If unsure, try the
+values "0x350" or "0x358".
+.
+RADIO_TYPHOON 'Typhoon Radio (a.k.a. EcoRadio)' text
+Choose Y here if you have one of these FM radio cards, and then fill
+in the port address and the frequency used for muting below.
+
+In order to control your radio card, you will need to use programs
+that are compatible with the Video for Linux API. Information on
+this API and pointers to "v4l" programs may be found on the WWW at
+http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+If you want 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 radio-typhoon.o
+.
+RADIO_TYPHOON_PROC_FS 'Support for /proc/radio-typhoon' text
+Say Y here if you want the typhoon radio card driver to write
+status information (frequency, volume, muted, mute frequency,
+base address) to /proc/radio-typhoon. The file can be viewed with
+your favorite pager (i.e. use "more /proc/radio-typhoon" or "less
+/proc/radio-typhoon" or simply "cat /proc/radio-typhoon").
+.
+RADIO_TYPHOON_PORT 'Typhoon I/O port (0x316 or 0x336)' text
+Enter the I/O port of your Typhoon or EcoRadio radio card.
+.
+RADIO_TYPHOON_MUTEFREQ 'Typhoon frequency set when muting the device (kHz)'
+text
+Enter the frequency used for muting the radio. The device is never
+completely silent. If the volume is just turned down, you can still
+hear silent voices and music. For that reason, the frequency of the
+radio device is set to the frequency you can enter here whenever
+the device is muted. There should be no local radio station at that
+frequency.
+.
+RADIO_ZOLTRIX 'Zoltrix Radio' text
+Choose Y here if you have one of these FM radio cards, and then fill
+in the port address below.
+
+In order to control your radio card, you will need to use programs
+that are compatible with the Video for Linux API. Information on
+this API and pointers to "v4l" programs may be found on the WWW at
+http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+If you want 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 radio-zoltrix.o
+.
+RADIO_ZOLTRIX_PORT 'ZOLTRIX I/O port (0x20c or 0x30c)' text
+Enter the I/O port of your Zoltrix radio card.
+.
+VIDEO_BT848 'BT848 Video For Linux' text
+Support for BT848 based frame grabber/overlay boards. This includes
+the Miro, Hauppauge and STB boards. Please read the material in
+Documentation/video4linux/bttv for more information.
+
+If you say Y or M here, you need to say Y or M to "I2C support" and
+"I2C bit-banging interfaces" in the character device section.
+
+This driver is available as a module called bttv.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.
+.
+VIDEO_PMS 'Mediavision Pro Movie Studio Video For Linux' text
+Say Y if you have such a thing. This driver is also available as a
+module called pms.o ( = code which can be inserted in and removed
+from the running kernel whenever you want). If you want to compile
+.
+VIDEO_PLANB 'PlanB Video-In for PowerMacs' text
+PlanB is the V4L driver for the PowerMac 7x00/8x00 series video
+input hardware. If you want to experiment with this, say Y.
+Otherwise, or if you don't understand a word, say N.
+See http://www.cpu.lu/~mlan/planb.html for more info.
+
+Saying M will compile this driver as a module (planb.o).
+.
+VIDEO_BWQCAM 'QuickCam BW Video For Linux' text
+Say Y have if you the black and white version of the QuickCam
+camera. See the next option for the color version.
+
+This driver is also available as a module called bw-qcam.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.
+.
+VIDEO_CQCAM 'QuickCam Colour Video For Linux' text
+This is the video4linux driver for the colour version of the
+Connectix Quickcam. If you have one of these cameras, say Y here,
+otherwise say N. This driver does not work with the original
+monochrome Quickcam, Quickcam VC or QuickClip. It is also available
+as a module (c-qcam.o). Read Documentation/video4linux/CQcam.txt for
+more information.
+.
+VIDEO_W9966 'Winbond W9966CF Webcam Video For Linux'
+
+VIDEO_CPIA 'CPiA Video For Linux' text
+This is the video4linux driver for cameras based on Vision's CPiA
+(Colour Processor Interface ASIC), such as the Creative Labs Video
+Blaster Webcam II. If you have one of these cameras, say Y here
+and select parallel port and/or USB lowlevel support below,
+otherwise say N. This will not work with the Creative Webcam III.
+
+Please read Documentation/video4linux/README.cpia for more
+information.
+
+This driver is also available as a module (cpia.o).
+.
+VIDEO_CPIA_PP 'CPiA Parallel Port Lowlevel Support' text
+This is the lowlevel parallel port support for cameras based on
+Vision's CPiA (Colour Processor Interface ASIC), such as the
+Creative Webcam II. If you have the parallel port version of one
+of these cameras, say Y here, otherwise say N. It is also available
+as a module (cpia_pp.o).
+.
+VIDEO_CPIA_USB 'CPiA USB Lowlevel Support' text
+This is the lowlevel USB support for cameras based on Vision's CPiA
+(Colour Processor Interface ASIC), such as the Creative Webcam II.
+If you have the USB version of one of these cameras, say Y here,
+otherwise say N. This will not work with the Creative Webcam III.
+It is also available as a module (cpia_usb.o).
+.
+VIDEO_SAA5249 'SAA5249 Teletext processor' text
+Support for I2C bus based teletext using the SAA5249 chip. At the
+moment this is only useful on some European WinTV cards.
+
+This driver is also available as a module called saa5249.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.
+.
+TUNER_3036 'SAB3036 tuner support' text
+Say Y here to include support for Philips SAB3036 compatible tuners.
+If in doubt, say N.
+.
+VIDEO_VINO 'SGI Vino Video For Linux'
+
+VIDEO_STRADIS 'Stradis 4:2:2 MPEG-2 video driver'
+
+VIDEO_ZORAN 'Zoran ZR36057/36060 Video For Linux'
+
+VIDEO_ZORAN_BUZ 'Include support for Iomega Buz'
+
+VIDEO_ZORAN_DC10 'Miro DC10(+) support'
+
+VIDEO_ZORAN_LML33 'Linux Media Labs LML33 support'
+
+VIDEO_ZR36120 'Zoran ZR36120/36125 Video For Linux' text
+Support for ZR36120/ZR36125 based frame grabber/overlay boards.
+This includes the Victor II, WaveWatcher, Video Wonder, Maxi-TV,
+and Buster boards. Please read the material in
+Documentation/video4linux/zr36120.txt for more information.
+
+This driver is also available as a module called zr36120.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.
+.
+VIDEO_MEYE 'Sony Vaio Picturebook Motion Eye Video For Linux' text
+This is the video4linux driver for the Motion Eye camera found
+in the Vaio Picturebook laptops. Please read the material in
+ for more information.
+
+If you say Y or M here, you need to say Y or M to "Sony Programmable
+I/O Control Device" in the character device section.
+
+This driver is available as a module called meye.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 .
+.
+DTLK 'Double Talk PC internal speech card support' text
+This driver is for the DoubleTalk PC, a speech synthesizer
+manufactured by RC Systems (http://www.rcsys.com/ ). It is also
+called the `internal DoubleTalk'. If you want to compile this 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 dtlk.o.
+.
+R3964 'Siemens R3964 serial protocol support' text
+This driver allows synchronous communication with devices using the
+Siemens R3964 packet protocol. Unless you are dealing with special
+hardware like PLCs, you are unlikely to need this.
+
+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
+n_r3964.o.
+
+If unsure, say N.
+.
+APPLICOM 'Applicom intelligent fieldbus card support' text
+This driver provides the kernel-side support for the intelligent
+fieldbus cards made by Applicom International. More information
+about these cards can be found on the WWW at the address
+http://www.applicom-int.com/ , or by email from David Woodhouse
+.
+
+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
+applicom.o.
+
+If unsure, say N.
+.
+SONYPI 'Sony Vaio Programmable I/O Control Device support' text
+This driver enables access to the Sony Programmable I/O Control Device
+which can be found in many (all ?) Sony Vaio laptops.
+
+If you have one of those laptops, read Documentation/sonypi.txt,
+and say Y or M here.
+
+If you want to compile the driver as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want),
+say M here and read . The module will be
+called sonypi.o.
+.
+# Floppy tape controllers (default is 'Standard')
+FTAPE 'Floppy tape drive (QIC-80/40/3010/3020/TR-1/TR-2/TR-3) support'
+text
+If you have a tape drive that is connected to your floppy
+controller, say Y here.
+
+Some tape drives (like the Seagate "Tape Store 3200" or the Iomega
+"Ditto 3200" or the Exabyte "Eagle TR-3") come with a "high speed"
+controller of their own. These drives (and their companion
+controllers) are also supported if you say Y here.
+
+If you have a special controller (such as the CMS FC-10, FC-20,
+Mountain Mach-II, or any controller that is based on the Intel 82078
+FDC like the high speed controllers by Seagate and Exabyte and
+Iomega's "Ditto Dash") you must configure it by selecting the
+appropriate entries from the "Floppy tape controllers" sub-menu
+below and possibly modify the default values for the IRQ and DMA
+channel and the IO base in ftape's configuration menu.
+
+If you want to use your floppy tape drive on a PCI-bus based system,
+please read the file drivers/char/ftape/README.PCI.
+
+The ftape kernel driver is also available as a runtime loadable
+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. The module
+will be called ftape.o.
+
+Note that the Ftape-HOWTO is out of date (sorry) and documents the
+older version 2.08 of this software but still contains useful
+information. There is a web page with more recent documentation at
+http://www.math1.rwth-aachen.de/~heine/ftape/ . This page
+always contains the latest release of the ftape driver and useful
+information (backup software, ftape related patches and
+documentation, FAQ). Note that the file system interface has changed
+quite a bit compared to previous versions of ftape. Please read
+Documentation/ftape.txt.
+.
+FT_STD_FDC 'Standard' text
+Only change this setting if you have a special controller. If you
+didn't plug any add-on card into your computer system but just
+plugged the floppy tape cable into the already existing floppy drive
+controller then you don't want to change the default setting,
+i.e. choose "Standard".
+
+Choose "MACH-2" if you have a Mountain Mach-2 controller.
+Choose "FC-10/FC-20" if you have a Colorado FC-10 or FC-20
+controller.
+Choose "Alt/82078" if you have another controller that is located at
+an IO base address different from the standard floppy drive
+controller's base address of `0x3f0', or uses an IRQ (interrupt)
+channel different from `6', or a DMA channel different from
+`2'. This is necessary for any controller card that is based on
+Intel's 82078 FDC such as Seagate's, Exabyte's and Iomega's "high
+speed" controllers.
+
+If you choose something other than "Standard" then please make
+sure that the settings for the IO base address and the IRQ and DMA
+channel in the configuration menus below are correct. Use the manual
+of your tape drive to determine the correct settings!
+
+If you are already successfully using your tape drive with another
+operating system then you definitely should use the same settings
+for the IO base, the IRQ and DMA channel that have proven to work
+with that other OS.
+
+Note that this menu lets you specify only the default setting for
+the hardware setup. The hardware configuration can be changed at
+boot time (when ftape is compiled into the kernel, i.e. if you
+have said Y to "Floppy tape drive") or module load time (i.e. if you
+have said M to "Floppy tape drive").
+
+Please read also the file Documentation/ftape.txt which
+contains a short description of the parameters that can be set at
+boot or load time. If you want to use your floppy tape drive on a
+PCI-bus based system, please read the file
+drivers/char/ftape/README.PCI.
+.
+FT_MACH2 'MACH-2'
+
+FT_PROBE_FC10 'FC-10/FC-20'
+
+FT_ALT_FDC 'Alt/82078'
+
+# Debugging output (default is "Normal")
+FT_NORMAL_DEBUG 'Normal' text
+This option controls the amount of debugging output the ftape driver
+is ABLE to produce; it does not increase or diminish the debugging
+level itself. If unsure, leave this at its default setting,
+i.e. choose "Normal".
+
+Ftape can print lots of debugging messages to the system console
+resp. kernel log files. Reducing the amount of possible debugging
+output reduces the size of the kernel module by some KB, so it might
+be a good idea to use "None" for emergency boot floppies.
+
+If you want to save memory then the following strategy is
+recommended: leave this option at its default setting "Normal" until
+you know that the driver works as expected, afterwards reconfigure
+the kernel, this time specifying "Reduced" or "None" and recompile
+and install the kernel as usual. Note that choosing "Excessive"
+debugging output does not increase the amount of debugging output
+printed to the console but only makes it possible to produce
+"Excessive" debugging output.
+
+Please read Documentation/ftape.txt for a short description
+how to control the amount of debugging output.
+.
+FT_FULL_DEBUG 'Excessive'
+
+FT_NO_TRACE 'Reduced'
+
+FT_NO_TRACE_AT_ALL 'None'
+
+#
+# Direct Rendering Infrastructure (DRI) in XFree86 4.x.
+DRM 'Direct Rendering Manager (XFree86 DRI support)' text
+Kernel-level support for the Direct Rendering Infrastructure (DRI)
+introduced in XFree86 4.0. If you say Y here, you need to select
+the module that's right for your graphics card from the list below.
+These modules provide support for synchronization, security, and
+DMA transfers. Please see http://dri.sourceforge.net for more
+details. You should also select and configure AGP
+(/dev/agpgart) support.
+.
+DRM_TDFX '3dfx Banshee/Voodoo3+' text
+Choose this option if you have a 3dfx Banshee or Voodoo3 (or later),
+graphics card. If M is selected, the module will be called tdfx.o.
+.
+DRM_GAMMA '3dlabs GMX 2000' text
+Choose this option if you have a 3dlabs GMX 2000 graphics card.
+If M is selected, the module will be called gamma.o.
+.
+DRM_R128 'ATI Rage 128' text
+Choose this option if you have an ATI Rage 128 graphics card. If M
+is selected, the module will be called r128.o. AGP support for
+this card is strongly suggested (unless you have a PCI version).
+.
+DRM_RADEON 'ATI Radeon'
+
+DRM_I810 'Intel I810' text
+Choose this option if you have an Intel I810 graphics card. If M is
+selected, the module will be called i810.o. AGP support is required
+for this driver to work.
+.
+DRM_MGA 'Matrox g200/g400' text
+Choose this option if you have a Matrox g200 or g400 graphics card. If M
+is selected, the module will be called mga.o. AGP support is required
+for this driver to work.
+.
+DRM_FFB 'Creator/Creator3D/Elite3D'
+
+AGP '/dev/agpgart (AGP Support)' text
+AGP (Accelerated Graphics Port) is a bus system mainly used to
+connect graphics cards to the rest of the system.
+
+If you have an AGP system and you say Y here, it will be possible to
+use the AGP features of your 3D rendering video card. This code acts
+as a sort of "AGP driver" for the motherboard's chipset. The glx
+module will then be able to program the GART (graphics aperture
+relocation table) registers with appropriate values to transfer
+commands to the card.
+
+If you need more texture memory than you can get with the AGP GART
+(theoretically up to 256 MB, but in practice usually 64 or 128 MB
+due to kernel allocation issues), you could use PCI accesses
+and have up to a couple gigs of texture space.
+
+Note that this is the only means to have XFree4/GLX use
+write-combining with MTRR support on the AGP bus. Without it, OpenGL
+direct rendering will be a lot slower but still faster than PIO.
+
+For the moment, you should probably say N, unless you want to test
+the GLX component for XFree86 3.3.6, which can be downloaded from
+http://utah-glx.sourceforge.net/ , or need to use the 810 Xserver in
+XFree 3.3.6.
+
+This driver is available as a module. If you want to compile it as a
+module, say M here and read Documentation/modules.txt. The module
+will be called agpgart.o.
+.
+AGP_INTEL 'Intel 440LX/BX/GX and I815/I830M/I840/850 support' text
+This option gives you AGP support for the GLX component of the
+XFree86 4.x on Intel 440LX/BX/GX, 815, 830M, 840 and 850 chipsets.
+
+For the moment, you should probably say N, unless you want to test
+the GLX component for XFree86 3.3.6, which can be downloaded from
+http://utah-glx.sourceforge.net/ .
+.
+AGP_I810 'Intel I810/I815/I830M (on board) support' text
+This option gives you AGP support for the Xserver on the Intel 810,
+830M and 815 chipset boards for their on-board integrated graphics.
+This is required to do any useful video modes with these boards.
+.
+AGP_VIA 'VIA chipset support' text
+This option gives you AGP support for the GLX component of the
+XFree86 4.x on VIA MPV3/Apollo Pro chipsets.
+
+For the moment, you should probably say N, unless you want to test
+the GLX component for XFree86 3.3.6, which can be downloaded from
+http://utah-glx.sourceforge.net/ .
+.
+AGP_AMD 'AMD Irongate, 761, and 762 support' text
+This option gives you AGP support for the GLX component of the
+XFree86 4.x on AMD Irongate, 761, and 762 chipsets.
+
+For the moment, you should probably say N, unless you want to test
+the GLX component for XFree86 3.3.6, which can be downloaded from
+http://utah-glx.sourceforge.net/ .
+.
+AGP_SIS 'Generic SiS support' text
+This option gives you AGP support for the GLX component of the "soon
+to be released" XFree86 4.x on Silicon Integrated Systems [SiS]
+chipsets.
+
+Note that 5591/5592 AGP chipsets are NOT supported.
+
+For the moment, you should probably say N, unless you want to test
+the GLX component for XFree86 3.3.6, which can be downloaded from
+http://utah-glx.sourceforge.net/ .
+.
+AGP_ALI 'ALI chipset support' text
+This option gives you AGP support for the GLX component of the
+XFree86 4.x on the ALi M1541 chipset.
+
+This chipset can do AGP 1x and 2x, but note that there is an
+acknowledged incompatibility with Matrox G200 cards. Due to
+timing issues, this chipset cannot do AGP 2x with the G200.
+This is a hardware limitation. AGP 1x seems to be fine, though.
+
+For the moment, you should probably say N, unless you want to test
+the GLX component for XFree86 3.3.6, which can be downloaded from
+http://utah-glx.sourceforge.net/ .
+.
+AGP_SWORKS 'Serverworks LE/HE support'
+
+#
+# Ftape configuration
+ZFTAPE 'VFS interface for ftape' text
+Normally, you want to say Y or M. DON'T say N here or you
+WON'T BE ABLE TO USE YOUR FLOPPY TAPE DRIVE.
+
+The ftape module itself no longer contains the routines necessary
+to interface with the kernel VFS layer (i.e. to actually write data
+to and read data from the tape drive). Instead the file system
+interface (i.e. the hardware independent part of the driver) has
+been moved to a separate module.
+
+If you say M zftape will be compiled as a runtime loadable
+module ( = code which can be inserted in and removed from the
+running kernel whenever you want). In this case you should read
+Documentation/modules.txt. The module will be called zftape.o.
+
+Regardless of whether you say Y or M here, an additional runtime
+loadable module called `zft-compressor.o' which contains code to
+support user transparent on-the-fly compression based on Ross
+William's lzrw3 algorithm will be produced. If you have enabled the
+kernel module loader (i.e. have said Y to "Kernel module loader
+support", above) then `zft-compressor.o' will be loaded
+automatically by zftape when needed.
+
+Despite its name, zftape does NOT use compression by default. The
+file Documentation/ftape.txt contains a short description of the
+most important changes in the file system interface compared to
+previous versions of ftape. The ftape home page
+http://www-math.math.rwth-aachen.de/~LBFM/claus/ftape/ contains
+further information.
+
+IMPORTANT NOTE: zftape can read archives created by previous
+versions of ftape and provide file mark support (i.e. fast skipping
+between tape archives) but previous version of ftape will lack file
+mark support when reading archives produced by zftape.
+.
+ZFT_DFLT_BLK_SZ 'Default block size for zftape' text
+If unsure leave this at its default value, i.e. 10240. Note that
+you specify only the default block size here. The block size can be
+changed at run time using the MTSETBLK tape operation with the
+MTIOCTOP ioctl (i.e. with "mt -f /dev/qft0 setblk #BLKSZ" from the
+shell command line).
+
+The probably most striking difference between zftape and previous
+versions of ftape is the fact that all data must be written or read
+in multiples of a fixed block size. The block size defaults to
+10240 which is what GNU tar uses. The values for the block size
+should be either 1 or multiples of 1024 up to a maximum value of
+63488 (i.e. 62 K). If you specify `1' then zftape's builtin
+compression will be disabled.
+
+Reasonable values are `10240' (GNU tar's default block size),
+`5120' (afio's default block size), `32768' (default block size some
+backup programs assume for SCSI tape drives) or `1' (no restriction
+on block size, but disables builtin compression).
+.
+FT_NR_BUFFERS 'Number of DMA buffers' text
+Please leave this at `3' unless you REALLY know what you are doing.
+It is not necessary to change this value. Values below 3 make the
+proper use of ftape impossible, values greater than 3 are a waste of
+memory. You can change the amount of DMA memory used by ftape at
+runtime with "mt -f /dev/qft0 setdrvbuffer #NUMBUFFERS". Each buffer
+wastes 32 KB of memory. Please note that this memory cannot be
+swapped out.
+.
+FT_PROC_FS 'Enable procfs status report (+2kb)' text
+Optional. Saying Y will result in creation of a directory
+`/proc/ftape' under the /proc file system. The files can be viewed
+with your favorite pager (i.e. use "more /proc/ftape/history" or
+"less /proc/ftape/history" or simply "cat /proc/ftape/history"). The
+file will contain some status information about the inserted
+cartridge, the kernel driver, your tape drive, the floppy disk
+controller and the error history for the most recent use of the
+kernel driver. Saying Y will enlarge the size of the ftape driver
+by approximately 2 KB.
+
+WARNING: When compiling ftape as a module (i.e. saying M to "Floppy
+tape drive") it is dangerous to use ftape's /proc file system
+interface. Accessing `/proc/ftape' while the module is unloaded will
+result in a kernel Oops. This cannot be fixed from inside ftape.
+.
+FT_FDC_BASE 'IO base for the floppy disk controller used with Ftape'
+text
+You don't need to specify a value if the following default
+settings for the base IO address are correct:
+<<< MACH-2 : 0x1E0 >>>
+<<< FC-10/FC-20: 0x180 >>>
+<<< Secondary : 0x370 >>>
+Secondary refers to a secondary FDC controller like the "high speed"
+controllers delivered by Seagate or Exabyte or Iomega's Ditto Dash.
+Please make sure that the setting for the IO base address
+specified here is correct. USE THE MANUAL OF YOUR TAPE DRIVE OR
+CONTROLLER CARD TO DETERMINE THE CORRECT SETTING. If you are already
+successfully using the tape drive with another operating system then
+you definitely should use the same settings for the IO base that has
+proven to work with that other OS.
+
+Note that this menu lets you specify only the default setting for
+the IO base. The hardware configuration can be changed at boot time
+(when ftape is compiled into the kernel, i.e. if you specified Y to
+"Floppy tape drive") or module load time (i.e. if you have said M to
+"Floppy tape drive").
+
+Please read also the file Documentation/ftape.txt which contains a
+short description of the parameters that can be set at boot or load
+time.
+.
+FT_FDC_IRQ 'IRQ channel for the floppy disk controller used with Ftape'
+text
+You don't need to specify a value if the following default
+settings for the interrupt channel are correct:
+<<< MACH-2 : 6 >>>
+<<< FC-10/FC-20: 9 >>>
+<<< Secondary : 6 >>>
+Secondary refers to secondary a FDC controller like the "high speed"
+controllers delivered by Seagate or Exabyte or Iomega's Ditto Dash.
+Please make sure that the setting for the IO base address
+specified here is correct. USE THE MANUAL OF YOUR TAPE DRIVE OR
+CONTROLLER CARD TO DETERMINE THE CORRECT SETTING. If you are already
+successfully using the tape drive with another operating system then
+you definitely should use the same settings for the IO base that has
+proven to work with that other OS.
+
+Note that this menu lets you specify only the default setting for
+the IRQ channel. The hardware configuration can be changed at boot
+time (when ftape is compiled into the kernel, i.e. if you said Y to
+"Floppy tape drive") or module load time (i.e. if you said M to
+"Floppy tape drive").
+
+Please read also the file Documentation/ftape.txt which contains a
+short description of the parameters that can be set at boot or load
+time.
+.
+FT_FDC_DMA 'DMA channel for the floppy disk controller used with Ftape'
+text
+You don't need to specify a value if the following default
+settings for the DMA channel are correct:
+<<< MACH-2 : 2 >>>
+<<< FC-10/FC-20: 3 >>>
+<<< Secondary : 2 >>>
+Secondary refers to a secondary FDC controller like the "high speed"
+controllers delivered by Seagate or Exabyte or Iomega's Ditto Dash.
+Please make sure that the setting for the IO base address
+specified here is correct. USE THE MANUAL OF YOUR TAPE DRIVE OR
+CONTROLLER CARD TO DETERMINE THE CORRECT SETTING. If you are already
+successfully using the tape drive with another operating system then
+you definitely should use the same settings for the IO base that has
+proven to work with that other OS.
+
+Note that this menu lets you specify only the default setting for
+the DMA channel. The hardware configuration can be changed at boot
+time (when ftape is compiled into the kernel, i.e. if you said Y to
+"Floppy tape drive") or module load time (i.e. if you said M to
+"Floppy tape drive").
+
+Please read also the file Documentation/ftape.txt which contains a
+short description of the parameters that can be set at boot or load
+time.
+.
+FT_FDC_THR 'FDC FIFO Threshold before requesting DMA service' text
+Set the FIFO threshold of the FDC. If this is higher the DMA
+controller may serve the FDC after a higher latency time. If this is
+lower, fewer DMA transfers occur leading to less bus contention.
+You may try to tune this if ftape annoys you with "reduced data
+rate because of excessive overrun errors" messages. However, this
+doesn't seem to have too much effect.
+
+If unsure, don't touch the initial value, i.e. leave it at "8".
+.
+FT_FDC_MAX_RATE 'FDC maximum data rate' text
+With some motherboard/FDC combinations ftape will not be able to
+run your FDC/tape drive combination at the highest available
+speed. If this is the case you'll encounter "reduced data rate
+because of excessive overrun errors" messages and lots of retries
+before ftape finally decides to reduce the data rate.
+
+In this case it might be desirable to tell ftape beforehand that
+it need not try to run the tape drive at the highest available
+speed. If unsure, leave this disabled, i.e. leave it at 2000
+bits/sec.
+.
+FT_ALPHA_CLOCK 'CPU clock frequency of your DEC Alpha' text
+On some DEC Alpha machines the CPU clock frequency cannot be
+determined automatically, so you need to specify it here ONLY if
+running a DEC Alpha, otherwise this setting has no effect.
+.
+#
+# Joystick driver
+JOYSTICK 'Joystick support' text
+If you have a joystick, 6dof controller, gamepad, steering wheel,
+weapon control system or something like that you can say Y here to
+enable generic support for these controllers. You will also need to
+say Y or M to at least one of the hardware specific drivers. This
+will make the controllers available as /dev/input/jsX devices.
+Please read the file Documentation/joystick.txt which contains more
+information and the location of the joystick package that you'll
+need.
+.
+INPUT_NS558 'Classic ISA/PnP gameports' text
+Say Y here if you have an ISA, ISAPnP or PCI standard gameport.
+For more information on how to use the driver please read
+Documentation/joystick.txt
+
+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 ns558.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_LIGHTNING 'PDPI Lightning 4 gamecard' text
+Say Y here if you have a PDPI Lightning 4 gamecard. For more
+information on how to use the driver please read
+Documentation/joystick.txt
+
+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 lightning.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_PCIGAME 'Aureal Vortex and Trident 4DWave gameports' text
+Say Y here if you have a Trident 4DWave DX/NX or Aureal Vortex 1/2
+card. For more information on how to use the driver please read
+Documentation/joystick.txt
+
+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 pcigame.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_CS461X 'Crystal SoundFusion gameports'
+
+INPUT_EMU10K1 'SoundBlaster Live! gameports'
+
+INPUT_SERIO 'Serial port device support'
+
+INPUT_SERPORT 'Serial port input line discipline' text
+Say Y hereif you plan to use a joystick that communicates over the
+serial (COM) port. For more information on how to use the driver
+please read Documentation/joystick.txt
+
+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 serport.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_ANALOG 'Classic PC analog joysticks and gamepads' text
+Say Y here if you have a controller that connects to the PC
+gameport. This supports many different types, including joysticks
+with throttle control, with rudders, or with extensions like
+additional hats and buttons compatible with CH Flightstick Pro,
+ThrustMaster FCS, 6 and 8 button gamepads, or Saitek Cyborg
+joysticks. For more information on how to use the driver please read
+Documentation/joystick.txt
+
+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 analog.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_A3D 'Assassin 3D and MadCatz Panther devices' text
+Say Y here if you have an FPGaming or MadCatz controller using the
+A3D protocol over the PC gameport. For more information on how to
+use the driver please read Documentation/joystick.txt
+
+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 a3d.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_ADI 'Logitech ADI digital joysticks and gamepads' text
+Say Y here if you have a Logitech controller using the ADI
+protocol over the PC gameport. For more information on how to use
+the driver please read Documentation/joystick.txt
+
+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 adi.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_COBRA 'Creative Labs Blaster Cobra gamepad' text
+Say Y here if you have a Creative Labs Blaster Cobra gamepad.
+For more information on how to use the driver please read
+Documentation/joystick.txt
+
+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 cobra.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_GF2K 'Genius Flight2000 Digital joysticks and gamepads' text
+Say Y here if you have a Genius Flight2000 or MaxFighter
+digitally communicating joystick or gamepad. For more information
+on how to use the driver please read Documentation/joystick.txt
+
+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 gf2k.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_GRIP 'Gravis GrIP joysticks and gamepads' text
+Say Y here if you have a Gravis controller using the GrIP protocol
+over the PC gameport. For more information on how to use the driver
+please read Documentation/joystick.txt
+
+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 grip.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_INTERACT 'InterAct digital joysticks and gamepads' text
+Say Y hereif you have an InterAct gameport or joystick
+communicating digitally over the gameport. For more information on
+how to use the driver please read Documentation/joystick.txt
+
+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 interact.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_TMDC 'ThrustMaster DirectConnect joysticks and gamepads' text
+Say Y here if you have a ThrustMaster controller using the
+DirectConnect (BSP) protocol over the PC gameport. For more
+information on how to use the driver please read
+Documentation/joystick.txt
+
+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 tmdc.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_SIDEWINDER 'Microsoft SideWinder digital joysticks and gamepads'
+text
+Say Y here if you have a Microsoft controller using the Digital
+Overdrive protocol over PC gameport. For more information on how to
+use the driver please read Documentation/joystick.txt
+
+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 sidewinder.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_WARRIOR 'Logitech WingMan Warrior joystick' text
+Say Y here if you have a Logitech WingMan Warrior joystick
+connected to your computer's serial port. For more information on
+how to use the driver please read Documentation/joystick.txt
+
+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 warrior.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_MAGELLAN 'LogiCad3d Magellan/SpaceMouse 6dof controller' text
+Say Y here if you have a Magellan or Space Mouse 6DOF controller
+connected to your computer's serial port. For more information on
+how to use the driver please read Documentation/joystick.txt
+
+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 magellan.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_SPACEORB 'SpaceTec SpaceOrb/Avenger 6dof controller' text
+Say Y here if you have a SpaceOrb 360 or SpaceBall Avenger 6DOF
+controller connected to your computer's serial port. For more
+information on how to use the driver please read
+Documentation/joystick.txt
+
+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 spaceorb.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_SPACEBALL 'SpaceTec SpaceBall 4000 FLX 6dof controller' text
+Say Y here if you have a SpaceTec SpaceBall 4000 FLX controller
+connected to your computer's serial port. For more information on
+how to use the driver please read Documentation/joystick.txt
+.
+INPUT_STINGER 'Gravis Stinger gamepad'
+
+INPUT_IFORCE_232 'I-Force joysticks/wheels' text
+Say Y here if you have an I-Force joystick or steering wheel
+connected to your serial (COM) port. For more information on
+how to use the driver please read Documentation/joystick.txt
+
+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 iforce.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_DB9 'Multisystem, Sega Genesis, Saturn joysticks and gamepads'
+text
+Say Y here if you have a Sega Master System gamepad, Sega Genesis
+gamepad, Sega Saturn gamepad, or a Multisystem -- Atari, Amiga,
+Commodore, Amstrad CPC joystick connected to your parallel port.
+For more information on how to use the driver please read
+Documentation/joystick.txt and Documentation/joystick-parport.txt.
+
+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 db9.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_GAMECON 'Multisystem, NES, SNES, N64, PSX joysticks and gamepads'
+text
+Say Y here if you have a Nintendo Entertainment System gamepad,
+Super Nintendo Entertainment System gamepad, Nintendo 64 gamepad,
+Sony PlayStation gamepad or a Multisystem -- Atari, Amiga,
+Commodore, Amstrad CPC joystick connected to your parallel port.
+For more information on how to use the driver please read
+Documentation/joystick.txt and Documentation/joystick-parport.txt
+
+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 gamecon.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_TURBOGRAFX 'Multisystem joysticks via TurboGraFX device' text
+Say Y here if you have the TurboGraFX interface by Steffen
+Schwenke, and want to use it with Multiststem -- Atari, Amiga,
+Commodore, Amstrad CPC joystick. For more information on how to use
+the driver please read Documentation/joystick.txt and
+Documentation/joystick-parport.txt
+
+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 turbografx.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+INPUT_AMIJOY 'Amiga joysticks' text
+Say Y here if you have an Amiga with a digital joystick connected
+to it. For more information on how to use the driver please read
+Documentation/joystick.txt
+
+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 joy-amiga.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+#
+# PCMCIA character device configuration
+PCMCIA_SERIAL_CS 'PCMCIA serial device support' text
+Say Y here to enable support for 16-bit PCMCIA serial devices,
+including serial port cards, modems, and the modem functions of
+multi-function ethernet/modem cards. (PCMCIA- or PC-cards are
+credit-card size devices often used with laptops.)
+
+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 serial_cs.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt. If unsure,
+say N.
+.
+#
+# SCSI disk support
+BLK_DEV_SD 'SCSI disk support' text
+If you want to use a SCSI hard disk or the SCSI or parallel port
+version of the IOMEGA ZIP drive under Linux, say Y and read the
+SCSI-HOWTO, the Disk-HOWTO and the Multi-Disk-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . This is NOT for SCSI
+CDROMs.
+
+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 sd_mod.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt and
+Documentation/scsi.txt. Do not compile this driver as a module if
+your root file system (the one containing the directory /) is
+located on a SCSI disk. In this case, do not compile the driver for
+your SCSI host adapter (below) as a module either.
+.
+SD_EXTRA_DEVS 'Maximum number of SCSI disks that can be loaded as modules'
+text
+This controls the amount of additional space allocated in tables for
+drivers that are loaded as modules after the kernel is booted. In
+the event that the SCSI core itself was loaded as a module, this
+value is the number of additional disks that can be loaded after the
+first host driver is loaded.
+
+Admittedly this isn't pretty, but there are tons of race conditions
+involved with resizing the internal arrays on the fly. Someday this
+flag will go away, and everything will work automatically.
+
+If you don't understand what's going on, go with the default.
+.
+CHR_DEV_ST 'SCSI tape support' text
+If you want to use a SCSI tape drive under Linux, say Y and read the
+SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , and
+drivers/scsi/README.st in the kernel source. This is NOT for SCSI
+CDROMs.
+
+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 st.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt and
+Documentation/scsi.txt .
+.
+CHR_DEV_OSST 'OnStream SC-x0 SCSI tape support' text
+The OnStream SC-x0 SCSI tape drives can not be driven by the
+standard st driver, but instead need this special osst driver and
+use the /dev/osstX char device nodes (major 206).
+Via usb-storage and ide-scsi, you may be able to drive the USB-x0
+and DI-x0 drives as well. Note that there is also a second generation
+of OnStream tape drives (ADR-x0) that supports the standard SCSI-2
+commands for tapes (QIC-157) and can be driven by the standard
+driver st.
+For more information, you may have a look at the SCSI-HOWTO
+ftp://metalab.unc.edu/pub/Linux/docs/HOWTO and
+drivers/scsi/README.osst in the kernel source.
+More info on the OnStream driver may be found on
+http://linux1.onstream.nl/test/
+Please also have a look at the standard st docu, as most of it
+applies to osst as well.
+
+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 osst.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt and
+Documentation/scsi.txt .
+.
+ST_EXTRA_DEVS 'Maximum number of SCSI tapes that can be loaded as modules'
+
+BLK_DEV_SR 'SCSI CD-ROM support' text
+If you want to use a SCSI CDROM under Linux, say Y and read the
+SCSI-HOWTO and the CDROM-HOWTO at
+http://www.linuxdoc.org/docs.html#howto . Also make sure to say Y
+or M to "ISO 9660 CDROM file system support" later.
+
+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 sr_mod.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt and
+Documentation/scsi.txt .
+.
+BLK_DEV_SR_VENDOR 'Enable vendor-specific extensions (for SCSI CD-ROM)'
+text
+This enables the usage of vendor specific SCSI commands. This is
+required to support multisession CDs with old NEC/TOSHIBA cdrom
+drives (and HP Writers). If you have such a drive and get the first
+session only, try saying Y here; everybody else says N.
+.
+SR_EXTRA_DEVS 'Maximum number of CD-ROM devices that can be loaded as modules'
+text
+This controls the amount of additional space allocated in tables for
+drivers that are loaded as modules after the kernel is booted. In
+the event that the SCSI core itself was loaded as a module, this
+value is the number of additional CDROMs that can be loaded after
+the first host driver is loaded.
+
+Admittedly this isn't pretty, but there are tons of race conditions
+involved with resizing the internal arrays on the fly. Someday this
+flag will go away, and everything will work automatically.
+
+If you don't understand what's going on, go with the default.
+.
+CHR_DEV_SG 'SCSI generic support' text
+If you want to use SCSI scanners, synthesizers or CD-writers or just
+about anything having "SCSI" in its name other than hard disks,
+CDROMs or tapes, say Y here. These won't be supported by the kernel
+directly, so you need some additional software which knows how to
+talk to these devices using the SCSI protocol:
+
+For scanners, look at SANE (http://www.mostang.com/sane). For CD
+writer software look at cdrecord
+(http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html)
+and for burning a "disk at once": cdrdao
+(http://www.ping.de/sites/daneb/cdrdao.html). Cdparanoia is a high
+quality digital reader of audio CDs (http://www.xiph.org/paranoia).
+For other devices, it's possible that you'll have to write the
+driver software yourself. Please read the file
+Documentation/scsi-generic.txt for more information.
+
+If you want to compile this 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 and
+Documentation/scsi.txt. The module will be called sg.o. If unsure,
+say N.
+.
+SCSI_DEBUG_QUEUES 'Enable extra checks in SCSI queueing code' text
+This option turns on a lot of additional consistency checking for
+the new queueing code. This will adversely affect performance, but
+it is likely that bugs will be caught sooner if this is turned on.
+This will typically cause the kernel to panic if an error is
+detected, but it would have probably crashed if the panic weren't
+there. Comments/questions/problems to linux-scsi mailing list
+please. See http://www.andante.org/scsi_queue.html for more
+up-to-date information.
+.
+SCSI_MULTI_LUN 'Probe all LUNs on each SCSI device' text
+If you have a SCSI device that supports more than one LUN (Logical
+Unit Number), e.g. a CD jukebox, and only one LUN is detected, you
+can say Y here to force the SCSI driver to probe for multiple LUNs.
+A SCSI device with multiple LUNs acts logically like multiple SCSI
+devices. The vast majority of SCSI devices have only one LUN, and
+so most people can say N here and should in fact do so, because it
+is safer.
+.
+SCSI_CONSTANTS 'Verbose SCSI error reporting (kernel size +=12K)' text
+The error messages regarding your SCSI hardware will be easier to
+understand if you say Y here; it will enlarge your kernel by about
+12 KB. If in doubt, say Y.
+.
+SCSI_LOGGING 'SCSI logging facility' text
+This turns on a logging facility that can be used to debug a number
+of SCSI related problems.
+
+If you say Y here, no logging output will appear by default, but you
+can enable logging by saying Y to "/proc file system support" and
+"Sysctl support" below and executing the command
+
+ echo "scsi log token [level]" > /proc/scsi/scsi
+
+at boot time after the /proc file system has been mounted.
+
+There are a number of things that can be used for 'token' (you can
+find them in the source: drivers/scsi/scsi.c), and this allows you
+to select the types of information you want, and the level allows
+you to select the level of verbosity.
+
+If you say N here, it may be harder to track down some types of SCSI
+problems. If you say Y here your kernel will be somewhat larger, but
+there should be no noticeable performance impact as long as you have
+logging turned off.
+.
+SGIWD93_SCSI 'SGI WD93C93 SCSI Driver'
+
+SCSI_DECNCR 'DEC NCR53C94 SCSI Driver'
+
+SCSI_DECSII 'DEC SII SCSI Driver'
+
+BLK_DEV_3W_XXXX_RAID '3ware Hardware ATA-RAID support' text
+3ware is the only hardware ATA-Raid product in Linux to date.
+This card is 2,4, or 8 channel master mode support only.
+SCSI support required!!!
+
+http://www.3ware.com/
+
+Please read the comments at the top of drivers/scsi/3w-xxxx.c
+.
+SCSI_7000FASST '7000FASST SCSI support' text
+This driver supports the Western Digital 7000 SCSI host adapter
+family. Some information is in the source: drivers/scsi/wd7000.c.
+
+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 wd7000.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+SCSI_ACARD 'ACARD SCSI support' text
+This driver supports the ACARD 870U/W SCSI host adapter.
+
+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 atp870u.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SCSI_AHA152X 'Adaptec AHA152X/2825 support' text
+This is a driver for the AHA-1510, AHA-1520, AHA-1522, and AHA-2825
+SCSI host adapters. It also works for the AVA-1505, but the IRQ etc.
+must be manually specified in this case.
+
+It is explained in section 3.3 of the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . You might also want to
+read the file drivers/scsi/README.aha152x.
+
+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 aha152x.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SCSI_AHA1542 'Adaptec AHA1542 support' text
+This is support for a SCSI host adapter. It is explained in section
+3.4 of the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . Note that Trantor was
+purchased by Adaptec, and some former Trantor products are being
+sold under the Adaptec name. If it doesn't work out of the box, you
+may have to change some settings in drivers/scsi/aha1542.h.
+
+If you want to compile this 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 aha1542.o.
+.
+SCSI_AHA1740 'Adaptec AHA1740 support' text
+This is support for a SCSI host adapter. It is explained in section
+3.5 of the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . If it doesn't work out
+of the box, you may have to change some settings in
+drivers/scsi/aha1740.h.
+
+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 aha1740.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SCSI_AIC7XXX 'Adaptec AIC7xxx support' text
+This driver supports all of Adaptec's PCI based SCSI controllers (not
+the hardware RAID controllers though) as well as the aic7770 based
+EISA and VLB SCSI controllers (the 274x and 284x series). This is
+an Adaptec sponsored driver written by Justin Gibbs. It is intended
+to replace the previous aic7xxx driver maintained by Doug Ledford since
+Doug is no longer maintaining that driver.
+.
+#AIC7XXX_TCQ_ON_BY_DEFAULT 'Enable Tagged Command Queueing (TCQ) by default'
+AIC7XXX_CMDS_PER_DEVICE 'Default number of TCQ commands per device' text
+Specify the number of commands you would like to allocate per SCSI
+device when Tagged Command Queueing (TCQ) is enabled on that device.
+
+This is an upper bound value for the number of tagged transactions
+to be used for any device. The aic7xxx driver will automatically
+vary this number based on device behavior. For devices with a
+fixed maximum, the driver will eventually lock to this maximum
+and display a console message inidicating this value.
+
+Note: Unless you experience some type of device failure, the default
+ value, no enforced limit, should work for you.
+
+Default: 253
+.
+#AIC7XXX_PROC_STATS 'Collect statistics to report in /proc'
+AIC7XXX_RESET_DELAY_MS 'Delay in seconds after SCSI bus reset' text
+The number of milliseconds to delay after an initial bus reset.
+The bus settle delay following all error recovery actions is
+dictated by the SCSI layer and is not affected by this value.
+
+Default: 5000 (5 seconds)
+.
+AIC7XXX_BUILD_FIRMWARE 'Build Adapter Firmware with Kernel Build'
+
+SCSI_AIC7XXX_OLD 'Old Adaptec AIC7xxx support' text
+WARNING This driver is an older aic7xxx driver and is no longer under
+active development. Adaptec, Inc. is writing a new driver to take the
+place of this one, and it is recommended that whenever possible, people
+should use the new Adaptec written driver instead of this one. This
+driver will eventually be phased out entirely.
+
+This is support for the various aic7xxx based Adaptec SCSI
+controllers. These include the 274x EISA cards; 284x VLB cards;
+2902, 2910, 293x, 294x, 394x, 3985 and several other PCI and
+motherboard based SCSI controllers from Adaptec. It does not support
+the AAA-13x RAID controllers from Adaptec, nor will it likely ever
+support them. It does not support the 2920 cards from Adaptec that
+use the Future Domain SCSI controller chip. For those cards, you
+need the "Future Domain 16xx SCSI support" driver.
+
+In general, if the controller is based on an Adaptec SCSI controller
+chip from the aic777x series or the aic78xx series, this driver
+should work. The only exception is the 7810 which is specifically
+not supported (that's the RAID controller chip on the AAA-13x
+cards).
+
+Note that the AHA2920 SCSI host adapter is *not* supported by this
+driver; choose "Future Domain 16xx SCSI support" instead if you have
+one of those.
+
+Information on the configuration options for this controller can be
+found by checking the help file for each of the available
+configuration options. You should read drivers/scsi/aic7xxx_old/README.aic7xxx
+at a minimum before contacting the maintainer with any questions.
+The SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , can also be of great
+help.
+
+If you want 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 aic7xxx_old.o.
+.
+AIC7XXX_OLD_TCQ_ON_BY_DEFAULT 'Enable tagged command queueing (TCQ) by default'
+text
+This option causes the aic7xxx driver to attempt to use Tagged
+Command Queueing (TCQ) on all devices that claim to support it.
+
+TCQ is a feature of SCSI-2 which improves performance: the host
+adapter can send several SCSI commands to a device's queue even if
+previous commands haven't finished yet. Because the device is
+intelligent, it can optimize its operations (like head positioning)
+based on its own request queue. Not all devices implement this
+correctly.
+
+If you say Y here, you can still turn off TCQ on troublesome devices
+with the use of the tag_info boot parameter. See the file
+drivers/scsi/README.aic7xxx for more information on that and other
+aic7xxx setup commands. If this option is turned off, you may still
+enable TCQ on known good devices by use of the tag_info boot
+parameter.
+
+If you are unsure about your devices then it is safest to say N
+here.
+
+However, TCQ can increase performance on some hard drives by as much
+as 50% or more, so it is recommended that if you say N here, you
+should at least read the README.aic7xxx file so you will know how to
+enable this option manually should your drives prove to be safe in
+regards to TCQ.
+
+Conversely, certain drives are known to lock up or cause bus resets
+when TCQ is enabled on them. If you have a Western Digital
+Enterprise SCSI drive for instance, then don't even bother to enable
+TCQ on it as the drive will become unreliable, and it will actually
+reduce performance.
+.
+AIC7XXX_OLD_CMDS_PER_DEVICE 'Default number of TCQ commands per device'
+text
+Specify the number of commands you would like to allocate per SCSI
+device when Tagged Command Queueing (TCQ) is enabled on that device.
+
+Reasonable figures are in the range of 8 to 24 commands per device,
+but depending on hardware could be increased or decreased from that
+figure. If the number is too high for any particular device, the
+driver will automatically compensate usually after only 10 minutes
+of uptime. It will not hinder performance if some of your devices
+eventually have their command depth reduced, but is a waste of
+memory if all of your devices end up reducing this number down to a
+more reasonable figure.
+
+NOTE: Certain very broken drives are known to lock up when given
+more commands than they like to deal with. Quantum Fireball drives
+are the most common in this category. For the Quantum Fireball
+drives it is suggested to use no more than 8 commands per device.
+
+Default: 8
+.
+AIC7XXX_OLD_PROC_STATS 'Collect statistics to report in /proc' text
+This option tells the driver to keep track of how many commands have
+been sent to each particular device and report that information to
+the user via the /proc/scsi/aic7xxx/n file, where n is the number of
+the aic7xxx controller you want the information on. This adds a
+small amount of overhead to each and every SCSI command the aic7xxx
+driver handles, so if you aren't really interested in this
+information, it is best to leave it disabled. This will only work if
+you also say Y to "/proc file system support", below.
+
+If unsure, say N.
+.
+SCSI_IPS 'IBM ServeRAID support' text
+This is support for the IBM ServeRAID hardware RAID controllers.
+See http://www.developer.ibm.com/welcome/netfinity/serveraid.html
+for more information. If this driver does not work correctly
+without modification please contact the author by email at
+ipslinux@us.ibm.com.
+
+You can build this driver as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want),
+but only a single instance may be loaded. If you want to compile it
+as a module, say M here and read Documentation/modules.txt. The
+module will be called ips.o.
+.
+SCSI_DPT_I2O 'aptec I2O RAID support'
+
+SCSI_ADVANSYS 'AdvanSys SCSI support' text
+This is a driver for all SCSI host adapters manufactured by
+AdvanSys. It is documented in the kernel source in
+drivers/scsi/advansys.c.
+
+This driver is also available 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. The module will be called advansys.o.
+.
+SCSI_IN2000 'Always IN2000 SCSI support' text
+This is support for an ISA bus SCSI host adapter. You'll find more
+information in drivers/scsi/in2000.readme. If it doesn't work out of
+the box, you may have to change the jumpers for IRQ or address
+selection.
+
+If you want to compile this 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 in2000.o.
+.
+SCSI_AM53C974 'AM53/79C974 PCI SCSI support' text
+This is support for the AM53/79C974 SCSI host adapters. Please read
+drivers/scsi/README.AM53C974 for details. Also, the SCSI-HOWTO,
+available from http://www.linuxdoc.org/docs.html#howto , is for
+you.
+
+Note that there is another driver for AM53C974 based adapters:
+"Tekram DC390(T) and Am53/79C974 (PCscsi) SCSI support", above. You
+can pick either one.
+
+If you want 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 AM53C974.o.
+.
+SCSI_MEGARAID 'AMI MegaRAID support' text
+This driver supports the AMI MegaRAID 418, 428, 438, 466, 762, 490
+and 467 SCSI host adapters.
+
+If you want 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 megaraid.o.
+.
+SCSI_BUSLOGIC 'BusLogic SCSI support' text
+This is support for BusLogic MultiMaster and FlashPoint SCSI Host
+Adapters. Consult the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , and the files
+README.BusLogic and README.FlashPoint in drivers/scsi for more
+information. If this driver does not work correctly without
+modification, please contact the author, Leonard N. Zubkoff, by
+email to lnz@dandelion.com.
+
+You can also build this driver as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want),
+but only a single instance may be loaded. If you want to compile it
+as a module, say M here and read Documentation/modules.txt. The
+module will be called BusLogic.o.
+.
+SCSI_OMIT_FLASHPOINT 'Omit BusLogic SCSI FlashPoint support' text
+This option allows you to omit the FlashPoint support from the
+BusLogic SCSI driver. The FlashPoint SCCB Manager code is
+substantial, so users of MultiMaster Host Adapters may wish to omit
+it.
+.
+SCSI_CPQFCTS 'Compaq Fibre Channel 64-bit/66Mhz HBA support'
+
+SCSI_DMX3191D 'DMX3191D SCSI support' text
+This is support for Domex DMX3191D SCSI Host Adapters.
+
+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 dmx3191d.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SCSI_DTC3280 'DTC3180/3280 SCSI support' text
+This is support for DTC 3180/3280 SCSI Host Adapters. Please read
+the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , and the file
+drivers/scsi/README.dtc3x80.
+
+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 dtc.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SCSI_EATA 'EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) support'
+text
+This driver supports all EATA/DMA-compliant SCSI host adapters. DPT
+ISA and all EISA i/o addresses are probed looking for the "EATA"
+signature. If you chose "BIOS" at the question "PCI access mode",
+the addresses of all the PCI SCSI controllers reported by the PCI
+subsystem are probed as well.
+
+You want to read the start of drivers/scsi/eata.c and the
+SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+Note that there is also another driver for the same hardware
+available: "EATA-DMA support". You should say Y to only one of them.
+
+If you want to compile this 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 eata.o.
+.
+SCSI_EATA_TAGGED_QUEUE 'enable tagged command queueing' text
+This is a feature of SCSI-2 which improves performance: the host
+adapter can send several SCSI commands to a device's queue even if
+previous commands haven't finished yet. Most EATA adapters negotiate
+this feature automatically with the device, even if your answer is
+N. The safe answer is N.
+.
+SCSI_EATA_LINKED_COMMANDS 'enable elevator sorting' text
+This option enables elevator sorting for all probed SCSI disks and
+CDROMs. It definitely reduces the average seek distance when doing
+random seeks, but this does not necessarily result in a noticeable
+performance improvement: your mileage may vary...
+The safe answer is N.
+.
+SCSI_EATA_MAX_TAGS 'maximum number of queued commands' text
+This specifies how many SCSI commands can be maximally queued for
+each probed SCSI device. You should reduce the default value of 16
+only if you have disks with buggy or limited tagged command support.
+Minimum is 2 and maximum is 62. This value is also the window size
+used by the elevator sorting option above. The effective value used
+by the driver for each probed SCSI device is reported at boot time.
+.
+SCSI_EATA_DMA 'EATA-DMA [Obsolete] (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix) support'
+text
+This is support for the EATA-DMA protocol compliant SCSI Host
+Adapters like the SmartCache III/IV, SmartRAID controller families
+and the DPT PM2011B and PM2012B controllers.
+
+Note that this driver is obsolete; if you have one of the above SCSI
+Host Adapters, you should normally say N here and Y to "EATA
+ISA/EISA/PCI support", below. Please read the SCSI-HOWTO, available
+from http://www.linuxdoc.org/docs.html#howto .
+
+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 eata_dma.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SCSI_EATA_PIO 'EATA-PIO (old DPT PM2001, PM2012A) support' text
+This driver supports all EATA-PIO protocol compliant SCSI Host
+Adapters like the DPT PM2001 and the PM2012A. EATA-DMA compliant
+host adapters could also use this driver but are discouraged from
+doing so, since this driver only supports hard disks and lacks
+numerous features. You might want to have a look at the SCSI-HOWTO,
+available from http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this 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 eata_pio.o.
+.
+SCSI_FUTURE_DOMAIN 'Future Domain 16xx SCSI/AHA-2920A support' text
+This is support for Future Domain's 16-bit SCSI host adapters
+(TMC-1660/1680, TMC-1650/1670, TMC-3260, TMC-1610M/MER/MEX) and
+other adapters based on the Future Domain chipsets (Quantum
+ISA-200S, ISA-250MG; Adaptec AHA-2920A; and at least one IBM board).
+It is explained in section 3.7 of the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+NOTE: Newer Adaptec AHA-2920C boards use the Adaptec AIC-7850 chip
+and should use the aic7xxx driver ("Adaptec AIC7xxx chipset SCSI
+controller support"). This Future Domain driver works with the older
+Adaptec AHA-2920A boards with a Future Domain chip on them.
+
+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 fdomain.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SCSI_FD_MCS 'Future Domain MCS-600/700 SCSI support' text
+This is support for Future Domain MCS 600/700 MCA SCSI adapters.
+Some PS/2 computers are equipped with IBM Fast SCSI Adapter/A which
+is identical to the MCS 700 and hence also supported by this driver.
+This driver also supports the Reply SB16/SCSI card (the SCSI part).
+It supports multiple adapters in the same system.
+
+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 fd_mcs.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SCSI_GDTH 'Intel/ICP (former GDT SCSI Disk Array) RAID Controller support'
+text
+This is a driver for all SCSI Disk Array Controllers (EISA/ISA/PCI)
+manufactured by ICP vortex. It is documented in the kernel source in
+drivers/scsi/gdth.c and drivers/scsi/gdth.h.
+
+This driver is also available 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.
+.
+SCSI_GENERIC_NCR5380 'Generic NCR5380/53c400 SCSI support' text
+This is the generic NCR family of SCSI controllers, not to be
+confused with the NCR 53c7 or 8xx controllers. It is explained in
+section 3.8 of the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . If it doesn't work out
+of the box, you may have to change some settings in
+drivers/scsi/g_NCR5380.h.
+
+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 g_NCR5380.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+SCSI_G_NCR5380_PORT 'Port' text
+The NCR5380 and NCR53c400 SCSI controllers come in two varieties:
+port or memory mapped. You should know what you have. The most
+common card, Trantor T130B, uses port mapped mode.
+.
+SCSI_G_NCR5380_MEM 'Memory'
+
+SCSI_GENERIC_NCR53C400 'Enable NCR53c400 extensions' text
+This enables certain optimizations for the NCR53c400 SCSI cards. You
+might as well try it out. Note that this driver will only probe for
+the Trantor T130B in its default configuration; you might have to
+pass a command line option to the kernel at boot time if it doesn't
+detect your card. See the file drivers/scsi/README.g_NCR5380 for
+details.
+.
+SCSI_INITIO 'Initio 91XXU(W) SCSI support' text
+This is support for the Initio 91XXU(W) SCSI host adapter. Please
+read the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this 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 initio.o
+.
+SCSI_INIA100 'Initio INI-A100U2W SCSI support' text
+This is support for the Initio INI-A100U2W SCSI host adapter. Please
+read the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this 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 a100u2w.o
+.
+SCSI_PPA 'IOMEGA parallel port (ppa - older drives)' text
+This driver supports older versions of IOMEGA's parallel port ZIP
+drive (a 100 MB removable media device).
+
+Note that you can say N here if you have the SCSI version of the ZIP
+drive: it will be supported automatically if you said Y to the
+generic "SCSI disk support", above.
+
+If you have the ZIP Plus drive or a more recent parallel port ZIP
+drive (if the supplied cable with the drive is labeled "AutoDetect")
+then you should say N here and Y to "IOMEGA parallel port (imm -
+newer drives)", below.
+
+For more information about this driver and how to use it you should
+read the file drivers/scsi/README.ppa. You should also read the
+SCSI-HOWTO, which is available from
+http://www.linuxdoc.org/docs.html#howto . If you use this driver,
+you will still be able to use the parallel port for other tasks,
+such as a printer; it is safe to compile both drivers into the
+kernel.
+
+This driver is also available as a module which can be inserted in
+and removed from the running kernel whenever you want. To compile
+this driver as a module, say M here and read
+Documentation/modules.txt. The module will be called ppa.o.
+.
+SCSI_IMM 'IOMEGA parallel port (imm - newer drives)' text
+This driver supports newer versions of IOMEGA's parallel port ZIP
+drive (a 100 MB removable media device).
+
+Note that you can say N here if you have the SCSI version of the ZIP
+drive: it will be supported automatically if you said Y to the
+generic "SCSI disk support", above.
+
+If you have the ZIP Plus drive or a more recent parallel port ZIP
+drive (if the supplied cable with the drive is labeled "AutoDetect")
+then you should say Y here; if you have an older ZIP drive, say N
+here and Y to "IOMEGA Parallel Port (ppa - older drives)", above.
+
+For more information about this driver and how to use it you should
+read the file drivers/scsi/README.ppa. You should also read the
+SCSI-HOWTO, which is available from
+http://www.linuxdoc.org/docs.html#howto . If you use this driver,
+you will still be able to use the parallel port for other tasks,
+such as a printer; it is safe to compile both drivers into the
+kernel.
+
+This driver is also available as a module which can be inserted in
+and removed from the running kernel whenever you want. To compile
+this driver as a module, say M here and read
+Documentation/modules.txt. The module will be called imm.o.
+.
+SCSI_IZIP_EPP16 'Force the Iomega ZIP drivers to use EPP-16' text
+EPP (Enhanced Parallel Port) is a standard for parallel ports which
+allows them to act as expansion buses that can handle up to 64
+peripheral devices.
+
+Some parallel port chipsets are slower than their motherboard, and
+so we have to control the state of the chipset's FIFO queue every
+now and then to avoid data loss. This will be done if you say Y
+here.
+
+Generally, saying Y is the safe option and slows things down a bit.
+.
+SCSI_IZIP_SLOW_CTR 'Assume slow parallel port control register' text
+Some parallel ports are known to have excessive delays between
+changing the parallel port control register and good data being
+available on the parallel port data/status register. This option
+forces a small delay (1.0 usec to be exact) after changing the
+control register to let things settle out. Enabling this option may
+result in a big drop in performance but some very old parallel ports
+(found in 386 vintage machines) will not work properly.
+
+Generally, saying N is fine.
+.
+SCSI_NCR53C406A 'NCR53c406a SCSI support' text
+This is support for the NCR53c406a SCSI host adapter. For user
+configurable parameters, check out drivers/scsi/NCR53c406.c in the
+kernel source. Also read the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+If you want 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 NCR53c406.o.
+.
+SCSI_SYM53C416 'Symbios 53c416 SCSI support' text
+This is support for the sym53c416 SCSI host adapter, the SCSI
+adapter that comes with some HP scanners. This driver requires that
+the sym53c416 is configured first using some sort of pnp
+configuration program (e.g. isapnp) or by a PnP aware BIOS. If you
+are using isapnp then you need to compile this driver as a module
+and then load it using insmod after isapnp has run. The parameters
+of the configured card(s) should be passed to the driver. The format
+is:
+
+ insmod sym53c416 sym53c416=, [sym53c416_1=,]
+
+There is support for up to four adapters. If you want 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
+sym53c416.o.
+.
+SCSI_SIM710 'Simple 53c710 SCSI support (Compaq, NCR machines)' text
+This is a simple driver for NCR53c710 based SCSI host adapters.
+
+More complex drivers for this chip are available ("NCR53c7,8xx SCSI
+support", above), but they require that the scsi chip be able to do
+DMA block moves between memory and on-chip registers, which can
+cause problems under certain conditions. This driver is designed to
+avoid these problems and is intended to work with any Intel machines
+using 53c710 chips, including various Compaq and NCR machines.
+
+Please read the comments at the top of the file
+drivers/scsi/sim710.c for more information.
+
+If you want 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 sim710.o.
+.
+SCSI_NCR_D700 'NCR Dual 700 MCA SCSI support'
+
+SCSI_LASI700 'HP LASI SCSI support for 53c700/710'
+
+SCSI_NCR53C7xx 'NCR53c7,8xx SCSI support' text
+This is a driver for the 53c7 and 8xx NCR family of SCSI
+controllers, not to be confused with the NCR 5380 controllers. It is
+explained in section 3.8 of the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . If it doesn't work out
+of the box, you may have to change some settings in
+drivers/scsi/53c7,8xx.h. Please read drivers/scsi/README.ncr53c7xx
+for the available boot time command line options.
+
+Note: there is another driver for the 53c8xx family of controllers
+("NCR53C8XX SCSI support" below). If you want to use them both, you
+need to say M to both and build them as modules, but only one may be
+active at a time. If you have a 53c8xx board, it's better to use the
+other driver.
+
+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 53c7,8xx.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SCSI_NCR53C7xx_sync 'Always negotiate synchronous transfers' text
+In general, this is good; however, it is a bit dangerous since there
+are some broken SCSI devices out there. Take your chances. Safe bet
+is N.
+.
+SCSI_NCR53C7xx_FAST 'Allow FAST-SCSI [10MHz]' text
+This will enable 10MHz FAST-SCSI transfers with your host
+adapter. Some systems have problems with that speed, so it's safest
+to say N here.
+.
+SCSI_NCR53C7xx_DISCONNECT 'Allow DISCONNECT' text
+This enables the disconnect/reconnect feature of the NCR SCSI
+controller. When you say Y here, a slow SCSI device will not lock
+the SCSI bus while processing a request, allowing simultaneous use
+of e.g. a SCSI hard disk and SCSI tape or CD-ROM drive, and
+providing much better performance when using slow and fast SCSI
+devices at the same time. Some devices, however, do not operate
+properly with this option enabled, and will cause your SCSI system
+to hang, which might cause a system crash. The safe answer
+therefore is to say N.
+.
+SCSI_NCR53C8XX 'NCR53C8XX SCSI support' text
+This is the BSD ncr driver adapted to Linux for the NCR53C8XX family
+of PCI-SCSI controllers. This driver supports parity checking,
+tagged command queuing and fast synchronous data transfers up to 80
+MB/s with wide FAST-40 LVD devices and controllers.
+
+Recent versions of the 53C8XX chips are better supported by the
+option "SYM53C8XX SCSI support", below.
+
+Note: there is yet another driver for the 53c8xx family of
+controllers ("NCR53c7,8xx SCSI support" above). If you want to use
+them both, you need to say M to both and build them as modules, but
+only one may be active at a time. If you have a 53c8xx board, you
+probably do not want to use the "NCR53c7,8xx SCSI support".
+
+Please read drivers/scsi/README.ncr53c8xx for more information.
+.
+SCSI_SYM53C8XX 'SYM53C8XX SCSI support' text
+This driver supports all the features of recent 53C8XX chips (used
+in PCI SCSI controllers), notably the hardware phase mismatch
+feature of the SYM53C896.
+
+Older versions of the 53C8XX chips are not supported by this
+driver. If your system uses either a 810 rev. < 16, a 815, or a 825
+rev. < 16 PCI SCSI processor, you must use the generic NCR53C8XX
+driver ("NCR53C8XX SCSI support" above) or configure both the
+NCR53C8XX and this SYM53C8XX drivers either as module or linked to
+the kernel image.
+
+When both drivers are linked into the kernel, the SYM53C8XX driver
+is called first at initialization and you can use the 'excl=ioaddr'
+driver boot option to exclude attachment of adapters by the
+SYM53C8XX driver. For example, entering
+'sym53c8xx=excl:0xb400,excl=0xc000' at the lilo prompt prevents
+adapters at io address 0xb400 and 0xc000 from being attached by the
+SYM53C8XX driver, thus allowing the NCR53C8XX driver to attach them.
+The 'excl' option is also supported by the NCR53C8XX driver.
+
+Please read drivers/scsi/README.ncr53c8xx for more information.
+.
+SCSI_NCR53C8XX_DEFAULT_TAGS 'Default tagged command queue depth' text
+"Tagged command queuing" is a feature of SCSI-2 which improves
+performance: the host adapter can send several SCSI commands to a
+device's queue even if previous commands haven't finished yet.
+Because the device is intelligent, it can optimize its operations
+(like head positioning) based on its own request queue. Some SCSI
+devices don't implement this properly; if you want to disable this
+feature, enter 0 or 1 here (it doesn't matter which).
+
+The default value is 8 and should be supported by most hard disks.
+This value can be overridden from the boot command line using the
+'tags' option as follows (example):
+'ncr53c8xx=tags:4/t2t3q16/t0u2q10' will set default queue depth to
+4, set queue depth to 16 for target 2 and target 3 on controller 0
+and set queue depth to 10 for target 0 / lun 2 on controller 1.
+
+The normal answer therefore is to go with the default 8 and to use
+a boot command line option for devices that need to use a different
+command queue depth.
+
+There is no safe option other than using good SCSI devices.
+.
+SCSI_NCR53C8XX_MAX_TAGS 'Maximum number of queued commands' text
+This option allows you to specify the maximum number of commands
+that can be queued to any device, when tagged command queuing is
+possible. The default value is 32. Minimum is 2, maximum is 64.
+Modern hard disks are able to support 64 tags and even more, but
+do not seem to be faster when more than 32 tags are being used.
+
+So, the normal answer here is to go with the default value 32 unless
+you are using very large hard disks with large cache (>= 1 MB) that
+are able to take advantage of more than 32 tagged commands.
+
+There is no safe option and the default answer is recommended.
+.
+SCSI_NCR53C8XX_SYNC 'Synchronous transfer frequency in MHz' text
+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
+rate of 40 MB/s.
+
+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 80, depending on the capability of your SCSI
+controller. The higher the number, the faster the data transfer.
+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,
+since the driver will get this information from the user set-up. It
+also can be overridden using a boot setup option, as follows
+(example): 'ncr53c8xx=sync:12' will allow the driver to negotiate
+for FAST-20 synchronous data transfer (20 mega-transfers per
+second).
+
+The normal answer therefore is not to go with the default but to
+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.
+
+There is no safe option other than using good cabling, right
+terminations and SCSI conformant devices.
+.
+SCSI_NCR53C8XX_PROFILE 'Enable traffic profiling' text
+This option allows you to enable profiling information gathering.
+These statistics are not very accurate due to the low frequency
+of the kernel clock (100 Hz on i386) and have performance impact
+on systems that use very fast devices.
+
+The normal answer therefore is N.
+.
+SCSI_NCR53C8XX_IOMAPPED 'Use normal IO' text
+If you say Y here, the driver will use normal IO, as opposed to
+memory mapped IO. Memory mapped IO has less latency than normal IO
+and works for most Intel-based hardware. Under Linux/Alpha only
+normal IO is currently supported by the driver and so, this option
+has no effect on those systems.
+
+The normal answer therefore is N; try Y only if you encounter SCSI
+related problems.
+.
+SCSI_NCR53C8XX_PQS_PDS 'Include support for the NCR PQS/PDS SCSI card'
+text
+Say Y here if you have a special SCSI adapter produced by NCR
+corporation called a PCI Quad SCSI or PCI Dual SCSI. You do not need
+this if you do not have one of these adapters. However, since this
+device is detected as a specific PCI device, this option is quite
+safe.
+
+The common answer here is N, but answering Y is safe.
+.
+SCSI_NCR53C8XX_NO_DISCONNECT 'Not allow targets to disconnect' text
+This option is only provided for safety if you suspect some SCSI
+device of yours to not support properly the target-disconnect
+feature. In that case, you would say Y here. In general however, to
+not allow targets to disconnect is not reasonable if there is more
+than 1 device on a SCSI bus. The normal answer therefore is N.
+.
+SCSI_NCR53C8XX_SYMBIOS_COMPAT 'Assume boards are SYMBIOS compatible'
+text
+This option allows you to enable some features depending on GPIO
+wiring. These General Purpose Input/Output pins can be used for
+vendor specific features or implementation of the standard SYMBIOS
+features. Genuine SYMBIOS controllers use GPIO0 in output for
+controller LED and GPIO3 bit as a flag indicating
+singled-ended/differential interface. The Tekram DC-390U/F boards
+uses a different GPIO wiring.
+
+Your answer to this question is ignored if all your controllers have
+NVRAM, since the driver is able to detect the board type from the
+NVRAM format.
+
+If all the controllers in your system are genuine SYMBIOS boards or
+use BIOS and drivers from SYMBIOS, you would want to say Y here,
+otherwise N. N is the safe answer.
+.
+SCSI_SYM53C8XX_2 'SYM53C8XX Version 2 SCSI support'
+
+SCSI_SYM53C8XX_DMA_ADDRESSING_MODE 'DMA addressing mode'
+
+SCSI_SYM53C8XX_DEFAULT_TAGS 'default tagged command queue depth'
+
+SCSI_SYM53C8XX_MAX_TAGS 'maximum number of queued commands'
+
+SCSI_SYM53C8XX_IOMAPPED 'use normal IO'
+
+SCSI_IBMMCA 'IBMMCA SCSI support' text
+This is support for the IBM SCSI adapter found in many of the PS/2
+series computers. These machines have an MCA bus, so you need to
+answer Y to "MCA support" as well and read Documentation/mca.txt.
+
+If the adapter isn't found during boot (a common problem for models
+56, 57, 76, and 77) you'll need to use the 'ibmmcascsi=' kernel
+option, where is the id of the SCSI subsystem (usually 7, but
+if that doesn't work check your reference diskette). Owners of model
+95 with a LED-matrix-display can in addition activate some activity
+info like under OS/2, but more informative, by setting
+'ibmmcascsi=display' as an additional kernel parameter. Try "man
+bootparam" or see the documentation of your boot loader about how to
+pass options to the kernel.
+
+If you want 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 ibmmca.o.
+.
+IBMMCA_SCSI_ORDER_STANDARD 'Standard SCSI-order' text
+In the PC-world and in most modern SCSI-BIOS-setups, SCSI-hard disks
+are assigned to the drive letters, starting with the lowest SCSI-id
+(physical number -- pun) to be drive C:, as seen from DOS and
+similar operating systems. When looking into papers describing the
+ANSI-SCSI-standard, this assignment of drives appears to be wrong.
+The SCSI-standard follows a hardware-hierarchy which says that id 7
+has the highest priority and id 0 the lowest. Therefore, the host
+adapters are still today everywhere placed as SCSI-id 7 by default.
+In the SCSI-standard, the drive letters express the priority of the
+disk. C: should be the hard disk, or a partition on it, with the
+highest priority. This must therefore be the disk with the highest
+SCSI-id (e.g. 6) and not the one with the lowest! IBM-BIOS kept the
+original definition of the SCSI-standard as also industrial- and
+process-control-machines, like VME-CPUs running under realtime-OSs
+(e.g. LynxOS, OS9) do.
+
+If you like to run Linux on your MCA-machine with the same
+assignment of hard disks as seen from e.g. DOS or OS/2 on your
+machine, which is in addition conformant to the SCSI-standard, you
+must say Y here. This is also necessary for MCA-Linux users who want
+to keep downward compatibility to older releases of the
+IBM-MCA-SCSI-driver (older than driver-release 2.00 and older than
+June 1997).
+
+If you like to have the lowest SCSI-id assigned as drive C:, as
+modern SCSI-BIOSes do, which does not conform to the standard, but
+is widespread and common in the PC-world of today, you must say N
+here. If unsure, say Y.
+.
+IBMMCA_SCSI_DEV_RESET 'Reset SCSI-devices at boot time' text
+By default, SCSI-devices are reset when the machine is powered on.
+However, some devices exist, like special-control-devices,
+SCSI-CNC-machines, SCSI-printer or scanners of older type, that do
+not reset when switched on. If you say Y here, each device connected
+to your SCSI-bus will be issued a reset-command after it has been
+probed, while the kernel is booting. This may cause problems with
+more modern devices, like hard disks, which do not appreciate these
+reset commands, and can cause your system to hang. So say Y only if
+you know that one of your older devices needs it; N is the safe
+answer.
+.
+SCSI_MCA_53C9X 'NCR MCA 53C9x SCSI support' text
+Some Microchannel machines, notably the NCR 35xx line, use a SCSI
+controller based on the NCR 53C94. This driver will allow use of
+the controller on the 3550, and very possibly others.
+
+If you want to compile this as a module (= code which can be
+inserted and removed from the running kernel whenever you want), say
+M here and read Documentation/modules.txt. The module will be called
+mca_53c9x.o.
+.
+SCSI_PAS16 'PAS16 SCSI support' text
+This is support for a SCSI host adapter. It is explained in section
+3.10 of the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . If it doesn't work out
+of the box, you may have to change some settings in
+drivers/scsi/pas16.h.
+
+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 pas16.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SCSI_PCI2000 'PCI2000 support' text
+This is support for the PCI2000I EIDE interface card which acts as a
+SCSI host adapter. Please read the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+This driver is also available as a module called pci2000.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.
+.
+SCSI_PCI2220I 'PCI2220i support' text
+This is support for the PCI2220i EIDE interface card which acts as a
+SCSI host adapter. Please read the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+This driver is also available as a module called pci2220i.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.
+.
+SCSI_PSI240I 'PSI240i support' text
+This is support for the PSI240i EIDE interface card which acts as a
+SCSI host adapter. Please read the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+This driver is also available as a module called psi240i.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.
+.
+SCSI_QLOGIC_FAS 'Qlogic FAS SCSI support' text
+This is a driver for the ISA, VLB, and PCMCIA versions of the Qlogic
+FastSCSI! cards as well as any other card based on the FASXX chip
+(including the Control Concepts SCSI/IDE/SIO/PIO/FDC cards).
+
+This driver does NOT support the PCI versions of these cards. The
+PCI versions are supported by the Qlogic ISP driver ("Qlogic ISP
+SCSI support"), below.
+
+Information about this driver is contained in
+drivers/scsi/README.qlogicfas. You should also read the SCSI-HOWTO,
+available from http://www.linuxdoc.org/docs.html#howto .
+
+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 qlogicfas.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+SCSI_QLOGIC_ISP 'Qlogic ISP SCSI support' text
+This driver works for all QLogic PCI SCSI host adapters (IQ-PCI,
+IQ-PCI-10, IQ_PCI-D) except for the PCI-basic card. (This latter
+card is supported by the "AM53/79C974 PCI SCSI" driver).
+
+If you say Y here, make sure to choose "BIOS" at the question "PCI
+access mode".
+
+Please read the file drivers/scsi/README.qlogicisp. You should also
+read the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+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 qlogicisp.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+SCSI_QLOGIC_FC_FIRMWARE 'Include loadable firmware in driver'
+
+SCSI_QLOGIC_FC 'Qlogic ISP FC SCSI support' text
+This is a driver for the QLogic ISP2100 SCSI-FCP host adapter.
+
+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 qlogicfc.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+SCSI_QLOGIC_1280 'Qlogic QLA 1280 SCSI support' text
+Say Y if you have a QLogic ISP1x80/1x160 SCSI host adapter.
+
+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 qla1280.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+SCSI_SEAGATE 'Seagate ST-02 and Future Domain TMC-8xx SCSI support'
+text
+These are 8-bit SCSI controllers; the ST-01 is also supported by
+this driver. It is explained in section 3.9 of the SCSI-HOWTO,
+available from http://www.linuxdoc.org/docs.html#howto . If it
+doesn't work out of the box, you may have to change some settings in
+drivers/scsi/seagate.h.
+
+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 seagate.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SCSI_DC390T 'Tekram DC390(T) and Am53/79C974 SCSI support' text
+This driver supports PCI SCSI host adapters based on the Am53C974A
+chip, e.g. Tekram DC390(T), DawiControl 2974 and some onboard
+PCscsi/PCnet (Am53/79C974) solutions.
+
+Documentation can be found in drivers/scsi/README.tmscsim.
+
+Note that this driver does NOT support Tekram DC390W/U/F, which are
+based on NCR/Symbios chips. Use "NCR53C8XX SCSI support" for those.
+Also note that there is another generic Am53C974 driver,
+"AM53/79C974 PCI SCSI support" below. You can pick either one.
+
+If you want 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 tmscsim.o.
+.
+SCSI_DC390T_NOGENSUPP 'Omit support for other Am53/79C974 based SCSI adapters'
+text
+If you say N here, the DC390(T) SCSI driver relies on the DC390
+EEPROM to get initial values for its settings, such as speed,
+termination, etc. If it can't find this EEPROM, it will use defaults
+or the user supplied boot/module parameters. For details on driver
+configuration see drivers/scsi/README.tmscsim.
+
+If you say Y here and if no EEPROM is found, the driver gives up and
+thus only supports Tekram DC390(T) adapters. This can be useful if
+you have a DC390(T) and another Am53C974 based adapter, which, for
+some reason, you want to drive with the other AM53C974 driver.
+
+If unsure, say N.
+.
+SCSI_T128 'Trantor T128/T128F/T228 SCSI support' text
+This is support for a SCSI host adapter. It is explained in section
+3.11 of the SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . If it doesn't work out
+of the box, you may have to change some settings in
+drivers/scsi/t128.h. Note that Trantor was purchased by Adaptec, and
+some former Trantor products are being sold under the Adaptec name.
+
+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 t128.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SCSI_U14_34F 'UltraStor 14F/34F support' text
+This is support for the UltraStor 14F and 34F SCSI-2 host adapters.
+The source at drivers/scsi/u14-34f.c contains some information about
+this hardware. If the driver doesn't work out of the box, you may
+have to change some settings in drivers/scsi/u14-34f.c. Read the
+SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . Note that there is also
+another driver for the same hardware: "UltraStor SCSI support",
+below. You should say Y to both only if you want 24F support as
+well.
+
+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 u14-34f.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SCSI_U14_34F_LINKED_COMMANDS 'enable elevator sorting' text
+This option enables elevator sorting for all probed SCSI disks and
+CDROMs. It definitely reduces the average seek distance when doing
+random seeks, but this does not necessarily result in a noticeable
+performance improvement: your mileage may vary...
+
+The safe answer is N.
+.
+SCSI_U14_34F_MAX_TAGS 'maximum number of queued commands' text
+This specifies how many SCSI commands can be maximally queued for
+each probed SCSI device. You should reduce the default value of 8
+only if you have disks with buggy or limited tagged command support.
+Minimum is 2 and maximum is 14. This value is also the window size
+used by the elevator sorting option above. The effective value used
+by the driver for each probed SCSI device is reported at boot time.
+.
+SCSI_ULTRASTOR 'UltraStor SCSI support' text
+This is support for the UltraStor 14F, 24F and 34F SCSI-2 host
+adapter family. This driver is explained in section 3.12 of the
+SCSI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto . If it doesn't work out
+of the box, you may have to change some settings in
+drivers/scsi/ultrastor.h.
+
+Note that there is also another driver for the same hardware:
+"UltraStor 14F/34F support", above.
+
+If you want to compile this 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 ultrastor.o.
+.
+SCSI_DEBUG 'SCSI debugging host simulator' text
+This is a host adapter simulator that can be programmed to simulate
+a large number of conditions that could occur on a real bus. The
+advantage is that many hard to reproduce problems can be tested in a
+controlled environment where there is reduced risk of losing
+important data. This is primarily of use to people trying to debug
+the middle and upper layers of the SCSI subsystem. If unsure, say N.
+.
+SCSI_MESH 'MESH (Power Mac internal SCSI) support' text
+Many Power Macintoshes and clones have a MESH (Macintosh Enhanced
+SCSI Hardware) SCSI bus adaptor (the 7200 doesn't, but all of the
+other Power Macintoshes do). Say Y to include support for this SCSI
+adaptor. This driver is also available as a module called mesh.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.
+.
+SCSI_MESH_SYNC_RATE 'Maximum synchronous transfer rate (MB/s) (0 = async)'
+text
+On Power Macintoshes (and clones) where the MESH SCSI bus adaptor
+drives a bus which is entirely internal to the machine (such as the
+7500, 7600, 8500, etc.), the MESH is capable of synchronous
+operation at up to 10 MB/s. On machines where the SCSI bus
+controlled by the MESH can have external devices connected, it is
+usually rated at 5 MB/s. 5 is a safe value here unless you know the
+MESH SCSI bus is internal only; in that case you can say 10. Say 0
+to disable synchronous operation.
+.
+SCSI_MAC53C94 '53C94 (Power Mac external SCSI) support' text
+On Power Macintoshes (and clones) with two SCSI buses, the external
+SCSI bus is usually controlled by a 53C94 SCSI bus adaptor. Older
+machines which only have one SCSI bus, such as the 7200, also use
+the 53C94. Say Y to include support for the 53C94.
+
+This driver is also available as a module called mac53c94.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.
+.
+JAZZ_ESP 'MIPS JAZZ FAS216 SCSI support' text
+This is the driver for the onboard SCSI host adapter of MIPS Magnum
+4000, Acer PICA, Olivetti M700-10 and a few other identical OEM
+systems.
+.
+SCSI_LASI 'Lasi SCSI support'
+
+SCSI_ZALON 'Zalon SCSI support'
+
+#
+# Fusion devices
+FUSION 'Fusion MPT (base + ScsiHost) drivers'
+
+FUSION_ISENSE 'Enhanced SCSI error reporting'
+
+FUSION_CTL 'Fusion MPT misc device (ioctl) driver'
+
+FUSION_LAN 'Fusion MPT LAN driver'
+
+#
+# PCMCIA SCSI adapter configuration
+SCSI_PCMCIA 'PCMCIA SCSI adapter support' text
+Say Y here if you intend to attach a PCMCIA or CardBus card to your
+computer which acts as a SCSI host adapter. These are credit card
+size devices often used with laptops.
+
+Note that the answer to this question won't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions PCMCIA SCSI host adapters.
+.
+PCMCIA_AHA152X 'Adaptec AHA152X PCMCIA support' text
+Say Y here if you intend to attach this type of PCMCIA SCSI host
+adapter to your computer.
+
+This driver is also available as a module called aha152x_cs.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.
+.
+PCMCIA_QLOGIC 'Qlogic PCMCIA support' text
+Say Y here if you intend to attach this type of PCMCIA SCSI host
+adapter to your computer.
+
+This driver is also available as a module called qlogic_cs.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.
+.
+PCMCIA_FDOMAIN 'Future Domain PCMCIA support' text
+Say Y here if you intend to attach this type of PCMCIA SCSI host
+adapter to your computer.
+
+This driver is also available as a module called fdomain_cs.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.
+.
+PCMCIA_NINJA_SCSI 'NinjaSCSI-3 / NinjaSCSI-32Bi (16bit) PCMCIA support'
+
+#PCMCIA_APA1480 'Adaptec APA1480 CardBus support'
+#
+# Sound
+SOUND_BT878 'BT878 audio dma'
+
+SOUND_CMPCI 'C-Media PCI (CMI8338/8378)' text
+Say Y or M if you have a PCI sound card using the CMI8338
+or the CMI8378 chip.set.
+.
+SOUND_CMPCI_FM 'Enable legacy FM'
+
+SOUND_CMPCI_FMIO 'FM I/O (388, 3C8, 3E0, 3E8)'
+
+SOUND_CMPCI_MIDI 'Enable legacy MPU-401'
+
+SOUND_CMPCI_MPUIO 'MPU-401 I/O (330, 320, 310, 300)'
+
+SOUND_CMPCI_JOYSTICK 'Enable joystick'
+
+SOUND_CMPCI_CM8738 'Support CMI8738 based audio cards'
+
+SOUND_CMPCI_SPDIFINVERSE 'Inverse S/PDIF in for CMI8738'
+
+SOUND_CMPCI_SPDIFLOOP 'Enable S/PDIF loop for CMI8738'
+
+SOUND_CMPCI_SPEAKERS 'Number of speakers (2, 4, 5, 6'
+
+SOUND_CMPCI_LINE_REAR 'Use Line-in as Read-out'
+
+SOUND_CMPCI_LINE_BASS 'Use Line-in as Bass'
+
+SOUND_EMU10K1 'Creative SBLive! (EMU10K1) based PCI sound cards' text
+Say Y or M if you have a PCI sound card using the EMU10K1 chipset,
+such as the various Creative SBLive!, SB PCI512 or Emu-APS.
+
+For more information on this driver and the degree of support for the
+different card models please check .
+
+It is now possible to load dsp microcode patches into the EMU10K1
+chip. These patches are used to implement real time sound processing
+effects which include for example: signal routing, bass/treble
+control, AC3 passthrough, ...
+Userspace tools to create new patches and load/unload them can be
+found at .
+.
+MIDI_EMU10K1 'Creative SBLive! MIDI' text
+Say Y if you want to be able to use the OSS /dev/sequencer interface.
+This code is still experimental.
+.
+SOUND_FUSION 'Crystal SoundFusion (CS4280/461x)' text
+This module drives the Crystal SoundFusion devices (CS4280/46xx series)
+when wired as native sound drivers with AC97 codecs. If this driver
+does not work try the CS4232 driver.
+.
+SOUND_CS4281 'Crystal Sound CS4281'
+
+SOUND_ES1370 'Ensoniq AudioPCI (ES1370) based PCI sound cards' text
+Say Y or M if you have a PCI sound card utilizing the Ensoniq
+ES1370 chipset, such as Ensoniq's AudioPCI (non-97). To find
+out if your sound card uses an ES1370 without removing your
+computer's cover, use lspci -n and look for the PCI ID
+1274:5000. Since Ensoniq was bought by Creative Labs,
+Sound Blaster 64/PCI models are either ES1370 or ES1371 based.
+This driver differs slightly from OSS/Free, so PLEASE READ
+Documentation/sound/es1370.
+.
+SOUND_ES1371 'Ensoniq AudioPCI 97 (ES1371) based sound cards' text
+Say Y or M if you have a PCI sound card utilizing the Ensoniq
+ES1371 chipset, such as Ensoniq's AudioPCI97. To find out if
+your sound card uses an ES1371 without removing your computer's
+cover, use lspci -n and look for the PCI ID 1274:1371. Since
+Ensoniq was bought by Creative Labs, Sound Blaster 64/PCI
+models are either ES1370 or ES1371 based. This driver differs
+slightly from OSS/Free, so PLEASE READ Documentation/sound/es1371.
+.
+SOUND_ESSSOLO1 'ESS Solo1 based PCI sound cards (eg. SC1938)' text
+Say Y or M if you have a PCI sound card utilizing the ESS Technology
+Solo1 chip. To find out if your sound card uses a
+Solo1 chip without removing your computer's cover, use
+lspci -n and look for the PCI ID 125D:1969. This driver
+differs slightly from OSS/Free, so PLEASE READ
+Documentation/sound/solo1.
+.
+SOUND_MAESTRO 'ESS Maestro, Maestro2, Maestro2E driver' text
+Say Y or M if you have a sound system driven by ESS's Maestro line
+of PCI sound chips. These include the Maestro 1, Maestro 2, and
+Maestro 2E. See Documentation/sound/Maestro for more details.
+.
+SOUND_MAESTRO3 'ESS Maestro3/Allegro driver'
+
+SOUND_SONICVIBES 'S3 SonicVibes based PCI sound cards' text
+Say Y or M if you have a PCI sound card utilizing the S3
+SonicVibes chipset. To find out if your sound card uses a
+SonicVibes chip without removing your computer's cover, use
+lspci -n and look for the PCI ID 5333:CA00. This driver
+differs slightly from OSS/Free, so PLEASE READ
+Documentation/sound/sonicvibes.
+.
+#SOUND_VWSND 'SGI Visual Workstation on-board audio'
+SOUND_VRC5477 'NEC Vrc5477 AC97 sound'
+
+SOUND_TRIDENT 'Trident 4DWave DX/NX, SiS 7018 or ALi 5451 PCI Audio Core'
+text
+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
+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. PCI ID
+10B9:5451 stands for ALi5451.
+
+This driver supports S/PDIF in/out (record/playback) for ALi 5451
+embedded in ALi M1535+ and M1535D+. Note that they aren't all
+enabled by default; you can enable them by saying Y to "/proc file
+system support" and "Sysctl support", and after the /proc file
+system has been mounted, executing the command
+
+ command what is enabled
+
+echo 0>/proc/ALi5451 pcm out is also set to S/PDIF out. (Default).
+
+echo 1>/proc/ALi5451 use S/PDIF out to output pcm data.
+
+echo 2>/proc/ALi5451 use S/PDIF out to output non-pcm data.(AC3...).
+
+echo 3>/proc/ALi5451 record from Ac97 in(MIC, Line in...). (Default).
+
+echo 4>/proc/ALi5451 no matter Ac97 settings, record from S/PDIF in.
+
+
+This driver differs slightly from OSS/Free, so PLEASE READ the
+comments at the top of driver/sound/trident.c
+.
+SOUND_MSNDCLAS 'Support for Turtle Beach MultiSound Classic, Tahiti, Monterey'
+text
+Say M here if you have a Turtle Beach MultiSound Classic, Tahiti or
+Monterey (not for the Pinnacle or Fiji).
+
+See Documentation/sound/MultiSound for important information about
+this driver.
+.
+MSNDCLAS_INIT_FILE 'Full pathname of MSNDINIT.BIN firmware file' text
+The MultiSound cards have two firmware files which are required for
+operation, and are not currently included. These files can be
+obtained from Turtle Beach. See Documentation/sound/MultiSound for
+information on how to obtain this.
+.
+MSNDCLAS_PERM_FILE 'Full pathname of MSNDPERM.BIN firmware file' text
+The MultiSound cards have two firmware files which are required for
+operation, and are not currently included. These files can be
+obtained from Turtle Beach. See Documentation/sound/MultiSound for
+information on how to obtain this.
+.
+MSNDCLAS_IRQ 'MSND Classic IRQ' #5, 7, 9, 10, 11, 12
+
+MSNDCLAS_MEM 'MSND Classic memory address' #B0000, C8000, D0000, D8000, E0000, E8000
+
+MSNDCLAS_IO 'MSND Classic I/O' #210, 220, 230, 240, 250, 260, 290, 3E0
+
+SOUND_MSNDPIN 'Support for Turtle Beach MultiSound Pinnacle, Fiji' text
+Say M here if you have a Turtle Beach MultiSound Pinnacle or Fiji.
+See Documentation/sound/MultiSound for important information about
+this driver.
+.
+MSNDPIN_INIT_FILE 'Full pathname of PNDSPINI.BIN firmware file' text
+The MultiSound cards have two firmware files which are required for
+operation, and are not currently included. These files can be
+obtained from Turtle Beach. See Documentation/sound/MultiSound for
+information on how to obtain this.
+.
+MSNDPIN_PERM_FILE 'Full pathname of PNDSPERM.BIN firmware file' text
+The MultiSound cards have two firmware files which are required for
+operation, and are not currently included. These files can be
+obtained from Turtle Beach. See Documentation/sound/MultiSound for
+information on how to obtain this.
+.
+MSNDPIN_IRQ 'MSND Pinnacle IRQ' #5, 7, 9, 10, 11, 12
+
+MSNDPIN_MEM 'MSND Pinnacle memory' #B0000, C8000, D0000, D8000, E0000, E8000
+
+MSNDPIN_IO 'MSND Pinnacle I/O' #210, 220, 230, 240, 250, 260, 290, 3E0
+
+MSNDPIN_DIGITAL 'MSND Pinnacle has S/PDIF I/O' text
+If you have the S/PDIF daughter board for the Pinnacle or Fiji,
+answer Y here; otherwise, say N. If you have this, you will be able
+to play and record from the S/PDIF port (digital signal). See
+Documentation/sound/MultiSound for information on how to make use of
+this capability.
+.
+MSNDPIN_NONPNP 'MSND Pinnacle non-PnP Mode' text
+The Pinnacle and Fiji card resources can be configured either with
+PnP, or through a configuration port. Say Y here if your card is NOT
+in PnP mode. For the Pinnacle, configuration in non-PnP mode allows
+use of the IDE and joystick peripherals on the card as well; these
+do not show up when the card is in PnP mode. Specifying zero for any
+resource of a device will disable the device. If you are running the
+card in PnP mode, you must say N here and use isapnptools to
+configure the card's resources.
+.
+MSNDPIN_CFG 'MSND Pinnacle config port' text
+This is the port which the Pinnacle and Fiji uses to configure the
+card's resources when not in PnP mode. If your card is in PnP mode,
+then be sure to say N to the previous option, "MSND Pinnacle Non-PnP
+Mode".
+.
+MSNDPIN_MPU_IO 'MSND Pinnacle MPU I/O'
+
+MSNDPIN_MPU_IRQ 'MSND Pinnacle MPU IRQ'
+
+MSNDPIN_IDE_IO0 'MSND Pinnacle IDE I/O 0'
+
+MSNDPIN_IDE_IO1 'MSND Pinnacle IDE I/O 1'
+
+MSNDPIN_IDE_IRQ 'MSND Pinnacle IDE IRQ'
+
+MSNDPIN_JOYSTICK_IO 'MSND Pinnacle joystick I/O'
+
+MSND_FIFOSIZE 'MSND buffer size (kB)' text
+Configures the size of each audio buffer, in kilobytes, for
+recording and playing in the MultiSound drivers (both the Classic
+and Pinnacle). Larger values reduce the chance of data overruns at
+the expense of overall latency. If unsure, use the default.
+.
+SOUND_VIA82CXXX 'VIA 82Cxxx Audio Codec' text
+Say Y here to include support for the audio codec found on VIA
+82Cxxx-based chips. Typically these are built into a motherboard.
+
+DO NOT select Sound Blaster or Adlib with this driver, unless
+you have a Sound Blaster or Adlib card in addition to your VIA
+audio chip.
+.
+MIDI_VIA82CXXX 'VIA 82C686 MIDI' text
+ Answer Y to use the MIDI interface of the Via686. You may need to
+ enable this in the BIOS before it will work. This is for connection
+ to external MIDI hardware, and is not required for software playback
+ of MIDI files.
+.
+SOUND_OSS 'OSS sound modules' text
+OSS is the Open Sound System suite of sound card drivers. They make
+sound programming easier since they provide a common API. Say Y or M
+here (the module will be called sound.o) if you haven't found a
+driver for your sound card above, then pick your driver from the
+list below.
+.
+SOUND_TRACEINIT 'Verbose initialization'
+
+SOUND_DMAP 'Persistent DMA buffers' text
+Linux can often have problems allocating DMA buffers for ISA sound
+cards on machines with more than 16MB of RAM. This is because ISA
+DMA buffers must exist below the 16MB boundary and it is quite
+possible that a large enough free block in this region cannot be
+found after the machine has been running for a while. If you say Y
+here the DMA buffers (64Kb) will be allocated at boot time and kept
+until the shutdown. This option is only useful if you said Y to
+"OSS sound modules", above. If you said M to "OSS sound modules"
+then you can get the persistent DMA buffer functionality by passing
+the command-line argument "dmabuf=1" to the sound.o module.
+
+Say Y unless you have 16MB or less RAM or a PCI sound card.
+.
+SOUND_AD1816 'Support for AD1816(A) based cards' text
+Say M here if you have a sound card based on the Analog Devices
+AD1816(A) chip.
+
+If you compile the driver into the kernel, you have to add
+"ad1816=,,," to the kernel command line.
+.
+SOUND_SGALAXY 'Support for Aztech Sound Galaxy (non-PnP) cards' text
+This module initializes the older non Plug and Play sound galaxy
+cards from Aztech. It supports the Waverider Pro 32 - 3D and the
+Galaxy Washington 16.
+
+If you compile the driver into the kernel, you have to add
+"sgalaxy=,,,," to the kernel command
+line.
+.
+SOUND_ADLIB 'Adlib Cards'
+
+SOUND_ACI_MIXER 'ACI mixer (miroSOUND PCM1-pro/PCM12/PCM20 radio)' text
+ACI (Audio Command Interface) is a protocol used to communicate with
+the microcontroller on some sound cards produced by miro and Cardinal
+Technologies. The main function of the ACI is to control the mixer
+and to get a product identification.
+
+This Voxware ACI driver currently supports the ACI functions on the
+miroSOUND PCM1-pro, PCM12 and PCM20 radio. On the PCM20 radio, ACI
+also controls the radio tuner. This is supported in the video4linux
+miropcm20 driver (say M or Y here and go back to "Multimedia devices"
+-> "Radio Adapters").
+
+This driver is also available as a module and will be called aci.o.
+.
+SOUND_CS4232 'Support for Crystal CS4232 based (PnP) cards' text
+Say Y here if you have a card based on the Crystal CS4232 chip set,
+which uses its own Plug and Play protocol.
+
+If you compile the driver into the kernel, you have to add
+"cs4232=,,,,," to the kernel
+command line.
+
+See Documentation/sound/CS4232 for more information on configuring
+this card.
+.
+SOUND_SSCAPE 'Ensoniq SoundScape support' text
+Answer Y if you have a sound card based on the Ensoniq SoundScape
+chipset. Such cards are being manufactured at least by Ensoniq, Spea
+and Reveal (Reveal makes also other cards).
+
+If you compile the driver into the kernel, you have to add
+"sscape=,,,," to the kernel command
+line.
+.
+SOUND_GUS 'Gravis Ultrasound support' text
+Say Y here for any type of Gravis Ultrasound card, including
+the GUS or GUS MAX. See also Documentation/sound/ultrasound for
+more information on configuring this card with modules.
+
+If you compile the driver into the kernel, you have to add
+"gus=,,," to the kernel command line.
+.
+SOUND_GUS16 '16 bit sampling option of GUS (_NOT_ GUS MAX)'
+
+SOUND_GUSMAX 'GUS MAX support'
+
+SOUND_ICH 'Intel ICH audio support'
+
+SOUND_RME96XX 'RME Hammerfall (RME96XX) support'
+
+SOUND_VMIDI 'Loopback MIDI device support'
+
+SOUND_TRIX 'MediaTriX AudioTriX Pro support' text
+Answer Y if you have the AudioTriX Pro sound card manufactured
+by MediaTrix.
+.
+TRIX_HAVE_BOOT 'Have TRXPRO.HEX firmware file' text
+The MediaTrix AudioTrix Pro has an on-board microcontroller which
+needs to be initialized by downloading the code from the file
+TRXPRO.HEX in the DOS driver directory. If you don't have the
+TRXPRO.HEX file handy you may skip this step. However, the SB and
+MPU-401 modes of AudioTrix Pro will not work without this file!
+.
+TRIX_BOOT_FILE 'Full pathname of TRXPRO.HEX firmware file' text
+Enter the full pathname of your TRXPRO.HEX file, starting from /.
+.
+SOUND_MSS 'Microsoft Sound System support' text
+Again think carefully before answering Y to this question. It's safe
+to answer Y if you have the original Windows Sound System card made
+by Microsoft or Aztech SG 16 Pro (or NX16 Pro). Also you may say Y
+in case your card is NOT among these:
+
+ ATI Stereo F/X, AdLib, Audio Excell DSP16, Cardinal DSP16,
+ Ensoniq SoundScape (and compatibles made by Reveal and Spea),
+ Gravis Ultrasound, Gravis Ultrasound ACE, Gravis Ultrasound Max,
+ Gravis Ultrasound with 16 bit option, Logitech Sound Man 16,
+ Logitech SoundMan Games, Logitech SoundMan Wave, MAD16 Pro (OPTi
+ 82C929), Media Vision Jazz16, MediaTriX AudioTriX Pro, Microsoft
+ Windows Sound System (MSS/WSS), Mozart (OAK OTI-601), Orchid
+ SW32, Personal Sound System (PSS), Pro Audio Spectrum 16, Pro
+ Audio Studio 16, Pro Sonic 16, Roland MPU-401 MIDI interface,
+ Sound Blaster 1.0, Sound Blaster 16, Sound Blaster 16ASP, Sound
+ Blaster 2.0, Sound Blaster AWE32, Sound Blaster Pro, TI TM4000M
+ notebook, ThunderBoard, Turtle Beach Tropez, Yamaha FM
+ synthesizers (OPL2, OPL3 and OPL4), 6850 UART MIDI Interface.
+
+For cards having native support in VoxWare, consult the card
+specific instructions in drivers/sound/Readme.cards. Some drivers
+have their own MSS support and saying Y to this option will cause a
+conflict.
+
+If you compile the driver into the kernel, you have to add
+"ad1848=,,,[,]" to the kernel command
+line.
+.
+SOUND_MPU401 'MPU-401 support (NOT for SB16)' text
+Be careful with this question. The MPU401 interface is supported by
+all sound cards. However, some natively supported cards have their
+own driver for MPU401. Enabling this MPU401 option with these cards
+will cause a conflict. Also, enabling MPU401 on a system that
+doesn't really have a MPU401 could cause some trouble. If your card
+was in the list of supported cards, look at the card specific
+instructions in the drivers/sound/Readme.cards file. It's safe to
+answer Y if you have a true MPU401 MIDI interface card.
+
+If you compile the driver into the kernel, you have to add
+"mpu401=," to the kernel command line.
+.
+SOUND_NM256 'NeoMagic 256AV/256ZX sound chipsets' text
+Say M here to include audio support for the NeoMagic 256AV/256ZX
+chipsets. These are the audio chipsets found in the Sony
+Z505S/SX/DX, some Sony F-series, and the Dell Latitude CPi and CPt
+laptops. It includes support for an AC97-compatible mixer and an
+apparently proprietary sound engine.
+
+See Documentation/sound/NM256 for further information.
+.
+SOUND_MAD16 'Support for OPTi MAD16 and/or Mozart based cards' text
+Answer Y if your card has a Mozart (OAK OTI-601) or MAD16 (OPTi
+82C928 or 82C929 or 82C931) audio interface chip. These chips are
+quite common so it's possible that many no-name cards have one of
+them. In addition the MAD16 chip is used in some cards made by known
+manufacturers such as Turtle Beach (Tropez), Reveal (some models)
+and Diamond (latest ones). Note however that the Tropez sound cards
+have their own driver; if you have one of those, say N here and Y or
+M to "Full support for Turtle Beach WaveFront", below.
+
+If you compile the driver into the kernel, you have to add
+"mad16=,,,,," to the
+kernel command line.
+
+See also Documentation/sound/Opti and Documentation/sound/MAD16 for
+more information on setting these cards up as modules.
+.
+MAD16_OLDCARD 'Support MIDI in older MAD16 based cards (requires SB)'
+text
+Answer Y (or M) if you have an older card based on the C928 or
+Mozart chipset and you want to have MIDI support. If you enable this
+option you also need to enable support for Sound Blaster.
+.
+SOUND_PAS 'ProAudioSpectrum 16 support' text
+Answer Y only if you have a Pro Audio Spectrum 16, ProAudio Studio
+16 or Logitech SoundMan 16 sound card. Answer N if you have some
+other card made by Media Vision or Logitech since those are not
+PAS16 compatible. Please read Documentation/sound/PAS16.
+It is not necessary to add Sound Blaster support separately; it
+is included in PAS support.
+
+If you compile the driver into the kernel, you have to add
+"pas2=,,,,,,,
+to the kernel command line.
+.
+PAS_JOYSTICK 'Enable PAS16 joystick port'
+
+SOUND_PSS 'PSS (AD1848, ADSP-2115, ESC614) support' text
+Answer Y or M if you have an Orchid SW32, Cardinal DSP16, Beethoven
+ADSP-16 or some other card based on the PSS chipset (AD1848 codec +
+ADSP-2115 DSP chip + Echo ESC614 ASIC CHIP). For more information on
+how to compile it into the kernel or as a module see the file
+Documentation/sound/PSS.
+
+If you compile the driver into the kernel, you have to add
+"pss=,,,,," to the kernel
+command line.
+.
+PSS_MIXER 'Enable PSS mixer (Beethoven ADSP-16 and other compatible)'
+text
+Answer Y for Beethoven ADSP-16. You may try to say Y also for other
+cards if they have master volume, bass, treble, and you can't
+control it under Linux. If you answer N for Beethoven ADSP-16, you
+can't control master volume, bass, treble and synth volume.
+
+If you said M to "PSS support" above, you may enable or disable this
+PSS mixer with the module parameter pss_mixer. For more information
+see the file Documentation/sound/PSS.
+.
+PSS_HAVE_BOOT 'Have DSPxxx.LD firmware file' text
+If you have the DSPxxx.LD file or SYNTH.LD file for you card, say Y
+to include this file. Without this file the synth device (OPL) may
+not work.
+.
+PSS_BOOT_FILE 'Full pathname of DSPxxx.LD firmware file' text
+Enter the full pathname of your DSPxxx.LD file or SYNTH.LD file,
+starting from /.
+.
+SOUND_SB '100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support'
+text
+Answer Y if you have an original Sound Blaster card made by Creative
+Labs or a 100% hardware compatible clone (like the Thunderboard or
+SM Games). For an unknown card you may answer Y if the card claims
+to be Sound Blaster-compatible.
+
+Please read the file Documentation/sound/Soundblaster.
+
+You should also say Y here for cards based on the Avance Logic
+ALS-007 and ALS-1X0 chips (read Documentation/sound/ALS) and for cards
+based on ESS chips (read Documentation/sound/ESS1868 and
+Documentation/sound/ESS). If you have an SB AWE 32 or SB AWE 64, say
+Y here and also to "AWE32 synth" below and read
+Documentation/sound/INSTALL.awe. If you have an IBM Mwave card, say
+Y here and read Documentation/sound/mwave.
+
+If you compile the driver into the kernel and don't want to use
+isapnp, you have to add "sb=,,," to the kernel
+command line.
+
+You can say M here to compile this driver as a module; the module is
+called sb.o.
+.
+SOUND_AWE32_SYNTH 'SB32/AWE support' text
+Say Y here if you have a Sound Blaster SB32, AWE32-PnP, SB AWE64 or
+similar sound card. See Documentation/sound/README.awe,
+Documentation/sound/AWE32 and the Soundblaster-AWE mini-HOWTO,
+available from http://www.linuxdoc.org/docs.html#howto for more
+info.
+.
+SOUND_WAVEFRONT 'Full support for Turtle Beach WaveFront (Tropez Plus, Tropez, Maui) synth/sound cards'
+text
+Answer Y or M if you have a Tropez Plus, Tropez or Maui sound card
+and read the files Documentation/sound/Wavefront and
+Documentation/sound/Tropez+.
+.
+SOUND_MAUI 'Support for Turtle Beach Wave Front (Maui, Tropez) synthesizers'
+text
+Say Y here if you have a Turtle Beach Wave Front, Maui, or Tropez
+sound card.
+
+If you compile the driver into the kernel, you have to add
+"maui=," to the kernel command line.
+.
+MAUI_HAVE_BOOT 'Have OSWF.MOT firmware file' text
+Turtle Beach Maui and Tropez sound cards have a microcontroller
+which needs to be initialized prior to use. OSWF.MOT is a file
+distributed with the card's DOS/Windows drivers. Answer Y if you
+have this file.
+.
+MAUI_BOOT_FILE 'Full pathname of OSWF.MOT firmware file' text
+Enter the full pathname of your OSWF.MOT file, starting from /.
+.
+SOUND_YM3812 'Yamaha FM synthesizer (YM3812/OPL-3) support' text
+Answer Y if your card has a FM chip made by Yamaha (OPL2/OPL3/OPL4).
+Answering Y is usually a safe and recommended choice, however some
+cards may have software (TSR) FM emulation. Enabling FM support with
+these cards may cause trouble (I don't currently know of any such
+cards, however).
+Please read the file Documentation/sound/OPL3 if your card has an
+OPL3 chip.
+
+If you compile the driver into the kernel, you have to add
+"opl3=" to the kernel command line.
+
+If unsure, say Y.
+.
+SOUND_OPL3SA1 'Yamaha OPL3-SA1 audio controller' text
+Say Y or M if you have a Yamaha OPL3-SA1 sound chip, which is
+usually built into motherboards. Read Documentation/sound/OPL3-SA
+for details.
+
+If you compile the driver into the kernel, you have to add
+"opl3sa=,,,,," to the kernel
+command line.
+.
+SOUND_OPL3SA2 'Support for Yamaha OPL3-SA2 and SA3 based PnP cards'
+text
+Say Y or M if you have a card based on one of these Yamaha
+sound chipsets or the "SAx", which is actually a SA3. Read
+Documentation/sound/OPL3-SA2 for more information on configuring
+these cards.
+
+If you compile the driver into the kernel and do not also
+configure in the optional ISA PnP support, you will have to add
+"opl3sa2=,,,,," to the kernel
+command line.
+.
+SOUND_YMFPCI 'Yamaha YMF7xx PCI audio (native mode)'
+
+SOUND_YMFPCI_LEGACY 'Yamaha PCI legacy ports support'
+
+SOUND_UART6850 '6850 UART support' text
+This option enables support for MIDI interfaces based on the 6850
+UART chip. This interface is rarely found on sound cards. It's safe
+to answer N to this question.
+
+If you compile the driver into the kernel, you have to add
+"uart6850=," to the kernel command line.
+.
+SOUND_AEDSP16 'Gallant Audio Cards (SC-6000 and SC-6600 based)' text
+Answer Y if you have a Gallant's Audio Excel DSP 16 card. This
+driver supports Audio Excel DSP 16 but not the III nor PnP versions
+of this card.
+
+The Gallant's Audio Excel DSP 16 card can emulate either an SBPro or
+a Microsoft Sound System card, so you should have said Y to either
+"100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support"
+or "Microsoft Sound System support", above, and you need to answer
+the "MSS emulation" and "SBPro emulation" questions below
+accordingly. You should say Y to one and only one of these two
+questions.
+
+Read the drivers/sound/lowlevel/README.aedsp16 file and the head of
+drivers/sound/lowlevel/aedsp16.c as well as
+Documentation/sound/AudioExcelDSP16 to get more information about
+this driver and its configuration.
+.
+SC6600 'SC-6600 based audio cards (new Audio Excel DSP 16)' text
+The SC6600 is the new version of DSP mounted on the Audio Excel DSP
+16 cards. Find in the manual the FCC ID of your audio card and
+answer Y if you have an SC6600 DSP.
+.
+SC6600_JOY 'SC-6600 Joystick Interface' text
+Say Y here in order to use the joystick interface of the Audio Excel
+DSP 16 card.
+.
+SC6600_CDROM 'SC-6600 CD-ROM Interface (4=None, 3=IDE, 1=Panasonic, 0=Sony)'
+text
+This is used to activate the CDROM interface of the Audio Excel
+DSP 16 card. Enter: 0 for Sony, 1 for Panasonic, 2 for IDE, 4 for no
+CDROM present.
+.
+SC6600_CDROMBASE 'SC-6600 CD-ROM Interface I/O Address'
+
+AEDSP16_SBPRO 'Audio Excel DSP 16 (SBPro emulation)' text
+Answer Y if you want your audio card to emulate Sound Blaster Pro.
+You should then say Y to "100% Sound Blaster compatibles
+(SB16/32/64, ESS, Jazz16) support" and N to "Audio Excel DSP 16 (MSS
+emulation)".
+
+If you compile the driver into the kernel, you have to add
+"aedsp16=,,,,," to the kernel
+command line.
+.
+AEDSP16_MSS 'Audio Excel DSP 16 (MSS emulation)' text
+Answer Y if you want your audio card to emulate Microsoft Sound
+System. You should then say Y to "Microsoft Sound System support"
+and say N to "Audio Excel DSP 16 (SBPro emulation)".
+.
+AEDSP16_MPU401 'Audio Excel DSP 16 (MPU401 emulation)' text
+Answer Y if you want your audio card to emulate the MPU-401 midi
+interface. You should then also say Y to "MPU-401 support".
+
+Note that the I/O base for MPU-401 support of aedsp16 is the same
+you have selected for "MPU-401 support". If you are using this
+driver as a module you have to specify the MPU I/O base address with
+the parameter 'mpu_base=0xNNN'.
+.
+SOUND_VIDC 'VIDC 16-bit sound'
+
+SOUND_WAVEARTIST 'Rockwell WaveArtist' text
+Say Y here to include support for the Rockwell WaveArtist sound
+system. This driver is mainly for the NetWinder.
+.
+SOUND_TVMIXER 'TV card (bt848) mixer support'
+
+#
+# CD-ROM driver configuration
+AZTCD 'Aztech/Orchid/Okano/Wearnes/TXC/CyDROM CD-ROM support' text
+This is your driver if you have an Aztech CDA268-01A, Orchid
+CD-3110, Okano or Wearnes CDD110, Conrad TXC, or CyCDROM CR520 or
+CR540 CDROM drive. This driver -- just like all these CDROM drivers
+-- is NOT for CDROM drives with IDE/ATAPI interfaces, such as Aztech
+CDA269-031SE. Please read the file Documentation/cdrom/aztcd.
+
+If you say Y here, you should also say Y or M to "ISO 9660 CDROM
+file system support" below, because that's the file system used on
+CDROMs.
+
+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 aztcd.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+GSCD 'Goldstar R420 CD-ROM support' text
+If this is your CDROM drive, say Y here. As described in the file
+Documentation/cdrom/gscd, you might have to change a setting
+in the file drivers/cdrom/gscd.h before compiling the
+kernel. Please read the file Documentation/cdrom/gscd.
+
+If you say Y here, you should also say Y or M to "ISO 9660 CDROM
+file system support" below, because that's the file system used on
+CDROMs.
+
+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 gscd.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SBPCD 'Matsushita/Panasonic/Creative, Longshine, TEAC CD-ROM support'
+text
+This driver supports most of the drives which use the Panasonic or
+Sound Blaster interface. Please read the file
+Documentation/cdrom/sbpcd.
+
+The Matsushita CR-521, CR-522, CR-523, CR-562, CR-563 drives
+(sometimes labeled "Creative"), the Creative Labs CD200, the
+Longshine LCS-7260, the "IBM External ISA CDROM" (in fact a CR-56x
+model), the TEAC CD-55A fall under this category. Some other
+"electrically compatible" drives (Vertos, Genoa, some Funai models)
+are currently not supported; for the Sanyo H94A drive currently a
+separate driver (asked later) is responsible. Most drives have a
+uniquely shaped faceplate, with a caddyless motorized drawer, but
+without external brand markings. The older CR-52x drives have a
+caddy and manual loading/eject, but still no external markings. The
+driver is able to do an extended auto-probing for interface
+addresses and drive types; this can help to find facts in cases you
+are not sure, but can consume some time during the boot process if
+none of the supported drives gets found. Once your drive got found,
+you should enter the reported parameters into drivers/cdrom/sbpcd.h
+and set "DISTRIBUTION 0" there.
+
+This driver can support up to four CDROM controller cards, and each
+card can support up to four CDROM drives; if you say Y here, you
+will be asked how many controller cards you have. If compiled as a
+module, only one controller card (but with up to four drives) is
+usable.
+
+If you say Y here, you should also say Y or M to "ISO 9660 CDROM
+file system support" below, because that's the file system used on
+CDROMs.
+
+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 sbpcd.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SBPCD2 'Matsushita/Panasonic, ... second CD-ROM controller support'
+text
+Say Y here only if you have two CDROM controller cards of this type
+(usually only if you have more than four drives). You should enter
+the parameters for the second, third and fourth interface card into
+include/linux/sbpcd.h before compiling the new kernel. Read
+the file Documentation/cdrom/sbpcd.
+.
+SBPCD3 'Matsushita/Panasonic, ... third CD-ROM controller support'
+
+SBPCD4 'Matsushita/Panasonic, ... fourth CD-ROM controller support'
+
+MCD 'Standard Mitsumi [no XA/Multisession] CD-ROM support' text
+This is the older of the two drivers for the older Mitsumi models
+LU-005, FX-001 and FX-001D. This is not the right driver for the
+FX-001DE and the triple or quad speed models (all these are
+IDE/ATAPI models). Please also the file Documentation/cdrom/mcd.
+
+With the old LU-005 model, the whole drive chassis slides out for cd
+insertion. The FX-xxx models use a motorized tray type mechanism.
+Note that this driver does not support XA or MultiSession CDs
+(PhotoCDs). There is a new driver (next question) which can do
+this. If you want that one, say N here.
+
+If you say Y here, you should also say Y or M to "ISO 9660 CDROM
+file system support" below, because that's the file system used on
+CDROMs.
+
+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 mcd.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+MCD_IRQ 'IRQ channel for Mitsumi CD-ROM' text
+This allows you to specify the default value of the IRQ used by the
+driver. This setting can be overridden by passing the "mcd="
+parameter to the kernel at boot time (or at module load time if you
+said M to "Standard Mitsumi CDROM support").
+.
+MCD_BASE 'I/O base address for Mitsumi CD-ROM' text
+This allows you to specify the default value of the I/O base address
+used by the driver. This setting can be overridden by passing the
+"mcd=" parameter to the kernel at boot time (or at module load time
+if you said M to "Standard Mitsumi CDROM support").
+.
+MCDX 'Mitsumi [XA/MultiSession] CD-ROM support' text
+Use this driver if you want to be able to read XA or MultiSession
+CDs (PhotoCDs) as well as ordinary CDs with your Mitsumi LU-005,
+FX-001 or FX-001D CDROM drive. In addition, this driver uses much
+less kernel memory than the old one, if that is a concern. This
+driver is able to support more than one drive, but each drive needs
+a separate interface card. Please read the file
+Documentation/cdrom/mcdx.
+
+If you say Y here, you should also say Y or M to "ISO 9660 CDROM
+file system support" below, because that's the file system used on
+CDROMs.
+
+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 mcdx.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+OPTCD 'Optics Storage DOLPHIN 8000AT CD-ROM support' text
+This is the driver for the 'DOLPHIN' drive with a 34-pin Sony
+compatible interface. It also works with the Lasermate CR328A. If
+you have one of those, say Y. This driver does not work for the
+Optics Storage 8001 drive; use the IDE-ATAPI CDROM driver for that
+one. Please read the file Documentation/cdrom/optcd.
+
+If you say Y here, you should also say Y or M to "ISO 9660 CDROM
+file system support" below, because that's the file system used on
+CDROMs.
+
+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 optcd.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+CM206 'Philips/LMS CM206 CD-ROM support' text
+If you have a Philips/LMS CDROM drive cm206 in combination with a
+cm260 host adapter card, say Y here. Please also read the file
+Documentation/cdrom/cm206.
+
+If you say Y here, you should also say Y or M to "ISO 9660 CDROM
+file system support" below, because that's the file system used on
+CDROMs.
+
+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 cm206.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+SJCD 'Sanyo CDR-H94A CD-ROM support' text
+If this is your CDROM drive, say Y here and read the file
+Documentation/cdrom/sjcd. You should then also say Y or M to
+"ISO 9660 CDROM file system support" below, because that's the
+file system used on CDROMs.
+
+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 sjcd.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+ISP16_CDI 'ISP16/MAD16/Mozart soft configurable cdrom interface support'
+text
+These are sound cards with built-in cdrom interfaces using the OPTi
+82C928 or 82C929 chips. Say Y here to have them detected and
+possibly configured at boot time. In addition, You'll have to say Y
+to a driver for the particular cdrom drive you have attached to the
+card. Read Documentation/cdrom/isp16 for details.
+
+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 isp16.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+CDU31A 'Sony CDU31A/CDU33A CD-ROM support' text
+These CDROM drives have a spring-pop-out caddyless drawer, and a
+rectangular green LED centered beneath it. NOTE: these CDROM drives
+will not be auto detected by the kernel at boot time; you have to
+provide the interface address as an option to the kernel at boot
+time as described in Documentation/cdrom/cdu31a or fill in your
+parameters into drivers/cdrom/cdu31a.c. Try "man bootparam" or
+see the documentation of your boot loader (lilo or loadlin) about
+how to pass options to the kernel.
+
+If you say Y here, you should also say Y or M to "ISO 9660 CDROM
+file system support" below, because that's the file system used on
+CDROMs.
+
+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 cdu31a.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+CDU535 'Sony CDU535 CD-ROM support' text
+This is the driver for the older Sony CDU-535 and CDU-531 CDROM
+drives. Please read the file Documentation/cdrom/sonycd535.
+
+If you say Y here, you should also say Y or M to "ISO 9660 CDROM
+file system support" below, because that's the file system used on
+CDROMs.
+
+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 sonycd535.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+#
+# ISDN device configuration
+ISDN 'ISDN support' text
+ISDN ("Integrated Services Digital Networks", called RNIS in France)
+is a special type of fully digital telephone service; it's mostly
+used to connect to your Internet service provider (with SLIP or
+PPP). The main advantage is that the speed is higher than ordinary
+modem/telephone connections, and that you can have voice
+conversations while downloading stuff. It only works if your
+computer is equipped with an ISDN card and both you and your service
+provider purchased an ISDN line from the phone company. For details,
+read http://alumni.caltech.edu/~dank/isdn/ on the WWW.
+
+This driver allows you to use an ISDN-card for networking
+connections and as dialin/out device. The isdn-tty's have a built in
+AT-compatible modem emulator. Network devices support autodial,
+channel-bundling, callback and caller-authentication without having
+a daemon running. A reduced T.70 protocol is supported with tty's
+suitable for German BTX. On D-Channel, the protocols EDSS1
+(Euro-ISDN) and 1TR6 (German style) are supported. See
+Documentation/isdn/README for more information.
+
+If you want to compile the ISDN code 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 isdn.o. If unsure, say N.
+.
+ISDN_PPP 'Support synchronous PPP' text
+Over digital connections such as ISDN, there is no need to
+synchronize sender and recipient's clocks with start and stop bits
+as is done over analog telephone lines. Instead, one can use
+"synchronous PPP". Saying Y here will include this protocol. This
+protocol is used by Cisco and Sun for example. So you want to say Y
+here if the other end of your ISDN connection supports it. You will
+need a special version of pppd (called ipppd) for using this
+feature. See Documentation/isdn/README.syncppp and
+Documentation/isdn/syncPPP.FAQ for more information.
+.
+ISDN_PPP_VJ 'Use VJ-compression with synchronous PPP' text
+This enables Van Jacobson header compression for synchronous PPP.
+.
+ISDN_MPP 'Support generic MP (RFC 1717)' text
+With synchronous PPP enabled, it is possible to increase throughput
+by bundling several ISDN-connections, using this protocol. See
+Documentation/isdn/README.syncppp for more information.
+.
+ISDN_PPP_BSDCOMP 'Support BSD compression' text
+Support for the BSD-Compress compression method for PPP, which uses
+the LZW compression method to compress each PPP packet before it is
+sent over the wire. The machine at the other end of the PPP link
+(usually your ISP) has to support the BSD-Compress compression
+method as well for this to be useful. Even if they don't support it,
+it is safe to say Y here.
+.
+ISDN_AUDIO 'Support audio via ISDN' text
+If you say Y here, the modem-emulator will support a subset of the
+EIA Class 8 Voice commands. Using a getty with voice-support
+(mgetty+sendfax by gert@greenie.muc.de with an extension, available
+with the ISDN utility package for example), you will be able to use
+your Linux box as an ISDN-answering machine. Of course, this must be
+supported by the lowlevel driver also. Currently, the HiSax driver
+is the only voice-supporting driver. See
+Documentation/isdn/README.audio for more information.
+.
+ISDN_TTY_FAX 'Support AT-Fax Class 1 and 2 commands' text
+If you say Y here, the modem-emulator will support a subset of the
+Fax Class 1 and 2 commands. Using a getty with fax-support
+(mgetty+sendfax, hylafax), you will be able to use your Linux box as
+an ISDN-fax-machine. This must be supported by the lowlevel driver
+also. See Documentation/isdn/README.fax for more information.
+.
+ISDN_X25 'X.25 PLP on top of ISDN' text
+This feature provides the X.25 protocol over ISDN connections.
+See Documentation/isdn/README.x25 for more information
+if you are thinking about using this.
+.
+ISDN_DRV_LOOP 'isdnloop support' text
+This driver provides a virtual ISDN card. Its primary purpose is
+testing of linklevel features or configuration without getting
+charged by your service-provider for lots of phone calls.
+You need will need the loopctrl utility from the latest isdn4k-utils
+package to set up this driver.
+.
+ISDN_DIVERSION 'ISDN diversion services support' text
+This option allows you to use some supplementary diversion
+services in conjunction with the HiSax driver on an EURO/DSS1
+line.
+
+Supported options are CD (call deflection), CFU (Call forward
+unconditional), CFB (Call forward when busy) and CFNR (call forward
+not reachable). Additionally the actual CFU, CFB and CFNR state may
+be interrogated.
+
+The use of CFU, CFB, CFNR and interrogation may be limited to some
+countries. The keypad protocol is still not implemented. CD should
+work in all countries if the service has been subscribed to.
+
+Please read the file Documentation/isdn/README.diversion.
+.
+ISDN_DRV_HISAX 'HiSax SiemensChipSet driver support' text
+This is a driver supporting the Siemens chipset on various
+ISDN-cards (like AVM A1, Elsa ISDN cards, Teles S0-16.0, Teles
+S0-16.3, Teles S0-8, Teles/Creatix PnP, ITK micro ix1 and many
+compatibles).
+
+HiSax is just the name of this driver, not the name of any hardware.
+
+If you have a card with such a chipset, you should say Y here and
+also to the configuration option of the driver for your particular
+card, below.
+
+If you want to compile this 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 hisax.o. See Documentation/isdn/README.HiSax for more
+information on using this driver.
+.
+HISAX_EURO 'HiSax Support for EURO/DSS1' text
+Say Y or N according to the D-channel protocol which your local
+telephone service company provides.
+
+The call control protocol E-DSS1 is used in most European countries.
+If unsure, say yes.
+.
+DE_AOC 'Support for German chargeinfo' text
+If you want that the HiSax hardware driver sends messages to the
+upper level of the isdn code on each AOCD (Advice Of Charge, During
+the call -- transmission of the fee information during a call) and
+on each AOCE (Advice Of Charge, at the End of the call --
+transmission of fee information at the end of the call), say Y here.
+This works only in Germany.
+.
+HISAX_NO_SENDCOMPLETE 'Disable sending complete' text
+If you have trouble with some ugly exchanges or you live in
+Australia select this option.
+.
+HISAX_NO_LLC 'Disable sending low layer compatibility' text
+If you have trouble with some ugly exchanges try to select this
+option.
+.
+HISAX_NO_KEYPAD 'Disable keypad protocol option' text
+If you like to send special dial strings including * or # without
+using the keypad protocol, select this option.
+.
+HISAX_1TR6 'HiSax Support for German 1TR6' text
+Say Y or N according to the D-channel protocol which your local
+telephone service company provides.
+
+1TR6 is an old call control protocol which was used in Germany
+before E-DSS1 was established. Nowadays, all new lines in Germany
+use E-DSS1.
+.
+HISAX_NI1 'HiSax Support for US NI1' text
+Enable this if you like to use ISDN in US on a NI1 basic rate interface.
+.
+HISAX_16_0 'Teles 16.0/8.0' text
+This enables HiSax support for the Teles ISDN-cards S0-16.0, S0-8
+and many compatibles.
+
+See Documentation/isdn/README.HiSax on how to configure it using the
+different cards, a different D-channel protocol, or non-standard
+IRQ/port/shmem settings.
+.
+HISAX_16_3 'Teles 16.3 or PNP or PCMCIA' text
+This enables HiSax support for the Teles ISDN-cards S0-16.3 the
+Teles/Creatix PnP and the Teles PCMCIA.
+
+See Documentation/isdn/README.HiSax on how to configure it using the
+different cards, a different D-channel protocol, or non-standard
+IRQ/port settings.
+.
+HISAX_TELESPCI 'Teles PCI' text
+This enables HiSax support for the Teles PCI.
+See Documentation/isdn/README.HiSax on how to configure it.
+.
+HISAX_S0BOX 'Teles S0Box' text
+This enables HiSax support for the Teles/Creatix parallel port
+S0BOX. See Documentation/isdn/README.HiSax on how to configure it.
+.
+HISAX_AVM_A1 'AVM A1 (Fritz)' text
+This enables HiSax support for the AVM A1 (aka "Fritz").
+
+See Documentation/isdn/README.HiSax on how to configure it using the
+different cards, a different D-channel protocol, or non-standard
+IRQ/port settings.
+.
+HISAX_FRITZPCI 'AVM PnP/PCI (Fritz!PnP/PCI)' text
+This enables HiSax support for the AVM "Fritz!PnP" and "Fritz!PCI".
+See Documentation/isdn/README.HiSax on how to configure it.
+.
+HISAX_AVM_A1_PCMCIA 'AVM A1 PCMCIA (Fritz)' text
+This enables HiSax support for the AVM A1 "Fritz!PCMCIA").
+See Documentation/isdn/README.HiSax on how to configure it.
+.
+HISAX_ELSA 'Elsa cards' text
+This enables HiSax support for the Elsa Mircolink ISA cards, for the
+Elsa Quickstep series cards and Elsa PCMCIA.
+
+See Documentation/isdn/README.HiSax on how to configure it using the
+different cards, a different D-channel protocol, or non-standard
+IRQ/port settings.
+.
+HISAX_IX1MICROR2 'ITK ix1-micro Revision 2' text
+This enables HiSax support for the ITK ix1-micro Revision 2 card.
+
+See Documentation/isdn/README.HiSax on how to configure it using the
+different cards, a different D-channel protocol, or non-standard
+IRQ/port settings.
+.
+HISAX_DIEHLDIVA 'Eicon.Diehl Diva cards' text
+This enables HiSax support for the Eicon.Diehl Diva none PRO
+versions passive ISDN cards.
+
+See Documentation/isdn/README.HiSax on how to configure it using the
+different cards, a different D-channel protocol, or non-standard
+IRQ/port settings.
+.
+HISAX_ASUSCOM 'ASUSCOM ISA cards' text
+This enables HiSax support for the AsusCom and their OEM versions
+passive ISDN ISA cards.
+
+See Documentation/isdn/README.HiSax on how to configure it using the
+different cards, a different D-channel protocol, or non-standard
+IRQ/port settings.
+.
+HISAX_TELEINT 'TELEINT cards' text
+This enables HiSax support for the TELEINT SA1 semiactiv ISDN card.
+
+See Documentation/isdn/README.HiSax on how to configure it using the
+different cards, a different D-channel protocol, or non-standard
+IRQ/port settings.
+.
+HISAX_HFCS 'HFC-S based cards' text
+This enables HiSax support for the HFC-S 2BDS0 based cards, like
+teles 16.3c.
+
+See Documentation/isdn/README.HiSax on how to configure it using the
+different cards, a different D-channel protocol, or non-standard
+IRQ/port settings.
+.
+HISAX_SEDLBAUER 'Sedlbauer cards' text
+This enables HiSax support for the Sedlbauer passive ISDN cards.
+
+See Documentation/isdn/README.HiSax on how to configure it using the
+different cards, a different D-channel protocol, or non-standard
+IRQ/port settings.
+.
+HISAX_ELSA_CS 'ELSA PCMCIA MicroLink cards'
+
+HISAX_SPORTSTER 'USR Sportster internal TA' text
+This enables HiSax support for the USR Sportster internal TA card.
+
+See Documentation/isdn/README.HiSax on how to configure it using a
+different D-channel protocol, or non-standard IRQ/port settings.
+.
+HISAX_MIC 'MIC card' text
+This enables HiSax support for the ITH MIC card.
+
+See Documentation/isdn/README.HiSax on how to configure it using a
+different D-channel protocol, or non-standard IRQ/port settings.
+.
+HISAX_NETJET 'NETjet card' text
+This enables HiSax support for the NetJet from Traverse
+Technologies.
+
+See Documentation/isdn/README.HiSax on how to configure it using a
+different D-channel protocol, or non-standard IRQ/port settings.
+.
+HISAX_NETJET_U 'NETspider U card' text
+This enables HiSax support for the Netspider U interface ISDN card from
+Traverse Technologies.
+See Documentation/isdn/README.HiSax on how to configure it using a
+different D-channel protocol, or non-standard IRQ/port settings.
+.
+HISAX_NICCY 'Niccy PnP/PCI card' text
+This enables HiSax support for the Dr. Neuhaus Niccy PnP or PCI.
+
+See Documentation/isdn/README.HiSax on how to configure it using a
+different D-channel protocol, or non-standard IRQ/port settings.
+.
+HISAX_ISURF 'Siemens I-Surf card' text
+This enables HiSax support for the Siemens I-Talk/I-Surf card with
+ISAR chip.
+See Documentation/isdn/README.HiSax on how to configure it using a
+different D-channel protocol, or non-standard IRQ/port settings.
+.
+HISAX_HSTSAPHIR 'HST Saphir card' text
+This enables HiSax support for the HST Saphir card.
+
+See Documentation/isdn/README.HiSax on how to configure it using a
+different D-channel protocol, or non-standard IRQ/port settings.
+.
+HISAX_BKM_A4T 'Telekom A4T card' text
+This enables HiSax support for the Telekom A4T card.
+
+See Documentation/isdn/README.HiSax on how to configure it using a
+different D-channel protocol, or non-standard IRQ/port settings.
+.
+HISAX_SCT_QUADRO 'Scitel Quadro card' text
+This enables HiSax support for the Scitel Quadro card.
+
+See Documentation/isdn/README.HiSax on how to configure it using a
+different D-channel protocol, or non-standard IRQ/port settings.
+.
+HISAX_GAZEL 'Gazel cards' text
+This enables HiSax support for the Gazel cards.
+
+See Documentation/isdn/README.HiSax on how to configure it using a
+different D-channel protocol, or non-standard IRQ/port settings.
+.
+HISAX_HFC_PCI 'HFC PCI-Bus cards' text
+This enables HiSax support for the HFC-S PCI 2BDS0 based cards.
+
+For more informations see under Documentation/isdn/README.hfc-pci.
+.
+HISAX_W6692 'Winbond W6692 based cards' text
+This enables HiSax support for Winbond W6692 based PCI ISDN cards.
+
+See Documentation/isdn/README.HiSax on how to configure it using a
+different D-channel protocol, or non-standard IRQ/port settings.
+.
+HISAX_HFC_SX 'HFC-S+, HFC-SP, HFC-PCMCIA cards' text
+This enables HiSax support for the HFC-S+, HFC-SP and HFC-PCMCIA
+cards. This code is not finished yet.
+.
+#HISAX_TESTEMU 'TESTEMULATOR'
+HISAX_AMD7930 'Am7930' text
+This enables HiSax support for the AMD7930 chips on some SPARCs.
+This code is not finished yet.
+.
+HISAX_ST5481 'ST5481 USB ISDN modem'
+
+HISAX_DEBUG 'HiSax debugging'
+
+HISAX_SEDLBAUER_CS 'Sedlbauer PCMCIA cards'
+
+ISDN_DRV_ICN 'ICN 2B and 4B support' text
+This enables support for two kinds of ISDN-cards made by a German
+company called ICN. 2B is the standard version for a single ISDN
+line with two B-channels, 4B supports two ISDN lines. For running
+this card, additional firmware is necessary, which has to be
+downloaded into the card using a utility which is distributed
+separately. See Documentation/isdn/README and README.icn for more
+information.
+
+If you want to compile this 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 icn.o.
+.
+ISDN_DRV_PCBIT 'PCBIT-D support' text
+This enables support for the PCBIT ISDN-card. This card is
+manufactured in Portugal by Octal. For running this card, additional
+firmware is necessary, which has to be downloaded into the card
+using a utility which is distributed separately. See
+Documentation/isdn/README and Documentation/isdn/README.pcbit for
+more information.
+
+If you want to compile this 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 pcbit.o.
+.
+ISDN_DRV_SC 'Spellcaster support' text
+This enables support for the Spellcaster BRI ISDN boards. This
+driver currently builds only in a modularized version ( = code which
+can be inserted in and removed from the running kernel whenever you
+want, details in Documentation/modules.txt); the module will be
+called sc.o. See Documentation/isdn/README.sc and
+http://www.spellcast.com for more information.
+.
+ISDN_DRV_ACT2000 'IBM Active 2000 support' text
+Say Y here if you have an IBM Active 2000 ISDN card. In order to use
+this card, additional firmware is necessary, which has to be loaded
+into the card using a utility which is part of the latest
+isdn4k-utils package. Please read the file
+Documentation/isdn/README.act2000 for more information.
+.
+ISDN_DRV_EICON 'Eicon active card support' text
+Say Y here if you have an Eicon active ISDN card. In order to use
+this card, additional firmware is necessary, which has to be loaded
+into the card using the eiconctrl utility which is part of the
+latest isdn4k-utils package. Please read the file
+Documentation/isdn/README.eicon for more information.
+.
+ISDN_DRV_EICON_OLD 'Legacy Eicon driver'
+
+ISDN_DRV_EICON_DIVAS 'Eicon driver type standalone'
+
+ISDN_DRV_EICON_ISA 'Eicon old-type (S,SX,SCOM,Quadro,S2M) card support'
+text
+Say Y here if you have an old-type Eicon active ISDN card. In order
+to use this card, additional firmware is necessary, which has to be
+loaded into the card using the eiconctrl utility which is part of
+the latest isdn4k-utils package. Please read the file
+Documentation/isdn/README.eicon for more information.
+.
+ISDN_DRV_EICON_PCI 'Eicon PCI DIVA Server BRI/PRI/4BRI support' text
+Say Y here if you have an Eicon Diva Server (BRI/PRI/4BRI) ISDN card.
+Please read Documentation/isdn/README.eicon for more information.
+.
+ISDN_DRV_TPAM 'Auvertech TurboPAM support' text
+This enables support for the Auvertech TurboPAM ISDN-card.
+For running this card, additional firmware is necessary, which has
+to be downloaded into the card using a utility which is distributed
+separately from the Auvertech's web site: http://www.auvertech.fr.
+
+Please redirect all support questions to support@auvertech.fr.
+
+If you want to compile this 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 tpam.o.
+.
+ISDN_CAPI 'CAPI2.0 support' text
+This provides the CAPI (Common ISDN Application Programming
+Interface, a standard making it easy for programs to access ISDN
+hardware, see http://www.capi.org/ . This is needed for AVM's set of
+active ISDN controllers like B1, T1, M1.
+
+This code is also available as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+The modules will be called capi.o and kernelcapi.o. If you want to
+compile it as a module, say M here and read
+Documentation/modules.txt.
+.
+ISDN_CAPI_CAPI20 'CAPI2.0 /dev/capi20 support'
+
+ISDN_CAPI_MIDDLEWARE 'CAPI2.0 Middleware support'
+
+ISDN_CAPI_CAPIFS 'CAPI2.0 filesystem support'
+
+ISDN_CAPI_CAPIDRV 'CAPI2.0 capidrv interface support'
+
+ISDN_DRV_AVMB1_B1ISA 'AVM B1 ISA support' text
+Enable support for the ISA version of the AVM B1 card.
+.
+ISDN_DRV_AVMB1_B1PCI 'AVM B1 PCI support' text
+Enable support for the PCI version of the AVM B1 card.
+.
+ISDN_DRV_AVMB1_B1PCIV4 'AVM B1 PCI V4 support' text
+Enable support for the V4 version of AVM B1 PCI card.
+.
+ISDN_DRV_AVMB1_T1ISA 'AVM T1/T1-B ISA support' text
+Enable support for the AVM T1 T1B card.
+Note: This is a PRI card and handle 30 B-channels.
+.
+ISDN_DRV_AVMB1_B1PCMCIA 'AVM B1/M1/M2 PCMCIA support' text
+Enable support for the PCMCIA version of the AVM B1 card.
+.
+ISDN_DRV_AVMB1_AVM_CS 'AVM B1/M1/M2 PCMCIA cs module'
+
+ISDN_DRV_AVMB1_T1PCI 'AVM T1/T1-B PCI support' text
+Enable support for the AVM T1 T1B card.
+Note: This is a PRI card and handle 30 B-channels.
+.
+ISDN_DRV_AVMB1_C4 'AVM C4/C2 support' text
+Enable support for the AVM C4/C2 PCI cards.
+These cards handle 4/2 BRI ISDN lines (8/4 channels).
+.
+ISDN_DRV_AVMB1_VERBOSE_REASON 'Verbose reason code reporting (kernel size +=7K)'
+text
+If you say Y here, the AVM B1 driver will give verbose reasons for
+disconnecting. This will increase the size of the kernel by 7 KB. If
+unsure, say Y.
+.
+HYSDN 'Hypercope HYSDN cards (Champ, Ergo, Metro) support (module)'
+text
+Say Y here if you have one of Hypercope's active PCI ISDN cards
+Champ, Ergo and Metro. You will then get a module called hysdn.o.
+Please read the file Documentation/isdn/README.hysdn for more
+information.
+.
+HYSDN_CAPI 'HYSDN CAPI 2.0 support' text
+Say Y here if you like to use Hypercope's CAPI 2.0 interface
+.
+#
+# Sun-specific hacks
+SUN_OPENPROMIO '/dev/openprom device support' text
+This driver provides user programs with an interface to the SPARC
+PROM device tree. The driver implements a SunOS-compatible
+interface and a NetBSD-compatible interface.
+
+If you want to compile this as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want),
+say M and read Documentation/modules.txt. If unsure, say Y.
+.
+SUN_MOSTEK_RTC 'Mostek real time clock support' text
+The Mostek RTC chip is used on all known Sun computers except
+some JavaStations. For a JavaStation you need to say Y both here
+and to "Enhanced Real Time Clock Support".
+
+Say Y here unless you are building a special purpose kernel.
+.
+SAB82532 'Siemens SAB82532 serial support' text
+This driver supports the serial ports on newer (PCI) Ultra systems.
+Say Y if you want to be able to use your serial ports.
+.
+OBP_FLASH 'OBP Flash Device support' text
+The OpenBoot PROM on Ultra systems is flashable. If you want to be
+able to upgrade the OBP firmware, say Y here.
+.
+SUN_VIDEOPIX 'Videopix Frame Grabber'
+
+SUN_AURORA 'Aurora Multiboard 1600se' text
+The Aurora Multiboard is a multi-port high-speed serial controller.
+If you have one of these, say Y.
+.
+TADPOLE_TS102_UCTRL 'Tadpole TS102 Microcontroller support'
+
+SUN_JSFLASH 'JavaStation OS Flash SIMM' text
+If you say Y here, you will be able to boot from your JavaStation's
+Flash memory.
+.
+#
+# Configuration for sparcaudio subsystem
+SPARCAUDIO 'Audio support' text
+This driver provides support for the build-in sound devices on most
+Sun machines. If you want to be able to use this, select this option
+and one or more of the lowlevel drivers below. See
+http://www.dementia.org/~shadow/sparcaudio.html for more
+information.
+.
+SPARCAUDIO_AMD7930 'AMD7930 Lowlevel Driver' text
+This driver supports the AMD 7930 chip found on sun4c, 4/6xx, and
+SparcClassic systems.
+.
+SPARCAUDIO_CS4231 'CS4231 Lowlevel Driver' text
+This driver supports the Crystal Semiconductor CS4231 chip found on
+the SS4, SS5, and Ultras.
+.
+SPARCAUDIO_DBRI 'DBRI Lowlevel Driver' text
+This driver supports the DBRI audio interface found on the SS10,
+SS20, Sparcbook 3, and Voyager systems.
+.
+SPARCAUDIO_DUMMY 'Dummy Lowlevel Driver' text
+This is a pseudo-driver used for debugging and testing the
+sparcaudio subsystem. Say N unless you want to work on this
+subsystem.
+.
+#
+# Plug and Play configuration
+PNP 'Plug and Play support' text
+Plug and Play (PnP) is a standard for peripherals which allows those
+peripherals to be configured by software, e.g. assign IRQ's or other
+parameters. No jumpers on the cards are needed, instead the values
+are provided to the cards from the BIOS, from the operating system,
+or using a user-space utility.
+
+Say Y here if you would like Linux to configure your Plug and Play
+devices. You should then also say Y to "ISA Plug and Play support",
+below. Alternatively, you can say N here and configure your PnP
+devices using the user space utilities contained in the isapnptools
+package.
+
+This support is also available 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.
+.
+ISAPNP 'ISA Plug and Play support' text
+Say Y here if you would like support for ISA Plug and Play devices.
+Some information is in Documentation/isapnp.txt.
+
+This support is also available as a module called isapnp.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.
+.
+#
+# Video configuration
+FB 'Support for frame buffer devices' text
+The frame buffer device provides an abstraction for the graphics
+hardware. It represents the frame buffer of some video hardware and
+allows application software to access the graphics hardware through
+a well-defined interface, so the software doesn't need to know
+anything about the low-level (hardware register) stuff.
+
+Frame buffer devices work identically across the different
+architectures supported by Linux and make the implementation of
+application programs easier and more portable; at this point, an X
+server exists which uses the frame buffer device exclusively.
+On several non-X86 architectures, the frame buffer device is the
+only way to use the graphics hardware.
+
+The device is accessed through special device nodes, usually located
+in the /dev directory, i.e. /dev/fb*.
+
+You need an utility program called fbset to make full use of frame
+buffer devices. Please read Documentation/fb/framebuffer.txt and the
+Framebuffer-HOWTO at
+http://www.tahallah.demon.co.uk/programming/prog.html for more
+information.
+
+Say Y here and to the driver for your graphics board below if you
+are compiling a kernel for a non-x86 architecture.
+
+If you are compiling for the x86 architecture, you can say Y if you
+want to play with it, but it is not essential. Please note that
+running graphical applications that directly touch the hardware
+(e.g. an accelerated X server) and that are not frame buffer
+device-aware may cause unexpected results. If unsure, say N.
+.
+FB_RIVA 'nVidia Riva support' text
+This driver supports graphics boards with the nVidia Riva/Geforce
+chips.
+Say Y if you have such a graphics board.
+
+The driver is also available as a module ( = code which can be
+inserted and removed from the running kernel whenever you want). The
+module will be called rivafb.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+FB_CLGEN 'Cirrus Logic generic driver' text
+This enables support for Cirrus Logic GD542x/543x based boards on
+Amiga: SD64, Piccolo, Picasso II/II+, Picasso IV, or EGS Spectrum.
+
+If you have a PCI-based system, this enables support for these
+chips: GD-543x, GD-544x, GD-5480.
+
+Please read the file Documentation/fb/clgenfb.txt.
+
+Say N unless you have such a graphics board or plan to get one
+before you next recompile the kernel.
+.
+FB_PM2 'Permedia2 support' text
+Say Y here if this is your graphics board.
+.
+FB_PM2_FIFO_DISCONNECT 'Enable FIFO disconnect feature'
+
+FB_PM2_PCI 'Generic Permedia2 PCI board support'
+
+FB_PM2_CVPPC 'Phase5 CVisionPPC/BVisionPPC support'
+
+FB_ACORN 'Acorn VIDC support' text
+This is the frame buffer device driver for the Acorn VIDC graphics
+hardware found in Acorn RISC PCs and other ARM-based machines. If
+unsure, say N.
+.
+FB_CYBER2000 'CyberPro 20x0 support' text
+This enables support for the Integraphics CyberPro 20x0 and 5000
+VGA chips used in the Rebel.com Netwinder and other machines.
+Say Y if you have a NetWinder or a graphics card containing this
+device, otherwise say N.
+.
+FB_SA1100 'SA-1100 LCD support' text
+This is a framebuffer device for the SA-1100 LCD Controller.
+See http://www.linux-fbdev.org/ for information on framebuffer
+devices.
+
+If you plan to use the LCD display with your SA-1100 system, say
+Y here.
+.
+FB_AMIGA 'Amiga native chipset support' text
+This is the frame buffer device driver for the builtin graphics
+chipset found in Amigas.
+
+The driver is also available as a module ( = code which can be
+inserted and removed from the running kernel whenever you want). The
+module will be called amifb.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+FB_AMIGA_OCS 'Amiga OCS chipset support' text
+This enables support for the original Agnus and Denise video chips,
+found in the Amiga 1000 and most A500's and A2000's. If you intend
+to run Linux on any of these systems, say Y; otherwise say N.
+.
+FB_AMIGA_ECS 'Amiga ECS chipset support' text
+This enables support for the Enhanced Chip Set, found in later
+A500's, later A2000's, the A600, the A3000, the A3000T and CDTV. If
+you intend to run Linux on any of these systems, say Y; otherwise
+say N.
+.
+FB_AMIGA_AGA 'Amiga AGA chipset support' text
+This enables support for the Advanced Graphics Architecture (also
+known as the AGA or AA) Chip Set, found in the A1200, A4000, A4000T
+and CD32. If you intend to run Linux on any of these systems, say Y;
+otherwise say N.
+.
+FB_CYBER 'Amiga CyberVision support' text
+This enables support for the Cybervision 64 graphics card from
+Phase5. Please note that its use is not all that intuitive (i.e. if
+you have any questions, be sure to ask!). Say N unless you have a
+Cybervision 64 or plan to get one before you next recompile the
+kernel. Please note that this driver DOES NOT support the
+Cybervision 64 3D card, as they use incompatible video chips.
+.
+FB_VIRGE 'Amiga CyberVision3D support' text
+This enables support for the Cybervision 64/3D graphics card from
+Phase5. Please note that its use is not all that intuitive (i.e. if
+you have any questions, be sure to ask!). Say N unless you have a
+Cybervision 64/3D or plan to get one before you next recompile the
+kernel. Please note that this driver DOES NOT support the older
+Cybervision 64 card, as they use incompatible video chips.
+.
+FB_RETINAZ3 'Amiga RetinaZ3 support' text
+This enables support for the Retina Z3 graphics card. Say N unless
+you have a Retina Z3 or plan to get one before you next recompile
+the kernel.
+.
+FB_FM2 'Amiga FrameMaster II/Rainbow II support'
+
+FB_ATARI 'Atari native chipset support' text
+This is the frame buffer device driver for the builtin graphics
+chipset found in Ataris.
+.
+FB_ATY 'ATI Mach64 display support' text
+This driver supports graphics boards with the ATI Mach64 chips.
+Say Y if you have such a graphics board.
+
+The driver is also available as a module ( = code which can be
+inserted and removed from the running kernel whenever you want). The
+module will be called atyfb.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+FB_ATY_GX 'Mach64 GX support' text
+This options adds support for the first generation ATI Mach64
+graphics chips, i.e. the Mach64 GX and CX. Note that this support is
+limited.
+.
+FB_ATY_CT 'Mach64 CT/VT/GT/LT (incl. 3D RAGE) support' text
+This option adss support for ATI Mach64 graphics chips starting
+with the Mach64 CT family. This includes the Mach64 VT (limited
+support), GT (3D RAGE family), and LT.
+.
+FB_OF 'Open Firmware frame buffer device support' text
+Say Y if you want support with Open Firmware for your graphics
+board.
+.
+FB_CONTROL 'PowerMac "control" frame buffer device support' text
+This driver supports a frame buffer for the graphics adapter in the
+Power Macintosh 7300 and others.
+.
+FB_PLATINUM 'PowerMac "platinum" frame buffer device support' text
+This driver supports a frame buffer for the "platinum" graphics
+adapter in some Power Macintoshes.
+.
+FB_VALKYRIE 'PowerMac "valkyrie" frame buffer device support' text
+This driver supports a frame buffer for the "valkyrie" graphics
+adapter in some Power Macintoshes.
+.
+FB_IMSTT 'IMS Twin Turbo display support'
+
+FB_CT65550 'Chips 65550 display support' text
+This is the frame buffer device driver for the Chips & Technologies
+65550 graphics chip in PowerBooks.
+.
+FB_S3TRIO 'S3 Trio frame buffer device support' text
+If you have a S3 Trio say Y. Say N for S3 Virge.
+.
+FB_VGA16 'VGA 16-color graphics console' text
+This is the frame buffer device driver for VGA 16 color graphic
+cards. Say Y if you have such a card.
+
+This code is also available as a module. If you want to compile it
+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 vga16fb.o.
+.
+FB_STI 'Generic STI frame buffer device support'
+
+FB_TGA 'TGA frame buffer support' text
+This is the frame buffer device driver for generic TGA graphic
+cards. Say Y if you have one of those.
+.
+FB_VESA 'VESA VGA graphics console' text
+This is the frame buffer device driver for generic VESA 2.0
+compliant graphic cards. The older VESA 1.2 cards are not supported.
+You will get a boot time penguin logo at no additional cost. Please
+read Documentation/fb/vesafb.txt. If unsure, say Y.
+.
+FB_HGA 'Hercules (HGA) mono graphics support' text
+Say Y here if you have a Hercules mono graphics card.
+
+This driver is also available as a module ( = code which can be
+inserted and removed from the running kernel whenever you want).
+The module will be called hgafb.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+
+As this card technology is 15 years old, most people will answer N
+here.
+.
+#FB_SGIVW 'SGI Visual Workstation framebuffer support'
+#FB_SUN3 'Sun3 framebuffer support'
+FB_BWTWO 'BWtwo support' text
+This is the frame buffer device driver for the BWtwo frame buffer.
+.
+FB_CGSIX 'CGsix (GX,TurboGX) support' text
+This is the frame buffer device driver for the CGsix (GX, TurboGX)
+frame buffer.
+.
+FB_PVR2 'NEC PowerVR 2 display support' text
+Say Y here if you have a PowerVR 2 card in your box. If you plan to
+run linux on your Dreamcast, you will have to say Y here. This driver
+may or may not work on other PowerVR 2 cards, but is totally untested.
+Use at your own risk. If unsure, say N.
+
+This driver is also available as a module ( = code which can be
+inserted and removed from the running kernel whenever you want).
+The module will be called pvr2fb.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+
+You can pass several parameters to the driver at boot time or at
+module load time. The parameters look like "video=pvr2:XXX", where
+the meaning of XXX can be found at the end of the main source file
+(drivers/video/pvr2fb.c). Please see the file
+Documentation/fb/pvr2fb.txt.
+.
+FB_PVR2_DEBUG 'Debug pvr2fb' text
+Say Y here if you wish for the pvr2fb driver to print out debugging
+messages. Most people will want to say N here. If unsure, you will
+also want to say N.
+.
+FB_E1355 'Epson 1355 framebuffer support'
+
+FB_DC 'Dreamcast Frame Buffer support'
+
+E1355_REG_BASE 'Register Base Address'
+
+E1355_FB_BASE 'Framebuffer Base Address'
+
+FB_MATROX 'Matrox unified accelerated driver' text
+Say Y here if you have a Matrox Millennium, Matrox Millennium II,
+Matrox Mystique, Matrox Mystique 220, Matrox Productiva G100, Matrox
+Mystique G200, Matrox Millennium G200, Matrox Marvel G200 video,
+Matrox G400 or G450 card in your box. At this time, support for the G100
+is untested and support for G450 is highly experimental.
+
+This driver is also available as a module ( = code which can be
+inserted and removed from the running kernel whenever you want).
+The module will be called matroxfb.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+
+You can pass several parameters to the driver at boot time or at
+module load time. The parameters look like "video=matrox:XXX", where
+the meaning of XXX can be found at the end of the main source file
+(drivers/video/matroxfb.c). Please see the file
+Documentation/fb/matroxfb.txt.
+.
+FB_MATROX_MILLENIUM 'Matrox Millennium I/II support' text
+Say Y here if you have a Matrox Millennium or Matrox Millennium II
+video card. If you select "Advanced lowlevel driver options" below,
+you should check 4 bpp packed pixel, 8 bpp packed pixel, 16 bpp
+packed pixel, 24 bpp packed pixel and 32 bpp packed pixel. You can
+also use font widths different from 8.
+.
+FB_MATROX_MYSTIQUE 'Matrox Mystique support' text
+Say Y here if you have a Matrox Mystique or Matrox Mystique 220
+video card. If you select "Advanced lowlevel driver options" below,
+you should check 8 bpp packed pixel, 16 bpp packed pixel, 24 bpp
+packed pixel and 32 bpp packed pixel. You can also use font widths
+different from 8.
+.
+FB_MATROX_G100 'Matrox G100/G200/G400/G450 support' text
+Say Y here if you have a Matrox G100, G200, G400 or G450 based
+video card. If you select "Advanced lowlevel driver options", you
+should check 8 bpp packed pixel, 16 bpp packed pixel, 24 bpp packed
+pixel and 32 bpp packed pixel. You can also use font widths
+different from 8.
+
+If you need support for G400 secondary head, you must first say Y to
+"I2C support" and "I2C bit-banging support" in the character devices
+section, and then to "Matrox I2C support" and "G400 second head
+support" here in the framebuffer section.
+.
+FB_MATROX_I2C 'Matrox I2C support' text
+This drivers creates I2C buses which are needed for accessing the
+DDC (I2C) bus present on all Matroxes, an I2C bus which
+interconnects Matrox optional devices, like MGA-TVO on G200 and
+G400, and the secondary head DDC bus, present on G400 only.
+
+You can say Y or M here if you want to experiment with monitor
+detection code. You must say Y or M here if you want to use either
+second head of G400 or MGA-TVO on G200 or G400.
+
+If you compile it as module, it will create a module named
+i2c-matroxfb.o.
+.
+FB_MATROX_MAVEN 'Matrox G400 second head support' text
+WARNING !!! This support does not work with G450 !!!
+
+Say Y or M here if you want to use a secondary head (meaning two
+monitors in parallel) on G400 or MGA-TVO add-on on G200. Secondary
+head is not compatible with accelerated XFree 3.3.x SVGA servers -
+secondary head output is blanked while you are in X. With XFree
+3.9.17 preview you can use both heads if you use SVGA over fbdev or
+the fbdev driver on first head and the fbdev driver on second head.
+
+If you compile it as module, two modules are created,
+matroxfb_crtc2.o and matroxfb_maven.o. Matroxfb_maven is needed for
+both G200 and G400, matroxfb_crtc2 is needed only by G400. You must
+also load i2c-matroxfb to get it to run.
+
+The driver starts in monitor mode and you must use the matroxset
+tool (available at ftp://platan.vc.cvut.cz/pub/linux/matrox-latest)
+to switch it to PAL or NTSC or to swap primary and secondary head
+outputs. Secondary head driver also always start in 640x480
+resolution, you must use fbset to change it.
+
+Also do not forget that second head supports only 16 and 32 bpp
+packed pixels, so it is a good idea to compile them into the kernel
+too. You can use only some font widths, as the driver uses generic
+painting procedures (the secondary head does not use acceleration
+engine).
+
+There is no need for enabling 'Matrox multihead support' if you have
+only one Matrox card in the box.
+.
+FB_MATROX_G450 'Matrox G450 second head support' text
+Say Y or M here if you want to use a secondary head (meaning two
+monitors in parallel) on G450.
+
+If you compile it as module, two modules are created,
+matroxfb_crtc2.o and matroxfb_g450.o. Both modules are needed if you
+want two independent display devices.
+
+The driver starts in monitor mode and currently does not support
+output in TV modes. You must use the matroxset tool (available
+at ftp://platan.vc.cvut.cz/pub/linux/matrox-latest) to swap primary
+and secondary head outputs. Secondary head driver always start in
+640x480 resolution and you must use fbset to change it.
+
+Also do not forget that second head supports only 16 and 32 bpp
+packed pixels, so it is a good idea to compile them into the kernel
+too. You can use only some font widths, as the driver uses generic
+painting procedures (the secondary head does not use acceleration
+engine).
+
+There is no need for enabling 'Matrox multihead support' if you have
+only one Matrox card in the box.
+.
+FB_MATROX_MULTIHEAD 'Matrox unified driver multihead support' text
+Say Y here if you have more than one (supported) Matrox device in
+your computer and you want to use all of them for different monitors
+("multihead"). If you have only one device, you should say N because
+the driver compiled with Y is larger and a bit slower, especially on
+ia32 (ix86).
+
+If you said M to "Matrox unified accelerated driver" and N here, you
+will still be able to use several Matrox devices simultaneously:
+insert several instances of the module matroxfb.o into the kernel
+with insmod, supplying the parameter "dev=N" where N is 0, 1, etc.
+for the different Matrox devices. This method is slightly faster but
+uses 40 KB of kernel memory per Matrox card.
+.
+FB_RADEON 'ATI Radeon display support'
+
+FB_ATY128 'ATI Rage128 display support' text
+This driver supports graphics boards with the ATI Rage128 chips.
+Say Y if you have such a graphics board and read
+Documentation/fb/aty128fb.txt.
+
+The driver is also available as a module ( = code which can be
+inserted and removed from the running kernel whenever you want). The
+module will be called aty128fb.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+FB_3DFX '3Dfx Banshee/Voodoo3 display support' text
+This driver supports graphics boards with the 3Dfx Banshee/Voodoo3
+chips. Say Y if you have such a graphics board.
+
+The driver is also available as a module ( = code which can be
+inserted and removed from the running kernel whenever you want). The
+module will be called tdfxfb.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+FB_SIS 'SIS acceleration'
+
+FB_SIS_300 'SIS 630/540/730 support'
+
+FB_SIS_315 'SIS 315H/315 support'
+
+FB_VOODOO1 '3Dfx Voodoo Graphics (sst1) support'
+
+FB_HIT 'HD64461 Frame Buffer support'
+
+FB_PMAG_BA 'PMAG-BA TURBOchannel framebuffer support'
+
+FB_PMAGB_B 'PMAGB-B TURBOchannel framebuffer spport'
+
+FB_MAXINE 'Maxine (Personal DECstation) onboard framebuffer support'
+
+FB_TX3912 'TMPTX3912/PR31700 frame buffer support'
+
+FB_SBUS 'SBUS and UPA framebuffers' text
+Say Y if you want support for SBUS or UPA based frame buffer device.
+.
+FB_CREATOR 'Creator/Creator3D support' text
+This is the frame buffer device driver for the Creator and Creator3D
+graphics boards.
+.
+FB_CGTHREE 'CGthree support' text
+This is the frame buffer device driver for the CGthree frame buffer.
+.
+FB_TCX 'TCX (SS4/SS5 only) support' text
+This is the frame buffer device driver for the TCX 24/8bit frame
+buffer.
+.
+FB_CGFOURTEEN 'CGfourteen (SX) support'
+
+FB_P9100 'P9100 (Sparcbook 3 only) support'
+
+FB_LEO 'Leo (ZX) support'
+
+FB_IGA 'IGA 168x display support'
+
+FB_VIRTUAL 'Virtual Frame Buffer support (ONLY FOR TESTING!)' text
+This is a `virtual' frame buffer device. It operates on a chunk of
+unswappable kernel memory instead of on the memory of a graphics
+board. This means you cannot see any output sent to this frame
+buffer device, while it does consume precious memory. The main use
+of this frame buffer device is testing and debugging the frame
+buffer subsystem. Do NOT enable it for normal systems! To protect
+the innocent, it has to be enabled explicitly at boot time using the
+kernel option `video=vfb:'.
+
+This driver is also available as a module ( = code which can be
+inserted and removed from the running kernel whenever you want). The
+module will be called vfb.o. If you want to compile it as a module,
+say M here and read Documentation/modules.txt.
+.
+FBCON_ADVANCED 'Advanced low level driver options' text
+The frame buffer console uses character drawing routines that are
+tailored to the specific organization of pixels in the memory of
+your graphics hardware. These are called the low level frame buffer
+console drivers. Note that they are used for text console output
+only; they are NOT needed for graphical applications.
+
+If you say N here, the needed low level drivers are automatically
+enabled, depending on what frame buffer devices you selected above.
+This is recommended for most users.
+
+If you say Y here, you have more fine-grained control over which low
+level drivers are enabled. You can e.g. leave out low level drivers
+for color depths you do not intend to use for text consoles.
+
+Low level frame buffer console drivers can be modules ( = code which
+can be inserted and removed from the running kernel whenever you
+want). The modules will be called fbcon-*.o. If you want to compile
+(some of) them as modules, read Documentation/modules.txt.
+
+If unsure, say N.
+.
+FBCON_MFB 'Monochrome support' text
+This is the low level frame buffer console driver for monochrome
+(2 colors) packed pixels.
+.
+FBCON_CFB2 '2 bpp packed pixels support' text
+This is the low level frame buffer console driver for 2 bits per
+pixel (4 colors) packed pixels.
+.
+FBCON_CFB4 '4 bpp packed pixels support' text
+This is the low level frame buffer console driver for 4 bits per
+pixel (16 colors) packed pixels.
+.
+FBCON_CFB8 '8 bpp packed pixels support' text
+This is the low level frame buffer console driver for 8 bits per
+pixel (256 colors) packed pixels.
+.
+FBCON_CFB16 '16 bpp packed pixels support' text
+This is the low level frame buffer console driver for 15 or 16 bits
+per pixel (32K or 64K colors, also known as `hicolor') packed
+pixels.
+.
+FBCON_CFB24 '24 bpp packed pixels support' text
+This is the low level frame buffer console driver for 24 bits per
+pixel (16M colors, also known as `truecolor') packed pixels. It is
+NOT for `sparse' 32 bits per pixel mode.
+.
+FBCON_CFB32 '32 bpp packed pixels support' text
+This is the low level frame buffer console driver for 32 bits per
+pixel (16M colors, also known as `truecolor') sparse packed pixels.
+.
+FBCON_AFB 'Amiga bitplanes support' text
+This is the low level frame buffer console driver for 1 to 8
+bitplanes (2 to 256 colors) on Amiga.
+.
+FBCON_ILBM 'Amiga interleaved bitplanes support' text
+This is the low level frame buffer console driver for 1 to 8
+interleaved bitplanes (2 to 256 colors) on Amiga.
+.
+FBCON_IPLAN2P2 'Atari interleaved bitplanes (2 planes) support' text
+This is the low level frame buffer console driver for 2 interleaved
+bitplanes (4 colors) on Atari.
+.
+FBCON_IPLAN2P4 'Atari interleaved bitplanes (4 planes) support' text
+This is the low level frame buffer console driver for 4 interleaved
+bitplanes (16 colors) on Atari.
+.
+FBCON_IPLAN2P8 'Atari interleaved bitplanes (8 planes) support' text
+This is the low level frame buffer console driver for 8 interleaved
+bitplanes (256 colors) on Atari.
+.
+#FBCON_IPLAN2P16 'Atari interleaved bitplanes (16 planes) support'
+FBCON_MAC 'Mac variable bpp packed pixels support' text
+This is the low level frame buffer console driver for 1/2/4/8/16/32
+bits per pixel packed pixels on Mac. It supports variable font
+widths for low resolution screens.
+.
+FBCON_VGA_PLANES 'VGA 16-color planar support' text
+This low level frame buffer console driver enable the kernel to use
+the 16-color planar modes of the old VGA cards where the bits of
+each pixel are separated into 4 planes.
+
+Only answer Y here if you have a (very old) VGA card that isn't VESA
+2 compatible.
+.
+FBCON_VGA 'VGA characters/attributes support' text
+This is the low level frame buffer console driver for VGA text mode;
+it is used by frame buffer device drivers that support VGA text
+mode.
+.
+FBCON_HGA 'HGA monochrome support' text
+This is the low level frame buffer console driver for Hercules mono
+graphics cards.
+.
+FBCON_FONTWIDTH8_ONLY 'Support only 8 pixels wide fonts' text
+Answer Y here will make the kernel provide only the 8x8 fonts (these
+are the less readable).
+
+If unsure, say N.
+.
+FBCON_FONTS 'Select other compiled-in fonts' text
+Say Y here if you would like to use fonts other than the default
+your frame buffer console usually use.
+
+Note that the answer to this question won't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about foreign fonts.
+
+If unsure, say N (the default choices are safe).
+.
+FONT_8x8 'VGA 8x8 font' text
+This is the "high resolution" font for the VGA frame buffer (the one
+provided by the text console 80x50 (and higher) modes).
+
+Note that this is a poor quality font. The VGA 8x16 font is quite a
+lot more readable.
+
+Given the resolution provided by the frame buffer device, answer N
+here is safe.
+.
+FONT_8x16 'VGA 8x16 font' text
+This is the "high resolution" font for the VGA frame buffer (the one
+provided by the VGA text console 80x25 mode.
+
+If unsure, say Y.
+.
+FONT_SUN8x16 'Sparc console 8x16 font' text
+This is the high resolution console font for Sun machines. Say Y.
+.
+FONT_SUN12x22 'Sparc console 12x22 font (not supported by all drivers)'
+text
+This is the high resolution console font for Sun machines with very
+big letters (like the letters used in the SPARC PROM). If the
+standard font is unreadable for you, say Y, otherwise say N.
+.
+FONT_6x11 'Mac console 6x11 font (not supported by all drivers)'
+
+FONT_PEARL_8x8 'Pearl (old m68k) console 8x8 font'
+
+FONT_ACORN_8x8 'Acorn console 8x8 font'
+
+#
+# Character device configuration
+SGI_SERIAL 'SGI Zilog85C30 serial support' text
+If you want to use your SGI's built-in serial ports under Linux,
+answer Y.
+.
+SGI_DS1286 'SGI DS1286 RTC support' text
+If you say Y here and create a character special file /dev/rtc with
+major number 10 and minor number 135 using mknod ("man mknod"), you
+will get access to the real time clock built into your computer.
+Every SGI has such a clock built in. It reports status information
+via the file /proc/rtc and its behaviour is set by various ioctls on
+/dev/rtc.
+.
+SGI_NEWPORT_GFX 'SGI Newport Graphics support' text
+If you have an SGI machine and you want to compile the graphics
+drivers, say Y here. This will include the code for the
+/dev/graphics and /dev/gfx drivers into the kernel for supporting
+virtualized access to your graphics hardware.
+.
+#
+# FC4 device configuration
+FC4 'Fibre Channel and FC4 SCSI support' text
+Fibre Channel is a high speed serial protocol mainly used to
+connect large storage devices to the computer; it is compatible with
+and intended to replace SCSI.
+
+This is an experimental support for storage arrays connected to your
+computer using optical fibre cables and the "X3.269-199X Fibre
+Channel Protocol for SCSI" specification. If you want to use this,
+you need to say Y here and to "SCSI support" as well as to the
+drivers for the storage array itself and for the interface adapter
+such as SOC or SOC+. This subsystem could even serve for IP
+networking, with some code extensions.
+
+If unsure, say N.
+.
+FC4_SOC 'Sun SOC/Sbus' text
+Serial Optical Channel is an interface card with one or two Fibre
+Optic ports, each of which can be connected to a disk array. Note
+that if you have older firmware in the card, you'll need the
+microcode from the Solaris driver to make it work.
+
+This support is also available as a module called soc.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.
+.
+FC4_SOCAL 'Sun SOC+ (aka SOCAL)' text
+Serial Optical Channel Plus is an interface card with up to two
+Fibre Optic ports. This card supports FC Arbitrated Loop (usually
+A5000 or internal FC disks in E[3-6]000 machines through the
+Interface Board). You'll probably need the microcode from the
+Solaris driver to make it work.
+
+This support is also available as a module called socal.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.
+.
+SCSI_PLUTO 'SparcSTORAGE Array 100 and 200 series' text
+If you never bought a disk array made by Sun, go with N.
+
+This support is also available as a module called pluto.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.
+.
+SCSI_FCAL_SUN 'Sun Enterprise Network Array (A5000 and EX500)'
+
+SCSI_FCAL_GENERIC 'Generic FC-AL disk driver'
+
+#
+# SCSI driver configuration for Acorn
+SCSI_ACORNSCSI_3 'Acorn SCSI card (aka30) support' text
+This enables support for the Acorn SCSI card (aka30). If you have an
+Acorn system with one of these, say Y. If unsure, say N.
+.
+SCSI_ACORNSCSI_TAGGED_QUEUE 'Support SCSI 2 Tagged queueing' text
+Say Y here to enable tagged queuing support on the Acorn SCSI card.
+
+This is a feature of SCSI-2 which improves performance: the host
+adapter can send several SCSI commands to a device's queue even if
+previous commands haven't finished yet. Some SCSI devices don't
+implement this properly, so the safe answer is N.
+.
+SCSI_ACORNSCSI_SYNC 'Support SCSI 2 Synchronous Transfers' text
+Say Y here to enable synchronous transfer negotiation with all
+targets on the Acorn SCSI card.
+
+In general, this improves performance; however some SCSI devices
+don't implement it properly, so the safe answer is N.
+.
+SCSI_ARXESCSI 'ARXE SCSI support'
+
+SCSI_CUMANA_2 'Cumana SCSI II support' text
+This enables support for the Cumana SCSI II card. If you have an
+Acorn system with one of these, say Y. If unsure, say N.
+.
+SCSI_EESOXSCSI 'EESOX SCSI support' text
+This enables support for the EESOX SCSI card. If you have an Acorn
+system with one of these, say Y, otherwise say N.
+.
+SCSI_POWERTECSCSI 'PowerTec SCSI support' text
+This enables support for the Powertec SCSI card on Acorn systems. If
+you have one of these, say Y. If unsure, say N.
+.
+SCSI_CUMANA_1 'Cumana SCSI I support' text
+This enables support for the Cumana SCSI I card. If you have an
+Acorn system with one of these, say Y. If unsure, say N.
+.
+SCSI_ECOSCSI 'EcoSCSI support' text
+This enables support for the EcoSCSI card -- a small card that sits
+in the Econet socket. If you have an Acorn system with one of these,
+say Y. If unsure, say N.
+.
+SCSI_OAK1 'Oak SCSI support' text
+This enables support for the Oak SCSI card. If you have an Acorn
+system with one of these, say Y. If unsure, say N.
+.
+#
+# Block device driver configuration
+BLK_DEV_FD1772 'Old Archimedes floppy (1772) support' text
+Support the floppy drive on the Acorn Archimedes (A300, A4x0, A540,
+R140 and R260) series of computers; it supports only 720K floppies
+at the moment. If you don't have one of these machines just answer
+N.
+.
+BLK_DEV_MFM 'MFM hard disk support' text
+Support the MFM hard drives on the Acorn Archimedes both
+on-board the A4x0 motherboards and via the Acorn MFM podules.
+Drives up to 64MB are supported. If you haven't got one of these
+machines or drives just say N.
+.
+BLK_DEV_MFM_AUTODETECT 'Autodetect hard drive geometry' text
+If you answer Y, the MFM code will attempt to automatically detect
+the cylinders/heads/sectors count on your hard drive. WARNING: This
+sometimes doesn't work and it also does some dodgy stuff which
+potentially might damage your drive.
+.
+#
+# Acorn Network device configuration
+# These are for Acorn's Expansion card network interfaces
+ARM_ETHER1 'Acorn Ether1 support' text
+If you have an Acorn system with one of these (AKA25) network cards,
+you should say Y to this option if you wish to use it with Linux.
+.
+ARM_ETHER3 'Acorn/ANT Ether3 support' text
+If you have an Acorn system with one of these network cards, you
+should say Y to this option if you wish to use it with Linux.
+.
+ARM_ETHERH 'I-Cubed EtherH support' text
+If you have an Acorn system with one of these network cards, you
+should say Y to this option if you wish to use it with Linux.
+.
+#
+# USB device configuration
+USB 'USB (Universal Serial Bus) support' text
+Universal Serial Bus (USB) is a specification for a serial bus
+subsystem which offers higher speeds and more features than the
+traditional PC serial port. The bus supplies power to peripherals
+and allows for hot swapping. Up to 127 USB peripherals can be
+connected to a single USB port in a tree structure. The USB port is
+the root of the tree, the peripherals are the leaves and the inner
+nodes are special USB devices called hubs. Many newer PC's have USB
+ports and newer peripherals such as scanners, keyboards, mice,
+modems, and printers support the USB protocol and can be connected
+to the PC via those ports.
+
+Say Y here if your computer has a USB port and you want to use USB
+devices. You then need to say Y to at least one of "UHCI support" or
+"OHCI support" below (the type of interface that the USB hardware in
+your computer provides to the operating system) and then choose from
+among the drivers for USB peripherals. You may want to check out the
+information provided in Documentation/usb/ and especially the links
+given in Documentation/usb/usb-help.txt.
+
+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 usbcore.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_DEBUG 'USB verbose debug messages' text
+Say Y here if you want the USB core & hub drivers to produce a bunch
+of debug messages to the system log. Select this if you are having a
+problem with USB support and want to see more of what is going on.
+.
+USB_UHCI 'UHCI (Intel PIIX4, VIA, ...) support' text
+The Universal Host Controller Interface is a standard by Intel for
+accessing the USB hardware in the PC (which is also called the USB
+host controller). If your USB host controller conforms to this
+standard, you may want to say Y, but see below. All recent boards
+with Intel PCI chipsets (like intel 430TX, 440FX, 440LX, 440BX,
+i810, i820) conform to this standard. Also all VIA PCI chipsets
+(like VIA VP2, VP3, MVP3, Apollo Pro, Apollo Pro II or Apollo Pro
+133).
+
+Currently there exist two drivers for UHCI host controllers: this
+one and the so-called JE driver, which you can get from
+"UHCI alternate (JE) support", below. You need only one.
+
+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 usb-uhci.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_UHCI_ALT 'UHCI (Intel PIIX4, VIA, ...) alternate (JE) support' text
+The Universal Host Controller Interface is a standard by Intel for
+accessing the USB hardware in the PC (which is also called the USB
+host controller). If your USB host controller conforms to this
+standard, you may want to say Y, but see below. All recent boards
+with Intel PCI chipsets (like intel 430TX, 440FX, 440LX, 440BX,
+i810, i820) conform to this standard. Also all VIA PCI chipsets
+(like VIA VP2, VP3, MVP3, Apollo Pro, Apollo Pro II or Apollo Pro
+133). If unsure, say Y.
+
+Currently there exist two drivers for UHCI host controllers: this
+so-called JE driver, and the one you get from "UHCI support", above.
+You need only one.
+
+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 uhci.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_OHCI 'OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support' text
+The Open Host Controller Interface is a standard by
+Compaq/Microsoft/National for accessing the USB PC hardware (also
+called USB host controller). If your USB host controller conforms to
+this standard, say Y. The USB host controllers on most non-Intel
+architectures and on several x86 compatibles with non-Intel chipsets
+-- like SiS (aktual 610, 610 and so on) or ALi (ALi IV, ALi V,
+Aladdin Pro..) -- conform to this standard.
+
+You may want to read the file Documentation/usb/ohci.txt.
+
+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 usb-ohci.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+USB_DEVICEFS 'USB device file system' text
+If you say Y here (and to "/proc file system support" below), you
+will get a file /proc/bus/usb/devices which lists the devices
+currently connected to your USB busses, a file /proc/bus/usb/drivers
+which lists the USB kernel client drivers currently loaded, and for
+every connected device a file named "/proc/bus/usb/xxx/yyy", where
+xxx is the bus number and yyy the device number; the latter files
+can be used by user space programs to talk directly to the device.
+These files are "virtual", meaning they are generated on the fly
+and not stored on the hard drive.
+
+For the format of the /proc/bus/usb/ files, please read
+Documentation/usb/proc_usb_info.txt.
+
+Please note that this code is completely unrelated to devfs, the
+"/dev file system support".
+
+Most users want to say Y here.
+.
+USB_BANDWIDTH 'Enforce USB bandwidth allocation' text
+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.
+.
+USB_LONG_TIMEOUT 'Long timeout for slow-responding devices (some MGE Ellipse UPSes)'
+text
+This option makes the standard time out a bit longer. Basically,
+some devices are just slow to respond, so this makes usb more
+patient. There should be no harm in selecting this, but it is
+needed for some MGE Ellipse UPSes.
+
+If you have an MGE Ellipse UPS, or you see timeouts in HID
+transactions, say Y; otherwise say N.
+.
+USB_PRINTER 'USB Printer support' text
+Say Y here if you want to connect a USB printer to your computer's
+USB port.
+
+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 printer.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_SCANNER 'USB Scanner support' text
+Say Y here if you want to connect a USB scanner to your computer's
+USB port. Please read Documentation/usb/scanner.txt and
+Documentation/usb/scanner-hp-sane.txt for more information.
+
+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 scanner.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+USB_MICROTEK 'Microtek USB scanner support' text
+Say Y here if you want support for the Microtek X6USB and
+possibly the Phantom 336CX, Phantom C6 and ScanMaker V6U(S)L.
+Support for anything but the X6 is experimetal.
+Please report failures and successes.
+The scanner will appear as a scsi generic device to the rest
+of the system. Scsi support is required for this driver to compile
+and work. SANE 1.0.4 or newer is needed to make use of your scanner.
+This driver can be compiled as a module.
+.
+USB_HPUSBSCSI 'HP53xx USB scanner support' text
+Say Y here if you want support for the HP 53xx series of scanners
+and the Minolta Scan Dual. This driver is experimental.
+The scanner will be accessible as a SCSI device.
+.
+USB_AUDIO 'USB Audio support' text
+Say Y here if you want to connect UAB audio equipment such as
+speakers to your computer's USB port.
+
+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 audio.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_STORAGE_SDDR09 'SanDisk SDDR-09 (and other SmartMedia) support'
+
+USB_STORAGE_JUMPSHOT 'Lexar Jumpshot Compact Flash Reader'
+
+USB_ACM 'USB Modem (CDC ACM) support' text
+This driver supports USB modems and ISDN adapters which support the
+Communication Device Class Abstract Control Model interface.
+Please read Documentation/usb/acm.txt for details.
+
+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 acm.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL 'USB serial converter support' text
+Say Y here if you have a USB device that provides normal serial
+ports, or acts like a serial device, and you want to connect it to
+your USB bus.
+
+Please read Documentation/usb/usb-serial.txt for more information
+on the specifics of the different devices that are supported, and
+on how to use them.
+
+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 usbserial.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL_GENERIC 'USB Generic Serial Driver' text
+Say Y here if you want to use the generic USB serial driver. Please
+read Documentation/usb/usb-serial.txt for more information on using
+this driver. It is recommended that the "USB Serial converter
+support" be compiled as a module for this driver to be used
+properly.
+.
+USB_SERIAL_VISOR 'USB Handspring Visor Driver' text
+Say Y here if you want to connect to your HandSpring Visor, Palm m500
+or m505 through its USB docking station.
+See http://usbvisor.sourceforge.net for more information on using this
+driver.
+
+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 visor.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL_EDGEPORT 'USB Edgeport Serial Driver' text
+Say Y here if you want to use any of the following devices from
+Inside Out Networks (Digi):
+ Edgeport/4
+ Rapidport/4
+ Edgeport/4t
+ Edgeport/2
+ Edgeport/4i
+ Edgeport/2i
+ Edgeport/421
+ Edgeport/21
+ Edgeport/8
+ Edgeport/8 Dual
+ Edgeport/2D8
+ Edgeport/4D8
+ Edgeport/8i
+ Edgeport/2 DIN
+ Edgeport/4 DIN
+ Edgeport/16 Dual
+
+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 io_edgeport.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL_IR 'USB IR Dongle Serial Driver'
+
+USB_SERIAL_DIGI_ACCELEPORT 'USB Digi International AccelePort USB Serial Driver'
+text
+Say Y here if you want to use Digi AccelePort USB 2 or 4 devices,
+2 port (plus parallel port) and 4 port USB serial converters. The
+parallel port on the USB 2 appears as a third serial port on Linux.
+The Digi Acceleport USB 8 is not yet supported by this driver.
+
+This driver works under SMP with the usb-uhci driver. It does not
+work under SMP with the uhci driver.
+
+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 digi_acceleport.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL_EMPEG 'USB Empeg empeg-car Mark I/II Driver' text
+Say Y here if you want to connect to your Empeg empeg-car Mark I/II
+mp3 player via USB. The driver uses a single ttyUSB{0,1,2,...}
+device node. See Documentation/usb/usb-serial.txt for more
+tidbits of information.
+
+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 empeg.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL_WHITEHEAT 'USB ConnectTech WhiteHEAT Serial Driver' text
+Say Y here if you want to use a ConnectTech WhiteHEAT 4 port
+USB to serial converter device.
+
+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 whiteheat.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL_FTDI_SIO 'USB FTDI Single Port Serial Driver' text
+Say Y here if you want to use a FTDI SIO single port USB to serial
+converter device. The implementation I have is called the USC-1000.
+
+See http://reality.sgi.com/bryder_wellington/ftdi_sio for more
+information on this driver and the device.
+
+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 ftdi_sio.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL_KEYSPAN_PDA 'USB Keyspan PDA Single Port Serial Driver' text
+Say Y here if you want to use a Keyspan PDA single port USB to
+serial converter device. This driver makes use of firmware
+developed from scratch by Brian Warner.
+
+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 keyspan_pda.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL_KEYSPAN 'USB Keyspan USA-xxx Serial Driver' text
+Say Y here if you want to use Keyspan USB to serial converter
+devices. This driver makes use of Keyspan's official firmware
+and was developed with their support. You must also include
+firmware to support your particular device(s).
+
+See http://misc.nu/hugh/keyspan.html for more information.
+
+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 keyspan.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL_KEYSPAN_USA28 'USB Keyspan USA-28 Firmware' text
+Say Y here to include firmware for the USA-28 converter.
+.
+USB_SERIAL_KEYSPAN_USA28X 'USB Keyspan USA-28X Firmware' text
+Say Y here to include firmware for the USA-28X converter.
+Be sure you have a USA-28X, there are also 28XA and 28XB
+models, the label underneath has the actual part number.
+.
+USB_SERIAL_KEYSPAN_USA28XA 'USB Keyspan USA-28XA Firmware' text
+Say Y here to include firmware for the USA-28XA converter.
+Be sure you have a USA-28XA, there are also 28X and 28XB
+models, the label underneath has the actual part number.
+.
+USB_SERIAL_KEYSPAN_USA28XB 'USB Keyspan USA-28XB Firmware' text
+Say Y here to include firmware for the USA-28XB converter.
+Be sure you have a USA-28XB, there are also 28X and 28XA
+models, the label underneath has the actual part number.
+.
+USB_SERIAL_KEYSPAN_USA19 'USB Keyspan USA-19 Firmware' text
+Say Y here to include firmware for the USA-19 converter.
+.
+USB_SERIAL_KEYSPAN_USA18X 'USB Keyspan USA-18X Firmware' text
+Say Y here to include firmware for the USA-18X converter.
+.
+USB_SERIAL_KEYSPAN_USA19W 'USB Keyspan USA-19W Firmware' text
+Say Y here to include firmware for the USA-19W converter.
+.
+USB_SERIAL_KEYSPAN_USA49W 'USB Keyspan USA-49W Firmware' text
+Say Y here to include firmware for the USA-49W converter.
+.
+USB_SERIAL_MCT_U232 'USB MCT Single Port Serial Driver' text
+Say Y here if you want to use a USB Serial single port adapter from
+Magic Control Technology Corp. (U232 is one of the model numbers).
+
+This driver also works with Sitecom U232-P25 and D-Link DU-H3SP USB
+BAY devices.
+
+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 mct_u232.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL_PL2303 'USB Prolific 2303 Single Port Serial Driver' text
+Say Y here if you want to use the PL2303 USB Serial single port
+adapter from Prolific.
+
+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 pl2303.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL_CYBERJACK 'USB REINER SCT cyberJack pinpad/e-com chipcard reader'
+text
+Say Y here if you want to use a cyberJack pinpad/e-com USB chipcard
+reader. This is an interface to ISO 7816 compatible contactbased
+chipcards, e.g. GSM SIMs.
+
+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 cyberjack.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+
+If unsure, say N.
+.
+USB_SERIAL_OMNINET 'USB ZyXEL omni.net LCD Plus Driver' text
+Say Y here if you want to use a ZyXEL omni.net LCD ISDN TA.
+
+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 omninet.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL_BELKIN 'USB Belkin and Paracom Single Port Serial Driver'
+text
+Say Y here if you want to use a Belkin USB Serial single port
+adaptor (F5U103 is one of the model numbers) or the Peracom single
+port USB to serial adapter.
+
+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 belkin_sa.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+USB_SERIAL_XIRCOM 'USB Xircom / Entregra Single Port Serial Driver' text
+Say Y here if you want to use a Xircom or Entregra single port USB to
+serial converter device. This driver makes use of firmware
+developed from scratch by Brian Warner.
+
+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 keyspan_pda.o. If you want to compile it
+as a module, say M here and read .
+.
+USB_SERIAL_DEBUG 'USB Serial Converter verbose debug' text
+Say Y here if you want verbose debug messages from the USB Serial
+Drivers sent to the kernel debug log.
+.
+USB_IBMCAM 'USB IBM (Xirlink) C-It Camera support' text
+Say Y here if you want to connect a IBM "C-It" camera, also known as
+"Xirlink PC Camera" to your computer's USB port. For more
+information, read Documentation/usb/ibmcam.txt.
+
+This driver uses the Video For Linux API. You must enable
+(Y or M in config) Video For Linux (under Character Devices)
+to use this driver. Information on this API and pointers to
+"v4l" programs may be found on the WWW at
+http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+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 ibmcam.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt. This camera
+has several configuration options which can be specified when you
+load the module. Read Documentation/usb/ibmcam.txt to learn more.
+.
+USB_OV511 'USB OV511 Camera support' text
+Say Y here if you want to connect this type of camera to your
+computer's USB port. See Documentation/usb/ov511.txt for more
+information and for a list of supported cameras.
+
+This driver uses the Video For Linux API. You must say Y or M to
+"Video For Linux" (under Character Devices) to use this driver.
+Information on this API and pointers to "v4l" programs may be found
+on the WWW at http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+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 ov511.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_PWC 'Philips webcam support' text
+Say Y or M here if you want to use one of these Philips USB webcams:
+PCA645, PCA646, PCVC675, PCVC680, PCVC690, PCVC730, PCVC740, or
+the Askey VC010. The PCA635, PCVC665 and PCVC720 are not
+supported by this driver and never will be.
+
+This driver has an optional plugin, which is distributed as a
+binary module only. It contains code that allow you to use
+higher resolutions and framerates but may not be distributed
+as source. But even without this plugin you can these cams
+for most applications.
+
+See Documentation/usb/philips.txt for more information and
+installation instructions.
+
+The built-in microphone is enabled by selecting USB Audio support.
+
+This driver uses the Video For Linux API. You must say Y or M to
+"Video For Linux" (under Character Devices) to use this driver.
+Information on this API and pointers to "v4l" programs may be found
+on the WWW at http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+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 pwc.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_SE401 'USB SE401 Camera support' text
+Say Y here if you want to connect this type of camera to your
+computer's USB port. See Documentation/usb/se401.txt for more
+information and for a list of supported cameras.
+
+This driver uses the Video For Linux API. You must say Y or M to
+"Video For Linux" (under Multimedia Devices) to use this driver.
+Information on this API and pointers to "v4l" programs may be found
+on the WWW at http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+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 se401.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_DC2XX 'USB Kodak DC-2xx Camera support' text
+Say Y here if you want to connect this type of still camera to
+your computer's USB port. See Documentation/usb/dc2xx.txt for more
+information; some non-Kodak cameras may also work with this
+driver, given application support (such as www.gPhoto.org).
+
+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 dc2xx.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_MDC800 'USB Mustek MDC800 Digital Camera support' text
+Say Y here if you want to connect this type of still camera to
+your computer's USB port. This driver can be used with gphoto 0.4.3
+and higher (look at http://www.gphoto.org ).
+To use it create a device node with "mknod /dev/mustek c 180 32" and
+configure it in your software.
+
+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 mdc800.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_STORAGE 'USB Mass Storage support' text
+Say Y here if you want to connect USB mass storage devices to your
+computer's USB port.
+
+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 usb-storage.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+USB_STORAGE_DEBUG 'USB Mass Storage verbose debug' text
+Say Y here in order to have the USB Mass Storage code generate
+verbose debugging messages.
+.
+USB_STORAGE_DATAFAB 'Datafab MDCFE-B Compact Flash Reader support'
+
+USB_STORAGE_ISD200 'ISD-200 USB/ATA Bridge support' text
+Say Y here if you want to use USB Mass Store devices based
+on the In-Systems Design ISD-200 USB/ATA bridge.
+
+Some of the products that use this chip are:
+
+ - Archos Jukebox 6000
+ - ISD SmartCable for Storage
+ - Taiwan Skymaster CD530U/DEL-0241 IDE bridge
+ - Sony CRX10U CD-R/RW drive
+ - CyQ've CQ8060A CDRW drive
+ - Planex eXtreme Drive RX-25HU USB-IDE cable (not model RX-25U)
+.
+USB_STORAGE_FREECOM 'Freecom USB/ATAPI Bridge support'
+
+USB_STORAGE_DPCM 'Microtech CompactFlash/SmartMedia reader'
+
+USB_STORAGE_HP8200e 'HP CD-Writer 82xx support'
+
+#USB_PLUSB 'PLUSB Prolific USB-Network driver'
+USB_PEGASUS 'USB ADMtek Pegasus-based Ethernet device support' text
+Say Y here if you know you have Pegasus or Pegasus II based adapter.
+If in doubt then look at linux/drivers/usb/pegasus.h for the complete
+list of supported devices.
+If your particular adapter is not in the list and you are _sure_ it
+is Pegasus or Pegasus II based then send me (pmanolov@lnxw.com) vendor
+and device IDs.
+
+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 pegasus.o. If you want to compile it as a
+.
+USB_KAWETH 'USB KLSI KL5USB101-based ethernet device support' text
+Say Y here if you want to use one of the following 10Mbps only
+USB Ethernet adapters based on the KLSI KL5KUSB101B chipset:
+ 3Com 3C19250
+ ADS USB-10BT
+ ATEN USB Ethernet
+ ASANTE USB To Ethernet Adapter
+ AOX Endpoints USB Ethernet
+ Correga K.K.
+ D-Link DSB-650C and DU-E10
+ Entrega / Portgear E45
+ I-O DATA USB-ET/T
+ Jaton USB Ethernet Device Adapter
+ Kingston Technology USB Ethernet Adapter
+ Linksys USB10T
+ Mobility USB-Ethernet Adapter
+ NetGear EA-101
+ Peracom Enet and Enet2
+ Portsmith Express Ethernet Adapter
+ Shark Pocket Adapter
+ SMC 2202USB
+ Sony Vaio port extender
+
+This driver is likely to work with most 10Mbps only USB Ethernet
+adapters, including some "no brand" devices. It does NOT work on
+SmartBridges smartNIC or on Belkin F5U111 devices - you should use
+the CATC NetMate driver for those. If you are not sure which one
+you need, select both, and the correct one should be selected for
+you.
+
+This driver makes the adapter appear as a normal Ethernet interface,
+typically on eth0, if it is the only ethernet device, or perhaps on
+eth1, if you have a PCI or ISA ethernet card installed.
+
+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 kaweth.o. If you want to compile it as a
+module, say M here and read .
+.
+USB_CATC 'USB CATC NetMate-based Ethernet device support' text
+Say Y if you want to use one of the following 10Mbps USB Ethernet
+device based on the EL1210A chip. Supported devices are:
+ Belkin F5U111
+ CATC NetMate
+ CATC NetMate II
+ smartBridges smartNIC
+
+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 catc.o. If you want to compile it as a
+module, say M here and read .
+.
+USB_CDCETHER 'USB Communication Class Ethernet device support' text
+This driver supports devices conforming to the Communication Device
+Class Ethernet Control Model. This is used in some cable modems.
+For more details on the specification, get the Communication Device
+Class specification from .
+
+This driver should work with the following devices:
+ * Ericsson PipeRider (all variants)
+ * Motorola (DM100 and SB4100)
+ * Broadcom Cable Modem (reference design)
+ * Toshiba PCX1100U and possibly other cable modems
+
+The device creates a network device (ethX, where X depends on what
+other networking devices you have in use), as for a normal PCI
+or ISA based ethernet network card.
+
+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 CDCEther.o. If you want to compile it as
+a module, say M here and read .
+.
+USB_USBNET 'USB-to-USB Networking cable device support' text
+This driver supports network links over USB with USB "Network"
+or "data transfer" cables, often used to network laptops to PCs.
+Such cables have chips from suppliers such as NetChip and Prolific.
+Intelligent USB devices could also use this approach to provide
+Internet access, using standard USB cabling.
+
+These links will have names like "usb0", "usb1", etc. They act
+like two-node Ethernets, so you can use 802.1d Ethernet Bridging
+(CONFIG_BRIDGE) to simplify your network routing.
+
+This code is also available as a kernel module (code which can be
+inserted in and removed from the running kernel whenever you want).
+The module will be called usbnet.o. If you want to compile it as a
+module, say M here and read .
+.
+#USB_NET1080 'NetChip 1080-based USB Host-to-Host Link'
+USB_RIO500 'USB Diamond Rio500 support' text
+Say Y here if you want to connect a USB Rio500 mp3 player to your
+computer's USB port. Please read Documentation/usb/rio.txt
+for more information.
+
+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 rio500.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+USB_DSBR 'D-Link DSB-R100 FM radio support' text
+Say Y here if you want to connect this type of radio to your
+computer's USB port. Note that the audio is not digital, and
+you must connect the line out connector to a sound card or a
+set of speakers.
+
+This driver uses the Video For Linux API. You must enable
+(Y or M in config) Video For Linux (under Character Devices)
+to use this driver. Information on this API and pointers to
+"v4l" programs may be found on the WWW at
+http://roadrunner.swansea.uk.linux.org/v4l.shtml .
+
+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 dsbr100.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_BLUETOOTH 'USB Bluetooth support' text
+Say Y here if you want to connect a USB Bluetooth device to your
+computer's USB port. You will need the Bluetooth stack (available
+at http://developer.axis.com/software/index.shtml) to fully use
+the device.
+
+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 bluetooth.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+USB_USS720 'USS720 parport driver' text
+This driver is for USB parallel port adapters that use the Lucent
+Technologies USS-720 chip. These cables are plugged into your USB
+port and provide USB compatibility to peripherals designed with
+parallel port interfaces.
+
+The chip has two modes: automatic mode and manual mode. In automatic
+mode, it looks to the computer like a standard USB printer. Only
+printers may be connected to the USS-720 in this mode. The generic
+USB printer driver ("USB Printer support", above) may be used in
+that mode, and you can say N here if you want to use the chip only
+in this mode.
+
+Manual mode is not limited to printers, any parallel port
+device should work. This driver utilizes manual mode.
+Note however that some operations are three orders of magnitude
+slower than on a PCI/ISA Parallel Port, so timing critical
+applications might not work.
+
+Say Y here if you own an USS-720 USB->Parport cable and intend to
+connect anything other than a printer to it.
+
+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 uss720.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_DABUSB 'DABUSB driver' text
+A Digital Audio Broadcasting (DAB) Receiver for USB and Linux
+brought to you by the DAB-Team (http://dab.in.tum.de). This driver
+can be taken as an example for URB-based bulk, control, and
+isochronous transactions. URB's are explained in
+Documentation/usb/URB.txt.
+
+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 dabusb.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_HID 'USB Human Interface Device (full HID) support' text
+Say Y here if you want full HID support to connect keyboards,
+mice, joysticks, graphic tablets, or any other HID based devices
+to your computer via USB. You can't use this driver and the
+HIDBP (Boot Protocol) keyboard and mouse drivers at the same time.
+More information is available: Documentation/input/input.txt.
+
+If unsure, say Y.
+
+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 hid.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+USB_HIDDEV '/dev/hiddev raw HID device support' text
+Say Y here if you want to support HID devices (from the USB
+specification standpoint) that aren't strictly user interface
+devices, like monitor controls and Uninterruptable Power Supplies.
+It is also used for "consumer keys" on multimedia keyboards and
+USB speakers.
+
+This module supports these devices separately using a separate
+event interface on /dev/usb/hiddevX (char 180:96 to 180:111).
+This driver requires CONFIG_USB_HID.
+
+If unsure, say N.
+.
+USB_KBD 'USB HIDBP Keyboard (basic) support' text
+Say Y here if you don't want to use the generic HID driver for your
+USB keyboard and prefer to use the keyboard in its limited Boot
+Protocol mode instead. This driver is much smaller than the HID one.
+
+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 usbkbd.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+
+If unsure, say N.
+.
+USB_MOUSE 'USB HIDBP Mouse (basic) support' text
+Say Y here if you don't want to use the generic HID driver for your
+USB mouse and prefer to use the mouse in its limited Boot Protocol
+mode instead. This driver is much smaller than the HID one.
+
+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.
+
+If unsure, say N.
+.
+USB_WACOM 'Wacom Intuos/Graphire tablet support' text
+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
+inserted in and removed from the running kernel whenever you want).
+The module will be called wacom.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+INPUT_IFORCE_USB 'I-Force joysticks/wheels' text
+Say Y here if you have an I-Force joystick or steering wheel
+connected to your USB port. For more information on how to use the
+driver please read Documentation/joystick.txt
+
+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 iforce.o. If you want to compile
+it as a module, say M here and read Documentation/modules.txt.
+.
+#
+# Bluetooth support
+#
+BLUEZ 'Bluetooth subsystem support'
+
+BLUEZ_L2CAP 'L2CAP protocol support'
+
+BLUEZ_HCIUSB 'HCI USB driver'
+
+BLUEZ_HCIUART 'HCI UART driver'
+
+BLUEZ_HCIVHCI 'HCI EMU (virtual device) driver'
+
+#
+# Input core
+INPUT 'Input core support' text
+Say Y here if you want to enable any of the following options for
+USB Human Interface Device (HID) support.
+
+Say Y here if you want to enable any of the USB HID options in the
+USB support section which require Input core support.
+
+Otherwise, say N.
+.
+INPUT_KEYBDEV 'Keyboard support' text
+Say Y here if you want your USB HID keyboard (or an ADB keyboard
+handled by the input layer) to be able to serve as a system keyboard.
+
+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 keybdev.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+INPUT_MOUSEDEV 'Mouse support' text
+Say Y here if you want your USB HID mouse (or ADB mouse handled by
+the input layer) to be accessible as char devices 13:32+ -
+/dev/input/mouseX and 13:63 - /dev/input/mice as an emulated ImPS/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.
+.
+INPUT_MOUSEDEV_SCREEN_X 'Horizontal screen resolution' text
+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.
+.
+INPUT_MOUSEDEV_SCREEN_Y 'Vertical screen resolution' text
+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.
+.
+INPUT_JOYDEV 'Joystick support' text
+Say Y here if you want your USB HID joystick or gamepad to be
+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).
+The module will be called joydev.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+INPUT_EVDEV 'Event interface support' text
+Say Y here if you want your USB or ADB HID device events be accessible
+under char device 13:64+ - /dev/input/eventX in a generic way.
+This is the future ...
+.
+#
+# I2O support
+I2O 'I2O support' text
+The Intelligent Input/Output (I2O) architecture allows hardware
+drivers to be split into two parts: an operating system specific
+module called the OSM and an hardware specific module called the
+HDM. The OSM can talk to a whole range of HDM's, and ideally the
+HDM's are not OS dependent. This allows for the same HDM driver to
+be used under different operating systems if the relevant OSM is in
+place. In order for this to work, you need to have an I2O interface
+adapter card in your computer. This card contains a special I/O
+processor (IOP), thus allowing high speeds since the CPU does not
+have to deal with I/O.
+
+If you say Y here, you will get a choice of interface adapter
+drivers and OSM's with the following questions.
+
+This support is also available 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. You will get modules called i2o_core.o
+and i2o_config.o.
+
+If unsure, say N.
+.
+I2O_PCI 'I2O PCI support' text
+Say Y for support of PCI bus I2O interface adapters. Currently this
+is the only variety supported, so you should say Y.
+
+This support is also available as a module called i2o_pci.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.
+.
+I2O_BLOCK 'I2O Block OSM' text
+Include support for the I2O Block OSM. The Block OSM presents disk
+and other structured block devices to the operating system.
+
+This support is also available as a module called i2o_block.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.
+.
+I2O_LAN 'I2O LAN OSM' text
+Include support for the LAN OSM. You will also need to include
+support for token ring or FDDI if you wish to use token ring or FDDI
+I2O cards with this driver.
+
+This support is also available as a module called i2o_lan.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.
+.
+I2O_SCSI 'I2O SCSI OSM' text
+Allows direct SCSI access to SCSI devices on a SCSI or FibreChannel
+I2O controller. You can use both the SCSI and Block OSM together if
+you wish.
+
+This support is also available as a module called i2o_scsi.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.
+.
+I2O_PROC 'I2O /proc support' text
+If you say Y here and to "/proc file system support", you will be
+able to read I2O related information from the virtual directory
+/proc/i2o.
+
+This support is also available as a module called i2o_proc.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.
+.
+#
+# ATM device configuration
+ATM_TCP 'ATM over TCP' text
+ATM over TCP driver. Useful mainly for development and for
+experiments. If unsure, say N.
+.
+ATM_LANAI 'Efficient Networks Speedstream 3010'
+
+ATM_ENI 'Efficient Networks ENI155P' text
+Driver for the Efficient Networks ENI155p series and SMC ATM
+Power155 155 Mbps ATM adapters. Both, the versions with 512KB and
+2MB on-board RAM (Efficient calls them "C" and "S", respectively),
+and the FPGA and the ASIC Tonga versions of the board are supported.
+The driver works with MMF (-MF or ...F) and UTP-5 (-U5 or ...D)
+adapters.
+
+This driver is also available as a module. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. The
+module will be called eni.o.
+.
+ATM_ENI_DEBUG 'Enable extended debugging' text
+Extended debugging records various events and displays that list
+when an inconsistency is detected. This mechanism is faster than
+generally using printks, but still has some impact on performance.
+Note that extended debugging may create certain race conditions
+itself. Enable this ONLY if you suspect problems with the driver.
+.
+ATM_ENI_TUNE_BURST 'Fine-tune burst settings' text
+In order to obtain good throughput, the ENI NIC can transfer
+multiple words of data per PCI bus access cycle. Such a multi-word
+transfer is called a burst.
+
+The default settings for the burst sizes are suitable for most PCI
+chipsets. However, in some cases, large bursts may overrun buffers
+in the PCI chipset and cause data corruption. In such cases, large
+bursts must be disabled and only (slower) small bursts can be used.
+The burst sizes can be set independently in the send (TX) and
+receive (RX) direction.
+
+Note that enabling many different burst sizes in the same direction
+may increase the cost of setting up a transfer such that the
+resulting throughput is lower than when using only the largest
+available burst size.
+
+Also, sometimes larger bursts lead to lower throughput, e.g. on an
+Intel 440FX board, a drop from 135 Mbps to 103 Mbps was observed
+when going from 8W to 16W bursts.
+.
+ATM_ENI_BURST_TX_16W 'Enable 16W TX bursts (discouraged)' text
+Burst sixteen words at once in the send direction. This may work
+with recent PCI chipsets, but is known to fail with older chipsets.
+.
+ATM_ENI_BURST_TX_8W 'Enable 8W TX bursts (recommended)' text
+Burst eight words at once in the send direction. This is the default
+setting.
+.
+ATM_ENI_BURST_TX_4W 'Enable 4W TX bursts (optional)' text
+Burst four words at once in the send direction. You may want to try
+this if you have disabled 8W bursts. Enabling 4W if 8W is also set
+may or may not improve throughput.
+.
+ATM_ENI_BURST_TX_2W 'Enable 2W TX bursts (optional)' text
+Burst two words at once in the send direction. You may want to try
+this if you have disabled 4W and 8W bursts. Enabling 2W if 4W or 8W
+are also set may or may not improve throughput.
+.
+ATM_ENI_BURST_RX_16W 'Enable 16W RX bursts (discouraged)' text
+Burst sixteen words at once in the receive direction. This may work
+with recent PCI chipsets, but is known to fail with older chipsets.
+.
+ATM_ENI_BURST_RX_8W 'Enable 8W RX bursts (discouraged)' text
+Burst eight words at once in the receive direction. This may work
+with recent PCI chipsets, but is known to fail with older chipsets,
+such as the Intel Neptune series.
+.
+ATM_ENI_BURST_RX_4W 'Enable 4W RX bursts (recommended)' text
+Burst four words at once in the receive direction. This is the
+default setting. Enabling 4W if 8W is also set may or may not
+improve throughput.
+.
+ATM_ENI_BURST_RX_2W 'Enable 2W RX bursts (optional)' text
+Burst two words at once in the receive direction. You may want to
+try this if you have disabled 4W and 8W bursts. Enabling 2W if 4W or
+8W are also set may or may not improve throughput.
+.
+ATM_FIRESTREAM 'Fujitsu FireStream (FS50/FS155)' text
+Driver for the Fujitsu FireStream 155 (MB86697) and
+FireStream 50 (MB86695) ATM PCI chips.
+
+This driver is also available as a module. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. The
+module will be called firestream.o.
+.
+ATM_ZATM 'ZeitNet ZN1221/ZN1225' text
+Driver for the ZeitNet ZN1221 (MMF) and ZN1225 (UTP-5) 155 Mbps ATM
+adapters.
+
+This driver is also available as a module. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. The
+module will be called zatm.o.
+.
+ATM_ZATM_DEBUG 'Enable extended debugging' text
+Extended debugging records various events and displays that list
+when an inconsistency is detected. This mechanism is faster than
+generally using printks, but still has some impact on performance.
+Note that extended debugging may create certain race conditions
+itself. Enable this ONLY if you suspect problems with the driver.
+.
+ATM_ZATM_EXACT_TS 'Enable usec resolution timestamps' text
+The uPD98401 SAR chip supports a high-resolution timer (approx. 30
+MHz) that is used for very accurate reception timestamps. Because
+that timer overflows after 140 seconds, and also to avoid timer
+drift, time measurements need to be periodically synchronized with
+the normal system time. Enabling this feature will add some general
+overhead for timer synchronization and also per-packet overhead for
+time conversion.
+.
+#ATM_TNETA1570 'Rolfs TI TNETA1570'
+#ATM_TNETA1570_DEBUG 'Enable extended debugging'
+ATM_NICSTAR 'IDT 77201/11 (NICStAR) (ForeRunnerLE)' text
+The NICStAR chipset family is used in a large number of ATM NICs for
+25 and for 155 Mbps, including IDT cards and the Fore ForeRunnerLE
+series. Say Y if you have one of those.
+
+This driver is also available as a module. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. The
+module will be called nicstar.o.
+.
+ATM_NICSTAR_USE_SUNI 'Use suni PHY driver (155Mbps)' text
+Support for the S-UNI and compatible PHYsical layer chips. These are
+found in most 155Mbps NICStAR based ATM cards, namely in the
+ForeRunner LE155 cards. This driver provides detection of cable
+removal and reinsertion and provides some statistics. This driver
+doesn't have removal capability when compiled as a module, so if you
+need that capability don't include S-UNI support (it's not needed to
+make the card work).
+.
+ATM_NICSTAR_USE_IDT77105 'Use IDT77015 PHY driver (25Mbps)' text
+Support for the PHYsical layer chip in ForeRunner LE25 cards. In
+addition to cable removal/reinsertion detection, this driver allows
+you to control the loopback mode of the chip via a dedicated IOCTL.
+This driver is required for proper handling of temporary carrier
+loss, so if you have a 25Mbps NICStAR based ATM card you must say Y.
+.
+ATM_IDT77252 'IDT 77252 (NICStAR II)'
+
+ATM_IDT77252_RCV_ALL 'Receive ALL cells in raw queue'
+
+ATM_AMBASSADOR 'Madge Ambassador (Collage PCI 155 Server)' text
+This is a driver for ATMizer based ATM card produced by Madge
+Networks Ltd. Say Y (or M to compile as a module named ambassador.o)
+here if you have one of these cards.
+.
+ATM_AMBASSADOR_DEBUG 'Enable debugging messages' text
+Somewhat useful debugging messages are available. The choice of
+messages is controlled by a bitmap. This may be specified as a
+module argument (kernel command line argument as well?), changed
+dynamically using an ioctl (not yet) or changed by sending the
+string "Dxxxx" to VCI 1023 (where x is a hex digit). See the file
+drivers/atm/ambassador.h for the meanings of the bits in the mask.
+
+When active, these messages can have a significant impact on the
+speed of the driver, and the size of your syslog files! When
+inactive, they will have only a modest impact on performance.
+.
+ATM_HORIZON 'Madge Horizon [Ultra] (Collage PCI 25 and Collage PCI 155 Client)'
+text
+This is a driver for the Horizon chipset ATM adapter cards once
+produced by Madge Networks Ltd. Say Y (or M to compile as a module
+named horizon.o) here if you have one of these cards.
+.
+ATM_HORIZON_DEBUG 'Enable debugging messages' text
+Somewhat useful debugging messages are available. The choice of
+messages is controlled by a bitmap. This may be specified as a
+module argument (kernel command line argument as well?), changed
+dynamically using an ioctl (not yet) or changed by sending the
+string "Dxxxx" to VCI 1023 (where x is a hex digit). See the file
+drivers/atm/horizon.h for the meanings of the bits in the mask.
+
+When active, these messages can have a significant impact on the
+speed of the driver, and the size of your syslog files! When
+inactive, they will have only a modest impact on performance.
+.
+ATM_IA 'Interphase ATM PCI x575/x525/x531' text
+This is a driver for the Interphase (i)ChipSAR adapter cards
+which include a variety of variants in term of the size of the
+control memory (128K-1KVC, 512K-4KVC), the size of the packet
+memory (128K, 512K, 1M), and the PHY type (Single/Multi mode OC3,
+UTP155, UTP25, DS3 and E3). Go to:
+ www.iphase.com/products/ClassSheet.cfm?ClassID=ATM
+for more info about the cards. Say Y (or M to compile as a module
+named iphase.o) here if you have one of these cards.
+
+See the file Documentation/networking/iphase.txt for further
+details.
+.
+ATM_IA_DEBUG 'Enable debugging messages' text
+Somewhat useful debugging messages are available. The choice of
+messages is controlled by a bitmap. This may be specified as a
+module argument (kernel command line argument as well?), changed
+dynamically using an ioctl (Get the debug utility, iadbg, from
+ftp.iphase.com/pub/atm/pci). See the file drivers/atm/iphase.h
+for the meanings of the bits in the mask.
+
+When active, these messages can have a significant impact on the
+speed of the driver, and the size of your syslog files! When
+inactive, they will have only a modest impact on performance.
+.
+ATM_FORE200E_MAYBE 'FORE Systems 200E-series' text
+This is a driver for the FORE Systems 200E-series ATM adapter
+cards. It simultaneously supports PCA-200E and SBA-200E models
+on PCI and SBUS hosts. Say Y (or M to compile as a module
+named fore_200e.o) here if you have one of these ATM adapters.
+
+Note that the driver will actually be compiled only if you
+additionally enable the support for PCA-200E and/or SBA-200E
+cards.
+
+See the file Documentation/networking/fore200e.txt for further
+details.
+.
+ATM_FORE200E_PCA 'Enable PCA-200E card support on PCI-based hosts' text
+Say Y here if you want your PCA-200E cards to be probed.
+.
+ATM_FORE200E_PCA_DEFAULT_FW 'Use default PCA-200E firmware' text
+Use the default PCA-200E firmware data shipped with the driver.
+
+Normal users do not have to deal with the firmware stuff, so
+they should say Y here.
+.
+ATM_FORE200E_PCA_FW 'Pathname of user-supplied binary firmware' text
+This defines the pathname of an alternative PCA-200E binary
+firmware image supplied by the user. This pathname may be
+absolute or relative to the drivers/atm directory.
+
+The driver comes with an adequate firmware image, so normal users do
+not have to supply an alternative one. They just say Y to "Use
+default PCA-200E firmware" instead.
+.
+ATM_FORE200E_SBA 'Enable SBA-200E card support on SBUS-based hosts' text
+Say Y here if you want your SBA-200E cards to be probed.
+.
+ATM_FORE200E_SBA_DEFAULT_FW 'Use default SBA-200E firmware' text
+Use the default SBA-200E firmware data shipped with the driver.
+
+Normal users do not have to deal with the firmware stuff, so
+they should say Y here.
+.
+ATM_FORE200E_SBA_FW 'Pathname of user-supplied binary firmware' text
+This defines the pathname of an alternative SBA-200E binary
+firmware image supplied by the user. This pathname may be
+absolute or relative to the drivers/atm directory.
+
+The driver comes with an adequate firmware image, so normal users do
+not have to supply an alternative one. They just say Y to "Use
+default SBA-200E firmware", above.
+.
+ATM_FORE200E_TX_RETRY 'Maximum number of tx retries' text
+Specifies the number of times the driver attempts to transmit
+a message before giving up, if the transmit queue of the ATM card
+is transiently saturated.
+
+Saturation of the transmit queue may occur only under extreme
+conditions, e.g. when a fast host continuously submits very small
+frames (<64 bytes) or raw AAL0 cells (48 bytes) to the ATM adapter.
+
+Note that under common conditions, it is unlikely that you encounter
+a saturation of the transmit queue, so the retry mechanism never
+comes into play.
+.
+ATM_FORE200E_DEBUG 'Debugging level (0-3)' text
+Specifies the level of debugging messages issued by the driver.
+The verbosity of the driver increases with the value of this
+parameter.
+
+When active, these messages can have a significant impact on
+the performances of the driver, and the size of your syslog files!
+Keep the debugging level to 0 during normal operations.
+.
+#
+# Parport configuration.
+PARPORT 'Parallel-port support' text
+If you want to use devices connected to your machine's parallel port
+(the connector at the computer with 25 holes), e.g. printer, ZIP
+drive, PLIP link (Parallel Line Internet Protocol is mainly used to
+create a mini network by connecting the parallel ports of two local
+machines) etc., then you need to say Y here; please read
+Documentation/parport.txt and drivers/parport/BUGS-parport.
+
+For extensive information about drivers for many devices attaching
+to the parallel port see http://www.torque.net/linux-pp.html on the
+WWW.
+
+It is possible to share a single parallel port among several devices
+and it is safe to compile all the corresponding drivers into the
+kernel. If you want to compile parallel port support 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 parport.o. If you have more than one
+parallel port and want to specify which port and IRQ to be used by
+this driver at module load time, take a look at
+Documentation/parport.txt.
+
+If unsure, say Y.
+.
+PARPORT_PC 'PC-style hardware' text
+You should say Y here if you have a PC-style parallel port. All IBM
+PC compatible computers and some Alphas have PC-style parallel
+ports.
+
+This code is also available as a module. If you want to compile it
+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 parport_pc.o.
+
+If unsure, say Y.
+.
+PARPORT_PC_FIFO 'Use FIFO/DMA if available' text
+Many parallel port chipsets provide hardware that can speed up
+printing. Say Y here if you want to take advantage of that.
+
+As well as actually having a FIFO, or DMA capability, the kernel
+will need to know which IRQ the parallel port has. By default,
+parallel port interrupts will not be used, and so neither will the
+FIFO. See Documentation/parport.txt to find out how to specify
+which IRQ/DMA to use.
+.
+PARPORT_PC_SUPERIO 'SuperIO chipset support' text
+Saying Y here enables some probes for Super-IO chipsets in order to
+find out things like base addresses, IRQ lines and DMA channels. It
+is safe to say N.
+.
+PARPORT_SERIAL 'Multi-IO cards (parallel and serial)' text
+This adds support for multi-IO PCI cards that have parallel and serial
+ports. You should say Y or M here. If you say M, the module will be
+called parport_serial.o.
+.
+PARPORT_PC_PCMCIA 'Support for PCMCIA management for PC-style ports'
+text
+Say Y here if you need PCMCIA support for your PC-style parallel
+ports. If unsure, say N.
+.
+#PARPORT_ARC 'Archimedes hardware'
+#PARPORT_AMIGA 'Amiga builtin port'
+PARPORT_MFC3 'Multiface III parallel port support' text
+Say Y here if you need parallel port support for the MFC3 card.
+This code is also available as a module (say M), called
+parport_mfc3.o. If in doubt, saying N is the safe plan.
+.
+#PARPORT_ATARI 'Atari hardware'
+PARPORT_OTHER 'Support foreign hardware' text
+Say Y here if you want to be able to load driver modules to support
+other non-standard types of parallel ports. This causes a
+performance loss, so most people say N.
+.
+PARPORT_1284 'IEEE 1284 transfer modes' text
+If you have a printer that supports status readback or device ID, or
+want to use a device that uses enhanced parallel port transfer modes
+such as EPP and ECP, say Y here to enable advanced IEEE 1284
+transfer modes. Also say Y if you want device ID information to
+appear in /proc/sys/dev/parport/*/autoprobe*. It is safe to say N.
+.
+SUN_BPP 'Sun bidirectional parallel port support'
+
+PARPORT_SUNBPP 'Sparc hardware' text
+This driver provides support for the bidirectional parallel port
+found on many Sun machines. Note that many of the newer Ultras
+actually have pc style hardware instead.
+.
+#
+# PCMCIA bus subsystem configuration
+PCMCIA 'PCMCIA/CardBus support' text
+Say Y here if you want to attach PCMCIA- or PC-cards to your Linux
+computer. These are credit-card size devices such as network cards,
+modems or hard drives often used with laptops computers. There are
+actually two varieties of these cards: the older 16 bit PCMCIA cards
+and the newer 32 bit CardBus cards. If you want to use CardBus
+cards, you need to say Y here and also to "CardBus support" below.
+
+To use your PC-cards, you will need supporting software from David
+Hinds' pcmcia-cs package (see the file Documentation/Changes for
+location). Please also read the PCMCIA-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto
+
+This driver is also available as a module ( = code which can be
+inserted in and removed from the running kernel whenever you want).
+When compiled this way, there will be modules called pcmcia_core.o
+and ds.o. If you want to compile it as a module, say M here and
+read Documentation/modules.txt.
+.
+CARDBUS 'CardBus support' text
+CardBus is a bus mastering architecture for PC-cards, which allows
+for 32 bit PC-cards (the original PCMCIA standard specifies only
+a 16 bit wide bus). Many newer PC-cards are actually CardBus cards.
+
+To use your PC-cards, you will need supporting software from David
+Hinds' pcmcia-cs package (see the file Documentation/Changes for
+location).
+
+If unsure, say Y.
+.
+I82092 'ompatible bridge support'
+
+I82365 'i82365 compatible bridge support' text
+Say Y here to include support for PCMCIA and CardBus host bridges
+that are register compatible with the Intel i82365 and/or the Yenta
+specification: this includes virtually all modern PCMCIA bridges.
+"Bridge" is the name used for the hardware inside your computer that
+PCMCIA cards are plugged into. If unsure, say Y.
+.
+TCIC 'Databook TCIC host bridge support' text
+Say Y here to include support for the Databook TCIC family of PCMCIA
+host bridges. These are only found on a handful of old systems.
+"Bridge" is the name used for the hardware inside your computer that
+PCMCIA cards are plugged into. If unsure, say N.
+.
+#HD64465_PCMCIA 'HD64465 host bridge support'
+#
+# Character device configuration
+I2C 'I2C support' text
+I2C (pronounce: I-square-C) is a slow serial bus protocol used in
+many micro controller applications and developed by Philips. SMBus,
+or System Management Bus is a subset of the I2C protocol. More
+information is contained in the directory Documentation/i2c/,
+especially in the file called "summary" there.
+
+Both I2C and SMBus are supported here. You will need this for
+hardware sensors support, and also for Video for Linux support.
+Specifically, if you want to use a BT848 based frame grabber/overlay
+boards under Linux, say Y here and also to "I2C bit-banging
+interfaces", below.
+
+If you want I2C support, you should say Y here and also to the
+specific driver for your bus adapter(s) below. If you say Y to
+"/proc file system" below, you will then get a /proc interface which
+is documented in Documentation/i2c/proc-interface.
+
+This I2C support is also available as a module. If you want to
+compile it as a module, say M here and read
+Documentation/modules.txt. The module will be called i2c-core.o.
+.
+BBC_I2C 'UltraSPARC-III bootbus i2c controller driver'
+
+I2C_ALGOBIT 'I2C bit-banging interfaces' text
+This allows you to use a range of I2C adapters called bit-banging
+adapters. Say Y if you own an I2C adapter belonging to this class
+and then say Y to the specific driver for you adapter below.
+
+This support is also available as a module. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. The
+module will be called i2c-algo-bit.o.
+.
+I2C_PHILIPSPAR 'Philips style parallel port adapter' text
+This supports parallel-port I2C adapters made by Philips. Say Y if
+you own such an adapter.
+
+This driver is also available as a module. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. The
+module will be called i2c-philips-par.o.
+
+Note that if you want support for different parallel port devices,
+life will be much easier if you compile them all as modules.
+.
+I2C_ELV 'ELV adapter' text
+This supports parallel-port I2C adapters called ELV. Say Y if you
+own such an adapter.
+
+This driver is also available as a module. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. The
+module will be called i2c-elv.o.
+.
+I2C_VELLEMAN 'Velleman K9000 adapter' text
+This supports the Velleman K9000 parallel-port I2C adapter. Say Y if
+you own such an adapter.
+
+This driver is also available as a module. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. The
+module will be called i2c-velleman.o.
+.
+I2C_ALGOPCF 'I2C PCF 8584 interfaces' text
+This allows you to use a range of I2C adapters called PCF adapters.
+Say Y if you own an I2C adapter belonging to this class and then say
+Y to the specific driver for you adapter below.
+
+This support is also available as a module. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. The
+module will be called i2c-algo-pcf.o.
+.
+I2C_ELEKTOR 'Elektor ISA card' text
+This supports the PCF8584 ISA bus I2C adapter. Say Y if you own such
+an adapter.
+
+This driver is also available as a module. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. The
+module will be called i2c-elektor.o.
+.
+I2C_CHARDEV 'I2C device interface' text
+Say Y here to use i2c-* device files, usually found in the /dev
+directory on your system. They make it possible to have user-space
+programs use the I2C bus. Information on how to do this is contained
+in the file Documentation/i2c/dev-interface.
+
+This code is also available as a module. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. The
+module will be called i2c-dev.o.
+.
+ITE_I2C_ALGO 'ITE I2C Algorithm'
+
+ITE_I2C_ADAP 'ITE I2C Adapter'
+
+I2C_ALGO8XX 'MPC8xx CPM I2C interface'
+
+I2C_RPXLITE 'Embedded Planet RPX Lite/Classic suppoort'
+
+I2C_PPC405_ALGO 'PPC 405 I2C Algorithm'
+
+I2C_PPC405_ADAP 'PPC 405 I2C Adapter'
+
+I2C_PROC 'I2C /proc interface (required for hardware sensors)'
+
+#
+# Telephony device configuration
+PHONE 'Linux telephony support' text
+Say Y here if you have a telephony card, which for example allows
+you to use a regular phone for voice-over-IP applications.
+
+Note: this has nothing to do with modems. You do not need to say Y
+here in order to be able to use a modem under Linux.
+
+This support is also available as a module. If you want to compile
+it as a module, say M here and read Documentation/modules.txt. The
+module will be called phonedev.o.
+.
+PHONE_IXJ 'QuickNet Internet LineJack/PhoneJack support' text
+Say M if you have a telephony card manufactured by Quicknet
+Technologies, Inc. These include the Internet PhoneJACK and
+Internet LineJACK Telephony Cards. You will get a module called
+ixj.o.
+
+For the ISA versions of these products, you can configure the
+cards using the isapnp tools (pnpdump/isapnp) or you can use the
+isapnp support. Please read Documentation/telephony/ixj.txt.
+
+For more information on these cards, see Quicknet's web site at:
+http://www.quicknet.net/ .
+
+If you do not have any Quicknet telephony cards, you can safely
+say N here.
+.
+PHONE_IXJ_PCMCIA 'QuickNet Internet LineJack/PhoneJack PCMCIA support'
+
+#
+# FireWire support
+IEEE1394 'IEEE 1394 (FireWire) support' text
+IEEE 1394 describes a high performance serial bus, which is also
+known as FireWire(tm) or i.Link(tm) and is used for connecting all
+sorts of devices (most notably digital video cameras) to your
+computer.
+
+If you have FireWire hardware and want to use it, say Y here. This
+is the core support only, you will also need to select a driver for
+your IEEE 1394 adapter.
+
+If you want to compile this 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 ieee1394.o.
+.
+IEEE1394_PCILYNX 'Texas Instruments PCILynx support' text
+Say Y here if you have an IEEE-1394 controller with the Texas
+Instruments PCILynx chip. Note: this driver is written for revision
+2 of this chip and may not work with revision 0.
+
+If you want to compile this 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 pcilynx.o.
+.
+IEEE1394_PCILYNX_LOCALRAM 'Use local RAM on PCILynx board' text
+This option makes the PCILynx driver use local RAM available on some
+PCILynx setups for Packet Control Lists. Local RAM is random access
+memory which resides on the PCILynx board as opposed to on your
+computer's motherboard. Local RAM may speed up command processing
+because no PCI transfers are necessary during use of the Packet
+Control Lists.
+
+Note that there are no known PCILynx systems providing local RAM
+except for the evaluation boards by Texas Instruments and that the
+PCILynx does not reliably report missing RAM. This means that it is
+dangerous to say Y here if you are not absolutely sure that your
+board provides 64KB of local RAM.
+
+If unsure, say N.
+.
+IEEE1394_PCILYNX_PORTS 'Support for non-IEEE1394 local ports' text
+This option enables driver code to access the RAM, ROM and AUX ports
+of the PCILynx through character devices in /dev. If you don't know
+what this is about then you won't need it.
+
+If unsure, say N.
+.
+#IEEE1394_AIC5800 'Adaptec AIC-5800 (AHA-89xx) support'
+IEEE1394_OHCI1394 'OHCI (Open Host Controller Interface) support' text
+Enable this driver if you have an IEEE 1394 controller based on the
+OHCI-1394 specification. The current driver is only tested with OHCI
+chipsets made by Texas Instruments and NEC. Most third-party vendors
+use one of these chipsets. It should work with any OHCI-1394 compliant
+card, however.
+
+If you want to compile this 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 ohci1394.o.
+.
+IEEE1394_SBP2 'SBP-2 support (Harddisks etc.)' text
+This option enables you to use SBP-2 devices connected to your IEEE 1394
+bus. SBP-2 devices include harddrives and DVD devices.
+.
+IEEE1394_VIDEO1394 'Video1394 support' text
+This option enables video device usage for OHCI-1394 cards. Enable this
+option only if you have an IEEE 1394 video device connected to an
+OHCI-1394 card.
+.
+IEEE1394_RAWIO 'Raw IEEE 1394 I/O support' text
+Say Y here if you want support for the raw device. This is generally
+a good idea, so you should say Y here. The raw device enables
+direct communication of user programs with the IEEE 1394 bus and
+thus with the attached peripherals.
+
+If you want to compile this 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 raw1394.o.
+.
+IEEE1394_VERBOSEDEBUG 'Excessive debugging output' text
+If you say Y here, you will get very verbose debugging logs from the
+subsystem which includes a dump of the header of every sent and
+received packet. This can amount to a high amount of data collected
+in a very short time which is usually also saved to disk by the
+system logging daemons.
+
+Say Y if you really want or need the debugging output, everyone else
+says N.
+.
+#
+# Define implied options from the CPU selection here
+# Some of these (MATH_EMULATION) are used by non-X86 ports.
+X86 'Intel or compatible 80x86 processor'
+
+# Processor family (default is 'PPro')
+M386 '386' text
+This is the processor type of your CPU. This information is used for
+optimizing purposes. In order to compile a kernel that can run on
+all x86 CPU types (albeit not optimally fast), you can specify
+"386" here.
+
+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, 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 and UMC U5D or U5S.
+ - "586" for generic Pentium CPUs, possibly lacking the TSC
+ (time stamp counter) register.
+ - "Pentium-Classic" for the Intel Pentium.
+ - "Pentium-MMX" for the Intel Pentium MMX.
+ - "Pentium-Pro" for the Intel Pentium Pro/Celeron/Pentium II.
+ - "Pentium-III" for the Intel Pentium III
+ and Celerons based on the coppermine core.
+ - "Pentium-4" for the Intel Pentium 4.
+ - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
+ - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
+ - "Crusoe" for the Transmeta Crusoe series.
+ - "Winchip-C6" for original IDT Winchip.
+ - "Winchip-2" for IDT Winchip 2.
+ - "Winchip-2A" for IDT Winchips with 3dNow! capabilities.
+ - "CyrixIII" for VIA Cyrix III or VIA C3.
+
+If you don't know what to do, choose "386".
+.
+M486 '486'
+
+M586 '586/K5/5x86/6x86/6x86MX'
+
+M586TSC 'Pentium Classic'
+
+M586MMX 'Pentium MMX'
+
+M686 'Pentium Pro/Celeron/Pentium II'
+
+MPENTIUMIII 'Pentium-III/Celeron-Coppermine'
+
+MPENTIUM4 'Pentium-4'
+
+MK6 'K6/K6-II/K6-III'
+
+MK7 'Athlon/Duron/K7'
+
+MCRUSOE 'Crusoe'
+
+MWINCHIPC6 'Winchip-C6'
+
+MWINCHIP2 'Winchip-2'
+
+MWINCHIP3D 'Winchip-2A/Winchip-3'
+
+MCYRIXIII 'CyrixIII/C3'
+
+# High Memory Support (default 'off')
+NOHIGHMEM 'off' text
+Linux can use up to 64 Gigabytes of physical memory on x86 systems.
+However, the address space of 32-bit x86 processors is only 4
+Gigabytes large. That means that, if you have a large amount of
+physical memory, not all of it can be "permanently mapped" by the
+kernel. The physical memory that's not permanently mapped is called
+"high memory".
+
+If you are compiling a kernel which will never run on a machine with
+more than 1 Gigabyte total physical RAM, answer "off" here (default
+choice and suitable for most users). This will result in a "3GB/1GB"
+split: 3GB are mapped so that each process sees a 3GB virtual memory
+space and the remaining part of the 4GB virtual memory space is used
+by the kernel to permanently map as much physical memory as
+possible.
+
+If the machine has between 1 and 4 Gigabytes physical RAM, then
+answer "4GB" here.
+
+If more than 4 Gigabytes is used then answer "64GB" here. This
+selection turns Intel PAE (Physical Address Extension) mode on.
+PAE implements 3-level paging on IA32 processors. PAE is fully
+supported by Linux, PAE mode is implemented on all recent Intel
+processors (Pentium Pro and better). NOTE: If you say "64GB" here,
+then the kernel will not boot on CPUs that don't support PAE!
+
+The actual amount of total physical memory will either be
+auto detected or can be forced by using a kernel command line option
+such as "mem=256M". (Try "man bootparam" or see the documentation of
+your boot loader (lilo or loadlin) about how to pass options to the
+kernel at boot time.)
+
+If unsure, say "off".
+.
+HIGHMEM4G '4GB'
+
+HIGHMEM64G '64GB'
+
+# Other port symbols
+TOSHIBA 'Toshiba Laptop support' text
+This adds a driver to safely access the System Management Mode
+of the CPU on Toshiba portables. The System Management Mode
+is used to set the BIOS and power saving options on Toshiba portables.
+
+For information on utilities to make use of this driver see the
+Toshiba Linux utilities web site at:
+http://www.buzzard.org.uk/toshiba/
+
+Say Y if you intend to run this kernel on a Toshiba portable.
+Say N otherwise.
+.
+I8K 'Dell Inspiron 8000 support' text
+This adds a driver to safely access the System Management Mode
+of the CPU on the Dell Inspiron 8000. The System Management Mode
+is used to read cpu temperature and cooling fan status and to
+control the fans on the I8K portables.
+
+This driver has been tested only on the Inspiron 8000 but it may
+also work with other Dell laptops. You can force loading on other
+models by passing the parameter `force=1' to the module. Use at
+your own risk.
+
+For information on utilities to make use of this driver see the
+I8K Linux utilities web site at:
+http://www.debian.org/~dz/i8k/
+
+Say Y if you intend to run this kernel on a Dell Inspiron 8000.
+Say N otherwise.
+.
+MICROCODE '/dev/cpu/microcode - Intel IA32 CPU microcode support' text
+If you say Y here and also to "/dev file system support" in the
+'File systems' section, you will be able to update the microcode on
+Intel processors in the IA32 family, e.g. Pentium Pro, Pentium II,
+Pentium III, Pentium 4, Xeon etc. You will obviously need the actual
+microcode binary data itself which is not shipped with the Linux kernel.
+
+For latest news and information on obtaining all the required
+ingredients for this driver, check:
+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).
+The module will be called microcode.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt. If you use
+modprobe or kmod you may also want to add the line
+'alias char-major-10-184 microcode' to your /etc/modules.conf file.
+.
+X86_MSR '/dev/cpu/*/msr - Model-specific register support' text
+This device gives privileged processes access to the x86
+Model-Specific Registers (MSRs). It is a character device with
+major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
+MSR accesses are directed to a specific CPU on multi-processor
+systems.
+.
+X86_CPUID '/dev/cpu/*/cpuid - CPU information support' text
+This device gives processes access to the x86 CPUID instruction to
+be executed on a specific processor. It is a character device
+with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
+/dev/cpu/31/cpuid.
+.
+MATH_EMULATION 'Kernel math emulation' text
+Linux can emulate a math coprocessor (used for floating point
+operations) if you don't have one. 486DX and Pentium processors have
+a math coprocessor built in, 486SX and 386 do not, unless you added
+a 487DX or 387, respectively. (The messages during boot time can
+give you some hints here ["man dmesg"].) Everyone needs either a
+coprocessor or this emulation.
+
+If you don't have a math coprocessor, you need to say Y here; if you
+say Y here even though you have a coprocessor, the coprocessor will
+be used nevertheless. (This behavior can be changed with the kernel
+command line option "no387", which comes handy if your coprocessor
+is broken. Try "man bootparam" or see the documentation of your boot
+loader (lilo or loadlin) about how to pass options to the kernel at
+boot time.) This means that it is a good idea to say Y here if you
+intend to use this kernel on different machines.
+
+More information about the internals of the Linux math coprocessor
+emulation can be found in arch/i386/math-emu/README.
+
+If you are not sure, say Y; apart from resulting in a 66 KB bigger
+kernel, it won't hurt.
+.
+MTRR 'MTRR (Memory Type Range Register) support' text
+On Intel P6 family processors (Pentium Pro, Pentium II and later)
+the Memory Type Range Registers (MTRRs) may be used to control
+processor access to memory ranges. This is most useful if you have
+a video (VGA) card on a PCI or AGP bus. Enabling write-combining
+allows bus write transfers to be combined into a larger transfer
+before bursting over the PCI/AGP bus. This can increase performance
+of image write operations 2.5 times or more. Saying Y here creates a
+/proc/mtrr file which may be used to manipulate your processor's
+MTRRs. Typically the X server should use this.
+
+This code has a reasonably generic interface so that similar
+control registers on other processors can be easily supported
+as well:
+
+The Cyrix 6x86, 6x86MX and M II processors have Address Range
+Registers (ARRs) which provide a similar functionality to MTRRs. For
+these, the ARRs are used to emulate the MTRRs.
+The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
+MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing
+write-combining. All of these processors are supported by this code
+and it makes sense to say Y here if you have one of them.
+
+Saying Y here also fixes a problem with buggy SMP BIOSes which only
+set the MTRRs for the boot CPU and not for the secondary CPUs. This
+can lead to all sorts of problems, so it's good to say Y here.
+
+You can safely say Y even if your machine doesn't have MTRRs, you'll
+just add about 9 KB to your kernel.
+
+See Documentation/mtrr.txt for more information.
+.
+X86_UP_APIC 'Local APIC Support on Uniprocessors' text
+A local APIC (Advanced Programmable Interrupt Controller) is an
+integrated interrupt controller in the CPU. If you have a single-CPU
+system which has a processor with a local APIC, you can say Y here to
+enable and use it. If you say Y here even though your machine doesn't
+have a local APIC, then the kernel will still run with no slowdown at
+all. The local APIC supports CPU-generated self-interrupts (timer,
+performance counters), and the NMI watchdog which detects hard lockups.
+
+If you have a system with several CPUs, you do not need to say Y
+here: the local APIC will be used automatically.
+.
+X86_UP_IOAPIC 'IO-APIC support on uniprocessors' text
+An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an
+SMP-capable replacement for PC-style interrupt controllers. Most
+SMP systems and a small number of uniprocessor systems have one.
+If you have a single-CPU system with an IO-APIC, you can say Y here
+to use it. If you say Y here even though your machine doesn't have
+an IO-APIC, then the kernel will still run with no slowdown at all.
+
+If you have a system with several CPUs, you do not need to say Y
+here: the IO-APIC will be used automatically.
+.
+MULTIQUAD 'Multiquad NUMA system' text
+This option is used for getting Linux to run on a (IBM/Sequent) NUMA
+multiquad box. This changes the way that processors are bootstrapped,
+and uses Clustered Logical APIC addressing mode instead of Flat Logical.
+You will need a new lynxer.elf file to flash your firmware with - send
+email to Martin.Bligh@us.ibm.com
+.
+#VISWS 'SGI Visual Workstation support'
+MCA 'MCA support' text
+MicroChannel Architecture is found in some IBM PS/2 machines and
+laptops. It is a bus system similar to PCI or ISA. See
+Documentation/mca.txt (and especially the web page given there)
+before attempting to build an MCA bus kernel.
+.
+PM 'Power Management support' text
+"Power Management" means that parts of your computer are shut
+off or put into a power conserving "sleep" mode if they are not
+being used. There are two competing standards for doing this: APM
+and ACPI. If you want to use either one, say Y here and then also to
+the requisite support below.
+
+Power Management is most important for battery powered laptop
+computers; if you have a laptop, check out the Linux Laptop home
+page on the WWW at
+http://www.cs.utexas.edu/users/kharker/linux-laptop/ and the Battery
+Powered Linux mini-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+Note that, even if you say N here, Linux on the x86 architecture
+will issue the hlt instruction if nothing is to be done, thereby
+sending the processor to sleep and saving power.
+.
+ACPI 'ACPI support' text
+ACPI/OSPM support for Linux is currently under development. As such,
+this support is preliminary and EXPERIMENTAL. Configuring ACPI support
+enables kernel interfaces that allow higher level software (OSPM) to
+manipulate ACPI defined hardware and software interfaces, including
+the evaluation of ACPI control methods. If unsure, choose N here.
+Note, this option will enlarge your kernel by about 120K.
+
+This support requires an ACPI compliant platform (hardware/firmware).
+If both ACPI and Advanced Power Management (APM) support are
+configured, whichever is loaded first shall be used.
+
+This code DOES NOT currently provide a complete OSPM implementation --
+it has not yet reached APM's level of functionality. When fully
+implemented, Linux ACPI/OSPM will provide a more robust functional
+replacement for legacy configuration and power management interfaces,
+including the Plug-and-Play BIOS specification (PNP BIOS), the Multi-
+Processor Specification (MPS), and the Advanced Power Management
+specification (APM).
+
+Linux support for ACPI/OSPM is based on Intel Corporation's ACPI
+Component Architecture (ACPI CA). The latest ACPI CA source code,
+documentation, debug builds, and implementation status information
+can be downloaded from:
+http://developer.intel.com/technology/iapc/acpi/downloads.htm
+
+The ACPI mailing list may also be of interest:
+http://phobos.fs.tum.de/acpi/index.html
+.
+ACPI_DEBUG 'ACPI Debug Statements' text
+The ACPI driver can optionally report errors with a great deal
+of verbosity. Saying Y enables these statements. This will increase
+your kernel size by around 50K.
+.
+ACPI_BUSMGR 'ACPI Bus Manager' text
+The ACPI Bus Manager enumerates devices in the ACPI namespace, and
+handles PnP messages. All ACPI devices use its services, so using them
+requires saying Y here.
+.
+ACPI_SYS 'ACPI System Driver' text
+This driver will enable your system to shut down using ACPI, and dump
+your ACPI DSDT table using /proc/acpi/dsdt.
+.
+ACPI_CPU 'ACPI Processor Driver' text
+This driver installs ACPI as the idle handler for Linux, and uses ACPI
+C2 and C3 processor states to save power, on systems that support it.
+.
+ACPI_BUTTON 'ACPI Button' text
+This driver registers for events based on buttons, such as the power,
+sleep, and lid switch. In the future, a daemon will read
+/proc/acpi/event and perform user-defined actions such as shutting
+down the system. Until then, you can cat it, and see output when
+a button is pressed.
+.
+ACPI_AC 'ACPI AC Adapter' text
+This driver adds support for the AC Adapter object, which indicates
+whether a system is on AC, or not. Typically, only laptops have this
+object, since desktops are always on AC.
+.
+ACPI_EC 'ACPI Embedded Controller' text
+This driver is required on some systems for the proper operation of the
+battery and thermal drivers. If you are compiling for a laptop, say Y.
+.
+ACPI_CMBATT 'ACPI Control Method Battery' text
+This driver adds support for battery information through
+/proc/acpi/battery. If you have a laptop with a battery, say Y.
+.
+ACPI_THERMAL 'ACPI Thermal' text
+This driver handles overheating conditions on laptops. It is HIGHLY
+recommended, as your laptop CPU may be damaged without it.
+.
+#ACPI_INTERPRETER 'ACPI interpreter'
+APM 'Advanced Power Management BIOS support' text
+APM is a BIOS specification for saving power using several different
+techniques. This is mostly useful for battery powered laptops with
+APM compliant BIOSes. If you say Y here, the system time will be
+reset after a RESUME operation, the /proc/apm device will provide
+battery status information, and user-space programs will receive
+notification of APM "events" (e.g. battery status change).
+
+If you select "Y" here, you can disable actual use of the APM
+BIOS by passing the "apm=off" option to the kernel at boot time.
+
+Note that the APM support is almost completely disabled for
+machines with more than one CPU.
+
+In order to use APM, you will need supporting software. For location
+and more information, read Documentation/pm.txt and the Battery
+Powered Linux mini-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto .
+
+This driver does not spin down disk drives (see the hdparm(8)
+manpage ("man 8 hdparm") for that), and it doesn't turn off
+VESA-compliant "green" monitors.
+
+This driver does not support the TI 4000M TravelMate and the ACER
+486/DX4/75 because they don't have compliant BIOSes. Many "green"
+desktop machines also don't have compliant BIOSes, and this driver
+may cause those machines to panic during the boot phase.
+
+Generally, if you don't have a battery in your machine, there isn't
+much point in using this driver and you should say N. If you get
+random kernel OOPSes or reboots that don't seem to be related to
+anything, try disabling/enabling this option (or disabling/enabling
+APM in your BIOS).
+
+Some other things you should try when experiencing seemingly random,
+"weird" problems:
+
+ 1) make sure that you have enough swap space and that it is
+ enabled.
+ 2) pass the "no-hlt" option to the kernel
+ 3) switch on floating point emulation in the kernel and pass
+ the "no387" option to the kernel
+ 4) pass the "floppy=nodma" option to the kernel
+ 5) pass the "mem=4M" option to the kernel (thereby disabling
+ all but the first 4 MB of RAM)
+ 6) make sure that the CPU is not over clocked.
+ 7) read the sig11 FAQ at http://www.bitwizard.nl/sig11/
+ 8) disable the cache from your BIOS settings
+ 9) install a fan for the video card or exchange video RAM
+ 10) install a better fan for the CPU
+ 11) exchange RAM chips
+ 12) exchange the motherboard.
+
+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
+apm.o.
+.
+APM_IGNORE_USER_SUSPEND 'Ignore USER SUSPEND' text
+This option will ignore USER SUSPEND requests. On machines with a
+compliant APM BIOS, you want to say N. However, on the NEC Versa M
+series notebooks, it is necessary to say Y because of a BIOS bug.
+.
+APM_DO_ENABLE 'Enable APM at boot time' text
+Enable APM features at boot time. From page 36 of the APM BIOS
+specification: "When disabled, the APM BIOS does not automatically
+power manage devices, enter the Standby State, enter the Suspend
+State, or take power saving steps in response to CPU Idle calls."
+This driver will make CPU Idle calls when Linux is idle (unless this
+feature is turned off -- see "Do CPU IDLE calls", below). This
+should always save battery power, but more complicated APM features
+will be dependent on your BIOS implementation. You may need to turn
+this option off if your computer hangs at boot time when using APM
+support, or if it beeps continuously instead of suspending. Turn
+this off if you have a NEC UltraLite Versa 33/C or a Toshiba
+T400CDT. This is off by default since most machines do fine without
+this feature.
+.
+APM_CPU_IDLE 'Make CPU Idle calls when idle' text
+Enable calls to APM CPU Idle/CPU Busy inside the kernel's idle loop.
+On some machines, this can activate improved power savings, such as
+a slowed CPU clock rate, when the machine is idle. These idle calls
+are made after the idle loop has run for some length of time (e.g.,
+333 mS). On some machines, this will cause a hang at boot time or
+whenever the CPU becomes idle. (On machines with more than one CPU,
+this option does nothing.)
+.
+APM_DISPLAY_BLANK 'Enable console blanking using APM' text
+Enable console blanking using the APM. Some laptops can use this to
+turn off the LCD backlight when the screen blanker of the Linux
+virtual console blanks the screen. Note that this is only used by
+the virtual console screen blanker, and won't turn off the backlight
+when using the X Window system. This also doesn't have anything to
+do with your VESA-compliant power-saving monitor. Further, this
+option doesn't work for all laptops -- it might not turn off your
+backlight at all, or it might print a lot of errors to the console,
+especially if you are using gpm.
+.
+#APM_IGNORE_MULTIPLE_SUSPEND 'Ignore multiple suspend'
+#APM_IGNORE_SUSPEND_BOUNCE 'Ignore multiple suspend/resume cycles'
+APM_RTC_IS_GMT 'RTC stores time in GMT' text
+Say Y here if your RTC (Real Time Clock a.k.a. hardware clock)
+stores the time in GMT (Greenwich Mean Time). Say N if your RTC
+stores localtime.
+
+It is in fact recommended to store GMT in your RTC, because then you
+don't have to worry about daylight savings time changes. The only
+reason not to use GMT in your RTC is if you also run a broken OS
+that doesn't understand GMT.
+.
+APM_ALLOW_INTS 'Allow interrupts during APM BIOS calls' text
+Normally we disable external interrupts while we are making calls to
+the APM BIOS as a measure to lessen the effects of a badly behaving
+BIOS implementation. The BIOS should reenable interrupts if it
+needs to. Unfortunately, some BIOSes do not -- especially those in
+many of the newer IBM Thinkpads. If you experience hangs when you
+suspend, try setting this to Y. Otherwise, say N.
+.
+APM_REAL_MODE_POWER_OFF 'Use real mode APM BIOS call to power off' text
+Use real mode APM BIOS calls to switch off the computer. This is
+a work-around for a number of buggy BIOSes. Switch this option on if
+your computer crashes instead of powering off properly.
+.
+VIDEO_SELECT 'Video mode selection support' text
+This enables support for text mode selection on kernel startup. If
+you want to take advantage of some high-resolution text mode your
+card's BIOS offers, but the traditional Linux utilities like
+SVGATextMode don't, you can say Y here and set the mode using the
+"vga=" option from your boot loader (lilo or loadlin) or set
+"vga=ask" which brings up a video mode menu on kernel startup. (Try
+"man bootparam" or see the documentation of your boot loader about
+how to pass options to the kernel.)
+
+Read the file Documentation/svga.txt for more information about the
+Video mode selection support. If unsure, say N.
+.
+MDA_CONSOLE 'MDA text console (dual-headed)' text
+Say Y here if you have an old MDA or monochrome Hercules graphics
+adapter in your system acting as a second head ( = video card). You
+will then be able to use two monitors with your Linux system. Do not
+say Y here if your MDA card is the primary card in your system; the
+normal VGA driver will handle it.
+
+This driver is also available as a module ( = code which can be
+inserted and removed from the running kernel whenever you want).
+The module will be called mdacon.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+
+If unsure, say N.
+.
+IA32SUPPORT 'Kernel support for IA-32 emulation'
+
+#
+# Alpha port
+ALPHA 'Alpha processor'
+
+# Alpha system type (default is 'Generic')
+ALPHA_GENERIC 'Generic' text
+This is the system type of your hardware. A "generic" kernel will
+run on any supported Alpha system. However, if you configure a
+kernel for your specific system, it will be faster and smaller.
+
+To find out what type of Alpha system you have, you may want to
+check out the Linux/Alpha FAQ, accessible on the WWW from
+http://www.alphalinux.org . In summary:
+
+Alcor/Alpha-XLT AS 600
+Alpha-XL XL-233, XL-266
+AlphaBook1 Alpha laptop
+Avanti AS 200, AS 205, AS 250, AS 255, AS 300, AS 400
+Cabriolet AlphaPC64, AlphaPCI64
+DP264 DP264
+EB164 EB164 21164 evaluation board
+EB64+ EB64+ 21064 evaluation board
+EB66 EB66 21066 evaluation board
+EB66+ EB66+ 21066 evaluation board
+Jensen DECpc 150, DEC 2000 model 300,
+ DEC 2000 model 500
+LX164 AlphaPC164-LX
+Miata Personal Workstation 433a, 433au, 500a,
+ 500au, 600a, or 600au
+Mikasa AS 1000
+Noname AXPpci33, UDB (Multia)
+Noritake AS 1000A, AS 600A, AS 800
+PC164 AlphaPC164
+Rawhide AS 1200, AS 4000, AS 4100
+Ruffian RPX164-2, AlphaPC164-UX, AlphaPC164-BX
+SX164 AlphaPC164-SX
+Sable AS 2000, AS 2100
+Shark DS 20L
+Takara Takara
+Titan Privateer
+Wildfire AlphaServer GS 40/80/160/320
+
+If you don't know what to do, choose "generic".
+.
+ALPHA_ALCOR 'Alcor/Alpha-XLT'
+
+ALPHA_XL 'Alpha-XL'
+
+ALPHA_BOOK1 'AlphaBook1'
+
+ALPHA_AVANTI_REAL 'Avanti'
+
+ALPHA_CABRIOLET 'Cabriolet'
+
+ALPHA_DP264 'DP264'
+
+ALPHA_EB164 'EB164'
+
+ALPHA_EB64P 'EB64+'
+
+ALPHA_EB66 'EB66'
+
+ALPHA_EB66P 'EB66+'
+
+ALPHA_EIGER 'Eiger'
+
+ALPHA_JENSEN 'Jensen'
+
+ALPHA_LX164 'LX164'
+
+ALPHA_MIATA 'Miata'
+
+ALPHA_MIKASA 'Mikasa'
+
+ALPHA_NAUTILUS 'Nautilus'
+
+ALPHA_NONAME 'Noname'
+
+ALPHA_NORITAKE 'Noritake'
+
+ALPHA_PC164 'PC164'
+
+ALPHA_P2K 'Platform2000'
+
+ALPHA_RAWHIDE 'Rawhide'
+
+ALPHA_RUFFIAN 'Ruffian'
+
+ALPHA_RX164 'RX164'
+
+ALPHA_SX164 'SX164'
+
+ALPHA_SABLE 'Sable'
+
+ALPHA_SHARK 'Shark'
+
+ALPHA_TAKARA 'Takara'
+
+ALPHA_TITAN 'Titan'
+
+ALPHA_WILDFIRE 'Wildfire'
+
+# Other ALPHA port symbols
+ALPHA_EV67 'EV67 (or later) CPU (speed > 600MHz)?'
+
+ALPHA_PRIMO 'EV5 CPU daughtercard (model 5/xxx)' text
+Say Y if you have an AS 1000 5/xxx or an AS 1000A 5/xxx.
+.
+ALPHA_GAMMA 'EV5 CPU(s) (model 5/xxx)' text
+Say Y if you have an AS 2000 5/xxx or an AS 2100 5/xxx.
+.
+ALPHA_SRM 'Use SRM as bootloader' text
+There are two different types of booting firmware on Alphas: SRM,
+which is command line driven, and ARC, which uses menus and arrow
+keys. Details about the Linux/Alpha booting process are contained in
+the Linux/Alpha FAQ, accessible on the WWW from
+http://www.alphalinux.org .
+
+The usual way to load Linux on an Alpha machine is to use MILO
+(a bootloader that lets you pass command line parameters to the
+kernel just like lilo does for the x86 architecture) which can be
+loaded either from ARC or can be installed directly as a permanent
+firmware replacement from floppy (which requires changing a certain
+jumper on the motherboard). If you want to do either of these, say N
+here. If MILO doesn't work on your system (true for Jensen
+motherboards), you can bypass it altogether and boot Linux directly
+from an SRM console; say Y here in order to do that. Note that you
+won't be able to boot from an IDE disk using SRM.
+
+If unsure, say N.
+.
+BINFMT_EM86 'Kernel support for Linux/Intel ELF binaries' text
+Say Y here if you want to be able to execute Linux/Intel ELF
+binaries just like native Alpha binaries on your Alpha machine. For
+this to work, you need to have the emulator /usr/bin/em86 in place.
+
+You can get the same functionality by saying N here and saying Y to
+"Kernel support for MISC binaries".
+
+You may answer M to compile the emulation support as a module and
+later load the module when you want to use a Linux/Intel binary. The
+module will be called binfmt_em86.o. If unsure, say Y.
+.
+ALPHA_LEGACY_START_ADDRESS 'Legacy kernel start address' text
+The 2.4 kernel changed the kernel start address from 0x310000
+to 0x810000 to make room for the Wildfire's larger SRM console.
+
+If you're using aboot 0.7 or later, the bootloader will examine
+the ELF headers to determine where to transfer control. Unfortunately,
+most older bootloaders -- APB or MILO -- hardcoded the kernel
+start address rather than examining the ELF headers, and the result
+is a hard lockup.
+
+Say Y if you have a broken bootloader. Say N if you do not, or
+if you wish to run on Wildfire.
+.
+SRM_ENV 'SRM environment through procfs' text
+If you enable this option, a subdirectory called srm_environment
+will give you access to the most important SRM environment
+variables. If you've got an Alpha style system supporting
+SRC, then it is a good idea to say Yes or Module to this driver.
+
+This driver is also available as a module and will be called
+srm_env.o if you build it as a module.
+.
+MATHEMU 'Kernel FP software completion' text
+This option is required for IEEE compliant floating point arithmetic
+on the Alpha. The only time you would ever not say Y is to say M in
+order to debug the code. Say Y unless you know what you are doing.
+.
+#
+# Sparc port
+SUN4 'Support for SUN4 machines (disables SUN4[CDM] support)' text
+Say Y here if, and only if, your machine is a Sun4. Note that
+a kernel compiled with this option will run only on Sun4.
+(And the current version will probably work only on sun4/330.)
+.
+PROM_CONSOLE 'Sun PROM console'
+
+SUN_OPENPROMFS 'Openprom tree appears in /proc/openprom' text
+If you say Y, the OpenPROM device tree will be available as a
+virtual file system, which you can mount to /proc/openprom by "mount
+-t openpromfs none /proc/openprom".
+
+If you want to compile the /proc/openprom support 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 openpromfs.o. If unsure, say M.
+.
+SUNOS_EMUL 'SunOS binary emulation' text
+This allows you to run most SunOS binaries. If you want to do this,
+say Y here and place appropriate files in /usr/gnemul/sunos. See
+http://www.ultralinux.org/faq.html for more information. If you want
+to run SunOS binaries on an Ultra you must also say Y to "Kernel
+support for 32-bit a.out binaries" above.
+.
+SCSI_SUNESP 'SPARC ESP SCSI support' text
+This is the driver for the Sun ESP SCSI host adapter. The ESP
+chipset is present in most SPARC SBUS-based computers.
+
+This support is also available as a module called esp.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.
+.
+SCSI_QLOGICPTI 'PTI Qlogic, ISP Driver' text
+This driver supports SBUS SCSI controllers from PTI or QLogic. These
+controllers are known under Solaris as qpti and in the openprom as
+PTI,ptisp or QLGC,isp. Note that PCI QLogic SCSI controllers are
+driven by a different driver.
+
+This support is also available as a module called qlogicpti.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.
+.
+SUN3LANCE 'Sun3/Sun3x on-board LANCE support'
+
+SUN3_82586 'Sun3 on-board Intel 82586 support'
+
+WINBOND_840 'Winbond W89c840 PCI Ethernet support' text
+This driver is for the Winbond W89c840 chip. It also works with
+the TX9882 chip on the Compex RL100-ATX board.
+More specific information and updates are available from
+http://www.scyld.com/network/drivers.html
+.
+HAPPYMEAL 'Sun Happy Meal 10/100baseT support' text
+This driver supports the "hme" interface present on most Ultra
+systems and as an option on older Sbus systems. This driver supports
+both PCI and Sbus devices. This driver also supports the "qfe" quad
+100baseT device available in both PCI and Sbus configurations.
+
+This support is also available as a module called sunhme.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.
+.
+SUNBMAC 'Sun BigMAC 10/100baseT support' text
+This driver supports the "be" interface available as an Sbus option.
+This is Sun's older 100baseT ethernet device.
+
+This support is also available as a module called sunbmac.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.
+.
+SUNQE 'Sun QuadEthernet support' text
+This driver supports the "qe" 10baseT ethernet device, available as
+an Sbus option. Note that this is not the same as Quad FastEthernet
+"qfe" which is supported by the Happy Meal driver instead.
+
+This support is also available as a module called sunqe.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.
+.
+#
+# CPU types for both MIPS ports
+CPU_R3000 'R3000' text
+Please make sure to pick the right CPU type. Linux/MIPS is not
+designed to be generic, i.e. Kernels compiled for R3000 CPUs will
+*not* work on R4000 Machines and vice versa.
+However, since most the supported Machines have an R4000 (or
+similar) CPU, R4xx0 might be a safe bet.
+If the resulting Kernel does not work try to recompile with R3000.
+.
+CPU_R6000 'R6000'
+
+CPU_VR41XX 'R41xx' text
+The options selects support for the NEC VR41xx series of processors.
+Only choose this option if you have one of these processors as a
+kernel built with this option will not run on any other type of
+processor or vice versa.
+.
+CPU_R4300 'R4300'
+
+CPU_R4X00 'R4x00'
+
+CPU_R5000 'R5000'
+
+CPU_R5432 'R5432'
+
+CPU_RM7000 'RM7000'
+
+CPU_R8000 'R8000'
+
+CPU_NEVADA 'R52x0'
+
+CPU_R10000 'R10000'
+
+CPU_SB1 'SB1'
+
+CPU_MIPS32 'MIPS32'
+
+CPU_MIPS64 'MIPS64'
+
+#
+# MIPS-32 port
+MIPS32 'MIPS-32 processor'
+
+ACER_PICA_61 'Support for Acer PICA 1 chipset' text
+This is a machine with a R4400 133/150 MHz CPU. To compile a Linux
+kernel that runs on these, say Y here. For details about Linux on
+the MIPS architecture, check out the Linux/MIPS FAQ on the WWW at
+http://oss.sgi.com/mips .
+.
+ALGOR_P4032 'Support for Algorithmics P4032' text
+This is an evaluation board of the British company Algorithmics. The
+board uses the R4300 and a R5230 CPUs. For more information about
+this board see http://www.algor.co.uk .
+.
+BAGET_MIPS 'Support for BAGET MIPS series' text
+This enables support for the Baget, a Russian embedded system. For
+more details about the Baget see the Linux/MIPS FAQ on
+http://oss.sgi.com/mips .
+.
+DECSTATION 'Support for DECstations' text
+This enables support for DEC's MIPS based workstations. For details
+see the Linux/MIPS FAQ on http://oss.sgi.com/mips and the
+DECstation porting pages on http://decstation.unix-ag.org .
+
+If you have one of the following DECstation Models you definitely
+want to choose R4xx0 for the CPU Type:
+
+ DECstation 5000/50
+ DECstation 5000/150
+ DECstation 5000/260
+ DECsystem 5900/260
+
+otherwise choose R3000.
+.
+DDB5074 'Support for NEC DDB Vrc-5074' text
+This enables support for the VR5000-based NEC DDB Vrc-5074
+evaluation board.
+.
+MIPS_EV96100 'Galileo EV96100 Evaluation board'
+
+MIPS_EV64120 'Galileo EV64120 Evaluation board'
+
+EVB_PCI1 'Enable Second PCI (PCI1)'
+
+MIPS_ATLAS 'Support for MIPS Atlas board' text
+This enables support for the QED R5231-based MIPS Atlas evaluation
+board.
+.
+MIPS_MALTA 'Support for MIPS Malta board' text
+This enables support for the VR5000-based MIPS Malta evaluation
+board.
+.
+NINO 'Support for Philips Nino'
+
+MIPS_MAGNUM_4000 'Support for Mips Magnum 4000' text
+This is a machine with a R4000 100 MHz CPU. To compile a Linux
+kernel that runs on these, say Y here. For details about Linux on
+the MIPS architecture, check out the Linux/MIPS FAQ on the WWW at
+http://oss.sgi.com/mips.
+.
+MOMENCO_OCELOT 'Support for the Momentum Computer Ocelot SBC'
+
+DDB5476 'Support for NEC DDB Vrc-5476' text
+This enables support for the R5432-based NEC DDB Vrc-5476
+evaluation board.
+
+Features : kernel debugging, serial terminal, NFS root fs, on-board
+ether port (with a patch to tulip driver), IDE controller, PS2 keyboard
+PS2 mouse, etc.
+
+TODO : USB, Compact-PCI interface.
+.
+DDB5477 'Support for NEC DDB Vrc-5477'
+
+OLIVETTI_M700 'Support for Olivetti M700' text
+This is a machine with a R4000 100 MHz CPU. To compile a Linux
+kernel that runs on these, say Y here. For details about Linux on
+the MIPS architecture, check out the Linux/MIPS FAQ on the WWW at
+http://oss.sgi.com/mips.
+.
+SGI_IP22 'Support for SGI-IP22,Indy/Indigo2' text
+This are the SGI Indy, Challenge S and Indigo2, as well as certain
+OEM variants like the Tandem CMN B006S. To compile a Linux kernel
+that runs on these, say Y here.
+
+Support for SGI IP27
+This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics
+workstations. To compile a Linux kernel that runs on these, say Y
+here.
+.
+SNI_RM200_PCI 'Support for SNI RM200 PCI'
+
+MIPS_ITE8172 'Support for ITE 8172G board'
+
+MIPS_IVR 'Support for Globespan IVR board'
+
+QTRONIX_KEYBOARD 'Enable Qtronix 990P Keyboard Support'
+
+IT8172_REVC 'Support for older IT8172 (Rev C)'
+
+MIPS_PS2_KEYB 'Enable PS2 Keyboard Support'
+
+IT8172_SCR0 'Enable Smart Card Reader 0 Support'
+
+IT8172_SCR1 'Enable Smart Card Reader 1 Support'
+
+MIPS_PB1000 'Support for Alchemy Semi PB1000 board'
+
+#CPU_ADVANCED 'Override CPU Options'
+CPU_HAS_LLSC 'll/sc Instructions available' text
+Say Y here if your CPU has the ll and sc instructions. Say Y here for
+better performance, N if you don't know. You must say Y here for
+multiprocessor machines.
+.
+CPU_HAS_LLDSCD 'lld/scd Instructions available' text
+Say Y here if your CPU has the lld and scd instructions, the 64-bit
+equivalents of ll and sc. Say Y here for better performance, N if
+you don't know. You must say Y here for multiprocessor machines.
+.
+CPU_HAS_WB 'Writeback Buffer available' text
+Say N here for slightly better performance. You must say Y here for
+machines which require flushing of write buffers in software. Saying
+Y is the safe option; N may result in kernel malfunction and crashes.
+.
+FORWARD_KEYBOARD 'Include forward keyboard'
+
+ARC_CONSOLE 'ARC console support' text
+Say Y here if you want to use the PROMs for console I/O.
+.
+TC 'TURBOchannel support'
+
+#ACCESSBUS 'Access.Bus support'
+SGI_PROM_CONSOLE 'SGI PROM Console Support'
+
+DZ 'DZ11 Serial Support'
+
+ZS 'Z85C30 Serial Support'
+
+SGI_NEWPORT_CONSOLE 'SGI Newport Console support' text
+Say Y here if you want the console on the Newport aka XL graphics
+card of your Indy. Most people say Y here.
+.
+CROSSCOMPILE 'Are you using a crosscompiler' text
+Say Y here if you are compiling the kernel on a different
+architecture than the one it is intended to run on.
+.
+#MIPS_FPE_MODULE 'Build fp exception handler module'
+SGISEEQ 'SGI Seeq Ethernet controller support' text
+Say Y here if you have an Seeq based Ethernet network card. This is
+used in many Silicon Graphics machines.
+.
+DECLANCE 'DEC LANCE Ethernet controller support'
+
+BAGETLANCE 'Baget AMD LANCE support'
+
+#BAGETBSM 'Baget Backplane Shared Memory support'
+# Galileo speed symbols
+SYSCLK_75 '75'
+
+SYSCLK_83 '83.3'
+
+SYSCLK_100 '100'
+
+# Nino model number
+NINO_4MB 'Model-300/301/302/319'
+
+NINO_8MB 'Model-200/210/312/320/325/350/390'
+
+NINO_16MB 'Model-500/510'
+
+#
+# MIPS-64 port (uses some MIPS-32 symbols)
+MIPS64 'MIPS-64 processor'
+
+SGI_IP27 'Support for SGI IP27, Origin200/2000'
+
+SGI_SN0_N_MODE 'IP27 N-Mode' text
+The nodes of Origin 200, Origin 2000 and Onyx 2 systems can be
+configured in either N-Modes which allows for more nodes or M-Mode
+which allows for more memory. Your system is most probably
+running in M-Mode, so you should say N here.
+.
+NUMA 'NUMA support?'
+
+MAPPED_KERNEL 'Mapped kernel support'
+
+REPLICATE_KTEXT 'Kernel text replication support'
+
+REPLICATE_EXHANDLERS 'Exception handler replication support'
+
+MIPS_INSANE_LARGE 'Support for large 64-bit configurations' text
+MIPS R10000 does support a 44 bit / 16TB address space as opposed to
+previous 64-bit processors which only supported 40 bit / 1TB. If you
+need processes of more than 1TB virtual address space, say Y here.
+This will result in additional memory usage, so it is not
+recommended for normal users.
+.
+MIPS32_COMPAT 'Kernel support for Linux/MIPS 32-bit binary compatibility'
+text
+Select this option if you want Linux/MIPS 32-bit binary
+compatibility. Since all software available for Linux/MIPS is
+currently 32-bit you should say Y here.
+.
+#
+# Power PC support
+PPC 'Power PC processor'
+
+# Processor Type (default is CONFIG_6xx)
+CONFIG_6xx '6xx/7xx/7400' text
+There are four types of PowerPC chips supported. The more common
+types (601, 603, 604, 740, 750, 7400), the Motorola embedded versions
+(821, 823, 850, 855, 860, 8260), 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. Note that the kernel
+runs in 32-bit mode even on 64-bit chips. Also note that because
+the 82xx family has a 603e core, specific support for that chipset
+is asked later on.
+.
+CONFIG_4xx '4xx'
+
+POWER3 'POWER3'
+
+POWER4 'POWER4'
+
+CONFIG_8260 'Motorola MPC8260 CPM support' text
+The MPC8260 CPM (Communications Processor Module) is a typical
+embedded CPU made by Motorola. Selecting this option means that you
+wish to build a kernel for a machine with specifically an 8260 for
+a CPU.
+
+If in doubt, say N.
+.
+CONFIG_8xx '8xx'
+
+# Machine Type (default is 'Oak')
+OAK 'Oak'
+
+WALNUT 'Walnut'
+
+# Machine Type (default is 'RPX-Lite')
+RPXLITE 'RPX-Lite' text
+RPX-Lite:
+ Embedded Planet RPX Lite
+
+RPX-Classic:
+ Embedded Planet RPX Classic Low-fat.
+
+BSE-IP:
+ Bright Star Engineering ip-Engine.
+
+TQM823L:
+TQM850L:
+TQM855L:
+TQM860L:
+ MPC8xx based family of mini modules, half credit card size,
+ up to 64 MB of RAM, 8 MB Flash, (Fast) Ethernet, 2 x serial ports,
+ 2 x CAN bus interface, ...
+ Manufacturer: TQ Components, www.tq-group.de
+ Date of Release: October (?) 1999
+ End of Life: not yet :-)
+ URL:
+ - module: http://www.denx.de/PDF/TQM8xxLHWM201.pdf
+ - starter kit: http://www.denx.de/PDF/STK8xxLHWM201.pdf
+ - images: http://www.denx.de/embedded-ppc-en.html
+
+FPS850L:
+ FingerPrint Sensor System (based on TQM850L)
+ Manufacturer: IKENDI AG, http://www.ikendi.com/
+ Date of Release: November 1999
+ End of life: end 2000 ?
+ URL: see TQM850L
+
+SPD823TS:
+ MPC823 based board used in the "Tele Server" product
+ Manufacturer: Speech Design, http://www.speech-design.de/
+ Date of Release: Mid 2000 (?)
+ End of life: -
+ URL: http://www.speech-design.de/
+ select "English", then "Teleteam Solutions", then "TeleServer"
+
+IVMS8:
+ MPC860 based board used in the "Integrated Voice Mail System",
+ Small Version (8 voice channels)
+ Manufacturer: Speech Design, http://www.speech-design.de/
+ Date of Release: December 2000 (?)
+ End of life: -
+ URL: http://www.speech-design.de/
+
+IVML24:
+ MPC860 based board used in the "Integrated Voice Mail System",
+ Large Version (24 voice channels)
+ Manufacturer: Speech Design, http://www.speech-design.de/
+ Date of Release: March 2001 (?)
+ End of life: -
+ URL: http://www.speech-design.de/
+
+SM850:
+ Service Module (based on TQM850L)
+ Manufacturer: Dependable Computer Systems, http://www.decomsys.com/
+ Date of Release: end 2000 (?)
+ End of life: mid 2001 (?)
+ URL: http://www.tz-mikroelektronik.de/ServiceModule/index.html
+
+HERMES:
+ Hermes-Pro ISDN/LAN router with integrated 8 x hub
+ Manufacturer: Multidata Gesellschaft für Datentechnik und Informatik
+ http://www.multidata.de/
+ Date of Release: 2000 (?)
+ End of life: -
+ URL: http://www.multidata.de/english/products/hpro.htm
+
+IP860:
+ VMEBus IP (Industry Pack) carrier board with MPC860
+ Manufacturer: MicroSys GmbH, http://www.microsys.de/
+ Date of Release: ?
+ End of life: -
+ URL: http://www.microsys.de/html/ip860.html
+
+PCU_E:
+ PCU = Peripheral Controller Unit, Extended
+ Manufacturer: Siemens AG, ICN (Information and Communication Networks)
+ http://www.siemens.de/page/1,3771,224315-1-999_2_226207-0,00.html
+ Date of Release: April 2001
+ End of life: August 2001
+ URL: n. a.
+.
+RPXCLASSIC 'RPX-Classic'
+
+BSEIP 'BSE-IP'
+
+FADS 'FADS'
+
+TQM823L 'TQM823L'
+
+TQM850L 'TQM850L'
+
+TQM855L 'TQM855L'
+
+TQM860L 'TQM860L'
+
+FPS850L 'FPS850L'
+
+TQM860 'TQM860'
+
+SPD823TS 'SPD823TS'
+
+IVMS8 'IVMS8'
+
+IVML24 'IVML24'
+
+SM850 'SM850'
+
+MBX 'MBX'
+
+WINCEPT 'WinCept'
+
+# Machine Type (default is 'PowerMac/PReP/MTX/CHRP')
+CONFIG_6xx_GENERIC 'CHRP/PowerMac/PReP'
+
+GEMINI 'Synergy-Gemini'
+
+APUS 'Amiga-Apus'
+
+# Other configuration symbols
+PPC601_SYNC_FIX 'Workarounds for PPC601 bugs' text
+Some versions of the PPC601 (the first PowerPC chip) have bugs which
+mean that extra synchronization instructions are required near certain
+instructions, typically those that make major changes to the CPU state.
+These extra instructions reduce performance slightly. If you say N
+here, these extra instructions will not be included, resulting in a
+kernel which will run faster but may not run at all on some systems
+with the PPC601 chip.
+
+If in doubt, say Y here.
+.
+EST8260 'Support for EST8260' text
+EST8260: Wind River System, Inc. EST SBC8260
+
+TQM8260:
+ MPC8260 based module, little larger than credit card,
+ up to 128 MB global + 64 MB local RAM, 32 MB Flash,
+ 32 kB EEPROM, 256 kB L@ Cache, 10baseT + 100baseT Ethernet,
+ 2 x serial ports, ...
+ Manufacturer: TQ Components, www.tq-group.de
+ Date of Release: June 2001
+ End of Life: not yet :-)
+ URL: http://www.denx.de/PDF/TQM82xx_SPEC_Rev005.pdf
+
+PM826:
+ Modular system with MPC8260 CPU
+ Manufacturer: MicroSys GmbH, http://www.microsys.de/
+ Date of Release: mid 2001
+ End of life: -
+ URL: http://www.microsys.de/html/pm826.html
+
+CU824:
+ VMEBus Board with PCI extension with MPC8240 CPU
+ Manufacturer: MicroSys GmbH, http://www.microsys.de/
+ Date of Release: early 2001 (?)
+ End of life: -
+ URL: http://www.microsys.de/html/cu824.html
+.
+ALTIVEC 'AltiVec support' text
+This option enables kernel support for the Altivec extensions to the
+PowerPC processor. The kernel currently supports saving and restoring
+altivec registers, and turning on the 'altivec enable' bit so user
+processes can execute altivec instructions.
+
+This option is only usefully if you have a processor that supports
+altivec (G4, otherwise known as 74xx series), but does not have
+any affect on a non-altivec cpu (it does, however add code to the
+kernel).
+
+If in doubt, say Y here.
+.
+TAU 'Thermal Management Support' text
+G3 and G4 processors have an on-chip temperature sensor called the
+'Thermal Assist Unit (TAU)', which, in theory, can measure the on-die
+temperature within 2-4 degrees celcius. This option shows the current
+on-die temperature in /proc/cpuinfo if the cpu supports it.
+
+Unfortunately, on some chip revisions, this sensor is very inaccurate
+and in some cases, does not work at all, so don't assume the cpu
+temp is actually what /proc/cpuinfo says it is.
+.
+TAU_INT 'Interrupt driven TAU driver' text
+The TAU supports an interrupt driven mode which causes an interrupt
+whenever the temperature goes out of range. This is the fastest way
+to get notified the temp has exceeded a range. With this option off,
+a timer is used to re-check the temperature periodically.
+
+However, on some cpus it appears that the TAU interrupt hardware
+is buggy and can cause a situation which would lead unexplained hard
+lockups.
+
+Unless you are extending the TAU driver, or enjoy kernel/hardware
+debugging, leave this option off.
+.
+TAU_AVERAGE 'Average high and low temp' text
+The TAU hardware can compare the temperature to an upper and lower bound.
+The default behavior is to show both the upper and lower bound in
+/proc/cpuinfo. If the range is large, the temperature is either changing
+a lot, or the TAU hardware is broken (likely on some G4's). If the range
+is small (around 4 degrees), the temperature is relatively stable.
+.
+PCI_QSPAN 'QSpan PCI' text
+Find out whether you have a PCI motherboard. PCI is the name of a
+bus system, i.e. the way the CPU talks to the other stuff inside
+your box. Other bus systems are ISA, EISA, Microchannel (MCA) or
+VESA. If you have PCI, say Y, otherwise N.
+
+The PCI-HOWTO, available from
+http://www.linuxdoc.org/docs.html#howto , contains valuable
+information about which PCI hardware does work under Linux and which
+doesn't.
+.
+PCI_PERMEDIA 'PCI for Permedia2'
+
+FB_COMPAT_XPMAC 'Backward compatibility mode for Xpmac' text
+If you use the Xpmac X server (common with mklinux), you'll need to
+say Y here to use X. You should consider changing to XFree86 which
+includes a server that supports the frame buffer device directly
+(XF68_FBDev).
+.
+MAC_FLOPPY 'Support for PowerMac floppy' text
+If you have a SWIM-3 (Super Woz Integrated Machine 3; from Apple)
+floppy controller, say Y here. Most commonly found in PowerMacs.
+.
+MAC_SERIAL 'Support for PowerMac serial ports' text
+If you have Macintosh style serial ports (8 pin mini-DIN), say Y
+here. If you also have regular serial ports and enable the driver
+for them, you can't currently use the serial console feature.
+.
+PPC_RTC 'Enhanced Real Time Clock Support (/dev/rtc)' text
+If you say Y here and create a character special file /dev/rtc with
+major number 10 and minor number 135 using mknod ("man mknod"), you
+will get access to the real time clock (or hardware clock) built
+into your computer.
+
+If unsure, say Y here.
+.
+PROC_DEVICETREE 'Support for Open Firmware device tree in /proc' text
+This option adds a device-tree directory under /proc which contains
+an image of the device tree that the kernel copies from Open
+Firmware. If unsure, say Y here.
+.
+BOOTX_TEXT 'Support for early boot text console'
+
+#CMDLINE_BOOL 'PReP bootloader kernel arguments'
+AMIGA_BUILTIN_SERIAL 'Amiga builtin serial support' text
+If you want to use your Amiga's built-in serial port in Linux,
+answer Y.
+
+This driver is also available 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.
+.
+CONFIG_8xx_COPYBACK '8xx Cache (Copy-Back or Writethrough)'
+
+CONFIG_8xx_CPU6 'MPC860 (Pre Rev. C) CPU6 Silicon Errata'
+
+UCODE_PATCH 'I2C/SPI Microcode Patch'
+
+BLK_DEV_MPC8xx_IDE 'MPC8xx direct IDE support on PCMCIA port' text
+This option provides support for IDE on Motorola MPC8xx Systems.
+Please see 'Type of MPC8xx IDE interface' for details.
+
+If unsure, say N.
+.
+IDE_8xx_PCCARD '8xx_PCCARD' text
+Select how the IDE devices are connected to the MPC8xx system:
+
+8xx_PCCARD uses the 8xx internal PCMCIA interface in combination
+ with a PC Card (e.g. ARGOSY portable Hard Disk Adapter),
+ ATA PC Card HDDs or ATA PC Flash Cards (example: TQM8xxL
+ systems)
+
+8xx_DIRECT is used for directly connected IDE devices using the 8xx
+ internal PCMCIA interface (example: IVMS8 systems)
+
+EXT_DIRECT is used for IDE devices directly connected to the 8xx
+ bus using some glue logic, but _not_ the 8xx internal
+ PCMCIA interface (example: IDIF860 systems)
+.
+IDE_8xx_DIRECT '8xx_DIRECT'
+
+IDE_EXT_DIRECT 'EXT_DIRECT'
+
+GVPIOEXT 'GVP IO-Extender support' text
+If you want to use a GVP IO-Extender serial card in Linux, say Y.
+Otherwise, say N.
+.
+GVPIOEXT_LP 'GVP IO-Extender parallel printer support'
+
+GVPIOEXT_PLIP 'GVP IO-Extender PLIP support'
+
+MULTIFACE_III_TTY 'Multiface Card III serial support' text
+If you want to use a Multiface III card's serial port in Linux,
+answer Y.
+
+This driver is also available 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.
+.
+A2232 'Commodore A2232 serial support'
+
+PROC_HARDWARE '/proc/hardware support'
+
+DMASOUND 'Amiga/Atari/PowerMac DMA sound support'
+
+DMASOUND_ATARI 'Atari DMA sound support' text
+If you want to use the internal audio of your Atari in Linux, answer
+Y to this question. This will provide a Sun-like /dev/audio,
+compatible with the Linux/i386 sound system. Otherwise, say N.
+
+This driver is also available 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.
+.
+DMASOUND_AWACS 'PowerMac DMA sound support' text
+If you want to use the internal audio of your PowerMac in Linux,
+answer Y to this question. This will provide a Sun-like /dev/audio,
+compatible with the Linux/i386 sound system. Otherwise, say N.
+
+This driver is also available 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.
+.
+DMASOUND_PAULA 'Amiga DMA sound support' text
+If you want to use the internal audio of your Amiga in Linux, answer
+Y to this question. This will provide a Sun-like /dev/audio,
+compatible with the Linux/i386 sound system. Otherwise, say N.
+
+This driver is also available 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.
+.
+DMASOUND_Q40 'Q40 sound support' text
+If you want to use the internal audio of your Q40 in Linux, answer
+Y to this question. This will provide a Sun-like /dev/audio,
+compatible with the Linux/i386 sound system. Otherwise, say N.
+
+This driver is also available 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.
+.
+KGDB 'Include kgdb kernel debugger'
+
+XMON 'Include xmon kernel debugger'
+
+#
+# MPC8xx Communication options
+SCC_ENET 'CPM SCC Ethernet'
+
+SCC1_ENET 'Ethernet on SCC1'
+
+SCC2_ENET 'Ethernet on SCC2'
+
+SCC3_ENET 'Ethernet on SCC3'
+
+ENET_BIG_BUFFERS 'Use Big CPM Ethernet Buffers'
+
+FEC_ENET '860T FEC Ethernet'
+
+USE_MDIO 'Use MDIO for PHY configuration'
+
+SMC2_UART 'Use SMC2 for UART'
+
+ALTSMC2 'Use the alternate SMC2 I/O'
+
+USE_SCC_IO 'Enable SCC2 and SCC3 for UART'
+
+CONS_SMC2 'Use SMC2 for Console'
+
+#
+# MPC8260 Communication options
+FCC1_ENET 'Ethernet on FCC1'
+
+FCC2_ENET 'Ethernet on FCC2'
+
+FCC3_ENET 'Ethernet on FCC3'
+
+# Macintosh driver options
+MACINTOSH_DRIVERS 'Macintosh driver support'
+
+ADB 'Apple Desktop Bus (ADB) support' text
+Apple Desktop Bus (ADB) support is for support of devices which
+are connected to an ADB port. ADB devices tend to have 4 pins.
+If you have an Apple Macintosh prior to the iMac, or a
+"Blue and White G3", you probably want to say Y here. Otherwise
+say N.
+.
+ADB_CUDA 'Include CUDA ADB driver' text
+This provides support for CUDA based Power Macintosh systems. This
+includes most OldWorld PowerMacs, the first generation iMacs, the
+Blue&White G3 and the Yikes G4 (PCI Graphics). All later models
+should use CONFIG_ADB_PMU instead.
+
+If unsure say Y.
+.
+ADB_PMU 'Support for PMU-based PowerMacs' text
+This provides support for PMU based Power Macintosh systems. This
+includes all PowerBooks and all AGP-based machines.
+
+If unsure say Y.
+.
+ADB_MACIO 'Include MacIO ADB driver'
+
+ADB_IOP 'Include IOP (IIfx/Quadra 9x0) ADB driver'
+
+ADB_MACII 'Mac II style Apple Desktop Bus support'
+
+ADB_MACIISI 'Mac IIsi style Apple Desktop Bus support'
+
+ADB_PMU68K 'Apple 68K PowerBook Power Management and Desktop Bus support'
+
+#MAC_SCC 'Macintosh serial support'
+INPUT_ADBHID 'Use input layer for ADB devices' text
+Say Y here if you want to have ADB (Apple Desktop Bus) HID devices
+such as keyboards, mice, joysticks, or graphic tablets handled by the
+input layer. If you say Y here, make sure to say Y to the
+corresponding drivers "Keyboard support" (CONFIG_INPUT_KEYBDEV),
+"Mouse Support" (CONFIG_INPUT_MOUSEDEV) and "Event interface support"
+(CONFIG_INPUT_EVDEV) as well.
+
+If you say N here, you still have the option of using the old ADB
+keyboard and mouse drivers.
+
+If unsure, say Y.
+.
+MAC_ADBKEYCODES 'ADB raw keycode support' text
+This provides support for sending raw ADB keycodes to console
+devices. This is the default up to 2.4.0, but in future this may be
+phased out in favor of generic Linux keycodes. If you say Y here, you
+can dynamically switch via the
+ /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes
+sysctl and with the "keyboard_sends_linux_keycodes=" kernel argument.
+
+If unsure, say Y here.
+.
+MAC_EMUMOUSEBTN 'Mouse button 2+3 emulation support' text
+This provides generic support for emulating the 2nd and 3rd mouse
+button with keypresses. If you say Y here, the emulation is still
+disabled by default. The emulation is controlled by these sysctl entries:
+ /proc/sys/dev/mac_hid/mouse_button_emulation
+ /proc/sys/dev/mac_hid/mouse_button2_keycode
+ /proc/sys/dev/mac_hid/mouse_button3_keycode
+.
+ADB_KEYBOARD 'Support for ADB keyboard (old driver)'
+
+ADBMOUSE 'Apple Desktop Bus mouse support' text
+Say Y here if you have this type of bus mouse (4 pin connector) as
+is common on Macintoshes. You may want to read the Busmouse-HOWTO,
+available from http://www.linuxdoc.org/docs.html#howto .
+
+If you want to compile this 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 adbmouse.o.
+.
+PMAC_PBOOK 'Power management support for PowerBooks' text
+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.
+.
+PMAC_BACKLIGHT 'Backlight control for LCD screens'
+
+#
+# Motorola 68xxx port
+M68K 'Motorola 68K processors'
+
+AMIGA 'Amiga support' text
+This option enables support for the Amiga series of computers. If
+you plan to use this kernel on an Amiga, say Y here and browse the
+material available in Documentation/m68k; otherwise say N.
+.
+ATARI 'Atari support' text
+This option enables support for the 68000-based Atari series of
+computers (including the TT, Falcon and Medusa). If you plan to use
+this kernel on an Atari, say Y here and browse the material
+available in Documentation/m68k; otherwise say N.
+.
+HADES 'Hades support' text
+This option enables support for the Hades Atari clone. If you plan
+to use this kernel on a Hades, say Y here; otherwise say N.
+.
+MAC 'Macintosh support' text
+This option enables support for the Apple Macintosh series of
+computers (yes, there is experimental support now, at least for part
+of the series).
+
+Say N unless you're willing to code the remaining necessary support.
+;)
+.
+APOLLO 'Apollo support' text
+Say Y here if you want to run Linux on an MC680x0-based Apollo
+Domain workstation such as the DN3500.
+.
+VME 'VME (Motorola and BVM) support' text
+Say Y here if you want to build a kernel for a 680x0 based VME
+board. Boards currently supported include Motorola boards MVME162,
+MVME166, MVME167, MVME172, and MVME177. BVME4000 and BVME6000
+boards from BVM Ltd are also supported.
+.
+MVME147 'MVME147 support'
+
+MVME16x 'MVME162, 166 and 167 support' text
+Say Y to include support for Motorola VME boards. This will build a
+kernel which can run on MVME162, MVME166, MVME167, MVME172, and
+MVME177 boards. If you select this option you will have to select
+the appropriate drivers for SCSI, Ethernet and serial ports later
+on.
+.
+BVME6000 'BVME4000 and BVME6000 support' text
+Say Y to include support for VME boards from BVM Ltd. This will
+build a kernel which can run on BVME4000 and BVME6000 boards. If
+you select this option you will have to select the appropriate
+drivers for SCSI, Ethernet and serial ports later on.
+.
+HP300 'HP9000/300 support' text
+This option enables support for the HP9000/300 series of
+workstations. Support for these machines is still very experimental.
+If you plan to try to use the kernel on such a machine say Y here.
+Everybody else says N.
+.
+DIO 'DIO bus support' text
+Say Y here to enable support for the "DIO" expansion bus used in
+HP300 machines. If you are using such a system you almost certainly
+want this.
+.
+SUN3 'Sun 3 support'
+
+SUN3X 'Sun 3X support' text
+This option enables support for the Sun 3x series of workstations.
+Be warned that this support is very experimental. You will also want
+to say Y to 68020 support and N to the other processors below.
+
+If you don't want to compile a kernel for a Sun 3x, say N.
+.
+Q40 'Q40/Q60 support'
+
+M68020 '68020 support' text
+If you anticipate running this kernel on a computer with a MC68020
+processor, say Y. Otherwise, say N. Note that the 68020 requires a
+68851 MMU (Memory Management Unit) to run Linux/m68k, except on the
+Sun 3, which provides its own version.
+.
+M68030 '68030 support' text
+If you anticipate running this kernel on a computer with a MC68030
+processor, say Y. Otherwise, say N. Note that a MC68EC030 will not
+work, as it does not include an MMU (Memory Management Unit).
+.
+M68040 '68040 support' text
+If you anticipate running this kernel on a computer with a MC68LC040
+or MC68040 processor, say Y. Otherwise, say N. Note that an
+MC68EC040 will not work, as it does not include an MMU (Memory
+Management Unit).
+.
+M68060 '68060 support' text
+If you anticipate running this kernel on a computer with a MC68060
+processor, say Y. Otherwise, say N.
+.
+M68KFPU_EMU 'Math emulation support' text
+At some point in the future, this will cause floating-point math
+instructions to be emulated by the kernel on machines that lack a
+floating-point math coprocessor. Thrill-seekers and chronically
+sleep-deprived psychotic hacker types can say Y now, everyone else
+should probably wait a while.
+.
+M68KFPU_EMU_EXTRAPREC 'Math emulation extra precision' text
+The fpu uses normally a few bit more during calculations for
+correct rounding, the emulator can (often) do the same but this
+extra calculation can cost quite some time, so you can disable
+it here. The emulator will then "only" calculate with a 64 bit
+mantissa and round slightly incorrect, what is more then enough
+for normal usage.
+.
+M68KFPU_EMU_ONLY 'Math emulation only kernel' text
+This option prevents any floating-point instructions from being
+compiled into the kernel, thereby the kernel doesn't save any
+floating point context anymore during task switches, so this
+kernel will only be usable on machines without a floating-point
+math coprocessor. This makes the kernel a bit faster as no tests
+needs to be executed whether a floating-point instruction in the
+kernel should be executed or not.
+.
+ADVANCED 'Advanced configuration options' text
+This gives you access to some advanced options for the CPU. The
+defaults should be fine for most users, but these options may make
+it possible for you to improve performance somewhat if you know what
+you are doing.
+
+Note that the answer to this question won't directly affect the
+kernel: saying N will just cause this configure script to skip all
+the questions about these options.
+
+Most users should say N to this question.
+.
+RMW_INSNS 'Use read-modify-write instructions' text
+This allows to use certain instructions that work with indivisible
+read-modify-write bus cycles. While this is faster than the
+workaround of disabling interrupts, it can conflict with DMA
+( = direct memory access) on many Amiga systems, and it is also said
+to destabilize other machines. It is very likely that this will
+cause serious problems on any Amiga or Atari Medusa if set. The only
+configuration where it should work are 68030-based Ataris, where it
+apparently improves performance. But you've been warned! Unless you
+really know what you are doing, say N. Try Y only if you're quite
+adventurous.
+.
+SINGLE_MEMORY_CHUNK 'Use one physical chunk of memory only'
+
+CONFIG_060_WRITETHROUGH 'Use write-through caching for 68060 supervisor accesses'
+text
+The 68060 generally uses copyback caching of recently accessed data.
+Copyback caching means that memory writes will be held in an on-chip
+cache and only written back to memory some time later. Saying Y
+here will force supervisor (kernel) accesses to use writethrough
+caching. Writethrough caching means that data is written to memory
+straight away, so that cache and memory data always agree.
+Writethrough caching is less efficient, but is needed for some
+drivers on 68060 based systems where the 68060 bus snooping signal
+is hardwired on. The 53c710 SCSI driver is known to suffer from
+this problem.
+.
+ZORRO 'Amiga Zorro (AutoConfig) bus support' text
+This enables support for the Zorro bus in the Amiga. If you have
+expansion cards in your Amiga that conform to the Amiga
+AutoConfig(tm) specification, say Y, otherwise N. Note that even
+expansion cards that do not fit in the Zorro slots but fit in e.g.
+the CPU slot may fall in this category, so you have to say Y to let
+Linux use these.
+.
+ZORRO_NAMES 'Zorro device name database' text
+By default, the kernel contains a database of all known Zorro device
+names to make the information in /proc/iomem comprehensible to the
+user. This database increases the size of the kernel image by about
+15KB, but it gets freed after the system boots up, so it doesn't
+take up kernel memory. Anyway, if you are building an installation
+floppy or kernel for an embedded system where kernel image size
+really matters, you can disable this feature and you'll get device
+ID numbers instead of names.
+
+When in doubt, say Y.
+.
+AMIGA_PCMCIA 'Amiga 1200/600 PCMCIA support' text
+Include support in the kernel for pcmcia on Amiga 1200 and Amiga
+600. If you intend to use pcmcia cards say Y; otherwise say N.
+.
+STRAM_SWAP 'Support for ST-RAM as swap space' text
+This enables support for using (parts of) ST-RAM as swap space,
+instead of as normal system memory. This can first enhance system
+performance if you have lots of alternate RAM (compared to the size
+of ST-RAM), because executable code always will reside in faster
+memory. ST-RAM will remain as ultra-fast swap space. On the other
+hand, it allows much improved dynamic allocations of ST-RAM buffers
+for device driver modules (e.g. floppy, ACSI, SLM printer, DMA
+sound). The probability that such allocations at module load time
+fail is drastically reduced.
+.
+STRAM_PROC 'ST-RAM statistics in /proc'
+
+A3000_SCSI 'A3000 WD33C93A support' text
+If you have an Amiga 3000 and have SCSI devices connected to the
+built-in SCSI controller, say Y. Otherwise, say N. 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 is
+called wd33c93.o. If you want to compile it as a module, say M here
+and read Documentation/modules.txt.
+.
+A4000T_SCSI 'A4000T SCSI support'
+
+A2091_SCSI 'A2091 WD33C93A support' text
+If you have a Commodore A2091 SCSI controller, say Y. Otherwise,
+say N. 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 is called wd33c93.o. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+GVP11_SCSI 'GVP Series II WD33C93A support' text
+If you have a Great Valley Products Series II SCSI controller,
+answer Y. Also say Y if you have a later model of GVP SCSI
+controller (such as the GVP A4008 or a Combo board). Otherwise,
+answer N. This driver does NOT work for the T-Rex series of
+accelerators from TekMagic and GVP-M.
+
+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 gvp11.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+.
+CYBERSTORM_SCSI 'CyberStorm SCSI support' text
+If you have an Amiga with an original (MkI) Phase5 Cyberstorm
+accelerator board and the optional Cyberstorm SCSI controller,
+answer Y. Otherwise, say N.
+.
+CYBERSTORMII_SCSI 'CyberStorm II SCSI support' text
+If you have an Amiga with a Phase5 Cyberstorm MkII accelerator board
+and the optional Cyberstorm SCSI controller, say Y. Otherwise,
+answer N.
+.
+#CYBERSTORMIII_SCSI 'Cyberstorm III SCSI support'
+BLZ2060_SCSI 'Blizzard 2060 SCSI support' text
+If you have an Amiga with a Phase5 Blizzard 2060 accelerator board
+and want to use the onboard SCSI controller, say Y. Otherwise,
+answer N.
+.
+BLZ1230_SCSI 'Blizzard 1230IV/1260 SCSI support' text
+If you have an Amiga 1200 with a Phase5 Blizzard 1230IV or Blizzard
+1260 accelerator, and the optional SCSI module, say Y. Otherwise,
+say N.
+.
+FASTLANE_SCSI 'Fastlane SCSI support' text
+If you have the Phase5 Fastlane Z3 SCSI controller, or plan to use
+one in the near future, say Y to this question. Otherwise, say N.
+.
+A4091_SCSI 'A4091 SCSI support'
+
+WARPENGINE_SCSI 'WarpEngine SCSI support'
+
+BLZ603EPLUS_SCSI 'Blizzard PowerUP 603e+ SCSI support' text
+If you have an Amiga 1200 with a Phase5 Blizzard PowerUP 603e+
+accelerator, say Y. Otherwise, say N.
+.
+OKTAGON_SCSI 'BSC Oktagon SCSI support'
+
+#GVP_TURBO_SCSI 'GVP Turbo 040/060 SCSI support'
+ATARI_SCSI 'Atari native SCSI support' text
+If you have an Atari with built-in NCR5380 SCSI controller (TT,
+Falcon, ...) say Y to get it supported. Of course also, if you have
+a compatible SCSI controller (e.g. for Medusa). 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 is called
+atari_scsi.o. If you want to compile it as a module, say M here and
+read Documentation/modules.txt. This driver supports both styles of
+NCR integration into the system: the TT style (separate DMA), and
+the Falcon style (via ST-DMA, replacing ACSI). It does NOT support
+other schemes, like in the Hades (without DMA).
+.
+ATARI_SCSI_TOSHIBA_DELAY 'Long delays for Toshiba CD-ROMs' text
+This option increases the delay after a SCSI arbitration to
+accommodate some flaky Toshiba CD-ROM drives. Say Y if you intend to
+use a Toshiba CD-ROM drive; otherwise, the option is not needed and
+would impact performance a bit, so say N.
+.
+ATARI_SCSI_RESET_BOOT 'Reset SCSI-devices at boottime'
+
+TT_DMA_EMUL 'Hades SCSI DMA emulator' text
+This option enables code which emulates the TT SCSI DMA chip on the
+Hades. This increases the SCSI transfer rates at least ten times
+compared to PIO transfers.
+.
+MAC_SCSI 'Macintosh NCR5380 SCSI support'
+
+SCSI_MAC_ESP 'Macintosh NCR53c9[46] SCSI support'
+
+#SCSI_DEBUG 'SCSI debugging host adapter'
+MVME147_SCSI 'WD33C93 SCSI driver for MVME147'
+
+MVME16x_SCSI 'NCR53C710 SCSI driver for MVME16x' text
+The Motorola MVME162, 166, 167, 172 and 177 boards use the NCR53C710
+SCSI controller chip. Almost everyone using one of these boards
+will want to say Y to this question.
+.
+BVME6000_SCSI 'NCR53C710 SCSI driver for BVME6000' text
+The BVME4000 and BVME6000 boards from BVM Ltd use the NCR53C710
+SCSI controller chip. Almost everyone using one of these boards
+will want to say Y to this question.
+.
+SUN3X_ESP 'Sun3x ESP SCSI driver'
+
+#SUN3_SCSI 'Sun3 NCR5380 SCSI'
+APNE 'PCMCIA NE2000 and compatibles support' text
+If you have a pcmcia ne2000 compatible adapter, say Y. Otherwise,
+say N.
+
+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 is called apne.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+APOLLO_ELPLUS 'Apollo 3c505 "EtherLink Plus" support' text
+Say Y or M here if your Apollo has a 3Com 3c505 ISA Ethernet card.
+If you don't have one made for Apollos, you can use one from a PC,
+except that your Apollo won't be able to boot from it (because the
+code in the ROM will be for a PC).
+.
+MAC8390 'Macintosh NS8390 based Ethernet support'
+
+MACSONIC 'Macintosh SONIC based Ethernet support (onboard, NuBus, LC, CS)'
+
+MAC89x0 'Macintosh CS89x0 based Ethernet support'
+
+MACMACE 'Macintosh onboard AMD 79C940 MACE based Ethernet support'
+
+MVME147_NET 'MVME147 (Lance) Ethernet support'
+
+MVME16x_NET 'MVME16x Ethernet support' text
+This is the driver for the Ethernet interface on the Motorola
+MVME162, 166, 167, 172 and 177 boards. Say Y here to include the
+driver for this chip in your kernel. If you want to compile it as
+a module, say M here and read Documentation/modules.txt.
+.
+BVME6000_NET 'BVME6000 Ethernet support' text
+This is the driver for the Ethernet interface on BVME4000 and
+BVME6000 VME boards. Say Y here to include the driver for this chip
+in your kernel. If you want to compile it as a module, say M here
+and read Documentation/modules.txt.
+.
+ATARILANCE 'Atari Lance support' text
+Say Y to include support for several Atari Ethernet adapters based
+on the AMD Lance chipset: RieblCard (with or without battery), or
+PAMCard VME (also the version by Rhotron, with different addresses).
+.
+ATARI_BIONET 'BioNet-100 support' text
+Say Y to include support for BioData's BioNet-100 Ethernet adapter
+for the ACSI port. The driver works (has to work...) with a polled
+I/O scheme, so it's rather slow :-(
+.
+ATARI_PAMSNET 'PAMsNet support' text
+Say Y to include support for the PAMsNet Ethernet adapter for the
+ACSI port ("ACSI node"). The driver works (has to work...) with a
+polled I/O scheme, so it's rather slow :-(
+.
+HPLANCE 'HP on-board LANCE support' text
+If you want to use the builtin "LANCE" Ethernet controller on an
+HP300 machine, say Y here.
+.
+AMIGAMOUSE 'Amiga mouse support' text
+If you want to be able to use an Amiga mouse in Linux, 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 is called amigamouse.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+ATARIMOUSE 'Atari mouse support' text
+If you want to be able to use an Atari mouse in Linux, 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 is called atarimouse.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+ATARI_MFPSER 'Atari MFP serial support' text
+If you like to use the MFP serial ports ("Modem1", "Serial1") under
+Linux, say Y. The driver equally supports all kinds of MFP serial
+ports and automatically detects whether Serial1 is available.
+
+This driver is also available 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.
+
+Note for Falcon users: You also have an MFP port, it's just not
+wired to the outside... But you could use the port under Linux.
+.
+ATARI_SCC 'Atari SCC serial support' text
+If you have serial ports based on a Zilog SCC chip (Modem2, Serial2,
+LAN) and like to use them under Linux, say Y. All built-in SCC's are
+supported (TT, MegaSTE, Falcon), and also the ST-ESCC. If you have
+two connectors for channel A (Serial2 and LAN), they are visible as
+two separate devices.
+
+This driver is also available 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.
+.
+ATARI_SCC_DMA 'Atari SCC serial DMA support' text
+This enables DMA support for receiving data on channel A of the SCC.
+If you have a TT you may say Y here and read
+drivers/char/atari_SCC.README. All other users should say N here,
+because only the TT has SCC-DMA, even if your machine keeps claiming
+so at boot time.
+.
+ATARI_MIDI 'Atari MIDI serial support' text
+If you want to use your Atari's MIDI port in Linux, 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). If you want to compile it as a module, say M here and read
+Documentation/modules.txt.
+.
+ATARI_DSP56K 'Atari DSP56k Digital Signal Processor support' text
+If you want to be able to use the DSP56001 in Falcons, say Y. This
+driver is still experimental, and if you don't know what it is, or
+if you don't have this processor, just say N.
+
+This driver is also available 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.
+.
+WHIPPET_SERIAL 'Hisoft Whippet PCMCIA serial support'
+
+HPDCA 'HP DCA serial support' text
+If you want to use the internal "DCA" serial ports on an HP300
+machine, say Y here.
+.
+SUN3X_ZS 'Sun3x builtin serial support'
+
+#SUN_KEYBOARD 'Sun keyboard support'
+#SUN_MOUSE 'Sun mouse support'
+SERIAL167 'CD2401 support for MVME166/7 serial ports' text
+This is the driver for the serial ports on the Motorola MVME166,
+167, and 172 boards. Everyone using one of these boards should say
+Y here.
+.
+MVME147_SCC 'SCC support for MVME147 serial ports'
+
+MVME162_SCC 'SCC support for MVME162 serial ports' text
+This is the driver for the serial ports on the Motorola MVME162 and
+172 boards. Everyone using one of these boards should say Y here.
+.
+BVME6000_SCC 'SCC support for BVME6000 serial ports' text
+This is the driver for the serial ports on the BVME4000 and BVME6000
+boards from BVM Ltd. Everyone using one of these boards should say
+Y here.
+.
+USERIAL 'Support for user serial device modules'
+
+#
+# Global things across all Sun machines.
+SPARC32 '32-bit Sun Sparc'
+
+SPARC64 '64-bit Sun Sparc'
+
+SPARC32_COMPAT 'Kernel support for Linux/Sparc 32bit binary compatibility'
+text
+This allows you to run 32-bit binaries on your Ultra.
+Everybody wants this; say Y.
+.
+BINFMT_AOUT32 'Kernel support for 32-bit (ie. SunOS) a.out binaries'
+text
+This allows you to run 32-bit a.out format binaries on your Ultra.
+If you want to run SunOS binaries (see SunOS binary emulation below)
+or other a.out binaries, say Y. If unsure, say N.
+.
+SOLARIS_EMUL 'Solaris binary emulation' text
+This is experimental code which will enable you to run (many)
+Solaris binaries on your SPARC Linux machine.
+
+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 solaris.o. If you want to compile it as a
+module, say M here and read Documentation/modules.txt.
+.
+ENVCTRL 'SUN SME environment monitoring'
+
+DISPLAY7SEG '7-Segment Display support' text
+This is the driver for the 7-segment display and LED present on
+Sun Microsystems CompactPCI models CP1400 and CP1500.
+
+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 display7seg.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+
+If you do not have a CompactPCI model CP1400 or CP1500, or
+another UltraSPARC-IIi-cEngine boardset with a 7-segment display,
+you should say N to this option.
+.
+WATCHDOG_CP1XXX 'CP1XXX Hardware Watchdog support' text
+This is the driver for the hardware watchdog timers present on
+Sun Microsystems CompactPCI models CP1400 and CP1500.
+
+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 cpwatchdog.o. If you want to compile it
+as a module, say M here and read Documentation/modules.txt.
+
+If you do not have a CompactPCI model CP1400 or CP1500, or
+another UltraSPARC-IIi-cEngine boardset with hardware watchdog,
+you should say N to this option.
+.
+WATCHDOG_RIO 'RIO Hardware Watchdog support'
+
+SUNLANCE 'Sun Lance support' text
+This driver supports the "le" interface present on all 32-bit Sparc
+systems, on some older Ultra systems and as an Sbus option.
+
+This support is also available as a module called sunlance.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.
+.
+#EC_FLUSH_TRAP 'ECache flush trap support at ta 0x72'
+#
+# ARM port
+ARM 'ARM processors'
+
+# ARM system type (default is 'RiscPC')
+ARCH_ANAKIN 'Anakin'
+
+ARCH_A5K 'A5000'
+
+ARCH_ARC 'Archimedes'
+
+ARCH_CLPS7500 'Cirrus-CL-PS7500FE'
+
+ARCH_CLPS711X 'CLPS711x/EP721x-based'
+
+ARCH_CO285 'Co-EBSA285'
+
+ARCH_EBSA110 'EBSA-110'
+
+ARCH_CAMELOT 'Epxa10db'
+
+ARCH_FOOTBRIDGE 'FootBridge-based'
+
+ARCH_INTEGRATOR 'Integrator'
+
+ARCH_L7200 'LinkUp-L7200' text
+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
+.
+ARCH_RPC 'RiscPC'
+
+ARCH_SA1100 'SA1100-based'
+
+ARCH_SHARK 'Shark'
+
+# SA1100 implementation(default is 'Brutus')
+SA1100_ASSABET 'Assabet' text
+Say Y here if you are using the Intel(R) StrongARM(R) SA-1110
+Microprocessor Development Board (also known as the Assabet).
+.
+ASSABET_NEPONSET 'Neponset' text
+Say Y here if you are using the Intel(R) StrongARM(R) SA-1110
+Microprocessor Development Board (Assabet) with the SA-1111
+Development Board (Nepon).
+.
+SA1100_ADSBITSY 'ADS Bitsy'
+
+SA1100_BRUTUS 'Brutus' text
+Say Y here if you are using the Intel(R) StrongARM(R) SA-1100
+Microprocessor Development Board (also known as the Brutus).
+.
+SA1100_CERF 'CerfBoard'
+
+SA1100_H3600 'Compaq iPAQ H3600'
+
+#SA1100_EMPEG 'Empeg'
+SA1100_EXTENEX1 'Extenex HandHeld Theater (Squashtail)'
+
+SA1100_EXTENEX1_16MB 'Support 16 MB of DRAM (not just 8)'
+
+SA1100_FLEXANET 'FlexaNet'
+
+SA1100_FREEBIRD 'FreeBird-v1.1'
+
+SA1100_GRAPHICSCLIENT 'GraphicsClient Plus' text
+Say Y here if you are using an Applied Data Systems Intel(R)
+StrongARM(R) SA-1100 based Graphics Client SBC. See
+http://www.flatpanels.com/ for information on this system.
+.
+SA1100_GRAPHICSMASTER 'GraphicsMaster'
+
+SA1100_JORNADA720 'HP Jornada 720'
+
+SA1100_HUW_WEBPANEL 'HuW WebPanel'
+
+SA1100_ITSY 'Itsy'
+
+SA1100_LART 'LART' text
+Say Y here if you are using the Linux Advanced Radio Terminal
+(also known as the LART). See http://www.lart.tudelft.nl/ for
+information on the LART.
+.
+SA1100_NANOENGINE 'nanoEngine'
+
+SA1100_OMNIMETER 'OmniMeter'
+
+SA1100_PANGOLIN 'Pangolin'
+
+SA1100_PLEB 'PLEB'
+
+SA1100_SHERMAN 'Sherman'
+
+SA1100_SIMPAD 'Simpad'
+
+SA1100_PFS168 'Tulsa'
+
+SA1100_VICTOR 'Victor' text
+Say Y here if you are using a Visu Aide Intel(R) StrongARM(R)
+SA-1100 based Victor Digital Talking Book Reader. See
+http://www.visuaide.com/pagevictor.en.html for information on
+this system.
+.
+SA1100_XP860_REAL 'XP860'
+
+SA1100_YOPY 'Yopy'
+
+# Cerf choice symbols, round 1
+SA1100_CERF_8MB '8MB'
+
+SA1100_CERF_16MB '16MB'
+
+SA1100_CERF_32MB '32MB'
+
+SA1100_CERF_64MB '64MB'
+
+# Cerf choice symbols, round 2
+SA1100_CERF_FLASH_8MB '8MB'
+
+SA1100_CERF_FLASH_16MB '16MB'
+
+SA1100_CERF_FLASH_32MB '32MB'
+
+# CLPS711X type symbols
+ARCH_CDB89712 'CDB89712'
+
+ARCH_CLEP7312 'CLEP7312'
+
+ARCH_EDB7211 'EDB7211'
+
+ARCH_P720T 'P720T'
+
+# Other ARM port symbols
+EP72XX_ROM_BOOT 'EP72xx ROM boot'
+
+SA1100_CERF_CPLD 'Cerf w/CPLD support (CerfPDA)'
+
+ARCH_FTVPCI 'FutureTV PCI card'
+
+SERIAL_21285 'DC21285 serial port support' text
+If you have a machine based on a 21285 (Footbridge) StrongARM(R)/
+PCI bridge you can enable its onboard serial port by enabling this
+option. The device has major ID 4, minor 64.
+.
+SERIAL_21285_OLD 'Use /dev/ttyS0 device'
+
+SERIAL_21285_CONSOLE 'Console on DC21285 serial port' text
+If you have enabled the serial port on the 21285 footbridge you can
+make it the console by answering Y to this option.
+.
+ARCH_EBSA285_ADDIN 'EBSA285 (addin mode)'
+
+ARCH_EBSA285_HOST 'EBSA285 (host mode)' text
+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.
+.
+ARCH_CATS 'CATS' text
+Say Y here if you intend to run this kernel on the CATS.
+
+Saying N will reduce the size of the Footbridge kernel.
+.
+ARCH_NETWINDER 'NetWinder' text
+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.
+.
+ARCH_PERSONAL_SERVER 'Compaq Personal Server' text
+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:
+
+http://crl.research.compaq.com/projects/personalserver
+
+If you have any questions or comments about the Compaq Personal
+Server, send e-mail to skiff@crl.dec.com
+.
+PAGESIZE_16 '2MB physical memory' text
+Say Y here if your Archimedes or A5000 system has only 2MB of
+memory, otherwise say N. The resulting kernel will not run on a
+machine with 4MB of memory.
+.
+CPU_ARM610 'Support ARM610 processor'
+
+CPU_ARM710 'Support ARM710 processor'
+
+#CPU_ARM720 'Support ARM720 processor'
+CPU_ARM720T 'Support ARM720T processor'
+
+CPU_ARM920T 'Support ARM920T processor'
+
+CPU_ARM920_CPU_IDLE 'ARM920T CPU idle'
+
+CPU_ARM920_I_CACHE_ON 'ARM920T I-Cache on'
+
+CPU_ARM920_D_CACHE_ON 'ARM920T D-Cache on'
+
+CPU_ARM920_WRITETHROUGH 'Force write through caches on ARM920T'
+
+CPU_ARM926T 'Support ARM926T processor'
+
+CPU_ARM926_CPU_IDLE 'ARM926T CPU idle'
+
+CPU_ARM926_I_CACHE_ON 'ARM926T I-Cache on'
+
+CPU_ARM926_D_CACHE_ON 'ARM926T D-Cache on'
+
+CPU_ARM926_FORCE_WRITETHROUGH 'Force write through caches on ARM926T'
+
+CPU_ARM926_ROUND_ROBIN 'Round robin I and D cache replacement algorithm'
+
+CPU_ARM1020 'Support ARM1020 processor'
+
+CPU_ARM1020_CPU_IDLE 'ARM1020 CPU idle'
+
+CPU_ARM1020_I_CACHE_ON 'ARM10 I-Cache on'
+
+CPU_ARM1020_D_CACHE_ON 'ARM10 D-Cache on'
+
+CPU_ARM1020_FORCE_WRITETHROUGH 'Force write through caches on ARM10'
+
+CPU_ARM1020_ROUND_ROBIN 'Round robin I and D cache replacement algorithm'
+
+CPU_SA110 'Support StrongARM SA-110 processor'
+
+#CPU_SA1100 'Support StrongARM SA-1100 processor'
+ALIGNMENT_TRAP 'Kernel-mode alignment trap handler' text
+ARM processors can not fetch/store information which is not
+naturally aligned on the bus, i.e., a 4 byte fetch must start at an
+address divisible by 4. On 32-bit ARM processors, these non-aligned
+fetch/store instructions will be emulated in software if you say
+here, which has a severe performance impact. This is necessary for
+correct operation of some network protocols. With an IP-only
+configuration it is safe to say N, otherwise say Y.
+.
+#TEXT_SECTIONS 'Split text into discardable sections'
+FPE_NWFPE 'Math emulation' text
+Say Y to include the NWFPE floating point emulator in the kernel.
+This is necessary to run most binaries. Linux does not currently
+support floating point hardware so you need to say Y here even if
+your machine has an FPA or floating point co-processor podule.
+
+It is also possible to say M to build the emulator as a module
+(nwfpe.o) or indeed to leave it out altogether. However, unless you
+know what you are doing this can easily render your machine
+unbootable. Saying Y is the safe option.
+
+You may say N here if you are going to load the Acorn FPEmulator
+.
+FPE_FASTFPE 'FastFPE math emulation' text
+Say Y here to include the FAST floating point emulator in the kernel.
+This is an experimental much faster emulator which has only 32 bit
+precision for the mantissa. It does not support any exceptions. This
+makes it very simple, it is approximately 4-8 times faster than NWFPE.
+
+It should be sufficient for most programs. It is definitely not
+suitable if you do scientific calculations that need double precision
+for iteration formulas that sum up lots of very small numbers. If you
+do not feel you need a faster FP emulation you should better choose
+NWFPE.
+
+It is also possible to say M to build the emulator as a module
+(fastfpe.o). But keep in mind that you should only load the FP emulator
+early in the bootup. You should never change from NWFPE to FASTFPE or
+vice versa in an active system!
+.
+#MIPS_FPU_EMULATOR 'Kernel floating-point instruction emulation'
+ARTHUR 'RISC OS personality' text
+Say Y here to include the kernel code necessary if you want to run
+Acorn RISC OS/Arthur binaries under Linux. This code is still very
+experimental; if this sounds frightening, say N and sleep in peace.
+You can also say M here to compile this support as a module (which
+will be called arthur.o).
+.
+ARM_THUMB 'Support Thumb instructions (experimental)'
+
+CPU_FREQ 'Support CPU clock change'
+
+#CMDLINE 'Initial kernel command string'
+LEDS 'Timer and CPU usage LEDs' text
+If you say Y here, the LEDs on your machine will be used
+to provide useful information about your current system status.
+
+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 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.
+.
+LEDS_TIMER 'Timer LED' text
+If you say Y here, one of the system LEDs (the green one on the
+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.
+.
+LEDS_CPU 'CPU usage LED' text
+If you say Y here, the red LED will be used to give a good real
+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.
+.
+NO_FRAME_POINTER 'Compile kernel without frame pointer' text
+If you say Y here, the resulting kernel will be slightly smaller and
+faster. However, when a problem occurs with the kernel, the
+information that is reported is severely limited. Most people
+should say N here.
+.
+DEBUG_ERRORS 'Verbose kernel error messages' text
+This option controls verbose debugging information which can be
+printed when the kernel detects an internal error. This debugging
+information is useful to kernel hackers when tracking down problems,
+but mostly meaningless to other people. It's safe to say Y unless
+you are concerned with the code size or don't want to see these
+messages.
+.
+DEBUG_USER 'Verbose user fault messages' text
+When a user program crashes due to an exception, the kernel can
+print a brief message explaining what the problem was. This is
+sometimes helpful for debugging but serves no purpose on a
+production system. Most people should say N here.
+.
+DEBUG_INFO 'Include gdb debugging information in kernel binary' text
+Say Y here to include source-level debugging information in the
+`vmlinux' binary image. This is handy if you want to use gdb or
+addr2line to debug the kernel. It has no impact on the in-memory
+footprint of the running kernel but it can increase the amount of
+time and disk space needed for compilation of the kernel. If in
+doubt say N.
+.
+DEBUG_SLAB 'Debug memory allocations'
+
+DEBUG_SPINLOCK 'Spinlock debugging'
+
+NO_PGT_CACHE 'Disable pgtable cache' text
+Normally the kernel maintains a `quicklist' of preallocated
+pagetable structures in order to increase performance. On machines
+with very few pages this may however be a loss. Say Y here to
+disable the pgtable cache.
+.
+# These options are only for real kernel hackers
+# who want to get their hands dirty.
+DEBUG_LL 'Kernel low-level debugging functions' text
+Say Y here to include definitions of printascii, printchar, printhex
+in the kernel. This is helpful if you are debugging code that
+executes before the console is initialized.
+.
+DEBUG_DC21285_PORT 'Kernel low-level debugging messages via footbridge serial port'
+text
+Say Y here if you want the low-level print routines to direct their
+output to the serial port in the DC21285 (Footbridge).
+.
+DEBUG_CLPS711X_UART2 'Kernel low-level debugging messages via UART2'
+
+ANGELBOOT 'Load kernel using Angel Debug Monitor' text
+Say Y if you plan to load the kernel using Angel, ARM Ltd's target
+debug stub. If you are not using Angel, you must say N. It is
+important to get this setting correct.
+.
+#
+# SuperH port
+SUPERH 'SuperH processors'
+
+# SuperH system type
+SH_GENERIC 'Generic' text
+This is machine type of your target.
+
+- "Generic" for Generic kernel which might support all of them
+- "SolutionEngine" for Hitachi SolutionEngine (7709A, 7750, 7750S)
+- "SolutionEngine7751" for Hitachi SolutionEngine (7751)
+- "STB1_Harp" for STMicroelectronics HARP
+- "STB1_Overdrive" for STMicroelectronics Overdrive
+- "HP620" for HP 'Jornada' 620
+- "HP680" for HP 'Jornada' 680
+- "HP690" for HP 'Jornada' 690
+- "CqREEK" for CQ Publishing CqREEK SH-4
+- "DMIDA" for DMIDA, industrial data assistant
+- "EC3104" for Compaq Aero 8000
+- "Dreamcast" for SEGA Dreamcast
+- "CAT68701" for CAT 68701 Evaluation Board (SH7708)
+- "BigSur" for Big Sur Evaluation Board
+- "SH2000" for SH2000 Evaluation Board (SH7709A)
+- "ADX" for A&D ADX
+- "BareCPU" for Bare CPU board such as CqREEK SH-3
+
+If unsure, select "BareCPU".
+.
+SH_SOLUTION_ENGINE 'SolutionEngine'
+
+SH_7751_SOLUTION_ENGINE '7751 SolutionEngine'
+
+SH_STB1_HARP 'STB1_Harp'
+
+SH_STB1_OVERDRIVE 'STB1_Overdrive'
+
+SH_HP620 'HP620'
+
+SH_HP680 'HP680'
+
+SH_HP690 'HP690'
+
+SH_CQREEK 'CqREEK'
+
+SH_DMIDA 'DMIDA'
+
+SH_EC3104 'EC3104'
+
+SH_DREAMCAST 'Dreamcast'
+
+SH_CAT68701 'CAT68701'
+
+SH_BIGSUR 'BigSur'
+
+SH_SH2000 'SH2000'
+
+SH_UNKNOWN 'BareCPU'
+
+# Processor type (default is 'SH7708')
+CPU_SUBTYPE_SH7707 'SH7707' text
+This is the type of your Hitachi SuperH processor. This information is
+used for optimizing and configuration purposes.
+
+- "SH7707" for SH7707
+- "SH7708" for SH7708, SH7708S, SH7708R
+- "SH7709" for SH7707, SH7709, SH7709A, and SH7729.
+- "SH7750" for SH7750, SH7750S
+- "SH7751" for SH7751
+- "ST40STB1" for ST40STB1
+.
+CPU_SUBTYPE_SH7708 'SH7708'
+
+CPU_SUBTYPE_SH7709 'SH7709'
+
+CPU_SUBTYPE_SH7750 'SH7750'
+
+CPU_SUBTYPE_SH7751 'SH7751'
+
+CPU_SUBTYPE_ST40STB1 'ST40STB1'
+
+# Other SuperH port symbols
+HD64461 'Hitachi HD64461 companion chip support'
+
+HD64461_IRQ 'HD64461 virtualized IRQ number'
+
+HD64461_ENABLER 'HD64461 PCMCIA enabler'
+
+HD64465 'Hitachi HD64465 companion chip support'
+
+HD64465_IRQ 'HD64465 virtualized IRQ number'
+
+HD64465_IOBASE 'HD64465 start address'
+
+MEMORY_START 'Physical memory start address' text
+Computers built with Hitachi SuperH processors always
+map the ROM starting at address zero. But the processor
+does not specify the range that RAM takes. RAM is usually
+mapped starting at 0c000000, but it may be elsewhere.
+
+You should set this value to the address of the lowest
+RAM location.
+
+A value of 0c000000 will work for most boards.
+.
+CF_ENABLER 'Directly Connected Compact Flash support' text
+If your board has "Directly Connected" CompactFlash at area 5 or 6,
+you may want to enable this option. Then, you can use CF as
+primary IDE drive (only tested for SanDisk).
+
+If in doubt, press "n".
+.
+SH_STANDARD_BIOS 'Use LinuxSH standard BIOS' text
+Say Y here if your target has the gdb-sh-stub package from
+www.m17n.org (or any conforming standard LinuxSH BIOS) in FLASH
+or EPROM. The kernel will use standard BIOS calls during boot
+for various housekeeping tasks. Note this does not work with
+WindowsCE machines. If unsure, say N.
+.
+SH_EARLY_PRINTK 'Early printk support' text
+If you say Y here, the kernel printk routine will begin output to
+the console much earlier in the boot process, before the serial
+console is initialised, instead of buffering output. Standard
+LinuxSH BIOS calls are used for the output. This helps when
+debugging fatal problems early in the boot sequence. This is only
+useful for kernel hackers. If unsure, say N.
+.
+DEBUG_KERNEL_WITH_GDB_STUB 'GDB Stub kernel debug'
+
+#
+# IA64 port
+IA64 'IA64 processors, including Intel Itanium'
+
+# IA-64 processor type
+ITANIUM 'Itanium'
+
+MCKINLEY 'McKinley'
+
+# IA-64 system type (default is 'Generic')
+IA64_GENERIC 'Generic' text
+This selects the system type of your hardware. A "generic" kernel
+will run on any supported IA-64 system. However, if you configure
+a kernel for your specific system, it will be faster and smaller.
+
+To find out what type of IA-64 system you have, you may want to
+check the IA-64 Linux web site at http://www.linux-ia64.org/.
+As of the time of this writing, most hardware is DIG compliant,
+so the "DIG-compliant" option is usually the right choice.
+
+HP-simulator For the HP simulator (http://software.hp.com/ia64linux/).
+SN1-simulator For the SGI SN1 simulator.
+DIG-compliant For DIG ("Developer's Interface Guide") compliant system.
+
+If you don't know what to do, choose "generic".
+.
+IA64_DIG 'DIG-compliant'
+
+IA64_HP_SIM 'HP-simulator'
+
+IA64_SGI_SN1 'SGI-SN1'
+
+IA64_SGI_SN2 'SGI-SN2'
+
+# Kernel page size (default is '16KB')
+IA64_PAGE_SIZE_4KB '4KB' text
+
+This lets you select the page size of the kernel. For best IA-64
+performance, a page size of 8KB or 16KB is recommended. For best
+IA-32 compatibility, a page size of 4KB should be selected (the vast
+majority of IA-32 binaries work perfectly fine with a larger page
+size). For Itanium systems, do NOT chose a page size larger than
+16KB.
+
+4KB For best IA-32 compatibility
+8KB For best IA-64 performance
+16KB For best IA-64 performance
+64KB Not for Itanium.
+
+If you don't know what to do, choose 8KB.
+.
+IA64_PAGE_SIZE_8KB '8KB'
+
+IA64_PAGE_SIZE_16KB '16KB'
+
+IA64_PAGE_SIZE_64KB '64KB'
+
+# Physical memory granularity
+IA64_GRANULE_16MB '16MB'
+
+IA64_GRANULE_64MB '64MB'
+
+# Other IA64 port symbols
+ITANIUM_ASTEP_SPECIFIC 'Enable Itanium A-step specific code' text
+Select this option to build a kernel for an Itanium prototype system
+with an A-step CPU. You have an A-step CPU if the "revision" field in
+/proc/cpuinfo is 0.
+.
+ITANIUM_BSTEP_SPECIFIC 'Enable Itanium B-step specific code' text
+Select this option to build a kernel for an Itanium prototype system
+with a B-step CPU. You have a B-step CPU if the "revision" field in
+/proc/cpuinfo has a value in the range from 1 to 4.
+.
+#IA64_HAVE_IRQREDIR 'Force interrupt redirection'
+#IA64_FW_EMU 'Emulate PAL/SAL/EFI firmware'
+#IA64_IRQ_ACPI 'Get PCI IRQ routing from firmware/ACPI'
+IA64_MCA 'Enable IA-64 Machine Check Abort' text
+Say Y here to enable machine check support for IA-64. If you're
+unsure, answer Y.
+.
+MCKINLEY_ASTEP_SPECIFIC 'Enable McKinley A-step specific code'
+
+MCKINLEY_A0_SPECIFIC 'Enable McKinley A0/A1-step specific code'
+
+#ACPI20 'Enable ACPI 2.0 with errata 1.3'
+ACPI_KERNEL_CONFIG 'ACPI kernel configuration manager'
+
+PERFMON 'Performance monitor support' text
+Selects whether support for the IA-64 performance monitor hardware
+is included in the kernel. This makes some kernel data-structures a
+little bigger and slows down execution a bit, but it is still
+usually a good idea to turn this on. If you're unsure, say N.
+.
+IA64_PALINFO '/proc/pal support' text
+If you say Y here, you are able to get PAL (Processor Abstraction
+Layer) information in /proc/pal. This contains useful information
+about the processors in your systems, such as cache and TLB sizes
+and the PAL firmware version in use.
+
+To use this option, you have to check that the "/proc file system
+.
+EFI_VARS '/proc/efi/vars support'
+
+IA32_SUPPORT 'Kernel support for IA-32 emulation'
+
+IA64_EARLY_PRINTK 'Early printk support (requires VGA!)'
+
+IA64_DEBUG_CMPXCHG 'Turn on compare-and-exchange bug checking (slow!)'
+
+IA64_DEBUG_IRQ 'IA64 IRQ bug checking'
+
+IA64_PRINT_HAZARDS 'Print possible IA64 hazards to console'
+
+DISABLE_VHPT 'Disable IA-64 Virtual Hash Page Table'
+
+#KDB 'Built-in Kernel Debugger support'
+#KDB_FRAMEPTR 'Compile the kernel with frame pointers'
+#KDB_STBSIZE 'KDB Kernel Symbol Table size?'
+SIMETH 'Simulated Ethernet'
+
+SIM_SERIAL 'Simulated serial driver support'
+
+SCSI_SIM 'Simulated SCSI disk'
+
+IA64_SGI_SN_DEBUG 'Enable extra debugging code'
+
+IA64_SGI_SN_SIM 'Enable SGI Medusa Simulator Support'
+
+IA64_SGI_AUTOTEST 'Enable autotest (llsc). Option to run cache test instead of booting'
+
+SERIAL_SGI_L1_PROTOCOL 'Enable protocol mode for the L1 console'
+
+PCIBA 'PCIBA support'
+
+#
+# PARISC port
+PARISC 'HP PA-RISC processor'
+
+KWDB 'Include kgdb kernel debugger'
+
+#GSC 'GSC/Gecko bus support'
+IODC_CONSOLE 'IODC console'
+
+IOMMU_CCIO 'U2/Uturn I/O MMU'
+
+GSC_LASI 'LASI I/O support'
+
+PARPORT_GSC 'LASI/ASP builtin parallel-port'
+
+#LASI_82596 'Lasi Ethernet'
+GSC_DINO 'GSCtoPCI/DINO PCI support'
+
+PCI_LBA 'LBA/Elroy PCI support'
+
+#
+# IBM System/390 port
+S390 'IBM System/390'
+
+S390X 'IBM System/390 with 31-bit emulation'
+
+S390_SUPPORT 'Kernel support for 31 bit ELF binaries'
+
+FAST_IRQ 'Fast IRQ handling'
+
+IPL 'Merge some code into the kernel to make the image IPLable'
+
+IPL_TAPE 'tape' text
+Select this option if you want to IPL the image from a Tape.
+.
+IPL_VM 'vm_reader'
+
+#PROFILE 'Kernel profiling support'
+#PROFILE_SHIFT 'Profile shift count'
+DASD 'Support for DASD hard disks' text
+Enable this option if you want to access DASDs directly utilizing
+S/390s channel subsystem commands. This is necessary for running
+natively on a single image or an LPAR.
+.
+DASD_ECKD 'Support for ECKD hard disks' text
+ECKD devices are the most commonly used devices. you should enable
+this option unless you are very sure to have no ECKD device.
+.
+DASD_AUTO_ECKD 'Automatic activation of ECKD module'
+
+DASD_FBA 'Support for FBA hard disks' text
+FBA devices are currently unsupported.
+.
+DASD_AUTO_FBA 'Automatic activation of FBA module'
+
+#DASD_CKD 'Support for CKD hard disks'
+DASD_DIAG 'Support for DIAG access to CMS reserved Disks'
+
+DASD_AUTO_DIAG 'Automatic activation of DIAG module'
+
+CHANDEV 'Channel Device Configuration'
+
+CTC 'CTC device support'
+
+IUCV 'IUCV device support (VM only)'
+
+TN3270 'Support for 3270 line mode terminal'
+
+TN3270_CONSOLE 'Support for console on 3270 line mode terminal'
+
+TN3215 'Support for 3215 line mode terminal'
+
+TN3215_CONSOLE 'Support for console on 3215 line mode terminal'
+
+HWC 'Support for HWC line mode terminal'
+
+HWC_CONSOLE 'Console on HWC line mode terminal'
+
+HWC_CPI 'Control-Program Identification'
+
+S390_TAPE 'S/390 tape device support'
+
+S390_TAPE_CHAR 'Support for tape character devices'
+
+S390_TAPE_BLOCK 'Support for tape block devices'
+
+S390_TAPE_3490 'Support for 3490 tape hardware'
+
+S390_TAPE_3480 'Support for 3480 tape hardware'
+
+PROCESS_DEBUG 'Show crashed user process info'
+
+PFAULT 'Pseudo page fault support'
+
+SHARED_KERNEL 'VM shared kernel support'
+
+#
+# CRIS port
+CRIS 'Axis Communications ETRAX 100LX embedded network CPU'
+
+ETRAX_WATCHDOG 'Enable Etrax100 watchdog'
+
+ETRAX100LX 'Etrax-100-LX-v1'
+
+ETRAX100LX_V2 'Etrax-100-LX-v2'
+
+SVINTO_SIM 'Etrax-100-LX-for-xsim-simulator'
+
+ETRAX_DRAM_SIZE 'DRAM size (dec, in MB)'
+
+ETRAX_FLASH_BUSWIDTH 'ETRAX Flash Memory configuration'
+
+ETRAX_ROOT_DEVICE 'Root device name'
+
+ETRAX_PA_LEDS 'LED configuration on PA'
+
+ETRAX_PB_LEDS 'LED configuration on PB'
+
+ETRAX_CSP0_LEDS 'LED configuration on CSP0'
+
+ETRAX_NO_LEDS 'No LED at all'
+
+ETRAX_LED1G 'First green LED bit'
+
+ETRAX_LED1R 'First red LED bit'
+
+ETRAX_LED2G 'Second green LED bit'
+
+ETRAX_LED2R 'Second red LED bit'
+
+ETRAX_LED3R 'Third red LED bit'
+
+ETRAX_LED3G 'Third green LED bit'
+
+ETRAX_LED4R 'Fourth red LED bit'
+
+ETRAX_LED4G 'Fourth green LED bit'
+
+ETRAX_LED5R 'Fifth red LED bit'
+
+ETRAX_LED5G 'Fifth green LED bit'
+
+ETRAX_LED6R 'Sixth red LED bit'
+
+ETRAX_LED6G 'Sixth green LED bit'
+
+ETRAX_LED7R 'Seventh red LED bit'
+
+ETRAX_LED7G 'Seventh green LED bit'
+
+ETRAX_LED8Y 'Eigth yellow LED bit'
+
+ETRAX_LED9Y 'Ninth yellow LED bit'
+
+ETRAX_LED10Y 'Tenth yellow LED bit'
+
+ETRAX_LED11Y 'Eleventh yellow LED bit'
+
+ETRAX_LED12R 'Twelfth red LED bit'
+
+ETRAX_DEBUG_PORT0 'Etrax debug port on ser0'
+
+ETRAX_DEBUG_PORT1 'Etrax debug port on ser1'
+
+ETRAX_DEBUG_PORT2 'Etrax debug port on ser2'
+
+ETRAX_DEBUG_PORT3 'Etrax debug port on ser3'
+
+ETRAX_DEBUG_PORT_NULL 'No Etrax debug port'
+
+ETRAX_RESCUE_SER0 'Serial-0'
+
+ETRAX_RESCUE_SER1 'Serial-1'
+
+ETRAX_RESCUE_SER2 'Serial-2'
+
+ETRAX_RESCUE_SER3 'Serial-3'
+
+ETRAX_SDRAM 'Etrax SDRAM configuration'
+
+ETRAX_DEF_R_WAITSTATES 'Etrax bus waitstates'
+
+ETRAX_DEF_R_BUS_CONFIG 'Etrax bus configuration'
+
+ETRAX_DEF_R_DRAM_CONFIG 'DRAM size (dec, in MB)'
+
+ETRAX_DEF_R_DRAM_TIMING 'Etrax DRAM timing'
+
+ETRAX_DEF_R_SDRAM_CONFIG 'Etrax SDRAM configuration'
+
+ETRAX_DEF_R_SDRAM_TIMING 'Etrax SDRAM timing'
+
+ETRAX_DEF_R_PORT_PA_DIR 'Etrax General port A direction'
+
+ETRAX_DEF_R_PORT_PA_DATA 'Etrax General port A data'
+
+ETRAX_DEF_R_PORT_PB_CONFIG 'Etrax General port B config'
+
+ETRAX_DEF_R_PORT_PB_DIR 'Etrax General port B direction'
+
+ETRAX_DEF_R_PORT_PB_DATA 'Etrax General port B data'
+
+ETRAX_ETHERNET_LPSLAVE 'Etrax Ethernet slave support (over lp0/1)'
+
+ETRAX_ETHERNET_LPSLAVE_HAS_LEDS 'Slave has its own LEDs'
+
+#ELTEST_IPADR 'IP address'
+#ELTEST_NETWORK 'Network'
+#ELTEST_NETMASK 'Netmask'
+#ELTEST_BROADCAST 'Broadcast'
+#ELTEST_GATEWAY 'Gateway'
+#ELTEST_ETHADR 'Ethernet address'
+#ETRAX_ETHERNET 'ETRAX Ethernet support'
+#ETRAX_SERIAL 'Serial-port support'
+#ETRAX_SERIAL_FAST_TIMER 'Use fast timers for DMA flush and RS-485 timing'
+
+ETRAX_SERIAL_PORT0 'Serial port 0 enabled'
+
+ETRAX_SERIAL_FLUSH_DMA_FAST 'Fast serial port DMA flush'
+
+ETRAX_SERIAL_RX_TIMEOUT_TICKS 'Receive flush timeout (ticks)'
+
+ETRAX_SER0_DTR_RI_DSR_CD_ON_PB 'Etrax Serial port ser0 DTR, RI, DSR and CD support on PB'
+
+ETRAX_SER0_DTR_ON_PB_BIT 'Ser0 DTR on PB bit'
+
+ETRAX_SER0_RI_ON_PB_BIT 'Ser0 RI on PB bit'
+
+ETRAX_SER0_DSR_ON_PB_BIT 'Ser0 DSR on PB bit'
+
+ETRAX_SER0_CD_ON_PB_BIT 'Ser0 CD on PB bit'
+
+ETRAX_SERIAL_PORT1 'Serial port 1 enabled'
+
+ETRAX_SER1_DTR_RI_DSR_CD_ON_PB 'Etrax Serial port ser1 DTR, RI, DSR and CD support on PB'
+
+ETRAX_SER1_DTR_ON_PB_BIT 'Ser1 DTR on PB bit'
+
+ETRAX_SER1_RI_ON_PB_BIT 'Ser1 RI on PB bit'
+
+ETRAX_SER1_DSR_ON_PB_BIT 'Ser1 DSR on PB bit'
+
+ETRAX_SER1_CD_ON_PB_BIT 'Ser1 CD on PB bit'
+
+ETRAX_SERIAL_PORT2 'Serial port 2 enabled'
+
+ETRAX_SER2_DTR_RI_DSR_CD_ON_PA 'Etrax Serial port ser2 DTR, RI, DSR and CD support on PA'
+
+ETRAX_SER2_DTR_ON_PA_BIT 'Ser2 DTR on PA bit'
+
+ETRAX_SER2_RI_ON_PA_BIT 'Ser2 RI on PA bit'
+
+ETRAX_SER2_DSR_ON_PA_BIT 'Ser2 DSR on PA bit'
+
+ETRAX_SER2_CD_ON_PA_BIT 'Ser2 CD on PA bit'
+
+ETRAX_SERIAL_PORT3 'Serial port 3 enabled'
+
+ETRAX_RS485 'Etrax100 RS-485 support'
+
+ETRAX_RS485_ON_PA 'Etrax100 RS-485 mode on PA'
+
+ETRAX_RS485_ON_PA_BIT 'Etrax100 RS-485 mode on PA bit'
+
+ETRAX_RS485_DISABLE_RECEIVER 'Etrax100 RS-485 disable receiver'
+
+ETRAX_SYNCHRONOUS_SERIAL 'ETRAX 100LX Synchronous serial ports'
+
+ETRAX_SYNCHRONOUS_SERIAL_PORT0 'ETRAX 100LX Synchronous serial port 0 enabled'
+
+ETRAX_SYNCHRONOUS_SERIAL0_DMA 'ETRAX 100LX Synchronous serial port 0 uses DMA'
+
+ETRAX_SYNCHRONOUS_SERIAL_PORT1 'ETRAX 100LX Synchronous serial port 1 enabled'
+
+ETRAX_SYNCHRONOUS_SERIAL1_DMA 'ETRAX 100LX Synchronous serial port 1 uses DMA'
+
+ETRAX_PARPORT 'Parallel port support'
+
+ETRAX_PARALLEL_PORT0 'Parallel port 0 enabled'
+
+ETRAX_PARALLEL_PORT1 'Parallel port 1 enabled'
+
+#ETRAX_IDE 'ETRAX ATA/IDE support'
+ETRAX_IDE_PB7_RESET 'IDE reset on PB Bit 7'
+
+ETRAX_IDE_G27_RESET 'Etrax 100 IDE Reset'
+
+ETRAX_IDE_CSE1_16_RESET 'Port_CSE1_Bit_16'
+
+ETRAX_IDE_CSP0_8_RESET 'Etrax 100 IDE Reset'
+
+ETRAX_IDE_DELAY 'Delay for drives to regain consciousness'
+
+ETRAX_AXISFLASHMAP 'Axis flash-map support'
+
+ETRAX_PTABLE_SECTOR 'Byte-offset of partition table sector'
+
+#ETRAX_I2C 'ETRAX I2C support'
+ETRAX_I2C_USES_PB_NOT_PB_I2C 'Etrax100 I2C configuration'
+
+ETRAX_I2C_EEPROM 'Etrax100 I2C EEPROM (NVRAM) support'
+
+ETRAX_I2C_EEPROM_PROBE 'Etrax100 I2C EEPROM (NVRAM) size/probe'
+
+ETRAX_I2C_EEPROM_2KB 'Etrax100 I2C EEPROM (NVRAM) size/2kB'
+
+ETRAX_I2C_EEPROM_8KB 'Etrax100 I2C EEPROM (NVRAM) size/8kB'
+
+ETRAX_I2C_EEPROM_16KB 'Etrax100 I2C EEPROM (NVRAM) size/16kB'
+
+ETRAX_GPIO 'Etrax General port device'
+
+ETRAX_PA_BUTTON_BITMASK 'PA button configuration'
+
+ETRAX_PA_CHANGEABLE_DIR 'PA changeable direction bits'
+
+ETRAX_PA_CHANGEABLE_BITS 'PA changeable data bits'
+
+ETRAX_PB_CHANGEABLE_DIR 'PA changeable direction bits'
+
+ETRAX_PB_CHANGEABLE_BITS 'PB changeable data bits'
+
+JULIETTE 'ARTPEC-1 support'
+
+#ETRAX_USB_HOST 'USB 1.1 host'
+ETRAX_USB_HOST_PORT1 'USB 1.1 host port 1 enabled'
+
+ETRAX_USB_HOST_PORT2 'USB 1.1 host port 2 enabled'
+
+ETRAX_DS1302 'Etrax DS1302 Real-Time Clock driver'
+
+ETRAX_DS1302_RST_ON_GENERIC_PORT 'Etrax DS1302 RST on the Generic Port'
+
+ETRAX_DS1302_RSTBIT 'Etrax DS1302 RST bit number'
+
+ETRAX_DS1302_SCLBIT 'Etrax DS1302 SCL bit number'
+
+ETRAX_DS1302_SDABIT 'Etrax DS1302 SDA bit number'
+
+ETRAX_SOFT_SHUTDOWN 'Software Shutdown Support'
+
+ETRAX_SHUTDOWN_BIT 'Shutdown bit on port CSP0'
+
+ETRAX_POWERBUTTON_BIT 'Power button bit on port G'
+
+ETRAX_NETWORK_LED_ON_WHEN_LINK 'LED on when link'
+
+ETRAX_NETWORK_LED_ON_WHEN_ACTIVITY 'LED on when activity'
+
+PROFILE 'Kernel profiling support'
+
+PROFILE_SHIFT 'Profile shift count'
+
+#
+# Andre Hedrick's hooks for non-mainline IDE stuff
+BLK_DEV_IDEDISK_FUJITSU 'Fujitsu Vendor Specific'
+
+BLK_DEV_IDEDISK_IBM 'IBM Vendor Specific'
+
+BLK_DEV_IDEDISK_MAXTOR 'Maxtor Vendor Specific'
+
+BLK_DEV_IDEDISK_QUANTUM 'Quantum Vendor Specific'
+
+BLK_DEV_IDEDISK_SEAGATE 'Seagate Vendor Specific'
+
+BLK_DEV_IDEDISK_WD 'Western Digital Vendor Specific'
+
+BLK_DEV_TIVO 'TiVo Commerial Application Specific'
+
+
+# Complaint strings used in requirements
+
+explanations
+aed_complaint 'On the Audio Excel DSP, Sound Blaster and MSS emulation cannot both be on.'
+aironet_complaint 'Aironet 4500 support must be modular, probing for it can cause a hang at boot time.'
+cosa_complaint 'COSA/SRP sync serial-board support must be modular, probing for it can cause a hang at boot time.'
+dscc4_complaint 'DSCC4 sync serial-board support must be modular, probing for it can cause a hang at boot time.'
+hostess_complaint 'Comtrol SV11 must be modular, it cannot be detected at boot time.'
+ipchains_complaint 'IP chains (IP_NF_COMPAT_IPCHAINS) and connection tracking (IP_NF_COMPAT_CONNTRACK) cannot both be on at once.'
+sealevel_complaint 'Sealevel cards must be modular, they cannot be detected at boot time.'
+usb_complaint 'Only one of UHCI and UHCI_ALT support can be hard-compiled in.'
+crisconflict_complaint 'You cannot have the same PB bits more than once!'
+#
+# Enum strings
+# These are for SC6600_CD-ROM
+NO_CDROM 'No CD-ROM'
+
+IDE_CDROM 'IDE CD-ROM'
+
+PANASONIC_CDROM 'Panasonic'
+
+SONY_CDROM 'Sony'
+
+
+menus
+add_block_devices 'Additional Block Devices'
+alpha 'Alpha processor options'
+alphatype 'Alpha system type'
+angelboot_legend 'Please ensure that you have read the help on the next option'
+appletalk_drivers 'AppleTalk devices'
+applications 'Sound, ham radio, and telephony'
+arch 'Processor type' text
+Choose your processor architecture.
+.
+archihacks 'Architecture-specific hardware hacks'
+arcnet_drivers 'ARCnet support'
+arm 'ARM processor options'
+armtype 'ARM processor type'
+atm 'ATM drivers'
+ax25 'AX.25 network device drivers'
+block_devices 'Block devices'
+bluetooth 'Bluetooth support'
+bluetooth_drivers 'Blutooth drivers'
+buses 'System buses and controller types' text
+Specify the buses, disk controllers, and internal interconnection standards
+that you want your kernel to support.
+.
+cdevs 'Character devices'
+cerf_flash 'Cerf flash available'
+cerf_ram 'Cerf RAM available'
+char_devs_misc 'Miscellaneous character devices'
+clps711xtypes 'CLPS711X/EP721X Implementations'
+console 'Console drivers' text
+On Linux machines, the `console' is the keyboard and monitor of your
+system considered as a direct-access device (that is, not using X).
+.
+cris 'CRIS port options'
+cris_net_led 'Network LED behavior'
+#crisaddrs 'CRIS IP parameters'
+crisdebug 'Product debug-port'
+crisleds 'Product LED port'
+crisrescue 'Product rescue port'
+crisserial 'CRIS serial port'
+cristype 'CRIS processor type'
+decnet 'Decnet options'
+dongles 'IRDA dongle devices'
+eth_3com_drivers '3Com Ethernet cards'
+eth_pocket_drivers 'Pocket Ethernet adapters'
+eth_racal_drivers 'Racal-Interlan (Micom) NI cards'
+eth_smc_drivers 'SMC Ethernet cards'
+ethernet_hispeed 'Ethernet (1000 Mbit)'
+ethernet_lospeed 'Ethernet (10 or 100Mbit)'
+etrax_eeprom 'EEPROM size'
+etrax_rtc 'ETRAX real-time clock support'
+fc4 'Fiber Channel support'
+fc4_drivers_legend 'FC4 drivers'
+fc4_targets_legend 'FC4 targets'
+fddi_drivers 'FDDI driver support'
+fiber_channel 'Fiber Channel drivers'
+footbridge 'Footbridge implementations'
+framebuffer 'Frame-buffer support'
+fs 'File Systems'
+ftcontroller 'Floppy tape controller'
+ftdebug 'Floppy tape debugging output level'
+fusion_mpt 'Fusion MPT devices'
+galileo_clock 'Galileo Chip Clock'
+gameports_legend 'Game ports'
+generic 'Architecture-independent feature selections'
+granularity 'Physical memory granularity'
+graphics 'Kernel-level graphics support'
+hamradio 'Ham radio drivers'
+himem 'High Memory Support'
+hotplug_pci 'Support for PCI Hotplug'
+i2c 'I2C support'
+i2o 'I2O support'
+ia64 'Itanium processor options'
+ia64type 'Itanium processor type'
+ia64system 'Itanium system type'
+ide_blockdevs 'IDE block devices'
+ide_chipsets 'IDE chipset support/bugfixes'
+ide_options 'IDE options -- see Documentation/ide.txt for help/info'
+ide_reset 'IDE reset pin'
+ide_vendorhooks 'IDE vendor-specific hooks'
+ieee1394 'IEEE 1394 (FireWire) support'
+input 'Generic input drivers'
+ipv4 'IP Version 4 configuration'
+ipv4_netfilter 'IP netfilter configuration'
+ipv6 'IPv6 options'
+ipv6_netfilter 'IPv6 netfilter configuration'
+irda 'IrDA (infrared) support'
+irda_drivers 'Infrared-port device drivers'
+isdn 'ISDN device configuration'
+isdn_active 'Active ISDN cards'
+isdn_dchannel_legend 'D-channel protocol features'
+isdn_features_legend 'ISDN feature submodules'
+isdn_hisax_legend 'HiSax supported cards'
+isdn_passive 'Passive ISDN cards'
+joysticks 'Joystick support'
+kcore 'Kernel core dump format'
+kernelhacking 'Kernel hacking'
+lfs 'Legacy Unix file systems'
+m68k 'Motorola 68K family options'
+main 'Linux Kernel Configuration System'
+macintosh_drivers 'Macintosh driver configuration'
+mfs 'Microsoft file systems'
+mice 'Mice'
+mips 'MIPS processor optionss'
+mipstype 'MIPS CPU selection'
+mpc8xxtype 'Type of MPC8xx IDE interface'
+msndclas_legend 'Compiled-in MSND Classic support requires firmware during compilation.'
+msndpin_legend 'Compiled-in MSND Pinnacle support requires firmware during compilation.'
+mtd 'Memory Technology Device (MTD) support'
+mtd_data_swap 'Flash cmd/query data swapping'
+mtd_docdrivers 'Disk-On-Chip Device Drivers'
+mtd_driver_legend 'MTD drivers for mapped chips'
+mtd_driver_selfcontained 'Self-contained MTD device drivers'
+mtd_mapping 'Drivers for chip mappings'
+mtd_nand_legend 'NAND Flash Device Drivers'
+mtd_translation_legend 'User modules and translation layers for MTD devices'
+nativecdrom 'Non-IDE, non-SCSI CD-ROM driver support'
+ncpfs 'NCP filesystem configuration'
+ncr5380 'NCR5380/53c400 mapping method (use Port for T130B)'
+net 'Networking options'
+net_drivers 'Network device configuration'
+netsched 'Traffic control configuration'
+nfs 'Network file systems'
+nino_model 'Nino Model Number'
+nls 'National Language Support'
+ofs 'CD-ROM and other foreign file systems'
+other_ide_chipsets 'Other IDE chipset support (most need boot parameters)'
+pagesize 'Kernel page size'
+parallel_joystick_legend 'Parallel port joysticks'
+paride_devices 'Parallel-port IDE devices'
+parisc 'PA RISC processor options'
+parport 'Parallel port support'
+parttypes 'Partition types'
+pci_access 'PCI access mode'
+pcmcia 'PCMCIA/CardBus support'
+pcmcia_chardevs 'PCMCIA character device support'
+pcmcia_drivers 'PCMCIA network device support'
+pm 'Power management'
+policy 'Configuration policy options' text
+Policy options for the Linux configurator. You can declare your level of
+expertise, and whether you want choices for experimental and obsolete
+hardware to be visible.
+.
+port_joystick_legend 'Gameport joysticks'
+ppc 'Power PC processor options'
+ppc4xxtype 'PPC 4xx type'
+ppc6xxtype 'PPC 6xx type'
+ppc8xxtype 'PPC 8xx type'
+ppc82xxtype 'PPC 82xx type'
+ppctype 'Power PC processor type'
+ppp_options 'PPP options'
+qic 'QIC tape support'
+radio 'Radio adaptors'
+rs232c 'RS232C serial devices'
+s390 'System 390 processor options'
+s390_ipl 'IPL method generated into head.S'
+sa1100type 'SA1100 implementation'
+sbus_misc 'Misc Linux/SPARC drivers'
+scsi 'SCSI devices'
+scsi_devices 'SCSI disk support'
+scsi_drivers 'SCSI low-level drivers'
+serial_joystick_legend 'Serial port joysticks'
+serial_support_legend 'Serial port support'
+slip_options 'SLIP options'
+sound 'Sound support'
+soundmodem 'Soundcard modem drivers'
+sparc 'Sparc processor options'
+sparcaudio 'Linux/SPARC audio subsystem'
+scc_ethernet 'SCC Ethernet type'
+superh 'SuperH processor options'
+superhsys 'SuperH system type'
+superhtype 'SuperH processor type'
+system_joystick_legend 'System joysticks'
+telephony 'Telephony Support'
+tokenring_drivers 'Token Ring devices'
+ufs 'Linux file system options'
+usb 'USB support'
+usb_controllers_legend 'USB controllers'
+usb_devices_legend 'USB devices'
+usb_etrax_legend 'USB for ETRAX machines'
+usb_hid_legend 'USB Human Interface Device'
+usb_options_legend 'Miscellaneous USB options'
+usb_imaging_legend 'USB Imaging devices'
+usb_multimedia_legend 'USB Multimedia devices'
+usb_network_legend 'USB Network adaptors'
+usb_port_legend 'USB port drivers'
+usb_misc_legend 'USB miscellaneous drivers'
+usb_serial 'USB serial devices'
+video 'Video For Linux'
+wan_drivers 'Wan drivers'
+wan_router_drivers 'WAN router drivers'
+watchdog 'Watchdog cards'
+whoami 'Linux kernel options'
+wireless 'Wireless LAN'
+x86 'Intel and compatible 80x86 processor options'
+x86type 'Intel and compatible 80x86 processor types'
+#
+# The following sets edit modes for GNU EMACS
+# Local Variables:
+# compile-command:"scripts/cmlcompile.py rules.cml"
+# End: