[LWN Logo]

Weekly Edition
Daily updates
Events Calendar
Book reviews
Penguin Gallery

About LWN.net

May 25, 2000

Kernel configuration rules

Here are the kernel configuration rules as defined in Eric Raymond's new CML2 language; they were taken from the 0.1.0 CML2 release.

# Linux kernel configuration system
#
symbols source "kernel-symbols.cml"	# Configuration symbols
menus source "kernel-menus.cml"		# Menus

# FIXME: These are test locations. Patch in the real ones for production
helpfile "/usr/src/linux/Documentation/Configure.help"
options "-h" "config.h" "-s" "config.sh" 

start main		# Start with the menu named 'main'
banner welcome		# Use the `welcome' text to ID the configurator
prefix "CONFIG_"	# Prepended to every symbol name at save time


# From fs/Config.in and fs/ncpfs/Config.in

# Conditions from elsewhere
unless EXPERIMENTAL suppress 
	ADFS_FS	HFS_FS BFS_FS EFS_FS DEVFS_FS DEVPTS_FS QNX4FS_FS AFFS_FS
unless INET suppress CODA_FS NFS_FS SMB_FS
unless IPX!=n suppress NCP_FS
unless ARCH_ACORN suppress ADFS_FS
unless NFSD!=n and IP_PNP suppress ROOT_NFS
require ROOT_NFS <= IP_PNP
unless PPC or M68K suppress PROC_HARDWARE
unless PPC suppress PROC_DEVICETREE
unless SPARC suppress SUN_OPENPROMFS

menu ufs # Linux file system options 
	QUOTA EXT2_FS? AUTOFS_FS? AUTOFS4_FS? ISO9660_FS? ROMFS_FS? 
	PROC_FS		{PROC_HARDWARE PROC_DEVICETREE SUN_OPENPROMFS?}
	DEVFS_FS	{DEVFS_MOUNT DEVFS_DEBUG} 
	DEVPTS_FS 
	ADFS_FS?	{ADFS_FS_RW}
	SMB_FS?

menu lfs # Legacy Unix file systems 
	UFS_FS? UFS_FS_WRITE SYSV_FS? SYSV_FS_WRITE BFS_FS? MINIX_FS? EFS_FS? 

menu nfs # Network file systems
	CODA_FS? NFS_FS? {NFS_V3} NFSD? {NFSD_V3} ROOT_NFS

menu mfs # Microsoft file systems
	FAT_FS? MSDOS_FS? UMSDOS_FS? VFAT_FS? NTFS_FS? {NTFS_RW} JOLIET 

menu ofs # Other foreign file systems
	UDF_FS? UDF_RW AFFS_FS? HFS_FS? CRAMFS? RAMFS? HPFS_FS? QNX4FS_FS? {QNX4FS_RW}

menu ncpfs # NCP filesystem configuration
	NCPFS_PACKET_SIGNING NCPFS_IOCTL_LOCKING
	NCPFS_STRONG NCPFS_NFS_NS NCPFS_OS2_NS NCPFS_SMALLDOS
	NCPFS_MOUNT_SUBDIR NCPFS_NDS_DOMAINS NCPFS_NLS NCPFS_EXTRAS

menu fs # File Systems
	ufs lfs nfs mfs ofs NCP_FS? {ncpfs} parttypes nls

# Local rules
require (MSDOS_FS <= FAT_FS) and (VFAT_FS <= FAT_FS)
require UMSDOS_FS <= MSDOS_FS
require ROOT_NFS <= NFS_FS
require DEVPTS_FS <= UNIX98_PTYS
unless NCP_FS!=n suppress ncpfs

# $ = if both y, y; if both m, m; if both n, n; otherwise n
derive SUNRPC from NFS_FS $ NFSD
derive LOCKD from NFS_FS $ NFSD
derive LOCKD_V4 from NFSD_V3 or NFS_V3

# From fs/nls/Config.in

menu nls # National Language Support
	NLS_CODEPAGE_437?
	NLS_CODEPAGE_737?
	NLS_CODEPAGE_775?
	NLS_CODEPAGE_850?
	NLS_CODEPAGE_852?
	NLS_CODEPAGE_855?
	NLS_CODEPAGE_857?
	NLS_CODEPAGE_860?
	NLS_CODEPAGE_861?
	NLS_CODEPAGE_862?
	NLS_CODEPAGE_863?
	NLS_CODEPAGE_864?
	NLS_CODEPAGE_865?
	NLS_CODEPAGE_866?
	NLS_CODEPAGE_869?
	NLS_CODEPAGE_874?
	NLS_ISO8859_1?
	NLS_ISO8859_2?
	NLS_ISO8859_3?
	NLS_ISO8859_4?
	NLS_ISO8859_5?
	NLS_ISO8859_6?
	NLS_ISO8859_7?
	NLS_ISO8859_8?
	NLS_ISO8859_9?
	NLS_ISO8859_14?
	NLS_ISO8859_15?
	NLS_KOI8_R?

derive NLS from JOLIET==y or FAT_FS!=n or NTFS_FS!=n or NCPFS_NLS==y
unless NLS!=n suppress nls

# From fs/partitions/Config.in

#
# These defaults are what will take effect
# if the user doesn't select EXPERT
#
default OSF_PARTITION from ALPHA
default MSDOS_PARTITION from ALPHA or ATARI or MAC
default AMIGA_PARTITION from AMIGA
default MAC_PARTITION from MAC
default ACORN_PARTITION from ARCH_ACORN
default ACORN_PARTITION_ADFS from ARCH_ACORN
#default ACORN_PARTITION_CUMANA from ARCH_ACORN
default ACORN_PARTITION_ICS from ARCH_ACORN
default ACORN_PARTITION_POWERTEC from ARCH_ACORN
default ACORN_PARTITION_RISCIX from ARCH_ACORN
default ATARI_PARTITION from ATARI
default IBM_PARTITION from ARCH_S390
default SGI_PARTITION from MIPS		# formerly from undefined SGI
default SUN_PARTITION from SPARC

menu parttypes # Partition types
	ACORN_PARTITION {
#		ACORN_PARTITION_CUMANA
		ACORN_PARTITION_ICS
		ACORN_PARTITION_ADFS
		ACORN_PARTITION_POWERTEC
		ACORN_PARTITION_RISCIX
	}
	OSF_PARTITION
	AMIGA_PARTITION
	ATARI_PARTITION
	IBM_PARTITION
	MAC_PARTITION
	MSDOS_PARTITION {
		BSD_DISKLABEL
		SOLARIS_X86_PARTITION
		UNIXWARE_DISKLABEL
	}
	SGI_PARTITION
	SUN_PARTITION
#unless EXPERT suppress parttypes

# From net/ax25/Config.in and drivers/net/hamradio/Config.in

unless NET suppress hamradio

menu ax25 # AX.25 network device drivers
	AX25_DAMA_SLAVE # AX25_DAMA_MASTER 
	NETROM? ROSE? MKISS? SIXPACK? BPQETHER? DMASCC? 
	SCC? {SCC_DELAY SCC_TRXECHO} 
	BAYCOM_SER_FDX? BAYCOM_SER_HDX? BAYCOM_PAR? BAYCOM_EPP? YAM?

menu soundmodem # Soundcard modem drivers
	SOUNDMODEM_SBC SOUNDMODEM_WSS 
	SOUNDMODEM_AFSK1200 SOUNDMODEM_AFSK2400_7 SOUNDMODEM_AFSK2400_8
	SOUNDMODEM_AFSK2666 SOUNDMODEM_HAPN4800 SOUNDMODEM_PSK4800
	SOUNDMODEM_FSK9600

menu hamradio # Ham radio drivers
	AX25? {ax25 SOUNDMODEM? {soundmodem}}

# From net/ipv4/Config.in and net/ipv4/netfilter/Config.in

# derive RTNETLINK from IP_ADVANCED_ROUTER
# derive NETLINK from IP_ADVANCED_ROUTER

menu ipv4 # IP Version 4 configuration
	IP_MULTICAST 
	IP_ADVANCED_ROUTER {
		IP_MULTIPLE_TABLES IP_ROUTE_FWMARK IP_ROUTE_NAT 
		IP_ROUTE_MULTIPATH IP_ROUTE_TOS IP_ROUTE_VERBOSE 
		IP_ROUTE_LARGE_TABLES
	}
	IP_PNP {IP_PNP_BOOTP IP_PNP_RARP} #IP_PNP_ARP
	IP_ROUTER NET_IPIP? NET_IPGRE? NET_IPGRE_BROADCAST 
	IP_MROUTE {IP_PIMSM_V1 IP_PIMSM_V2}
	IP_ALIAS ARPD SYN_COOKIES SKB_LARGE #UDP_DELAY_CSUM
	ipv4_netfilter

unless EXPERIMENTAL and RTNETLINK suppress ARPD
#unless EXPERIMENTAL suppress UDP_DELAY_CSUM
unless NETFILTER suppress IP_ROUTE_FWMARK
unless IP_MULTICAST suppress IP_MROUTE
unless IP_MULTICAST and NET_IPGRE!=n suppress NET_IPGRE_BROADCAST

menu ipv4_netfilter	# IP netfilter configuration
	IP_NF_CONNTRACK? {IP_NF_FTP?} IP_NF_QUEUE?
	IP_NF_IPTABLES? {
		IP_NF_MATCH_LIMIT? IP_NF_MATCH_MAC? IP_NF_MATCH_MARK?
		IP_NF_MATCH_MULTIPORT? IP_NF_MATCH_TOS? IP_NF_MATCH_STATE?
		IP_NF_MATCH_UNCLEAN? IP_NF_MATCH_OWNER? 
		IP_NF_FILTER? {IP_NF_TARGET_REJECT? IP_NF_TARGET_MIRROR?}
		IP_NF_NAT? {IP_NF_TARGET_MASQUERADE? IP_NF_TARGET_REDIRECT?}
		IP_NF_MANGLE? {IP_NF_TARGET_TOS? IP_NF_TARGET_MARK? 
		IP_NF_TARGET_LOG?}
	}
	IP_NF_COMPAT_IPCHAINS? {IP_NF_COMPAT_IPFWADM?}

unless NETFILTER suppress ipv4_netfilter
unless EXPERIMENTAL suppress
	IP_NF_MATCH_UNCLEAN IP_NF_MATCH_OWNER IP_NF_TARGET_MIRROR
unless EXPERIMENTAL and NETLINK suppress IP_NF_QUEUE
unless IP_NF_CONNTRACK!=n suppress IP_NF_MATCH_STATE IP_NF_NAT
require (IP_NF_COMPAT_IPCHAINS==n) or (IP_NF_CONNTRACK==n)
derive IP_NF_NAT_NEEDED from 
	(IP_NF_NAT!=n) or (IP_NF_COMPAT_IPCHAINS!=n) or (IP_NF_COMPAT_IPFWADM!=n)

# From net/Config.h, net/khttpd/Config.in, net/ipx/Config.in

unless EXPERIMENTAL suppress
	IPX IPV6 KHTTPD ATM IPX X25 LAPB BRIDGE LLC WAN_ROUTER
	NET_FASTROUTE NET_HW_FLOWCONTROL NET_SCHED # NET_PROFILE

#unless LLC suppress NETBEUI
unless ARCH_ACORN suppress ECONET
unless INET suppress ATM_MPOA ECONET

menu net # Networking options
	PACKET?		{PACKET_MMAP} 
	NETLINK		{RTNETLINK NETLINK_DEV?} 
	NETFILTER	{NETFILTER_DEBUG} 
	INET 		{ipv4}
	IPV6?		{ipv6} 
	FILTER UNIX? KHTTPD? 
	ATM		{ATM_CLIP {ATM_CLIP_NO_ICMP} ATM_LANE? {ATM_MPOA?}} 
	IPX? 		{IPX_INTERN SPX?}
	DECNET?		{decnet} 
	X25? LAPB? BRIDGE? LLC 
	ECONET? 		{ECONET_AUNUDP ECONET_NATIVE} 
	WAN_ROUTER? NET_FASTROUTE NET_HW_FLOWCONTROL
	NET_SCHED 	{netsched} # NET_PROFILE
	IRDA?		{irda}

# From net/decnet/Config.in

unless EXPERIMENTAL suppress DECNET_ROUTER

menu decnet # Decnet options
	DECNET_SIOCGIFCONF DECNET_ROUTER {DECNET_ROUTE_FWMARK}

# From net/ipv6/Config.in

unless IPV6!=n and NETLINK and RTNETLINK suppress IPV6_NETLINK

menu ipv6 # IPv6 options
	IPV6_EUI64 {IPV6_NO_PB} IPV6_NETLINK # RT6_POLICY IPV6_FIREWALL
	ipv6_netfilter

