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 FBC