menu ipv6_netfilter	# IP netfilter configuration
	#IP6_NF_CONNTRACK? {IP6_NF_FTP?} IP6_NF_QUEUE?
	IP6_NF_IPTABLES? {
		IP6_NF_MATCH_LIMIT? # IP6_NF_MATCH_MAC? 
		IP6_NF_MATCH_MARK?
		# IP6_NF_MATCH_MULTIPORT? IP6_NF_MATCH_TOS? IP6_NF_MATCH_STATE?
		# IP6_NF_MATCH_UNCLEAN? IP6_NF_MATCH_OWNER? 
		IP6_NF_FILTER? # {IP6_NF_TARGET_REJECT? IP6_NF_TARGET_MIRROR?}
		# IP6_NF_NAT? {IP6_NF_TARGET_MASQUERADE? IP6_NF_TARGET_REDIRECT?}
		IP6_NF_MANGLE? {IP6_NF_TARGET_MARK?} #IP6_NF_TARGET_LOG?
	}

# From net/sched/Config.in

unless ATM suppress NET_SCH_ATM 
unless NETFILTER suppress NET_SCH_INGRESS

menu netsched # Traffic control configuration
	NET_SCH_CBQ? NET_SCH_CSZ? # NET_SCH_HPFQ? NET_SCH_HFCS?
	NET_SCH_ATM NET_SCH_PRIO? NET_SCH_RED? NET_SCH_SFQ?
	NET_SCH_TEQL? NET_SCH_TBF? NET_SCH_GRED?
	NET_SCH_DSMARK? NET_SCH_INGRESS? 
	NET_QOS {
		NET_ESTIMATOR 
		NET_CLS {
			NET_CLS_TCINDEX? NET_CLS_ROUTE4? NET_CLS_FW? 
			NET_CLS_U32? NET_CLS_RSVP? NET_CLS_RSVP6? NET_CLS_POLICE
		}
	}
unless NET_QOS suppress NET_CLS_RSVP NET_CLS_RSVP6

when NET_SCHED set NETLINK = y
when NET_SCHED set RTNETLINK = y

derive NET_CLS_ROUTE from NET_CLS_ROUTE4!=n

# From net/irda/Config.in, net/irda/ircomm/Config.in, 
#	net/irda/irlan/Config.in, net/irda/compressors/Config.in

menu irda # IrDA (infrared) support
	IRLAN? IRCOMM? IRDA_ULTRA 
	IRDA_OPTIONS		{IRDA_CACHE_LAST_LSAP IRDA_FAST_RR IRDA_DEBUG}
	IRDA_COMPRESSION	{IRDA_DEFLATE?}
	irda_drivers

# From drivers/net/irda/Config.in

unless EXPERIMENTAL suppress SMC_IRCC_FIR

# All these had a dep_tristate on CONFIG_IRDA
menu irda_drivers # Infrared-port device drivers
	# SIR device drivers
	IRTTY_SIR? IRPORT_SIR?
	# FIR device drivers
	NSC_FIR? WINBOND_FIR? TOSHIBA_FIR? SMC_IRCC_FIR?
	# Serial dongle support
	DONGLE {
		ESI_DONGLE? ACTISYS_DONGLE? TEKRAM_DONGLE? GIRBIL_DONGLE? 
		LITELINK_DONGLE? OLD_BELKIN_DONGLE?
	}

# From drivers/net/Config.in, drivers/acorn/net/Config.in

unless NETLINK suppress ETHERTAP
unless PARPORT!=n suppress dependent PLIP
unless HOTPLUG==y and PCMCIA!=n suppress dependent pcmcia_drivers
unless X86 or ALPHA or SPARC suppress 
	EQUALIZER ETHERTAP NET_SB1000 NET_ETHERNET FDDI PLIP 
	NET_RADIO TR WAN ARCNET
unless (S390==n) suppress EQUALIZER ETHERTAP NET_SB1000
	ethernet_lospeed ethernet_hispeed fddi_drivers PLIP SLIP PPP
	NET_RADIO fddi_drivers NET_FC WAN ARCNET ATALK NET_PCMCIA
unless S390 suppress CTC IUCV

menu net_drivers # Network device configuration
	DUMMY? BONDING? EQUALIZER? ETHERTAP? NET_SB1000?
	NET_ETHERNET	{ethernet_lospeed ethernet_hispeed}
	FDDI		{fddi_drivers}
	PLIP?
	PPP?		{ppp_options}
	SLIP?		{slip_options}
	NET_RADIO	{wlan_drivers}
	TR		{tokenring_drivers}
	NET_FC		{fiber_channel}
	WAN		{wan_drivers}
	ARCNET?		{arcnet_drivers}
	ATALK?		{appletalk_drivers}
	NET_PCMCIA	{pcmcia_drivers}
	CTC IUCV

# Low-speed Ethernet

unless EXPERIMENTAL suppress 
	ELMC_II NI5010 AT1700 ETHERTAP AC3200 DM9102 
	EEPRO100_PM LNE390 NE3210 RTL8129 ES3210 EPIC100 PPP_MULTILINK
unless OBSOLETE suppress SMC9194 EWRK3 FMV18X SEEQ8005 ZNET

unless MCA suppress ELMC ELMC_II ULTRAMCA SKMC NE2_MCA
unless ISA suppress NET_ISA eth_isa_drivers ISA3C515
unless PCI suppress NET_PCI eth_pci_drivers
unless PCI suppress dependent TULIP EEPRO100 NE2K_PCI

unless ARM and ARCH_ACORN!=y suppress ARM_AM79C961A
unless ARM and ARCH_ACORN==y suppress ARM_ETHER1 ARM_ETHER3 ARM_ETHERH
unless PPC suppress MACE BMAC GMAC NCR885E OAKNET
unless ZORRO suppress ARIADNE ARIADNE2 A2065 HYDRA
unless MIPS_JAZZ suppress MIPS_JAZZ_SONIC
#unless SGI suppress SGISEEQ	# SGI is not actually defined in CML1
unless SGI_IP27 suppress SGI_IOC3_ETH
unless X86 suppress ATP
unless X86 or ALPHA suppress NET_VENDOR_3COM LANCE NET_VENDOR_SMC
	NET_VENDOR_RACAL AT1700 DEPCA SKMC NET_POCKET
unless SPARC suppress HAPPYMEAL SUNBMAC SUNQE
unless DECSTATION suppress DECLANCE
unless BAGET_MIPS suppress BAGETLANCE BAGETBSM
unless PPC_8xx suppress SCC_ENET FEC_ENET
unless PPC_8260 suppress SCC_ENET FCC_ENET
unless AMIGA and PCMCIA suppress APNE
unless APOLLO suppress APOLLO_ELPLUS
unless MAC suppress MAC8390 MACSONIC SMC9194 MAC89x0 MACMACE
unless MVME147 suppress MVME147_NET 
unless MVME16x suppress MVME16x_NET 
unless BVME6000 suppress BVME6000_NET
unless ATARI suppress ATARILANCE
unless SUN3X or SPARC suppress SUNLANCE
unless HP300 suppress HPLANCE
unless SUPERH and SH_SOLUTION_ENGINE suppress STNIC

menu ethernet_lospeed # Ethernet (10 or 100Mbit)
	ARM_AM79C961A? ARM_ETHER1? ARM_ETHER3? ARM_ETHERH?	# ARM
	MACE? BMAC? GMAC? NCR885E? OAKNET?			# PPC
	ARIADNE? ARIADNE2? A2065? HYDRA?			# ZORRO
	MIPS_JAZZ_SONIC?					# MIPS_JAZZ
	SGISEEQ						# SGI	
	SGI_IOC3_ETH					# SGI_IP27
	STNIC						# SuperH
	SUNLANCE? HAPPYMEAL? SUNBMAC? SUNQE?		# Sun
	DECLANCE BAGETLANCE? BAGETBSM?			# MIPS
	SCC_ENET {SCC1_ENET {SCC2_ENET}} FEC_ENET	# PPC_8xx
	FCC_ENET {FCC1_ENET {FCC2_ENET}}		# PPC_8260
	MAC8390 MACSONIC? MAC89x0? MACMACE		# MAC
	APNE?						# AMIGA_PCMCIA
	HPLANCE						# Generic M68K
	MVME147_NET? MVME16x_NET? BVME6000_NET?		# VME
	ATARILANCE? {ATARI_BIONET? ATARI_PAMSNET?}		# ATARI
	NET_VENDOR_3COM			{eth_3com_drivers}
	LANCE?
	NET_VENDOR_SMC			{eth_smc_drivers}
	NET_VENDOR_RACAL		{eth_racal_drivers}
	AT1700? DEPCA?
	NET_ISA				{eth_isa_drivers}
	SKMC? NE2_MCA?
	NET_PCI				{eth_pci_drivers}
	NET_POCKET			{eth_pocket_drivers}

menu eth_3com_drivers # 3Com Ethernet cards
	EL1? EL2? ELPLUS?
	EL16? EL3? ISA3C515?
	ELMC? ELMC_II? VORTEX?
	APOLLO_ELPLUS?

menu eth_smc_drivers # SMC Ethernet cards
	WD80x3? ULTRAMCA? ULTRA? ULTRA32? SMC9194?

menu eth_racal_drivers # Racal-Interlan (Micom) NI cards
	NI5010? NI52? NI65?

menu eth_isa_drivers # Other ISA drivers
	E2100? EWRK3? EEXPRESS? EEXPRESS_PRO? FMV18X? 
	HPLAN_PLUS? HPLAN? HP100? ETH16I? NE2000? SEEQ8005? SK_G16

menu eth_pci_drivers # EISA, VLB, PCI and on board controllers
	PCNET32? ADAPTEC_STARFIRE? AC3200?
	APRICOT? CS89x0? DE4X5? TULIP? DGRS? DM9102?
	EEPRO100? {EEPRO100_PM}
	LNE390? NE3210? NE2K_PCI? RTL8129?
	RTL8139? SIS900? TLAN? VIA_RHINE? ES3210? EPIC100?
	ZNET

menu eth_pocket_drivers # Pocket Ethernet adapters
	ATP? DE600? DE620?

# High-speed Ethernet

unless EXPERIMENTAL suppress YELLOWFIN PPPOE
unless X86 or ALPHA or SPARC suppress YELLOWFIN ACENIC SK98LIN
unless SPARC suppress MYRI_SBUS
unless INET suppress HIPPI

menu ethernet_hispeed # Ethernet (1000 Mbit)
	YELLOWFIN? ACENIC? {ACENIC_OMIT_TIGON_I} SK98LIN? MYRI_SBUS?

# FDDI

menu fddi_drivers # FDDI driver support
	DEFXX SKFP? HIPPI {ROADRUNNER? {ROADRUNNER_LARGE_RINGS}}

# PPP?

menu ppp_options # PPP? options
	PPP_MULTILINK PPP_ASYNC? PPP_SYNC_TTY? PPP_DEFLATE? PPP_BSDCOMP?
	PPPOE?

require PPP_BSDCOMP <= m

# SLIP

menu slip_options # SLIP? options
	SLIP_COMPRESSED SLIP_SMART SLIP_MODE_SLIP6

# Wireless LAN

unless INET suppress STRIP					#dep
unless EXPERIMENTAL suppress AIRONET4500_ISA AIRONET4500_I365	#dep
unless PCI suppress AIRONET4500_PCI				#dep
unless ISA suppress AIRONET4500_ISA

menu wlan_drivers # Wireless LAN
	STRIP? 
	WAVELAN?
	ARLAN? AIRONET4500? {
		AIRONET4500_NONCS? {
			AIRONET4500_PNP AIRONET4500_PCI AIRONET4500_ISA 
			AIRONET4500_I365 AIRONET4500_PROC?
		}
	}

require AIRONET4500_PROC <= m

# Fiber Channel

unless SCSI!=n suppress dependent IPHASE5526
unless EXPERIMENTAL suppress RCPCI SHAPER

menu fiber_channel # Fiber Channel drivers
	IPHASE5526? RCPCI? SHAPER?

# From drivers/net/wan/Config.in

unless OBSOLETE suppress WANPIPE_PPP WANPIPE_X25
unless WAN_ROUTER!=n suppress WAN_ROUTER_DRIVERS
unless EXPERIMENTAL suppress CYCLADES_SYNC
unless LAPB!=n suppress dependent COMX_PROTO_LAPB

default DLCI_COUNT from 24
default DLCI_MAX from 8

default WANPIPE_CARDS		from	1

menu wan_drivers # Wan drivers
	HOSTESS_SV11? COSA? LANMEDIA?
	COMX? {
		COMX_HW_LOCOMX? COMX_HW_MIXCOM? 
		COMX_PROTO_PPP? COMX_PROTO_LAPB? COMX_PROTO_FR?
	}
	SEALEVEL_4021? 
	DLCI?			{DLCI_COUNT% DLCI_MAX% SDLA?}
	WAN_ROUTER_DRIVERS	{wan_router_drivers}

menu wan_router_drivers # WAN router drivers
	VENDOR_SANGOMA? { 
		WANPIPE_CARDS% WANPIPE_CHDLC WANPIPE_FR WANPIPE_PPP WANPIPE_X25
	}
	CYCLADES_SYNC? {CYCLOMX_X25}
	LAPBETHER? X25_ASY? SBNI?

require LAPBETHER <= LAPB and LAPBETHER <= X25
require X25_ASY <= LAPB and LAPBETHER <= X25
require COSA <= m

# There is no way to detect a Comtrol sv11 - force it modular for now.
require HOSTESS_SV11 <= m
# The COSA/SRP driver has not been tested as non-modular yet.
require COSA <= m
# There is no way to detect a Sealevel - force it modular for now.
require SEALEVEL_4021 <= m
# SDLA must be modular if DLCI is
require SDLA <= DLCI

# From drivers/net/tokenring/Config.in

unless MCA suppress MADGEMC

menu tokenring_drivers # Token Ring devices
		IBMTR? IBMOL? TMS380TR? {TMSPCI? ABYSS? MADGEMC?} SMCTR?

# From drivers/net/arcnet/Config.in

unless ISA suppress ARCNET_COM20020_ISA 
unless PCI suppress ARCNET_COM20020_PCI

menu arcnet_drivers # ARCnet support
	ARCNET_1201? ARCNET_1051? ARCNET_RAW? ARCNET_COM90xx? ARCNET_COM90xxIO?
	ARCNET_RIM_I? ARCNET_COM20020? {ARCNET_COM20020_ISA? ARCNET_COM20020_PCI?}

# From drivers/net/pcmcia/Config.in

unless ARCNET!=n suppress dependent ARCNET_COM20020_CS
unless CARDBUS suppress PCMCIA_3C575 PCMCIA_TULIP
unless TR suppress PCMCIA_XIRTULIP

menu pcmcia_drivers # PCMCIA? network device support
	PCMCIA_3C589? PCMCIA_3C574? PCMCIA_FMVJ18X? PCMCIA_PCNET? PCMCIA_NMCLAN?
	PCMCIA_SMC91C92? PCMCIA_XIRC2PS? ARCNET_COM20020_CS? PCMCIA_IBMTR?
	PCMCIA_3C575? PCMCIA_TULIP? PCMCIA_XIRTULIP? 
	NET_PCMCIA_RADIO {
		PCMCIA_RAYCS? PCMCIA_NETWAVE? PCMCIA_WAVELAN? AIRONET4500_CS?
	}

require PCMCIA_3C575 <= m
require PCMCIA_TULIP <= m
derive PCMCIA_NETCARD from PCMCIA_3C589==y or PCMCIA_3C574==y or 
     				PCMCIA_FMVJ18X==y or PCMCIA_PCNET==y or
     				PCMCIA_NMCLAN==y or PCMCIA_SMC91C92==y or
     				PCMCIA_XIRC2PS==y or PCMCIA_RAYCS==y or
     				PCMCIA_NETWAVE==y or PCMCIA_WAVELAN==y

# From drivers/net/appletalk/Config.in

menu appletalk_drivers # Appletalk devices
	APPLETALK {
		LTPC? 
		COPS? {COPS_DAYNA COPS_TANGENT}
		IPDDP? {IPDDP_ENCAP IPDDP_DECAP}
	}

# From drivers/block/Config.in, drivers/block/paride/Config.in,
# and drivers/acorn/block/Config.in

unless AMIGA suppress AMIGA_FLOPPY BLK_DEV_GAYLE
unless ATARI suppress ATARI_FLOPPY BLK_DEV_FALCON_IDE ATARI_ACSI
unless ARCH_ACORN suppress BLK_DEV_IDE_ICSIDE BLK_DEV_IDE_RAPIDE 
unless MAC suppress MAC_FLOPPY
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	# In CML1, PMAC also suppressed this
unless X86 or IA64 suppress BLK_DEV_PIIX
unless X86 suppress BLK_DEV_HD_ONLY BLK_DEV_SIS5513
unless ARCH_ARC or ARCH_A5K suppress 
	BLK_DEV_FD1772 BLK_DEV_MFM BLK_DEV_MFM_AUTODETECT
unless S390 suppress DASD
unless (S390==n) suppress BLK_DEV_FD
unless ZORRO suppress BLK_DEV_BUDDHA AMIGA_Z2RAM
unless ISAPNP==y suppress BLK_DEV_ISAPNP
unless IDE suppress ide_blockdevs
unless PCI suppress BLK_DEV_RZ1000 BLK_DEV_IDEPCI BLK_CPQ_DA BLK_DEV_DAC960
unless MCA suppress BLK_DEV_PS2
unless PARPORT suppress PARIDE
unless EXPERIMENTAL suppress 
	IDEDMA_NEW_DRIVE_LISTINGS BLK_DEV_OPTI621 
	BLK_DEV_PDC4030 BLK_DEV_BUDDHA
unless OBSOLETE suppress BLK_DEV_XD

menu block_devices # Block devices
	# Floppies
	BLK_DEV_FD? 
	AMIGA_FLOPPY? ATARI_FLOPPY? MAC_FLOPPY BLK_DEV_SWIM_IOP 
	BLK_DEV_FD1772?
	ide_blockdevs 
	BLK_DEV_PS2? AMIGA_Z2RAM?
	ATARI_ACSI? {ACSI_MULTI_LUN ATARI_SLM?}			# Atari
	BLK_CPQ_DA?
	BLK_DEV_MFM? {BLK_DEV_MFM_AUTODETECT}			# Acorn
	add_block_devices
	DASD {
		DASD_ECKD
		# DASD_CKD
		DASD_MDSK
	}

menu ide_blockdevs	# IDE block devices
	BLK_DEV_IDE? BLK_DEV_HD_ONLY ide_options ide_chipsets
	IDE_CHIPSETS {other_ide_chipsets}
	BLK_DEV_IDE_PMAC {BLK_DEV_IDEDMA_PMAC {IDEDMA_PMAC_AUTO}}	# Mac
	BLK_DEV_IDE_ICSIDE {BLK_DEV_IDEDMA_ICS {IDEDMA_ICS_AUTO}}
	BLK_DEV_IDE_RAPIDE 
	BLK_DEV_GAYLE {BLK_DEV_IDEDOUBLER?}
	BLK_DEV_BUDDHA BLK_DEV_FALCON_IDE BLK_DEV_MAC_IDE

# FIXME: the 2.3.99-pre9 code includes these, which look like no-ops
#    define_bool CONFIG_BLK_DEV_IDEDISK_VENDOR n
#    dep_mbool '    Fujitsu Vendor Specific' CONFIG_BLK_DEV_IDEDISK_FUJITSU $CONFIG_BLK_DEV_IDEDISK_VENDOR
#    dep_mbool '    IBM Vendor Specific' CONFIG_BLK_DEV_IDEDISK_IBM $CONFIG_BLK_DEV_IDEDISK_VENDOR
#    dep_mbool '    Maxtor Vendor Specific' CONFIG_BLK_DEV_IDEDISK_MAXTOR $CONFIG_BLK_DEV_IDEDISK_VENDOR
#    dep_mbool '    Quantum Vendor Specific' CONFIG_BLK_DEV_IDEDISK_QUANTUM $CONFIG_BLK_DEV_IDEDISK_VENDOR
#    dep_mbool '    Seagate Vendor Specific' CONFIG_BLK_DEV_IDEDISK_SEAGATE $CONFIG_BLK_DEV_IDEDISK_VENDOR
#    dep_mbool '    Western Digital Vendor Specific' CONFIG_BLK_DEV_IDEDISK_WD $CONFIG_BLK_DEV_IDEDISK_VENDOR


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
			BLK_DEV_AMD7409		{AMD7409_OVERRIDE} 
			BLK_DEV_HPT34X		{HPT34X_AUTODMA}
			BLK_DEV_HPT366		{HPT366_FIP HPT366_MODE3} 
			BLK_DEV_PIIX 		{PIIX_TUNING}
			BLK_DEV_NS87415 
			BLK_DEV_PDC202XX {
				PDC202XX_BURST {PDC202XX_MASTER}
			} 
			BLK_DEV_SIS5513 
			BLK_DEV_TRM290
			BLK_DEV_VIA82CXXX
		}
		BLK_DEV_OFFBOARD
		BLK_DEV_AEC6210		{AEC6210_TUNING} 
		BLK_DEV_CMD64X		{CMD64X_RAID}
		BLK_DEV_CY82C693
		BLK_DEV_CS5530 
		BLK_DEV_OPTI621 
		BLK_DEV_SL82C105
	}

# Other chipset dependencies
unless IDEDMA_PCI_EXPERIMENTAL suppress 
	IDEDMA_PCI_WIP BLK_DEV_CY82C693 BLK_DEV_NS87415
	BLK_DEV_TRM290 BLK_DEV_VIA82CXXX
unless IDEDMA_PCI_WIP suppress 
	AMD7409_OVERRIDE CMD64X_RAID HPT34X_AUTODMA HPT366_FIP HPT366_MODE3
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_QD6580 BLK_DEV_UMC8672

private MD_RAID15_DANGEROUS

menu add_block_devices # Additional block evices
	BLK_DEV_LOOP?
	BLK_DEV_NBD? 
	BLK_DEV_MD	{
		MD_LINEAR? MD_STRIPED? MD_BOOT
		MD_RAID15_DANGEROUS {MD_RAID1? MD_RAID5?}
	}
	BLK_DEV_DAC960?
	BLK_DEV_RAM?	{BLK_DEV_INITRD} 
	BLK_DEV_XD?
	PARIDE? 		{paride_devices}

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 IDEDMA_PCI_EXPERIMENTAL from EXPERIMENTAL and BLK_DEV_IDEDMA_PCI
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 IDEDMA_PMAC_AUTO or IDEDMA_ICS_AUTO
	or (SPARC64 and PCI)

derive BLK_DEV_IDE_MODES from 
	IDE_CHIPSETS or	BLK_DEV_AEC6210 or BLK_DEV_ALI15X3 or 
	BLK_DEV_AMD7409 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_PDC202XX or BLK_DEV_PIIX or BLK_DEV_SIS5513 or 
	BLK_DEV_SL82C105 or (SPARC64 and PCI)
derive BLK_DEV_HD from BLK_DEV_HD_IDE or BLK_DEV_HD_ONLY

unless MD_LINEAR and MD_STRIPED suppress MD_BOOT

# From drivers/block/paride/Config.in

# 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.
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_COMM? PARIDE_DSTR? PARIDE_FIT2? PARIDE_FIT3?
	PARIDE_EPAT? PARIDE_EPIA? PARIDE_FRIQ? PARIDE_FRPW? PARIDE_KBIC? PARIDE_KTTI?
	PARIDE_ON20? PARIDE_ON26?

# From drivers/char/Config.in

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) and (DECSTATION==n)) 
		or (PPC_4xx or PPC_8xx)
		or (ARM and ARCH_ACORN and ARCH_EBSA110)
	suppress VGA_CONSOLE
unless SGI_IP22 suppress SGI_PROM_CONSOLE SGI_NEWPORT_CONSOLE
unless MIPS suppress SGI_NEWPORT_GFX
unless X86 or (MIPS and VT and (SGI_IP22==n) and (DECSTATION==n)) 
		or (ALPHA and VT) or (PPC_4xx or PPC_8xx)
	suppress FB

menu console	# Console drivers
	VGA_CONSOLE VIDEO_SELECT MDA_CONSOLE? 
	PROM_CONSOLE SGI_PROM_CONSOLE SGI_NEWPORT_CONSOLE? SGI_NEWPORT_GFX?
	FB {framebuffer}

default FB from M68K
unless HP300 suppress FB

unless EXPERIMENTAL suppress CYZ_INTR ISI ATARI_DSP56K
unless EXPERT suppress SERIAL_EXTENDED SERIAL_NONSTANDARD
unless ARCH_ACORN and SERIAL suppress ATOMWIDE_SERIAL DUALSP_SERIAL
unless MIPS32 suppress DZ MIPS_KEYBOARD MIPS_MOUSE
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 MAC suppress MAC_SCC
unless HP300 and DIO suppress HPDCA
unless SUN3X suppress SUN3X_ZS
unless MVME147 suppress MVME147_SCC
unless MVME16x suppress SERIAL167 MVME162_SCC
unless BVME6000 suppress BVME6000_SCC
unless M68K suppress USERIAL
unless SUPERH suppress shsci
unless SPARC64 and SBUS suppress SAB82532

default UNIX98_PTY_COUNT	from	256

menu cdevs	# Character devices
	VT		{VT_CONSOLE} 
	SERIAL?		{SERIAL_CONSOLE ATOMWIDE_SERIAL? DUALSP_SERIAL? shsci}
	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? 
	}
	MVME147_SCC SERIAL167 MVME162_SCC BVME6000_SCC	# VME
	DZ ZS MIPS_KEYBOARD MIPS_MOUSE			# MIPS only
	ATARI_MFPSER? ATARI_SCC? {ATARI_SCC_DMA}		# ATARI
	ATARI_MIDI? ATARI_DSP56K? 
	WHIPPET_SERIAL?					# AMIGA
	SGI_SERIAL					# MIPS
	MAC_SCC?						# MAC
	HPDCA?						# M68K
	SUN3X_ZS	{SUN_KEYBOARD}			# SUN3X
	USERIAL						# M68K
	AMIGA_BUILTIN_SERIAL?				# AMIGA
	SAB82532?					# Sun Ultra
	UNIX98_PTYS	{UNIX98_PTY_COUNT%}
	console
	pcmcia_chardevs
	I2C?		{i2c}
	VIDEO_DEV?	{video}
	graphics
	char_devs_misc
	PRINTER?		{LP_CONSOLE} 
	PPDEV?
	mice
	JOYSTICK?	{joysticks}
	qic

unless VT suppress VGA_CONSOLE
unless DIGIEPCA==n suppress DIGI
unless PARPORT!=n suppress dependent PRINTER LP_CONSOLE PPDEV
require ISI <= m
require SYNCLINK <= m
require N_HDLC <= m

# 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 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)
#	suppress SERIAL_CONSOLE

radiomenu shsci	# Serial interface tpe
	SH_SCI_SERIAL SH_SCIF_SERIAL
	default SH_SCI_SERIAL

# from drivers/i2c/Config.in

menu i2c	# I2C? support
	I2C_ALGOBIT? {I2C_PHILIPSPAR? I2C_ELV? I2C_VELLEMAN?} 
	I2C_ALGOPCF? {I2C_ELEKTOR?} I2C_CHARDEV?

# From drivers/char/Config.in, continued

unless ADB suppress ADBMOUSE
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
	MOUSE? {PSMOUSE CT82C710_MOUSE? PC110_PAD?}

when (AMIGA and (AMIGAMOUSE==n)) set BUSMOUSE = y
when (ATARI and (ATARIMOUSE==n)) set BUSMOUSE = y
when (SUN3X and (SUN_MOUSE==n)) set BUSMOUSE = y

# from drivers/char/joystick/Config.in

unless PARPORT!=n suppress JOY_CONSOLE JOY_DB9 JOY_TURBOGRAFX
unless AMIGA suppress JOY_AMIGA

menu joysticks	# Joystick support
	JOY_ANALOG? JOY_ASSASSIN? JOY_GRAVIS? JOY_LOGITECH? JOY_SIDEWINDER?
	JOY_THRUSTMASTER? JOY_CREATIVE? JOY_LIGHTNING? JOY_PCI?
	JOY_MAGELLAN? JOY_SPACEORB? JOY_SPACEBALL? JOY_WARRIOR?
	JOY_CONSOLE? JOY_DB9? JOY_TURBOGRAFX? JOY_AMIGA? 

# 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 suppress QIC02_DYNCONF
unless EXPERIMENTAL suppress FT_NR_BUFFERS FT_FDC_THR FT_FDC_MAX_RATE
unless ALPHA suppress FT_ALPHA_CLOCK

default FT_FDC_IRQ from 0
default FT_FDC_DMA from 0
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%

radiomenu ftdebug # Floppy tape debugging output level
	FT_NORMAL_DEBUG FT_FULL_DEBUG FT_NO_TRACE FT_NO_TRACE_AT_ALL
	default FT_NORMAL_DEBUG

radiomenu 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

when FT_PROC_FS set PROC_FS = y

# from drivers/char/Config.in, continued

unless FOOTBRIDGE suppress DC21285_WATCHDOG
unless FOOTBRIDGE and ARCH_NETWINDER suppress WB83C977_WATCHDOG

menu watchdog	# Watchdog cards
	WATCHDOG_NOWAYOUT WDT? {WDT_501 {WDT_501_FAN}} WDTPCI?
	SOFT_WATCHDOG? PCWATCHDOG? ACQUIRE_WDT? MIXCOMWD? 
	DC21285_WATCHDOG? WB83C977_WATCHDOG?

default NVRAM from ATARI
unless (ATARI==n) suppress NVRAM

default CMDLINE from "console=ttyS0,9600 console=tty0 root=/dev/sda2"

unless ARCH_NETWINDER suppress DS1620 NWBUTTON NWBUTTON_REBOOT NWFLASH
unless ALL_PPC or ARM or MIPS64 suppress CMDLINE
unless MIPS or SUPERH suppress CPU_LITTLE_ENDIAN
unless MIPS suppress SGI_DS1286

# from drivers/sgi/Config.in

# FIXME: MATH_EMULATION, MATHEMU, NWFPE, and IEEEFPU_EMULATION
# ought to be consolidated
unless X86 or PPC_4xx or PPC_8xx suppress MATH_EMULATION
unless S390 suppress IEEEFPU_EMULATION
unless SPARC64 and PCI suppress ENVCTRL
unless SPARC64 and SBUS suppress OBP_FLASH
unless EXPERIMENTAL and (ALPHA or IA64) suppress MATHEMU
unless PPC suppress NWFPE
unless APUS or ATARI or AMIGA or HP300 suppress HEARTBEAT
unless OBSOLETE and ALPHA_BOOK1 suppress H8
unless (S390==n) suppress NVRAM RTC

menu archihacks	# Architecture-specific hardware hacks
	MATH_EMULATION
	MATHEMU?
	NWFPE?
	IEEEFPU_EMULATION
	HEARTBEAT
	CMDLINE$
	CPU_LITTLE_ENDIAN
	DS1620? 
	NWBUTTON? {NWBUTTON_REBOOT} NWFLASH?
	NVRAM? 
	RTC? {EFI_RTC} 
	SGI_DS1286
	H8
	ENVCTRL?
	OBP_FLASH? 

# This is really only appropriate for PPC
#default CMDLINE from 'console=ttyS0,9600 console=tty0 root=/dev/sda2'

default MATHEMU from y

# This is MIPS32 cruft from CML1
default CPU_LITTLE_ENDIAN from DECSTATION or DDB5074
unless DECSTATION or DDB5074 suppress CPU_LITTLE_ENDIAN
derive BINFMT_IRIX from CPU_LITTLE_ENDIAN
derive FORWARD_KEYBOARD from CPU_LITTLE_ENDIAN

# Video

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 VIDEO_CQCAM VIDEO_CPIA VIDEO_VINO
unless USB suppress VIDEO_CPIA_USB
#unless SGI suppress VIDEO_VINO		# CML1 doesn't actually define SGI
unless PCI suppress dependent VIDEO_STRADIS VIDEO_ZORAN VIDEO_DEV
unless PPC suppress VIDEO_PLANB
require (VIDEO_SAA5249 <= I2C) and (TUNER_3036 <= I2C)

default RADIO_AZTECH_PORT	from	0x350
default RADIO_GEMTEK_PORT	from	0x34c
default RADIO_RTRACK2_PORT	from	0x30c
default RADIO_RTRACK_PORT	from	0x20f
default RADIO_SF16FMI_PORT	from	0x284
default RADIO_TERRATEC_PORT	from	0x590
default RADIO_TRUST_PORT	from	0x350
default RADIO_TYPHOON_MUTEFREQ	from	0x87500
default RADIO_TYPHOON_PORT	from	0x316
default RADIO_ZOLTRIX_PORT	from	0x20c

menu video	# Video For Linux
	I2C_PARPORT? 
	# 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_MIROPCM20? 
	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@}
	# Video Adaptors
	VIDEO_BT848? VIDEO_PMS? VIDEO_PLANB? VIDEO_BWQCAM? VIDEO_CQCAM? 
	VIDEO_CPIA? 	{VIDEO_CPIA_PP? VIDEO_CPIA_USB?}
	VIDEO_SAA5249? TUNER_3036? VIDEO_VINO? VIDEO_STRADIS?
	VIDEO_ZORAN?	{VIDEO_BUZ?}
	VIDEO_ZR36120?

menu char_devs_misc	# Miscellaneous character devices
	DTLK? R3964? APPLICOM?

unless EXPERIMENTAL suppress AGP

menu graphics	# Kernel-level graphics support
	DRM	{DRM_TDFX? DRM_GAMMA?}
	AGP?	{AGP_INTEL AGP_I810 AGP_VIA AGP_AMD AGP_SIS AGP_ALI}

when RADIO_TYPHOON_PROC_FS set PROC_FS = y
when VIDEO_BT848!=n set I2C_ALGOBIT = y		# This could work with m
require VIDEO_BT848!=n implies SOUND!=n and PCI

# from drivers/char/pcmcia/Config.in

# The truth table specified in CML1 for SERIAL_PCMCIA was this, 
# where SERIAL is the top and PCMCIA is the side:
#     n m y
#   +------
# n | n n n
# m | m m m
# y | y m y
#
# This looks like an error to me.
#
derive PCMCIA_SERIAL from SERIAL & PCMCIA
unless PCMCIA_SERIAL!=n suppress dependent pcmcia_chardevs
unless CARDBUS suppress PCMCIA_SERIAL_CB

menu pcmcia_chardevs	# PCMCIA? character device support
	PCMCIA_SERIAL_CS? PCMCIA_SERIAL_CB?

derive PCMCIA_CHRDEV from PCMCIA_SERIAL_CS | PCMCIA_SERIAL_CB

# from drivers/scsi/Config.in, 
#		drivers/acorn/scsi/Config.in, drivers/scsi/pcmcia/Config.in

unless SCSI suppress dependent scsi_devices scsi_drivers
#unless EXPERIMENTAL suppress SCSI_DEBUG_QUEUES
unless PCI suppress 
	SCSI_INITIO SCSI_INIA100 SCSI_NCR53C7xx SCSI_NCR53C8XX SCSI_SYM53C8XX
unless PARPORT suppress dependent SCSI_PPA SCSI_IMM

menu scsi_devices	# SCSI? disk support
	BLK_DEV_SD? {SD_EXTRA_DEVS%} 
	CHR_DEV_ST? {ST_EXTRA_DEVS%} 
	BLK_DEV_SR? {BLK_DEV_SR_VENDOR SR_EXTRA_DEVS%}
	CHR_DEV_SG? 
	# Some SCSI? devices (e.g. CD jukebox) support multiple LUNs
	SCSI_DEBUG_QUEUES SCSI_MULTI_LUN SCSI_CONSTANTS SCSI_LOGGING

unless EXPERIMENTAL suppress 
	SCSI_NCR53C8XX_SYMBIOS_COMPAT SCSI_DEBUG
	SCSI_CUMANA_1 SCSI_ECOSCSI SCSI_OAK1 A4000T_SCSI
	A4091_SCSI WARPENGINE_SCSI BLZ603EPLUS_SCSI OKTAGON_SCSI
unless ISA suppress SCSI_AHA152X SCSI_AHA1542
unless PCI suppress 
	SCSI_AHA1740 SCSI_QLOGIC_ISP SCSI_QLOGIC_FC SCSI_QLOGIC_1280
	SCSI_DC390T BLK_DEV_3W_XXXX_RAID SCSI_INITIO SCSI_INIA100 
	SCSI_SEAGATE
unless MCA suppress SCSI_FD_MCS SCSI_IBMMCA SCSI_MCA_53C9X
unless HOTPLUG==y and PCMCIA==y suppress SCSI_PCMCIA
unless CARDBUS suppress PCMCIA_APA1480
unless PPC suppress SCSI_MESH SCSI_MAC53C94
unless MIPS_JAZZ suppress JAZZ_ESP
unless ARCH_ACORN suppress SCSI_ACORNSCSI_3
	SCSI_ARXESCSI SCSI_CUMANA_2 SCSI_EESOXSCSI SCSI_POWERTECSCSI
	SCSI_CUMANA_1 SCSI_ECOSCSI SCSI_OAK1
#unless MIPS suppress SCSI_SGIWD93	# CML1 doesn't actually define SGI
unless DECSTATION==y and TC==y suppress SCSI_DECNCR
unless DECSTATION==y suppress SCSI_DECSII
unless SPARC suppress SCSI_SUNESP SCSI_QLOGICPTI
unless X86 suppress SCSI_IPS SCSI_ULTRASTOR 
unless X86 or ALPHA suppress 
	BLK_DEV_3W_XXXX_RAID SCSI_7000FASST SCSI_ACARD 
	SCSI_AIC7XXX SCSI_ADVANSYS SCSI_IN2000 SCSI_AM53C974 
	SCSI_MEGARAID SCSI_BUSLOGIC SCSI_DTC3280 SCSI_EATA SCSI_FUTURE_DOMAIN
	SCSI_FD_MCS SCSI_GDTH SCSI_GENERIC_NCR5380 SCSI_INITIO SCSI_INIA100
	SCSI_NCR53C8XX SCSI_SYM53C8XX SCSI_PAS16 SCSI_PCI2000 SCSI_PCI2220I 
	SCSI_PSI240I SCSI_QLOGIC_FAS SCSI_QLOGIC_ISP SCSI_QLOGIC_FC 
	SCSI_QLOGIC_1280 SCSI_SEAGATE SCSI_DC390T SCSI_T128 SCSI_U14_34F
unless AMIGA suppress A3000_SCSI A4000T_SCSI
unless ZORRO suppress 
	A2091_SCSI GVP11_SCSI CYBERSTORM_SCSI CYBERSTORMII_SCSI 
	BLZ2060_SCSI BLZ1230_SCSI FASTLANE_SCSI A4091_SCSI WARPENGINE_SCSI
	BLZ603EPLUS_SCSI OKTAGON_SCSI
unless ATARI suppress ATARI_SCSI
unless HADES suppress TT_DMA_EMUL
unless MAC suppress MAC_SCSI SCSI_MAC_ESP
unless MVME147 suppress MVME147_SCSI 
unless MVME16x suppress MVME16x_SCSI 
unless BVME6000 suppress BVME6000_SCSI
unless SUN3X suppress SUN3X_ESP

default AIC7XXX_CMDS_PER_DEVICE from 8
default AIC7XXX_RESET_DELAY from 5

default SCSI_EATA_MAX_TAGS	from	16
default SCSI_MESH_SYNC_RATE	from	5
default SCSI_NCR53C8XX_DEFAULT_TAGS	from	8
default SCSI_NCR53C8XX_MAX_TAGS	from	32
default SCSI_NCR53C8XX_SYNC	from	10
default SCSI_U14_34F_MAX_TAGS	from	8
default SD_EXTRA_DEVS		from	40
default SR_EXTRA_DEVS		from	2
default ST_EXTRA_DEVS		from	2

menu scsi_drivers	# SCSI? low-level drivers
	SCSI_SGIWD93? SCSI_DECNCR? SCSI_DECSII? 
	BLK_DEV_3W_XXXX_RAID? SCSI_7000FASST? 
	SCSI_ACARD? SCSI_AHA152X? SCSI_AHA1542? SCSI_AHA1740?
	SCSI_AIC7XXX? {
		AIC7XXX_TCQ_ON_BY_DEFAULT AIC7XXX_CMDS_PER_DEVICE% 
		AIC7XXX_PROC_STATS AIC7XXX_RESET_DELAY%
	}
	SCSI_IPS? SCSI_ADVANSYS? SCSI_IN2000? SCSI_AM53C974? SCSI_MEGARAID?
	SCSI_BUSLOGIC? {SCSI_OMIT_FLASHPOINT} 
	SCSI_DMX3191D? SCSI_DTC3280? 
	SCSI_EATA? {
		SCSI_EATA_TAGGED_QUEUE SCSI_EATA_LINKED_COMMANDS 
		SCSI_EATA_MAX_TAGS% SCSI_EATA_DMA? SCSI_EATA_PIO?
	}
	SCSI_FUTURE_DOMAIN? SCSI_FD_MCS? SCSI_GDTH? 
	SCSI_GENERIC_NCR5380? {SCSI_GENERIC_NCR53C400 ncr5380}
	SCSI_INITIO? SCSI_INIA100? 
	SCSI_PPA? SCSI_IMM? SCSI_IZIP_EPP16 SCSI_IZIP_SLOW_CTR
	SCSI_NCR53C406A? SCSI_SYM53C416? SCSI_SIM710?
	SCSI_NCR53C7xx? {
		SCSI_NCR53C7xx_sync 
		SCSI_NCR53C7xx_FAST SCSI_NCR53C7xx_DISCONNECT
	}
	SCSI_NCR53C8XX? SCSI_SYM53C8XX?
	SCSI_NCR53C8XX_DEFAULT_TAGS% SCSI_NCR53C8XX_MAX_TAGS%
	SCSI_NCR53C8XX_SYNC% SCSI_NCR53C8XX_PROFILE SCSI_NCR53C8XX_IOMAPPED
	SCSI_NCR53C8XX_PQS_PDS SCSI_NCR53C8XX_NO_DISCONNECT
	SCSI_NCR53C8XX_SYMBIOS_COMPAT
	SCSI_IBMMCA? {IBMMCA_SCSI_ORDER_STANDARD IBMMCA_SCSI_DEV_RESET} 
	SCSI_MCA_53C9X?
	SCSI_PAS16? SCSI_PCI2000? SCSI_PCI2220I? SCSI_PSI240I? SCSI_QLOGIC_FAS?
	SCSI_QLOGIC_ISP? SCSI_QLOGIC_FC? SCSI_QLOGIC_1280? SCSI_SEAGATE?
	SCSI_DC390T? {SCSI_DC390T_NOGENSUPP} 
	SCSI_T128? 
	SCSI_U14_34F? {SCSI_U14_34F_LINKED_COMMANDS SCSI_U14_34F_MAX_TAGS%}
	SCSI_ULTRASTOR? 
	SCSI_MESH? {SCSI_MESH_SYNC_RATE%} 
	SCSI_MAC53C94? JAZZ_ESP
	SCSI_ACORNSCSI_3? {SCSI_ACORNSCSI_TAGGED_QUEUE SCSI_ACORNSCSI_SYNC}
	SCSI_ARXESCSI? SCSI_CUMANA_2? SCSI_EESOXSCSI? SCSI_POWERTECSCSI?
	SCSI_CUMANA_1? SCSI_ECOSCSI? SCSI_OAK1?
	SCSI_PCMCIA {
		PCMCIA_AHA152X? PCMCIA_QLOGIC? PCMCIA_FDOMAIN? PCMCIA_APA1480?
	}
	# SPARC SCSCI
	SCSI_SUNESP? SCSI_QLOGICPTI?
	# M68K SCSI?
	A3000_SCSI? A4000T_SCSI
	A2091_SCSI? GVP11_SCSI? CYBERSTORM_SCSI? CYBERSTORMII_SCSI? 
	BLZ2060_SCSI? BLZ1230_SCSI? FASTLANE_SCSI? A4091_SCSI WARPENGINE_SCSI
	BLZ603EPLUS_SCSI OKTAGON_SCSI?
	ATARI_SCSI? {
		ATARI_SCSI_TOSHIBA_DELAY ATARI_SCSI_RESET_BOOT TT_DMA_EMUL
	}
	MAC_SCSI SCSI_MAC_ESP? SUN3X_ESP
	# VME SCSI? devices
	MVME147_SCSI MVME16x_SCSI BVME6000_SCSI
	# Debugging
	SCSI_DEBUG?
	SCSI_SIM

unless SCSI_PPA and SCSI_IMM suppress SCSI_IZIP_EPP16 SCSI_IZIP_SLOW_CTR
unless SCSI_NCR53C7xx!=y suppress SCSI_NCR53C8XX SCSI_SYM53C8XX
unless SCSI_NCR53C8XX!=n or SCSI_SYM53C8XX!=n suppress
	SCSI_NCR53C8XX_DEFAULT_TAGS SCSI_NCR53C8XX_MAX_TAGS
	SCSI_NCR53C8XX_SYNC SCSI_NCR53C8XX_PROFILE SCSI_NCR53C8XX_IOMAPPED
	SCSI_NCR53C8XX_PQS_PDS SCSI_NCR53C8XX_NO_DISCONNECT
	SCSI_NCR53C8XX_SYMBIOS_COMPAT
unless SCSI_SYM53C8XX!=n suppress dependent SCSI_NCR53C8XX_PQS_PDS
unless ARCH_ARC or ARCH_A5K suppress SCSI_ECOSCSI
unless IA64 suppress SCSI_SIM
require PCMCIA_AHA152X <= m 
require PCMCIA_QLOGIC <= m
require PCMCIA_FDOMAIN <= m
require PCMCIA_APA1480 <= m
derive PCMCIA_SCSICARD from (PCMCIA_QLOGIC==y) or (PCMCIA_AHA152X==y)
				or (PCMCIA_FDOMAIN==y) or (PCMCIA_APA1480==y)
radiomenu ncr5380	# NCR5380/53c400 mapping method (use Port for T130B)
	SCSI_G_NCR5380_POR SCSI_G_NCR5380_MEM
	default SCSI_G_NCR5380_POR

# from drivers/sound/Config.in

unless VISWS suppress SOUND_VWSND
unless EXPERIMENTAL suppress SOUND_AD1816
unless ARM suppress SOUND_VIDC SOUND_WAVEARTIST
unless AMIGA or ATARI suppress DMASOUND

default MAUI_BOOT_FILE from '/etc/sound/oswf.mot'
default TRIX_BOOT_FILE from '/etc/sound/trxpro.hex'

default MSNDCLAS_INIT_FILE from	'/etc/sound/msndinit.bin'
default MSNDCLAS_IO        from 0x290
default MSNDCLAS_IRQ       from 5
default MSNDPIN_IDE_IRQ    from 0
default MSNDPIN_MPU_IRQ    from 0
default MSNDCLAS_MEM       from 0xd0000
default MSNDCLAS_PERM_FILE from '/etc/sound/msndperm.bin'
default MSNDPIN_CFG        from 0x250
default MSNDPIN_INIT_FILE  from '/etc/sound/pndspini.bin'
default MSNDPIN_IO         from 0x290
default MSNDPIN_IRQ        from 5
default MSNDPIN_MEM        from 0xd0000
default MSNDPIN_PERM_FILE  from '/etc/sound/pndsperm.bin'
default MSNDPIN_IDE_IO1    from 0
default MSNDPIN_IDE_IO0    from 0
default MSNDPIN_MPU_IO     from 0
default MSNDPIN_JOYSTICK_IO from 0
default MSND_FIFOSIZE      from 128

default PSS_BOOT_FILE from '/etc/sound/dsp001.ld'
default SC6600_CDROM from 4
default SC6600_CDROMBASE from 0
default SOFTOSS_RATE	from	22050
default SOFTOSS_VOICES	from	32

menu sound	# Sound support
	SOUND_CMPCI? {SOUND_CMPCI_SPDIFLOOP SOUND_CMPCI_4CH {SOUND_CMPCI_REAR}}
	SOUND_EMU10K1?
	SOUND_ES1370? SOUND_ES1371? SOUND_ESSSOLO1? SOUND_MAESTRO? SOUND_SONICVIBES?
	SOUND_VWSND? SOUND_TRIDENT? 
	SOUND_MSNDCLAS? {
		msndclas_legend
		MSNDCLAS_INIT_FILE$ MSNDCLAS_PERM_FILE$ 
		MSNDCLAS_IRQ% MSNDCLAS_MEM@ MSNDCLAS_IO@
	}
	SOUND_MSNDPIN? {
		msndpin_legend
		MSNDPIN_INIT_FILE$ MSNDPIN_PERM_FILE$ 
		MSNDPIN_IRQ% MSNDPIN_MEM@ MSNDPIN_IO@
		MSNDPIN_DIGITAL MSNDPIN_NONPNP {
			MSNDPIN_CFG@ MSNDPIN_MPU_IO@ MSNDPIN_MPU_IRQ% 
			MSNDPIN_IDE_IO0@ MSNDPIN_IDE_IO1@ 
			MSNDPIN_IDE_IRQ% MSNDPIN_JOYSTICK_IO@
		}
	}
	MSND_FIFOSIZE%
	SOUND_OSS? {
		SOUND_TRACEINIT SOUND_DMAP
		SOUND_AD1816? SOUND_SGALAXY? SOUND_ADLIB? SOUND_ACI_MIXER?
		SOUND_CS4232?
		SOUND_SSCAPE? SOUND_GUS? {SOUND_GUS16 SOUND_GUSMAX}
		SOUND_ICH SOUND_VMIDI?
		SOUND_TRIX? {TRIX_HAVE_BOOT {TRIX_BOOT_FILE$}}
		SOUND_MSS? SOUND_MPU401? SOUND_NM256? 
		SOUND_MAD16? {MAD16_OLDCARD}
		SOUND_PAS? PAS_JOYSTICK
		SOUND_PSS? {PSS_MIXER PSS_HAVE_BOOT {PSS_BOOT_FILE$}}
		SOUND_SOFTOSS? {SOFTOSS_RATE% SOFTOSS_VOICES%}
		SOUND_SB? SOUND_AWE32_SYNTH? SOUND_WAVEFRONT? 
		SOUND_MAUI? {MAUI_HAVE_BOOT {MAUI_BOOT_FILE$}}
		SOUND_VIA82CXXX? SOUND_YM3812? SOUND_OPL3SA1? 
		SOUND_OPL3SA2? SOUND_UART6850?
		SOUND_AEDSP16? {
			SC6600 {SC6600_JOY SC6600_CDROM% SC6600_CDROMBASE@}
			AEDSP16_SBPRO AEDSP16_MSS AEDSP16_MPU401
			SOUND_VIDC? SOUND_WAVEARTIST?
		}
	}
	DMASOUND?

unless SOUND_MSNDCLAS or SOUND_MSNDPIN suppress MSND_FIFOSIZE
# Strengthen some dependencies already implied by brackets
unless SOUND_MSNDCLAS==y suppress 
	msndclas_legend MSNDPIN_IRQ MSNDPIN_MEM MSNDPIN_IO
unless SOUND_MSNDPIN==y suppress 
	msndpin_legend 
	MSNDPIN_IRQ MSNDPIN_MEM MSNDPIN_IO MSNDPIN_DIGITAL MSNDPIN_NONPNP
unless SOUND_TRIX==y suppress TRIX_HAVE_BOOT
unless SOUND_SOFTOSS==y suppress SOFTOSS_RATE SOFTOSS_VOICES
unless SOUND_MAUI==y suppress MAUI_HAVE_BOOT
unless SOUND_MPU401!=n suppress AEDSP16_MPU401

unless SOUND_SB!=n suppress AEDSP16_MSS AEDSP16_SBPRO
require (AEDSP16_SBPRO==n) or (AEDSP16_MSS==n)

derive MSNDCLAS_HAVE_BOOT from SOUND_MSNDCLAS==y
derive MSNDPIN_HAVE_BOOT from SOUND_MSNDPIN==y


# 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

# from drivers/isdn/Config.in:

unless INET suppress ISDN_PPP
unless X25!=n suppress dependent ISDN_X25
unless EXPERIMENTAL suppress 
	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 suppress HYSDN
when HYSDN set PROC_FS = y

menu isdn
	ISDN_PPP {ISDN_PPP_VJ ISDN_MPP}
	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
		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_SPORTSTER HISAX_MIC
		HISAX_NETJET 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
	}

menu isdn_active
	ISDN_DRV_ICN? ISDN_DRV_PCBIT? ISDN_DRV_SC? ISDN_DRV_ACT2000?
	ISDN_DRV_EICON? {ISDN_DRV_EICON_ISA}
	ISDN_CAPI? {
		ISDN_CAPI_MIDDLEWARE {ISDN_CAPIFS}
		ISDN_DRV_AVMB1_B1ISA 
		ISDN_DRV_AVMB1_B1PCI {ISDN_DRV_AVMB1_B1PCIV4}
		ISDN_DRV_AVMB1_T1ISA ISDN_DRV_AVMB1_B1PCMCIA
		ISDN_DRV_AVMB1_T1PCI ISDN_DRV_AVMB1_C4
		ISDN_DRV_AVMB1_VERBOSE_REASON
	}
	HYSDN

# from drivers/sbus/char/Config.in:

unless SPARC suppress TADPOLE_TS102_UCTRL SUN_JSFLASH
unless OBSOLETE suppress SUN_BPP
unless EXPERIMENTAL suppress
	SUN_VIDEOPIX SUN_AURORA TADPOLE_TS102_UCTRL SUN_JSFLASH

menu sbus_misc
	SUN_OPENPROMIO? SUN_MOSTEK_RTC? SUN_BPP?
	SUN_VIDEOPIX? SUN_AURORA? TADPOLE_TS102_UCTRL? SUN_JSFLASH?
	# The CML1 code queried for RTC? and derived APM_RTC_IS_GMT here,
	# but we handle that in the architecture-independent features section

# from drivers/sbus/audio/Config.in:

unless EXPERIMENTAL suppress sparcaudio

menu sparcaudio
	SPARCAUDIO? {
		SPARCAUDIO_AMD7930? SPARCAUDIO_CS4231? 
		SPARCAUDIO_DBRI? SPARCAUDIO_DUMMY?
	}

# from drivers/pnp/Config.in

# from drivers/video/Config.in

unless EXPERIMENTAL suppress
	FB_RIVA FB_CLGEN FB_PM2 FB_VIRGE FB_RETINAZ3 FB_FM2 FB_HGA
	FB_MATROX FB_ATY FB_ATY128 FB_3DFX FB_VIRTUAL
unless OBSOLETE suppress FB_HGA
unless PPC or X86 suppress FB_VGA16
unless ATARI or PCI suppress FB_ATY FB_ATY128
unless PCI suppress 
	FB_RIVA FB_PM2_FIFO_DISCONNECT FB_PM2_PCI FB_MATROX FB_3DFX FB_PCI 
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_VGA16
#unless MAC suppress FB_DAFB
unless ALPHA suppress FB_TGA
unless X86 suppress FB_VESA FB_HGA
unless VISWS suppress FB_SGIVW
unless SUN3X suppress FB_SUN3	# an unreferenced SUN3 also suppressed this.
unless SPARC suppress 
	FB_SBUS FB_PCI 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

menu framebuffer
	FB_VGA16? FB_ATY? FB_ATY128? FB_3DFX
	FB_RIVA? FB_CLGEN? 
	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_DAFB
	FB_COMPAT_XPMAC
	FB_TGA? FB_VESA FB_HGA? FB_SGIVW?
	FB_MATROX? {
		FB_MATROX_MILLENIUM FB_MATROX_MYSTIQUE FB_MATROX_G100
		FB_MATROX_I2C? {FB_MATROX_MAVEN?} FB_MATROX_MULTIHEAD
	}
	FB_SBUS {FB_CREATOR FB_CGTHREE FB_TCX FB_CGFOURTEEN FB_P9100 FB_LEO}
	FB_SUN3 FB_BWTWO FB_CGSIX
	FB_PCI {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_IPLAN2P16?
		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 

when FB_MATROX_I2C!=n set I2C = y

derive DUMMY_CONSOLE from FB or (SGI_IP22 and (SGI_NEWPORT_CONSOLE==n)) 
derive FB_MAC from FB and MAC
derive FB_HP300 from FB and HP300
derive BUS_I2C from FB and VISWS
derive FB_APOLLO from FB and APOLLO
derive FB_Q40 from FB and Q40

# 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
default FBCON_CFB2 from FB_ACORN | FB_MAC | FB_SA1100 | FB_VIRTUAL
default FBCON_CFB4 from FB_ACORN | FB_MAC | FB_VIRTUAL
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
default FBCON_CFB16 from FB_ATARI |  FB_ATY | FB_MAC |  FB_VESA |
	   FB_VIRTUAL | FB_Q40 | 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
default FBCON_CFB24 from FB_ATY |  FB_VIRTUAL | FB_CLGEN 
	| FB_VESA | FB_MATROX |  FB_PM2 | FB_ATY128 | FB_CYBER2000
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_SGIVW | FB_3DFX
default FBCON_AFB from FB_AMIGA
default FBCON_ILBM from FB_AMIGA
default FBCON_IPLAN2P2 from FB_ATARI
default FBCON_IPLAN2P4 from FB_ATARI
default FBCON_IPLAN2P8 from FB_ATARI
#default FBCON_IPLAN2P16 from FB_ATARI
default FBCON_MAC from FB_MAC | FB_VIRTUAL
default FBCON_VGA_PLANES from FB_VGA16
default FBCON_HGA from FB_HGA

# These defaults will set font symbols if FBCON_FONTS was not selected.
default FONT_8x8 from (FBCON_FONTS==n)
default FONT_8x16 from (FBCON_FONTS==n)
default FONT_6x11 from (FBCON_FONTS==n) and MAC and FBCON_FONTWIDTH8_ONLY==n
default FONT_PEARL_8x8 from (FBCON_FONTS==n) and AMIGA
default FONT_ACORN_8x8 from (FBCON_FONTS==n) and (ARM or ARCH_ACORN)

# 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 suppress dependent 
	fc4_targets_legend SCSI_PLUTO SCSI_FCAL_GENERIC SCSI_FCAL_SUN

derive SCSI_FCAL from SCSI_FCAL_GENERIC or 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

## from drivers/acorn/scsi/Config.in
#
#unless SCSI suppress dependent acorn_scsi
#unless EXPERIMENTAL suppress SCSI_CUMANA_1 SCSI_ECOSCSI SCSI_OAK1
#unless ARCH_ARC or ARCH_A5K suppress SCSI_ECOSCSI
#
#menu acorn_scsi	# SCSI? driver configuration for Acorn
#	SCSI_ACORNSCSI_3? {SCSI_ACORNSCSI_TAGGED_QUEUE SCSI_ACORNSCSI_SYNC}
#	SCSI_ARXESCSI? SCSI_CUMANA_2? SCSI_EESOXSCSI? SCSI_POWERTECSCSI? 
#	SCSI_CUMANA_1? SCSI_ECOSCSI? SCSI_OAK1?

# from drivers/usb/Config.in

unless EXPERIMENTAL suppress 
	USB_SERIAL_WHITEHEAT USB_SERIAL_FTDI_SIO
	USB_DABUSB USB_PLUSB USB_PEGASUS USB_RIO500 USB_DSBR
	USB_SERIAL_DIGI_ACCELEPORT
# unless SOUND suppress USB_AUDIO

default INPUT_MOUSEDEV_SCREEN_X from 1024
default INPUT_MOUSEDEV_SCREEN_Y from 768

menu usb	# USB? support
	usb_controllers_legend
	USB_UHCI? USB_UHCI_ALT? USB_OHCI? 
	usb_options_legend
	USB_DEVICEFS
	usb_devices_legend
	USB_PRINTER? USB_SCANNER? USB_AUDIO? USB_ACM? 
	USB_SERIAL? {
		USB_SERIAL_GENERIC USB_SERIAL_VISOR 
		USB_SERIAL_WHITEHEAT USB_SERIAL_FTDI_SIO 
		USB_SERIAL_KEYSPAN_PDA USB_SERIAL_DIGI_ACCELEPORT 
		USB_SERIAL_OMNINET USB_SERIAL_DEBUG
	}
	USB_CPIA? USB_IBMCAM? USB_OV511? USB_DC2XX? USB_MDC800? 
	USB_STORAGE? {USB_STORAGE_DEBUG}
	USB_USS720? USB_DABUSB? USB_PLUSB? USB_PEGASUS? USB_RIO500? USB_DSBR?
	usb_hid_legend
	USB_HID? USB_KBD? USB_MOUSE?
	USB_WACOM? USB_WMFORCE? INPUT_KEYBDEV? 
	INPUT_MOUSEDEV? {
		# INPUT_MOUSEDEV_MIX INPUT_MOUSEDEV_DIGITIZER {
			INPUT_MOUSEDEV_SCREEN_X% INPUT_MOUSEDEV_SCREEN_Y%
		# }
	}
	INPUT_JOYDEV? INPUT_EVDEV?
require (USB_UHCI==n) or (USB_UHCI_ALT==n)
unless USB_HID!=y suppress USB_KBD USB_MOUSE
unless SCSI suppress USB_STORAGE

# from drivers/i2o/Config.in

unless NET suppress I2O_LAN
unless SCSI suppress I2O_SCSI
unless PCI suppress I2O_PCI

menu i2o	# I2O? support
	I2O? {I2O_PCI? I2O_BLOCK? I2O_LAN? I2O_SCSI? I2O_PROC?}

# from drivers/atm/Config.in

unless INET suppress ATM_TCP
unless X86 suppress ATM_ZATM_EXACT_TS
unless PCI or SBUS suppress ATM_FORE200E
unless PCI suppress ATM_FORE200E_PCA
unless SBUS suppress ATM_FORE200E_SBA

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_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_TNETA1570 {ATM_TNETA1570_DEBUG}
	ATM_NICSTAR? {ATM_NICSTAR_USE_SUNI ATM_NICSTAR_USE_IDT77105}
	ATM_AMBASSADOR? {ATM_AMBASSADOR_DEBUG}
	ATM_HORIZON? {ATM_HORIZON_DEBUG}
	ATM_IA? {ATM_IA_DEBUG}
	ATM_FORE200E? {
		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%
	}

unless ATM_FORE200E_PCA==n suppress ATM_FORE200E_PCA_FW
unless ATM_FORE200E_SBA==n suppress ATM_FORE200E_SBA_FW

when (ATM_FORE200E and PCI) set ATM_FORE200E_PCA = y

# from drivers/parport/Config.in

unless PARPORT suppress dependent parport
unless EXPERIMENTAL suppress 
	PARPORT_AMIGA PARPORT_SUNBPP PARPORT_MFC3 PARPORT_PC_SUPERIO
unless ARM suppress PARPORT_ARC
unless AMIGA suppress PARPORT_AMIGA
unless ZORRO suppress PARPORT_MFC3
unless ATARI suppress PARPORT_ATARI
unless ZORRO or APUS suppress GVPIOEXT MULTIFACE_III_TTY

menu parport	# Parallel port support
	PARPORT_PC? {PARPORT_PC_FIFO PARPORT_PC_SUPERIO} PARPORT_PC_PCMCIA
	PARPORT_ARC? PARPORT_AMIGA? {PARPORT_MFC3?}
	PARPORT_ATARI? PARPORT_SUNBPP? PARPORT_OTHER PARPORT_1284
	GVPIOEXT? {GVPIOEXT_LP? GVPIOEXT_PLIP?}
	MULTIFACE_III_TTY?

# Don't bother with this if parport_pc is a module; it only affects
# the presence or not of some __init's, which are no-ops for modules.
unless PARPORT_PC==y and HOTPLUG and PCMCIA suppress PARPORT_PC_PCMCIA

unless SBUS==y suppress PARPORT_SUNBPP

default PARPORT_AMIGA from n
default PARPORT_MFC3 from n
default PARPORT_ATARI from n
default PARPORT_SUNBPP from n

# from drivers/pcmcia/Config.in

unless PCMCIA suppress pcmcia
unless PCI suppress CARDBUS

menu pcmcia 	# PCMCIA?/CardBus support
	CARDBUS I82365 TCIC

# from drivers/telephony/Config.in

menu telephony # Telephony Support
	PHONE? {PHONE_IXJ?}

# from drivers/ieee1394/Config.in

menu ieee1394	# IEEE 1394 (FireWire) support
	IEEE1394_PCILYNX? {IEEE1394_PCILYNX_LOCALRAM}
	IEEE1394_AIC5800? IEEE1394_OHCI1394? IEEE1394_RAWIO?
	IEEE1394_VERBOSEDEBUG

# Choice of architecture and cross-architecture dependencies

radiomenu arch 	# Processor architecture
	X86
	ALPHA
	SPARC32
	SPARC64
	MIPS32
	PPC
	M68K
	ARM
	SUPERH
	IA64
	MIPS64
	S390
	default X86

derive SPARC from SPARC32 or SPARC64
derive MIPS from MIPS32 or MIPS64
derive UID16 from X86 or ALPHA or SPARC32 or PPC or M68K or SUPERH or S390
derive BINFMT_ELF32 from SPARC_BINFMT_ELF32 or MIPS_BINFMT_ELF32
derive ARCH_S390 from S390

# from arch/i386/config.in

#private X86

# This is the top-level menu for architecture-dependent i386 stuff
menu x86	# Intel options
	x86type
	MICROCODE?
	himem
	MTRR
	X86_UP_IOAPIC
	VISWS
	PM
	ACPI? {ACPI_S1_SLEEP}
	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
	}

unless M686 suppress MICROCODE
unless SMP!=y suppress X86_UP_IOAPIC
when VISWS set PCI = y
require PM <= ACPI

radiomenu x86type	# Intel x86 processor types
	M386 M486 M586 M586TSC M686 MK6 MK7
	default M686

radiomenu 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 M686 or MK6 or MK7
derive X86_GOOD_APIC from M686 or MK7
derive X86_PGE from M686 or MK7
derive X86_USE_3DNOW from MK7
derive X86_CMPXCHG from (M386==n)
derive X86_USE_STRING_486 from M486 or M586 or M586TSC
derive X86_ALIGNMENT_16 from M486 or M586 or M586TSC or MK6
derive X86_USE_PPRO_CHECKSUM from M686 or MK6 or MK7

derive HIGHMEM from HIGHMEM64G
derive X86_PAE from HIGHMEM64G

derive X86_IO_APIC from X86_UP_IOAPIC or SMP or VISWS
derive X86_LOCAL_APIC from X86_UP_IOAPIC or SMP or VISWS
derive X86_VISWS_APIC from VISWS

#when X86 set ISA = y

derive X86_L1_CACHE_BYTES from 16 + (16 * (M586 or M586TSC or M686 or MK7)) + (32 * MK7)

# from arch/alpha/config.in

# This is the top-level menu for architecture-dependent alpha stuff

private ALPHA

radiomenu alphatype	# Alpha sytem type
	ALPHA_GENERIC ALPHA_ALCOR ALPHA_XL ALPHA_BOOK1 ALPHA_AVANTI 
	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_TAKARA
	default ALPHA_GENERIC

when (ALPHA and ALPHA_JENSEN) set PCI = y 
when (ALPHA and ALPHA_JENSEN==n) set PCI = n 

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
derive ALPHA_TSUNAMI from ALPHA_DP264 or ALPHA_EIGER
derive ALPHA_MCPIA 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 

# FIXME: The CML1 program set AVANTI *after* using it in conditionals.  Grrr..
#derive ALPHA_AVANTI from ALPHA_XL

menu alpha # Alpha configuration options
	alphatype
	ALPHA_PRIMO
	ALPHA_GAMMA
	ALPHA_SRM
	BINFMT_EM86?

unless ALPHA_MIKASA or ALPHA_NORITAKE suppress ALPHA_PRIMO
unless ALPHA_SABLE suppress ALPHA_GAMMA
unless ALPHA_CABRIOLET or ALPHA_AVANTI or ALPHA_EB64P or ALPHA_JENSEN 
		or ALPHA_TAKARA or ALPHA_EB164 or ALPHA_MIKASA or  ALPHA_ALCOR
		or ALPHA_SABLE or ALPHA_MIATA or ALPHA_NORITAKE or ALPHA_PC164
		or ALPHA_LX164 or ALPHA_SX164 or ALPHA_DP264 or ALPHA_RAWHIDE
		or ALPHA_EIGER
	suppress ALPHA_SRM

# from arch/sparc/config.in and arch/sparc64/config.in

private SPARC32 SPARC64

# 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.
#
when SPARC set ISA = n PCMCIA = n
when SPARC set VT = y
when SPARC set VT_CONSOLE = y
derive SBUS from SPARC or SUN3X
derive SBUSCHAR from SPARC or SUN3X
when SPARC set BUSMOUSE = y
when SPARC set SUN_MOUSE = y
when SPARC set SERIAL = y
derive SUN_SERIAL from SPARC or SUN3X
when SPARC set SERIAL_CONSOLE = y
when SPARC set SUN_KEYBOARD = y
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 {SPARC_BINFMT_ELF32? BINFMT_AOUT32}

when (SPARC64 and PCI) set
	BLK_DEV_IDEPCI = y IDEDMA_NEW_DRIVE_LISTINGS = y 
	BLK_DEV_NS87415	= y BLK_DEV_CMD64X = y 
	# BLK_DEV_IDEDMA = y BLK_DEV_IDE_MODES = y IDEDMA_AUTO = y

# from arch/mips/config.in

# This is the top-level menu for architecture-dependent Mips 32 stuff

unless EXPERIMENTAL suppress ALGOR_P4032 BAGET_MIPS DECSTATION DDB5074

private MIPS32 MIPS64

unless EXPERT suppress CPU_HAS_LLSC CPU_HAS_WB
unless WIZARD suppress CROSSCOMPILE MIPS_FPE_MODULE
unless MODULES suppress MIPS_FPE_MODULE

menu mips	# MIPS machine selection
	mipstype
	# MIPS32
	ACER_PICA_61 ALGOR_P4032 BAGET_MIPS DECSTATION DDB5074
	MIPS_MAGNUM_4000 OLIVETTI_M700 SGI_IP22 SNI_RM200_PCI
	CPU_HAS_LLSC CPU_HAS_WB
	CROSSCOMPILE
	MIPS_FPE_MODULE
	# MIPS64
	SGI_IP27 {SGI_SN0_N_MODE DISCONTIGMEM}	# SGI_SN0_XXL
	MIPS_INSANE_LARGE MIPS32_COMPAT MIPS_BINFMT_ELF32?

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_WB
unless MIPS64 suppress
	SGI_IP27 SGI_SN0_N_MODE DISCONTIGMEM # SGI_SN0_XXL
	MIPS_INSANE_LARGE MIPS32_COMPAT MIPS_BINFMT_ELF32

default CPU_HAS_LLSC from (CPU_R3000==n)
default CPU_HAS_WB from CPU_R3000 and DECSTATION

when (ALGOR_P4032 or SNI_RM200_PCI or DDB5074) set PCI = y
when (MIPS_MAGNUM_4000 or OLIVETTI_M700 or ACER_PICA_61 or SNI_RM200_PCI or DDB5074)
	set ISA = y
when DDB5074 set PCI = y
when DECSTATION or SGI_IP22 set IDE = n
when (MIPS_MAGNUM_4000 or OLIVETTI_M700) set FB = y 
derive CONFIG_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

when SGI_IP27 set PCI = y

# FIXME: deal with these
# if [ "$CONFIG_SGI_IP22" = "y" ]; then
#    define_bool CONFIG_BOOT_ELF32 y
#    define_bool CONFIG_BOARD_SCACHE y
#    define_bool CONFIG_ARC_MEMORY y
# fi
# 
# if [ "$CONFIG_SGI_IP27" = "y" ]; then
#    define_bool CONFIG_BOOT_ELF64 y
#    define_bool CONFIG_ARC64 y
#    define_bool CONFIG_COHERENT_IO y
#    define_bool CONFIG_QL_ISP_A64 y
# fi

radiomenu mipstype	# MIPS-32 CPU selection
	CPU_R3000 CPU_R6000 CPU_R4300 CPU_R4X00 CPU_R5000 CPU_NEVADA
	CPU_R8000 CPU_R10000
	default CPU_R4X00
unless MIPS32 suppress CPU_R3000 CPU_R6000

# from arch/ppc/config.in

# This is the top-level menu for architecture-dependent Power PC stuff

private PPC_6xx_GENERIC

radiomenu ppctype	# Power PC processor type
	PPC_6xx  PPC_4xx PPC_64 PPC_8260 PPC_8xx
	default PPC_6xx

radiomenu ppc4xxtype
	OAK WALNUT
	default OAK

radiomenu ppc6xxtype
	PPC_6xx_GENERIC GEMINI EST8260 APUS
	default PPC_6xx_GENERIC

radiomenu ppc8xxmodel
	MPC821 MPC823 MPC850 MPC855 MPC860 MPC860T
	default MPC860

radiomenu ppc8xxtype
	RPXLITE RPXCLASSIC BSEIP MBX WINCEPT
	default RPXLITE 

menu ppc
	ppctype
	ppc4xxtype
	ppc6xxtype ALTIVEC
	ppc8xxmodel
	ppc8xxtype
	PMAC_PBOOK
	#TOTALMP
	BOOTX_TEXT
	MOTOROLA_HOTSWAP
	M68K_PRINTER? 

menu adb	# Apple Desktop Bus support
	ADB_CUDA ADB_MACIO ADB_PMU ADB_KEYBOARD # ADBMOUSE?
	ADB_MACII ADB_MACIISI ADB_IOP

unless PPC_4xx suppress ppc4xxtype
unless PPC_6xx suppress ppc6xxtype ALTIVEC
unless PPC_8xx suppress ppc8xxtype

derive ALL_PPC from PPC_6xx_GENERIC or PPC_64
derive MACH_SPECIFIC from ALL_PPC
derive MAC_SERIAL from SERIAL and PPC

when PPC_8260 set PPC_6xx = y
when PPC_8260 or PPC_8xx set SERIAL_CONSOLE = y
when (APUS or PPC_4xx or PPC_8260) set PCI = n 
when (PPC_6xx and APUS==n) set PCI = y

require APUS implies (FB and AMIGA and ZORRO and AMIGAMOUSE)
unless APUS suppress 
	AMIGA_BUILTIN_SERIAL M68K_PRINTER 
when (APUS and (AMIGA_BUILTIN_SERIAL or GVPIOEXT or MULTIFACE_III_TTY))
	set SERIAL_CONSOLE = y

when PPC set ISA = n

# from arch/m68k/config.in

# This is the top-level menu for architecture-dependent Motorola 68K stuff

private M68K

unless EXPERIMENTAL suppress M68KFPU_EMU AMIGA_PCMCIA
unless EXPERT suppress RMW_INSNS SINGLE_MEMORY_CHUNK M68060_WRITETHROUGH

menu m68k	# Motorola 68K processor options
	MAC 
	AMIGA		{ZORRO AMIGA_PCMCIA STRAM_SWAP STRAM_PROC} 
	ATARI		{HADES} 
	APOLLO
	VME		{MVME147 MVME16x BVME6000}
	HP300		{DIO}
	SUN3X
	M68020		{M68030 {M68040 {M68060}}}
	M68KFPU_EMU	{M68KFPU_EMU_EXTRAPREC M68KFPU_EMU_ONLY}
	RMW_INSNS SINGLE_MEMORY_CHUNK M68060_WRITETHROUGH
	Q40		{PARPORT_Q40}

unless M68060 suppress M68060_WRITETHROUGH

unless EXPERIMENTAL suppress PARPORT_Q40
when (M68K and (PARPORT_Q40==n)) set PARPORT_PC = y

when HADES set PCI = y
when (M68K and (HADES==n)) set PCI = n
derive NUBUS from MAC
derive M68K_L2_CACHE from MAC

when VME set SERIAL_CONSOLE = y

# from arch/arm/config.in

# This is the top-level menu for architecture-dependent ARM stuff

private ARM

when ARM set PCMCIA = n

radiomenu armtype	# ARM processor type
	ARCH_ARC ARCH_A5K ARCH_RPC ARCH_EBSA110 FOOTBRIDGE 
	# ARCH_L7200 ARCH_SA1100
	default ARCH_RPC

radiomenu sa1100type	# SA1100 implementation
	SA1100_BRUTUS # SA1100_EMPEG SA1100_ITSY 
	SA1100_LART
	# SA1100_PLEB 
	SA1100_THINCLIENT SA1100_VICTOR # SA1100_TIFON
	default SA1100_BRUTUS

menu arm	# ARM port 
	armtype
	HOST_FOOTBRIDGE	{
		footbridge ARCH_EBSA285 ARCH_CATS ARCH_NETWINDER ARCH_PERSONAL_SERVER
	}
	sa1100type
	PAGESIZE_16 
	CPU_ARM6 CPU_ARM7 CPU_SA110
	ALIGNMENT_TRAP #TEXT_SECTIONS
	ARTHUR?
	LEDS {LEDS_TIMER LEDS_CPU}

unless FOOTBRIDGE suppress HOST_FOOTBRIDGE
derive ADDIN_FOOTBRIDGE from FOOTBRIDGE and HOST_FOOTBRIDGE

unless CPU_26 suppress PAGESIZE_16

# Easy check for Acorn-style architectures
derive ARCH_ACORN from ARCH_ARC or ARCH_A5K or ARCH_RPC

# 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 ARCH_ARC or ARCH_A5K
derive CPU_32 from (CPU_26==n)

# In CML1, 
#  `or ARCH_TBOX or ARCH_SHARK or ARCH_NEXUSPCI or ARCH_NEXUSPCI'
# was part of this guard
derive CPU_32v4 from ARCH_EBSA110 or FOOTBRIDGE # or ARCH_L7200 or ARCH_SA1100
#derive CPU_ARM720 from ARCH_L7200
#derive CPU_SA110 from ARCH_EBSA110 or FOOTBRIDGE
#derive CPU_SA1100 from ARCH_SA1100
derive CPU_32v3 from ARCH_RPC
unless ARCH_RPC suppress CPU_ARM6 CPU_ARM7 CPU_SA110

# If we get any other footbridge-based plug-in boards, then
# add your architecture options here
derive ARCH_CO285 from ADDIN_FOOTBRIDGE

unless CPU_32 and ARCH_EBSA110 suppress ALIGNMENT_TRAP #TEXT_SECTIONS
unless CPU_32 suppress ARTHUR

derive ISA_DMA from ARCH_CATS or ARCH_NETWINDER
when ISA_DMA set ISA = y

unless ARCH_NETWINDER or ARCH_EBSA110 
	or ARCH_EBSA285 or ARCH_CO285 suppress LEDS

derive RPCMOUSE from ARCH_ACORN and BUSMOUSE and ARCH_RPC==y
derive KBDMOUSE from ARCH_ACORN and BUSMOUSE and ARCH_RPC!=y

# from arch/sh/config.in

# This is the top-level menu for architecture-dependent SuperH stuff

private SUPERH

default MEMORY_START from 0x8000000
default IOPORT_START from 0xba000000

radiomenu superhtype	# SuperH processor type
	CPU_SUBTYPE_SH7708 CPU_SUBTYPE_SH7709 CPU_SUBTYPE_SH7750
	default CPU_SUBTYPE_SH7708

radiomenu superhsys	# SuperH processor type
	SH_GENERIC SH_SOLUTION_ENGINE default SH_GENERIC

menu superh	# SuperH options
	superhtype
	superhsys
	MEMORY_START@ IOPORT_START@
	CF_ENABLER

unless SH_SOLUTION_ENGINE==n suppress CF_ENABLER

derive CPU_SH3 from CPU_SUBTYPE_SH7708 or CPU_SUBTYPE_SH7709
derive CPU_SH4 from CPU_SUBTYPE_SH7750

# from arch/ia64/config.in

# This is the top-level menu for architecture-dependent Itanium stuff

#private IA64
derive ITANIUM from IA64

radiomenu ia64type	# Itanium processor type
	IA64_GENERIC IA64_HP_SIM IA64_SGI_SN1_SIM IA64_DIG
	default IA64_GENERIC

radiomenu 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

menu ia64	# Itanium processors
	ia64type
	pagesize
	ITANIUM_ASTEP_SPECIFIC IA64_SOFTSDV_HACKS
	IA64_BIGSUR_HACKS IA64_LION_HACKS 
	IA64_FW_EMU #IA64_IRQ_ACPI
	IA64_MCA 
	PERFMON

default IA64_BIGSUR_HACKS from y
#default IA64_IRQ_ACPI from y

default IA64_SOFTSDV_HACKS from IA64_GENERIC or IA64_SGI_SN1_SIM
derive NUMA from IA64_SGI_SN1_SIM

unless IA64_DIG suppress 
	ITANIUM_ASTEP_SPECIFIC IA64_BIGSUR_HACKS
	IA64_LION_HACKS IA64_FW_EMU IA64_MCA #IA64_IRQ_ACPI

# from arch/s390/config.in

# This is the top-level menu for architecture-dependent System 390 stuff

private S390

menu s390	# System 390 processor options
	FAST_IRQ 
	IPL {s390_ipl}
	CHANDEV
	# These should move to cdevs 
	IBM_3215 {IBM_3215_CONSOLE}
	HWC {HWC_CONSOLE}

radiomenu s390_ipl	# IPL method generated into head.S
	IPL_TAPE IPL_VM
	default IPL_TAPE

when S390 set ISA=n PCI=n PNP=n MCA=n TC=n PARPORT=n HOTPLUG=n
	IDE=n SCSI=n CD_NO_IDESCSI=n USB=n IEEE1394=n ADB=n
	BINFMT_AOUT=y BINFMT_MISC=n 

# System bus configuration

unless OBSOLETE suppress CD_NO_IDESCSI MCA
unless X86 suppress MCA
unless MIPS32 suppress TC
unless (PCI and (X86 or SUPERH)) suppress pci_access
unless (X86 or ALPHA or MIPS32 or PPC) suppress usb
unless (X86 and PCI and EXPERIMENTAL) or PPC or ARM suppress IEEE1394
unless (M68K or PPC) suppress ADB

menu buses	# Select system buses and controller types
	ISA 
	PCI		{PCI_NAMES pci_access}
	PNP?		{ISAPNP?}
	MCA
	TC
	PARPORT?
	HOTPLUG		{PCMCIA?}
	IDE
	SCSI?
	CD_NO_IDESCSI
	USB?
	IEEE1394?
	ADB

radiomenu pci_access	# PCI access mode
	PCI_GOBIOS PCI_GODIRECT PCI_GOANY
	default PCI_GOANY

unless (TC or (MIPS32==n)) suppress PARPORT
derive PCI_BIOS from PCI_GOBIOS or PCI_GOANY
derive PCI_DIRECT from PCI_GODIRECT or PCI_GOANY

# Feature selections independent across all ports

unless EXPERIMENTAL suppress kcore

menu generic
	MODULES {MODVERSIONS KMOD}
	NET SYSVIPC BSD_PROCESS_ACCT SYSCTL
	kcore
	BINFMT_AOUT? BINFMT_ELF? BINFMT_MISC?
	SMP

require SMP implies (X86 or ALPHA_SABLE or ALPHA_RAWHIDE 
		or ALPHA_DP264 or ALPHA_GENERIC or SPARC32 or MIPS64 or S390)
default KCORE_ELF from y
default BINFMT_ELF from y
default BINFMT_AOUT from n

unless X86 or ALPHA or SPARC suppress kcore BINFMT_AOUT BINFMT_ELF
unless X86 or ALPHA or SPARC or S390 suppress BINFMT_ELF
unless (ARM==n) or (ARCH_ACORN or PCI) suppress SOUND

radiomenu kcore 
	KCORE_ELF KCORE_AOUT
	default KCORE_ELF

# Policy options

menu policy	# Build policy options
	EXPERIMENTAL 
	OBSOLETE
	EXPERT
	WIZARD
	TUNING

# Kernel hacking

default KDB_STBSIZE from 10000
default PROFILE_SHIFT from 2

unless SERIAL!=n or (S390 and CTC) suppress REMOTE_DEBUG

menu kernelhacking # Kernel-hacking options
	# DEBUG_MALLOC
	KGDB
	XMON
	REMOTE_DEBUG
	FRAME_POINTER DEBUG_ERRORS DEBUG_USER DEBUG_INFO
	NO_PGT_CACHE
	DEBUG_LL
	DEBUG_DC21285_PORT
	MAGIC_SYSRQ
	DEBUG_KERNEL_WITH_GDB_STUB
	IA64_EARLY_PRINTK IA64_DEBUG_CMPXCHG IA64_DEBUG_IRQ IA64_PRINT_HAZARDS
	KDB {KDB_FRAMEPTR KDB_STBSIZE%} IA32_SUPPORT?
	PROFILE {PROFILE_SHIFT}

unless PPC suppress KGDB XMON
unless MIPS suppress REMOTE_DEBUG 
unless ARM suppress FRAME_POINTER DEBUG_ERRORS DEBUG_USER DEBUG_INFO
unless ARM and CPU_26 suppress NO_PGT_CACHE
# These options are only for real kernel hackers
# who want to get their hands dirty.
unless EXPERIMENTAL and ARM suppress DEBUG_LL 
unless DEBUG_LL and FOOTBRIDGE suppress DEBUG_DC21285_PORT
unless SUPERH suppress DEBUG_KERNEL_WITH_GDB_STUB
unless IA64 suppress 
	IA64_EARLY_PRINTK IA64_DEBUG_CMPXCHG IA64_DEBUG_IRQ IA64_PRINT_HAZARDS
	KDB IA32_SUPPORT
unless S390 suppress PROFILE

# Main menu

unless EXPERIMENTAL suppress MDA_CONSOLE video

menu main	# Configure a Linux kernel
	arch
	policy
	generic
	# Per-processor options (selected in arch)
	x86
	alpha
	sparc
	mips
	ppc
	m68k
	arm
	superh
	ia64
	s390
	# Buses and controller types
	buses
	parport
	pcmcia
	scsi_devices scsi_drivers
	nativecdrom
	usb
	ieee1394
	adb
	# Device classes
	archihacks
	block_devices
	FC4? {fc4}
	net
	telephony
	NETDEVICES {net_drivers atm}
	HAMRADIO {hamradio}
	ISDN? {isdn}
	cdevs
	i2o
	fs
	SOUND? {sound}
	WATCHDOG {watchdog}
	kernelhacking

default HEARTBEAT from HP300	# Has a dedicated heartbeat LED

# Some of these may be more restrictive than needed; they are a straight
# translation of the CML1 code (except SGI turns into MIPS)
unless X86 suppress x86
unless ALPHA suppress alpha
unless SPARC suppress sparc
unless MIPS suppress mips
unless PPC suppress ppc
unless M68K suppress m68k
unless ARM suppress arm
unless SUPERH suppress superh
unless IA64 suppress ia64
unless S390 suppress s390
unless (S390==n) suppress buses parport
# Always query block_devices
unless ADB suppress adb
unless SPARC suppress FC4
unless X86 or MIPS and (DECSTATION==n and SGI_IP22==n) suppress telephony
unless IEEE1394!=n suppress dependent ieee1394
unless X86 or ARM or (MIPS and DECSTATION==n and SGI_IP22==n) suppress i2o
unless (MIPS==n) and (DECSTATION==n) and (BAGET_MIPS==n) suppress hamradio
unless X86 or ALPHA or (MIPS and DECSTATION and BAGET_MIPS) or PPC suppress 
	ISDN nativecdrom
unless (S390==n) suppress cdevs
unless USB!=n suppress dependent usb 
# Always query for fs
unless SPARC suppress WATCHDOG
unless WIZARD suppress kernelhacking

# The following sets edit modes for GNU EMACS
# Local Variables:
# compile-command:"cmlcompile kernel-rules.cml"
# End:

--jc

Eklektix, Inc. Linux powered! Copyright 2000 Eklektix, Inc. all rights reserved.
Linux ® is a registered trademark of Linus Torvalds