summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2010-02-22 10:31:24 +0100
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>2010-02-22 10:36:20 +0100
commit2773e8c3410e2b0dc76a1b0f361f5b3ead9ca376 (patch)
tree3bc5cdd98e10cce9a5740b17657835cafaa3a0d0
parenta34bc90b9c654c855f365de14a8907dc92e21946 (diff)
downloaddebianrt-2773e8c3410e2b0dc76a1b0f361f5b3ead9ca376.tar.gz
debianrt-2773e8c3410e2b0dc76a1b0f361f5b3ead9ca376.tar.xz
svn://svn.debian.org/svn/kernel/dists/trunk/linux-2.6/debian at r15255
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
-rw-r--r--README73
-rw-r--r--README.Debian25
-rw-r--r--README.build17
-rw-r--r--README.source97
-rwxr-xr-xbin/abiupdate.py16
-rwxr-xr-xbin/buildcheck.py1
-rwxr-xr-xbin/gencontrol.py91
-rwxr-xr-xbin/genorig.py55
-rwxr-xr-xbin/test-patches81
-rw-r--r--changelog750
-rw-r--r--config/alpha/config109
-rw-r--r--config/alpha/defines18
-rw-r--r--config/alpha/vserver/defines4
-rw-r--r--config/amd64/config1321
-rw-r--r--config/amd64/config.amd6411
-rw-r--r--config/amd64/defines11
-rw-r--r--config/arm/config68
-rw-r--r--config/arm/config.footbridge1468
-rw-r--r--config/arm/defines58
-rw-r--r--config/armel/config25
-rw-r--r--config/armel/config.iop32x (renamed from config/arm/config.iop32x)154
-rw-r--r--config/armel/config.ixp4xx (renamed from config/arm/config.ixp4xx)147
-rw-r--r--config/armel/config.kirkwood197
-rw-r--r--config/armel/config.orion5x (renamed from config/arm/config.orion5x)212
-rw-r--r--config/armel/config.versatile (renamed from config/arm/config.versatile)41
-rw-r--r--config/armel/defines44
-rw-r--r--config/config689
-rw-r--r--config/defines18
-rw-r--r--config/featureset-openvz/config24
-rw-r--r--config/featureset-openvz/defines6
-rw-r--r--config/featureset-vserver/config5
-rw-r--r--config/featureset-vserver/defines8
-rw-r--r--config/featureset-xen/defines10
-rw-r--r--config/hppa/config75
-rw-r--r--config/hppa/defines16
-rw-r--r--config/i386/config1550
-rw-r--r--config/i386/defines32
-rw-r--r--config/i386/none/config.686-bigmem5
-rw-r--r--config/i386/openvz/defines3
-rw-r--r--config/i386/vserver/defines8
-rw-r--r--config/i386/xen/defines7
-rw-r--r--config/ia64/config122
-rw-r--r--config/ia64/defines8
-rw-r--r--config/kernelarch-x86/config1263
-rw-r--r--config/kernelarch-x86/config-arch-32407
-rw-r--r--config/kernelarch-x86/config-arch-64101
-rw-r--r--config/m68k/config19
-rw-r--r--config/m68k/config.amiga13
-rw-r--r--config/m68k/config.atari13
-rw-r--r--config/m68k/config.bvme600011
-rw-r--r--config/m68k/config.hp2
-rw-r--r--config/m68k/config.mac17
-rw-r--r--config/m68k/config.mvme14711
-rw-r--r--config/m68k/config.mvme16x11
-rw-r--r--config/m68k/config.q402
-rw-r--r--config/m68k/config.sun32
-rw-r--r--config/m68k/defines36
-rw-r--r--config/mips/config4
-rw-r--r--config/mips/config.4kc-malta244
-rw-r--r--config/mips/config.5kc-malta277
-rw-r--r--config/mips/config.r4k-ip2267
-rw-r--r--config/mips/config.r5k-ip32105
-rw-r--r--config/mips/config.sb1-bcm91250a177
-rw-r--r--config/mips/config.sb1a-bcm91480b178
-rw-r--r--config/mips/defines36
-rw-r--r--config/mipsel/config4
-rw-r--r--config/mipsel/config.4kc-malta1657
-rw-r--r--config/mipsel/config.5kc-malta1971
-rw-r--r--config/mipsel/config.r5k-cobalt114
-rw-r--r--config/mipsel/config.sb1-bcm91250a1020
-rw-r--r--config/mipsel/config.sb1a-bcm91480b1048
-rw-r--r--config/mipsel/defines42
-rw-r--r--config/powerpc/config122
-rw-r--r--config/powerpc/config.powerpc1
-rw-r--r--config/powerpc/config.powerpc643
-rw-r--r--config/powerpc/defines12
-rw-r--r--config/s390/config34
-rw-r--r--config/s390/defines36
-rw-r--r--config/sparc/config306
-rw-r--r--config/sparc/config.sparc64401
-rw-r--r--config/sparc/config.sparc64-smp401
-rw-r--r--config/sparc/defines12
-rw-r--r--config/sparc64/defines23
-rw-r--r--config/sparc64/vserver/defines6
-rw-r--r--lib/python/debian_linux/config.py4
-rw-r--r--lib/python/debian_linux/debian.py65
-rw-r--r--lib/python/debian_linux/gencontrol.py5
-rw-r--r--patches/bugfix/all/0001-xfs-fix-freeing-memory-in-xfs_getbmap.patch32
-rw-r--r--patches/bugfix/all/add-missing-mtd-include.patch55
-rw-r--r--patches/bugfix/all/cxusb-Select-all-required-frontend-and-tuner-modules.patch35
-rw-r--r--patches/bugfix/all/drivers-scsi-qla1280-request-firmware-unlocked.patch35
-rw-r--r--patches/bugfix/all/efifb_fix_v2.patch54
-rw-r--r--patches/bugfix/arm/export-flush_dcache_page.patch30
-rw-r--r--patches/bugfix/fix-hifn_795X-divdi3.patch54
-rw-r--r--patches/bugfix/ia64/ia64-Include-linux-personality.h-header-in-asm-fcntl.patch29
-rw-r--r--patches/bugfix/mips/disable-werror.patch6
-rw-r--r--patches/bugfix/mips/fix-smp.patch23
-rw-r--r--patches/bugfix/powerpc/mm-mol.patch12
-rw-r--r--patches/bugfix/powerpc/oldworld-boot-fix.patch54
-rw-r--r--patches/bugfix/sparc/arch-zimage-target.patch25
-rw-r--r--patches/bugfix/sparc/drivers_net-broken.patch13
-rw-r--r--patches/bugfix/x86/kvm-Check-CPL-level-during-privilege-instruction-emulation.patch256
-rw-r--r--patches/bugfix/x86/kvm-Check-IOPL-level-during-io-instruction-emulation.patch163
-rw-r--r--patches/bugfix/x86/kvm-Fix-popf-emulation.patch102
-rw-r--r--patches/bugfix/x86/kvm-fix-memory-access-during-x86-emulation.patch518
-rw-r--r--patches/debian/dfsg/drivers-gpu-drm-mga-disable.patch24
-rw-r--r--patches/debian/dfsg/drivers-gpu-drm-r128-disable.patch45
-rw-r--r--patches/debian/dfsg/drivers-gpu-drm-radeon-disable.patch8
-rw-r--r--patches/debian/dfsg/drivers-infiniband-hw-ipath-iba7220-disable.patch63
-rw-r--r--patches/debian/dfsg/drivers-media-dvb-dvb-usb-af9005-disable.patch24
-rw-r--r--patches/debian/dfsg/drivers-net-cxgb3-disable.patch77
-rw-r--r--patches/debian/dfsg/drivers-staging-me4000-disable.patch12
-rw-r--r--patches/debian/dfsg/drivers-staging-otus-disable.patch4
-rw-r--r--patches/debian/dfsg/drivers-staging-rt2860-disable.patch11
-rw-r--r--patches/debian/dfsg/drivers-staging-rt2870-disable.patch11
-rw-r--r--patches/debian/dfsg/drivers-staging-rt3070-disable.patch11
-rw-r--r--patches/debian/dfsg/drivers-staging-rtl8192su-disable.patch10
-rw-r--r--patches/debian/dfsg/drivers-staging-wlags49_h2-disable.patch12
-rw-r--r--patches/debian/dfsg/drivers-staging-wlags49_h25-disable.patch12
-rw-r--r--patches/debian/dfsg/files-128
-rw-r--r--patches/debian/dfsg/firmware-cleanup.patch46
-rw-r--r--patches/debian/dfsg/lgs8gxx-lgs8g75-disable.patch63
-rw-r--r--patches/debian/dfsg/r8169-rtl8168d-1-2-disable.patch68
-rw-r--r--patches/debian/dfsg/radeon-add-clarifying-comment-to-r600-blit.patch42
-rw-r--r--patches/debian/scripts-kconfig-reportoldconfig.patch19
-rw-r--r--patches/debian/sysrq-mask.patch32
-rw-r--r--patches/debian/version.patch14
-rw-r--r--patches/features/all/drivers-gpu-drm-mga-request_firmware.patch277
-rw-r--r--patches/features/all/drivers-gpu-drm-r128-request_firmware.patch139
-rw-r--r--patches/features/all/drivers-gpu-drm-radeon-request_firmware.patch560
-rw-r--r--patches/features/all/drivers-infiniband-hw-ipath-iba7220-use-request_firmware.patch230
-rw-r--r--patches/features/all/drivers-media-dvb-usb-af9005-request_firmware.patch152
-rw-r--r--patches/features/all/drivers-net-acenic-firmwar_request.patch272
-rw-r--r--patches/features/all/drivers-net-cxgb3-request_firmware.patch213
-rw-r--r--patches/features/all/drivers-staging-rt28x0sta-request_firmware.patch280
-rw-r--r--patches/features/all/export-unionfs-symbols.patch11
-rw-r--r--patches/features/all/i915-autoload-without-CONFIG_DRM_I915_KMS.patch12
-rw-r--r--patches/features/all/lgs8gxx-lgs8g75-request_firmware.patch99
-rw-r--r--patches/features/all/lib-crcitut-bit-reversed.patch79
-rw-r--r--patches/features/all/module-firmware/0025-tty-declare-MODULE_FIRMWARE-in-various-drivers.patch69
-rw-r--r--patches/features/all/module-firmware/0026-staging-declare-MODULE_FIRMWARE-in-various-drivers.patch97
-rw-r--r--patches/features/all/module-firmware/0027-sep-include-driver-name-in-firmware-filenames.patch29
-rw-r--r--patches/features/all/module-firmware/0028-sep-declare-MODULE_FIRMWARE.patch26
-rw-r--r--patches/features/all/module-firmware/0029-isight-firmware-declare-MODULE_FIRMWARE.patch25
-rw-r--r--patches/features/all/r8169-rtl8168d-1-2-request_firmware-2.patch135
-rw-r--r--patches/features/all/rt28x0sta-constify-RTUSBMultiWrite-RTUSBFirmwareWrite.patch87
-rw-r--r--patches/features/all/rt28x0sta-use-request_firmware.patch260
-rw-r--r--patches/features/all/sound-pci-cs46xx-request_firmware.patch172
-rw-r--r--patches/features/all/speakup/speakup-add.patch10232
-rw-r--r--patches/features/all/speakup/speakup-kbuild.patch28
-rw-r--r--patches/features/all/vserver/bindmount-dev.patch41
-rw-r--r--patches/features/alpha/titan-video.patch720
-rw-r--r--patches/features/arm/compression-add-lzma.patch42
-rw-r--r--patches/features/arm/openrd-client.patch135
-rw-r--r--patches/features/sparc/video-sunxvr500-intergraph.patch14
-rw-r--r--patches/series/base60
-rw-r--r--patches/series/base-extra3
-rw-r--r--patches/series/orig-012
-rwxr-xr-xrules2
-rw-r--r--rules.real72
-rw-r--r--templates/control.image.type-kernel-package.in5
-rw-r--r--templates/control.image.type-modulesextra.in10
-rw-r--r--templates/control.image.type-modulesinline.in5
-rw-r--r--templates/control.image.type-plain.in5
-rw-r--r--templates/control.image.type-standalone.in5
-rw-r--r--templates/control.main.in19
-rw-r--r--templates/control.source.in11
-rw-r--r--templates/control.support.in8
-rw-r--r--templates/control.tree.in23
-rw-r--r--templates/image.plain.bug/control2
-rw-r--r--templates/image.plain.bug/include-1tainted57
-rw-r--r--templates/image.plain.bug/include-dmesg5
-rw-r--r--templates/image.plain.bug/include-model52
-rw-r--r--templates/image.plain.bug/include-network42
-rw-r--r--templates/image.plain.bug/include-pci4
-rw-r--r--templates/image.plain.bug/include-usb11
-rw-r--r--templates/image.plain.bug/presubj7
-rw-r--r--templates/image.plain.bug/script4
-rw-r--r--templates/patch.apply.in2
-rwxr-xr-xtemplates/temp.image.plain/config5
-rwxr-xr-xtemplates/temp.image.plain/postinst306
-rwxr-xr-xtemplates/temp.image.plain/postrm100
-rwxr-xr-xtemplates/temp.image.plain/preinst148
-rwxr-xr-xtemplates/temp.image.plain/prerm107
-rw-r--r--templates/temp.image.plain/templates28
185 files changed, 18181 insertions, 17470 deletions
diff --git a/README b/README
deleted file mode 100644
index f54dd13..0000000
--- a/README
+++ /dev/null
@@ -1,73 +0,0 @@
-Migrating to the common kernel-image package
---------------------------------------------
-Files for architecture <arch> should be placed into arch/<arch>. This
-directory normally contains a common config file for this architecture
-('config'), flavour-specific config files, Makefile.inc file,
-controlling the build for this arch, and the defines file, containing
-the machine descriptions for various flavours. For arches with
-subarches the subdirectory arch/<arch>/<subarch> with the same file
-structure must be created for each subarch.
-
-Kernel config files
--------------------
-Configuration files are constructed dynamically by concatenating a number
-of config files as described below.
-
-For architecture without subarches:
-
- arch/config
- arch/<arch>/config
- arch/<arch>/config.<flavour>
-
-For architecture with subarches:
-
- arch/config
- arch/<arch>/config
- arch/<arch>/<subarch>/config
- arch/<arch>/<subarch>/config.<flavour>
-
-Control file
-------------
-The master control file debian/control must be generated before
-the package is uploaded. debian/rules contains the debian/control
-target, which generates the control file by invoking the
-debian/bin/gencontrol.py script, which combines the templates from
-the templates directory and arch/subarch specific defines file to
-produce the debian/control file. Note that this target is intentionally
-made to fail with a non-zero exit code to make sure that it is never
-run during an automatic build. The following variables are substituted
-into the templates:
-
-@version@ Upstream kernel version, for example 2.6.11.
-@major@ The major version, for example 2.6
-@arch@ The Debian arch name, such as powerpc or i386.
-@subarch@ The subarch - only used by powerpc right now.
-@flavour@ The build flavour, such as 686 or k7-smp.
-@class@ The CPU/architecture class; displayed in synopsis. It should
- be fairly short, as the synopsis is supposed to be <80 chars.
- It should be in the form "foo class", and will show up in the
- description as "foo class machines".
-@longclass@ The CPU/architecture class; displayed in the extended
- description. The same rules apply as in @class@. If
- this is unset, it will default to @class@.
-@desc@ (Potentially) multi-line verbiage that's appended to
- -image descriptions.
-@abiname@ Current abiname, a single digit.
-
-Normally, the arch-specific contents should be controlled by
-adjusting the corresponding defines file.
-
-Makefile.inc
-------------
-Each architecture subdirectory in arch may contain a Makefile.inc
-file, which is included by debian/rules after definining all the
-variables. It may be used to override the standard variables on
-per-architecture basis and other evil things. So far the valid uses of
-this file include the setting of the following variables:
-
-image_postproc
-
- A command to be run after the kernel image is built. As far as I know,
- it only required on sparc for stripping of the kernel which is too big
- to be booted otherwise. Typical use is too ugly to be presented here.
-
diff --git a/README.Debian b/README.Debian
index 759f728..03783c0 100644
--- a/README.Debian
+++ b/README.Debian
@@ -24,6 +24,15 @@ given a lower priority for security support. Options marked as BROKEN
or EXPERIMENTAL are of very low priority, and should not be enabled in
customized builds for a security-sensitive environment.
+Building specific binary packages
+---------------------------------
+You can build specific kernel binary packages using the targets in
+debian/rules.gen, which have names of the form:
+ binary-arch_<architecture>_<featureset>_<flavour>
+
+Example:
+ fakeroot make -f debian/rules.gen binary-arch_i386_none_686
+
Rebuilding Adaptec AIC7xxx/79xx firmware
----------------------------------------
You can rebuild the firmware for the Adaptec AIC7xxx/79xx SCSI Adapters. To
@@ -38,18 +47,4 @@ mousedev are loaded.
Non-free bits removed
---------------------
-* Keyspan firmware, driver disabled
- . drivers/usb/serial/ksyspan_{mpr,usa*}_fw.h
-* Emagic EMI 2|6 usb audio interface firmware loader
- . drivers/usb/misc/emi62_fw_*.h
-
-Firmware removed
-----------------
-* SMC Token Ring firmware, driver disabled:
- . drivers/net/tokenring/smctr_firmware.h
-* ACENIC firwmare, driver disabled:
- . drivers/net/acenic_firmware.h
-* DGRS firmware, driver disabled:
- . drivers/net/dgrs_firmware.c
-* DAB firmware, driver disabled:
- . drivers/usb/media/dabfirmware.h
+See the patches under debian/patches/debian/dfsg.
diff --git a/README.build b/README.build
deleted file mode 100644
index f3d4c06..0000000
--- a/README.build
+++ /dev/null
@@ -1,17 +0,0 @@
-Building kernels from SVN (for official images):
-
-1) Start by downloading a kernel tarball from kernel.org
- (ie, linux-2.6.25.tar.bz2) and, optionally, a patch
- (i.e. patch-2.6.26-rc3.bz2).
-
-2) Run ./debian/bin/genorig.py <tarball> [patch]. This will produce
- ../orig/linux-2.6_<version>.orig.tar.gz
- (i.e. linux-2.6_2.6.26~rc3.orig.tar.gz).
-
-3) Unpack linux-2.6-<version>.orig.tar.gz, cd into the new directory,
- and do a 'svn export' to get the debian/ subdirectory.
- Alternatively unpack using "make -f debian/rules orig".
-
-4) Build debian/control by running 'make -f debian/rules debian/control-real'.
-
-5) .configs will be generated during build.
diff --git a/README.source b/README.source
new file mode 100644
index 0000000..21ca92f
--- /dev/null
+++ b/README.source
@@ -0,0 +1,97 @@
+Updating the upstream source
+============================
+
+1) You can use either:
+ a) a git repository of the kernel source
+ b) a kernel tarball from kernel.org (e.g. linux-2.6.25.tar.bz2)
+ and, optionally, a patch (e.g. patch-2.6.26-rc3.bz2).
+
+2) Run ./debian/bin/genorig.py <repository>
+ or ./debian/bin/genorig.py <tarball> [patch]
+ This will produce ../orig/linux-2.6_<version>.orig.tar.gz
+ (e.g. linux-2.6_2.6.26~rc3.orig.tar.gz).
+
+3) Unpack linux-2.6-<version>.orig.tar.gz, cd into the new directory,
+ and do a 'svn export' to get the debian/ subdirectory.
+ Alternatively unpack using "make -f debian/rules orig".
+
+Applying patches to the Debian kernel tree
+==========================================
+
+The Debian kernel packaging uses a custom patching system:
+
+Patches are stored below debian/patches, loosely sorted in bugfix/,
+features/ and debian/. Patches are in the standard kernel patch
+format.
+
+The order and the selection of patches which are applied during build
+time are specified in the series/ subdirectory. For each revision
+there may be up to one file named REVISION specifying the patches
+applied for the standard revision and one file named REVISION-extra
+for addon flavours. If, e.g. the patches are specified for 2.6.26-12,
+the patch order file is called debian/patches/series/12 for the
+standard kernel images and debian/patches/series/12-extra for the
+addon flavours.
+
+Let's look at the actual series file for 2.6.26-12:
+
++ bugfix/all/net-unix-gc-fix-soft-lockups-oom-issues.patch
++ bugfix/all/inotify-watch-removal-umount-races.patch
++ bugfix/all/atm-duplicate-listen-on-socket-corrupts-the-vcc-table.patch
++ bugfix/all/ata-pata_marvell-vs-ahci.patch
++ features/sparc/video-sunxvr500-intergraph.patch
+
+The patches to be applied are specified relative to debian/patches.
+"+" indicates that the patch should be added, "-" can be used to
+drop a patch in later patch series (e.g. if the patch turned out to
+be faulty). The series files may be arbitrarily documented with
+comments starting with "#".
+
+Let's now have a look at the series file for the addon kernel flavours
+of 2.6.26-12:
+
++ features/all/xen/dom0-fix-processor-throttling-when-pr-id-is-minus-1.patch featureset=xen
+
+The same syntax applies for specifing the patches, but an additional
+argument is needed which specifies the featureset the patch applies to.
+
+Kernel config files
+===================
+Configuration files are constructed dynamically from a number of config
+files, as listed in debian/config/<arch>/defines.
+
+Control file
+============
+The master control file debian/control must be generated before
+the package is uploaded. debian/rules contains the debian/control
+target, which generates the control file by invoking the
+debian/bin/gencontrol.py script, which combines the templates from
+the templates directory and architecture-specific defines file to
+produce the debian/control file. Note that this target is intentionally
+made to fail with a non-zero exit code to make sure that it is never
+run during an automatic build. The following variables are substituted
+into the templates:
+
+@version@ Upstream kernel version, for example 2.6.11.
+@major@ The major version, for example 2.6
+@arch@ The Debian arch name, such as powerpc or i386.
+@flavour@ The build flavour, such as 686 or k7-smp.
+@class@ The CPU/architecture class; displayed in synopsis. It should
+ be fairly short, as the synopsis is supposed to be <80 chars.
+ It should be in the form "foo class", and will show up in the
+ description as "foo class machines".
+@longclass@ The CPU/architecture class; displayed in the extended
+ description. The same rules apply as in @class@. If
+ this is unset, it will default to @class@.
+@desc@ (Potentially) multi-line verbiage that's appended to
+ -image descriptions.
+@abiname@ Current abiname, a single digit.
+
+Normally, the arch-specific contents should be controlled by
+adjusting the corresponding defines file.
+
+TODO:
+- Patches applied to the upstream source
+- How to define a flavour
+- More detail on generation of debian/control and configs
+
diff --git a/bin/abiupdate.py b/bin/abiupdate.py
index 3ce03ea..c0b21b5 100755
--- a/bin/abiupdate.py
+++ b/bin/abiupdate.py
@@ -76,7 +76,7 @@ class main(object):
f = self.retrieve_package(self.url, filename)
d = self.extract_package(f, "linux-headers-%s_%s" % (prefix, arch))
f1 = d + "/usr/src/linux-headers-%s-%s/Module.symvers" % (self.version_abi, prefix)
- s = Symbols(f1)
+ s = Symbols(open(f1))
shutil.rmtree(d)
return s
@@ -93,11 +93,7 @@ class main(object):
u = url(self.source, filename)
filename_out = self.dir + "/" + filename
- try:
- f_in = urllib2.urlopen(u)
- except urllib2.HTTPError, e:
- raise RuntimeError('Failed to retrieve %s: %s' % (e.filename, e))
-
+ f_in = urllib2.urlopen(u)
f_out = file(filename_out, 'w')
while 1:
r = f_in.read()
@@ -111,7 +107,7 @@ class main(object):
if not os.path.exists(dir):
os.makedirs(dir)
out = "%s/%s_%s_%s" % (dir, arch, featureset, flavour)
- Symbols.write(file(out, 'w'))
+ symbols.write(open(out, 'w'))
def update_arch(self, config, arch):
if self.override_featureset:
@@ -150,8 +146,12 @@ class main(object):
abi = self.get_abi(arch, localversion)
self.save_abi(abi, arch, featureset, flavour)
self.log("Ok.\n")
+ except urllib2.HTTPError, e:
+ self.log("Failed to retrieve %s: %s\n" % (e.filename, e))
except StandardError, e:
- self.log("FAILED! (%s)\n" % str(e))
+ self.log("FAILED!\n")
+ import traceback
+ traceback.print_exc(None, sys.stdout)
if __name__ == '__main__':
options = optparse.OptionParser()
diff --git a/bin/buildcheck.py b/bin/buildcheck.py
index 16a1fd2..bd4bd80 100755
--- a/bin/buildcheck.py
+++ b/bin/buildcheck.py
@@ -124,7 +124,6 @@ class CheckAbi(object):
s_new = new[name]
if s_ref != s_new:
- print "cmp", s_ref.__dict__, s_new.__dict__
change.add(name)
symbols[name] = self.SymbolChangeInfo(s_ref, s_new)
diff --git a/bin/gencontrol.py b/bin/gencontrol.py
index 8b53e0b..2cbb476 100755
--- a/bin/gencontrol.py
+++ b/bin/gencontrol.py
@@ -26,13 +26,9 @@ class Gencontrol(Base):
def do_main_packages(self, packages, vars, makeflags, extra):
packages.extend(self.process_packages(self.templates["control.main"], self.vars))
- packages.append(self.process_real_tree(self.templates["control.tree"][0], self.vars))
- packages.extend(self.process_packages(self.templates["control.support"], self.vars))
def do_arch_setup(self, vars, makeflags, arch, extra):
config_base = self.config.merge('base', arch)
- config_libc_dev = self.config.merge('libc-dev', arch)
- makeflags['LIBC_DEV_ARCH'] = config_libc_dev.get('arch', config_base.get('kernel-arch'))
data = vars.copy()
data.update(config_base)
@@ -51,14 +47,7 @@ class Gencontrol(Base):
extra['headers_arch_depends'] = packages_headers_arch[-1]['Depends'] = PackageRelation()
- for package in packages_headers_arch:
- name = package['Package']
- if packages.has_key(name):
- package = packages.get(name)
- package['Architecture'].append(arch)
- else:
- package['Architecture'] = [arch]
- packages.append(package)
+ self.merge_packages(packages, packages_headers_arch, arch)
cmds_binary_arch = ["$(MAKE) -f debian/rules.real binary-arch-arch %s" % makeflags]
cmds_source = ["$(MAKE) -f debian/rules.real source-arch %s" % makeflags]
@@ -67,20 +56,13 @@ class Gencontrol(Base):
def do_featureset_setup(self, vars, makeflags, arch, featureset, extra):
config_base = self.config.merge('base', arch, featureset)
- makeflags['KERNEL_HEADER_DIRS'] = config_base.get('kernel-header-dirs', config_base.get('kernel-arch'))
makeflags['LOCALVERSION_HEADERS'] = vars['localversion_headers'] = vars['localversion']
def do_featureset_packages(self, packages, makefile, arch, featureset, vars, makeflags, extra):
headers_featureset = self.templates["control.headers.featureset"]
package_headers = self.process_package(headers_featureset[0], vars)
- name = package_headers['Package']
- if packages.has_key(name):
- package_headers = packages.get(name)
- package_headers['Architecture'].append(arch)
- else:
- package_headers['Architecture'] = [arch]
- packages.append(package_headers)
+ self.merge_packages(packages, (package_headers,), arch)
cmds_binary_arch = ["$(MAKE) -f debian/rules.real binary-arch-featureset %s" % makeflags]
cmds_source = ["$(MAKE) -f debian/rules.real source-featureset %s" % makeflags]
@@ -89,8 +71,12 @@ class Gencontrol(Base):
def do_flavour_setup(self, vars, makeflags, arch, featureset, flavour, extra):
config_base = self.config.merge('base', arch, featureset, flavour)
+ config_description = self.config.merge('description', arch, featureset, flavour)
config_image = self.config.merge('image', arch, featureset, flavour)
+ vars['class'] = config_description['hardware']
+ vars['longclass'] = config_description.get('hardware-long') or vars['class']
+
vars['localversion-image'] = vars['localversion']
override_localversion = config_image.get('override-localversion', None)
if override_localversion is not None:
@@ -108,7 +94,7 @@ class Gencontrol(Base):
):
makeflags[i[1]] = data[i[0]]
for i in (
- ('cflags', 'CFLAGS'),
+ ('cflags', 'CFLAGS_KERNEL'),
('initramfs', 'INITRAMFS'),
('kpkg-arch', 'KPKG_ARCH'),
('kpkg-subarch', 'KPKG_SUBARCH'),
@@ -122,6 +108,7 @@ class Gencontrol(Base):
headers = self.templates["control.headers"]
config_entry_base = self.config.merge('base', arch, featureset, flavour)
+ config_entry_description = self.config.merge('description', arch, featureset, flavour)
config_entry_image = self.config.merge('image', arch, featureset, flavour)
config_entry_relations = self.config.merge('relations', arch, featureset, flavour)
@@ -135,7 +122,7 @@ class Gencontrol(Base):
image_fields = {'Description': PackageDescription()}
for field in 'Depends', 'Provides', 'Suggests', 'Recommends', 'Conflicts':
- image_fields[field] = PackageRelation(config_entry_image.get(field.lower(), None))
+ image_fields[field] = PackageRelation(config_entry_image.get(field.lower(), None), override_arches=(arch,))
if config_entry_image.get('initramfs', True):
generators = config_entry_image['initramfs-generators']
@@ -152,12 +139,12 @@ class Gencontrol(Base):
image_fields['Conflicts'].append(PackageRelationGroup([a]))
image_fields['Depends'].append(l_depends)
- desc_parts = self.config.get_merge('image', arch, featureset, flavour, 'desc-parts')
+ desc_parts = self.config.get_merge('description', arch, featureset, flavour, 'parts')
if desc_parts:
desc = image_fields['Description']
for part in desc_parts[::-1]:
- desc.append(config_entry_image['desc-long-part-' + part])
- desc.append_short(config_entry_image.get('desc-short-part-' + part, ''))
+ desc.append(config_entry_description['part-long-' + part])
+ desc.append_short(config_entry_description.get('part-short-' + part, ''))
packages_dummy = []
packages_own = []
@@ -197,14 +184,7 @@ class Gencontrol(Base):
packages_own.append(package_headers)
extra['headers_arch_depends'].append('%s (= ${binary:Version})' % packages_own[-1]['Package'])
- for package in packages_own + packages_dummy:
- name = package['Package']
- if packages.has_key(name):
- package = packages.get(name)
- package['Architecture'].append(arch)
- else:
- package['Architecture'] = [arch]
- packages.append(package)
+ self.merge_packages(packages, packages_own + packages_dummy, arch)
if config_entry_image['type'] == 'plain-xen':
for i in ('postinst', 'postrm', 'prerm'):
@@ -276,6 +256,25 @@ class Gencontrol(Base):
file('debian/bin/patch.apply', 'w').write(apply)
+ def merge_packages(self, packages, new, arch):
+ for new_package in new:
+ name = new_package['Package']
+ if name in packages:
+ package = packages.get(name)
+ package['Architecture'].append(arch)
+
+ for field in 'Depends', 'Provides', 'Suggests', 'Recommends', 'Conflicts':
+ if field in new_package:
+ if field in package:
+ v = package[field]
+ v.extend(new_package[field])
+ else:
+ package[field] = new_package[field]
+
+ else:
+ new_package['Architecture'] = [arch]
+ packages.append(new_package)
+
def process_changelog(self):
act_upstream = self.changelog[0].version.linux_upstream
versions = []
@@ -284,7 +283,7 @@ class Gencontrol(Base):
break
versions.append(i.version)
self.versions = versions
- self.version = self.changelog[0].version
+ version = self.version = self.changelog[0].version
if self.version.linux_modifier is not None:
self.abiname = ''
else:
@@ -298,6 +297,17 @@ class Gencontrol(Base):
}
self.config['version',] = {'source': self.version.complete, 'abiname': self.abiname}
+ distribution = self.changelog[0].distribution
+ if distribution in ('unstable', ):
+ if (version.linux_revision_experimental or
+ version.linux_revision_other):
+ raise RuntimeError("Can't upload to %s with a version of %s" %
+ (distribution, version))
+ if distribution in ('experimental', ):
+ if not version.linux_revision_experimental:
+ raise RuntimeError("Can't upload to %s with a version of %s" %
+ (distribution, version))
+
def process_real_image(self, entry, fields, vars):
entry = self.process_package(entry, vars)
for key, value in fields.iteritems():
@@ -308,19 +318,6 @@ class Gencontrol(Base):
entry[key] = value
return entry
- def process_real_tree(self, entry, vars):
- entry = self.process_package(entry, vars)
- version = self.changelog[0].version
-
- value = entry.setdefault('Depends', PackageRelation())
- value.append("linux-patch-debian-%s (= %s)" % (version.linux_version, version.complete))
- value.append(PackageRelationGroup(["linux-source-%s (= %s)" % (v.linux_version, v.complete) for v in self.versions]))
-
- value = entry.setdefault('Provides', PackageRelation())
- value.extend(["linux-tree-%s" % v.complete.replace('~', '-') for v in self.versions])
-
- return entry
-
def write(self, packages, makefile):
self.write_config()
super(Gencontrol, self).write(packages, makefile)
diff --git a/bin/genorig.py b/bin/genorig.py
index 2007db7..8a0979d 100755
--- a/bin/genorig.py
+++ b/bin/genorig.py
@@ -13,11 +13,10 @@ from debian_linux.debian import Changelog, VersionLinux
from debian_linux.patches import PatchSeries
class Main(object):
- def __init__(self, input_tar, input_patch, override_version):
+ def __init__(self, input_files, override_version):
self.log = sys.stdout.write
- self.input_tar = input_tar
- self.input_patch = input_patch
+ self.input_files = input_files
changelog = Changelog(version = VersionLinux)[0]
source = changelog.source
@@ -34,25 +33,43 @@ class Main(object):
self.orig = '%s-%s' % (source, version.upstream)
self.orig_tar = '%s_%s.orig.tar.gz' % (source, version.upstream)
+ self.tag = 'v' + version.upstream.replace('~', '-')
def __call__(self):
import tempfile
self.dir = tempfile.mkdtemp(prefix = 'genorig', dir = 'debian')
try:
- self.upstream_extract()
- self.upstream_patch()
+ if os.path.isdir(self.input_files[0]):
+ self.upstream_export(self.input_files[0])
+ else:
+ self.upstream_extract(self.input_files[0])
+ if len(self.input_files) > 1:
+ self.upstream_patch(self.input_files[1])
self.debian_patch()
self.tar()
finally:
shutil.rmtree(self.dir)
- def upstream_extract(self):
- self.log("Extracting tarball %s\n" % self.input_tar)
- match = re.match(r'(^|.*/)(?P<dir>linux-\d+\.\d+\.\d+(-\S+)?)\.tar(\.(?P<extension>(bz2|gz)))?$', self.input_tar)
+ def upstream_export(self, input_repo):
+ self.log("Exporting %s from %s\n" % (self.tag, input_repo))
+
+ archive_proc = subprocess.Popen(['git', 'archive', '--format=tar',
+ '--prefix=%s/' % self.orig, self.tag],
+ cwd=input_repo,
+ stdout=subprocess.PIPE)
+ extract_proc = subprocess.Popen(['tar', '-xf', '-'], cwd=self.dir,
+ stdin=archive_proc.stdout)
+
+ if extract_proc.wait():
+ raise RuntimeError("Can't extract tarball")
+
+ def upstream_extract(self, input_tar):
+ self.log("Extracting tarball %s\n" % input_tar)
+ match = re.match(r'(^|.*/)(?P<dir>linux-\d+\.\d+\.\d+(-\S+)?)\.tar(\.(?P<extension>(bz2|gz)))?$', input_tar)
if not match:
raise RuntimeError("Can't identify name of tarball")
- cmdline = ['tar', '-xf', self.input_tar, '-C', self.dir]
+ cmdline = ['tar', '-xf', input_tar, '-C', self.dir]
if match.group('extension') == 'bz2':
cmdline.append('-j')
elif match.group('extension') == 'gz':
@@ -63,11 +80,9 @@ class Main(object):
os.rename(os.path.join(self.dir, match.group('dir')), os.path.join(self.dir, self.orig))
- def upstream_patch(self):
- if self.input_patch is None:
- return
- self.log("Patching source with %s\n" % self.input_patch)
- match = re.match(r'(^|.*/)patch-\d+\.\d+\.\d+(-\S+?)?(\.(?P<extension>(bz2|gz)))?$', self.input_patch)
+ def upstream_patch(self, input_patch):
+ self.log("Patching source with %s\n" % input_patch)
+ match = re.match(r'(^|.*/)patch-\d+\.\d+\.\d+(-\S+?)?(\.(?P<extension>(bz2|gz)))?$', input_patch)
if not match:
raise RuntimeError("Can't identify name of patch")
cmdline = []
@@ -77,7 +92,7 @@ class Main(object):
cmdline.append('zcat')
else:
cmdline.append('cat')
- cmdline.append(self.input_patch)
+ cmdline.append(input_patch)
cmdline.append('| (cd %s; patch -p1 -f -s -t --no-backup-if-mismatch)' % os.path.join(self.dir, self.orig))
if os.spawnv(os.P_WAIT, '/bin/sh', ['sh', '-c', ' '.join(cmdline)]):
raise RuntimeError("Can't patch source")
@@ -113,13 +128,9 @@ class Main(object):
if __name__ == '__main__':
from optparse import OptionParser
- parser = OptionParser(usage = "%prog [OPTION]... TAR [PATCH]")
+ parser = OptionParser(usage = "%prog [OPTION]... {TAR [PATCH] | REPO}")
parser.add_option("-V", "--override-version", dest = "override_version", help = "Override version", metavar = "VERSION")
options, args = parser.parse_args()
- input_tar = args[0]
- input_patch = None
- if len(args) > 1:
- input_patch = args[1]
-
- Main(input_tar, input_patch, options.override_version)()
+ assert 1 <= len(args) <= 2
+ Main(args, options.override_version)()
diff --git a/bin/test-patches b/bin/test-patches
new file mode 100755
index 0000000..6cf9bfc
--- /dev/null
+++ b/bin/test-patches
@@ -0,0 +1,81 @@
+#!/bin/bash
+
+set -e
+shopt -s extglob
+
+# Set defaults from the running kernel
+arch="$(dpkg --print-architecture)"
+kernelabi="$(uname -r)"
+ff="${kernelabi#+([^-])-@(trunk|+([0-9]))-}"
+if [ "x$ff" != "x$kernelabi" ]; then
+ flavour="${ff#@(vserver|xen)-}"
+ if [ "x$flavour" != "x$ff" ]; then
+ featureset="${ff%-$flavour}"
+ else
+ featureset=none
+ fi
+else
+ flavour=
+ featureset=none
+fi
+
+eval "set -- $(getopt -n "$0" -- "f:j:s:" "$@")"
+while true; do
+ case "$1" in
+ -f) flavour="$2"; shift 2 ;;
+ -j) export DEBIAN_KERNEL_JOBS="$2"; shift 2 ;;
+ -s) featureset="$2"; shift 2 ;;
+ --) shift 1; break ;;
+ esac
+done
+
+if [ $# -lt 1 ]; then
+ echo >&2 "Usage: $0 [<options>] <patch>..."
+ cat >&2 <<EOF
+Options:
+ -f <flavour> specify the 'flavour' of kernel to build, e.g. 686
+ -j <jobs> specify number of compiler jobs to run in parallel
+ -s <featureset> specify an optional featureset to apply, e.g. xen
+EOF
+ exit 2
+fi
+
+if [ -z "$flavour" ]; then
+ echo >&2 "You must specify a flavour to build with the -f option"
+ exit 2
+fi
+
+dpkg-checkbuilddeps -B
+
+# Append 'a~test' to Debian version; this should be less than any official
+# successor and easily recognisable
+version="$(dpkg-parsechangelog | sed 's/^Version: //; t; d')"
+if [ "${version%a~test}" = "$version" ]; then
+ version="$version"a~test
+ dch -v "$version" --distribution UNRELEASED "Testing patches $*"
+fi
+debversion="${version##*-}"
+
+# Copy all patches into a new directory
+rm -rf debian/patches/test/
+mkdir debian/patches/test
+cp -t debian/patches/test/ "$@"
+
+# Generate patch series for the new version
+>debian/patches/series/"$debversion"
+for patch in "$@"; do
+ echo "+ test/$(basename "$patch")" >>debian/patches/series/"$debversion"
+done
+
+# Regenerate control and included rules
+rm debian/control debian/rules.gen
+debian/rules debian/control-real && exit 1 || true
+test -f debian/control
+test -f debian/rules.gen
+
+# Clean and patch source
+debian/rules clean
+debian/rules source
+
+# Build selected binaries
+fakeroot make -f debian/rules.gen binary-arch_"$arch"_"$featureset"_"$flavour"
diff --git a/changelog b/changelog
index 7ac4acb..cfb1c4c 100644
--- a/changelog
+++ b/changelog
@@ -1,21 +1,525 @@
-linux-2.6 (2.6.31~rc5-1~experimental.1) UNRELEASED; urgency=low
+linux-2.6 (2.6.33~rc8-1~experimental.1) UNRELEASED; urgency=low
* New upstream release.
- - support for W83627DHG-P (closes: #535646).
+
+ [ maximilian attems]
+ * [topconfig] set BLK_DEV_DRBD, DRM_NOUVEAU, DRM_NOUVEAU_BACKLIGHT,
+ DRM_VMWGFX, SENSORS_LM73, SENSORS_AMC682, SENSORS_LIS3_I2C,
+ SENSORS_MC13783_ADC, TOUCHSCREEN_DYNAPRO, TOUCHSCREEN_MC13783,
+ GIGASET_CAPI, LEDS_DAC124S085, LEDS_INTEL_SS4200, LEDS_INTEL_SS4200,
+ DVB_FIREDTV, DVB_USB_EC168, SOC_CAMERA_MT9T112, SOC_CAMERA_OV9640,
+ USB_GSPCA_PAC7302, USB_GSPCA_STV0680, AD525X_DPOT, CAN_MCP251X,
+ RT2800PCI, REGULATOR_MAX8660, RTC_DRV_BQ32K, RTC_DRV_MSM6242,
+ RTC_DRV_RP5C01, VMWARE_PVSCSI, SCSI_PM8001, WIMAX_IWMC3200_SDIO,
+ INPUT_SPARSEKMAP, SERIO_ALTERA_PS2, MANTIS_CORE, DVB_MANTIS,
+ DVB_HOPPER.
+ * [x86] set CS5535_MFGPT, SENSORS_K10TEMP, GEODE_WDT, MSI_WMI,
+ TOSHIBA_BT_RFKILL, ACPI_CMPC, CRYPTO_GHASH_CLMUL_NI_INTE.
+
+ -- maximilian attems <maks@debian.org> Mon, 15 Feb 2010 23:54:52 +0200
+
+linux-2.6 (2.6.32-9) UNRELEASED; urgency=low
+
+ [ Ben Hutchings ]
+ * Do not build obsolete lgs8gl5 driver
+ * [x86] Enable USB IP drivers (Closes: #568903)
+ * Ignore failure of lsusb when gathering information for bug reports
+ (Closes: #569725)
+ * macvlan: Add bridge, VEPA and private modes (Closes: #568756)
+
+ [ maximilian attems]
+ * Postinst don't refercence k-p related manpage. (closes: #542208)
+ * Postinst only write kernel-img.conf for palo boxes.
+ * Enable VT_HW_CONSOLE_BINDING for unbinding efifb. (closes: #569314)
+ * hwmon: Add driver for VIA CPU core temperature.
+ * wireless: report reasonable bitrate for MCS rates through wext.
+ * efifb: fix framebuffer handoff. (bugzilla.k.o #15151)
+
+ [ Bastian Blank ]
+ * Restrict access to sensitive SysRq keys by default.
+
+ -- Ben Hutchings <ben@decadent.org.uk> Fri, 12 Feb 2010 02:59:33 +0000
+
+linux-2.6 (2.6.32-8) unstable; urgency=high
+
+ [ Bastian Blank ]
+ * Don't let default compiler flags escape into build.
+
+ [ dann frazier ]
+ * KVM: PIT: control word is write-only (CVE-2010-0309)
+ * Fix potential crash with sys_move_pages (CVE-2010-0415)
+
+ [ Ben Hutchings ]
+ * Build lgs8gxx driver along with cxusb (Closes: #568414)
+ * Revert incorrect change to powerpc clocksource setup (Closes: #568457)
+ * Add stable release 2.6.32.8:
+ - Remove TIF_ABI_PENDING bit from x86, sparc & powerpc, fixing
+ 32-bit userland/64-bit kernel breakage (Closes: #568416)
+ - connector: Delete buggy notification code. (CVE-2010-0410)
+ * [x86] KVM: Add IOPL/CPL checks to emulator, to prevent privilege
+ escalation within a guest. (CVE-2010-0298, CVE-2010-0306)
+
+ [ Martin Michlmayr ]
+ * Implement power-off for D-Link DNS-323 rev B1 and fix the blinking
+ power LED (Erik Benada) (Closes: #503172).
+
+ [ Aurelien Jarno ]
+ * Enable CONFIG_FB_CIRRUS and CONFIG_LOGO on 4kc-malta and 5kc-malta.
+
+ -- Ben Hutchings <ben@decadent.org.uk> Thu, 11 Feb 2010 02:17:17 +0000
+
+linux-2.6 (2.6.32-7) unstable; urgency=low
+
+ [ maximilian attems]
+ * [x86] Disable deprecated X86_CPU_DEBUG, causes boot failures.
+ * Newer Standards-Version 3.8.4 without changes.
+
+ [ Ben Hutchings ]
+ * clocksource/events: Fix fallout of generic code changes
+ (Closes: #568030)
+ * Set ABI to 2.
+
+ [ dann frazier ]
+ * Disable FUNCTION_TRACER due to performance/build issues.
+ (Closes: #568025)
+ * Split 'flush_old_exec' into two functions (CVE-2010-0307)
+
+ -- dann frazier <dannf@debian.org> Wed, 03 Feb 2010 18:35:21 -0700
+
+linux-2.6 (2.6.32-6) unstable; urgency=high
+
+ [ Ben Hutchings ]
+ * Documentation/3c509: document ethtool support (Closes: #564743)
+ * Add MODULE_FIRMWARE declarations to several drivers that lacked them
+ * [x86] Update rt2860sta/rt2870sta firmware loader patch
+ - Accept 8K versions of rt2870.bin
+ - Fix hang on resume
+ * [x86] Enable rt3090sta using firmware loader
+ * Add stable release 2.6.32.4:
+ - untangle the do_mremap() mess (CVE-2010-0291)
+ - fasync: split 'fasync_helper()' into separate add/remove functions
+ (CVE-2009-4141)
+ - kernel/signal.c: fix kernel information leak with print-fatal-signals=1
+ (CVE-2010-0003)
+ - netfilter: ebtables: enforce CAP_NET_ADMIN (CVE-2010-0007)
+ - quota: Fix dquot_transfer for filesystems different from ext4
+ (Closes: #566532)
+ - audit: Fix memory management bugs (Closes: #562815)
+ + fix braindamage in audit_tree.c untag_chunk()
+ + fix more leaks in audit_tree.c tag_chunk()
+ - ipv6: skb_dst() can be NULL in ipv6_hop_jumbo(). (CVE-2010-0006)
+ - Fix DMA mapping for i915 driver (Closes: #558237, #567352)
+ + drm: remove address mask param for drm_pci_alloc()
+ + agp/intel-agp: Clear entire GTT on startup
+ * e1000,e1000e: Discard all fragments of received over-length packets
+ (CVE-2009-4536, CVE-2009-4538)
+ * Enable the '686' configuration options in '686-vserver' packages and
+ the '686-bigmem' configuration options in '686-bigmem-vserver' packages
+ (Closes: #566213)
+ * Add stable release 2.6.32.5:
+ - inotify: do not reuse watch descriptors (Closes: #561880)
+ - megaraid_sas: remove sysfs poll_mode_io world writeable permissions
+ (CVE-2009-3939) (Closes: #562975)
+ * Force distribution=UNRELEASED in debian/bin/test-patches so that it
+ works in released source packages
+ * Add stable release 2.6.32.6
+ * postinst: Enable escape sequences in debconf notes (Closes: #566539)
+ * Add 3w-sas driver for LSI 3ware 9750 SAS controllers
+ * aufs2: Update to snapshot from 2010-01-25 (Closes: #567391)
+ * cdc_ether: Do not set link down initially; not all devices send link
+ change interrupts (Closes: #567689)
+ * Add stable release 2.6.32.7:
+ - clockevent: Don't remove broadcast device on halt or CPU hotplug
+ (Closes: #566547)
+ * sfc: Apply fixes from 2.6.33-rc{5,6}
+ * Set ABI to 1.
+
+ [ Ian Campbell ]
+ * xen: Enable up to 32G of guest memory on i386.
+
+ [ Julien Cristau ]
+ * drm/i915: disable powersave by default (closes: #564807)
+
+ [ Bastian Blank ]
+ * Enable all NCP file system options.
+ * [amd64] Make AGP support again built-in to fullfill the not completely
+ documented dependency with GART IOMMU support. (closes: #561552)
+ * Enable dynamic minor allocations for ALSA, DVB and USB. (closes: #510593)
+
+ [ maximilian attems ]
+ * [topconfig] set MEMORY_FAILURE, 9P_FSCACHE, INFINIBAND_IPOIB_CM
+ (closes: #565494), ITCO_VENDOR_SUPPORT (closes: #525232), PCIEASPM
+ (closes: #545417), HWPOISON_INJECT.
+ * Enable easier debugging of Power Managment code. (closes: #478315)
+ * Pass `DEB_MAINT_PARAMS' to hook scripts. (closes: #563161)
+ * Enable more mobile IPv6 needs. (closes: #528834)
+
+ [ dann frazier ]
+ * [vserver] explicitly disable CFS_HARD_LIMITS
+ * Enable FUNCTION_TRACER and STACK_TRACER (Closes: #563847)
+
+ -- Ben Hutchings <ben@decadent.org.uk> Sun, 31 Jan 2010 23:09:28 +0000
+
+linux-2.6 (2.6.32-5) unstable; urgency=low
+
+ [ Ben Hutchings ]
+ * sfc: Apply fixes from 2.6.33-rc3
+ * ath5k: Fix eeprom checksum check for custom sized eeproms
+ (Closes: #563136)
+
+ [ maximilian attems ]
+ * topconfig unset USB_ISP1362_HCD FTBFS on armel and useless.
+ (closes: #564156)
+ * topconfig set PATA_ATP867X, PATA_RDC, SND_CS5535AUDIO, PM_RUNTIME,
+ ATA_VERBOSE_ERROR, RTC_DRV_WM831X, RTC_DRV_PCF2123, RTC_DRV_AB3100,
+ SND_HDA_PATCH_LOADER, DEVTMPFS (closes: #560040).
+ * [x86] set RTL8192E, TOPSTAR_LAPTOP, I2C_SCMI.
+ * Explicitly disable diverse staging drivers.
+
+ -- Ben Hutchings <ben@decadent.org.uk> Sun, 10 Jan 2010 03:22:23 +0000
+
+linux-2.6 (2.6.32-4) unstable; urgency=low
+
+ [ Ben Hutchings ]
+ * Correct comments referring to dpkg --print-installation-architecture
+ in maintainer scripts (Closes: #558077)
+ * modules: Skip empty sections when exporting section notes
+ (Closes: #563036)
+ * via-velocity: Give RX descriptors to the NIC later on open or MTU change
+ (Closes: #508527)
+ * dmfe/tulip: Let dmfe handle DM910x except for SPARC on-board chips
+ (Closes: #515533)
+ * Add stable release 2.6.32.3:
+ - ath5k: fix SWI calibration interrupt storm (may fix #563466)
+ - iwl3945: disable power save (Closes: #563693)
+ - rt2x00: Disable powersaving for rt61pci and rt2800pci (may fix #561087)
+
+ [ maximilian attems ]
+ * topconfig set CAN_EMS_USB, BT_MRVL, BT_MRVL_SDIO, BE2ISCSI, SCSI_PMCRAID,
+ SCSI_BFA_FC, USB_GL860, USB_GSPCA_JEILINJ, I2C_SI4713, RADIO_SI4713,
+ RADIO_SI470X, DVB_USB_FRIIO, EDAC_I3200, SENSORS_TMP421, SENSORS_WM8350,
+ SBC_FITPC2_WATCHDOG, TOUCHSCREEN_MCS5000, UIO_PCI_GENERIC, KSZ8842,
+ KS8851, KS8851_MLL, MISDN_AVMFRITZ, MISDN_SPEEDFAX, MISDN_INFINEON,
+ MISDN_W6692, MISDN_NETJET, INPUT_WINBOND_CIR, BATTERY_DS2782, MFD_WM831X,
+ MFD_MC13783, MTD_SST25L, TOUCHSCREEN_USB_E2I, INPUT_WM831X_ON,
+ SENSORS_WM831X, WM831X_WATCHDOG, AB3100_OTP, REGULATOR_WM831X,
+ REGULATOR_MC13783, REGULATOR_AB3100, REGULATOR_TPS65023,
+ REGULATOR_TPS6507X, VIDEO_SAA7164, DVB_PT1, BACKLIGHT_WM831X,
+ SND_HDA_CODEC_CIRRUS, USB_ISP1362_HCD, LEDS_WM831X_STATUS,
+ MTD_ONENAND_GENERIC, B43_SDIO, B43_PHY_LP, KEYBOARD_ADP5588, QT2160,
+ KEYBOARD_LM8323, KEYBOARD_MAX7359, KEYBOARD_OPENCORES, MOUSE_PS2_SENTELIC,
+ WM831X_POWER.
+ * [x86] set ACPI_POWER_METER, ACPI_PROCESSOR_AGGREGATOR, SFI,
+ EDAC_DECODE_MCE.
+ * Set MOUSE_PS2_ELANTECH for various EeePc. (closes: #522920)
+
+ [ dann frazier ]
+ * Fix vserver build on ia64 (Closes: #563356)
+ * Fix vserver build on s390 (Closes: #563355)
+
+ [ Martin Michlmayr ]
+ * Report model information on armel when filing a bug.
+ * ARM: Add an earlyprintk debug console (Catalin Marinas)
+ * [armel] Enable EARLY_PRINTK.
+
+ -- Ben Hutchings <ben@decadent.org.uk> Thu, 07 Jan 2010 03:33:39 +0000
+
+linux-2.6 (2.6.32-3) unstable; urgency=high
+
+ * The "Not a Suitable Christmas Present" release
+
+ [ Martin Michlmayr ]
+ * [armel/orion5x] Build MTD_CFI_AMDSTD into the kernel again since
+ it's needed on the D-Link DNS-323 (thanks Manuel Roeder).
+ (Closes: #562205)
+
+ [ dann frazier ]
+ * Input: ALPS - add support for touchpads with 4-directional button
+ * Input: ALPS - add interleaved protocol support (Dell E6x00 series)
+ (Closes: #561589)
+ * Re-enable vserver
+
+ [ Ben Hutchings ]
+ * sfc: Apply changes from 2.6.33-rc1 adding support for SFC9000 family
+ * Add stable release 2.6.32.2:
+ - KVM: x86 emulator: limit instructions to 15 bytes (CVE-2009-4031)
+ - hfs: fix a potential buffer overflow (CVE-2009-4020)
+ * radeon: fix crtc vblank update for r600 (regression in 2.6.32.2)
+ * ia64: Include <linux/personality.h> header in <asm/fcntl.h>; fixes
+ FTBFS
+ * r8169: Allow RTL8168D v1 and v2 to be used without firmware files
+ (Closes: #561309)
+ * Enable vmxnet3 (VMware guest paravirt net driver) (Closes: #562046)
+
+ -- Ben Hutchings <ben@decadent.org.uk> Thu, 24 Dec 2009 04:28:55 +0000
+
+linux-2.6 (2.6.32-2) unstable; urgency=high
+
+ [ Bastian Blank ]
+ * Allow memory hot-add and -remove if possible.
+ * Enable USB suspend.
+ * Enable kernel samepage merging. (closes: #558200)
+ * [s390]
+ - Enable SECCOMP.
+ - Enable z/VM Watchdog Timer.
+
+ [ Moritz Muehlenhoff ]
+ * Disable cryptoloop (Closes: #559755)
+ * Initial work on a README.source file as suggested by current policy
+
+ [ Ben Hutchings ]
+ * aufs2: Update to snapshot from 2009-12-05
+ * postinst: Fix failure paths in check for missing firmware
+ (Closes: #560263)
+ * atl1c: Fix system hang when link drops (Closes: #559577)
+ * netfilter: xtables: fix conntrack match v1 ipt-save output
+ (Closes: #556587)
+
+ [ Aurelien Jarno ]
+ * Add support for the sparc64 architecture.
+
+ [ dann frazier ]
+ * Add stable release 2.6.32.1:
+ - ext4: Fix double-free of blocks with EXT4_IOC_MOVE_EXT (CVE-2009-4306)
+ - ext4: avoid divide by zero when trying to mount a corrupted file system
+ (CVE-2009-4307)
+ - ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT (CVE-2009-4131)
+
+ -- Ben Hutchings <ben@decadent.org.uk> Wed, 16 Dec 2009 21:42:49 +0000
+
+linux-2.6 (2.6.32-1) unstable; urgency=low
+
+ * New upstream release candidate:
+ - Fixes wifi with rt73usb (Closes: #555640)
+
+ [ Martin Michlmayr ]
+ * [armel/kirkwood] Turn on USB_SUSPEND (on the request of a SheevaPlug
+ user).
+ * [mips/4kc-malta, mips/5kc-malta] Compile USB as a module rather than
+ into the kernel.
+
+ [ Bastian Blank ]
+ * Enable PCI_MSI.
+ * [powerpc] Properly enable Apple PMU battery.
+ * [mips/mipsel] Drop remaining OSS drivers.
+ * [powerpc] Enable PCIe support.
+ * Move contents of linux-support package to /usr/share.
+ * Make linux-patch package depend against python.
+ * Use python-support instead of python-central.
+ * Always enable software watchdog support.
+ * Always enable complete USB mass storage support.
+ * [amd64, powerpc, sparc] Build USB support as module.
+ * [amd64] Build AGP support as module.
+ * Always enable dummy net driver support.
+ * Drop linux-tree package, it have no users left.
+
+ [ Ben Hutchings ]
+ * Re-enable accidentally omitted drivers, thanks to Uwe Kleine-König
+ (Closes: #558011):
+ - Atheros wireless drivers (ar9170, ath5k, ath9k)
+ - TI wl12xx wireless drivers (wl1251_spi, wl1251_sdio and wl1271
+ replace wl12xx)
+ - Silicon Labs Si470x FM Radio Receiver driver (radio-usb-si470x)
+ * Add 'removable' option to the mmc module. Setting this to 0 causes
+ MMC/SD cards to be assumed non-removable, and filesystems on them
+ will remain mounted over a suspend/resume cycle. (Closes: #504391)
+ * Add MODULE_FIRMWARE declarations to many drivers that lacked them, so
+ that missing firmware will be reported automatically during upgrades
+ * atl1e: Remove broken implementation of TSO for TCP/IPv6
+ (Closes: #558426) and allow other hardware offloads to be disabled in
+ case they are also buggy
+ * usbnet: Set link down initially for drivers that update link state
+ (Closes: #444043)
+ * aufs2: Update to snapshot from 2009-11-29
+ * i915: Enable auto-loading even though CONFIG_DRM_I915_KMS is not set
+
+ [ dann frazier ]
+ * mac80211 (CVE-2009-4026, CVE-2009-4027):
+ - fix two remote exploits
+ - fix spurious delBA handling
+
+ -- Bastian Blank <waldi@debian.org> Sun, 06 Dec 2009 18:17:39 +0100
+
+linux-2.6 (2.6.32~rc8-1~experimental.1) unstable; urgency=low
+
+ [ Ben Hutchings ]
+ * New upstream release candidate.
+ - slip: Clean up create and destroy (Closes: #408635)
+ - signal: Fix alternate signal stack check (Closes: #544905)
+ * README.Debian: Add brief information about building specific binary
+ packages (Closes: #546182)
+ * lgs8gxx: Remove firmware for lgs8g75 and use request_firmware() to
+ load it
+ * r8169: Remove firmware for RTL8168D v1 and v2 and use
+ request_firmware() to load it
+ * DocBook: Fix build breakage
+ * Hide WPA authentication parameters and comments when including network
+ configuration in bug reports
+
+ [ Bastian Blank ]
+ * [mips] Don't force EMBEDDED on.
+ * [sparc] Don't builtin Ext2 support.
+ * Enable PERF_EVENTS, EVENT_PROFILE, CRYPTO_VMAC, CRYPTO_GHASH, TREE_RCU.
+ * Use SLUB as default SLAB allocator.
+
+ [ Martin Michlmayr ]
+ * [armel] Make some options modular (since there's no reason for them
+ to be built in): FTL, NFTL, MTD_CFI_AMDSTD, MTD_CFI_STAA.
+ * [armel/orion5x, armel/kirkwood] Enable ISDN (requested by Markus
+ Krebs).
+ * Add patch from Albin Tonnerre to add HAVE_KERNEL_LZMA to arm.
+ * [armel] Enable KERNEL_LZMA, i.e. compress kernels with lzma to get
+ much better compression.
+ * [armel] Re-enable options that were turned off recently because of
+ size constraints: DEBUG_USER, DEBUG_KERNEL, BOOT_TRACER, ARM_UNWIND,
+ BLK_DEV_IO_TRACE and SECURITY_SELINUX.
+
+ [ maximilian attems ]
+ * Simplify postinst nuke reverse symlinks handling. Patch from
+ Sebastian Andrzej Siewior <sebastian@breakpoint.cc>.
+
+ -- Bastian Blank <waldi@debian.org> Sat, 21 Nov 2009 21:41:45 +0100
+
+linux-2.6 (2.6.31-2) unstable; urgency=low
+
+ [ Martin Michlmayr ]
+ * [armel/orion5x, armel/kirkwood] Make sure VGA_CONSOLE is disabled,
+ otherwise the kernel won't boot.
+ * [armel/kirkwood] Enable CRYPTO_DEV_MV_CESA (Closes: #552270).
+ * [armel/kirkwood, armel/orion5x] Enable ORION_WATCHDOG (the
+ name of the config variable changed).
+ * Add OpenRD-Client support again.
+ * Add QNAP TS-41x support.
+ * [armel/orion5x, armel/kirkwood] Enable ISDN (requested by Markus
+ Krebs).
+ * Fix a build failure of the ISDN hisax elsa driver on ARM.
+ * mips: fix build of vmlinux.lds (Closes: #552422).
+
+ [ Ben Hutchings ]
+ * postinst: Accept absolute paths in modules.dep generated by the
+ lenny version of module-init-tools (Closes: #552610)
+ * aufs2: Remove incorrect static assertion (Closes: #554120)
+ * Add stable release 2.6.31.6:
+ - fs: pipe.c null pointer dereference (CVE-2009-3547)
+ - KEYS: get_instantiation_keyring() should inc the keyring refcount
+ in all cases (CVE-2009-3624)
+ - netlink: fix typo in initialization (CVE-2009-3612)
+ * Undo PCMCIA ABI change in 2.6.31.6
+ * Hide wireless keys and wake-on-LAN password when including network
+ configuration in bug reports
+ * Add Geode LX/NX to list of 686-class processors
+
+ [ Bastian Blank ]
+ * [powerpc] Remove SMP warning from PowerMac cpufreq (Closes: #554124)
+
+ [ maximilian Attems ]
+ * Really fix making a debian kernel installable without kernel-img.conf.
+ Thanks for patch to Sebastian Andrzej Siewior <sebastian@breakpoint.cc>.
+ (closes: #555093).
+
+ -- Ben Hutchings <ben@decadent.org.uk> Sun, 15 Nov 2009 18:47:49 +0000
+
+linux-2.6 (2.6.31-1) unstable; urgency=low
+
+ [ Ben Hutchings ]
+ * Include aufs2, marked as staging (Closes: #541828)
+ * Include speakup modules under staging
+ * Add stable release 2.6.31.5
+ * [x86_64] Enable NUMA_EMU (Closes: #541389)
+
+ [ Martin Michlmayr ]
+ * CPUidle: always return with interrupts enabled.
+ * [armel/orion5x, armel/kirkwood] Enable FB since some Kirkwood
+ machines have a VGA chip (e.g. OpenRD-Client) and because it's
+ possible to use a DisplayLink USB virtual graphics adapter.
+
+ [ maximilian attems ]
+ * [alpha] Disable SND_MIXART, causes gcc ICE.
+ * [x86] Enable modular X86_MCE_INJECT.
+ * [x86_32] Set LSM_MMAP_MIN_ADDR to zero to unbreak dosemu and 16-bit Wine,
+ ia64 and x86_64 to 65536 otherwise default to 32768.
+ * Unset UEVENT_HELPER_PATH to save some boot cycles.
+
+ [ Bastian Blank ]
+ * Set ABI to 1.
+ * Enable Apple PMU battery. (closes: #544264)
+
+ -- Bastian Blank <waldi@debian.org> Sat, 24 Oct 2009 19:17:30 +0200
+
+linux-2.6 (2.6.31-1~experimental.2) experimental; urgency=low
+
+ [ Ben Hutchings ]
+ * Include more information in bug reports:
+ - Model information
+ - Firmware package status
+ - Network configuration and status (optional)
+ - USB device list
+ * nfs: Avoid overrun when copying client IP address string
+ (Closes: #549002)
+ * Add support for DEB_BUILD_OPTIONS=parallel=N (Closes: #458560)
+ * sfc: Fix initial link state
+ * Improve package descriptions
+ - Clarify the differences between i386 flavours (Closes: #414690)
+ - Simplify wording of the description template
+ * Add stable release 2.6.31.3
+ * Remove /usr/include/scsi from linux-libc-dev; these headers are
+ provided by libc6-dev (Closes: #550130)
+ * Remove dummy dot-files from linux-libc-dev
+ * hfsplus: Refuse to mount volumes larger than 2TB, which may otherwise
+ be corrupted (Closes: #550010)
+ * Add stable release 2.6.31.4
+ - x86: Don't leak 64-bit kernel register values to 32-bit processes
+ (CVE-2009-2910)
+ - appletalk: Fix skb leak when ipddp interface is not loaded
+ (CVE-2009-2903)
+
+ [ maximilian attems ]
+ * Add stable release 2.6.31.2
+ - ax25: Fix signed comparison in the sockopt handler (CVE-2009-2909)
+ - PM / yenta: Fix cardbus suspend/resume regression (Closes: #522828)
+
+ [ dann frazier ]
+ * [sparc] build zImage by default, fixes build
+ * [ia64] Fix call to elilo in postinst
+
+ -- maximilian attems <maks@debian.org> Mon, 12 Oct 2009 23:54:52 +0200
+
+linux-2.6 (2.6.31-1~experimental.1) experimental; urgency=low
+
+ * New upstream release.
+ - Support for W83627DHG-P (closes: #535646).
- Restore MAC address and MTU change operations on Orinoco and others
(Closes: #536455)
- Remove incorrect ACPI blacklisting of ASUS P4B266 mainboards
- (Closes: #525625)
+ (Closes: #525625)
- atl1c fixes for Eee PC model 1005HA-H. (closes: #538410)
- parisc64-smp boot fix on J5600. (closes: #539369)
- parisc: Fix GOT overflow during module load on 64bit kernel
(closes: #539378)
- xfs: fix freeing of inodes not yet added to the inode cache
- (Closes: #527517)
+ (Closes: #527517)
+ - IPv6: add "disable" module parameter support to ipv6.ko.
+ (closes: #542470)
+ - IPv6: avoid wraparound for expired preferred lifetime
+ (Closes: #518710)
+ - Fixes lockups with older dual-CPU machines (Closes: #542551)
+ - x86, pat: Allow ISA memory range uncacheable mapping requests
+ (Closes: #538159)
+ - drm/i915: Hook connector to encoder during load detection
+ (Closes: #522358)
+ - module: workaround duplicate section names (Closes: #545229)
+ - b43: Add fw capabilities (Closes: #533357)
+ - procfs: Fix idle time in uptime (Closes: #545981)
+ - e1000, e1000e, igb, ixgb, ixgbe: Fix initial link state
+ (Closes: #546041)
+ - CIFS: Handle port= mount option correctly (Closes: #524142)
+ - i915: Prevent screen flickering in X11 (Closes: #545377)
+ - hppa: Ensure broadcast tlb purge runs single threaded
+ (Closes: #539215)
[ maximilian attems ]
* [powerpc64] Enable modular RTC_DRV_PS3, PS3_VRAM.
- (Closes: #528694)
+ (Closes: #528694)
* Set new NETFILTER_XT_MATCH_OSF, FIREWIRE_NET, SND_CTXFI, USB_XHCI_HCD,
IEEE802154, CAN_DEV, EEPROM_MAX6875, DM_LOG_USERSPACE, DM_MULTIPATH_QL,
DM_MULTIPATH_ST, LIBERTAS_SPI, CAN_SJA1000, CAN_SJA1000_PLATFORM,
@@ -26,7 +530,8 @@ linux-2.6 (2.6.31~rc5-1~experimental.1) UNRELEASED; urgency=low
REGULATOR_MAX1586, REGULATOR_LP3971, MEDIA_SUPPORT, CUSE,
WL12XX, PPS, AB3100_CORE, SND_HDA_INPUT_JACK,MMC_SDHCI_PLTFM,
MMC_CB710, MMC_VIA_SDMMC, LEDS_LP3944, RTC_DRV_RX8025,
- SMARTJOYPLUS_FF, USB_CDC_PHONET, USB_GSPCA_SN9C20X, MOUSE_SYNAPTICS_I2C.
+ SMARTJOYPLUS_FF, USB_CDC_PHONET, USB_GSPCA_SN9C20X, MOUSE_SYNAPTICS_I2C,
+ PCIEAER_INJECT.
* Disable v4l1 ov511 and quickcam_messenger drivers.
* [x86_64] Enable HW_RANDOM_VIA.
* [x86] Keep divers staging stuff enabled.
@@ -37,33 +542,236 @@ linux-2.6 (2.6.31~rc5-1~experimental.1) UNRELEASED; urgency=low
* Newer Standards-Version 3.8.2 without changes.
* Allow install in chroot without do_initrd check for piuparts.
* Cleanup Maintainer scripts from ancient pre linux-2.6 assumptions.
+ (Also closes: #536333)
* Disable DEVKMEM.
* [ppc, sparc] Enable EFI_PARTITION. (closes: #540486)
+ * Disable old USB_DEVICE_CLASS. (Closes: #510279)
+ * Drop yaird initramfs generator support.
+ * Add stable release 2.6.31.1.
+ * Enable PREEMPT_VOLUNTARY.
[ Ben Hutchings ]
* mga: remove unnecessary change from firmware-loading patch
* cxgb3: remove PHY firmware and use request_firmware() to load it
* Add firmware-linux-free package containing DFSG-free firmware
* av7110: include firmware source and binary
+ * snd-cs46xx: reenable using external firmware (closes: #464197,
+ but note that Debian cannot currently distribute the firmware),
+ thanks to Kalle Olavi Niemitalo <kon@iki.fi>
+ * ib_ipath: remove firmware for QLogic IBA7220 and use
+ request_firmware() to load it
+ * dvb-usb-af9005: remove initialisation script derived from Windows
+ driver and use request_firmware() to extract it at run-time
+ (closes: #494119)
+ * Add warning on upgrade to a new upstream version where the system
+ appears to be missing necessary firmware files (closes: #541702)
+ * qla1280: Release spinlock when requesting firmware (closes: #543244)
+ * r128: Add test for initialisation to all ioctls that require it
+ (closes: #541630)
+ * rt{2860,2870,3070}sta: Use existing CCITT CRC implementation on
+ firmware rather than adding an equivalent variant of ITU-T CRC
+ * rd: Build as a module since we do not require initrd support
+ * x86: Fix crash in text_poke_early() on 486-class processors
+ (Closes: #515982)
+ * intel-agp: Fix cache flushing on i8xx chipsets, avoiding graphics
+ corruption and GPU lock-ups (Closes: #541307)
+ * Generate architecture-qualified package relations as needed for
+ flavours that exist for multiple architectures (Closes: #278729)
+ * Prompt bug reporters to run the kernel version they're reporting on
+ or otherwise record boot messages
+ * Include PCI device list in bug reports even if the running kernel
+ doesn't match
[ Martin Michlmayr ]
* [armel/orion5x, armel/kirkwood] Set GPIO_SYSFS=y since these
platforms have been converted to GPIOLIB.
+ * [armel/orion5x, armel/kirkwood] Disable MARVELL_PHY since it may
+ lead to conflicts with the built-in Ethernet.
+ * Add features from 2.6.32:
+ - crypto: mv_cesa - Add support for Orion5X crypto engine
+ * [armel/orion5x] Enable CRYPTO_DEV_MV_CESA.
+ * Disable SYS_HAS_EARLY_PRINTK on SGI IP22 to work around a hang
+ during bootup (Closes: #507557)
+ * [armel] Enable BPQETHER (on the request of Iain Young) and some
+ other AX25 drivers.
[ Bastian Blank ]
* Disable staging drivers by default.
+ * Force all bugs against images to be reported to linux-2.6.
+ (closes: #539176)
+ * [arm] Remove old arm architecture.
+ * Use kernel architecture for libc-dev build.
[ Moritz Muehlenhoff ]
* Fix Linus' name in copyright file (Closes: #530620)
* More verbose explanation on difference between Alpha flavour
(Closes: #497230)
+ * Add Vcs-Svn and Vcs-Browser stanzas pointing to the SVN branch
+ used for development in unstable. There are other branches
+ used for experimental (trunk), oldstable and stable, but Vcs-*
+ doesn't yet provide the ability to distinguish branches in a
+ more fine-grained manner. (Closes: #471495)
+ * Update Standards-Version to 3.8.3, no changes needed
+ * Disable PROM console support (Closes: #525958)
+ * Make the description of linux-support a little more verbose
+ (Closes: #400825)
+ * This upload fixes the following security issues:
+ - CVE-2009-3290 (2.6.31)
+ - CVE-2009-3288 (2.6.31.1)
+ - CVE-2009-3280 (2.6.31.1)
+ - CVE-2009-3234 (2.6.31.1)
+ - CVE-2009-3043 (2.6.31)
+ - CVE-2009-3002 (2.6.31)
+ - CVE-2009-3001 (2.6.31)
+ - CVE-2009-2844 (2.6.31)
+ - CVE-2009-2695 (2.6.31)
+ - CVE-2009-2691 (2.6.31)
[ dann frazier ]
* n_tty: Fix echo race
* [ia64] Stop disabling CONFIG_HOTPLUG_CPU, which was blocking
CONFIG_KEXEC from being enabled
+ * [hppa] Disable CONFIG_AB3100_CORE, it fails to build
- -- maximilian attems <maks@debian.org> Thu, 18 Jun 2009 23:50:56 +0200
+ -- maximilian attems <maks@debian.org> Sun, 04 Oct 2009 20:27:05 +0200
+
+linux-2.6 (2.6.30-8) unstable; urgency=low
+
+ [ Martin Michlmayr ]
+ * Disable SYS_HAS_EARLY_PRINTK on SGI IP22 to work around a hang
+ during bootup (Closes: #507557)
+ * module: workaround duplicate section names to fix a panic on
+ boot on hppa (Closes: #545229).
+ * Add stable release 2.6.30.8.
+ * [armel/kirkwood] Add Marvell OpenRD-Client support (Dhaval Vasa).
+ Thanks Stefan Kaltenbrunner.
+
+ -- Bastian Blank <waldi@debian.org> Fri, 25 Sep 2009 23:47:56 +0200
+
+linux-2.6 (2.6.30-7) unstable; urgency=low
+
+ [ Martin Michlmayr ]
+ * [armel/kirkwood] Enable eSATA on QNAP TS-219P (John Holland).
+ * [armel/kirkwood] Marvell OpenRD-Base board support (Dhaval Vasa).
+ * [armel/kirkwood] Initialise SATA for OpenRD-Base (Ron Lee).
+ * [armel/kirkwood] Enable SATA_AHCI.
+
+ [ Ben Hutchings ]
+ * qla1280: Release spinlock when requesting firmware (closes: #543244)
+ * r128: Add test for initialisation to all ioctls that require it
+ (closes: #541630)
+ * [i386] Fix crash in text_poke_early() on 486-class processors
+ (Closes: #515982)
+ * intel-agp: Fix cache flushing on i8xx chipsets, avoiding graphics
+ corruption and GPU lock-ups (Closes: #541307)
+ * [i386] Allow ISA memory range uncacheable mapping requests
+ (Closes: #538159)
+ * Fix idle time in /proc/uptime (Closes: #545981)
+ * e1000, e1000e, igb, ixgb, ixgbe, sfc: Fix initial link state
+ (Closes: #546041)
+
+ [ Bastian Blank ]
+ * Add stable release 2.6.30.5.
+ - drm/i915: Hook connector to encoder during load detection
+ (fixes tv/vga detect) (Closes: #522358)
+ * Add stable release 2.6.30.6.
+ - x86: Fix lock-up on SMP Pentium Pro, Pentium 2, Pentium 3, and
+ Athlon MP systems (Closes: #542551)
+ - NET: Fix information leaks from getsockname() (CVE-2009-3001,
+ CVE-2009-3002)
+ - iwl3945/rfkill: Reenable radio when hardware switch turned back on
+ (Closes: #530554)
+ * Bump ABI to 2.
+ * Apply missing fixes:
+ - block: fix sg SG_DXFER_TO_FROM_DEV regression.
+ - sched_rt: Fix overload bug on rt group scheduling.
+ * Add stable release 2.6.30.7.
+ * [sparc] Disable PROM console. (closes: #525958)
+
+ -- Bastian Blank <waldi@debian.org> Wed, 16 Sep 2009 17:23:13 +0200
+
+linux-2.6 (2.6.30-6) unstable; urgency=high
+
+ [ Bastian Blank ]
+ * Set default low address space protection to default value.
+
+ [ dann frazier ]
+ * Make sock_sendpage() use kernel_sendpage() (CVE-2009-2692)
+ * flat: fix uninitialized ptr with shared libs
+ * [parisc] isa-eeprom - Fix loff_t usage
+ * do_sigaltstack: avoid copying 'stack_t' as a structure to user space
+ * posix-timers: Fix oops in clock_nanosleep() with CLOCK_MONOTONIC_RAW
+
+ -- Bastian Blank <waldi@debian.org> Sat, 15 Aug 2009 15:50:02 +0200
+
+linux-2.6 (2.6.30-5) unstable; urgency=high
+
+ [ maximilian attems ]
+ * Add stable release 2.6.30.4.
+ - cifs: fix regression with O_EXCL creates and optimize away lookup
+ (closes: #536426)
+ - ecryptfs: check tag 11 literal data buffer size (CVE-2009-2406)
+ - ecryptfs: check tag 3 package encrypted size (CVE-2009-2407)
+ * Ignore nf_conntrack ABI change.
+ * Revert to keep ABI:
+ - block: fix sg SG_DXFER_TO_FROM_DEV regression.
+ - sched_rt: Fix overload bug on rt group scheduling.
+ * [hppa]: Ignore any ABI (broke on 2.6.30.2).
+
+ -- maximilian attems <maks@debian.org> Mon, 03 Aug 2009 12:08:56 +0200
+
+linux-2.6 (2.6.30-4) unstable; urgency=low
+
+ [ Bastian Blank ]
+ * Add stable release 2.6.30.2.
+ * Fix pci access in x86 startup code. (closes: #537783)
+ * Ignore ABI changes.
+ * Include all plattform and mach specific headers on arm.
+
+ [ maximilian attems ]
+ * Add stable release 2.6.30.3.
+
+ -- Bastian Blank <waldi@debian.org> Thu, 30 Jul 2009 11:55:11 +0200
+
+linux-2.6 (2.6.30-3) unstable; urgency=low
+
+ [ Bastian Blank ]
+ * Build-Depend against cpio. (closes: #536196)
+
+ [ Martin Michlmayr ]
+ * [arm] Export __cpu_flush_dcache_page.
+
+ [ Aurelien Jarno ]
+ * [ia64] Fix asm/fpu.h includes.
+
+ [ dann frazier ]
+ * Fix NULL pointer dereference in tun_chr_pool() (CVE-2009-1897)
+ * personality: fix PER_CLEAR_ON_SETID (CVE-2009-1895)
+ * Add -fno-delete-null-pointer-checks to CFLAGS
+
+ -- Bastian Blank <waldi@debian.org> Sat, 18 Jul 2009 10:00:01 +0200
+
+linux-2.6 (2.6.30-2) unstable; urgency=low
+
+ [ dann frazier ]
+ * [powerpc] Use generic rtc (closes: #535354)
+ * [parisc]
+ - ensure broadcast tlb purge runs single threaded
+ - fix ldcw inline assembler
+ (closes: #535844)
+
+ [ Bastian Blank ]
+ * Add stable release 2.6.30.1:
+ - KVM: x86: check for cr3 validity in ioctl_set_sregs (CVE-2009-2287)
+ - ALSA: intel8x0 - Fix PCM position craziness (closes: #533780)
+ - ide-cd: prevent null pointer deref via cdrom_newpc_intr (closes: #535342)
+ * Ignore ABI changes.
+
+ [ maximilian attems ]
+ * [alpha] Add upstream smp buildfix.
+ * [parisc] Disable vxge and niu.
+
+ -- Bastian Blank <waldi@debian.org> Tue, 07 Jul 2009 14:45:43 +0200
linux-2.6 (2.6.30-1) unstable; urgency=low
@@ -866,7 +1574,7 @@ linux-2.6 (2.6.26-9) unstable; urgency=low
[ Stephen R. Marenka ]
* [m68k] add patches to fix atari ethernec per Michael Schmitz:
atari-ethernec-IRQF_SHARED.diff and atari-ethernec-fixes.diff.
- * [m68k] add mac-esp-fix-for-quadras-with-two-esp-chips.diff to fix macs
+ * [m68k] add mac-esp-fix-for-quadras-with-two-esp-chips.diff to fix macs
with dual scsi busses and a problem with xorg, per Finn Thain.
* [m68k] add atari-atari_keyb_init-operator-precedence.diff per
Michael Schmitz.
@@ -1311,7 +2019,7 @@ linux-2.6 (2.6.26-1) unstable; urgency=low
* [x86]: Enable dma engine. (closes: #473331)
* [ppc64]: Enable IBMEBUS and EHEA. (closes: #484888)
* topconfig: Enable PROFILING across all flavours. (closes: #484885)
- * 486: enable OLPC support thanks Andres Salomon for merge.
+ * 486: enable OLPC support thanks Andres Salomon for merge.
Kconfig variable patch by Robert Millan (closes: #485063).
* Add request_firmware patch for ip2.
* Add request_firmware patch for acenic. (closes: #284221)
@@ -1644,7 +2352,7 @@ linux-2.6 (2.6.25-4) unstable; urgency=low
* Backport netfilter: Move linux/types.h inclusions outside of #ifdef
__KERNEL__. (closes: #479899)
* types.h: don't expose struct ustat to userspace. (closes: #429064)
-
+
[ Bastian Blank ]
* Fix ABI changes from: ipvs: fix oops in backup for fwmark conn templates
@@ -1734,7 +2442,7 @@ linux-2.6 (2.6.25-2) unstable; urgency=low
* [m68k] Add patches for 2.6.25.
* [m68k] Disable EXT4DEV_FS for now.
* [m68k] Enable SCSI_MAC_ESP for mac.
-
+
[ Ian Campbell ]
* [x86]: Enable Xen guest support in all i386 flavours.
@@ -5786,7 +6494,7 @@ linux-2.6 (2.6.15-1) unstable; urgency=low
- net-ipconntrack-nat-fix.patch: merged upstream after 2.6.14 release
- net-nf_queue-oops.patch: merged upstream after 2.6.14 release
- qla2xxx-removed.patch: obsolete
- * Drop M386 support remains from the i386 386 flavour: built with M486
+ * Drop M386 support remains from the i386 386 flavour: built with M486
from now on.
[ Martin Michlmayr ]
@@ -5807,7 +6515,7 @@ linux-2.6 (2.6.15-1) unstable; urgency=low
* Drop tty-locking-fixes9.patch, which was preventing the oops during
shutdown on some sparc machines with serial console. Proper fix has
been incorporated upstream.
-
+
[ Simon Horman ]
* Enable MKISS globally (closes: #340215)
* Add recommends libc6-i686 to 686 and k7 image packages
@@ -6185,14 +6893,14 @@ linux-2.6 (2.6.13+2.6.14-rc4-0experimental.1) experimental; urgency=low
* deactivate FB_RIVA on all architectures.
* deactivate BLK_DEV_IDESCSI on all architectures.
* Added patch-2.6.13.4:
- - [SECURITY] key: plug request_key_auth memleak
+ - [SECURITY] key: plug request_key_auth memleak
See CAN-2005-3119
- [SECURITY] Fix drm 'debug' sysfs permissions
See CAN-2005-3179
- [SECURITY] Avoid 'names_cache' memory leak with CONFIG_AUDITSYSCALL
- [SPARC64] Fix userland FPU state corruption.
- BIC coding bug in Linux 2.6.13
- - [SECURITY] orinoco: Information leakage due to incorrect padding
+ - [SECURITY] orinoco: Information leakage due to incorrect padding
See CAN-2005-3180
- ieee1394/sbp2: fixes for hot-unplug and module unloading
@@ -6488,7 +7196,7 @@ linux-2.6 (2.6.12-2) unstable; urgency=low
* Added list of flavours built to common header package. (Sven Luther)
-- Bastian Blank <waldi@debian.org> Tue, 09 Aug 2005 11:12:40 +0200
-
+
linux-2.6 (2.6.12-1) unstable; urgency=low
* New upstream release:
@@ -6519,7 +7227,7 @@ linux-2.6 (2.6.12-1) unstable; urgency=low
http://www.ussg.iu.edu/hypermail/linux/kernel/0502.3/1095.html, this
is unnecessary for us) (Andres Salomon)
- sparc64-rtc-mostek.patch (merged)
- - sparc64-compat-nanoseconds.patch (merged)
+ - sparc64-compat-nanoseconds.patch (merged)
- sparc64-sunsu-init-2.6.11.patch (merged)
- sunsab-uart-update-timeout.patch (merged)
- alpha-read-trylock.patch (different version got merged)
@@ -6543,7 +7251,7 @@ linux-2.6 (2.6.12-1) unstable; urgency=low
- powerpc-mv643xx-eth-pegasos.patch (merged)
- powerpc-pmac-agp-sleep.patch (merged)
- drivers-input-serio-8042-resume.patch (merged)
-
+
* Premiere of the common-source kernel package
(Jurij Smakov, Andres Salomon)
- build all architectures out of kernel source package
@@ -6589,7 +7297,7 @@ linux-2.6 (2.6.12-1) unstable; urgency=low
- Disabled software-suspend on powerpc-smp, FTBFS, amd64/i386 only smp code.
- Rediffed and readded the G4 L2 hardware flush assist patch from Jacob Pan.
(Sven Luther)
-
+
* [sparc]
- Drop sparc32 flavour for now. sparc32 kernel is currently in the
category "too buggy for us to support". In spite of numerous efforts
@@ -6609,8 +7317,8 @@ linux-2.6 (2.6.12-1) unstable; urgency=low
(Norbert Tretkowski)
* [amd64]
- - Now using the default compiler (gcc-4.0), thus we get rid of the
- annoying MAKEFLAGS="CC=gcc-3.4" make-kpkg... invocation for third-party
+ - Now using the default compiler (gcc-4.0), thus we get rid of the
+ annoying MAKEFLAGS="CC=gcc-3.4" make-kpkg... invocation for third-party
modules.
This release lacks 64bit kernels for i386 userland; support will be
added in a later release as soon as the toolchain has stabilized again.
diff --git a/config/alpha/config b/config/alpha/config
index 7984f13..ada3400 100644
--- a/config/alpha/config
+++ b/config/alpha/config
@@ -216,8 +216,6 @@ CONFIG_SENSORS_ADM1031=m
CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_DS1621=m
CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_FSCHER=m
-CONFIG_SENSORS_FSCPOS=m
CONFIG_SENSORS_GL518SM=m
CONFIG_SENSORS_GL520SM=m
CONFIG_SENSORS_IT87=m
@@ -278,11 +276,6 @@ CONFIG_I2C_STUB=m
CONFIG_SCx200_ACB=m
##
-## file: drivers/i2c/chips/Kconfig
-##
-CONFIG_SENSORS_PCF8574=m
-
-##
## file: drivers/ide/Kconfig
##
CONFIG_IDE=m
@@ -341,10 +334,10 @@ CONFIG_INPUT_JOYSTICK=y
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_SUNKBD=m
CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_XTKBD=m
CONFIG_KEYBOARD_NEWTON=m
+CONFIG_KEYBOARD_SUNKBD=m
+CONFIG_KEYBOARD_XTKBD=m
##
## file: drivers/input/misc/Kconfig
@@ -536,7 +529,6 @@ CONFIG_RADIO_SF16FMR2=m
CONFIG_RADIO_TERRATEC=m
CONFIG_RADIO_TRUST=m
CONFIG_RADIO_TYPHOON=m
-CONFIG_RADIO_TYPHOON_PROC_FS=y
CONFIG_RADIO_ZOLTRIX=m
CONFIG_USB_DSBR=m
@@ -651,7 +643,6 @@ CONFIG_MTD_NAND=m
##
## file: drivers/net/Kconfig
##
-CONFIG_DUMMY=m
CONFIG_NET_SB1000=m
CONFIG_HAPPYMEAL=m
CONFIG_SUNGEM=m
@@ -745,15 +736,10 @@ CONFIG_ARCNET_COM20020_PCI=m
##
## file: drivers/net/hamradio/Kconfig
##
-CONFIG_BPQETHER=m
CONFIG_DMASCC=m
CONFIG_SCC=m
# CONFIG_SCC_DELAY is not set
# CONFIG_SCC_TRXECHO is not set
-CONFIG_BAYCOM_SER_FDX=m
-CONFIG_BAYCOM_SER_HDX=m
-CONFIG_BAYCOM_PAR=m
-CONFIG_YAM=m
##
## file: drivers/net/irda/Kconfig
@@ -853,11 +839,6 @@ CONFIG_PCI_HERMES=m
CONFIG_PCMCIA_HERMES=m
##
-## file: drivers/pci/Kconfig
-##
-# CONFIG_PCI_DEBUG is not set
-
-##
## file: drivers/pcmcia/Kconfig
##
CONFIG_PCCARD=m
@@ -979,19 +960,6 @@ CONFIG_USB_ATM=m
CONFIG_USB_SPEEDTOUCH=m
##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
@@ -1002,41 +970,6 @@ CONFIG_USB_SL811_HCD=m
CONFIG_USB_SL811_CS=m
##
-## file: drivers/usb/image/Kconfig
-##
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_TEST=m
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-# CONFIG_USB_STORAGE_USBAT is not set
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-
-##
## file: drivers/video/Kconfig
##
CONFIG_FB=y
@@ -1061,7 +994,6 @@ CONFIG_FB_MATROX_MYSTIQUE=y
CONFIG_FB_MATROX_G=y
CONFIG_FB_MATROX_I2C=m
CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_MATROX_MULTIHEAD=y
CONFIG_FB_RADEON=m
CONFIG_FB_RADEON_I2C=y
# CONFIG_FB_RADEON_DEBUG is not set
@@ -1105,15 +1037,11 @@ CONFIG_FONT_8x16=y
##
## file: drivers/watchdog/Kconfig
##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-CONFIG_SOFT_WATCHDOG=m
CONFIG_PCWATCHDOG=m
CONFIG_MIXCOMWD=m
CONFIG_WDT=m
CONFIG_PCIPCWATCHDOG=m
CONFIG_WDTPCI=m
-CONFIG_WDT_501_PCI=y
CONFIG_USBPCWATCHDOG=m
##
@@ -1151,7 +1079,6 @@ CONFIG_LDM_PARTITION=y
CONFIG_SGI_PARTITION=y
CONFIG_ULTRIX_PARTITION=y
CONFIG_SUN_PARTITION=y
-# CONFIG_EFI_PARTITION is not set
##
## file: init/Kconfig
@@ -1286,32 +1213,6 @@ CONFIG_SND_SSCAPE=m
CONFIG_SND_WAVEFRONT=m
##
-## file: sound/oss/Kconfig
-##
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-CONFIG_SOUND_OSS=m
-# CONFIG_SOUND_TRACEINIT is not set
-# CONFIG_SOUND_DMAP is not set
-CONFIG_SOUND_SSCAPE=m
-CONFIG_SOUND_VMIDI=m
-CONFIG_SOUND_TRIX=m
-CONFIG_SOUND_MSS=m
-CONFIG_SOUND_MPU401=m
-CONFIG_SOUND_PAS=m
-CONFIG_SOUND_PSS=m
-CONFIG_PSS_MIXER=y
-CONFIG_SOUND_SB=m
-CONFIG_SOUND_YM3812=m
-CONFIG_SOUND_UART6850=m
-CONFIG_SOUND_AEDSP16=m
-CONFIG_SC6600=y
-CONFIG_SC6600_JOY=y
-CONFIG_SC6600_CDROM=4
-CONFIG_SC6600_CDROMBASE=0x0
-CONFIG_SOUND_KAHLUA=m
-
-##
## file: sound/pci/Kconfig
##
CONFIG_SND_ALS4000=m
@@ -1344,7 +1245,7 @@ CONFIG_SND_INTEL8X0=m
CONFIG_SND_INTEL8X0M=m
CONFIG_SND_KORG1212=m
CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MIXART=m
+# CONFIG_SND_MIXART is not set
CONFIG_SND_NM256=m
CONFIG_SND_RME32=m
CONFIG_SND_RME96=m
@@ -1362,7 +1263,7 @@ CONFIG_SND_YMFPCI=m
CONFIG_SND_HDA_INTEL=m
##
-## file: sound/usb/Kconfig
+## file: unknown
##
-CONFIG_SND_USB_USX2Y=m
+CONFIG_RADIO_TYPHOON_PROC_FS=y
diff --git a/config/alpha/defines b/config/alpha/defines
index ad80e82..f6357a3 100644
--- a/config/alpha/defines
+++ b/config/alpha/defines
@@ -7,14 +7,14 @@ kernel-arch: alpha
[image]
suggests: aboot, fdutils
-[alpha-generic_base]
-class: Alpha
-longclass: DEC Alpha with extended kernel start address (Wildfire, Titan, Marvel)
+[alpha-generic_description]
+hardware: Alpha
+hardware-long: DEC Alpha systems with extended kernel start address (Wildfire, Titan, Marvel)
-[alpha-smp_base]
-class: Alpha SMP
-longclass: DEC Alpha/SMP with extended kernel start address (Wildfire, Titan, Marvel)
+[alpha-smp_description]
+hardware: Alpha SMP
+hardware-long: DEC Alpha SMP systems with extended kernel start address (Wildfire, Titan, Marvel)
-[alpha-legacy_base]
-class: Alpha Legacy
-longclass: DEC Alpha with legacy kernel start address
+[alpha-legacy_description]
+hardware: Alpha Legacy
+hardware-long: DEC Alpha systems with legacy kernel start address
diff --git a/config/alpha/vserver/defines b/config/alpha/vserver/defines
index 2d358a4..aa754a2 100644
--- a/config/alpha/vserver/defines
+++ b/config/alpha/vserver/defines
@@ -1,8 +1,8 @@
[base]
flavours: alpha
-[alpha_base]
-class: Alpha
+[alpha_description]
+hardware: Alpha
[alpha_image]
configs: alpha/config.alpha-generic
diff --git a/config/amd64/config b/config/amd64/config
deleted file mode 100644
index 13bf6eb..0000000
--- a/config/amd64/config
+++ /dev/null
@@ -1,1321 +0,0 @@
-##
-## file: crypto/Kconfig
-##
-CONFIG_CRYPTO_CRC32C_INTEL=m
-CONFIG_CRYPTO_AES_NI_INTEL=m
-
-##
-## file: drivers/ata/Kconfig
-##
-# CONFIG_PATA_SIS is not set
-
-##
-## file: drivers/atm/Kconfig
-##
-CONFIG_ATM_DRIVERS=y
-CONFIG_ATM_TCP=m
-CONFIG_ATM_LANAI=m
-CONFIG_ATM_ENI=m
-# CONFIG_ATM_ENI_DEBUG is not set
-# CONFIG_ATM_ENI_TUNE_BURST is not set
-CONFIG_ATM_FIRESTREAM=m
-CONFIG_ATM_ZATM=m
-# CONFIG_ATM_ZATM_DEBUG is not set
-CONFIG_ATM_IDT77252=m
-# CONFIG_ATM_IDT77252_DEBUG is not set
-# CONFIG_ATM_IDT77252_RCV_ALL is not set
-CONFIG_ATM_AMBASSADOR=m
-# CONFIG_ATM_AMBASSADOR_DEBUG is not set
-CONFIG_ATM_HORIZON=m
-# CONFIG_ATM_HORIZON_DEBUG is not set
-# CONFIG_ATM_FORE200E_USE_TASKLET is not set
-CONFIG_ATM_FORE200E_TX_RETRY=16
-CONFIG_ATM_FORE200E_DEBUG=0
-CONFIG_ATM_HE=m
-CONFIG_ATM_HE_USE_SUNI=y
-
-##
-## file: drivers/auxdisplay/Kconfig
-##
-CONFIG_KS0108=m
-CONFIG_KS0108_PORT=0x378
-CONFIG_KS0108_DELAY=2
-
-##
-## file: drivers/block/Kconfig
-##
-CONFIG_BLK_DEV_FD=m
-CONFIG_PARIDE=m
-CONFIG_BLK_CPQ_DA=m
-CONFIG_BLK_CPQ_CISS_DA=m
-CONFIG_CISS_SCSI_TAPE=y
-CONFIG_BLK_DEV_DAC960=m
-CONFIG_BLK_DEV_UMEM=m
-CONFIG_BLK_DEV_SX8=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM_SIZE=65536
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-
-##
-## file: drivers/block/paride/Kconfig
-##
-CONFIG_PARIDE_PD=m
-CONFIG_PARIDE_PCD=m
-CONFIG_PARIDE_PF=m
-CONFIG_PARIDE_PT=m
-CONFIG_PARIDE_PG=m
-CONFIG_PARIDE_ATEN=m
-CONFIG_PARIDE_BPCK=m
-CONFIG_PARIDE_COMM=m
-CONFIG_PARIDE_DSTR=m
-CONFIG_PARIDE_FIT2=m
-CONFIG_PARIDE_FIT3=m
-CONFIG_PARIDE_EPAT=m
-# CONFIG_PARIDE_EPATC8 is not set
-CONFIG_PARIDE_EPIA=m
-CONFIG_PARIDE_FRIQ=m
-CONFIG_PARIDE_FRPW=m
-CONFIG_PARIDE_KBIC=m
-CONFIG_PARIDE_KTTI=m
-CONFIG_PARIDE_ON20=m
-CONFIG_PARIDE_ON26=m
-
-##
-## file: drivers/bluetooth/Kconfig
-##
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-
-##
-## file: drivers/char/Kconfig
-##
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL_NONSTANDARD=y
-CONFIG_ROCKETPORT=m
-CONFIG_CYCLADES=m
-# CONFIG_CYZ_INTR is not set
-CONFIG_MOXA_INTELLIO=m
-CONFIG_ISI=m
-CONFIG_SYNCLINK=m
-CONFIG_SYNCLINKMP=m
-CONFIG_N_HDLC=m
-CONFIG_SPECIALIX=m
-CONFIG_SX=m
-CONFIG_RIO=m
-CONFIG_RIO_OLDPCI=y
-CONFIG_STALDRV=y
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-CONFIG_PPDEV=m
-CONFIG_NVRAM=m
-CONFIG_DTLK=m
-CONFIG_R3964=m
-CONFIG_APPLICOM=m
-CONFIG_MWAVE=m
-CONFIG_RAW_DRIVER=m
-CONFIG_MAX_RAW_DEVS=256
-CONFIG_HPET=y
-CONFIG_HPET_MMAP=y
-CONFIG_HANGCHECK_TIMER=m
-
-##
-## file: drivers/char/agp/Kconfig
-##
-CONFIG_AGP=y
-CONFIG_AGP_AMD64=y
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_VIA=m
-
-##
-## file: drivers/char/ipmi/Kconfig
-##
-CONFIG_IPMI_HANDLER=m
-# CONFIG_IPMI_PANIC_EVENT is not set
-CONFIG_IPMI_DEVICE_INTERFACE=m
-CONFIG_IPMI_SI=m
-CONFIG_IPMI_WATCHDOG=m
-CONFIG_IPMI_POWEROFF=m
-
-##
-## file: drivers/cpuidle/Kconfig
-##
-CONFIG_CPU_IDLE=y
-
-##
-## file: drivers/dma/Kconfig
-##
-CONFIG_DMADEVICES=y
-CONFIG_INTEL_IOATDMA=m
-CONFIG_NET_DMA=y
-
-##
-## file: drivers/firmware/Kconfig
-##
-CONFIG_EDD=m
-# CONFIG_EDD_OFF is not set
-CONFIG_EFI_VARS=m
-CONFIG_DELL_RBU=m
-CONFIG_DCDBAS=m
-CONFIG_DMIID=y
-CONFIG_ISCSI_IBFT_FIND=y
-CONFIG_ISCSI_IBFT=y
-
-##
-## file: drivers/gpu/drm/Kconfig
-##
-CONFIG_DRM=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_I810=m
-## choice: Intel 830M, 845G, 852GM, 855GM, 865G
-CONFIG_DRM_I830=m
-CONFIG_DRM_I915=m
-# CONFIG_DRM_I915_KMS is not set
-## end choice
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-
-##
-## file: drivers/hid/usbhid/Kconfig
-##
-CONFIG_USB_HID=m
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-
-##
-## file: drivers/hwmon/Kconfig
-##
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_K8TEMP=m
-CONFIG_SENSORS_ASB100=m
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_FSCHER=m
-CONFIG_SENSORS_FSCPOS=m
-CONFIG_SENSORS_GL518SM=m
-CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_PC87360=m
-CONFIG_SENSORS_PCF8591=m
-CONFIG_SENSORS_SIS5595=m
-CONFIG_SENSORS_SMSC47M1=m
-CONFIG_SENSORS_SMSC47B397=m
-CONFIG_SENSORS_VIA686A=m
-CONFIG_SENSORS_W83781D=m
-CONFIG_SENSORS_W83L785TS=m
-CONFIG_SENSORS_W83627HF=m
-CONFIG_SENSORS_HDAPS=m
-
-##
-## file: drivers/i2c/Kconfig
-##
-CONFIG_I2C=m
-CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/busses/Kconfig
-##
-CONFIG_I2C_ALI1535=m
-CONFIG_I2C_ALI1563=m
-CONFIG_I2C_ALI15X3=m
-CONFIG_I2C_AMD756=m
-CONFIG_I2C_AMD756_S4882=m
-CONFIG_I2C_AMD8111=m
-CONFIG_I2C_I801=m
-CONFIG_I2C_PIIX4=m
-CONFIG_I2C_NFORCE2=m
-CONFIG_I2C_SIS5595=m
-CONFIG_I2C_SIS630=m
-CONFIG_I2C_SIS96X=m
-CONFIG_I2C_VIA=m
-CONFIG_I2C_VIAPRO=m
-CONFIG_I2C_PARPORT=m
-CONFIG_I2C_PARPORT_LIGHT=m
-CONFIG_I2C_VOODOO3=m
-CONFIG_I2C_PCA_ISA=m
-CONFIG_I2C_STUB=m
-CONFIG_SCx200_ACB=m
-
-##
-## file: drivers/i2c/chips/Kconfig
-##
-CONFIG_SENSORS_PCF8574=m
-
-##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=m
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=m
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEACPI=y
-CONFIG_IDE_GENERIC=m
-CONFIG_BLK_DEV_CMD640=y
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-CONFIG_BLK_DEV_IDEPNP=y
-# CONFIG_IDEPCI_PCIBUS_ORDER is not set
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=m
-CONFIG_BLK_DEV_OPTI621=m
-CONFIG_BLK_DEV_RZ1000=m
-CONFIG_BLK_DEV_AEC62XX=m
-CONFIG_BLK_DEV_ALI15X3=m
-CONFIG_BLK_DEV_AMD74XX=m
-CONFIG_BLK_DEV_ATIIXP=m
-CONFIG_BLK_DEV_CMD64X=m
-CONFIG_BLK_DEV_TRIFLEX=m
-CONFIG_BLK_DEV_CY82C693=m
-CONFIG_BLK_DEV_CS5520=m
-CONFIG_BLK_DEV_CS5530=m
-CONFIG_BLK_DEV_HPT366=m
-CONFIG_BLK_DEV_SC1200=m
-CONFIG_BLK_DEV_PIIX=m
-CONFIG_BLK_DEV_NS87415=m
-CONFIG_BLK_DEV_PDC202XX_OLD=m
-CONFIG_BLK_DEV_PDC202XX_NEW=m
-CONFIG_BLK_DEV_SVWKS=m
-CONFIG_BLK_DEV_SIIMAGE=m
-CONFIG_BLK_DEV_SIS5513=m
-CONFIG_BLK_DEV_SLC90E66=m
-CONFIG_BLK_DEV_TRM290=m
-CONFIG_BLK_DEV_VIA82CXXX=m
-
-##
-## file: drivers/input/gameport/Kconfig
-##
-CONFIG_GAMEPORT=m
-CONFIG_GAMEPORT_NS558=m
-CONFIG_GAMEPORT_L4=m
-CONFIG_GAMEPORT_EMU10K1=m
-CONFIG_GAMEPORT_FM801=m
-
-##
-## file: drivers/input/joystick/Kconfig
-##
-CONFIG_INPUT_JOYSTICK=y
-
-##
-## file: drivers/input/keyboard/Kconfig
-##
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_SUNKBD=m
-CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_XTKBD=m
-CONFIG_KEYBOARD_NEWTON=m
-
-##
-## file: drivers/input/misc/Kconfig
-##
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_PCSPKR=m
-CONFIG_INPUT_APANEL=m
-CONFIG_INPUT_ATLAS_BTNS=m
-CONFIG_INPUT_UINPUT=m
-
-##
-## file: drivers/input/mouse/Kconfig
-##
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=m
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-CONFIG_MOUSE_SERIAL=m
-CONFIG_MOUSE_APPLETOUCH=m
-CONFIG_MOUSE_BCM5974=m
-CONFIG_MOUSE_VSXXXAA=m
-
-##
-## file: drivers/input/serio/Kconfig
-##
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=m
-CONFIG_SERIO_CT82C710=m
-CONFIG_SERIO_PARKBD=m
-CONFIG_SERIO_PCIPS2=m
-CONFIG_SERIO_LIBPS2=y
-CONFIG_SERIO_RAW=m
-
-##
-## file: drivers/input/tablet/Kconfig
-##
-CONFIG_INPUT_TABLET=y
-CONFIG_TABLET_USB_ACECAD=m
-CONFIG_TABLET_USB_AIPTEK=m
-CONFIG_TABLET_USB_GTCO=m
-CONFIG_TABLET_USB_KBTAB=m
-CONFIG_TABLET_USB_WACOM=m
-
-##
-## file: drivers/input/touchscreen/Kconfig
-##
-CONFIG_INPUT_TOUCHSCREEN=y
-
-##
-## file: drivers/isdn/Kconfig
-##
-CONFIG_ISDN=y
-CONFIG_ISDN_I4L=m
-CONFIG_ISDN_CAPI=m
-
-##
-## file: drivers/isdn/capi/Kconfig
-##
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
-CONFIG_ISDN_CAPI_CAPI20=m
-CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
-CONFIG_ISDN_CAPI_CAPIDRV=m
-
-##
-## file: drivers/isdn/hardware/avm/Kconfig
-##
-CONFIG_CAPI_AVM=y
-CONFIG_ISDN_DRV_AVMB1_B1PCI=m
-CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
-CONFIG_ISDN_DRV_AVMB1_T1PCI=m
-CONFIG_ISDN_DRV_AVMB1_C4=m
-
-##
-## file: drivers/isdn/hardware/eicon/Kconfig
-##
-CONFIG_CAPI_EICON=y
-CONFIG_ISDN_DIVAS=m
-CONFIG_ISDN_DIVAS_BRIPCI=y
-CONFIG_ISDN_DIVAS_PRIPCI=y
-CONFIG_ISDN_DIVAS_DIVACAPI=m
-CONFIG_ISDN_DIVAS_USERIDI=m
-CONFIG_ISDN_DIVAS_MAINT=m
-
-##
-## file: drivers/isdn/hisax/Kconfig
-##
-CONFIG_ISDN_DRV_HISAX=m
-CONFIG_HISAX_EURO=y
-CONFIG_DE_AOC=y
-# CONFIG_HISAX_NO_SENDCOMPLETE is not set
-# CONFIG_HISAX_NO_LLC is not set
-# CONFIG_HISAX_NO_KEYPAD is not set
-CONFIG_HISAX_1TR6=y
-CONFIG_HISAX_NI1=y
-CONFIG_HISAX_MAX_CARDS=8
-CONFIG_HISAX_16_3=y
-CONFIG_HISAX_TELESPCI=y
-CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_FRITZPCI=y
-CONFIG_HISAX_AVM_A1_PCMCIA=y
-CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_NETJET=y
-CONFIG_HISAX_NETJET_U=y
-CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_BKM_A4T=y
-CONFIG_HISAX_SCT_QUADRO=y
-CONFIG_HISAX_GAZEL=y
-CONFIG_HISAX_HFC_PCI=y
-CONFIG_HISAX_W6692=y
-CONFIG_HISAX_HFC_SX=y
-CONFIG_HISAX_ENTERNOW_PCI=y
-# CONFIG_HISAX_DEBUG is not set
-CONFIG_HISAX_SEDLBAUER_CS=m
-CONFIG_HISAX_ELSA_CS=m
-CONFIG_HISAX_AVM_A1_CS=m
-CONFIG_HISAX_TELES_CS=m
-CONFIG_HISAX_ST5481=m
-CONFIG_HISAX_HFCUSB=m
-CONFIG_HISAX_HFC4S8S=m
-CONFIG_HISAX_FRITZ_PCIPNP=m
-
-##
-## file: drivers/isdn/i4l/Kconfig
-##
-CONFIG_ISDN_PPP=y
-CONFIG_ISDN_PPP_VJ=y
-CONFIG_ISDN_MPP=y
-CONFIG_IPPP_FILTER=y
-CONFIG_ISDN_PPP_BSDCOMP=m
-CONFIG_ISDN_AUDIO=y
-CONFIG_ISDN_TTY_FAX=y
-CONFIG_ISDN_X25=y
-CONFIG_ISDN_DIVERSION=m
-
-##
-## file: drivers/leds/Kconfig
-##
-CONFIG_LEDS_CLEVO_MAIL=m
-
-##
-## file: drivers/macintosh/Kconfig
-##
-CONFIG_MACINTOSH_DRIVERS=y
-CONFIG_MAC_EMUMOUSEBTN=y
-
-##
-## file: drivers/media/Kconfig
-##
-CONFIG_DVB_CORE=m
-
-##
-## file: drivers/media/radio/Kconfig
-##
-CONFIG_RADIO_GEMTEK_PCI=m
-CONFIG_RADIO_MAXIRADIO=m
-CONFIG_RADIO_MAESTRO=m
-CONFIG_USB_DSBR=m
-
-##
-## file: drivers/message/i2o/Kconfig
-##
-CONFIG_I2O=m
-CONFIG_I2O_CONFIG=m
-CONFIG_I2O_BLOCK=m
-CONFIG_I2O_SCSI=m
-CONFIG_I2O_PROC=m
-
-##
-## file: drivers/misc/Kconfig
-##
-CONFIG_IBM_ASM=m
-CONFIG_PHANTOM=m
-CONFIG_HP_ILO=m
-CONFIG_DELL_LAPTOP=m
-
-##
-## file: drivers/mmc/Kconfig
-##
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-
-##
-## file: drivers/mmc/card/Kconfig
-##
-CONFIG_MMC_BLOCK=m
-
-##
-## file: drivers/mtd/Kconfig
-##
-CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=m
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_BLOCK_RO=m
-CONFIG_FTL=m
-CONFIG_NFTL=m
-CONFIG_NFTL_RW=y
-CONFIG_INFTL=m
-
-##
-## file: drivers/mtd/chips/Kconfig
-##
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=m
-CONFIG_MTD_CFI_AMDSTD=m
-CONFIG_MTD_CFI_STAA=m
-CONFIG_MTD_RAM=m
-CONFIG_MTD_ROM=m
-CONFIG_MTD_ABSENT=m
-
-##
-## file: drivers/mtd/devices/Kconfig
-##
-CONFIG_MTD_PMC551=m
-# CONFIG_MTD_PMC551_BUGFIX is not set
-# CONFIG_MTD_PMC551_DEBUG is not set
-CONFIG_MTD_SLRAM=m
-CONFIG_MTD_PHRAM=m
-CONFIG_MTD_MTDRAM=m
-CONFIG_MTDRAM_TOTAL_SIZE=4096
-CONFIG_MTDRAM_ERASE_SIZE=128
-CONFIG_MTD_BLOCK2MTD=m
-CONFIG_MTD_DOC2000=m
-CONFIG_MTD_DOC2001=m
-CONFIG_MTD_DOC2001PLUS=m
-# CONFIG_MTD_DOCPROBE_ADVANCED is not set
-CONFIG_MTD_DOCPROBE_ADDRESS=0
-
-##
-## file: drivers/mtd/maps/Kconfig
-##
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_PHYSMAP=m
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-CONFIG_MTD_PHYSMAP_START=0x8000000
-CONFIG_MTD_PHYSMAP_LEN=0x4000000
-CONFIG_MTD_PHYSMAP_BANKWIDTH=2
-CONFIG_MTD_SC520CDP=m
-CONFIG_MTD_NETSC520=m
-CONFIG_MTD_TS5500=m
-CONFIG_MTD_SBC_GXX=m
-# CONFIG_MTD_AMD76XROM is not set
-# CONFIG_MTD_ICHXROM is not set
-# CONFIG_MTD_SCB2_FLASH is not set
-CONFIG_MTD_NETtel=m
-CONFIG_MTD_DILNETPC=m
-CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000
-# CONFIG_MTD_L440GX is not set
-CONFIG_MTD_PCI=m
-
-##
-## file: drivers/mtd/nand/Kconfig
-##
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-CONFIG_MTD_NAND_DISKONCHIP=m
-# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
-# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
-CONFIG_MTD_NAND_PLATFORM=m
-
-##
-## file: drivers/net/Kconfig
-##
-CONFIG_DUMMY=m
-CONFIG_NET_SB1000=m
-CONFIG_HAPPYMEAL=m
-CONFIG_SUNGEM=m
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_HP100=m
-CONFIG_NET_PCI=y
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_B44=m
-CONFIG_FORCEDETH=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-# CONFIG_8139TOO_PIO is not set
-CONFIG_8139TOO_TUNE_TWISTER=y
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_VIA_RHINE=m
-# CONFIG_VIA_RHINE_MMIO is not set
-CONFIG_ATP=m
-CONFIG_DE600=m
-CONFIG_DE620=m
-CONFIG_FDDI=y
-CONFIG_SKFP=m
-CONFIG_HIPPI=y
-CONFIG_ROADRUNNER=m
-# CONFIG_ROADRUNNER_LARGE_RINGS is not set
-CONFIG_PLIP=m
-CONFIG_NET_FC=y
-# CONFIG_NETPOLL_TRAP is not set
-
-##
-## file: drivers/net/arcnet/Kconfig
-##
-CONFIG_ARCNET=m
-CONFIG_ARCNET_1201=m
-CONFIG_ARCNET_1051=m
-CONFIG_ARCNET_RAW=m
-CONFIG_ARCNET_CAP=m
-CONFIG_ARCNET_COM90xx=m
-CONFIG_ARCNET_COM90xxIO=m
-CONFIG_ARCNET_RIM_I=m
-CONFIG_ARCNET_COM20020=m
-CONFIG_ARCNET_COM20020_PCI=m
-
-##
-## file: drivers/net/hamradio/Kconfig
-##
-CONFIG_BPQETHER=m
-CONFIG_BAYCOM_SER_FDX=m
-CONFIG_BAYCOM_SER_HDX=m
-CONFIG_BAYCOM_PAR=m
-CONFIG_YAM=m
-
-##
-## file: drivers/net/irda/Kconfig
-##
-CONFIG_IRTTY_SIR=m
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_NSC_FIR=m
-CONFIG_WINBOND_FIR=m
-CONFIG_SMC_IRCC_FIR=m
-CONFIG_ALI_FIR=m
-CONFIG_VLSI_FIR=m
-CONFIG_VIA_FIR=m
-
-##
-## file: drivers/net/pcmcia/Kconfig
-##
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-CONFIG_PCMCIA_AXNET=m
-CONFIG_ARCNET_COM20020_CS=m
-
-##
-## file: drivers/net/tulip/Kconfig
-##
-CONFIG_NET_TULIP=y
-CONFIG_DE2104X=m
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_PCMCIA_XIRCOM=m
-
-##
-## file: drivers/net/wan/Kconfig
-##
-CONFIG_WAN=y
-CONFIG_LANMEDIA=m
-CONFIG_PCI200SYN=m
-CONFIG_WANXL=m
-CONFIG_PC300=m
-CONFIG_PC300_MLPPP=y
-CONFIG_FARSYNC=m
-CONFIG_DSCC4=m
-CONFIG_DSCC4_PCISYNC=y
-CONFIG_DSCC4_PCI_RST=y
-CONFIG_DLCI=m
-CONFIG_DLCI_MAX=8
-CONFIG_CYCLADES_SYNC=m
-CONFIG_CYCLOMX_X25=y
-CONFIG_LAPBETHER=m
-CONFIG_X25_ASY=m
-CONFIG_SBNI=m
-# CONFIG_SBNI_MULTILINE is not set
-
-##
-## file: drivers/net/wireless/Kconfig
-##
-CONFIG_WLAN_PRE80211=y
-CONFIG_STRIP=m
-CONFIG_PCMCIA_WAVELAN=m
-CONFIG_PCMCIA_NETWAVE=m
-CONFIG_WLAN_80211=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-CONFIG_USB_ZD1201=m
-
-##
-## file: drivers/net/wireless/ipw2x00/Kconfig
-##
-# CONFIG_IPW2100 is not set
-
-##
-## file: drivers/net/wireless/orinoco/Kconfig
-##
-CONFIG_HERMES=m
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-CONFIG_PCI_HERMES=m
-CONFIG_PCMCIA_HERMES=m
-
-##
-## file: drivers/pci/Kconfig
-##
-CONFIG_PCI_MSI=y
-# CONFIG_PCI_DEBUG is not set
-CONFIG_HT_IRQ=y
-
-##
-## file: drivers/pci/hotplug/Kconfig
-##
-CONFIG_HOTPLUG_PCI=m
-CONFIG_HOTPLUG_PCI_FAKE=m
-CONFIG_HOTPLUG_PCI_ACPI=m
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
-CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
-CONFIG_HOTPLUG_PCI_SHPC=m
-
-##
-## file: drivers/pci/pcie/Kconfig
-##
-CONFIG_PCIEPORTBUS=y
-CONFIG_HOTPLUG_PCI_PCIE=m
-
-##
-## file: drivers/pci/pcie/aer/Kconfig
-##
-CONFIG_PCIEAER=y
-
-##
-## file: drivers/pcmcia/Kconfig
-##
-CONFIG_PCCARD=m
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
-CONFIG_CARDBUS=y
-CONFIG_YENTA=m
-CONFIG_PD6729=m
-CONFIG_I82092=m
-CONFIG_TCIC=m
-
-##
-## file: drivers/pnp/Kconfig
-##
-CONFIG_PNP=y
-
-##
-## file: drivers/power/Kconfig
-##
-CONFIG_POWER_SUPPLY=m
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-CONFIG_PDA_POWER=m
-CONFIG_BATTERY_DS2760=m
-
-##
-## file: drivers/rtc/Kconfig
-##
-CONFIG_RTC_DRV_CMOS=y
-
-##
-## file: drivers/scsi/Kconfig
-##
-CONFIG_SCSI_DPT_I2O=m
-CONFIG_SCSI_ARCMSR=m
-CONFIG_SCSI_BUSLOGIC=m
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_EATA=m
-CONFIG_SCSI_EATA_TAGGED_QUEUE=y
-CONFIG_SCSI_EATA_LINKED_COMMANDS=y
-CONFIG_SCSI_EATA_MAX_TAGS=16
-CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_GDTH=m
-CONFIG_SCSI_IPS=m
-CONFIG_SCSI_INITIO=m
-CONFIG_SCSI_INIA100=m
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_IPR=m
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP is not set
-CONFIG_SCSI_QLOGIC_1280=m
-CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_DEBUG=m
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx
-##
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
-
-##
-## file: drivers/scsi/megaraid/Kconfig.megaraid
-##
-CONFIG_MEGARAID_NEWGEN=y
-CONFIG_MEGARAID_MM=m
-CONFIG_MEGARAID_MAILBOX=m
-CONFIG_MEGARAID_LEGACY=m
-
-##
-## file: drivers/scsi/pcmcia/Kconfig
-##
-CONFIG_PCMCIA_FDOMAIN=m
-CONFIG_PCMCIA_QLOGIC=m
-CONFIG_PCMCIA_SYM53C500=m
-
-##
-## file: drivers/serial/Kconfig
-##
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-CONFIG_SERIAL_8250_RSA=y
-CONFIG_SERIAL_JSM=m
-
-##
-## file: drivers/telephony/Kconfig
-##
-CONFIG_PHONE=m
-CONFIG_PHONE_IXJ=m
-CONFIG_PHONE_IXJ_PCMCIA=m
-
-##
-## file: drivers/thermal/Kconfig
-##
-CONFIG_THERMAL=m
-CONFIG_THERMAL_HWMON=y
-
-##
-## file: drivers/usb/Kconfig
-##
-CONFIG_USB=y
-CONFIG_USB_USS720=m
-
-##
-## file: drivers/usb/atm/Kconfig
-##
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-
-##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-
-##
-## file: drivers/usb/host/Kconfig
-##
-CONFIG_USB_EHCI_HCD=m
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_HCD_SSB is not set
-CONFIG_USB_UHCI_HCD=m
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-##
-## file: drivers/usb/image/Kconfig
-##
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_TEST=m
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-
-##
-## file: drivers/video/Kconfig
-##
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-CONFIG_FB_CIRRUS=m
-CONFIG_FB_PM2=m
-CONFIG_FB_PM2_FIFO_DISCONNECT=y
-CONFIG_FB_CYBER2000=m
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-CONFIG_FB_VGA16=m
-CONFIG_FB_UVESA=m
-CONFIG_FB_VESA=y
-CONFIG_FB_EFI=y
-CONFIG_FB_N411=m
-CONFIG_FB_HGA=m
-# CONFIG_FB_HGA_ACCEL is not set
-CONFIG_FB_S1D13XXX=m
-CONFIG_FB_NVIDIA=m
-# CONFIG_FB_NVIDIA_I2C is not set
-CONFIG_FB_NVIDIA_BACKLIGHT=y
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_RIVA_I2C is not set
-# CONFIG_FB_RIVA_DEBUG is not set
-CONFIG_FB_LE80578=m
-CONFIG_FB_CARILLO_RANCH=m
-CONFIG_FB_INTEL=m
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_I2C=m
-CONFIG_FB_MATROX_MULTIHEAD=y
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-CONFIG_FB_RADEON_BACKLIGHT=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY128_BACKLIGHT=y
-CONFIG_FB_ATY=m
-CONFIG_FB_ATY_CT=y
-# CONFIG_FB_ATY_GENERIC_LCD is not set
-CONFIG_FB_ATY_GX=y
-CONFIG_FB_ATY_BACKLIGHT=y
-CONFIG_FB_SAVAGE=m
-# CONFIG_FB_SAVAGE_I2C is not set
-# CONFIG_FB_SAVAGE_ACCEL is not set
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
-CONFIG_FB_NEOMAGIC=m
-CONFIG_FB_KYRO=m
-CONFIG_FB_VOODOO1=m
-CONFIG_FB_TRIDENT=m
-CONFIG_FB_VIRTUAL=m
-
-##
-## file: drivers/video/backlight/Kconfig
-##
-CONFIG_BACKLIGHT_PROGEAR=m
-
-##
-## file: drivers/video/console/Kconfig
-##
-CONFIG_VGA_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-##
-## file: drivers/video/geode/Kconfig
-##
-# CONFIG_FB_GEODE is not set
-
-##
-## file: drivers/video/logo/Kconfig
-##
-# CONFIG_LOGO is not set
-
-##
-## file: drivers/watchdog/Kconfig
-##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-CONFIG_SOFT_WATCHDOG=m
-CONFIG_ACQUIRE_WDT=m
-CONFIG_ADVANTECH_WDT=m
-CONFIG_ALIM1535_WDT=m
-CONFIG_ALIM7101_WDT=m
-CONFIG_SC520_WDT=m
-CONFIG_EUROTECH_WDT=m
-CONFIG_IB700_WDT=m
-CONFIG_IBMASR=m
-CONFIG_WAFER_WDT=m
-CONFIG_I6300ESB_WDT=m
-CONFIG_IT8712F_WDT=m
-CONFIG_HP_WATCHDOG=m
-CONFIG_SC1200_WDT=m
-CONFIG_60XX_WDT=m
-CONFIG_SBC8360_WDT=m
-CONFIG_CPU5_WDT=m
-CONFIG_W83627HF_WDT=m
-CONFIG_W83877F_WDT=m
-CONFIG_W83977F_WDT=m
-CONFIG_MACHZ_WDT=m
-CONFIG_PCIPCWATCHDOG=m
-CONFIG_WDTPCI=m
-CONFIG_WDT_501_PCI=y
-CONFIG_USBPCWATCHDOG=m
-
-##
-## file: fs/partitions/Kconfig
-##
-CONFIG_ACORN_PARTITION=y
-# CONFIG_ACORN_PARTITION_CUMANA is not set
-# CONFIG_ACORN_PARTITION_EESOX is not set
-CONFIG_ACORN_PARTITION_ICS=y
-# CONFIG_ACORN_PARTITION_ADFS is not set
-# CONFIG_ACORN_PARTITION_POWERTEC is not set
-CONFIG_ACORN_PARTITION_RISCIX=y
-CONFIG_OSF_PARTITION=y
-CONFIG_AMIGA_PARTITION=y
-CONFIG_ATARI_PARTITION=y
-CONFIG_MAC_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-CONFIG_MINIX_SUBPARTITION=y
-CONFIG_SOLARIS_X86_PARTITION=y
-CONFIG_UNIXWARE_DISKLABEL=y
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-CONFIG_SGI_PARTITION=y
-CONFIG_ULTRIX_PARTITION=y
-CONFIG_SUN_PARTITION=y
-CONFIG_EFI_PARTITION=y
-
-##
-## file: kernel/trace/Kconfig
-##
-# CONFIG_MMIOTRACE is not set
-
-##
-## file: lib/Kconfig.debug
-##
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_FRAME_POINTER is not set
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-
-##
-## file: mm/Kconfig.debug
-##
-# CONFIG_DEBUG_PAGEALLOC is not set
-
-##
-## file: net/atm/Kconfig
-##
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-
-##
-## file: net/ax25/Kconfig
-##
-CONFIG_HAMRADIO=y
-CONFIG_AX25=m
-# CONFIG_AX25_DAMA_SLAVE is not set
-CONFIG_NETROM=m
-CONFIG_ROSE=m
-
-##
-## file: net/decnet/Kconfig
-##
-CONFIG_DECNET=m
-# CONFIG_DECNET_ROUTER is not set
-
-##
-## file: net/decnet/netfilter/Kconfig
-##
-CONFIG_DECNET_NF_GRABULATOR=m
-
-##
-## file: net/econet/Kconfig
-##
-CONFIG_ECONET=m
-CONFIG_ECONET_AUNUDP=y
-CONFIG_ECONET_NATIVE=y
-
-##
-## file: net/ipx/Kconfig
-##
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-
-##
-## file: net/irda/Kconfig
-##
-CONFIG_IRDA=m
-# CONFIG_IRDA_ULTRA is not set
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-##
-## file: net/irda/ircomm/Kconfig
-##
-CONFIG_IRCOMM=m
-
-##
-## file: net/irda/irlan/Kconfig
-##
-CONFIG_IRLAN=m
-
-##
-## file: net/irda/irnet/Kconfig
-##
-CONFIG_IRNET=m
-
-##
-## file: net/lapb/Kconfig
-##
-CONFIG_LAPB=m
-
-##
-## file: net/wanrouter/Kconfig
-##
-CONFIG_WAN_ROUTER=m
-
-##
-## file: net/x25/Kconfig
-##
-CONFIG_X25=m
-
-##
-## file: sound/drivers/Kconfig
-##
-CONFIG_SND_DUMMY=m
-CONFIG_SND_VIRMIDI=m
-CONFIG_SND_MTPAV=m
-CONFIG_SND_SERIAL_U16550=m
-CONFIG_SND_MPU401=m
-
-##
-## file: sound/oss/Kconfig
-##
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-CONFIG_SOUND_OSS=m
-# CONFIG_SOUND_TRACEINIT is not set
-# CONFIG_SOUND_DMAP is not set
-CONFIG_SOUND_SSCAPE=m
-CONFIG_SOUND_VMIDI=m
-CONFIG_SOUND_TRIX=m
-CONFIG_SOUND_MSS=m
-CONFIG_SOUND_MPU401=m
-CONFIG_SOUND_PAS=m
-CONFIG_SOUND_PSS=m
-CONFIG_PSS_MIXER=y
-CONFIG_SOUND_SB=m
-CONFIG_SOUND_YM3812=m
-CONFIG_SOUND_UART6850=m
-CONFIG_SOUND_AEDSP16=m
-CONFIG_SC6600=y
-CONFIG_SC6600_JOY=y
-CONFIG_SC6600_CDROM=4
-CONFIG_SC6600_CDROMBASE=0x0
-CONFIG_SOUND_KAHLUA=m
-
-##
-## file: sound/pci/Kconfig
-##
-CONFIG_SND_ALS4000=m
-CONFIG_SND_ALI5451=m
-CONFIG_SND_ATIIXP=m
-CONFIG_SND_ATIIXP_MODEM=m
-CONFIG_SND_AU8810=m
-CONFIG_SND_AU8820=m
-CONFIG_SND_AU8830=m
-CONFIG_SND_AZT3328=m
-CONFIG_SND_BT87X=m
-# CONFIG_SND_BT87X_OVERCLOCK is not set
-CONFIG_SND_CA0106=m
-CONFIG_SND_CMIPCI=m
-CONFIG_SND_CS4281=m
-CONFIG_SND_CS46XX=m
-CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_EMU10K1X=m
-CONFIG_SND_ENS1370=m
-CONFIG_SND_ENS1371=m
-CONFIG_SND_ES1938=m
-CONFIG_SND_ES1968=m
-CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_HDSP=m
-CONFIG_SND_ICE1712=m
-CONFIG_SND_ICE1724=m
-CONFIG_SND_INTEL8X0=m
-CONFIG_SND_INTEL8X0M=m
-CONFIG_SND_KORG1212=m
-CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MIXART=m
-CONFIG_SND_NM256=m
-CONFIG_SND_RME32=m
-CONFIG_SND_RME96=m
-CONFIG_SND_RME9652=m
-CONFIG_SND_SONICVIBES=m
-CONFIG_SND_TRIDENT=m
-CONFIG_SND_VIA82XX=m
-CONFIG_SND_VIA82XX_MODEM=m
-CONFIG_SND_VX222=m
-CONFIG_SND_YMFPCI=m
-
-##
-## file: sound/pci/hda/Kconfig
-##
-CONFIG_SND_HDA_INTEL=m
-
-##
-## file: sound/usb/Kconfig
-##
-CONFIG_SND_USB_USX2Y=m
-
diff --git a/config/amd64/config.amd64 b/config/amd64/config.amd64
deleted file mode 100644
index 9384270..0000000
--- a/config/amd64/config.amd64
+++ /dev/null
@@ -1,11 +0,0 @@
-##
-## file: drivers/char/Kconfig
-##
-CONFIG_DIGIEPCA=m
-
-##
-## file: drivers/video/Kconfig
-##
-CONFIG_FB_MATROX_G=y
-CONFIG_FB_MATROX_MAVEN=m
-
diff --git a/config/amd64/defines b/config/amd64/defines
index 739b2c2..dbd2e80 100644
--- a/config/amd64/defines
+++ b/config/amd64/defines
@@ -1,6 +1,5 @@
[base]
featuresets:
- openvz
vserver
xen
flavours:
@@ -10,15 +9,13 @@ kernel-arch: x86
[image]
configs:
kernelarch-x86/config
- amd64/config
suggests: grub | lilo
-[amd64_base]
-class: AMD64
-longclass: all 64bit single- and multiprocessor AMD and Intel
+[amd64_description]
+hardware: 64-bit PCs
+hardware-long: PCs with AMD64 or Intel 64 processors
+parts: xen
[amd64_image]
configs:
kernelarch-x86/config-arch-64
- amd64/config.amd64
-desc-parts: xen
diff --git a/config/arm/config b/config/arm/config
deleted file mode 100644
index 423bfaa..0000000
--- a/config/arm/config
+++ /dev/null
@@ -1,68 +0,0 @@
-##
-## file: arch/arm/Kconfig
-##
-## choice: ARM system type
-# CONFIG_ARCH_REALVIEW is not set
-## end choice
-# CONFIG_AEABI is not set
-
-##
-## file: drivers/ieee1394/Kconfig
-##
-# CONFIG_IEEE1394 is not set
-
-##
-## file: drivers/input/Kconfig
-##
-# CONFIG_INPUT_FF_MEMLESS is not set
-
-##
-## file: drivers/net/wireless/ipw2x00/Kconfig
-##
-# CONFIG_IPW2100 is not set
-
-##
-## file: drivers/scsi/Kconfig
-##
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_HPTIOP is not set
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic79xx
-##
-# CONFIG_SCSI_AIC79XX is not set
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx
-##
-# CONFIG_SCSI_AIC7XXX is not set
-
-##
-## file: drivers/scsi/aic94xx/Kconfig
-##
-# CONFIG_SCSI_AIC94XX is not set
-
-##
-## file: drivers/scsi/megaraid/Kconfig.megaraid
-##
-# CONFIG_MEGARAID_SAS is not set
-
-##
-## file: drivers/scsi/qla2xxx/Kconfig
-##
-# CONFIG_SCSI_QLA_FC is not set
-
-##
-## file: drivers/scsi/qla4xxx/Kconfig
-##
-# CONFIG_SCSI_QLA_ISCSI is not set
-
-##
-## file: net/econet/Kconfig
-##
-CONFIG_ECONET_AUNUDP=y
-CONFIG_ECONET_NATIVE=y
-
diff --git a/config/arm/config.footbridge b/config/arm/config.footbridge
deleted file mode 100644
index a15ee66..0000000
--- a/config/arm/config.footbridge
+++ /dev/null
@@ -1,1468 +0,0 @@
-##
-## file: arch/arm/Kconfig
-##
-## choice: ARM system type
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-CONFIG_ARCH_FOOTBRIDGE=y
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-## end choice
-CONFIG_PCI=y
-# CONFIG_SMP is not set
-# CONFIG_PREEMPT is not set
-CONFIG_LEDS=y
-CONFIG_LEDS_TIMER=y
-# CONFIG_LEDS_CPU is not set
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=""
-# CONFIG_XIP_KERNEL is not set
-CONFIG_FPE_NWFPE=y
-CONFIG_FPE_NWFPE_XP=y
-# CONFIG_FPE_FASTFPE is not set
-# CONFIG_ARTHUR is not set
-
-##
-## file: arch/arm/Kconfig.debug
-##
-CONFIG_DEBUG_USER=y
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-
-##
-## file: arch/arm/mach-footbridge/Kconfig
-##
-CONFIG_ARCH_CATS=y
-CONFIG_ARCH_PERSONAL_SERVER=y
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-CONFIG_ARCH_EBSA285_HOST=y
-CONFIG_ARCH_NETWINDER=y
-
-##
-## file: arch/arm/mm/Kconfig
-##
-CONFIG_CPU_SA110=y
-
-##
-## file: drivers/ata/Kconfig
-##
-# CONFIG_ATA is not set
-
-##
-## file: drivers/atm/Kconfig
-##
-# CONFIG_ATM_DRIVERS is not set
-# CONFIG_ATM_TCP is not set
-# CONFIG_ATM_LANAI is not set
-# CONFIG_ATM_ENI is not set
-# CONFIG_ATM_FIRESTREAM is not set
-# CONFIG_ATM_ZATM is not set
-# CONFIG_ATM_NICSTAR is not set
-# CONFIG_ATM_IDT77252 is not set
-# CONFIG_ATM_AMBASSADOR is not set
-# CONFIG_ATM_HORIZON is not set
-# CONFIG_ATM_IA is not set
-# CONFIG_ATM_HE is not set
-
-##
-## file: drivers/block/Kconfig
-##
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-CONFIG_PARIDE=m
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
-# CONFIG_CDROM_PKTCDVD is not set
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-
-##
-## file: drivers/block/paride/Kconfig
-##
-CONFIG_PARIDE_PD=m
-CONFIG_PARIDE_PCD=m
-CONFIG_PARIDE_PF=m
-CONFIG_PARIDE_PT=m
-CONFIG_PARIDE_PG=m
-CONFIG_PARIDE_ATEN=m
-CONFIG_PARIDE_BPCK=m
-# CONFIG_PARIDE_BPCK6 is not set
-CONFIG_PARIDE_COMM=m
-CONFIG_PARIDE_DSTR=m
-CONFIG_PARIDE_FIT2=m
-CONFIG_PARIDE_FIT3=m
-CONFIG_PARIDE_EPAT=m
-# CONFIG_PARIDE_EPATC8 is not set
-CONFIG_PARIDE_EPIA=m
-CONFIG_PARIDE_FRIQ=m
-CONFIG_PARIDE_FRPW=m
-CONFIG_PARIDE_KBIC=m
-CONFIG_PARIDE_KTTI=m
-CONFIG_PARIDE_ON20=m
-CONFIG_PARIDE_ON26=m
-
-##
-## file: drivers/bluetooth/Kconfig
-##
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-
-##
-## file: drivers/char/Kconfig
-##
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL_NONSTANDARD=y
-# CONFIG_ROCKETPORT is not set
-# CONFIG_CYCLADES is not set
-# CONFIG_DIGIEPCA is not set
-# CONFIG_ESPSERIAL is not set
-# CONFIG_MOXA_INTELLIO is not set
-# CONFIG_MOXA_SMARTIO is not set
-# CONFIG_ISI is not set
-# CONFIG_SYNCLINK is not set
-# CONFIG_SYNCLINKMP is not set
-# CONFIG_N_HDLC is not set
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-# CONFIG_SX is not set
-# CONFIG_RIO is not set
-# CONFIG_STALDRV is not set
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-CONFIG_DS1620=y
-CONFIG_NWBUTTON=y
-CONFIG_NWBUTTON_REBOOT=y
-CONFIG_NWFLASH=m
-CONFIG_NVRAM=m
-CONFIG_RTC=y
-# CONFIG_DTLK is not set
-# CONFIG_APPLICOM is not set
-
-##
-## file: drivers/char/ipmi/Kconfig
-##
-# CONFIG_IPMI_HANDLER is not set
-
-##
-## file: drivers/char/pcmcia/Kconfig
-##
-# CONFIG_SYNCLINK_CS is not set
-
-##
-## file: drivers/char/tpm/Kconfig
-##
-# CONFIG_TCG_TPM is not set
-
-##
-## file: drivers/firewire/Kconfig
-##
-# CONFIG_FIREWIRE is not set
-
-##
-## file: drivers/gpu/drm/Kconfig
-##
-# CONFIG_DRM is not set
-
-##
-## file: drivers/hid/usbhid/Kconfig
-##
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDDEV is not set
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-
-##
-## file: drivers/hwmon/Kconfig
-##
-CONFIG_HWMON=y
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-CONFIG_SENSORS_ADM9240=m
-# CONFIG_SENSORS_ASB100 is not set
-CONFIG_SENSORS_ATXP1=m
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-CONFIG_SENSORS_W83627EHF=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/Kconfig
-##
-CONFIG_I2C=m
-# CONFIG_I2C_CHARDEV is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/busses/Kconfig
-##
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_PARPORT is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_VOODOO3 is not set
-# CONFIG_I2C_ELEKTOR is not set
-# CONFIG_I2C_PCA_ISA is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_SCx200_ACB is not set
-
-##
-## file: drivers/i2c/chips/Kconfig
-##
-# CONFIG_SENSORS_PCF8574 is not set
-CONFIG_SENSORS_PCA9539=m
-CONFIG_SENSORS_MAX6875=m
-
-##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=y
-CONFIG_IDE_GD_ATA=y
-# CONFIG_BLK_DEV_IDECS is not set
-CONFIG_BLK_DEV_IDECD=m
-# CONFIG_BLK_DEV_IDETAPE is not set
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_IDEPNP is not set
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=m
-CONFIG_BLK_DEV_OPTI621=m
-CONFIG_BLK_DEV_AEC62XX=m
-CONFIG_BLK_DEV_ALI15X3=m
-# CONFIG_BLK_DEV_AMD74XX is not set
-CONFIG_BLK_DEV_CMD64X=m
-CONFIG_BLK_DEV_TRIFLEX=m
-CONFIG_BLK_DEV_CY82C693=m
-CONFIG_BLK_DEV_CS5520=m
-CONFIG_BLK_DEV_CS5530=m
-CONFIG_BLK_DEV_HPT366=m
-CONFIG_BLK_DEV_SC1200=m
-CONFIG_BLK_DEV_PIIX=m
-CONFIG_BLK_DEV_NS87415=m
-CONFIG_BLK_DEV_PDC202XX_OLD=m
-CONFIG_BLK_DEV_PDC202XX_NEW=m
-CONFIG_BLK_DEV_SVWKS=m
-CONFIG_BLK_DEV_SIIMAGE=m
-CONFIG_BLK_DEV_SL82C105=y
-# CONFIG_BLK_DEV_SLC90E66 is not set
-CONFIG_BLK_DEV_TRM290=m
-CONFIG_BLK_DEV_VIA82CXXX=m
-# CONFIG_BLK_DEV_4DRIVES is not set
-# CONFIG_BLK_DEV_ALI14XX is not set
-# CONFIG_BLK_DEV_DTC2278 is not set
-# CONFIG_BLK_DEV_HT6560B is not set
-# CONFIG_BLK_DEV_QD65XX is not set
-# CONFIG_BLK_DEV_UMC8672 is not set
-
-##
-## file: drivers/input/Kconfig
-##
-# CONFIG_INPUT_JOYDEV is not set
-
-##
-## file: drivers/input/gameport/Kconfig
-##
-# CONFIG_GAMEPORT is not set
-
-##
-## file: drivers/input/joystick/Kconfig
-##
-# CONFIG_INPUT_JOYSTICK is not set
-
-##
-## file: drivers/input/keyboard/Kconfig
-##
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-
-##
-## file: drivers/input/misc/Kconfig
-##
-# CONFIG_INPUT_MISC is not set
-
-##
-## file: drivers/input/mouse/Kconfig
-##
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_INPORT is not set
-# CONFIG_MOUSE_LOGIBM is not set
-# CONFIG_MOUSE_PC110PAD is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-
-##
-## file: drivers/input/serio/Kconfig
-##
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-
-##
-## file: drivers/input/touchscreen/Kconfig
-##
-# CONFIG_INPUT_TOUCHSCREEN is not set
-
-##
-## file: drivers/isdn/Kconfig
-##
-# CONFIG_ISDN is not set
-
-##
-## file: drivers/md/Kconfig
-##
-CONFIG_MD=y
-
-##
-## file: drivers/media/Kconfig
-##
-CONFIG_VIDEO_DEV=m
-
-##
-## file: drivers/media/radio/Kconfig
-##
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-# CONFIG_USB_DSBR is not set
-
-##
-## file: drivers/media/video/Kconfig
-##
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_W9966 is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_MXB is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_STV680 is not set
-
-##
-## file: drivers/media/video/bt8xx/Kconfig
-##
-# CONFIG_VIDEO_BT848 is not set
-
-##
-## file: drivers/media/video/cx88/Kconfig
-##
-# CONFIG_VIDEO_CX88 is not set
-
-##
-## file: drivers/media/video/pwc/Kconfig
-##
-# CONFIG_USB_PWC is not set
-
-##
-## file: drivers/media/video/saa7134/Kconfig
-##
-# CONFIG_VIDEO_SAA7134_ALSA is not set
-
-##
-## file: drivers/media/video/sn9c102/Kconfig
-##
-# CONFIG_USB_SN9C102 is not set
-
-##
-## file: drivers/media/video/usbvideo/Kconfig
-##
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-
-##
-## file: drivers/media/video/zoran/Kconfig
-##
-# CONFIG_VIDEO_ZORAN is not set
-
-##
-## file: drivers/message/fusion/Kconfig
-##
-CONFIG_FUSION=y
-CONFIG_FUSION_SPI=m
-CONFIG_FUSION_FC=m
-CONFIG_FUSION_SAS=m
-CONFIG_FUSION_MAX_SGE=40
-CONFIG_FUSION_CTL=m
-
-##
-## file: drivers/message/i2o/Kconfig
-##
-# CONFIG_I2O is not set
-
-##
-## file: drivers/mmc/Kconfig
-##
-# CONFIG_MMC is not set
-
-##
-## file: drivers/mtd/Kconfig
-##
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_PARTITIONS is not set
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-
-##
-## file: drivers/mtd/chips/Kconfig
-##
-CONFIG_MTD_CFI=y
-CONFIG_MTD_JEDECPROBE=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_STAA=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_XIP is not set
-
-##
-## file: drivers/mtd/devices/Kconfig
-##
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-##
-## file: drivers/mtd/maps/Kconfig
-##
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_DC21285=y
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PLATRAM is not set
-
-##
-## file: drivers/mtd/nand/Kconfig
-##
-# CONFIG_MTD_NAND is not set
-
-##
-## file: drivers/mtd/onenand/Kconfig
-##
-# CONFIG_MTD_ONENAND_GENERIC is not set
-
-##
-## file: drivers/net/Kconfig
-##
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_NET_SB1000 is not set
-CONFIG_NET_ETHERNET=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_EL1 is not set
-# CONFIG_EL2 is not set
-# CONFIG_ELPLUS is not set
-# CONFIG_EL16 is not set
-# CONFIG_EL3 is not set
-# CONFIG_3C515 is not set
-CONFIG_VORTEX=y
-# CONFIG_TYPHOON is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_ISA is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_AC3200 is not set
-# CONFIG_APRICOT is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_CS89x0 is not set
-# CONFIG_E100 is not set
-# CONFIG_FEALNX is not set
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-# CONFIG_8139TOO_PIO is not set
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_SUNDANCE_MMIO is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_VIA_RHINE_MMIO is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_VIA_VELOCITY is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-# CONFIG_BNX2X is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-# CONFIG_NET_FC is not set
-# CONFIG_NETPOLL_TRAP is not set
-
-##
-## file: drivers/net/appletalk/Kconfig
-##
-# CONFIG_ATALK is not set
-
-##
-## file: drivers/net/arcnet/Kconfig
-##
-# CONFIG_ARCNET is not set
-
-##
-## file: drivers/net/irda/Kconfig
-##
-# CONFIG_IRTTY_SIR is not set
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-# CONFIG_NSC_FIR is not set
-CONFIG_WINBOND_FIR=m
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-# CONFIG_VIA_FIR is not set
-
-##
-## file: drivers/net/pcmcia/Kconfig
-##
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-CONFIG_PCMCIA_AXNET=m
-
-##
-## file: drivers/net/phy/Kconfig
-##
-CONFIG_PHYLIB=m
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-
-##
-## file: drivers/net/tokenring/Kconfig
-##
-# CONFIG_TR is not set
-
-##
-## file: drivers/net/tulip/Kconfig
-##
-CONFIG_NET_TULIP=y
-CONFIG_DE2104X=m
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_ULI526X=m
-CONFIG_PCMCIA_XIRCOM=m
-
-##
-## file: drivers/net/wan/Kconfig
-##
-# CONFIG_WAN is not set
-
-##
-## file: drivers/net/wireless/Kconfig
-##
-CONFIG_STRIP=m
-CONFIG_ARLAN=m
-CONFIG_WAVELAN=m
-CONFIG_PCMCIA_WAVELAN=m
-CONFIG_PCMCIA_NETWAVE=m
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_AIRO=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-# CONFIG_USB_ZD1201 is not set
-
-##
-## file: drivers/net/wireless/orinoco/Kconfig
-##
-CONFIG_HERMES=m
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-CONFIG_PCI_HERMES=m
-CONFIG_PCMCIA_HERMES=m
-
-##
-## file: drivers/pci/Kconfig
-##
-# CONFIG_PCI_DEBUG is not set
-
-##
-## file: drivers/pcmcia/Kconfig
-##
-# CONFIG_PCCARD is not set
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
-CONFIG_CARDBUS=y
-CONFIG_YENTA=m
-CONFIG_PD6729=m
-CONFIG_I82092=m
-CONFIG_I82365=m
-CONFIG_TCIC=m
-
-##
-## file: drivers/pnp/Kconfig
-##
-CONFIG_PNP=y
-
-##
-## file: drivers/pnp/isapnp/Kconfig
-##
-CONFIG_ISAPNP=y
-
-##
-## file: drivers/scsi/Kconfig
-##
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_MULTI_LUN=y
-CONFIG_SCSI_CONSTANTS=y
-CONFIG_SCSI_LOGGING=y
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_7000FASST=m
-# CONFIG_SCSI_ACARD is not set
-CONFIG_SCSI_AHA152X=m
-CONFIG_SCSI_AHA1542=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX_OLD=m
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_PIO is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic79xx
-##
-CONFIG_SCSI_AIC79XX=m
-CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-CONFIG_AIC79XX_DEBUG_ENABLE=y
-CONFIG_AIC79XX_DEBUG_MASK=0
-CONFIG_AIC79XX_REG_PRETTY_PRINT=y
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx
-##
-CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-CONFIG_AIC7XXX_DEBUG_ENABLE=y
-CONFIG_AIC7XXX_DEBUG_MASK=0
-CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
-
-##
-## file: drivers/scsi/megaraid/Kconfig.megaraid
-##
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_MM is not set
-# CONFIG_MEGARAID_LEGACY is not set
-CONFIG_MEGARAID_SAS=m
-
-##
-## file: drivers/scsi/pcmcia/Kconfig
-##
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-##
-## file: drivers/serial/Kconfig
-##
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-CONFIG_SERIAL_21285=y
-CONFIG_SERIAL_21285_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-
-##
-## file: drivers/usb/Kconfig
-##
-CONFIG_USB=m
-# CONFIG_USB_USS720 is not set
-
-##
-## file: drivers/usb/atm/Kconfig
-##
-# CONFIG_USB_ATM is not set
-CONFIG_USB_SPEEDTOUCH=m
-
-##
-## file: drivers/usb/class/Kconfig
-##
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-CONFIG_USB_DEBUG=y
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
-## file: drivers/usb/host/Kconfig
-##
-CONFIG_USB_EHCI_HCD=m
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-CONFIG_USB_ISP116X_HCD=m
-CONFIG_USB_OHCI_HCD=m
-CONFIG_USB_UHCI_HCD=m
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_SL811_CS is not set
-
-##
-## file: drivers/usb/image/Kconfig
-##
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_IDMOUSE is not set
-CONFIG_USB_LD=m
-# CONFIG_USB_TEST is not set
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-
-##
-## file: drivers/usb/mon/Kconfig
-##
-CONFIG_USB_MON=y
-
-##
-## file: drivers/usb/serial/Kconfig
-##
-# CONFIG_USB_SERIAL is not set
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-
-##
-## file: drivers/video/Kconfig
-##
-CONFIG_FB=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-CONFIG_FB_CIRRUS=m
-CONFIG_FB_PM2=m
-# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
-CONFIG_FB_CYBER2000=y
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_NVIDIA=m
-# CONFIG_FB_NVIDIA_I2C is not set
-CONFIG_FB_RIVA=m
-# CONFIG_FB_RIVA_I2C is not set
-# CONFIG_FB_RIVA_DEBUG is not set
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-# CONFIG_FB_MATROX_I2C is not set
-# CONFIG_FB_MATROX_MULTIHEAD is not set
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY=m
-CONFIG_FB_ATY_CT=y
-# CONFIG_FB_ATY_GENERIC_LCD is not set
-CONFIG_FB_ATY_GX=y
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SAVAGE_I2C is not set
-# CONFIG_FB_SAVAGE_ACCEL is not set
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
-CONFIG_FB_NEOMAGIC=m
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_3DFX_ACCEL is not set
-CONFIG_FB_VOODOO1=m
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_PM3 is not set
-# CONFIG_FB_VIRTUAL is not set
-
-##
-## file: drivers/video/console/Kconfig
-##
-CONFIG_VGA_CONSOLE=y
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-##
-## file: drivers/video/logo/Kconfig
-##
-# CONFIG_LOGO is not set
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-
-##
-## file: drivers/w1/Kconfig
-##
-# CONFIG_W1 is not set
-
-##
-## file: drivers/watchdog/Kconfig
-##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-CONFIG_SOFT_WATCHDOG=y
-CONFIG_21285_WATCHDOG=m
-CONFIG_977_WATCHDOG=m
-# CONFIG_PCWATCHDOG is not set
-# CONFIG_MIXCOMWD is not set
-# CONFIG_WDT is not set
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_USBPCWATCHDOG is not set
-
-##
-## file: fs/adfs/Kconfig
-##
-# CONFIG_ADFS_FS_RW is not set
-
-##
-## file: fs/affs/Kconfig
-##
-# CONFIG_AFFS_FS is not set
-
-##
-## file: fs/afs/Kconfig
-##
-# CONFIG_AFS_FS is not set
-
-##
-## file: fs/befs/Kconfig
-##
-# CONFIG_BEFS_FS is not set
-
-##
-## file: fs/bfs/Kconfig
-##
-# CONFIG_BFS_FS is not set
-
-##
-## file: fs/Kconfig.binfmt
-##
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=y
-CONFIG_BINFMT_MISC=m
-
-##
-## file: fs/coda/Kconfig
-##
-# CONFIG_CODA_FS is not set
-
-##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=y
-
-##
-## file: fs/efs/Kconfig
-##
-# CONFIG_EFS_FS is not set
-
-##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
-## file: fs/freevxfs/Kconfig
-##
-# CONFIG_VXFS_FS is not set
-
-##
-## file: fs/hfs/Kconfig
-##
-# CONFIG_HFS_FS is not set
-
-##
-## file: fs/hfsplus/Kconfig
-##
-# CONFIG_HFSPLUS_FS is not set
-
-##
-## file: fs/hpfs/Kconfig
-##
-# CONFIG_HPFS_FS is not set
-
-##
-## file: fs/jffs2/Kconfig
-##
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-
-##
-## file: fs/ncpfs/Kconfig
-##
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-
-##
-## file: fs/nfs/Kconfig
-##
-CONFIG_NFS_FS=m
-CONFIG_ROOT_NFS=y
-
-##
-## file: fs/partitions/Kconfig
-##
-CONFIG_PARTITION_ADVANCED=y
-CONFIG_ACORN_PARTITION=y
-# CONFIG_ACORN_PARTITION_CUMANA is not set
-# CONFIG_ACORN_PARTITION_EESOX is not set
-# CONFIG_ACORN_PARTITION_ICS is not set
-CONFIG_ACORN_PARTITION_ADFS=y
-# CONFIG_ACORN_PARTITION_POWERTEC is not set
-# CONFIG_ACORN_PARTITION_RISCIX is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-##
-## file: fs/qnx4/Kconfig
-##
-# CONFIG_QNX4FS_FS is not set
-
-##
-## file: fs/sysv/Kconfig
-##
-# CONFIG_SYSV_FS is not set
-
-##
-## file: fs/ufs/Kconfig
-##
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-##
-## file: init/Kconfig
-##
-CONFIG_LOG_BUF_SHIFT=14
-
-##
-## file: kernel/power/Kconfig
-##
-# CONFIG_PM is not set
-
-##
-## file: lib/Kconfig.debug
-##
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-
-##
-## file: mm/Kconfig
-##
-## choice: Memory model
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-## end choice
-
-##
-## file: net/atm/Kconfig
-##
-CONFIG_ATM=y
-# CONFIG_ATM_CLIP is not set
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-# CONFIG_ATM_LANE is not set
-CONFIG_ATM_MPOA=m
-# CONFIG_ATM_BR2684 is not set
-# CONFIG_ATM_BR2684_IPFILTER is not set
-
-##
-## file: net/ax25/Kconfig
-##
-# CONFIG_HAMRADIO is not set
-
-##
-## file: net/bluetooth/Kconfig
-##
-#. TODO
-# CONFIG_BT is not set
-
-##
-## file: net/decnet/Kconfig
-##
-# CONFIG_DECNET is not set
-# CONFIG_DECNET_ROUTER is not set
-
-##
-## file: net/econet/Kconfig
-##
-# CONFIG_ECONET is not set
-
-##
-## file: net/ipv4/Kconfig
-##
-CONFIG_IP_PNP=y
-# CONFIG_IP_PNP_DHCP is not set
-CONFIG_IP_PNP_BOOTP=y
-
-##
-## file: net/ipx/Kconfig
-##
-# CONFIG_IPX is not set
-# CONFIG_IPX_INTERN is not set
-
-##
-## file: net/irda/Kconfig
-##
-CONFIG_IRDA=m
-CONFIG_IRDA_ULTRA=y
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-##
-## file: net/irda/ircomm/Kconfig
-##
-CONFIG_IRCOMM=m
-
-##
-## file: net/irda/irlan/Kconfig
-##
-CONFIG_IRLAN=m
-
-##
-## file: net/irda/irnet/Kconfig
-##
-CONFIG_IRNET=m
-
-##
-## file: net/lapb/Kconfig
-##
-# CONFIG_LAPB is not set
-
-##
-## file: net/llc/Kconfig
-##
-# CONFIG_LLC2 is not set
-
-##
-## file: net/sunrpc/Kconfig
-##
-CONFIG_RPCSEC_GSS_KRB5=m
-
-##
-## file: net/wanrouter/Kconfig
-##
-# CONFIG_WAN_ROUTER is not set
-
-##
-## file: net/x25/Kconfig
-##
-# CONFIG_X25 is not set
-
-##
-## file: security/Kconfig
-##
-#. disabled because of size restrictions
-# CONFIG_KEYS is not set
-#. disabled because of size restrictions
-# CONFIG_SECURITY is not set
-CONFIG_SECURITY_FILE_CAPABILITIES=y
-
-##
-## file: sound/Kconfig
-##
-CONFIG_SOUND_PRIME=m
-
-##
-## file: sound/core/Kconfig
-##
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_SEQUENCER_OSS is not set
-CONFIG_SND_RTCTIMER=m
-CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
-## file: sound/drivers/Kconfig
-##
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-##
-## file: sound/isa/Kconfig
-##
-# CONFIG_SND_ADLIB is not set
-# CONFIG_SND_AD1816A is not set
-# CONFIG_SND_AD1848 is not set
-# CONFIG_SND_ALS100 is not set
-# CONFIG_SND_AZT2320 is not set
-# CONFIG_SND_CMI8330 is not set
-# CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4236 is not set
-# CONFIG_SND_DT019X is not set
-# CONFIG_SND_ES968 is not set
-# CONFIG_SND_ES1688 is not set
-# CONFIG_SND_ES18XX is not set
-# CONFIG_SND_GUSCLASSIC is not set
-# CONFIG_SND_GUSEXTREME is not set
-# CONFIG_SND_GUSMAX is not set
-# CONFIG_SND_INTERWAVE is not set
-# CONFIG_SND_INTERWAVE_STB is not set
-CONFIG_SND_OPL3SA2=m
-# CONFIG_SND_OPTI92X_AD1848 is not set
-# CONFIG_SND_OPTI92X_CS4231 is not set
-# CONFIG_SND_OPTI93X is not set
-# CONFIG_SND_MIRO is not set
-# CONFIG_SND_SB8 is not set
-# CONFIG_SND_SB16 is not set
-# CONFIG_SND_SBAWE is not set
-# CONFIG_SND_SGALAXY is not set
-# CONFIG_SND_SSCAPE is not set
-# CONFIG_SND_WAVEFRONT is not set
-
-##
-## file: sound/oss/Kconfig
-##
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-CONFIG_SOUND_OSS=m
-# CONFIG_SOUND_TRACEINIT is not set
-# CONFIG_SOUND_DMAP is not set
-# CONFIG_SOUND_SSCAPE is not set
-# CONFIG_SOUND_VMIDI is not set
-# CONFIG_SOUND_TRIX is not set
-# CONFIG_SOUND_MSS is not set
-# CONFIG_SOUND_MPU401 is not set
-# CONFIG_SOUND_PAS is not set
-# CONFIG_SOUND_PSS is not set
-# CONFIG_SOUND_SB is not set
-CONFIG_SOUND_YM3812=m
-# CONFIG_SOUND_UART6850 is not set
-# CONFIG_SOUND_AEDSP16 is not set
-CONFIG_SOUND_WAVEARTIST=m
-
-##
-## file: sound/pci/Kconfig
-##
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-# CONFIG_SND_INTEL8X0 is not set
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-
-##
-## file: sound/pci/hda/Kconfig
-##
-# CONFIG_SND_HDA_INTEL is not set
-
-##
-## file: unknown
-##
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_NO_IDLE_HZ is not set
-
diff --git a/config/arm/defines b/config/arm/defines
deleted file mode 100644
index bbf10ed..0000000
--- a/config/arm/defines
+++ /dev/null
@@ -1,58 +0,0 @@
-[base]
-flavours:
- footbridge
- iop32x
- ixp4xx
- orion5x
-kernel-arch: arm
-
-[image]
-suggests: fdutils
-
-[footbridge_image]
-suggests: nwutil
-
-[footbridge_base]
-class: Footbridge
-longclass: Footbridge based (CATS, Netwinder)
-
-[iop32x_base]
-class: IOP32x
-longclass: IOP32x based (Thecus N2100, etc)
-
-[iop32x_build]
-image-file: arch/arm/boot/zImage
-
-[iop32x_image]
-# Thecus N2100: 1441792 - 8 = 1441784
-check-size: 1441784
-
-[ixp4xx_base]
-class: IXP4xx
-longclass: IXP4xx based (Linksys NSLU2, etc)
-
-[ixp4xx_build]
-image-file: arch/arm/boot/zImage
-
-[ixp4xx_image]
-# Linksys NSLU2: 1441792 - 16 - 16 = 1441760
-check-size: 1441760
-
-[orion5x_base]
-class: Orion
-longclass: Orion 5181, 5182 and 5281 based (QNAP TS-109/TS-209, etc)
-
-[orion5x_build]
-image-file: arch/arm/boot/zImage
-
-[orion5x_image]
-recommends: uboot-mkimage
-# D-Link DNS-323: 1572864 - 8 - 64 = 1572792
-# HP Media Vault mv2120: ca 2 MB
-# QNAP TS-109/TS-209 & TS-409: 2097152 - 8 - 64 = 2097080
-check-size: 1572792
-
-[versatile_base]
-class: Versatile
-longclass: Versatile (PB, AB, Qemu)
-
diff --git a/config/armel/config b/config/armel/config
index ad1a411..04f5d7c 100644
--- a/config/armel/config
+++ b/config/armel/config
@@ -8,11 +8,27 @@ CONFIG_AEABI=y
CONFIG_OABI_COMPAT=y
##
+## file: arch/arm/Kconfig.debug
+##
+CONFIG_DEBUG_LL=y
+CONFIG_EARLY_PRINTK=y
+
+##
## file: drivers/ieee1394/Kconfig
##
# CONFIG_IEEE1394 is not set
##
+## file: drivers/net/hamradio/Kconfig
+##
+CONFIG_BPQETHER=m
+CONFIG_BAYCOM_SER_FDX=m
+CONFIG_BAYCOM_SER_HDX=m
+CONFIG_BAYCOM_PAR=m
+CONFIG_BAYCOM_EPP=m
+CONFIG_YAM=m
+
+##
## file: drivers/net/wireless/ipw2x00/Kconfig
##
# CONFIG_IPW2100 is not set
@@ -57,6 +73,15 @@ CONFIG_OABI_COMPAT=y
# CONFIG_SCSI_QLA_ISCSI is not set
##
+## file: init/Kconfig
+##
+## choice: Kernel compression mode
+# CONFIG_KERNEL_GZIP is not set
+# CONFIG_KERNEL_BZIP2 is not set
+CONFIG_KERNEL_LZMA=y
+## end choice
+
+##
## file: net/econet/Kconfig
##
CONFIG_ECONET_AUNUDP=y
diff --git a/config/arm/config.iop32x b/config/armel/config.iop32x
index 709ce63..8c75f7d 100644
--- a/config/arm/config.iop32x
+++ b/config/armel/config.iop32x
@@ -13,7 +13,6 @@
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
CONFIG_ARCH_IOP32X=y
# CONFIG_ARCH_IOP33X is not set
# CONFIG_ARCH_IXP23XX is not set
@@ -30,7 +29,6 @@ CONFIG_ARCH_IOP32X=y
# CONFIG_ARCH_OMAP is not set
## end choice
CONFIG_PCI=y
-# CONFIG_PREEMPT is not set
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE=""
@@ -43,13 +41,6 @@ CONFIG_FPE_NWFPE=y
# CONFIG_ARTHUR is not set
##
-## file: arch/arm/Kconfig.debug
-##
-#. disabled because of size restrictions
-# CONFIG_ARM_UNWIND is not set
-# CONFIG_DEBUG_USER is not set
-
-##
## file: arch/arm/mach-iop32x/Kconfig
##
CONFIG_MACH_GLANTANK=y
@@ -93,9 +84,6 @@ CONFIG_SATA_VITESSE=m
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
# CONFIG_CDROM_PKTCDVD is not set
##
@@ -149,6 +137,7 @@ CONFIG_INTEL_IOP_ADMA=y
## file: drivers/hwmon/Kconfig
##
CONFIG_HWMON=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set
@@ -159,8 +148,6 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_F71805F is not set
CONFIG_SENSORS_F75375S=y
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_IT87 is not set
@@ -186,7 +173,6 @@ CONFIG_SENSORS_F75375S=y
# CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
##
## file: drivers/i2c/Kconfig
@@ -221,13 +207,6 @@ CONFIG_I2C_IOP3XX=y
# CONFIG_I2C_STUB is not set
##
-## file: drivers/i2c/chips/Kconfig
-##
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-
-##
## file: drivers/ide/Kconfig
##
CONFIG_IDE=m
@@ -276,10 +255,10 @@ CONFIG_INPUT_JOYSTICK=y
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=m
-# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
##
## file: drivers/input/misc/Kconfig
@@ -333,27 +312,8 @@ CONFIG_LEDS_PCA9532=y
# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
##
-## file: drivers/md/Kconfig
-##
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-
-##
## file: drivers/media/Kconfig
##
-CONFIG_VIDEO_DEV=m
CONFIG_DVB_CORE=m
##
@@ -398,8 +358,8 @@ CONFIG_MTD_CMDLINE_PARTS=y
# CONFIG_MTD_AFS_PARTS is not set
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
+CONFIG_FTL=m
+CONFIG_NFTL=m
# CONFIG_INFTL is not set
# CONFIG_RFD_FTL is not set
@@ -427,8 +387,8 @@ CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_OTP is not set
CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_CFI_AMDSTD=y
-# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
CONFIG_MTD_RAM=m
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
@@ -474,12 +434,6 @@ CONFIG_MTD_NAND=m
##
## file: drivers/net/Kconfig
##
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_NET_ETHERNET=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
@@ -550,13 +504,6 @@ CONFIG_PCI_HERMES=m
##
## file: drivers/rtc/Kconfig
##
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_DRV_TEST is not set
# CONFIG_RTC_DRV_DS1672 is not set
CONFIG_RTC_DRV_RS5C372=y
# CONFIG_RTC_DRV_X1205 is not set
@@ -566,22 +513,8 @@ CONFIG_RTC_DRV_RS5C372=y
##
## file: drivers/scsi/Kconfig
##
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
# CONFIG_SCSI_ACARD is not set
##
@@ -612,19 +545,6 @@ CONFIG_USB_ATM=m
CONFIG_USB_SPEEDTOUCH=m
##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
@@ -635,16 +555,6 @@ CONFIG_USB_UHCI_HCD=m
CONFIG_USB_SL811_HCD=m
##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-
-##
## file: drivers/video/Kconfig
##
# CONFIG_FB is not set
@@ -662,9 +572,6 @@ CONFIG_USB_STORAGE=m
##
## file: drivers/watchdog/Kconfig
##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_PCIPCWATCHDOG is not set
# CONFIG_WDTPCI is not set
# CONFIG_USBPCWATCHDOG is not set
@@ -672,9 +579,7 @@ CONFIG_WATCHDOG=y
##
## file: fs/Kconfig.binfmt
##
-CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
##
## file: fs/partitions/Kconfig
@@ -712,20 +617,11 @@ CONFIG_LOG_BUF_SHIFT=14
# CONFIG_PM is not set
##
-## file: kernel/trace/Kconfig
-##
-#. disabled because of size restrictions
-# CONFIG_CONTEXT_SWITCH_TRACER is not set
-#. disabled because of size restrictions
-# CONFIG_BOOT_TRACER is not set
-#. disabled because of size restrictions
-# CONFIG_BLK_DEV_IO_TRACE is not set
-
+## file: kernel/Kconfig.preempt
##
-## file: lib/Kconfig.debug
-##
-#. disabled because of size restrictions
-# CONFIG_DEBUG_KERNEL is not set
+## choice: Preemption Model
+# CONFIG_PREEMPT is not set
+## end choice
##
## file: mm/Kconfig
@@ -809,27 +705,6 @@ CONFIG_WIRELESS_EXT=y
# CONFIG_X25 is not set
##
-## file: security/selinux/Kconfig
-##
-#. disabled because of size restrictions
-# CONFIG_SECURITY_SELINUX is not set
-
-##
-## file: sound/core/Kconfig
-##
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
## file: sound/drivers/Kconfig
##
CONFIG_SND_DUMMY=m
@@ -889,10 +764,3 @@ CONFIG_SND_RIPTIDE=m
##
# CONFIG_SND_HDA_INTEL is not set
-##
-## file: unknown
-##
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_NO_IDLE_HZ is not set
-
diff --git a/config/arm/config.ixp4xx b/config/armel/config.ixp4xx
index 6464ec7..c18a2a9 100644
--- a/config/arm/config.ixp4xx
+++ b/config/armel/config.ixp4xx
@@ -13,7 +13,6 @@
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
# CONFIG_ARCH_IXP23XX is not set
@@ -30,7 +29,6 @@ CONFIG_ARCH_IXP4XX=y
# CONFIG_ARCH_OMAP is not set
## end choice
CONFIG_PCI=y
-# CONFIG_PREEMPT is not set
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyS0,115200"
@@ -43,13 +41,6 @@ CONFIG_FPE_NWFPE=y
# CONFIG_ARTHUR is not set
##
-## file: arch/arm/Kconfig.debug
-##
-#. disabled because of size restrictions
-# CONFIG_ARM_UNWIND is not set
-# CONFIG_DEBUG_USER is not set
-
-##
## file: arch/arm/mach-ixp4xx/Kconfig
##
CONFIG_MACH_NSLU2=y
@@ -144,9 +135,6 @@ CONFIG_SATA_VIA=m
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
# CONFIG_CDROM_PKTCDVD is not set
##
@@ -193,6 +181,7 @@ CONFIG_TELCLOCK=m
## file: drivers/hwmon/Kconfig
##
CONFIG_HWMON=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
CONFIG_SENSORS_ADM1021=m
CONFIG_SENSORS_ADM1025=m
CONFIG_SENSORS_ADM1026=m
@@ -202,8 +191,6 @@ CONFIG_SENSORS_ADM9240=m
CONFIG_SENSORS_ATXP1=m
CONFIG_SENSORS_DS1621=m
# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_IT87 is not set
@@ -229,7 +216,6 @@ CONFIG_SENSORS_VT8231=m
# CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set
CONFIG_SENSORS_W83627EHF=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
##
## file: drivers/i2c/Kconfig
@@ -266,13 +252,6 @@ CONFIG_I2C_GPIO=y
# CONFIG_SCx200_ACB is not set
##
-## file: drivers/i2c/chips/Kconfig
-##
-CONFIG_SENSORS_PCF8574=m
-CONFIG_SENSORS_PCA9539=m
-CONFIG_SENSORS_MAX6875=m
-
-##
## file: drivers/ide/Kconfig
##
# CONFIG_IDE is not set
@@ -292,10 +271,10 @@ CONFIG_INPUT_JOYSTICK=y
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=m
-# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
##
## file: drivers/input/misc/Kconfig
@@ -390,8 +369,8 @@ CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
# CONFIG_MTD_AFS_PARTS is not set
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
+CONFIG_FTL=m
+CONFIG_NFTL=m
# CONFIG_INFTL is not set
CONFIG_RFD_FTL=m
@@ -419,8 +398,8 @@ CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_OTP is not set
CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
CONFIG_MTD_RAM=m
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
@@ -464,12 +443,6 @@ CONFIG_MTD_NAND=m
##
## file: drivers/net/Kconfig
##
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_NET_ETHERNET=y
# CONFIG_AX88796 is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
@@ -538,9 +511,9 @@ CONFIG_ATMEL=m
##
## file: drivers/net/wireless/hostap/Kconfig
##
-CONFIG_HOSTAP=m
+#. TODO
# CONFIG_HOSTAP_FIRMWARE is not set
-CONFIG_HOSTAP_PLX=m
+#. TODO
# CONFIG_HOSTAP_PCI is not set
##
@@ -569,13 +542,6 @@ CONFIG_PCI_HERMES=m
##
## file: drivers/rtc/Kconfig
##
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_DRV_TEST is not set
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
CONFIG_RTC_DRV_ISL1208=y
@@ -586,22 +552,8 @@ CONFIG_RTC_DRV_PCF8563=y
##
## file: drivers/scsi/Kconfig
##
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_AACRAID is not set
@@ -616,7 +568,6 @@ CONFIG_SCSI_SAS_ATTRS=m
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_PPA is not set
# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_MVSAS is not set
# CONFIG_SCSI_STEX is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
@@ -624,7 +575,6 @@ CONFIG_SCSI_SAS_ATTRS=m
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_SRP is not set
##
@@ -650,6 +600,11 @@ CONFIG_SCSI_SAS_ATTRS=m
# CONFIG_MEGARAID_SAS is not set
##
+## file: drivers/scsi/mvsas/Kconfig
+##
+# CONFIG_SCSI_MVSAS is not set
+
+##
## file: drivers/scsi/qla2xxx/Kconfig
##
# CONFIG_SCSI_QLA_FC is not set
@@ -687,19 +642,6 @@ CONFIG_USB_ATM=m
CONFIG_USB_SPEEDTOUCH=m
##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
@@ -710,19 +652,6 @@ CONFIG_USB_UHCI_HCD=m
CONFIG_USB_SL811_HCD=m
##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_STORAGE_ALAUDA=y
-
-##
## file: drivers/video/Kconfig
##
# CONFIG_FB is not set
@@ -736,9 +665,6 @@ CONFIG_USB_STORAGE_ALAUDA=y
##
## file: drivers/watchdog/Kconfig
##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_SOFT_WATCHDOG is not set
CONFIG_IXP4XX_WATCHDOG=m
# CONFIG_PCIPCWATCHDOG is not set
# CONFIG_WDTPCI is not set
@@ -747,9 +673,7 @@ CONFIG_IXP4XX_WATCHDOG=m
##
## file: fs/Kconfig.binfmt
##
-CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
##
## file: fs/partitions/Kconfig
@@ -787,20 +711,11 @@ CONFIG_LOG_BUF_SHIFT=14
# CONFIG_PM is not set
##
-## file: kernel/trace/Kconfig
-##
-#. disabled because of size restrictions
-# CONFIG_CONTEXT_SWITCH_TRACER is not set
-#. disabled because of size restrictions
-# CONFIG_BOOT_TRACER is not set
-#. disabled because of size restrictions
-# CONFIG_BLK_DEV_IO_TRACE is not set
-
+## file: kernel/Kconfig.preempt
##
-## file: lib/Kconfig.debug
-##
-#. disabled because of size restrictions
-# CONFIG_DEBUG_KERNEL is not set
+## choice: Preemption Model
+# CONFIG_PREEMPT is not set
+## end choice
##
## file: mm/Kconfig
@@ -879,25 +794,6 @@ CONFIG_WAN_ROUTER=m
CONFIG_X25=m
##
-## file: security/selinux/Kconfig
-##
-#. disabled because of size restrictions
-# CONFIG_SECURITY_SELINUX is not set
-
-##
-## file: sound/core/Kconfig
-##
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
## file: sound/drivers/Kconfig
##
CONFIG_SND_DUMMY=m
@@ -955,10 +851,3 @@ CONFIG_SND_PCXHR=m
##
# CONFIG_SND_HDA_INTEL is not set
-##
-## file: unknown
-##
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_NO_IDLE_HZ is not set
-
diff --git a/config/armel/config.kirkwood b/config/armel/config.kirkwood
index bb56e3d..2bc0ed8 100644
--- a/config/armel/config.kirkwood
+++ b/config/armel/config.kirkwood
@@ -11,9 +11,9 @@
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_MXC is not set
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
@@ -22,10 +22,9 @@
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_L7200 is not set
CONFIG_ARCH_KIRKWOOD=y
+# CONFIG_ARCH_ORION5X is not set
# CONFIG_ARCH_KS8695 is not set
# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_ORION5X is not set
# CONFIG_ARCH_PNX4008 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_RPC is not set
@@ -60,6 +59,10 @@ CONFIG_MACH_RD88F6192_NAS=y
CONFIG_MACH_RD88F6281=y
CONFIG_MACH_SHEEVAPLUG=y
CONFIG_MACH_TS219=y
+CONFIG_MACH_TS41X=y
+CONFIG_MACH_OPENRD=y
+CONFIG_MACH_OPENRD_BASE=y
+CONFIG_MACH_OPENRD_CLIENT=y
##
## file: arch/arm/mm/Kconfig
@@ -73,7 +76,7 @@ CONFIG_ARM_THUMB=y
## file: drivers/ata/Kconfig
##
CONFIG_ATA=m
-# CONFIG_SATA_AHCI is not set
+CONFIG_SATA_AHCI=m
# CONFIG_SATA_SIL24 is not set
CONFIG_ATA_SFF=y
# CONFIG_SATA_SVW is not set
@@ -146,6 +149,11 @@ CONFIG_BT_HCIVHCI=m
CONFIG_CPU_IDLE=y
##
+## file: drivers/crypto/Kconfig
+##
+CONFIG_CRYPTO_DEV_MV_CESA=m
+
+##
## file: drivers/dma/Kconfig
##
CONFIG_DMADEVICES=y
@@ -153,6 +161,11 @@ CONFIG_MV_XOR=y
# CONFIG_NET_DMA is not set
##
+## file: drivers/gpio/Kconfig
+##
+CONFIG_GPIO_SYSFS=y
+
+##
## file: drivers/gpu/drm/Kconfig
##
# CONFIG_DRM is not set
@@ -189,6 +202,97 @@ CONFIG_KEYBOARD_GPIO=m
CONFIG_INPUT_TOUCHSCREEN=y
##
+## file: drivers/isdn/Kconfig
+##
+CONFIG_ISDN=y
+CONFIG_ISDN_I4L=m
+CONFIG_ISDN_CAPI=m
+
+##
+## file: drivers/isdn/capi/Kconfig
+##
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
+CONFIG_ISDN_CAPI_CAPIDRV=m
+
+##
+## file: drivers/isdn/hardware/avm/Kconfig
+##
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+
+##
+## file: drivers/isdn/hardware/eicon/Kconfig
+##
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+
+##
+## file: drivers/isdn/hisax/Kconfig
+##
+CONFIG_ISDN_DRV_HISAX=m
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+# CONFIG_HISAX_NO_SENDCOMPLETE is not set
+# CONFIG_HISAX_NO_LLC is not set
+# CONFIG_HISAX_NO_KEYPAD is not set
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_TELESPCI=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_NETJET=y
+CONFIG_HISAX_NETJET_U=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_HFC_PCI=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+CONFIG_HISAX_ENTERNOW_PCI=y
+# CONFIG_HISAX_DEBUG is not set
+CONFIG_HISAX_SEDLBAUER_CS=m
+CONFIG_HISAX_ELSA_CS=m
+CONFIG_HISAX_AVM_A1_CS=m
+CONFIG_HISAX_TELES_CS=m
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_HFC4S8S=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+
+##
+## file: drivers/isdn/i4l/Kconfig
+##
+CONFIG_ISDN_PPP=y
+CONFIG_ISDN_PPP_VJ=y
+CONFIG_ISDN_MPP=y
+CONFIG_IPPP_FILTER=y
+CONFIG_ISDN_PPP_BSDCOMP=m
+CONFIG_ISDN_AUDIO=y
+CONFIG_ISDN_TTY_FAX=y
+CONFIG_ISDN_X25=y
+CONFIG_ISDN_DIVERSION=m
+
+##
## file: drivers/leds/Kconfig
##
CONFIG_NEW_LEDS=y
@@ -201,7 +305,6 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
##
## file: drivers/media/Kconfig
##
-CONFIG_VIDEO_DEV=m
CONFIG_DVB_CORE=m
##
@@ -230,10 +333,9 @@ CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_CMDLINE_PARTS=y
# CONFIG_MTD_AFS_PARTS is not set
CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
-CONFIG_FTL=y
-CONFIG_NFTL=y
+CONFIG_FTL=m
+CONFIG_NFTL=m
# CONFIG_NFTL_RW is not set
# CONFIG_INFTL is not set
# CONFIG_RFD_FTL is not set
@@ -264,8 +366,8 @@ CONFIG_MTD_CFI_I4=y
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_OTP is not set
CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
@@ -353,6 +455,9 @@ CONFIG_MV643XX_ETH=m
##
## file: drivers/net/phy/Kconfig
##
+#. Turned off because this causes networking on some Kirkwood machines to fail
+# CONFIG_MARVELL_PHY is not set
+#. Turned off to avoid namespace collisions
# CONFIG_FIXED_PHY is not set
##
@@ -362,12 +467,6 @@ CONFIG_WLAN_PRE80211=y
CONFIG_WLAN_80211=y
##
-## file: drivers/pci/Kconfig
-##
-CONFIG_PCI_LEGACY=y
-# CONFIG_PCI_DEBUG is not set
-
-##
## file: drivers/pcmcia/Kconfig
##
# CONFIG_PCCARD is not set
@@ -375,7 +474,6 @@ CONFIG_PCI_LEGACY=y
##
## file: drivers/rtc/Kconfig
##
-CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_S35390A=y
CONFIG_RTC_DRV_MV=y
@@ -396,7 +494,6 @@ CONFIG_RTC_DRV_MV=y
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_PPA is not set
# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_MVSAS is not set
# CONFIG_SCSI_STEX is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_IPR is not set
@@ -405,7 +502,6 @@ CONFIG_RTC_DRV_MV=y
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
##
## file: drivers/scsi/aic7xxx/Kconfig.aic79xx
@@ -430,6 +526,11 @@ CONFIG_RTC_DRV_MV=y
# CONFIG_MEGARAID_SAS is not set
##
+## file: drivers/scsi/mvsas/Kconfig
+##
+# CONFIG_SCSI_MVSAS is not set
+
+##
## file: drivers/scsi/qla2xxx/Kconfig
##
# CONFIG_SCSI_QLA_FC is not set
@@ -472,18 +573,6 @@ CONFIG_USB_ATM=m
CONFIG_USB_SPEEDTOUCH=m
##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
@@ -495,33 +584,9 @@ CONFIG_USB_UHCI_HCD=m
CONFIG_USB_SL811_HCD=m
##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-
-##
## file: drivers/video/Kconfig
##
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-# CONFIG_FB is not set
-
-##
-## file: drivers/video/backlight/Kconfig
-##
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+CONFIG_FB=m
##
## file: drivers/video/console/Kconfig
@@ -529,22 +594,14 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
# CONFIG_VGA_CONSOLE is not set
##
-## file: drivers/video/display/Kconfig
-##
-# CONFIG_DISPLAY_SUPPORT is not set
-
-##
## file: drivers/watchdog/Kconfig
##
-CONFIG_WATCHDOG=y
-CONFIG_ORION5X_WATCHDOG=m
+CONFIG_ORION_WATCHDOG=m
##
## file: fs/Kconfig.binfmt
##
-CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
##
## file: fs/jffs2/Kconfig
@@ -584,12 +641,8 @@ CONFIG_UBIFS_FS=y
##
## file: kernel/power/Kconfig
##
-# CONFIG_PM is not set
-
-##
-## file: kernel/time/Kconfig
-##
-CONFIG_HIGH_RES_TIMERS=y
+CONFIG_PM=y
+# CONFIG_SUSPEND is not set
##
## file: mm/Kconfig
@@ -624,5 +677,3 @@ CONFIG_WAN_ROUTER=m
##
CONFIG_X25=m
-CONFIG_GPIO_SYSFS=y
-
diff --git a/config/arm/config.orion5x b/config/armel/config.orion5x
index 3001e03..fcc7ec0 100644
--- a/config/arm/config.orion5x
+++ b/config/armel/config.orion5x
@@ -11,9 +11,9 @@
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_MXC is not set
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
@@ -21,10 +21,9 @@
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_ORION5X=y
# CONFIG_ARCH_KS8695 is not set
# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-CONFIG_ARCH_ORION5X=y
# CONFIG_ARCH_PNX4008 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_RPC is not set
@@ -54,8 +53,6 @@ CONFIG_VFP=y
##
## file: arch/arm/mach-orion5x/Kconfig
##
-CONFIG_MACH_DB88F5281=y
-CONFIG_MACH_RD88F5182=y
CONFIG_MACH_KUROBOX_PRO=y
CONFIG_MACH_DNS323=y
CONFIG_MACH_TS209=y
@@ -144,6 +141,11 @@ CONFIG_BT_HCIBFUSB=m
CONFIG_BT_HCIVHCI=m
##
+## file: drivers/crypto/Kconfig
+##
+CONFIG_CRYPTO_DEV_MV_CESA=m
+
+##
## file: drivers/dma/Kconfig
##
CONFIG_DMADEVICES=y
@@ -151,6 +153,11 @@ CONFIG_MV_XOR=y
# CONFIG_NET_DMA is not set
##
+## file: drivers/gpio/Kconfig
+##
+CONFIG_GPIO_SYSFS=y
+
+##
## file: drivers/gpu/drm/Kconfig
##
# CONFIG_DRM is not set
@@ -193,6 +200,97 @@ CONFIG_KEYBOARD_GPIO=m
CONFIG_INPUT_TOUCHSCREEN=y
##
+## file: drivers/isdn/Kconfig
+##
+CONFIG_ISDN=y
+CONFIG_ISDN_I4L=m
+CONFIG_ISDN_CAPI=m
+
+##
+## file: drivers/isdn/capi/Kconfig
+##
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
+CONFIG_ISDN_CAPI_CAPIDRV=m
+
+##
+## file: drivers/isdn/hardware/avm/Kconfig
+##
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+
+##
+## file: drivers/isdn/hardware/eicon/Kconfig
+##
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+
+##
+## file: drivers/isdn/hisax/Kconfig
+##
+CONFIG_ISDN_DRV_HISAX=m
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+# CONFIG_HISAX_NO_SENDCOMPLETE is not set
+# CONFIG_HISAX_NO_LLC is not set
+# CONFIG_HISAX_NO_KEYPAD is not set
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_TELESPCI=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_NETJET=y
+CONFIG_HISAX_NETJET_U=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_HFC_PCI=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+CONFIG_HISAX_ENTERNOW_PCI=y
+# CONFIG_HISAX_DEBUG is not set
+CONFIG_HISAX_SEDLBAUER_CS=m
+CONFIG_HISAX_ELSA_CS=m
+CONFIG_HISAX_AVM_A1_CS=m
+CONFIG_HISAX_TELES_CS=m
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_HFC4S8S=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+
+##
+## file: drivers/isdn/i4l/Kconfig
+##
+CONFIG_ISDN_PPP=y
+CONFIG_ISDN_PPP_VJ=y
+CONFIG_ISDN_MPP=y
+CONFIG_IPPP_FILTER=y
+CONFIG_ISDN_PPP_BSDCOMP=m
+CONFIG_ISDN_AUDIO=y
+CONFIG_ISDN_TTY_FAX=y
+CONFIG_ISDN_X25=y
+CONFIG_ISDN_DIVERSION=m
+
+##
## file: drivers/leds/Kconfig
##
CONFIG_NEW_LEDS=y
@@ -205,7 +303,6 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
##
## file: drivers/media/Kconfig
##
-CONFIG_VIDEO_DEV=m
CONFIG_DVB_CORE=m
##
@@ -221,8 +318,8 @@ CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
-CONFIG_FTL=y
-CONFIG_NFTL=y
+CONFIG_FTL=m
+CONFIG_NFTL=m
# CONFIG_NFTL_RW is not set
# CONFIG_INFTL is not set
# CONFIG_RFD_FTL is not set
@@ -252,9 +349,11 @@ CONFIG_MTD_CFI_I2=y
CONFIG_MTD_CFI_I4=y
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_OTP is not set
+#. Needed e.g. on QNAP devices
CONFIG_MTD_CFI_INTELEXT=y
+#. Needed e.g. on the D-Link DNS-323
CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_CFI_STAA=m
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
@@ -336,6 +435,9 @@ CONFIG_MV643XX_ETH=m
##
## file: drivers/net/phy/Kconfig
##
+#. Turned off because this causes networking on some Orion machines to fail
+# CONFIG_MARVELL_PHY is not set
+#. Turned off to avoid namespace collisions
# CONFIG_FIXED_PHY is not set
##
@@ -345,12 +447,6 @@ CONFIG_WLAN_PRE80211=y
CONFIG_WLAN_80211=y
##
-## file: drivers/pci/Kconfig
-##
-CONFIG_PCI_LEGACY=y
-# CONFIG_PCI_DEBUG is not set
-
-##
## file: drivers/pcmcia/Kconfig
##
# CONFIG_PCCARD is not set
@@ -358,7 +454,6 @@ CONFIG_PCI_LEGACY=y
##
## file: drivers/rtc/Kconfig
##
-CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_DS1307=y
CONFIG_RTC_DRV_RS5C372=y
CONFIG_RTC_DRV_PCF8563=y
@@ -382,7 +477,6 @@ CONFIG_RTC_DRV_S35390A=y
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_PPA is not set
# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_MVSAS is not set
# CONFIG_SCSI_STEX is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_IPR is not set
@@ -391,7 +485,6 @@ CONFIG_RTC_DRV_S35390A=y
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
##
## file: drivers/scsi/aic7xxx/Kconfig.aic79xx
@@ -416,6 +509,11 @@ CONFIG_RTC_DRV_S35390A=y
# CONFIG_MEGARAID_SAS is not set
##
+## file: drivers/scsi/mvsas/Kconfig
+##
+# CONFIG_SCSI_MVSAS is not set
+
+##
## file: drivers/scsi/qla2xxx/Kconfig
##
# CONFIG_SCSI_QLA_FC is not set
@@ -453,18 +551,6 @@ CONFIG_USB_ATM=m
CONFIG_USB_SPEEDTOUCH=m
##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
@@ -476,33 +562,9 @@ CONFIG_USB_UHCI_HCD=m
CONFIG_USB_SL811_HCD=m
##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-
-##
## file: drivers/video/Kconfig
##
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-# CONFIG_FB is not set
-
-##
-## file: drivers/video/backlight/Kconfig
-##
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+CONFIG_FB=m
##
## file: drivers/video/console/Kconfig
@@ -510,22 +572,14 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
# CONFIG_VGA_CONSOLE is not set
##
-## file: drivers/video/display/Kconfig
-##
-# CONFIG_DISPLAY_SUPPORT is not set
-
-##
## file: drivers/watchdog/Kconfig
##
-CONFIG_WATCHDOG=y
-CONFIG_ORION5X_WATCHDOG=m
+CONFIG_ORION_WATCHDOG=m
##
## file: fs/Kconfig.binfmt
##
-CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
##
## file: fs/partitions/Kconfig
@@ -558,21 +612,6 @@ CONFIG_EFI_PARTITION=y
# CONFIG_PM is not set
##
-## file: kernel/time/Kconfig
-##
-CONFIG_HIGH_RES_TIMERS=y
-
-##
-## file: kernel/trace/Kconfig
-##
-#. disabled because of size restrictions
-# CONFIG_CONTEXT_SWITCH_TRACER is not set
-#. disabled because of size restrictions
-# CONFIG_BOOT_TRACER is not set
-#. disabled because of size restrictions
-# CONFIG_BLK_DEV_IO_TRACE is not set
-
-##
## file: mm/Kconfig
##
## choice: Memory model
@@ -605,18 +644,3 @@ CONFIG_WAN_ROUTER=m
##
CONFIG_X25=m
-##
-## file: security/selinux/Kconfig
-##
-#. disabled because of size restrictions
-# CONFIG_SECURITY_SELINUX is not set
-
-##
-## file: unknown
-##
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_MSM7X00A is not set
-
-CONFIG_GPIO_SYSFS=y
-
diff --git a/config/arm/config.versatile b/config/armel/config.versatile
index 0359fe6..c781c06 100644
--- a/config/arm/config.versatile
+++ b/config/armel/config.versatile
@@ -11,9 +11,9 @@ CONFIG_ARCH_VERSATILE=y
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_MXC is not set
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
@@ -23,7 +23,6 @@ CONFIG_ARCH_VERSATILE=y
# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_KS8695 is not set
# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
# CONFIG_ARCH_PNX4008 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_RPC is not set
@@ -35,7 +34,6 @@ CONFIG_ARCH_VERSATILE=y
# CONFIG_ARCH_OMAP is not set
## end choice
CONFIG_PCI=y
-# CONFIG_PREEMPT is not set
# CONFIG_LEDS is not set
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
@@ -164,11 +162,11 @@ CONFIG_VT_CONSOLE=y
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_KEYBOARD_STOWAWAY=m
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
##
## file: drivers/input/misc/Kconfig
@@ -235,7 +233,6 @@ CONFIG_TABLET_USB_WACOM=m
## file: drivers/net/Kconfig
##
CONFIG_IFB=m
-CONFIG_DUMMY=m
CONFIG_NET_ETHERNET=y
# CONFIG_AX88796 is not set
# CONFIG_HAPPYMEAL is not set
@@ -300,15 +297,9 @@ CONFIG_VITESSE_PHY=m
CONFIG_SMSC_PHY=m
CONFIG_BROADCOM_PHY=m
CONFIG_ICPLUS_PHY=m
-CONFIG_FIXED_PHY=m
# CONFIG_MDIO_BITBANG is not set
##
-## file: drivers/pci/Kconfig
-##
-CONFIG_PCI_LEGACY=y
-
-##
## file: drivers/pcmcia/Kconfig
##
# CONFIG_PCCARD is not set
@@ -343,12 +334,6 @@ CONFIG_USB_SUPPORT=y
CONFIG_USB=m
##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
@@ -363,11 +348,6 @@ CONFIG_USB_UHCI_HCD=m
# CONFIG_USB_R8A66597_HCD is not set
##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-
-##
## file: drivers/video/Kconfig
##
CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -405,8 +385,6 @@ CONFIG_FB_VIRTUAL=m
##
## file: drivers/video/backlight/Kconfig
##
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=m
##
@@ -446,6 +424,13 @@ CONFIG_LOGO_LINUX_CLUT224=y
# CONFIG_PM is not set
##
+## file: kernel/Kconfig.preempt
+##
+## choice: Preemption Model
+# CONFIG_PREEMPT is not set
+## end choice
+
+##
## file: kernel/time/Kconfig
##
# CONFIG_NO_HZ is not set
@@ -507,9 +492,3 @@ CONFIG_IPX_INTERN=y
##
# CONFIG_X25 is not set
-##
-## file: unknown
-##
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CO285 is not set
-
diff --git a/config/armel/defines b/config/armel/defines
index 5e4d92d..804b79f 100644
--- a/config/armel/defines
+++ b/config/armel/defines
@@ -10,61 +10,55 @@ kernel-arch: arm
[image]
suggests: fdutils
-[iop32x_base]
-class: IOP32x
-longclass: IOP32x based (Thecus N2100, etc)
-
[iop32x_build]
image-file: arch/arm/boot/zImage
+[iop32x_description]
+hardware: IOP32x
+hardware-long: IOP32x based systems (Thecus N2100, etc)
+
[iop32x_image]
-configs: arm/config.iop32x
# Thecus N2100: 1441792 - 8 = 1441784
check-size: 1441784
-[ixp4xx_base]
-class: IXP4xx
-longclass: IXP4xx based (Linksys NSLU2, etc)
-
[ixp4xx_build]
image-file: arch/arm/boot/zImage
+[ixp4xx_description]
+hardware: IXP4xx
+hardware-long: IXP4xx based systems (Linksys NSLU2, etc)
+
[ixp4xx_image]
-configs: arm/config.ixp4xx
# Linksys NSLU2: 1441792 - 16 - 16 = 1441760
check-size: 1441760
-[kirkwood_base]
-class: Marvell Kirkwood
-longclass: Marvell Kirkwood based (SheevaPlug, QNAP TS-119/TS-219, etc)
-
[kirkwood_build]
image-file: arch/arm/boot/zImage
+[kirkwood_description]
+hardware: Marvell Kirkwood
+hardware-long: Marvell Kirkwood based systems (SheevaPlug, QNAP TS-119/TS-219, etc)
+
[kirkwood_image]
recommends: uboot-mkimage
# SheevaPlug: 4194304 - 8 - 64 = 4194232
# QNAP TS-119/TS-219: 2097152 - 8 - 64 = 2097080
check-size: 2097080
-[orion5x_base]
-class: Orion
-longclass: Orion 5181, 5182 and 5281 based (QNAP TS-109/TS-209, etc)
-
[orion5x_build]
image-file: arch/arm/boot/zImage
+[orion5x_description]
+hardware: Marvell Orion
+hardware-long: Marvell Orion 5181, 5182 and 5281 based systems (QNAP TS-109/TS-209, etc)
+
[orion5x_image]
-configs: arm/config.orion5x
recommends: uboot-mkimage
# D-Link DNS-323: 1572864 - 8 - 64 = 1572792
# HP Media Vault mv2120: ca 2 MB
# QNAP TS-109/TS-209 & TS-409: 2097152 - 8 - 64 = 2097080
check-size: 1572792
-[versatile_base]
-class: Versatile
-longclass: Versatile (PB, AB, Qemu)
-
-[versatile_image]
-configs: arm/config.versatile
+[versatile_description]
+hardware: Versatile
+hardware-long: Versatile systems (PB, AB, Qemu)
diff --git a/config/config b/config/config
index 455c9c2..a5a4b74 100644
--- a/config/config
+++ b/config/config
@@ -2,7 +2,7 @@
## file: block/Kconfig
##
CONFIG_BLOCK=y
-CONFIG_LBD=y
+CONFIG_LBDAF=y
CONFIG_BLK_DEV_BSG=y
CONFIG_BLK_DEV_INTEGRITY=y
@@ -42,7 +42,9 @@ CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_XTS=m
CONFIG_CRYPTO_HMAC=m
CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_VMAC=m
CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_GHASH=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=m
@@ -85,6 +87,7 @@ CONFIG_A11Y_BRAILLE_CONSOLE=y
## file: drivers/ata/Kconfig
##
CONFIG_ATA=m
+CONFIG_ATA_VERBOSE_ERROR=y
CONFIG_ATA_ACPI=y
CONFIG_SATA_PMP=y
CONFIG_SATA_AHCI=m
@@ -108,6 +111,7 @@ CONFIG_SATA_INIC162X=m
# CONFIG_PATA_ALI is not set
# CONFIG_PATA_AMD is not set
CONFIG_PATA_ARTOP=m
+CONFIG_PATA_ATP867X=m
# CONFIG_PATA_ATIIXP is not set
# CONFIG_PATA_CMD640_PCI is not set
# CONFIG_PATA_CMD64X is not set
@@ -139,6 +143,7 @@ CONFIG_PATA_MARVELL=m
# CONFIG_PATA_PDC_OLD is not set
# CONFIG_PATA_QDI is not set
# CONFIG_PATA_RADISYS is not set
+CONFIG_PATA_RDC=m
# CONFIG_PATA_RZ1000 is not set
# CONFIG_PATA_SC1200 is not set
# CONFIG_PATA_SERVERWORKS is not set
@@ -167,7 +172,8 @@ CONFIG_ATM_SOLOS=m
##
## file: drivers/base/Kconfig
##
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_DEVTMPFS=y
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
@@ -181,10 +187,10 @@ CONFIG_EXTRA_FIRMWARE=""
##
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_CRYPTOLOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
CONFIG_BLK_DEV_NBD=m
CONFIG_BLK_DEV_OSD=m
-CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_COUNT=16
# CONFIG_BLK_DEV_XIP is not set
CONFIG_ATA_OVER_ETH=m
@@ -192,16 +198,24 @@ CONFIG_VIRTIO_BLK=m
# CONFIG_BLK_DEV_HD is not set
##
+## file: drivers/block/drbd/Kconfig
+##
+CONFIG_BLK_DEV_DRBD=m
+# CONFIG_DRBD_FAULT_INJECTION is not set
+
+##
## file: drivers/bluetooth/Kconfig
##
CONFIG_BT_HCIBTUSB=m
CONFIG_BT_HCIBTSDIO=m
CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_MRVL=m
+CONFIG_BT_MRVL_SDIO=m
##
## file: drivers/char/Kconfig
##
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_VT_HW_CONSOLE_BINDING=y
# CONFIG_DEVKMEM is not set
CONFIG_COMPUTONE=m
CONFIG_MOXA_SMARTIO=m
@@ -246,6 +260,11 @@ CONFIG_TCG_ATMEL=m
CONFIG_TCG_INFINEON=m
##
+## file: drivers/clocksource/Kconfig
+##
+CONFIG_CS5535_CLOCK_EVENT_SRC=m
+
+##
## file: drivers/connector/Kconfig
##
CONFIG_CONNECTOR=m
@@ -273,9 +292,6 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
## file: drivers/crypto/Kconfig
##
CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_PADLOCK=m
-CONFIG_CRYPTO_DEV_PADLOCK_AES=m
-CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
CONFIG_CRYPTO_DEV_HIFN_795X=m
CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
@@ -289,6 +305,7 @@ CONFIG_ASYNC_TX_DMA=y
## file: drivers/edac/Kconfig
##
CONFIG_EDAC_I82975X=m
+CONFIG_EDAC_I3200=m
CONFIG_EDAC_X38=m
CONFIG_EDAC_I5400=m
CONFIG_EDAC_I5100=m
@@ -318,11 +335,21 @@ CONFIG_DRM_SAVAGE=m
# CONFIG_DRM_RADEON_KMS is not set
##
+## file: drivers/gpu/drm/radeon/Kconfig
+##
+CONFIG_DRM_NOUVEAU=m
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
+
+##
+## file: drivers/gpu/drm/vmwgfx/Kconfig
+##
+CONFIG_DRM_VMWGFX=m
+
+##
## file: drivers/hid/Kconfig
##
CONFIG_HID_SUPPORT=y
CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
CONFIG_HIDRAW=y
CONFIG_DRAGONRISE_FF=y
CONFIG_LOGITECH_FF=y
@@ -343,6 +370,7 @@ CONFIG_USB_HIDDEV=y
## file: drivers/hwmon/Kconfig
##
CONFIG_HWMON=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
CONFIG_SENSORS_ABITUGURU=m
CONFIG_SENSORS_ABITUGURU3=m
CONFIG_SENSORS_AD7414=m
@@ -354,7 +382,6 @@ CONFIG_SENSORS_ADT7462=m
CONFIG_SENSORS_ADT7470=m
CONFIG_SENSORS_ADT7473=m
CONFIG_SENSORS_ADT7475=m
-CONFIG_SENSORS_ATK0110=m
CONFIG_SENSORS_ATXP1=m
CONFIG_SENSORS_I5K_AMB=m
CONFIG_SENSORS_F71882FG=m
@@ -365,6 +392,7 @@ CONFIG_SENSORS_CORETEMP=m
CONFIG_SENSORS_IBMAEM=m
CONFIG_SENSORS_IBMPEX=m
CONFIG_SENSORS_LM70=m
+CONFIG_SENSORS_LM73=m
CONFIG_SENSORS_LM93=m
CONFIG_SENSORS_LTC4215=m
CONFIG_SENSORS_LTC4245=m
@@ -375,8 +403,11 @@ CONFIG_SENSORS_PC87427=m
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_ADS7828=m
+CONFIG_SENSORS_AMC6821=m
CONFIG_SENSORS_THMC50=m
CONFIG_SENSORS_TMP401=m
+CONFIG_SENSORS_TMP421=m
+CONFIG_SENSORS_VIA_CPUTEMP=m
CONFIG_SENSORS_VT1211=m
CONFIG_SENSORS_VT8231=m
CONFIG_SENSORS_W83791D=m
@@ -384,19 +415,18 @@ CONFIG_SENSORS_W83792D=m
CONFIG_SENSORS_W83793=m
CONFIG_SENSORS_W83L786NG=m
CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_LIS3LV02D=m
+CONFIG_SENSORS_WM831X=m
+CONFIG_SENSORS_WM8350=m
+CONFIG_SENSORS_LIS3_I2C=m
CONFIG_SENSORS_APPLESMC=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/Kconfig
-##
-CONFIG_IEEE802154_DRIVERS=m
-CONFIG_IEEE802154_FAKEHARD=m
+CONFIG_SENSORS_MC13783_ADC=m
+CONFIG_SENSORS_ATK0110=m
+CONFIG_SENSORS_LIS3LV02D=m
##
## file: drivers/i2c/Kconfig
##
+CONFIG_I2C_COMPAT=y
CONFIG_I2C_HELPER_AUTO=y
##
@@ -414,9 +444,6 @@ CONFIG_I2C_PCA_PLATFORM=m
## file: drivers/i2c/chips/Kconfig
##
CONFIG_DS1682=m
-CONFIG_PCF8575=m
-CONFIG_SENSORS_PCA9539=m
-CONFIG_SENSORS_MAX6875=m
CONFIG_SENSORS_TSL2550=m
##
@@ -446,6 +473,12 @@ CONFIG_I7300_IDLE=m
# CONFIG_IEEE1394 is not set
##
+## file: drivers/ieee802154/Kconfig
+##
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKEHARD=m
+
+##
## file: drivers/infiniband/Kconfig
##
CONFIG_INFINIBAND=m
@@ -490,7 +523,7 @@ CONFIG_INFINIBAND_NES=m
## file: drivers/infiniband/ulp/ipoib/Kconfig
##
CONFIG_INFINIBAND_IPOIB=m
-# CONFIG_INFINIBAND_IPOIB_CM is not set
+CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG=y
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
@@ -510,6 +543,7 @@ CONFIG_INFINIBAND_SRP=m
CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=m
# CONFIG_INPUT_POLLDEV is not set
+CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
@@ -558,6 +592,11 @@ CONFIG_JOYSTICK_IFORCE_232=y
##
## file: drivers/input/keyboard/Kconfig
##
+CONFIG_KEYBOARD_ADP5588=m
+CONFIG_QT2160=m
+CONFIG_KEYBOARD_LM8323=m
+CONFIG_KEYBOARD_MAX7359=m
+CONFIG_KEYBOARD_OPENCORES=m
CONFIG_KEYBOARD_STOWAWAY=m
##
@@ -569,15 +608,23 @@ CONFIG_INPUT_KEYSPAN_REMOTE=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_YEALINK=m
CONFIG_INPUT_CM109=m
+CONFIG_INPUT_WINBOND_CIR=m
CONFIG_INPUT_PCF50633_PMU=m
+CONFIG_INPUT_WM831X_ON=m
##
## file: drivers/input/mouse/Kconfig
##
CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_SYNAPTICS_I2C=m
-# CONFIG_MOUSE_PS2_ELANTECH is not set
+CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_MOUSE_PS2_SENTELIC=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+CONFIG_MOUSE_SYNAPTICS_I2C=m
+
+##
+## file: drivers/input/serio/Kconfig
+##
+CONFIG_SERIO_ALTERA_PS2=m
##
## file: drivers/input/touchscreen/Kconfig
@@ -585,11 +632,13 @@ CONFIG_MOUSE_SYNAPTICS_I2C=m
CONFIG_TOUCHSCREEN_ADS7846=m
CONFIG_TOUCHSCREEN_AD7877=m
CONFIG_TOUCHSCREEN_AD7879_I2C=m
+CONFIG_TOUCHSCREEN_DYNAPRO=m
CONFIG_TOUCHSCREEN_EETI=m
CONFIG_TOUCHSCREEN_FUJITSU=m
CONFIG_TOUCHSCREEN_GUNZE=m
CONFIG_TOUCHSCREEN_ELO=m
CONFIG_TOUCHSCREEN_WACOM_W8001=m
+CONFIG_TOUCHSCREEN_MCS5000=m
CONFIG_TOUCHSCREEN_MTOUCH=m
CONFIG_TOUCHSCREEN_INEXIO=m
CONFIG_TOUCHSCREEN_MK712=m
@@ -603,6 +652,7 @@ CONFIG_TOUCHSCREEN_WM9705=y
CONFIG_TOUCHSCREEN_WM9712=y
CONFIG_TOUCHSCREEN_WM9713=y
CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
+CONFIG_TOUCHSCREEN_MC13783=m
CONFIG_TOUCHSCREEN_USB_EGALAX=y
CONFIG_TOUCHSCREEN_USB_PANJIT=y
CONFIG_TOUCHSCREEN_USB_3M=y
@@ -611,6 +661,7 @@ CONFIG_TOUCHSCREEN_USB_ETURBO=y
CONFIG_TOUCHSCREEN_USB_GUNZE=y
CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
+CONFIG_TOUCHSCREEN_USB_E2I=y
CONFIG_TOUCHSCREEN_TOUCHIT213=m
CONFIG_TOUCHSCREEN_TSC2007=m
CONFIG_TOUCHSCREEN_W90X900=m
@@ -624,11 +675,11 @@ CONFIG_CAPI_TRACE=y
## file: drivers/isdn/gigaset/Kconfig
##
CONFIG_ISDN_DRV_GIGASET=m
+CONFIG_GIGASET_CAPI=y
CONFIG_GIGASET_BASE=m
CONFIG_GIGASET_M105=m
CONFIG_GIGASET_M101=m
# CONFIG_GIGASET_DEBUG is not set
-# CONFIG_GIGASET_UNDOCREQ is not set
##
## file: drivers/isdn/hardware/mISDN/Kconfig
@@ -636,6 +687,11 @@ CONFIG_GIGASET_M101=m
CONFIG_MISDN_HFCPCI=m
CONFIG_MISDN_HFCMULTI=m
CONFIG_MISDN_HFCUSB=m
+CONFIG_MISDN_AVMFRITZ=m
+CONFIG_MISDN_SPEEDFAX=m
+CONFIG_MISDN_INFINEON=m
+CONFIG_MISDN_W6692=m
+CONFIG_MISDN_NETJET=m
##
## file: drivers/isdn/hysdn/Kconfig
@@ -659,11 +715,13 @@ CONFIG_LEDS_NET48XX=m
CONFIG_LEDS_ALIX2=m
CONFIG_LEDS_PCA9532=m
CONFIG_LEDS_LP3944=m
-CONFIG_LEDS_LP5521=m
CONFIG_LEDS_PCA955X=m
+CONFIG_LEDS_WM831X_STATUS=m
CONFIG_LEDS_WM8350=m
CONFIG_LEDS_DAC124S085=m
+CONFIG_LEDS_REGULATOR=m
CONFIG_LEDS_BD2802=m
+CONFIG_LEDS_INTEL_SS4200=m
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=m
CONFIG_LEDS_TRIGGER_IDE_DISK=y
@@ -681,6 +739,10 @@ CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID10=m
CONFIG_MD_RAID456=m
+#. Experimental
+# CONFIG_MULTICORE_RAID456 is not set
+#. Self-test
+# CONFIG_ASYNC_RAID6_TEST is not set
CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
CONFIG_BLK_DEV_DM=m
@@ -720,7 +782,8 @@ CONFIG_MEDIA_TUNER_QT1010=m
##
## file: drivers/media/dvb/Kconfig
##
-# CONFIG_DVB_DYNAMIC_MINORS is not set
+CONFIG_DVB_MAX_ADAPTERS=8
+CONFIG_DVB_DYNAMIC_MINORS=y
CONFIG_DVB_CAPTURE_DRIVERS=y
##
@@ -742,6 +805,11 @@ CONFIG_DVB_BT8XX=m
CONFIG_DVB_DM1105=m
##
+## file: drivers/media/dvb/firewire/Kconfig
+##
+CONFIG_DVB_FIREDTV=m
+
+##
## file: drivers/media/dvb/dvb-usb/Kconfig
##
CONFIG_DVB_USB=m
@@ -772,6 +840,8 @@ CONFIG_DVB_USB_ANYSEE=m
CONFIG_DVB_USB_DTV5100=m
CONFIG_DVB_USB_AF9015=m
CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_USB_FRIIO=m
+CONFIG_DVB_USB_EC168=m
##
## file: drivers/media/dvb/frontends/Kconfig
@@ -819,19 +889,32 @@ CONFIG_DVB_PLL=m
CONFIG_DVB_LNBP21=m
CONFIG_DVB_ISL6405=m
CONFIG_DVB_ISL6421=m
-CONFIG_DVB_LGS8GL5=m
+CONFIG_DVB_LGS8GXX=m
CONFIG_DVB_DUMMY_FE=m
##
+## file: drivers/media/dvb/mantis/Kconfig
+##
+CONFIG_MANTIS_CORE=m
+CONFIG_DVB_MANTIS=m
+CONFIG_DVB_HOPPER=m
+
+##
## file: drivers/media/dvb/pluto2/Kconfig
##
CONFIG_DVB_PLUTO2=m
##
+## file: drivers/media/dvb/pt1/Kconfig
+##
+CONFIG_DVB_PT1=m
+
+##
## file: drivers/media/dvb/siano/Kconfig
##
-CONFIG_DVB_SIANO_SMS1XXX=m
-CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS=y
+CONFIG_SMS_SIANO_MDTV=m
+CONFIG_SMS_USB_DRV=m
+CONFIG_SMS_SDIO_DRV=m
##
## file: drivers/media/dvb/ttpci/Kconfig
@@ -858,11 +941,19 @@ CONFIG_DVB_TTUSB_DEC=m
## file: drivers/media/radio/Kconfig
##
CONFIG_RADIO_ADAPTERS=y
-CONFIG_USB_SI470X=m
+CONFIG_I2C_SI4713=m
+CONFIG_RADIO_SI4713=m
+CONFIG_RADIO_SI470X=y
CONFIG_USB_MR800=m
CONFIG_RADIO_TEA5764=m
##
+## file: drivers/media/radio/si470x/Kconfig
+##
+CONFIG_USB_SI470X=m
+CONFIG_I2C_SI470X=y
+
+##
## file: drivers/media/video/Kconfig
##
CONFIG_VIDEO_CAPTURE_DRIVERS=y
@@ -916,10 +1007,13 @@ CONFIG_SOC_CAMERA=m
CONFIG_SOC_CAMERA_MT9M001=m
CONFIG_SOC_CAMERA_MT9M111=m
CONFIG_SOC_CAMERA_MT9T031=m
+CONFIG_SOC_CAMERA_MT9T112=m
CONFIG_SOC_CAMERA_MT9V022=m
+CONFIG_SOC_CAMERA_RJ54N1=m
CONFIG_SOC_CAMERA_TW9910=m
CONFIG_SOC_CAMERA_PLATFORM=m
CONFIG_SOC_CAMERA_OV772X=m
+CONFIG_SOC_CAMERA_OV9640=m
CONFIG_VIDEO_SH_MOBILE_CEU=m
CONFIG_V4L_USB_DRIVERS=y
CONFIG_VIDEO_OVCAMCHIP=m
@@ -997,11 +1091,13 @@ CONFIG_USB_GSPCA=m
CONFIG_USB_GSPCA_CONEX=m
CONFIG_USB_GSPCA_ETOMS=m
CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
CONFIG_USB_GSPCA_MARS=m
CONFIG_USB_GSPCA_MR97310A=m
CONFIG_USB_GSPCA_OV519=m
CONFIG_USB_GSPCA_OV534=m
CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
CONFIG_USB_GSPCA_PAC7311=m
CONFIG_USB_GSPCA_SN9C20X=m
CONFIG_USB_GSPCA_SN9C20X_EVDEV=y
@@ -1016,6 +1112,7 @@ CONFIG_USB_GSPCA_SPCA561=m
CONFIG_USB_GSPCA_SQ905=m
CONFIG_USB_GSPCA_SQ905C=m
CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STV0680=m
CONFIG_USB_GSPCA_SUNPLUS=m
CONFIG_USB_GSPCA_T613=m
CONFIG_USB_GSPCA_TV8532=m
@@ -1023,6 +1120,11 @@ CONFIG_USB_GSPCA_VC032X=m
CONFIG_USB_GSPCA_ZC3XX=m
##
+## file: drivers/media/video/gspca/gl860/Kconfig
+##
+CONFIG_USB_GL860=m
+
+##
## file: drivers/media/video/gspca/m5602/Kconfig
##
CONFIG_USB_M5602=m
@@ -1066,6 +1168,11 @@ CONFIG_VIDEO_SAA7134_ALSA=m
CONFIG_VIDEO_SAA7134_DVB=m
##
+## file: drivers/media/video/saa7164/Kconfig
+##
+CONFIG_VIDEO_SAA7164=m
+
+##
## file: drivers/media/video/sn9c102/Kconfig
##
CONFIG_USB_SN9C102=m
@@ -1152,16 +1259,21 @@ CONFIG_MFD_SM501=m
CONFIG_HTC_PASIC3=m
CONFIG_TPS65010=m
CONFIG_MFD_WM8400=m
+CONFIG_MFD_WM831X=m
CONFIG_MFD_WM8350_I2C=m
CONFIG_MFD_PCF50633=m
+CONFIG_MFD_MC13783=m
CONFIG_PCF50633_ADC=m
CONFIG_PCF50633_GPIO=m
CONFIG_AB3100_CORE=m
+CONFIG_AB3100_OTP=m
+# CONFIG_EZX_PCAP is not set
##
## file: drivers/misc/Kconfig
##
CONFIG_MISC_DEVICES=y
+CONFIG_AD525X_DPOT=m
CONFIG_SGI_IOC4=m
CONFIG_TIFM_CORE=m
CONFIG_TIFM_7XX1=m
@@ -1171,8 +1283,6 @@ CONFIG_SGI_XP=m
CONFIG_SGI_GRU=m
# CONFIG_SGI_GRU_DEBUG is not set
CONFIG_ISL29003=m
-CONFIG_CB710_CORE=m
-# CONFIG_CB710_DEBUG is not set
##
## file: drivers/misc/c2port/Kconfig
@@ -1181,6 +1291,12 @@ CONFIG_C2PORT=m
CONFIG_C2PORT_DURAMAR_2150=m
##
+## file: drivers/misc/cb710/Kconfig
+##
+CONFIG_CB710_CORE=m
+# CONFIG_CB710_DEBUG is not set
+
+##
## file: drivers/misc/eeprom/Kconfig
##
CONFIG_EEPROM_AT24=m
@@ -1233,6 +1349,7 @@ CONFIG_MTD_DATAFLASH=m
# CONFIG_MTD_DATAFLASH_OTP is not set
CONFIG_MTD_M25P80=m
CONFIG_M25PXX_USE_FAST_READ=y
+CONFIG_MTD_SST25L=m
##
## file: drivers/mtd/lpddr/Kconfig
@@ -1262,6 +1379,7 @@ CONFIG_MTD_ALAUDA=m
##
CONFIG_MTD_ONENAND=m
CONFIG_MTD_ONENAND_VERIFY_WRITE=y
+CONFIG_MTD_ONENAND_GENERIC=m
# CONFIG_MTD_ONENAND_OTP is not set
CONFIG_MTD_ONENAND_2X_PROGRAM=y
CONFIG_MTD_ONENAND_SIM=m
@@ -1283,8 +1401,8 @@ CONFIG_MTD_UBI_BEB_RESERVE=1
## file: drivers/net/Kconfig
##
CONFIG_NETDEVICES=y
-CONFIG_COMPAT_NET_DEV_OPS=y
CONFIG_IFB=m
+CONFIG_DUMMY=m
CONFIG_BONDING=m
CONFIG_MACVLAN=m
CONFIG_EQUALIZER=m
@@ -1302,6 +1420,9 @@ CONFIG_PCNET32=m
CONFIG_R6040=m
CONFIG_SMSC9420=m
CONFIG_TLAN=m
+CONFIG_KS8842=m
+CONFIG_KS8851=m
+CONFIG_KS8851_MLL=m
CONFIG_SC92031=m
# CONFIG_NET_POCKET is not set
CONFIG_ATL2=m
@@ -1375,6 +1496,7 @@ CONFIG_SLIP_MODE_SLIP6=y
CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_VIRTIO_NET=m
+CONFIG_VMXNET3=m
##
## file: drivers/net/appletalk/Kconfig
@@ -1397,17 +1519,33 @@ CONFIG_BE2NET=m
CONFIG_CAN_VCAN=m
CONFIG_CAN_DEV=m
CONFIG_CAN_CALC_BITTIMING=y
+CONFIG_CAN_MCP251X=m
+# CONFIG_CAN_DEBUG_DEVICES is not set
+
+##
+## file: drivers/net/can/sja1000/Kconfig
+##
CONFIG_CAN_SJA1000=m
CONFIG_CAN_SJA1000_PLATFORM=m
CONFIG_CAN_EMS_PCI=m
CONFIG_CAN_KVASER_PCI=m
-# CONFIG_CAN_DEBUG_DEVICES is not set
+
+##
+## file: drivers/net/can/usb/Kconfig
+##
+CONFIG_CAN_EMS_USB=m
##
## file: drivers/net/hamradio/Kconfig
##
CONFIG_MKISS=m
CONFIG_6PACK=m
+CONFIG_BPQETHER=m
+CONFIG_BAYCOM_SER_FDX=m
+CONFIG_BAYCOM_SER_HDX=m
+CONFIG_BAYCOM_PAR=m
+CONFIG_BAYCOM_EPP=m
+CONFIG_YAM=m
##
## file: drivers/net/irda/Kconfig
@@ -1476,6 +1614,7 @@ CONFIG_ABYSS=m
##
## file: drivers/net/tulip/Kconfig
##
+CONFIG_DE2104X_DSL=0
CONFIG_TULIP_NAPI=y
CONFIG_TULIP_NAPI_HW_MITIGATION=y
CONFIG_ULI526X=m
@@ -1527,12 +1666,14 @@ CONFIG_WAN_ROUTER_DRIVERS=m
## file: drivers/net/wimax/i2400m/Kconfig
##
CONFIG_WIMAX_I2400M_USB=m
+CONFIG_WIMAX_IWMC3200_SDIO=y
CONFIG_WIMAX_I2400M_SDIO=m
CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
##
## file: drivers/net/wireless/Kconfig
##
+CONFIG_WLAN=y
CONFIG_LIBERTAS=m
CONFIG_LIBERTAS_USB=m
CONFIG_LIBERTAS_CS=m
@@ -1552,18 +1693,23 @@ CONFIG_MAC80211_HWSIM=m
CONFIG_MWL8K=m
##
-## file: drivers/net/wireless/ar9170/Kconfig
+## file: drivers/net/wireless/ath/Kconfig
+##
+CONFIG_ATH_COMMON=m
+
+##
+## file: drivers/net/wireless/ath/ar9170/Kconfig
##
CONFIG_AR9170_USB=m
##
-## file: drivers/net/wireless/ath5k/Kconfig
+## file: drivers/net/wireless/ath/ath5k/Kconfig
##
CONFIG_ATH5K=m
# CONFIG_ATH5K_DEBUG is not set
##
-## file: drivers/net/wireless/ath9k/Kconfig
+## file: drivers/net/wireless/ath/ath9k/Kconfig
##
CONFIG_ATH9K=m
# CONFIG_ATH9K_DEBUG is not set
@@ -1573,6 +1719,8 @@ CONFIG_ATH9K=m
##
CONFIG_B43=m
CONFIG_B43_PCMCIA=y
+CONFIG_B43_SDIO=y
+CONFIG_B43_PHY_LP=y
# CONFIG_B43_DEBUG is not set
##
@@ -1612,7 +1760,6 @@ CONFIG_IPW2200_QOS=y
##
CONFIG_IWLWIFI=m
CONFIG_IWLWIFI_LEDS=y
-CONFIG_IWLWIFI_RFKILL=y
CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y
# CONFIG_IWLWIFI_DEBUG is not set
CONFIG_IWLAGN=m
@@ -1649,6 +1796,7 @@ CONFIG_RT2X00=m
CONFIG_RT2400PCI=m
CONFIG_RT2500PCI=m
CONFIG_RT61PCI=m
+CONFIG_RT2800PCI=m
CONFIG_RT2500USB=m
CONFIG_RT73USB=m
CONFIG_RT2800USB=m
@@ -1658,6 +1806,10 @@ CONFIG_RT2800USB=m
## file: drivers/net/wireless/wl12xx/Kconfig
##
CONFIG_WL12XX=m
+CONFIG_WL1251=m
+CONFIG_WL1251_SPI=m
+CONFIG_WL1251_SDIO=m
+CONFIG_WL1271=m
##
## file: drivers/net/wireless/zd1211rw/Kconfig
@@ -1680,7 +1832,9 @@ CONFIG_PARPORT_1284=y
##
## file: drivers/pci/Kconfig
##
+CONFIG_PCI_MSI=y
CONFIG_PCI_LEGACY=y
+# CONFIG_PCI_DEBUG is not set
CONFIG_PCI_STUB=m
CONFIG_PCI_IOV=y
@@ -1692,7 +1846,21 @@ CONFIG_HOTPLUG_PCI_CPCI=y
##
## file: drivers/pci/pcie/Kconfig
##
-# CONFIG_PCIEASPM is not set
+CONFIG_PCIEPORTBUS=y
+CONFIG_HOTPLUG_PCI_PCIE=m
+CONFIG_PCIEASPM=y
+# CONFIG_PCIEASPM_DEBUG is not set
+
+##
+## file: drivers/pci/pcie/aer/Kconfig
+##
+CONFIG_PCIEAER=y
+# CONFIG_PCIE_ECRC is not set
+
+##
+## file: drivers/pci/pcie/aer/Kconfig.debug
+##
+CONFIG_PCIEAER_INJECT=m
##
## file: drivers/pcmcia/Kconfig
@@ -1726,7 +1894,9 @@ CONFIG_SONY_LAPTOP=m
## file: drivers/power/Kconfig
##
# CONFIG_POWER_SUPPLY is not set
+CONFIG_WM831X_POWER=m
CONFIG_WM8350_POWER=m
+CONFIG_BATTERY_DS2782=m
CONFIG_BATTERY_BQ27x00=m
CONFIG_BATTERY_MAX17040=m
CONFIG_CHARGER_PCF50633=m
@@ -1747,10 +1917,16 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=m
CONFIG_REGULATOR_USERSPACE_CONSUMER=m
CONFIG_REGULATOR_BQ24022=m
CONFIG_REGULATOR_MAX1586=m
+CONFIG_REGULATOR_MAX8660=m
+CONFIG_REGULATOR_WM831X=m
CONFIG_REGULATOR_WM8350=m
CONFIG_REGULATOR_WM8400=m
CONFIG_REGULATOR_PCF50633=m
CONFIG_REGULATOR_LP3971=m
+CONFIG_REGULATOR_MC13783=m
+CONFIG_REGULATOR_AB3100=m
+CONFIG_REGULATOR_TPS65023=m
+CONFIG_REGULATOR_TPS6507X=m
##
## file: drivers/rtc/Kconfig
@@ -1775,6 +1951,7 @@ CONFIG_RTC_DRV_PCF8563=m
CONFIG_RTC_DRV_PCF8583=m
CONFIG_RTC_DRV_M41T80=m
# CONFIG_RTC_DRV_M41T80_WDT is not set
+CONFIG_RTC_DRV_BQ32K=m
CONFIG_RTC_DRV_S35390A=m
CONFIG_RTC_DRV_FM3130=m
CONFIG_RTC_DRV_RX8581=m
@@ -1786,6 +1963,7 @@ CONFIG_RTC_DRV_MAX6902=m
CONFIG_RTC_DRV_R9701=m
CONFIG_RTC_DRV_RS5C348=m
CONFIG_RTC_DRV_DS3234=m
+CONFIG_RTC_DRV_PCF2123=m
CONFIG_RTC_DRV_CMOS=m
CONFIG_RTC_DRV_DS1286=m
CONFIG_RTC_DRV_DS1511=m
@@ -1795,10 +1973,14 @@ CONFIG_RTC_DRV_STK17TA8=m
CONFIG_RTC_DRV_M48T86=m
CONFIG_RTC_DRV_M48T35=m
CONFIG_RTC_DRV_M48T59=m
+CONFIG_RTC_DRV_MSM6242=m
CONFIG_RTC_DRV_BQ4802=m
+CONFIG_RTC_DRV_RP5C01=m
CONFIG_RTC_DRV_V3020=m
+CONFIG_RTC_DRV_WM831X=m
CONFIG_RTC_DRV_WM8350=m
CONFIG_RTC_DRV_PCF50633=m
+CONFIG_RTC_DRV_AB3100=m
##
## file: drivers/scsi/Kconfig
@@ -1829,6 +2011,7 @@ CONFIG_SCSI_LOWLEVEL=y
CONFIG_ISCSI_TCP=m
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_SCSI_3W_9XXX=m
+CONFIG_SCSI_3W_SAS=m
CONFIG_SCSI_7000FASST=m
CONFIG_SCSI_ACARD=m
CONFIG_SCSI_AHA152X=m
@@ -1839,6 +2022,7 @@ CONFIG_SCSI_AIC7XXX_OLD=m
CONFIG_SCSI_ADVANSYS=m
# CONFIG_SCSI_ARCMSR_AER is not set
CONFIG_SCSI_HPTIOP=m
+CONFIG_VMWARE_PVSCSI=m
CONFIG_LIBFC=m
CONFIG_FCOE=m
CONFIG_FCOE_FNIC=m
@@ -1846,14 +2030,16 @@ CONFIG_SCSI_PPA=m
CONFIG_SCSI_IMM=m
# CONFIG_SCSI_IZIP_EPP16 is not set
# CONFIG_SCSI_IZIP_SLOW_CTR is not set
-CONFIG_SCSI_MVSAS=m
-# CONFIG_SCSI_MVSAS_DEBUG is not set
CONFIG_SCSI_STEX=m
CONFIG_SCSI_SYM53C8XX_MMIO=y
# CONFIG_SCSI_IPR is not set
CONFIG_SCSI_LPFC=m
# CONFIG_SCSI_LPFC_DEBUG_FS is not set
+# CONFIG_SCSI_DEBUG is not set
+CONFIG_SCSI_PMCRAID=m
+CONFIG_SCSI_PM8001=m
CONFIG_SCSI_SRP=m
+CONFIG_SCSI_BFA_FC=m
##
## file: drivers/scsi/aic7xxx/Kconfig.aic79xx
@@ -1882,6 +2068,11 @@ CONFIG_SCSI_AIC94XX=m
# CONFIG_AIC94XX_DEBUG is not set
##
+## file: drivers/scsi/be2iscsi/Kconfig
+##
+CONFIG_BE2ISCSI=m
+
+##
## file: drivers/scsi/bnx2i/Kconfig
##
CONFIG_SCSI_BNX2_ISCSI=m
@@ -1921,6 +2112,12 @@ CONFIG_SCSI_MPT2SAS_MAX_SGE=128
# CONFIG_SCSI_MPT2SAS_LOGGING is not set
##
+## file: drivers/scsi/mvsas/Kconfig
+##
+CONFIG_SCSI_MVSAS=m
+# CONFIG_SCSI_MVSAS_DEBUG is not set
+
+##
## file: drivers/scsi/osd/Kconfig
##
CONFIG_SCSI_OSD_INITIATOR=m
@@ -1975,10 +2172,218 @@ CONFIG_SSB=m
##
## file: drivers/staging/Kconfig
##
-# CONFIG_STAGING is not set
+CONFIG_STAGING=y
# CONFIG_STAGING_EXCLUDE_BUILD is not set
##
+## file: drivers/staging/altpciechdma/Kconfig
+##
+# CONFIG_ALTERA_PCIE_CHDMA is not set
+
+##
+## file: drivers/staging/android/Kconfig
+##
+# CONFIG_ANDROID is not set
+# CONFIG_ANDROID_BINDER_IPC is not set
+# CONFIG_ANDROID_LOGGER is not set
+# CONFIG_ANDROID_RAM_CONSOLE is not set
+# CONFIG_ANDROID_LOW_MEMORY_KILLER is not set
+
+##
+## file: drivers/staging/asus_oled/Kconfig
+##
+# CONFIG_ASUS_OLED is not set
+
+##
+## file: drivers/staging/b3dfg/Kconfig
+##
+# CONFIG_B3DFG is not set
+
+##
+## file: drivers/staging/comedi/Kconfig
+##
+# CONFIG_COMEDI is not set
+
+##
+## file: drivers/staging/cx25821/Kconfig
+##
+# CONFIG_VIDEO_CX25821 is not set
+
+##
+## file: drivers/staging/dream/Kconfig
+##
+# CONFIG_INPUT_GPIO is not set
+
+##
+## file: drivers/staging/dst/Kconfig
+##
+# CONFIG_DST is not set
+
+##
+## file: drivers/staging/echo/Kconfig
+##
+# CONFIG_ECHO is not set
+
+##
+## file: drivers/staging/et131x/Kconfig
+##
+# CONFIG_ET131X is not set
+
+##
+## file: drivers/staging/frontier/Kconfig
+##
+# CONFIG_TRANZPORT is not set
+
+##
+## file: drivers/staging/go7007/Kconfig
+##
+# CONFIG_VIDEO_GO7007 is not set
+
+##
+## file: drivers/staging/hv/Kconfig
+##
+# CONFIG_HYPERV is not set
+
+##
+## file: drivers/staging/iio/Kconfig
+##
+# CONFIG_IIO is not set
+
+##
+## file: drivers/staging/line6/Kconfig
+##
+# CONFIG_LINE6_USB is not set
+
+##
+## file: drivers/staging/mimio/Kconfig
+##
+# CONFIG_INPUT_MIMIO is not set
+
+##
+## file: drivers/staging/otus/Kconfig
+##
+# CONFIG_OTUS is not set
+
+##
+## file: drivers/staging/p9auth/Kconfig
+##
+# CONFIG_PLAN9AUTH is not set
+
+##
+## file: drivers/staging/panel/Kconfig
+##
+# CONFIG_PANEL is not set
+
+##
+## file: drivers/staging/phison/Kconfig
+##
+# CONFIG_IDE_PHISON is not set
+
+##
+## file: drivers/staging/poch/Kconfig
+##
+# CONFIG_POCH is not set
+
+##
+## file: drivers/staging/pohmelfs/Kconfig
+##
+# CONFIG_POHMELFS is not set
+
+##
+## file: drivers/staging/quatech_usb2/Kconfig
+##
+# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
+
+##
+## file: drivers/staging/rar/Kconfig
+##
+# CONFIG_RAR_REGISTER is not set
+
+##
+## file: drivers/staging/rt2860/Kconfig
+##
+# CONFIG_RT2860 is not set
+
+##
+## file: drivers/staging/rt2870/Kconfig
+##
+# CONFIG_RT2870 is not set
+
+##
+## file: drivers/staging/rtl8187se/Kconfig
+##
+# CONFIG_RTL8187SE is not set
+
+##
+## file: drivers/staging/rtl8192e/Kconfig
+##
+# CONFIG_RTL8192E is not set
+
+##
+## file: drivers/staging/serqt_usb2/Kconfig
+##
+# CONFIG_USB_SERIAL_QUATECH2 is not set
+
+##
+## file: drivers/staging/slicoss/Kconfig
+##
+# CONFIG_SLICOSS is not set
+
+##
+## file: drivers/staging/speakup/Kconfig
+##
+CONFIG_SPEAKUP=m
+CONFIG_SPEAKUP_SYNTH_ACNTSA=m
+CONFIG_SPEAKUP_SYNTH_ACNTPC=m
+CONFIG_SPEAKUP_SYNTH_APOLLO=m
+CONFIG_SPEAKUP_SYNTH_AUDPTR=m
+CONFIG_SPEAKUP_SYNTH_BNS=m
+CONFIG_SPEAKUP_SYNTH_DECTLK=m
+CONFIG_SPEAKUP_SYNTH_DECEXT=m
+CONFIG_SPEAKUP_SYNTH_DTLK=m
+CONFIG_SPEAKUP_SYNTH_KEYPC=m
+CONFIG_SPEAKUP_SYNTH_LTLK=m
+CONFIG_SPEAKUP_SYNTH_SOFT=m
+CONFIG_SPEAKUP_SYNTH_SPKOUT=m
+CONFIG_SPEAKUP_SYNTH_TXPRT=m
+CONFIG_SPEAKUP_SYNTH_DUMMY=m
+
+##
+## file: drivers/staging/udlfb/Kconfig
+##
+# CONFIG_FB_UDL is not set
+
+##
+## file: drivers/staging/usbip/Kconfig
+##
+# CONFIG_USB_IP_COMMON is not set
+
+##
+## file: drivers/staging/vme/Kconfig
+##
+# CONFIG_VME_BUS is not set
+
+##
+## file: drivers/staging/vt6655/Kconfig
+##
+# CONFIG_VT6655 is not set
+
+##
+## file: drivers/staging/vt6656/Kconfig
+##
+# CONFIG_VT6656 is not set
+
+##
+## file: drivers/staging/winbond/Kconfig
+##
+# CONFIG_W35UND is not set
+
+##
+## file: drivers/staging/wlan-ng/Kconfig
+##
+# CONFIG_PRISM2_USB is not set
+
+##
## file: drivers/uio/Kconfig
##
CONFIG_UIO=m
@@ -1988,6 +2393,7 @@ CONFIG_UIO_PDRV_GENIRQ=m
CONFIG_UIO_SMX=m
CONFIG_UIO_AEC=m
CONFIG_UIO_SERCOS3=m
+CONFIG_UIO_PCI_GENERIC=m
##
## file: drivers/usb/Kconfig
@@ -2004,14 +2410,20 @@ CONFIG_USB_XUSBATM=m
##
## file: drivers/usb/class/Kconfig
##
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
CONFIG_USB_WDM=m
CONFIG_USB_TMC=m
##
## file: drivers/usb/core/Kconfig
##
+# CONFIG_USB_DEBUG is not set
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-CONFIG_USB_DEVICE_CLASS=y
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+CONFIG_USB_DYNAMIC_MINORS=y
+CONFIG_USB_SUSPEND=y
##
## file: drivers/usb/gadget/Kconfig
@@ -2028,31 +2440,46 @@ CONFIG_USB_EHCI_TT_NEWSCHED=y
# CONFIG_USB_OXU210HP_HCD is not set
CONFIG_USB_ISP116X_HCD=m
# CONFIG_USB_ISP1760_HCD is not set
+# CONFIG_USB_ISP1362_HCD is not set
CONFIG_USB_U132_HCD=m
CONFIG_USB_R8A66597_HCD=m
CONFIG_USB_WHCI_HCD=m
CONFIG_USB_HWA_HCD=m
##
+## file: drivers/usb/image/Kconfig
+##
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+
+##
## file: drivers/usb/misc/Kconfig
##
CONFIG_USB_EMI62=m
CONFIG_USB_EMI26=m
CONFIG_USB_ADUTUX=m
CONFIG_USB_SEVSEG=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
CONFIG_USB_CYPRESS_CY7C63=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_IDMOUSE=m
CONFIG_USB_FTDI_ELAN=m
CONFIG_USB_APPLEDISPLAY=m
CONFIG_USB_LD=m
CONFIG_USB_TRANCEVIBRATOR=m
CONFIG_USB_IOWARRIOR=m
+CONFIG_USB_TEST=m
CONFIG_USB_ISIGHTFW=m
CONFIG_USB_VST=m
##
## file: drivers/usb/misc/sisusbvga/Kconfig
##
+CONFIG_USB_SISUSBVGA=m
CONFIG_USB_SISUSBVGA_CON=y
##
@@ -2120,10 +2547,19 @@ CONFIG_USB_SERIAL_DEBUG=m
##
## file: drivers/usb/storage/Kconfig
##
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
-CONFIG_USB_STORAGE_CYPRESS_ATACB=y
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=m
+CONFIG_USB_STORAGE_FREECOM=m
+CONFIG_USB_STORAGE_ISD200=m
+CONFIG_USB_STORAGE_USBAT=m
+CONFIG_USB_STORAGE_SDDR09=m
+CONFIG_USB_STORAGE_SDDR55=m
+CONFIG_USB_STORAGE_JUMPSHOT=m
+CONFIG_USB_STORAGE_ALAUDA=m
+CONFIG_USB_STORAGE_ONETOUCH=m
+CONFIG_USB_STORAGE_KARMA=m
+CONFIG_USB_STORAGE_CYPRESS_ATACB=m
# CONFIG_USB_LIBUSUAL is not set
##
@@ -2176,6 +2612,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_GENERIC is not set
CONFIG_BACKLIGHT_MBP_NVIDIA=m
# CONFIG_BACKLIGHT_SAHARA is not set
+CONFIG_BACKLIGHT_WM831X=m
##
## file: drivers/video/console/Kconfig
@@ -2222,9 +2659,14 @@ CONFIG_W1_SLAVE_BQ27000=m
##
## file: drivers/watchdog/Kconfig
##
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_WM831X_WATCHDOG=m
CONFIG_WM8350_WATCHDOG=m
+CONFIG_SBC_FITPC2_WATCHDOG=m
CONFIG_ITCO_WDT=m
-# CONFIG_ITCO_VENDOR_SUPPORT is not set
+CONFIG_ITCO_VENDOR_SUPPORT=y
CONFIG_IT87_WDT=m
CONFIG_PC87413_WDT=m
CONFIG_SMSC_SCH311X_WDT=m
@@ -2236,18 +2678,18 @@ CONFIG_SBC_EPX_C3_WATCHDOG=m
##
## file: fs/Kconfig
##
+CONFIG_CUSE=m
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
-CONFIG_CUSE=m
CONFIG_HUGETLBFS=y
CONFIG_MISC_FILESYSTEMS=y
-CONFIG_NILFS2_FS=m
CONFIG_NETWORK_FILESYSTEMS=y
##
## file: fs/9p/Kconfig
##
CONFIG_9P_FS=m
+CONFIG_9P_FSCACHE=y
##
## file: fs/adfs/Kconfig
@@ -2268,6 +2710,25 @@ CONFIG_AFS_FS=m
CONFIG_AFS_FSCACHE=y
##
+## file: fs/aufs/Kconfig
+##
+CONFIG_AUFS_FS=m
+## choice: Maximum number of branches
+CONFIG_AUFS_BRANCH_MAX_127=y
+# CONFIG_AUFS_BRANCH_MAX_511 is not set
+# CONFIG_AUFS_BRANCH_MAX_1023 is not set
+# CONFIG_AUFS_BRANCH_MAX_32767 is not set
+## end choice
+# CONFIG_AUFS_HINOTIFY is not set
+# CONFIG_AUFS_EXPORT is not set
+# CONFIG_AUFS_RDU is not set
+# CONFIG_AUFS_SP_IATTR is not set
+# CONFIG_AUFS_SHWH is not set
+# CONFIG_AUFS_BR_RAMFS is not set
+# CONFIG_AUFS_BR_FUSE is not set
+# CONFIG_AUFS_DEBUG is not set
+
+##
## file: fs/autofs/Kconfig
##
CONFIG_AUTOFS_FS=m
@@ -2380,10 +2841,10 @@ CONFIG_EXT3_FS_SECURITY=y
## file: fs/ext4/Kconfig
##
CONFIG_EXT4_FS=m
-CONFIG_EXT4DEV_COMPAT=y
CONFIG_EXT4_FS_XATTR=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
+# CONFIG_EXT4_DEBUG is not set
##
## file: fs/fat/Kconfig
@@ -2405,6 +2866,7 @@ CONFIG_FSCACHE=m
CONFIG_FSCACHE_STATS=y
# CONFIG_FSCACHE_HISTOGRAM is not set
# CONFIG_FSCACHE_DEBUG is not set
+# CONFIG_FSCACHE_OBJECT_LIST is not set
##
## file: fs/fuse/Kconfig
@@ -2490,9 +2952,9 @@ CONFIG_MINIX_FS=m
## file: fs/ncpfs/Kconfig
##
CONFIG_NCP_FS=m
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
+CONFIG_NCPFS_PACKET_SIGNING=y
+CONFIG_NCPFS_IOCTL_LOCKING=y
+CONFIG_NCPFS_STRONG=y
CONFIG_NCPFS_NFS_NS=y
CONFIG_NCPFS_OS2_NS=y
# CONFIG_NCPFS_SMALLDOS is not set
@@ -2518,6 +2980,11 @@ CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
##
+## file: fs/nilfs2/Kconfig
+##
+CONFIG_NILFS2_FS=m
+
+##
## file: fs/nls/Kconfig
##
CONFIG_NLS=m
@@ -2562,11 +3029,6 @@ CONFIG_NLS_KOI8_U=m
CONFIG_NLS_UTF8=m
##
-## file: fs/notify/Kconfig
-##
-CONFIG_FSNOTIFY=y
-
-##
## file: fs/notify/dnotify/Kconfig
##
CONFIG_DNOTIFY=y
@@ -2604,8 +3066,22 @@ CONFIG_OMFS_FS=m
## file: fs/partitions/Kconfig
##
CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
CONFIG_KARMA_PARTITION=y
+# CONFIG_EFI_PARTITION is not set
# CONFIG_SYSV68_PARTITION is not set
##
@@ -2718,11 +3194,12 @@ CONFIG_TASK_IO_ACCOUNTING=y
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
## choice: RCU Implementation
-CONFIG_CLASSIC_RCU=y
-# CONFIG_TREE_RCU is not set
-# CONFIG_PREEMPT_RCU is not set
+CONFIG_TREE_RCU=y
+# CONFIG_TREE_PREEMPT_RCU is not set
## end choice
# CONFIG_RCU_TRACE is not set
+CONFIG_RCU_FANOUT=32
+# CONFIG_RCU_FANOUT_EXACT is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=17
CONFIG_GROUP_SCHED=y
@@ -2755,7 +3232,6 @@ CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_STRIP_ASM_SYMS=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
@@ -2765,15 +3241,20 @@ CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
+CONFIG_PERF_EVENTS=y
+CONFIG_EVENT_PROFILE=y
+#. Compatibility setting
+# CONFIG_PERF_COUNTERS is not set
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
CONFIG_VM_EVENT_COUNTERS=y
# CONFIG_COMPAT_BRK is not set
## choice: Choose SLAB allocator
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
# CONFIG_SLOB is not set
## end choice
CONFIG_PROFILING=y
-# CONFIG_MARKERS is not set
+# CONFIG_SLOW_WORK_DEBUG is not set
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
@@ -2782,6 +3263,11 @@ CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
##
+## file: kernel/gcov/Kconfig
+##
+# CONFIG_GCOV_KERNEL is not set
+
+##
## file: kernel/Kconfig.hz
##
## choice: Timer frequency
@@ -2792,25 +3278,22 @@ CONFIG_HZ_250=y
## end choice
##
-## file: kernel/gcov/Kconfig
-##
-# CONFIG_GCOV_KERNEL is not set
-
-##
## file: kernel/power/Kconfig
##
CONFIG_PM=y
-# CONFIG_PM_DEBUG is not set
+CONFIG_PM_DEBUG=y
+# CONFIG_PM_VERBOSE is not set
CONFIG_SUSPEND=y
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION=""
+CONFIG_PM_RUNTIME=y
##
## file: kernel/Kconfig.preempt
##
## choice: Preemption Model
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT_NONE is not set
+CONFIG_PREEMPT_VOLUNTARY=y
# CONFIG_PREEMPT is not set
## end choice
@@ -2823,15 +3306,18 @@ CONFIG_HIGH_RES_TIMERS=y
##
## file: kernel/trace/Kconfig
##
+CONFIG_FTRACE=y
# CONFIG_FUNCTION_TRACER is not set
# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_SYSPROF_TRACER is not set
# CONFIG_SCHED_TRACER is not set
-# CONFIG_CONTEXT_SWITCH_TRACER is not set
-# CONFIG_EVENT_TRACER is not set
# CONFIG_FTRACE_SYSCALLS is not set
CONFIG_BOOT_TRACER=y
-# CONFIG_TRACE_BRANCH_PROFILING is not set
+## choice: Branch Profiling
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+## end choice
# CONFIG_POWER_TRACER is not set
# CONFIG_STACK_TRACER is not set
# CONFIG_HW_BRANCH_TRACER is not set
@@ -2839,6 +3325,7 @@ CONFIG_BOOT_TRACER=y
# CONFIG_WORKQUEUE_TRACER is not set
CONFIG_BLK_DEV_IO_TRACE=y
# CONFIG_FTRACE_STARTUP_TEST is not set
+# CONFIG_RING_BUFFER_BENCHMARK is not set
##
## file: lib/Kconfig
@@ -2858,6 +3345,9 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
+#. everything except {DUMP SIGNAL}
+CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6
+CONFIG_STRIP_ASM_SYMS=y
CONFIG_UNUSED_SYMBOLS=y
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
@@ -2870,7 +3360,8 @@ CONFIG_SCHED_DEBUG=y
# CONFIG_SCHEDSTATS is not set
CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_DEBUG_SLAB is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
@@ -2890,11 +3381,13 @@ CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -2910,7 +3403,13 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
##
## file: mm/Kconfig
##
-CONFIG_UNEVICTABLE_LRU=y
+CONFIG_MEMORY_HOTPLUG=y
+CONFIG_MEMORY_HOTREMOVE=y
+CONFIG_MIGRATION=y
+CONFIG_KSM=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_MEMORY_FAILURE=y
+CONFIG_HWPOISON_INJECT=m
##
## file: net/Kconfig
@@ -3178,7 +3677,6 @@ CONFIG_LLC2=m
## file: net/mac80211/Kconfig
##
CONFIG_MAC80211=m
-CONFIG_MAC80211_DEFAULT_PS=y
CONFIG_MAC80211_RC_PID=y
CONFIG_MAC80211_RC_MINSTREL=y
## choice: Default rate control algorithm
@@ -3310,13 +3808,15 @@ CONFIG_PHONET=m
## file: net/rds/Kconfig
##
CONFIG_RDS=m
+CONFIG_RDS_RDMA=m
+CONFIG_RDS_TCP=m
# CONFIG_RDS_DEBUG is not set
##
## file: net/rfkill/Kconfig
##
CONFIG_RFKILL=m
-CONFIG_RFKILL_INPUT=m
+CONFIG_RFKILL_INPUT=y
##
## file: net/rxrpc/Kconfig
@@ -3420,9 +3920,13 @@ CONFIG_WIMAX_DEBUG_LEVEL=8
## file: net/wireless/Kconfig
##
CONFIG_CFG80211=m
+# CONFIG_NL80211_TESTMODE is not set
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
# CONFIG_CFG80211_REG_DEBUG is not set
+CONFIG_CFG80211_DEFAULT_PS=y
# CONFIG_CFG80211_DEBUGFS is not set
CONFIG_WIRELESS_OLD_REGULATORY=y
+CONFIG_CFG80211_WEXT=y
CONFIG_WIRELESS_EXT=y
# CONFIG_WIRELESS_EXT_SYSFS is not set
CONFIG_LIB80211=m
@@ -3432,11 +3936,11 @@ CONFIG_LIB80211=m
## file: net/xfrm/Kconfig
##
CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
+CONFIG_XFRM_SUB_POLICY=y
+CONFIG_XFRM_MIGRATE=y
# CONFIG_XFRM_STATISTICS is not set
CONFIG_NET_KEY=m
-# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_NET_KEY_MIGRATE=y
##
## file: samples/Kconfig
@@ -3454,7 +3958,8 @@ CONFIG_SECURITY_NETWORK_XFRM=y
# CONFIG_SECURITY_PATH is not set
CONFIG_SECURITY_FILE_CAPABILITIES=y
# CONFIG_SECURITY_ROOTPLUG is not set
-CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0
+# CONFIG_INTEL_TXT is not set
+CONFIG_LSM_MMAP_MIN_ADDR=32768
##
## file: security/integrity/ima/Kconfig
@@ -3482,6 +3987,7 @@ CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
## file: sound/Kconfig
##
CONFIG_SOUND=m
+# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set
CONFIG_SND=m
# CONFIG_SOUND_PRIME is not set
@@ -3497,7 +4003,7 @@ CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_HRTIMER=m
CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
# CONFIG_SND_RTCTIMER is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_DYNAMIC_MINORS=y
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
@@ -3522,6 +4028,7 @@ CONFIG_SND_ALS300=m
# CONFIG_SND_AW2 is not set
CONFIG_SND_OXYGEN=m
CONFIG_SND_CS5530=m
+CONFIG_SND_CS5535AUDIO=m
CONFIG_SND_CTXFI=m
CONFIG_SND_DARLA20=m
CONFIG_SND_GINA20=m
@@ -3550,7 +4057,9 @@ CONFIG_SND_VIRTUOSO=m
CONFIG_SND_HDA_HWDEP=y
CONFIG_SND_HDA_RECONFIG=y
CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INPUT_BEEP_MODE=1
CONFIG_SND_HDA_INPUT_JACK=y
+CONFIG_SND_HDA_PATCH_LOADER=y
CONFIG_SND_HDA_CODEC_REALTEK=y
CONFIG_SND_HDA_CODEC_ANALOG=y
CONFIG_SND_HDA_CODEC_SIGMATEL=y
@@ -3558,6 +4067,7 @@ CONFIG_SND_HDA_CODEC_VIA=y
CONFIG_SND_HDA_CODEC_ATIHDMI=y
CONFIG_SND_HDA_CODEC_NVHDMI=y
CONFIG_SND_HDA_CODEC_INTELHDMI=y
+CONFIG_SND_HDA_CODEC_CIRRUS=y
CONFIG_SND_HDA_CODEC_CONEXANT=y
CONFIG_SND_HDA_CODEC_CA0110=y
CONFIG_SND_HDA_CODEC_CMEDIA=y
@@ -3588,6 +4098,7 @@ CONFIG_SND_SPI=y
##
CONFIG_SND_USB=y
CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_USX2Y=m
CONFIG_SND_USB_CAIAQ=m
CONFIG_SND_USB_CAIAQ_INPUT=y
CONFIG_SND_USB_US122L=m
@@ -3600,7 +4111,5 @@ CONFIG_INITRAMFS_SOURCE=""
##
## file: unknown
##
-# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
-# CONFIG_KPROBES is not set
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
+CONFIG_LBD=y
diff --git a/config/defines b/config/defines
index b78f391..7381abb 100644
--- a/config/defines
+++ b/config/defines
@@ -1,11 +1,10 @@
[abi]
-abiname: trunk
+abiname: 2
[base]
arches:
alpha
amd64
- arm
armel
hppa
i386
@@ -16,26 +15,25 @@ arches:
powerpc
s390
sparc
+ sparc64
compiler: gcc-4.3
featuresets:
none
- openvz
vserver
xen
-[featureset-openvz_base]
-enabled: false
-
[featureset-vserver_base]
enabled: false
[featureset-xen_base]
enabled: false
+[description]
+part-long-xen: This kernel also runs on a Xen hypervisor.
+ It supports only unprivileged (domU) operation.
+
[image]
-desc-long-part-xen: This kernel also runs on a Xen hypervisor.
- It supports only unpriviledged (domU) operation.
-initramfs-generators: initramfs-tools yaird initramfs-fallback
+initramfs-generators: initramfs-tools initramfs-fallback
type: plain
[xen]
@@ -44,12 +42,10 @@ versions:
[commands-image-initramfs-generators]
initramfs-tools: update-initramfs
-yaird: mkinitrd.yaird
[relations]
gcc-4.3: gcc-4.3
initramfs-fallback: linux-initramfs-tool
initramfs-tools: initramfs-tools (>= 0.55)
util-vserver: util-vserver (>= 0.30.215)
-yaird: yaird (>= 0.0.13)
diff --git a/config/featureset-openvz/config b/config/featureset-openvz/config
deleted file mode 100644
index 16445fc..0000000
--- a/config/featureset-openvz/config
+++ /dev/null
@@ -1,24 +0,0 @@
-CONFIG_VZ_FAIRSCHED=y
-CONFIG_VE=y
-CONFIG_VE_CALLS=m
-CONFIG_VE_NETDEV=m
-CONFIG_VE_ETHDEV=m
-CONFIG_VZ_DEV=m
-CONFIG_VE_IPTABLES=y
-CONFIG_VZ_WDOG=m
-CONFIG_VZ_CHECKPOINT=m
-CONFIG_SIM_FS=m
-CONFIG_VZ_QUOTA=m
-# CONFIG_VZ_QUOTA_UNLOAD is not set
-CONFIG_VZ_QUOTA_UGID=y
-CONFIG_SYSRQ_DEBUG=y
-CONFIG_BEANCOUNTERS=y
-CONFIG_BC_RSS_ACCOUNTING=y
-CONFIG_BC_IO_ACCOUNTING=y
-CONFIG_BC_IO_SCHED=y
-CONFIG_BC_SWAP_ACCOUNTING=y
-CONFIG_BC_PROC=y
-# CONFIG_BC_DEBUG is not set
-
-# buggy
-# CONFIG_NF_CONNTRACK_IPV6 is not set
diff --git a/config/featureset-openvz/defines b/config/featureset-openvz/defines
deleted file mode 100644
index 487133f..0000000
--- a/config/featureset-openvz/defines
+++ /dev/null
@@ -1,6 +0,0 @@
-[image]
-depends: vzctl
-desc-long-part-openvz: This kernel includes support for OpenVZ container-based virtualization.
-desc-parts: openvz
-desc-short-part-openvz: OpenVZ support
-
diff --git a/config/featureset-vserver/config b/config/featureset-vserver/config
index 98eb263..bc74999 100644
--- a/config/featureset-vserver/config
+++ b/config/featureset-vserver/config
@@ -4,6 +4,11 @@
CONFIG_BLK_DEV_VROOT=y
##
+## file: init/Kconfig
+##
+# CONFIG_CFS_HARD_LIMITS is not set
+
+##
## file: kernel/vserver/Kconfig
##
CONFIG_VSERVER_AUTO_LBACK=y
diff --git a/config/featureset-vserver/defines b/config/featureset-vserver/defines
index 08d3966..601b968 100644
--- a/config/featureset-vserver/defines
+++ b/config/featureset-vserver/defines
@@ -1,5 +1,7 @@
+[description]
+part-long-vserver: This kernel includes support for Linux-VServer virtualization.
+part-short-vserver: Linux-VServer support
+parts: vserver
+
[image]
-desc-long-part-vserver: This kernel includes support for Linux-VServer virtualization.
-desc-parts: vserver
-desc-short-part-vserver: Linux-VServer support
recommends: util-vserver
diff --git a/config/featureset-xen/defines b/config/featureset-xen/defines
index 7365cbf..04c447f 100644
--- a/config/featureset-xen/defines
+++ b/config/featureset-xen/defines
@@ -1,5 +1,5 @@
-[image]
-desc-long-part-xenold: This kernel only runs on a Xen hypervisor.
- It supports both priviledged (dom0) and unpriviledged (domU) operation.
-desc-parts: xenold
-desc-short-part-xenold: oldstyle Xen support
+[description]
+part-long-xenold: This kernel only runs on a Xen hypervisor.
+ It supports both privileged (dom0) and unprivileged (domU) operation.
+part-short-xenold: oldstyle Xen support
+parts: xenold
diff --git a/config/hppa/config b/config/hppa/config
index 43c7e73..7dadaa2 100644
--- a/config/hppa/config
+++ b/config/hppa/config
@@ -32,8 +32,6 @@ CONFIG_PARISC_PAGE_SIZE_4KB=y
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
-#. TODO
-# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM_SIZE=8192
@@ -147,12 +145,12 @@ CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y
# CONFIG_KEYBOARD_ATKBD_RDI_KEYCODES is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_KEYBOARD_HIL_OLD=m
CONFIG_KEYBOARD_HIL=m
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
##
## file: drivers/input/misc/Kconfig
@@ -171,7 +169,6 @@ CONFIG_MOUSE_PS2=m
# CONFIG_MOUSE_LOGIBM is not set
# CONFIG_MOUSE_PC110PAD is not set
# CONFIG_MOUSE_VSXXXAA is not set
-CONFIG_MOUSE_HIL=m
##
## file: drivers/input/serio/Kconfig
@@ -211,6 +208,11 @@ CONFIG_I2O_SCSI=m
CONFIG_I2O_PROC=m
##
+## file: drivers/mfd/Kconfig
+##
+# CONFIG_AB3100_CORE is not set
+
+##
## file: drivers/mmc/Kconfig
##
# CONFIG_MMC is not set
@@ -223,7 +225,6 @@ CONFIG_I2O_PROC=m
##
## file: drivers/net/Kconfig
##
-CONFIG_DUMMY=m
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
CONFIG_LASI_82596=m
@@ -289,6 +290,8 @@ CONFIG_SUNDANCE=m
# CONFIG_SUNDANCE_MMIO is not set
CONFIG_VIA_RHINE=m
# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_VXGE is not set
+# CONFIG_NIU is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
CONFIG_PLIP=m
@@ -390,11 +393,6 @@ CONFIG_PDC_CHASSIS_WARN=y
CONFIG_PDC_STABLE=y
##
-## file: drivers/pci/Kconfig
-##
-# CONFIG_PCI_DEBUG is not set
-
-##
## file: drivers/pci/hotplug/Kconfig
##
# CONFIG_HOTPLUG_PCI is not set
@@ -459,7 +457,6 @@ CONFIG_SCSI_NCR53C8XX_SYNC=20
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_DEBUG is not set
##
## file: drivers/scsi/megaraid/Kconfig.megaraid
@@ -505,17 +502,9 @@ CONFIG_USB=m
# CONFIG_USB_USS720 is not set
##
-## file: drivers/usb/class/Kconfig
-##
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-##
## file: drivers/usb/core/Kconfig
##
CONFIG_USB_DEBUG=y
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
##
## file: drivers/usb/host/Kconfig
@@ -527,40 +516,6 @@ CONFIG_USB_OHCI_HCD=m
# CONFIG_USB_SL811_HCD is not set
##
-## file: drivers/usb/image/Kconfig
-##
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_IDMOUSE is not set
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-# CONFIG_USB_SISUSBVGA is not set
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-
-##
## file: drivers/video/Kconfig
##
CONFIG_FB=y
@@ -618,11 +573,6 @@ CONFIG_LOGO_PARISC_CLUT224=y
# CONFIG_W1 is not set
##
-## file: drivers/watchdog/Kconfig
-##
-# CONFIG_WATCHDOG is not set
-
-##
## file: fs/cramfs/Kconfig
##
CONFIG_CRAMFS=y
@@ -807,3 +757,8 @@ CONFIG_SND_HARMONY=m
##
# CONFIG_SND_HDA_INTEL is not set
+##
+## file: unknown
+##
+CONFIG_MOUSE_HIL=m
+
diff --git a/config/hppa/defines b/config/hppa/defines
index deac300..e0a8e5a 100644
--- a/config/hppa/defines
+++ b/config/hppa/defines
@@ -9,22 +9,26 @@ kernel-arch: parisc
[image]
suggests: palo
-[parisc_base]
-class: 32-bit PA-RISC
+[parisc_description]
+hardware: 32-bit PA-RISC
-[parisc-smp_base]
-class: multiprocessor 32-bit PA-RISC
+[parisc-smp_description]
+hardware: multiprocessor 32-bit PA-RISC
[parisc64_base]
cflags: -fno-cse-follow-jumps
-class: 64-bit PA-RISC
override-host-type: hppa64-linux-gnu
+[parisc64_description]
+hardware: 64-bit PA-RISC
+
[parisc64-smp_base]
cflags: -fno-cse-follow-jumps
-class: multiprocessor 64-bit PA-RISC
override-host-type: hppa64-linux-gnu
+[parisc64-smp_description]
+hardware: multiprocessor 64-bit PA-RISC
+
[relations]
gcc-4.3: gcc-4.3, binutils-hppa64, gcc-4.3-hppa64
diff --git a/config/i386/config b/config/i386/config
deleted file mode 100644
index 1b96b34..0000000
--- a/config/i386/config
+++ /dev/null
@@ -1,1550 +0,0 @@
-##
-## file: crypto/Kconfig
-##
-CONFIG_CRYPTO_CRC32C_INTEL=m
-
-##
-## file: drivers/ata/Kconfig
-##
-# CONFIG_PATA_CS5535 is not set
-# CONFIG_PATA_CS5536 is not set
-# CONFIG_PATA_SIS is not set
-
-##
-## file: drivers/atm/Kconfig
-##
-CONFIG_ATM_DRIVERS=y
-CONFIG_ATM_TCP=m
-CONFIG_ATM_LANAI=m
-CONFIG_ATM_ENI=m
-# CONFIG_ATM_ENI_DEBUG is not set
-# CONFIG_ATM_ENI_TUNE_BURST is not set
-CONFIG_ATM_FIRESTREAM=m
-CONFIG_ATM_ZATM=m
-# CONFIG_ATM_ZATM_DEBUG is not set
-CONFIG_ATM_NICSTAR=m
-# CONFIG_ATM_NICSTAR_USE_SUNI is not set
-# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
-CONFIG_ATM_IDT77252=m
-# CONFIG_ATM_IDT77252_DEBUG is not set
-# CONFIG_ATM_IDT77252_RCV_ALL is not set
-CONFIG_ATM_AMBASSADOR=m
-# CONFIG_ATM_AMBASSADOR_DEBUG is not set
-CONFIG_ATM_HORIZON=m
-# CONFIG_ATM_HORIZON_DEBUG is not set
-CONFIG_ATM_IA=m
-# CONFIG_ATM_IA_DEBUG is not set
-# CONFIG_ATM_FORE200E_USE_TASKLET is not set
-CONFIG_ATM_FORE200E_TX_RETRY=16
-CONFIG_ATM_FORE200E_DEBUG=0
-CONFIG_ATM_HE=m
-CONFIG_ATM_HE_USE_SUNI=y
-
-##
-## file: drivers/auxdisplay/Kconfig
-##
-CONFIG_KS0108=m
-CONFIG_KS0108_PORT=0x378
-CONFIG_KS0108_DELAY=2
-CONFIG_CFAG12864B=m
-CONFIG_CFAG12864B_RATE=20
-
-##
-## file: drivers/block/Kconfig
-##
-CONFIG_BLK_DEV_FD=m
-CONFIG_BLK_DEV_XD=m
-CONFIG_PARIDE=m
-CONFIG_BLK_CPQ_DA=m
-CONFIG_BLK_CPQ_CISS_DA=m
-CONFIG_CISS_SCSI_TAPE=y
-CONFIG_BLK_DEV_DAC960=m
-CONFIG_BLK_DEV_UMEM=m
-CONFIG_BLK_DEV_SX8=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-
-##
-## file: drivers/block/paride/Kconfig
-##
-CONFIG_PARIDE_PD=m
-CONFIG_PARIDE_PCD=m
-CONFIG_PARIDE_PF=m
-CONFIG_PARIDE_PT=m
-CONFIG_PARIDE_PG=m
-CONFIG_PARIDE_ATEN=m
-CONFIG_PARIDE_BPCK=m
-CONFIG_PARIDE_BPCK6=m
-CONFIG_PARIDE_COMM=m
-CONFIG_PARIDE_DSTR=m
-CONFIG_PARIDE_FIT2=m
-CONFIG_PARIDE_FIT3=m
-CONFIG_PARIDE_EPAT=m
-# CONFIG_PARIDE_EPATC8 is not set
-CONFIG_PARIDE_EPIA=m
-CONFIG_PARIDE_FRIQ=m
-CONFIG_PARIDE_FRPW=m
-CONFIG_PARIDE_KBIC=m
-CONFIG_PARIDE_KTTI=m
-CONFIG_PARIDE_ON20=m
-CONFIG_PARIDE_ON26=m
-
-##
-## file: drivers/bluetooth/Kconfig
-##
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-
-##
-## file: drivers/char/Kconfig
-##
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL_NONSTANDARD=y
-CONFIG_ROCKETPORT=m
-CONFIG_CYCLADES=m
-# CONFIG_CYZ_INTR is not set
-# CONFIG_ESPSERIAL is not set
-# CONFIG_ISI is not set
-CONFIG_SYNCLINK=m
-CONFIG_SYNCLINKMP=m
-CONFIG_N_HDLC=m
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-CONFIG_SX=m
-CONFIG_STALDRV=y
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-CONFIG_PPDEV=m
-CONFIG_NVRAM=m
-CONFIG_DTLK=m
-CONFIG_R3964=m
-CONFIG_APPLICOM=m
-CONFIG_SONYPI=m
-CONFIG_MWAVE=m
-CONFIG_SCx200_GPIO=m
-CONFIG_CS5535_GPIO=m
-CONFIG_RAW_DRIVER=m
-CONFIG_MAX_RAW_DEVS=256
-CONFIG_HPET=y
-CONFIG_HPET_MMAP=y
-CONFIG_HANGCHECK_TIMER=m
-
-##
-## file: drivers/char/agp/Kconfig
-##
-CONFIG_AGP=m
-CONFIG_AGP_ALI=m
-CONFIG_AGP_ATI=m
-CONFIG_AGP_AMD=m
-CONFIG_AGP_AMD64=m
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_NVIDIA=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_SWORKS=m
-CONFIG_AGP_VIA=m
-CONFIG_AGP_EFFICEON=m
-
-##
-## file: drivers/char/ipmi/Kconfig
-##
-CONFIG_IPMI_HANDLER=m
-# CONFIG_IPMI_PANIC_EVENT is not set
-CONFIG_IPMI_DEVICE_INTERFACE=m
-CONFIG_IPMI_SI=m
-CONFIG_IPMI_WATCHDOG=m
-CONFIG_IPMI_POWEROFF=m
-
-##
-## file: drivers/cpuidle/Kconfig
-##
-CONFIG_CPU_IDLE=y
-
-##
-## file: drivers/crypto/Kconfig
-##
-CONFIG_CRYPTO_DEV_GEODE=m
-
-##
-## file: drivers/dma/Kconfig
-##
-CONFIG_DMADEVICES=y
-CONFIG_INTEL_IOATDMA=m
-CONFIG_NET_DMA=y
-
-##
-## file: drivers/firmware/Kconfig
-##
-CONFIG_EDD=m
-# CONFIG_EDD_OFF is not set
-CONFIG_EFI_VARS=m
-CONFIG_DELL_RBU=m
-CONFIG_DCDBAS=m
-CONFIG_DMIID=y
-CONFIG_ISCSI_IBFT_FIND=y
-CONFIG_ISCSI_IBFT=y
-
-##
-## file: drivers/gpu/drm/Kconfig
-##
-CONFIG_DRM=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_I810=m
-## choice: Intel 830M, 845G, 852GM, 855GM, 865G
-CONFIG_DRM_I830=m
-CONFIG_DRM_I915=m
-# CONFIG_DRM_I915_KMS is not set
-## end choice
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-
-##
-## file: drivers/hid/usbhid/Kconfig
-##
-CONFIG_USB_HID=m
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-
-##
-## file: drivers/hwmon/Kconfig
-##
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_K8TEMP=m
-CONFIG_SENSORS_ASB100=m
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_FSCHER=m
-CONFIG_SENSORS_FSCPOS=m
-CONFIG_SENSORS_GL518SM=m
-CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_PC87360=m
-CONFIG_SENSORS_PCF8591=m
-CONFIG_SENSORS_SIS5595=m
-CONFIG_SENSORS_SMSC47M1=m
-CONFIG_SENSORS_SMSC47B397=m
-CONFIG_SENSORS_VIA686A=m
-CONFIG_SENSORS_W83781D=m
-CONFIG_SENSORS_W83L785TS=m
-CONFIG_SENSORS_W83627HF=m
-CONFIG_SENSORS_HDAPS=m
-
-##
-## file: drivers/i2c/Kconfig
-##
-CONFIG_I2C=m
-CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/busses/Kconfig
-##
-CONFIG_I2C_ALI1535=m
-CONFIG_I2C_ALI1563=m
-CONFIG_I2C_ALI15X3=m
-CONFIG_I2C_AMD756=m
-CONFIG_I2C_AMD756_S4882=m
-CONFIG_I2C_AMD8111=m
-CONFIG_I2C_I801=m
-CONFIG_I2C_PIIX4=m
-CONFIG_I2C_NFORCE2=m
-CONFIG_I2C_SIS5595=m
-CONFIG_I2C_SIS630=m
-CONFIG_I2C_SIS96X=m
-CONFIG_I2C_VIA=m
-CONFIG_I2C_VIAPRO=m
-CONFIG_I2C_PARPORT=m
-CONFIG_I2C_PARPORT_LIGHT=m
-CONFIG_I2C_VOODOO3=m
-CONFIG_I2C_PCA_ISA=m
-CONFIG_SCx200_I2C=m
-CONFIG_SCx200_I2C_SCL=12
-CONFIG_SCx200_I2C_SDA=13
-CONFIG_SCx200_ACB=m
-
-##
-## file: drivers/i2c/chips/Kconfig
-##
-CONFIG_SENSORS_PCF8574=m
-
-##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=m
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=m
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEACPI=y
-CONFIG_IDE_GENERIC=m
-CONFIG_BLK_DEV_CMD640=y
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-CONFIG_BLK_DEV_IDEPNP=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=m
-CONFIG_BLK_DEV_OPTI621=m
-CONFIG_BLK_DEV_RZ1000=m
-CONFIG_BLK_DEV_AEC62XX=m
-CONFIG_BLK_DEV_ALI15X3=m
-CONFIG_BLK_DEV_AMD74XX=m
-CONFIG_BLK_DEV_ATIIXP=m
-CONFIG_BLK_DEV_CMD64X=m
-CONFIG_BLK_DEV_TRIFLEX=m
-CONFIG_BLK_DEV_CY82C693=m
-CONFIG_BLK_DEV_CS5520=m
-CONFIG_BLK_DEV_CS5530=m
-CONFIG_BLK_DEV_CS5535=m
-CONFIG_BLK_DEV_CS5536=m
-CONFIG_BLK_DEV_HPT366=m
-CONFIG_BLK_DEV_SC1200=m
-CONFIG_BLK_DEV_PIIX=m
-CONFIG_BLK_DEV_NS87415=m
-CONFIG_BLK_DEV_PDC202XX_OLD=m
-CONFIG_BLK_DEV_PDC202XX_NEW=m
-CONFIG_BLK_DEV_SVWKS=m
-CONFIG_BLK_DEV_SIIMAGE=m
-CONFIG_BLK_DEV_SIS5513=m
-CONFIG_BLK_DEV_SLC90E66=m
-CONFIG_BLK_DEV_TRM290=m
-CONFIG_BLK_DEV_VIA82CXXX=m
-# CONFIG_BLK_DEV_4DRIVES is not set
-# CONFIG_BLK_DEV_ALI14XX is not set
-# CONFIG_BLK_DEV_DTC2278 is not set
-# CONFIG_BLK_DEV_HT6560B is not set
-# CONFIG_BLK_DEV_QD65XX is not set
-# CONFIG_BLK_DEV_UMC8672 is not set
-
-##
-## file: drivers/input/gameport/Kconfig
-##
-CONFIG_GAMEPORT=m
-CONFIG_GAMEPORT_NS558=m
-CONFIG_GAMEPORT_L4=m
-CONFIG_GAMEPORT_EMU10K1=m
-CONFIG_GAMEPORT_FM801=m
-
-##
-## file: drivers/input/joystick/Kconfig
-##
-CONFIG_INPUT_JOYSTICK=y
-
-##
-## file: drivers/input/keyboard/Kconfig
-##
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_SUNKBD=m
-CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_XTKBD=m
-CONFIG_KEYBOARD_NEWTON=m
-
-##
-## file: drivers/input/misc/Kconfig
-##
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_PCSPKR=m
-CONFIG_INPUT_APANEL=m
-CONFIG_INPUT_WISTRON_BTNS=m
-CONFIG_INPUT_ATLAS_BTNS=m
-CONFIG_INPUT_UINPUT=m
-
-##
-## file: drivers/input/mouse/Kconfig
-##
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=m
-# CONFIG_MOUSE_PS2_OLPC is not set
-CONFIG_MOUSE_SERIAL=m
-CONFIG_MOUSE_APPLETOUCH=m
-CONFIG_MOUSE_BCM5974=m
-CONFIG_MOUSE_INPORT=m
-# CONFIG_MOUSE_ATIXL is not set
-CONFIG_MOUSE_LOGIBM=m
-CONFIG_MOUSE_PC110PAD=m
-CONFIG_MOUSE_VSXXXAA=m
-
-##
-## file: drivers/input/serio/Kconfig
-##
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=m
-CONFIG_SERIO_CT82C710=m
-CONFIG_SERIO_PARKBD=m
-CONFIG_SERIO_PCIPS2=m
-CONFIG_SERIO_LIBPS2=y
-CONFIG_SERIO_RAW=m
-
-##
-## file: drivers/input/tablet/Kconfig
-##
-CONFIG_INPUT_TABLET=y
-CONFIG_TABLET_USB_ACECAD=m
-CONFIG_TABLET_USB_AIPTEK=m
-CONFIG_TABLET_USB_GTCO=m
-CONFIG_TABLET_USB_KBTAB=m
-CONFIG_TABLET_USB_WACOM=m
-
-##
-## file: drivers/input/touchscreen/Kconfig
-##
-CONFIG_INPUT_TOUCHSCREEN=y
-
-##
-## file: drivers/isdn/Kconfig
-##
-CONFIG_ISDN=y
-CONFIG_ISDN_I4L=m
-CONFIG_ISDN_CAPI=m
-
-##
-## file: drivers/isdn/act2000/Kconfig
-##
-CONFIG_ISDN_DRV_ACT2000=m
-
-##
-## file: drivers/isdn/capi/Kconfig
-##
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
-CONFIG_ISDN_CAPI_CAPI20=m
-CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
-CONFIG_ISDN_CAPI_CAPIDRV=m
-
-##
-## file: drivers/isdn/hardware/avm/Kconfig
-##
-CONFIG_CAPI_AVM=y
-CONFIG_ISDN_DRV_AVMB1_B1ISA=m
-CONFIG_ISDN_DRV_AVMB1_B1PCI=m
-CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
-CONFIG_ISDN_DRV_AVMB1_T1ISA=m
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
-CONFIG_ISDN_DRV_AVMB1_T1PCI=m
-CONFIG_ISDN_DRV_AVMB1_C4=m
-
-##
-## file: drivers/isdn/hardware/eicon/Kconfig
-##
-CONFIG_CAPI_EICON=y
-CONFIG_ISDN_DIVAS=m
-CONFIG_ISDN_DIVAS_BRIPCI=y
-CONFIG_ISDN_DIVAS_PRIPCI=y
-CONFIG_ISDN_DIVAS_DIVACAPI=m
-CONFIG_ISDN_DIVAS_USERIDI=m
-CONFIG_ISDN_DIVAS_MAINT=m
-
-##
-## file: drivers/isdn/hisax/Kconfig
-##
-CONFIG_ISDN_DRV_HISAX=m
-CONFIG_HISAX_EURO=y
-CONFIG_DE_AOC=y
-# CONFIG_HISAX_NO_SENDCOMPLETE is not set
-# CONFIG_HISAX_NO_LLC is not set
-# CONFIG_HISAX_NO_KEYPAD is not set
-CONFIG_HISAX_1TR6=y
-CONFIG_HISAX_NI1=y
-CONFIG_HISAX_MAX_CARDS=8
-CONFIG_HISAX_16_0=y
-CONFIG_HISAX_16_3=y
-CONFIG_HISAX_TELESPCI=y
-CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_AVM_A1=y
-CONFIG_HISAX_FRITZPCI=y
-CONFIG_HISAX_AVM_A1_PCMCIA=y
-CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_IX1MICROR2=y
-CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_ASUSCOM=y
-CONFIG_HISAX_TELEINT=y
-CONFIG_HISAX_HFCS=y
-CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_SPORTSTER=y
-CONFIG_HISAX_MIC=y
-CONFIG_HISAX_NETJET=y
-CONFIG_HISAX_NETJET_U=y
-CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_ISURF=y
-CONFIG_HISAX_HSTSAPHIR=y
-CONFIG_HISAX_BKM_A4T=y
-CONFIG_HISAX_SCT_QUADRO=y
-CONFIG_HISAX_GAZEL=y
-CONFIG_HISAX_HFC_PCI=y
-CONFIG_HISAX_W6692=y
-CONFIG_HISAX_HFC_SX=y
-CONFIG_HISAX_ENTERNOW_PCI=y
-# CONFIG_HISAX_DEBUG is not set
-CONFIG_HISAX_SEDLBAUER_CS=m
-CONFIG_HISAX_ELSA_CS=m
-CONFIG_HISAX_AVM_A1_CS=m
-CONFIG_HISAX_TELES_CS=m
-CONFIG_HISAX_ST5481=m
-CONFIG_HISAX_HFCUSB=m
-CONFIG_HISAX_HFC4S8S=m
-CONFIG_HISAX_FRITZ_PCIPNP=m
-
-##
-## file: drivers/isdn/i4l/Kconfig
-##
-CONFIG_ISDN_PPP=y
-CONFIG_ISDN_PPP_VJ=y
-CONFIG_ISDN_MPP=y
-CONFIG_IPPP_FILTER=y
-CONFIG_ISDN_PPP_BSDCOMP=m
-CONFIG_ISDN_AUDIO=y
-CONFIG_ISDN_TTY_FAX=y
-CONFIG_ISDN_X25=y
-# CONFIG_ISDN_DIVERSION is not set
-
-##
-## file: drivers/isdn/icn/Kconfig
-##
-CONFIG_ISDN_DRV_ICN=m
-
-##
-## file: drivers/isdn/pcbit/Kconfig
-##
-CONFIG_ISDN_DRV_PCBIT=m
-
-##
-## file: drivers/isdn/sc/Kconfig
-##
-CONFIG_ISDN_DRV_SC=m
-
-##
-## file: drivers/leds/Kconfig
-##
-CONFIG_LEDS_WRAP=m
-CONFIG_LEDS_CLEVO_MAIL=m
-
-##
-## file: drivers/lguest/Kconfig
-##
-CONFIG_LGUEST=m
-
-##
-## file: drivers/macintosh/Kconfig
-##
-# CONFIG_MACINTOSH_DRIVERS is not set
-
-##
-## file: drivers/media/Kconfig
-##
-CONFIG_DVB_CORE=m
-
-##
-## file: drivers/media/radio/Kconfig
-##
-CONFIG_RADIO_CADET=m
-CONFIG_RADIO_RTRACK=m
-CONFIG_RADIO_RTRACK2=m
-CONFIG_RADIO_AZTECH=m
-CONFIG_RADIO_GEMTEK=m
-CONFIG_RADIO_GEMTEK_PCI=m
-CONFIG_RADIO_MAXIRADIO=m
-CONFIG_RADIO_MAESTRO=m
-CONFIG_RADIO_SF16FMI=m
-CONFIG_RADIO_SF16FMR2=m
-CONFIG_RADIO_TERRATEC=m
-CONFIG_RADIO_TRUST=m
-CONFIG_RADIO_TYPHOON=m
-CONFIG_RADIO_TYPHOON_PROC_FS=y
-CONFIG_RADIO_ZOLTRIX=m
-CONFIG_USB_DSBR=m
-
-##
-## file: drivers/message/i2o/Kconfig
-##
-CONFIG_I2O=m
-CONFIG_I2O_CONFIG=m
-CONFIG_I2O_BLOCK=m
-CONFIG_I2O_SCSI=m
-CONFIG_I2O_PROC=m
-
-##
-## file: drivers/misc/Kconfig
-##
-CONFIG_IBM_ASM=m
-CONFIG_PHANTOM=m
-CONFIG_HP_ILO=m
-CONFIG_DELL_LAPTOP=m
-
-##
-## file: drivers/mmc/Kconfig
-##
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-
-##
-## file: drivers/mmc/card/Kconfig
-##
-CONFIG_MMC_BLOCK=m
-
-##
-## file: drivers/mtd/Kconfig
-##
-CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=m
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_BLOCK_RO=m
-CONFIG_FTL=m
-CONFIG_NFTL=m
-CONFIG_NFTL_RW=y
-CONFIG_INFTL=m
-
-##
-## file: drivers/mtd/chips/Kconfig
-##
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=m
-CONFIG_MTD_CFI_AMDSTD=m
-CONFIG_MTD_CFI_STAA=m
-CONFIG_MTD_RAM=m
-CONFIG_MTD_ROM=m
-CONFIG_MTD_ABSENT=m
-
-##
-## file: drivers/mtd/devices/Kconfig
-##
-CONFIG_MTD_PMC551=m
-# CONFIG_MTD_PMC551_BUGFIX is not set
-# CONFIG_MTD_PMC551_DEBUG is not set
-CONFIG_MTD_SLRAM=m
-CONFIG_MTD_PHRAM=m
-CONFIG_MTD_MTDRAM=m
-CONFIG_MTDRAM_TOTAL_SIZE=4096
-CONFIG_MTDRAM_ERASE_SIZE=128
-CONFIG_MTD_BLOCK2MTD=m
-CONFIG_MTD_DOC2000=m
-CONFIG_MTD_DOC2001=m
-CONFIG_MTD_DOC2001PLUS=m
-# CONFIG_MTD_DOCPROBE_ADVANCED is not set
-CONFIG_MTD_DOCPROBE_ADDRESS=0
-
-##
-## file: drivers/mtd/maps/Kconfig
-##
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_PHYSMAP=m
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-CONFIG_MTD_PHYSMAP_START=0x8000000
-CONFIG_MTD_PHYSMAP_LEN=0x4000000
-CONFIG_MTD_PHYSMAP_BANKWIDTH=2
-CONFIG_MTD_SC520CDP=m
-CONFIG_MTD_NETSC520=m
-CONFIG_MTD_TS5500=m
-CONFIG_MTD_SBC_GXX=m
-CONFIG_MTD_SCx200_DOCFLASH=m
-# CONFIG_MTD_AMD76XROM is not set
-# CONFIG_MTD_ICHXROM is not set
-# CONFIG_MTD_SCB2_FLASH is not set
-CONFIG_MTD_NETtel=m
-CONFIG_MTD_DILNETPC=m
-CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000
-# CONFIG_MTD_L440GX is not set
-CONFIG_MTD_PCI=m
-CONFIG_MTD_PCMCIA=m
-# CONFIG_MTD_PCMCIA_ANONYMOUS is not set
-
-##
-## file: drivers/mtd/nand/Kconfig
-##
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-CONFIG_MTD_NAND_DISKONCHIP=m
-# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
-# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
-CONFIG_MTD_NAND_PLATFORM=m
-
-##
-## file: drivers/net/Kconfig
-##
-CONFIG_DUMMY=m
-CONFIG_NET_SB1000=m
-CONFIG_HAPPYMEAL=m
-CONFIG_SUNGEM=m
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_EL1=m
-CONFIG_EL2=m
-CONFIG_ELPLUS=m
-CONFIG_EL16=m
-CONFIG_EL3=m
-CONFIG_3C515=m
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_LANCE=m
-CONFIG_NET_VENDOR_SMC=y
-CONFIG_WD80x3=m
-CONFIG_ULTRA=m
-CONFIG_SMC9194=m
-CONFIG_NET_VENDOR_RACAL=y
-CONFIG_NI52=m
-CONFIG_NI65=m
-CONFIG_AT1700=m
-CONFIG_DEPCA=m
-CONFIG_HP100=m
-CONFIG_NET_ISA=y
-CONFIG_E2100=m
-CONFIG_EWRK3=m
-CONFIG_EEXPRESS=m
-CONFIG_EEXPRESS_PRO=m
-CONFIG_HPLAN_PLUS=m
-CONFIG_HPLAN=m
-CONFIG_LP486E=m
-CONFIG_ETH16I=m
-CONFIG_NE2000=m
-CONFIG_ZNET=m
-CONFIG_SEEQ8005=m
-CONFIG_NET_PCI=y
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_AC3200=m
-CONFIG_APRICOT=m
-CONFIG_B44=m
-CONFIG_FORCEDETH=m
-CONFIG_CS89x0=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-CONFIG_8139TOO_PIO=y
-CONFIG_8139TOO_TUNE_TWISTER=y
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-# CONFIG_VIA_RHINE_MMIO is not set
-CONFIG_ATP=m
-CONFIG_DE600=m
-CONFIG_DE620=m
-CONFIG_FDDI=y
-CONFIG_SKFP=m
-CONFIG_HIPPI=y
-CONFIG_ROADRUNNER=m
-# CONFIG_ROADRUNNER_LARGE_RINGS is not set
-CONFIG_PLIP=m
-CONFIG_NET_FC=y
-# CONFIG_NETPOLL_TRAP is not set
-
-##
-## file: drivers/net/arcnet/Kconfig
-##
-CONFIG_ARCNET=m
-CONFIG_ARCNET_1201=m
-CONFIG_ARCNET_1051=m
-CONFIG_ARCNET_RAW=m
-CONFIG_ARCNET_CAP=m
-CONFIG_ARCNET_COM90xx=m
-CONFIG_ARCNET_COM90xxIO=m
-CONFIG_ARCNET_RIM_I=m
-CONFIG_ARCNET_COM20020=m
-CONFIG_ARCNET_COM20020_ISA=m
-CONFIG_ARCNET_COM20020_PCI=m
-
-##
-## file: drivers/net/hamradio/Kconfig
-##
-CONFIG_BPQETHER=m
-CONFIG_SCC=m
-# CONFIG_SCC_DELAY is not set
-# CONFIG_SCC_TRXECHO is not set
-CONFIG_BAYCOM_SER_FDX=m
-CONFIG_BAYCOM_SER_HDX=m
-CONFIG_BAYCOM_PAR=m
-CONFIG_BAYCOM_EPP=m
-CONFIG_YAM=m
-
-##
-## file: drivers/net/irda/Kconfig
-##
-CONFIG_IRTTY_SIR=m
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_NSC_FIR=m
-CONFIG_WINBOND_FIR=m
-CONFIG_TOSHIBA_FIR=m
-CONFIG_SMC_IRCC_FIR=m
-CONFIG_ALI_FIR=m
-CONFIG_VLSI_FIR=m
-CONFIG_VIA_FIR=m
-
-##
-## file: drivers/net/pcmcia/Kconfig
-##
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-CONFIG_PCMCIA_AXNET=m
-CONFIG_ARCNET_COM20020_CS=m
-
-##
-## file: drivers/net/tulip/Kconfig
-##
-CONFIG_NET_TULIP=y
-CONFIG_DE2104X=m
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_PCMCIA_XIRCOM=m
-
-##
-## file: drivers/net/wan/Kconfig
-##
-CONFIG_WAN=y
-CONFIG_HOSTESS_SV11=m
-CONFIG_COSA=m
-CONFIG_LANMEDIA=m
-CONFIG_SEALEVEL_4021=m
-CONFIG_PCI200SYN=m
-CONFIG_WANXL=m
-CONFIG_PC300=m
-CONFIG_PC300_MLPPP=y
-CONFIG_N2=m
-CONFIG_C101=m
-CONFIG_FARSYNC=m
-CONFIG_DSCC4=m
-CONFIG_DSCC4_PCISYNC=y
-CONFIG_DSCC4_PCI_RST=y
-CONFIG_DLCI=m
-CONFIG_DLCI_MAX=8
-CONFIG_SDLA=m
-CONFIG_CYCLADES_SYNC=m
-CONFIG_CYCLOMX_X25=y
-CONFIG_LAPBETHER=m
-CONFIG_X25_ASY=m
-CONFIG_SBNI=m
-# CONFIG_SBNI_MULTILINE is not set
-
-##
-## file: drivers/net/wireless/Kconfig
-##
-CONFIG_WLAN_PRE80211=y
-CONFIG_STRIP=m
-CONFIG_ARLAN=m
-CONFIG_WAVELAN=m
-CONFIG_PCMCIA_WAVELAN=m
-CONFIG_PCMCIA_NETWAVE=m
-CONFIG_WLAN_80211=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-CONFIG_USB_ZD1201=m
-
-##
-## file: drivers/net/wireless/ipw2x00/Kconfig
-##
-CONFIG_IPW2100=m
-CONFIG_IPW2100_MONITOR=y
-# CONFIG_IPW2100_DEBUG is not set
-
-##
-## file: drivers/net/wireless/orinoco/Kconfig
-##
-CONFIG_HERMES=m
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-CONFIG_PCI_HERMES=m
-CONFIG_PCMCIA_HERMES=m
-
-##
-## file: drivers/pci/Kconfig
-##
-CONFIG_PCI_MSI=y
-# CONFIG_PCI_DEBUG is not set
-CONFIG_HT_IRQ=y
-
-##
-## file: drivers/pci/hotplug/Kconfig
-##
-CONFIG_HOTPLUG_PCI=m
-CONFIG_HOTPLUG_PCI_FAKE=m
-CONFIG_HOTPLUG_PCI_COMPAQ=m
-CONFIG_HOTPLUG_PCI_IBM=m
-CONFIG_HOTPLUG_PCI_ACPI=m
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
-CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
-CONFIG_HOTPLUG_PCI_SHPC=m
-
-##
-## file: drivers/pci/pcie/Kconfig
-##
-CONFIG_PCIEPORTBUS=y
-CONFIG_HOTPLUG_PCI_PCIE=m
-
-##
-## file: drivers/pci/pcie/aer/Kconfig
-##
-CONFIG_PCIEAER=y
-
-##
-## file: drivers/pcmcia/Kconfig
-##
-CONFIG_PCCARD=m
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
-CONFIG_CARDBUS=y
-CONFIG_YENTA=m
-CONFIG_PD6729=m
-CONFIG_I82092=m
-CONFIG_I82365=m
-CONFIG_TCIC=m
-
-##
-## file: drivers/platform/x86/Kconfig
-##
-CONFIG_TC1100_WMI=m
-
-##
-## file: drivers/pnp/Kconfig
-##
-CONFIG_PNP=y
-
-##
-## file: drivers/pnp/isapnp/Kconfig
-##
-CONFIG_ISAPNP=y
-
-##
-## file: drivers/pnp/pnpbios/Kconfig
-##
-CONFIG_PNPBIOS=y
-CONFIG_PNPBIOS_PROC_FS=y
-
-##
-## file: drivers/power/Kconfig
-##
-CONFIG_POWER_SUPPLY=m
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-CONFIG_PDA_POWER=m
-CONFIG_BATTERY_DS2760=m
-
-##
-## file: drivers/rtc/Kconfig
-##
-CONFIG_RTC_DRV_CMOS=y
-
-##
-## file: drivers/scsi/Kconfig
-##
-CONFIG_SCSI_DPT_I2O=m
-CONFIG_SCSI_IN2000=m
-CONFIG_SCSI_ARCMSR=m
-CONFIG_SCSI_BUSLOGIC=m
-# CONFIG_SCSI_FLASHPOINT is not set
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_DTC3280=m
-CONFIG_SCSI_EATA=m
-CONFIG_SCSI_EATA_TAGGED_QUEUE=y
-CONFIG_SCSI_EATA_LINKED_COMMANDS=y
-CONFIG_SCSI_EATA_MAX_TAGS=16
-CONFIG_SCSI_EATA_PIO=m
-CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_GDTH=m
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_GENERIC_NCR53C400 is not set
-CONFIG_SCSI_IPS=m
-CONFIG_SCSI_INITIO=m
-# CONFIG_SCSI_INIA100 is not set
-CONFIG_SCSI_NCR53C406A=m
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_IPR=m
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP is not set
-CONFIG_SCSI_PAS16=m
-CONFIG_SCSI_QLOGIC_FAS=m
-CONFIG_SCSI_QLOGIC_1280=m
-CONFIG_SCSI_SYM53C416=m
-CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_T128=m
-CONFIG_SCSI_U14_34F=m
-CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y
-CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y
-CONFIG_SCSI_U14_34F_MAX_TAGS=8
-CONFIG_SCSI_ULTRASTOR=m
-CONFIG_SCSI_NSP32=m
-CONFIG_SCSI_DEBUG=m
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx
-##
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
-
-##
-## file: drivers/scsi/megaraid/Kconfig.megaraid
-##
-CONFIG_MEGARAID_NEWGEN=y
-CONFIG_MEGARAID_MM=m
-CONFIG_MEGARAID_MAILBOX=m
-CONFIG_MEGARAID_LEGACY=m
-
-##
-## file: drivers/scsi/pcmcia/Kconfig
-##
-CONFIG_PCMCIA_AHA152X=m
-CONFIG_PCMCIA_FDOMAIN=m
-CONFIG_PCMCIA_NINJA_SCSI=m
-CONFIG_PCMCIA_QLOGIC=m
-CONFIG_PCMCIA_SYM53C500=m
-
-##
-## file: drivers/serial/Kconfig
-##
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_EXAR_ST16C554=m
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-CONFIG_SERIAL_8250_RSA=y
-CONFIG_SERIAL_JSM=m
-
-##
-## file: drivers/telephony/Kconfig
-##
-CONFIG_PHONE=m
-CONFIG_PHONE_IXJ=m
-CONFIG_PHONE_IXJ_PCMCIA=m
-
-##
-## file: drivers/thermal/Kconfig
-##
-CONFIG_THERMAL=m
-CONFIG_THERMAL_HWMON=y
-
-##
-## file: drivers/usb/Kconfig
-##
-CONFIG_USB=m
-CONFIG_USB_USS720=m
-
-##
-## file: drivers/usb/atm/Kconfig
-##
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-
-##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-
-##
-## file: drivers/usb/host/Kconfig
-##
-CONFIG_USB_EHCI_HCD=m
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_HCD_SSB is not set
-CONFIG_USB_UHCI_HCD=m
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-##
-## file: drivers/usb/image/Kconfig
-##
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_TEST=m
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-
-##
-## file: drivers/video/Kconfig
-##
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-CONFIG_FB_CIRRUS=m
-CONFIG_FB_PM2=m
-CONFIG_FB_PM2_FIFO_DISCONNECT=y
-CONFIG_FB_CYBER2000=m
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-CONFIG_FB_VGA16=m
-CONFIG_FB_UVESA=m
-CONFIG_FB_VESA=y
-CONFIG_FB_EFI=y
-CONFIG_FB_N411=m
-CONFIG_FB_HGA=m
-# CONFIG_FB_HGA_ACCEL is not set
-CONFIG_FB_S1D13XXX=m
-CONFIG_FB_NVIDIA=m
-CONFIG_FB_NVIDIA_I2C=y
-CONFIG_FB_NVIDIA_BACKLIGHT=y
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_RIVA_I2C is not set
-# CONFIG_FB_RIVA_DEBUG is not set
-CONFIG_FB_I810=m
-# CONFIG_FB_I810_GTF is not set
-CONFIG_FB_LE80578=m
-CONFIG_FB_CARILLO_RANCH=m
-CONFIG_FB_INTEL=m
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-CONFIG_FB_MATROX_I2C=m
-CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_MATROX_MULTIHEAD=y
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-CONFIG_FB_RADEON_BACKLIGHT=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY128_BACKLIGHT=y
-CONFIG_FB_ATY=m
-CONFIG_FB_ATY_CT=y
-CONFIG_FB_ATY_GENERIC_LCD=y
-CONFIG_FB_ATY_GX=y
-CONFIG_FB_ATY_BACKLIGHT=y
-CONFIG_FB_SAVAGE=m
-CONFIG_FB_SAVAGE_I2C=y
-# CONFIG_FB_SAVAGE_ACCEL is not set
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
-CONFIG_FB_NEOMAGIC=m
-CONFIG_FB_KYRO=m
-CONFIG_FB_VOODOO1=m
-CONFIG_FB_TRIDENT=m
-CONFIG_FB_VIRTUAL=m
-
-##
-## file: drivers/video/backlight/Kconfig
-##
-CONFIG_BACKLIGHT_PROGEAR=m
-
-##
-## file: drivers/video/console/Kconfig
-##
-CONFIG_VGA_CONSOLE=y
-CONFIG_MDA_CONSOLE=m
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-##
-## file: drivers/video/geode/Kconfig
-##
-CONFIG_FB_GEODE=y
-CONFIG_FB_GEODE_LX=m
-CONFIG_FB_GEODE_GX=m
-CONFIG_FB_GEODE_GX1=m
-
-##
-## file: drivers/video/logo/Kconfig
-##
-# CONFIG_LOGO is not set
-
-##
-## file: drivers/watchdog/Kconfig
-##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-CONFIG_SOFT_WATCHDOG=m
-CONFIG_ACQUIRE_WDT=m
-CONFIG_ADVANTECH_WDT=m
-CONFIG_ALIM1535_WDT=m
-CONFIG_ALIM7101_WDT=m
-CONFIG_SC520_WDT=m
-CONFIG_EUROTECH_WDT=m
-CONFIG_IB700_WDT=m
-CONFIG_IBMASR=m
-CONFIG_WAFER_WDT=m
-CONFIG_I6300ESB_WDT=m
-CONFIG_IT8712F_WDT=m
-CONFIG_HP_WATCHDOG=m
-CONFIG_SC1200_WDT=m
-CONFIG_SCx200_WDT=m
-CONFIG_60XX_WDT=m
-CONFIG_SBC8360_WDT=m
-CONFIG_SBC7240_WDT=m
-CONFIG_CPU5_WDT=m
-CONFIG_W83627HF_WDT=m
-CONFIG_W83877F_WDT=m
-CONFIG_W83977F_WDT=m
-CONFIG_MACHZ_WDT=m
-CONFIG_PCWATCHDOG=m
-CONFIG_MIXCOMWD=m
-CONFIG_WDT=m
-CONFIG_PCIPCWATCHDOG=m
-CONFIG_WDTPCI=m
-CONFIG_WDT_501_PCI=y
-CONFIG_USBPCWATCHDOG=m
-
-##
-## file: fs/Kconfig.binfmt
-##
-CONFIG_BINFMT_AOUT=m
-
-##
-## file: fs/partitions/Kconfig
-##
-CONFIG_ACORN_PARTITION=y
-# CONFIG_ACORN_PARTITION_CUMANA is not set
-# CONFIG_ACORN_PARTITION_EESOX is not set
-CONFIG_ACORN_PARTITION_ICS=y
-# CONFIG_ACORN_PARTITION_ADFS is not set
-# CONFIG_ACORN_PARTITION_POWERTEC is not set
-CONFIG_ACORN_PARTITION_RISCIX=y
-CONFIG_OSF_PARTITION=y
-CONFIG_AMIGA_PARTITION=y
-CONFIG_ATARI_PARTITION=y
-CONFIG_MAC_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-CONFIG_MINIX_SUBPARTITION=y
-CONFIG_SOLARIS_X86_PARTITION=y
-CONFIG_UNIXWARE_DISKLABEL=y
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-CONFIG_SGI_PARTITION=y
-CONFIG_ULTRIX_PARTITION=y
-CONFIG_SUN_PARTITION=y
-CONFIG_EFI_PARTITION=y
-
-##
-## file: kernel/trace/Kconfig
-##
-# CONFIG_MMIOTRACE is not set
-
-##
-## file: lib/Kconfig.debug
-##
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_FRAME_POINTER is not set
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-
-##
-## file: mm/Kconfig.debug
-##
-# CONFIG_DEBUG_PAGEALLOC is not set
-
-##
-## file: net/atm/Kconfig
-##
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-
-##
-## file: net/ax25/Kconfig
-##
-CONFIG_HAMRADIO=y
-CONFIG_AX25=m
-# CONFIG_AX25_DAMA_SLAVE is not set
-CONFIG_NETROM=m
-CONFIG_ROSE=m
-
-##
-## file: net/decnet/Kconfig
-##
-CONFIG_DECNET=m
-# CONFIG_DECNET_ROUTER is not set
-
-##
-## file: net/decnet/netfilter/Kconfig
-##
-CONFIG_DECNET_NF_GRABULATOR=m
-
-##
-## file: net/econet/Kconfig
-##
-CONFIG_ECONET=m
-CONFIG_ECONET_AUNUDP=y
-CONFIG_ECONET_NATIVE=y
-
-##
-## file: net/ipx/Kconfig
-##
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-
-##
-## file: net/irda/Kconfig
-##
-CONFIG_IRDA=m
-# CONFIG_IRDA_ULTRA is not set
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-##
-## file: net/irda/ircomm/Kconfig
-##
-CONFIG_IRCOMM=m
-
-##
-## file: net/irda/irlan/Kconfig
-##
-CONFIG_IRLAN=m
-
-##
-## file: net/irda/irnet/Kconfig
-##
-CONFIG_IRNET=m
-
-##
-## file: net/lapb/Kconfig
-##
-CONFIG_LAPB=m
-
-##
-## file: net/wanrouter/Kconfig
-##
-CONFIG_WAN_ROUTER=m
-
-##
-## file: net/x25/Kconfig
-##
-CONFIG_X25=m
-
-##
-## file: sound/drivers/Kconfig
-##
-CONFIG_SND_DUMMY=m
-CONFIG_SND_VIRMIDI=m
-CONFIG_SND_MTPAV=m
-CONFIG_SND_SERIAL_U16550=m
-CONFIG_SND_MPU401=m
-
-##
-## file: sound/isa/Kconfig
-##
-CONFIG_SND_ISA=y
-CONFIG_SND_ADLIB=m
-CONFIG_SND_AD1816A=m
-CONFIG_SND_AD1848=m
-CONFIG_SND_ALS100=m
-CONFIG_SND_AZT2320=m
-CONFIG_SND_CMI8330=m
-CONFIG_SND_CS4231=m
-CONFIG_SND_CS4236=m
-CONFIG_SND_DT019X=m
-CONFIG_SND_ES968=m
-CONFIG_SND_ES1688=m
-CONFIG_SND_ES18XX=m
-CONFIG_SND_SC6000=m
-CONFIG_SND_GUSCLASSIC=m
-CONFIG_SND_GUSEXTREME=m
-CONFIG_SND_GUSMAX=m
-CONFIG_SND_INTERWAVE=m
-CONFIG_SND_INTERWAVE_STB=m
-CONFIG_SND_OPL3SA2=m
-CONFIG_SND_OPTI92X_AD1848=m
-CONFIG_SND_OPTI92X_CS4231=m
-CONFIG_SND_OPTI93X=m
-CONFIG_SND_MIRO=m
-CONFIG_SND_SB8=m
-CONFIG_SND_SB16=m
-CONFIG_SND_SBAWE=m
-CONFIG_SND_SB16_CSP=y
-CONFIG_SND_SGALAXY=m
-CONFIG_SND_SSCAPE=m
-CONFIG_SND_WAVEFRONT=m
-
-##
-## file: sound/oss/Kconfig
-##
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-CONFIG_SOUND_OSS=m
-# CONFIG_SOUND_TRACEINIT is not set
-# CONFIG_SOUND_DMAP is not set
-CONFIG_SOUND_SSCAPE=m
-CONFIG_SOUND_VMIDI=m
-CONFIG_SOUND_TRIX=m
-CONFIG_SOUND_MSS=m
-CONFIG_SOUND_MPU401=m
-CONFIG_SOUND_PAS=m
-CONFIG_SOUND_PSS=m
-CONFIG_PSS_MIXER=y
-CONFIG_SOUND_SB=m
-CONFIG_SOUND_YM3812=m
-CONFIG_SOUND_UART6850=m
-CONFIG_SOUND_AEDSP16=m
-CONFIG_SC6600=y
-CONFIG_SC6600_JOY=y
-CONFIG_SC6600_CDROM=4
-CONFIG_SC6600_CDROMBASE=0x0
-CONFIG_SOUND_KAHLUA=m
-
-##
-## file: sound/pci/Kconfig
-##
-CONFIG_SND_ALS4000=m
-CONFIG_SND_ALI5451=m
-CONFIG_SND_ATIIXP=m
-CONFIG_SND_ATIIXP_MODEM=m
-CONFIG_SND_AU8810=m
-CONFIG_SND_AU8820=m
-CONFIG_SND_AU8830=m
-CONFIG_SND_AZT3328=m
-CONFIG_SND_BT87X=m
-# CONFIG_SND_BT87X_OVERCLOCK is not set
-CONFIG_SND_CA0106=m
-CONFIG_SND_CMIPCI=m
-CONFIG_SND_CS4281=m
-CONFIG_SND_CS46XX=m
-CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_CS5535AUDIO=m
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_EMU10K1X=m
-CONFIG_SND_ENS1370=m
-CONFIG_SND_ENS1371=m
-CONFIG_SND_ES1938=m
-CONFIG_SND_ES1968=m
-CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_HDSP=m
-CONFIG_SND_ICE1712=m
-CONFIG_SND_ICE1724=m
-CONFIG_SND_INTEL8X0=m
-CONFIG_SND_INTEL8X0M=m
-CONFIG_SND_KORG1212=m
-CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MIXART=m
-CONFIG_SND_NM256=m
-CONFIG_SND_RME32=m
-CONFIG_SND_RME96=m
-CONFIG_SND_RME9652=m
-CONFIG_SND_SIS7019=m
-CONFIG_SND_SONICVIBES=m
-CONFIG_SND_TRIDENT=m
-CONFIG_SND_VIA82XX=m
-CONFIG_SND_VIA82XX_MODEM=m
-CONFIG_SND_VX222=m
-CONFIG_SND_YMFPCI=m
-
-##
-## file: sound/pci/hda/Kconfig
-##
-CONFIG_SND_HDA_INTEL=m
-
-##
-## file: sound/usb/Kconfig
-##
-CONFIG_SND_USB_USX2Y=m
-
diff --git a/config/i386/defines b/config/i386/defines
index 38fba75..461ec99 100644
--- a/config/i386/defines
+++ b/config/i386/defines
@@ -1,6 +1,5 @@
[base]
featuresets:
- openvz
vserver
xen
flavours:
@@ -13,45 +12,42 @@ kernel-arch: x86
[image]
configs:
kernelarch-x86/config
- i386/config
suggests: grub | lilo
-[486_base]
-class: x86
-longclass: x86 and compatible
+[486_description]
+hardware: old PCs
+hardware-long: PCs with a 486, Pentium or compatible processor
[486_image]
configs:
kernelarch-x86/config-arch-32
-[686_base]
-class: PPro/Celeron/PII/PIII/P4
-longclass: Pentium Pro/Celeron/Pentium II/Pentium III/Pentium 4
+[686_description]
+hardware: modern PCs
+hardware-long: PCs with Intel Pentium Pro/II/III/4/4M/D/M, Xeon, Celeron, Core or Atom; AMD K6, Geode LX/NX, Athlon (K7), Duron, Opteron, Sempron, Turion or Phenom; Transmeta Efficeon; VIA C3 "Nehemiah" or C7 processors
[686_image]
configs:
kernelarch-x86/config-arch-32
recommends: libc6-i686
-[686-bigmem_base]
-class: PPro/Celeron/PII/PIII/P4
-longclass: Pentium Pro/Celeron/Pentium II/Pentium III/Pentium 4 with 4-64G RAM
+[686-bigmem_description]
+hardware: PCs with 4GB+ RAM
+hardware-long: PCs with 4-64GB RAM, using PAE (Physical Address Extension)
+parts: xen
[686-bigmem_image]
configs:
kernelarch-x86/config-arch-32
-desc-parts: xen
recommends: libc6-i686
-[amd64_base]
-class: AMD64
-longclass: all 64bit single- and multiprocessor AMD and Intel
+[amd64_description]
+hardware: 64-bit PCs
+hardware-long: PCs with AMD64 or Intel 64 processors
+parts: xen
[amd64_image]
configs:
kernelarch-x86/config-arch-64
- amd64/config
- amd64/config.amd64
-desc-parts: xen
recommends: libc6-i686
diff --git a/config/i386/none/config.686-bigmem b/config/i386/none/config.686-bigmem
index 37fbeb6..2532f45 100644
--- a/config/i386/none/config.686-bigmem
+++ b/config/i386/none/config.686-bigmem
@@ -59,11 +59,6 @@ CONFIG_I2C_STUB=m
# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
##
-## file: drivers/video/Kconfig
-##
-CONFIG_XEN_FBDEV_FRONTEND=m
-
-##
## file: lib/Kconfig.debug
##
# CONFIG_DEBUG_HIGHMEM is not set
diff --git a/config/i386/openvz/defines b/config/i386/openvz/defines
index fc159f6..28dd509 100644
--- a/config/i386/openvz/defines
+++ b/config/i386/openvz/defines
@@ -4,6 +4,5 @@ flavours:
[686_image]
configs:
- i386/config.686-bigmem
-desc-parts: xen
+ i386/none/config.686-bigmem
diff --git a/config/i386/vserver/defines b/config/i386/vserver/defines
index c27b9b6..8ac71f5 100644
--- a/config/i386/vserver/defines
+++ b/config/i386/vserver/defines
@@ -6,3 +6,11 @@ flavours:
[image]
recommends: util-vserver, libc6-i686
+[686_image]
+configs:
+ i386/none/config.686
+
+[686-bigmem_image]
+configs:
+ i386/none/config.686-bigmem
+
diff --git a/config/i386/xen/defines b/config/i386/xen/defines
index 8e66961..059c893 100644
--- a/config/i386/xen/defines
+++ b/config/i386/xen/defines
@@ -12,13 +12,8 @@ flavours:
i386
amd64
-[686_base]
-class: i686
-longclass: i686 and compatible
-
[686_image]
configs:
- i386/config.686-bigmem
- i386/xen/config
+ i386/none/config.686-bigmem
recommends: libc6-xen
diff --git a/config/ia64/config b/config/ia64/config
index abd7662..3d028ec 100644
--- a/config/ia64/config
+++ b/config/ia64/config
@@ -15,7 +15,6 @@ CONFIG_IA64_MCA_RECOVERY=m
CONFIG_PERFMON=y
CONFIG_IA64_PALINFO=m
CONFIG_KEXEC=y
-CONFIG_HOTPLUG_CPU=y
CONFIG_CRASH_DUMP=y
##
@@ -98,7 +97,6 @@ CONFIG_RAW_DRIVER=m
CONFIG_MAX_RAW_DEVS=256
CONFIG_HPET=y
# CONFIG_HPET_MMAP is not set
-CONFIG_HANGCHECK_TIMER=m
CONFIG_MMTIMER=m
##
@@ -138,12 +136,6 @@ CONFIG_DRM_MGA=m
CONFIG_DRM_SIS=m
##
-## file: drivers/hid/Kconfig
-##
-# CONFIG_LOGITECH_FF is not set
-# CONFIG_THRUSTMASTER_FF is not set
-
-##
## file: drivers/hid/usbhid/Kconfig
##
CONFIG_USB_HID=m
@@ -161,8 +153,6 @@ CONFIG_SENSORS_ADM1031=m
CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_DS1621=m
CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_FSCHER=m
-CONFIG_SENSORS_FSCPOS=m
CONFIG_SENSORS_GL518SM=m
CONFIG_SENSORS_GL520SM=m
CONFIG_SENSORS_IT87=m
@@ -222,11 +212,6 @@ CONFIG_I2C_STUB=m
CONFIG_SCx200_ACB=m
##
-## file: drivers/i2c/chips/Kconfig
-##
-CONFIG_SENSORS_PCF8574=m
-
-##
## file: drivers/ide/Kconfig
##
CONFIG_IDE=m
@@ -290,10 +275,10 @@ CONFIG_INPUT_JOYSTICK=y
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_SUNKBD=m
CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_XTKBD=m
CONFIG_KEYBOARD_NEWTON=m
+CONFIG_KEYBOARD_SUNKBD=m
+CONFIG_KEYBOARD_XTKBD=m
##
## file: drivers/input/misc/Kconfig
@@ -521,11 +506,6 @@ CONFIG_PCMCIA_WL3501=m
CONFIG_USB_ZD1201=m
##
-## file: drivers/net/wireless/hostap/Kconfig
-##
-CONFIG_HOSTAP_CS=m
-
-##
## file: drivers/net/wireless/ipw2x00/Kconfig
##
CONFIG_IPW2100=m
@@ -542,26 +522,11 @@ CONFIG_PCMCIA_HERMES=m
CONFIG_PCMCIA_SPECTRUM=m
##
-## file: drivers/pci/Kconfig
-##
-CONFIG_PCI_MSI=y
-
-##
## file: drivers/pci/hotplug/Kconfig
##
CONFIG_HOTPLUG_PCI=m
##
-## file: drivers/pci/pcie/Kconfig
-##
-CONFIG_PCIEPORTBUS=y
-
-##
-## file: drivers/pci/pcie/aer/Kconfig
-##
-CONFIG_PCIEAER=y
-
-##
## file: drivers/pcmcia/Kconfig
##
CONFIG_PCCARD=m
@@ -651,20 +616,6 @@ CONFIG_USB=m
CONFIG_USB_USS720=m
##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
@@ -675,49 +626,6 @@ CONFIG_USB_SL811_HCD=m
CONFIG_USB_SL811_CS=m
##
-## file: drivers/usb/image/Kconfig
-##
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_TEST=m
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-
-##
-## file: drivers/usb/serial/Kconfig
-##
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_LIBUSUAL=y
-
-##
## file: drivers/video/Kconfig
##
CONFIG_FB=y
@@ -741,7 +649,6 @@ CONFIG_FB_MATROX_MYSTIQUE=y
CONFIG_FB_MATROX_G=y
CONFIG_FB_MATROX_I2C=m
CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_MATROX_MULTIHEAD=y
CONFIG_FB_RADEON=m
CONFIG_FB_RADEON_I2C=y
# CONFIG_FB_RADEON_DEBUG is not set
@@ -780,11 +687,6 @@ CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y
##
-## file: drivers/watchdog/Kconfig
-##
-# CONFIG_WATCHDOG is not set
-
-##
## file: fs/partitions/Kconfig
##
CONFIG_ACORN_PARTITION=y
@@ -810,11 +712,6 @@ CONFIG_SUN_PARTITION=y
CONFIG_EFI_PARTITION=y
##
-## file: mm/Kconfig
-##
-CONFIG_MIGRATION=y
-
-##
## file: net/ax25/Kconfig
##
CONFIG_HAMRADIO=y
@@ -843,9 +740,9 @@ CONFIG_IRLAN=m
CONFIG_IRNET=m
##
-## file: sound/Kconfig
+## file: security/Kconfig
##
-CONFIG_SOUND=y
+CONFIG_LSM_MMAP_MIN_ADDR=65536
##
## file: sound/drivers/Kconfig
@@ -857,17 +754,6 @@ CONFIG_SND_SERIAL_U16550=m
CONFIG_SND_MPU401=m
##
-## file: sound/oss/Kconfig
-##
-CONFIG_SOUND_MSNDCLAS=m
-CONFIG_MSNDCLAS_INIT_FILE="m"
-CONFIG_MSNDCLAS_PERM_FILE="m"
-CONFIG_SOUND_MSNDPIN=m
-CONFIG_MSNDPIN_INIT_FILE="m"
-CONFIG_MSNDPIN_PERM_FILE="m"
-# CONFIG_SOUND_OSS is not set
-
-##
## file: sound/pci/Kconfig
##
CONFIG_SND_ALS4000=m
diff --git a/config/ia64/defines b/config/ia64/defines
index 217e264..6bf211e 100644
--- a/config/ia64/defines
+++ b/config/ia64/defines
@@ -9,8 +9,8 @@ kernel-arch: ia64
[image]
suggests: elilo, fdutils
-[itanium_base]
-class: Itanium
+[itanium_description]
+hardware: Itanium
-[mckinley_base]
-class: Itanium II
+[mckinley_description]
+hardware: Itanium II
diff --git a/config/kernelarch-x86/config b/config/kernelarch-x86/config
index c9ca7be..601f14d 100644
--- a/config/kernelarch-x86/config
+++ b/config/kernelarch-x86/config
@@ -3,12 +3,13 @@
##
CONFIG_OPROFILE=m
CONFIG_OPROFILE_IBS=y
+# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set
+# CONFIG_KPROBES is not set
##
## file: arch/x86/Kconfig
##
CONFIG_SPARSE_IRQ=y
-CONFIG_NUMA_MIGRATE_IRQ_DESC=y
CONFIG_X86_MPPARSE=y
# CONFIG_X86_EXTENDED_PLATFORM is not set
CONFIG_SCHED_OMIT_FRAME_POINTER=y
@@ -24,14 +25,16 @@ CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
CONFIG_X86_MCE=y
-# CONFIG_X86_MCE_INJECT is not set
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+CONFIG_X86_MCE_INJECT=m
CONFIG_I8K=m
CONFIG_MICROCODE=m
CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_AMD=y
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m
-CONFIG_X86_CPU_DEBUG=m
+# CONFIG_X86_CPU_DEBUG is not set
CONFIG_NODES_SHIFT=6
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
CONFIG_X86_RESERVE_LOW_64K=y
@@ -53,7 +56,6 @@ CONFIG_HOTPLUG_CPU=y
CONFIG_PCI=y
CONFIG_DMAR=y
# CONFIG_DMAR_DEFAULT_ON is not set
-CONFIG_DMAR_GFX_WA=y
CONFIG_INTR_REMAP=y
CONFIG_IA32_EMULATION=y
CONFIG_IA32_AOUT=y
@@ -102,7 +104,6 @@ CONFIG_VIRTUALIZATION=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
-# CONFIG_KVM_TRACE is not set
##
## file: arch/x86/xen/Kconfig
@@ -111,13 +112,10 @@ CONFIG_XEN=y
# CONFIG_XEN_DEBUG_FS is not set
##
-## file: drivers/char/hw_random/Kconfig
+## file: crypto/Kconfig
##
-CONFIG_HW_RANDOM=m
-CONFIG_HW_RANDOM_INTEL=m
-CONFIG_HW_RANDOM_AMD=m
-CONFIG_HW_RANDOM_VIA=m
-CONFIG_HW_RANDOM_GEODE=m
+CONFIG_CRYPTO_CRC32C_INTEL=m
+CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
##
## file: drivers/acpi/Kconfig
@@ -125,6 +123,7 @@ CONFIG_HW_RANDOM_GEODE=m
CONFIG_ACPI=y
CONFIG_ACPI_PROCFS=y
# CONFIG_ACPI_PROCFS_POWER is not set
+CONFIG_ACPI_POWER_METER=m
CONFIG_ACPI_SYSFS_POWER=y
# CONFIG_ACPI_PROC_EVENT is not set
CONFIG_ACPI_AC=m
@@ -134,6 +133,7 @@ CONFIG_ACPI_VIDEO=m
CONFIG_ACPI_FAN=m
CONFIG_ACPI_DOCK=y
CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
CONFIG_ACPI_THERMAL=m
CONFIG_ACPI_BLACKLIST_YEAR=0
# CONFIG_ACPI_DEBUG is not set
@@ -143,14 +143,153 @@ CONFIG_ACPI_HOTPLUG_MEMORY=m
CONFIG_ACPI_SBS=m
##
+## file: drivers/ata/Kconfig
+##
+# CONFIG_PATA_SIS is not set
+
+##
+## file: drivers/atm/Kconfig
+##
+CONFIG_ATM_DRIVERS=y
+CONFIG_ATM_TCP=m
+CONFIG_ATM_LANAI=m
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+CONFIG_ATM_FIRESTREAM=m
+CONFIG_ATM_ZATM=m
+# CONFIG_ATM_ZATM_DEBUG is not set
+CONFIG_ATM_IDT77252=m
+# CONFIG_ATM_IDT77252_DEBUG is not set
+# CONFIG_ATM_IDT77252_RCV_ALL is not set
+CONFIG_ATM_AMBASSADOR=m
+# CONFIG_ATM_AMBASSADOR_DEBUG is not set
+CONFIG_ATM_HORIZON=m
+# CONFIG_ATM_HORIZON_DEBUG is not set
+# CONFIG_ATM_FORE200E_USE_TASKLET is not set
+CONFIG_ATM_FORE200E_TX_RETRY=16
+CONFIG_ATM_FORE200E_DEBUG=0
+CONFIG_ATM_HE=m
+CONFIG_ATM_HE_USE_SUNI=y
+
+##
+## file: drivers/auxdisplay/Kconfig
+##
+CONFIG_KS0108=m
+CONFIG_KS0108_PORT=0x378
+CONFIG_KS0108_DELAY=2
+
+##
## file: drivers/block/Kconfig
##
+CONFIG_BLK_DEV_FD=m
+CONFIG_PARIDE=m
+CONFIG_BLK_CPQ_DA=m
+CONFIG_BLK_CPQ_CISS_DA=m
+CONFIG_CISS_SCSI_TAPE=y
+CONFIG_BLK_DEV_DAC960=m
+CONFIG_BLK_DEV_UMEM=m
+CONFIG_BLK_DEV_SX8=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
CONFIG_XEN_BLKDEV_FRONTEND=m
##
+## file: drivers/block/paride/Kconfig
+##
+CONFIG_PARIDE_PD=m
+CONFIG_PARIDE_PCD=m
+CONFIG_PARIDE_PF=m
+CONFIG_PARIDE_PT=m
+CONFIG_PARIDE_PG=m
+CONFIG_PARIDE_ATEN=m
+CONFIG_PARIDE_BPCK=m
+CONFIG_PARIDE_COMM=m
+CONFIG_PARIDE_DSTR=m
+CONFIG_PARIDE_FIT2=m
+CONFIG_PARIDE_FIT3=m
+CONFIG_PARIDE_EPAT=m
+# CONFIG_PARIDE_EPATC8 is not set
+CONFIG_PARIDE_EPIA=m
+CONFIG_PARIDE_FRIQ=m
+CONFIG_PARIDE_FRPW=m
+CONFIG_PARIDE_KBIC=m
+CONFIG_PARIDE_KTTI=m
+CONFIG_PARIDE_ON20=m
+CONFIG_PARIDE_ON26=m
+
+##
+## file: drivers/bluetooth/Kconfig
+##
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+
+##
## file: drivers/char/Kconfig
##
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_ROCKETPORT=m
+CONFIG_CYCLADES=m
+# CONFIG_CYZ_INTR is not set
+CONFIG_SYNCLINK=m
+CONFIG_SYNCLINKMP=m
+CONFIG_N_HDLC=m
+CONFIG_SX=m
+CONFIG_STALDRV=y
+CONFIG_PRINTER=m
+# CONFIG_LP_CONSOLE is not set
+CONFIG_PPDEV=m
CONFIG_HVC_XEN=y
+CONFIG_NVRAM=m
+CONFIG_DTLK=m
+CONFIG_R3964=m
+CONFIG_APPLICOM=m
+CONFIG_MWAVE=m
+CONFIG_RAW_DRIVER=m
+CONFIG_MAX_RAW_DEVS=256
+CONFIG_HPET=y
+CONFIG_HPET_MMAP=y
+
+##
+## file: drivers/char/agp/Kconfig
+##
+CONFIG_AGP=m
+CONFIG_AGP_AMD64=m
+CONFIG_AGP_INTEL=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_VIA=m
+
+##
+## file: drivers/char/hw_random/Kconfig
+##
+CONFIG_HW_RANDOM=m
+CONFIG_HW_RANDOM_INTEL=m
+CONFIG_HW_RANDOM_AMD=m
+CONFIG_HW_RANDOM_GEODE=m
+CONFIG_HW_RANDOM_VIA=m
+
+##
+## file: drivers/char/ipmi/Kconfig
+##
+CONFIG_IPMI_HANDLER=m
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
##
## file: drivers/cpufreq/Kconfig
@@ -163,14 +302,34 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
## end choice
##
+## file: drivers/cpuidle/Kconfig
+##
+CONFIG_CPU_IDLE=y
+
+##
+## file: drivers/crypto/Kconfig
+##
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+
+##
+## file: drivers/dma/Kconfig
+##
+CONFIG_DMADEVICES=y
+CONFIG_INTEL_IOATDMA=m
+CONFIG_NET_DMA=y
+
+##
## file: drivers/edac/Kconfig
##
CONFIG_EDAC=y
# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_DECODE_MCE=m
CONFIG_EDAC_MM_EDAC=m
CONFIG_EDAC_AMD64=m
-CONFIG_EDAC_AMD76X=m
# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
+CONFIG_EDAC_AMD76X=m
CONFIG_EDAC_E7XXX=m
CONFIG_EDAC_E752X=m
CONFIG_EDAC_I82875P=m
@@ -182,14 +341,629 @@ CONFIG_EDAC_AMD8131=m
CONFIG_EDAC_AMD8111=m
##
+## file: drivers/firmware/Kconfig
+##
+CONFIG_EDD=m
+# CONFIG_EDD_OFF is not set
+CONFIG_EFI_VARS=m
+CONFIG_DELL_RBU=m
+CONFIG_DCDBAS=m
+CONFIG_DMIID=y
+CONFIG_ISCSI_IBFT_FIND=y
+CONFIG_ISCSI_IBFT=y
+
+##
+## file: drivers/gpu/drm/Kconfig
+##
+CONFIG_DRM=m
+CONFIG_DRM_TDFX=m
+CONFIG_DRM_R128=m
+CONFIG_DRM_RADEON=m
+CONFIG_DRM_I810=m
+## choice: Intel 830M, 845G, 852GM, 855GM, 865G
+CONFIG_DRM_I830=m
+CONFIG_DRM_I915=m
+# CONFIG_DRM_I915_KMS is not set
+## end choice
+CONFIG_DRM_MGA=m
+CONFIG_DRM_SIS=m
+
+##
+## file: drivers/hid/usbhid/Kconfig
+##
+CONFIG_USB_HID=m
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+
+##
+## file: drivers/hwmon/Kconfig
+##
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1031=m
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_K10TEMP=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_SIS5595=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_HDAPS=m
+
+##
+## file: drivers/i2c/Kconfig
+##
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+##
+## file: drivers/i2c/busses/Kconfig
+##
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD756_S4882=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+CONFIG_I2C_SCMI=m
+CONFIG_I2C_PARPORT=m
+CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_VOODOO3=m
+CONFIG_I2C_PCA_ISA=m
+CONFIG_SCx200_ACB=m
+
+##
+## file: drivers/ide/Kconfig
+##
+CONFIG_IDE=m
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_IDE_GD=m
+CONFIG_BLK_DEV_IDECS=m
+CONFIG_BLK_DEV_IDECD=m
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_BLK_DEV_IDEACPI=y
+CONFIG_IDE_GENERIC=m
+CONFIG_BLK_DEV_CMD640=y
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+CONFIG_BLK_DEV_IDEPNP=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=m
+CONFIG_BLK_DEV_OPTI621=m
+CONFIG_BLK_DEV_RZ1000=m
+CONFIG_BLK_DEV_AEC62XX=m
+CONFIG_BLK_DEV_ALI15X3=m
+CONFIG_BLK_DEV_AMD74XX=m
+CONFIG_BLK_DEV_ATIIXP=m
+CONFIG_BLK_DEV_CMD64X=m
+CONFIG_BLK_DEV_TRIFLEX=m
+CONFIG_BLK_DEV_CY82C693=m
+CONFIG_BLK_DEV_CS5520=m
+CONFIG_BLK_DEV_CS5530=m
+CONFIG_BLK_DEV_HPT366=m
+CONFIG_BLK_DEV_SC1200=m
+CONFIG_BLK_DEV_PIIX=m
+CONFIG_BLK_DEV_NS87415=m
+CONFIG_BLK_DEV_PDC202XX_OLD=m
+CONFIG_BLK_DEV_PDC202XX_NEW=m
+CONFIG_BLK_DEV_SVWKS=m
+CONFIG_BLK_DEV_SIIMAGE=m
+CONFIG_BLK_DEV_SIS5513=m
+CONFIG_BLK_DEV_SLC90E66=m
+CONFIG_BLK_DEV_TRM290=m
+CONFIG_BLK_DEV_VIA82CXXX=m
+
+##
## file: drivers/input/Kconfig
##
CONFIG_XEN_KBDDEV_FRONTEND=y
##
+## file: drivers/input/gameport/Kconfig
+##
+CONFIG_GAMEPORT=m
+CONFIG_GAMEPORT_NS558=m
+CONFIG_GAMEPORT_L4=m
+CONFIG_GAMEPORT_EMU10K1=m
+CONFIG_GAMEPORT_FM801=m
+
+##
+## file: drivers/input/joystick/Kconfig
+##
+CONFIG_INPUT_JOYSTICK=y
+
+##
+## file: drivers/input/keyboard/Kconfig
+##
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+CONFIG_KEYBOARD_LKKBD=m
+CONFIG_KEYBOARD_NEWTON=m
+CONFIG_KEYBOARD_SUNKBD=m
+CONFIG_KEYBOARD_XTKBD=m
+
+##
+## file: drivers/input/misc/Kconfig
+##
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_APANEL=m
+CONFIG_INPUT_ATLAS_BTNS=m
+CONFIG_INPUT_UINPUT=m
+
+##
+## file: drivers/input/mouse/Kconfig
+##
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_SERIAL=m
+CONFIG_MOUSE_APPLETOUCH=m
+CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_VSXXXAA=m
+
+##
+## file: drivers/input/serio/Kconfig
+##
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_CT82C710=m
+CONFIG_SERIO_PARKBD=m
+CONFIG_SERIO_PCIPS2=m
+CONFIG_SERIO_LIBPS2=y
+CONFIG_SERIO_RAW=m
+
+##
+## file: drivers/input/tablet/Kconfig
+##
+CONFIG_INPUT_TABLET=y
+CONFIG_TABLET_USB_ACECAD=m
+CONFIG_TABLET_USB_AIPTEK=m
+CONFIG_TABLET_USB_GTCO=m
+CONFIG_TABLET_USB_KBTAB=m
+CONFIG_TABLET_USB_WACOM=m
+
+##
+## file: drivers/input/touchscreen/Kconfig
+##
+CONFIG_INPUT_TOUCHSCREEN=y
+
+##
+## file: drivers/isdn/Kconfig
+##
+CONFIG_ISDN=y
+CONFIG_ISDN_I4L=m
+CONFIG_ISDN_CAPI=m
+
+##
+## file: drivers/isdn/capi/Kconfig
+##
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
+CONFIG_ISDN_CAPI_CAPIDRV=m
+
+##
+## file: drivers/isdn/hardware/avm/Kconfig
+##
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+
+##
+## file: drivers/isdn/hardware/eicon/Kconfig
+##
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+
+##
+## file: drivers/isdn/hisax/Kconfig
+##
+CONFIG_ISDN_DRV_HISAX=m
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+# CONFIG_HISAX_NO_SENDCOMPLETE is not set
+# CONFIG_HISAX_NO_LLC is not set
+# CONFIG_HISAX_NO_KEYPAD is not set
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_TELESPCI=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_NETJET=y
+CONFIG_HISAX_NETJET_U=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_HFC_PCI=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+CONFIG_HISAX_ENTERNOW_PCI=y
+# CONFIG_HISAX_DEBUG is not set
+CONFIG_HISAX_SEDLBAUER_CS=m
+CONFIG_HISAX_ELSA_CS=m
+CONFIG_HISAX_AVM_A1_CS=m
+CONFIG_HISAX_TELES_CS=m
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_HFC4S8S=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+
+##
+## file: drivers/isdn/i4l/Kconfig
+##
+CONFIG_ISDN_PPP=y
+CONFIG_ISDN_PPP_VJ=y
+CONFIG_ISDN_MPP=y
+CONFIG_IPPP_FILTER=y
+CONFIG_ISDN_PPP_BSDCOMP=m
+CONFIG_ISDN_AUDIO=y
+CONFIG_ISDN_TTY_FAX=y
+CONFIG_ISDN_X25=y
+
+##
+## file: drivers/leds/Kconfig
+##
+CONFIG_LEDS_CLEVO_MAIL=m
+
+##
+## file: drivers/media/Kconfig
+##
+CONFIG_DVB_CORE=m
+
+##
+## file: drivers/media/radio/Kconfig
+##
+CONFIG_RADIO_GEMTEK_PCI=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_MAESTRO=m
+CONFIG_USB_DSBR=m
+
+##
+## file: drivers/message/i2o/Kconfig
+##
+CONFIG_I2O=m
+CONFIG_I2O_CONFIG=m
+CONFIG_I2O_BLOCK=m
+CONFIG_I2O_SCSI=m
+CONFIG_I2O_PROC=m
+
+##
+## file: drivers/misc/Kconfig
+##
+CONFIG_IBM_ASM=m
+CONFIG_PHANTOM=m
+CONFIG_CS5535_MFGPT=m
+CONFIG_HP_ILO=m
+CONFIG_DELL_LAPTOP=m
+
+##
+## file: drivers/mmc/Kconfig
+##
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+
+##
+## file: drivers/mmc/card/Kconfig
+##
+CONFIG_MMC_BLOCK=m
+
+##
+## file: drivers/mtd/Kconfig
+##
+CONFIG_MTD=m
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=m
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLOCK=m
+CONFIG_MTD_BLOCK_RO=m
+CONFIG_FTL=m
+CONFIG_NFTL=m
+CONFIG_NFTL_RW=y
+CONFIG_INFTL=m
+
+##
+## file: drivers/mtd/chips/Kconfig
+##
+CONFIG_MTD_CFI=m
+CONFIG_MTD_JEDECPROBE=m
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=m
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
+CONFIG_MTD_RAM=m
+CONFIG_MTD_ROM=m
+CONFIG_MTD_ABSENT=m
+
+##
+## file: drivers/mtd/devices/Kconfig
+##
+CONFIG_MTD_PMC551=m
+# CONFIG_MTD_PMC551_BUGFIX is not set
+# CONFIG_MTD_PMC551_DEBUG is not set
+CONFIG_MTD_SLRAM=m
+CONFIG_MTD_PHRAM=m
+CONFIG_MTD_MTDRAM=m
+CONFIG_MTDRAM_TOTAL_SIZE=4096
+CONFIG_MTDRAM_ERASE_SIZE=128
+CONFIG_MTD_BLOCK2MTD=m
+CONFIG_MTD_DOC2000=m
+CONFIG_MTD_DOC2001=m
+CONFIG_MTD_DOC2001PLUS=m
+# CONFIG_MTD_DOCPROBE_ADVANCED is not set
+CONFIG_MTD_DOCPROBE_ADDRESS=0
+
+##
+## file: drivers/mtd/maps/Kconfig
+##
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_PHYSMAP=m
+# CONFIG_MTD_PHYSMAP_COMPAT is not set
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x4000000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+CONFIG_MTD_SC520CDP=m
+CONFIG_MTD_NETSC520=m
+CONFIG_MTD_TS5500=m
+CONFIG_MTD_SBC_GXX=m
+# CONFIG_MTD_AMD76XROM is not set
+# CONFIG_MTD_ICHXROM is not set
+# CONFIG_MTD_SCB2_FLASH is not set
+CONFIG_MTD_NETtel=m
+CONFIG_MTD_DILNETPC=m
+CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000
+# CONFIG_MTD_L440GX is not set
+CONFIG_MTD_PCI=m
+
+##
+## file: drivers/mtd/nand/Kconfig
+##
+CONFIG_MTD_NAND=m
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+CONFIG_MTD_NAND_DISKONCHIP=m
+# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
+# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
+CONFIG_MTD_NAND_PLATFORM=m
+
+##
## file: drivers/net/Kconfig
##
+CONFIG_DUMMY=m
+CONFIG_NET_SB1000=m
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_HP100=m
+CONFIG_NET_PCI=y
+CONFIG_AMD8111_ETH=m
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_B44=m
+CONFIG_FORCEDETH=m
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+CONFIG_8139TOO_TUNE_TWISTER=y
+CONFIG_8139TOO_8129=y
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
+CONFIG_ATP=m
+CONFIG_DE600=m
+CONFIG_DE620=m
CONFIG_XEN_NETDEV_FRONTEND=m
+CONFIG_FDDI=y
+CONFIG_SKFP=m
+CONFIG_HIPPI=y
+CONFIG_ROADRUNNER=m
+# CONFIG_ROADRUNNER_LARGE_RINGS is not set
+CONFIG_PLIP=m
+CONFIG_NET_FC=y
+# CONFIG_NETPOLL_TRAP is not set
+
+##
+## file: drivers/net/arcnet/Kconfig
+##
+CONFIG_ARCNET=m
+CONFIG_ARCNET_1201=m
+CONFIG_ARCNET_1051=m
+CONFIG_ARCNET_RAW=m
+CONFIG_ARCNET_CAP=m
+CONFIG_ARCNET_COM90xx=m
+CONFIG_ARCNET_COM90xxIO=m
+CONFIG_ARCNET_RIM_I=m
+CONFIG_ARCNET_COM20020=m
+CONFIG_ARCNET_COM20020_PCI=m
+
+##
+## file: drivers/net/irda/Kconfig
+##
+CONFIG_IRTTY_SIR=m
+CONFIG_USB_IRDA=m
+CONFIG_SIGMATEL_FIR=m
+CONFIG_NSC_FIR=m
+CONFIG_WINBOND_FIR=m
+CONFIG_SMC_IRCC_FIR=m
+CONFIG_ALI_FIR=m
+CONFIG_VLSI_FIR=m
+CONFIG_VIA_FIR=m
+
+##
+## file: drivers/net/pcmcia/Kconfig
+##
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
+CONFIG_ARCNET_COM20020_CS=m
+
+##
+## file: drivers/net/tulip/Kconfig
+##
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_PCMCIA_XIRCOM=m
+
+##
+## file: drivers/net/wan/Kconfig
+##
+CONFIG_WAN=y
+CONFIG_LANMEDIA=m
+CONFIG_PCI200SYN=m
+CONFIG_WANXL=m
+CONFIG_PC300=m
+CONFIG_PC300_MLPPP=y
+CONFIG_FARSYNC=m
+CONFIG_DSCC4=m
+CONFIG_DSCC4_PCISYNC=y
+CONFIG_DSCC4_PCI_RST=y
+CONFIG_DLCI=m
+CONFIG_DLCI_MAX=8
+CONFIG_CYCLADES_SYNC=m
+CONFIG_CYCLOMX_X25=y
+CONFIG_LAPBETHER=m
+CONFIG_X25_ASY=m
+CONFIG_SBNI=m
+# CONFIG_SBNI_MULTILINE is not set
+
+##
+## file: drivers/net/wireless/Kconfig
+##
+CONFIG_WLAN_PRE80211=y
+CONFIG_STRIP=m
+CONFIG_PCMCIA_WAVELAN=m
+CONFIG_PCMCIA_NETWAVE=m
+CONFIG_WLAN_80211=y
+CONFIG_PCMCIA_RAYCS=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_AIRO_CS=m
+CONFIG_PCMCIA_WL3501=m
+CONFIG_USB_ZD1201=m
+
+##
+## file: drivers/net/wireless/orinoco/Kconfig
+##
+CONFIG_HERMES=m
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+
+##
+## file: drivers/pci/Kconfig
+##
+CONFIG_HT_IRQ=y
+
+##
+## file: drivers/pci/hotplug/Kconfig
+##
+CONFIG_HOTPLUG_PCI=m
+CONFIG_HOTPLUG_PCI_FAKE=m
+CONFIG_HOTPLUG_PCI_ACPI=m
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
+CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
+CONFIG_HOTPLUG_PCI_SHPC=m
+
+##
+## file: drivers/pcmcia/Kconfig
+##
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_CARDBUS=y
+CONFIG_YENTA=m
+CONFIG_PD6729=m
+CONFIG_I82092=m
+CONFIG_TCIC=m
##
## file: drivers/platform/x86/Kconfig
@@ -200,57 +974,106 @@ CONFIG_ACERHDF=m
CONFIG_DELL_WMI=m
CONFIG_SONYPI_COMPAT=y
CONFIG_THINKPAD_ACPI=m
+CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
# CONFIG_THINKPAD_ACPI_DEBUG is not set
# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
-CONFIG_THINKPAD_ACPI_BAY=y
CONFIG_THINKPAD_ACPI_VIDEO=y
CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
# CONFIG_INTEL_MENLOW is not set
CONFIG_EEEPC_LAPTOP=m
+CONFIG_MSI_WMI=m
CONFIG_ACPI_WMI=m
CONFIG_ACPI_ASUS=m
+CONFIG_TOPSTAR_LAPTOP=m
CONFIG_ACPI_TOSHIBA=m
+CONFIG_TOSHIBA_BT_RFKILL=m
+CONFIG_ACPI_CMPC=m
##
-## file: drivers/staging/Kconfig
+## file: drivers/pnp/Kconfig
##
-CONFIG_STAGING=y
-# CONFIG_STAGING_EXCLUDE_BUILD is not set
+CONFIG_PNP=y
##
-## file: drivers/staging/agnx/Kconfig
+## file: drivers/power/Kconfig
##
-# CONFIG_AGNX is not set
+CONFIG_POWER_SUPPLY=m
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_PDA_POWER=m
+CONFIG_BATTERY_DS2760=m
##
-## file: drivers/staging/altpciechdma/Kconfig
+## file: drivers/rtc/Kconfig
+##
+CONFIG_RTC_DRV_CMOS=y
+
##
-# CONFIG_ALTERA_PCIE_CHDMA is not set
+## file: drivers/scsi/Kconfig
+##
+CONFIG_SCSI_DPT_I2O=m
+CONFIG_SCSI_ARCMSR=m
+CONFIG_SCSI_BUSLOGIC=m
+CONFIG_SCSI_DMX3191D=m
+CONFIG_SCSI_EATA=m
+CONFIG_SCSI_EATA_TAGGED_QUEUE=y
+CONFIG_SCSI_EATA_LINKED_COMMANDS=y
+CONFIG_SCSI_EATA_MAX_TAGS=16
+CONFIG_SCSI_FUTURE_DOMAIN=m
+CONFIG_SCSI_GDTH=m
+CONFIG_SCSI_IPS=m
+CONFIG_SCSI_INITIO=m
+CONFIG_SCSI_SYM53C8XX_2=m
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_IPR=m
+# CONFIG_SCSI_IPR_TRACE is not set
+# CONFIG_SCSI_IPR_DUMP is not set
+CONFIG_SCSI_QLOGIC_1280=m
+CONFIG_SCSI_DC395x=m
+CONFIG_SCSI_DC390T=m
+CONFIG_SCSI_DEBUG=m
##
-## file: drivers/staging/android/Kconfig
+## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx
##
-# CONFIG_ANDROID is not set
-# CONFIG_ANDROID_BINDER_IPC is not set
-# CONFIG_ANDROID_LOGGER is not set
-# CONFIG_ANDROID_RAM_CONSOLE is not set
-# CONFIG_ANDROID_LOW_MEMORY_KILLER is not set
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
##
-## file: drivers/staging/asus_oled/Kconfig
+## file: drivers/scsi/megaraid/Kconfig.megaraid
##
-# CONFIG_ASUS_OLED is not set
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_LEGACY=m
##
-## file: drivers/staging/at76_usb/Kconfig
+## file: drivers/scsi/pcmcia/Kconfig
+##
+CONFIG_PCMCIA_FDOMAIN=m
+CONFIG_PCMCIA_QLOGIC=m
+CONFIG_PCMCIA_SYM53C500=m
+
##
-# CONFIG_USB_ATMEL is not set
+## file: drivers/serial/Kconfig
+##
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+CONFIG_SERIAL_8250_RSA=y
+CONFIG_SERIAL_JSM=m
##
-## file: drivers/staging/b3dfg/Kconfig
+## file: drivers/sfi/Kconfig
##
-# CONFIG_B3DFG is not set
+CONFIG_SFI=y
##
## file: drivers/staging/comedi/Kconfig
@@ -262,190 +1085,406 @@ CONFIG_COMEDI_PCMCIA_DRIVERS=m
CONFIG_COMEDI_USB_DRIVERS=m
##
-## file: drivers/staging/cpc-usb/Kconfig
+## file: drivers/staging/et131x/Kconfig
##
-# CONFIG_USB_CPC is not set
+CONFIG_ET131X=m
+# CONFIG_ET131X_DEBUG is not set
##
-## file: drivers/staging/dst/Kconfig
+## file: drivers/staging/pohmelfs/Kconfig
##
-# CONFIG_DST is not set
+CONFIG_POHMELFS=m
+# CONFIG_POHMELFS_DEBUG is not set
+CONFIG_POHMELFS_CRYPTO=y
##
-## file: drivers/staging/echo/Kconfig
+## file: drivers/staging/rt2860/Kconfig
##
-# CONFIG_ECHO is not set
+CONFIG_RT2860=m
##
-## file: drivers/staging/epl/Kconfig
+## file: drivers/staging/rt2870/Kconfig
##
-# CONFIG_EPL is not set
+CONFIG_RT2870=m
##
-## file: drivers/staging/et131x/Kconfig
+## file: drivers/staging/rt3090/Kconfig
##
-CONFIG_ET131X=m
-# CONFIG_ET131X_DEBUG is not set
+CONFIG_RT3090=m
##
-## file: drivers/staging/frontier/Kconfig
+## file: drivers/staging/rtl8187se/Kconfig
##
-# CONFIG_TRANZPORT is not set
+CONFIG_RTL8187SE=m
##
-## file: drivers/staging/go7007/Kconfig
+## file: drivers/staging/rtl8192e/Kconfig
##
-# CONFIG_VIDEO_GO7007 is not set
+CONFIG_RTL8192E=m
##
-## file: drivers/staging/heci/Kconfig
+## file: drivers/staging/usbip/Kconfig
##
-# CONFIG_HECI is not set
+CONFIG_USB_IP_COMMON=m
+CONFIG_USB_IP_VHCI_HCD=m
+CONFIG_USB_IP_HOST=m
##
-## file: drivers/staging/line6/Kconfig
+## file: drivers/staging/wlan-ng/Kconfig
##
-# CONFIG_LINE6_USB is not set
+CONFIG_PRISM2_USB=m
##
-## file: drivers/staging/me4000/Kconfig
+## file: drivers/telephony/Kconfig
##
-# CONFIG_ME4000 is not set
+CONFIG_PHONE=m
+CONFIG_PHONE_IXJ=m
+CONFIG_PHONE_IXJ_PCMCIA=m
##
-## file: drivers/staging/meilhaus/Kconfig
+## file: drivers/thermal/Kconfig
##
-# CONFIG_MEILHAUS is not set
+CONFIG_THERMAL=m
+CONFIG_THERMAL_HWMON=y
##
-## file: drivers/staging/mimio/Kconfig
+## file: drivers/usb/Kconfig
##
-# CONFIG_INPUT_MIMIO is not set
+CONFIG_USB=m
+CONFIG_USB_USS720=m
##
-## file: drivers/staging/otus/Kconfig
+## file: drivers/usb/atm/Kconfig
##
-# CONFIG_OTUS is not set
+CONFIG_USB_ATM=m
+CONFIG_USB_SPEEDTOUCH=m
##
-## file: drivers/staging/p9auth/Kconfig
+## file: drivers/usb/host/Kconfig
##
-# CONFIG_PLAN9AUTH is not set
+CONFIG_USB_EHCI_HCD=m
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_HCD_SSB is not set
+CONFIG_USB_UHCI_HCD=m
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
##
-## file: drivers/staging/panel/Kconfig
+## file: drivers/video/Kconfig
##
-# CONFIG_PANEL is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+CONFIG_FB_CIRRUS=m
+CONFIG_FB_PM2=m
+CONFIG_FB_PM2_FIFO_DISCONNECT=y
+CONFIG_FB_CYBER2000=m
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+CONFIG_FB_VGA16=m
+CONFIG_FB_UVESA=m
+CONFIG_FB_VESA=y
+CONFIG_FB_EFI=y
+CONFIG_FB_N411=m
+CONFIG_FB_HGA=m
+# CONFIG_FB_HGA_ACCEL is not set
+CONFIG_FB_S1D13XXX=m
+CONFIG_FB_NVIDIA=m
+CONFIG_FB_NVIDIA_BACKLIGHT=y
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_RIVA_I2C is not set
+# CONFIG_FB_RIVA_DEBUG is not set
+CONFIG_FB_LE80578=m
+CONFIG_FB_CARILLO_RANCH=m
+CONFIG_FB_INTEL=m
+CONFIG_FB_MATROX=m
+CONFIG_FB_MATROX_MILLENIUM=y
+CONFIG_FB_MATROX_MYSTIQUE=y
+CONFIG_FB_MATROX_I2C=m
+CONFIG_FB_RADEON=m
+CONFIG_FB_RADEON_I2C=y
+CONFIG_FB_RADEON_BACKLIGHT=y
+# CONFIG_FB_RADEON_DEBUG is not set
+CONFIG_FB_ATY128=m
+CONFIG_FB_ATY128_BACKLIGHT=y
+CONFIG_FB_ATY=m
+CONFIG_FB_ATY_CT=y
+CONFIG_FB_ATY_GX=y
+CONFIG_FB_ATY_BACKLIGHT=y
+CONFIG_FB_SAVAGE=m
+# CONFIG_FB_SAVAGE_ACCEL is not set
+CONFIG_FB_SIS=m
+CONFIG_FB_SIS_300=y
+CONFIG_FB_SIS_315=y
+CONFIG_FB_NEOMAGIC=m
+CONFIG_FB_KYRO=m
+CONFIG_FB_VOODOO1=m
+CONFIG_FB_TRIDENT=m
+CONFIG_FB_VIRTUAL=m
+CONFIG_XEN_FBDEV_FRONTEND=y
##
-## file: drivers/staging/pata_rdc/Kconfig
+## file: drivers/video/backlight/Kconfig
##
-# CONFIG_RDC_17F3101X is not set
+CONFIG_BACKLIGHT_PROGEAR=m
##
-## file: drivers/staging/phison/Kconfig
+## file: drivers/video/console/Kconfig
##
-# CONFIG_IDE_PHISON is not set
+CONFIG_VGA_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
##
-## file: drivers/staging/poch/Kconfig
+## file: drivers/video/logo/Kconfig
##
-# CONFIG_POCH is not set
+# CONFIG_LOGO is not set
##
-## file: drivers/staging/pohmelfs/Kconfig
+## file: drivers/watchdog/Kconfig
+##
+CONFIG_ACQUIRE_WDT=m
+CONFIG_ADVANTECH_WDT=m
+CONFIG_ALIM1535_WDT=m
+CONFIG_ALIM7101_WDT=m
+CONFIG_GEODE_WDT=m
+CONFIG_SC520_WDT=m
+CONFIG_EUROTECH_WDT=m
+CONFIG_IB700_WDT=m
+CONFIG_IBMASR=m
+CONFIG_WAFER_WDT=m
+CONFIG_I6300ESB_WDT=m
+CONFIG_IT8712F_WDT=m
+CONFIG_HP_WATCHDOG=m
+CONFIG_SC1200_WDT=m
+CONFIG_60XX_WDT=m
+CONFIG_SBC8360_WDT=m
+CONFIG_CPU5_WDT=m
+CONFIG_W83627HF_WDT=m
+CONFIG_W83877F_WDT=m
+CONFIG_W83977F_WDT=m
+CONFIG_MACHZ_WDT=m
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+CONFIG_USBPCWATCHDOG=m
+
##
-CONFIG_POHMELFS=m
-# CONFIG_POHMELFS_DEBUG is not set
-CONFIG_POHMELFS_CRYPTO=y
+## file: drivers/xen/Kconfig
+##
+CONFIG_XEN_BALLOON=y
+CONFIG_XEN_SCRUB_PAGES=y
+CONFIG_XEN_DEV_EVTCHN=m
+CONFIG_XENFS=m
+CONFIG_XEN_COMPAT_XENFS=y
+CONFIG_XEN_SYS_HYPERVISOR=y
##
-## file: drivers/staging/rt2860/Kconfig
+## file: fs/partitions/Kconfig
+##
+CONFIG_ACORN_PARTITION=y
+# CONFIG_ACORN_PARTITION_CUMANA is not set
+# CONFIG_ACORN_PARTITION_EESOX is not set
+CONFIG_ACORN_PARTITION_ICS=y
+# CONFIG_ACORN_PARTITION_ADFS is not set
+# CONFIG_ACORN_PARTITION_POWERTEC is not set
+CONFIG_ACORN_PARTITION_RISCIX=y
+CONFIG_OSF_PARTITION=y
+CONFIG_AMIGA_PARTITION=y
+CONFIG_ATARI_PARTITION=y
+CONFIG_MAC_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+CONFIG_MINIX_SUBPARTITION=y
+CONFIG_SOLARIS_X86_PARTITION=y
+CONFIG_UNIXWARE_DISKLABEL=y
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+CONFIG_SGI_PARTITION=y
+CONFIG_ULTRIX_PARTITION=y
+CONFIG_SUN_PARTITION=y
+CONFIG_EFI_PARTITION=y
+
##
-CONFIG_RT2860=m
+## file: kernel/power/Kconfig
+##
+# CONFIG_PM_TRACE_RTC is not set
+# CONFIG_PM_TEST_SUSPEND is not set
##
-## file: drivers/staging/rt2870/Kconfig
+## file: kernel/trace/Kconfig
##
-CONFIG_RT2870=m
+# CONFIG_MMIOTRACE is not set
##
-## file: drivers/staging/rt3070/Kconfig
+## file: lib/Kconfig.debug
##
-CONFIG_RT3070=m
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_FRAME_POINTER is not set
+# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
##
-## file: drivers/staging/rtl8187se/Kconfig
+## file: mm/Kconfig
##
-CONFIG_RTL8187SE=m
+CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
##
-## file: drivers/staging/serqt_usb2/Kconfig
+## file: mm/Kconfig.debug
##
-# CONFIG_USB_SERIAL_QUATECH2 is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
##
-## file: drivers/staging/slicoss/Kconfig
+## file: net/atm/Kconfig
##
-# CONFIG_SLICOSS is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
##
-## file: drivers/staging/stlc45xx/Kconfig
+## file: net/ax25/Kconfig
##
-# CONFIG_STLC45XX is not set
+CONFIG_HAMRADIO=y
+CONFIG_AX25=m
+# CONFIG_AX25_DAMA_SLAVE is not set
+CONFIG_NETROM=m
+CONFIG_ROSE=m
##
-## file: drivers/staging/sxg/Kconfig
+## file: net/decnet/Kconfig
##
-# CONFIG_SXG is not set
+CONFIG_DECNET=m
+# CONFIG_DECNET_ROUTER is not set
##
-## file: drivers/staging/udlfb/Kconfig
+## file: net/decnet/netfilter/Kconfig
##
-# CONFIG_FB_UDL is not set
+CONFIG_DECNET_NF_GRABULATOR=m
##
-## file: drivers/staging/usbip/Kconfig
+## file: net/econet/Kconfig
##
-# CONFIG_USB_IP_COMMON is not set
+CONFIG_ECONET=m
+CONFIG_ECONET_AUNUDP=y
+CONFIG_ECONET_NATIVE=y
##
-## file: drivers/staging/winbond/Kconfig
+## file: net/ipv6/Kconfig
##
-# CONFIG_W35UND is not set
+CONFIG_IPV6=y
##
-## file: drivers/staging/wlan-ng/Kconfig
+## file: net/ipx/Kconfig
##
-CONFIG_PRISM2_USB=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
##
-## file: drivers/video/Kconfig
+## file: net/irda/Kconfig
##
-CONFIG_XEN_FBDEV_FRONTEND=y
+CONFIG_IRDA=m
+# CONFIG_IRDA_ULTRA is not set
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
##
-## file: drivers/xen/Kconfig
+## file: net/irda/ircomm/Kconfig
##
-CONFIG_XEN_BALLOON=y
-CONFIG_XEN_SCRUB_PAGES=y
-CONFIG_XEN_DEV_EVTCHN=m
-CONFIG_XENFS=m
-CONFIG_XEN_COMPAT_XENFS=y
-CONFIG_XEN_SYS_HYPERVISOR=y
+CONFIG_IRCOMM=m
##
-## file: init/Kconfig
+## file: net/irda/irlan/Kconfig
##
-CONFIG_PERF_COUNTERS=y
+CONFIG_IRLAN=m
##
-## file: mm/Kconfig
+## file: net/irda/irnet/Kconfig
##
-CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
+CONFIG_IRNET=m
##
-## file: net/ipv6/Kconfig
+## file: net/lapb/Kconfig
##
-CONFIG_IPV6=y
+CONFIG_LAPB=m
+
+##
+## file: net/wanrouter/Kconfig
+##
+CONFIG_WAN_ROUTER=m
+
+##
+## file: net/x25/Kconfig
+##
+CONFIG_X25=m
+
+##
+## file: sound/drivers/Kconfig
+##
+CONFIG_SND_DUMMY=m
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_MTPAV=m
+CONFIG_SND_SERIAL_U16550=m
+CONFIG_SND_MPU401=m
+
+##
+## file: sound/pci/Kconfig
+##
+CONFIG_SND_ALS4000=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_ATIIXP_MODEM=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BT87X=m
+# CONFIG_SND_BT87X_OVERCLOCK is not set
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_CS4281=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_FM801=m
+CONFIG_SND_FM801_TEA575X_BOOL=y
+CONFIG_SND_HDSP=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=m
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MIXART=m
+CONFIG_SND_NM256=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+CONFIG_SND_VX222=m
+CONFIG_SND_YMFPCI=m
+
+##
+## file: sound/pci/hda/Kconfig
+##
+CONFIG_SND_HDA_INTEL=m
+
+##
+## file: unknown
+##
+# CONFIG_KVM_TRACE is not set
+CONFIG_NUMA_MIGRATE_IRQ_DESC=y
diff --git a/config/kernelarch-x86/config-arch-32 b/config/kernelarch-x86/config-arch-32
index 6f6948b..eaa1295 100644
--- a/config/kernelarch-x86/config-arch-32
+++ b/config/kernelarch-x86/config-arch-32
@@ -7,8 +7,6 @@ CONFIG_SMP=y
CONFIG_X86_BIGSMP=y
CONFIG_VMI=y
CONFIG_NR_CPUS=32
-CONFIG_X86_MCE_NONFATAL=m
-CONFIG_X86_MCE_P4THERMAL=y
CONFIG_VM86=y
CONFIG_TOSHIBA=m
# CONFIG_X86_REBOOTFIXUPS is not set
@@ -20,6 +18,7 @@ CONFIG_HIGHMEM4G=y
# CONFIG_X86_PAE is not set
# CONFIG_NUMA is not set
CONFIG_HIGHPTE=y
+CONFIG_PHYSICAL_ALIGN=0x1000000
CONFIG_APM=m
# CONFIG_APM_IGNORE_USER_SUSPEND is not set
# CONFIG_APM_DO_ENABLE is not set
@@ -43,6 +42,7 @@ CONFIG_SCx200HR_TIMER=m
## file: arch/x86/Kconfig.cpu
##
CONFIG_X86_GENERIC=y
+# CONFIG_X86_PPRO_FENCE is not set
##
## file: arch/x86/kernel/cpu/cpufreq/Kconfig
@@ -70,7 +70,7 @@ CONFIG_LGUEST_GUEST=y
##
## file: arch/x86/xen/Kconfig
##
-CONFIG_XEN_MAX_DOMAIN_MEMORY=8
+CONFIG_XEN_MAX_DOMAIN_MEMORY=32
##
## file: crypto/Kconfig
@@ -80,6 +80,355 @@ CONFIG_CRYPTO_SALSA20_586=m
CONFIG_CRYPTO_TWOFISH_586=m
##
+## file: drivers/ata/Kconfig
+##
+# CONFIG_PATA_CS5535 is not set
+# CONFIG_PATA_CS5536 is not set
+
+##
+## file: drivers/atm/Kconfig
+##
+CONFIG_ATM_NICSTAR=m
+# CONFIG_ATM_NICSTAR_USE_SUNI is not set
+# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
+CONFIG_ATM_IA=m
+# CONFIG_ATM_IA_DEBUG is not set
+
+##
+## file: drivers/auxdisplay/Kconfig
+##
+CONFIG_CFAG12864B=m
+CONFIG_CFAG12864B_RATE=20
+
+##
+## file: drivers/block/Kconfig
+##
+CONFIG_BLK_DEV_XD=m
+CONFIG_BLK_DEV_RAM_SIZE=8192
+
+##
+## file: drivers/block/paride/Kconfig
+##
+CONFIG_PARIDE_BPCK6=m
+
+##
+## file: drivers/char/Kconfig
+##
+# CONFIG_ESPSERIAL is not set
+# CONFIG_ISI is not set
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+CONFIG_SONYPI=m
+CONFIG_SCx200_GPIO=m
+CONFIG_CS5535_GPIO=m
+
+##
+## file: drivers/char/agp/Kconfig
+##
+CONFIG_AGP_ALI=m
+CONFIG_AGP_ATI=m
+CONFIG_AGP_AMD=m
+CONFIG_AGP_NVIDIA=m
+CONFIG_AGP_SWORKS=m
+CONFIG_AGP_EFFICEON=m
+
+##
+## file: drivers/crypto/Kconfig
+##
+CONFIG_CRYPTO_DEV_GEODE=m
+
+##
+## file: drivers/i2c/busses/Kconfig
+##
+CONFIG_SCx200_I2C=m
+CONFIG_SCx200_I2C_SCL=12
+CONFIG_SCx200_I2C_SDA=13
+
+##
+## file: drivers/ide/Kconfig
+##
+CONFIG_BLK_DEV_CS5535=m
+CONFIG_BLK_DEV_CS5536=m
+# CONFIG_BLK_DEV_4DRIVES is not set
+# CONFIG_BLK_DEV_ALI14XX is not set
+# CONFIG_BLK_DEV_DTC2278 is not set
+# CONFIG_BLK_DEV_HT6560B is not set
+# CONFIG_BLK_DEV_QD65XX is not set
+# CONFIG_BLK_DEV_UMC8672 is not set
+
+##
+## file: drivers/input/misc/Kconfig
+##
+CONFIG_INPUT_WISTRON_BTNS=m
+
+##
+## file: drivers/input/mouse/Kconfig
+##
+# CONFIG_MOUSE_PS2_OLPC is not set
+CONFIG_MOUSE_INPORT=m
+# CONFIG_MOUSE_ATIXL is not set
+CONFIG_MOUSE_LOGIBM=m
+CONFIG_MOUSE_PC110PAD=m
+
+##
+## file: drivers/isdn/act2000/Kconfig
+##
+CONFIG_ISDN_DRV_ACT2000=m
+
+##
+## file: drivers/isdn/hardware/avm/Kconfig
+##
+CONFIG_ISDN_DRV_AVMB1_B1ISA=m
+CONFIG_ISDN_DRV_AVMB1_T1ISA=m
+
+##
+## file: drivers/isdn/hisax/Kconfig
+##
+CONFIG_HISAX_16_0=y
+CONFIG_HISAX_AVM_A1=y
+CONFIG_HISAX_IX1MICROR2=y
+CONFIG_HISAX_ASUSCOM=y
+CONFIG_HISAX_TELEINT=y
+CONFIG_HISAX_HFCS=y
+CONFIG_HISAX_SPORTSTER=y
+CONFIG_HISAX_MIC=y
+CONFIG_HISAX_ISURF=y
+CONFIG_HISAX_HSTSAPHIR=y
+
+##
+## file: drivers/isdn/i4l/Kconfig
+##
+# CONFIG_ISDN_DIVERSION is not set
+
+##
+## file: drivers/isdn/icn/Kconfig
+##
+CONFIG_ISDN_DRV_ICN=m
+
+##
+## file: drivers/isdn/pcbit/Kconfig
+##
+CONFIG_ISDN_DRV_PCBIT=m
+
+##
+## file: drivers/isdn/sc/Kconfig
+##
+CONFIG_ISDN_DRV_SC=m
+
+##
+## file: drivers/leds/Kconfig
+##
+CONFIG_LEDS_WRAP=m
+
+##
+## file: drivers/lguest/Kconfig
+##
+CONFIG_LGUEST=m
+
+##
+## file: drivers/macintosh/Kconfig
+##
+# CONFIG_MACINTOSH_DRIVERS is not set
+
+##
+## file: drivers/media/radio/Kconfig
+##
+CONFIG_RADIO_CADET=m
+CONFIG_RADIO_RTRACK=m
+CONFIG_RADIO_RTRACK2=m
+CONFIG_RADIO_AZTECH=m
+CONFIG_RADIO_GEMTEK=m
+CONFIG_RADIO_SF16FMI=m
+CONFIG_RADIO_SF16FMR2=m
+CONFIG_RADIO_TERRATEC=m
+CONFIG_RADIO_TRUST=m
+CONFIG_RADIO_TYPHOON=m
+CONFIG_RADIO_ZOLTRIX=m
+
+##
+## file: drivers/mtd/maps/Kconfig
+##
+CONFIG_MTD_SCx200_DOCFLASH=m
+CONFIG_MTD_PCMCIA=m
+# CONFIG_MTD_PCMCIA_ANONYMOUS is not set
+
+##
+## file: drivers/net/Kconfig
+##
+CONFIG_EL1=m
+CONFIG_EL2=m
+CONFIG_ELPLUS=m
+CONFIG_EL16=m
+CONFIG_EL3=m
+CONFIG_3C515=m
+CONFIG_LANCE=m
+CONFIG_NET_VENDOR_SMC=y
+CONFIG_WD80x3=m
+CONFIG_ULTRA=m
+CONFIG_SMC9194=m
+CONFIG_NET_VENDOR_RACAL=y
+CONFIG_NI52=m
+CONFIG_NI65=m
+CONFIG_AT1700=m
+CONFIG_DEPCA=m
+CONFIG_NET_ISA=y
+CONFIG_E2100=m
+CONFIG_EWRK3=m
+CONFIG_EEXPRESS=m
+CONFIG_EEXPRESS_PRO=m
+CONFIG_HPLAN_PLUS=m
+CONFIG_HPLAN=m
+CONFIG_LP486E=m
+CONFIG_ETH16I=m
+CONFIG_NE2000=m
+CONFIG_ZNET=m
+CONFIG_SEEQ8005=m
+CONFIG_AC3200=m
+CONFIG_APRICOT=m
+CONFIG_CS89x0=m
+CONFIG_8139TOO_PIO=y
+CONFIG_TLAN=m
+
+##
+## file: drivers/net/arcnet/Kconfig
+##
+CONFIG_ARCNET_COM20020_ISA=m
+
+##
+## file: drivers/net/hamradio/Kconfig
+##
+CONFIG_SCC=m
+# CONFIG_SCC_DELAY is not set
+# CONFIG_SCC_TRXECHO is not set
+
+##
+## file: drivers/net/irda/Kconfig
+##
+CONFIG_TOSHIBA_FIR=m
+
+##
+## file: drivers/net/wan/Kconfig
+##
+CONFIG_HOSTESS_SV11=m
+CONFIG_COSA=m
+CONFIG_SEALEVEL_4021=m
+CONFIG_N2=m
+CONFIG_C101=m
+CONFIG_SDLA=m
+
+##
+## file: drivers/net/wireless/Kconfig
+##
+CONFIG_ARLAN=m
+CONFIG_WAVELAN=m
+
+##
+## file: drivers/net/wireless/ipw2x00/Kconfig
+##
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+
+##
+## file: drivers/pci/hotplug/Kconfig
+##
+CONFIG_HOTPLUG_PCI_COMPAQ=m
+CONFIG_HOTPLUG_PCI_IBM=m
+
+##
+## file: drivers/pcmcia/Kconfig
+##
+CONFIG_I82365=m
+
+##
+## file: drivers/platform/x86/Kconfig
+##
+CONFIG_TC1100_WMI=m
+
+##
+## file: drivers/pnp/isapnp/Kconfig
+##
+CONFIG_ISAPNP=y
+
+##
+## file: drivers/pnp/pnpbios/Kconfig
+##
+CONFIG_PNPBIOS=y
+CONFIG_PNPBIOS_PROC_FS=y
+
+##
+## file: drivers/scsi/Kconfig
+##
+CONFIG_SCSI_IN2000=m
+# CONFIG_SCSI_FLASHPOINT is not set
+CONFIG_SCSI_DTC3280=m
+CONFIG_SCSI_EATA_PIO=m
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
+# CONFIG_SCSI_GENERIC_NCR53C400 is not set
+# CONFIG_SCSI_INIA100 is not set
+CONFIG_SCSI_NCR53C406A=m
+CONFIG_SCSI_PAS16=m
+CONFIG_SCSI_QLOGIC_FAS=m
+CONFIG_SCSI_SYM53C416=m
+CONFIG_SCSI_T128=m
+CONFIG_SCSI_U14_34F=m
+CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y
+CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y
+CONFIG_SCSI_U14_34F_MAX_TAGS=8
+CONFIG_SCSI_ULTRASTOR=m
+CONFIG_SCSI_NSP32=m
+
+##
+## file: drivers/scsi/pcmcia/Kconfig
+##
+CONFIG_PCMCIA_AHA152X=m
+CONFIG_PCMCIA_NINJA_SCSI=m
+
+##
+## file: drivers/serial/Kconfig
+##
+CONFIG_SERIAL_8250_EXAR_ST16C554=m
+
+##
+## file: drivers/video/Kconfig
+##
+CONFIG_FB_NVIDIA_I2C=y
+CONFIG_FB_I810=m
+# CONFIG_FB_I810_GTF is not set
+CONFIG_FB_MATROX_G=y
+CONFIG_FB_MATROX_MAVEN=m
+CONFIG_FB_ATY_GENERIC_LCD=y
+CONFIG_FB_SAVAGE_I2C=y
+
+##
+## file: drivers/video/console/Kconfig
+##
+CONFIG_MDA_CONSOLE=m
+
+##
+## file: drivers/video/geode/Kconfig
+##
+CONFIG_FB_GEODE=y
+CONFIG_FB_GEODE_LX=m
+CONFIG_FB_GEODE_GX=m
+CONFIG_FB_GEODE_GX1=m
+
+##
+## file: drivers/watchdog/Kconfig
+##
+CONFIG_SCx200_WDT=m
+CONFIG_SBC7240_WDT=m
+CONFIG_PCWATCHDOG=m
+CONFIG_MIXCOMWD=m
+CONFIG_WDT=m
+
+##
+## file: fs/Kconfig.binfmt
+##
+CONFIG_BINFMT_AOUT=m
+
+##
## file: lib/Kconfig.debug
##
CONFIG_FRAME_WARN=1024
@@ -93,3 +442,55 @@ CONFIG_FLATMEM_MANUAL=y
# CONFIG_SPARSEMEM_MANUAL is not set
## end choice
+##
+## file: security/Kconfig
+##
+CONFIG_LSM_MMAP_MIN_ADDR=0
+
+##
+## file: sound/isa/Kconfig
+##
+CONFIG_SND_ISA=y
+CONFIG_SND_ADLIB=m
+CONFIG_SND_AD1816A=m
+CONFIG_SND_AD1848=m
+CONFIG_SND_ALS100=m
+CONFIG_SND_AZT2320=m
+CONFIG_SND_CMI8330=m
+CONFIG_SND_CS4231=m
+CONFIG_SND_CS4236=m
+CONFIG_SND_DT019X=m
+CONFIG_SND_ES968=m
+CONFIG_SND_ES1688=m
+CONFIG_SND_ES18XX=m
+CONFIG_SND_SC6000=m
+CONFIG_SND_GUSCLASSIC=m
+CONFIG_SND_GUSEXTREME=m
+CONFIG_SND_GUSMAX=m
+CONFIG_SND_INTERWAVE=m
+CONFIG_SND_INTERWAVE_STB=m
+CONFIG_SND_OPL3SA2=m
+CONFIG_SND_OPTI92X_AD1848=m
+CONFIG_SND_OPTI92X_CS4231=m
+CONFIG_SND_OPTI93X=m
+CONFIG_SND_MIRO=m
+CONFIG_SND_SB8=m
+CONFIG_SND_SB16=m
+CONFIG_SND_SBAWE=m
+CONFIG_SND_SB16_CSP=y
+CONFIG_SND_SGALAXY=m
+CONFIG_SND_SSCAPE=m
+CONFIG_SND_WAVEFRONT=m
+
+##
+## file: sound/pci/Kconfig
+##
+CONFIG_SND_SIS7019=m
+
+##
+## file: unknown
+##
+CONFIG_RADIO_TYPHOON_PROC_FS=y
+CONFIG_X86_MCE_NONFATAL=m
+CONFIG_X86_MCE_P4THERMAL=y
+
diff --git a/config/kernelarch-x86/config-arch-64 b/config/kernelarch-x86/config-arch-64
index 8c28b78..d3541bc 100644
--- a/config/kernelarch-x86/config-arch-64
+++ b/config/kernelarch-x86/config-arch-64
@@ -10,18 +10,20 @@ CONFIG_AMD_IOMMU=y
# CONFIG_AMD_IOMMU_STATS is not set
# CONFIG_MAXSMP is not set
CONFIG_NR_CPUS=512
-CONFIG_X86_MCE_INTEL=y
-CONFIG_X86_MCE_AMD=y
CONFIG_NUMA=y
CONFIG_K8_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
-# CONFIG_NUMA_EMU is not set
+CONFIG_NUMA_EMU=y
CONFIG_PCI_MMCONFIG=y
##
## file: arch/x86/Kconfig.cpu
##
## choice: Processor family
+# CONFIG_MK8 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_MATOM is not set
CONFIG_GENERIC_CPU=y
## end choice
@@ -39,19 +41,94 @@ CONFIG_XEN_MAX_DOMAIN_MEMORY=32
## file: crypto/Kconfig
##
CONFIG_CRYPTO_AES_X86_64=m
+CONFIG_CRYPTO_AES_NI_INTEL=m
CONFIG_CRYPTO_SALSA20_X86_64=m
CONFIG_CRYPTO_TWOFISH_X86_64=m
##
+## file: drivers/block/Kconfig
+##
+CONFIG_BLK_DEV_RAM_SIZE=65536
+
+##
+## file: drivers/char/Kconfig
+##
+CONFIG_DIGIEPCA=m
+CONFIG_MOXA_INTELLIO=m
+CONFIG_ISI=m
+CONFIG_SPECIALIX=m
+CONFIG_RIO=m
+CONFIG_RIO_OLDPCI=y
+
+##
+## file: drivers/char/agp/Kconfig
+##
+CONFIG_AGP=y
+#. Needed by GART_IOMMU
+CONFIG_AGP_AMD64=y
+
+##
+## file: drivers/i2c/busses/Kconfig
+##
+CONFIG_I2C_STUB=m
+
+##
+## file: drivers/ide/Kconfig
+##
+# CONFIG_IDEPCI_PCIBUS_ORDER is not set
+
+##
+## file: drivers/input/mouse/Kconfig
+##
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+
+##
+## file: drivers/isdn/i4l/Kconfig
+##
+CONFIG_ISDN_DIVERSION=m
+
+##
+## file: drivers/macintosh/Kconfig
+##
+CONFIG_MACINTOSH_DRIVERS=y
+CONFIG_MAC_EMUMOUSEBTN=y
+
+##
+## file: drivers/net/Kconfig
+##
+# CONFIG_8139TOO_PIO is not set
+
+##
+## file: drivers/net/wireless/ipw2x00/Kconfig
+##
+# CONFIG_IPW2100 is not set
+
+##
+## file: drivers/scsi/Kconfig
+##
+CONFIG_SCSI_INIA100=m
+
+##
+## file: drivers/video/Kconfig
+##
+# CONFIG_FB_NVIDIA_I2C is not set
+CONFIG_FB_MATROX_G=y
+CONFIG_FB_MATROX_MAVEN=m
+# CONFIG_FB_ATY_GENERIC_LCD is not set
+# CONFIG_FB_SAVAGE_I2C is not set
+
+##
+## file: drivers/video/geode/Kconfig
+##
+# CONFIG_FB_GEODE is not set
+
+##
## file: init/Kconfig
##
-## choice: RCU Implementation
-# CONFIG_CLASSIC_RCU is not set
-CONFIG_TREE_RCU=y
-# CONFIG_PREEMPT_RCU is not set
-## end choice
CONFIG_RCU_FANOUT=64
-# CONFIG_RCU_FANOUT_EXACT is not set
##
## file: lib/Kconfig.debug
@@ -65,5 +142,9 @@ CONFIG_FRAME_WARN=2048
CONFIG_SPARSEMEM_MANUAL=y
## end choice
CONFIG_SPARSEMEM_VMEMMAP=y
-CONFIG_MIGRATION=y
+
+##
+## file: security/Kconfig
+##
+CONFIG_LSM_MMAP_MIN_ADDR=65536
diff --git a/config/m68k/config b/config/m68k/config
index 9eafd16..18915e3 100644
--- a/config/m68k/config
+++ b/config/m68k/config
@@ -61,8 +61,8 @@ CONFIG_GEN_RTC_X=y
##
CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_XTKBD is not set
##
## file: drivers/input/mouse/Kconfig
@@ -86,11 +86,6 @@ CONFIG_INPUT_MOUSE=y
# CONFIG_ISDN is not set
##
-## file: drivers/md/Kconfig
-##
-CONFIG_MD=y
-
-##
## file: drivers/media/Kconfig
##
# CONFIG_VIDEO_DEV is not set
@@ -109,7 +104,6 @@ CONFIG_MD=y
## file: drivers/net/Kconfig
##
CONFIG_NETDEVICES=y
-CONFIG_DUMMY=m
# CONFIG_BONDING is not set
CONFIG_EQUALIZER=m
# CONFIG_TUN is not set
@@ -132,7 +126,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
##
## file: drivers/serial/Kconfig
@@ -155,11 +148,6 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_WATCHDOG is not set
##
-## file: fs/Kconfig
-##
-CONFIG_TMPFS=y
-
-##
## file: fs/adfs/Kconfig
##
# CONFIG_ADFS_FS is not set
@@ -307,11 +295,6 @@ CONFIG_SYSFS=y
# CONFIG_NET_SCHED is not set
##
-## file: net/sunrpc/Kconfig
-##
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-
-##
## file: net/wanrouter/Kconfig
##
# CONFIG_WAN_ROUTER is not set
diff --git a/config/m68k/config.amiga b/config/m68k/config.amiga
index 39562b9..b570acb 100644
--- a/config/m68k/config.amiga
+++ b/config/m68k/config.amiga
@@ -93,9 +93,9 @@ CONFIG_JOYSTICK_AMIGA=m
##
## file: drivers/input/keyboard/Kconfig
##
+CONFIG_KEYBOARD_AMIGA=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_SUNKBD is not set
-CONFIG_KEYBOARD_AMIGA=y
##
## file: drivers/input/misc/Kconfig
@@ -243,12 +243,6 @@ CONFIG_HFS_FS=m
CONFIG_HFSPLUS_FS=m
##
-## file: fs/ncpfs/Kconfig
-##
-CONFIG_NCPFS_NFS_NS=y
-CONFIG_NCPFS_OS2_NS=y
-
-##
## file: fs/partitions/Kconfig
##
# CONFIG_PARTITION_ADVANCED is not set
@@ -272,11 +266,6 @@ CONFIG_IPX=m
# CONFIG_IPX_INTERN is not set
##
-## file: net/sunrpc/Kconfig
-##
-CONFIG_RPCSEC_GSS_KRB5=m
-
-##
## file: sound/Kconfig
##
# CONFIG_SND is not set
diff --git a/config/m68k/config.atari b/config/m68k/config.atari
index 2b17c92..ea7eb15 100644
--- a/config/m68k/config.atari
+++ b/config/m68k/config.atari
@@ -61,9 +61,9 @@ CONFIG_BLK_DEV_FALCON_IDE=y
##
## file: drivers/input/keyboard/Kconfig
##
+CONFIG_KEYBOARD_ATARI=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
-CONFIG_KEYBOARD_ATARI=y
##
## file: drivers/input/misc/Kconfig
@@ -160,12 +160,6 @@ CONFIG_HFS_FS=m
CONFIG_HFSPLUS_FS=m
##
-## file: fs/ncpfs/Kconfig
-##
-CONFIG_NCPFS_NFS_NS=y
-CONFIG_NCPFS_OS2_NS=y
-
-##
## file: fs/nfs/Kconfig
##
# CONFIG_NFS_V4 is not set
@@ -203,11 +197,6 @@ CONFIG_IPX=m
# CONFIG_IPX_INTERN is not set
##
-## file: net/sunrpc/Kconfig
-##
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-
-##
## file: sound/Kconfig
##
# CONFIG_SND is not set
diff --git a/config/m68k/config.bvme6000 b/config/m68k/config.bvme6000
index e9b816e..ecea4fc 100644
--- a/config/m68k/config.bvme6000
+++ b/config/m68k/config.bvme6000
@@ -89,12 +89,6 @@ CONFIG_SERIAL_8250_NR_UARTS=4
# CONFIG_FB is not set
##
-## file: fs/ncpfs/Kconfig
-##
-CONFIG_NCPFS_NFS_NS=y
-CONFIG_NCPFS_OS2_NS=y
-
-##
## file: fs/nfs/Kconfig
##
CONFIG_NFS_FS=y
@@ -125,11 +119,6 @@ CONFIG_IP_PNP_RARP=y
# CONFIG_IPX is not set
##
-## file: net/sunrpc/Kconfig
-##
-CONFIG_RPCSEC_GSS_KRB5=y
-
-##
## file: sound/Kconfig
##
# CONFIG_SOUND is not set
diff --git a/config/m68k/config.hp b/config/m68k/config.hp
index f7e162c..8c5d998 100644
--- a/config/m68k/config.hp
+++ b/config/m68k/config.hp
@@ -49,7 +49,5 @@ CONFIG_LOCKD=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_RPCSEC_GSS_KRB5=y
-CONFIG_NCPFS_NFS_NS=y
-CONFIG_NCPFS_OS2_NS=y
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_CRC32=y
diff --git a/config/m68k/config.mac b/config/m68k/config.mac
index d8bfae5..ca511ef 100644
--- a/config/m68k/config.mac
+++ b/config/m68k/config.mac
@@ -160,17 +160,8 @@ CONFIG_HFS_FS=y
CONFIG_HFSPLUS_FS=y
##
-## file: fs/ncpfs/Kconfig
-##
-CONFIG_NCPFS_NFS_NS=y
-CONFIG_NCPFS_OS2_NS=y
-
-##
## file: fs/partitions/Kconfig
##
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
CONFIG_AMIGA_PARTITION=y
CONFIG_ATARI_PARTITION=y
CONFIG_MAC_PARTITION=y
@@ -180,10 +171,7 @@ CONFIG_SOLARIS_X86_PARTITION=y
CONFIG_UNIXWARE_DISKLABEL=y
CONFIG_LDM_PARTITION=y
CONFIG_LDM_DEBUG=y
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
CONFIG_SUN_PARTITION=y
-# CONFIG_EFI_PARTITION is not set
##
## file: fs/ufs/Kconfig
@@ -203,11 +191,6 @@ CONFIG_IPX=m
# CONFIG_IPX_INTERN is not set
##
-## file: net/sunrpc/Kconfig
-##
-CONFIG_RPCSEC_GSS_KRB5=m
-
-##
## file: sound/Kconfig
##
# CONFIG_SOUND is not set
diff --git a/config/m68k/config.mvme147 b/config/m68k/config.mvme147
index 0be0390..a504f89 100644
--- a/config/m68k/config.mvme147
+++ b/config/m68k/config.mvme147
@@ -102,12 +102,6 @@ CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y
##
-## file: fs/ncpfs/Kconfig
-##
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-
-##
## file: fs/nfs/Kconfig
##
CONFIG_NFS_FS=y
@@ -133,11 +127,6 @@ CONFIG_IPX=m
# CONFIG_IPX_INTERN is not set
##
-## file: net/sunrpc/Kconfig
-##
-CONFIG_RPCSEC_GSS_KRB5=y
-
-##
## file: sound/Kconfig
##
# CONFIG_SOUND is not set
diff --git a/config/m68k/config.mvme16x b/config/m68k/config.mvme16x
index a783788..e0c12f0 100644
--- a/config/m68k/config.mvme16x
+++ b/config/m68k/config.mvme16x
@@ -108,12 +108,6 @@ CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y
##
-## file: fs/ncpfs/Kconfig
-##
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-
-##
## file: fs/nfs/Kconfig
##
CONFIG_NFS_FS=y
@@ -139,11 +133,6 @@ CONFIG_IPX=m
# CONFIG_IPX_INTERN is not set
##
-## file: net/sunrpc/Kconfig
-##
-CONFIG_RPCSEC_GSS_KRB5=y
-
-##
## file: sound/Kconfig
##
# CONFIG_SOUND is not set
diff --git a/config/m68k/config.q40 b/config/m68k/config.q40
index 783dcfc..67c3ad1 100644
--- a/config/m68k/config.q40
+++ b/config/m68k/config.q40
@@ -100,7 +100,5 @@ CONFIG_LOCKD=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_RPCSEC_GSS_KRB5=y
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_CRC32=y
diff --git a/config/m68k/config.sun3 b/config/m68k/config.sun3
index 194f780..91ae49d 100644
--- a/config/m68k/config.sun3
+++ b/config/m68k/config.sun3
@@ -48,8 +48,6 @@ CONFIG_LOCKD=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_RPCSEC_GSS_KRB5=y
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_SUN_PARTITION=y
CONFIG_CRC32=y
diff --git a/config/m68k/defines b/config/m68k/defines
index fa4d477..55a520d 100644
--- a/config/m68k/defines
+++ b/config/m68k/defines
@@ -16,30 +16,30 @@ kernel-arch: m68k
initramfs: false
suggests: vmelilo, fdutils
-[amiga_base]
-class: Amiga
+[amiga_description]
+hardware: Amiga
-[atari_base]
-class: Atari
+[atari_description]
+hardware: Atari
-[bvme6000_base]
-class: BVM BVME4000 and BVME6000
+[bvme6000_description]
+hardware: BVM BVME4000 and BVME6000
-[hp_base]
-class: HP
+[hp_description]
+hardware: HP
-[mac_base]
-class: Macintosh
+[mac_description]
+hardware: Macintosh
-[mvme147_base]
-class: Motorola MVME147
+[mvme147_description]
+hardware: Motorola MVME147
-[mvme16x_base]
-class: Motorola MVME162/6/7, MVME172/7
+[mvme16x_description]
+hardware: Motorola MVME162/6/7, MVME172/7
-[q40_base]
-class: Q40 and Q60
+[q40_description]
+hardware: Q40 and Q60
-[sun3_base]
-class: sun3
+[sun3_description]
+hardware: sun3
diff --git a/config/mips/config b/config/mips/config
index 247b043..bdcbcc3 100644
--- a/config/mips/config
+++ b/config/mips/config
@@ -1,6 +1,10 @@
##
## file: arch/mips/Kconfig
##
+## choice: Endianess selection
+CONFIG_CPU_BIG_ENDIAN=y
+# CONFIG_CPU_LITTLE_ENDIAN is not set
+## end choice
CONFIG_SECCOMP=y
##
diff --git a/config/mips/config.4kc-malta b/config/mips/config.4kc-malta
index 97a06aa..b8e1b8b 100644
--- a/config/mips/config.4kc-malta
+++ b/config/mips/config.4kc-malta
@@ -32,10 +32,6 @@ CONFIG_MIPS_MALTA=y
# CONFIG_SNI_RM is not set
# CONFIG_WR_PPMC is not set
## end choice
-## choice: Endianess selection
-CONFIG_CPU_BIG_ENDIAN=y
-# CONFIG_CPU_LITTLE_ENDIAN is not set
-## end choice
## choice: CPU type
CONFIG_CPU_MIPS32_R1=y
# CONFIG_CPU_MIPS32_R2 is not set
@@ -264,21 +260,10 @@ CONFIG_DRM_VIA=m
CONFIG_DRM_SAVAGE=m
##
-## file: drivers/hid/Kconfig
-##
-CONFIG_HID=y
-
-##
-## file: drivers/hid/usbhid/Kconfig
-##
-CONFIG_USB_HID=m
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-
-##
## file: drivers/hwmon/Kconfig
##
CONFIG_HWMON=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
# CONFIG_SENSORS_ABITUGURU is not set
CONFIG_SENSORS_ADM1021=m
CONFIG_SENSORS_ADM1025=m
@@ -289,8 +274,6 @@ CONFIG_SENSORS_ADM9240=m
# CONFIG_SENSORS_ATXP1 is not set
CONFIG_SENSORS_DS1621=m
# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_IT87 is not set
@@ -323,7 +306,6 @@ CONFIG_SENSORS_PCF8591=m
# CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
##
## file: drivers/i2c/Kconfig
@@ -359,13 +341,6 @@ CONFIG_I2C_VOODOO3=m
# CONFIG_I2C_STUB is not set
##
-## file: drivers/i2c/chips/Kconfig
-##
-CONFIG_SENSORS_PCF8574=m
-CONFIG_SENSORS_PCA9539=m
-CONFIG_SENSORS_MAX6875=m
-
-##
## file: drivers/ide/Kconfig
##
CONFIG_IDE=y
@@ -420,11 +395,11 @@ CONFIG_INPUT_JOYSTICK=y
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_SUNKBD=m
CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_XTKBD=m
CONFIG_KEYBOARD_NEWTON=m
CONFIG_KEYBOARD_STOWAWAY=m
+CONFIG_KEYBOARD_SUNKBD=m
+CONFIG_KEYBOARD_XTKBD=m
##
## file: drivers/input/misc/Kconfig
@@ -489,7 +464,6 @@ CONFIG_ISDN_DRV_GIGASET=m
CONFIG_GIGASET_BASE=m
CONFIG_GIGASET_M105=m
# CONFIG_GIGASET_DEBUG is not set
-# CONFIG_GIGASET_UNDOCREQ is not set
##
## file: drivers/isdn/hardware/avm/Kconfig
@@ -563,30 +537,8 @@ CONFIG_ISDN_DIVERSION=m
# CONFIG_NEW_LEDS is not set
##
-## file: drivers/md/Kconfig
-##
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-
-##
## file: drivers/media/Kconfig
##
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_DVB_CORE=m
##
@@ -848,13 +800,6 @@ CONFIG_MTD_ONENAND_VERIFY_WRITE=y
##
## file: drivers/net/Kconfig
##
-CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_NET_ETHERNET=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
@@ -913,18 +858,6 @@ CONFIG_ARCNET_COM20020=m
CONFIG_ARCNET_COM20020_PCI=m
##
-## file: drivers/net/hamradio/Kconfig
-##
-CONFIG_MKISS=m
-CONFIG_6PACK=m
-CONFIG_BPQETHER=m
-CONFIG_BAYCOM_SER_FDX=m
-CONFIG_BAYCOM_SER_HDX=m
-CONFIG_BAYCOM_PAR=m
-CONFIG_BAYCOM_EPP=m
-CONFIG_YAM=m
-
-##
## file: drivers/net/irda/Kconfig
##
CONFIG_IRTTY_SIR=m
@@ -946,7 +879,6 @@ CONFIG_LXT_PHY=m
# CONFIG_VITESSE_PHY is not set
CONFIG_SMSC_PHY=m
CONFIG_BROADCOM_PHY=m
-CONFIG_FIXED_PHY=m
##
## file: drivers/net/tulip/Kconfig
@@ -994,15 +926,6 @@ CONFIG_PCI_ATMEL=m
CONFIG_USB_ZD1201=m
##
-## file: drivers/net/wireless/hostap/Kconfig
-##
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-
-##
## file: drivers/net/wireless/ipw2x00/Kconfig
##
CONFIG_IPW2100=m
@@ -1046,12 +969,6 @@ CONFIG_ZD1211RW=m
##
## file: drivers/rtc/Kconfig
##
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
CONFIG_RTC_DRV_DS1307=m
CONFIG_RTC_DRV_DS1672=m
CONFIG_RTC_DRV_RS5C372=m
@@ -1070,30 +987,7 @@ CONFIG_RTC_DRV_M48T86=m
##
## file: drivers/scsi/Kconfig
##
-CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
-CONFIG_SCSI_TGT=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_MULTI_LUN=y
-CONFIG_SCSI_CONSTANTS=y
-CONFIG_SCSI_LOGGING=y
-CONFIG_SCSI_SCAN_ASYNC=y
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
-CONFIG_ISCSI_TCP=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX_OLD=m
CONFIG_SCSI_DPT_I2O=m
CONFIG_SCSI_ARCMSR=m
CONFIG_SCSI_HPTIOP=m
@@ -1198,7 +1092,7 @@ CONFIG_PHONE_IXJ=m
##
## file: drivers/usb/Kconfig
##
-CONFIG_USB=y
+CONFIG_USB=m
CONFIG_USB_USS720=m
##
@@ -1211,19 +1105,6 @@ CONFIG_USB_UEAGLEATM=m
CONFIG_USB_XUSBATM=m
##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
@@ -1236,64 +1117,18 @@ CONFIG_USB_U132_HCD=m
CONFIG_USB_SL811_HCD=m
##
-## file: drivers/usb/image/Kconfig
-##
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-CONFIG_USB_ADUTUX=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
-CONFIG_USB_APPLEDISPLAY=m
-CONFIG_USB_LD=m
-CONFIG_USB_TRANCEVIBRATOR=m
-CONFIG_USB_TEST=m
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-
-##
## file: drivers/usb/mon/Kconfig
##
CONFIG_USB_MON=y
##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
-# CONFIG_USB_LIBUSUAL is not set
-
-##
## file: drivers/video/Kconfig
##
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y
-CONFIG_FB_CIRRUS=m
+CONFIG_FB_CIRRUS=y
CONFIG_FB_PM2=m
CONFIG_FB_PM2_FIFO_DISCONNECT=y
CONFIG_FB_CYBER2000=m
@@ -1309,7 +1144,6 @@ CONFIG_FB_MATROX_MYSTIQUE=y
CONFIG_FB_MATROX_G=y
CONFIG_FB_MATROX_I2C=m
CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_MATROX_MULTIHEAD=y
CONFIG_FB_RADEON=m
CONFIG_FB_RADEON_I2C=y
# CONFIG_FB_RADEON_DEBUG is not set
@@ -1331,12 +1165,6 @@ CONFIG_FB_TRIDENT=m
CONFIG_FB_VIRTUAL=m
##
-## file: drivers/video/backlight/Kconfig
-##
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-
-##
## file: drivers/video/console/Kconfig
##
CONFIG_VGA_CONSOLE=y
@@ -1350,26 +1178,16 @@ CONFIG_FONT_8x16=y
##
## file: drivers/video/logo/Kconfig
##
-# CONFIG_LOGO is not set
+CONFIG_LOGO=y
##
## file: drivers/watchdog/Kconfig
##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-CONFIG_SOFT_WATCHDOG=m
CONFIG_PCIPCWATCHDOG=m
CONFIG_WDTPCI=m
-CONFIG_WDT_501_PCI=y
CONFIG_USBPCWATCHDOG=m
##
-## file: fs/Kconfig.binfmt
-##
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=m
-
-##
## file: fs/cramfs/Kconfig
##
CONFIG_CRAMFS=y
@@ -1391,18 +1209,6 @@ CONFIG_EXT2_FS=y
CONFIG_EXT3_FS=y
##
-## file: fs/ncpfs/Kconfig
-##
-CONFIG_NCPFS_PACKET_SIGNING=y
-CONFIG_NCPFS_IOCTL_LOCKING=y
-CONFIG_NCPFS_STRONG=y
-CONFIG_NCPFS_NFS_NS=y
-CONFIG_NCPFS_OS2_NS=y
-# CONFIG_NCPFS_SMALLDOS is not set
-CONFIG_NCPFS_NLS=y
-CONFIG_NCPFS_EXTRAS=y
-
-##
## file: fs/nfs/Kconfig
##
CONFIG_NFS_FS=y
@@ -1537,11 +1343,6 @@ CONFIG_LAPB=m
# CONFIG_NETLABEL is not set
##
-## file: net/sunrpc/Kconfig
-##
-CONFIG_RPCSEC_GSS_KRB5=y
-
-##
## file: net/wanrouter/Kconfig
##
CONFIG_WAN_ROUTER=m
@@ -1557,29 +1358,6 @@ CONFIG_WIRELESS_EXT=y
CONFIG_X25=m
##
-## file: sound/Kconfig
-##
-CONFIG_SOUND=y
-CONFIG_SOUND_PRIME=m
-
-##
-## file: sound/core/Kconfig
-##
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_RTCTIMER=m
-CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
## file: sound/drivers/Kconfig
##
CONFIG_SND_DUMMY=m
@@ -1591,16 +1369,6 @@ CONFIG_SND_MPU401=m
CONFIG_SND_AC97_POWER_SAVE=y
##
-## file: sound/oss/Kconfig
-##
-CONFIG_SOUND_MSNDCLAS=m
-CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin"
-CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin"
-CONFIG_SOUND_MSNDPIN=m
-CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin"
-CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin"
-
-##
## file: sound/pci/Kconfig
##
CONFIG_SND_AD1889=m
diff --git a/config/mips/config.5kc-malta b/config/mips/config.5kc-malta
index 16991a4..1643f32 100644
--- a/config/mips/config.5kc-malta
+++ b/config/mips/config.5kc-malta
@@ -33,11 +33,6 @@ CONFIG_MIPS_MALTA=y
# CONFIG_SNI_RM is not set
# CONFIG_WR_PPMC is not set
## end choice
-CONFIG_EARLY_PRINTK=y
-## choice: Endianess selection
-CONFIG_CPU_BIG_ENDIAN=y
-# CONFIG_CPU_LITTLE_ENDIAN is not set
-## end choice
## choice: CPU type
# CONFIG_CPU_MIPS32_R1 is not set
# CONFIG_CPU_MIPS32_R2 is not set
@@ -257,22 +252,10 @@ CONFIG_DRM_VIA=m
CONFIG_DRM_SAVAGE=m
##
-## file: drivers/hid/Kconfig
-##
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-
-##
-## file: drivers/hid/usbhid/Kconfig
-##
-CONFIG_USB_HID=m
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-
-##
## file: drivers/hwmon/Kconfig
##
CONFIG_HWMON=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
# CONFIG_SENSORS_ABITUGURU is not set
CONFIG_SENSORS_AD7418=m
CONFIG_SENSORS_ADM1021=m
@@ -285,8 +268,6 @@ CONFIG_SENSORS_ADM9240=m
# CONFIG_SENSORS_ATXP1 is not set
CONFIG_SENSORS_DS1621=m
# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_IT87 is not set
@@ -320,7 +301,6 @@ CONFIG_SENSORS_PCF8591=m
# CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
##
## file: drivers/i2c/Kconfig
@@ -357,13 +337,6 @@ CONFIG_I2C_VOODOO3=m
# CONFIG_I2C_STUB is not set
##
-## file: drivers/i2c/chips/Kconfig
-##
-CONFIG_SENSORS_PCF8574=m
-CONFIG_SENSORS_PCA9539=m
-CONFIG_SENSORS_MAX6875=m
-
-##
## file: drivers/ide/Kconfig
##
CONFIG_IDE=y
@@ -473,11 +446,11 @@ CONFIG_INPUT_JOYSTICK=y
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_SUNKBD=m
CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_XTKBD=m
CONFIG_KEYBOARD_NEWTON=m
CONFIG_KEYBOARD_STOWAWAY=m
+CONFIG_KEYBOARD_SUNKBD=m
+CONFIG_KEYBOARD_XTKBD=m
##
## file: drivers/input/misc/Kconfig
@@ -548,7 +521,6 @@ CONFIG_GIGASET_BASE=m
CONFIG_GIGASET_M105=m
CONFIG_GIGASET_M101=m
# CONFIG_GIGASET_DEBUG is not set
-# CONFIG_GIGASET_UNDOCREQ is not set
##
## file: drivers/isdn/hardware/avm/Kconfig
@@ -622,31 +594,8 @@ CONFIG_ISDN_DIVERSION=m
# CONFIG_NEW_LEDS is not set
##
-## file: drivers/md/Kconfig
-##
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_DELAY=m
-
-##
## file: drivers/media/Kconfig
##
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_DVB_CORE=m
##
@@ -1056,13 +1005,6 @@ CONFIG_MTD_UBI_BEB_RESERVE=1
##
## file: drivers/net/Kconfig
##
-CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_NET_ETHERNET=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
@@ -1072,6 +1014,7 @@ CONFIG_TYPHOON=m
# CONFIG_DM9000 is not set
# CONFIG_HP100 is not set
CONFIG_NET_PCI=y
+CONFIG_PCNET32=y
CONFIG_AMD8111_ETH=m
CONFIG_ADAPTEC_STARFIRE=m
CONFIG_B44=m
@@ -1122,17 +1065,6 @@ CONFIG_ARCNET_COM20020=m
CONFIG_ARCNET_COM20020_PCI=m
##
-## file: drivers/net/hamradio/Kconfig
-##
-CONFIG_MKISS=m
-CONFIG_6PACK=m
-CONFIG_BPQETHER=m
-CONFIG_BAYCOM_SER_FDX=m
-CONFIG_BAYCOM_SER_HDX=m
-CONFIG_BAYCOM_PAR=m
-CONFIG_YAM=m
-
-##
## file: drivers/net/irda/Kconfig
##
CONFIG_IRTTY_SIR=m
@@ -1153,7 +1085,6 @@ CONFIG_LXT_PHY=m
# CONFIG_VITESSE_PHY is not set
CONFIG_SMSC_PHY=m
CONFIG_BROADCOM_PHY=m
-CONFIG_FIXED_PHY=m
##
## file: drivers/net/tokenring/Kconfig
@@ -1217,15 +1148,6 @@ CONFIG_PCI_ATMEL=m
CONFIG_USB_ZD1201=m
##
-## file: drivers/net/wireless/hostap/Kconfig
-##
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-
-##
## file: drivers/net/wireless/ipw2x00/Kconfig
##
CONFIG_IPW2100=m
@@ -1269,12 +1191,6 @@ CONFIG_ZD1211RW=m
##
## file: drivers/rtc/Kconfig
##
-CONFIG_RTC_CLASS=m
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
CONFIG_RTC_DRV_DS1307=m
CONFIG_RTC_DRV_DS1672=m
CONFIG_RTC_DRV_MAX6900=m
@@ -1294,30 +1210,7 @@ CONFIG_RTC_DRV_M48T86=m
##
## file: drivers/scsi/Kconfig
##
-CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
-CONFIG_SCSI_TGT=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_MULTI_LUN=y
-CONFIG_SCSI_CONSTANTS=y
-CONFIG_SCSI_LOGGING=y
-CONFIG_SCSI_SCAN_ASYNC=y
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
-CONFIG_ISCSI_TCP=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX_OLD=m
CONFIG_SCSI_ARCMSR=m
CONFIG_SCSI_HPTIOP=m
CONFIG_SCSI_DMX3191D=m
@@ -1421,7 +1314,7 @@ CONFIG_PHONE_IXJ=m
##
## file: drivers/usb/Kconfig
##
-CONFIG_USB=y
+CONFIG_USB=m
CONFIG_USB_USS720=m
##
@@ -1434,19 +1327,6 @@ CONFIG_USB_UEAGLEATM=m
CONFIG_USB_XUSBATM=m
##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
@@ -1459,106 +1339,18 @@ CONFIG_USB_U132_HCD=m
CONFIG_USB_SL811_HCD=m
##
-## file: drivers/usb/image/Kconfig
-##
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-CONFIG_USB_ADUTUX=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_BERRY_CHARGE=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
-CONFIG_USB_APPLEDISPLAY=m
-CONFIG_USB_LD=m
-CONFIG_USB_TRANCEVIBRATOR=m
-CONFIG_USB_IOWARRIOR=m
-CONFIG_USB_TEST=m
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-
-##
## file: drivers/usb/mon/Kconfig
##
CONFIG_USB_MON=y
##
-## file: drivers/usb/serial/Kconfig
-##
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-# CONFIG_USB_SERIAL_TI is not set
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_SERIAL_DEBUG=m
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
-# CONFIG_USB_LIBUSUAL is not set
-
-##
## file: drivers/video/Kconfig
##
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y
-CONFIG_FB_CIRRUS=m
+CONFIG_FB_CIRRUS=y
CONFIG_FB_PM2=m
CONFIG_FB_PM2_FIFO_DISCONNECT=y
CONFIG_FB_CYBER2000=m
@@ -1576,7 +1368,6 @@ CONFIG_FB_MATROX_MYSTIQUE=y
CONFIG_FB_MATROX_G=y
CONFIG_FB_MATROX_I2C=m
CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_MATROX_MULTIHEAD=y
CONFIG_FB_RADEON=m
CONFIG_FB_RADEON_I2C=y
CONFIG_FB_RADEON_BACKLIGHT=y
@@ -1606,12 +1397,6 @@ CONFIG_FB_SM501=m
CONFIG_FB_VIRTUAL=m
##
-## file: drivers/video/backlight/Kconfig
-##
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-
-##
## file: drivers/video/console/Kconfig
##
# CONFIG_VGA_CONSOLE is not set
@@ -1629,7 +1414,7 @@ CONFIG_DISPLAY_SUPPORT=m
##
## file: drivers/video/logo/Kconfig
##
-# CONFIG_LOGO is not set
+CONFIG_LOGO=y
##
## file: drivers/w1/Kconfig
@@ -1655,21 +1440,11 @@ CONFIG_W1_SLAVE_DS2433=m
##
## file: drivers/watchdog/Kconfig
##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-CONFIG_SOFT_WATCHDOG=m
CONFIG_PCIPCWATCHDOG=m
CONFIG_WDTPCI=m
-CONFIG_WDT_501_PCI=y
CONFIG_USBPCWATCHDOG=m
##
-## file: fs/Kconfig.binfmt
-##
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=m
-
-##
## file: fs/cramfs/Kconfig
##
CONFIG_CRAMFS=y
@@ -1836,11 +1611,6 @@ CONFIG_RFKILL=m
CONFIG_RFKILL_INPUT=m
##
-## file: net/sunrpc/Kconfig
-##
-CONFIG_RPCSEC_GSS_KRB5=y
-
-##
## file: net/wanrouter/Kconfig
##
CONFIG_WAN_ROUTER=m
@@ -1857,29 +1627,6 @@ CONFIG_WIRELESS_EXT=y
CONFIG_X25=m
##
-## file: sound/Kconfig
-##
-CONFIG_SOUND=y
-CONFIG_SOUND_PRIME=m
-
-##
-## file: sound/core/Kconfig
-##
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_RTCTIMER=m
-CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
## file: sound/drivers/Kconfig
##
CONFIG_SND_DUMMY=m
@@ -1892,16 +1639,6 @@ CONFIG_SND_PORTMAN2X4=m
CONFIG_SND_AC97_POWER_SAVE=y
##
-## file: sound/oss/Kconfig
-##
-CONFIG_SOUND_MSNDCLAS=m
-CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin"
-CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin"
-CONFIG_SOUND_MSNDPIN=m
-CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin"
-CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin"
-
-##
## file: sound/pci/Kconfig
##
CONFIG_SND_AD1889=m
diff --git a/config/mips/config.r4k-ip22 b/config/mips/config.r4k-ip22
index e445e9c..b8deb4f 100644
--- a/config/mips/config.r4k-ip22
+++ b/config/mips/config.r4k-ip22
@@ -28,10 +28,6 @@ CONFIG_SGI_IP22=y
# CONFIG_SIBYTE_SENTOSA is not set
# CONFIG_SIBYTE_BIGSUR is not set
## end choice
-## choice: Endianess selection
-CONFIG_CPU_BIG_ENDIAN=y
-# CONFIG_CPU_LITTLE_ENDIAN is not set
-## end choice
CONFIG_ARC_CONSOLE=y
## choice: CPU type
# CONFIG_CPU_MIPS32_R1 is not set
@@ -146,6 +142,7 @@ CONFIG_EISA_NAMES=y
## file: drivers/hwmon/Kconfig
##
CONFIG_HWMON=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set
@@ -155,8 +152,6 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_IT87 is not set
@@ -180,7 +175,6 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
##
## file: drivers/i2c/Kconfig
@@ -202,13 +196,6 @@ CONFIG_I2C_CHARDEV=m
# CONFIG_I2C_STUB is not set
##
-## file: drivers/i2c/chips/Kconfig
-##
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-
-##
## file: drivers/ide/Kconfig
##
# CONFIG_IDE is not set
@@ -233,10 +220,10 @@ CONFIG_I2C_CHARDEV=m
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
##
## file: drivers/input/misc/Kconfig
@@ -275,11 +262,6 @@ CONFIG_SERIO_RAW=y
# CONFIG_ISDN is not set
##
-## file: drivers/media/Kconfig
-##
-CONFIG_VIDEO_DEV=m
-
-##
## file: drivers/media/radio/Kconfig
##
# CONFIG_RADIO_CADET is not set
@@ -327,12 +309,6 @@ CONFIG_VIDEO_VINO=m
##
## file: drivers/net/Kconfig
##
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_NET_ETHERNET=y
# CONFIG_NET_VENDOR_3COM is not set
CONFIG_NET_VENDOR_SMC=y
CONFIG_WD80x3=m
@@ -398,23 +374,15 @@ CONFIG_SGISEEQ=y
##
## file: drivers/rtc/Kconfig
##
-CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_DS1286=y
##
## file: drivers/scsi/Kconfig
##
-CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=m
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_MULTI_LUN=y
-CONFIG_SCSI_CONSTANTS=y
# CONFIG_SCSI_LOGGING is not set
CONFIG_SGIWD93_SCSI=y
# CONFIG_SCSI_AHA1740 is not set
@@ -430,7 +398,6 @@ CONFIG_SGIWD93_SCSI=y
# CONFIG_SCSI_SIM710 is not set
# CONFIG_SCSI_SYM53C416 is not set
# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_DEBUG is not set
##
## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx
@@ -494,21 +461,12 @@ CONFIG_LOGO_SGI_CLUT224=y
##
## file: drivers/watchdog/Kconfig
##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_SOFT_WATCHDOG is not set
CONFIG_INDYDOG=m
# CONFIG_PCWATCHDOG is not set
# CONFIG_MIXCOMWD is not set
# CONFIG_WDT is not set
##
-## file: fs/Kconfig.binfmt
-##
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=m
-
-##
## file: fs/cramfs/Kconfig
##
CONFIG_CRAMFS=y
@@ -526,8 +484,6 @@ CONFIG_EXT3_FS=y
##
## file: fs/partitions/Kconfig
##
-CONFIG_PARTITION_ADVANCED=y
-CONFIG_MSDOS_PARTITION=y
CONFIG_SGI_PARTITION=y
CONFIG_KARMA_PARTITION=y
@@ -591,23 +547,6 @@ CONFIG_FLATMEM_MANUAL=y
# CONFIG_WAN_ROUTER is not set
##
-## file: sound/Kconfig
-##
-CONFIG_SND=m
-
-##
-## file: sound/core/Kconfig
-##
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_RTCTIMER=m
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
## file: sound/drivers/Kconfig
##
# CONFIG_SND_DUMMY is not set
diff --git a/config/mips/config.r5k-ip32 b/config/mips/config.r5k-ip32
index a0135ac..180e467 100644
--- a/config/mips/config.r5k-ip32
+++ b/config/mips/config.r5k-ip32
@@ -28,10 +28,6 @@ CONFIG_SGI_IP32=y
# CONFIG_SIBYTE_SENTOSA is not set
# CONFIG_SIBYTE_BIGSUR is not set
## end choice
-## choice: Endianess selection
-CONFIG_CPU_BIG_ENDIAN=y
-# CONFIG_CPU_LITTLE_ENDIAN is not set
-## end choice
## choice: CPU type
# CONFIG_CPU_MIPS32_R1 is not set
# CONFIG_CPU_MIPS32_R2 is not set
@@ -157,6 +153,7 @@ CONFIG_USB_MOUSE=m
## file: drivers/hwmon/Kconfig
##
CONFIG_HWMON=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set
@@ -166,8 +163,6 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_IT87 is not set
@@ -194,7 +189,6 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
##
## file: drivers/i2c/Kconfig
@@ -230,13 +224,6 @@ CONFIG_I2C_CHARDEV=m
# CONFIG_SCx200_ACB is not set
##
-## file: drivers/i2c/chips/Kconfig
-##
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-
-##
## file: drivers/ide/Kconfig
##
# CONFIG_IDE is not set
@@ -266,10 +253,10 @@ CONFIG_I2C_CHARDEV=m
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
##
## file: drivers/input/misc/Kconfig
@@ -307,11 +294,6 @@ CONFIG_SERIO_RAW=y
# CONFIG_ISDN is not set
##
-## file: drivers/media/Kconfig
-##
-CONFIG_VIDEO_DEV=m
-
-##
## file: drivers/media/radio/Kconfig
##
# CONFIG_RADIO_GEMTEK_PCI is not set
@@ -375,12 +357,6 @@ CONFIG_VIDEO_DEV=m
##
## file: drivers/net/Kconfig
##
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_NET_ETHERNET=y
CONFIG_SGI_O2MACE_ETH=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
@@ -448,23 +424,15 @@ CONFIG_PARPORT_IP32=m
##
## file: drivers/rtc/Kconfig
##
-CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_CMOS=y
##
## file: drivers/scsi/Kconfig
##
-CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=m
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_MULTI_LUN=y
-CONFIG_SCSI_CONSTANTS=y
# CONFIG_SCSI_LOGGING is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set
@@ -482,7 +450,6 @@ CONFIG_SCSI_CONSTANTS=y
# CONFIG_SCSI_LPFC is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_DEBUG is not set
##
## file: drivers/scsi/aic7xxx/Kconfig.aic79xx
@@ -539,16 +506,6 @@ CONFIG_SPI_BUTTERFLY=m
CONFIG_USB=m
##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-CONFIG_USB_DEVICEFS=y
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
@@ -556,11 +513,6 @@ CONFIG_USB_OHCI_HCD=m
CONFIG_USB_UHCI_HCD=m
##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-
-##
## file: drivers/video/Kconfig
##
CONFIG_FB=y
@@ -616,19 +568,10 @@ CONFIG_LOGO_SGI_CLUT224=y
##
## file: drivers/watchdog/Kconfig
##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_PCIPCWATCHDOG is not set
# CONFIG_WDTPCI is not set
##
-## file: fs/Kconfig.binfmt
-##
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=m
-
-##
## file: fs/cramfs/Kconfig
##
CONFIG_CRAMFS=y
@@ -646,23 +589,8 @@ CONFIG_EXT3_FS=y
##
## file: fs/partitions/Kconfig
##
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
CONFIG_SGI_PARTITION=y
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
CONFIG_KARMA_PARTITION=y
-# CONFIG_EFI_PARTITION is not set
##
## file: init/Kconfig
@@ -686,23 +614,6 @@ CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
##
-## file: sound/Kconfig
-##
-CONFIG_SND=m
-
-##
-## file: sound/core/Kconfig
-##
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_RTCTIMER=m
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
## file: sound/drivers/Kconfig
##
# CONFIG_SND_DUMMY is not set
@@ -717,16 +628,6 @@ CONFIG_SND_MIPS=y
CONFIG_SND_SGI_O2=m
##
-## file: sound/oss/Kconfig
-##
-# CONFIG_SOUND_MSNDCLAS is not set
-CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin"
-CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin"
-# CONFIG_SOUND_MSNDPIN is not set
-CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin"
-CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin"
-
-##
## file: sound/pci/Kconfig
##
# CONFIG_SND_AD1889 is not set
diff --git a/config/mips/config.sb1-bcm91250a b/config/mips/config.sb1-bcm91250a
index edde4f6..1735e55 100644
--- a/config/mips/config.sb1-bcm91250a
+++ b/config/mips/config.sb1-bcm91250a
@@ -28,10 +28,6 @@ CONFIG_SIBYTE_SWARM=y
# CONFIG_SIBYTE_SENTOSA is not set
# CONFIG_SIBYTE_BIGSUR is not set
## end choice
-## choice: Endianess selection
-CONFIG_CPU_BIG_ENDIAN=y
-# CONFIG_CPU_LITTLE_ENDIAN is not set
-## end choice
## choice: CPU type
# CONFIG_CPU_MIPS32_R1 is not set
# CONFIG_CPU_MIPS32_R2 is not set
@@ -108,10 +104,8 @@ CONFIG_CPU_SB1_PASS_2_2=y
# CONFIG_CPU_SB1_PASS_2_112x is not set
# CONFIG_CPU_SB1_PASS_3 is not set
## end choice
-# CONFIG_SIMULATION is not set
# CONFIG_SB1_CEX_ALWAYS_FATAL is not set
# CONFIG_SB1_CERR_STALL is not set
-CONFIG_SIBYTE_CFE=y
# CONFIG_SIBYTE_CFE_CONSOLE is not set
# CONFIG_SIBYTE_BUS_WATCHER is not set
# CONFIG_SIBYTE_TBPROF is not set
@@ -204,6 +198,7 @@ CONFIG_USB_HID=m
## file: drivers/hwmon/Kconfig
##
CONFIG_HWMON=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set
@@ -213,8 +208,6 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_IT87 is not set
@@ -241,7 +234,6 @@ CONFIG_SENSORS_VT8231=m
# CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
##
## file: drivers/i2c/Kconfig
@@ -278,13 +270,6 @@ CONFIG_I2C_STUB=m
# CONFIG_SCx200_ACB is not set
##
-## file: drivers/i2c/chips/Kconfig
-##
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-
-##
## file: drivers/ide/Kconfig
##
# CONFIG_IDE is not set
@@ -314,10 +299,10 @@ CONFIG_I2C_STUB=m
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
##
## file: drivers/input/misc/Kconfig
@@ -354,29 +339,6 @@ CONFIG_SERIO_LIBPS2=y
# CONFIG_ISDN is not set
##
-## file: drivers/md/Kconfig
-##
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-
-##
-## file: drivers/media/Kconfig
-##
-CONFIG_VIDEO_DEV=m
-
-##
## file: drivers/media/radio/Kconfig
##
# CONFIG_RADIO_GEMTEK_PCI is not set
@@ -477,12 +439,6 @@ CONFIG_USB_ET61X251=m
##
## file: drivers/net/Kconfig
##
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_NET_ETHERNET=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
@@ -565,28 +521,12 @@ CONFIG_BROADCOM_PHY=y
##
## file: drivers/scsi/Kconfig
##
-CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
# CONFIG_SCSI_SAS_ATTRS is not set
-CONFIG_ISCSI_TCP=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX_OLD=m
CONFIG_SCSI_DMX3191D=m
CONFIG_SCSI_FUTURE_DOMAIN=m
CONFIG_SCSI_IPS=m
@@ -661,19 +601,6 @@ CONFIG_USB=m
# CONFIG_USB_USS720 is not set
##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-# CONFIG_USB_PRINTER is not set
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
@@ -684,51 +611,11 @@ CONFIG_USB_UHCI_HCD=m
CONFIG_USB_SL811_HCD=m
##
-## file: drivers/usb/image/Kconfig
-##
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-# CONFIG_USB_SISUSBVGA_CON is not set
-
-##
## file: drivers/usb/mon/Kconfig
##
CONFIG_USB_MON=y
##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_ONETOUCH=y
-# CONFIG_USB_LIBUSUAL is not set
-
-##
## file: drivers/video/Kconfig
##
CONFIG_FB=y
@@ -751,7 +638,6 @@ CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
CONFIG_FB_MATROX_G=y
# CONFIG_FB_MATROX_I2C is not set
-# CONFIG_FB_MATROX_MULTIHEAD is not set
CONFIG_FB_RADEON=m
CONFIG_FB_RADEON_I2C=y
# CONFIG_FB_RADEON_DEBUG is not set
@@ -797,20 +683,11 @@ CONFIG_LOGO=y
##
## file: drivers/watchdog/Kconfig
##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_PCIPCWATCHDOG is not set
# CONFIG_WDTPCI is not set
# CONFIG_USBPCWATCHDOG is not set
##
-## file: fs/Kconfig.binfmt
-##
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=m
-
-##
## file: fs/cramfs/Kconfig
##
CONFIG_CRAMFS=y
@@ -834,23 +711,8 @@ CONFIG_ROOT_NFS=y
##
## file: fs/partitions/Kconfig
##
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
CONFIG_SGI_PARTITION=y
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
CONFIG_KARMA_PARTITION=y
-# CONFIG_EFI_PARTITION is not set
##
## file: init/Kconfig
@@ -919,26 +781,6 @@ CONFIG_IP_PNP_BOOTP=y
# CONFIG_X25 is not set
##
-## file: sound/Kconfig
-##
-CONFIG_SOUND=y
-CONFIG_SOUND_PRIME=y
-
-##
-## file: sound/core/Kconfig
-##
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_RTCTIMER=m
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
## file: sound/drivers/Kconfig
##
# CONFIG_SND_DUMMY is not set
@@ -948,17 +790,6 @@ CONFIG_SND_VIRMIDI=m
# CONFIG_SND_MPU401 is not set
##
-## file: sound/oss/Kconfig
-##
-# CONFIG_SOUND_BCM_CS4297A is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin"
-CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin"
-# CONFIG_SOUND_MSNDPIN is not set
-CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin"
-CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin"
-
-##
## file: sound/pci/Kconfig
##
CONFIG_SND_AD1889=m
@@ -1017,4 +848,6 @@ CONFIG_BLK_DEV_IDE_SWARM=y
# CONFIG_LAN_SAA9730 is not set
# CONFIG_MIPS_ATLAS is not set
# CONFIG_MIPS_SEAD is not set
+CONFIG_SIBYTE_CFE=y
+# CONFIG_SIMULATION is not set
diff --git a/config/mips/config.sb1a-bcm91480b b/config/mips/config.sb1a-bcm91480b
index a120128..0bcac78 100644
--- a/config/mips/config.sb1a-bcm91480b
+++ b/config/mips/config.sb1a-bcm91480b
@@ -28,10 +28,6 @@
# CONFIG_SIBYTE_SENTOSA is not set
CONFIG_SIBYTE_BIGSUR=y
## end choice
-## choice: Endianess selection
-CONFIG_CPU_BIG_ENDIAN=y
-# CONFIG_CPU_LITTLE_ENDIAN is not set
-## end choice
## choice: CPU type
# CONFIG_CPU_MIPS32_R1 is not set
# CONFIG_CPU_MIPS32_R2 is not set
@@ -108,10 +104,8 @@ CONFIG_CMDLINE=""
# CONFIG_CPU_SB1_PASS_2_112x is not set
# CONFIG_CPU_SB1_PASS_3 is not set
## end choice
-# CONFIG_SIMULATION is not set
# CONFIG_SB1_CEX_ALWAYS_FATAL is not set
# CONFIG_SB1_CERR_STALL is not set
-CONFIG_SIBYTE_CFE=y
# CONFIG_SIBYTE_CFE_CONSOLE is not set
# CONFIG_SIBYTE_BUS_WATCHER is not set
# CONFIG_SIBYTE_TBPROF is not set
@@ -205,6 +199,7 @@ CONFIG_USB_HID=m
## file: drivers/hwmon/Kconfig
##
CONFIG_HWMON=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set
@@ -214,8 +209,6 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_IT87 is not set
@@ -242,7 +235,6 @@ CONFIG_SENSORS_VT8231=m
# CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
##
## file: drivers/i2c/Kconfig
@@ -279,13 +271,6 @@ CONFIG_I2C_STUB=m
# CONFIG_SCx200_ACB is not set
##
-## file: drivers/i2c/chips/Kconfig
-##
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-
-##
## file: drivers/ide/Kconfig
##
CONFIG_IDE=y
@@ -344,10 +329,10 @@ CONFIG_BLK_DEV_VIA82CXXX=m
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
##
## file: drivers/input/misc/Kconfig
@@ -384,29 +369,6 @@ CONFIG_SERIO_LIBPS2=y
# CONFIG_ISDN is not set
##
-## file: drivers/md/Kconfig
-##
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-
-##
-## file: drivers/media/Kconfig
-##
-CONFIG_VIDEO_DEV=m
-
-##
## file: drivers/media/radio/Kconfig
##
# CONFIG_RADIO_GEMTEK_PCI is not set
@@ -507,12 +469,6 @@ CONFIG_USB_ET61X251=m
##
## file: drivers/net/Kconfig
##
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_NET_ETHERNET=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
@@ -595,28 +551,10 @@ CONFIG_BROADCOM_PHY=y
##
## file: drivers/scsi/Kconfig
##
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
# CONFIG_SCSI_SAS_ATTRS is not set
-CONFIG_ISCSI_TCP=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX_OLD=m
CONFIG_SCSI_DMX3191D=m
CONFIG_SCSI_FUTURE_DOMAIN=m
CONFIG_SCSI_IPS=m
@@ -691,19 +629,6 @@ CONFIG_USB=m
# CONFIG_USB_USS720 is not set
##
-## file: drivers/usb/class/Kconfig
-##
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
@@ -714,51 +639,11 @@ CONFIG_USB_UHCI_HCD=m
CONFIG_USB_SL811_HCD=m
##
-## file: drivers/usb/image/Kconfig
-##
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-# CONFIG_USB_SISUSBVGA_CON is not set
-
-##
## file: drivers/usb/mon/Kconfig
##
CONFIG_USB_MON=y
##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-CONFIG_USB_STORAGE_ALAUDA=y
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-##
## file: drivers/video/Kconfig
##
CONFIG_FB=y
@@ -781,7 +666,6 @@ CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
CONFIG_FB_MATROX_G=y
# CONFIG_FB_MATROX_I2C is not set
-# CONFIG_FB_MATROX_MULTIHEAD is not set
CONFIG_FB_RADEON=m
CONFIG_FB_RADEON_I2C=y
# CONFIG_FB_RADEON_DEBUG is not set
@@ -827,20 +711,11 @@ CONFIG_LOGO=y
##
## file: drivers/watchdog/Kconfig
##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_PCIPCWATCHDOG is not set
# CONFIG_WDTPCI is not set
# CONFIG_USBPCWATCHDOG is not set
##
-## file: fs/Kconfig.binfmt
-##
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=m
-
-##
## file: fs/cramfs/Kconfig
##
CONFIG_CRAMFS=y
@@ -864,23 +739,8 @@ CONFIG_ROOT_NFS=y
##
## file: fs/partitions/Kconfig
##
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
CONFIG_SGI_PARTITION=y
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
CONFIG_KARMA_PARTITION=y
-# CONFIG_EFI_PARTITION is not set
##
## file: init/Kconfig
@@ -949,26 +809,6 @@ CONFIG_IP_PNP_BOOTP=y
# CONFIG_X25 is not set
##
-## file: sound/Kconfig
-##
-CONFIG_SOUND=y
-CONFIG_SOUND_PRIME=y
-
-##
-## file: sound/core/Kconfig
-##
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_RTCTIMER=m
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
## file: sound/drivers/Kconfig
##
# CONFIG_SND_DUMMY is not set
@@ -978,16 +818,6 @@ CONFIG_SND_SERIAL_U16550=m
# CONFIG_SND_MPU401 is not set
##
-## file: sound/oss/Kconfig
-##
-# CONFIG_SOUND_MSNDCLAS is not set
-CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin"
-CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin"
-# CONFIG_SOUND_MSNDPIN is not set
-CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin"
-CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin"
-
-##
## file: sound/pci/Kconfig
##
CONFIG_SND_AD1889=m
@@ -1046,4 +876,6 @@ CONFIG_SND_HDA_INTEL=m
# CONFIG_LAN_SAA9730 is not set
# CONFIG_MIPS_ATLAS is not set
# CONFIG_MIPS_SEAD is not set
+CONFIG_SIBYTE_CFE=y
+# CONFIG_SIMULATION is not set
diff --git a/config/mips/defines b/config/mips/defines
index 9ef8a94..194a501 100644
--- a/config/mips/defines
+++ b/config/mips/defines
@@ -11,26 +11,26 @@ kernel-arch: mips
[image]
initramfs: false
-[r4k-ip22_base]
-class: SGI IP22
-longclass: SGI IP22 (Indy, Indigo2)
+[r4k-ip22_description]
+hardware: SGI IP22
+hardware-long: SGI IP22 systems (Indy, Indigo2)
-[r5k-ip32_base]
-class: SGI IP32
-longclass: SGI IP32 (O2)
+[r5k-ip32_description]
+hardware: SGI IP32
+hardware-long: SGI IP32 systems (O2)
-[sb1-bcm91250a_base]
-class: BCM91250A
-longclass: Broadcom BCM91250A (aka SWARM)
+[sb1-bcm91250a_description]
+hardware: BCM91250A
+hardware-long: Broadcom BCM91250A systems (aka SWARM)
-[sb1a-bcm91480b_base]
-class: BCM91480B
-longclass: Broadcom BCM91480B (aka BigSur)
+[sb1a-bcm91480b_description]
+hardware: BCM91480B
+hardware-long: Broadcom BCM91480B systems (aka BigSur)
-[4kc-malta_base]
-class: MIPS Malta
-longclass: MIPS Malta board
+[4kc-malta_description]
+hardware: MIPS Malta
+hardware-long: MIPS Malta boards
-[5kc-malta_base]
-class: MIPS Malta (64-bit)
-longclass: MIPS Malta board (64-bit)
+[5kc-malta_description]
+hardware: MIPS Malta (64-bit)
+hardware-long: MIPS Malta boards (64-bit)
diff --git a/config/mipsel/config b/config/mipsel/config
index 247b043..551edff 100644
--- a/config/mipsel/config
+++ b/config/mipsel/config
@@ -1,6 +1,10 @@
##
## file: arch/mips/Kconfig
##
+## choice: Endianess selection
+# CONFIG_CPU_BIG_ENDIAN is not set
+CONFIG_CPU_LITTLE_ENDIAN=y
+## end choice
CONFIG_SECCOMP=y
##
diff --git a/config/mipsel/config.4kc-malta b/config/mipsel/config.4kc-malta
deleted file mode 100644
index b3af1ed..0000000
--- a/config/mipsel/config.4kc-malta
+++ /dev/null
@@ -1,1657 +0,0 @@
-##
-## file: arch/Kconfig
-##
-CONFIG_OPROFILE=m
-
-##
-## file: arch/mips/Kconfig
-##
-## choice: System type
-# CONFIG_BASLER_EXCITE is not set
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MACH_JAZZ is not set
-# CONFIG_LASAT is not set
-CONFIG_MIPS_MALTA=y
-# CONFIG_MIPS_SIM is not set
-# CONFIG_MACH_VR41XX is not set
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_PNX8550_STB810 is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_SWARM is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-# CONFIG_SNI_RM is not set
-# CONFIG_WR_PPMC is not set
-## end choice
-## choice: Endianess selection
-# CONFIG_CPU_BIG_ENDIAN is not set
-CONFIG_CPU_LITTLE_ENDIAN=y
-## end choice
-## choice: CPU type
-CONFIG_CPU_MIPS32_R1=y
-# CONFIG_CPU_MIPS32_R2 is not set
-# CONFIG_CPU_MIPS64_R1 is not set
-# CONFIG_CPU_MIPS64_R2 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_VR41XX is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-## end choice
-## choice: Kernel code model
-CONFIG_32BIT=y
-# CONFIG_64BIT is not set
-## end choice
-## choice: Kernel page size
-CONFIG_PAGE_SIZE_4KB=y
-# CONFIG_PAGE_SIZE_8KB is not set
-# CONFIG_PAGE_SIZE_16KB is not set
-# CONFIG_PAGE_SIZE_64KB is not set
-## end choice
-## choice: MIPS MT options
-CONFIG_MIPS_MT_DISABLED=y
-# CONFIG_MIPS_MT_SMP is not set
-# CONFIG_MIPS_MT_SMTC is not set
-## end choice
-# CONFIG_MIPS_VPE_LOADER is not set
-## choice: Timer frequency
-# CONFIG_HZ_48 is not set
-# CONFIG_HZ_100 is not set
-# CONFIG_HZ_128 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_256 is not set
-# CONFIG_HZ_1000 is not set
-# CONFIG_HZ_1024 is not set
-## end choice
-# CONFIG_KEXEC is not set
-CONFIG_PCI=y
-
-##
-## file: arch/mips/alchemy/Kconfig
-##
-## choice: Machine type
-# CONFIG_MIPS_MTX1 is not set
-# CONFIG_MIPS_BOSPORUS is not set
-# CONFIG_MIPS_DB1000 is not set
-# CONFIG_MIPS_DB1100 is not set
-# CONFIG_MIPS_DB1200 is not set
-# CONFIG_MIPS_DB1500 is not set
-# CONFIG_MIPS_DB1550 is not set
-# CONFIG_MIPS_MIRAGE is not set
-# CONFIG_MIPS_PB1000 is not set
-# CONFIG_MIPS_PB1100 is not set
-# CONFIG_MIPS_PB1200 is not set
-# CONFIG_MIPS_PB1500 is not set
-# CONFIG_MIPS_PB1550 is not set
-# CONFIG_MIPS_XXS1500 is not set
-## end choice
-
-##
-## file: arch/mips/Kconfig.debug
-##
-CONFIG_CMDLINE=""
-
-##
-## file: arch/mips/txx9/Kconfig
-##
-# CONFIG_TOSHIBA_JMR3927 is not set
-# CONFIG_TOSHIBA_RBTX4927 is not set
-# CONFIG_TOSHIBA_RBTX4938 is not set
-
-##
-## file: drivers/ata/Kconfig
-##
-CONFIG_ATA=y
-CONFIG_SATA_AHCI=y
-CONFIG_SATA_SIL24=y
-# CONFIG_SATA_SVW is not set
-# CONFIG_ATA_PIIX is not set
-CONFIG_SATA_MV=y
-# CONFIG_SATA_NV is not set
-# CONFIG_PDC_ADMA is not set
-# CONFIG_SATA_QSTOR is not set
-CONFIG_SATA_PROMISE=y
-CONFIG_SATA_SX4=y
-CONFIG_SATA_SIL=y
-# CONFIG_SATA_SIS is not set
-# CONFIG_SATA_ULI is not set
-# CONFIG_SATA_VIA is not set
-# CONFIG_SATA_VITESSE is not set
-# CONFIG_ATA_GENERIC is not set
-
-##
-## file: drivers/atm/Kconfig
-##
-CONFIG_ATM_DRIVERS=y
-CONFIG_ATM_DUMMY=m
-CONFIG_ATM_TCP=m
-CONFIG_ATM_LANAI=m
-CONFIG_ATM_ENI=m
-# CONFIG_ATM_ENI_DEBUG is not set
-# CONFIG_ATM_ENI_TUNE_BURST is not set
-CONFIG_ATM_FIRESTREAM=m
-CONFIG_ATM_ZATM=m
-# CONFIG_ATM_ZATM_DEBUG is not set
-CONFIG_ATM_NICSTAR=m
-# CONFIG_ATM_NICSTAR_USE_SUNI is not set
-# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
-CONFIG_ATM_IDT77252=m
-# CONFIG_ATM_IDT77252_DEBUG is not set
-# CONFIG_ATM_IDT77252_RCV_ALL is not set
-CONFIG_ATM_AMBASSADOR=m
-# CONFIG_ATM_AMBASSADOR_DEBUG is not set
-CONFIG_ATM_HORIZON=m
-# CONFIG_ATM_HORIZON_DEBUG is not set
-CONFIG_ATM_IA=m
-# CONFIG_ATM_IA_DEBUG is not set
-# CONFIG_ATM_FORE200E_USE_TASKLET is not set
-CONFIG_ATM_FORE200E_TX_RETRY=16
-CONFIG_ATM_FORE200E_DEBUG=0
-CONFIG_ATM_HE=m
-CONFIG_ATM_HE_USE_SUNI=y
-
-##
-## file: drivers/block/Kconfig
-##
-CONFIG_BLK_DEV_FD=m
-CONFIG_PARIDE=m
-CONFIG_BLK_CPQ_CISS_DA=m
-CONFIG_CISS_SCSI_TAPE=y
-CONFIG_BLK_DEV_DAC960=m
-CONFIG_BLK_DEV_UMEM=m
-CONFIG_BLK_DEV_SX8=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=65536
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-
-##
-## file: drivers/block/paride/Kconfig
-##
-CONFIG_PARIDE_PD=m
-CONFIG_PARIDE_PCD=m
-CONFIG_PARIDE_PF=m
-CONFIG_PARIDE_PT=m
-CONFIG_PARIDE_PG=m
-CONFIG_PARIDE_ATEN=m
-CONFIG_PARIDE_BPCK=m
-# CONFIG_PARIDE_BPCK6 is not set
-CONFIG_PARIDE_COMM=m
-CONFIG_PARIDE_DSTR=m
-CONFIG_PARIDE_FIT2=m
-CONFIG_PARIDE_FIT3=m
-CONFIG_PARIDE_EPAT=m
-# CONFIG_PARIDE_EPATC8 is not set
-CONFIG_PARIDE_EPIA=m
-CONFIG_PARIDE_FRIQ=m
-CONFIG_PARIDE_FRPW=m
-CONFIG_PARIDE_KBIC=m
-CONFIG_PARIDE_KTTI=m
-CONFIG_PARIDE_ON20=m
-CONFIG_PARIDE_ON26=m
-
-##
-## file: drivers/bluetooth/Kconfig
-##
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-
-##
-## file: drivers/char/Kconfig
-##
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-CONFIG_PPDEV=m
-CONFIG_DTLK=m
-CONFIG_APPLICOM=m
-
-##
-## file: drivers/char/ipmi/Kconfig
-##
-CONFIG_IPMI_HANDLER=m
-# CONFIG_IPMI_PANIC_EVENT is not set
-# CONFIG_IPMI_DEVICE_INTERFACE is not set
-CONFIG_IPMI_SI=m
-CONFIG_IPMI_WATCHDOG=m
-CONFIG_IPMI_POWEROFF=m
-
-##
-## file: drivers/char/tpm/Kconfig
-##
-# CONFIG_TCG_TPM is not set
-
-##
-## file: drivers/gpu/drm/Kconfig
-##
-CONFIG_DRM=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_MGA=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
-
-##
-## file: drivers/hid/Kconfig
-##
-CONFIG_HID=y
-
-##
-## file: drivers/hid/usbhid/Kconfig
-##
-CONFIG_USB_HID=m
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-
-##
-## file: drivers/hwmon/Kconfig
-##
-CONFIG_HWMON=y
-# CONFIG_SENSORS_ABITUGURU is not set
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_ADM9240=m
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-CONFIG_SENSORS_DS1621=m
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM70=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_MAX1619=m
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-CONFIG_SENSORS_PCF8591=m
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_VT8231 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/Kconfig
-##
-CONFIG_I2C=m
-CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/busses/Kconfig
-##
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-CONFIG_I2C_PIIX4=m
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_OCORES is not set
-CONFIG_I2C_PARPORT=m
-CONFIG_I2C_PARPORT_LIGHT=m
-CONFIG_I2C_VOODOO3=m
-# CONFIG_I2C_PCA_ISA is not set
-# CONFIG_I2C_STUB is not set
-
-##
-## file: drivers/i2c/chips/Kconfig
-##
-CONFIG_SENSORS_PCF8574=m
-CONFIG_SENSORS_PCA9539=m
-CONFIG_SENSORS_MAX6875=m
-
-##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=y
-CONFIG_IDE_GD_ATA=y
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-CONFIG_BLK_DEV_CMD64X=y
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-CONFIG_BLK_DEV_HPT366=y
-# CONFIG_BLK_DEV_JMICRON is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-CONFIG_BLK_DEV_PIIX=y
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-CONFIG_BLK_DEV_PDC202XX_OLD=y
-CONFIG_BLK_DEV_PDC202XX_NEW=y
-# CONFIG_BLK_DEV_SVWKS is not set
-CONFIG_BLK_DEV_SIIMAGE=y
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-
-##
-## file: drivers/input/gameport/Kconfig
-##
-CONFIG_GAMEPORT=m
-# CONFIG_GAMEPORT_NS558 is not set
-# CONFIG_GAMEPORT_L4 is not set
-CONFIG_GAMEPORT_EMU10K1=m
-CONFIG_GAMEPORT_FM801=m
-
-##
-## file: drivers/input/joystick/Kconfig
-##
-CONFIG_INPUT_JOYSTICK=y
-
-##
-## file: drivers/input/keyboard/Kconfig
-##
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_SUNKBD=m
-CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_XTKBD=m
-CONFIG_KEYBOARD_NEWTON=m
-CONFIG_KEYBOARD_STOWAWAY=m
-
-##
-## file: drivers/input/misc/Kconfig
-##
-# CONFIG_INPUT_MISC is not set
-
-##
-## file: drivers/input/mouse/Kconfig
-##
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=m
-CONFIG_MOUSE_SERIAL=m
-CONFIG_MOUSE_APPLETOUCH=m
-CONFIG_MOUSE_VSXXXAA=m
-
-##
-## file: drivers/input/serio/Kconfig
-##
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=m
-CONFIG_SERIO_PARKBD=m
-CONFIG_SERIO_PCIPS2=y
-CONFIG_SERIO_LIBPS2=y
-CONFIG_SERIO_RAW=m
-
-##
-## file: drivers/input/tablet/Kconfig
-##
-CONFIG_INPUT_TABLET=y
-CONFIG_TABLET_USB_ACECAD=m
-CONFIG_TABLET_USB_AIPTEK=m
-CONFIG_TABLET_USB_GTCO=m
-CONFIG_TABLET_USB_KBTAB=m
-CONFIG_TABLET_USB_WACOM=m
-
-##
-## file: drivers/input/touchscreen/Kconfig
-##
-CONFIG_INPUT_TOUCHSCREEN=y
-
-##
-## file: drivers/isdn/Kconfig
-##
-CONFIG_ISDN=y
-CONFIG_ISDN_I4L=m
-CONFIG_ISDN_CAPI=m
-
-##
-## file: drivers/isdn/capi/Kconfig
-##
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
-CONFIG_ISDN_CAPI_CAPI20=m
-CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
-CONFIG_ISDN_CAPI_CAPIDRV=m
-
-##
-## file: drivers/isdn/gigaset/Kconfig
-##
-CONFIG_ISDN_DRV_GIGASET=m
-CONFIG_GIGASET_BASE=m
-CONFIG_GIGASET_M105=m
-# CONFIG_GIGASET_DEBUG is not set
-# CONFIG_GIGASET_UNDOCREQ is not set
-
-##
-## file: drivers/isdn/hardware/avm/Kconfig
-##
-CONFIG_CAPI_AVM=y
-CONFIG_ISDN_DRV_AVMB1_B1PCI=m
-CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-CONFIG_ISDN_DRV_AVMB1_T1PCI=m
-CONFIG_ISDN_DRV_AVMB1_C4=m
-
-##
-## file: drivers/isdn/hardware/eicon/Kconfig
-##
-CONFIG_CAPI_EICON=y
-CONFIG_ISDN_DIVAS=m
-CONFIG_ISDN_DIVAS_BRIPCI=y
-CONFIG_ISDN_DIVAS_PRIPCI=y
-CONFIG_ISDN_DIVAS_DIVACAPI=m
-CONFIG_ISDN_DIVAS_USERIDI=m
-CONFIG_ISDN_DIVAS_MAINT=m
-
-##
-## file: drivers/isdn/hisax/Kconfig
-##
-CONFIG_ISDN_DRV_HISAX=m
-CONFIG_HISAX_EURO=y
-CONFIG_DE_AOC=y
-# CONFIG_HISAX_NO_SENDCOMPLETE is not set
-# CONFIG_HISAX_NO_LLC is not set
-# CONFIG_HISAX_NO_KEYPAD is not set
-CONFIG_HISAX_1TR6=y
-CONFIG_HISAX_NI1=y
-CONFIG_HISAX_MAX_CARDS=8
-CONFIG_HISAX_16_3=y
-CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_FRITZPCI=y
-CONFIG_HISAX_AVM_A1_PCMCIA=y
-CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_BKM_A4T=y
-CONFIG_HISAX_SCT_QUADRO=y
-CONFIG_HISAX_GAZEL=y
-CONFIG_HISAX_W6692=y
-CONFIG_HISAX_HFC_SX=y
-# CONFIG_HISAX_DEBUG is not set
-CONFIG_HISAX_ST5481=m
-CONFIG_HISAX_HFCUSB=m
-CONFIG_HISAX_HFC4S8S=m
-CONFIG_HISAX_FRITZ_PCIPNP=m
-
-##
-## file: drivers/isdn/i4l/Kconfig
-##
-CONFIG_ISDN_PPP=y
-CONFIG_ISDN_PPP_VJ=y
-CONFIG_ISDN_MPP=y
-CONFIG_IPPP_FILTER=y
-CONFIG_ISDN_PPP_BSDCOMP=m
-CONFIG_ISDN_AUDIO=y
-CONFIG_ISDN_TTY_FAX=y
-CONFIG_ISDN_X25=y
-CONFIG_ISDN_DRV_LOOP=m
-CONFIG_ISDN_DIVERSION=m
-
-##
-## file: drivers/leds/Kconfig
-##
-# CONFIG_NEW_LEDS is not set
-
-##
-## file: drivers/md/Kconfig
-##
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-
-##
-## file: drivers/media/Kconfig
-##
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_DVB_CORE=m
-
-##
-## file: drivers/media/dvb/frontends/Kconfig
-##
-# CONFIG_DVB_FE_CUSTOMISE is not set
-CONFIG_DVB_TDA826X=m
-CONFIG_DVB_TUA6100=m
-CONFIG_DVB_PLL=m
-CONFIG_DVB_LNBP21=m
-CONFIG_DVB_ISL6421=m
-
-##
-## file: drivers/media/radio/Kconfig
-##
-CONFIG_RADIO_GEMTEK_PCI=m
-CONFIG_RADIO_MAXIRADIO=m
-CONFIG_RADIO_MAESTRO=m
-CONFIG_USB_DSBR=m
-
-##
-## file: drivers/media/video/Kconfig
-##
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
-CONFIG_VIDEO_TDA9840=m
-CONFIG_VIDEO_TDA9875=m
-CONFIG_VIDEO_TEA6415C=m
-CONFIG_VIDEO_TEA6420=m
-CONFIG_VIDEO_MSP3400=m
-CONFIG_VIDEO_WM8775=m
-CONFIG_VIDEO_SAA6588=m
-CONFIG_VIDEO_BT819=m
-CONFIG_VIDEO_BT856=m
-CONFIG_VIDEO_KS0127=m
-CONFIG_VIDEO_OV7670=m
-CONFIG_VIDEO_SAA7110=m
-CONFIG_VIDEO_SAA711X=m
-CONFIG_VIDEO_TVP5150=m
-CONFIG_VIDEO_VPX3220=m
-CONFIG_VIDEO_CX2341X=m
-CONFIG_VIDEO_SAA7185=m
-CONFIG_VIDEO_ADV7170=m
-CONFIG_VIDEO_ADV7175=m
-CONFIG_VIDEO_VIVI=m
-CONFIG_VIDEO_BWQCAM=m
-CONFIG_VIDEO_CQCAM=m
-CONFIG_VIDEO_W9966=m
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_PP=m
-CONFIG_VIDEO_CPIA_USB=m
-CONFIG_VIDEO_SAA5246A=m
-CONFIG_VIDEO_SAA5249=m
-CONFIG_VIDEO_STRADIS=m
-CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_CAFE_CCIC=m
-CONFIG_VIDEO_OVCAMCHIP=m
-
-##
-## file: drivers/media/video/bt8xx/Kconfig
-##
-CONFIG_VIDEO_BT848=m
-CONFIG_VIDEO_BT848_DVB=y
-
-##
-## file: drivers/media/video/cpia2/Kconfig
-##
-CONFIG_VIDEO_CPIA2=m
-
-##
-## file: drivers/media/video/cx25840/Kconfig
-##
-CONFIG_VIDEO_CX25840=m
-
-##
-## file: drivers/media/video/cx88/Kconfig
-##
-CONFIG_VIDEO_CX88=m
-CONFIG_VIDEO_CX88_ALSA=m
-CONFIG_VIDEO_CX88_BLACKBIRD=m
-CONFIG_VIDEO_CX88_DVB=m
-CONFIG_VIDEO_CX88_VP3054=m
-
-##
-## file: drivers/media/video/em28xx/Kconfig
-##
-CONFIG_VIDEO_EM28XX=m
-
-##
-## file: drivers/media/video/et61x251/Kconfig
-##
-CONFIG_USB_ET61X251=m
-
-##
-## file: drivers/media/video/pvrusb2/Kconfig
-##
-CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_PVRUSB2_SYSFS=y
-# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-
-##
-## file: drivers/media/video/saa7134/Kconfig
-##
-CONFIG_VIDEO_SAA7134=m
-CONFIG_VIDEO_SAA7134_ALSA=m
-CONFIG_VIDEO_SAA7134_DVB=m
-
-##
-## file: drivers/media/video/usbvision/Kconfig
-##
-CONFIG_VIDEO_USBVISION=m
-
-##
-## file: drivers/media/video/zc0301/Kconfig
-##
-CONFIG_USB_ZC0301=m
-
-##
-## file: drivers/media/video/zoran/Kconfig
-##
-CONFIG_VIDEO_ZORAN=m
-CONFIG_VIDEO_ZORAN_DC30=m
-CONFIG_VIDEO_ZORAN_BUZ=m
-CONFIG_VIDEO_ZORAN_DC10=m
-CONFIG_VIDEO_ZORAN_LML33=m
-CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_ZORAN_AVS6EYES=m
-
-##
-## file: drivers/message/i2o/Kconfig
-##
-CONFIG_I2O=m
-CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
-CONFIG_I2O_EXT_ADAPTEC=y
-CONFIG_I2O_CONFIG=m
-CONFIG_I2O_CONFIG_OLD_IOCTL=y
-CONFIG_I2O_BUS=m
-CONFIG_I2O_BLOCK=m
-CONFIG_I2O_SCSI=m
-CONFIG_I2O_PROC=m
-
-##
-## file: drivers/misc/Kconfig
-##
-# CONFIG_SGI_IOC4 is not set
-CONFIG_TIFM_CORE=m
-CONFIG_TIFM_7XX1=m
-
-##
-## file: drivers/mmc/Kconfig
-##
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-
-##
-## file: drivers/mmc/card/Kconfig
-##
-CONFIG_MMC_BLOCK=m
-
-##
-## file: drivers/mtd/Kconfig
-##
-CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=m
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_BLOCK_RO=m
-CONFIG_FTL=m
-CONFIG_NFTL=m
-CONFIG_NFTL_RW=y
-CONFIG_INFTL=m
-CONFIG_RFD_FTL=m
-CONFIG_SSFDC=m
-
-##
-## file: drivers/mtd/chips/Kconfig
-##
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=m
-CONFIG_MTD_CFI_AMDSTD=m
-CONFIG_MTD_CFI_STAA=m
-CONFIG_MTD_RAM=m
-CONFIG_MTD_ROM=m
-CONFIG_MTD_ABSENT=m
-
-##
-## file: drivers/mtd/devices/Kconfig
-##
-CONFIG_MTD_PMC551=m
-# CONFIG_MTD_PMC551_BUGFIX is not set
-# CONFIG_MTD_PMC551_DEBUG is not set
-CONFIG_MTD_DATAFLASH=m
-CONFIG_MTD_M25P80=m
-CONFIG_MTD_SLRAM=m
-CONFIG_MTD_PHRAM=m
-CONFIG_MTD_MTDRAM=m
-CONFIG_MTDRAM_TOTAL_SIZE=4096
-CONFIG_MTDRAM_ERASE_SIZE=128
-CONFIG_MTD_BLOCK2MTD=m
-CONFIG_MTD_DOC2000=m
-CONFIG_MTD_DOC2001=m
-CONFIG_MTD_DOC2001PLUS=m
-# CONFIG_MTD_DOCPROBE_ADVANCED is not set
-CONFIG_MTD_DOCPROBE_ADDRESS=0
-
-##
-## file: drivers/mtd/maps/Kconfig
-##
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_PHYSMAP=m
-CONFIG_MTD_PHYSMAP_START=0x8000000
-CONFIG_MTD_PHYSMAP_LEN=0x0
-CONFIG_MTD_PHYSMAP_BANKWIDTH=2
-CONFIG_MTD_PCI=m
-CONFIG_MTD_PLATRAM=m
-
-##
-## file: drivers/mtd/nand/Kconfig
-##
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_ECC_SMC is not set
-CONFIG_MTD_NAND_DISKONCHIP=m
-# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
-# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
-CONFIG_MTD_NAND_CAFE=m
-
-##
-## file: drivers/mtd/onenand/Kconfig
-##
-CONFIG_MTD_ONENAND=m
-CONFIG_MTD_ONENAND_VERIFY_WRITE=y
-# CONFIG_MTD_ONENAND_OTP is not set
-
-##
-## file: drivers/net/Kconfig
-##
-CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_NET_ETHERNET=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-# CONFIG_DM9000 is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=y
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_B44=m
-# CONFIG_FORCEDETH is not set
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-# CONFIG_8139TOO_PIO is not set
-CONFIG_8139TOO_TUNE_TWISTER=y
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-# CONFIG_VIA_RHINE_MMIO is not set
-CONFIG_NET_POCKET=y
-CONFIG_DE600=m
-CONFIG_DE620=m
-CONFIG_FDDI=y
-CONFIG_SKFP=m
-CONFIG_HIPPI=y
-CONFIG_ROADRUNNER=m
-# CONFIG_ROADRUNNER_LARGE_RINGS is not set
-CONFIG_PLIP=m
-CONFIG_NET_FC=y
-# CONFIG_NETPOLL_TRAP is not set
-
-##
-## file: drivers/net/arcnet/Kconfig
-##
-CONFIG_ARCNET=m
-CONFIG_ARCNET_1201=m
-CONFIG_ARCNET_1051=m
-CONFIG_ARCNET_RAW=m
-CONFIG_ARCNET_CAP=m
-CONFIG_ARCNET_COM90xx=m
-CONFIG_ARCNET_COM90xxIO=m
-CONFIG_ARCNET_RIM_I=m
-CONFIG_ARCNET_COM20020=m
-CONFIG_ARCNET_COM20020_PCI=m
-
-##
-## file: drivers/net/hamradio/Kconfig
-##
-CONFIG_MKISS=m
-CONFIG_6PACK=m
-CONFIG_BPQETHER=m
-CONFIG_BAYCOM_SER_FDX=m
-CONFIG_BAYCOM_SER_HDX=m
-CONFIG_BAYCOM_PAR=m
-CONFIG_BAYCOM_EPP=m
-CONFIG_YAM=m
-
-##
-## file: drivers/net/irda/Kconfig
-##
-CONFIG_IRTTY_SIR=m
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_TOSHIBA_FIR=m
-CONFIG_VLSI_FIR=m
-CONFIG_MCS_FIR=m
-
-##
-## file: drivers/net/phy/Kconfig
-##
-CONFIG_PHYLIB=m
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-# CONFIG_QSEMI_PHY is not set
-CONFIG_LXT_PHY=m
-# CONFIG_CICADA_PHY is not set
-# CONFIG_VITESSE_PHY is not set
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_FIXED_PHY=m
-
-##
-## file: drivers/net/tulip/Kconfig
-##
-CONFIG_NET_TULIP=y
-CONFIG_DE2104X=m
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-# CONFIG_TULIP_NAPI is not set
-CONFIG_DE4X5=m
-# CONFIG_WINBOND_840 is not set
-CONFIG_DM9102=m
-# CONFIG_ULI526X is not set
-
-##
-## file: drivers/net/wan/Kconfig
-##
-CONFIG_WAN=y
-CONFIG_LANMEDIA=m
-CONFIG_PCI200SYN=m
-CONFIG_WANXL=m
-CONFIG_PC300=m
-# CONFIG_PC300_MLPPP is not set
-CONFIG_FARSYNC=m
-CONFIG_DSCC4=m
-# CONFIG_DSCC4_PCISYNC is not set
-# CONFIG_DSCC4_PCI_RST is not set
-CONFIG_DLCI=m
-CONFIG_DLCI_MAX=8
-CONFIG_WAN_ROUTER_DRIVERS=m
-CONFIG_CYCLADES_SYNC=m
-CONFIG_CYCLOMX_X25=y
-CONFIG_LAPBETHER=m
-CONFIG_X25_ASY=m
-
-##
-## file: drivers/net/wireless/Kconfig
-##
-CONFIG_WLAN_PRE80211=y
-CONFIG_STRIP=m
-CONFIG_WLAN_80211=y
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_USB_ZD1201=m
-
-##
-## file: drivers/net/wireless/hostap/Kconfig
-##
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-
-##
-## file: drivers/net/wireless/ipw2x00/Kconfig
-##
-CONFIG_IPW2100=m
-CONFIG_IPW2100_MONITOR=y
-# CONFIG_IPW2100_DEBUG is not set
-CONFIG_IPW2200=m
-# CONFIG_IPW2200_MONITOR is not set
-CONFIG_IPW2200_QOS=y
-# CONFIG_IPW2200_DEBUG is not set
-
-##
-## file: drivers/net/wireless/orinoco/Kconfig
-##
-CONFIG_HERMES=m
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-CONFIG_NORTEL_HERMES=m
-CONFIG_PCI_HERMES=m
-
-##
-## file: drivers/net/wireless/zd1211rw/Kconfig
-##
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-
-##
-## file: drivers/parport/Kconfig
-##
-# CONFIG_PARPORT_AX88796 is not set
-
-##
-## file: drivers/pci/hotplug/Kconfig
-##
-# CONFIG_HOTPLUG_PCI is not set
-
-##
-## file: drivers/pcmcia/Kconfig
-##
-# CONFIG_PCCARD is not set
-
-##
-## file: drivers/rtc/Kconfig
-##
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-CONFIG_RTC_DRV_DS1307=m
-CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_RS5C372=m
-CONFIG_RTC_DRV_ISL1208=m
-CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF8563=m
-CONFIG_RTC_DRV_PCF8583=m
-CONFIG_RTC_DRV_MAX6902=m
-CONFIG_RTC_DRV_RS5C348=m
-CONFIG_RTC_DRV_CMOS=y
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-CONFIG_RTC_DRV_M48T86=m
-# CONFIG_RTC_DRV_V3020 is not set
-
-##
-## file: drivers/scsi/Kconfig
-##
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=y
-CONFIG_SCSI_TGT=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_MULTI_LUN=y
-CONFIG_SCSI_CONSTANTS=y
-CONFIG_SCSI_LOGGING=y
-CONFIG_SCSI_SCAN_ASYNC=y
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
-CONFIG_ISCSI_TCP=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX_OLD=m
-CONFIG_SCSI_DPT_I2O=m
-CONFIG_SCSI_ARCMSR=m
-CONFIG_SCSI_HPTIOP=m
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_IPS=m
-CONFIG_SCSI_INITIO=m
-CONFIG_SCSI_INIA100=m
-CONFIG_SCSI_STEX=m
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
-# CONFIG_SCSI_IPR is not set
-CONFIG_SCSI_QLOGIC_1280=m
-CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_NSP32=m
-CONFIG_SCSI_DEBUG=m
-CONFIG_SCSI_SRP=m
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic79xx
-##
-CONFIG_SCSI_AIC79XX=m
-CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-CONFIG_AIC79XX_DEBUG_ENABLE=y
-CONFIG_AIC79XX_DEBUG_MASK=0
-CONFIG_AIC79XX_REG_PRETTY_PRINT=y
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx
-##
-CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-CONFIG_AIC7XXX_DEBUG_ENABLE=y
-CONFIG_AIC7XXX_DEBUG_MASK=0
-CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
-
-##
-## file: drivers/scsi/aic94xx/Kconfig
-##
-CONFIG_SCSI_AIC94XX=m
-# CONFIG_AIC94XX_DEBUG is not set
-
-##
-## file: drivers/scsi/libsas/Kconfig
-##
-CONFIG_SCSI_SAS_LIBSAS=m
-# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
-
-##
-## file: drivers/scsi/megaraid/Kconfig.megaraid
-##
-CONFIG_MEGARAID_NEWGEN=y
-CONFIG_MEGARAID_MM=m
-CONFIG_MEGARAID_MAILBOX=m
-CONFIG_MEGARAID_LEGACY=m
-CONFIG_MEGARAID_SAS=m
-
-##
-## file: drivers/scsi/qla2xxx/Kconfig
-##
-CONFIG_SCSI_QLA_FC=m
-
-##
-## file: drivers/scsi/qla4xxx/Kconfig
-##
-CONFIG_SCSI_QLA_ISCSI=m
-
-##
-## file: drivers/serial/Kconfig
-##
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-CONFIG_SERIAL_8250_RSA=y
-CONFIG_SERIAL_JSM=m
-
-##
-## file: drivers/spi/Kconfig
-##
-CONFIG_SPI=y
-CONFIG_SPI_BITBANG=m
-CONFIG_SPI_BUTTERFLY=m
-
-##
-## file: drivers/telephony/Kconfig
-##
-CONFIG_PHONE=m
-CONFIG_PHONE_IXJ=m
-
-##
-## file: drivers/usb/Kconfig
-##
-CONFIG_USB=y
-CONFIG_USB_USS720=m
-
-##
-## file: drivers/usb/atm/Kconfig
-##
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-CONFIG_USB_CXACRU=m
-CONFIG_USB_UEAGLEATM=m
-CONFIG_USB_XUSBATM=m
-
-##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
-## file: drivers/usb/host/Kconfig
-##
-CONFIG_USB_EHCI_HCD=m
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-CONFIG_USB_ISP116X_HCD=m
-CONFIG_USB_OHCI_HCD=m
-CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_U132_HCD=m
-CONFIG_USB_SL811_HCD=m
-
-##
-## file: drivers/usb/image/Kconfig
-##
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-CONFIG_USB_ADUTUX=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
-CONFIG_USB_APPLEDISPLAY=m
-CONFIG_USB_LD=m
-CONFIG_USB_TRANCEVIBRATOR=m
-CONFIG_USB_TEST=m
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-
-##
-## file: drivers/usb/mon/Kconfig
-##
-CONFIG_USB_MON=y
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
-# CONFIG_USB_LIBUSUAL is not set
-
-##
-## file: drivers/video/Kconfig
-##
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-CONFIG_FB_CIRRUS=m
-CONFIG_FB_PM2=m
-CONFIG_FB_PM2_FIFO_DISCONNECT=y
-CONFIG_FB_CYBER2000=m
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-CONFIG_FB_S1D13XXX=m
-CONFIG_FB_NVIDIA=m
-# CONFIG_FB_NVIDIA_I2C is not set
-# CONFIG_FB_RIVA is not set
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-CONFIG_FB_MATROX_I2C=m
-CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_MATROX_MULTIHEAD=y
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY=m
-CONFIG_FB_ATY_CT=y
-# CONFIG_FB_ATY_GENERIC_LCD is not set
-CONFIG_FB_ATY_GX=y
-CONFIG_FB_SAVAGE=m
-# CONFIG_FB_SAVAGE_I2C is not set
-# CONFIG_FB_SAVAGE_ACCEL is not set
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
-CONFIG_FB_NEOMAGIC=m
-CONFIG_FB_KYRO=m
-CONFIG_FB_VOODOO1=m
-CONFIG_FB_TRIDENT=m
-CONFIG_FB_VIRTUAL=m
-
-##
-## file: drivers/video/backlight/Kconfig
-##
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-
-##
-## file: drivers/video/console/Kconfig
-##
-CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-##
-## file: drivers/video/logo/Kconfig
-##
-# CONFIG_LOGO is not set
-
-##
-## file: drivers/watchdog/Kconfig
-##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-CONFIG_SOFT_WATCHDOG=m
-CONFIG_PCIPCWATCHDOG=m
-CONFIG_WDTPCI=m
-CONFIG_WDT_501_PCI=y
-CONFIG_USBPCWATCHDOG=m
-
-##
-## file: fs/Kconfig.binfmt
-##
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=m
-
-##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=y
-
-##
-## file: fs/dlm/Kconfig
-##
-CONFIG_DLM=m
-# CONFIG_DLM_DEBUG is not set
-
-##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
-## file: fs/nfs/Kconfig
-##
-CONFIG_NFS_FS=y
-
-##
-## file: fs/partitions/Kconfig
-##
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-
-##
-## file: init/Kconfig
-##
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-
-##
-## file: lib/Kconfig.debug
-##
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_UNUSED_SYMBOLS=y
-# CONFIG_HEADERS_CHECK is not set
-
-##
-## file: mm/Kconfig
-##
-## choice: Memory model
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-## end choice
-
-##
-## file: net/atm/Kconfig
-##
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-
-##
-## file: net/ax25/Kconfig
-##
-CONFIG_HAMRADIO=y
-CONFIG_AX25=m
-# CONFIG_AX25_DAMA_SLAVE is not set
-CONFIG_NETROM=m
-CONFIG_ROSE=m
-
-##
-## file: net/bridge/netfilter/Kconfig
-##
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-
-##
-## file: net/decnet/Kconfig
-##
-CONFIG_DECNET=m
-# CONFIG_DECNET_ROUTER is not set
-
-##
-## file: net/decnet/netfilter/Kconfig
-##
-CONFIG_DECNET_NF_GRABULATOR=m
-
-##
-## file: net/econet/Kconfig
-##
-CONFIG_ECONET=m
-CONFIG_ECONET_AUNUDP=y
-CONFIG_ECONET_NATIVE=y
-
-##
-## file: net/ipx/Kconfig
-##
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-
-##
-## file: net/irda/Kconfig
-##
-CONFIG_IRDA=m
-# CONFIG_IRDA_ULTRA is not set
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-##
-## file: net/irda/ircomm/Kconfig
-##
-CONFIG_IRCOMM=m
-
-##
-## file: net/irda/irlan/Kconfig
-##
-CONFIG_IRLAN=m
-
-##
-## file: net/irda/irnet/Kconfig
-##
-CONFIG_IRNET=m
-
-##
-## file: net/lapb/Kconfig
-##
-CONFIG_LAPB=m
-
-##
-## file: net/netlabel/Kconfig
-##
-# CONFIG_NETLABEL is not set
-
-##
-## file: net/wanrouter/Kconfig
-##
-CONFIG_WAN_ROUTER=m
-
-##
-## file: net/wireless/Kconfig
-##
-CONFIG_WIRELESS_EXT=y
-
-##
-## file: net/x25/Kconfig
-##
-CONFIG_X25=m
-
-##
-## file: sound/Kconfig
-##
-CONFIG_SOUND=y
-CONFIG_SOUND_PRIME=m
-
-##
-## file: sound/core/Kconfig
-##
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_RTCTIMER=m
-CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
-## file: sound/drivers/Kconfig
-##
-CONFIG_SND_DUMMY=m
-CONFIG_SND_VIRMIDI=m
-CONFIG_SND_MTPAV=m
-CONFIG_SND_MTS64=m
-CONFIG_SND_SERIAL_U16550=m
-CONFIG_SND_MPU401=m
-CONFIG_SND_AC97_POWER_SAVE=y
-
-##
-## file: sound/oss/Kconfig
-##
-CONFIG_SOUND_MSNDCLAS=m
-CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin"
-CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin"
-CONFIG_SOUND_MSNDPIN=m
-CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin"
-CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin"
-
-##
-## file: sound/pci/Kconfig
-##
-CONFIG_SND_AD1889=m
-CONFIG_SND_ALS300=m
-CONFIG_SND_ALI5451=m
-CONFIG_SND_ATIIXP=m
-CONFIG_SND_ATIIXP_MODEM=m
-CONFIG_SND_AU8810=m
-CONFIG_SND_AU8820=m
-CONFIG_SND_AU8830=m
-CONFIG_SND_AZT3328=m
-CONFIG_SND_BT87X=m
-# CONFIG_SND_BT87X_OVERCLOCK is not set
-CONFIG_SND_CA0106=m
-CONFIG_SND_CMIPCI=m
-CONFIG_SND_CS4281=m
-CONFIG_SND_CS46XX=m
-CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_DARLA20=m
-CONFIG_SND_GINA20=m
-CONFIG_SND_LAYLA20=m
-CONFIG_SND_DARLA24=m
-CONFIG_SND_GINA24=m
-CONFIG_SND_LAYLA24=m
-CONFIG_SND_MONA=m
-CONFIG_SND_MIA=m
-CONFIG_SND_ECHO3G=m
-CONFIG_SND_INDIGO=m
-CONFIG_SND_INDIGOIO=m
-CONFIG_SND_INDIGODJ=m
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_EMU10K1X=m
-CONFIG_SND_ENS1370=m
-CONFIG_SND_ENS1371=m
-CONFIG_SND_ES1938=m
-CONFIG_SND_ES1968=m
-CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_HDSP=m
-CONFIG_SND_HDSPM=m
-CONFIG_SND_ICE1712=m
-CONFIG_SND_ICE1724=m
-CONFIG_SND_INTEL8X0=m
-CONFIG_SND_INTEL8X0M=m
-CONFIG_SND_KORG1212=m
-CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MIXART=m
-CONFIG_SND_NM256=m
-CONFIG_SND_PCXHR=m
-CONFIG_SND_RIPTIDE=m
-CONFIG_SND_RME32=m
-CONFIG_SND_RME96=m
-CONFIG_SND_RME9652=m
-CONFIG_SND_SONICVIBES=m
-CONFIG_SND_TRIDENT=m
-CONFIG_SND_VIA82XX=m
-CONFIG_SND_VIA82XX_MODEM=m
-CONFIG_SND_VX222=m
-CONFIG_SND_YMFPCI=m
-
-##
-## file: sound/pci/hda/Kconfig
-##
-CONFIG_SND_HDA_INTEL=m
-
-##
-## file: unknown
-##
-# CONFIG_MARKEINS is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_SEAD is not set
-
diff --git a/config/mipsel/config.5kc-malta b/config/mipsel/config.5kc-malta
deleted file mode 100644
index 4b28190..0000000
--- a/config/mipsel/config.5kc-malta
+++ /dev/null
@@ -1,1971 +0,0 @@
-##
-## file: arch/Kconfig
-##
-CONFIG_OPROFILE=m
-
-##
-## file: arch/mips/Kconfig
-##
-## choice: System type
-# CONFIG_MACH_ALCHEMY is not set
-# CONFIG_BASLER_EXCITE is not set
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MACH_JAZZ is not set
-# CONFIG_LASAT is not set
-CONFIG_MIPS_MALTA=y
-# CONFIG_MIPS_SIM is not set
-# CONFIG_MACH_VR41XX is not set
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_PNX8550_STB810 is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_SWARM is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-# CONFIG_SNI_RM is not set
-# CONFIG_WR_PPMC is not set
-## end choice
-CONFIG_EARLY_PRINTK=y
-## choice: Endianess selection
-# CONFIG_CPU_BIG_ENDIAN is not set
-CONFIG_CPU_LITTLE_ENDIAN=y
-## end choice
-## choice: CPU type
-# CONFIG_CPU_MIPS32_R1 is not set
-# CONFIG_CPU_MIPS32_R2 is not set
-CONFIG_CPU_MIPS64_R1=y
-# CONFIG_CPU_MIPS64_R2 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_VR41XX is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-## end choice
-## choice: Kernel code model
-# CONFIG_32BIT is not set
-CONFIG_64BIT=y
-## end choice
-## choice: Kernel page size
-CONFIG_PAGE_SIZE_4KB=y
-# CONFIG_PAGE_SIZE_8KB is not set
-# CONFIG_PAGE_SIZE_16KB is not set
-# CONFIG_PAGE_SIZE_64KB is not set
-## end choice
-## choice: MIPS MT options
-CONFIG_MIPS_MT_DISABLED=y
-# CONFIG_MIPS_MT_SMP is not set
-# CONFIG_MIPS_MT_SMTC is not set
-## end choice
-# CONFIG_MIPS_VPE_LOADER is not set
-# CONFIG_CPU_HAS_SMARTMIPS is not set
-## choice: Timer frequency
-# CONFIG_HZ_48 is not set
-# CONFIG_HZ_100 is not set
-# CONFIG_HZ_128 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_256 is not set
-# CONFIG_HZ_1000 is not set
-# CONFIG_HZ_1024 is not set
-## end choice
-# CONFIG_KEXEC is not set
-CONFIG_PCI=y
-CONFIG_MIPS32_COMPAT=y
-CONFIG_MIPS32_O32=y
-CONFIG_MIPS32_N32=y
-
-##
-## file: arch/mips/Kconfig.debug
-##
-CONFIG_CMDLINE=""
-
-##
-## file: arch/mips/txx9/Kconfig
-##
-# CONFIG_TOSHIBA_JMR3927 is not set
-# CONFIG_TOSHIBA_RBTX4927 is not set
-# CONFIG_TOSHIBA_RBTX4938 is not set
-
-##
-## file: drivers/ata/Kconfig
-##
-CONFIG_ATA=y
-CONFIG_SATA_AHCI=y
-CONFIG_SATA_SIL24=y
-# CONFIG_SATA_SVW is not set
-# CONFIG_ATA_PIIX is not set
-CONFIG_SATA_MV=y
-# CONFIG_SATA_NV is not set
-# CONFIG_PDC_ADMA is not set
-# CONFIG_SATA_QSTOR is not set
-CONFIG_SATA_PROMISE=y
-CONFIG_SATA_SX4=y
-CONFIG_SATA_SIL=y
-# CONFIG_SATA_SIS is not set
-# CONFIG_SATA_ULI is not set
-# CONFIG_SATA_VIA is not set
-# CONFIG_SATA_VITESSE is not set
-CONFIG_SATA_INIC162X=m
-# CONFIG_ATA_GENERIC is not set
-
-##
-## file: drivers/atm/Kconfig
-##
-CONFIG_ATM_DRIVERS=y
-CONFIG_ATM_DUMMY=m
-CONFIG_ATM_TCP=m
-CONFIG_ATM_LANAI=m
-CONFIG_ATM_ENI=m
-# CONFIG_ATM_ENI_DEBUG is not set
-# CONFIG_ATM_ENI_TUNE_BURST is not set
-CONFIG_ATM_FIRESTREAM=m
-CONFIG_ATM_ZATM=m
-# CONFIG_ATM_ZATM_DEBUG is not set
-CONFIG_ATM_IDT77252=m
-# CONFIG_ATM_IDT77252_DEBUG is not set
-# CONFIG_ATM_IDT77252_RCV_ALL is not set
-CONFIG_ATM_AMBASSADOR=m
-# CONFIG_ATM_AMBASSADOR_DEBUG is not set
-CONFIG_ATM_HORIZON=m
-# CONFIG_ATM_HORIZON_DEBUG is not set
-# CONFIG_ATM_FORE200E_USE_TASKLET is not set
-CONFIG_ATM_FORE200E_TX_RETRY=16
-CONFIG_ATM_FORE200E_DEBUG=0
-CONFIG_ATM_HE=m
-CONFIG_ATM_HE_USE_SUNI=y
-
-##
-## file: drivers/auxdisplay/Kconfig
-##
-# CONFIG_KS0108 is not set
-
-##
-## file: drivers/block/Kconfig
-##
-CONFIG_BLK_DEV_FD=m
-CONFIG_PARIDE=m
-# CONFIG_BLK_CPQ_DA is not set
-CONFIG_BLK_CPQ_CISS_DA=m
-CONFIG_CISS_SCSI_TAPE=y
-CONFIG_BLK_DEV_DAC960=m
-CONFIG_BLK_DEV_UMEM=m
-CONFIG_BLK_DEV_SX8=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=65536
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-
-##
-## file: drivers/block/paride/Kconfig
-##
-CONFIG_PARIDE_PD=m
-CONFIG_PARIDE_PCD=m
-CONFIG_PARIDE_PF=m
-CONFIG_PARIDE_PT=m
-CONFIG_PARIDE_PG=m
-CONFIG_PARIDE_ATEN=m
-CONFIG_PARIDE_BPCK=m
-CONFIG_PARIDE_COMM=m
-CONFIG_PARIDE_DSTR=m
-CONFIG_PARIDE_FIT2=m
-CONFIG_PARIDE_FIT3=m
-CONFIG_PARIDE_EPAT=m
-# CONFIG_PARIDE_EPATC8 is not set
-CONFIG_PARIDE_EPIA=m
-CONFIG_PARIDE_FRIQ=m
-CONFIG_PARIDE_FRPW=m
-CONFIG_PARIDE_KBIC=m
-CONFIG_PARIDE_KTTI=m
-CONFIG_PARIDE_ON20=m
-CONFIG_PARIDE_ON26=m
-
-##
-## file: drivers/bluetooth/Kconfig
-##
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-
-##
-## file: drivers/char/Kconfig
-##
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-CONFIG_PPDEV=m
-CONFIG_APPLICOM=m
-
-##
-## file: drivers/char/ipmi/Kconfig
-##
-CONFIG_IPMI_HANDLER=m
-# CONFIG_IPMI_PANIC_EVENT is not set
-# CONFIG_IPMI_DEVICE_INTERFACE is not set
-CONFIG_IPMI_SI=m
-CONFIG_IPMI_WATCHDOG=m
-CONFIG_IPMI_POWEROFF=m
-
-##
-## file: drivers/char/tpm/Kconfig
-##
-# CONFIG_TCG_TPM is not set
-
-##
-## file: drivers/firewire/Kconfig
-##
-CONFIG_FIREWIRE=m
-CONFIG_FIREWIRE_OHCI=m
-CONFIG_FIREWIRE_SBP2=m
-
-##
-## file: drivers/gpu/drm/Kconfig
-##
-CONFIG_DRM=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_MGA=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
-
-##
-## file: drivers/hid/Kconfig
-##
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-
-##
-## file: drivers/hid/usbhid/Kconfig
-##
-CONFIG_USB_HID=m
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-
-##
-## file: drivers/hwmon/Kconfig
-##
-CONFIG_HWMON=y
-# CONFIG_SENSORS_ABITUGURU is not set
-CONFIG_SENSORS_AD7418=m
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1029=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_ADM9240=m
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-CONFIG_SENSORS_DS1621=m
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM70=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX6650=m
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-CONFIG_SENSORS_PCF8591=m
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_VT8231 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/Kconfig
-##
-CONFIG_I2C=m
-CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/busses/Kconfig
-##
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-CONFIG_I2C_PIIX4=m
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_OCORES is not set
-CONFIG_I2C_SIMTEC=m
-CONFIG_I2C_PARPORT=m
-CONFIG_I2C_PARPORT_LIGHT=m
-CONFIG_I2C_TINY_USB=m
-CONFIG_I2C_VOODOO3=m
-# CONFIG_I2C_STUB is not set
-
-##
-## file: drivers/i2c/chips/Kconfig
-##
-CONFIG_SENSORS_PCF8574=m
-CONFIG_SENSORS_PCA9539=m
-CONFIG_SENSORS_MAX6875=m
-
-##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=y
-CONFIG_IDE_GD_ATA=y
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-CONFIG_IDE_GENERIC=y
-CONFIG_IDEPCI_PCIBUS_ORDER=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-CONFIG_BLK_DEV_CMD64X=y
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-CONFIG_BLK_DEV_HPT366=y
-# CONFIG_BLK_DEV_JMICRON is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-CONFIG_BLK_DEV_PIIX=y
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-CONFIG_BLK_DEV_PDC202XX_OLD=y
-CONFIG_BLK_DEV_PDC202XX_NEW=y
-# CONFIG_BLK_DEV_SVWKS is not set
-CONFIG_BLK_DEV_SIIMAGE=y
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-
-##
-## file: drivers/ieee1394/Kconfig
-##
-# CONFIG_IEEE1394 is not set
-
-##
-## file: drivers/infiniband/Kconfig
-##
-CONFIG_INFINIBAND=m
-CONFIG_INFINIBAND_USER_MAD=m
-CONFIG_INFINIBAND_USER_ACCESS=m
-
-##
-## file: drivers/infiniband/hw/amso1100/Kconfig
-##
-CONFIG_INFINIBAND_AMSO1100=m
-# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
-
-##
-## file: drivers/infiniband/hw/cxgb3/Kconfig
-##
-CONFIG_INFINIBAND_CXGB3=m
-# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
-
-##
-## file: drivers/infiniband/hw/mlx4/Kconfig
-##
-CONFIG_MLX4_INFINIBAND=m
-
-##
-## file: drivers/infiniband/hw/mthca/Kconfig
-##
-CONFIG_INFINIBAND_MTHCA=m
-CONFIG_INFINIBAND_MTHCA_DEBUG=y
-
-##
-## file: drivers/infiniband/ulp/ipoib/Kconfig
-##
-CONFIG_INFINIBAND_IPOIB=m
-# CONFIG_INFINIBAND_IPOIB_CM is not set
-CONFIG_INFINIBAND_IPOIB_DEBUG=y
-# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
-
-##
-## file: drivers/infiniband/ulp/iser/Kconfig
-##
-CONFIG_INFINIBAND_ISER=m
-
-##
-## file: drivers/infiniband/ulp/srp/Kconfig
-##
-CONFIG_INFINIBAND_SRP=m
-
-##
-## file: drivers/input/gameport/Kconfig
-##
-CONFIG_GAMEPORT=m
-# CONFIG_GAMEPORT_NS558 is not set
-# CONFIG_GAMEPORT_L4 is not set
-CONFIG_GAMEPORT_EMU10K1=m
-CONFIG_GAMEPORT_FM801=m
-
-##
-## file: drivers/input/joystick/Kconfig
-##
-CONFIG_INPUT_JOYSTICK=y
-
-##
-## file: drivers/input/keyboard/Kconfig
-##
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_SUNKBD=m
-CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_XTKBD=m
-CONFIG_KEYBOARD_NEWTON=m
-CONFIG_KEYBOARD_STOWAWAY=m
-
-##
-## file: drivers/input/misc/Kconfig
-##
-# CONFIG_INPUT_MISC is not set
-
-##
-## file: drivers/input/mouse/Kconfig
-##
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=m
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-CONFIG_MOUSE_SERIAL=m
-CONFIG_MOUSE_APPLETOUCH=m
-CONFIG_MOUSE_VSXXXAA=m
-
-##
-## file: drivers/input/serio/Kconfig
-##
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=m
-CONFIG_SERIO_PARKBD=m
-CONFIG_SERIO_PCIPS2=y
-CONFIG_SERIO_LIBPS2=y
-CONFIG_SERIO_RAW=m
-
-##
-## file: drivers/input/tablet/Kconfig
-##
-CONFIG_INPUT_TABLET=y
-CONFIG_TABLET_USB_ACECAD=m
-CONFIG_TABLET_USB_AIPTEK=m
-CONFIG_TABLET_USB_GTCO=m
-CONFIG_TABLET_USB_KBTAB=m
-CONFIG_TABLET_USB_WACOM=m
-
-##
-## file: drivers/input/touchscreen/Kconfig
-##
-CONFIG_INPUT_TOUCHSCREEN=y
-
-##
-## file: drivers/isdn/Kconfig
-##
-CONFIG_ISDN=y
-CONFIG_ISDN_I4L=m
-CONFIG_ISDN_CAPI=m
-
-##
-## file: drivers/isdn/capi/Kconfig
-##
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
-CONFIG_ISDN_CAPI_CAPI20=m
-CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
-CONFIG_ISDN_CAPI_CAPIDRV=m
-
-##
-## file: drivers/isdn/gigaset/Kconfig
-##
-CONFIG_ISDN_DRV_GIGASET=m
-CONFIG_GIGASET_BASE=m
-CONFIG_GIGASET_M105=m
-CONFIG_GIGASET_M101=m
-# CONFIG_GIGASET_DEBUG is not set
-# CONFIG_GIGASET_UNDOCREQ is not set
-
-##
-## file: drivers/isdn/hardware/avm/Kconfig
-##
-CONFIG_CAPI_AVM=y
-CONFIG_ISDN_DRV_AVMB1_B1PCI=m
-CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-CONFIG_ISDN_DRV_AVMB1_T1PCI=m
-CONFIG_ISDN_DRV_AVMB1_C4=m
-
-##
-## file: drivers/isdn/hardware/eicon/Kconfig
-##
-CONFIG_CAPI_EICON=y
-CONFIG_ISDN_DIVAS=m
-CONFIG_ISDN_DIVAS_BRIPCI=y
-CONFIG_ISDN_DIVAS_PRIPCI=y
-CONFIG_ISDN_DIVAS_DIVACAPI=m
-CONFIG_ISDN_DIVAS_USERIDI=m
-CONFIG_ISDN_DIVAS_MAINT=m
-
-##
-## file: drivers/isdn/hisax/Kconfig
-##
-CONFIG_ISDN_DRV_HISAX=m
-CONFIG_HISAX_EURO=y
-CONFIG_DE_AOC=y
-# CONFIG_HISAX_NO_SENDCOMPLETE is not set
-# CONFIG_HISAX_NO_LLC is not set
-# CONFIG_HISAX_NO_KEYPAD is not set
-CONFIG_HISAX_1TR6=y
-CONFIG_HISAX_NI1=y
-CONFIG_HISAX_MAX_CARDS=8
-CONFIG_HISAX_16_3=y
-CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_FRITZPCI=y
-CONFIG_HISAX_AVM_A1_PCMCIA=y
-CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_BKM_A4T=y
-CONFIG_HISAX_SCT_QUADRO=y
-CONFIG_HISAX_GAZEL=y
-CONFIG_HISAX_W6692=y
-CONFIG_HISAX_HFC_SX=y
-# CONFIG_HISAX_DEBUG is not set
-CONFIG_HISAX_ST5481=m
-CONFIG_HISAX_HFCUSB=m
-CONFIG_HISAX_HFC4S8S=m
-CONFIG_HISAX_FRITZ_PCIPNP=m
-
-##
-## file: drivers/isdn/i4l/Kconfig
-##
-CONFIG_ISDN_PPP=y
-CONFIG_ISDN_PPP_VJ=y
-CONFIG_ISDN_MPP=y
-CONFIG_IPPP_FILTER=y
-CONFIG_ISDN_PPP_BSDCOMP=m
-CONFIG_ISDN_AUDIO=y
-CONFIG_ISDN_TTY_FAX=y
-CONFIG_ISDN_X25=y
-CONFIG_ISDN_DRV_LOOP=m
-CONFIG_ISDN_DIVERSION=m
-
-##
-## file: drivers/leds/Kconfig
-##
-# CONFIG_NEW_LEDS is not set
-
-##
-## file: drivers/md/Kconfig
-##
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_DELAY=m
-
-##
-## file: drivers/media/Kconfig
-##
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_DVB_CORE=m
-
-##
-## file: drivers/media/dvb/Kconfig
-##
-CONFIG_DVB_CAPTURE_DRIVERS=y
-
-##
-## file: drivers/media/dvb/b2c2/Kconfig
-##
-CONFIG_DVB_B2C2_FLEXCOP=m
-CONFIG_DVB_B2C2_FLEXCOP_PCI=m
-CONFIG_DVB_B2C2_FLEXCOP_USB=m
-# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
-
-##
-## file: drivers/media/dvb/bt8xx/Kconfig
-##
-CONFIG_DVB_BT8XX=m
-
-##
-## file: drivers/media/dvb/dvb-usb/Kconfig
-##
-CONFIG_DVB_USB=m
-# CONFIG_DVB_USB_DEBUG is not set
-CONFIG_DVB_USB_A800=m
-CONFIG_DVB_USB_DIBUSB_MB=m
-CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
-CONFIG_DVB_USB_DIBUSB_MC=m
-CONFIG_DVB_USB_DIB0700=m
-CONFIG_DVB_USB_UMT_010=m
-CONFIG_DVB_USB_CXUSB=m
-CONFIG_DVB_USB_M920X=m
-CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_AU6610=m
-CONFIG_DVB_USB_DIGITV=m
-CONFIG_DVB_USB_VP7045=m
-CONFIG_DVB_USB_VP702X=m
-CONFIG_DVB_USB_GP8PSK=m
-CONFIG_DVB_USB_NOVA_T_USB2=m
-CONFIG_DVB_USB_TTUSB2=m
-CONFIG_DVB_USB_DTT200U=m
-CONFIG_DVB_USB_OPERA1=m
-
-##
-## file: drivers/media/dvb/frontends/Kconfig
-##
-# CONFIG_DVB_FE_CUSTOMISE is not set
-CONFIG_DVB_CX24110=m
-CONFIG_DVB_CX24123=m
-CONFIG_DVB_MT312=m
-CONFIG_DVB_S5H1420=m
-CONFIG_DVB_STV0299=m
-CONFIG_DVB_TDA8083=m
-CONFIG_DVB_TDA10086=m
-CONFIG_DVB_VES1X93=m
-CONFIG_DVB_TDA826X=m
-CONFIG_DVB_TUA6100=m
-CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
-CONFIG_DVB_CX22700=m
-CONFIG_DVB_CX22702=m
-CONFIG_DVB_L64781=m
-CONFIG_DVB_TDA1004X=m
-CONFIG_DVB_NXT6000=m
-CONFIG_DVB_MT352=m
-CONFIG_DVB_ZL10353=m
-CONFIG_DVB_DIB3000MB=m
-CONFIG_DVB_DIB3000MC=m
-CONFIG_DVB_DIB7000M=m
-CONFIG_DVB_DIB7000P=m
-CONFIG_DVB_VES1820=m
-CONFIG_DVB_TDA10021=m
-CONFIG_DVB_TDA10023=m
-CONFIG_DVB_STV0297=m
-CONFIG_DVB_NXT200X=m
-CONFIG_DVB_OR51211=m
-CONFIG_DVB_OR51132=m
-CONFIG_DVB_BCM3510=m
-CONFIG_DVB_LGDT330X=m
-CONFIG_DVB_PLL=m
-CONFIG_DVB_LNBP21=m
-CONFIG_DVB_ISL6421=m
-
-##
-## file: drivers/media/dvb/pluto2/Kconfig
-##
-CONFIG_DVB_PLUTO2=m
-
-##
-## file: drivers/media/dvb/ttpci/Kconfig
-##
-CONFIG_DVB_AV7110=m
-CONFIG_DVB_AV7110_OSD=y
-CONFIG_DVB_BUDGET=m
-CONFIG_DVB_BUDGET_CI=m
-CONFIG_DVB_BUDGET_AV=m
-CONFIG_DVB_BUDGET_PATCH=m
-
-##
-## file: drivers/media/dvb/ttusb-budget/Kconfig
-##
-CONFIG_DVB_TTUSB_BUDGET=m
-
-##
-## file: drivers/media/dvb/ttusb-dec/Kconfig
-##
-CONFIG_DVB_TTUSB_DEC=m
-
-##
-## file: drivers/media/radio/Kconfig
-##
-CONFIG_RADIO_ADAPTERS=y
-CONFIG_RADIO_GEMTEK_PCI=m
-CONFIG_RADIO_MAXIRADIO=m
-CONFIG_RADIO_MAESTRO=m
-CONFIG_USB_DSBR=m
-
-##
-## file: drivers/media/video/Kconfig
-##
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
-CONFIG_VIDEO_TDA9840=m
-CONFIG_VIDEO_TDA9875=m
-CONFIG_VIDEO_TEA6415C=m
-CONFIG_VIDEO_TEA6420=m
-CONFIG_VIDEO_MSP3400=m
-CONFIG_VIDEO_CS53L32A=m
-CONFIG_VIDEO_WM8775=m
-CONFIG_VIDEO_WM8739=m
-CONFIG_VIDEO_SAA6588=m
-CONFIG_VIDEO_BT819=m
-CONFIG_VIDEO_BT856=m
-CONFIG_VIDEO_KS0127=m
-CONFIG_VIDEO_OV7670=m
-CONFIG_VIDEO_SAA7110=m
-CONFIG_VIDEO_SAA711X=m
-CONFIG_VIDEO_TVP5150=m
-CONFIG_VIDEO_VPX3220=m
-CONFIG_VIDEO_CX2341X=m
-CONFIG_VIDEO_SAA7127=m
-CONFIG_VIDEO_SAA7185=m
-CONFIG_VIDEO_ADV7170=m
-CONFIG_VIDEO_ADV7175=m
-CONFIG_VIDEO_UPD64031A=m
-CONFIG_VIDEO_UPD64083=m
-CONFIG_VIDEO_VIVI=m
-CONFIG_VIDEO_BWQCAM=m
-CONFIG_VIDEO_CQCAM=m
-CONFIG_VIDEO_W9966=m
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_PP=m
-CONFIG_VIDEO_CPIA_USB=m
-CONFIG_VIDEO_SAA5246A=m
-CONFIG_VIDEO_SAA5249=m
-CONFIG_VIDEO_STRADIS=m
-CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_CAFE_CCIC=m
-CONFIG_V4L_USB_DRIVERS=y
-CONFIG_VIDEO_OVCAMCHIP=m
-
-##
-## file: drivers/media/video/bt8xx/Kconfig
-##
-CONFIG_VIDEO_BT848=m
-CONFIG_VIDEO_BT848_DVB=y
-
-##
-## file: drivers/media/video/cpia2/Kconfig
-##
-CONFIG_VIDEO_CPIA2=m
-
-##
-## file: drivers/media/video/cx25840/Kconfig
-##
-CONFIG_VIDEO_CX25840=m
-
-##
-## file: drivers/media/video/cx88/Kconfig
-##
-CONFIG_VIDEO_CX88=m
-CONFIG_VIDEO_CX88_ALSA=m
-CONFIG_VIDEO_CX88_BLACKBIRD=m
-CONFIG_VIDEO_CX88_DVB=m
-CONFIG_VIDEO_CX88_VP3054=m
-
-##
-## file: drivers/media/video/em28xx/Kconfig
-##
-CONFIG_VIDEO_EM28XX=m
-
-##
-## file: drivers/media/video/et61x251/Kconfig
-##
-CONFIG_USB_ET61X251=m
-
-##
-## file: drivers/media/video/ivtv/Kconfig
-##
-CONFIG_VIDEO_IVTV=m
-
-##
-## file: drivers/media/video/pvrusb2/Kconfig
-##
-CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_PVRUSB2_SYSFS=y
-# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-
-##
-## file: drivers/media/video/saa7134/Kconfig
-##
-CONFIG_VIDEO_SAA7134=m
-CONFIG_VIDEO_SAA7134_ALSA=m
-CONFIG_VIDEO_SAA7134_DVB=m
-
-##
-## file: drivers/media/video/usbvision/Kconfig
-##
-CONFIG_VIDEO_USBVISION=m
-
-##
-## file: drivers/media/video/zc0301/Kconfig
-##
-CONFIG_USB_ZC0301=m
-
-##
-## file: drivers/media/video/zoran/Kconfig
-##
-CONFIG_VIDEO_ZORAN=m
-CONFIG_VIDEO_ZORAN_DC30=m
-CONFIG_VIDEO_ZORAN_BUZ=m
-CONFIG_VIDEO_ZORAN_DC10=m
-CONFIG_VIDEO_ZORAN_LML33=m
-CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_ZORAN_AVS6EYES=m
-
-##
-## file: drivers/message/fusion/Kconfig
-##
-CONFIG_FUSION=y
-CONFIG_FUSION_SPI=m
-CONFIG_FUSION_FC=m
-CONFIG_FUSION_SAS=m
-CONFIG_FUSION_MAX_SGE=40
-CONFIG_FUSION_CTL=m
-CONFIG_FUSION_LAN=m
-
-##
-## file: drivers/message/i2o/Kconfig
-##
-CONFIG_I2O=m
-CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
-CONFIG_I2O_EXT_ADAPTEC=y
-CONFIG_I2O_EXT_ADAPTEC_DMA64=y
-CONFIG_I2O_CONFIG=m
-CONFIG_I2O_CONFIG_OLD_IOCTL=y
-CONFIG_I2O_BUS=m
-CONFIG_I2O_BLOCK=m
-CONFIG_I2O_SCSI=m
-CONFIG_I2O_PROC=m
-
-##
-## file: drivers/mfd/Kconfig
-##
-CONFIG_MFD_SM501=m
-
-##
-## file: drivers/misc/Kconfig
-##
-# CONFIG_PHANTOM is not set
-# CONFIG_SGI_IOC4 is not set
-CONFIG_TIFM_CORE=m
-CONFIG_TIFM_7XX1=m
-
-##
-## file: drivers/mmc/Kconfig
-##
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-
-##
-## file: drivers/mmc/card/Kconfig
-##
-CONFIG_MMC_BLOCK=m
-
-##
-## file: drivers/mmc/core/Kconfig
-##
-# CONFIG_MMC_UNSAFE_RESUME is not set
-
-##
-## file: drivers/mtd/Kconfig
-##
-CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=m
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_BLOCK_RO=m
-CONFIG_FTL=m
-CONFIG_NFTL=m
-CONFIG_NFTL_RW=y
-CONFIG_INFTL=m
-CONFIG_RFD_FTL=m
-CONFIG_SSFDC=m
-
-##
-## file: drivers/mtd/chips/Kconfig
-##
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=m
-CONFIG_MTD_CFI_AMDSTD=m
-CONFIG_MTD_CFI_STAA=m
-CONFIG_MTD_RAM=m
-CONFIG_MTD_ROM=m
-CONFIG_MTD_ABSENT=m
-
-##
-## file: drivers/mtd/devices/Kconfig
-##
-CONFIG_MTD_PMC551=m
-# CONFIG_MTD_PMC551_BUGFIX is not set
-# CONFIG_MTD_PMC551_DEBUG is not set
-CONFIG_MTD_DATAFLASH=m
-CONFIG_MTD_M25P80=m
-CONFIG_MTD_SLRAM=m
-CONFIG_MTD_PHRAM=m
-CONFIG_MTD_MTDRAM=m
-CONFIG_MTDRAM_TOTAL_SIZE=4096
-CONFIG_MTDRAM_ERASE_SIZE=128
-CONFIG_MTD_BLOCK2MTD=m
-CONFIG_MTD_DOC2000=m
-CONFIG_MTD_DOC2001=m
-CONFIG_MTD_DOC2001PLUS=m
-# CONFIG_MTD_DOCPROBE_ADVANCED is not set
-CONFIG_MTD_DOCPROBE_ADDRESS=0
-
-##
-## file: drivers/mtd/maps/Kconfig
-##
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_PHYSMAP=m
-CONFIG_MTD_PHYSMAP_START=0x8000000
-CONFIG_MTD_PHYSMAP_LEN=0x0
-CONFIG_MTD_PHYSMAP_BANKWIDTH=2
-CONFIG_MTD_PCI=m
-CONFIG_MTD_PLATRAM=m
-
-##
-## file: drivers/mtd/nand/Kconfig
-##
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-CONFIG_MTD_NAND_DISKONCHIP=m
-# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
-# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
-CONFIG_MTD_NAND_CAFE=m
-# CONFIG_MTD_NAND_PLATFORM is not set
-
-##
-## file: drivers/mtd/onenand/Kconfig
-##
-CONFIG_MTD_ONENAND=m
-CONFIG_MTD_ONENAND_VERIFY_WRITE=y
-# CONFIG_MTD_ONENAND_OTP is not set
-
-##
-## file: drivers/mtd/ubi/Kconfig
-##
-CONFIG_MTD_UBI=m
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
-# CONFIG_MTD_UBI_GLUEBI is not set
-
-##
-## file: drivers/mtd/ubi/Kconfig.debug
-##
-# CONFIG_MTD_UBI_DEBUG is not set
-
-##
-## file: drivers/net/Kconfig
-##
-CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_NET_ETHERNET=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-# CONFIG_DM9000 is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=y
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_B44=m
-# CONFIG_FORCEDETH is not set
-# CONFIG_TC35815 is not set
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-# CONFIG_8139TOO_PIO is not set
-CONFIG_8139TOO_TUNE_TWISTER=y
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_VIA_RHINE=m
-# CONFIG_VIA_RHINE_MMIO is not set
-CONFIG_SC92031=m
-CONFIG_NET_POCKET=y
-CONFIG_DE600=m
-CONFIG_DE620=m
-CONFIG_NETDEV_1000=y
-CONFIG_FDDI=y
-CONFIG_SKFP=m
-CONFIG_HIPPI=y
-CONFIG_ROADRUNNER=m
-# CONFIG_ROADRUNNER_LARGE_RINGS is not set
-CONFIG_PLIP=m
-CONFIG_NET_FC=y
-# CONFIG_NETPOLL_TRAP is not set
-
-##
-## file: drivers/net/arcnet/Kconfig
-##
-CONFIG_ARCNET=m
-CONFIG_ARCNET_1201=m
-CONFIG_ARCNET_1051=m
-CONFIG_ARCNET_RAW=m
-CONFIG_ARCNET_CAP=m
-CONFIG_ARCNET_COM90xx=m
-CONFIG_ARCNET_COM90xxIO=m
-CONFIG_ARCNET_RIM_I=m
-CONFIG_ARCNET_COM20020=m
-CONFIG_ARCNET_COM20020_PCI=m
-
-##
-## file: drivers/net/hamradio/Kconfig
-##
-CONFIG_MKISS=m
-CONFIG_6PACK=m
-CONFIG_BPQETHER=m
-CONFIG_BAYCOM_SER_FDX=m
-CONFIG_BAYCOM_SER_HDX=m
-CONFIG_BAYCOM_PAR=m
-CONFIG_YAM=m
-
-##
-## file: drivers/net/irda/Kconfig
-##
-CONFIG_IRTTY_SIR=m
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_VLSI_FIR=m
-CONFIG_MCS_FIR=m
-
-##
-## file: drivers/net/phy/Kconfig
-##
-CONFIG_PHYLIB=m
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-# CONFIG_QSEMI_PHY is not set
-CONFIG_LXT_PHY=m
-# CONFIG_CICADA_PHY is not set
-# CONFIG_VITESSE_PHY is not set
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_FIXED_PHY=m
-
-##
-## file: drivers/net/tokenring/Kconfig
-##
-CONFIG_TR=y
-
-##
-## file: drivers/net/tulip/Kconfig
-##
-CONFIG_NET_TULIP=y
-CONFIG_DE2104X=m
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-# CONFIG_TULIP_NAPI is not set
-CONFIG_DE4X5=m
-# CONFIG_WINBOND_840 is not set
-CONFIG_DM9102=m
-# CONFIG_ULI526X is not set
-
-##
-## file: drivers/net/wan/Kconfig
-##
-CONFIG_WAN=y
-CONFIG_LANMEDIA=m
-CONFIG_HDLC=m
-CONFIG_HDLC_RAW=m
-CONFIG_HDLC_RAW_ETH=m
-CONFIG_HDLC_CISCO=m
-CONFIG_HDLC_FR=m
-CONFIG_HDLC_PPP=m
-CONFIG_HDLC_X25=m
-CONFIG_PCI200SYN=m
-CONFIG_WANXL=m
-CONFIG_PC300=m
-# CONFIG_PC300_MLPPP is not set
-# CONFIG_PC300TOO is not set
-CONFIG_FARSYNC=m
-CONFIG_DSCC4=m
-# CONFIG_DSCC4_PCISYNC is not set
-# CONFIG_DSCC4_PCI_RST is not set
-CONFIG_DLCI=m
-CONFIG_DLCI_MAX=8
-CONFIG_WAN_ROUTER_DRIVERS=m
-CONFIG_CYCLADES_SYNC=m
-CONFIG_CYCLOMX_X25=y
-CONFIG_LAPBETHER=m
-CONFIG_X25_ASY=m
-
-##
-## file: drivers/net/wireless/Kconfig
-##
-CONFIG_WLAN_PRE80211=y
-CONFIG_STRIP=m
-CONFIG_WLAN_80211=y
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_USB_ZD1201=m
-
-##
-## file: drivers/net/wireless/hostap/Kconfig
-##
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-
-##
-## file: drivers/net/wireless/ipw2x00/Kconfig
-##
-CONFIG_IPW2100=m
-CONFIG_IPW2100_MONITOR=y
-# CONFIG_IPW2100_DEBUG is not set
-CONFIG_IPW2200=m
-# CONFIG_IPW2200_MONITOR is not set
-CONFIG_IPW2200_QOS=y
-# CONFIG_IPW2200_DEBUG is not set
-
-##
-## file: drivers/net/wireless/orinoco/Kconfig
-##
-CONFIG_HERMES=m
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-CONFIG_NORTEL_HERMES=m
-CONFIG_PCI_HERMES=m
-
-##
-## file: drivers/net/wireless/zd1211rw/Kconfig
-##
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-
-##
-## file: drivers/parport/Kconfig
-##
-# CONFIG_PARPORT_AX88796 is not set
-
-##
-## file: drivers/pci/hotplug/Kconfig
-##
-# CONFIG_HOTPLUG_PCI is not set
-
-##
-## file: drivers/pcmcia/Kconfig
-##
-# CONFIG_PCCARD is not set
-
-##
-## file: drivers/rtc/Kconfig
-##
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-CONFIG_RTC_DRV_DS1307=m
-CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_MAX6900=m
-CONFIG_RTC_DRV_RS5C372=m
-CONFIG_RTC_DRV_ISL1208=m
-CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF8563=m
-CONFIG_RTC_DRV_PCF8583=m
-CONFIG_RTC_DRV_MAX6902=m
-CONFIG_RTC_DRV_RS5C348=m
-CONFIG_RTC_DRV_CMOS=y
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-CONFIG_RTC_DRV_M48T86=m
-# CONFIG_RTC_DRV_V3020 is not set
-
-##
-## file: drivers/scsi/Kconfig
-##
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=y
-CONFIG_SCSI_TGT=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_MULTI_LUN=y
-CONFIG_SCSI_CONSTANTS=y
-CONFIG_SCSI_LOGGING=y
-CONFIG_SCSI_SCAN_ASYNC=y
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
-CONFIG_ISCSI_TCP=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX_OLD=m
-CONFIG_SCSI_ARCMSR=m
-CONFIG_SCSI_HPTIOP=m
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_IPS=m
-CONFIG_SCSI_INITIO=m
-CONFIG_SCSI_INIA100=m
-CONFIG_SCSI_STEX=m
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
-# CONFIG_SCSI_IPR is not set
-CONFIG_SCSI_QLOGIC_1280=m
-CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_DEBUG=m
-CONFIG_SCSI_SRP=m
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic79xx
-##
-CONFIG_SCSI_AIC79XX=m
-CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-CONFIG_AIC79XX_DEBUG_ENABLE=y
-CONFIG_AIC79XX_DEBUG_MASK=0
-CONFIG_AIC79XX_REG_PRETTY_PRINT=y
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx
-##
-CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-CONFIG_AIC7XXX_DEBUG_ENABLE=y
-CONFIG_AIC7XXX_DEBUG_MASK=0
-CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
-
-##
-## file: drivers/scsi/aic94xx/Kconfig
-##
-CONFIG_SCSI_AIC94XX=m
-# CONFIG_AIC94XX_DEBUG is not set
-
-##
-## file: drivers/scsi/libsas/Kconfig
-##
-CONFIG_SCSI_SAS_LIBSAS=m
-# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
-
-##
-## file: drivers/scsi/megaraid/Kconfig.megaraid
-##
-CONFIG_MEGARAID_NEWGEN=y
-CONFIG_MEGARAID_MM=m
-CONFIG_MEGARAID_MAILBOX=m
-CONFIG_MEGARAID_LEGACY=m
-CONFIG_MEGARAID_SAS=m
-
-##
-## file: drivers/scsi/qla2xxx/Kconfig
-##
-CONFIG_SCSI_QLA_FC=m
-
-##
-## file: drivers/scsi/qla4xxx/Kconfig
-##
-CONFIG_SCSI_QLA_ISCSI=m
-
-##
-## file: drivers/serial/Kconfig
-##
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-CONFIG_SERIAL_8250_RSA=y
-CONFIG_SERIAL_JSM=m
-
-##
-## file: drivers/spi/Kconfig
-##
-CONFIG_SPI=y
-CONFIG_SPI_BITBANG=m
-CONFIG_SPI_BUTTERFLY=m
-# CONFIG_SPI_SPIDEV is not set
-
-##
-## file: drivers/telephony/Kconfig
-##
-CONFIG_PHONE=m
-CONFIG_PHONE_IXJ=m
-
-##
-## file: drivers/usb/Kconfig
-##
-CONFIG_USB=y
-CONFIG_USB_USS720=m
-
-##
-## file: drivers/usb/atm/Kconfig
-##
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-CONFIG_USB_CXACRU=m
-CONFIG_USB_UEAGLEATM=m
-CONFIG_USB_XUSBATM=m
-
-##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
-## file: drivers/usb/host/Kconfig
-##
-CONFIG_USB_EHCI_HCD=m
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-CONFIG_USB_ISP116X_HCD=m
-CONFIG_USB_OHCI_HCD=m
-CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_U132_HCD=m
-CONFIG_USB_SL811_HCD=m
-
-##
-## file: drivers/usb/image/Kconfig
-##
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-CONFIG_USB_ADUTUX=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_BERRY_CHARGE=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
-CONFIG_USB_APPLEDISPLAY=m
-CONFIG_USB_LD=m
-CONFIG_USB_TRANCEVIBRATOR=m
-CONFIG_USB_IOWARRIOR=m
-CONFIG_USB_TEST=m
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-
-##
-## file: drivers/usb/mon/Kconfig
-##
-CONFIG_USB_MON=y
-
-##
-## file: drivers/usb/serial/Kconfig
-##
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-# CONFIG_USB_SERIAL_TI is not set
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_SERIAL_DEBUG=m
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
-# CONFIG_USB_LIBUSUAL is not set
-
-##
-## file: drivers/video/Kconfig
-##
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-CONFIG_FB_CIRRUS=m
-CONFIG_FB_PM2=m
-CONFIG_FB_PM2_FIFO_DISCONNECT=y
-CONFIG_FB_CYBER2000=m
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-CONFIG_FB_S1D13XXX=m
-CONFIG_FB_NVIDIA=m
-# CONFIG_FB_NVIDIA_I2C is not set
-# CONFIG_FB_NVIDIA_DEBUG is not set
-CONFIG_FB_NVIDIA_BACKLIGHT=y
-# CONFIG_FB_RIVA is not set
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-CONFIG_FB_MATROX_I2C=m
-CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_MATROX_MULTIHEAD=y
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-CONFIG_FB_RADEON_BACKLIGHT=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY128_BACKLIGHT=y
-CONFIG_FB_ATY=m
-CONFIG_FB_ATY_CT=y
-# CONFIG_FB_ATY_GENERIC_LCD is not set
-CONFIG_FB_ATY_GX=y
-CONFIG_FB_ATY_BACKLIGHT=y
-CONFIG_FB_S3=m
-CONFIG_FB_SAVAGE=m
-# CONFIG_FB_SAVAGE_I2C is not set
-# CONFIG_FB_SAVAGE_ACCEL is not set
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
-CONFIG_FB_NEOMAGIC=m
-CONFIG_FB_KYRO=m
-CONFIG_FB_VOODOO1=m
-CONFIG_FB_VT8623=m
-CONFIG_FB_TRIDENT=m
-CONFIG_FB_ARK=m
-CONFIG_FB_PM3=m
-CONFIG_FB_SM501=m
-CONFIG_FB_VIRTUAL=m
-
-##
-## file: drivers/video/backlight/Kconfig
-##
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-
-##
-## file: drivers/video/console/Kconfig
-##
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-##
-## file: drivers/video/display/Kconfig
-##
-CONFIG_DISPLAY_SUPPORT=m
-
-##
-## file: drivers/video/logo/Kconfig
-##
-# CONFIG_LOGO is not set
-
-##
-## file: drivers/w1/Kconfig
-##
-CONFIG_W1=m
-CONFIG_W1_CON=y
-
-##
-## file: drivers/w1/masters/Kconfig
-##
-CONFIG_W1_MASTER_MATROX=m
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-
-##
-## file: drivers/w1/slaves/Kconfig
-##
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2433=m
-# CONFIG_W1_SLAVE_DS2433_CRC is not set
-
-##
-## file: drivers/watchdog/Kconfig
-##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-CONFIG_SOFT_WATCHDOG=m
-CONFIG_PCIPCWATCHDOG=m
-CONFIG_WDTPCI=m
-CONFIG_WDT_501_PCI=y
-CONFIG_USBPCWATCHDOG=m
-
-##
-## file: fs/Kconfig.binfmt
-##
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=m
-
-##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=y
-
-##
-## file: fs/dlm/Kconfig
-##
-CONFIG_DLM=m
-# CONFIG_DLM_DEBUG is not set
-
-##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
-## file: fs/nfs/Kconfig
-##
-CONFIG_NFS_FS=y
-
-##
-## file: fs/partitions/Kconfig
-##
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-
-##
-## file: init/Kconfig
-##
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-
-##
-## file: kernel/power/Kconfig
-##
-# CONFIG_PM is not set
-
-##
-## file: lib/Kconfig.debug
-##
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_UNUSED_SYMBOLS=y
-# CONFIG_HEADERS_CHECK is not set
-
-##
-## file: mm/Kconfig
-##
-## choice: Memory model
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-## end choice
-
-##
-## file: net/atm/Kconfig
-##
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-
-##
-## file: net/ax25/Kconfig
-##
-CONFIG_HAMRADIO=y
-CONFIG_AX25=m
-# CONFIG_AX25_DAMA_SLAVE is not set
-CONFIG_NETROM=m
-CONFIG_ROSE=m
-
-##
-## file: net/bridge/netfilter/Kconfig
-##
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-
-##
-## file: net/decnet/Kconfig
-##
-CONFIG_DECNET=m
-# CONFIG_DECNET_ROUTER is not set
-
-##
-## file: net/decnet/netfilter/Kconfig
-##
-CONFIG_DECNET_NF_GRABULATOR=m
-
-##
-## file: net/econet/Kconfig
-##
-CONFIG_ECONET=m
-CONFIG_ECONET_AUNUDP=y
-CONFIG_ECONET_NATIVE=y
-
-##
-## file: net/ipx/Kconfig
-##
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-
-##
-## file: net/irda/Kconfig
-##
-CONFIG_IRDA=m
-# CONFIG_IRDA_ULTRA is not set
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-##
-## file: net/irda/ircomm/Kconfig
-##
-CONFIG_IRCOMM=m
-
-##
-## file: net/irda/irlan/Kconfig
-##
-CONFIG_IRLAN=m
-
-##
-## file: net/irda/irnet/Kconfig
-##
-CONFIG_IRNET=m
-
-##
-## file: net/lapb/Kconfig
-##
-CONFIG_LAPB=m
-
-##
-## file: net/netlabel/Kconfig
-##
-# CONFIG_NETLABEL is not set
-
-##
-## file: net/rfkill/Kconfig
-##
-CONFIG_RFKILL=m
-CONFIG_RFKILL_INPUT=m
-
-##
-## file: net/wanrouter/Kconfig
-##
-CONFIG_WAN_ROUTER=m
-
-##
-## file: net/wireless/Kconfig
-##
-CONFIG_CFG80211=m
-CONFIG_WIRELESS_EXT=y
-
-##
-## file: net/x25/Kconfig
-##
-CONFIG_X25=m
-
-##
-## file: sound/Kconfig
-##
-CONFIG_SOUND=y
-CONFIG_SOUND_PRIME=m
-
-##
-## file: sound/core/Kconfig
-##
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_RTCTIMER=m
-CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
-## file: sound/drivers/Kconfig
-##
-CONFIG_SND_DUMMY=m
-CONFIG_SND_VIRMIDI=m
-CONFIG_SND_MTPAV=m
-CONFIG_SND_MTS64=m
-CONFIG_SND_SERIAL_U16550=m
-CONFIG_SND_MPU401=m
-CONFIG_SND_PORTMAN2X4=m
-CONFIG_SND_AC97_POWER_SAVE=y
-
-##
-## file: sound/oss/Kconfig
-##
-CONFIG_SOUND_MSNDCLAS=m
-CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin"
-CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin"
-CONFIG_SOUND_MSNDPIN=m
-CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin"
-CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin"
-
-##
-## file: sound/pci/Kconfig
-##
-CONFIG_SND_AD1889=m
-CONFIG_SND_ALS300=m
-CONFIG_SND_ALI5451=m
-CONFIG_SND_ATIIXP=m
-CONFIG_SND_ATIIXP_MODEM=m
-CONFIG_SND_AU8810=m
-CONFIG_SND_AU8820=m
-CONFIG_SND_AU8830=m
-CONFIG_SND_AZT3328=m
-CONFIG_SND_BT87X=m
-# CONFIG_SND_BT87X_OVERCLOCK is not set
-CONFIG_SND_CA0106=m
-CONFIG_SND_CMIPCI=m
-CONFIG_SND_CS4281=m
-CONFIG_SND_CS46XX=m
-CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_DARLA20=m
-CONFIG_SND_GINA20=m
-CONFIG_SND_LAYLA20=m
-CONFIG_SND_DARLA24=m
-CONFIG_SND_GINA24=m
-CONFIG_SND_LAYLA24=m
-CONFIG_SND_MONA=m
-CONFIG_SND_MIA=m
-CONFIG_SND_ECHO3G=m
-CONFIG_SND_INDIGO=m
-CONFIG_SND_INDIGOIO=m
-CONFIG_SND_INDIGODJ=m
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_EMU10K1X=m
-CONFIG_SND_ENS1370=m
-CONFIG_SND_ENS1371=m
-CONFIG_SND_ES1938=m
-CONFIG_SND_ES1968=m
-CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_HDSP=m
-CONFIG_SND_HDSPM=m
-CONFIG_SND_ICE1712=m
-CONFIG_SND_ICE1724=m
-CONFIG_SND_INTEL8X0=m
-CONFIG_SND_INTEL8X0M=m
-CONFIG_SND_KORG1212=m
-CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MIXART=m
-CONFIG_SND_NM256=m
-CONFIG_SND_PCXHR=m
-CONFIG_SND_RIPTIDE=m
-CONFIG_SND_RME32=m
-CONFIG_SND_RME96=m
-CONFIG_SND_RME9652=m
-CONFIG_SND_SONICVIBES=m
-CONFIG_SND_TRIDENT=m
-CONFIG_SND_VIA82XX=m
-CONFIG_SND_VIA82XX_MODEM=m
-CONFIG_SND_VX222=m
-CONFIG_SND_YMFPCI=m
-
-##
-## file: sound/pci/hda/Kconfig
-##
-CONFIG_SND_HDA_INTEL=m
-
-##
-## file: unknown
-##
-# CONFIG_MARKEINS is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_SEAD is not set
-
diff --git a/config/mipsel/config.r5k-cobalt b/config/mipsel/config.r5k-cobalt
index 7d9c502..702162f 100644
--- a/config/mipsel/config.r5k-cobalt
+++ b/config/mipsel/config.r5k-cobalt
@@ -23,10 +23,6 @@ CONFIG_MIPS_COBALT=y
# CONFIG_SIBYTE_SENTOSA is not set
# CONFIG_SIBYTE_BIGSUR is not set
## end choice
-## choice: Endianess selection
-# CONFIG_CPU_BIG_ENDIAN is not set
-CONFIG_CPU_LITTLE_ENDIAN=y
-## end choice
## choice: CPU type
# CONFIG_CPU_MIPS32_R1 is not set
# CONFIG_CPU_MIPS32_R2 is not set
@@ -223,10 +219,10 @@ CONFIG_BLK_DEV_VIA82CXXX=y
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=m
-# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
##
## file: drivers/input/misc/Kconfig
@@ -304,11 +300,6 @@ CONFIG_LEDS_COBALT_QUBE=y
CONFIG_LEDS_COBALT_RAQ=y
##
-## file: drivers/media/Kconfig
-##
-CONFIG_VIDEO_DEV=m
-
-##
## file: drivers/media/radio/Kconfig
##
# CONFIG_RADIO_GEMTEK_PCI is not set
@@ -457,12 +448,8 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=0
##
## file: drivers/net/Kconfig
##
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-CONFIG_BONDING=m
+#. TODO
# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-CONFIG_NET_ETHERNET=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
@@ -564,15 +551,6 @@ CONFIG_PCI_ATMEL=m
CONFIG_USB_ZD1201=m
##
-## file: drivers/net/wireless/hostap/Kconfig
-##
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-
-##
## file: drivers/net/wireless/ipw2x00/Kconfig
##
CONFIG_IPW2100=m
@@ -603,15 +581,6 @@ CONFIG_PCI_HERMES=m
##
## file: drivers/rtc/Kconfig
##
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
CONFIG_RTC_DRV_CMOS=y
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_DS1742 is not set
@@ -655,19 +624,6 @@ CONFIG_USB=m
# CONFIG_USB_USS720 is not set
##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
@@ -678,49 +634,11 @@ CONFIG_USB_UHCI_HCD=m
CONFIG_USB_SL811_HCD=m
##
-## file: drivers/usb/image/Kconfig
-##
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_LD is not set
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-
-##
## file: drivers/usb/mon/Kconfig
##
CONFIG_USB_MON=y
##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-CONFIG_USB_STORAGE_ALAUDA=y
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-##
## file: drivers/video/Kconfig
##
CONFIG_FB=m
@@ -737,17 +655,6 @@ CONFIG_FB_COBALT=m
# CONFIG_W1 is not set
##
-## file: drivers/watchdog/Kconfig
-##
-# CONFIG_WATCHDOG is not set
-
-##
-## file: fs/Kconfig.binfmt
-##
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=m
-
-##
## file: fs/cramfs/Kconfig
##
CONFIG_CRAMFS=y
@@ -831,21 +738,6 @@ CONFIG_ROSE=m
# CONFIG_WAN_ROUTER is not set
##
-## file: sound/core/Kconfig
-##
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_SEQUENCER_OSS is not set
-CONFIG_SND_RTCTIMER=m
-CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
## file: sound/drivers/Kconfig
##
# CONFIG_SND_DUMMY is not set
diff --git a/config/mipsel/config.sb1-bcm91250a b/config/mipsel/config.sb1-bcm91250a
deleted file mode 100644
index 6c0e1ef..0000000
--- a/config/mipsel/config.sb1-bcm91250a
+++ /dev/null
@@ -1,1020 +0,0 @@
-##
-## file: arch/Kconfig
-##
-# CONFIG_OPROFILE is not set
-
-##
-## file: arch/mips/Kconfig
-##
-## choice: System type
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MACH_JAZZ is not set
-# CONFIG_LASAT is not set
-# CONFIG_MIPS_MALTA is not set
-# CONFIG_MIPS_SIM is not set
-# CONFIG_MACH_VR41XX is not set
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SIBYTE_RHONE is not set
-CONFIG_SIBYTE_SWARM=y
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-## end choice
-## choice: Endianess selection
-# CONFIG_CPU_BIG_ENDIAN is not set
-CONFIG_CPU_LITTLE_ENDIAN=y
-## end choice
-## choice: CPU type
-# CONFIG_CPU_MIPS32_R1 is not set
-# CONFIG_CPU_MIPS32_R2 is not set
-# CONFIG_CPU_MIPS64_R1 is not set
-# CONFIG_CPU_MIPS64_R2 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_VR41XX is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-CONFIG_CPU_SB1=y
-## end choice
-## choice: Kernel code model
-# CONFIG_32BIT is not set
-CONFIG_64BIT=y
-## end choice
-## choice: Kernel page size
-CONFIG_PAGE_SIZE_4KB=y
-# CONFIG_PAGE_SIZE_8KB is not set
-# CONFIG_PAGE_SIZE_16KB is not set
-# CONFIG_PAGE_SIZE_64KB is not set
-## end choice
-# CONFIG_SIBYTE_DMA_PAGEOPS is not set
-CONFIG_SMP=y
-CONFIG_NR_CPUS=2
-CONFIG_PCI=y
-CONFIG_MIPS32_COMPAT=y
-CONFIG_MIPS32_O32=y
-CONFIG_MIPS32_N32=y
-
-##
-## file: arch/mips/alchemy/Kconfig
-##
-## choice: Machine type
-# CONFIG_MIPS_MTX1 is not set
-# CONFIG_MIPS_BOSPORUS is not set
-# CONFIG_MIPS_DB1000 is not set
-# CONFIG_MIPS_DB1100 is not set
-# CONFIG_MIPS_DB1200 is not set
-# CONFIG_MIPS_DB1500 is not set
-# CONFIG_MIPS_DB1550 is not set
-# CONFIG_MIPS_MIRAGE is not set
-# CONFIG_MIPS_PB1000 is not set
-# CONFIG_MIPS_PB1100 is not set
-# CONFIG_MIPS_PB1200 is not set
-# CONFIG_MIPS_PB1500 is not set
-# CONFIG_MIPS_PB1550 is not set
-# CONFIG_MIPS_XXS1500 is not set
-## end choice
-
-##
-## file: arch/mips/Kconfig.debug
-##
-CONFIG_CMDLINE=""
-# CONFIG_SB1XXX_CORELIS is not set
-
-##
-## file: arch/mips/sibyte/Kconfig
-##
-## choice: SiByte SOC Stepping
-# CONFIG_CPU_SB1_PASS_1 is not set
-# CONFIG_CPU_SB1_PASS_2_1250 is not set
-CONFIG_CPU_SB1_PASS_2_2=y
-# CONFIG_CPU_SB1_PASS_4 is not set
-# CONFIG_CPU_SB1_PASS_2_112x is not set
-# CONFIG_CPU_SB1_PASS_3 is not set
-## end choice
-# CONFIG_SIMULATION is not set
-# CONFIG_SB1_CEX_ALWAYS_FATAL is not set
-# CONFIG_SB1_CERR_STALL is not set
-CONFIG_SIBYTE_CFE=y
-# CONFIG_SIBYTE_CFE_CONSOLE is not set
-# CONFIG_SIBYTE_BUS_WATCHER is not set
-# CONFIG_SIBYTE_TBPROF is not set
-
-##
-## file: arch/mips/txx9/Kconfig
-##
-# CONFIG_TOSHIBA_JMR3927 is not set
-# CONFIG_TOSHIBA_RBTX4927 is not set
-# CONFIG_TOSHIBA_RBTX4938 is not set
-
-##
-## file: drivers/ata/Kconfig
-##
-CONFIG_ATA=y
-CONFIG_SATA_AHCI=m
-CONFIG_SATA_SIL24=m
-CONFIG_SATA_SVW=m
-CONFIG_ATA_PIIX=m
-CONFIG_SATA_MV=m
-CONFIG_SATA_NV=m
-CONFIG_PDC_ADMA=m
-CONFIG_SATA_QSTOR=m
-CONFIG_SATA_PROMISE=m
-CONFIG_SATA_SX4=m
-CONFIG_SATA_SIL=m
-CONFIG_SATA_SIS=m
-CONFIG_SATA_ULI=m
-CONFIG_SATA_VIA=m
-CONFIG_SATA_VITESSE=m
-
-##
-## file: drivers/block/Kconfig
-##
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
-# CONFIG_CDROM_PKTCDVD is not set
-
-##
-## file: drivers/char/Kconfig
-##
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-CONFIG_RTC=m
-CONFIG_GEN_RTC=y
-CONFIG_GEN_RTC_X=y
-# CONFIG_DTLK is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_TELCLOCK is not set
-
-##
-## file: drivers/char/ipmi/Kconfig
-##
-# CONFIG_IPMI_HANDLER is not set
-
-##
-## file: drivers/char/tpm/Kconfig
-##
-# CONFIG_TCG_TPM is not set
-
-##
-## file: drivers/firewire/Kconfig
-##
-# CONFIG_FIREWIRE is not set
-
-##
-## file: drivers/gpu/drm/Kconfig
-##
-# CONFIG_DRM is not set
-
-##
-## file: drivers/hid/usbhid/Kconfig
-##
-CONFIG_USB_HID=m
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-
-##
-## file: drivers/hwmon/Kconfig
-##
-CONFIG_HWMON=y
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-CONFIG_SENSORS_VT8231=m
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/Kconfig
-##
-CONFIG_I2C=m
-CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/busses/Kconfig
-##
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_PARPORT is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_VOODOO3 is not set
-# CONFIG_I2C_PCA_ISA is not set
-CONFIG_I2C_SIBYTE=m
-CONFIG_I2C_STUB=m
-# CONFIG_SCx200_ACB is not set
-
-##
-## file: drivers/i2c/chips/Kconfig
-##
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-
-##
-## file: drivers/ide/Kconfig
-##
-# CONFIG_IDE is not set
-
-##
-## file: drivers/infiniband/Kconfig
-##
-# CONFIG_INFINIBAND is not set
-
-##
-## file: drivers/input/Kconfig
-##
-# CONFIG_INPUT_JOYDEV is not set
-
-##
-## file: drivers/input/gameport/Kconfig
-##
-# CONFIG_GAMEPORT is not set
-
-##
-## file: drivers/input/joystick/Kconfig
-##
-# CONFIG_INPUT_JOYSTICK is not set
-
-##
-## file: drivers/input/keyboard/Kconfig
-##
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-
-##
-## file: drivers/input/misc/Kconfig
-##
-# CONFIG_INPUT_MISC is not set
-
-##
-## file: drivers/input/mouse/Kconfig
-##
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-
-##
-## file: drivers/input/serio/Kconfig
-##
-CONFIG_SERIO=y
-# CONFIG_SERIO_I8042 is not set
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-
-##
-## file: drivers/input/touchscreen/Kconfig
-##
-# CONFIG_INPUT_TOUCHSCREEN is not set
-
-##
-## file: drivers/isdn/Kconfig
-##
-# CONFIG_ISDN is not set
-
-##
-## file: drivers/md/Kconfig
-##
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-
-##
-## file: drivers/media/Kconfig
-##
-CONFIG_VIDEO_DEV=m
-
-##
-## file: drivers/media/radio/Kconfig
-##
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_USB_DSBR is not set
-
-##
-## file: drivers/media/video/Kconfig
-##
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_W9966 is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_MXB is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_STV680 is not set
-
-##
-## file: drivers/media/video/bt8xx/Kconfig
-##
-# CONFIG_VIDEO_BT848 is not set
-
-##
-## file: drivers/media/video/cx88/Kconfig
-##
-# CONFIG_VIDEO_CX88 is not set
-
-##
-## file: drivers/media/video/em28xx/Kconfig
-##
-# CONFIG_VIDEO_EM28XX is not set
-
-##
-## file: drivers/media/video/et61x251/Kconfig
-##
-CONFIG_USB_ET61X251=m
-
-##
-## file: drivers/media/video/pwc/Kconfig
-##
-# CONFIG_USB_PWC is not set
-
-##
-## file: drivers/media/video/saa7134/Kconfig
-##
-# CONFIG_VIDEO_SAA7134 is not set
-
-##
-## file: drivers/media/video/sn9c102/Kconfig
-##
-# CONFIG_USB_SN9C102 is not set
-
-##
-## file: drivers/media/video/usbvideo/Kconfig
-##
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-
-##
-## file: drivers/media/video/zoran/Kconfig
-##
-# CONFIG_VIDEO_ZORAN is not set
-
-##
-## file: drivers/message/fusion/Kconfig
-##
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-##
-## file: drivers/message/i2o/Kconfig
-##
-# CONFIG_I2O is not set
-
-##
-## file: drivers/mmc/Kconfig
-##
-# CONFIG_MMC is not set
-
-##
-## file: drivers/mtd/Kconfig
-##
-# CONFIG_MTD is not set
-
-##
-## file: drivers/net/Kconfig
-##
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_NET_ETHERNET=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_DM9000 is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_PCI=y
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_B44=m
-CONFIG_FORCEDETH=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-CONFIG_8139TOO_PIO=y
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_VIA_RHINE=m
-# CONFIG_VIA_RHINE_MMIO is not set
-# CONFIG_NET_POCKET is not set
-CONFIG_NETDEV_1000=y
-CONFIG_SB1250_MAC=y
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-# CONFIG_NET_FC is not set
-
-##
-## file: drivers/net/appletalk/Kconfig
-##
-# CONFIG_ATALK is not set
-
-##
-## file: drivers/net/arcnet/Kconfig
-##
-# CONFIG_ARCNET is not set
-
-##
-## file: drivers/net/phy/Kconfig
-##
-CONFIG_BROADCOM_PHY=y
-# CONFIG_FIXED_PHY is not set
-
-##
-## file: drivers/net/tokenring/Kconfig
-##
-# CONFIG_TR is not set
-
-##
-## file: drivers/net/tulip/Kconfig
-##
-# CONFIG_NET_TULIP is not set
-
-##
-## file: drivers/net/wan/Kconfig
-##
-# CONFIG_WAN is not set
-
-##
-## file: drivers/pci/hotplug/Kconfig
-##
-# CONFIG_HOTPLUG_PCI is not set
-
-##
-## file: drivers/pcmcia/Kconfig
-##
-# CONFIG_PCCARD is not set
-
-##
-## file: drivers/scsi/Kconfig
-##
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
-# CONFIG_SCSI_SAS_ATTRS is not set
-CONFIG_ISCSI_TCP=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX_OLD=m
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_IPS=m
-CONFIG_SCSI_INITIO=m
-CONFIG_SCSI_INIA100=m
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-# CONFIG_SCSI_IPR is not set
-CONFIG_SCSI_QLOGIC_1280=m
-CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_DEBUG=m
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic79xx
-##
-CONFIG_SCSI_AIC79XX=m
-CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-CONFIG_AIC79XX_DEBUG_ENABLE=y
-CONFIG_AIC79XX_DEBUG_MASK=0
-CONFIG_AIC79XX_REG_PRETTY_PRINT=y
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx
-##
-CONFIG_SCSI_AIC7XXX=y
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-CONFIG_AIC7XXX_DEBUG_ENABLE=y
-CONFIG_AIC7XXX_DEBUG_MASK=0
-CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
-
-##
-## file: drivers/scsi/megaraid/Kconfig.megaraid
-##
-# CONFIG_MEGARAID_NEWGEN is not set
-CONFIG_MEGARAID_LEGACY=m
-CONFIG_MEGARAID_SAS=m
-
-##
-## file: drivers/scsi/qla2xxx/Kconfig
-##
-CONFIG_SCSI_QLA_FC=m
-
-##
-## file: drivers/serial/Kconfig
-##
-# CONFIG_SERIAL_8250 is not set
-CONFIG_SERIAL_SB1250_DUART=y
-CONFIG_SERIAL_SB1250_DUART_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-
-##
-## file: drivers/spi/Kconfig
-##
-CONFIG_SPI=y
-CONFIG_SPI_BITBANG=m
-CONFIG_SPI_BUTTERFLY=m
-
-##
-## file: drivers/telephony/Kconfig
-##
-# CONFIG_PHONE is not set
-
-##
-## file: drivers/usb/Kconfig
-##
-CONFIG_USB=m
-# CONFIG_USB_USS720 is not set
-
-##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-# CONFIG_USB_PRINTER is not set
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
-## file: drivers/usb/host/Kconfig
-##
-CONFIG_USB_EHCI_HCD=m
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-CONFIG_USB_ISP116X_HCD=m
-CONFIG_USB_OHCI_HCD=m
-CONFIG_USB_UHCI_HCD=m
-CONFIG_USB_SL811_HCD=m
-
-##
-## file: drivers/usb/image/Kconfig
-##
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-# CONFIG_USB_SISUSBVGA_CON is not set
-
-##
-## file: drivers/usb/mon/Kconfig
-##
-CONFIG_USB_MON=y
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_ONETOUCH=y
-# CONFIG_USB_LIBUSUAL is not set
-
-##
-## file: drivers/video/Kconfig
-##
-CONFIG_FB=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-# CONFIG_FB_CIRRUS is not set
-CONFIG_FB_PM2=m
-# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
-CONFIG_FB_CYBER2000=m
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_NVIDIA=m
-# CONFIG_FB_NVIDIA_I2C is not set
-CONFIG_FB_RIVA=m
-# CONFIG_FB_RIVA_I2C is not set
-# CONFIG_FB_RIVA_DEBUG is not set
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-# CONFIG_FB_MATROX_I2C is not set
-# CONFIG_FB_MATROX_MULTIHEAD is not set
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY=m
-# CONFIG_FB_ATY_CT is not set
-# CONFIG_FB_ATY_GX is not set
-CONFIG_FB_SAVAGE=m
-# CONFIG_FB_SAVAGE_I2C is not set
-# CONFIG_FB_SAVAGE_ACCEL is not set
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
-CONFIG_FB_NEOMAGIC=m
-CONFIG_FB_KYRO=m
-CONFIG_FB_VOODOO1=m
-CONFIG_FB_TRIDENT=m
-# CONFIG_FB_VIRTUAL is not set
-
-##
-## file: drivers/video/console/Kconfig
-##
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-
-##
-## file: drivers/w1/Kconfig
-##
-# CONFIG_W1 is not set
-
-##
-## file: drivers/watchdog/Kconfig
-##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_USBPCWATCHDOG is not set
-
-##
-## file: fs/Kconfig.binfmt
-##
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=m
-
-##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=y
-
-##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
-## file: fs/nfs/Kconfig
-##
-CONFIG_NFS_FS=y
-CONFIG_ROOT_NFS=y
-
-##
-## file: fs/partitions/Kconfig
-##
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-CONFIG_SGI_PARTITION=y
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-CONFIG_KARMA_PARTITION=y
-# CONFIG_EFI_PARTITION is not set
-
-##
-## file: init/Kconfig
-##
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-
-##
-## file: mm/Kconfig
-##
-## choice: Memory model
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-## end choice
-
-##
-## file: net/atm/Kconfig
-##
-# CONFIG_ATM is not set
-
-##
-## file: net/ax25/Kconfig
-##
-# CONFIG_HAMRADIO is not set
-
-##
-## file: net/decnet/Kconfig
-##
-# CONFIG_DECNET is not set
-
-##
-## file: net/econet/Kconfig
-##
-# CONFIG_ECONET is not set
-
-##
-## file: net/ipv4/Kconfig
-##
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-
-##
-## file: net/ipx/Kconfig
-##
-# CONFIG_IPX is not set
-
-##
-## file: net/irda/Kconfig
-##
-# CONFIG_IRDA is not set
-
-##
-## file: net/lapb/Kconfig
-##
-# CONFIG_LAPB is not set
-
-##
-## file: net/wanrouter/Kconfig
-##
-# CONFIG_WAN_ROUTER is not set
-
-##
-## file: net/x25/Kconfig
-##
-# CONFIG_X25 is not set
-
-##
-## file: sound/Kconfig
-##
-CONFIG_SOUND=y
-CONFIG_SOUND_PRIME=y
-
-##
-## file: sound/core/Kconfig
-##
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_RTCTIMER=m
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
-## file: sound/drivers/Kconfig
-##
-# CONFIG_SND_DUMMY is not set
-CONFIG_SND_VIRMIDI=m
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-##
-## file: sound/oss/Kconfig
-##
-# CONFIG_SOUND_BCM_CS4297A is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin"
-CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin"
-# CONFIG_SOUND_MSNDPIN is not set
-CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin"
-CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin"
-
-##
-## file: sound/pci/Kconfig
-##
-CONFIG_SND_AD1889=m
-CONFIG_SND_ALI5451=m
-CONFIG_SND_ATIIXP=m
-CONFIG_SND_ATIIXP_MODEM=m
-CONFIG_SND_AU8810=m
-CONFIG_SND_AU8820=m
-CONFIG_SND_AU8830=m
-CONFIG_SND_AZT3328=m
-CONFIG_SND_BT87X=m
-CONFIG_SND_BT87X_OVERCLOCK=y
-CONFIG_SND_CA0106=m
-CONFIG_SND_CMIPCI=m
-CONFIG_SND_CS4281=m
-CONFIG_SND_CS46XX=m
-CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_EMU10K1X=m
-CONFIG_SND_ENS1370=m
-CONFIG_SND_ENS1371=m
-CONFIG_SND_ES1938=m
-CONFIG_SND_ES1968=m
-CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_HDSP=m
-CONFIG_SND_HDSPM=m
-CONFIG_SND_ICE1712=m
-CONFIG_SND_ICE1724=m
-CONFIG_SND_INTEL8X0=m
-CONFIG_SND_INTEL8X0M=m
-CONFIG_SND_KORG1212=m
-CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MIXART=m
-CONFIG_SND_NM256=m
-CONFIG_SND_PCXHR=m
-CONFIG_SND_RME32=m
-CONFIG_SND_RME96=m
-CONFIG_SND_RME9652=m
-CONFIG_SND_SONICVIBES=m
-CONFIG_SND_TRIDENT=m
-CONFIG_SND_VIA82XX=m
-CONFIG_SND_VIA82XX_MODEM=m
-CONFIG_SND_VX222=m
-CONFIG_SND_YMFPCI=m
-
-##
-## file: sound/pci/hda/Kconfig
-##
-CONFIG_SND_HDA_INTEL=m
-
-##
-## file: unknown
-##
-CONFIG_BLK_DEV_IDE_SWARM=y
-# CONFIG_LAN_SAA9730 is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_SEAD is not set
-
diff --git a/config/mipsel/config.sb1a-bcm91480b b/config/mipsel/config.sb1a-bcm91480b
deleted file mode 100644
index 903ebd5..0000000
--- a/config/mipsel/config.sb1a-bcm91480b
+++ /dev/null
@@ -1,1048 +0,0 @@
-##
-## file: arch/Kconfig
-##
-# CONFIG_OPROFILE is not set
-
-##
-## file: arch/mips/Kconfig
-##
-## choice: System type
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MACH_JAZZ is not set
-# CONFIG_LASAT is not set
-# CONFIG_MIPS_MALTA is not set
-# CONFIG_MIPS_SIM is not set
-# CONFIG_MACH_VR41XX is not set
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_SWARM is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-CONFIG_SIBYTE_BIGSUR=y
-## end choice
-## choice: Endianess selection
-# CONFIG_CPU_BIG_ENDIAN is not set
-CONFIG_CPU_LITTLE_ENDIAN=y
-## end choice
-## choice: CPU type
-# CONFIG_CPU_MIPS32_R1 is not set
-# CONFIG_CPU_MIPS32_R2 is not set
-# CONFIG_CPU_MIPS64_R1 is not set
-# CONFIG_CPU_MIPS64_R2 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_VR41XX is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-CONFIG_CPU_SB1=y
-## end choice
-## choice: Kernel code model
-# CONFIG_32BIT is not set
-CONFIG_64BIT=y
-## end choice
-## choice: Kernel page size
-CONFIG_PAGE_SIZE_4KB=y
-# CONFIG_PAGE_SIZE_8KB is not set
-# CONFIG_PAGE_SIZE_16KB is not set
-# CONFIG_PAGE_SIZE_64KB is not set
-## end choice
-# CONFIG_SIBYTE_DMA_PAGEOPS is not set
-CONFIG_SMP=y
-CONFIG_NR_CPUS=4
-CONFIG_PCI=y
-CONFIG_MIPS32_COMPAT=y
-CONFIG_MIPS32_O32=y
-CONFIG_MIPS32_N32=y
-
-##
-## file: arch/mips/alchemy/Kconfig
-##
-## choice: Machine type
-# CONFIG_MIPS_MTX1 is not set
-# CONFIG_MIPS_BOSPORUS is not set
-# CONFIG_MIPS_DB1000 is not set
-# CONFIG_MIPS_DB1100 is not set
-# CONFIG_MIPS_DB1200 is not set
-# CONFIG_MIPS_DB1500 is not set
-# CONFIG_MIPS_DB1550 is not set
-# CONFIG_MIPS_MIRAGE is not set
-# CONFIG_MIPS_PB1000 is not set
-# CONFIG_MIPS_PB1100 is not set
-# CONFIG_MIPS_PB1200 is not set
-# CONFIG_MIPS_PB1500 is not set
-# CONFIG_MIPS_PB1550 is not set
-# CONFIG_MIPS_XXS1500 is not set
-## end choice
-
-##
-## file: arch/mips/Kconfig.debug
-##
-CONFIG_CMDLINE=""
-# CONFIG_SB1XXX_CORELIS is not set
-
-##
-## file: arch/mips/sibyte/Kconfig
-##
-## choice: SiByte SOC Stepping
-# CONFIG_CPU_SB1_PASS_1 is not set
-# CONFIG_CPU_SB1_PASS_2_1250 is not set
-# CONFIG_CPU_SB1_PASS_2_2 is not set
-# CONFIG_CPU_SB1_PASS_4 is not set
-# CONFIG_CPU_SB1_PASS_2_112x is not set
-# CONFIG_CPU_SB1_PASS_3 is not set
-## end choice
-# CONFIG_SIMULATION is not set
-# CONFIG_SB1_CEX_ALWAYS_FATAL is not set
-# CONFIG_SB1_CERR_STALL is not set
-CONFIG_SIBYTE_CFE=y
-# CONFIG_SIBYTE_CFE_CONSOLE is not set
-# CONFIG_SIBYTE_BUS_WATCHER is not set
-# CONFIG_SIBYTE_TBPROF is not set
-
-##
-## file: arch/mips/txx9/Kconfig
-##
-# CONFIG_TOSHIBA_JMR3927 is not set
-# CONFIG_TOSHIBA_RBTX4927 is not set
-# CONFIG_TOSHIBA_RBTX4938 is not set
-
-##
-## file: drivers/ata/Kconfig
-##
-CONFIG_ATA=m
-CONFIG_SATA_AHCI=m
-CONFIG_SATA_SIL24=m
-CONFIG_SATA_SVW=m
-CONFIG_ATA_PIIX=m
-CONFIG_SATA_MV=m
-CONFIG_SATA_NV=m
-CONFIG_PDC_ADMA=m
-CONFIG_SATA_QSTOR=m
-CONFIG_SATA_PROMISE=m
-CONFIG_SATA_SX4=m
-CONFIG_SATA_SIL=m
-CONFIG_SATA_SIS=m
-CONFIG_SATA_ULI=m
-CONFIG_SATA_VIA=m
-CONFIG_SATA_VITESSE=m
-
-##
-## file: drivers/block/Kconfig
-##
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
-# CONFIG_CDROM_PKTCDVD is not set
-
-##
-## file: drivers/char/Kconfig
-##
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-CONFIG_RTC=m
-CONFIG_GEN_RTC=y
-CONFIG_GEN_RTC_X=y
-# CONFIG_DTLK is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_TELCLOCK is not set
-
-##
-## file: drivers/char/ipmi/Kconfig
-##
-# CONFIG_IPMI_HANDLER is not set
-
-##
-## file: drivers/char/tpm/Kconfig
-##
-# CONFIG_TCG_TPM is not set
-
-##
-## file: drivers/firewire/Kconfig
-##
-# CONFIG_FIREWIRE is not set
-
-##
-## file: drivers/gpu/drm/Kconfig
-##
-# CONFIG_DRM is not set
-
-##
-## file: drivers/hid/usbhid/Kconfig
-##
-CONFIG_USB_HID=m
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-
-##
-## file: drivers/hwmon/Kconfig
-##
-CONFIG_HWMON=y
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-CONFIG_SENSORS_VT8231=m
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/Kconfig
-##
-CONFIG_I2C=m
-CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/busses/Kconfig
-##
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_PARPORT is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_VOODOO3 is not set
-# CONFIG_I2C_PCA_ISA is not set
-CONFIG_I2C_SIBYTE=m
-CONFIG_I2C_STUB=m
-# CONFIG_SCx200_ACB is not set
-
-##
-## file: drivers/i2c/chips/Kconfig
-##
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-
-##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=y
-CONFIG_IDE_GD_ATA=y
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-# CONFIG_BLK_DEV_GENERIC is not set
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_AEC62XX=m
-CONFIG_BLK_DEV_ALI15X3=m
-CONFIG_BLK_DEV_AMD74XX=m
-CONFIG_BLK_DEV_CMD64X=m
-CONFIG_BLK_DEV_TRIFLEX=m
-CONFIG_BLK_DEV_CY82C693=m
-# CONFIG_BLK_DEV_CS5520 is not set
-CONFIG_BLK_DEV_CS5530=m
-CONFIG_BLK_DEV_HPT366=m
-CONFIG_BLK_DEV_SC1200=m
-CONFIG_BLK_DEV_PIIX=m
-CONFIG_BLK_DEV_IT821X=m
-CONFIG_BLK_DEV_NS87415=m
-CONFIG_BLK_DEV_PDC202XX_OLD=m
-CONFIG_BLK_DEV_PDC202XX_NEW=m
-CONFIG_BLK_DEV_SVWKS=m
-CONFIG_BLK_DEV_SIIMAGE=m
-CONFIG_BLK_DEV_SLC90E66=m
-CONFIG_BLK_DEV_TRM290=m
-CONFIG_BLK_DEV_VIA82CXXX=m
-
-##
-## file: drivers/infiniband/Kconfig
-##
-# CONFIG_INFINIBAND is not set
-
-##
-## file: drivers/input/Kconfig
-##
-# CONFIG_INPUT_JOYDEV is not set
-
-##
-## file: drivers/input/gameport/Kconfig
-##
-# CONFIG_GAMEPORT is not set
-
-##
-## file: drivers/input/joystick/Kconfig
-##
-# CONFIG_INPUT_JOYSTICK is not set
-
-##
-## file: drivers/input/keyboard/Kconfig
-##
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-
-##
-## file: drivers/input/misc/Kconfig
-##
-# CONFIG_INPUT_MISC is not set
-
-##
-## file: drivers/input/mouse/Kconfig
-##
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-
-##
-## file: drivers/input/serio/Kconfig
-##
-CONFIG_SERIO=y
-# CONFIG_SERIO_I8042 is not set
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-
-##
-## file: drivers/input/touchscreen/Kconfig
-##
-# CONFIG_INPUT_TOUCHSCREEN is not set
-
-##
-## file: drivers/isdn/Kconfig
-##
-# CONFIG_ISDN is not set
-
-##
-## file: drivers/md/Kconfig
-##
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-
-##
-## file: drivers/media/Kconfig
-##
-CONFIG_VIDEO_DEV=m
-
-##
-## file: drivers/media/radio/Kconfig
-##
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_USB_DSBR is not set
-
-##
-## file: drivers/media/video/Kconfig
-##
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_W9966 is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_MXB is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_STV680 is not set
-
-##
-## file: drivers/media/video/bt8xx/Kconfig
-##
-# CONFIG_VIDEO_BT848 is not set
-
-##
-## file: drivers/media/video/cx88/Kconfig
-##
-# CONFIG_VIDEO_CX88 is not set
-
-##
-## file: drivers/media/video/em28xx/Kconfig
-##
-# CONFIG_VIDEO_EM28XX is not set
-
-##
-## file: drivers/media/video/et61x251/Kconfig
-##
-CONFIG_USB_ET61X251=m
-
-##
-## file: drivers/media/video/pwc/Kconfig
-##
-# CONFIG_USB_PWC is not set
-
-##
-## file: drivers/media/video/saa7134/Kconfig
-##
-# CONFIG_VIDEO_SAA7134 is not set
-
-##
-## file: drivers/media/video/sn9c102/Kconfig
-##
-# CONFIG_USB_SN9C102 is not set
-
-##
-## file: drivers/media/video/usbvideo/Kconfig
-##
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-
-##
-## file: drivers/media/video/zoran/Kconfig
-##
-# CONFIG_VIDEO_ZORAN is not set
-
-##
-## file: drivers/message/fusion/Kconfig
-##
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-##
-## file: drivers/message/i2o/Kconfig
-##
-# CONFIG_I2O is not set
-
-##
-## file: drivers/mmc/Kconfig
-##
-# CONFIG_MMC is not set
-
-##
-## file: drivers/mtd/Kconfig
-##
-# CONFIG_MTD is not set
-
-##
-## file: drivers/net/Kconfig
-##
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_NET_ETHERNET=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_DM9000 is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_PCI=y
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_B44=m
-CONFIG_FORCEDETH=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-CONFIG_8139TOO_PIO=y
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_VIA_RHINE=m
-# CONFIG_VIA_RHINE_MMIO is not set
-# CONFIG_NET_POCKET is not set
-CONFIG_NETDEV_1000=y
-CONFIG_SB1250_MAC=y
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-# CONFIG_NET_FC is not set
-
-##
-## file: drivers/net/appletalk/Kconfig
-##
-# CONFIG_ATALK is not set
-
-##
-## file: drivers/net/arcnet/Kconfig
-##
-# CONFIG_ARCNET is not set
-
-##
-## file: drivers/net/phy/Kconfig
-##
-CONFIG_BROADCOM_PHY=y
-# CONFIG_FIXED_PHY is not set
-
-##
-## file: drivers/net/tokenring/Kconfig
-##
-# CONFIG_TR is not set
-
-##
-## file: drivers/net/tulip/Kconfig
-##
-# CONFIG_NET_TULIP is not set
-
-##
-## file: drivers/net/wan/Kconfig
-##
-# CONFIG_WAN is not set
-
-##
-## file: drivers/pci/hotplug/Kconfig
-##
-# CONFIG_HOTPLUG_PCI is not set
-
-##
-## file: drivers/pcmcia/Kconfig
-##
-# CONFIG_PCCARD is not set
-
-##
-## file: drivers/scsi/Kconfig
-##
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
-# CONFIG_SCSI_SAS_ATTRS is not set
-CONFIG_ISCSI_TCP=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX_OLD=m
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_IPS=m
-CONFIG_SCSI_INITIO=m
-CONFIG_SCSI_INIA100=m
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-# CONFIG_SCSI_IPR is not set
-CONFIG_SCSI_QLOGIC_1280=m
-CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_DEBUG=m
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic79xx
-##
-CONFIG_SCSI_AIC79XX=m
-CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-CONFIG_AIC79XX_DEBUG_ENABLE=y
-CONFIG_AIC79XX_DEBUG_MASK=0
-CONFIG_AIC79XX_REG_PRETTY_PRINT=y
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx
-##
-CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-CONFIG_AIC7XXX_DEBUG_ENABLE=y
-CONFIG_AIC7XXX_DEBUG_MASK=0
-CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
-
-##
-## file: drivers/scsi/megaraid/Kconfig.megaraid
-##
-# CONFIG_MEGARAID_NEWGEN is not set
-CONFIG_MEGARAID_LEGACY=m
-CONFIG_MEGARAID_SAS=m
-
-##
-## file: drivers/scsi/qla2xxx/Kconfig
-##
-CONFIG_SCSI_QLA_FC=m
-
-##
-## file: drivers/serial/Kconfig
-##
-# CONFIG_SERIAL_8250 is not set
-CONFIG_SERIAL_SB1250_DUART=y
-CONFIG_SERIAL_SB1250_DUART_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-
-##
-## file: drivers/spi/Kconfig
-##
-CONFIG_SPI=y
-CONFIG_SPI_BITBANG=m
-CONFIG_SPI_BUTTERFLY=m
-
-##
-## file: drivers/telephony/Kconfig
-##
-# CONFIG_PHONE is not set
-
-##
-## file: drivers/usb/Kconfig
-##
-CONFIG_USB=m
-# CONFIG_USB_USS720 is not set
-
-##
-## file: drivers/usb/class/Kconfig
-##
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
-## file: drivers/usb/host/Kconfig
-##
-CONFIG_USB_EHCI_HCD=m
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-CONFIG_USB_ISP116X_HCD=m
-CONFIG_USB_OHCI_HCD=m
-CONFIG_USB_UHCI_HCD=m
-CONFIG_USB_SL811_HCD=m
-
-##
-## file: drivers/usb/image/Kconfig
-##
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-# CONFIG_USB_SISUSBVGA_CON is not set
-
-##
-## file: drivers/usb/mon/Kconfig
-##
-CONFIG_USB_MON=y
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-CONFIG_USB_STORAGE_ALAUDA=y
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-##
-## file: drivers/video/Kconfig
-##
-CONFIG_FB=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-# CONFIG_FB_CIRRUS is not set
-CONFIG_FB_PM2=m
-# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
-CONFIG_FB_CYBER2000=m
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_NVIDIA=m
-# CONFIG_FB_NVIDIA_I2C is not set
-CONFIG_FB_RIVA=m
-# CONFIG_FB_RIVA_I2C is not set
-# CONFIG_FB_RIVA_DEBUG is not set
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-# CONFIG_FB_MATROX_I2C is not set
-# CONFIG_FB_MATROX_MULTIHEAD is not set
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY=m
-# CONFIG_FB_ATY_CT is not set
-# CONFIG_FB_ATY_GX is not set
-CONFIG_FB_SAVAGE=m
-# CONFIG_FB_SAVAGE_I2C is not set
-# CONFIG_FB_SAVAGE_ACCEL is not set
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
-CONFIG_FB_NEOMAGIC=m
-CONFIG_FB_KYRO=m
-CONFIG_FB_VOODOO1=m
-CONFIG_FB_TRIDENT=m
-# CONFIG_FB_VIRTUAL is not set
-
-##
-## file: drivers/video/console/Kconfig
-##
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-
-##
-## file: drivers/w1/Kconfig
-##
-# CONFIG_W1 is not set
-
-##
-## file: drivers/watchdog/Kconfig
-##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_USBPCWATCHDOG is not set
-
-##
-## file: fs/Kconfig.binfmt
-##
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=m
-
-##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=y
-
-##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
-## file: fs/nfs/Kconfig
-##
-CONFIG_NFS_FS=y
-CONFIG_ROOT_NFS=y
-
-##
-## file: fs/partitions/Kconfig
-##
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-CONFIG_SGI_PARTITION=y
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-CONFIG_KARMA_PARTITION=y
-# CONFIG_EFI_PARTITION is not set
-
-##
-## file: init/Kconfig
-##
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-
-##
-## file: mm/Kconfig
-##
-## choice: Memory model
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-## end choice
-
-##
-## file: net/atm/Kconfig
-##
-# CONFIG_ATM is not set
-
-##
-## file: net/ax25/Kconfig
-##
-# CONFIG_HAMRADIO is not set
-
-##
-## file: net/decnet/Kconfig
-##
-# CONFIG_DECNET is not set
-
-##
-## file: net/econet/Kconfig
-##
-# CONFIG_ECONET is not set
-
-##
-## file: net/ipv4/Kconfig
-##
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-
-##
-## file: net/ipx/Kconfig
-##
-# CONFIG_IPX is not set
-
-##
-## file: net/irda/Kconfig
-##
-# CONFIG_IRDA is not set
-
-##
-## file: net/lapb/Kconfig
-##
-# CONFIG_LAPB is not set
-
-##
-## file: net/wanrouter/Kconfig
-##
-# CONFIG_WAN_ROUTER is not set
-
-##
-## file: net/x25/Kconfig
-##
-# CONFIG_X25 is not set
-
-##
-## file: sound/Kconfig
-##
-CONFIG_SOUND=y
-CONFIG_SOUND_PRIME=y
-
-##
-## file: sound/core/Kconfig
-##
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_RTCTIMER=m
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-##
-## file: sound/drivers/Kconfig
-##
-# CONFIG_SND_DUMMY is not set
-CONFIG_SND_VIRMIDI=m
-# CONFIG_SND_MTPAV is not set
-CONFIG_SND_SERIAL_U16550=m
-# CONFIG_SND_MPU401 is not set
-
-##
-## file: sound/oss/Kconfig
-##
-# CONFIG_SOUND_MSNDCLAS is not set
-CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin"
-CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin"
-# CONFIG_SOUND_MSNDPIN is not set
-CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin"
-CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin"
-
-##
-## file: sound/pci/Kconfig
-##
-CONFIG_SND_AD1889=m
-CONFIG_SND_ALI5451=m
-CONFIG_SND_ATIIXP=m
-CONFIG_SND_ATIIXP_MODEM=m
-CONFIG_SND_AU8810=m
-CONFIG_SND_AU8820=m
-CONFIG_SND_AU8830=m
-CONFIG_SND_AZT3328=m
-CONFIG_SND_BT87X=m
-CONFIG_SND_BT87X_OVERCLOCK=y
-CONFIG_SND_CA0106=m
-CONFIG_SND_CMIPCI=m
-CONFIG_SND_CS4281=m
-CONFIG_SND_CS46XX=m
-CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_EMU10K1X=m
-CONFIG_SND_ENS1370=m
-CONFIG_SND_ENS1371=m
-CONFIG_SND_ES1938=m
-CONFIG_SND_ES1968=m
-CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_HDSP=m
-CONFIG_SND_HDSPM=m
-CONFIG_SND_ICE1712=m
-CONFIG_SND_ICE1724=m
-CONFIG_SND_INTEL8X0=m
-CONFIG_SND_INTEL8X0M=m
-CONFIG_SND_KORG1212=m
-CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MIXART=m
-CONFIG_SND_NM256=m
-CONFIG_SND_PCXHR=m
-CONFIG_SND_RME32=m
-CONFIG_SND_RME96=m
-CONFIG_SND_RME9652=m
-CONFIG_SND_SONICVIBES=m
-CONFIG_SND_TRIDENT=m
-CONFIG_SND_VIA82XX=m
-CONFIG_SND_VIA82XX_MODEM=m
-CONFIG_SND_VX222=m
-CONFIG_SND_YMFPCI=m
-
-##
-## file: sound/pci/hda/Kconfig
-##
-CONFIG_SND_HDA_INTEL=m
-
-##
-## file: unknown
-##
-# CONFIG_BLK_DEV_IDE_SWARM is not set
-# CONFIG_LAN_SAA9730 is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_SEAD is not set
-
diff --git a/config/mipsel/defines b/config/mipsel/defines
index ac9da79..e351eb9 100644
--- a/config/mipsel/defines
+++ b/config/mipsel/defines
@@ -10,22 +10,34 @@ kernel-arch: mips
[image]
initramfs: false
-[r5k-cobalt_base]
-class: Cobalt
-longclass: Cobalt (Qube, RaQ, Qube2, RaQ2)
+[r5k-cobalt_description]
+hardware: Cobalt
+hardware-long: Cobalt systems (Qube, RaQ, Qube2, RaQ2)
-[sb1-bcm91250a_base]
-class: BCM91250A
-longclass: Broadcom BCM91250A (aka SWARM)
+[sb1-bcm91250a_description]
+hardware: BCM91250A
+hardware-long: Broadcom BCM91250A systems (aka SWARM)
-[sb1a-bcm91480b_base]
-class: BCM91480B
-longclass: Broadcom BCM91480B (aka BigSur)
+[sb1-bcm91250a_image]
+configs: mips/config.sb1-bcm91250a
-[4kc-malta_base]
-class: MIPS Malta
-longclass: MIPS Malta board
+[sb1a-bcm91480b_description]
+hardware: BCM91480B
+hardware-long: Broadcom BCM91480B systems (aka BigSur)
-[5kc-malta_base]
-class: MIPS Malta (64-bit)
-longclass: MIPS Malta board (64-bit)
+[sb1a-bcm91480b_image]
+configs: mips/config.sb1a-bcm91480b
+
+[4kc-malta_description]
+hardware: MIPS Malta
+hardware-long: MIPS Malta boards
+
+[4kc-malta_image]
+configs: mips/config.4kc-malta
+
+[5kc-malta_description]
+hardware: MIPS Malta (64-bit)
+hardware-long: MIPS Malta boards (64-bit)
+
+[5kc-malta_image]
+configs: mips/config.5kc-malta
diff --git a/config/powerpc/config b/config/powerpc/config
index 54fbee6..1fa0f00 100644
--- a/config/powerpc/config
+++ b/config/powerpc/config
@@ -178,11 +178,6 @@ CONFIG_DRM_MGA=m
# CONFIG_DRM_SIS is not set
##
-## file: drivers/hid/Kconfig
-##
-CONFIG_THRUSTMASTER_FF=y
-
-##
## file: drivers/hid/usbhid/Kconfig
##
CONFIG_USB_HID=m
@@ -199,8 +194,6 @@ CONFIG_SENSORS_ADM1031=m
CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_DS1621=m
CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_FSCHER=m
-CONFIG_SENSORS_FSCPOS=m
CONFIG_SENSORS_GL518SM=m
CONFIG_SENSORS_GL520SM=m
CONFIG_SENSORS_IT87=m
@@ -261,11 +254,6 @@ CONFIG_I2C_PCA_ISA=m
CONFIG_SCx200_ACB=m
##
-## file: drivers/i2c/chips/Kconfig
-##
-CONFIG_SENSORS_PCF8574=m
-
-##
## file: drivers/ide/Kconfig
##
CONFIG_IDE=y
@@ -321,10 +309,10 @@ CONFIG_INPUT_JOYSTICK=y
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=m
-# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
##
## file: drivers/input/misc/Kconfig
@@ -478,7 +466,6 @@ CONFIG_MMC_BLOCK=m
##
## file: drivers/net/Kconfig
##
-CONFIG_DUMMY=m
CONFIG_MACE=m
# CONFIG_MACE_AAUI_PORT is not set
CONFIG_BMAC=m
@@ -533,16 +520,6 @@ CONFIG_ARCNET_COM20020=m
CONFIG_ARCNET_COM20020_PCI=m
##
-## file: drivers/net/hamradio/Kconfig
-##
-CONFIG_BPQETHER=m
-CONFIG_BAYCOM_SER_FDX=m
-CONFIG_BAYCOM_SER_HDX=m
-CONFIG_BAYCOM_PAR=m
-CONFIG_BAYCOM_EPP=m
-CONFIG_YAM=m
-
-##
## file: drivers/net/irda/Kconfig
##
CONFIG_IRTTY_SIR=m
@@ -636,11 +613,6 @@ CONFIG_PCI_HERMES=m
CONFIG_PCMCIA_HERMES=m
##
-## file: drivers/pci/Kconfig
-##
-# CONFIG_PCI_DEBUG is not set
-
-##
## file: drivers/pci/hotplug/Kconfig
##
# CONFIG_HOTPLUG_PCI is not set
@@ -658,6 +630,17 @@ CONFIG_I82092=m
CONFIG_TCIC=m
##
+## file: drivers/power/Kconfig
+##
+CONFIG_POWER_SUPPLY=m
+CONFIG_BATTERY_PMU=m
+
+##
+## file: drivers/rtc/Kconfig
+##
+CONFIG_RTC_DRV_GENERIC=y
+
+##
## file: drivers/scsi/Kconfig
##
CONFIG_SCSI_DPT_I2O=m
@@ -684,7 +667,6 @@ CONFIG_SCSI_IPR=m
CONFIG_SCSI_DC395x=m
CONFIG_SCSI_DC390T=m
CONFIG_SCSI_NSP32=m
-# CONFIG_SCSI_DEBUG is not set
CONFIG_SCSI_MESH=m
CONFIG_SCSI_MESH_SYNC_RATE=5
CONFIG_SCSI_MESH_RESET_DELAY_MS=4000
@@ -730,7 +712,7 @@ CONFIG_PHONE_IXJ_PCMCIA=m
##
## file: drivers/usb/Kconfig
##
-CONFIG_USB=y
+CONFIG_USB=m
##
## file: drivers/usb/atm/Kconfig
@@ -739,27 +721,12 @@ CONFIG_USB_ATM=m
CONFIG_USB_SPEEDTOUCH=m
##
-## file: drivers/usb/class/Kconfig
-##
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DYNAMIC_MINORS=y
-# CONFIG_USB_SUSPEND is not set
-
-##
## file: drivers/usb/host/Kconfig
##
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PPC_SOC=y
-CONFIG_USB_OHCI_HCD_PPC_OF=y
CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
CONFIG_USB_OHCI_HCD_PCI=y
@@ -768,41 +735,6 @@ CONFIG_USB_SL811_HCD=m
CONFIG_USB_SL811_CS=m
##
-## file: drivers/usb/image/Kconfig
-##
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_TEST=m
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-
-##
## file: drivers/video/Kconfig
##
CONFIG_FB=y
@@ -827,7 +759,6 @@ CONFIG_FB_MATROX_MYSTIQUE=y
CONFIG_FB_MATROX_G=y
CONFIG_FB_MATROX_I2C=m
CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_MATROX_MULTIHEAD=y
CONFIG_FB_RADEON=y
CONFIG_FB_RADEON_I2C=y
# CONFIG_FB_RADEON_DEBUG is not set
@@ -870,31 +801,16 @@ CONFIG_LOGO_LINUX_VGA16=y
##
## file: drivers/watchdog/Kconfig
##
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-CONFIG_SOFT_WATCHDOG=m
CONFIG_WATCHDOG_RTAS=m
CONFIG_PCIPCWATCHDOG=m
CONFIG_WDTPCI=m
-CONFIG_WDT_501_PCI=y
CONFIG_USBPCWATCHDOG=m
##
## file: fs/partitions/Kconfig
##
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
CONFIG_AMIGA_PARTITION=y
-# CONFIG_ATARI_PARTITION is not set
CONFIG_MAC_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
CONFIG_EFI_PARTITION=y
##
@@ -1073,13 +989,3 @@ CONFIG_SND_HDA_INTEL=m
CONFIG_SND_POWERMAC=m
CONFIG_SND_POWERMAC_AUTO_DRC=y
-##
-## file: sound/usb/Kconfig
-##
-CONFIG_SND_USB_USX2Y=m
-
-##
-## file: unknown
-##
-CONFIG_RTC_DRV_PPC=y
-
diff --git a/config/powerpc/config.powerpc b/config/powerpc/config.powerpc
index bd3eab4..15a41f1 100644
--- a/config/powerpc/config.powerpc
+++ b/config/powerpc/config.powerpc
@@ -28,7 +28,6 @@ CONFIG_PPC_CHRP=y
##
# CONFIG_PPC64 is not set
## choice: Processor Type
-CONFIG_6xx=y
# CONFIG_PPC_85xx is not set
# CONFIG_PPC_8xx is not set
# CONFIG_40x is not set
diff --git a/config/powerpc/config.powerpc64 b/config/powerpc/config.powerpc64
index 0b7d66a..cb2788a 100644
--- a/config/powerpc/config.powerpc64
+++ b/config/powerpc/config.powerpc64
@@ -98,7 +98,6 @@ CONFIG_SCANLOG=m
##
CONFIG_HVC_CONSOLE=y
CONFIG_HVCS=m
-CONFIG_HANGCHECK_TIMER=m
##
## file: drivers/char/hw_random/Kconfig
@@ -199,8 +198,6 @@ CONFIG_WATCHDOG_RTAS=m
CONFIG_SPARSEMEM_MANUAL=y
## end choice
CONFIG_SPARSEMEM_VMEMMAP=y
-# CONFIG_MEMORY_HOTPLUG is not set
-CONFIG_MIGRATION=y
##
## file: sound/ppc/Kconfig
diff --git a/config/powerpc/defines b/config/powerpc/defines
index 2661123..103229c 100644
--- a/config/powerpc/defines
+++ b/config/powerpc/defines
@@ -10,14 +10,14 @@ kernel-arch: powerpc
[image]
suggests: mkvmlinuz
-[powerpc_base]
-class: uniprocessor 32-bit PowerPC
+[powerpc_description]
+hardware: uniprocessor 32-bit PowerPC
-[powerpc-smp_base]
-class: multiprocessor 32-bit PowerPC
+[powerpc-smp_description]
+hardware: multiprocessor 32-bit PowerPC
[powerpc-smp_image]
configs: powerpc/config.powerpc powerpc/config.powerpc-smp
-[powerpc64_base]
-class: 64-bit PowerPC
+[powerpc64_description]
+hardware: 64-bit PowerPC
diff --git a/config/s390/config b/config/s390/config
index 15c62d9..ec0bcb8 100644
--- a/config/s390/config
+++ b/config/s390/config
@@ -20,8 +20,6 @@ CONFIG_PFAULT=y
CONFIG_CMM=y
CONFIG_CMM_PROC=y
CONFIG_CMM_IUCV=y
-#. unsure
-# CONFIG_PAGE_STATES is not set
CONFIG_APPLDATA_BASE=y
CONFIG_APPLDATA_MEM=m
CONFIG_APPLDATA_OS=m
@@ -30,6 +28,7 @@ CONFIG_S390_HYPFS_FS=y
CONFIG_KEXEC=y
# CONFIG_ZFCPDUMP is not set
CONFIG_S390_GUEST=y
+CONFIG_SECCOMP=y
##
## file: arch/s390/kvm/Kconfig
@@ -44,6 +43,11 @@ CONFIG_BLK_DEV_RAM_SIZE=24576
# CONFIG_CDROM_PKTCDVD is not set
##
+## file: drivers/char/Kconfig
+##
+CONFIG_HVC_IUCV=y
+
+##
## file: drivers/crypto/Kconfig
##
CONFIG_ZCRYPT=m
@@ -63,7 +67,6 @@ CONFIG_S390_PRNG=m
##
## file: drivers/net/Kconfig
##
-# CONFIG_DUMMY is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
@@ -128,32 +131,18 @@ CONFIG_QETH_L3=m
##
## file: drivers/scsi/Kconfig
##
-# CONFIG_SCSI_DEBUG is not set
CONFIG_ZFCP=m
##
## file: drivers/watchdog/Kconfig
##
-# CONFIG_WATCHDOG is not set
+CONFIG_ZVM_WATCHDOG=m
##
## file: fs/partitions/Kconfig
##
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
CONFIG_IBM_PARTITION=y
-# CONFIG_MAC_PARTITION is not set
CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
##
## file: mm/Kconfig
@@ -192,7 +181,7 @@ CONFIG_IPV6=y
##
## file: net/iucv/Kconfig
##
-CONFIG_IUCV=m
+CONFIG_IUCV=y
CONFIG_AFIUCV=m
##
@@ -215,10 +204,3 @@ CONFIG_AFIUCV=m
##
# CONFIG_X25 is not set
-##
-## file: unknown
-##
-CONFIG_MACHCHK_WARNING=y
-# CONFIG_QDIO_DEBUG is not set
-CONFIG_VIRT_TIMER=y
-
diff --git a/config/s390/defines b/config/s390/defines
index b56e757..8f58399 100644
--- a/config/s390/defines
+++ b/config/s390/defines
@@ -6,41 +6,43 @@ flavours:
s390x-tape
kernel-arch: s390
+[description]
+part-long-reader: This kernel has support to IPL (boot) from a VM reader or DASD device.
+part-long-tape: This kernel has support to IPL (boot) from a tape.
+part-short-tape: IPL from tape
+
[image]
-desc-long-part-reader: This kernel has support to IPL (boot) from a VM reader or DASD device.
-desc-long-part-tape: This kernel has support to IPL (boot) from a tape.
-desc-short-part-tape: IPL from tape
suggests: s390-tools
-[s390_base]
-class: IBM S/390
-
-[s390_image]
-desc-parts: reader
+[s390_description]
+hardware: IBM S/390
+parts: reader
[s390-tape_base]
-class: IBM S/390
modules: false
+[s390-tape_description]
+hardware: IBM S/390
+parts: tape
+
[s390-tape_image]
initramfs: false
-desc-parts: tape
override-localversion: s390
type: plain-s390-tape
-[s390x_base]
-class: IBM zSeries
-
-[s390x_image]
-desc-parts: reader
+[s390x_description]
+hardware: IBM zSeries
+parts: reader
[s390x-tape_base]
-class: IBM zSeries
modules: false
+[s390x-tape_description]
+hardware: IBM zSeries
+parts: tape
+
[s390x-tape_image]
initramfs: false
-desc-parts: tape
override-localversion: s390x
type: plain-s390-tape
diff --git a/config/sparc/config b/config/sparc/config
index aa8ab39..1a495be 100644
--- a/config/sparc/config
+++ b/config/sparc/config
@@ -2,7 +2,12 @@
## file: arch/sparc/Kconfig
##
CONFIG_64BIT=y
+## choice: Kernel page size
+CONFIG_SPARC64_PAGE_SIZE_8KB=y
+# CONFIG_SPARC64_PAGE_SIZE_64KB is not set
+## end choice
CONFIG_SECCOMP=y
+# CONFIG_CMDLINE_BOOL is not set
CONFIG_SUN_LDOMS=y
CONFIG_PCI=y
CONFIG_SUN_OPENPROMFS=m
@@ -11,10 +16,17 @@ CONFIG_SUN_OPENPROMFS=m
## file: drivers/block/Kconfig
##
CONFIG_BLK_DEV_FD=y
+# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_SX8=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM_SIZE=16384
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
CONFIG_SUNVDC=m
##
@@ -36,9 +48,116 @@ CONFIG_PRINTER=m
# CONFIG_IPMI_HANDLER is not set
##
+## file: drivers/gpu/drm/Kconfig
+##
+CONFIG_DRM=y
+CONFIG_DRM_TDFX=m
+CONFIG_DRM_R128=m
+CONFIG_DRM_RADEON=m
+CONFIG_DRM_MGA=m
+
+##
+## file: drivers/hid/usbhid/Kconfig
+##
+CONFIG_USB_HID=y
+
+##
## file: drivers/hwmon/Kconfig
##
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+
+##
+## file: drivers/i2c/Kconfig
+##
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+##
+## file: drivers/i2c/busses/Kconfig
+##
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+CONFIG_I2C_PARPORT=m
+CONFIG_I2C_PARPORT_LIGHT=m
+# CONFIG_I2C_VOODOO3 is not set
+# CONFIG_I2C_PCA_ISA is not set
+# CONFIG_I2C_STUB is not set
+
+##
+## file: drivers/ide/Kconfig
+##
+CONFIG_IDE=y
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_IDE_GD=y
+CONFIG_BLK_DEV_IDECD=m
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_IDE_GENERIC=m
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=m
+# CONFIG_BLK_DEV_OPTI621 is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+CONFIG_BLK_DEV_ALI15X3=m
+# CONFIG_BLK_DEV_AMD74XX is not set
+CONFIG_BLK_DEV_CMD64X=m
+# CONFIG_BLK_DEV_TRIFLEX is not set
+CONFIG_BLK_DEV_CY82C693=m
+CONFIG_BLK_DEV_CS5520=m
+CONFIG_BLK_DEV_CS5530=m
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+# CONFIG_BLK_DEV_PIIX is not set
+CONFIG_BLK_DEV_NS87415=m
+CONFIG_BLK_DEV_PDC202XX_OLD=m
+CONFIG_BLK_DEV_PDC202XX_NEW=m
+CONFIG_BLK_DEV_SVWKS=m
+CONFIG_BLK_DEV_SIIMAGE=m
+# CONFIG_BLK_DEV_SLC90E66 is not set
+CONFIG_BLK_DEV_TRM290=m
+CONFIG_BLK_DEV_VIA82CXXX=m
##
## file: drivers/input/Kconfig
@@ -60,10 +179,10 @@ CONFIG_PRINTER=m
##
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_SUNKBD=y
CONFIG_KEYBOARD_LKKBD=m
-# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_KEYBOARD_SUNKBD=y
+# CONFIG_KEYBOARD_XTKBD is not set
##
## file: drivers/input/misc/Kconfig
@@ -76,6 +195,8 @@ CONFIG_INPUT_SPARCSPKR=m
## file: drivers/input/mouse/Kconfig
##
CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_SERIAL=y
# CONFIG_MOUSE_VSXXXAA is not set
##
@@ -90,6 +211,11 @@ CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
##
+## file: drivers/input/tablet/Kconfig
+##
+# CONFIG_TABLET_USB_KBTAB is not set
+
+##
## file: drivers/input/touchscreen/Kconfig
##
# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -100,6 +226,49 @@ CONFIG_SERIO_LIBPS2=y
# CONFIG_ISDN is not set
##
+## file: drivers/media/Kconfig
+##
+CONFIG_VIDEO_V4L1_COMPAT=y
+
+##
+## file: drivers/media/radio/Kconfig
+##
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_USB_DSBR is not set
+
+##
+## file: drivers/media/video/Kconfig
+##
+# CONFIG_VIDEO_BWQCAM is not set
+# CONFIG_VIDEO_CQCAM is not set
+# CONFIG_VIDEO_W9966 is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_VIDEO_STRADIS is not set
+# CONFIG_VIDEO_MXB is not set
+# CONFIG_VIDEO_HEXIUM_ORION is not set
+# CONFIG_VIDEO_HEXIUM_GEMINI is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+
+##
+## file: drivers/media/video/bt8xx/Kconfig
+##
+CONFIG_VIDEO_BT848=m
+
+##
+## file: drivers/media/video/cx88/Kconfig
+##
+# CONFIG_VIDEO_CX88 is not set
+
+##
+## file: drivers/media/video/zoran/Kconfig
+##
+# CONFIG_VIDEO_ZORAN is not set
+
+##
## file: drivers/message/i2o/Kconfig
##
# CONFIG_I2O is not set
@@ -117,13 +286,39 @@ CONFIG_SERIO_LIBPS2=y
##
## file: drivers/net/Kconfig
##
-CONFIG_DUMMY=m
CONFIG_SUNLANCE=m
CONFIG_HAPPYMEAL=m
CONFIG_SUNBMAC=m
CONFIG_SUNQE=m
+CONFIG_SUNGEM=m
CONFIG_SUNVNET=m
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_NET_PCI=y
+# CONFIG_AMD8111_ETH is not set
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_B44=m
+# CONFIG_FORCEDETH is not set
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+# CONFIG_8139CP is not set
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+CONFIG_SUNDANCE_MMIO=y
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
CONFIG_MYRI_SBUS=m
+CONFIG_FDDI=y
+CONFIG_SKFP=m
# CONFIG_HIPPI is not set
CONFIG_PLIP=m
CONFIG_NET_FC=y
@@ -140,6 +335,18 @@ CONFIG_NET_FC=y
# CONFIG_TR is not set
##
+## file: drivers/net/tulip/Kconfig
+##
+CONFIG_NET_TULIP=y
+# CONFIG_DE2104X is not set
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+# CONFIG_DE4X5 is not set
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+
+##
## file: drivers/net/wan/Kconfig
##
# CONFIG_WAN is not set
@@ -153,25 +360,51 @@ CONFIG_PARPORT_SUNBPP=m
## file: drivers/sbus/char/Kconfig
##
CONFIG_SUN_OPENPROMIO=y
+CONFIG_OBP_FLASH=m
+CONFIG_BBC_I2C=m
+CONFIG_ENVCTRL=m
+CONFIG_DISPLAY7SEG=m
##
## file: drivers/scsi/Kconfig
##
CONFIG_SCSI_ARCMSR=m
+CONFIG_SCSI_DMX3191D=m
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_IPS is not set
+CONFIG_SCSI_INITIO=m
# CONFIG_SCSI_INIA100 is not set
+CONFIG_SCSI_SYM53C8XX_2=m
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_IPR=m
+# CONFIG_SCSI_IPR_TRACE is not set
+# CONFIG_SCSI_IPR_DUMP is not set
CONFIG_SCSI_QLOGIC_1280=m
CONFIG_SCSI_QLOGICPTI=m
+CONFIG_SCSI_DC395x=m
# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_DEBUG is not set
CONFIG_SCSI_SUNESP=m
##
+## file: drivers/scsi/megaraid/Kconfig.megaraid
+##
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_LEGACY=m
+
+##
## file: drivers/serial/Kconfig
##
CONFIG_SERIAL_SUNZILOG=y
CONFIG_SERIAL_SUNZILOG_CONSOLE=y
+CONFIG_SERIAL_SUNSU=y
+CONFIG_SERIAL_SUNSU_CONSOLE=y
+CONFIG_SERIAL_SUNSAB=y
+CONFIG_SERIAL_SUNSAB_CONSOLE=y
+CONFIG_SERIAL_SUNHV=y
CONFIG_SERIAL_JSM=m
##
@@ -180,20 +413,52 @@ CONFIG_SERIAL_JSM=m
# CONFIG_PHONE is not set
##
+## file: drivers/usb/Kconfig
+##
+CONFIG_USB=m
+# CONFIG_USB_USS720 is not set
+
+##
+## file: drivers/usb/host/Kconfig
+##
+CONFIG_USB_EHCI_HCD=m
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+CONFIG_USB_OHCI_HCD=m
+CONFIG_USB_UHCI_HCD=m
+# CONFIG_USB_SL811_HCD is not set
+
+##
## file: drivers/video/Kconfig
##
CONFIG_FB=y
+CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_TILEBLITTING is not set
# CONFIG_FB_CIRRUS is not set
+CONFIG_FB_PM2=y
+# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
CONFIG_FB_SBUS=y
+# CONFIG_FB_BW2 is not set
+# CONFIG_FB_CG3 is not set
CONFIG_FB_CG6=y
+CONFIG_FB_FFB=y
+# CONFIG_FB_TCX is not set
+# CONFIG_FB_CG14 is not set
# CONFIG_FB_P9100 is not set
+# CONFIG_FB_LEO is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_MATROX is not set
+CONFIG_FB_RADEON=y
+# CONFIG_FB_RADEON_I2C is not set
+# CONFIG_FB_RADEON_DEBUG is not set
+CONFIG_FB_ATY128=y
+CONFIG_FB_ATY=y
+CONFIG_FB_ATY_CT=y
+# CONFIG_FB_ATY_GENERIC_LCD is not set
+CONFIG_FB_ATY_GX=y
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
@@ -211,9 +476,9 @@ CONFIG_FB_CG6=y
##
## file: drivers/video/console/Kconfig
##
-CONFIG_PROM_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FONTS is not set
+CONFIG_FONT_8x16=y
CONFIG_FONT_SUN8x16=y
# CONFIG_FONT_SUN12x22 is not set
@@ -223,6 +488,8 @@ CONFIG_FONT_SUN8x16=y
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_SUN_CLUT224=y
##
## file: drivers/w1/Kconfig
@@ -230,30 +497,8 @@ CONFIG_LOGO=y
# CONFIG_W1 is not set
##
-## file: drivers/watchdog/Kconfig
-##
-# CONFIG_WATCHDOG is not set
-
-##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
## file: fs/partitions/Kconfig
##
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
CONFIG_SUN_PARTITION=y
CONFIG_EFI_PARTITION=y
@@ -339,6 +584,7 @@ CONFIG_IPX=m
## file: sound/drivers/Kconfig
##
# CONFIG_SND_DUMMY is not set
+CONFIG_SND_VIRMIDI=m
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set
@@ -346,6 +592,7 @@ CONFIG_IPX=m
##
## file: sound/pci/Kconfig
##
+CONFIG_SND_ALI5451=m
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
@@ -354,9 +601,13 @@ CONFIG_IPX=m
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CA0106 is not set
+CONFIG_SND_CMIPCI=m
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_CS46XX is not set
+CONFIG_SND_EMU10K1=m
# CONFIG_SND_EMU10K1X is not set
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_FM801 is not set
@@ -366,6 +617,7 @@ CONFIG_IPX=m
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
# CONFIG_SND_KORG1212 is not set
+CONFIG_SND_MAESTRO3=m
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_RME32 is not set
diff --git a/config/sparc/config.sparc64 b/config/sparc/config.sparc64
index 2711f27..7586217 100644
--- a/config/sparc/config.sparc64
+++ b/config/sparc/config.sparc64
@@ -2,405 +2,4 @@
## file: arch/sparc/Kconfig
##
# CONFIG_SMP is not set
-## choice: Kernel page size
-CONFIG_SPARC64_PAGE_SIZE_8KB=y
-# CONFIG_SPARC64_PAGE_SIZE_64KB is not set
-## end choice
-# CONFIG_CMDLINE_BOOL is not set
-
-##
-## file: drivers/block/Kconfig
-##
-# CONFIG_PARIDE is not set
-CONFIG_BLK_DEV_SX8=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM_SIZE=16384
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-
-##
-## file: drivers/char/Kconfig
-##
-CONFIG_RTC=y
-
-##
-## file: drivers/gpu/drm/Kconfig
-##
-CONFIG_DRM=y
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_MGA=m
-
-##
-## file: drivers/hid/usbhid/Kconfig
-##
-CONFIG_USB_HID=y
-
-##
-## file: drivers/hwmon/Kconfig
-##
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-
-##
-## file: drivers/i2c/Kconfig
-##
-CONFIG_I2C=m
-CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/busses/Kconfig
-##
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-CONFIG_I2C_PARPORT=m
-CONFIG_I2C_PARPORT_LIGHT=m
-# CONFIG_I2C_VOODOO3 is not set
-# CONFIG_I2C_PCA_ISA is not set
-# CONFIG_I2C_STUB is not set
-
-##
-## file: drivers/i2c/chips/Kconfig
-##
-# CONFIG_SENSORS_PCF8574 is not set
-
-##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=y
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_IDE_GENERIC=m
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=m
-# CONFIG_BLK_DEV_OPTI621 is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-CONFIG_BLK_DEV_ALI15X3=m
-# CONFIG_BLK_DEV_AMD74XX is not set
-CONFIG_BLK_DEV_CMD64X=m
-# CONFIG_BLK_DEV_TRIFLEX is not set
-CONFIG_BLK_DEV_CY82C693=m
-CONFIG_BLK_DEV_CS5520=m
-CONFIG_BLK_DEV_CS5530=m
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-# CONFIG_BLK_DEV_PIIX is not set
-CONFIG_BLK_DEV_NS87415=m
-CONFIG_BLK_DEV_PDC202XX_OLD=m
-CONFIG_BLK_DEV_PDC202XX_NEW=m
-CONFIG_BLK_DEV_SVWKS=m
-CONFIG_BLK_DEV_SIIMAGE=m
-# CONFIG_BLK_DEV_SLC90E66 is not set
-CONFIG_BLK_DEV_TRM290=m
-CONFIG_BLK_DEV_VIA82CXXX=m
-
-##
-## file: drivers/input/mouse/Kconfig
-##
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_SERIAL=y
-
-##
-## file: drivers/input/tablet/Kconfig
-##
-# CONFIG_TABLET_USB_KBTAB is not set
-
-##
-## file: drivers/media/Kconfig
-##
-CONFIG_VIDEO_V4L1_COMPAT=y
-
-##
-## file: drivers/media/radio/Kconfig
-##
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_USB_DSBR is not set
-
-##
-## file: drivers/media/video/Kconfig
-##
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_W9966 is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_MXB is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-
-##
-## file: drivers/media/video/bt8xx/Kconfig
-##
-CONFIG_VIDEO_BT848=m
-
-##
-## file: drivers/media/video/cx88/Kconfig
-##
-# CONFIG_VIDEO_CX88 is not set
-
-##
-## file: drivers/media/video/zoran/Kconfig
-##
-# CONFIG_VIDEO_ZORAN is not set
-
-##
-## file: drivers/net/Kconfig
-##
-CONFIG_SUNGEM=m
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_NET_PCI=y
-# CONFIG_AMD8111_ETH is not set
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_B44=m
-# CONFIG_FORCEDETH is not set
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-# CONFIG_8139CP is not set
-CONFIG_8139TOO=m
-# CONFIG_8139TOO_PIO is not set
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-CONFIG_SUNDANCE_MMIO=y
-CONFIG_VIA_RHINE=m
-# CONFIG_VIA_RHINE_MMIO is not set
-CONFIG_FDDI=y
-CONFIG_SKFP=m
-
-##
-## file: drivers/net/tulip/Kconfig
-##
-CONFIG_NET_TULIP=y
-# CONFIG_DE2104X is not set
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-# CONFIG_DE4X5 is not set
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-
-##
-## file: drivers/sbus/char/Kconfig
-##
-CONFIG_OBP_FLASH=m
-CONFIG_BBC_I2C=m
-CONFIG_ENVCTRL=m
-CONFIG_DISPLAY7SEG=m
-
-##
-## file: drivers/scsi/Kconfig
-##
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_INITIO=m
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_IPR=m
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP is not set
-CONFIG_SCSI_DC395x=m
-
-##
-## file: drivers/scsi/megaraid/Kconfig.megaraid
-##
-CONFIG_MEGARAID_NEWGEN=y
-CONFIG_MEGARAID_MM=m
-CONFIG_MEGARAID_MAILBOX=m
-CONFIG_MEGARAID_LEGACY=m
-
-##
-## file: drivers/serial/Kconfig
-##
-CONFIG_SERIAL_SUNSU=y
-CONFIG_SERIAL_SUNSU_CONSOLE=y
-CONFIG_SERIAL_SUNSAB=y
-CONFIG_SERIAL_SUNSAB_CONSOLE=y
-CONFIG_SERIAL_SUNHV=y
-
-##
-## file: drivers/usb/Kconfig
-##
-CONFIG_USB=y
-# CONFIG_USB_USS720 is not set
-
-##
-## file: drivers/usb/class/Kconfig
-##
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
-## file: drivers/usb/host/Kconfig
-##
-CONFIG_USB_EHCI_HCD=m
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-CONFIG_USB_OHCI_HCD=m
-CONFIG_USB_UHCI_HCD=m
-# CONFIG_USB_SL811_HCD is not set
-
-##
-## file: drivers/usb/image/Kconfig
-##
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-CONFIG_USB_RIO500=m
-# CONFIG_USB_LEGOTOWER is not set
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_TEST is not set
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-# CONFIG_USB_STORAGE_USBAT is not set
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-
-##
-## file: drivers/video/Kconfig
-##
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_PM2=y
-# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
-# CONFIG_FB_BW2 is not set
-# CONFIG_FB_CG3 is not set
-CONFIG_FB_FFB=y
-# CONFIG_FB_TCX is not set
-# CONFIG_FB_CG14 is not set
-# CONFIG_FB_LEO is not set
-CONFIG_FB_RADEON=y
-# CONFIG_FB_RADEON_I2C is not set
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=y
-CONFIG_FB_ATY=y
-CONFIG_FB_ATY_CT=y
-# CONFIG_FB_ATY_GENERIC_LCD is not set
-CONFIG_FB_ATY_GX=y
-
-##
-## file: drivers/video/console/Kconfig
-##
-CONFIG_FONT_8x16=y
-
-##
-## file: drivers/video/logo/Kconfig
-##
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_SUN_CLUT224=y
-
-##
-## file: mm/Kconfig
-##
-## choice: Memory model
-# CONFIG_FLATMEM_MANUAL is not set
-CONFIG_SPARSEMEM_MANUAL=y
-## end choice
-
-##
-## file: sound/core/Kconfig
-##
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_RTCTIMER is not set
-
-##
-## file: sound/drivers/Kconfig
-##
-CONFIG_SND_VIRMIDI=m
-
-##
-## file: sound/pci/Kconfig
-##
-CONFIG_SND_ALI5451=m
-CONFIG_SND_CMIPCI=m
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_ENS1370=m
-CONFIG_SND_ENS1371=m
-CONFIG_SND_MAESTRO3=m
diff --git a/config/sparc/config.sparc64-smp b/config/sparc/config.sparc64-smp
index e84c6d6..d21fda5 100644
--- a/config/sparc/config.sparc64-smp
+++ b/config/sparc/config.sparc64-smp
@@ -3,406 +3,5 @@
##
CONFIG_SMP=y
CONFIG_NR_CPUS=32
-## choice: Kernel page size
-CONFIG_SPARC64_PAGE_SIZE_8KB=y
-# CONFIG_SPARC64_PAGE_SIZE_64KB is not set
-## end choice
CONFIG_SCHED_SMT=y
-# CONFIG_CMDLINE_BOOL is not set
-
-##
-## file: drivers/block/Kconfig
-##
-# CONFIG_PARIDE is not set
-CONFIG_BLK_DEV_SX8=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM_SIZE=16384
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-
-##
-## file: drivers/char/Kconfig
-##
-CONFIG_RTC=y
-
-##
-## file: drivers/gpu/drm/Kconfig
-##
-CONFIG_DRM=y
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_MGA=m
-
-##
-## file: drivers/hid/usbhid/Kconfig
-##
-CONFIG_USB_HID=y
-
-##
-## file: drivers/hwmon/Kconfig
-##
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-
-##
-## file: drivers/i2c/Kconfig
-##
-CONFIG_I2C=m
-CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-##
-## file: drivers/i2c/busses/Kconfig
-##
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-CONFIG_I2C_PARPORT=m
-CONFIG_I2C_PARPORT_LIGHT=m
-# CONFIG_I2C_VOODOO3 is not set
-# CONFIG_I2C_PCA_ISA is not set
-# CONFIG_I2C_STUB is not set
-
-##
-## file: drivers/i2c/chips/Kconfig
-##
-# CONFIG_SENSORS_PCF8574 is not set
-
-##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=y
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_IDE_GENERIC=m
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=m
-# CONFIG_BLK_DEV_OPTI621 is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-CONFIG_BLK_DEV_ALI15X3=m
-# CONFIG_BLK_DEV_AMD74XX is not set
-CONFIG_BLK_DEV_CMD64X=m
-# CONFIG_BLK_DEV_TRIFLEX is not set
-CONFIG_BLK_DEV_CY82C693=m
-CONFIG_BLK_DEV_CS5520=m
-CONFIG_BLK_DEV_CS5530=m
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-# CONFIG_BLK_DEV_PIIX is not set
-CONFIG_BLK_DEV_NS87415=m
-CONFIG_BLK_DEV_PDC202XX_OLD=m
-CONFIG_BLK_DEV_PDC202XX_NEW=m
-CONFIG_BLK_DEV_SVWKS=m
-CONFIG_BLK_DEV_SIIMAGE=m
-# CONFIG_BLK_DEV_SLC90E66 is not set
-CONFIG_BLK_DEV_TRM290=m
-CONFIG_BLK_DEV_VIA82CXXX=m
-
-##
-## file: drivers/input/mouse/Kconfig
-##
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_SERIAL=y
-
-##
-## file: drivers/input/tablet/Kconfig
-##
-# CONFIG_TABLET_USB_KBTAB is not set
-
-##
-## file: drivers/media/Kconfig
-##
-CONFIG_VIDEO_V4L1_COMPAT=y
-
-##
-## file: drivers/media/radio/Kconfig
-##
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_USB_DSBR is not set
-
-##
-## file: drivers/media/video/Kconfig
-##
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_W9966 is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_MXB is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-
-##
-## file: drivers/media/video/bt8xx/Kconfig
-##
-CONFIG_VIDEO_BT848=m
-
-##
-## file: drivers/media/video/cx88/Kconfig
-##
-# CONFIG_VIDEO_CX88 is not set
-
-##
-## file: drivers/media/video/zoran/Kconfig
-##
-# CONFIG_VIDEO_ZORAN is not set
-
-##
-## file: drivers/net/Kconfig
-##
-CONFIG_SUNGEM=m
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_NET_PCI=y
-# CONFIG_AMD8111_ETH is not set
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_B44=m
-# CONFIG_FORCEDETH is not set
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-# CONFIG_8139CP is not set
-CONFIG_8139TOO=m
-# CONFIG_8139TOO_PIO is not set
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-CONFIG_SUNDANCE_MMIO=y
-CONFIG_VIA_RHINE=m
-# CONFIG_VIA_RHINE_MMIO is not set
-CONFIG_FDDI=y
-CONFIG_SKFP=m
-
-##
-## file: drivers/net/tulip/Kconfig
-##
-CONFIG_NET_TULIP=y
-# CONFIG_DE2104X is not set
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-# CONFIG_DE4X5 is not set
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-
-##
-## file: drivers/sbus/char/Kconfig
-##
-CONFIG_OBP_FLASH=m
-CONFIG_BBC_I2C=m
-CONFIG_ENVCTRL=m
-CONFIG_DISPLAY7SEG=m
-
-##
-## file: drivers/scsi/Kconfig
-##
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_INITIO=m
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_IPR=m
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP is not set
-CONFIG_SCSI_DC395x=m
-
-##
-## file: drivers/scsi/megaraid/Kconfig.megaraid
-##
-CONFIG_MEGARAID_NEWGEN=y
-CONFIG_MEGARAID_MM=m
-CONFIG_MEGARAID_MAILBOX=m
-CONFIG_MEGARAID_LEGACY=m
-
-##
-## file: drivers/serial/Kconfig
-##
-CONFIG_SERIAL_SUNSU=y
-CONFIG_SERIAL_SUNSU_CONSOLE=y
-CONFIG_SERIAL_SUNSAB=y
-CONFIG_SERIAL_SUNSAB_CONSOLE=y
-CONFIG_SERIAL_SUNHV=y
-
-##
-## file: drivers/usb/Kconfig
-##
-CONFIG_USB=y
-# CONFIG_USB_USS720 is not set
-
-##
-## file: drivers/usb/class/Kconfig
-##
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=m
-
-##
-## file: drivers/usb/core/Kconfig
-##
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-
-##
-## file: drivers/usb/host/Kconfig
-##
-CONFIG_USB_EHCI_HCD=m
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-CONFIG_USB_OHCI_HCD=m
-CONFIG_USB_UHCI_HCD=m
-# CONFIG_USB_SL811_HCD is not set
-
-##
-## file: drivers/usb/image/Kconfig
-##
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-##
-## file: drivers/usb/misc/Kconfig
-##
-CONFIG_USB_RIO500=m
-# CONFIG_USB_LEGOTOWER is not set
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_TEST is not set
-
-##
-## file: drivers/usb/misc/sisusbvga/Kconfig
-##
-CONFIG_USB_SISUSBVGA=m
-
-##
-## file: drivers/usb/storage/Kconfig
-##
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-# CONFIG_USB_STORAGE_USBAT is not set
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-
-##
-## file: drivers/video/Kconfig
-##
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_PM2=y
-# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
-# CONFIG_FB_BW2 is not set
-# CONFIG_FB_CG3 is not set
-CONFIG_FB_FFB=y
-# CONFIG_FB_TCX is not set
-# CONFIG_FB_CG14 is not set
-# CONFIG_FB_LEO is not set
-CONFIG_FB_RADEON=y
-# CONFIG_FB_RADEON_I2C is not set
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=y
-CONFIG_FB_ATY=y
-CONFIG_FB_ATY_CT=y
-# CONFIG_FB_ATY_GENERIC_LCD is not set
-CONFIG_FB_ATY_GX=y
-
-##
-## file: drivers/video/console/Kconfig
-##
-CONFIG_FONT_8x16=y
-
-##
-## file: drivers/video/logo/Kconfig
-##
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_SUN_CLUT224=y
-
-##
-## file: mm/Kconfig
-##
-## choice: Memory model
-# CONFIG_FLATMEM_MANUAL is not set
-CONFIG_SPARSEMEM_MANUAL=y
-## end choice
-
-##
-## file: sound/core/Kconfig
-##
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_RTCTIMER is not set
-
-##
-## file: sound/drivers/Kconfig
-##
-CONFIG_SND_VIRMIDI=m
-
-##
-## file: sound/pci/Kconfig
-##
-CONFIG_SND_ALI5451=m
-CONFIG_SND_CMIPCI=m
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_ENS1370=m
-CONFIG_SND_ENS1371=m
-CONFIG_SND_MAESTRO3=m
diff --git a/config/sparc/defines b/config/sparc/defines
index c3a44cb..b90fd6c 100644
--- a/config/sparc/defines
+++ b/config/sparc/defines
@@ -9,15 +9,15 @@ kernel-arch: sparc
[image]
suggests: silo, fdutils
-[sparc32_base]
-class: uniprocessor sparc32 (sun4m)
+[sparc32_description]
+hardware: uniprocessor sparc32 (sun4m)
[sparc32_image]
image-postproc: sparc32-image-postproc
-[sparc64_base]
-class: uniprocessor 64-bit UltraSPARC
+[sparc64_description]
+hardware: uniprocessor 64-bit UltraSPARC
-[sparc64-smp_base]
-class: multiprocessor 64-bit UltraSPARC
+[sparc64-smp_description]
+hardware: multiprocessor 64-bit UltraSPARC
diff --git a/config/sparc64/defines b/config/sparc64/defines
new file mode 100644
index 0000000..b026ff5
--- /dev/null
+++ b/config/sparc64/defines
@@ -0,0 +1,23 @@
+[base]
+featuresets:
+ vserver
+flavours:
+ sparc64
+ sparc64-smp
+kernel-arch: sparc
+
+[image]
+configs: sparc/config
+suggests: silo, fdutils
+
+[sparc64_description]
+hardware: uniprocessor 64-bit UltraSPARC
+
+[sparc64_image]
+configs: sparc/config.sparc64
+
+[sparc64-smp_description]
+hardware: multiprocessor 64-bit UltraSPARC
+
+[sparc64-smp_image]
+configs: sparc/config.sparc64-smp
diff --git a/config/sparc64/vserver/defines b/config/sparc64/vserver/defines
new file mode 100644
index 0000000..73d1036
--- /dev/null
+++ b/config/sparc64/vserver/defines
@@ -0,0 +1,6 @@
+[base]
+flavours:
+ sparc64
+
+[image]
+recommends: util-vserver
diff --git a/lib/python/debian_linux/config.py b/lib/python/debian_linux/config.py
index e256190..478c310 100644
--- a/lib/python/debian_linux/config.py
+++ b/lib/python/debian_linux/config.py
@@ -113,9 +113,11 @@ class ConfigCoreHierarchy(ConfigCore):
'modules': SchemaItemBoolean(),
},
'build': {},
+ 'description': {
+ 'parts': SchemaItemList(),
+ },
'image': {
'configs': SchemaItemList(),
- 'desc-parts': SchemaItemList(),
'initramfs': SchemaItemBoolean(),
'initramfs-generators': SchemaItemList(),
},
diff --git a/lib/python/debian_linux/debian.py b/lib/python/debian_linux/debian.py
index e4f01e5..3b5a29a 100644
--- a/lib/python/debian_linux/debian.py
+++ b/lib/python/debian_linux/debian.py
@@ -117,7 +117,17 @@ class VersionLinux(Version):
)
)?
-
-(?:[^-]+)
+\d+
+(\.\d+)?
+(?:
+ (?P<revision_experimental>
+ ~experimental\.\d+
+ )
+ |
+ (?P<revision_other>
+ [^-]+
+ )
+)?
$
"""
_version_linux_re = re.compile(_version_linux_rules, re.X)
@@ -136,6 +146,8 @@ $
else:
self.linux_upstream = d['version']
self.linux_dfsg = d['dfsg']
+ self.linux_revision_experimental = match.group('revision_experimental') and True
+ self.linux_revision_other = match.group('revision_other') and True
class PackageFieldList(list):
def __init__(self, value = None):
@@ -192,73 +204,73 @@ class PackageDescription(object):
raise TypeError
class PackageRelation(list):
- def __init__(self, value = None):
- if value is not None:
- self.extend(value)
+ def __init__(self, value=None, override_arches=None):
+ if value:
+ self.extend(value, override_arches)
def __str__(self):
return ', '.join([str(i) for i in self])
- def _match(self, value):
+ def _search_value(self, value):
for i in self:
- if i._match(value):
+ if i._search_value(value):
return i
return None
- def append(self, value):
+ def append(self, value, override_arches=None):
if isinstance(value, basestring):
- value = PackageRelationGroup(value)
+ value = PackageRelationGroup(value, override_arches)
elif not isinstance(value, PackageRelationGroup):
raise ValueError, "got %s" % type(value)
- j = self._match(value)
+ j = self._search_value(value)
if j:
- j._updateArches(value)
+ j._update_arches(value)
else:
super(PackageRelation, self).append(value)
- def extend(self, value):
+ def extend(self, value, override_arches=None):
if isinstance(value, basestring):
value = [j.strip() for j in re.split(',', value.strip())]
elif not isinstance(value, (list, tuple)):
raise ValueError, "got %s" % type(value)
for i in value:
- self.append(i)
+ self.append(i, override_arches)
class PackageRelationGroup(list):
- def __init__(self, value = None):
- if value is not None:
- self.extend(value)
+ def __init__(self, value=None, override_arches=None):
+ if value:
+ self.extend(value, override_arches)
def __str__(self):
return ' | '.join([str(i) for i in self])
- def _match(self, value):
+ def _search_value(self, value):
for i, j in itertools.izip(self, value):
if i.name != j.name or i.version != j.version:
return None
return self
- def _updateArches(self, value):
+ def _update_arches(self, value):
for i, j in itertools.izip(self, value):
if i.arches:
for arch in j.arches:
if arch not in i.arches:
i.arches.append(arch)
- def append(self, value):
+ def append(self, value, override_arches=None):
if isinstance(value, basestring):
- value = PackageRelationEntry(value)
+ value = PackageRelationEntry(value, override_arches)
elif not isinstance(value, PackageRelationEntry):
raise ValueError
super(PackageRelationGroup, self).append(value)
- def extend(self, value):
+ def extend(self, value, override_arches=None):
if isinstance(value, basestring):
value = [j.strip() for j in re.split('\|', value.strip())]
elif not isinstance(value, (list, tuple)):
raise ValueError
for i in value:
- self.append(i)
+ self.append(i, override_arches)
class PackageRelationEntry(object):
__slots__ = "name", "operator", "version", "arches"
@@ -282,12 +294,15 @@ class PackageRelationEntry(object):
def __str__(self):
return self.operators_text[self._op]
- def __init__(self, value = None):
- if isinstance(value, basestring):
- self.parse(value)
- else:
+ def __init__(self, value=None, override_arches=None):
+ if not isinstance(value, basestring):
raise ValueError
+ self.parse(value)
+
+ if override_arches:
+ self.arches = list(override_arches)
+
def __str__(self):
ret = [self.name]
if self.operator is not None and self.version is not None:
diff --git a/lib/python/debian_linux/gencontrol.py b/lib/python/debian_linux/gencontrol.py
index 60dfb4b..90e9db6 100644
--- a/lib/python/debian_linux/gencontrol.py
+++ b/lib/python/debian_linux/gencontrol.py
@@ -167,7 +167,7 @@ class Gencontrol(object):
pass
def do_arch_recurse(self, packages, makefile, arch, vars, makeflags, extra):
- for featureset in self.config['base', arch]['featuresets']:
+ for featureset in self.config['base', arch].get('featuresets', ()):
self.do_featureset(packages, makefile, arch, featureset, vars.copy(), makeflags.copy(), extra)
def do_featureset(self, packages, makefile, arch, featureset, vars, makeflags, extra):
@@ -207,9 +207,6 @@ class Gencontrol(object):
def do_flavour(self, packages, makefile, arch, featureset, flavour, vars, makeflags, extra):
config_base = self.config.merge('base', arch, featureset, flavour)
- vars['class'] = config_base['class']
- vars['longclass'] = config_base.get('longclass') or vars['class']
-
vars['localversion'] += '-' + flavour
self.do_flavour_setup(vars, makeflags, arch, featureset, flavour, extra)
diff --git a/patches/bugfix/all/0001-xfs-fix-freeing-memory-in-xfs_getbmap.patch b/patches/bugfix/all/0001-xfs-fix-freeing-memory-in-xfs_getbmap.patch
deleted file mode 100644
index 8242cf0..0000000
--- a/patches/bugfix/all/0001-xfs-fix-freeing-memory-in-xfs_getbmap.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 7747a0b0af5976ba3828796b4f7a7adc3bb76dbd Mon Sep 17 00:00:00 2001
-From: Felix Blyakher <felixb@sgi.com>
-Date: Thu, 11 Jun 2009 17:07:28 -0500
-Subject: [PATCH] xfs: fix freeing memory in xfs_getbmap()
-
-Regression from commit 28e211700a81b0a934b6c7a4b8e7dda843634d2f.
-Need to free temporary buffer allocated in xfs_getbmap().
-
-Signed-off-by: Felix Blyakher <felixb@sgi.com>
-Signed-off-by: Hedi Berriche <hedi@sgi.com>
-Reported-by: Justin Piszcz <jpiszcz@lucidpixels.com>
-Reviewed-by: Eric Sandeen <sandeen@sandeen.net>
-Reviewed-by: Christoph Hellwig <hch@lst.de>
----
- fs/xfs/xfs_bmap.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
-index 4b0f6ef..7928b99 100644
---- a/fs/xfs/xfs_bmap.c
-+++ b/fs/xfs/xfs_bmap.c
-@@ -6086,6 +6086,7 @@ xfs_getbmap(
- break;
- }
-
-+ kmem_free(out);
- return error;
- }
-
---
-1.6.3.1
-
diff --git a/patches/bugfix/all/add-missing-mtd-include.patch b/patches/bugfix/all/add-missing-mtd-include.patch
deleted file mode 100644
index 3cbe174..0000000
--- a/patches/bugfix/all/add-missing-mtd-include.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-Hi Martin,
-
-Le Saturday 04 July 2009 23:37:41 Martin Michlmayr, vous avez écrit :
-> I get the following Cobalt build failure with current git:
->
-> CC arch/mips/cobalt/mtd.o
-> cc1: warnings being treated as errors
-> In file included from arch/mips/cobalt/mtd.c:22:
-> include/linux/mtd/partitions.h:50: warning: ‘struct mtd_info’ declared
-> inside parameter list include/linux/mtd/partitions.h:50: warning: its scope
-> is only this definition or declaration, which is probably not what you want
-> include/linux/mtd/partitions.h:51: warning: ‘struct mtd_info’ declared
-> inside parameter list include/linux/mtd/partitions.h:61: warning: ‘struct
-> mtd_info’ declared inside parameter list include/linux/mtd/partitions.h:67:
-> warning: ‘struct mtd_info’ declared inside parameter list make[1]: ***
-> [arch/mips/cobalt/mtd.o] Error 1
-> make: *** [arch/mips/cobalt] Error 2
->
-> Does anyone know if there's a fix for this already?
-
-I also had that problem and did the following fix, which still applies to
-the mtd-2.6 tree, master branch.
---
-From: Florian Fainelli <florian@openwrt.org>
-Subject: [PATCH] Fix arch/mips/cobalt/mtd.c build failure
-
-This patch fixes a warning in include/linux/mtd/partitions which
-results in the following build failure on MIPS:
- CC arch/mips/cobalt/mtd.o
-cc1: warnings being treated as errors
-In file included from arch/mips/cobalt/mtd.c:22:
-include/linux/mtd/partitions.h:50: warning: 'struct mtd_info' declared inside parameter list
-include/linux/mtd/partitions.h:50: warning: its scope is only this definition or declaration, which is probably not what you want
-include/linux/mtd/partitions.h:51: warning: 'struct mtd_info' declared inside parameter list
-include/linux/mtd/partitions.h:61: warning: 'struct mtd_info' declared inside parameter list
-include/linux/mtd/partitions.h:67: warning: 'struct mtd_info' declared inside parameter list
-make[1]: *** [arch/mips/cobalt/mtd.o] Error 1
-make: *** [arch/mips/cobalt] Error 2
-
-Reported-by: Martin Michlmayr <tbm@cyrius.com>
-Signed-off-by: Florian Fainelli <florian@openwrt.org>
----
-diff --git a/include/linux/mtd/partitions.h b/include/linux/mtd/partitions.h
-index af6dcb9..c8eaf44 100644
---- a/include/linux/mtd/partitions.h
-+++ b/include/linux/mtd/partitions.h
-@@ -10,7 +10,7 @@
- #define MTD_PARTITIONS_H
-
- #include <linux/types.h>
--
-+#include <linux/mtd/mtd.h>
-
- /*
- * Partition definition structure:
diff --git a/patches/bugfix/all/cxusb-Select-all-required-frontend-and-tuner-modules.patch b/patches/bugfix/all/cxusb-Select-all-required-frontend-and-tuner-modules.patch
new file mode 100644
index 0000000..a1e184e
--- /dev/null
+++ b/patches/bugfix/all/cxusb-Select-all-required-frontend-and-tuner-modules.patch
@@ -0,0 +1,35 @@
+Subject: [PATCH] cxusb: Select all required frontend and tuner modules
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Thu, 11 Feb 2010 02:57:18 +0000
+
+cxusb uses the atbm8830 and lgs8gxx (not lgs8gl5) frontends and the
+max2165 tuner, so it needs to select them.
+
+Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+Cc: stable@kernel.org
+---
+ drivers/media/dvb/dvb-usb/Kconfig | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/media/dvb/dvb-usb/Kconfig b/drivers/media/dvb/dvb-usb/Kconfig
+index 1b24989..465295b 100644
+--- a/drivers/media/dvb/dvb-usb/Kconfig
++++ b/drivers/media/dvb/dvb-usb/Kconfig
+@@ -112,11 +112,13 @@ config DVB_USB_CXUSB
+ select DVB_MT352 if !DVB_FE_CUSTOMISE
+ select DVB_ZL10353 if !DVB_FE_CUSTOMISE
+ select DVB_DIB7000P if !DVB_FE_CUSTOMISE
+- select DVB_LGS8GL5 if !DVB_FE_CUSTOMISE
+ select DVB_TUNER_DIB0070 if !DVB_FE_CUSTOMISE
++ select DVB_ATBM8830 if !DVB_FE_CUSTOMISE
++ select DVB_LGS8GXX if !DVB_FE_CUSTOMISE
+ select MEDIA_TUNER_SIMPLE if !MEDIA_TUNER_CUSTOMISE
+ select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMISE
+ select MEDIA_TUNER_MXL5005S if !MEDIA_TUNER_CUSTOMISE
++ select MEDIA_TUNER_MAX2165 if !MEDIA_TUNER_CUSTOMISE
+ help
+ Say Y here to support the Conexant USB2.0 hybrid reference design.
+ Currently, only DVB and ATSC modes are supported, analog mode
+--
+1.6.6
+
diff --git a/patches/bugfix/all/drivers-scsi-qla1280-request-firmware-unlocked.patch b/patches/bugfix/all/drivers-scsi-qla1280-request-firmware-unlocked.patch
new file mode 100644
index 0000000..85d9bed
--- /dev/null
+++ b/patches/bugfix/all/drivers-scsi-qla1280-request-firmware-unlocked.patch
@@ -0,0 +1,35 @@
+commit 480c1e36532fc2783834d9582a11fbf1d493af42
+Author: Ben Hutchings <ben@decadent.org.uk>
+Date: Sun Aug 16 03:42:24 2009 +0100
+
+ qla1280: Drop host_lock while requesting firmware
+
+ request_firmware() may sleep and it appears to be safe to release the
+ spinlock here.
+
+diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c
+index 5defe5e..97cbf12 100644
+--- a/drivers/scsi/qla1280.c
++++ b/drivers/scsi/qla1280.c
+@@ -1642,8 +1642,10 @@ qla1280_load_firmware_pio(struct scsi_qla_host *ha)
+ uint16_t mb[MAILBOX_REGISTER_COUNT], i;
+ int err;
+
++ spin_unlock_irq(ha->host->host_lock);
+ err = request_firmware(&fw, ql1280_board_tbl[ha->devnum].fwname,
+ &ha->pdev->dev);
++ spin_lock_irq(ha->host->host_lock);
+ if (err) {
+ printk(KERN_ERR "Failed to load image \"%s\" err %d\n",
+ ql1280_board_tbl[ha->devnum].fwname, err);
+@@ -1701,8 +1703,10 @@ qla1280_load_firmware_dma(struct scsi_qla_host *ha)
+ return -ENOMEM;
+ #endif
+
++ spin_unlock_irq(ha->host->host_lock);
+ err = request_firmware(&fw, ql1280_board_tbl[ha->devnum].fwname,
+ &ha->pdev->dev);
++ spin_lock_irq(ha->host->host_lock);
+ if (err) {
+ printk(KERN_ERR "Failed to load image \"%s\" err %d\n",
+ ql1280_board_tbl[ha->devnum].fwname, err);
diff --git a/patches/bugfix/all/efifb_fix_v2.patch b/patches/bugfix/all/efifb_fix_v2.patch
new file mode 100644
index 0000000..7291cfd
--- /dev/null
+++ b/patches/bugfix/all/efifb_fix_v2.patch
@@ -0,0 +1,54 @@
+From: Marcin Slusarz <marcin.slusarz@gmail.com>
+Subject: [PATCH] efifb: fix framebuffer handoff
+
+Commit 4410f3910947dcea8672280b3adecd53cec4e85e
+(fbdev: add support for handoff from firmware to hw framebuffers)
+for unknown reason didn't add fb_destroy operation to efifb.
+Change aperture_size to match size passed to request_mem_region.
+
+See: http://bugzilla.kernel.org/show_bug.cgi?id=15151
+
+Reported-by: Alex Zhavnerchik <alex.vizor@gmail.com>
+Tested-by: Alex Zhavnerchik <alex.vizor@gmail.com>
+Cc: Dave Airlie <airlied@redhat.com>
+Cc: linux-fbdev@vger.kernel.org
+Cc: dri-devel@lists.sourceforge.net
+Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
+---
+ drivers/video/efifb.c | 11 ++++++++++-
+ 1 files changed, 10 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/video/efifb.c b/drivers/video/efifb.c
+index eb12182..d25df51 100644
+--- a/drivers/video/efifb.c
++++ b/drivers/video/efifb.c
+@@ -161,8 +161,17 @@ static int efifb_setcolreg(unsigned regno, unsigned red, unsigned green,
+ return 0;
+ }
+
++static void efifb_destroy(struct fb_info *info)
++{
++ if (info->screen_base)
++ iounmap(info->screen_base);
++ release_mem_region(info->aperture_base, info->aperture_size);
++ framebuffer_release(info);
++}
++
+ static struct fb_ops efifb_ops = {
+ .owner = THIS_MODULE,
++ .fb_destroy = efifb_destroy,
+ .fb_setcolreg = efifb_setcolreg,
+ .fb_fillrect = cfb_fillrect,
+ .fb_copyarea = cfb_copyarea,
+@@ -281,7 +290,7 @@ static int __init efifb_probe(struct platform_device *dev)
+ info->par = NULL;
+
+ info->aperture_base = efifb_fix.smem_start;
+- info->aperture_size = size_total;
++ info->aperture_size = size_remap;
+
+ info->screen_base = ioremap(efifb_fix.smem_start, efifb_fix.smem_len);
+ if (!info->screen_base) {
+--
+1.6.6
+
diff --git a/patches/bugfix/arm/export-flush_dcache_page.patch b/patches/bugfix/arm/export-flush_dcache_page.patch
deleted file mode 100644
index 99b64f2..0000000
--- a/patches/bugfix/arm/export-flush_dcache_page.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From: Russell King <rmk@dyn-67.arm.linux.org.uk>
-Date: Sun, 5 Jul 2009 09:50:37 +0000 (+0100)
-Subject: [ARM] export __cpu_flush_dcache_page
-X-Git-Url: http://ftp.arm.linux.org.uk/git/gitweb.cgi?p=linux-2.6-arm.git;a=commitdiff_plain;h=ba9b42e4ff5eb68f9c946378229d7e45299d7151
-
-[ARM] export __cpu_flush_dcache_page
-
-Now required for libsas:
-
- Kernel: arch/arm/boot/Image is ready
- Kernel: arch/arm/boot/zImage is ready
- Building modules, stage 2.
- MODPOST 1096 modules
-ERROR: "xscale_flush_kern_dcache_page" [drivers/scsi/libsas/libsas.ko] undefined!
-
-Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
----
-
-diff --git a/arch/arm/mm/proc-syms.c b/arch/arm/mm/proc-syms.c
-index 195e48e..ac5c800 100644
---- a/arch/arm/mm/proc-syms.c
-+++ b/arch/arm/mm/proc-syms.c
-@@ -27,6 +27,7 @@ EXPORT_SYMBOL(__cpuc_flush_kern_all);
- EXPORT_SYMBOL(__cpuc_flush_user_all);
- EXPORT_SYMBOL(__cpuc_flush_user_range);
- EXPORT_SYMBOL(__cpuc_coherent_kern_range);
-+EXPORT_SYMBOL(__cpuc_flush_dcache_page);
- EXPORT_SYMBOL(dmac_inv_range); /* because of flush_ioremap_region() */
- #else
- EXPORT_SYMBOL(cpu_cache);
diff --git a/patches/bugfix/fix-hifn_795X-divdi3.patch b/patches/bugfix/fix-hifn_795X-divdi3.patch
deleted file mode 100644
index 422059d..0000000
--- a/patches/bugfix/fix-hifn_795X-divdi3.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-On Tue, Feb 26, 2008 at 01:21:00PM +0100, Martin Michlmayr wrote:
-> With 2.6.25-rc3 and a config file with
->
-> CONFIG_CRYPTO_DEV_HIFN_795X=m
-> CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
->
-> I get the following build error on at least ARM and MIPS:
->
-> Building modules, stage 2.
-> MODPOST 759 modules
-> ERROR: "__divdi3" [drivers/crypto/hifn_795x.ko] undefined!
-
-Fix below.
-
-> Martin Michlmayr
-
-cu
-Adrian
-
-
-<-- snip -->
-
-
-Using ndelay() with a 64bit variable as parameter can result in build
-errors like the following on some 32bit systems when it results in a
-64bit division:
-
-<-- snip -->
-
- ...
- MODPOST 759 modules
-ERROR: "__divdi3" [drivers/crypto/hifn_795x.ko] undefined!
-
-<-- snip -->
-
-Reported by Martin Michlmayr.
-
-Signed-off-by: Adrian Bunk <bunk@kernel.org>
-
----
-
-40b45041ddc587c20b872a86a6a36952c28b02c7 diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c
-index 3110bf7..b1541c6 100644
---- a/drivers/crypto/hifn_795x.c
-+++ b/drivers/crypto/hifn_795x.c
-@@ -807,7 +807,7 @@ static int hifn_rng_data_present(struct hwrng *rng, int wait)
- return 1;
- if (!wait)
- return 0;
-- ndelay(nsec);
-+ ndelay((u32)nsec);
- return 1;
- }
-
diff --git a/patches/bugfix/ia64/ia64-Include-linux-personality.h-header-in-asm-fcntl.patch b/patches/bugfix/ia64/ia64-Include-linux-personality.h-header-in-asm-fcntl.patch
new file mode 100644
index 0000000..c8c6169
--- /dev/null
+++ b/patches/bugfix/ia64/ia64-Include-linux-personality.h-header-in-asm-fcntl.patch
@@ -0,0 +1,29 @@
+From 566d4fd4a07a92fa0023d29d2ad5477bad537288 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sat, 19 Dec 2009 14:51:09 +0000
+Subject: [PATCH] ia64: Include <linux/personality.h> header in <asm/fcntl.h>
+
+The definition of force_o_largefile() references personality, but this
+header does not include <linux/personality.h>. This happens to work
+for sys_open(), but may not for any other users. In particular, aufs2
+now uses this macro and so fails to build on ia64.
+---
+ arch/ia64/include/asm/fcntl.h | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/arch/ia64/include/asm/fcntl.h b/arch/ia64/include/asm/fcntl.h
+index 1dd275d..3cac8f9 100644
+--- a/arch/ia64/include/asm/fcntl.h
++++ b/arch/ia64/include/asm/fcntl.h
+@@ -5,6 +5,8 @@
+ * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co.
+ */
+
++#include <linux/personality.h>
++
+ #define force_o_largefile() \
+ (personality(current->personality) != PER_LINUX32)
+
+--
+1.6.5.7
+
diff --git a/patches/bugfix/mips/disable-werror.patch b/patches/bugfix/mips/disable-werror.patch
index 8bf19be..efe0664 100644
--- a/patches/bugfix/mips/disable-werror.patch
+++ b/patches/bugfix/mips/disable-werror.patch
@@ -8,8 +8,10 @@ arch/mips/kernel/../../../fs/binfmt_elf.c:1202: warning: ‘word’ may be used
--- a/arch/mips/kernel/Makefile 2009-02-16 11:25:13.000000000 +0000
+++ b/arch/mips/kernel/Makefile 2009-02-16 11:25:23.000000000 +0000
-@@ -89,4 +89,3 @@
+@@ -100,6 +100,5 @@
- obj-$(CONFIG_HAVE_STD_PC_SERIAL_PORT) += 8250-platform.o
+ obj-$(CONFIG_MIPS_CPUFREQ) += cpufreq/
-EXTRA_CFLAGS += -Werror
+
+ CPPFLAGS_vmlinux.lds := $(KBUILD_CFLAGS)
diff --git a/patches/bugfix/mips/fix-smp.patch b/patches/bugfix/mips/fix-smp.patch
deleted file mode 100644
index d1d6bb3..0000000
--- a/patches/bugfix/mips/fix-smp.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Commit fc03bc1715ca0ad4ccfe97aab16bcc9e7129c1a4 breaks compiling MIPS
-with SMP disabled. This patch fixes that.
-
-Signed-off-by: Alexander Clouter <alex@digriz.org.uk>
----
- arch/mips/include/asm/gic.h | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/arch/mips/include/asm/gic.h b/arch/mips/include/asm/gic.h
-index 10292e3..a8f5734 100644
---- a/arch/mips/include/asm/gic.h
-+++ b/arch/mips/include/asm/gic.h
-@@ -20,7 +20,7 @@
- #define GIC_TRIG_EDGE 1
- #define GIC_TRIG_LEVEL 0
-
--#if CONFIG_SMP
-+#ifdef CONFIG_SMP
- #define GIC_NUM_INTRS (24 + NR_CPUS * 2)
- #else
- #define GIC_NUM_INTRS 32
---
-1.6.3.3
diff --git a/patches/bugfix/powerpc/mm-mol.patch b/patches/bugfix/powerpc/mm-mol.patch
deleted file mode 100644
index c71c19e..0000000
--- a/patches/bugfix/powerpc/mm-mol.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
-index c6b1aa3..455fb38 100644
---- a/arch/powerpc/kernel/ppc_ksyms.c
-+++ b/arch/powerpc/kernel/ppc_ksyms.c
-@@ -189,6 +189,7 @@ EXPORT_SYMBOL(set_context);
- extern long mol_trampoline;
- EXPORT_SYMBOL(mol_trampoline); /* For MOL */
- EXPORT_SYMBOL(flush_hash_pages); /* For MOL */
-+EXPORT_SYMBOL(handle_mm_fault); /* For MOL */
- #ifdef CONFIG_SMP
- extern int mmu_hash_lock;
- EXPORT_SYMBOL(mmu_hash_lock); /* For MOL */
diff --git a/patches/bugfix/powerpc/oldworld-boot-fix.patch b/patches/bugfix/powerpc/oldworld-boot-fix.patch
deleted file mode 100644
index aa7e824..0000000
--- a/patches/bugfix/powerpc/oldworld-boot-fix.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-# Patch author: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-# Description: Fix oldworld initrd loading problems.
-# It looks like older OF "setprop" is bogus and isn't actually copying the
-# data but just taking a pointer. The LongTrail workaround also has that
-# problem as "property" will not copy the data. This fixes the workaround
-# and applies it to Apple OF 1.0.5.
-# Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-# Closes:
-# 375035: Kernel 2.6.16 attempts to access root device before running initramfs init
-# 366620: initramfs-tools: 2.6.16-1-powerpc fails to mount rootfs, 2.6.15-1-powerpc works
-#
-
-Index: linux-tika/arch/powerpc/kernel/prom_init.c
-===================================================================
---- linux-tika.orig/arch/powerpc/kernel/prom_init.c 2006-09-02 09:53:00.000000000 +1000
-+++ linux-tika/arch/powerpc/kernel/prom_init.c 2006-09-18 20:55:26.000000000 +1000
-@@ -102,7 +102,7 @@
- #endif
-
- #define OF_WA_CLAIM 1 /* do phys/virt claim separately, then map */
--#define OF_WA_LONGTRAIL 2 /* work around longtrail bugs */
-+#define OF_WA_SETPROP 2 /* work around setprop bugs */
-
- #define PROM_BUG() do { \
- prom_printf("kernel BUG at %s line 0x%x!\n", \
-@@ -472,7 +472,7 @@
- {
- char cmd[256], *p;
-
-- if (!(OF_WORKAROUNDS & OF_WA_LONGTRAIL))
-+ if (!(OF_WORKAROUNDS & OF_WA_SETPROP))
- return call_prom("setprop", 4, 1, node, ADDR(pname),
- (u32)(unsigned long) value, (u32) valuelen);
-
-@@ -482,6 +482,7 @@
- add_string(&p, nodename);
- add_string(&p, tohex((u32)(unsigned long) value));
- add_string(&p, tohex(valuelen));
-+ add_string(&p, "encode-bytes");
- add_string(&p, tohex(ADDR(pname)));
- add_string(&p, tohex(strlen(RELOC(pname))));
- add_string(&p, "property");
-@@ -1466,9 +1467,9 @@
- version[sizeof(version) - 1] = 0;
- /* XXX might need to add other versions here */
- if (strcmp(version, "Open Firmware, 1.0.5") == 0)
-- of_workarounds = OF_WA_CLAIM;
-+ of_workarounds = OF_WA_CLAIM | OF_WA_SETPROP;
- else if (strncmp(version, "FirmWorks,3.", 12) == 0) {
-- of_workarounds = OF_WA_CLAIM | OF_WA_LONGTRAIL;
-+ of_workarounds = OF_WA_CLAIM | OF_WA_SETPROP;
- call_prom("interpret", 1, 1, "dev /memory 0 to allow-reclaim");
- } else
- return;
diff --git a/patches/bugfix/sparc/arch-zimage-target.patch b/patches/bugfix/sparc/arch-zimage-target.patch
deleted file mode 100644
index ff86e41..0000000
--- a/patches/bugfix/sparc/arch-zimage-target.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -urpN linux-source-2.6.29.orig/arch/sparc/boot/Makefile linux-source-2.6.29/arch/sparc/boot/Makefile
---- linux-source-2.6.29.orig/arch/sparc/boot/Makefile 2009-03-23 17:12:14.000000000 -0600
-+++ linux-source-2.6.29/arch/sparc/boot/Makefile 2009-05-15 16:14:09.000000000 -0600
-@@ -79,6 +79,9 @@ $(obj)/image: vmlinux FORCE
- $(call if_changed,strip)
- @echo ' kernel: $@ is ready'
-
-+$(obj)/zImage: $(obj)/image
-+ $(call if_changed,gzip)
-+
- $(obj)/tftpboot.img: vmlinux $(obj)/piggyback_64 System.map $(ROOT_IMG) FORCE
- $(call if_changed,elftoaout)
- $(call if_changed,piggy)
-diff -urpN linux-source-2.6.29.orig/arch/sparc/Makefile linux-source-2.6.29/arch/sparc/Makefile
---- linux-source-2.6.29.orig/arch/sparc/Makefile 2009-03-23 17:12:14.000000000 -0600
-+++ linux-source-2.6.29/arch/sparc/Makefile 2009-05-15 16:14:44.000000000 -0600
-@@ -91,6 +91,8 @@ endif
-
- boot := arch/sparc/boot
-
-+all: zImage
-+
- image zImage tftpboot.img vmlinux.aout: vmlinux
- $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
-
diff --git a/patches/bugfix/sparc/drivers_net-broken.patch b/patches/bugfix/sparc/drivers_net-broken.patch
deleted file mode 100644
index a3a009d..0000000
--- a/patches/bugfix/sparc/drivers_net-broken.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
-index 8aa8dd0..f3b61ce 100644
---- a/drivers/net/Kconfig
-+++ b/drivers/net/Kconfig
-@@ -2484,7 +2484,7 @@ config MYRI10GE
-
- config NETXEN_NIC
- tristate "NetXen Multi port (1/10) Gigabit Ethernet NIC"
-- depends on PCI
-+ depends on PCI && (!SPARC32 || BROKEN)
- help
- This enables the support for NetXen's Gigabit Ethernet card.
-
diff --git a/patches/bugfix/x86/kvm-Check-CPL-level-during-privilege-instruction-emulation.patch b/patches/bugfix/x86/kvm-Check-CPL-level-during-privilege-instruction-emulation.patch
new file mode 100644
index 0000000..c5f31e1
--- /dev/null
+++ b/patches/bugfix/x86/kvm-Check-CPL-level-during-privilege-instruction-emulation.patch
@@ -0,0 +1,256 @@
+From 0a65a79a86558a413a417baddbb11062d10e69a6 Mon Sep 17 00:00:00 2001
+From: Gleb Natapov <gleb@redhat.com>
+Date: Wed, 10 Feb 2010 05:31:12 +0000
+Subject: [PATCH 4/4] Check CPL level during privilege instruction emulation.
+
+Add CPL checking in case emulator is tricked into emulating
+privilege instruction.
+
+[forward-ported by Ben Hutchings <ben@decadent.org.uk>]
+Signed-off-by: Gleb Natapov <gleb@redhat.com>
+---
+ arch/x86/kvm/emulate.c | 136 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 136 insertions(+), 0 deletions(-)
+
+diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
+index 4a6526f..836d3bc 100644
+--- a/arch/x86/kvm/emulate.c
++++ b/arch/x86/kvm/emulate.c
+@@ -2133,6 +2133,14 @@ special_insn:
+ }
+ break;
+ case 0xf4: /* hlt */
++ if (c->lock_prefix) {
++ kvm_queue_exception(ctxt->vcpu, UD_VECTOR);
++ goto done;
++ }
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
+ ctxt->vcpu->arch.halt_request = 1;
+ break;
+ case 0xf5: /* cmc */
+@@ -2208,6 +2216,11 @@ twobyte_insn:
+ if (c->modrm_mod != 3 || c->modrm_rm != 1)
+ goto cannot_emulate;
+
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
++
+ rc = kvm_fix_hypercall(ctxt->vcpu);
+ if (rc)
+ goto done;
+@@ -2218,6 +2231,16 @@ twobyte_insn:
+ c->dst.type = OP_NONE;
+ break;
+ case 2: /* lgdt */
++ if (c->lock_prefix) {
++ kvm_queue_exception(ctxt->vcpu, UD_VECTOR);
++ goto done;
++ }
++
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
++
+ rc = read_descriptor(ctxt, ops, c->src.ptr,
+ &size, &address, c->op_bytes);
+ if (rc)
+@@ -2230,6 +2253,10 @@ twobyte_insn:
+ if (c->modrm_mod == 3) {
+ switch (c->modrm_rm) {
+ case 1:
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
+ rc = kvm_fix_hypercall(ctxt->vcpu);
+ if (rc)
+ goto done;
+@@ -2238,6 +2265,16 @@ twobyte_insn:
+ goto cannot_emulate;
+ }
+ } else {
++ if (c->lock_prefix) {
++ kvm_queue_exception(ctxt->vcpu, UD_VECTOR);
++ goto done;
++ }
++
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
++
+ rc = read_descriptor(ctxt, ops, c->src.ptr,
+ &size, &address,
+ c->op_bytes);
+@@ -2253,11 +2290,26 @@ twobyte_insn:
+ c->dst.val = realmode_get_cr(ctxt->vcpu, 0);
+ break;
+ case 6: /* lmsw */
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
++
+ realmode_lmsw(ctxt->vcpu, (u16)c->src.val,
+ &ctxt->eflags);
+ c->dst.type = OP_NONE;
+ break;
+ case 7: /* invlpg*/
++ if (c->lock_prefix) {
++ kvm_queue_exception(ctxt->vcpu, UD_VECTOR);
++ goto done;
++ }
++
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
++
+ emulate_invlpg(ctxt->vcpu, memop);
+ /* Disable writeback. */
+ c->dst.type = OP_NONE;
+@@ -2273,23 +2325,67 @@ twobyte_insn:
+ goto writeback;
+ break;
+ case 0x06:
++ if (c->lock_prefix) {
++ if (ctxt->mode == X86EMUL_MODE_REAL ||
++ !(ctxt->vcpu->arch.cr0 & X86_CR0_PE))
++ kvm_queue_exception(ctxt->vcpu, UD_VECTOR);
++ else
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
++
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
++
+ emulate_clts(ctxt->vcpu);
+ c->dst.type = OP_NONE;
+ break;
+ case 0x08: /* invd */
+ case 0x09: /* wbinvd */
++ if (c->lock_prefix) {
++ kvm_queue_exception(ctxt->vcpu, UD_VECTOR);
++ goto done;
++ }
++
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
+ case 0x0d: /* GrpP (prefetch) */
+ case 0x18: /* Grp16 (prefetch/nop) */
+ c->dst.type = OP_NONE;
+ break;
+ case 0x20: /* mov cr, reg */
++ if (c->lock_prefix) {
++ kvm_queue_exception(ctxt->vcpu, UD_VECTOR);
++ goto done;
++ }
++
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
++
+ if (c->modrm_mod != 3)
+ goto cannot_emulate;
++
+ c->regs[c->modrm_rm] =
+ realmode_get_cr(ctxt->vcpu, c->modrm_reg);
+ c->dst.type = OP_NONE; /* no writeback */
+ break;
+ case 0x21: /* mov from dr to reg */
++ if (c->lock_prefix) {
++ kvm_queue_exception(ctxt->vcpu, UD_VECTOR);
++ goto done;
++ }
++
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
++
+ if (c->modrm_mod != 3)
+ goto cannot_emulate;
+ rc = emulator_get_dr(ctxt, c->modrm_reg, &c->regs[c->modrm_rm]);
+@@ -2298,6 +2394,16 @@ twobyte_insn:
+ c->dst.type = OP_NONE; /* no writeback */
+ break;
+ case 0x22: /* mov reg, cr */
++ if (c->lock_prefix) {
++ kvm_queue_exception(ctxt->vcpu, UD_VECTOR);
++ goto done;
++ }
++
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
++
+ if (c->modrm_mod != 3)
+ goto cannot_emulate;
+ realmode_set_cr(ctxt->vcpu,
+@@ -2305,6 +2411,16 @@ twobyte_insn:
+ c->dst.type = OP_NONE;
+ break;
+ case 0x23: /* mov from reg to dr */
++ if (c->lock_prefix) {
++ kvm_queue_exception(ctxt->vcpu, UD_VECTOR);
++ goto done;
++ }
++
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
++
+ if (c->modrm_mod != 3)
+ goto cannot_emulate;
+ rc = emulator_set_dr(ctxt, c->modrm_reg,
+@@ -2315,6 +2431,16 @@ twobyte_insn:
+ break;
+ case 0x30:
+ /* wrmsr */
++ if (c->lock_prefix) {
++ kvm_queue_exception(ctxt->vcpu, UD_VECTOR);
++ goto done;
++ }
++
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
++
+ msr_data = (u32)c->regs[VCPU_REGS_RAX]
+ | ((u64)c->regs[VCPU_REGS_RDX] << 32);
+ rc = kvm_set_msr(ctxt->vcpu, c->regs[VCPU_REGS_RCX], msr_data);
+@@ -2327,6 +2453,16 @@ twobyte_insn:
+ break;
+ case 0x32:
+ /* rdmsr */
++ if (c->lock_prefix) {
++ kvm_queue_exception(ctxt->vcpu, UD_VECTOR);
++ goto done;
++ }
++
++ if (kvm_x86_ops->get_cpl(ctxt->vcpu)) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ goto done;
++ }
++
+ rc = kvm_get_msr(ctxt->vcpu, c->regs[VCPU_REGS_RCX], &msr_data);
+ if (rc) {
+ kvm_inject_gp(ctxt->vcpu, 0);
+--
+1.6.6
+
diff --git a/patches/bugfix/x86/kvm-Check-IOPL-level-during-io-instruction-emulation.patch b/patches/bugfix/x86/kvm-Check-IOPL-level-during-io-instruction-emulation.patch
new file mode 100644
index 0000000..ae0654e
--- /dev/null
+++ b/patches/bugfix/x86/kvm-Check-IOPL-level-during-io-instruction-emulation.patch
@@ -0,0 +1,163 @@
+From 79270591de89ee777f2293a1d02f46f6f3db03b3 Mon Sep 17 00:00:00 2001
+From: Gleb Natapov <gleb@redhat.com>
+Date: Wed, 10 Feb 2010 05:22:09 +0000
+Subject: [PATCH 2/4] Check IOPL level during io instruction emulation.
+
+Make emulator check that vcpu is allowed to execute IN, INS, OUT,
+OUTS, CLI, STI.
+
+[forward-ported by Ben Hutchings <ben@decadent.org.uk>]
+Signed-off-by: Gleb Natapov <gleb@redhat.com>
+---
+ arch/x86/include/asm/kvm_host.h | 1 +
+ arch/x86/kvm/emulate.c | 18 ++++++++---
+ arch/x86/kvm/x86.c | 65 +++++++++++++++++++++++++++++++++++---
+ 3 files changed, 73 insertions(+), 11 deletions(-)
+
+diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
+index f483404..eb2531b 100644
+--- a/arch/x86/include/asm/kvm_host.h
++++ b/arch/x86/include/asm/kvm_host.h
+@@ -663,6 +663,7 @@ void kvm_disable_tdp(void);
+
+ int load_pdptrs(struct kvm_vcpu *vcpu, unsigned long cr3);
+ int complete_pio(struct kvm_vcpu *vcpu);
++bool kvm_check_iopl(struct kvm_vcpu *vcpu);
+
+ struct kvm_memory_slot *gfn_to_memslot_unaliased(struct kvm *kvm, gfn_t gfn);
+
+diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
+index 8f159f7..91f0eed 100644
+--- a/arch/x86/kvm/emulate.c
++++ b/arch/x86/kvm/emulate.c
+@@ -2098,13 +2098,21 @@ special_insn:
+ c->dst.type = OP_NONE; /* Disable writeback. */
+ break;
+ case 0xfa: /* cli */
+- ctxt->eflags &= ~X86_EFLAGS_IF;
+- c->dst.type = OP_NONE; /* Disable writeback. */
++ if (kvm_check_iopl(ctxt->vcpu))
++ kvm_inject_gp(ctxt->vcpu, 0);
++ else {
++ ctxt->eflags &= ~X86_EFLAGS_IF;
++ c->dst.type = OP_NONE; /* Disable writeback. */
++ }
+ break;
+ case 0xfb: /* sti */
+- toggle_interruptibility(ctxt, X86_SHADOW_INT_STI);
+- ctxt->eflags |= X86_EFLAGS_IF;
+- c->dst.type = OP_NONE; /* Disable writeback. */
++ if (kvm_check_iopl(ctxt->vcpu))
++ kvm_inject_gp(ctxt->vcpu, 0);
++ else {
++ toggle_interruptibility(ctxt, X86_SHADOW_INT_STI);
++ ctxt->eflags |= X86_EFLAGS_IF;
++ c->dst.type = OP_NONE; /* Disable writeback. */
++ }
+ break;
+ case 0xfc: /* cld */
+ ctxt->eflags &= ~EFLG_DF;
+diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
+index 012dd8b..06f1b69 100644
+--- a/arch/x86/kvm/x86.c
++++ b/arch/x86/kvm/x86.c
+@@ -3075,10 +3075,59 @@ static int pio_string_write(struct kvm_vcpu *vcpu)
+ return r;
+ }
+
++bool kvm_check_iopl(struct kvm_vcpu *vcpu)
++{
++ int iopl;
++ if (!(vcpu->arch.cr0 & X86_CR0_PE))
++ return false;
++ if (kvm_x86_ops->get_rflags(vcpu) & X86_EFLAGS_VM)
++ return true;
++ iopl = (kvm_x86_ops->get_rflags(vcpu) & X86_EFLAGS_IOPL) >> IOPL_SHIFT;
++ return kvm_x86_ops->get_cpl(vcpu) > iopl;
++}
++
++bool kvm_check_io_port_access_allowed(struct kvm_vcpu *vcpu, u16 port, u16 len)
++{
++ struct kvm_segment tr_seg;
++ int r;
++ u16 io_bitmap_ptr;
++ u8 perm, bit_idx = port & 0x7;
++ unsigned mask = (1 << len) - 1;
++
++ kvm_get_segment(vcpu, &tr_seg, VCPU_SREG_TR);
++ if (tr_seg.unusable)
++ return false;
++ if (tr_seg.limit < 103)
++ return false;
++ r = kvm_read_guest_virt_system(tr_seg.base + 102, &io_bitmap_ptr, 2,
++ vcpu, NULL);
++ if (r != X86EMUL_CONTINUE)
++ return false;
++ if (io_bitmap_ptr + port/8 >= tr_seg.limit)
++ return false;
++ r = kvm_read_guest_virt_system(tr_seg.base + io_bitmap_ptr + port/8,
++ &perm, 1, vcpu, NULL);
++ if (r != X86EMUL_CONTINUE)
++ return false;
++ if ((perm >> bit_idx) & mask)
++ return false;
++ return true;
++}
++
+ int kvm_emulate_pio(struct kvm_vcpu *vcpu, int in, int size, unsigned port)
+ {
+ unsigned long val;
+
++ trace_kvm_pio(vcpu->run->io.direction == KVM_EXIT_IO_OUT, port,
++ size, 1);
++
++ if (kvm_check_iopl(vcpu)) {
++ if (!kvm_check_io_port_access_allowed(vcpu, port, size)) {
++ kvm_inject_gp(vcpu, 0);
++ return 1;
++ }
++ }
++
+ vcpu->run->exit_reason = KVM_EXIT_IO;
+ vcpu->run->io.direction = in ? KVM_EXIT_IO_IN : KVM_EXIT_IO_OUT;
+ vcpu->run->io.size = vcpu->arch.pio.size = size;
+@@ -3091,9 +3140,6 @@ int kvm_emulate_pio(struct kvm_vcpu *vcpu, struct kvm_run *run, int in,
+ vcpu->arch.pio.down = 0;
+ vcpu->arch.pio.rep = 0;
+
+- trace_kvm_pio(vcpu->run->io.direction == KVM_EXIT_IO_OUT, port,
+- size, 1);
+-
+ val = kvm_register_read(vcpu, VCPU_REGS_RAX);
+ memcpy(vcpu->arch.pio_data, &val, 4);
+
+@@ -3112,6 +3158,16 @@ int kvm_emulate_pio_string(struct kvm_vcpu *vcpu, struct kvm_run *run, int in,
+ unsigned now, in_page;
+ int ret = 0;
+
++ trace_kvm_pio(vcpu->run->io.direction == KVM_EXIT_IO_OUT, port,
++ size, 1);
++
++ if (kvm_check_iopl(vcpu)) {
++ if (!kvm_check_io_port_access_allowed(vcpu, port, size)) {
++ kvm_inject_gp(vcpu, 0);
++ return 1;
++ }
++ }
++
+ vcpu->run->exit_reason = KVM_EXIT_IO;
+ vcpu->run->io.direction = in ? KVM_EXIT_IO_IN : KVM_EXIT_IO_OUT;
+ vcpu->run->io.size = vcpu->arch.pio.size = size;
+@@ -3123,9 +3179,6 @@ int kvm_emulate_pio_string(struct kvm_vcpu *vcpu, struct kvm_run *run, int in,
+ vcpu->arch.pio.down = down;
+ vcpu->arch.pio.rep = rep;
+
+- trace_kvm_pio(vcpu->run->io.direction == KVM_EXIT_IO_OUT, port,
+- size, count);
+-
+ if (!count) {
+ kvm_x86_ops->skip_emulated_instruction(vcpu);
+ return 1;
+--
+1.6.6
+
diff --git a/patches/bugfix/x86/kvm-Fix-popf-emulation.patch b/patches/bugfix/x86/kvm-Fix-popf-emulation.patch
new file mode 100644
index 0000000..c7dae96
--- /dev/null
+++ b/patches/bugfix/x86/kvm-Fix-popf-emulation.patch
@@ -0,0 +1,102 @@
+From 7c17b3a2cd6787ef025762655827a9afe8c88d6b Mon Sep 17 00:00:00 2001
+From: Gleb Natapov <gleb@redhat.com>
+Date: Wed, 10 Feb 2010 05:26:23 +0000
+Subject: [PATCH 3/4] Fix popf emulation.
+
+POPF behaves differently depending on current CPU mode. Emulate correct
+logic to prevent guest from changing flags that it can't change
+otherwise.
+
+[forward-ported by Ben Hutchings <ben@decadent.org.uk>]
+Signed-off-by: Gleb Natapov <gleb@redhat.com>
+---
+ arch/x86/kvm/emulate.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 53 insertions(+), 1 deletions(-)
+
+diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
+index 91f0eed..4a6526f 100644
+--- a/arch/x86/kvm/emulate.c
++++ b/arch/x86/kvm/emulate.c
+@@ -324,11 +324,18 @@ static u32 group2_table[] = {
+ };
+
+ /* EFLAGS bit definitions. */
++#define EFLG_ID (1<<21)
++#define EFLG_VIP (1<<20)
++#define EFLG_VIF (1<<19)
++#define EFLG_AC (1<<18)
+ #define EFLG_VM (1<<17)
+ #define EFLG_RF (1<<16)
++#define EFLG_IOPL (3<<12)
++#define EFLG_NT (1<<14)
+ #define EFLG_OF (1<<11)
+ #define EFLG_DF (1<<10)
+ #define EFLG_IF (1<<9)
++#define EFLG_TF (1<<8)
+ #define EFLG_SF (1<<7)
+ #define EFLG_ZF (1<<6)
+ #define EFLG_AF (1<<4)
+@@ -1189,6 +1196,48 @@ static int emulate_pop(struct x86_emulate_ctxt *ctxt,
+ return rc;
+ }
+
++static int emulate_popf(struct x86_emulate_ctxt *ctxt,
++ struct x86_emulate_ops *ops,
++ void *dest, int len)
++{
++ struct decode_cache *c = &ctxt->decode;
++ int rc;
++ unsigned long val, change_mask;
++ int iopl = (ctxt->eflags & X86_EFLAGS_IOPL) >> IOPL_SHIFT;
++ int cpl = kvm_x86_ops->get_cpl(ctxt->vcpu);
++
++ rc = ops->read_emulated(register_address(c, ss_base(ctxt),
++ c->regs[VCPU_REGS_RSP]),
++ &val, c->src.bytes, ctxt->vcpu);
++ if (rc != X86EMUL_CONTINUE)
++ return rc;
++
++ register_address_increment(c, &c->regs[VCPU_REGS_RSP], c->src.bytes);
++
++ change_mask = EFLG_CF | EFLG_PF | EFLG_AF | EFLG_ZF | EFLG_SF | EFLG_OF
++ | EFLG_TF | EFLG_DF | EFLG_NT | EFLG_RF | EFLG_AC | EFLG_ID;
++
++ if (ctxt->vcpu->arch.cr0 & X86_CR0_PE) {
++ if (cpl == 0)
++ change_mask |= EFLG_IOPL;
++ if (cpl <= iopl)
++ change_mask |= EFLG_IF;
++ } else if (ctxt->eflags & EFLG_VM) {
++ if (iopl < 3) {
++ kvm_inject_gp(ctxt->vcpu, 0);
++ return X86EMUL_PROPAGATE_FAULT;
++ }
++ change_mask |= EFLG_IF;
++ }
++ else /* real mode */
++ change_mask |= (EFLG_IOPL | EFLG_IF);
++
++ *(unsigned long*)dest =
++ (ctxt->eflags & ~change_mask) | (val & change_mask);
++
++ return rc;
++}
++
+ static inline int emulate_grp1a(struct x86_emulate_ctxt *ctxt,
+ struct x86_emulate_ops *ops)
+ {
+@@ -1913,7 +1962,10 @@ special_insn:
+ c->dst.type = OP_REG;
+ c->dst.ptr = (unsigned long *) &ctxt->eflags;
+ c->dst.bytes = c->op_bytes;
+- goto pop_instruction;
++ rc = emulate_popf(ctxt, ops, &c->dst.val, c->op_bytes);
++ if (rc != X86EMUL_CONTINUE)
++ goto done;
++ break;
+ case 0xa0 ... 0xa1: /* mov */
+ c->dst.ptr = (unsigned long *)&c->regs[VCPU_REGS_RAX];
+ c->dst.val = c->src.val;
+--
+1.6.6
+
diff --git a/patches/bugfix/x86/kvm-fix-memory-access-during-x86-emulation.patch b/patches/bugfix/x86/kvm-fix-memory-access-during-x86-emulation.patch
new file mode 100644
index 0000000..4fcad7f
--- /dev/null
+++ b/patches/bugfix/x86/kvm-fix-memory-access-during-x86-emulation.patch
@@ -0,0 +1,518 @@
+From 9f30f5c5cb976947efcfe47b6b039933ca23add7 Mon Sep 17 00:00:00 2001
+From: Gleb Natapov <gleb@redhat.com>
+Date: Wed, 10 Feb 2010 05:03:36 +0000
+Subject: [PATCH 1/4] Subject: KVM: fix memory access during x86 emulation.
+
+Currently when x86 emulator needs to access memory, page walk is done with
+broadest permission possible, so if emulated instruction was executed
+by userspace process it can still access kernel memory. Fix that by
+providing correct memory access to page walker during emulation.
+
+[forward-ported by Ben Hutchings <ben@decadent.org.uk]
+Signed-off-by: Gleb Natapov <gleb@redhat.com>
+---
+ arch/x86/include/asm/kvm_emulate.h | 14 +++-
+ arch/x86/include/asm/kvm_host.h | 7 ++-
+ arch/x86/kvm/emulate.c | 6 +-
+ arch/x86/kvm/mmu.c | 17 ++---
+ arch/x86/kvm/mmu.h | 6 ++
+ arch/x86/kvm/paging_tmpl.h | 11 ++-
+ arch/x86/kvm/x86.c | 130 ++++++++++++++++++++++++++++--------
+ 7 files changed, 143 insertions(+), 48 deletions(-)
+
+diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h
+index 7c18e12..1ff11e7 100644
+--- a/arch/x86/include/asm/kvm_emulate.h
++++ b/arch/x86/include/asm/kvm_emulate.h
+@@ -54,13 +54,23 @@ struct x86_emulate_ctxt;
+ struct x86_emulate_ops {
+ /*
+ * read_std: Read bytes of standard (non-emulated/special) memory.
+- * Used for instruction fetch, stack operations, and others.
++ * Used for descriptor reading.
+ * @addr: [IN ] Linear address from which to read.
+ * @val: [OUT] Value read from memory, zero-extended to 'u_long'.
+ * @bytes: [IN ] Number of bytes to read from memory.
+ */
+ int (*read_std)(unsigned long addr, void *val,
+- unsigned int bytes, struct kvm_vcpu *vcpu);
++ unsigned int bytes, struct kvm_vcpu *vcpu, u32 *error);
++
++ /*
++ * fetch: Read bytes of standard (non-emulated/special) memory.
++ * Used for instruction fetch.
++ * @addr: [IN ] Linear address from which to read.
++ * @val: [OUT] Value read from memory, zero-extended to 'u_long'.
++ * @bytes: [IN ] Number of bytes to read from memory.
++ */
++ int (*fetch)(unsigned long addr, void *val,
++ unsigned int bytes, struct kvm_vcpu *vcpu, u32 *error);
+
+ /*
+ * read_emulated: Read bytes from emulated/special memory area.
+diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
+index d759a1f..f483404 100644
+--- a/arch/x86/include/asm/kvm_host.h
++++ b/arch/x86/include/asm/kvm_host.h
+@@ -256,7 +256,8 @@ struct kvm_mmu {
+ void (*new_cr3)(struct kvm_vcpu *vcpu);
+ int (*page_fault)(struct kvm_vcpu *vcpu, gva_t gva, u32 err);
+ void (*free)(struct kvm_vcpu *vcpu);
+- gpa_t (*gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t gva);
++ gpa_t (*gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t gva, u32 access,
++ u32 *error);
+ void (*prefetch_page)(struct kvm_vcpu *vcpu,
+ struct kvm_mmu_page *page);
+ int (*sync_page)(struct kvm_vcpu *vcpu,
+@@ -645,6 +646,10 @@ void __kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu);
+ int kvm_mmu_load(struct kvm_vcpu *vcpu);
+ void kvm_mmu_unload(struct kvm_vcpu *vcpu);
+ void kvm_mmu_sync_roots(struct kvm_vcpu *vcpu);
++gpa_t kvm_mmu_gva_to_gpa_read(struct kvm_vcpu *vcpu, gva_t gva, u32 *error);
++gpa_t kvm_mmu_gva_to_gpa_fetch(struct kvm_vcpu *vcpu, gva_t gva, u32 *error);
++gpa_t kvm_mmu_gva_to_gpa_write(struct kvm_vcpu *vcpu, gva_t gva, u32 *error);
++gpa_t kvm_mmu_gva_to_gpa_system(struct kvm_vcpu *vcpu, gva_t gva, u32 *error);
+
+ int kvm_emulate_hypercall(struct kvm_vcpu *vcpu);
+
+diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
+index e02dbb6..8f159f7 100644
+--- a/arch/x86/kvm/emulate.c
++++ b/arch/x86/kvm/emulate.c
+@@ -597,7 +597,7 @@ static int do_fetch_insn_byte(struct x86_emulate_ctxt *ctxt,
+
+ if (linear < fc->start || linear >= fc->end) {
+ size = min(15UL, PAGE_SIZE - offset_in_page(linear));
+- rc = ops->read_std(linear, fc->data, size, ctxt->vcpu);
++ rc = ops->fetch(linear, fc->data, size, ctxt->vcpu, NULL);
+ if (rc)
+ return rc;
+ fc->start = linear;
+@@ -652,11 +652,11 @@ static int read_descriptor(struct x86_emulate_ctxt *ctxt,
+ op_bytes = 3;
+ *address = 0;
+ rc = ops->read_std((unsigned long)ptr, (unsigned long *)size, 2,
+- ctxt->vcpu);
++ ctxt->vcpu, NULL);
+ if (rc)
+ return rc;
+ rc = ops->read_std((unsigned long)ptr + 2, address, op_bytes,
+- ctxt->vcpu);
++ ctxt->vcpu, NULL);
+ return rc;
+ }
+
+diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
+index 3a01519..9983219 100644
+--- a/arch/x86/kvm/mmu.c
++++ b/arch/x86/kvm/mmu.c
+@@ -136,12 +136,6 @@ module_param(oos_shadow, bool, 0644);
+ #define PT64_PERM_MASK (PT_PRESENT_MASK | PT_WRITABLE_MASK | PT_USER_MASK \
+ | PT64_NX_MASK)
+
+-#define PFERR_PRESENT_MASK (1U << 0)
+-#define PFERR_WRITE_MASK (1U << 1)
+-#define PFERR_USER_MASK (1U << 2)
+-#define PFERR_RSVD_MASK (1U << 3)
+-#define PFERR_FETCH_MASK (1U << 4)
+-
+ #define PT_PDPE_LEVEL 3
+ #define PT_DIRECTORY_LEVEL 2
+ #define PT_PAGE_TABLE_LEVEL 1
+@@ -1639,7 +1633,7 @@ struct page *gva_to_page(struct kvm_vcpu *vcpu, gva_t gva)
+ {
+ struct page *page;
+
+- gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, gva);
++ gpa_t gpa = kvm_mmu_gva_to_gpa_read(vcpu, gva, NULL);
+
+ if (gpa == UNMAPPED_GVA)
+ return NULL;
+@@ -2162,8 +2156,11 @@ void kvm_mmu_sync_roots(struct kvm_vcpu *vcpu)
+ spin_unlock(&vcpu->kvm->mmu_lock);
+ }
+
+-static gpa_t nonpaging_gva_to_gpa(struct kvm_vcpu *vcpu, gva_t vaddr)
++static gpa_t nonpaging_gva_to_gpa(struct kvm_vcpu *vcpu, gva_t vaddr,
++ u32 access, u32 *error)
+ {
++ if (error)
++ *error = 0;
+ return vaddr;
+ }
+
+@@ -2747,7 +2744,7 @@ int kvm_mmu_unprotect_page_virt(struct kvm_vcpu *vcpu, gva_t gva)
+ if (tdp_enabled)
+ return 0;
+
+- gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, gva);
++ gpa = kvm_mmu_gva_to_gpa_read(vcpu, gva, NULL);
+
+ spin_lock(&vcpu->kvm->mmu_lock);
+ r = kvm_mmu_unprotect_page(vcpu->kvm, gpa >> PAGE_SHIFT);
+@@ -3245,7 +3242,7 @@ static void audit_mappings_page(struct kvm_vcpu *vcpu, u64 page_pte,
+ if (is_shadow_present_pte(ent) && !is_last_spte(ent, level))
+ audit_mappings_page(vcpu, ent, va, level - 1);
+ else {
+- gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, va);
++ gpa_t gpa = kvm_mmu_gva_to_gpa_system(vcpu, va, NULL);
+ gfn_t gfn = gpa >> PAGE_SHIFT;
+ pfn_t pfn = gfn_to_pfn(vcpu->kvm, gfn);
+ hpa_t hpa = (hpa_t)pfn << PAGE_SHIFT;
+diff --git a/arch/x86/kvm/mmu.h b/arch/x86/kvm/mmu.h
+index 61a1b38..bac7529 100644
+--- a/arch/x86/kvm/mmu.h
++++ b/arch/x86/kvm/mmu.h
+@@ -37,6 +37,12 @@
+ #define PT32_ROOT_LEVEL 2
+ #define PT32E_ROOT_LEVEL 3
+
++#define PFERR_PRESENT_MASK (1U << 0)
++#define PFERR_WRITE_MASK (1U << 1)
++#define PFERR_USER_MASK (1U << 2)
++#define PFERR_RSVD_MASK (1U << 3)
++#define PFERR_FETCH_MASK (1U << 4)
++
+ int kvm_mmu_get_spte_hierarchy(struct kvm_vcpu *vcpu, u64 addr, u64 sptes[4]);
+
+ static inline void kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu)
+diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
+index 5fa3325..0b7617b 100644
+--- a/arch/x86/kvm/paging_tmpl.h
++++ b/arch/x86/kvm/paging_tmpl.h
+@@ -491,18 +491,23 @@ static void FNAME(invlpg)(struct kvm_vcpu *vcpu, gva_t gva)
+ spin_unlock(&vcpu->kvm->mmu_lock);
+ }
+
+-static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t vaddr)
++static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t vaddr, u32 access,
++ u32 *error)
+ {
+ struct guest_walker walker;
+ gpa_t gpa = UNMAPPED_GVA;
+ int r;
+
+- r = FNAME(walk_addr)(&walker, vcpu, vaddr, 0, 0, 0);
++ r = FNAME(walk_addr)(&walker, vcpu, vaddr,
++ !!(access & PFERR_WRITE_MASK),
++ !!(access & PFERR_USER_MASK),
++ !!(access & PFERR_FETCH_MASK));
+
+ if (r) {
+ gpa = gfn_to_gpa(walker.gfn);
+ gpa |= vaddr & ~PAGE_MASK;
+- }
++ } else if(error)
++ *error = walker.error_code;
+
+ return gpa;
+ }
+diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
+index 145741c..012dd8b 100644
+--- a/arch/x86/kvm/x86.c
++++ b/arch/x86/kvm/x86.c
+@@ -2506,14 +2506,41 @@ static int vcpu_mmio_read(struct kvm_vcpu *vcpu, gpa_t addr, int len, void *v)
+ return kvm_io_bus_read(&vcpu->kvm->mmio_bus, addr, len, v);
+ }
+
+-static int kvm_read_guest_virt(gva_t addr, void *val, unsigned int bytes,
+- struct kvm_vcpu *vcpu)
++gpa_t kvm_mmu_gva_to_gpa_read(struct kvm_vcpu *vcpu, gva_t gva, u32 *error)
++{
++ u32 access = (kvm_x86_ops->get_cpl(vcpu) == 3) ? PFERR_USER_MASK : 0;
++ return vcpu->arch.mmu.gva_to_gpa(vcpu, gva, access, error);
++}
++
++ gpa_t kvm_mmu_gva_to_gpa_fetch(struct kvm_vcpu *vcpu, gva_t gva, u32 *error)
++{
++ u32 access = (kvm_x86_ops->get_cpl(vcpu) == 3) ? PFERR_USER_MASK : 0;
++ access |= PFERR_FETCH_MASK;
++ return vcpu->arch.mmu.gva_to_gpa(vcpu, gva, access, error);
++}
++
++gpa_t kvm_mmu_gva_to_gpa_write(struct kvm_vcpu *vcpu, gva_t gva, u32 *error)
++{
++ u32 access = (kvm_x86_ops->get_cpl(vcpu) == 3) ? PFERR_USER_MASK : 0;
++ access |= PFERR_WRITE_MASK;
++ return vcpu->arch.mmu.gva_to_gpa(vcpu, gva, access, error);
++}
++
++/* uses this to access any guet's mapped memory without checking CPL */
++gpa_t kvm_mmu_gva_to_gpa_system(struct kvm_vcpu *vcpu, gva_t gva, u32 *error)
++{
++ return vcpu->arch.mmu.gva_to_gpa(vcpu, gva, 0, error);
++}
++
++static int kvm_read_guest_virt_helper(gva_t addr, void *val, unsigned int bytes,
++ struct kvm_vcpu *vcpu, u32 access,
++ u32 *error)
+ {
+ void *data = val;
+ int r = X86EMUL_CONTINUE;
+
+ while (bytes) {
+- gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
++ gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr, access, error);
+ unsigned offset = addr & (PAGE_SIZE-1);
+ unsigned toread = min(bytes, (unsigned)PAGE_SIZE - offset);
+ int ret;
+@@ -2536,14 +2563,37 @@ out:
+ return r;
+ }
+
++/* used for instruction fetching */
++static int kvm_fetch_guest_virt(gva_t addr, void *val, unsigned int bytes,
++ struct kvm_vcpu *vcpu, u32 *error)
++{
++ u32 access = (kvm_x86_ops->get_cpl(vcpu) == 3) ? PFERR_USER_MASK : 0;
++ return kvm_read_guest_virt_helper(addr, val, bytes, vcpu,
++ access | PFERR_FETCH_MASK, error);
++}
++
++static int kvm_read_guest_virt(gva_t addr, void *val, unsigned int bytes,
++ struct kvm_vcpu *vcpu, u32 *error)
++{
++ u32 access = (kvm_x86_ops->get_cpl(vcpu) == 3) ? PFERR_USER_MASK : 0;
++ return kvm_read_guest_virt_helper(addr, val, bytes, vcpu, access,
++ error);
++}
++
++static int kvm_read_guest_virt_system(gva_t addr, void *val, unsigned int bytes,
++ struct kvm_vcpu *vcpu, u32 *error)
++{
++ return kvm_read_guest_virt_helper(addr, val, bytes, vcpu, 0, error);
++}
++
+ static int kvm_write_guest_virt(gva_t addr, void *val, unsigned int bytes,
+- struct kvm_vcpu *vcpu)
++ struct kvm_vcpu *vcpu, u32 *error)
+ {
+ void *data = val;
+ int r = X86EMUL_CONTINUE;
+
+ while (bytes) {
+- gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
++ gpa_t gpa = kvm_mmu_gva_to_gpa_write(vcpu, addr, error);
+ unsigned offset = addr & (PAGE_SIZE-1);
+ unsigned towrite = min(bytes, (unsigned)PAGE_SIZE - offset);
+ int ret;
+@@ -2573,6 +2623,7 @@ static int emulator_read_emulated(unsigned long addr,
+ struct kvm_vcpu *vcpu)
+ {
+ gpa_t gpa;
++ u32 error_code;
+
+ if (vcpu->mmio_read_completed) {
+ memcpy(val, vcpu->mmio_data, bytes);
+@@ -2582,17 +2633,20 @@ static int emulator_read_emulated(unsigned long addr,
+ return X86EMUL_CONTINUE;
+ }
+
+- gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
++ gpa = kvm_mmu_gva_to_gpa_read(vcpu, addr, &error_code);
++
++ if (gpa == UNMAPPED_GVA) {
++ kvm_inject_page_fault(vcpu, addr, error_code);
++ return X86EMUL_PROPAGATE_FAULT;
++ }
+
+ /* For APIC access vmexit */
+ if ((gpa & PAGE_MASK) == APIC_DEFAULT_PHYS_BASE)
+ goto mmio;
+
+- if (kvm_read_guest_virt(addr, val, bytes, vcpu)
++ if (kvm_read_guest_virt(addr, val, bytes, vcpu, NULL)
+ == X86EMUL_CONTINUE)
+ return X86EMUL_CONTINUE;
+- if (gpa == UNMAPPED_GVA)
+- return X86EMUL_PROPAGATE_FAULT;
+
+ mmio:
+ /*
+@@ -2631,11 +2685,12 @@ static int emulator_write_emulated_onepage(unsigned long addr,
+ struct kvm_vcpu *vcpu)
+ {
+ gpa_t gpa;
++ u32 error_code;
+
+- gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
++ gpa = kvm_mmu_gva_to_gpa_write(vcpu, addr, &error_code);
+
+ if (gpa == UNMAPPED_GVA) {
+- kvm_inject_page_fault(vcpu, addr, 2);
++ kvm_inject_page_fault(vcpu, addr, error_code);
+ return X86EMUL_PROPAGATE_FAULT;
+ }
+
+@@ -2699,7 +2754,7 @@ static int emulator_cmpxchg_emulated(unsigned long addr,
+ char *kaddr;
+ u64 val;
+
+- gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
++ gpa = kvm_mmu_gva_to_gpa_write(vcpu, addr, NULL);
+
+ if (gpa == UNMAPPED_GVA ||
+ (gpa & PAGE_MASK) == APIC_DEFAULT_PHYS_BASE)
+@@ -2778,7 +2833,7 @@ void kvm_report_emulation_failure(struct kvm_vcpu *vcpu, const char *context)
+
+ rip_linear = rip + get_segment_base(vcpu, VCPU_SREG_CS);
+
+- kvm_read_guest_virt(rip_linear, (void *)opcodes, 4, vcpu);
++ kvm_read_guest_virt(rip_linear, (void *)opcodes, 4, vcpu, NULL);
+
+ printk(KERN_ERR "emulation failed (%s) rip %lx %02x %02x %02x %02x\n",
+ context, rip, opcodes[0], opcodes[1], opcodes[2], opcodes[3]);
+@@ -2787,6 +2842,7 @@ EXPORT_SYMBOL_GPL(kvm_report_emulation_failure);
+
+ static struct x86_emulate_ops emulate_ops = {
+ .read_std = kvm_read_guest_virt,
++ .fetch = kvm_fetch_guest_virt,
+ .read_emulated = emulator_read_emulated,
+ .write_emulated = emulator_write_emulated,
+ .cmpxchg_emulated = emulator_cmpxchg_emulated,
+@@ -2922,12 +2978,17 @@ static int pio_copy_data(struct kvm_vcpu *vcpu)
+ gva_t q = vcpu->arch.pio.guest_gva;
+ unsigned bytes;
+ int ret;
++ u32 error_code;
+
+ bytes = vcpu->arch.pio.size * vcpu->arch.pio.cur_count;
+ if (vcpu->arch.pio.in)
+- ret = kvm_write_guest_virt(q, p, bytes, vcpu);
++ ret = kvm_write_guest_virt(q, p, bytes, vcpu, &error_code);
+ else
+- ret = kvm_read_guest_virt(q, p, bytes, vcpu);
++ ret = kvm_read_guest_virt(q, p, bytes, vcpu, &error_code);
++
++ if (ret == X86EMUL_PROPAGATE_FAULT)
++ kvm_inject_page_fault(vcpu, q, error_code);
++
+ return ret;
+ }
+
+@@ -2948,7 +3009,7 @@ int complete_pio(struct kvm_vcpu *vcpu)
+ if (io->in) {
+ r = pio_copy_data(vcpu);
+ if (r)
+- return r;
++ goto out;
+ }
+
+ delta = 1;
+@@ -2976,6 +3037,7 @@ int complete_pio(struct kvm_vcpu *vcpu)
+ }
+ }
+
++out:
+ io->count -= io->cur_count;
+ io->cur_count = 0;
+
+@@ -3095,10 +3157,8 @@ int kvm_emulate_pio_string(struct kvm_vcpu *vcpu, struct kvm_run *run, int in,
+ if (!vcpu->arch.pio.in) {
+ /* string PIO write */
+ ret = pio_copy_data(vcpu);
+- if (ret == X86EMUL_PROPAGATE_FAULT) {
+- kvm_inject_gp(vcpu, 0);
++ if (ret == X86EMUL_PROPAGATE_FAULT)
+ return 1;
+- }
+ if (ret == 0 && !pio_string_write(vcpu)) {
+ complete_pio(vcpu);
+ if (vcpu->arch.pio.count == 0)
+@@ -4078,7 +4138,7 @@ static int load_guest_segment_descriptor(struct kvm_vcpu *vcpu, u16 selector,
+ kvm_queue_exception_e(vcpu, GP_VECTOR, selector & 0xfffc);
+ return 1;
+ }
+- return kvm_read_guest_virt(dtable.base + index*8, seg_desc, sizeof(*seg_desc), vcpu);
++ return kvm_read_guest_virt(dtable.base + index*8, seg_desc, sizeof(*seg_desc), vcpu, NULL);
+ }
+
+ /* allowed just for 8 bytes segments */
+@@ -4092,15 +4152,27 @@ static int save_guest_segment_descriptor(struct kvm_vcpu *vcpu, u16 selector,
+
+ if (dtable.limit < index * 8 + 7)
+ return 1;
+- return kvm_write_guest_virt(dtable.base + index*8, seg_desc, sizeof(*seg_desc), vcpu);
++ return kvm_write_guest_virt(dtable.base + index*8, seg_desc, sizeof(*seg_desc), vcpu, NULL);
++}
++
++static gpa_t get_tss_base_addr_read(struct kvm_vcpu *vcpu,
++ struct desc_struct *seg_desc)
++{
++ u32 base_addr;
++
++ base_addr = seg_desc->base0;
++ base_addr |= (seg_desc->base1 << 16);
++ base_addr |= (seg_desc->base2 << 24);
++
++ return kvm_mmu_gva_to_gpa_read(vcpu, base_addr, NULL);
+ }
+
+-static gpa_t get_tss_base_addr(struct kvm_vcpu *vcpu,
++static gpa_t get_tss_base_addr_write(struct kvm_vcpu *vcpu,
+ struct desc_struct *seg_desc)
+ {
+ u32 base_addr = get_desc_base(seg_desc);
+
+- return vcpu->arch.mmu.gva_to_gpa(vcpu, base_addr);
++ return kvm_mmu_gva_to_gpa_write(vcpu, base_addr, NULL);
+ }
+
+ static u16 get_segment_selector(struct kvm_vcpu *vcpu, int seg)
+@@ -4303,7 +4375,7 @@ static int kvm_task_switch_16(struct kvm_vcpu *vcpu, u16 tss_selector,
+ sizeof tss_segment_16))
+ goto out;
+
+- if (kvm_read_guest(vcpu->kvm, get_tss_base_addr(vcpu, nseg_desc),
++ if (kvm_read_guest(vcpu->kvm, get_tss_base_addr_read(vcpu, nseg_desc),
+ &tss_segment_16, sizeof tss_segment_16))
+ goto out;
+
+@@ -4311,7 +4383,7 @@ static int kvm_task_switch_16(struct kvm_vcpu *vcpu, u16 tss_selector,
+ tss_segment_16.prev_task_link = old_tss_sel;
+
+ if (kvm_write_guest(vcpu->kvm,
+- get_tss_base_addr(vcpu, nseg_desc),
++ get_tss_base_addr_write(vcpu, nseg_desc),
+ &tss_segment_16.prev_task_link,
+ sizeof tss_segment_16.prev_task_link))
+ goto out;
+@@ -4342,7 +4414,7 @@ static int kvm_task_switch_32(struct kvm_vcpu *vcpu, u16 tss_selector,
+ sizeof tss_segment_32))
+ goto out;
+
+- if (kvm_read_guest(vcpu->kvm, get_tss_base_addr(vcpu, nseg_desc),
++ if (kvm_read_guest(vcpu->kvm, get_tss_base_addr_read(vcpu, nseg_desc),
+ &tss_segment_32, sizeof tss_segment_32))
+ goto out;
+
+@@ -4350,7 +4422,7 @@ static int kvm_task_switch_32(struct kvm_vcpu *vcpu, u16 tss_selector,
+ tss_segment_32.prev_task_link = old_tss_sel;
+
+ if (kvm_write_guest(vcpu->kvm,
+- get_tss_base_addr(vcpu, nseg_desc),
++ get_tss_base_addr_write(vcpu, nseg_desc),
+ &tss_segment_32.prev_task_link,
+ sizeof tss_segment_32.prev_task_link))
+ goto out;
+@@ -4373,7 +4445,7 @@ int kvm_task_switch(struct kvm_vcpu *vcpu, u16 tss_selector, int reason)
+ u32 old_tss_base = get_segment_base(vcpu, VCPU_SREG_TR);
+ u16 old_tss_sel = get_segment_selector(vcpu, VCPU_SREG_TR);
+
+- old_tss_base = vcpu->arch.mmu.gva_to_gpa(vcpu, old_tss_base);
++ old_tss_base = kvm_mmu_gva_to_gpa_write(vcpu, old_tss_base, NULL);
+
+ /* FIXME: Handle errors. Failure to read either TSS or their
+ * descriptors should generate a pagefault.
+@@ -4582,7 +4654,7 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu,
+
+ vcpu_load(vcpu);
+ down_read(&vcpu->kvm->slots_lock);
+- gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, vaddr);
++ gpa = kvm_mmu_gva_to_gpa_system(vcpu, vaddr, NULL);
+ up_read(&vcpu->kvm->slots_lock);
+ tr->physical_address = gpa;
+ tr->valid = gpa != UNMAPPED_GVA;
+--
+1.6.6
+
diff --git a/patches/debian/dfsg/drivers-gpu-drm-mga-disable.patch b/patches/debian/dfsg/drivers-gpu-drm-mga-disable.patch
deleted file mode 100644
index 4593a7f..0000000
--- a/patches/debian/dfsg/drivers-gpu-drm-mga-disable.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 9d67de9a0ec1c9eed5be2c733210e9759c063b12 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Sat, 18 Oct 2008 02:46:55 +0100
-Subject: [PATCH 16/24] mga: Mark as broken
-
----
- drivers/gpu/drm/Kconfig | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
-index 09ed655..853814c 100644
---- a/drivers/gpu/drm/Kconfig
-+++ b/drivers/gpu/drm/Kconfig
-@@ -81,6 +81,7 @@ endchoice
- config DRM_MGA
- tristate "Matrox g200/g400"
- depends on DRM
-+ depends on BROKEN
- help
- Choose this option if you have a Matrox G200, G400 or G450 graphics
- card. If M is selected, the module will be called mga. AGP
---
-1.6.1.3
-
diff --git a/patches/debian/dfsg/drivers-gpu-drm-r128-disable.patch b/patches/debian/dfsg/drivers-gpu-drm-r128-disable.patch
deleted file mode 100644
index 8e04010..0000000
--- a/patches/debian/dfsg/drivers-gpu-drm-r128-disable.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 2765959b3b6f56ada99e770c1001861a5de2d1b7 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Wed, 15 Oct 2008 00:40:17 +0100
-Subject: [PATCH 01/24] r128: Add #ifdef markers around firmware and mark broken
-
----
- drivers/gpu/drm/Kconfig | 1 +
- drivers/gpu/drm/r128/r128_cce.c | 2 ++
- 2 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
-index a8b33c2..725f244 100644
---- a/drivers/gpu/drm/Kconfig
-+++ b/drivers/gpu/drm/Kconfig
-@@ -26,6 +26,7 @@ config DRM_TDFX
- config DRM_R128
- tristate "ATI Rage 128"
- depends on DRM && PCI
-+ depends on BROKEN
- help
- Choose this option if you have an ATI Rage 128 graphics card. If M
- is selected, the module will be called r128. AGP support for
-diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c
-index c31afbd..04d8358 100644
---- a/drivers/gpu/drm/r128/r128_cce.c
-+++ b/drivers/gpu/drm/r128/r128_cce.c
-@@ -36,6 +36,7 @@
-
- #define R128_FIFO_DEBUG 0
-
-+#ifdef REMOVE_DFSG
- /* CCE microcode (from ATI) */
- static u32 r128_cce_microcode[] = {
- 0, 276838400, 0, 268449792, 2, 142, 2, 145, 0, 1076765731, 0,
-@@ -80,6 +81,7 @@ static u32 r128_cce_microcode[] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- };
-+#endif /* REMOVE_DFSG */
-
- static int R128_READ_PLL(struct drm_device * dev, int addr)
- {
---
-1.6.1.3
-
diff --git a/patches/debian/dfsg/drivers-gpu-drm-radeon-disable.patch b/patches/debian/dfsg/drivers-gpu-drm-radeon-disable.patch
deleted file mode 100644
index 8247ab2..0000000
--- a/patches/debian/dfsg/drivers-gpu-drm-radeon-disable.patch
+++ /dev/null
@@ -1,8 +0,0 @@
---- a/drivers/gpu/drm/Kconfig
-+++ b/drivers/gpu/drm/Kconfig
-@@ -35,4 +35,5 @@
- config DRM_RADEON
- tristate "ATI Radeon"
-+ depends on BROKEN
- depends on DRM && PCI
- select FB_CFB_FILLRECT
diff --git a/patches/debian/dfsg/drivers-infiniband-hw-ipath-iba7220-disable.patch b/patches/debian/dfsg/drivers-infiniband-hw-ipath-iba7220-disable.patch
new file mode 100644
index 0000000..41cf950
--- /dev/null
+++ b/patches/debian/dfsg/drivers-infiniband-hw-ipath-iba7220-disable.patch
@@ -0,0 +1,63 @@
+From 3b33fb5615618bb666f2dea6713b4e888e2eae7a Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Mon, 17 Aug 2009 01:18:50 +0100
+Subject: [PATCH 1/3] ib_ipath: Disable support for IBA7220
+
+IBA7220 requires non-free firmware which is about to be removed.
+---
+ drivers/infiniband/hw/ipath/Makefile | 8 ++++----
+ drivers/infiniband/hw/ipath/ipath_driver.c | 4 ++++
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/infiniband/hw/ipath/Makefile b/drivers/infiniband/hw/ipath/Makefile
+index bf94500..42d8d4c 100644
+--- a/drivers/infiniband/hw/ipath/Makefile
++++ b/drivers/infiniband/hw/ipath/Makefile
+@@ -29,10 +29,10 @@ ib_ipath-y := \
+ ipath_user_pages.o \
+ ipath_user_sdma.o \
+ ipath_verbs_mcast.o \
+- ipath_verbs.o \
+- ipath_iba7220.o \
+- ipath_sd7220.o \
+- ipath_sd7220_img.o
++ ipath_verbs.o
++
++# IBA7220 depends on firmware to be removed
++ib_ipath-$(CONFIG_BROKEN) += ipath_iba7220.o ipath_sd7220.o
+
+ ib_ipath-$(CONFIG_HT_IRQ) += ipath_iba6110.o
+ ib_ipath-$(CONFIG_PCI_MSI) += ipath_iba6120.o
+diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c
+index 04e88b6..20407a0 100644
+--- a/drivers/infiniband/hw/ipath/ipath_driver.c
++++ b/drivers/infiniband/hw/ipath/ipath_driver.c
+@@ -140,7 +140,9 @@ static int __devinit ipath_init_one(struct pci_dev *,
+ static const struct pci_device_id ipath_pci_tbl[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_PATHSCALE, PCI_DEVICE_ID_INFINIPATH_HT) },
+ { PCI_DEVICE(PCI_VENDOR_ID_PATHSCALE, PCI_DEVICE_ID_INFINIPATH_PE800) },
++#ifdef CONFIG_BROKEN
+ { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_INFINIPATH_7220) },
++#endif
+ { 0, }
+ };
+
+@@ -535,6 +537,7 @@ static int __devinit ipath_init_one(struct pci_dev *pdev,
+ "CONFIG_PCI_MSI is not enabled\n", ent->device);
+ return -ENODEV;
+ #endif
++#ifdef CONFIG_BROKEN
+ case PCI_DEVICE_ID_INFINIPATH_7220:
+ #ifndef CONFIG_PCI_MSI
+ ipath_dbg("CONFIG_PCI_MSI is not enabled, "
+@@ -542,6 +545,7 @@ static int __devinit ipath_init_one(struct pci_dev *pdev,
+ #endif
+ ipath_init_iba7220_funcs(dd);
+ break;
++#endif
+ default:
+ ipath_dev_err(dd, "Found unknown QLogic deviceid 0x%x, "
+ "failing\n", ent->device);
+--
+1.6.3.3
+
diff --git a/patches/debian/dfsg/drivers-media-dvb-dvb-usb-af9005-disable.patch b/patches/debian/dfsg/drivers-media-dvb-dvb-usb-af9005-disable.patch
new file mode 100644
index 0000000..4b80ad2
--- /dev/null
+++ b/patches/debian/dfsg/drivers-media-dvb-dvb-usb-af9005-disable.patch
@@ -0,0 +1,24 @@
+From 2a7d7ecc9fdcdaa0b82865078fd2a47e3b46da1b Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Mon, 17 Aug 2009 02:45:41 +0100
+Subject: [PATCH 1/2] dvb-usb-af9005: mark as broken
+
+---
+ drivers/media/dvb/dvb-usb/Kconfig | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/media/dvb/dvb-usb/Kconfig b/drivers/media/dvb/dvb-usb/Kconfig
+index 496c1a3..868e1cb 100644
+--- a/drivers/media/dvb/dvb-usb/Kconfig
++++ b/drivers/media/dvb/dvb-usb/Kconfig
+@@ -238,6 +238,7 @@ config DVB_USB_OPERA1
+
+ config DVB_USB_AF9005
+ tristate "Afatech AF9005 DVB-T USB1.1 support"
++ depends on BROKEN
+ depends on DVB_USB && EXPERIMENTAL
+ select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMISE
+ select MEDIA_TUNER_QT1010 if !MEDIA_TUNER_CUSTOMISE
+--
+1.6.3.3
+
diff --git a/patches/debian/dfsg/drivers-net-cxgb3-disable.patch b/patches/debian/dfsg/drivers-net-cxgb3-disable.patch
deleted file mode 100644
index 84ee3d5..0000000
--- a/patches/debian/dfsg/drivers-net-cxgb3-disable.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 6eb780fe50039fc81af6aaf8f91a38488a3cdae9 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Thu, 9 Jul 2009 00:20:59 +0100
-Subject: [PATCH 1/3] cxgb3: Add #ifdef markers around firmware and mark broken
-
----
- drivers/net/Kconfig | 1 +
- drivers/net/cxgb3/ael1002.c | 6 ++++++
- 2 files changed, 7 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
-index c155bd3..183479d 100644
---- a/drivers/net/Kconfig
-+++ b/drivers/net/Kconfig
-@@ -2511,6 +2511,7 @@ config CHELSIO_T3_DEPENDS
-
- config CHELSIO_T3
- tristate "Chelsio Communications T3 10Gb Ethernet support"
-+ depends on BROKEN
- depends on CHELSIO_T3_DEPENDS
- select FW_LOADER
- select MDIO
-diff --git a/drivers/net/cxgb3/ael1002.c b/drivers/net/cxgb3/ael1002.c
-index 9fe008e..d53cec4 100644
---- a/drivers/net/cxgb3/ael1002.c
-+++ b/drivers/net/cxgb3/ael1002.c
-@@ -304,6 +304,7 @@ static int ael2005_setup_sr_edc(struct cphy *phy)
- { MDIO_MMD_PMAPMD, 0xc04a, 0xffff, 0x5200 },
- { 0, 0, 0, 0 }
- };
-+#ifdef REMOVE_DFSG
- static u16 sr_edc[] = {
- 0xcc00, 0x2ff4,
- 0xcc01, 0x3cd4,
-@@ -577,6 +578,7 @@ static int ael2005_setup_sr_edc(struct cphy *phy)
- 0xcd0d, 0x1002,
- 0xcd0e, 0
- };
-+#endif /* REMOVE_DFSG */
- int i, err;
-
- err = set_phy_regs(phy, regs);
-@@ -604,6 +606,7 @@ static int ael2005_setup_twinax_edc(struct cphy *phy, int modtype)
- { MDIO_MMD_PMAPMD, 0xc015, 0xffff, 0xa000 },
- { 0, 0, 0, 0 }
- };
-+#ifdef REMOVE_DFSG
- static u16 twinax_edc[] = {
- 0xcc00, 0x4009,
- 0xcc01, 0x27ff,
-@@ -972,6 +975,7 @@ static int ael2005_setup_twinax_edc(struct cphy *phy, int modtype)
- 0xcd6c, 0x1002,
- 0xcd6d, 0
- };
-+#endif /* REMOVE_DFSG */
- int i, err;
-
- err = set_phy_regs(phy, regs);
-@@ -1202,6 +1206,7 @@ static int ael2020_setup_twinax_edc(struct cphy *phy, int modtype)
- { 0, 0, 0, 0 }
- };
-
-+#ifdef REMOVE_DFSG
- /* TWINAX EDC firmware */
- static u16 twinax_edc[] = {
- 0xd800, 0x4009,
-@@ -1600,6 +1605,7 @@ static int ael2020_setup_twinax_edc(struct cphy *phy, int modtype)
- 0xd989, 0x1002,
- 0xd98a, 0x0000,
- };
-+#endif /* REMOVE_DFSG */
- int i, err;
-
- /* set uC clock and activate it */
---
-1.6.3.3
-
diff --git a/patches/debian/dfsg/drivers-staging-me4000-disable.patch b/patches/debian/dfsg/drivers-staging-me4000-disable.patch
deleted file mode 100644
index f4c4f20..0000000
--- a/patches/debian/dfsg/drivers-staging-me4000-disable.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/drivers/staging/me4000/Kconfig b/drivers/staging/me4000/Kconfig
-index 5e6c9de..45d2ea9 100644
---- a/drivers/staging/me4000/Kconfig
-+++ b/drivers/staging/me4000/Kconfig
-@@ -1,6 +1,7 @@
- config ME4000
- tristate "Meilhaus ME-4000 support"
- default n
-+ depends on BROKEN
- depends on PCI
- help
- This driver supports the Meilhaus ME-4000 family of boards
diff --git a/patches/debian/dfsg/drivers-staging-otus-disable.patch b/patches/debian/dfsg/drivers-staging-otus-disable.patch
index a4d8058..b7dc8b1 100644
--- a/patches/debian/dfsg/drivers-staging-otus-disable.patch
+++ b/patches/debian/dfsg/drivers-staging-otus-disable.patch
@@ -1,11 +1,9 @@
-diff --git a/drivers/staging/otus/Kconfig b/drivers/staging/otus/Kconfig
-index d549d08..fef9785 100644
--- a/drivers/staging/otus/Kconfig
+++ b/drivers/staging/otus/Kconfig
@@ -1,5 +1,6 @@
config OTUS
tristate "Atheros OTUS 802.11n USB wireless support"
+ depends on BROKEN
- depends on USB && WLAN_80211 && MAC80211
+ depends on USB && WLAN && MAC80211
default N
---help---
diff --git a/patches/debian/dfsg/drivers-staging-rt2860-disable.patch b/patches/debian/dfsg/drivers-staging-rt2860-disable.patch
index e06d68f..3eecd6e 100644
--- a/patches/debian/dfsg/drivers-staging-rt2860-disable.patch
+++ b/patches/debian/dfsg/drivers-staging-rt2860-disable.patch
@@ -1,11 +1,12 @@
diff --git a/drivers/staging/rt2860/Kconfig b/drivers/staging/rt2860/Kconfig
-index 7f44e5e..9fb130d 100644
+index f9962b6..8d2da65 100644
--- a/drivers/staging/rt2860/Kconfig
+++ b/drivers/staging/rt2860/Kconfig
-@@ -1,5 +1,6 @@
+@@ -1,6 +1,7 @@
config RT2860
- tristate "Ralink 2860 wireless support"
+ tristate "Ralink 2860/3090 wireless support"
+ depends on PCI && X86 && WLAN
+ depends on BROKEN
- depends on PCI && X86 && WLAN_80211
+ select WIRELESS_EXT
+ select WEXT_PRIV
---help---
- This is an experimental driver for the Ralink 2860 wireless chip.
diff --git a/patches/debian/dfsg/drivers-staging-rt2870-disable.patch b/patches/debian/dfsg/drivers-staging-rt2870-disable.patch
index f8f7610..aa4f685 100644
--- a/patches/debian/dfsg/drivers-staging-rt2870-disable.patch
+++ b/patches/debian/dfsg/drivers-staging-rt2870-disable.patch
@@ -1,11 +1,12 @@
diff --git a/drivers/staging/rt2870/Kconfig b/drivers/staging/rt2870/Kconfig
-index 8398d97..cd4f0b6 100644
+index fd3ba3a..ce46b49 100644
--- a/drivers/staging/rt2870/Kconfig
+++ b/drivers/staging/rt2870/Kconfig
-@@ -1,5 +1,6 @@
+@@ -1,6 +1,7 @@
config RT2870
- tristate "Ralink 2870 wireless support"
+ tristate "Ralink 2870/3070 wireless support"
+ depends on USB && X86 && WLAN
+ depends on BROKEN
- depends on USB && X86 && WLAN_80211
+ select WIRELESS_EXT
+ select WEXT_PRIV
---help---
- This is an experimental driver for the Ralink 2870 wireless chip.
diff --git a/patches/debian/dfsg/drivers-staging-rt3070-disable.patch b/patches/debian/dfsg/drivers-staging-rt3070-disable.patch
deleted file mode 100644
index da7e1ac..0000000
--- a/patches/debian/dfsg/drivers-staging-rt3070-disable.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/drivers/staging/rt3070/Kconfig b/drivers/staging/rt3070/Kconfig
-index b37fb5d..e414305 100644
---- a/drivers/staging/rt3070/Kconfig
-+++ b/drivers/staging/rt3070/Kconfig
-@@ -1,5 +1,6 @@
- config RT3070
- tristate "Ralink 3070 wireless support"
-+ depends on BROKEN
- depends on USB && X86 && WLAN_80211
- ---help---
- This is an experimental driver for the Ralink 3070 wireless chip.
diff --git a/patches/debian/dfsg/drivers-staging-rtl8192su-disable.patch b/patches/debian/dfsg/drivers-staging-rtl8192su-disable.patch
index 656c83a..e4fd5b0 100644
--- a/patches/debian/dfsg/drivers-staging-rtl8192su-disable.patch
+++ b/patches/debian/dfsg/drivers-staging-rtl8192su-disable.patch
@@ -1,11 +1,11 @@
diff --git a/drivers/staging/rtl8192su/Kconfig b/drivers/staging/rtl8192su/Kconfig
-index 770f412..3b6b088 100644
+index 123fa6d..5e081b1 100644
--- a/drivers/staging/rtl8192su/Kconfig
+++ b/drivers/staging/rtl8192su/Kconfig
-@@ -1,5 +1,6 @@
- config RTL8192SU
+@@ -2,5 +2,6 @@ config RTL8192SU
tristate "RealTek RTL8192SU Wireless LAN NIC driver"
-+ depends on BROKEN
- depends on PCI
+ depends on PCI && WLAN && USB
depends on WIRELESS_EXT
++ depends on BROKEN
default N
+ ---help---
diff --git a/patches/debian/dfsg/drivers-staging-wlags49_h2-disable.patch b/patches/debian/dfsg/drivers-staging-wlags49_h2-disable.patch
new file mode 100644
index 0000000..89cbd48
--- /dev/null
+++ b/patches/debian/dfsg/drivers-staging-wlags49_h2-disable.patch
@@ -0,0 +1,12 @@
+diff --git a/drivers/staging/wlags49_h2/Kconfig b/drivers/staging/wlags49_h2/Kconfig
+index 92053fe..b99b1b1 100644
+--- a/drivers/staging/wlags49_h2/Kconfig
++++ b/drivers/staging/wlags49_h2/Kconfig
+@@ -1,6 +1,7 @@
+ config WLAGS49_H2
+ tristate "Agere Systems HERMES II Wireless PC Card Model 0110"
+ depends on WLAN_80211 && WIRELESS_EXT && PCMCIA
++ depends on BROKEN
+ select WEXT_SPY
+ ---help---
+ Driver for wireless cards using Agere's HERMES II chipset
diff --git a/patches/debian/dfsg/drivers-staging-wlags49_h25-disable.patch b/patches/debian/dfsg/drivers-staging-wlags49_h25-disable.patch
new file mode 100644
index 0000000..29fa8cf
--- /dev/null
+++ b/patches/debian/dfsg/drivers-staging-wlags49_h25-disable.patch
@@ -0,0 +1,12 @@
+diff --git a/drivers/staging/wlags49_h25/Kconfig b/drivers/staging/wlags49_h25/Kconfig
+index 304a8c9..24365a8 100644
+--- a/drivers/staging/wlags49_h25/Kconfig
++++ b/drivers/staging/wlags49_h25/Kconfig
+@@ -1,6 +1,7 @@
+ config WLAGS49_H25
+ tristate "Linksys HERMES II.5 WCF54G_Wireless-G_CompactFlash_Card"
+ depends on WLAN_80211 && WIRELESS_EXT && PCMCIA
++ depends on BROKEN
+ select WEXT_SPY
+ ---help---
+ Driver for wireless cards using Agere's HERMES II.5 chipset
diff --git a/patches/debian/dfsg/files-1 b/patches/debian/dfsg/files-1
index c6867fd..c96713c 100644
--- a/patches/debian/dfsg/files-1
+++ b/patches/debian/dfsg/files-1
@@ -18,9 +18,12 @@ rm firmware/ess
rm firmware/kaweth
rm firmware/keyspan
rm firmware/korg
+rm firmware/matrox
rm firmware/myricom
rm firmware/ositech
rm firmware/qlogic
+rm firmware/r128
+rm firmware/radeon
rm firmware/sb16
rm firmware/sun
rm firmware/tehuti
@@ -32,34 +35,37 @@ rm firmware/yamaha
rm arch/powerpc/sysdev/micropatch.c
-rm drivers/gpu/drm/mga/mga_ucode.h
+rm drivers/media/dvb/dvb-usb/af9005-script.h
-unifdef drivers/gpu/drm/r128/r128_cce.c -UREMOVE_DFSG
+unifdef drivers/media/dvb/frontends/lgs8gxx.c -UREMOVE_DFSG
-rm drivers/gpu/drm/radeon/*_microcode.h
+rm drivers/infiniband/hw/ipath/ipath_sd7220_img.c
rm drivers/net/appletalk/cops.c
rm drivers/net/appletalk/cops.h
rm drivers/net/appletalk/cops_ffdrv.h
rm drivers/net/appletalk/cops_ltdrv.h
-unifdef drivers/net/cxgb3/ael1002.c -UREMOVE_DFSG
-
-rm drivers/staging/me4000/me*_firmware.h
+unifdef drivers/net/r8169.c -UREMOVE_DFSG
rm drivers/staging/otus/hal/hp*fw*.c*
-rm drivers/staging/rt2860/common/firmware.h
-
-rm drivers/staging/rt2870/common/firmware.h
+rm drivers/staging/rt2860/common/firmware*.h
rm drivers/staging/rt3070/firmware.h
-rm drivers/staging/rtl8192su/r8192S_FwImgDTM.h
+rm drivers/staging/rt3090/firmware.h
+
+rm drivers/staging/rtl8192su/r8192SU_HWImg.c
-rm drivers/staging/slicoss/*ucode.h
+rm drivers/staging/rtl8192u/r819xU_firmware_img.c
rm drivers/staging/sxg/sxgphycode-1.2.h
+rm drivers/staging/vt6656/firmware.c
+
+rm drivers/staging/wlags49_h2/ap_*.c
+rm drivers/staging/wlags49_h2/sta_*.c
+
rm sound/pci/cs46xx/cs46xx_image.h
rm sound/pci/cs46xx/imgs
diff --git a/patches/debian/dfsg/firmware-cleanup.patch b/patches/debian/dfsg/firmware-cleanup.patch
index 6418e06..8a44a99 100644
--- a/patches/debian/dfsg/firmware-cleanup.patch
+++ b/patches/debian/dfsg/firmware-cleanup.patch
@@ -1,8 +1,8 @@
diff --git a/firmware/Makefile b/firmware/Makefile
-index 25200d1..c3a4fa8 100644
+index 1c00d05..3bf888d 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
-@@ -20,96 +20,11 @@ fw-external-y := $(subst ",,$(CONFIG_EXTRA_FIRMWARE))
+@@ -20,53 +20,8 @@ fw-external-y := $(subst ",,$(CONFIG_EXTRA_FIRMWARE))
# accurate. In the latter case it doesn't matter -- it'll use $(fw-shipped-all).
# But be aware that the config file might not be included at all.
@@ -18,24 +18,48 @@ index 25200d1..c3a4fa8 100644
- adaptec/starfire_tx.bin
fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin
-fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw
--fw-shipped-$(CONFIG_BNX2X) += bnx2x-e1-4.8.53.0.fw bnx2x-e1h-4.8.53.0.fw
--fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-4.6.17.fw \
-- bnx2/bnx2-rv2p-09-4.6.15.fw \
-- bnx2/bnx2-mips-06-4.6.16.fw \
-- bnx2/bnx2-rv2p-06-4.6.16.fw
+-fw-shipped-$(CONFIG_BNX2X) += bnx2x-e1-5.2.7.0.fw bnx2x-e1h-5.2.7.0.fw
+-fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-5.0.0.j3.fw \
+- bnx2/bnx2-rv2p-09-5.0.0.j3.fw \
+- bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw \
+- bnx2/bnx2-mips-06-5.0.0.j3.fw \
+- bnx2/bnx2-rv2p-06-5.0.0.j3.fw
-fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin
-fw-shipped-$(CONFIG_COMPUTONE) += intelliport2.bin
-fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
- cxgb3/t3c_psram-1.1.0.bin \
-- cxgb3/t3fw-7.4.0.bin
+- cxgb3/t3fw-7.4.0.bin \
+- cxgb3/ael2005_opt_edc.bin \
+- cxgb3/ael2005_twx_edc.bin \
+- cxgb3/ael2020_twx_edc.bin
+-fw-shipped-$(CONFIG_DRM_MGA) += matrox/g200_warp.fw matrox/g400_warp.fw
+-fw-shipped-$(CONFIG_DRM_R128) += r128/r128_cce.bin
+-fw-shipped-$(CONFIG_DRM_RADEON) += radeon/R100_cp.bin radeon/R200_cp.bin \
+- radeon/R300_cp.bin radeon/R420_cp.bin \
+- radeon/RS690_cp.bin radeon/RS600_cp.bin \
+- radeon/R520_cp.bin \
+- radeon/R600_pfp.bin radeon/R600_me.bin \
+- radeon/RV610_pfp.bin radeon/RV610_me.bin \
+- radeon/RV630_pfp.bin radeon/RV630_me.bin \
+- radeon/RV620_pfp.bin radeon/RV620_me.bin \
+- radeon/RV635_pfp.bin radeon/RV635_me.bin \
+- radeon/RV670_pfp.bin radeon/RV670_me.bin \
+- radeon/RS780_pfp.bin radeon/RS780_me.bin \
+- radeon/RV770_pfp.bin radeon/RV770_me.bin \
+- radeon/RV730_pfp.bin radeon/RV730_me.bin \
+- radeon/RV710_pfp.bin radeon/RV710_me.bin
fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
-fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
-fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
- e100/d102e_ucode.bin
-fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin
- fw-shipped-$(CONFIG_PCMCIA_PCNET) += cis/LA-PCM.cis
--fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis
--fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis
+ fw-shipped-$(CONFIG_PCMCIA_PCNET) += cis/LA-PCM.cis cis/PCMLM28.cis \
+ cis/DP83903.cis cis/NE2K.cis \
+ cis/tamarack.cis cis/PE-200.cis \
+@@ -77,66 +32,8 @@ fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \
+ cis/COMpad2.cis cis/COMpad4.cis \
+ cis/SW_555_SER.cis cis/SW_7xx_SER.cis \
+ cis/SW_8xx_SER.cis
-fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin
-fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \
- advansys/3550.bin advansys/38C0800.bin
diff --git a/patches/debian/dfsg/lgs8gxx-lgs8g75-disable.patch b/patches/debian/dfsg/lgs8gxx-lgs8g75-disable.patch
new file mode 100644
index 0000000..639dcd6
--- /dev/null
+++ b/patches/debian/dfsg/lgs8gxx-lgs8g75-disable.patch
@@ -0,0 +1,63 @@
+From 15e2cca5411a60ec9d936b36be1bac937f1bfeaa Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Tue, 3 Nov 2009 23:50:20 +0000
+Subject: [PATCH 18/24] lgs8gxx: mark lgs8g75 as broken and mark firmware for removal
+
+---
+ drivers/media/dvb/frontends/lgs8gxx.c | 11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/media/dvb/frontends/lgs8gxx.c b/drivers/media/dvb/frontends/lgs8gxx.c
+index eabcadc..a7446fd 100644
+--- a/drivers/media/dvb/frontends/lgs8gxx.c
++++ b/drivers/media/dvb/frontends/lgs8gxx.c
+@@ -46,6 +46,7 @@ module_param(fake_signal_str, int, 0644);
+ MODULE_PARM_DESC(fake_signal_str, "fake signal strength for LGS8913."
+ "Signal strength calculation is slow.(default:on).");
+
++#ifdef REMOVE_DFSG
+ static const u8 lgs8g75_initdat[] = {
+ 0x01, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+@@ -81,6 +82,7 @@ static const u8 lgs8g75_initdat[] = {
+ 0x65, 0xE0, 0x54, 0xFD, 0xF0, 0x22, 0x90, 0x80,
+ 0x65, 0xE0, 0x44, 0xC2, 0xF0, 0x22
+ };
++#endif
+
+ /* LGS8GXX internal helper functions */
+
+@@ -625,6 +627,7 @@ static int lgs8913_init(struct lgs8gxx_state *priv)
+ return 0;
+ }
+
++#ifdef CONFIG_BROKEN
+ static int lgs8g75_init_data(struct lgs8gxx_state *priv)
+ {
+ const u8 *p = lgs8g75_initdat;
+@@ -652,6 +655,7 @@ static int lgs8g75_init_data(struct lgs8gxx_state *priv)
+
+ return 0;
+ }
++#endif
+
+ static int lgs8gxx_init(struct dvb_frontend *fe)
+ {
+@@ -1089,7 +1093,14 @@ struct dvb_frontend *lgs8gxx_attach(const struct lgs8gxx_config *config,
+ priv->frontend.demodulator_priv = priv;
+
+ if (config->prod == LGS8GXX_PROD_LGS8G75)
++#ifdef CONFIG_BROKEN
+ lgs8g75_init_data(priv);
++#else
++ {
++ dprintk("lgs8g75 firmware not available\n");
++ goto error_out;
++ }
++#endif
+
+ return &priv->frontend;
+
+--
+1.6.5.2
+
diff --git a/patches/debian/dfsg/r8169-rtl8168d-1-2-disable.patch b/patches/debian/dfsg/r8169-rtl8168d-1-2-disable.patch
new file mode 100644
index 0000000..db38563
--- /dev/null
+++ b/patches/debian/dfsg/r8169-rtl8168d-1-2-disable.patch
@@ -0,0 +1,68 @@
+From 8ee9e3b6b1f41934a67567aaefae986ff517587e Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Tue, 3 Nov 2009 23:58:25 +0000
+Subject: [PATCH 21/24] r8169: mark firmware for removal and mark code using it as broken
+
+---
+ drivers/net/r8169.c | 8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
+index fa49356..3495ff6 100644
+--- a/drivers/net/r8169.c
++++ b/drivers/net/r8169.c
+@@ -1719,6 +1719,7 @@ static void rtl8168d_1_hw_phy_config(void __iomem *ioaddr)
+ { 0x05, 0x8332 },
+ { 0x06, 0x5561 }
+ };
++#ifdef REMOVE_DFSG
+ static const struct phy_reg phy_reg_init_2[] = {
+ { 0x1f, 0x0005 },
+ { 0x05, 0xffc2 },
+@@ -2074,6 +2075,7 @@ static void rtl8168d_1_hw_phy_config(void __iomem *ioaddr)
+ { 0x0d, 0xf880 },
+ { 0x1f, 0x0000 }
+ };
++#endif
+
+ rtl_phy_write(ioaddr, phy_reg_init_0, ARRAY_SIZE(phy_reg_init_0));
+
+@@ -2131,7 +2133,9 @@ static void rtl8168d_1_hw_phy_config(void __iomem *ioaddr)
+ mdio_plus_minus(ioaddr, 0x02, 0x0100, 0x0600);
+ mdio_plus_minus(ioaddr, 0x03, 0x0000, 0xe000);
+
++#ifdef CONFIG_BROKEN
+ rtl_phy_write(ioaddr, phy_reg_init_2, ARRAY_SIZE(phy_reg_init_2));
++#endif
+ }
+
+ static void rtl8168d_2_hw_phy_config(void __iomem *ioaddr)
+@@ -2161,6 +2165,7 @@ static void rtl8168d_2_hw_phy_config(void __iomem *ioaddr)
+ { 0x05, 0x8332 },
+ { 0x06, 0x5561 }
+ };
++#ifdef REMOVE_DFSG
+ static const struct phy_reg phy_reg_init_1[] = {
+ { 0x1f, 0x0005 },
+ { 0x05, 0xffc2 },
+@@ -2473,6 +2478,7 @@ static void rtl8168d_2_hw_phy_config(void __iomem *ioaddr)
+ { 0x0d, 0xf880 },
+ { 0x1f, 0x0000 }
+ };
++#endif
+
+ rtl_phy_write(ioaddr, phy_reg_init_0, ARRAY_SIZE(phy_reg_init_0));
+
+@@ -2526,7 +2532,9 @@ static void rtl8168d_2_hw_phy_config(void __iomem *ioaddr)
+ mdio_write(ioaddr, 0x1f, 0x0002);
+ mdio_patch(ioaddr, 0x0f, 0x0017);
+
++#ifdef CONFIG_BROKEN
+ rtl_phy_write(ioaddr, phy_reg_init_1, ARRAY_SIZE(phy_reg_init_1));
++#endif
+ }
+
+ static void rtl8168d_3_hw_phy_config(void __iomem *ioaddr)
+--
+1.6.5.2
+
diff --git a/patches/debian/dfsg/radeon-add-clarifying-comment-to-r600-blit.patch b/patches/debian/dfsg/radeon-add-clarifying-comment-to-r600-blit.patch
new file mode 100644
index 0000000..6d77267
--- /dev/null
+++ b/patches/debian/dfsg/radeon-add-clarifying-comment-to-r600-blit.patch
@@ -0,0 +1,42 @@
+From ef75f31784181c33ee7d42e361ad8d04947a2153 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexdeucher@gmail.com>
+Date: Mon, 2 Nov 2009 19:51:42 -0500
+Subject: [PATCH] drm/radeon/r600: add clarifying comment to r600 blit code
+
+R6xx+ cards need to use the 3D engine to blit data which requires
+quite a bit of hw state setup. Rather than pull the whole 3D driver
+(which normally generates the 3D state) into the DRM, we opt to use
+statically generated state tables. The regsiter state and shaders
+were hand generated to support blitting functionality. See the 3D
+driver or documentation for descriptions of the registers and
+shader instructions.
+
+Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
+---
+ drivers/gpu/drm/radeon/r600_blit_shaders.c | 10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/gpu/drm/radeon/r600_blit_shaders.c b/drivers/gpu/drm/radeon/r600_blit_shaders.c
+index d745e81..5d479cf 100644
+--- a/drivers/gpu/drm/radeon/r600_blit_shaders.c
++++ b/drivers/gpu/drm/radeon/r600_blit_shaders.c
+@@ -2,6 +2,16 @@
+ #include <linux/types.h>
+ #include <linux/kernel.h>
+
++/*
++ * R6xx+ cards need to use the 3D engine to blit data which requires
++ * quite a bit of hw state setup. Rather than pull the whole 3D driver
++ * (which normally generates the 3D state) into the DRM, we opt to use
++ * statically generated state tables. The regsiter state and shaders
++ * were hand generated to support blitting functionality. See the 3D
++ * driver or documentation for descriptions of the registers and
++ * shader instructions.
++ */
++
+ const u32 r6xx_default_state[] =
+ {
+ 0xc0002400,
+--
+1.5.6.3
+
diff --git a/patches/debian/scripts-kconfig-reportoldconfig.patch b/patches/debian/scripts-kconfig-reportoldconfig.patch
index 53179dc..89185f8 100644
--- a/patches/debian/scripts-kconfig-reportoldconfig.patch
+++ b/patches/debian/scripts-kconfig-reportoldconfig.patch
@@ -1,17 +1,17 @@
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
-index fa8c2dd..7936c57 100644
+index 999e8a7..3b5d4ba 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
-@@ -2,7 +2,7 @@
- # Kernel configuration targets
+@@ -3,7 +3,7 @@
# These targets are used from top-level makefile
--PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config
-+PHONY += oldconfig xconfig gconfig menuconfig config reportoldconfig silentoldconfig updateoldconfig update-po-config
+ PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config \
+- localmodconfig localyesconfig
++ localmodconfig localyesconfig reportoldconfig updateoldconfig
ifdef KBUILD_KCONFIG
Kconfig := $(KBUILD_KCONFIG)
-@@ -25,9 +25,15 @@ config: $(obj)/conf
+@@ -26,10 +26,16 @@ config: $(obj)/conf
oldconfig: $(obj)/conf
$< -o $(Kconfig)
@@ -19,14 +19,15 @@ index fa8c2dd..7936c57 100644
+ $< -R $(Kconfig)
+
silentoldconfig: $(obj)/conf
+ $(Q)mkdir -p include/generated
$< -s $(Kconfig)
+updateoldconfig: $(obj)/conf
+ $< -U $(Kconfig)
+
- # Create new linux.pot file
- # Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files
- # The symlink is used to repair a deficiency in arch/um
+ localmodconfig: $(obj)/streamline_config.pl $(obj)/conf
+ $(Q)perl $< $(srctree) $(Kconfig) > .tmp.config
+ $(Q)if [ -f .config ]; then \
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index 3e1057f..e526d00 100644
--- a/scripts/kconfig/conf.c
diff --git a/patches/debian/sysrq-mask.patch b/patches/debian/sysrq-mask.patch
new file mode 100644
index 0000000..6afc779
--- /dev/null
+++ b/patches/debian/sysrq-mask.patch
@@ -0,0 +1,32 @@
+diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c
+index 44203ff..964bab1 100644
+--- a/drivers/char/sysrq.c
++++ b/drivers/char/sysrq.c
+@@ -43,7 +43,7 @@
+ #include <asm/irq_regs.h>
+
+ /* Whether we react on sysrq keys or just ignore them */
+-int __read_mostly __sysrq_enabled = 1;
++int __read_mostly __sysrq_enabled = CONFIG_MAGIC_SYSRQ_DEFAULT_MASK;
+
+ static int __read_mostly sysrq_always_enabled;
+
+diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
+index 234ceb1..415a834 100644
+--- a/lib/Kconfig.debug
++++ b/lib/Kconfig.debug
+@@ -50,6 +50,14 @@ config MAGIC_SYSRQ
+ keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
+ unless you really know what this hack does.
+
++config MAGIC_SYSRQ_DEFAULT_MASK
++ hex "Default mask for Magic SysRq keys on the console"
++ depends on MAGIC_SYSRQ
++ default 1
++ help
++ Specifies the default mask for the allowed SysRq keys. This can be
++ used to disable several sensitive keys by default.
++
+ config STRIP_ASM_SYMS
+ bool "Strip assembler-generated symbols during link"
+ default n
diff --git a/patches/debian/version.patch b/patches/debian/version.patch
index 977cd83..2037982 100644
--- a/patches/debian/version.patch
+++ b/patches/debian/version.patch
@@ -41,7 +41,7 @@ diff --git a/scripts/mkcompile_h b/scripts/mkcompile_h
index 82d0af4..d8e0d05 100755
--- a/scripts/mkcompile_h
+++ b/scripts/mkcompile_h
-@@ -47,15 +47,35 @@ UTS_TRUNCATE="sed -e s/\(.\{1,$UTS_LEN\}\).*/\1/"
+@@ -47,19 +47,34 @@ UTS_TRUNCATE="sed -e s/\(.\{1,$UTS_LEN\}\).*/\1/"
echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
echo \#define LINUX_COMPILE_TIME \"`date +%T`\"
@@ -49,10 +49,15 @@ index 82d0af4..d8e0d05 100755
- echo \#define LINUX_COMPILE_HOST \"`hostname | $UTS_TRUNCATE`\"
- if [ -x /bin/dnsdomainname ]; then
-- echo \#define LINUX_COMPILE_DOMAIN \"`dnsdomainname | $UTS_TRUNCATE`\"
+- domain=`dnsdomainname 2> /dev/null`
- elif [ -x /bin/domainname ]; then
-- echo \#define LINUX_COMPILE_DOMAIN \"`domainname | $UTS_TRUNCATE`\"
+- domain=`domainname 2> /dev/null`
+- fi
+-
+- if [ -n "$domain" ]; then
+- echo \#define LINUX_COMPILE_DOMAIN \"`echo $domain | $UTS_TRUNCATE`\"
- else
+- echo \#define LINUX_COMPILE_DOMAIN
+ DISTRIBUTION=$(lsb_release -is 2>/dev/null)
+ DISTRIBUTION=${DISTRIBUTION:-Debian}
+ echo \#define LINUX_COMPILE_DISTRIBUTION \"$DISTRIBUTION\"
@@ -63,7 +68,6 @@ index 82d0af4..d8e0d05 100755
+ echo \#define LINUX_COMPILE_DISTRIBUTION_VERSION \"$DISTRIBUTION_VERSION\"
+ echo \#define LINUX_COMPILE_BY \"unknown\"
+ echo \#define LINUX_COMPILE_HOST \"$DISTRIBUTION\"
- echo \#define LINUX_COMPILE_DOMAIN
+ else
+ if [ -e version.$DISTRIBUTION ]; then
+ echo \#define LINUX_COMPILE_DISTRIBUTION_VERSION \"$(cut -d" " -f1 version.$DISTRIBUTION)\"
@@ -83,4 +87,4 @@ index 82d0af4..d8e0d05 100755
+ fi
fi
- echo \#define LINUX_COMPILER \"`LC_ALL=C LANG=C $CC -v 2>&1 | tail -n 1`\"
+ echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
diff --git a/patches/features/all/drivers-gpu-drm-mga-request_firmware.patch b/patches/features/all/drivers-gpu-drm-mga-request_firmware.patch
deleted file mode 100644
index 88f57d4..0000000
--- a/patches/features/all/drivers-gpu-drm-mga-request_firmware.patch
+++ /dev/null
@@ -1,277 +0,0 @@
-From: Ben Hutchings <ben@decadent.org.uk>
-Subject: mga: Use request_firmware() to load microcode
-
-Image format is IHEX, one record for each pipe in order (record
-addresses are ignored).
-
-Compile-tested only.
----
- drivers/gpu/drm/Kconfig | 2 +-
- drivers/gpu/drm/mga/mga_dma.c | 4 +-
- drivers/gpu/drm/mga/mga_drv.h | 1 -
- drivers/gpu/drm/mga/mga_warp.c | 180 +++++++++++++++++-----------------------
- include/drm/mga_drm.h | 2 +-
- 5 files changed, 82 insertions(+), 107 deletions(-)
-
-diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
-index 853814c..a61d10a 100644
---- a/drivers/gpu/drm/Kconfig
-+++ b/drivers/gpu/drm/Kconfig
-@@ -81,7 +81,7 @@ endchoice
- config DRM_MGA
- tristate "Matrox g200/g400"
- depends on DRM
-- depends on BROKEN
-+ select FW_LOADER
- help
- Choose this option if you have a Matrox G200, G400 or G450 graphics
- card. If M is selected, the module will be called mga. AGP
-diff --git a/drivers/gpu/drm/mga/mga_dma.c b/drivers/gpu/drm/mga/mga_dma.c
-index b49c5ff..7e0b106 100644
---- a/drivers/gpu/drm/mga/mga_dma.c
-+++ b/drivers/gpu/drm/mga/mga_dma.c
-@@ -447,7 +447,7 @@ static int mga_do_agp_dma_bootstrap(struct drm_device * dev,
- {
- drm_mga_private_t *const dev_priv =
- (drm_mga_private_t *) dev->dev_private;
-- unsigned int warp_size = mga_warp_microcode_size(dev_priv);
-+ unsigned int warp_size = MGA_WARP_UCODE_SIZE;
- int err;
- unsigned offset;
- const unsigned secondary_size = dma_bs->secondary_bin_count
-@@ -622,7 +622,7 @@ static int mga_do_pci_dma_bootstrap(struct drm_device * dev,
- {
- drm_mga_private_t *const dev_priv =
- (drm_mga_private_t *) dev->dev_private;
-- unsigned int warp_size = mga_warp_microcode_size(dev_priv);
-+ unsigned int warp_size = MGA_WARP_UCODE_SIZE;
- unsigned int primary_size;
- unsigned int bin_count;
- int err;
-diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h
-index 88257c2..9e40226 100644
---- a/drivers/gpu/drm/mga/mga_drv.h
-+++ b/drivers/gpu/drm/mga/mga_drv.h
-@@ -177,7 +177,6 @@ extern void mga_do_dma_wrap_end(drm_mga_private_t * dev_priv);
- extern int mga_freelist_put(struct drm_device * dev, struct drm_buf * buf);
-
- /* mga_warp.c */
--extern unsigned int mga_warp_microcode_size(const drm_mga_private_t * dev_priv);
- extern int mga_warp_install_microcode(drm_mga_private_t * dev_priv);
- extern int mga_warp_init(drm_mga_private_t * dev_priv);
-
-diff --git a/drivers/gpu/drm/mga/mga_warp.c b/drivers/gpu/drm/mga/mga_warp.c
-index 651b93c..9aad484 100644
---- a/drivers/gpu/drm/mga/mga_warp.c
-+++ b/drivers/gpu/drm/mga/mga_warp.c
-@@ -27,132 +27,108 @@
- * Gareth Hughes <gareth@valinux.com>
- */
-
-+#include <linux/firmware.h>
-+#include <linux/ihex.h>
-+#include <linux/platform_device.h>
-+
- #include "drmP.h"
- #include "drm.h"
- #include "mga_drm.h"
- #include "mga_drv.h"
--#include "mga_ucode.h"
-+
-+#define FIRMWARE_G200 "matrox/g200_warp.fw"
-+#define FIRMWARE_G400 "matrox/g400_warp.fw"
-+
-+MODULE_FIRMWARE(FIRMWARE_G200);
-+MODULE_FIRMWARE(FIRMWARE_G400);
-
- #define MGA_WARP_CODE_ALIGN 256 /* in bytes */
-
--#define WARP_UCODE_SIZE( which ) \
-- ((sizeof(which) / MGA_WARP_CODE_ALIGN + 1) * MGA_WARP_CODE_ALIGN)
--
--#define WARP_UCODE_INSTALL( which, where ) \
--do { \
-- DRM_DEBUG( " pcbase = 0x%08lx vcbase = %p\n", pcbase, vcbase );\
-- dev_priv->warp_pipe_phys[where] = pcbase; \
-- memcpy( vcbase, which, sizeof(which) ); \
-- pcbase += WARP_UCODE_SIZE( which ); \
-- vcbase += WARP_UCODE_SIZE( which ); \
--} while (0)
--
--static const unsigned int mga_warp_g400_microcode_size =
-- (WARP_UCODE_SIZE(warp_g400_tgz) +
-- WARP_UCODE_SIZE(warp_g400_tgza) +
-- WARP_UCODE_SIZE(warp_g400_tgzaf) +
-- WARP_UCODE_SIZE(warp_g400_tgzf) +
-- WARP_UCODE_SIZE(warp_g400_tgzs) +
-- WARP_UCODE_SIZE(warp_g400_tgzsa) +
-- WARP_UCODE_SIZE(warp_g400_tgzsaf) +
-- WARP_UCODE_SIZE(warp_g400_tgzsf) +
-- WARP_UCODE_SIZE(warp_g400_t2gz) +
-- WARP_UCODE_SIZE(warp_g400_t2gza) +
-- WARP_UCODE_SIZE(warp_g400_t2gzaf) +
-- WARP_UCODE_SIZE(warp_g400_t2gzf) +
-- WARP_UCODE_SIZE(warp_g400_t2gzs) +
-- WARP_UCODE_SIZE(warp_g400_t2gzsa) +
-- WARP_UCODE_SIZE(warp_g400_t2gzsaf) + WARP_UCODE_SIZE(warp_g400_t2gzsf));
--
--static const unsigned int mga_warp_g200_microcode_size =
-- (WARP_UCODE_SIZE(warp_g200_tgz) +
-- WARP_UCODE_SIZE(warp_g200_tgza) +
-- WARP_UCODE_SIZE(warp_g200_tgzaf) +
-- WARP_UCODE_SIZE(warp_g200_tgzf) +
-- WARP_UCODE_SIZE(warp_g200_tgzs) +
-- WARP_UCODE_SIZE(warp_g200_tgzsa) +
-- WARP_UCODE_SIZE(warp_g200_tgzsaf) + WARP_UCODE_SIZE(warp_g200_tgzsf));
--
--unsigned int mga_warp_microcode_size(const drm_mga_private_t * dev_priv)
-+#define WARP_UCODE_SIZE(size) ALIGN(size, MGA_WARP_CODE_ALIGN)
-+
-+int mga_warp_install_microcode(drm_mga_private_t * dev_priv)
- {
-+ unsigned char *vcbase = dev_priv->warp->handle;
-+ unsigned long pcbase = dev_priv->warp->offset;
-+ const char *firmware_name;
-+ struct platform_device *pdev;
-+ const struct firmware *fw = NULL;
-+ const struct ihex_binrec *rec;
-+ unsigned int size;
-+ int n_pipes, where;
-+ int rc = 0;
-+
- switch (dev_priv->chipset) {
- case MGA_CARD_TYPE_G400:
- case MGA_CARD_TYPE_G550:
-- return PAGE_ALIGN(mga_warp_g400_microcode_size);
-+ firmware_name = FIRMWARE_G400;
-+ n_pipes = MGA_MAX_G400_PIPES;
-+ break;
- case MGA_CARD_TYPE_G200:
-- return PAGE_ALIGN(mga_warp_g200_microcode_size);
-+ firmware_name = FIRMWARE_G200;
-+ n_pipes = MGA_MAX_G200_PIPES;
-+ break;
- default:
-- return 0;
-+ return -EINVAL;
- }
--}
--
--static int mga_warp_install_g400_microcode(drm_mga_private_t * dev_priv)
--{
-- unsigned char *vcbase = dev_priv->warp->handle;
-- unsigned long pcbase = dev_priv->warp->offset;
--
-- memset(dev_priv->warp_pipe_phys, 0, sizeof(dev_priv->warp_pipe_phys));
--
-- WARP_UCODE_INSTALL(warp_g400_tgz, MGA_WARP_TGZ);
-- WARP_UCODE_INSTALL(warp_g400_tgzf, MGA_WARP_TGZF);
-- WARP_UCODE_INSTALL(warp_g400_tgza, MGA_WARP_TGZA);
-- WARP_UCODE_INSTALL(warp_g400_tgzaf, MGA_WARP_TGZAF);
-- WARP_UCODE_INSTALL(warp_g400_tgzs, MGA_WARP_TGZS);
-- WARP_UCODE_INSTALL(warp_g400_tgzsf, MGA_WARP_TGZSF);
-- WARP_UCODE_INSTALL(warp_g400_tgzsa, MGA_WARP_TGZSA);
-- WARP_UCODE_INSTALL(warp_g400_tgzsaf, MGA_WARP_TGZSAF);
--
-- WARP_UCODE_INSTALL(warp_g400_t2gz, MGA_WARP_T2GZ);
-- WARP_UCODE_INSTALL(warp_g400_t2gzf, MGA_WARP_T2GZF);
-- WARP_UCODE_INSTALL(warp_g400_t2gza, MGA_WARP_T2GZA);
-- WARP_UCODE_INSTALL(warp_g400_t2gzaf, MGA_WARP_T2GZAF);
-- WARP_UCODE_INSTALL(warp_g400_t2gzs, MGA_WARP_T2GZS);
-- WARP_UCODE_INSTALL(warp_g400_t2gzsf, MGA_WARP_T2GZSF);
-- WARP_UCODE_INSTALL(warp_g400_t2gzsa, MGA_WARP_T2GZSA);
-- WARP_UCODE_INSTALL(warp_g400_t2gzsaf, MGA_WARP_T2GZSAF);
--
-- return 0;
--}
--
--static int mga_warp_install_g200_microcode(drm_mga_private_t * dev_priv)
--{
-- unsigned char *vcbase = dev_priv->warp->handle;
-- unsigned long pcbase = dev_priv->warp->offset;
--
-- memset(dev_priv->warp_pipe_phys, 0, sizeof(dev_priv->warp_pipe_phys));
--
-- WARP_UCODE_INSTALL(warp_g200_tgz, MGA_WARP_TGZ);
-- WARP_UCODE_INSTALL(warp_g200_tgzf, MGA_WARP_TGZF);
-- WARP_UCODE_INSTALL(warp_g200_tgza, MGA_WARP_TGZA);
-- WARP_UCODE_INSTALL(warp_g200_tgzaf, MGA_WARP_TGZAF);
-- WARP_UCODE_INSTALL(warp_g200_tgzs, MGA_WARP_TGZS);
-- WARP_UCODE_INSTALL(warp_g200_tgzsf, MGA_WARP_TGZSF);
-- WARP_UCODE_INSTALL(warp_g200_tgzsa, MGA_WARP_TGZSA);
-- WARP_UCODE_INSTALL(warp_g200_tgzsaf, MGA_WARP_TGZSAF);
-
-- return 0;
--}
-+ pdev = platform_device_register_simple("mga_warp", 0, NULL, 0);
-+ if (IS_ERR(pdev)) {
-+ DRM_ERROR("mga: Failed to register microcode\n");
-+ return PTR_ERR(pdev);
-+ }
-+ rc = request_ihex_firmware(&fw, firmware_name, &pdev->dev);
-+ platform_device_unregister(pdev);
-+ if (rc) {
-+ DRM_ERROR("mga: Failed to load microcode \"%s\"\n",
-+ firmware_name);
-+ return rc;
-+ }
-
--int mga_warp_install_microcode(drm_mga_private_t * dev_priv)
--{
-- const unsigned int size = mga_warp_microcode_size(dev_priv);
-+ size = 0;
-+ where = 0;
-+ for (rec = (const struct ihex_binrec *)fw->data;
-+ rec;
-+ rec = ihex_next_binrec(rec)) {
-+ size += WARP_UCODE_SIZE(be16_to_cpu(rec->len));
-+ where++;
-+ }
-
-+ if (where != n_pipes) {
-+ DRM_ERROR("mga: Invalid microcode \"%s\"\n", firmware_name);
-+ rc = -EINVAL;
-+ goto out;
-+ }
-+ size = PAGE_ALIGN(size);
- DRM_DEBUG("MGA ucode size = %d bytes\n", size);
- if (size > dev_priv->warp->size) {
- DRM_ERROR("microcode too large! (%u > %lu)\n",
- size, dev_priv->warp->size);
-- return -ENOMEM;
-+ rc = -ENOMEM;
-+ goto out;
- }
-
-- switch (dev_priv->chipset) {
-- case MGA_CARD_TYPE_G400:
-- case MGA_CARD_TYPE_G550:
-- return mga_warp_install_g400_microcode(dev_priv);
-- case MGA_CARD_TYPE_G200:
-- return mga_warp_install_g200_microcode(dev_priv);
-- default:
-- return -EINVAL;
-+ memset(dev_priv->warp_pipe_phys, 0, sizeof(dev_priv->warp_pipe_phys));
-+
-+ where = 0;
-+ for (rec = (const struct ihex_binrec *)fw->data;
-+ rec;
-+ rec = ihex_next_binrec(rec)) {
-+ unsigned int src_size, dst_size;
-+
-+ DRM_DEBUG(" pcbase = 0x%08lx vcbase = %p\n", pcbase, vcbase);
-+ dev_priv->warp_pipe_phys[where] = pcbase;
-+ src_size = be16_to_cpu(rec->len);
-+ dst_size = WARP_UCODE_SIZE(src_size);
-+ memcpy(vcbase, rec->data, src_size);
-+ pcbase += dst_size;
-+ vcbase += dst_size;
-+ where++;
- }
-+
-+out:
-+ release_firmware(fw);
-+ return rc;
- }
-
- #define WMISC_EXPECTED (MGA_WUCODECACHE_ENABLE | MGA_WMASTER_ENABLE)
diff --git a/patches/features/all/drivers-gpu-drm-r128-request_firmware.patch b/patches/features/all/drivers-gpu-drm-r128-request_firmware.patch
deleted file mode 100644
index 00f0d79..0000000
--- a/patches/features/all/drivers-gpu-drm-r128-request_firmware.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From 870bed4eea53fbaeb8f585fb9b89d23d9d8c2436 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Sat, 18 Oct 2008 02:27:57 +0100
-Subject: [PATCH 03/24] r128: Use request_firmware() to load CCE microcode
-
-Firmware blob looks like this:
- __be32 datah
- __be32 datal
-
-Compile-tested only.
----
- drivers/gpu/drm/Kconfig | 2 +-
- drivers/gpu/drm/r128/r128_cce.c | 54 ++++++++++++++++++++++++++++++++++----
- 2 files changed, 49 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
-index 725f244..e6f4401 100644
---- a/drivers/gpu/drm/Kconfig
-+++ b/drivers/gpu/drm/Kconfig
-@@ -26,7 +26,7 @@ config DRM_TDFX
- config DRM_R128
- tristate "ATI Rage 128"
- depends on DRM && PCI
-- depends on BROKEN
-+ select FW_LOADER
- help
- Choose this option if you have an ATI Rage 128 graphics card. If M
- is selected, the module will be called r128. AGP support for
-diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c
-index a9ee89a..63bed21 100644
---- a/drivers/gpu/drm/r128/r128_cce.c
-+++ b/drivers/gpu/drm/r128/r128_cce.c
-@@ -29,6 +29,9 @@
- * Gareth Hughes <gareth@valinux.com>
- */
-
-+#include <linux/firmware.h>
-+#include <linux/platform_device.h>
-+
- #include "drmP.h"
- #include "drm.h"
- #include "r128_drm.h"
-@@ -36,6 +39,9 @@
-
- #define R128_FIFO_DEBUG 0
-
-+#define FIRMWARE_NAME "r128/r128_cce.bin"
-+
-+MODULE_FIRMWARE(FIRMWARE_NAME);
-
- static int R128_READ_PLL(struct drm_device * dev, int addr)
- {
-@@ -132,20 +138,50 @@ static int r128_do_wait_for_idle(drm_r128_private_t * dev_priv)
- */
-
- /* Load the microcode for the CCE */
--static void r128_cce_load_microcode(drm_r128_private_t * dev_priv)
-+static int r128_cce_load_microcode(drm_r128_private_t *dev_priv)
- {
-- int i;
-+ struct platform_device *pdev;
-+ const struct firmware *fw;
-+ const __be32 *fw_data;
-+ int rc, i;
-
- DRM_DEBUG("\n");
-
-+ pdev = platform_device_register_simple("r128_cce", 0, NULL, 0);
-+ if (IS_ERR(pdev)) {
-+ printk(KERN_ERR "r128_cce: Failed to register firmware\n");
-+ return PTR_ERR(pdev);
-+ }
-+ rc = request_firmware(&fw, FIRMWARE_NAME, &pdev->dev);
-+ platform_device_unregister(pdev);
-+ if (rc) {
-+ printk(KERN_ERR "r128_cce: Failed to load firmware \"%s\"\n",
-+ FIRMWARE_NAME);
-+ return rc;
-+ }
-+
-+ if (fw->size != 256 * 8) {
-+ printk(KERN_ERR
-+ "r128_cce: Bogus length %zu in firmware \"%s\"\n",
-+ fw->size, FIRMWARE_NAME);
-+ rc = -EINVAL;
-+ goto out_release;
-+ }
-+
- r128_do_wait_for_idle(dev_priv);
-
-+ fw_data = (const __be32 *)fw->data;
- R128_WRITE(R128_PM4_MICROCODE_ADDR, 0);
- for (i = 0; i < 256; i++) {
-- R128_WRITE(R128_PM4_MICROCODE_DATAH, r128_cce_microcode[i * 2]);
-+ R128_WRITE(R128_PM4_MICROCODE_DATAH,
-+ be32_to_cpup(&fw_data[i * 2]));
- R128_WRITE(R128_PM4_MICROCODE_DATAL,
-- r128_cce_microcode[i * 2 + 1]);
-+ be32_to_cpup(&fw_data[i * 2 + 1]));
- }
-+
-+out_release:
-+ release_firmware(fw);
-+ return rc;
- }
-
- /* Flush any pending commands to the CCE. This should only be used just
-@@ -306,6 +342,7 @@ static void r128_cce_init_ring_buffer(struct drm_device * dev,
- static int r128_do_init_cce(struct drm_device * dev, drm_r128_init_t * init)
- {
- drm_r128_private_t *dev_priv;
-+ int rc;
-
- DRM_DEBUG("\n");
-
-@@ -532,13 +569,18 @@ static int r128_do_init_cce(struct drm_device * dev, drm_r128_init_t * init)
- #endif
-
- r128_cce_init_ring_buffer(dev, dev_priv);
-- r128_cce_load_microcode(dev_priv);
-+ rc = r128_cce_load_microcode(dev_priv);
-
- dev->dev_private = (void *)dev_priv;
-
- r128_do_engine_reset(dev);
-
-- return 0;
-+ if (rc) {
-+ DRM_ERROR("Failed to load firmware!\n");
-+ r128_do_cleanup_cce(dev);
-+ }
-+
-+ return rc;
- }
-
- int r128_do_cleanup_cce(struct drm_device * dev)
---
-1.6.1.3
-
diff --git a/patches/features/all/drivers-gpu-drm-radeon-request_firmware.patch b/patches/features/all/drivers-gpu-drm-radeon-request_firmware.patch
deleted file mode 100644
index 3a1bcdd..0000000
--- a/patches/features/all/drivers-gpu-drm-radeon-request_firmware.patch
+++ /dev/null
@@ -1,560 +0,0 @@
-From fd63ae3af6c8ab1eeb658b501db2a5a593cdd353 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Sun, 12 Apr 2009 04:56:11 +0100
-Subject: [PATCH] radeon: Use request_firmware() to load CP microcode
-
-Tested on Radeon 7500 (RV200) with and without firmware installed.
----
- drivers/gpu/drm/Kconfig | 2 +-
- drivers/gpu/drm/radeon/r600_cp.c | 252 +++++++++++++++--------------------
- drivers/gpu/drm/radeon/radeon_cp.c | 121 +++++++++++------
- drivers/gpu/drm/radeon/radeon_drv.h | 5 +
- 4 files changed, 188 insertions(+), 192 deletions(-)
-
-diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
-index b0414ee..fb97c8a 100644
---- a/drivers/gpu/drm/Kconfig
-+++ b/drivers/gpu/drm/Kconfig
-@@ -37,6 +37,6 @@ config DRM_R128
- config DRM_RADEON
- tristate "ATI Radeon"
-- depends on BROKEN
- depends on DRM && PCI
-+ select FW_LOADER
- select FB_CFB_FILLRECT
- select FB_CFB_COPYAREA
-diff --git a/drivers/gpu/drm/radeon/r600_cp.c b/drivers/gpu/drm/radeon/r600_cp.c
-index bc9d09d..4620b1b 100644
---- a/drivers/gpu/drm/radeon/r600_cp.c
-+++ b/drivers/gpu/drm/radeon/r600_cp.c
-@@ -31,7 +31,22 @@
- #include "radeon_drm.h"
- #include "radeon_drv.h"
-
--#include "r600_microcode.h"
-+#define PFP_UCODE_SIZE 576
-+#define PM4_UCODE_SIZE 1792
-+#define R700_PFP_UCODE_SIZE 848
-+#define R700_PM4_UCODE_SIZE 1360
-+
-+/* Firmware Names */
-+MODULE_FIRMWARE("radeon/R600_cp.bin");
-+MODULE_FIRMWARE("radeon/RV610_cp.bin");
-+MODULE_FIRMWARE("radeon/RV630_cp.bin");
-+MODULE_FIRMWARE("radeon/RV620_cp.bin");
-+MODULE_FIRMWARE("radeon/RV635_cp.bin");
-+MODULE_FIRMWARE("radeon/RV670_cp.bin");
-+MODULE_FIRMWARE("radeon/RS780_cp.bin");
-+MODULE_FIRMWARE("radeon/RV770_cp.bin");
-+MODULE_FIRMWARE("radeon/RV730_cp.bin");
-+MODULE_FIRMWARE("radeon/RV710_cp.bin");
-
- # define ATI_PCIGART_PAGE_SIZE 4096 /**< PCI GART page size */
- # define ATI_PCIGART_PAGE_MASK (~(ATI_PCIGART_PAGE_SIZE-1))
-@@ -275,11 +290,69 @@ static void r600_vm_init(struct drm_device *dev)
- r600_vm_flush_gart_range(dev);
- }
-
--/* load r600 microcode */
-+static int r600_cp_init_microcode(drm_radeon_private_t *dev_priv)
-+{
-+ struct platform_device *pdev;
-+ const char *chip_name;
-+ size_t required_size;
-+ char fw_name[30];
-+ int err;
-+
-+ pdev = platform_device_register_simple("r600_cp", 0, NULL, 0);
-+ err = IS_ERR(pdev);
-+ if (err) {
-+ printk(KERN_ERR "r600_cp: Failed to register firmware\n");
-+ return -EINVAL;
-+ }
-+
-+ switch (dev_priv->flags & RADEON_FAMILY_MASK) {
-+ case CHIP_R600: chip_name = "R600"; break;
-+ case CHIP_RV610: chip_name = "RV610"; break;
-+ case CHIP_RV630: chip_name = "RV630"; break;
-+ case CHIP_RV620: chip_name = "RV620"; break;
-+ case CHIP_RV635: chip_name = "RV635"; break;
-+ case CHIP_RV670: chip_name = "RV670"; break;
-+ case CHIP_RS780: chip_name = "RS780"; break;
-+ case CHIP_RV770: chip_name = "RV770"; break;
-+ case CHIP_RV740:
-+ case CHIP_RV730: chip_name = "RV730"; break;
-+ case CHIP_RV710: chip_name = "RV710"; break;
-+ default: BUG();
-+ }
-+
-+ if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV770)
-+ required_size = (R700_PM4_UCODE_SIZE * 4 +
-+ R700_PFP_UCODE_SIZE * 4);
-+ else
-+ required_size = PM4_UCODE_SIZE * 12 + PFP_UCODE_SIZE * 4;
-+
-+ DRM_INFO("Loading %s CP Microcode\n", chip_name);
-+ snprintf(fw_name, sizeof(fw_name), "radeon/%s_cp.bin", chip_name);
-+
-+ err = request_firmware(&dev_priv->fw, fw_name, &pdev->dev);
-+ platform_device_unregister(pdev);
-+ if (err) {
-+ printk(KERN_ERR "r600_cp: Failed to load firmware \"%s\"\n",
-+ fw_name);
-+ } else if (dev_priv->fw->size != required_size) {
-+ printk(KERN_ERR
-+ "r600_cp: Bogus length %zu in firmware \"%s\"\n",
-+ dev_priv->fw->size, fw_name);
-+ err = -EINVAL;
-+ release_firmware(dev_priv->fw);
-+ dev_priv->fw = NULL;
-+ }
-+ return err;
-+}
-+
- static void r600_cp_load_microcode(drm_radeon_private_t *dev_priv)
- {
-+ const __be32 *fw_data;
- int i;
-
-+ if (!dev_priv->fw)
-+ return;
-+
- r600_do_cp_stop(dev_priv);
-
- RADEON_WRITE(R600_CP_RB_CNTL,
-@@ -292,114 +364,18 @@ static void r600_cp_load_microcode(drm_radeon_private_t *dev_priv)
- DRM_UDELAY(15000);
- RADEON_WRITE(R600_GRBM_SOFT_RESET, 0);
-
-- RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
--
-- if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R600)) {
-- DRM_INFO("Loading R600 CP Microcode\n");
-- for (i = 0; i < PM4_UCODE_SIZE; i++) {
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- R600_cp_microcode[i][0]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- R600_cp_microcode[i][1]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- R600_cp_microcode[i][2]);
-- }
--
-- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-- DRM_INFO("Loading R600 PFP Microcode\n");
-- for (i = 0; i < PFP_UCODE_SIZE; i++)
-- RADEON_WRITE(R600_CP_PFP_UCODE_DATA, R600_pfp_microcode[i]);
-- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610)) {
-- DRM_INFO("Loading RV610 CP Microcode\n");
-- for (i = 0; i < PM4_UCODE_SIZE; i++) {
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV610_cp_microcode[i][0]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV610_cp_microcode[i][1]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV610_cp_microcode[i][2]);
-- }
--
-- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-- DRM_INFO("Loading RV610 PFP Microcode\n");
-- for (i = 0; i < PFP_UCODE_SIZE; i++)
-- RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV610_pfp_microcode[i]);
-- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV630)) {
-- DRM_INFO("Loading RV630 CP Microcode\n");
-- for (i = 0; i < PM4_UCODE_SIZE; i++) {
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV630_cp_microcode[i][0]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV630_cp_microcode[i][1]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV630_cp_microcode[i][2]);
-- }
--
-- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-- DRM_INFO("Loading RV630 PFP Microcode\n");
-- for (i = 0; i < PFP_UCODE_SIZE; i++)
-- RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV630_pfp_microcode[i]);
-- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620)) {
-- DRM_INFO("Loading RV620 CP Microcode\n");
-- for (i = 0; i < PM4_UCODE_SIZE; i++) {
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV620_cp_microcode[i][0]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV620_cp_microcode[i][1]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV620_cp_microcode[i][2]);
-- }
--
-- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-- DRM_INFO("Loading RV620 PFP Microcode\n");
-- for (i = 0; i < PFP_UCODE_SIZE; i++)
-- RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV620_pfp_microcode[i]);
-- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV635)) {
-- DRM_INFO("Loading RV635 CP Microcode\n");
-- for (i = 0; i < PM4_UCODE_SIZE; i++) {
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV635_cp_microcode[i][0]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV635_cp_microcode[i][1]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV635_cp_microcode[i][2]);
-- }
-+ fw_data = (const __be32 *)dev_priv->fw->data;
-
-- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-- DRM_INFO("Loading RV635 PFP Microcode\n");
-- for (i = 0; i < PFP_UCODE_SIZE; i++)
-- RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV635_pfp_microcode[i]);
-- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV670)) {
-- DRM_INFO("Loading RV670 CP Microcode\n");
-- for (i = 0; i < PM4_UCODE_SIZE; i++) {
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV670_cp_microcode[i][0]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV670_cp_microcode[i][1]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RV670_cp_microcode[i][2]);
-- }
-+ RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
-+ for (i = 0; i < PM4_UCODE_SIZE * 3; i++)
-+ RADEON_WRITE(R600_CP_ME_RAM_DATA,
-+ be32_to_cpup(fw_data++));
-
-- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-- DRM_INFO("Loading RV670 PFP Microcode\n");
-- for (i = 0; i < PFP_UCODE_SIZE; i++)
-- RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV670_pfp_microcode[i]);
-- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780)) {
-- DRM_INFO("Loading RS780 CP Microcode\n");
-- for (i = 0; i < PM4_UCODE_SIZE; i++) {
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RS780_cp_microcode[i][0]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RS780_cp_microcode[i][1]);
-- RADEON_WRITE(R600_CP_ME_RAM_DATA,
-- RS780_cp_microcode[i][2]);
-- }
-+ RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-+ for (i = 0; i < PFP_UCODE_SIZE; i++)
-+ RADEON_WRITE(R600_CP_PFP_UCODE_DATA,
-+ be32_to_cpup(fw_data++));
-
-- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-- DRM_INFO("Loading RS780 PFP Microcode\n");
-- for (i = 0; i < PFP_UCODE_SIZE; i++)
-- RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RS780_pfp_microcode[i]);
-- }
- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
- RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
- RADEON_WRITE(R600_CP_ME_RAM_RADDR, 0);
-@@ -458,11 +434,14 @@ static void r700_vm_init(struct drm_device *dev)
- r600_vm_flush_gart_range(dev);
- }
-
--/* load r600 microcode */
- static void r700_cp_load_microcode(drm_radeon_private_t *dev_priv)
- {
-+ const __be32 *fw_data;
- int i;
-
-+ if (!dev_priv->fw)
-+ return;
-+
- r600_do_cp_stop(dev_priv);
-
- RADEON_WRITE(R600_CP_RB_CNTL,
-@@ -475,48 +454,18 @@ static void r700_cp_load_microcode(drm_radeon_private_t *dev_priv)
- DRM_UDELAY(15000);
- RADEON_WRITE(R600_GRBM_SOFT_RESET, 0);
-
-+ fw_data = (const __be32 *)dev_priv->fw->data + R700_PM4_UCODE_SIZE;
-+ RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-+ for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
-+ RADEON_WRITE(R600_CP_PFP_UCODE_DATA, be32_to_cpup(fw_data++));
-+ RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-
-- if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV770)) {
-- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-- DRM_INFO("Loading RV770/RV790 PFP Microcode\n");
-- for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
-- RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV770_pfp_microcode[i]);
-- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
--
-- RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
-- DRM_INFO("Loading RV770/RV790 CP Microcode\n");
-- for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
-- RADEON_WRITE(R600_CP_ME_RAM_DATA, RV770_cp_microcode[i]);
-- RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
--
-- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV730) ||
-- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV740)) {
-- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-- DRM_INFO("Loading RV730/RV740 PFP Microcode\n");
-- for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
-- RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV730_pfp_microcode[i]);
-- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
--
-- RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
-- DRM_INFO("Loading RV730/RV740 CP Microcode\n");
-- for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
-- RADEON_WRITE(R600_CP_ME_RAM_DATA, RV730_cp_microcode[i]);
-- RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
--
-- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV710)) {
-- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-- DRM_INFO("Loading RV710 PFP Microcode\n");
-- for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
-- RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV710_pfp_microcode[i]);
-- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
--
-- RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
-- DRM_INFO("Loading RV710 CP Microcode\n");
-- for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
-- RADEON_WRITE(R600_CP_ME_RAM_DATA, RV710_cp_microcode[i]);
-- RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
-+ fw_data = (const __be32 *)dev_priv->fw->data;
-+ RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
-+ for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
-+ RADEON_WRITE(R600_CP_ME_RAM_DATA, be32_to_cpup(fw_data++));
-+ RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
-
-- }
- RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
- RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
- RADEON_WRITE(R600_CP_ME_RAM_RADDR, 0);
-@@ -2107,6 +2057,14 @@ int r600_do_init_cp(struct drm_device *dev, drm_radeon_init_t *init,
- r600_vm_init(dev);
- }
-
-+ if (!dev_priv->fw) {
-+ int err = r600_cp_init_microcode(dev_priv);
-+ if (err) {
-+ DRM_ERROR("Failed to load firmware!\n");
-+ r600_do_cleanup_cp(dev);
-+ return err;
-+ }
-+ }
- if (((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV770))
- r700_cp_load_microcode(dev_priv);
- else
-diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c
-index 77a7a4d..e9894ac 100644
---- a/drivers/gpu/drm/radeon/radeon_cp.c
-+++ b/drivers/gpu/drm/radeon/radeon_cp.c
-@@ -36,10 +36,25 @@
- #include "radeon_drv.h"
- #include "r300_reg.h"
-
--#include "radeon_microcode.h"
--
- #define RADEON_FIFO_DEBUG 0
-
-+/* Firmware Names */
-+#define FIRMWARE_R100 "radeon/R100_cp.bin"
-+#define FIRMWARE_R200 "radeon/R200_cp.bin"
-+#define FIRMWARE_R300 "radeon/R300_cp.bin"
-+#define FIRMWARE_R420 "radeon/R420_cp.bin"
-+#define FIRMWARE_RS690 "radeon/RS690_cp.bin"
-+#define FIRMWARE_RS600 "radeon/RS600_cp.bin"
-+#define FIRMWARE_R520 "radeon/R520_cp.bin"
-+
-+MODULE_FIRMWARE(FIRMWARE_R100);
-+MODULE_FIRMWARE(FIRMWARE_R200);
-+MODULE_FIRMWARE(FIRMWARE_R300);
-+MODULE_FIRMWARE(FIRMWARE_R420);
-+MODULE_FIRMWARE(FIRMWARE_RS690);
-+MODULE_FIRMWARE(FIRMWARE_RS600);
-+MODULE_FIRMWARE(FIRMWARE_R520);
-+
- static int radeon_do_cleanup_cp(struct drm_device * dev);
- static void radeon_do_cp_start(drm_radeon_private_t * dev_priv);
-
-@@ -451,37 +466,34 @@ static void radeon_init_pipes(drm_radeon_private_t *dev_priv)
- */
-
- /* Load the microcode for the CP */
--static void radeon_cp_load_microcode(drm_radeon_private_t * dev_priv)
-+static int radeon_cp_init_microcode(drm_radeon_private_t *dev_priv)
- {
-- int i;
-+ struct platform_device *pdev;
-+ const char *fw_name = NULL;
-+ int err;
-+
- DRM_DEBUG("\n");
-
-- radeon_do_wait_for_idle(dev_priv);
-+ pdev = platform_device_register_simple("radeon_cp", 0, NULL, 0);
-+ err = IS_ERR(pdev);
-+ if (err) {
-+ printk(KERN_ERR "radeon_cp: Failed to register firmware\n");
-+ return -EINVAL;
-+ }
-
-- RADEON_WRITE(RADEON_CP_ME_RAM_ADDR, 0);
- if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R100) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV100) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV200) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS100) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS200)) {
- DRM_INFO("Loading R100 Microcode\n");
-- for (i = 0; i < 256; i++) {
-- RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
-- R100_cp_microcode[i][1]);
-- RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
-- R100_cp_microcode[i][0]);
-- }
-+ fw_name = FIRMWARE_R100;
- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R200) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV250) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV280) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS300)) {
- DRM_INFO("Loading R200 Microcode\n");
-- for (i = 0; i < 256; i++) {
-- RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
-- R200_cp_microcode[i][1]);
-- RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
-- R200_cp_microcode[i][0]);
-- }
-+ fw_name = FIRMWARE_R200;
- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R300) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R350) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV350) ||
-@@ -489,39 +501,19 @@ static void radeon_cp_load_microcode(drm_radeon_private_t * dev_priv)
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS400) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS480)) {
- DRM_INFO("Loading R300 Microcode\n");
-- for (i = 0; i < 256; i++) {
-- RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
-- R300_cp_microcode[i][1]);
-- RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
-- R300_cp_microcode[i][0]);
-- }
-+ fw_name = FIRMWARE_R300;
- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R420) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R423) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV410)) {
- DRM_INFO("Loading R400 Microcode\n");
-- for (i = 0; i < 256; i++) {
-- RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
-- R420_cp_microcode[i][1]);
-- RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
-- R420_cp_microcode[i][0]);
-- }
-+ fw_name = FIRMWARE_R420;
- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS740)) {
- DRM_INFO("Loading RS690/RS740 Microcode\n");
-- for (i = 0; i < 256; i++) {
-- RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
-- RS690_cp_microcode[i][1]);
-- RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
-- RS690_cp_microcode[i][0]);
-- }
-+ fw_name = FIRMWARE_RS690;
- } else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS600) {
- DRM_INFO("Loading RS600 Microcode\n");
-- for (i = 0; i < 256; i++) {
-- RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
-- RS600_cp_microcode[i][1]);
-- RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
-- RS600_cp_microcode[i][0]);
-- }
-+ fw_name = FIRMWARE_RS600;
- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R520) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV530) ||
-@@ -529,11 +521,40 @@ static void radeon_cp_load_microcode(drm_radeon_private_t * dev_priv)
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV560) ||
- ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV570)) {
- DRM_INFO("Loading R500 Microcode\n");
-+ fw_name = FIRMWARE_R520;
-+ }
-+
-+ err = request_firmware(&dev_priv->fw, fw_name, &pdev->dev);
-+ platform_device_unregister(pdev);
-+ if (err) {
-+ printk(KERN_ERR "radeon_cp: Failed to load firmware \"%s\"\n",
-+ fw_name);
-+ } else if (dev_priv->fw->size != 256 * 8) {
-+ printk(KERN_ERR
-+ "radeon_cp: Bogus length %zu in firmware \"%s\"\n",
-+ dev_priv->fw->size, fw_name);
-+ err = -EINVAL;
-+ release_firmware(dev_priv->fw);
-+ dev_priv->fw = NULL;
-+ }
-+ return err;
-+}
-+
-+static void radeon_cp_load_microcode(drm_radeon_private_t *dev_priv)
-+{
-+ const __be32 *fw_data;
-+ int i;
-+
-+ radeon_do_wait_for_idle(dev_priv);
-+
-+ if (dev_priv->fw) {
-+ fw_data = (const __be32 *)&dev_priv->fw->data[0];
-+ RADEON_WRITE(RADEON_CP_ME_RAM_ADDR, 0);
- for (i = 0; i < 256; i++) {
- RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
-- R520_cp_microcode[i][1]);
-+ be32_to_cpup(fw_data++));
- RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
-- R520_cp_microcode[i][0]);
-+ be32_to_cpup(fw_data++));
- }
- }
- }
-@@ -1486,6 +1507,14 @@ static int radeon_do_init_cp(struct drm_device *dev, drm_radeon_init_t *init,
- radeon_set_pcigart(dev_priv, 1);
- }
-
-+ if (!dev_priv->fw) {
-+ int err = radeon_cp_init_microcode(dev_priv);
-+ if (err) {
-+ DRM_ERROR("Failed to load firmware!\n");
-+ radeon_do_cleanup_cp(dev);
-+ return err;
-+ }
-+ }
- radeon_cp_load_microcode(dev_priv);
- radeon_cp_init_ring_buffer(dev, dev_priv, file_priv);
-
-@@ -1755,6 +1784,10 @@ void radeon_do_release(struct drm_device * dev)
- r600_do_cleanup_cp(dev);
- else
- radeon_do_cleanup_cp(dev);
-+ if (dev_priv->fw) {
-+ release_firmware(dev_priv->fw);
-+ dev_priv->fw = NULL;
-+ }
- }
- }
-
-diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
-index ed4d27e..829eefa 100644
---- a/drivers/gpu/drm/radeon/radeon_drv.h
-+++ b/drivers/gpu/drm/radeon/radeon_drv.h
-@@ -31,6 +31,9 @@
- #ifndef __RADEON_DRV_H__
- #define __RADEON_DRV_H__
-
-+#include <linux/firmware.h>
-+#include <linux/platform_device.h>
-+
- /* General customization:
- */
-
-@@ -348,6 +351,8 @@ typedef struct drm_radeon_private {
- int r700_sc_hiz_tile_fifo_size;
- int r700_sc_earlyz_tile_fifo_fize;
-
-+ /* firmware */
-+ const struct firmware *fw;
- } drm_radeon_private_t;
-
- typedef struct drm_radeon_buf_priv {
---
-1.5.6.5
-
diff --git a/patches/features/all/drivers-infiniband-hw-ipath-iba7220-use-request_firmware.patch b/patches/features/all/drivers-infiniband-hw-ipath-iba7220-use-request_firmware.patch
new file mode 100644
index 0000000..2a7bc13
--- /dev/null
+++ b/patches/features/all/drivers-infiniband-hw-ipath-iba7220-use-request_firmware.patch
@@ -0,0 +1,230 @@
+From 1e9da7da73886eaf63449e56ebf16cf7daa4a9e5 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Mon, 17 Aug 2009 02:17:09 +0100
+Subject: [PATCH 3/3] ib_ipath: use request_firmware() to load SD7220 firmware
+
+---
+ drivers/infiniband/hw/ipath/Makefile | 7 ++--
+ drivers/infiniband/hw/ipath/ipath_7220.h | 7 ----
+ drivers/infiniband/hw/ipath/ipath_driver.c | 4 --
+ drivers/infiniband/hw/ipath/ipath_sd7220.c | 49 ++++++++++++++++++++++-----
+ 4 files changed, 43 insertions(+), 24 deletions(-)
+
+diff --git a/drivers/infiniband/hw/ipath/Makefile b/drivers/infiniband/hw/ipath/Makefile
+index 42d8d4c..fc892cf 100644
+--- a/drivers/infiniband/hw/ipath/Makefile
++++ b/drivers/infiniband/hw/ipath/Makefile
+@@ -29,10 +29,9 @@ ib_ipath-y := \
+ ipath_user_pages.o \
+ ipath_user_sdma.o \
+ ipath_verbs_mcast.o \
+- ipath_verbs.o
+-
+-# IBA7220 depends on firmware to be removed
+-ib_ipath-$(CONFIG_BROKEN) += ipath_iba7220.o ipath_sd7220.o
++ ipath_verbs.o \
++ ipath_iba7220.o \
++ ipath_sd7220.o
+
+ ib_ipath-$(CONFIG_HT_IRQ) += ipath_iba6110.o
+ ib_ipath-$(CONFIG_PCI_MSI) += ipath_iba6120.o
+diff --git a/drivers/infiniband/hw/ipath/ipath_7220.h b/drivers/infiniband/hw/ipath/ipath_7220.h
+index 74fa5cc..29a73e0 100644
+--- a/drivers/infiniband/hw/ipath/ipath_7220.h
++++ b/drivers/infiniband/hw/ipath/ipath_7220.h
+@@ -40,10 +40,6 @@
+ */
+ int ipath_sd7220_presets(struct ipath_devdata *dd);
+ int ipath_sd7220_init(struct ipath_devdata *dd, int was_reset);
+-int ipath_sd7220_prog_ld(struct ipath_devdata *dd, int sdnum, u8 *img,
+- int len, int offset);
+-int ipath_sd7220_prog_vfy(struct ipath_devdata *dd, int sdnum, const u8 *img,
+- int len, int offset);
+ /*
+ * Below used for sdnum parameter, selecting one of the two sections
+ * used for PCIe, or the single SerDes used for IB, which is the
+@@ -51,7 +47,4 @@ int ipath_sd7220_prog_vfy(struct ipath_devdata *dd, int sdnum, const u8 *img,
+ */
+ #define IB_7220_SERDES 2
+
+-int ipath_sd7220_ib_load(struct ipath_devdata *dd);
+-int ipath_sd7220_ib_vfy(struct ipath_devdata *dd);
+-
+ #endif /* _IPATH_7220_H */
+diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c
+index 20407a0..04e88b6 100644
+--- a/drivers/infiniband/hw/ipath/ipath_driver.c
++++ b/drivers/infiniband/hw/ipath/ipath_driver.c
+@@ -140,9 +140,7 @@ static int __devinit ipath_init_one(struct pci_dev *,
+ static const struct pci_device_id ipath_pci_tbl[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_PATHSCALE, PCI_DEVICE_ID_INFINIPATH_HT) },
+ { PCI_DEVICE(PCI_VENDOR_ID_PATHSCALE, PCI_DEVICE_ID_INFINIPATH_PE800) },
+-#ifdef CONFIG_BROKEN
+ { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_INFINIPATH_7220) },
+-#endif
+ { 0, }
+ };
+
+@@ -537,7 +535,6 @@ static int __devinit ipath_init_one(struct pci_dev *pdev,
+ "CONFIG_PCI_MSI is not enabled\n", ent->device);
+ return -ENODEV;
+ #endif
+-#ifdef CONFIG_BROKEN
+ case PCI_DEVICE_ID_INFINIPATH_7220:
+ #ifndef CONFIG_PCI_MSI
+ ipath_dbg("CONFIG_PCI_MSI is not enabled, "
+@@ -545,7 +542,6 @@ static int __devinit ipath_init_one(struct pci_dev *pdev,
+ #endif
+ ipath_init_iba7220_funcs(dd);
+ break;
+-#endif
+ default:
+ ipath_dev_err(dd, "Found unknown QLogic deviceid 0x%x, "
+ "failing\n", ent->device);
+diff --git a/drivers/infiniband/hw/ipath/ipath_sd7220.c b/drivers/infiniband/hw/ipath/ipath_sd7220.c
+index aa47eb5..df3735d 100644
+--- a/drivers/infiniband/hw/ipath/ipath_sd7220.c
++++ b/drivers/infiniband/hw/ipath/ipath_sd7220.c
+@@ -37,11 +37,15 @@
+
+ #include <linux/pci.h>
+ #include <linux/delay.h>
++#include <linux/firmware.h>
+
+ #include "ipath_kernel.h"
+ #include "ipath_registers.h"
+ #include "ipath_7220.h"
+
++#define SD7220_FW_NAME "qlogic/sd7220.fw"
++MODULE_FIRMWARE(SD7220_FW_NAME);
++
+ /*
+ * The IBSerDesMappTable is a memory that holds values to be stored in
+ * various SerDes registers by IBC. It is not part of the normal kregs
+@@ -88,6 +92,11 @@ static int ipath_internal_presets(struct ipath_devdata *dd);
+ static int ipath_sd_trimself(struct ipath_devdata *dd, int val);
+ static int epb_access(struct ipath_devdata *dd, int sdnum, int claim);
+
++static int
++ipath_sd7220_ib_load(struct ipath_devdata *dd, const struct firmware *fw);
++static int
++ipath_sd7220_ib_vfy(struct ipath_devdata *dd, const struct firmware *fw);
++
+ void ipath_set_relock_poll(struct ipath_devdata *dd, int ibup);
+
+ /*
+@@ -98,9 +107,10 @@ void ipath_set_relock_poll(struct ipath_devdata *dd, int ibup);
+ * ipath_sd7220_init() is no longer valid. Instead, we check for the
+ * actual uC code having been loaded.
+ */
+-static int ipath_ibsd_ucode_loaded(struct ipath_devdata *dd)
++static int
++ipath_ibsd_ucode_loaded(struct ipath_devdata *dd, const struct firmware *fw)
+ {
+- if (!dd->serdes_first_init_done && (ipath_sd7220_ib_vfy(dd) > 0))
++ if (!dd->serdes_first_init_done && (ipath_sd7220_ib_vfy(dd, fw) > 0))
+ dd->serdes_first_init_done = 1;
+ return dd->serdes_first_init_done;
+ }
+@@ -363,6 +373,7 @@ static void ipath_sd_trimdone_monitor(struct ipath_devdata *dd,
+ */
+ int ipath_sd7220_init(struct ipath_devdata *dd, int was_reset)
+ {
++ const struct firmware *fw;
+ int ret = 1; /* default to failure */
+ int first_reset;
+ int val_stat;
+@@ -373,8 +384,14 @@ int ipath_sd7220_init(struct ipath_devdata *dd, int was_reset)
+ ipath_sd_trimdone_monitor(dd, "Driver-reload");
+ }
+
++ ret = request_firmware(&fw, SD7220_FW_NAME, &dd->pcidev->dev);
++ if (ret) {
++ ipath_dev_err(dd, "Failed to load IB SERDES image\n");
++ goto done;
++ }
++
+ /* Substitute our deduced value for was_reset */
+- ret = ipath_ibsd_ucode_loaded(dd);
++ ret = ipath_ibsd_ucode_loaded(dd, fw);
+ if (ret < 0) {
+ ret = 1;
+ goto done;
+@@ -431,7 +448,7 @@ int ipath_sd7220_init(struct ipath_devdata *dd, int was_reset)
+ int vfy;
+ int trim_done;
+ ipath_dbg("SerDes uC was reset, reloading PRAM\n");
+- ret = ipath_sd7220_ib_load(dd);
++ ret = ipath_sd7220_ib_load(dd, fw);
+ if (ret < 0) {
+ ipath_dev_err(dd, "Failed to load IB SERDES image\n");
+ ret = 1;
+@@ -439,7 +456,7 @@ int ipath_sd7220_init(struct ipath_devdata *dd, int was_reset)
+ }
+
+ /* Loaded image, try to verify */
+- vfy = ipath_sd7220_ib_vfy(dd);
++ vfy = ipath_sd7220_ib_vfy(dd, fw);
+ if (vfy != ret) {
+ ipath_dev_err(dd, "SERDES PRAM VFY failed\n");
+ ret = 1;
+@@ -500,6 +517,8 @@ int ipath_sd7220_init(struct ipath_devdata *dd, int was_reset)
+ done:
+ /* start relock timer regardless, but start at 1 second */
+ ipath_set_relock_poll(dd, -1);
++
++ release_firmware(fw);
+ return ret;
+ }
+
+@@ -836,8 +855,8 @@ static int ipath_sd7220_ram_xfer(struct ipath_devdata *dd, int sdnum, u32 loc,
+
+ #define PROG_CHUNK 64
+
+-int ipath_sd7220_prog_ld(struct ipath_devdata *dd, int sdnum,
+- u8 *img, int len, int offset)
++static int ipath_sd7220_prog_ld(struct ipath_devdata *dd, int sdnum,
++ const u8 *img, int len, int offset)
+ {
+ int cnt, sofar, req;
+
+@@ -847,7 +866,7 @@ int ipath_sd7220_prog_ld(struct ipath_devdata *dd, int sdnum,
+ if (req > PROG_CHUNK)
+ req = PROG_CHUNK;
+ cnt = ipath_sd7220_ram_xfer(dd, sdnum, offset + sofar,
+- img + sofar, req, 0);
++ (u8 *)img + sofar, req, 0);
+ if (cnt < req) {
+ sofar = -1;
+ break;
+@@ -860,7 +879,7 @@ int ipath_sd7220_prog_ld(struct ipath_devdata *dd, int sdnum,
+ #define VFY_CHUNK 64
+ #define SD_PRAM_ERROR_LIMIT 42
+
+-int ipath_sd7220_prog_vfy(struct ipath_devdata *dd, int sdnum,
++static int ipath_sd7220_prog_vfy(struct ipath_devdata *dd, int sdnum,
+ const u8 *img, int len, int offset)
+ {
+ int cnt, sofar, req, idx, errors;
+@@ -888,6 +907,18 @@ int ipath_sd7220_prog_vfy(struct ipath_devdata *dd, int sdnum,
+ return errors ? -errors : sofar;
+ }
+
++static int
++ipath_sd7220_ib_load(struct ipath_devdata *dd, const struct firmware *fw)
++{
++ return ipath_sd7220_prog_ld(dd, IB_7220_SERDES, fw->data, fw->size, 0);
++}
++
++static int
++ipath_sd7220_ib_vfy(struct ipath_devdata *dd, const struct firmware *fw)
++{
++ return ipath_sd7220_prog_vfy(dd, IB_7220_SERDES, fw->data, fw->size, 0);
++}
++
+ /* IRQ not set up at this point in init, so we poll. */
+ #define IB_SERDES_TRIM_DONE (1ULL << 11)
+ #define TRIM_TMO (30)
+--
+1.6.3.3
+
diff --git a/patches/features/all/drivers-media-dvb-usb-af9005-request_firmware.patch b/patches/features/all/drivers-media-dvb-usb-af9005-request_firmware.patch
new file mode 100644
index 0000000..91c4a1f
--- /dev/null
+++ b/patches/features/all/drivers-media-dvb-usb-af9005-request_firmware.patch
@@ -0,0 +1,152 @@
+From 0b8d838ecaa0235000347c084d192aa30b76ae70 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Mon, 24 Aug 2009 23:19:58 +0100
+Subject: [PATCH] af9005: Use request_firmware() to load register init script
+
+Read the register init script from the Windows driver. This is sick
+but should avoid the potential copyright infringement in distributing
+a version of the script which is directly derived from the driver.
+---
+ drivers/media/dvb/dvb-usb/Kconfig | 2 +-
+ drivers/media/dvb/dvb-usb/af9005-fe.c | 66 ++++++++++++++++++++++++++------
+ 2 files changed, 54 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/media/dvb/dvb-usb/Kconfig b/drivers/media/dvb/dvb-usb/Kconfig
+index 868e1cb..1c3d56d 100644
+--- a/drivers/media/dvb/dvb-usb/Kconfig
++++ b/drivers/media/dvb/dvb-usb/Kconfig
+@@ -238,10 +238,10 @@ config DVB_USB_OPERA1
+
+ config DVB_USB_AF9005
+ tristate "Afatech AF9005 DVB-T USB1.1 support"
+- depends on BROKEN
+ depends on DVB_USB && EXPERIMENTAL
+ select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMISE
+ select MEDIA_TUNER_QT1010 if !MEDIA_TUNER_CUSTOMISE
++ select FW_LOADER
+ help
+ Say Y here to support the Afatech AF9005 based DVB-T USB1.1 receiver
+ and the TerraTec Cinergy T USB XE (Rev.1)
+diff --git a/drivers/media/dvb/dvb-usb/af9005-fe.c b/drivers/media/dvb/dvb-usb/af9005-fe.c
+index 199ece0..bcc26c8 100644
+--- a/drivers/media/dvb/dvb-usb/af9005-fe.c
++++ b/drivers/media/dvb/dvb-usb/af9005-fe.c
+@@ -22,10 +22,26 @@
+ * see Documentation/dvb/README.dvb-usb for more information
+ */
+ #include "af9005.h"
+-#include "af9005-script.h"
+ #include "mt2060.h"
+ #include "qt1010.h"
+ #include <asm/div64.h>
++#include <linux/firmware.h>
++
++/* Register initialisation script to be extracted from the Windows driver */
++
++typedef struct {
++ __le16 reg;
++ u8 pos;
++ u8 len;
++ u8 val;
++ u8 pad;
++} __packed RegDesc;
++
++#define WIN_DRV_NAME "AF05BDA.sys"
++#define WIN_DRV_VERSION "6.3.2.1"
++#define WIN_DRV_SIZE 133504
++#define WIN_DRV_SCRIPT_OFFSET 88316
++#define WIN_DRV_SCRIPT_SIZE 1110
+
+ struct af9005_fe_state {
+ struct dvb_usb_device *d;
+@@ -818,6 +834,8 @@ static int af9005_fe_init(struct dvb_frontend *fe)
+ {
+ struct af9005_fe_state *state = fe->demodulator_priv;
+ struct dvb_usb_adapter *adap = fe->dvb->priv;
++ const struct firmware *fw;
++ const RegDesc *script;
+ int ret, i, scriptlen;
+ u8 temp, temp0 = 0, temp1 = 0, temp2 = 0;
+ u8 buf[2];
+@@ -969,37 +987,55 @@ static int af9005_fe_init(struct dvb_frontend *fe)
+ if ((ret = af9005_write_ofdm_register(state->d, 0xaefb, 0x01)))
+ return ret;
+
+- /* load init script */
+- deb_info("load init script\n");
+- scriptlen = sizeof(script) / sizeof(RegDesc);
++ /* load and validate init script */
++ deb_info("load init script from Windows driver\n");
++ ret = request_firmware(&fw, WIN_DRV_NAME, &state->d->udev->dev);
++ if (ret)
++ return ret;
++ BUILD_BUG_ON(sizeof(RegDesc) != 6);
++ if (fw->size != WIN_DRV_SIZE ||
++ memcmp(fw->data + WIN_DRV_SCRIPT_OFFSET,
++ "\x80\xa1\x00\x08\x0a\x00", 6) ||
++ memcmp(fw->data + WIN_DRV_SCRIPT_OFFSET + WIN_DRV_SCRIPT_SIZE - 6,
++ "\x49\xa3\x00\x06\x02\x00", 6)) {
++ err("%s is invalid - should be version %s, size %u bytes\n",
++ WIN_DRV_NAME, WIN_DRV_VERSION, WIN_DRV_SIZE);
++ ret = -EINVAL;
++ goto fail_release;
++ }
++
++ script = (const RegDesc *)(fw->data + WIN_DRV_SCRIPT_OFFSET);
++ scriptlen = WIN_DRV_SCRIPT_SIZE / sizeof(RegDesc);
+ for (i = 0; i < scriptlen; i++) {
++ u16 reg = le16_to_cpu(script[i].reg);
+ if ((ret =
+- af9005_write_register_bits(state->d, script[i].reg,
++ af9005_write_register_bits(state->d, reg,
+ script[i].pos,
+ script[i].len, script[i].val)))
+- return ret;
++ goto fail_release;
+ /* save 3 bytes of original fcw */
+- if (script[i].reg == 0xae18)
++ if (reg == 0xae18)
+ temp2 = script[i].val;
+- if (script[i].reg == 0xae19)
++ if (reg == 0xae19)
+ temp1 = script[i].val;
+- if (script[i].reg == 0xae1a)
++ if (reg == 0xae1a)
+ temp0 = script[i].val;
+
+ /* save original unplug threshold */
+- if (script[i].reg == xd_p_reg_unplug_th)
++ if (reg == xd_p_reg_unplug_th)
+ state->original_if_unplug_th = script[i].val;
+- if (script[i].reg == xd_p_reg_unplug_rf_gain_th)
++ if (reg == xd_p_reg_unplug_rf_gain_th)
+ state->original_rf_unplug_th = script[i].val;
+- if (script[i].reg == xd_p_reg_unplug_dtop_if_gain_th)
++ if (reg == xd_p_reg_unplug_dtop_if_gain_th)
+ state->original_dtop_if_unplug_th = script[i].val;
+- if (script[i].reg == xd_p_reg_unplug_dtop_rf_gain_th)
++ if (reg == xd_p_reg_unplug_dtop_rf_gain_th)
+ state->original_dtop_rf_unplug_th = script[i].val;
+
+ }
+ state->original_fcw =
+ ((u32) temp2 << 16) + ((u32) temp1 << 8) + (u32) temp0;
+
++ release_firmware(fw);
+
+ /* save original TOPs */
+ deb_info("save original TOPs\n");
+@@ -1079,6 +1115,10 @@ static int af9005_fe_init(struct dvb_frontend *fe)
+
+ deb_info("profit!\n");
+ return 0;
++
++fail_release:
++ release_firmware(fw);
++ return ret;
+ }
+
+ static int af9005_fe_sleep(struct dvb_frontend *fe)
+--
+1.6.3.3
+
diff --git a/patches/features/all/drivers-net-acenic-firmwar_request.patch b/patches/features/all/drivers-net-acenic-firmwar_request.patch
deleted file mode 100644
index 8bda138..0000000
--- a/patches/features/all/drivers-net-acenic-firmwar_request.patch
+++ /dev/null
@@ -1,272 +0,0 @@
-Subject: [PATCH] firmware: convert acenic driver to request_firmware()
-From: David Woodhouse <dwmw2@infradead.org>
-To: Jes Sorensen <jes@trained-monkey.org>
-Cc: netdev@vger.kernel.org, jaswinder@infradead.org
-
-Again with help from Jaswinder Singh.
-
-Omitting the large part of the patch which actually moves the firmware
-around, since you'll need to pull from the git tree to get the preceding
-patches if you want to test it anyway.
-
-We store the firmware in little-endian form now, and thus use
-__raw_writel() to write it to the device, to avoid byteswapping by
-writel(). I've revamped that loop in ace_copy() a little bit so it could
-probably do with being tested.
-
-I've dropped the information about SBSS and BSS sections of the firmware
--- we were clearing the whole of the device's memory in advance anyway,
-so clearing the BSS sections for a _second_ time seems pointless. And
-since the text,rodata,data sections were (almost) contiguous, we now
-just load those as a single blob rather than keeping them separate.
-
-Although it probably isn't necessary, we do preserve the ability to
-change the load and start addresses from 0x4000, by putting them into a
-header at the beginning of the firmware blob, along with the version
-number.
-
-[ ported to debian -maks ]
-
-diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
-index f80c839..7677680 100644
---- a/drivers/net/Kconfig
-+++ b/drivers/net/Kconfig
-@@ -1912,8 +1912,8 @@ if NETDEV_1000
-
- config ACENIC
- tristate "Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support"
-- depends on BROKEN
- depends on PCI
-+ select FW_LOADER
- ---help---
- Say Y here if you have an Alteon AceNIC, 3Com 3C985(B), NetGear
- GA620, SGI Gigabit or Farallon PN9000-SX PCI Gigabit Ethernet
-diff --git a/drivers/net/acenic.c b/drivers/net/acenic.c
-index 6c19265..1e42734 100644
---- a/drivers/net/acenic.c
-+++ b/drivers/net/acenic.c
-@@ -67,6 +67,7 @@
- #include <linux/mm.h>
- #include <linux/highmem.h>
- #include <linux/sockios.h>
-+#include <linux/firmware.h>
-
- #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
- #include <linux/if_vlan.h>
-@@ -187,8 +188,6 @@ MODULE_DEVICE_TABLE(pci, acenic_pci_tbl);
- #define MAX_RODATA_LEN 8*1024
- #define MAX_DATA_LEN 2*1024
-
--#include "acenic_firmware.h"
--
- #ifndef tigon2FwReleaseLocal
- #define tigon2FwReleaseLocal 0
- #endif
-@@ -418,6 +417,8 @@ static int dis_pci_mem_inval[ACE_MAX_MOD_PARMS] = {1, 1, 1, 1, 1, 1, 1, 1};
- MODULE_AUTHOR("Jes Sorensen <jes@trained-monkey.org>");
- MODULE_LICENSE("GPL");
- MODULE_DESCRIPTION("AceNIC/3C985/GA620 Gigabit Ethernet driver");
-+MODULE_FIRMWARE("acenic_tg1.bin");
-+MODULE_FIRMWARE("acenic_tg2.bin");
-
- module_param_array_named(link, link_state, int, NULL, 0);
- module_param_array(trace, int, NULL, 0);
-@@ -939,8 +940,8 @@ static int __devinit ace_init(struct net_device *dev)
- case 4:
- case 5:
- printk(KERN_INFO " Tigon I (Rev. %i), Firmware: %i.%i.%i, ",
-- tig_ver, tigonFwReleaseMajor, tigonFwReleaseMinor,
-- tigonFwReleaseFix);
-+ tig_ver, ap->firmware_major, ap->firmware_minor,
-+ ap->firmware_fix);
- writel(0, &regs->LocalCtrl);
- ap->version = 1;
- ap->tx_ring_entries = TIGON_I_TX_RING_ENTRIES;
-@@ -948,8 +949,8 @@ static int __devinit ace_init(struct net_device *dev)
- #endif
- case 6:
- printk(KERN_INFO " Tigon II (Rev. %i), Firmware: %i.%i.%i, ",
-- tig_ver, tigon2FwReleaseMajor, tigon2FwReleaseMinor,
-- tigon2FwReleaseFix);
-+ tig_ver, ap->firmware_major, ap->firmware_minor,
-+ ap->firmware_fix);
- writel(readl(&regs->CpuBCtrl) | CPU_HALT, &regs->CpuBCtrl);
- readl(&regs->CpuBCtrl); /* PCI write posting */
- /*
-@@ -1201,7 +1202,9 @@ static int __devinit ace_init(struct net_device *dev)
- memset(ap->info, 0, sizeof(struct ace_info));
- memset(ap->skb, 0, sizeof(struct ace_skb));
-
-- ace_load_firmware(dev);
-+ if (ace_load_firmware(dev))
-+ goto init_error;
-+
- ap->fw_running = 0;
-
- tmp_ptr = ap->info_dma;
-@@ -1437,10 +1440,7 @@ static int __devinit ace_init(struct net_device *dev)
- if (ap->version >= 2)
- writel(tmp, &regs->TuneFastLink);
-
-- if (ACE_IS_TIGON_I(ap))
-- writel(tigonFwStartAddr, &regs->Pc);
-- if (ap->version == 2)
-- writel(tigon2FwStartAddr, &regs->Pc);
-+ writel(ap->firmware_start, &regs->Pc);
-
- writel(0, &regs->Mb0Lo);
-
-@@ -2763,8 +2763,8 @@ static void ace_get_drvinfo(struct net_device *dev,
-
- strlcpy(info->driver, "acenic", sizeof(info->driver));
- snprintf(info->version, sizeof(info->version), "%i.%i.%i",
-- tigonFwReleaseMajor, tigonFwReleaseMinor,
-- tigonFwReleaseFix);
-+ ap->firmware_major, ap->firmware_minor,
-+ ap->firmware_fix);
-
- if (ap->pdev)
- strlcpy(info->bus_info, pci_name(ap->pdev),
-@@ -2871,11 +2871,10 @@ static struct net_device_stats *ace_get_stats(struct net_device *dev)
- }
-
-
--static void __devinit ace_copy(struct ace_regs __iomem *regs, void *src,
-- u32 dest, int size)
-+static void __devinit ace_copy(struct ace_regs __iomem *regs, const __le32 *src,
-+ u32 dest, int size)
- {
- void __iomem *tdest;
-- u32 *wsrc;
- short tsize, i;
-
- if (size <= 0)
-@@ -2887,20 +2886,15 @@ static void __devinit ace_copy(struct ace_regs __iomem *regs, void *src,
- tdest = (void __iomem *) &regs->Window +
- (dest & (ACE_WINDOW_SIZE - 1));
- writel(dest & ~(ACE_WINDOW_SIZE - 1), &regs->WinBase);
-- /*
-- * This requires byte swapping on big endian, however
-- * writel does that for us
-- */
-- wsrc = src;
- for (i = 0; i < (tsize / 4); i++) {
-- writel(wsrc[i], tdest + i*4);
-+ /* Firmware is stored as little-endian */
-+ __raw_writel(*src, tdest);
-+ src++;
-+ tdest += 4;
-+ dest += 4;
-+ size -= 4;
- }
-- dest += tsize;
-- src += tsize;
-- size -= tsize;
- }
--
-- return;
- }
-
-
-@@ -2939,8 +2933,13 @@ static void __devinit ace_clear(struct ace_regs __iomem *regs, u32 dest, int siz
- */
- static int __devinit ace_load_firmware(struct net_device *dev)
- {
-+ const struct firmware *fw;
-+ const char *fw_name = "acenic_tg2.bin";
- struct ace_private *ap = netdev_priv(dev);
- struct ace_regs __iomem *regs = ap->regs;
-+ const __le32 *fw_data;
-+ u32 load_addr;
-+ int ret;
-
- if (!(readl(&regs->CpuCtrl) & CPU_HALTED)) {
- printk(KERN_ERR "%s: trying to download firmware while the "
-@@ -2948,28 +2947,52 @@ static int __devinit ace_load_firmware(struct net_device *dev)
- return -EFAULT;
- }
-
-+ if (ACE_IS_TIGON_I(ap))
-+ fw_name = "acenic_tg1.bin";
-+
-+ ret = request_firmware(&fw, fw_name, &ap->pdev->dev);
-+ if (ret) {
-+ printk(KERN_ERR "%s: Failed to load firmware \"%s\"\n",
-+ ap->name, fw_name);
-+ return ret;
-+ }
-+
-+ fw_data = (void *)fw->data;
-+
-+ /* Firmware blob starts with version numbers, followed by
-+ load and start address. Remainder is the blob to be loaded
-+ contiguously from load address. We don't bother to represent
-+ the BSS/SBSS sections any more, since we were clearing the
-+ whole thing anyway. */
-+ ap->firmware_major = fw->data[0];
-+ ap->firmware_minor = fw->data[1];
-+ ap->firmware_fix = fw->data[2];
-+
-+ ap->firmware_start = le32_to_cpu(fw_data[1]);
-+ if (ap->firmware_start < 0x4000 || ap->firmware_start >= 0x80000) {
-+ printk(KERN_ERR "%s: bogus load address %08x in \"%s\"\n",
-+ ap->name, ap->firmware_start, fw_name);
-+ ret = -EINVAL;
-+ goto out;
-+ }
-+
-+ load_addr = le32_to_cpu(fw_data[2]);
-+ if (load_addr < 0x4000 || load_addr >= 0x80000) {
-+ printk(KERN_ERR "%s: bogus load address %08x in \"%s\"\n",
-+ ap->name, load_addr, fw_name);
-+ ret = -EINVAL;
-+ goto out;
-+ }
-+
- /*
-- * Do not try to clear more than 512KB or we end up seeing
-- * funny things on NICs with only 512KB SRAM
-+ * Do not try to clear more than 512KiB or we end up seeing
-+ * funny things on NICs with only 512KiB SRAM
- */
- ace_clear(regs, 0x2000, 0x80000-0x2000);
-- if (ACE_IS_TIGON_I(ap)) {
-- ace_copy(regs, tigonFwText, tigonFwTextAddr, tigonFwTextLen);
-- ace_copy(regs, tigonFwData, tigonFwDataAddr, tigonFwDataLen);
-- ace_copy(regs, tigonFwRodata, tigonFwRodataAddr,
-- tigonFwRodataLen);
-- ace_clear(regs, tigonFwBssAddr, tigonFwBssLen);
-- ace_clear(regs, tigonFwSbssAddr, tigonFwSbssLen);
-- }else if (ap->version == 2) {
-- ace_clear(regs, tigon2FwBssAddr, tigon2FwBssLen);
-- ace_clear(regs, tigon2FwSbssAddr, tigon2FwSbssLen);
-- ace_copy(regs, tigon2FwText, tigon2FwTextAddr,tigon2FwTextLen);
-- ace_copy(regs, tigon2FwRodata, tigon2FwRodataAddr,
-- tigon2FwRodataLen);
-- ace_copy(regs, tigon2FwData, tigon2FwDataAddr,tigon2FwDataLen);
-- }
--
-- return 0;
-+ ace_copy(regs, &fw_data[3], load_addr, fw->size-12);
-+ out:
-+ release_firmware(fw);
-+ return ret;
- }
-
-
-diff --git a/drivers/net/acenic.h b/drivers/net/acenic.h
-index 60ed183..cf7e80e 100644
---- a/drivers/net/acenic.h
-+++ b/drivers/net/acenic.h
-@@ -695,6 +695,10 @@ struct ace_private
- #endif
- struct net_device_stats stats;
- int pci_using_dac;
-+ u8 firmware_major;
-+ u8 firmware_minor;
-+ u8 firmware_fix;
-+ u32 firmware_start;
- };
-
-
-
diff --git a/patches/features/all/drivers-net-cxgb3-request_firmware.patch b/patches/features/all/drivers-net-cxgb3-request_firmware.patch
deleted file mode 100644
index c6cc980..0000000
--- a/patches/features/all/drivers-net-cxgb3-request_firmware.patch
+++ /dev/null
@@ -1,213 +0,0 @@
-From 70824840b09935e8df8cc9123f1c09400e00b7b5 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Thu, 9 Jul 2009 00:25:04 +0100
-Subject: [PATCH 3/3] cxgb3: Use request_firmware() for EDC PHY code
-
-Adapted from work by Divy Le Ray <divy@chelsio.com>.
----
- drivers/net/Kconfig | 1 -
- drivers/net/cxgb3/adapter.h | 2 +
- drivers/net/cxgb3/ael1002.c | 40 +++++++++++++++++------
- drivers/net/cxgb3/common.h | 10 ++++++
- drivers/net/cxgb3/cxgb3_main.c | 69 ++++++++++++++++++++++++++++++++++++++++
- 5 files changed, 111 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
-index 183479d..c155bd3 100644
---- a/drivers/net/Kconfig
-+++ b/drivers/net/Kconfig
-@@ -2511,7 +2511,6 @@ config CHELSIO_T3_DEPENDS
-
- config CHELSIO_T3
- tristate "Chelsio Communications T3 10Gb Ethernet support"
-- depends on BROKEN
- depends on CHELSIO_T3_DEPENDS
- select FW_LOADER
- select MDIO
-diff --git a/drivers/net/cxgb3/adapter.h b/drivers/net/cxgb3/adapter.h
-index 1694fad..9241c88 100644
---- a/drivers/net/cxgb3/adapter.h
-+++ b/drivers/net/cxgb3/adapter.h
-@@ -312,4 +312,6 @@ int t3_get_desc(const struct sge_qset *qs, unsigned int qnum, unsigned int idx,
- unsigned char *data);
- irqreturn_t t3_sge_intr_msix(int irq, void *cookie);
-
-+int t3_get_edc_fw(struct cphy *phy, int edc_idx, int size);
-+
- #endif /* __T3_ADAPTER_H__ */
-diff --git a/drivers/net/cxgb3/ael1002.c b/drivers/net/cxgb3/ael1002.c
-index 7b0d445..5a4ff80 100644
---- a/drivers/net/cxgb3/ael1002.c
-+++ b/drivers/net/cxgb3/ael1002.c
-@@ -312,9 +312,16 @@ static int ael2005_setup_sr_edc(struct cphy *phy)
-
- msleep(50);
-
-- for (i = 0; i < ARRAY_SIZE(sr_edc) && !err; i += 2)
-- err = t3_mdio_write(phy, MDIO_MMD_PMAPMD, sr_edc[i],
-- sr_edc[i + 1]);
-+ if (phy->priv != edc_sr)
-+ err = t3_get_edc_fw(phy, EDC_OPT_AEL2005,
-+ EDC_OPT_AEL2005_SIZE);
-+ if (err)
-+ return err;
-+
-+ for (i = 0; i < EDC_OPT_AEL2005_SIZE / sizeof(u16) && !err; i += 2)
-+ err = t3_mdio_write(phy, MDIO_MMD_PMAPMD,
-+ phy->phy_cache[i],
-+ phy->phy_cache[i + 1]);
- if (!err)
- phy->priv = edc_sr;
- return err;
-@@ -341,9 +348,16 @@ static int ael2005_setup_twinax_edc(struct cphy *phy, int modtype)
-
- msleep(50);
-
-- for (i = 0; i < ARRAY_SIZE(twinax_edc) && !err; i += 2)
-- err = t3_mdio_write(phy, MDIO_MMD_PMAPMD, twinax_edc[i],
-- twinax_edc[i + 1]);
-+ if (phy->priv != edc_twinax)
-+ err = t3_get_edc_fw(phy, EDC_TWX_AEL2005,
-+ EDC_TWX_AEL2005_SIZE);
-+ if (err)
-+ return err;
-+
-+ for (i = 0; i < EDC_TWX_AEL2005_SIZE / sizeof(u16) && !err; i += 2)
-+ err = t3_mdio_write(phy, MDIO_MMD_PMAPMD,
-+ phy->phy_cache[i],
-+ phy->phy_cache[i + 1]);
- if (!err)
- phy->priv = edc_twinax;
- return err;
-@@ -573,10 +587,16 @@ static int ael2020_setup_twinax_edc(struct cphy *phy, int modtype)
- if (err)
- return err;
-
-- /* write TWINAX EDC firmware into PHY */
-- for (i = 0; i < ARRAY_SIZE(twinax_edc) && !err; i += 2)
-- err = t3_mdio_write(phy, MDIO_MMD_PMAPMD, twinax_edc[i],
-- twinax_edc[i + 1]);
-+ if (phy->priv != edc_twinax)
-+ err = t3_get_edc_fw(phy, EDC_TWX_AEL2020,
-+ EDC_TWX_AEL2020_SIZE);
-+ if (err)
-+ return err;
-+
-+ for (i = 0; i < EDC_TWX_AEL2020_SIZE / sizeof(u16) && !err; i += 2)
-+ err = t3_mdio_write(phy, MDIO_MMD_PMAPMD,
-+ phy->phy_cache[i],
-+ phy->phy_cache[i + 1]);
- /* activate uC */
- err = set_phy_regs(phy, uCactivate);
- if (!err)
-diff --git a/drivers/net/cxgb3/common.h b/drivers/net/cxgb3/common.h
-index d21b705..1b2c305 100644
---- a/drivers/net/cxgb3/common.h
-+++ b/drivers/net/cxgb3/common.h
-@@ -566,6 +566,15 @@ struct cphy_ops {
-
- u32 mmds;
- };
-+enum {
-+ EDC_OPT_AEL2005 = 0,
-+ EDC_OPT_AEL2005_SIZE = 1084,
-+ EDC_TWX_AEL2005 = 1,
-+ EDC_TWX_AEL2005_SIZE = 1464,
-+ EDC_TWX_AEL2020 = 2,
-+ EDC_TWX_AEL2020_SIZE = 1628,
-+ EDC_MAX_SIZE = EDC_TWX_AEL2020_SIZE, /* Max cache size */
-+};
-
- /* A PHY instance */
- struct cphy {
-@@ -577,6 +586,7 @@ struct cphy {
- unsigned long fifo_errors; /* FIFO over/under-flows */
- const struct cphy_ops *ops; /* PHY operations */
- struct mdio_if_info mdio;
-+ u16 phy_cache[EDC_MAX_SIZE]; /* EDC cache */
- };
-
- /* Convenience MDIO read/write wrappers */
-diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c
-index 538dda4..27e7ef5 100644
---- a/drivers/net/cxgb3/cxgb3_main.c
-+++ b/drivers/net/cxgb3/cxgb3_main.c
-@@ -964,6 +964,75 @@ static int bind_qsets(struct adapter *adap)
-
- #define FW_FNAME "cxgb3/t3fw-%d.%d.%d.bin"
- #define TPSRAM_NAME "cxgb3/t3%c_psram-%d.%d.%d.bin"
-+#define AEL2005_OPT_EDC_NAME "cxgb3/ael2005_opt_edc.bin"
-+#define AEL2005_TWX_EDC_NAME "cxgb3/ael2005_twx_edc.bin"
-+#define AEL2020_TWX_EDC_NAME "cxgb3/ael2020_twx_edc.bin"
-+
-+static inline const char *get_edc_fw_name(int edc_idx)
-+{
-+ const char *fw_name = NULL;
-+
-+ switch (edc_idx) {
-+ case EDC_OPT_AEL2005:
-+ fw_name = AEL2005_OPT_EDC_NAME;
-+ break;
-+ case EDC_TWX_AEL2005:
-+ fw_name = AEL2005_TWX_EDC_NAME;
-+ break;
-+ case EDC_TWX_AEL2020:
-+ fw_name = AEL2020_TWX_EDC_NAME;
-+ break;
-+ }
-+ return fw_name;
-+}
-+
-+int t3_get_edc_fw(struct cphy *phy, int edc_idx, int size)
-+{
-+ struct adapter *adapter = phy->adapter;
-+ const struct firmware *fw;
-+ char buf[64];
-+ u32 csum;
-+ const __be32 *p;
-+ u16 *cache = phy->phy_cache;
-+ int i, ret;
-+
-+ snprintf(buf, sizeof(buf), get_edc_fw_name(edc_idx));
-+
-+ ret = request_firmware(&fw, buf, &adapter->pdev->dev);
-+ if (ret < 0) {
-+ dev_err(&adapter->pdev->dev,
-+ "could not upgrade firmware: unable to load %s\n",
-+ buf);
-+ return ret;
-+ }
-+
-+ /* check size, take checksum in account */
-+ if (fw->size > size + 4) {
-+ CH_ERR(adapter, "firmware image too large %u, expected %d\n",
-+ (unsigned int)fw->size, size + 4);
-+ ret = -EINVAL;
-+ }
-+
-+ /* compute checksum */
-+ p = (const __be32 *)fw->data;
-+ for (csum = 0, i = 0; i < fw->size / sizeof(csum); i++)
-+ csum += ntohl(p[i]);
-+
-+ if (csum != 0xffffffff) {
-+ CH_ERR(adapter, "corrupted firmware image, checksum %u\n",
-+ csum);
-+ ret = -EINVAL;
-+ }
-+
-+ for (i = 0; i < size / 4 ; i++) {
-+ *cache++ = (be32_to_cpu(p[i]) & 0xffff0000) >> 16;
-+ *cache++ = be32_to_cpu(p[i]) & 0xffff;
-+ }
-+
-+ release_firmware(fw);
-+
-+ return ret;
-+}
-
- static int upgrade_fw(struct adapter *adap)
- {
---
-1.6.3.3
-
diff --git a/patches/features/all/drivers-staging-rt28x0sta-request_firmware.patch b/patches/features/all/drivers-staging-rt28x0sta-request_firmware.patch
deleted file mode 100644
index e6595b1..0000000
--- a/patches/features/all/drivers-staging-rt28x0sta-request_firmware.patch
+++ /dev/null
@@ -1,280 +0,0 @@
-From a504b7009265d58543dcb3446421da51424241d4 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Sun, 28 Jun 2009 15:51:07 +0100
-Subject: [PATCH] rt2860/2870/3070: use the firmware loader interface and library CRC code
-
-Based on work by Darren Salt <linux@youmustbejoking.demon.co.uk>.
----
- drivers/staging/rt2860/Kconfig | 3 +-
- drivers/staging/rt2860/common/rtmp_init.c | 159 ++++++++++++-----------------
- drivers/staging/rt2870/Kconfig | 3 +-
- drivers/staging/rt3070/Kconfig | 3 +-
- 4 files changed, 70 insertions(+), 98 deletions(-)
-
-diff --git a/drivers/staging/rt2860/Kconfig b/drivers/staging/rt2860/Kconfig
-index 9fb130d..d75a87a 100644
---- a/drivers/staging/rt2860/Kconfig
-+++ b/drivers/staging/rt2860/Kconfig
-@@ -1,6 +1,7 @@
- config RT2860
- tristate "Ralink 2860 wireless support"
-- depends on BROKEN
- depends on PCI && X86 && WLAN_80211
-+ select CRC_ITU_T
-+ select FW_LOADER
- ---help---
- This is an experimental driver for the Ralink 2860 wireless chip.
-diff --git a/drivers/staging/rt2860/common/rtmp_init.c b/drivers/staging/rt2860/common/rtmp_init.c
-index 004f530..f34011c 100644
---- a/drivers/staging/rt2860/common/rtmp_init.c
-+++ b/drivers/staging/rt2860/common/rtmp_init.c
-@@ -38,18 +38,8 @@
- Jan Lee 2006-09-15 RT2860. Change for 802.11n , EEPROM, Led, BA, HT.
- */
- #include "../rt_config.h"
--#ifndef RT30xx
--#ifdef RT2860
--#include "firmware.h"
--#include <linux/bitrev.h>
--#endif
--#ifdef RT2870
--#include "../../rt2870/common/firmware.h"
--#endif
--#endif
--#ifdef RT30xx
--#include "../../rt3070/firmware.h"
--#endif
-+#include <linux/firmware.h>
-+#include <linux/crc-itu-t.h>
-
- UCHAR BIT8[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
- ULONG BIT32[] = {0x00000001, 0x00000002, 0x00000004, 0x00000008,
-@@ -63,59 +53,6 @@ ULONG BIT32[] = {0x00000001, 0x00000002, 0x00000004, 0x00000008,
-
- char* CipherName[] = {"none","wep64","wep128","TKIP","AES","CKIP64","CKIP128"};
-
--const unsigned short ccitt_16Table[] = {
-- 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
-- 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
-- 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
-- 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
-- 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
-- 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
-- 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
-- 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
-- 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
-- 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
-- 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
-- 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
-- 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
-- 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
-- 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
-- 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
-- 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
-- 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
-- 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
-- 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
-- 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
-- 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
-- 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
-- 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
-- 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
-- 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
-- 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
-- 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
-- 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
-- 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
-- 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
-- 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
--};
--#define ByteCRC16(v, crc) \
-- (unsigned short)((crc << 8) ^ ccitt_16Table[((crc >> 8) ^ (v)) & 255])
--
--#ifdef RT2870
--unsigned char BitReverse(unsigned char x)
--{
-- int i;
-- unsigned char Temp=0;
-- for(i=0; ; i++)
-- {
-- if(x & 0x80) Temp |= 0x80;
-- if(i==7) break;
-- x <<= 1;
-- Temp >>= 1;
-- }
-- return Temp;
--}
--#endif
--
- //
- // BBP register initialization set
- //
-@@ -243,12 +180,14 @@ RTMP_REG_PAIR STAMACRegTable[] = {
- // RT2870 Firmware Spec only used 1 oct for version expression
- //
- #define FIRMWARE_MINOR_VERSION 7
--
-+#define FW_FILENAME_V1 "rt2870.bin"
-+#define FW_FILENAME_V2 "rt3071.bin"
-+MODULE_FIRMWARE(FW_FILENAME_V1);
-+MODULE_FIRMWARE(FW_FILENAME_V2);
- #endif // RT2870 //
-
- // New 8k byte firmware size for RT3071/RT3072
- #define FIRMWAREIMAGE_MAX_LENGTH 0x2000
--#define FIRMWAREIMAGE_LENGTH (sizeof (FirmwareImage) / sizeof(UCHAR))
- #define FIRMWARE_MAJOR_VERSION 0
-
- #define FIRMWAREIMAGEV1_LENGTH 0x1000
-@@ -256,6 +195,8 @@ RTMP_REG_PAIR STAMACRegTable[] = {
-
- #ifdef RT2860
- #define FIRMWARE_MINOR_VERSION 2
-+#define FW_FILENAME "rt2860.bin"
-+MODULE_FIRMWARE(FW_FILENAME);
- #endif
-
-
-@@ -3314,45 +3255,67 @@ NDIS_STATUS NICLoadFirmware(
- IN PRTMP_ADAPTER pAd)
- {
- NDIS_STATUS Status = NDIS_STATUS_SUCCESS;
-- PUCHAR pFirmwareImage;
- ULONG FileLength, Index;
-- //ULONG firm;
- UINT32 MacReg = 0;
- #ifdef RT2870
- UINT32 Version = (pAd->MACVersion >> 16);
- #endif // RT2870 //
-+ struct device *dev;
-+ const struct firmware *fw = NULL;
-+ const char *name;
-+ int err;
-
-- pFirmwareImage = FirmwareImage;
-- FileLength = sizeof(FirmwareImage);
-+#ifdef RT2860
-+ dev = &((POS_COOKIE)pAd->OS_Cookie)->pci_dev->dev;
-+ name = FW_FILENAME;
-+ FileLength = MAX_FIRMWARE_IMAGE_SIZE;
-+#endif
- #ifdef RT2870
-- // New 8k byte firmware size for RT3071/RT3072
-- //printk("Usb Chip\n");
-- if (FIRMWAREIMAGE_LENGTH == FIRMWAREIMAGE_MAX_LENGTH)
-- //The firmware image consists of two parts. One is the origianl and the other is the new.
-- //Use Second Part
-- {
-- if ((Version != 0x2860) && (Version != 0x2872) && (Version != 0x3070))
-- { // Use Firmware V2.
-- //printk("KH:Use New Version,part2\n");
-- pFirmwareImage = (PUCHAR)&FirmwareImage[FIRMWAREIMAGEV1_LENGTH];
-- FileLength = FIRMWAREIMAGEV2_LENGTH;
-- }
-- else
-- {
-- //printk("KH:Use New Version,part1\n");
-- pFirmwareImage = FirmwareImage;
-- FileLength = FIRMWAREIMAGEV1_LENGTH;
-- }
-+ dev = &((POS_COOKIE)pAd->OS_Cookie)->pUsb_Dev->dev;
-+ if (Version == 0x2860 || Version == 0x2872 || Version == 0x3070) {
-+ name = FW_FILENAME_V1;
-+ FileLength = FIRMWAREIMAGEV1_LENGTH;
-+ } else {
-+ name = FW_FILENAME_V2;
-+ FileLength = FIRMWAREIMAGEV2_LENGTH;
- }
-- else
-- {
-- DBGPRINT(RT_DEBUG_ERROR, ("KH: bin file should be 8KB.\n"));
-- Status = NDIS_STATUS_FAILURE;
-+#endif
-+
-+ err = request_firmware(&fw, name, dev);
-+ if (err) {
-+ dev_err(dev, "firmware file %s request failed (%d)\n",
-+ name, err);
-+ goto fail;
- }
-
--#endif // RT2870 //
-+ if (fw->size != FileLength) {
-+ dev_err(dev, "firmware file %s size is wrong\n", name);
-+ goto fail;
-+ }
-
-- RT28XX_WRITE_FIRMWARE(pAd, pFirmwareImage, FileLength);
-+ /* is it new enough? */
-+ pAd->FirmwareVersion = (fw->data[fw->size - 4] << 8 |
-+ fw->data[fw->size - 3]);
-+
-+ if (pAd->FirmwareVersion <
-+ (FIRMWARE_MAJOR_VERSION << 8 | FIRMWARE_MINOR_VERSION)) {
-+ dev_err(dev, "rt28x0sta: firmware file %s is too old\n",
-+ name);
-+ goto fail;
-+ }
-+
-+ /* is the internal CRC correct? */
-+ if (crc_itu_t_bitreversed(0xffff, fw->data, fw->size - 2) !=
-+ (bitrev8(fw->data[fw->size - 2]) << 8 |
-+ bitrev8(fw->data[fw->size - 1]))) {
-+ /* CRC fail */
-+ dev_err(dev, "firmware file %s failed internal CRC\n", name);
-+ goto fail;
-+ }
-+
-+ RT28XX_WRITE_FIRMWARE(pAd, fw->data, fw->size);
-+
-+ release_firmware(fw);
-
- /* check if MCU is ready */
- Index = 0;
-@@ -3372,9 +3335,15 @@ NDIS_STATUS NICLoadFirmware(
- DBGPRINT(RT_DEBUG_ERROR, ("NICLoadFirmware: MCU is not ready\n\n\n"));
- } /* End of if */
-
-+out:
- DBGPRINT(RT_DEBUG_TRACE,
- ("<=== %s (status=%d)\n", __func__, Status));
- return Status;
-+
-+fail:
-+ release_firmware(fw);
-+ Status = NDIS_STATUS_FAILURE;
-+ goto out;
- } /* End of NICLoadFirmware */
-
-
-diff --git a/drivers/staging/rt2870/Kconfig b/drivers/staging/rt2870/Kconfig
-index cd4f0b6..59d533d 100644
---- a/drivers/staging/rt2870/Kconfig
-+++ b/drivers/staging/rt2870/Kconfig
-@@ -1,7 +1,8 @@
- config RT2870
- tristate "Ralink 2870 wireless support"
-- depends on BROKEN
- depends on USB && X86 && WLAN_80211
-+ select CRC_ITU_T
-+ select FW_LOADER
- ---help---
- This is an experimental driver for the Ralink 2870 wireless chip.
-
-diff --git a/drivers/staging/rt3070/Kconfig b/drivers/staging/rt3070/Kconfig
-index e414305..7242d5e 100644
---- a/drivers/staging/rt3070/Kconfig
-+++ b/drivers/staging/rt3070/Kconfig
-@@ -1,7 +1,8 @@
- config RT3070
- tristate "Ralink 3070 wireless support"
-- depends on BROKEN
- depends on USB && X86 && WLAN_80211
-+ select CRC_ITU_T
-+ select FW_LOADER
- ---help---
- This is an experimental driver for the Ralink 3070 wireless chip.
-
---
-1.6.3.1
-
diff --git a/patches/features/all/export-unionfs-symbols.patch b/patches/features/all/export-unionfs-symbols.patch
deleted file mode 100644
index 29c7e45..0000000
--- a/patches/features/all/export-unionfs-symbols.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Naurp linux-2.6.orig/fs/namei.c linux-2.6/fs/namei.c
---- linux-2.6.orig/fs/namei.c 2008-01-24 22:58:37.000000000 +0000
-+++ linux-2.6/fs/namei.c 2008-02-11 19:53:38.000000000 +0000
-@@ -389,6 +389,7 @@ void release_open_intent(struct nameidat
- else
- fput(nd->intent.open.file);
- }
-+EXPORT_SYMBOL_GPL(release_open_intent);
-
- static inline struct dentry *
- do_revalidate(struct dentry *dentry, struct nameidata *nd)
diff --git a/patches/features/all/i915-autoload-without-CONFIG_DRM_I915_KMS.patch b/patches/features/all/i915-autoload-without-CONFIG_DRM_I915_KMS.patch
new file mode 100644
index 0000000..dc47804
--- /dev/null
+++ b/patches/features/all/i915-autoload-without-CONFIG_DRM_I915_KMS.patch
@@ -0,0 +1,12 @@
+--- a/drivers/gpu/drm/i915/i915_drv.c
++++ b/drivers/gpu/drm/i915/i915_drv.c
+@@ -52,9 +52,7 @@ static struct pci_device_id pciidlist[] = {
+ {0, 0, 0}
+ };
+
+-#if defined(CONFIG_DRM_I915_KMS)
+ MODULE_DEVICE_TABLE(pci, pciidlist);
+-#endif
+
+ static int i915_drm_freeze(struct drm_device *dev)
+ {
diff --git a/patches/features/all/lgs8gxx-lgs8g75-request_firmware.patch b/patches/features/all/lgs8gxx-lgs8g75-request_firmware.patch
new file mode 100644
index 0000000..6dd7892
--- /dev/null
+++ b/patches/features/all/lgs8gxx-lgs8g75-request_firmware.patch
@@ -0,0 +1,99 @@
+From 04a2710a7de7f20ceec7f30c9e56d01d20284b15 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sun, 1 Nov 2009 02:12:10 +0000
+Subject: [PATCH 20/24] V4L/DVB: lgs8gxx: remove firmware for lgs8g75
+
+The recently added support for lgs8g75 included some 8051 machine code
+without accompanying source code. Replace this with use of the
+firmware loader.
+
+Compile-tested only.
+---
+ drivers/media/dvb/frontends/Kconfig | 1 +
+ drivers/media/dvb/frontends/lgs8gxx.c | 23 ++++++++++-------------
+ 2 files changed, 11 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/media/dvb/frontends/Kconfig b/drivers/media/dvb/frontends/Kconfig
+index d7c4837..26b00ab 100644
+--- a/drivers/media/dvb/frontends/Kconfig
++++ b/drivers/media/dvb/frontends/Kconfig
+@@ -553,6 +553,7 @@ config DVB_LGS8GL5
+ config DVB_LGS8GXX
+ tristate "Legend Silicon LGS8913/LGS8GL5/LGS8GXX DMB-TH demodulator"
+ depends on DVB_CORE && I2C
++ select FW_LOADER
+ default m if DVB_FE_CUSTOMISE
+ help
+ A DMB-TH tuner module. Say Y when you want to support this frontend.
+diff --git a/drivers/media/dvb/frontends/lgs8gxx.c b/drivers/media/dvb/frontends/lgs8gxx.c
+index ba74df0..1bfcf85 100644
+--- a/drivers/media/dvb/frontends/lgs8gxx.c
++++ b/drivers/media/dvb/frontends/lgs8gxx.c
+@@ -24,6 +24,7 @@
+ */
+
+ #include <asm/div64.h>
++#include <linux/firmware.h>
+
+ #include "dvb_frontend.h"
+
+@@ -589,12 +590,16 @@ static int lgs8913_init(struct lgs8gxx_state *priv)
+ return 0;
+ }
+
+-#ifdef CONFIG_BROKEN
+ static int lgs8g75_init_data(struct lgs8gxx_state *priv)
+ {
+- const u8 *p = lgs8g75_initdat;
++ const struct firmware *fw;
++ int rc;
+ int i;
+
++ rc = request_firmware(&fw, "lgs8g75.fw", &priv->i2c->dev);
++ if (rc)
++ return rc;
++
+ lgs8gxx_write_reg(priv, 0xC6, 0x40);
+
+ lgs8gxx_write_reg(priv, 0x3D, 0x04);
+@@ -605,19 +610,18 @@ static int lgs8g75_init_data(struct lgs8gxx_state *priv)
+ lgs8gxx_write_reg(priv, 0x3B, 0x00);
+ lgs8gxx_write_reg(priv, 0x38, 0x00);
+
+- for (i = 0; i < sizeof(lgs8g75_initdat); i++) {
++ for (i = 0; i < fw->size; i++) {
+ lgs8gxx_write_reg(priv, 0x38, 0x00);
+ lgs8gxx_write_reg(priv, 0x3A, (u8)(i&0xff));
+ lgs8gxx_write_reg(priv, 0x3B, (u8)(i>>8));
+- lgs8gxx_write_reg(priv, 0x3C, *p);
+- p++;
++ lgs8gxx_write_reg(priv, 0x3C, fw->data[i]);
+ }
+
+ lgs8gxx_write_reg(priv, 0x38, 0x00);
+
++ release_firmware(fw);
+ return 0;
+ }
+-#endif
+
+ static int lgs8gxx_init(struct dvb_frontend *fe)
+ {
+@@ -1055,14 +1059,7 @@ struct dvb_frontend *lgs8gxx_attach(const struct lgs8gxx_config *config,
+ priv->frontend.demodulator_priv = priv;
+
+ if (config->prod == LGS8GXX_PROD_LGS8G75)
+-#ifdef CONFIG_BROKEN
+ lgs8g75_init_data(priv);
+-#else
+- {
+- dprintk("lgs8g75 firmware not available\n");
+- goto error_out;
+- }
+-#endif
+
+ return &priv->frontend;
+
+--
+1.6.5.2
+
diff --git a/patches/features/all/lib-crcitut-bit-reversed.patch b/patches/features/all/lib-crcitut-bit-reversed.patch
deleted file mode 100644
index 358c0d8..0000000
--- a/patches/features/all/lib-crcitut-bit-reversed.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From c450dd0d27ff5cd7b83084e381e0cc808db2554e Mon Sep 17 00:00:00 2001
-From: Darren Salt <linux@youmustbejoking.demon.co.uk>
-Date: Sat, 11 Apr 2009 15:40:04 +0100
-Subject: [PATCH] crc-itu-t: add bit-reversed calculation
-
-Signed-off-by: Darren Salt <linux@youmustbejoking.demon.co.uk>
----
- include/linux/crc-itu-t.h | 10 ++++++++++
- lib/crc-itu-t.c | 18 ++++++++++++++++++
- 2 files changed, 28 insertions(+), 0 deletions(-)
-
-diff --git a/include/linux/crc-itu-t.h b/include/linux/crc-itu-t.h
-index 84920f3..7b2b7ba 100644
---- a/include/linux/crc-itu-t.h
-+++ b/include/linux/crc-itu-t.h
-@@ -6,6 +6,9 @@
- * Poly 0x0x1021 (x^16 + x^12 + x^15 + 1)
- * Init 0
- *
-+ * The bit-reversed buffer variants may be non-standard, but some firmware
-+ * loaders require them.
-+ *
- * This source code is licensed under the GNU General Public License,
- * Version 2. See the file COPYING for more details.
- */
-@@ -14,15 +17,22 @@
- #define CRC_ITU_T_H
-
- #include <linux/types.h>
-+#include <linux/bitrev.h>
-
- extern u16 const crc_itu_t_table[256];
-
- extern u16 crc_itu_t(u16 crc, const u8 *buffer, size_t len);
-+extern u16 crc_itu_t_bitreversed(u16 crc, const u8 *buffer, size_t len);
-
- static inline u16 crc_itu_t_byte(u16 crc, const u8 data)
- {
- return (crc << 8) ^ crc_itu_t_table[((crc >> 8) ^ data) & 0xff];
- }
-
-+static inline u16 crc_itu_t_bitreversed_byte(u16 crc, const u8 data)
-+{
-+ return (crc << 8) ^ crc_itu_t_table[((crc >> 8) ^ bitrev8(data)) & 0xff];
-+}
-+
- #endif /* CRC_ITU_T_H */
-
-diff --git a/lib/crc-itu-t.c b/lib/crc-itu-t.c
-index a63472b..886981e 100644
---- a/lib/crc-itu-t.c
-+++ b/lib/crc-itu-t.c
-@@ -64,6 +64,23 @@ u16 crc_itu_t(u16 crc, const u8 *buffer, size_t len)
- }
- EXPORT_SYMBOL(crc_itu_t);
-
-+/**
-+ * crc_itu_t_bitreversed - Compute the CRC-ITU-T for a bit-reversed data buffer
-+ *
-+ * @crc: previous CRC value
-+ * @buffer: data pointer
-+ * @len: number of bytes in the buffer
-+ *
-+ * Returns the updated CRC value
-+ */
-+u16 crc_itu_t_bitreversed(u16 crc, const u8 *buffer, size_t len)
-+{
-+ while (len--)
-+ crc = crc_itu_t_bitreversed_byte(crc, *buffer++);
-+ return crc;
-+}
-+EXPORT_SYMBOL(crc_itu_t_bitreversed);
-+
- MODULE_DESCRIPTION("CRC ITU-T V.41 calculations");
- MODULE_LICENSE("GPL");
-
---
-1.5.6.5
-
diff --git a/patches/features/all/module-firmware/0025-tty-declare-MODULE_FIRMWARE-in-various-drivers.patch b/patches/features/all/module-firmware/0025-tty-declare-MODULE_FIRMWARE-in-various-drivers.patch
new file mode 100644
index 0000000..682aaa7
--- /dev/null
+++ b/patches/features/all/module-firmware/0025-tty-declare-MODULE_FIRMWARE-in-various-drivers.patch
@@ -0,0 +1,69 @@
+Based on:
+
+From: Ben Hutchings <ben@decadent.org.uk>
+Subject: [PATCH] tty: declare MODULE_FIRMWARE in various drivers
+
+--- a/drivers/char/cyclades.c
++++ b/drivers/char/cyclades.c
+@@ -4195,3 +4195,4 @@ module_exit(cy_cleanup_module);
+ MODULE_LICENSE("GPL");
+ MODULE_VERSION(CY_VERSION);
+ MODULE_ALIAS_CHARDEV_MAJOR(CYCLADES_MAJOR);
++MODULE_FIRMWARE("cyzfirm.bin");
+--- a/drivers/char/ip2/ip2main.c
++++ b/drivers/char/ip2/ip2main.c
+@@ -3196,3 +3196,5 @@ static struct pci_device_id ip2main_pci_tbl[] __devinitdata = {
+ };
+
+ MODULE_DEVICE_TABLE(pci, ip2main_pci_tbl);
++
++MODULE_FIRMWARE("intelliport2.bin");
+--- a/drivers/char/isicom.c
++++ b/drivers/char/isicom.c
+@@ -1720,3 +1720,8 @@ module_exit(isicom_exit);
+ MODULE_AUTHOR("MultiTech");
+ MODULE_DESCRIPTION("Driver for the ISI series of cards by MultiTech");
+ MODULE_LICENSE("GPL");
++MODULE_FIRMWARE("isi608.bin");
++MODULE_FIRMWARE("isi608em.bin");
++MODULE_FIRMWARE("isi616em.bin");
++MODULE_FIRMWARE("isi4608.bin");
++MODULE_FIRMWARE("isi4616.bin");
+--- a/drivers/char/moxa.c
++++ b/drivers/char/moxa.c
+@@ -172,6 +172,9 @@ static unsigned int numports[MAX_BOARDS];
+ MODULE_AUTHOR("William Chen");
+ MODULE_DESCRIPTION("MOXA Intellio Family Multiport Board Device Driver");
+ MODULE_LICENSE("GPL");
++MODULE_FIRMWARE("c218tunx.cod");
++MODULE_FIRMWARE("cp204unx.cod");
++MODULE_FIRMWARE("c320tunx.cod");
+ #ifdef MODULE
+ module_param_array(type, uint, NULL, 0);
+ MODULE_PARM_DESC(type, "card type: C218=2, C320=4");
+--- a/drivers/serial/icom.c
++++ b/drivers/serial/icom.c
+@@ -1654,4 +1654,6 @@ MODULE_DESCRIPTION("IBM iSeries Serial IOA driver");
+ MODULE_SUPPORTED_DEVICE
+ ("IBM iSeries 2745, 2771, 2772, 2742, 2793 and 2805 Communications adapters");
+ MODULE_LICENSE("GPL");
+-
++MODULE_FIRMWARE("icom_call_setup.bin");
++MODULE_FIRMWARE("icom_res_dce.bin");
++MODULE_FIRMWARE("icom_asc.bin");
+--- a/drivers/usb/serial/keyspan_pda.c
++++ b/drivers/usb/serial/keyspan_pda.c
+@@ -789,6 +789,13 @@ static int keyspan_pda_fake_startup(struct usb_serial *serial)
+ return 1;
+ }
+
++#ifdef KEYSPAN
++MODULE_FIRMWARE("keyspan_pda/keyspan_pda.fw");
++#endif
++#ifdef XIRCOM
++MODULE_FIRMWARE("keyspan_pda/xircom_pgs.fw");
++#endif
++
+ static int keyspan_pda_startup(struct usb_serial *serial)
+ {
+
diff --git a/patches/features/all/module-firmware/0026-staging-declare-MODULE_FIRMWARE-in-various-drivers.patch b/patches/features/all/module-firmware/0026-staging-declare-MODULE_FIRMWARE-in-various-drivers.patch
new file mode 100644
index 0000000..4f42303
--- /dev/null
+++ b/patches/features/all/module-firmware/0026-staging-declare-MODULE_FIRMWARE-in-various-drivers.patch
@@ -0,0 +1,97 @@
+Based on:
+
+From: Ben Hutchings <ben@decadent.org.uk>
+Subject: [PATCH] staging: declare MODULE_FIRMWARE in various drivers
+
+--- a/drivers/staging/comedi/drivers/jr3_pci.c
++++ b/drivers/staging/comedi/drivers/jr3_pci.c
+@@ -954,6 +954,8 @@ out:
+ return result;
+ }
+
++MODULE_FIRMWARE("comedi/jr3pci.idm");
++
+ static int jr3_pci_detach(struct comedi_device *dev)
+ {
+ int i;
+--- a/drivers/staging/go7007/go7007-driver.c
++++ b/drivers/staging/go7007/go7007-driver.c
+@@ -128,6 +128,8 @@ static int go7007_load_encoder(struct go7007 *go)
+ return rv;
+ }
+
++MODULE_FIRMWARE("go7007fw.bin");
++
+ /*
+ * Boot the encoder and register the I2C adapter if requested. Do the
+ * minimum initialization necessary, since the board-specific code may
+--- a/drivers/staging/go7007/go7007-usb.c
++++ b/drivers/staging/go7007/go7007-usb.c
+@@ -444,6 +444,8 @@ static struct go7007_usb_board board_sensoray_2250 = {
+ },
+ };
+
++MODULE_FIRMWARE("go7007tv.bin");
++
+ static struct usb_device_id go7007_usb_id_table[] = {
+ {
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION |
+--- a/drivers/staging/go7007/saa7134-go7007.c
++++ b/drivers/staging/go7007/saa7134-go7007.c
+@@ -84,6 +84,7 @@ static struct go7007_board_info board_voyager = {
+ },
+ },
+ };
++MODULE_FIRMWARE("go7007tv.bin");
+
+ /********************* Driver for GPIO HPI interface *********************/
+
+--- a/drivers/staging/rtl8192e/r819xE_firmware.c
++++ b/drivers/staging/rtl8192e/r819xE_firmware.c
+@@ -365,3 +365,7 @@ download_firmware_fail:
+ return rt_status;
+
+ }
++
++MODULE_FIRMWARE("RTL8192E/boot.img");
++MODULE_FIRMWARE("RTL8192E/main.img");
++MODULE_FIRMWARE("RTL8192E/data.img");
+--- a/drivers/staging/rtl8192su/r8192S_firmware.c
++++ b/drivers/staging/rtl8192su/r8192S_firmware.c
+@@ -538,3 +538,4 @@ bool FirmwareDownload92S(struct net_device *dev)
+ return rtStatus;
+ }
+
++MODULE_FIRMWARE("RTL8192SU/rtl8192sfw.bin");
+--- a/drivers/staging/slicoss/slicoss.c
++++ b/drivers/staging/slicoss/slicoss.c
+@@ -1866,6 +1866,9 @@ static int slic_card_download_gbrcv(struct adapter *adapter)
+ return 0;
+ }
+
++MODULE_FIRMWARE("slicoss/oasisrcvucode.sys");
++MODULE_FIRMWARE("slicoss/gbrcvucode.sys");
++
+ static int slic_card_download(struct adapter *adapter)
+ {
+ const struct firmware *fw;
+@@ -1977,6 +1980,9 @@ static int slic_card_download(struct adapter *adapter)
+ return STATUS_SUCCESS;
+ }
+
++MODULE_FIRMWARE("slicoss/oasisdownload.sys");
++MODULE_FIRMWARE("slicoss/gbdownload.sys");
++
+ static void slic_adapter_set_hwaddr(struct adapter *adapter)
+ {
+ struct sliccard *card = adapter->card;
+--- a/drivers/staging/wlan-ng/prism2fw.c
++++ b/drivers/staging/wlan-ng/prism2fw.c
+@@ -53,6 +53,7 @@
+ /* Local Constants */
+
+ #define PRISM2_USB_FWFILE "prism2_ru.fw"
++MODULE_FIRMWARE(PRISM2_USB_FWFILE);
+
+ #define S3DATA_MAX 5000
+ #define S3PLUG_MAX 200
diff --git a/patches/features/all/module-firmware/0027-sep-include-driver-name-in-firmware-filenames.patch b/patches/features/all/module-firmware/0027-sep-include-driver-name-in-firmware-filenames.patch
new file mode 100644
index 0000000..789841e
--- /dev/null
+++ b/patches/features/all/module-firmware/0027-sep-include-driver-name-in-firmware-filenames.patch
@@ -0,0 +1,29 @@
+From 9210aeb3bd3ad862f2063b7128ba4b33799b4092 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sat, 7 Nov 2009 20:09:26 +0000
+Subject: [PATCH] sep: include driver name in firmware filenames
+
+The current names "cache.image.bin" and "resident.image.bin" are far
+too generic.
+---
+ drivers/staging/sep/sep_driver.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/staging/sep/sep_driver.c b/drivers/staging/sep/sep_driver.c
+index e7bc9ec..6b763b7 100644
+--- a/drivers/staging/sep/sep_driver.c
++++ b/drivers/staging/sep/sep_driver.c
+@@ -182,8 +182,8 @@ static DECLARE_WAIT_QUEUE_HEAD(sep_event);
+ static int sep_load_firmware(struct sep_device *sep)
+ {
+ const struct firmware *fw;
+- char *cache_name = "cache.image.bin";
+- char *res_name = "resident.image.bin";
++ char *cache_name = "sep/cache.image.bin";
++ char *res_name = "sep/resident.image.bin";
+ int error;
+
+ edbg("SEP Driver:rar_virtual is %p\n", sep->rar_addr);
+--
+1.6.6
+
diff --git a/patches/features/all/module-firmware/0028-sep-declare-MODULE_FIRMWARE.patch b/patches/features/all/module-firmware/0028-sep-declare-MODULE_FIRMWARE.patch
new file mode 100644
index 0000000..4c06ba3
--- /dev/null
+++ b/patches/features/all/module-firmware/0028-sep-declare-MODULE_FIRMWARE.patch
@@ -0,0 +1,26 @@
+From 94820c94108bf46801939d3e342e9a07a81da64e Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sat, 7 Nov 2009 20:10:23 +0000
+Subject: [PATCH] sep: declare MODULE_FIRMWARE
+
+---
+ drivers/staging/sep/sep_driver.c | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/staging/sep/sep_driver.c b/drivers/staging/sep/sep_driver.c
+index 6b763b7..916a9c1 100644
+--- a/drivers/staging/sep/sep_driver.c
++++ b/drivers/staging/sep/sep_driver.c
+@@ -222,6 +222,9 @@ static int sep_load_firmware(struct sep_device *sep)
+ return 0;
+ }
+
++MODULE_FIRMWARE("sep/cache.image.bin");
++MODULE_FIRMWARE("sep/resident.image.bin");
++
+ /**
+ * sep_map_and_alloc_shared_area - allocate shared block
+ * @sep: security processor
+--
+1.6.6
+
diff --git a/patches/features/all/module-firmware/0029-isight-firmware-declare-MODULE_FIRMWARE.patch b/patches/features/all/module-firmware/0029-isight-firmware-declare-MODULE_FIRMWARE.patch
new file mode 100644
index 0000000..548c290
--- /dev/null
+++ b/patches/features/all/module-firmware/0029-isight-firmware-declare-MODULE_FIRMWARE.patch
@@ -0,0 +1,25 @@
+From 34e37eaacc94a27d50151d1ab4fae67f1c3ffda5 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sat, 7 Nov 2009 20:21:37 +0000
+Subject: [PATCH] isight-firmware: declare MODULE_FIRMWARE
+
+---
+ drivers/usb/misc/isight_firmware.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/usb/misc/isight_firmware.c b/drivers/usb/misc/isight_firmware.c
+index b897f65..1a88e27 100644
+--- a/drivers/usb/misc/isight_firmware.c
++++ b/drivers/usb/misc/isight_firmware.c
+@@ -112,6 +112,8 @@ out:
+ return ret;
+ }
+
++MODULE_FIRMWARE("isight.fw");
++
+ static void isight_firmware_disconnect(struct usb_interface *intf)
+ {
+ }
+--
+1.6.6
+
diff --git a/patches/features/all/r8169-rtl8168d-1-2-request_firmware-2.patch b/patches/features/all/r8169-rtl8168d-1-2-request_firmware-2.patch
new file mode 100644
index 0000000..3926b4a
--- /dev/null
+++ b/patches/features/all/r8169-rtl8168d-1-2-request_firmware-2.patch
@@ -0,0 +1,135 @@
+From: Ben Hutchings <ben@decadent.org.uk>
+Subject: [PATCH] r8169: remove firmware for RTL8169D PHY
+
+The recently added support for RTL8169D chips included some machine
+code without accompanying source code. Replace this with use of the
+firmware loader.
+
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -2172,6 +2172,7 @@ config R8169
+ depends on PCI
+ select CRC32
+ select MII
++ select FW_LOADER
+ ---help---
+ Say Y here if you have a Realtek 8169 PCI Gigabit Ethernet adapter.
+
+--- a/drivers/net/r8169.c
++++ b/drivers/net/r8169.c
+@@ -23,6 +23,7 @@
+ #include <linux/tcp.h>
+ #include <linux/init.h>
+ #include <linux/dma-mapping.h>
++#include <linux/firmware.h>
+
+ #include <asm/system.h>
+ #include <asm/io.h>
+@@ -1359,6 +1360,23 @@ static void rtl_phy_write(void __iomem *ioaddr, struct phy_reg *regs, int len)
+ }
+ }
+
++struct phy_reg_le {
++ __le16 reg;
++ __le16 val;
++};
++
++static void rtl_phy_write_fw(void __iomem *ioaddr, const struct firmware *fw)
++{
++ const struct phy_reg_le *regs = (const struct phy_reg_le *)fw->data;
++ size_t len = fw->size / sizeof(*regs);
++
++ while (len-- > 0) {
++ mdio_write(ioaddr, le16_to_cpu(regs->reg),
++ le16_to_cpu(regs->val));
++ regs++;
++ }
++}
++
+ static void rtl8169s_hw_phy_config(void __iomem *ioaddr)
+ {
+ static const struct phy_reg phy_reg_init[] = {
+@@ -1691,7 +1709,7 @@ static void rtl8168c_4_hw_phy_config(void __iomem *ioaddr)
+ rtl8168c_3_hw_phy_config(ioaddr);
+ }
+
+-static void rtl8168d_1_hw_phy_config(void __iomem *ioaddr)
++static void rtl8168d_1_hw_phy_config(struct rtl8169_private *tp)
+ {
+ static const struct phy_reg phy_reg_init_0[] = {
+ { 0x1f, 0x0001 },
+@@ -1719,6 +1737,8 @@ static void rtl8168d_1_hw_phy_config(void __iomem *ioaddr)
+ { 0x05, 0x8332 },
+ { 0x06, 0x5561 }
+ };
++ void __iomem *ioaddr = tp->mmio_addr;
++ const struct firmware *fw;
+
+ rtl_phy_write(ioaddr, phy_reg_init_0, ARRAY_SIZE(phy_reg_init_0));
+
+@@ -1776,12 +1801,18 @@ static void rtl8168d_1_hw_phy_config(void __iomem *ioaddr)
+ mdio_plus_minus(ioaddr, 0x02, 0x0100, 0x0600);
+ mdio_plus_minus(ioaddr, 0x03, 0x0000, 0xe000);
+
+-#ifdef CONFIG_BROKEN
+- rtl_phy_write(ioaddr, phy_reg_init_2, ARRAY_SIZE(phy_reg_init_2));
+-#endif
++ if (request_firmware(&fw, "rtl8168d-1.fw", &tp->pci_dev->dev) == 0) {
++ rtl_phy_write_fw(ioaddr, fw);
++ release_firmware(fw);
++ } else {
++ printk(KERN_WARNING "%s: unable to apply firmware patch\n",
++ tp->dev->name);
++ }
+ }
+
+-static void rtl8168d_2_hw_phy_config(void __iomem *ioaddr)
++MODULE_FIRMWARE("rtl8168d-1.fw");
++
++static void rtl8168d_2_hw_phy_config(struct rtl8169_private *tp)
+ {
+ static const struct phy_reg phy_reg_init_0[] = {
+ { 0x1f, 0x0001 },
+@@ -1808,6 +1836,8 @@ static void rtl8168d_2_hw_phy_config(void __iomem *ioaddr)
+ { 0x05, 0x8332 },
+ { 0x06, 0x5561 }
+ };
++ void __iomem *ioaddr = tp->mmio_addr;
++ const struct firmware *fw;
+
+ rtl_phy_write(ioaddr, phy_reg_init_0, ARRAY_SIZE(phy_reg_init_0));
+
+@@ -1861,11 +1896,17 @@ static void rtl8168d_2_hw_phy_config(void __iomem *ioaddr)
+ mdio_write(ioaddr, 0x1f, 0x0002);
+ mdio_patch(ioaddr, 0x0f, 0x0017);
+
+-#ifdef CONFIG_BROKEN
+- rtl_phy_write(ioaddr, phy_reg_init_1, ARRAY_SIZE(phy_reg_init_1));
+-#endif
++ if (request_firmware(&fw, "rtl8168d-2.fw", &tp->pci_dev->dev) == 0) {
++ rtl_phy_write_fw(ioaddr, fw);
++ release_firmware(fw);
++ } else {
++ printk(KERN_WARNING "%s: unable to apply firmware patch\n",
++ tp->dev->name);
++ }
+ }
+
++MODULE_FIRMWARE("rtl8168d-2.fw");
++
+ static void rtl8168d_3_hw_phy_config(void __iomem *ioaddr)
+ {
+ static const struct phy_reg phy_reg_init[] = {
+@@ -2001,10 +2039,10 @@ static int rtl_hw_phy_config(struct net_device *dev)
+ rtl8168cp_2_hw_phy_config(ioaddr);
+ break;
+ case RTL_GIGA_MAC_VER_25:
+- rtl8168d_1_hw_phy_config(ioaddr);
++ rtl8168d_1_hw_phy_config(tp);
+ break;
+ case RTL_GIGA_MAC_VER_26:
+- rtl8168d_2_hw_phy_config(ioaddr);
++ rtl8168d_2_hw_phy_config(tp);
+ break;
+ case RTL_GIGA_MAC_VER_27:
+ rtl8168d_3_hw_phy_config(ioaddr);
diff --git a/patches/features/all/rt28x0sta-constify-RTUSBMultiWrite-RTUSBFirmwareWrite.patch b/patches/features/all/rt28x0sta-constify-RTUSBMultiWrite-RTUSBFirmwareWrite.patch
new file mode 100644
index 0000000..1ff6caf
--- /dev/null
+++ b/patches/features/all/rt28x0sta-constify-RTUSBMultiWrite-RTUSBFirmwareWrite.patch
@@ -0,0 +1,87 @@
+From fb9c62c3bbf88aa3a3c9bb0c9feb26740eb29ddf Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Mon, 18 Jan 2010 02:50:24 +0000
+Subject: [PATCH] Staging: rt2870sta: constify RTUSBMultiWrite(), RTUSBFirmwareWrite()
+
+These functions do not modify the data they are passed.
+
+Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/staging/rt2860/rtmp.h | 6 +++---
+ drivers/staging/rt2870/common/rtusb_io.c | 10 +++++-----
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/staging/rt2860/rtmp.h b/drivers/staging/rt2860/rtmp.h
+index c50abf4..6c6503d 100644
+--- a/drivers/staging/rt2860/rtmp.h
++++ b/drivers/staging/rt2860/rtmp.h
+@@ -4043,10 +4043,10 @@ int RTUSBMultiRead(struct rt_rtmp_adapter *pAd,
+ u16 Offset, u8 *pData, u16 length);
+
+ int RTUSBMultiWrite(struct rt_rtmp_adapter *pAd,
+- u16 Offset, u8 *pData, u16 length);
++ u16 Offset, const u8 *pData, u16 length);
+
+ int RTUSBMultiWrite_OneByte(struct rt_rtmp_adapter *pAd,
+- u16 Offset, u8 *pData);
++ u16 Offset, const u8 *pData);
+
+ int RTUSBReadBBPRegister(struct rt_rtmp_adapter *pAd,
+ u8 Id, u8 *pValue);
+@@ -4112,7 +4112,7 @@ int RTUSBSingleWrite(struct rt_rtmp_adapter *pAd,
+ u16 Offset, u16 Value);
+
+ int RTUSBFirmwareWrite(struct rt_rtmp_adapter *pAd,
+- u8 *pFwImage, unsigned long FwLen);
++ const u8 *pFwImage, unsigned long FwLen);
+
+ int RTUSBVenderReset(struct rt_rtmp_adapter *pAd);
+
+diff --git a/drivers/staging/rt2870/common/rtusb_io.c b/drivers/staging/rt2870/common/rtusb_io.c
+index 34443f2..cf0d2f5 100644
+--- a/drivers/staging/rt2870/common/rtusb_io.c
++++ b/drivers/staging/rt2870/common/rtusb_io.c
+@@ -84,7 +84,7 @@ static int RTUSBFirmwareRun(struct rt_rtmp_adapter *pAd)
+ ========================================================================
+ */
+ int RTUSBFirmwareWrite(struct rt_rtmp_adapter *pAd,
+- u8 *pFwImage, unsigned long FwLen)
++ const u8 *pFwImage, unsigned long FwLen)
+ {
+ u32 MacReg;
+ int Status;
+@@ -167,7 +167,7 @@ int RTUSBMultiRead(struct rt_rtmp_adapter *pAd,
+ ========================================================================
+ */
+ int RTUSBMultiWrite_OneByte(struct rt_rtmp_adapter *pAd,
+- u16 Offset, u8 *pData)
++ u16 Offset, const u8 *pData)
+ {
+ int Status;
+
+@@ -175,18 +175,18 @@ int RTUSBMultiWrite_OneByte(struct rt_rtmp_adapter *pAd,
+ Status = RTUSB_VendorRequest(pAd,
+ USBD_TRANSFER_DIRECTION_OUT,
+ DEVICE_VENDOR_REQUEST_OUT,
+- 0x6, 0, Offset, pData, 1);
++ 0x6, 0, Offset, (u8 *)pData, 1);
+
+ return Status;
+ }
+
+ int RTUSBMultiWrite(struct rt_rtmp_adapter *pAd,
+- u16 Offset, u8 *pData, u16 length)
++ u16 Offset, const u8 *pData, u16 length)
+ {
+ int Status;
+
+ u16 index = 0, Value;
+- u8 *pSrc = pData;
++ const u8 *pSrc = pData;
+ u16 resude = 0;
+
+ resude = length % 2;
+--
+1.6.6.2
+
diff --git a/patches/features/all/rt28x0sta-use-request_firmware.patch b/patches/features/all/rt28x0sta-use-request_firmware.patch
new file mode 100644
index 0000000..6c7ef5c
--- /dev/null
+++ b/patches/features/all/rt28x0sta-use-request_firmware.patch
@@ -0,0 +1,260 @@
+From: Ben Hutchings <ben@decadent.org.uk>
+Subject: [PATCH] Staging: rt{2860,2870}sta: Use request_firmware() to load firmware
+
+When originally introduced into staging, these drivers had custom
+firmware-loading code which checked a version number and CRC at the
+end of each blob. This reintroduces those checks, using crc-ccitt
+instead of custom code.
+
+The removed firmware will be added to the linux-firmware.git
+repository.
+
+Based on work by Darren Salt <linux@youmustbejoking.demon.co.uk>.
+
+--- a/drivers/staging/rt2860/Kconfig
++++ b/drivers/staging/rt2860/Kconfig
+@@ -3,6 +3,8 @@ config RT2860
+ depends on PCI && X86 && WLAN
+ select WIRELESS_EXT
+ select WEXT_PRIV
++ select CRC_CCITT
++ select FW_LOADER
+ ---help---
+ This is an experimental driver for the Ralink 2860 and 3090
+ wireless chips.
+--- a/drivers/staging/rt2860/common/rtmp_mcu.c
++++ b/drivers/staging/rt2860/common/rtmp_mcu.c
+@@ -37,35 +37,38 @@
+
+ #include "../rt_config.h"
+
+-#if defined(RT2860) || defined(RT3090)
+-#include "firmware.h"
+-#include "../../rt3090/firmware.h"
+-#endif
+-#ifdef RT2870
+-#include "../../rt3070/firmware.h"
+-#include "firmware_3070.h"
+-#endif
+-
+-#include <linux/bitrev.h>
++#include <linux/crc-ccitt.h>
++#include <linux/firmware.h>
+
+ #ifdef RTMP_MAC_USB
+-/* */
+-/* RT2870 Firmware Spec only used 1 oct for version expression */
+-/* */
+-#define FIRMWARE_MINOR_VERSION 7
+-#endif /* RTMP_MAC_USB // */
+
+-/* New 8k byte firmware size for RT3071/RT3072 */
+-#define FIRMWAREIMAGE_MAX_LENGTH 0x2000
+-#define FIRMWAREIMAGE_LENGTH (sizeof (FirmwareImage) / sizeof(u8))
+-#define FIRMWARE_MAJOR_VERSION 0
++#define FIRMWAREIMAGE_LENGTH 0x1000
+
+-#define FIRMWAREIMAGEV1_LENGTH 0x1000
+-#define FIRMWAREIMAGEV2_LENGTH 0x1000
++#define FIRMWARE_2870_MIN_VERSION 12
++#define FIRMWARE_2870_FILENAME "rt2870.bin"
++MODULE_FIRMWARE(FIRMWARE_2870_FILENAME);
+
+-#ifdef RTMP_MAC_PCI
+-#define FIRMWARE_MINOR_VERSION 2
+-#endif /* RTMP_MAC_PCI // */
++#define FIRMWARE_3070_MIN_VERSION 17
++#define FIRMWARE_3070_FILENAME "rt3070.bin"
++MODULE_FIRMWARE(FIRMWARE_3070_FILENAME);
++
++#define FIRMWARE_3071_MIN_VERSION 17
++#define FIRMWARE_3071_FILENAME "rt3071.bin" /* for RT3071/RT3072 */
++MODULE_FIRMWARE(FIRMWARE_3071_FILENAME);
++
++#else /* RTMP_MAC_PCI */
++
++#define FIRMWAREIMAGE_LENGTH 0x2000
++
++#define FIRMWARE_2860_MIN_VERSION 11
++#define FIRMWARE_2860_FILENAME "rt2860.bin"
++MODULE_FIRMWARE(FIRMWARE_2860_FILENAME);
++
++#define FIRMWARE_3090_MIN_VERSION 19
++#define FIRMWARE_3090_FILENAME "rt3090.bin" /* for RT3090/RT3390 */
++MODULE_FIRMWARE(FIRMWARE_3090_FILENAME);
++
++#endif
+
+ /*
+ ========================================================================
+@@ -90,6 +93,78 @@ int RtmpAsicEraseFirmware(struct rt_rtmp_adapter *pAd)
+ return 0;
+ }
+
++static const struct firmware *rtmp_get_firmware(struct rt_rtmp_adapter *adapter)
++{
++ const char *name;
++ const struct firmware *fw = NULL;
++ u8 min_version;
++ struct device *dev;
++ int err;
++
++ if (adapter->firmware)
++ return adapter->firmware;
++
++#ifdef RTMP_MAC_USB
++ if (IS_RT3071(adapter)) {
++ name = FIRMWARE_3071_FILENAME;
++ min_version = FIRMWARE_3071_MIN_VERSION;
++ } else if (IS_RT3070(adapter)) {
++ name = FIRMWARE_3070_FILENAME;
++ min_version = FIRMWARE_3070_MIN_VERSION;
++ } else {
++ name = FIRMWARE_2870_FILENAME;
++ min_version = FIRMWARE_2870_MIN_VERSION;
++ }
++ dev = &((struct os_cookie *)adapter->OS_Cookie)->pUsb_Dev->dev;
++#else /* RTMP_MAC_PCI */
++ if (IS_RT3090(adapter) || IS_RT3390(adapter)) {
++ name = FIRMWARE_3090_FILENAME;
++ min_version = FIRMWARE_3090_MIN_VERSION;
++ } else {
++ name = FIRMWARE_2860_FILENAME;
++ min_version = FIRMWARE_2860_MIN_VERSION;
++ }
++ dev = &((struct os_cookie *)adapter->OS_Cookie)->pci_dev->dev;
++#endif
++
++ err = request_firmware(&fw, name, dev);
++ if (err) {
++ dev_err(dev, "firmware file %s request failed (%d)\n",
++ name, err);
++ return NULL;
++ }
++
++ if (fw->size < FIRMWAREIMAGE_LENGTH) {
++ dev_err(dev, "firmware file %s size is invalid\n", name);
++ goto invalid;
++ }
++
++ /* is it new enough? */
++ adapter->FirmwareVersion = fw->data[FIRMWAREIMAGE_LENGTH - 3];
++ if (adapter->FirmwareVersion < min_version) {
++ dev_err(dev,
++ "firmware file %s is too old;"
++ " driver requires v%d or later\n",
++ name, min_version);
++ goto invalid;
++ }
++
++ /* is the internal CRC correct? */
++ if (crc_ccitt(0xffff, fw->data, FIRMWAREIMAGE_LENGTH - 2) !=
++ (fw->data[FIRMWAREIMAGE_LENGTH - 2] |
++ (fw->data[FIRMWAREIMAGE_LENGTH - 1] << 8))) {
++ dev_err(dev, "firmware file %s failed internal CRC\n", name);
++ goto invalid;
++ }
++
++ adapter->firmware = fw;
++ return fw;
++
++invalid:
++ release_firmware(fw);
++ return NULL;
++}
++
+ /*
+ ========================================================================
+
+@@ -109,46 +184,16 @@ int RtmpAsicEraseFirmware(struct rt_rtmp_adapter *pAd)
+ */
+ int RtmpAsicLoadFirmware(struct rt_rtmp_adapter *pAd)
+ {
+-
++ const struct firmware *fw;
+ int Status = NDIS_STATUS_SUCCESS;
+- u8 *pFirmwareImage = NULL;
+- unsigned long FileLength, Index;
++ unsigned long Index;
+ u32 MacReg = 0;
+-#ifdef RTMP_MAC_USB
+- u32 Version = (pAd->MACVersion >> 16);
+-#endif
+
+- /* New 8k byte firmware size for RT3071/RT3072 */
+- {
+-#ifdef RTMP_MAC_PCI
+- if (IS_RT3090(pAd) || IS_RT3390(pAd)) {
+- pFirmwareImage = FirmwareImage_3090;
+- FileLength = FIRMWAREIMAGE_MAX_LENGTH;
+- } else {
+- pFirmwareImage = FirmwareImage_2860;
+- FileLength = FIRMWAREIMAGE_MAX_LENGTH;
+- }
+-#endif /* RTMP_MAC_PCI // */
+-#ifdef RTMP_MAC_USB
+- /* the firmware image consists of two parts */
+- if ((Version != 0x2860) && (Version != 0x2872) && (Version != 0x3070)) { /* use the second part */
+- /*printk("KH:Use New Version,part2\n"); */
+- pFirmwareImage =
+- (u8 *)&
+- FirmwareImage_3070[FIRMWAREIMAGEV1_LENGTH];
+- FileLength = FIRMWAREIMAGEV2_LENGTH;
+- } else {
+- /*printk("KH:Use New Version,part1\n"); */
+- if (Version == 0x3070)
+- pFirmwareImage = FirmwareImage_3070;
+- else
+- pFirmwareImage = FirmwareImage_2870;
+- FileLength = FIRMWAREIMAGEV1_LENGTH;
+- }
+-#endif /* RTMP_MAC_USB // */
+- }
++ fw = rtmp_get_firmware(pAd);
++ if (!fw)
++ return NDIS_STATUS_FAILURE;
+
+- RTMP_WRITE_FIRMWARE(pAd, pFirmwareImage, FileLength);
++ RTMP_WRITE_FIRMWARE(pAd, fw->data, FIRMWAREIMAGE_LENGTH);
+
+ /* check if MCU is ready */
+ Index = 0;
+--- a/drivers/staging/rt2860/rt_linux.c
++++ b/drivers/staging/rt2860/rt_linux.c
+@@ -25,6 +25,7 @@
+ *************************************************************************
+ */
+
++#include <linux/firmware.h>
+ #include <linux/sched.h>
+ #include "rt_config.h"
+
+@@ -260,6 +261,8 @@ void RTMPFreeAdapter(struct rt_rtmp_adapter *pAd)
+
+ NdisFreeSpinLock(&pAd->irq_lock);
+
++ release_firmware(pAd->firmware);
++
+ vfree(pAd); /* pci_free_consistent(os_cookie->pci_dev,sizeof(struct rt_rtmp_adapter),pAd,os_cookie->pAd_pa); */
+ if (os_cookie)
+ kfree(os_cookie);
+--- a/drivers/staging/rt2860/rtmp.h
++++ b/drivers/staging/rt2860/rtmp.h
+@@ -1719,6 +1719,7 @@ struct rt_rtmp_adapter {
+ void *OS_Cookie; /* save specific structure relative to OS */
+ struct net_device *net_dev;
+ unsigned long VirtualIfCnt;
++ const struct firmware *firmware;
+
+ struct rt_rtmp_chip_op chipOps;
+ u16 ThisTbttNumToNextWakeUp;
+--- a/drivers/staging/rt2870/Kconfig
++++ b/drivers/staging/rt2870/Kconfig
+@@ -3,5 +3,7 @@ config RT2870
+ depends on USB && X86 && WLAN
+ select WIRELESS_EXT
+ select WEXT_PRIV
++ select CRC_CCITT
++ select FW_LOADER
+ ---help---
+ This is an experimental driver for the Ralink xx70 wireless chips.
diff --git a/patches/features/all/sound-pci-cs46xx-request_firmware.patch b/patches/features/all/sound-pci-cs46xx-request_firmware.patch
new file mode 100644
index 0000000..5e2e5f5
--- /dev/null
+++ b/patches/features/all/sound-pci-cs46xx-request_firmware.patch
@@ -0,0 +1,172 @@
+From: Ben Hutchings <ben@decadent.org.uk>
+Subject: cs46xx: Use request_firmware() for old DSP code
+
+Based on work by Kalle Olavi Niemitalo <kon@iki.fi>.
+
+Tested by Antonio Ospite <ospite@studenti.unina.it>.
+Unfortunately we cannot currently distribute the firmware.
+
+diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig
+index 17e03b9..124b3a0 100644
+--- a/sound/pci/Kconfig
++++ b/sound/pci/Kconfig
+@@ -229,7 +229,7 @@ config SND_CS4281
+
+ config SND_CS46XX
+ tristate "Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x"
+- depends on BROKEN
++ select FW_LOADER
+ select SND_RAWMIDI
+ select SND_AC97_CODEC
+ help
+@@ -241,6 +241,7 @@ config SND_CS46XX
+
+ config SND_CS46XX_NEW_DSP
+ bool "Cirrus Logic (Sound Fusion) New DSP support"
++ depends on BROKEN
+ depends on SND_CS46XX
+ default y
+ help
+diff --git a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c
+index 1be96ea..b12b930 100644
+--- a/sound/pci/cs46xx/cs46xx_lib.c
++++ b/sound/pci/cs46xx/cs46xx_lib.c
+@@ -53,6 +53,7 @@
+ #include <linux/slab.h>
+ #include <linux/gameport.h>
+ #include <linux/mutex.h>
++#include <linux/firmware.h>
+
+
+ #include <sound/core.h>
+@@ -308,7 +309,7 @@ static void snd_cs46xx_ac97_write(struct snd_ac97 *ac97,
+ */
+
+ int snd_cs46xx_download(struct snd_cs46xx *chip,
+- u32 *src,
++ const __le32 *src,
+ unsigned long offset,
+ unsigned long len)
+ {
+@@ -321,9 +322,9 @@ int snd_cs46xx_download(struct snd_cs46xx *chip,
+ dst = chip->region.idx[bank+1].remap_addr + offset;
+ len /= sizeof(u32);
+
+- /* writel already converts 32-bit value to right endianess */
+ while (len-- > 0) {
+- writel(*src++, dst);
++ __raw_writel((__force u32)*src++, dst);
++ mmiowb();
+ dst += sizeof(u32);
+ }
+ return 0;
+@@ -360,23 +361,77 @@ int snd_cs46xx_clear_BA1(struct snd_cs46xx *chip,
+
+ #else /* old DSP image */
+
+-#include "cs46xx_image.h"
++struct cs46xx_old_image {
++ __le32 size[BA1_MEMORY_COUNT];
++ __le32 data[0];
++};
+
+-int snd_cs46xx_download_image(struct snd_cs46xx *chip)
++static int snd_cs46xx_check_image_size(const struct firmware *firmware)
+ {
+- int idx, err;
+- unsigned long offset = 0;
++ const struct cs46xx_old_image *image =
++ (const struct cs46xx_old_image *)firmware->data;
++ size_t offset = sizeof(*image);
++ int idx;
++
++ if (firmware->size < offset) {
++ snd_printk(KERN_ERR "cs46xx: firmware too small\n");
++ return -EINVAL;
++ }
+
+ for (idx = 0; idx < BA1_MEMORY_COUNT; idx++) {
+- if ((err = snd_cs46xx_download(chip,
+- &BA1Struct.map[offset],
+- BA1Struct.memory[idx].offset,
+- BA1Struct.memory[idx].size)) < 0)
+- return err;
+- offset += BA1Struct.memory[idx].size >> 2;
+- }
++ size_t size = le32_to_cpu(image->size[idx]);
++
++ if (size % sizeof(u32)) {
++ snd_printk(KERN_ERR "cs46xx: firmware hunk misaligned\n");
++ return -EINVAL;
++ }
++ if (size > BA1_DWORD_SIZE * sizeof(u32)) {
++ snd_printk(KERN_ERR "cs46xx: firmware hunk out of range\n");
++ return -EINVAL;
++ }
++ offset += size;
++ }
++
++ if (firmware->size != offset) {
++ snd_printk(KERN_ERR "cs46xx: firmware size mismatch\n");
++ return -EINVAL;
++ }
++
+ return 0;
+ }
++
++static int snd_cs46xx_download_image(struct snd_cs46xx *chip)
++{
++ int idx, err;
++ const struct firmware *firmware = NULL;
++ const struct cs46xx_old_image *image;
++ const __le32 *data;
++
++ err = request_firmware(&firmware, "cs46xx/cs46xx-old.fw",
++ &chip->pci->dev);
++ if (err < 0) {
++ snd_printk(KERN_ERR "cs46xx: no firmware\n");
++ return err;
++ }
++
++ err = snd_cs46xx_check_image_size(firmware);
++ if (err < 0)
++ goto end;
++ image = (const struct cs46xx_old_image *)firmware->data;
++ data = image->data;
++
++ for (idx = 0; idx < BA1_MEMORY_COUNT; idx++) {
++ size_t size = le32_to_cpu(image->size[idx]);
++
++ err = snd_cs46xx_download(chip, data, idx << 16, size);
++ if (err < 0)
++ goto end;
++ data += size / sizeof(u32);
++ }
++end:
++ release_firmware(firmware);
++ return err;
++}
+ #endif /* CONFIG_SND_CS46XX_NEW_DSP */
+
+ /*
+@@ -3874,3 +3929,5 @@ int __devinit snd_cs46xx_create(struct snd_card *card,
+ *rchip = chip;
+ return 0;
+ }
++
++MODULE_FIRMWARE("cs46xx/cs46xx-old.fw");
+diff --git a/sound/pci/cs46xx/cs46xx_lib.h b/sound/pci/cs46xx/cs46xx_lib.h
+index 4eb55aa..85babb5 100644
+--- a/sound/pci/cs46xx/cs46xx_lib.h
++++ b/sound/pci/cs46xx/cs46xx_lib.h
+@@ -103,8 +103,8 @@ int cs46xx_dsp_proc_done (struct snd_cs46xx *chip);
+ #define cs46xx_dsp_proc_done(chip)
+ #endif
+ int cs46xx_dsp_scb_and_task_init (struct snd_cs46xx *chip);
+-int snd_cs46xx_download (struct snd_cs46xx *chip, u32 *src, unsigned long offset,
+- unsigned long len);
++int snd_cs46xx_download(struct snd_cs46xx *chip, const __le32 *src, unsigned long offset,
++ unsigned long len);
+ int snd_cs46xx_clear_BA1(struct snd_cs46xx *chip, unsigned long offset, unsigned long len);
+ int cs46xx_dsp_enable_spdif_out (struct snd_cs46xx *chip);
+ int cs46xx_dsp_enable_spdif_hw (struct snd_cs46xx *chip);
diff --git a/patches/features/all/speakup/speakup-add.patch b/patches/features/all/speakup/speakup-add.patch
new file mode 100644
index 0000000..7fe9718
--- /dev/null
+++ b/patches/features/all/speakup/speakup-add.patch
@@ -0,0 +1,10232 @@
+--- a/drivers/staging/speakup/allmodule.mk 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/allmodule.mk 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,15 @@
++CONFIG_SPEAKUP_SYNTH_ACNTSA=m
++CONFIG_SPEAKUP_SYNTH_ACNTPC=m
++CONFIG_SPEAKUP_SYNTH_APOLLO=m
++CONFIG_SPEAKUP_SYNTH_AUDPTR=m
++CONFIG_SPEAKUP_SYNTH_BNS=m
++CONFIG_SPEAKUP_SYNTH_DECTLK=m
++CONFIG_SPEAKUP_SYNTH_DECEXT=m
++CONFIG_SPEAKUP_SYNTH_DTLK=m
++CONFIG_SPEAKUP_SYNTH_KEYPC=m
++CONFIG_SPEAKUP_SYNTH_LTLK=m
++CONFIG_SPEAKUP_SYNTH_SOFT=m
++CONFIG_SPEAKUP_SYNTH_SPKOUT=m
++CONFIG_SPEAKUP_SYNTH_TXPRT=m
++CONFIG_SPEAKUP_SYNTH_DUMMY=m
++CONFIG_SPEAKUP=m
+--- a/drivers/staging/speakup/buffers.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/buffers.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,124 @@
++#include <linux/console.h>
++#include <linux/smp_lock.h>
++#include <linux/interrupt.h> /* for in_atomic */
++#include <linux/types.h>
++#include <linux/wait.h>
++
++#include "speakup.h"
++#include "spk_priv.h"
++
++#define synthBufferSize 8192 /* currently 8K bytes */
++
++static u_char synth_buffer[synthBufferSize]; /* guess what this is for! */
++static u_char *buff_in = synth_buffer;
++static u_char *buff_out = synth_buffer;
++static u_char *buffer_end = synth_buffer+synthBufferSize-1;
++
++/* These try to throttle applications by stopping the TTYs
++ * Note: we need to make sure that we will restart them eventually, which is
++ * usually not possible to do from the notifiers.
++ *
++ * So we only stop when we know alive == 1 (else we discard the data anyway),
++ * and the alive synth will eventually call start_ttys from the thread context.
++ */
++void speakup_start_ttys(void)
++{
++ int i;
++
++ BUG_ON(in_atomic());
++ lock_kernel();
++ for (i = 0; i < MAX_NR_CONSOLES; i++) {
++ if (speakup_console[i] && speakup_console[i]->tty_stopped)
++ continue;
++ if ((vc_cons[i].d != NULL) && (vc_cons[i].d->vc_tty != NULL))
++ start_tty(vc_cons[i].d->vc_tty);
++ }
++ unlock_kernel();
++}
++EXPORT_SYMBOL_GPL(speakup_start_ttys);
++
++static void speakup_stop_ttys(void)
++{
++ int i;
++
++ if (!in_atomic())
++ lock_kernel();
++ else if (!kernel_locked()) {
++ /* BKL is not held and we are in a critical section, too bad,
++ * let the buffer continue to fill up.
++ *
++ * This only happens with kernel messages and keyboard echo, so
++ * that shouldn't be so much a concern.
++ */
++ return;
++ }
++ for (i = 0; i < MAX_NR_CONSOLES; i++)
++ if ((vc_cons[i].d != NULL) && (vc_cons[i].d->vc_tty != NULL))
++ stop_tty(vc_cons[i].d->vc_tty);
++ if (!in_atomic())
++ unlock_kernel();
++ return;
++}
++
++static int synth_buffer_free(void)
++{
++ int bytesFree;
++
++ if (buff_in >= buff_out)
++ bytesFree = synthBufferSize - (buff_in - buff_out);
++ else
++ bytesFree = buff_out - buff_in;
++ return bytesFree;
++}
++
++int synth_buffer_empty(void)
++{
++ return (buff_in == buff_out);
++}
++EXPORT_SYMBOL_GPL(synth_buffer_empty);
++
++void synth_buffer_add(char ch)
++{
++ if (!synth->alive) {
++ /* This makes sure that we won't stop TTYs if there is no synth
++ * to restart them */
++ return;
++ }
++ if (synth_buffer_free() <= 100) {
++ synth_start();
++ speakup_stop_ttys();
++ }
++ if (synth_buffer_free() <= 1)
++ return;
++ *buff_in++ = ch;
++ if (buff_in > buffer_end)
++ buff_in = synth_buffer;
++}
++
++char synth_buffer_getc(void)
++{
++ char ch;
++
++ if (buff_out == buff_in)
++ return 0;
++ ch = *buff_out++;
++ if (buff_out > buffer_end)
++ buff_out = synth_buffer;
++ return ch;
++}
++EXPORT_SYMBOL_GPL(synth_buffer_getc);
++
++char synth_buffer_peek(void)
++{
++ if (buff_out == buff_in)
++ return 0;
++ return *buff_out;
++}
++EXPORT_SYMBOL_GPL(synth_buffer_peek);
++
++void synth_buffer_clear(void)
++{
++ buff_in = buff_out = synth_buffer;
++ return;
++}
++EXPORT_SYMBOL_GPL(synth_buffer_clear);
+--- a/drivers/staging/speakup/devsynth.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/devsynth.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,92 @@
++#include <linux/errno.h>
++#include <linux/miscdevice.h> /* for misc_register, and SYNTH_MINOR */
++#include <linux/types.h>
++#include <linux/uaccess.h>
++
++#include "speakup.h"
++#include "spk_priv.h"
++
++#ifndef SYNTH_MINOR
++#define SYNTH_MINOR 25
++#endif
++
++static int misc_registered;
++static int dev_opened;
++
++static ssize_t speakup_file_write(struct file *fp, const char *buffer,
++ size_t nbytes, loff_t *ppos)
++{
++ size_t count = nbytes;
++ const char *ptr = buffer;
++ int bytes;
++ unsigned long flags;
++ u_char buf[256];
++ if (synth == NULL)
++ return -ENODEV;
++ while (count > 0) {
++ bytes = min_t(size_t, count, sizeof(buf));
++ if (copy_from_user(buf, ptr, bytes))
++ return -EFAULT;
++ count -= bytes;
++ ptr += bytes;
++ spk_lock(flags);
++ synth_write(buf, bytes);
++ spk_unlock(flags);
++ }
++ return (ssize_t) nbytes;
++}
++
++static ssize_t speakup_file_read(struct file *fp, char *buf, size_t nbytes, loff_t *ppos)
++{
++ return 0;
++}
++
++static int speakup_file_open(struct inode *ip, struct file *fp)
++{
++ if (synth == NULL)
++ return -ENODEV;
++ if (xchg(&dev_opened, 1))
++ return -EBUSY;
++ return 0;
++}
++
++static int speakup_file_release(struct inode *ip, struct file *fp)
++{
++ dev_opened = 0;
++ return 0;
++}
++
++static struct file_operations synth_fops = {
++ .read = speakup_file_read,
++ .write = speakup_file_write,
++ .open = speakup_file_open,
++ .release = speakup_file_release,
++};
++
++static struct miscdevice synth_device = {
++ .minor = SYNTH_MINOR,
++ .name = "synth",
++ .fops = &synth_fops,
++};
++
++void speakup_register_devsynth(void)
++{
++ if (misc_registered != 0)
++ return;
++/* zero it so if register fails, deregister will not ref invalid ptrs */
++ if (misc_register(&synth_device))
++ pr_warn("Couldn't initialize miscdevice /dev/synth.\n");
++ else {
++ pr_info("initialized device: /dev/synth, node (MAJOR %d, MINOR %d)\n", MISC_MAJOR, SYNTH_MINOR);
++ misc_registered = 1;
++ }
++}
++
++void speakup_unregister_devsynth(void)
++{
++ if (!misc_registered)
++ return;
++ pr_info("speakup: unregistering synth device /dev/synth\n");
++ misc_deregister(&synth_device);
++ misc_registered = 0;
++}
+--- a/drivers/staging/speakup/i18n.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/i18n.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,621 @@
++/* Internationalization implementation. Includes definitions of English
++ * string arrays, and the i18n pointer. */
++
++#include <linux/ctype.h>
++#include <linux/module.h>
++#include <linux/string.h>
++#include "speakup.h"
++#include "spk_priv.h"
++
++static char *speakup_msgs[MSG_LAST_INDEX];
++static char *speakup_default_msgs [MSG_LAST_INDEX] = {
++ [MSG_BLANK] = "blank",
++ [MSG_IAM_ALIVE] = "I'm aLive!",
++ [MSG_YOU_KILLED_SPEAKUP] = "You killed speakup!",
++ [MSG_HEY_THATS_BETTER] = "hey. That's better!",
++ [MSG_YOU_TURNED_ME_OFF] = "You turned me off!",
++ [MSG_PARKED] = "parked!",
++ [MSG_UNPARKED] = "unparked!",
++ [MSG_MARK] = "mark",
++ [MSG_CUT] = "cut",
++ [MSG_MARK_CLEARED] = "mark, cleared",
++ [MSG_PASTE] = "paste",
++ [MSG_BRIGHT] = "bright",
++ [MSG_ON_BLINKING] = "on blinking",
++ [MSG_OFF] = "off",
++ [MSG_ON] = "on",
++ [MSG_NO_WINDOW] = "no window",
++ [MSG_CURSORING_OFF] = "cursoring off",
++ [MSG_CURSORING_ON] = "cursoring on",
++ [MSG_HIGHLIGHT_TRACKING] = "highlight tracking",
++ [MSG_READ_WINDOW] = "read windo",
++ [MSG_READ_ALL] = "read all",
++ [MSG_EDIT_DONE] = "edit done",
++ [MSG_WINDOW_ALREADY_SET] = "window already set, clear then reset",
++ [MSG_END_BEFORE_START] = "error end before start",
++ [MSG_WINDOW_CLEARED] = "window cleared",
++ [MSG_WINDOW_SILENCED] = "window silenced",
++ [MSG_WINDOW_SILENCE_DISABLED] = "window silence disabled",
++ [MSG_ERROR] = "error",
++ [MSG_GOTO_CANCELED] = "goto canceled",
++ [MSG_GOTO] = "go to?",
++ [MSG_LEAVING_HELP] = "leaving help",
++ [MSG_IS_UNASSIGNED] = "is unassigned",
++ [MSG_HELP_INFO] = "press space to leav help, cursor up or down to scroll, or a letter to go to commands in list",
++ [MSG_EDGE_TOP] = "top,",
++ [MSG_EDGE_BOTTOM] = "bottom,",
++ [MSG_EDGE_LEFT] = "left,",
++ [MSG_EDGE_RIGHT] = "right,",
++ [MSG_NUMBER] = "number",
++ [MSG_SPACE] = "space",
++ [MSG_START] = "start",
++ [MSG_END] = "end",
++ [MSG_CTRL] = "control-",
++ [MSG_DISJUNCTION] = "or",
++
++/* Messages with embedded format specifiers. */
++ [MSG_POS_INFO] = "line %ld, col %ld, t t y %d",
++ [MSG_CHAR_INFO] = "hex %02x, decimal %d",
++ [MSG_REPEAT_DESC] = "times %d .",
++ [MSG_REPEAT_DESC2] = "repeated %d .",
++ [MSG_WINDOW_LINE] = "window is line %d",
++ [MSG_WINDOW_BOUNDARY] = "%s at line %d, column %d",
++ [MSG_EDIT_PROMPT] = "edit %s, press space when done",
++ [MSG_NO_COMMAND] = "no commands for %c",
++ [MSG_KEYDESC] = "is %s",
++
++ /* Control keys. */
++ /* Most of these duplicate the entries in state names. */
++ [MSG_CTL_SHIFT] = "shift",
++ [MSG_CTL_ALTGR] = "altgr",
++ [MSG_CTL_CONTROL] = "control",
++ [MSG_CTL_ALT] = "ault",
++ [MSG_CTL_LSHIFT] = "l shift",
++ [MSG_CTL_SPEAKUP] = "speakup",
++ [MSG_CTL_LCONTROL] = "l control",
++ [MSG_CTL_RCONTROL] = "r control",
++ [MSG_CTL_CAPSSHIFT] = "caps shift",
++
++ /* Color names. */
++ [MSG_COLOR_BLACK] = "black",
++ [MSG_COLOR_BLUE] = "blue",
++ [MSG_COLOR_GREEN] = "green",
++ [MSG_COLOR_CYAN] = "cyan",
++ [MSG_COLOR_RED] = "red",
++ [MSG_COLOR_MAGENTA] = "magenta",
++ [MSG_COLOR_YELLOW] = "yellow",
++ [MSG_COLOR_WHITE] = "white",
++ [MSG_COLOR_GREY] = "grey",
++
++ /* Names of key states. */
++ [MSG_STATE_DOUBLE] = "double",
++ [MSG_STATE_SPEAKUP] = "speakup",
++ [MSG_STATE_ALT] = "alt",
++ [MSG_STATE_CONTROL] = "ctrl",
++ [MSG_STATE_ALTGR] = "altgr",
++ [MSG_STATE_SHIFT] = "shift",
++
++ /* Key names. */
++ [MSG_KEYNAME_ESC] = "escape",
++ [MSG_KEYNAME_1] = "1",
++ [MSG_KEYNAME_2] = "2",
++ [MSG_KEYNAME_3] = "3",
++ [MSG_KEYNAME_4] = "4",
++ [MSG_KEYNAME_5] = "5",
++ [MSG_KEYNAME_6] = "6",
++ [MSG_KEYNAME_7] = "7",
++ [MSG_KEYNAME_8] = "8",
++ [MSG_KEYNAME_9] = "9",
++ [MSG_KEYNAME_0] = "0",
++ [MSG_KEYNAME_DASH] = "minus",
++ [MSG_KEYNAME_EQUAL] = "equal",
++ [MSG_KEYNAME_BS] = "back space",
++ [MSG_KEYNAME_TAB] = "tab",
++ [MSG_KEYNAME_Q] = "q",
++ [MSG_KEYNAME_W] = "w",
++ [MSG_KEYNAME_E] = "e",
++ [MSG_KEYNAME_R] = "r",
++ [MSG_KEYNAME_T] = "t",
++ [MSG_KEYNAME_Y] = "y",
++ [MSG_KEYNAME_U] = "u",
++ [MSG_KEYNAME_I] = "i",
++ [MSG_KEYNAME_O] = "o",
++ [MSG_KEYNAME_P] = "p",
++ [MSG_KEYNAME_LEFTBRACE] = "left brace",
++ [MSG_KEYNAME_RIGHTBRACE] = "right brace",
++ [MSG_KEYNAME_ENTER] = "enter",
++ [MSG_KEYNAME_LEFTCTRL] = "left control",
++ [MSG_KEYNAME_A] = "a",
++ [MSG_KEYNAME_S] = "s",
++ [MSG_KEYNAME_D] = "d",
++ [MSG_KEYNAME_F] = "f",
++ [MSG_KEYNAME_G] = "g",
++ [MSG_KEYNAME_H] = "h",
++ [MSG_KEYNAME_J] = "j",
++ [MSG_KEYNAME_K] = "k",
++ [MSG_KEYNAME_L] = "l",
++ [MSG_KEYNAME_SEMICOLON] = "semicolon",
++ [MSG_KEYNAME_SINGLEQUOTE] = "apostrophe",
++ [MSG_KEYNAME_GRAVE] = "accent",
++ [MSG_KEYNAME_LEFTSHFT] = "left shift",
++ [MSG_KEYNAME_BACKSLASH] = "back slash",
++ [MSG_KEYNAME_Z] = "z",
++ [MSG_KEYNAME_X] = "x",
++ [MSG_KEYNAME_C] = "c",
++ [MSG_KEYNAME_V] = "v",
++ [MSG_KEYNAME_B] = "b",
++ [MSG_KEYNAME_N] = "n",
++ [MSG_KEYNAME_M] = "m",
++ [MSG_KEYNAME_COMMA] = "comma",
++ [MSG_KEYNAME_DOT] = "dot",
++ [MSG_KEYNAME_SLASH] = "slash",
++ [MSG_KEYNAME_RIGHTSHFT] = "right shift",
++ [MSG_KEYNAME_KPSTAR] = "keypad asterisk",
++ [MSG_KEYNAME_LEFTALT] = "left alt",
++ [MSG_KEYNAME_SPACE] = "space",
++ [MSG_KEYNAME_CAPSLOCK] = "caps lock",
++ [MSG_KEYNAME_F1] = "f1",
++ [MSG_KEYNAME_F2] = "f2",
++ [MSG_KEYNAME_F3] = "f3",
++ [MSG_KEYNAME_F4] = "f4",
++ [MSG_KEYNAME_F5] = "f5",
++ [MSG_KEYNAME_F6] = "f6",
++ [MSG_KEYNAME_F7] = "f7",
++ [MSG_KEYNAME_F8] = "f8",
++ [MSG_KEYNAME_F9] = "f9",
++ [MSG_KEYNAME_F10] = "f10",
++ [MSG_KEYNAME_NUMLOCK] = "num lock",
++ [MSG_KEYNAME_SCROLLLOCK] = "scroll lock",
++ [MSG_KEYNAME_KP7] = "keypad 7",
++ [MSG_KEYNAME_KP8] = "keypad 8",
++ [MSG_KEYNAME_KP9] = "keypad 9",
++ [MSG_KEYNAME_KPMINUS] = "keypad minus",
++ [MSG_KEYNAME_KP4] = "keypad 4",
++ [MSG_KEYNAME_KP5] = "keypad 5",
++ [MSG_KEYNAME_KP6] = "keypad 6",
++ [MSG_KEYNAME_KPPLUS] = "keypad plus",
++ [MSG_KEYNAME_KP1] = "keypad 1",
++ [MSG_KEYNAME_KP2] = "keypad 2",
++ [MSG_KEYNAME_KP3] = "keypad 3",
++ [MSG_KEYNAME_KP0] = "keypad 0",
++ [MSG_KEYNAME_KPDOT] = "keypad dot",
++ [MSG_KEYNAME_103RD] = "103rd",
++ [MSG_KEYNAME_F13] = "f13",
++ [MSG_KEYNAME_102ND] = "102nd",
++ [MSG_KEYNAME_F11] = "f11",
++ [MSG_KEYNAME_F12] = "f12",
++ [MSG_KEYNAME_F14] = "f14",
++ [MSG_KEYNAME_F15] = "f15",
++ [MSG_KEYNAME_F16] = "f16",
++ [MSG_KEYNAME_F17] = "f17",
++ [MSG_KEYNAME_F18] = "f18",
++ [MSG_KEYNAME_F19] = "f19",
++ [MSG_KEYNAME_F20] = "f20",
++ [MSG_KEYNAME_KPENTER] = "keypad enter",
++ [MSG_KEYNAME_RIGHTCTRL] = "right control",
++ [MSG_KEYNAME_KPSLASH] = "keypad slash",
++ [MSG_KEYNAME_SYSRQ] = "sysrq",
++ [MSG_KEYNAME_RIGHTALT] = "right alt",
++ [MSG_KEYNAME_LF] = "line feed",
++ [MSG_KEYNAME_HOME] = "home",
++ [MSG_KEYNAME_UP] = "up",
++ [MSG_KEYNAME_PGUP] = "page up",
++ [MSG_KEYNAME_LEFT] = "left",
++ [MSG_KEYNAME_RIGHT] = "right",
++ [MSG_KEYNAME_END] = "end",
++ [MSG_KEYNAME_DOWN] = "down",
++ [MSG_KEYNAME_PGDN] = "page down",
++ [MSG_KEYNAME_INS] = "insert",
++ [MSG_KEYNAME_DEL] = "delete",
++ [MSG_KEYNAME_MACRO] = "macro",
++ [MSG_KEYNAME_MUTE] = "mute",
++ [MSG_KEYNAME_VOLDOWN] = "volume down",
++ [MSG_KEYNAME_VOLUP] = "volume up",
++ [MSG_KEYNAME_POWER] = "power",
++ [MSG_KEYNAME_KPEQUAL] = "keypad equal",
++ [MSG_KEYNAME_KPPLUSDASH] = "keypad plusminus",
++ [MSG_KEYNAME_PAUSE] = "pause",
++ [MSG_KEYNAME_F21] = "f21",
++ [MSG_KEYNAME_F22] = "f22",
++ [MSG_KEYNAME_F23] = "f23",
++ [MSG_KEYNAME_F24] = "f24",
++ [MSG_KEYNAME_KPCOMMA] = "keypad comma",
++ [MSG_KEYNAME_LEFTMETA] = "left meta",
++ [MSG_KEYNAME_RIGHTMETA] = "right meta",
++ [MSG_KEYNAME_COMPOSE] = "compose",
++ [MSG_KEYNAME_STOP] = "stop",
++ [MSG_KEYNAME_AGAIN] = "again",
++ [MSG_KEYNAME_PROPS] = "props",
++ [MSG_KEYNAME_UNDO] = "undo",
++ [MSG_KEYNAME_FRONT] = "front",
++ [MSG_KEYNAME_COPY] = "copy",
++ [MSG_KEYNAME_OPEN] = "open",
++ [MSG_KEYNAME_PASTE] = "paste",
++ [MSG_KEYNAME_FIND] = "find",
++ [MSG_KEYNAME_CUT] = "cut",
++ [MSG_KEYNAME_HELP] = "help",
++ [MSG_KEYNAME_MENU] = "menu",
++ [MSG_KEYNAME_CALC] = "calc",
++ [MSG_KEYNAME_SETUP] = "setup",
++ [MSG_KEYNAME_SLEEP] = "sleep",
++ [MSG_KEYNAME_WAKEUP] = "wakeup",
++ [MSG_KEYNAME_FILE] = "file",
++ [MSG_KEYNAME_SENDFILE] = "send file",
++ [MSG_KEYNAME_DELFILE] = "delete file",
++ [MSG_KEYNAME_XFER] = "transfer",
++ [MSG_KEYNAME_PROG1] = "prog1",
++ [MSG_KEYNAME_PROG2] = "prog2",
++ [MSG_KEYNAME_WWW] = "www",
++ [MSG_KEYNAME_MSDOS] = "msdos",
++ [MSG_KEYNAME_COFFEE] = "coffee",
++ [MSG_KEYNAME_DIRECTION] = "direction",
++ [MSG_KEYNAME_CYCLEWINDOWS] = "cycle windows",
++ [MSG_KEYNAME_MAIL] = "mail",
++ [MSG_KEYNAME_BOOKMARKS] = "bookmarks",
++ [MSG_KEYNAME_COMPUTER] = "computer",
++ [MSG_KEYNAME_BACK] = "back",
++ [MSG_KEYNAME_FORWARD] = "forward",
++ [MSG_KEYNAME_CLOSECD] = "close cd",
++ [MSG_KEYNAME_EJECTCD] = "eject cd",
++ [MSG_KEYNAME_EJECTCLOSE] = "eject close cd",
++ [MSG_KEYNAME_NEXTSONG] = "next song",
++ [MSG_KEYNAME_PLAYPAUSE] = "play pause",
++ [MSG_KEYNAME_PREVSONG] = "previous song",
++ [MSG_KEYNAME_STOPCD] = "stop cd",
++ [MSG_KEYNAME_RECORD] = "record",
++ [MSG_KEYNAME_REWIND] = "rewind",
++ [MSG_KEYNAME_PHONE] = "phone",
++ [MSG_KEYNAME_ISO] = "iso",
++ [MSG_KEYNAME_CONFIG] = "config",
++ [MSG_KEYNAME_HOMEPG] = "home page",
++ [MSG_KEYNAME_REFRESH] = "refresh",
++ [MSG_KEYNAME_EXIT] = "exit",
++ [MSG_KEYNAME_MOVE] = "move",
++ [MSG_KEYNAME_EDIT] = "edit",
++ [MSG_KEYNAME_SCROLLUP] = "scroll up",
++ [MSG_KEYNAME_SCROLLDN] = "scroll down",
++ [MSG_KEYNAME_KPLEFTPAR] = "keypad left paren",
++ [MSG_KEYNAME_KPRIGHTPAR] = "keypad right paren",
++
++ /* Function names. */
++ [MSG_FUNCNAME_ATTRIB_BLEEP_DEC] = "attribute bleep decrement",
++ [MSG_FUNCNAME_ATTRIB_BLEEP_INC] = "attribute bleep increment",
++ [MSG_FUNCNAME_BLEEPS_DEC] = "bleeps decrement",
++ [MSG_FUNCNAME_BLEEPS_INC] = "bleeps increment",
++ [MSG_FUNCNAME_CHAR_FIRST] = "character, first",
++ [MSG_FUNCNAME_CHAR_LAST] = "character, last",
++ [MSG_FUNCNAME_CHAR_CURRENT] = "character, say current",
++ [MSG_FUNCNAME_CHAR_HEX_AND_DEC] = "character, say hex and decimal",
++ [MSG_FUNCNAME_CHAR_NEXT] = "character, say next",
++ [MSG_FUNCNAME_CHAR_PHONETIC] = "character, say phonetic",
++ [MSG_FUNCNAME_CHAR_PREVIOUS] = "character, say previous",
++ [MSG_FUNCNAME_CURSOR_PARK] = "cursor park",
++ [MSG_FUNCNAME_CUT] = "cut",
++ [MSG_FUNCNAME_EDIT_DELIM] = "edit delimiters",
++ [MSG_FUNCNAME_EDIT_EXNUM] = "edit exnum",
++ [MSG_FUNCNAME_EDIT_MOST] = "edit most",
++ [MSG_FUNCNAME_EDIT_REPEATS] = "edit repeats",
++ [MSG_FUNCNAME_EDIT_SOME] = "edit some",
++ [MSG_FUNCNAME_GOTO] = "go to",
++ [MSG_FUNCNAME_GOTO_BOTTOM] = "go to bottom edge",
++ [MSG_FUNCNAME_GOTO_LEFT] = "go to left edge",
++ [MSG_FUNCNAME_GOTO_RIGHT] = "go to right edge",
++ [MSG_FUNCNAME_GOTO_TOP] = "go to top edge",
++ [MSG_FUNCNAME_HELP] = "help",
++ [MSG_FUNCNAME_LINE_SAY_CURRENT] = "line, say current",
++ [MSG_FUNCNAME_LINE_SAY_NEXT] = "line, say next",
++ [MSG_FUNCNAME_LINE_SAY_PREVIOUS] = "line, say previous",
++ [MSG_FUNCNAME_LINE_SAY_WITH_INDENT] = "line, say with indent",
++ [MSG_FUNCNAME_PASTE] = "paste",
++ [MSG_FUNCNAME_PITCH_DEC] = "pitch decrement",
++ [MSG_FUNCNAME_PITCH_INC] = "pitch increment",
++ [MSG_FUNCNAME_PUNC_DEC] = "punctuation decrement",
++ [MSG_FUNCNAME_PUNC_INC] = "punctuation increment",
++ [MSG_FUNCNAME_PUNC_LEVEL_DEC] = "punc level decrement",
++ [MSG_FUNCNAME_PUNC_LEVEL_INC] = "punc level increment",
++ [MSG_FUNCNAME_QUIET] = "quiet",
++ [MSG_FUNCNAME_RATE_DEC] = "rate decrement",
++ [MSG_FUNCNAME_RATE_INC] = "rate increment",
++ [MSG_FUNCNAME_READING_PUNC_DEC] = "reading punctuation decrement",
++ [MSG_FUNCNAME_READING_PUNC_INC] = "reading punctuation increment",
++ [MSG_FUNCNAME_SAY_ATTRIBUTES] = "say attributes",
++ [MSG_FUNCNAME_SAY_FROM_LEFT] = "say from left",
++ [MSG_FUNCNAME_SAY_FROM_TOP] = "say from top",
++ [MSG_FUNCNAME_SAY_POSITION] = "say position",
++ [MSG_FUNCNAME_SAY_SCREEN] = "say screen",
++ [MSG_FUNCNAME_SAY_TO_BOTTOM] = "say to bottom",
++ [MSG_FUNCNAME_SAY_TO_RIGHT] = "say to right",
++ [MSG_FUNCNAME_SPEAKUP] = "speakup",
++ [MSG_FUNCNAME_SPEAKUP_LOCK] = "speakup lock",
++ [MSG_FUNCNAME_SPEAKUP_OFF] = "speakup off",
++ [MSG_FUNCNAME_SPEECH_KILL] = "speech kill",
++ [MSG_FUNCNAME_SPELL_DELAY_DEC] = "spell delay decrement",
++ [MSG_FUNCNAME_SPELL_DELAY_INC] = "spell delay increment",
++ [MSG_FUNCNAME_SPELL_WORD] = "spell word",
++ [MSG_FUNCNAME_SPELL_WORD_PHONETICALLY] = "spell word phoneticly",
++ [MSG_FUNCNAME_TONE_DEC] = "tone decrement",
++ [MSG_FUNCNAME_TONE_INC] = "tone increment",
++ [MSG_FUNCNAME_VOICE_DEC] = "voice decrement",
++ [MSG_FUNCNAME_VOICE_INC] = "voice increment",
++ [MSG_FUNCNAME_VOLUME_DEC] = "volume decrement",
++ [MSG_FUNCNAME_VOLUME_INC] = "volume increment",
++ [MSG_FUNCNAME_WINDOW_CLEAR] = "window, clear",
++ [MSG_FUNCNAME_WINDOW_SAY] = "window, say",
++ [MSG_FUNCNAME_WINDOW_SET] = "window, set",
++ [MSG_FUNCNAME_WINDOW_SILENCE] = "window, silence",
++ [MSG_FUNCNAME_WORD_SAY_CURRENT] = "word, say current",
++ [MSG_FUNCNAME_WORD_SAY_NEXT] = "word, say next",
++ [MSG_FUNCNAME_WORD_SAY_PREVIOUS] = "word, say previous",
++};
++
++static struct msg_group_t all_groups [] = {
++ {
++ .name = "ctl_keys",
++ .start = MSG_CTL_START,
++ .end = MSG_CTL_END,
++ },
++ {
++ .name = "colors",
++ .start = MSG_COLORS_START,
++ .end = MSG_COLORS_END,
++ },
++ {
++ .name = "formatted",
++ .start = MSG_FORMATTED_START,
++ .end = MSG_FORMATTED_END,
++ },
++ {
++ .name = "function_names",
++ .start = MSG_FUNCNAMES_START,
++ .end = MSG_FUNCNAMES_END,
++ },
++ {
++ .name = "key_names",
++ .start = MSG_KEYNAMES_START,
++ .end = MSG_KEYNAMES_END,
++ },
++ {
++ .name = "announcements",
++ .start = MSG_ANNOUNCEMENTS_START,
++ .end = MSG_ANNOUNCEMENTS_END,
++ },
++ {
++ .name = "states",
++ .start = MSG_STATES_START,
++ .end = MSG_STATES_END,
++ },
++};
++
++static const int num_groups = sizeof(all_groups) / sizeof(struct msg_group_t);
++
++char *msg_get(enum msg_index_t index)
++{
++ char *ch;
++
++ ch = speakup_msgs[index];
++ return ch;
++}
++
++/*
++ * Function: next_specifier
++ * Finds the start of the next format specifier in the argument string.
++ * Return value: pointer to start of format
++ * specifier, or NULL if no specifier exists.
++*/
++static char *next_specifier(char *input)
++{
++ int found = 0;
++ char *next_percent = input;
++
++ while ((next_percent != NULL) && !found) {
++ next_percent = strchr(next_percent, '%');
++ if (next_percent != NULL) {
++ while ((next_percent[0] == '%')
++ && (next_percent[1] == '%'))
++ next_percent += 2; /* Advance over doubled percent signs. */
++ if (*next_percent == '%')
++ found = 1;
++ else if (*next_percent == '\0')
++ next_percent = NULL;
++ }
++ }
++
++ return next_percent;
++}
++
++/* Skip over 0 or more flags. */
++static char *skip_flags(char *input)
++{
++ while ((*input != '\0') && strchr(" 0+-#", *input))
++ input++;
++ return input;
++}
++
++/* Skip over width.precision, if it exists. */
++static char *skip_width(char *input)
++{
++ while (isdigit(*input))
++ input++;
++ if (*input == '.') {
++ input++;
++ while (isdigit(*input))
++ input++;
++ }
++ return input;
++}
++
++/*
++ * Skip past the end of the conversion part.
++ * Note that this code only accepts a handful of conversion specifiers:
++ * c d s x and ld. Not accidental; these are exactly the ones used in
++ * the default group of formatted messages.
++*/
++static char *skip_conversion(char *input)
++{
++ if ((input[0] == 'l') && (input[1] == 'd'))
++ input += 2;
++ else if ((*input != '\0') && strchr("cdsx", *input))
++ input++;
++ return input;
++}
++
++/*
++ * Function: find_specifier_end
++ * Return a pointer to the end of the format specifier.
++*/
++static char *find_specifier_end(char *input)
++{
++ input++; /* Advance over %. */
++ input = skip_flags(input);
++ input = skip_width(input);
++ input = skip_conversion(input);
++ return input;
++}
++
++/*
++ * Function: compare_specifiers
++ * Compare the format specifiers pointed to by *input1 and *input2.
++ * Return 1 if they are the same, 0 otherwise. Advance *input1 and *input2
++ * so that they point to the character following the end of the specifier.
++*/
++static int compare_specifiers(char **input1, char **input2)
++{
++ int same = 0;
++ char *end1 = find_specifier_end(*input1);
++ char *end2 = find_specifier_end(*input2);
++ size_t length1 = end1 - *input1;
++ size_t length2 = end2 - *input2;
++
++ if((length1 == length2) && !memcmp(*input1, *input2, length1))
++ same = 1;
++
++ *input1 = end1;
++ *input2 = end2;
++ return same;
++}
++
++/*
++ * Function: fmt_validate
++ * Check that two format strings contain the same number of format specifiers,
++ * and that the order of specifiers is the same in both strings.
++ * Return 1 if the condition holds, 0 if it doesn't.
++*/
++static int fmt_validate(char *template, char *user)
++{
++ int valid = 1;
++ int still_comparing = 1;
++ char *template_ptr = template;
++ char *user_ptr = user;
++
++ while (still_comparing && valid) {
++ template_ptr = next_specifier(template_ptr);
++ user_ptr = next_specifier(user_ptr);
++ if (template_ptr && user_ptr) {
++/* Both have at least one more specifier. */
++ valid = compare_specifiers(&template_ptr, &user_ptr);
++ } else {
++/* No more format specifiers in one or both of the strings. */
++ still_comparing = 0;
++ if (template_ptr || user_ptr)
++ valid = 0; /* One has more specifiers than the other. */
++ }
++ }
++ return valid;
++}
++
++/*
++ * Function: msg_set
++ * Description: Add a user-supplied message to the user_messages array.
++ * The message text is copied to a memory area allocated with kmalloc.
++ * If the function fails, then user_messages is untouched.
++ * Arguments:
++ * - index: a message number, as found in i18n.h.
++ * - text: text of message. Not NUL-terminated.
++ * - length: number of bytes in text.
++ * Failure conditions:
++ * -EINVAL - Invalid format specifiers in formatted message or illegal index.
++ * -ENOMEM - Unable to allocate memory.
++*/
++ssize_t msg_set(enum msg_index_t index, char *text, size_t length)
++{
++ int rc = 0;
++ char *newstr = NULL;
++ unsigned long flags;
++
++ if ((index >= MSG_FIRST_INDEX) && (index < MSG_LAST_INDEX)) {
++ newstr = kmalloc(length + 1, GFP_KERNEL);
++ if (newstr) {
++ memcpy(newstr, text, length);
++ newstr[length] = '\0';
++ if ((index >= MSG_FORMATTED_START && index <= MSG_FORMATTED_END)
++ && ! fmt_validate(speakup_default_msgs[index], newstr)) {
++ return -EINVAL;
++ }
++ spk_lock(flags);
++ if (speakup_msgs[index] != speakup_default_msgs[index])
++ kfree(speakup_msgs[index]);
++ speakup_msgs[index] = newstr;
++ spk_unlock(flags);
++ } else {
++ rc = -ENOMEM;
++ }
++ } else {
++ rc = -EINVAL;
++ }
++ return rc;
++}
++
++/*
++ * Find a message group, given its name. Return a pointer to the structure
++ * if found, or NULL otherwise.
++*/
++struct msg_group_t *find_msg_group(const char *group_name)
++{
++ struct msg_group_t *group = NULL;
++ int i;
++
++ for (i = 0; i < num_groups; i++) {
++ if (!strcmp(all_groups[i].name, group_name)) {
++ group = &all_groups[i];
++ break;
++ }
++ }
++ return group;
++}
++
++void reset_msg_group(struct msg_group_t *group)
++{
++ unsigned long flags;
++ enum msg_index_t i;
++
++ spk_lock(flags);
++
++ for(i = group->start; i <= group->end; i++) {
++ if (speakup_msgs[i] != speakup_default_msgs[i])
++ kfree(speakup_msgs[i]);
++ speakup_msgs[i] = speakup_default_msgs[i];
++ }
++ spk_unlock(flags);
++}
++
++/* Called at initialization time, to establish default messages. */
++void initialize_msgs(void)
++{
++ memcpy(speakup_msgs, speakup_default_msgs, sizeof(speakup_default_msgs));
++}
++
++/* Free user-supplied strings when module is unloaded: */
++void free_user_msgs(void)
++{
++ enum msg_index_t index;
++ unsigned long flags;
++
++ spk_lock(flags);
++ for(index = MSG_FIRST_INDEX; index < MSG_LAST_INDEX; index++) {
++ if (speakup_msgs[index] != speakup_default_msgs[index]) {
++ kfree(speakup_msgs[index]);
++ speakup_msgs[index] = speakup_default_msgs[index];
++ }
++ }
++ spk_unlock(flags);
++}
+--- a/drivers/staging/speakup/i18n.h 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/i18n.h 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,228 @@
++#ifndef I18N_H
++#define I18N_H
++/* Internationalization declarations */
++
++enum msg_index_t {
++ MSG_FIRST_INDEX ,
++ MSG_ANNOUNCEMENTS_START = MSG_FIRST_INDEX,
++ MSG_BLANK = MSG_ANNOUNCEMENTS_START,
++ MSG_IAM_ALIVE,
++ MSG_YOU_KILLED_SPEAKUP,
++ MSG_HEY_THATS_BETTER,
++ MSG_YOU_TURNED_ME_OFF,
++ MSG_PARKED,
++ MSG_UNPARKED,
++ MSG_MARK,
++ MSG_CUT,
++ MSG_MARK_CLEARED,
++ MSG_PASTE,
++ MSG_BRIGHT,
++ MSG_ON_BLINKING,
++ MSG_STATUS_START,
++ MSG_OFF = MSG_STATUS_START,
++ MSG_ON,
++ MSG_NO_WINDOW,
++ MSG_CURSOR_MSGS_START,
++ MSG_CURSORING_OFF = MSG_CURSOR_MSGS_START,
++ MSG_CURSORING_ON,
++ MSG_HIGHLIGHT_TRACKING,
++ MSG_READ_WINDOW,
++ MSG_READ_ALL,
++ MSG_EDIT_DONE,
++ MSG_WINDOW_ALREADY_SET,
++ MSG_END_BEFORE_START,
++ MSG_WINDOW_CLEARED,
++ MSG_WINDOW_SILENCED,
++ MSG_WINDOW_SILENCE_DISABLED,
++ MSG_ERROR,
++ MSG_GOTO_CANCELED,
++ MSG_GOTO,
++ MSG_LEAVING_HELP,
++ MSG_IS_UNASSIGNED,
++ MSG_HELP_INFO,
++ MSG_EDGE_MSGS_START,
++ MSG_EDGE_TOP = MSG_EDGE_MSGS_START,
++ MSG_EDGE_BOTTOM,
++ MSG_EDGE_LEFT,
++ MSG_EDGE_RIGHT,
++ MSG_NUMBER,
++ MSG_SPACE,
++ MSG_START, /* A little confusing, given our convention. */
++ MSG_END, /* A little confusing, given our convention. */
++ MSG_CTRL,
++
++/* A message containing the single word "or". */
++ MSG_DISJUNCTION,
++ MSG_ANNOUNCEMENTS_END = MSG_DISJUNCTION,
++
++/* Messages with format specifiers. */
++ MSG_FORMATTED_START,
++ MSG_POS_INFO = MSG_FORMATTED_START,
++ MSG_CHAR_INFO,
++ MSG_REPEAT_DESC,
++ MSG_REPEAT_DESC2,
++ MSG_WINDOW_LINE,
++ MSG_WINDOW_BOUNDARY,
++ MSG_EDIT_PROMPT,
++ MSG_NO_COMMAND,
++ MSG_KEYDESC,
++ MSG_FORMATTED_END = MSG_KEYDESC,
++
++ /* Control keys. */
++ MSG_CTL_START,
++ MSG_CTL_SHIFT = MSG_CTL_START,
++ MSG_CTL_ALTGR,
++ MSG_CTL_CONTROL,
++ MSG_CTL_ALT,
++ MSG_CTL_LSHIFT,
++ MSG_CTL_SPEAKUP,
++ MSG_CTL_LCONTROL,
++ MSG_CTL_RCONTROL,
++ MSG_CTL_CAPSSHIFT,
++ MSG_CTL_END = MSG_CTL_CAPSSHIFT,
++
++ /* Colors. */
++ MSG_COLORS_START,
++ MSG_COLOR_BLACK = MSG_COLORS_START,
++ MSG_COLOR_BLUE,
++ MSG_COLOR_GREEN,
++ MSG_COLOR_CYAN,
++ MSG_COLOR_RED,
++ MSG_COLOR_MAGENTA,
++ MSG_COLOR_YELLOW,
++ MSG_COLOR_WHITE,
++ MSG_COLOR_GREY,
++ MSG_COLORS_END = MSG_COLOR_GREY,
++
++ MSG_STATES_START,
++ MSG_STATE_DOUBLE = MSG_STATES_START,
++ MSG_STATE_SPEAKUP,
++ MSG_STATE_ALT,
++ MSG_STATE_CONTROL,
++ MSG_STATE_ALTGR,
++ MSG_STATE_SHIFT,
++ MSG_STATES_END = MSG_STATE_SHIFT,
++
++ MSG_KEYNAMES_START,
++ MSG_KEYNAME_ESC = MSG_KEYNAMES_START,
++ MSG_KEYNAME_1, MSG_KEYNAME_2, MSG_KEYNAME_3, MSG_KEYNAME_4,
++ MSG_KEYNAME_5, MSG_KEYNAME_6, MSG_KEYNAME_7, MSG_KEYNAME_8, MSG_KEYNAME_9,
++ MSG_KEYNAME_0, MSG_KEYNAME_DASH, MSG_KEYNAME_EQUAL, MSG_KEYNAME_BS,
++ MSG_KEYNAME_TAB,
++ MSG_KEYNAME_Q, MSG_KEYNAME_W, MSG_KEYNAME_E, MSG_KEYNAME_R, MSG_KEYNAME_T,
++ MSG_KEYNAME_Y, MSG_KEYNAME_U, MSG_KEYNAME_I, MSG_KEYNAME_O, MSG_KEYNAME_P,
++ MSG_KEYNAME_LEFTBRACE, MSG_KEYNAME_RIGHTBRACE, MSG_KEYNAME_ENTER,
++ MSG_KEYNAME_LEFTCTRL, MSG_KEYNAME_A,
++ MSG_KEYNAME_S, MSG_KEYNAME_D, MSG_KEYNAME_F, MSG_KEYNAME_G, MSG_KEYNAME_H,
++ MSG_KEYNAME_J, MSG_KEYNAME_K, MSG_KEYNAME_L, MSG_KEYNAME_SEMICOLON,
++ MSG_KEYNAME_SINGLEQUOTE, MSG_KEYNAME_GRAVE,
++ MSG_KEYNAME_LEFTSHFT, MSG_KEYNAME_BACKSLASH, MSG_KEYNAME_Z, MSG_KEYNAME_X,
++ MSG_KEYNAME_C, MSG_KEYNAME_V, MSG_KEYNAME_B, MSG_KEYNAME_N, MSG_KEYNAME_M,
++ MSG_KEYNAME_COMMA, MSG_KEYNAME_DOT, MSG_KEYNAME_SLASH, MSG_KEYNAME_RIGHTSHFT,
++ MSG_KEYNAME_KPSTAR,
++ MSG_KEYNAME_LEFTALT, MSG_KEYNAME_SPACE, MSG_KEYNAME_CAPSLOCK,
++ MSG_KEYNAME_F1, MSG_KEYNAME_F2,
++ MSG_KEYNAME_F3, MSG_KEYNAME_F4, MSG_KEYNAME_F5, MSG_KEYNAME_F6,
++ MSG_KEYNAME_F7,
++ MSG_KEYNAME_F8, MSG_KEYNAME_F9, MSG_KEYNAME_F10, MSG_KEYNAME_NUMLOCK,
++ MSG_KEYNAME_SCROLLLOCK,
++ MSG_KEYNAME_KP7, MSG_KEYNAME_KP8, MSG_KEYNAME_KP9, MSG_KEYNAME_KPMINUS,
++ MSG_KEYNAME_KP4,
++ MSG_KEYNAME_KP5, MSG_KEYNAME_KP6, MSG_KEYNAME_KPPLUS, MSG_KEYNAME_KP1,
++ MSG_KEYNAME_KP2,
++ MSG_KEYNAME_KP3, MSG_KEYNAME_KP0, MSG_KEYNAME_KPDOT, MSG_KEYNAME_103RD,
++ MSG_KEYNAME_F13,
++ MSG_KEYNAME_102ND, MSG_KEYNAME_F11, MSG_KEYNAME_F12, MSG_KEYNAME_F14,
++ MSG_KEYNAME_F15,
++ MSG_KEYNAME_F16, MSG_KEYNAME_F17, MSG_KEYNAME_F18, MSG_KEYNAME_F19,
++ MSG_KEYNAME_F20,
++ MSG_KEYNAME_KPENTER, MSG_KEYNAME_RIGHTCTRL, MSG_KEYNAME_KPSLASH,
++ MSG_KEYNAME_SYSRQ, MSG_KEYNAME_RIGHTALT,
++ MSG_KEYNAME_LF, MSG_KEYNAME_HOME, MSG_KEYNAME_UP, MSG_KEYNAME_PGUP,
++ MSG_KEYNAME_LEFT,
++ MSG_KEYNAME_RIGHT, MSG_KEYNAME_END, MSG_KEYNAME_DOWN, MSG_KEYNAME_PGDN,
++ MSG_KEYNAME_INS,
++ MSG_KEYNAME_DEL, MSG_KEYNAME_MACRO, MSG_KEYNAME_MUTE,
++ MSG_KEYNAME_VOLDOWN, MSG_KEYNAME_VOLUP,
++ MSG_KEYNAME_POWER, MSG_KEYNAME_KPEQUAL, MSG_KEYNAME_KPPLUSDASH, MSG_KEYNAME_PAUSE, MSG_KEYNAME_F21,
++ MSG_KEYNAME_F22, MSG_KEYNAME_F23, MSG_KEYNAME_F24, MSG_KEYNAME_KPCOMMA, MSG_KEYNAME_LEFTMETA,
++ MSG_KEYNAME_RIGHTMETA, MSG_KEYNAME_COMPOSE, MSG_KEYNAME_STOP,
++ MSG_KEYNAME_AGAIN, MSG_KEYNAME_PROPS,
++ MSG_KEYNAME_UNDO, MSG_KEYNAME_FRONT, MSG_KEYNAME_COPY, MSG_KEYNAME_OPEN,
++ MSG_KEYNAME_PASTE,
++ MSG_KEYNAME_FIND, MSG_KEYNAME_CUT, MSG_KEYNAME_HELP, MSG_KEYNAME_MENU,
++ MSG_KEYNAME_CALC,
++ MSG_KEYNAME_SETUP, MSG_KEYNAME_SLEEP, MSG_KEYNAME_WAKEUP,
++ MSG_KEYNAME_FILE, MSG_KEYNAME_SENDFILE,
++ MSG_KEYNAME_DELFILE, MSG_KEYNAME_XFER, MSG_KEYNAME_PROG1,
++ MSG_KEYNAME_PROG2, MSG_KEYNAME_WWW,
++ MSG_KEYNAME_MSDOS, MSG_KEYNAME_COFFEE, MSG_KEYNAME_DIRECTION,
++ MSG_KEYNAME_CYCLEWINDOWS, MSG_KEYNAME_MAIL,
++ MSG_KEYNAME_BOOKMARKS, MSG_KEYNAME_COMPUTER, MSG_KEYNAME_BACK,
++ MSG_KEYNAME_FORWARD, MSG_KEYNAME_CLOSECD,
++ MSG_KEYNAME_EJECTCD, MSG_KEYNAME_EJECTCLOSE, MSG_KEYNAME_NEXTSONG,
++ MSG_KEYNAME_PLAYPAUSE, MSG_KEYNAME_PREVSONG,
++ MSG_KEYNAME_STOPCD, MSG_KEYNAME_RECORD, MSG_KEYNAME_REWIND,
++ MSG_KEYNAME_PHONE, MSG_KEYNAME_ISO,
++ MSG_KEYNAME_CONFIG, MSG_KEYNAME_HOMEPG, MSG_KEYNAME_REFRESH,
++ MSG_KEYNAME_EXIT, MSG_KEYNAME_MOVE,
++ MSG_KEYNAME_EDIT, MSG_KEYNAME_SCROLLUP, MSG_KEYNAME_SCROLLDN,
++ MSG_KEYNAME_KPLEFTPAR, MSG_KEYNAME_KPRIGHTPAR,
++ MSG_KEYNAMES_END = MSG_KEYNAME_KPRIGHTPAR,
++
++ MSG_FUNCNAMES_START,
++ MSG_FUNCNAME_ATTRIB_BLEEP_DEC = MSG_FUNCNAMES_START,
++ MSG_FUNCNAME_ATTRIB_BLEEP_INC,
++ MSG_FUNCNAME_BLEEPS_DEC, MSG_FUNCNAME_BLEEPS_INC,
++ MSG_FUNCNAME_CHAR_FIRST, MSG_FUNCNAME_CHAR_LAST,
++ MSG_FUNCNAME_CHAR_CURRENT, MSG_FUNCNAME_CHAR_HEX_AND_DEC,
++ MSG_FUNCNAME_CHAR_NEXT,
++ MSG_FUNCNAME_CHAR_PHONETIC, MSG_FUNCNAME_CHAR_PREVIOUS,
++ MSG_FUNCNAME_CURSOR_PARK, MSG_FUNCNAME_CUT,
++ MSG_FUNCNAME_EDIT_DELIM, MSG_FUNCNAME_EDIT_EXNUM,
++ MSG_FUNCNAME_EDIT_MOST, MSG_FUNCNAME_EDIT_REPEATS, MSG_FUNCNAME_EDIT_SOME,
++ MSG_FUNCNAME_GOTO, MSG_FUNCNAME_GOTO_BOTTOM, MSG_FUNCNAME_GOTO_LEFT,
++ MSG_FUNCNAME_GOTO_RIGHT, MSG_FUNCNAME_GOTO_TOP, MSG_FUNCNAME_HELP,
++ MSG_FUNCNAME_LINE_SAY_CURRENT, MSG_FUNCNAME_LINE_SAY_NEXT,
++ MSG_FUNCNAME_LINE_SAY_PREVIOUS, MSG_FUNCNAME_LINE_SAY_WITH_INDENT,
++ MSG_FUNCNAME_PASTE, MSG_FUNCNAME_PITCH_DEC, MSG_FUNCNAME_PITCH_INC,
++ MSG_FUNCNAME_PUNC_DEC, MSG_FUNCNAME_PUNC_INC,
++ MSG_FUNCNAME_PUNC_LEVEL_DEC, MSG_FUNCNAME_PUNC_LEVEL_INC,
++ MSG_FUNCNAME_QUIET,
++ MSG_FUNCNAME_RATE_DEC, MSG_FUNCNAME_RATE_INC,
++ MSG_FUNCNAME_READING_PUNC_DEC, MSG_FUNCNAME_READING_PUNC_INC,
++ MSG_FUNCNAME_SAY_ATTRIBUTES,
++ MSG_FUNCNAME_SAY_FROM_LEFT, MSG_FUNCNAME_SAY_FROM_TOP,
++ MSG_FUNCNAME_SAY_POSITION, MSG_FUNCNAME_SAY_SCREEN,
++ MSG_FUNCNAME_SAY_TO_BOTTOM, MSG_FUNCNAME_SAY_TO_RIGHT,
++ MSG_FUNCNAME_SPEAKUP, MSG_FUNCNAME_SPEAKUP_LOCK,
++ MSG_FUNCNAME_SPEAKUP_OFF, MSG_FUNCNAME_SPEECH_KILL,
++ MSG_FUNCNAME_SPELL_DELAY_DEC, MSG_FUNCNAME_SPELL_DELAY_INC,
++ MSG_FUNCNAME_SPELL_WORD, MSG_FUNCNAME_SPELL_WORD_PHONETICALLY,
++ MSG_FUNCNAME_TONE_DEC, MSG_FUNCNAME_TONE_INC,
++ MSG_FUNCNAME_VOICE_DEC, MSG_FUNCNAME_VOICE_INC,
++ MSG_FUNCNAME_VOLUME_DEC, MSG_FUNCNAME_VOLUME_INC,
++ MSG_FUNCNAME_WINDOW_CLEAR, MSG_FUNCNAME_WINDOW_SAY,
++ MSG_FUNCNAME_WINDOW_SET, MSG_FUNCNAME_WINDOW_SILENCE,
++ MSG_FUNCNAME_WORD_SAY_CURRENT, MSG_FUNCNAME_WORD_SAY_NEXT,
++ MSG_FUNCNAME_WORD_SAY_PREVIOUS,
++ MSG_FUNCNAMES_END = MSG_FUNCNAME_WORD_SAY_PREVIOUS,
++
++ /* all valid indices must be above this */
++ MSG_LAST_INDEX
++};
++
++struct msg_group_t {
++ char *name;
++ enum msg_index_t start;
++ enum msg_index_t end;
++};
++
++extern char *msg_get(enum msg_index_t index);
++extern ssize_t msg_set(enum msg_index_t index, char *text, size_t length);
++extern struct msg_group_t *find_msg_group(const char *group_name);
++extern void reset_msg_group(struct msg_group_t *group);
++extern void initialize_msgs(void);
++extern void free_user_msgs(void);
++
++#endif
+--- a/drivers/staging/speakup/Kbuild 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/Kbuild 2009-10-04 16:44:13.000000000 +0100
+@@ -0,0 +1,29 @@
++include $M/allmodule.mk
++obj-$(CONFIG_SPEAKUP_SYNTH_ACNTSA) += speakup_acntsa.o
++obj-$(CONFIG_SPEAKUP_SYNTH_ACNTPC) += speakup_acntpc.o
++obj-$(CONFIG_SPEAKUP_SYNTH_APOLLO) += speakup_apollo.o
++obj-$(CONFIG_SPEAKUP_SYNTH_AUDPTR) += speakup_audptr.o
++obj-$(CONFIG_SPEAKUP_SYNTH_BNS) += speakup_bns.o
++obj-$(CONFIG_SPEAKUP_SYNTH_DECTLK) += speakup_dectlk.o
++obj-$(CONFIG_SPEAKUP_SYNTH_DECEXT) += speakup_decext.o
++obj-$(CONFIG_SPEAKUP_SYNTH_DTLK) += speakup_dtlk.o
++obj-$(CONFIG_SPEAKUP_SYNTH_KEYPC) += speakup_keypc.o
++obj-$(CONFIG_SPEAKUP_SYNTH_LTLK) += speakup_ltlk.o
++obj-$(CONFIG_SPEAKUP_SYNTH_SOFT) += speakup_soft.o
++obj-$(CONFIG_SPEAKUP_SYNTH_SPKOUT) += speakup_spkout.o
++obj-$(CONFIG_SPEAKUP_SYNTH_TXPRT) += speakup_txprt.o
++obj-$(CONFIG_SPEAKUP_SYNTH_DUMMY) += speakup_dummy.o
++
++obj-$(CONFIG_SPEAKUP) += speakup.o
++speakup-objs := \
++ buffers.o \
++ devsynth.o \
++ i18n.o \
++ main.o \
++ keyhelp.o \
++ kobjects.o \
++ selection.o \
++ serialio.o \
++ synth.o \
++ thread.o \
++ varhandlers.o
+--- a/drivers/staging/speakup/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/Kconfig 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,168 @@
++menu "Speakup console speech"
++
++config SPEAKUP
++ depends on VT
++ tristate "Speakup core"
++ ---help---
++ This is the Speakup screen reader. Think of it as a
++ video console for blind people. If built in to the
++ kernel, it can speak everything on the text console from
++ boot up to shutdown. For more information on Speakup,
++ point your browser at http://www.linux-speakup.org/.
++ There is also a mailing list at the above url that you
++ can subscribe to.
++
++ Supported synthesizers are accent sa, accent pc,
++ appollo II., Auddapter, Braille 'n Speak, Dectalk
++ external (old), Dectalk PC (full length isa board),
++ Dectalk express, Doubletalk, Doubletalk LT or
++ Litetalk, Keynote Gold internal PC, software
++ synthesizers, Speakout, transport, and a dummy module
++ that can be used with a plain text terminal.
++
++ Speakup can either be built in or compiled as a module
++ by answering y or m. If you answer y here, then you
++ must answer either y or m to at least one of the
++ synthesizer drivers below. If you answer m here, then
++ the synthesizer drivers below can only be built as
++ modules.
++
++ These drivers are not standalone drivers, but must be
++ used in conjunction with Speakup. Think of them as
++ video cards for blind people.
++
++
++ If you are not a blind person, or don't have access to
++ one of the listed synthesizers, you should say n.
++
++if SPEAKUP
++config SPEAKUP_SYNTH_ACNTSA
++ tristate "Accent SA synthesizer support"
++ ---help---
++ This is the Speakup driver for the Accent SA
++ synthesizer. You can say y to build it into the kernel,
++ or m to build it as a module. See the configuration
++ help on the Speakup choice above for more info.
++
++config SPEAKUP_SYNTH_ACNTPC
++ tristate "Accent PC synthesizer support"
++ ---help---
++ This is the Speakup driver for the accent pc
++ synthesizer. You can say y to build it into the kernel,
++ or m to build it as a module. See the configuration
++ help on the Speakup choice above for more info.
++
++config SPEAKUP_SYNTH_APOLLO
++ tristate "Apollo II synthesizer support"
++ ---help---
++ This is the Speakup driver for the Apollo II
++ synthesizer. You can say y to build it into the kernel,
++ or m to build it as a module. See the configuration
++ help on the Speakup choice above for more info.
++
++config SPEAKUP_SYNTH_AUDPTR
++ tristate "Audapter synthesizer support"
++ ---help---
++ This is the Speakup driver for the Audapter synthesizer.
++ You can say y to build it into the kernel, or m to
++ build it as a module. See the configuration help on the
++ Speakup choice above for more info.
++
++config SPEAKUP_SYNTH_BNS
++ tristate "Braille 'n' Speak synthesizer support"
++ ---help---
++ This is the Speakup driver for the Braille 'n' Speak
++ synthesizer. You can say y to build it into the kernel,
++ or m to build it as a module. See the configuration
++ help on the Speakup choice above for more info.
++
++config SPEAKUP_SYNTH_DECTLK
++ tristate "DECtalk Express synthesizer support"
++ ---help---
++
++ This is the Speakup driver for the DecTalk Express
++ synthesizer. You can say y to build it into the kernel,
++ or m to build it as a module. See the configuration
++ help on the Speakup choice above for more info.
++
++config SPEAKUP_SYNTH_DECEXT
++ tristate "DECtalk External (old) synthesizer support"
++ ---help---
++
++ This is the Speakup driver for the DecTalk External
++ (old) synthesizer. You can say y to build it into the
++ kernel, or m to build it as a module. See the
++ configuration help on the Speakup choice above for more
++ info.
++
++config SPEAKUP_SYNTH_DTLK
++ tristate "DoubleTalk PC synthesizer support"
++ ---help---
++
++ This is the Speakup driver for the internal DoubleTalk
++ PC synthesizer. You can say y to build it into the
++ kernel, or m to build it as a module. See the
++ configuration help on the Speakup choice above for more
++ info.
++
++config SPEAKUP_SYNTH_KEYPC
++ tristate "Keynote Gold PC synthesizer support"
++ ---help---
++
++ This is the Speakup driver for the Keynote Gold
++ PC synthesizer. You can say y to build it into the
++ kernel, or m to build it as a module. See the
++ configuration help on the Speakup choice above for more
++ info.
++
++config SPEAKUP_SYNTH_LTLK
++ tristate "DoubleTalk LT/LiteTalk synthesizer support"
++---help---
++
++ This is the Speakup driver for the LiteTalk/DoubleTalk
++ LT synthesizer. You can say y to build it into the
++ kernel, or m to build it as a module. See the
++ configuration help on the Speakup choice above for more
++ info.
++
++config SPEAKUP_SYNTH_SOFT
++ tristate "Userspace software synthesizer support"
++ ---help---
++
++ This is the software synthesizer device node. It will
++ register a device /dev/softsynth which midware programs
++ and speech daemons may open and read to provide kernel
++ output to software synths such as espeak, festival,
++ flite and so forth. You can select 'y' or 'm' to have
++ it built-in to the kernel or loaded as a module.
++
++config SPEAKUP_SYNTH_SPKOUT
++ tristate "Speak Out synthesizer support"
++ ---help---
++
++ This is the Speakup driver for the Speakout synthesizer.
++ You can say y to build it into the kernel, or m to
++ build it as a module. See the configuration help on the
++ Speakup choice above for more info.
++
++config SPEAKUP_SYNTH_TXPRT
++ tristate "Transport synthesizer support"
++ ---help---
++
++ This is the Speakup driver for the Transport
++ synthesizer. You can say y to build it into the kernel,
++ or m to build it as a module. See the configuration
++ help on the Speakup choice above for more info.
++
++config SPEAKUP_SYNTH_DUMMY
++ tristate "Dummy synthesizer driver (for testing)"
++ ---help---
++
++ This is a dummy Speakup driver for plugging a mere serial
++ terminal. This is handy if you want to test speakup but
++ don't have the hardware. You can say y to build it into
++ the kernel, or m to build it as a module. See the
++ configuration help on the Speakup choice above for more info.
++
++endif # SPEAKUP
++endmenu
+--- a/drivers/staging/speakup/keyhelp.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/keyhelp.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,212 @@
++/* speakup_keyhelp.c
++ help module for speakup
++
++ written by David Borowski.
++
++ Copyright (C) 2003 David Borowski.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; if not, write to the Free Software
++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++*/
++
++#include <linux/keyboard.h>
++#include "spk_priv.h"
++#include "speakup.h"
++
++#define MAXFUNCS 130
++#define MAXKEYS 256
++static const int num_key_names = MSG_KEYNAMES_END - MSG_KEYNAMES_START + 1;
++static u_short key_offsets[MAXFUNCS], key_data[MAXKEYS];
++static u_short masks[] = { 32, 16, 8, 4, 2, 1 };
++
++static short letter_offsets[26] =
++{ -1, -1, -1, -1, -1, -1, -1, -1,
++ -1, -1, -1, -1, -1, -1, -1, -1,
++ -1, -1, -1, -1, -1, -1, -1, -1,
++ -1, -1 };
++
++static u_char funcvals[] = {
++ ATTRIB_BLEEP_DEC, ATTRIB_BLEEP_INC, BLEEPS_DEC, BLEEPS_INC,
++ SAY_FIRST_CHAR, SAY_LAST_CHAR, SAY_CHAR, SAY_CHAR_NUM,
++ SAY_NEXT_CHAR, SAY_PHONETIC_CHAR, SAY_PREV_CHAR, SPEAKUP_PARKED,
++ SPEAKUP_CUT, EDIT_DELIM, EDIT_EXNUM, EDIT_MOST,
++ EDIT_REPEAT, EDIT_SOME, SPEAKUP_GOTO, BOTTOM_EDGE,
++ LEFT_EDGE, RIGHT_EDGE, TOP_EDGE, SPEAKUP_HELP,
++ SAY_LINE, SAY_NEXT_LINE, SAY_PREV_LINE, SAY_LINE_INDENT,
++ SPEAKUP_PASTE, PITCH_DEC, PITCH_INC, PUNCT_DEC,
++ PUNCT_INC, PUNC_LEVEL_DEC, PUNC_LEVEL_INC, SPEAKUP_QUIET,
++ RATE_DEC, RATE_INC, READING_PUNC_DEC, READING_PUNC_INC,
++ SAY_ATTRIBUTES, SAY_FROM_LEFT, SAY_FROM_TOP, SAY_POSITION,
++ SAY_SCREEN, SAY_TO_BOTTOM, SAY_TO_RIGHT, SPK_KEY,
++ SPK_LOCK, SPEAKUP_OFF, SPEECH_KILL, SPELL_DELAY_DEC,
++ SPELL_DELAY_INC, SPELL_WORD, SPELL_PHONETIC, TONE_DEC,
++ TONE_INC, VOICE_DEC, VOICE_INC, VOL_DEC,
++ VOL_INC, CLEAR_WIN, SAY_WIN, SET_WIN,
++ ENABLE_WIN, SAY_WORD, SAY_NEXT_WORD, SAY_PREV_WORD, 0
++};
++
++static u_char *state_tbl;
++static int cur_item, nstates;
++
++static void build_key_data(void)
++{
++ u_char *kp, counters[MAXFUNCS], ch, ch1;
++ u_short *p_key = key_data, key;
++ int i, offset = 1;
++ nstates = (int)(state_tbl[-1]);
++ memset(counters, 0, sizeof(counters));
++ memset(key_offsets, 0, sizeof(key_offsets));
++ kp = state_tbl + nstates + 1;
++ while (*kp++) {
++ /* count occurrances of each function */
++ for (i = 0; i < nstates; i++, kp++) {
++ if (!*kp)
++ continue;
++ if ((state_tbl[i]&16) != 0 && *kp == SPK_KEY)
++ continue;
++ counters[*kp]++;
++ }
++ }
++ for (i = 0; i < MAXFUNCS; i++) {
++ if (counters[i] == 0)
++ continue;
++ key_offsets[i] = offset;
++ offset += (counters[i]+1);
++ if (offset >= MAXKEYS)
++ break;
++ }
++/* leave counters set so high keycodes come first.
++ this is done so num pad and other extended keys maps are spoken before
++ the alpha with speakup type mapping. */
++ kp = state_tbl + nstates + 1;
++ while ((ch = *kp++)) {
++ for (i = 0; i < nstates; i++) {
++ ch1 = *kp++;
++ if (!ch1)
++ continue;
++ if ((state_tbl[i]&16) != 0 && ch1 == SPK_KEY)
++ continue;
++ key = (state_tbl[i] << 8) + ch;
++ counters[ch1]--;
++ offset = key_offsets[ch1];
++ if (!offset)
++ continue;
++ p_key = key_data + offset + counters[ch1];
++ *p_key = key;
++ }
++ }
++}
++
++static void say_key(int key)
++{
++ int i, state = key >> 8;
++ key &= 0xff;
++ for (i = 0; i < 6; i++) {
++ if (state & masks[i])
++ synth_printf(" %s", msg_get(MSG_STATES_START + i));
++ }
++ if ((key > 0) && (key <= num_key_names))
++ synth_printf(" %s\n", msg_get(MSG_KEYNAMES_START + (key - 1)));
++}
++
++static int help_init(void)
++{
++ char start = SPACE;
++ int i;
++ int num_funcs = MSG_FUNCNAMES_END - MSG_FUNCNAMES_START + 1;
++state_tbl = our_keys[0]+SHIFT_TBL_SIZE+2;
++ for (i = 0; i < num_funcs; i++) {
++ char *cur_funcname = msg_get(MSG_FUNCNAMES_START + i);
++ if (start == *cur_funcname)
++ continue;
++ start = *cur_funcname;
++ letter_offsets[(start&31)-1] = i;
++ }
++ return 0;
++}
++
++int handle_help(struct vc_data *vc, u_char type, u_char ch, u_short key)
++{
++ int i, n;
++ char *name;
++ u_char func, *kp;
++ u_short *p_keys, val;
++ if (letter_offsets[0] == -1)
++ help_init();
++ if (type == KT_LATIN) {
++ if (ch == SPACE) {
++ special_handler = NULL;
++ synth_printf("%s\n", msg_get(MSG_LEAVING_HELP));
++ return 1;
++ }
++ ch |= 32; /* lower case */
++ if (ch < 'a' || ch > 'z')
++ return -1;
++ if (letter_offsets[ch-'a'] == -1) {
++ synth_printf(msg_get(MSG_NO_COMMAND), ch);
++ synth_printf("\n");
++ return 1;
++ }
++ cur_item = letter_offsets[ch-'a'];
++ } else if (type == KT_CUR) {
++ if (ch == 0 && (cur_item + 1) <= MSG_FUNCNAMES_END)
++ cur_item++;
++ else if (ch == 3 && cur_item > 0)
++ cur_item--;
++ else
++ return -1;
++ } else if (type == KT_SPKUP && ch == SPEAKUP_HELP && !special_handler) {
++ special_handler = handle_help;
++ synth_printf("%s\n", msg_get(MSG_HELP_INFO));
++ build_key_data(); /* rebuild each time in case new mapping */
++ return 1;
++ } else {
++ name = NULL;
++ if ((type != KT_SPKUP) && (key > 0) && (key <= num_key_names)) {
++ synth_printf("%s\n", msg_get(MSG_KEYNAMES_START + key-1));
++ return 1;
++ }
++ for (i = 0; funcvals[i] != 0 && !name; i++) {
++ if (ch == funcvals[i])
++ name = msg_get(MSG_FUNCNAMES_START + i);
++ }
++ if (!name)
++ return -1;
++ kp = our_keys[key]+1;
++ for (i = 0; i < nstates; i++) {
++ if (ch == kp[i])
++ break;
++ }
++ key += (state_tbl[i] << 8);
++ say_key(key);
++ synth_printf(msg_get(MSG_KEYDESC), name);
++ synth_printf("\n");
++ return 1;
++ }
++ name = msg_get(MSG_FUNCNAMES_START + cur_item);
++ func = funcvals[cur_item];
++ synth_printf("%s", name);
++ if (key_offsets[func] == 0) {
++ synth_printf(" %s\n", msg_get(MSG_IS_UNASSIGNED));
++ return 1;
++ }
++ p_keys = key_data + key_offsets[func];
++ for (n = 0; p_keys[n]; n++) {
++ val = p_keys[n];
++ if (n > 0)
++ synth_printf("%s ", msg_get(MSG_DISJUNCTION));
++ say_key(val);
++ }
++ return 1;
++}
+--- a/drivers/staging/speakup/kobjects.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/kobjects.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,986 @@
++/*
++ * Speakup kobject implementation
++ *
++ * Copyright (C) 2009 William Hubbs
++ *
++ * This code is based on kobject-example.c, which came with linux 2.6.x.
++ *
++ * Copyright (C) 2004-2007 Greg Kroah-Hartman <greg@kroah.com>
++ * Copyright (C) 2007 Novell Inc.
++ *
++ * Released under the GPL version 2 only.
++ *
++ */
++#include <linux/kernel.h>
++#include <linux/kobject.h>
++#include <linux/string.h>
++#include <linux/sysfs.h>
++#include <linux/ctype.h>
++
++#include "speakup.h"
++#include "spk_priv.h"
++
++/*
++ * This is called when a user reads the characters or chartab sys file.
++ */
++static ssize_t chars_chartab_show(struct kobject *kobj,
++ struct kobj_attribute *attr, char *buf)
++{
++ int i;
++ int len = 0;
++ char *cp;
++ char *buf_pointer = buf;
++ size_t bufsize = PAGE_SIZE;
++ unsigned long flags;
++
++ spk_lock(flags);
++ *buf_pointer = '\0';
++ for (i = 0; i < 256; i++) {
++ if (bufsize <= 1)
++ break;
++ if (strcmp("characters", attr->attr.name) == 0) {
++ len = scnprintf(buf_pointer, bufsize, "%d\t%s\n",
++ i, characters[i]);
++ } else { /* show chartab entry */
++ if (IS_TYPE(i, B_CTL))
++ cp = "B_CTL";
++ else if (IS_TYPE(i, WDLM))
++ cp = "WDLM";
++ else if (IS_TYPE(i, A_PUNC))
++ cp = "A_PUNC";
++ else if (IS_TYPE(i, PUNC))
++ cp = "PUNC";
++ else if (IS_TYPE(i, NUM))
++ cp = "NUM";
++ else if (IS_TYPE(i, A_CAP))
++ cp = "A_CAP";
++ else if (IS_TYPE(i, ALPHA))
++ cp = "ALPHA";
++ else if (IS_TYPE(i, B_CAPSYM))
++ cp = "B_CAPSYM";
++ else if (IS_TYPE(i, B_SYM))
++ cp = "B_SYM";
++ else
++ cp = "0";
++ len =
++ scnprintf(buf_pointer, bufsize, "%d\t%s\n", i, cp);
++ }
++ bufsize -= len;
++ buf_pointer += len;
++ }
++ spk_unlock(flags);
++ return buf_pointer - buf;
++}
++
++/*
++ * Print informational messages or warnings after updating
++ * character descriptions or chartab entries.
++ */
++static void report_char_chartab_status(int reset, int received, int used,
++ int rejected, int do_characters)
++{
++ char *object_type[] = {
++ "character class entries",
++ "character descriptions",
++ };
++ int len;
++ char buf[80];
++
++ if (reset) {
++ pr_info("%s reset to defaults\n", object_type[do_characters]);
++ } else if (received ) {
++ len = snprintf(buf, sizeof(buf),
++ " updated %d of %d %s\n",
++ used, received, object_type[do_characters]);
++ if (rejected)
++ snprintf(buf + (len - 1), sizeof(buf) - (len - 1),
++ " with %d reject%s\n",
++ rejected, rejected > 1 ? "s" : "");
++ printk(buf);
++ }
++}
++
++/*
++ * This is called when a user changes the characters or chartab parameters.
++ */
++static ssize_t chars_chartab_store(struct kobject *kobj,
++ struct kobj_attribute *attr, const char *buf, size_t count)
++{
++ char *cp = (char *) buf;
++ char *end = cp + count; /* the null at the end of the buffer */
++ char *linefeed = NULL;
++ char keyword[MAX_DESC_LEN + 1];
++ char *outptr = NULL; /* Will hold keyword or desc. */
++ char *temp = NULL;
++ char *desc = NULL;
++ ssize_t retval = count;
++ unsigned long flags;
++ unsigned long index = 0;
++ int charclass = 0;
++ int received = 0;
++ int used = 0;
++ int rejected = 0;
++ int reset = 0;
++ int do_characters = !strcmp(attr->attr.name, "characters");
++ size_t desc_length = 0;
++ int i;
++
++ spk_lock(flags);
++ while (cp < end) {
++
++ while ((cp < end) && (*cp == ' ' || *cp == '\t'))
++ cp++;
++
++ if (cp == end)
++ break;
++ if ((*cp == '\n') || strchr("dDrR", *cp)) {
++ reset = 1;
++ break;
++ }
++ received++;
++
++ linefeed = strchr(cp, '\n');
++ if (!linefeed) {
++ rejected++;
++ break;
++ }
++
++ if (! isdigit(*cp)) {
++ rejected++;
++ cp = linefeed + 1;
++ continue;
++ }
++
++ index = simple_strtoul(cp, &temp, 10);
++ if (index > 255) {
++ rejected++;
++ cp = linefeed + 1;
++ continue;
++ }
++
++ while ((temp < linefeed) && (*temp == ' ' || *temp == '\t'))
++ temp++;
++
++ desc_length = linefeed - temp;
++ if (desc_length > MAX_DESC_LEN) {
++ rejected++;
++ cp = linefeed + 1;
++ continue;
++ }
++ if (do_characters) {
++ desc = kmalloc(desc_length + 1, GFP_ATOMIC);
++ if (! desc) {
++ retval = -ENOMEM;
++ reset = 1; /* just reset on error. */
++ break;
++ }
++ outptr = desc;
++ } else {
++ outptr = keyword;
++ }
++
++ for (i = 0; i < desc_length; i++)
++ outptr[i] = temp[i];
++ outptr[desc_length] = '\0';
++
++ if (do_characters) {
++ if (characters[index] != default_chars[index])
++ kfree(characters[index]);
++ characters[index] = desc;
++ used++;
++ } else {
++ charclass = chartab_get_value(keyword);
++ if (charclass == 0) {
++ rejected++;
++ cp = linefeed + 1;
++ continue;
++ }
++ if (charclass != spk_chartab[index]) {
++ spk_chartab[index] = charclass;
++ used++;
++ }
++ }
++ cp = linefeed + 1;
++ }
++
++ if (reset) {
++ if (do_characters)
++ reset_default_chars();
++ else
++ reset_default_chartab();
++ }
++
++ spk_unlock(flags);
++ report_char_chartab_status(reset, received, used, rejected, do_characters);
++ return retval;
++}
++
++/*
++ * This is called when a user reads the keymap parameter.
++ */
++static ssize_t keymap_show(struct kobject *kobj, struct kobj_attribute *attr,
++ char *buf)
++{
++ char *cp = buf;
++ int i;
++ int n;
++ int num_keys;
++ int nstates;
++ u_char *cp1;
++ u_char ch;
++ unsigned long flags;
++ spk_lock(flags);
++ cp1 = key_buf + SHIFT_TBL_SIZE;
++ num_keys = (int)(*cp1);
++ nstates = (int)cp1[1];
++ cp += sprintf(cp, "%d, %d, %d,\n", KEY_MAP_VER, num_keys, nstates);
++ cp1 += 2; /* now pointing at shift states */
++/* dump num_keys+1 as first row is shift states + flags,
++ each subsequent row is key + states */
++ for (n = 0; n <= num_keys; n++) {
++ for (i = 0; i <= nstates; i++) {
++ ch = *cp1++;
++ cp += sprintf(cp, "%d,", (int)ch);
++ *cp++ = (i < nstates) ? SPACE : '\n';
++ }
++ }
++ cp += sprintf(cp, "0, %d\n", KEY_MAP_VER);
++ spk_unlock(flags);
++ return (int)(cp-buf);
++}
++
++/*
++ * This is called when a user changes the keymap parameter.
++ */
++static ssize_t keymap_store(struct kobject *kobj, struct kobj_attribute *attr,
++ const char *buf, size_t count)
++{
++ int i;
++ ssize_t ret = count;
++ char *in_buff = NULL;
++ char *cp;
++ u_char *cp1;
++ unsigned long flags;
++
++ spk_lock(flags);
++ in_buff = kmalloc(count + 1, GFP_ATOMIC);
++ if (! in_buff) {
++ spk_unlock(flags);
++ return -ENOMEM;
++ }
++ memcpy(in_buff, buf, count + 1);
++ if (strchr("dDrR", *in_buff)) {
++ set_key_info(key_defaults, key_buf);
++ pr_info("keymap set to default values\n");
++ kfree(in_buff);
++ spk_unlock(flags);
++ return count;
++ }
++ if (in_buff[count - 1] == '\n')
++ in_buff[count - 1] = '\0';
++ cp = in_buff;
++ cp1 = (u_char *)in_buff;
++ for (i = 0; i < 3; i++) {
++ cp = s2uchar(cp, cp1);
++ cp1++;
++ }
++ i = (int)cp1[-2]+1;
++ i *= (int)cp1[-1]+1;
++ i += 2; /* 0 and last map ver */
++ if (cp1[-3] != KEY_MAP_VER || cp1[-1] > 10 ||
++ i+SHIFT_TBL_SIZE+4 >= sizeof(key_buf)) {
++ pr_warn("i %d %d %d %d\n", i,
++ (int)cp1[-3], (int)cp1[-2], (int)cp1[-1]);
++ kfree(in_buff);
++ spk_unlock(flags);
++ return -EINVAL;
++ }
++ while (--i >= 0) {
++ cp = s2uchar(cp, cp1);
++ cp1++;
++ if (!(*cp))
++ break;
++ }
++ if (i != 0 || cp1[-1] != KEY_MAP_VER || cp1[-2] != 0) {
++ ret = -EINVAL;
++ pr_warn("end %d %d %d %d\n", i,
++ (int)cp1[-3], (int)cp1[-2], (int)cp1[-1]);
++ } else {
++ if (set_key_info(in_buff, key_buf)) {
++ set_key_info(key_defaults, key_buf);
++ ret = -EINVAL;
++ pr_warn("set key failed\n");
++ }
++ }
++ kfree(in_buff);
++ spk_unlock(flags);
++ return ret;
++}
++
++/*
++ * This is called when a user changes the value of the silent parameter.
++ */
++static ssize_t silent_store(struct kobject *kobj, struct kobj_attribute *attr,
++ const char *buf, size_t count)
++{
++ int len;
++ struct vc_data *vc = vc_cons[fg_console].d;
++ char ch = 0;
++ char shut;
++ unsigned long flags;
++
++ len = strlen(buf);
++ if (len > 0 || len < 3) {
++ ch = buf[0];
++ if (ch == '\n')
++ ch = '0';
++ }
++ if (ch < '0' || ch > '7') {
++ pr_warn("silent value '%c' not in range (0,7)\n", ch);
++ return -EINVAL;
++ }
++ spk_lock(flags);
++ if (ch&2) {
++ shut = 1;
++ do_flush();
++ } else {
++ shut = 0;
++ }
++ if (ch&4)
++ shut |= 0x40;
++ if (ch&1)
++ spk_shut_up |= shut;
++ else
++ spk_shut_up &= ~shut;
++ spk_unlock(flags);
++ return count;
++}
++
++/*
++ * This is called when a user reads the synth setting.
++ */
++static ssize_t synth_show(struct kobject *kobj, struct kobj_attribute *attr,
++ char *buf)
++{
++ int rv;
++
++ if (synth == NULL)
++ rv = sprintf(buf, "%s\n", "none");
++ else
++ rv = sprintf(buf, "%s\n", synth->name);
++ return rv;
++}
++
++/*
++ * This is called when a user requests to change synthesizers.
++ */
++static ssize_t synth_store(struct kobject *kobj, struct kobj_attribute *attr,
++ const char *buf, size_t count)
++{
++ int len;
++ char new_synth_name[10];
++
++ len = strlen(buf);
++ if (len < 2 || len > 9)
++ return -EINVAL;
++ strncpy(new_synth_name, buf, len);
++ if (new_synth_name[len - 1] == '\n')
++ len--;
++ new_synth_name[len] = '\0';
++ strlwr(new_synth_name);
++ if ((synth != NULL) && (!strcmp(new_synth_name, synth->name))) {
++ pr_warn("%s already in use\n", new_synth_name);
++ } else if (synth_init(new_synth_name) != 0) {
++ pr_warn("failed to init synth %s\n", new_synth_name);
++ return -ENODEV;
++ }
++ return count;
++}
++
++/*
++ * This is called when text is sent to the synth via the synth_direct file.
++ */
++static ssize_t synth_direct_store(struct kobject *kobj, struct kobj_attribute *attr,
++ const char *buf, size_t count)
++{
++ u_char tmp[256];
++ int len;
++ int bytes;
++ const char *ptr = buf;
++
++ if (! synth)
++ return -EPERM;
++
++ len = strlen(buf);
++ while (len > 0) {
++ bytes = min_t(size_t, len, 250);
++ strncpy(tmp, ptr, bytes);
++ tmp[bytes] = '\0';
++ xlate(tmp);
++ synth_printf("%s", tmp);
++ ptr += bytes;
++ len -= bytes;
++ }
++ return count;
++}
++
++/*
++ * This function is called when a user reads the version.
++ */
++static ssize_t version_show(struct kobject *kobj, struct kobj_attribute *attr,
++ char *buf)
++{
++ char *cp;
++
++ cp = buf;
++ cp += sprintf(cp, "Speakup version %s\n", SPEAKUP_VERSION);
++ if (synth)
++ cp += sprintf(cp, "%s synthesizer driver version %s\n",
++ synth->name, synth->version);
++ return cp - buf;
++}
++
++/*
++ * This is called when a user reads the punctuation settings.
++ */
++static ssize_t punc_show(struct kobject *kobj, struct kobj_attribute *attr,
++ char *buf)
++{
++ int i;
++ char *cp = buf;
++ struct st_var_header *p_header;
++ struct punc_var_t *var;
++ struct st_bits_data *pb;
++ short mask;
++ unsigned long flags;
++
++ p_header = var_header_by_name(attr->attr.name);
++ if (p_header == NULL) {
++ pr_warn("p_header is null, attr->attr.name is %s\n", attr->attr.name);
++ return -EINVAL;
++ }
++
++ var = get_punc_var(p_header->var_id);
++ if (var == NULL) {
++ pr_warn("var is null, p_header->var_id is %i\n",
++ p_header->var_id);
++ return -EINVAL;
++ }
++
++ spk_lock(flags);
++ pb = (struct st_bits_data *) &punc_info[var->value];
++ mask = pb->mask;
++ for (i = 33; i < 128; i++) {
++ if (!(spk_chartab[i]&mask))
++ continue;
++ *cp++ = (char)i;
++ }
++ spk_unlock(flags);
++ return cp-buf;
++}
++
++/*
++ * This is called when a user changes the punctuation settings.
++ */
++static ssize_t punc_store(struct kobject *kobj, struct kobj_attribute *attr,
++ const char *buf, size_t count)
++{
++ int x;
++ struct st_var_header *p_header;
++ struct punc_var_t *var;
++ char punc_buf[100];
++ unsigned long flags;
++
++ x = strlen(buf);
++ if (x < 1 || x > 99)
++ return -EINVAL;
++
++ p_header = var_header_by_name(attr->attr.name);
++ if (p_header == NULL) {
++ pr_warn("p_header is null, attr->attr.name is %s\n", attr->attr.name);
++ return -EINVAL;
++ }
++
++ var = get_punc_var(p_header->var_id);
++ if (var == NULL) {
++ pr_warn("var is null, p_header->var_id is %i\n",
++ p_header->var_id);
++ return -EINVAL;
++ }
++
++ strncpy(punc_buf, buf, x);
++
++ while (x && punc_buf[x - 1] == '\n')
++ x--;
++ punc_buf[x] = '\0';
++
++ spk_lock(flags);
++
++ if (*punc_buf == 'd' || *punc_buf == 'r')
++ x = set_mask_bits(0, var->value, 3);
++ else
++ x = set_mask_bits(punc_buf, var->value, 3);
++
++ spk_unlock(flags);
++ return count;
++}
++
++/*
++ * This function is called when a user reads one of the variable parameters.
++ */
++ssize_t spk_var_show(struct kobject *kobj, struct kobj_attribute *attr,
++ char *buf)
++{
++ int rv = 0;
++ struct st_var_header *param;
++ struct var_t *var;
++ char *cp1;
++ char *cp;
++ char ch;
++ unsigned long flags;
++
++ param = var_header_by_name(attr->attr.name);
++ if (param == NULL)
++ return -EINVAL;
++
++ spk_lock(flags);
++ var = (struct var_t *) param->data;
++ switch (param->var_type) {
++ case VAR_NUM:
++ case VAR_TIME:
++ if (var)
++ rv = sprintf(buf, "%i\n", var->u.n.value);
++ else
++ rv = sprintf(buf, "0\n");
++ break;
++ case VAR_STRING:
++ if (var) {
++ cp1 = buf;
++ *cp1++ = '"';
++ for (cp = (char *)param->p_val; (ch = *cp); cp++) {
++ if (ch >= ' ' && ch < '~')
++ *cp1++ = ch;
++ else
++ cp1 += sprintf(cp1, "\\""x%02x", ch);
++ }
++ *cp1++ = '"';
++ *cp1++ = '\n';
++ *cp1 = '\0';
++ rv = cp1-buf;
++ } else {
++ rv = sprintf(buf, "\"\"\n");
++ }
++ break;
++ default:
++ rv = sprintf(buf, "Bad parameter %s, type %i\n",
++ param->name, param->var_type);
++ break;
++ }
++ spk_unlock(flags);
++ return rv;
++}
++EXPORT_SYMBOL_GPL(spk_var_show);
++
++/*
++ * This function is called when a user echos a value to one of the
++ * variable parameters.
++ */
++ssize_t spk_var_store(struct kobject *kobj, struct kobj_attribute *attr,
++ const char *buf, size_t count)
++{
++ struct st_var_header *param;
++ int ret;
++ int len;
++ char *cp;
++ struct var_t *var_data;
++ int value;
++ unsigned long flags;
++
++ param = var_header_by_name(attr->attr.name);
++ if (param == NULL)
++ return -EINVAL;
++ if (param->data == NULL)
++ return 0;
++ ret = 0;
++ cp = xlate((char *) buf);
++
++ spk_lock(flags);
++ switch (param->var_type) {
++ case VAR_NUM:
++ case VAR_TIME:
++ if (*cp == 'd' || *cp == 'r' || *cp == '\0')
++ len = E_DEFAULT;
++ else if (*cp == '+' || *cp == '-')
++ len = E_INC;
++ else
++ len = E_SET;
++ speakup_s2i(cp, &value);
++ ret = set_num_var(value, param, len);
++ if (ret == E_RANGE) {
++ var_data = param->data;
++ pr_warn("value for %s out of range, expect %d to %d\n",
++ attr->attr.name,
++ var_data->u.n.low, var_data->u.n.high);
++ }
++ break;
++ case VAR_STRING:
++ len = strlen(buf);
++ if ((len >= 1) && (buf[len - 1] == '\n'))
++ --len;
++ if ((len >= 2) && (buf[0] == '"') && (buf[len - 1] == '"')) {
++ ++buf;
++ len -= 2;
++ }
++ cp = (char *) buf;
++ cp[len] = '\0';
++ ret = set_string_var(buf, param, len);
++ if (ret == E_TOOLONG)
++ pr_warn("value too long for %s\n",
++ attr->attr.name);
++ break;
++ default:
++ pr_warn("%s unknown type %d\n",
++ param->name, (int)param->var_type);
++ break;
++ }
++ spk_unlock(flags);
++
++ if (ret == SET_DEFAULT)
++ pr_info("%s reset to default value\n", attr->attr.name);
++ return count;
++}
++EXPORT_SYMBOL_GPL(spk_var_store);
++
++/*
++ * Functions for reading and writing lists of i18n messages. Incomplete.
++ */
++
++static ssize_t message_show_helper(char *buf, enum msg_index_t first,
++ enum msg_index_t last)
++{
++ size_t bufsize = PAGE_SIZE;
++ char *buf_pointer = buf;
++ int printed;
++ enum msg_index_t cursor;
++ int index = 0;
++ *buf_pointer = '\0'; /* buf_pointer always looking at a NUL byte. */
++
++ for (cursor = first; cursor <= last; cursor++, index++) {
++ if (bufsize <= 1)
++ break;
++ printed = scnprintf(buf_pointer, bufsize, "%d\t%s\n",
++ index, msg_get(cursor));
++ buf_pointer += printed;
++ bufsize -= printed;
++ }
++
++ return buf_pointer - buf;
++}
++
++static void report_msg_status(int reset, int received, int used,
++ int rejected, char *groupname)
++{
++ int len;
++ char buf[160];
++
++ if (reset) {
++ pr_info("i18n messages from group %s reset to defaults\n",
++ groupname);
++ } else if (received ) {
++ len = snprintf(buf, sizeof(buf),
++ " updated %d of %d i18n messages from group %s\n",
++ used, received, groupname);
++ if (rejected)
++ snprintf(buf + (len - 1), sizeof(buf) - (len - 1),
++ " with %d reject%s\n",
++ rejected, rejected > 1 ? "s" : "");
++ printk(buf);
++ }
++}
++
++static ssize_t message_store_helper(const char *buf, size_t count,
++ struct msg_group_t *group)
++{
++ char *cp = (char *) buf;
++ char *end = cp + count;
++ char *linefeed = NULL;
++ char *temp = NULL;
++ ssize_t msg_stored = 0;
++ ssize_t retval = count;
++ size_t desc_length = 0;
++ unsigned long index = 0;
++ int received = 0;
++ int used = 0;
++ int rejected = 0;
++ int reset = 0;
++ enum msg_index_t firstmessage = group->start;
++ enum msg_index_t lastmessage = group->end;
++ enum msg_index_t curmessage;
++
++ while (cp < end) {
++
++ while ((cp < end) && (*cp == ' ' || *cp == '\t'))
++ cp++;
++
++ if (cp == end)
++ break;
++ if (strchr("dDrR", *cp)) {
++ reset = 1;
++ break;
++ }
++ received++;
++
++ linefeed = strchr(cp, '\n');
++ if (!linefeed) {
++ rejected++;
++ break;
++ }
++
++ if (! isdigit(*cp)) {
++ rejected++;
++ cp = linefeed + 1;
++ continue;
++ }
++
++ index = simple_strtoul(cp, &temp, 10);
++
++ while ((temp < linefeed) && (*temp == ' ' || *temp == '\t'))
++ temp++;
++
++ desc_length = linefeed - temp;
++ curmessage = firstmessage + index;
++
++ /*
++ * Note the check (curmessage < firstmessage). It is not
++ * redundant. Suppose that the user gave us an index
++ * equal to ULONG_MAX - 1. If firstmessage > 1, then
++ * firstmessage + index < firstmessage!
++ */
++
++ if ((curmessage < firstmessage) || (curmessage > lastmessage)) {
++ rejected++;
++ cp = linefeed + 1;
++ continue;
++ }
++
++ msg_stored = msg_set(curmessage, temp, desc_length);
++ if (msg_stored < 0) {
++ retval = msg_stored;
++ if (msg_stored == -ENOMEM)
++ reset = 1;
++ break;
++ } else {
++ used++;
++ }
++
++ cp = linefeed + 1;
++ }
++
++ if (reset)
++ reset_msg_group(group);
++
++ report_msg_status(reset, received, used, rejected, group->name);
++ return retval;
++}
++
++static ssize_t message_show(struct kobject *kobj,
++ struct kobj_attribute *attr, char *buf)
++{
++ ssize_t retval = 0;
++ struct msg_group_t *group = find_msg_group(attr->attr.name);
++ unsigned long flags;
++
++ BUG_ON(! group);
++ spk_lock(flags);
++ retval = message_show_helper(buf, group->start, group->end);
++ spk_unlock(flags);
++ return retval;
++}
++
++static ssize_t message_store(struct kobject *kobj, struct kobj_attribute *attr,
++ const char *buf, size_t count)
++{
++ ssize_t retval = 0;
++ struct msg_group_t *group = find_msg_group(attr->attr.name);
++
++ BUG_ON(! group);
++ retval = message_store_helper(buf, count, group);
++ return retval;
++}
++
++/*
++ * Declare the attributes.
++ */
++static struct kobj_attribute keymap_attribute =
++ __ATTR(keymap, ROOT_W, keymap_show, keymap_store);
++static struct kobj_attribute silent_attribute =
++ __ATTR(silent, USER_W, NULL, silent_store);
++static struct kobj_attribute synth_attribute =
++ __ATTR(synth, USER_RW, synth_show, synth_store);
++static struct kobj_attribute synth_direct_attribute =
++ __ATTR(synth_direct, USER_W, NULL, synth_direct_store);
++static struct kobj_attribute version_attribute =
++ __ATTR_RO(version);
++
++static struct kobj_attribute delimiters_attribute =
++ __ATTR(delimiters, USER_RW, punc_show, punc_store);
++static struct kobj_attribute ex_num_attribute =
++ __ATTR(ex_num, USER_RW, punc_show, punc_store);
++static struct kobj_attribute punc_all_attribute =
++ __ATTR(punc_all, USER_RW, punc_show, punc_store);
++static struct kobj_attribute punc_most_attribute =
++ __ATTR(punc_most, USER_RW, punc_show, punc_store);
++static struct kobj_attribute punc_some_attribute =
++ __ATTR(punc_some, USER_RW, punc_show, punc_store);
++static struct kobj_attribute repeats_attribute =
++ __ATTR(repeats, USER_RW, punc_show, punc_store);
++
++static struct kobj_attribute attrib_bleep_attribute =
++ __ATTR(attrib_bleep, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute bell_pos_attribute =
++ __ATTR(bell_pos, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute bleep_time_attribute =
++ __ATTR(bleep_time, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute bleeps_attribute =
++ __ATTR(bleeps, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute cursor_time_attribute =
++ __ATTR(cursor_time, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute key_echo_attribute =
++ __ATTR(key_echo, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute no_interrupt_attribute =
++ __ATTR(no_interrupt, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute punc_level_attribute =
++ __ATTR(punc_level, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute reading_punc_attribute =
++ __ATTR(reading_punc, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute say_control_attribute =
++ __ATTR(say_control, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute say_word_ctl_attribute =
++ __ATTR(say_word_ctl, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute spell_delay_attribute =
++ __ATTR(spell_delay, USER_RW, spk_var_show, spk_var_store);
++
++/*
++ * These attributes are i18n related.
++ */
++static struct kobj_attribute announcements_attribute =
++ __ATTR(announcements, USER_RW, message_show, message_store);
++static struct kobj_attribute characters_attribute =
++ __ATTR(characters, USER_RW, chars_chartab_show, chars_chartab_store);
++static struct kobj_attribute chartab_attribute =
++ __ATTR(chartab, USER_RW, chars_chartab_show, chars_chartab_store);
++static struct kobj_attribute ctl_keys_attribute =
++ __ATTR(ctl_keys, USER_RW, message_show, message_store);
++static struct kobj_attribute colors_attribute =
++ __ATTR(colors, USER_RW, message_show, message_store);
++static struct kobj_attribute formatted_attribute =
++ __ATTR(formatted, USER_RW, message_show, message_store);
++static struct kobj_attribute function_names_attribute =
++ __ATTR(function_names, USER_RW, message_show, message_store);
++static struct kobj_attribute key_names_attribute =
++ __ATTR(key_names, USER_RW, message_show, message_store);
++static struct kobj_attribute states_attribute =
++ __ATTR(states, USER_RW, message_show, message_store);
++
++/*
++ * Create groups of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *main_attrs[] = {
++ &keymap_attribute.attr,
++ &silent_attribute.attr,
++ &synth_attribute.attr,
++ &synth_direct_attribute.attr,
++ &version_attribute.attr,
++ &delimiters_attribute.attr,
++ &ex_num_attribute.attr,
++ &punc_all_attribute.attr,
++ &punc_most_attribute.attr,
++ &punc_some_attribute.attr,
++ &repeats_attribute.attr,
++ &attrib_bleep_attribute.attr,
++ &bell_pos_attribute.attr,
++ &bleep_time_attribute.attr,
++ &bleeps_attribute.attr,
++ &cursor_time_attribute.attr,
++ &key_echo_attribute.attr,
++ &no_interrupt_attribute.attr,
++ &punc_level_attribute.attr,
++ &reading_punc_attribute.attr,
++ &say_control_attribute.attr,
++ &say_word_ctl_attribute.attr,
++ &spell_delay_attribute.attr,
++ NULL,
++};
++
++static struct attribute *i18n_attrs[] = {
++ &announcements_attribute.attr,
++ &characters_attribute.attr,
++ &chartab_attribute.attr,
++ &ctl_keys_attribute.attr,
++ &colors_attribute.attr,
++ &formatted_attribute.attr,
++ &function_names_attribute.attr,
++ &key_names_attribute.attr,
++ &states_attribute.attr,
++ NULL,
++};
++
++/*
++ * An unnamed attribute group will put all of the attributes directly in
++ * the kobject directory. If we specify a name, a subdirectory will be
++ * created for the attributes with the directory being the name of the
++ * attribute group.
++ */
++static struct attribute_group main_attr_group = {
++ .attrs = main_attrs,
++};
++
++static struct attribute_group i18n_attr_group = {
++ .attrs = i18n_attrs,
++ .name = "i18n",
++};
++
++static struct kobject *accessibility_kobj;
++struct kobject *speakup_kobj;
++
++int speakup_kobj_init(void)
++{
++ int retval;
++
++ /*
++ * Create a simple kobject with the name of "accessibility",
++ * located under /sys/
++ *
++ * As this is a simple directory, no uevent will be sent to
++ * userspace. That is why this function should not be used for
++ * any type of dynamic kobjects, where the name and number are
++ * not known ahead of time.
++ */
++ accessibility_kobj = kobject_create_and_add("accessibility", NULL);
++ if (!accessibility_kobj)
++ return -ENOMEM;
++
++ speakup_kobj = kobject_create_and_add("speakup", accessibility_kobj);
++ if (!speakup_kobj) {
++ kobject_put(accessibility_kobj);
++ return -ENOMEM;
++ }
++
++ /* Create the files associated with this kobject */
++ retval = sysfs_create_group(speakup_kobj, &main_attr_group);
++ if (retval)
++ speakup_kobj_exit();
++
++ retval = sysfs_create_group(speakup_kobj, &i18n_attr_group);
++ if (retval)
++ speakup_kobj_exit();
++
++ return retval;
++}
++
++void speakup_kobj_exit(void)
++{
++ kobject_put(speakup_kobj);
++ kobject_put(accessibility_kobj);
++}
+--- a/drivers/staging/speakup/main.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/main.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,2284 @@
++/* speakup.c
++ review functions for the speakup screen review package.
++ originally written by: Kirk Reiser and Andy Berdan.
++
++ extensively modified by David Borowski.
++
++ Copyright (C) 1998 Kirk Reiser.
++ Copyright (C) 2003 David Borowski.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; if not, write to the Free Software
++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++*/
++
++#include <linux/kernel.h>
++#include <linux/version.h>
++#include <linux/vt.h>
++#include <linux/tty.h>
++#include <linux/mm.h> /* __get_free_page() and friends */
++#include <linux/vt_kern.h>
++#include <linux/ctype.h>
++#include <linux/selection.h>
++#include <linux/unistd.h>
++#include <linux/jiffies.h>
++#include <linux/kthread.h>
++#include <linux/keyboard.h> /* for KT_SHIFT */
++#include <linux/kbd_kern.h> /* for vc_kbd_* and friends */
++#include <linux/input.h>
++#include <linux/kmod.h>
++
++#include <linux/bootmem.h> /* for alloc_bootmem */
++
++/* speakup_*_selection */
++#include <linux/module.h>
++#include <linux/sched.h>
++#include <linux/slab.h>
++#include <linux/types.h>
++#include <linux/consolemap.h>
++
++#include <linux/spinlock.h>
++#include <linux/notifier.h>
++
++#include <linux/uaccess.h> /* copy_from|to|user() and others */
++
++#include "spk_priv.h"
++#include "speakup.h"
++
++#define MAX_DELAY msecs_to_jiffies(500)
++#define MINECHOCHAR SPACE
++
++MODULE_AUTHOR("Kirk Reiser <kirk@braille.uwo.ca>");
++MODULE_AUTHOR("Daniel Drake <dsd@gentoo.org>");
++MODULE_DESCRIPTION("Speakup console speech");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(SPEAKUP_VERSION);
++
++char *synth_name;
++module_param_named(synth, synth_name, charp, S_IRUGO);
++module_param_named(quiet, quiet_boot, bool, S_IRUGO);
++
++MODULE_PARM_DESC(synth, "Synth to start if speakup is built in.");
++MODULE_PARM_DESC(quiet, "Do not announce when the synthesizer is found.");
++
++special_func special_handler;
++
++short pitch_shift, synth_flags;
++static char buf[256];
++int attrib_bleep, bleeps, bleep_time = 10;
++int no_intr, spell_delay;
++int key_echo, say_word_ctl;
++int say_ctrl, bell_pos;
++short punc_mask;
++int punc_level, reading_punc;
++char str_caps_start[MAXVARLEN+1] = "\0", str_caps_stop[MAXVARLEN+1] = "\0";
++const struct st_bits_data punc_info[] = {
++ { "none", "", 0 },
++ { "some", "/$%&@", SOME },
++ { "most", "$%&#()=+*/@^<>|\\", MOST },
++ { "all", "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", PUNC },
++ { "delimiters", "", B_WDLM },
++ { "repeats", "()", CH_RPT },
++ { "extended numeric", "", B_EXNUM },
++ { "symbols", "", B_SYM },
++ { 0, 0 }
++};
++static char mark_cut_flag;
++#define MAX_KEY 160
++u_char *our_keys[MAX_KEY], *shift_table;
++u_char key_buf[600];
++const u_char key_defaults[] = {
++#include "speakupmap.h"
++};
++
++/* Speakup Cursor Track Variables */
++static int cursor_track = 1, prev_cursor_track = 1;
++
++/* cursor track modes, must be ordered same as cursor_msgs */
++enum {
++ CT_Off = 0,
++ CT_On,
++ CT_Highlight,
++ CT_Window,
++ CT_Max
++};
++#define read_all_mode CT_Max
++
++static struct tty_struct *tty;
++typedef void (*k_handler_fn)(struct vc_data *vc, unsigned char value,
++ char up_flag);
++extern k_handler_fn k_handler[16];
++
++static void spkup_write(const char *in_buf, int count);
++
++
++static char *phonetic[] = {
++ "alfa", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", "hotel",
++ "india", "juliett", "keelo", "leema", "mike", "november", "oscar", "papa",
++ "keh beck", "romeo", "sierra", "tango", "uniform", "victer", "whiskey",
++ "x ray", "yankee", "zulu"
++};
++
++/* array of 256 char pointers (one for each character description)
++ * initialized to default_chars and user selectable via
++ * /proc/speakup/characters */
++char *characters[256];
++
++char *default_chars[256] = {
++/*000*/ "null", "^a", "^b", "^c", "^d", "^e", "^f", "^g",
++/*008*/ "^h", "^i", "^j", "^k", "^l", "^m", "^n", "^o",
++/*016*/ "^p", "^q", "^r", "^s", "^t", "^u", "^v", "^w",
++/*024*/ "^x", "^y", "^z", "control", "control", "control", "control", "control",
++/*032*/ "space", "bang!", "quote", "number", "dollar", "percent", "and", "tick",
++/*040*/ "left paren", "right paren", "star", "plus", "comma", "dash", "dot",
++ "slash",
++/*048*/ "zero", "one", "two", "three", "four", "five", "six", "seven",
++ "eight", "nine",
++/*058*/ "colon", "semmy", "less", "equals", "greater", "question", "at",
++/*065*/ "EIGH", "B", "C", "D", "E", "F", "G",
++/*072*/ "H", "I", "J", "K", "L", "M", "N", "O",
++/*080*/ "P", "Q", "R", "S", "T", "U", "V", "W", "X",
++/*089*/ "Y", "ZED", "left bracket", "backslash", "right bracket", "caret",
++ "line",
++/*096*/ "accent", "a", "b", "c", "d", "e", "f", "g",
++/*104*/ "h", "i", "j", "k", "l", "m", "n", "o",
++/*112*/ "p", "q", "r", "s", "t", "u", "v", "w",
++/*120*/ "x", "y", "zed", "left brace", "bar", "right brace", "tihlduh",
++/*127*/ "del", "control", "control", "control", "control", "control", "control", "control", "control", "control", "control",
++/*138*/ "control", "control", "control", "control", "control", "control", "control", "control", "control", "control", "control", "control",
++/*150*/ "control", "control", "control", "control", "control", "control", "control", "control", "control", "control",
++/*160*/ "nbsp", "inverted bang",
++/*162*/ "cents", "pounds", "currency", "yen", "broken bar", "section",
++/*168*/ "diaeresis", "copyright", "female ordinal", "double left angle",
++/*172*/ "not", "soft hyphen", "registered", "macron",
++/*176*/ "degrees", "plus or minus", "super two", "super three",
++/*180*/ "acute accent", "micro", "pilcrow", "middle dot",
++/*184*/ "cedilla", "super one", "male ordinal", "double right angle",
++/*188*/ "one quarter", "one half", "three quarters", "inverted question",
++/*192*/ "A GRAVE", "A ACUTE", "A CIRCUMFLEX", "A TILDE", "A OOMLAUT", "A RING",
++/*198*/ "AE", "C CIDELLA", "E GRAVE", "E ACUTE", "E CIRCUMFLEX", "E OOMLAUT",
++/*204*/ "I GRAVE", "I ACUTE", "I CIRCUMFLEX", "I OOMLAUT", "ETH", "N TILDE",
++/*210*/ "O GRAVE", "O ACUTE", "O CIRCUMFLEX", "O TILDE", "O OOMLAUT",
++/*215*/ "multiplied by", "O STROKE", "U GRAVE", "U ACUTE", "U CIRCUMFLEX",
++/*220*/ "U OOMLAUT", "Y ACUTE", "THORN", "sharp s", "a grave",
++/*225*/ "a acute", "a circumflex", "a tilde", "a oomlaut", "a ring",
++/*230*/ "ae", "c cidella", "e grave", "e acute",
++/*234*/ "e circumflex", "e oomlaut", "i grave", "i acute", "i circumflex",
++/*239*/ "i oomlaut", "eth", "n tilde","o grave", "o acute", "o circumflex",
++/*245*/"o tilde", "o oomlaut", "divided by", "o stroke", "u grave", "u acute",
++/* 251 */ "u circumflex", "u oomlaut", "y acute", "thorn", "y oomlaut"
++};
++
++/* array of 256 u_short (one for each character)
++ * initialized to default_chartab and user selectable via
++ * /sys/module/speakup/parameters/chartab */
++u_short spk_chartab[256];
++
++static u_short default_chartab[256] = {
++ B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, /* 0-7 */
++ B_CTL, B_CTL, A_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, /* 8-15 */
++ B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, /*16-23 */
++ B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, /* 24-31 */
++WDLM, A_PUNC, PUNC, PUNC, PUNC, PUNC, PUNC, A_PUNC, /* !"#$%&' */
++PUNC, PUNC, PUNC, PUNC, A_PUNC, A_PUNC, A_PUNC, PUNC, /* ()*+, -./ */
++NUM, NUM, NUM, NUM, NUM, NUM, NUM, NUM, /* 01234567 */
++NUM, NUM, A_PUNC, PUNC, PUNC, PUNC, PUNC, A_PUNC, /* 89:;<=>? */
++PUNC, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, /* @ABCDEFG */
++A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, /* HIJKLMNO */
++A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, /* PQRSTUVW */
++A_CAP, A_CAP, A_CAP, PUNC, PUNC, PUNC, PUNC, PUNC, /* XYZ[\]^_ */
++PUNC, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, /* `abcdefg */
++ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, /* hijklmno */
++ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, /* pqrstuvw */
++ALPHA, ALPHA, ALPHA, PUNC, PUNC, PUNC, PUNC, 0, /* xyz{|}~ */
++B_CAPSYM, B_CAPSYM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, /* 128-135 */
++B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_CAPSYM, /* 136-143 */
++B_CAPSYM, B_CAPSYM, B_SYM, B_CAPSYM, B_SYM, B_SYM, B_SYM, B_SYM, /* 144-151 */
++B_SYM, B_SYM, B_CAPSYM, B_CAPSYM, B_SYM, B_SYM, B_SYM, B_SYM, /* 152-159 */
++WDLM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_CAPSYM, B_SYM, /* 160-167 */
++B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, /* 168-175 */
++B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, /* 176-183 */
++B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, B_SYM, /* 184-191 */
++A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, /* 192-199 */
++A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, /* 200-207 */
++A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, B_SYM, /* 208-215 */
++A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, A_CAP, ALPHA, /* 216-223 */
++ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, /* 224-231 */
++ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, /* 232-239 */
++ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, B_SYM, /* 240-247 */
++ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA, ALPHA /* 248-255 */
++};
++
++struct task_struct *speakup_task;
++static int spk_keydown;
++static u_char spk_lastkey, spk_close_press, keymap_flags;
++static u_char last_keycode, this_speakup_key;
++static u_long last_spk_jiffy;
++
++struct st_spk_t *speakup_console[MAX_NR_CONSOLES];
++
++DEFINE_MUTEX(spk_mutex);
++
++static int keyboard_notifier_call(struct notifier_block *,
++ unsigned long code, void *param);
++
++struct notifier_block keyboard_notifier_block = {
++ .notifier_call = keyboard_notifier_call,
++};
++
++static int vt_notifier_call(struct notifier_block *,
++ unsigned long code, void *param);
++
++struct notifier_block vt_notifier_block = {
++ .notifier_call = vt_notifier_call,
++};
++
++static unsigned char get_attributes(u16 *pos)
++{
++ return (u_char)(scr_readw(pos) >> 8);
++}
++
++static void speakup_date(struct vc_data *vc)
++{
++ spk_x = spk_cx = vc->vc_x;
++ spk_y = spk_cy = vc->vc_y;
++ spk_pos = spk_cp = vc->vc_pos;
++ spk_old_attr = spk_attr;
++ spk_attr = get_attributes((u_short *) spk_pos);
++}
++
++static void bleep(u_short val)
++{
++ static const short vals[] = {
++ 350, 370, 392, 414, 440, 466, 491, 523, 554, 587, 619, 659
++ };
++ short freq;
++ int time = bleep_time;
++ freq = vals[val%12];
++ if (val > 11)
++ freq *= (1 << (val/12));
++ kd_mksound(freq, msecs_to_jiffies(time));
++}
++
++static void speakup_shut_up(struct vc_data *vc)
++{
++ if (spk_killed)
++ return;
++ spk_shut_up |= 0x01;
++ spk_parked &= 0xfe;
++ speakup_date(vc);
++ if (synth != NULL)
++ do_flush();
++}
++
++static void speech_kill(struct vc_data *vc)
++{
++ char val = synth->is_alive(synth);
++ if (val == 0)
++ return;
++
++ /* re-enables synth, if disabled */
++ if (val == 2 || spk_killed) {
++ /* dead */
++ spk_shut_up &= ~0x40;
++ synth_printf("%s\n", msg_get(MSG_IAM_ALIVE));
++ } else {
++ synth_printf("%s\n", msg_get(MSG_YOU_KILLED_SPEAKUP));
++ spk_shut_up |= 0x40;
++ }
++}
++
++static void speakup_off(struct vc_data *vc)
++{
++ if (spk_shut_up & 0x80) {
++ spk_shut_up &= 0x7f;
++ synth_printf("%s\n", msg_get(MSG_HEY_THATS_BETTER));
++ } else {
++ spk_shut_up |= 0x80;
++ synth_printf("%s\n", msg_get(MSG_YOU_TURNED_ME_OFF));
++ }
++ speakup_date(vc);
++}
++
++static void speakup_parked(struct vc_data *vc)
++{
++ if (spk_parked & 0x80) {
++ spk_parked = 0;
++ synth_printf("%s\n", msg_get(MSG_UNPARKED));
++ } else {
++ spk_parked |= 0x80;
++ synth_printf("%s\n", msg_get(MSG_PARKED));
++ }
++}
++
++static void speakup_cut(struct vc_data *vc)
++{
++ static const char err_buf[] = "set selection failed";
++ int ret;
++
++ if (!mark_cut_flag) {
++ mark_cut_flag = 1;
++ xs = (u_short) spk_x;
++ ys = (u_short) spk_y;
++ spk_sel_cons = vc;
++ synth_printf("%s\n", msg_get(MSG_MARK));
++ return;
++ }
++ xe = (u_short) spk_x;
++ ye = (u_short) spk_y;
++ mark_cut_flag = 0;
++ synth_printf("%s\n", msg_get(MSG_CUT));
++
++ speakup_clear_selection();
++ ret = speakup_set_selection(tty);
++
++ switch (ret) {
++ case 0:
++ break; /* no error */
++ case -EFAULT :
++ pr_warn("%sEFAULT\n", err_buf);
++ break;
++ case -EINVAL :
++ pr_warn("%sEINVAL\n", err_buf);
++ break;
++ case -ENOMEM :
++ pr_warn("%sENOMEM\n", err_buf);
++ break;
++ }
++}
++
++static void speakup_paste(struct vc_data *vc)
++{
++ if (mark_cut_flag) {
++ mark_cut_flag = 0;
++ synth_printf("%s\n", msg_get(MSG_MARK_CLEARED));
++ } else {
++ synth_printf("%s\n", msg_get(MSG_PASTE));
++ speakup_paste_selection(tty);
++ }
++}
++
++static void say_attributes(struct vc_data *vc)
++{
++ int fg = spk_attr & 0x0f;
++ int bg = spk_attr >> 4;
++ if (fg > 8) {
++ synth_printf("%s ", msg_get(MSG_BRIGHT));
++ fg -= 8;
++ }
++ synth_printf("%s", msg_get(MSG_COLORS_START + fg));
++ if (bg > 7) {
++ synth_printf(" %s ", msg_get(MSG_ON_BLINKING));
++ bg -= 8;
++ } else
++ synth_printf(" %s ", msg_get(MSG_ON));
++ synth_printf("%s\n", msg_get(MSG_COLORS_START + bg));
++}
++
++enum {
++ edge_top = 1,
++ edge_bottom,
++ edge_left,
++ edge_right,
++ edge_quiet
++};
++
++static void announce_edge(struct vc_data *vc, int msg_id)
++{
++ if (bleeps & 1)
++ bleep(spk_y);
++ if ((bleeps & 2) && (msg_id < edge_quiet))
++ synth_printf("%s\n", msg_get(MSG_EDGE_MSGS_START + msg_id - 1));
++}
++
++static void speak_char(u_char ch)
++{
++ char *cp = characters[ch];
++ struct var_t *direct = get_var(DIRECT);
++ if (direct && direct->u.n.value) {
++ if (IS_CHAR(ch, B_CAP)) {
++ pitch_shift++;
++ synth_printf("%s", str_caps_start);
++ }
++ synth_printf("%c", ch);
++ if (IS_CHAR(ch, B_CAP))
++ synth_printf("%s", str_caps_stop);
++ return;
++ }
++ if (cp == NULL) {
++ pr_info("speak_char: cp == NULL!\n");
++ return;
++ }
++ synth_buffer_add(SPACE);
++ if (IS_CHAR(ch, B_CAP)) {
++ pitch_shift++;
++ synth_printf("%s", str_caps_start);
++ synth_printf("%s", cp);
++ synth_printf("%s", str_caps_stop);
++ } else {
++ if (*cp == '^') {
++ synth_printf("%s", msg_get(MSG_CTRL));
++ cp++;
++ }
++ synth_printf("%s", cp);
++ }
++ synth_buffer_add(SPACE);
++}
++
++static u16 get_char(struct vc_data *vc, u16 *pos, u_char *attribs)
++{
++ u16 ch = ' ';
++ if (vc && pos) {
++ u16 w = scr_readw(pos);
++ u16 c = w & 0xff;
++
++ if (w & vc->vc_hi_font_mask)
++ c |= 0x100;
++
++ ch = inverse_translate(vc, c);
++ *attribs = (w & 0xff00) >> 8;
++ }
++ return ch;
++}
++
++static void say_char(struct vc_data *vc)
++{
++ u_short ch;
++ spk_old_attr = spk_attr;
++ ch = get_char(vc, (u_short *) spk_pos, &spk_attr);
++ if (spk_attr != spk_old_attr) {
++ if (attrib_bleep & 1)
++ bleep(spk_y);
++ if (attrib_bleep & 2)
++ say_attributes(vc);
++ }
++ speak_char(ch & 0xff);
++}
++
++static void say_phonetic_char(struct vc_data *vc)
++{
++ u_short ch;
++ spk_old_attr = spk_attr;
++ ch = get_char(vc, (u_short *) spk_pos, &spk_attr);
++ if (isascii(ch) && isalpha(ch)) {
++ ch &= 0x1f;
++ synth_printf("%s\n", phonetic[--ch]);
++ } else {
++ if (IS_CHAR(ch, B_NUM))
++ synth_printf("%s ", msg_get(MSG_NUMBER));
++ speak_char(ch);
++ }
++}
++
++static void say_prev_char(struct vc_data *vc)
++{
++ spk_parked |= 0x01;
++ if (spk_x == 0) {
++ announce_edge(vc, edge_left);
++ return;
++ }
++ spk_x--;
++ spk_pos -= 2;
++ say_char(vc);
++}
++
++static void say_next_char(struct vc_data *vc)
++{
++ spk_parked |= 0x01;
++ if (spk_x == vc->vc_cols - 1) {
++ announce_edge(vc, edge_right);
++ return;
++ }
++ spk_x++;
++ spk_pos += 2;
++ say_char(vc);
++}
++
++/* get_word - will first check to see if the character under the
++ reading cursor is a space and if say_word_ctl is true it will
++ return the word space. If say_word_ctl is not set it will check to
++ see if there is a word starting on the next position to the right
++ and return that word if it exists. If it does not exist it will
++ move left to the beginning of any previous word on the line or the
++ beginning off the line whichever comes first.. */
++
++static u_long get_word(struct vc_data *vc)
++{
++ u_long cnt = 0, tmpx = spk_x, tmp_pos = spk_pos;
++ char ch;
++ u_short attr_ch;
++ u_char temp;
++ spk_old_attr = spk_attr;
++ ch = (char) get_char(vc, (u_short *) tmp_pos, &temp);
++
++/* decided to take out the sayword if on a space (mis-information */
++ if (say_word_ctl && ch == SPACE) {
++ *buf = '\0';
++ synth_printf("%s\n", msg_get(MSG_SPACE));
++ return 0;
++ } else if ((tmpx < vc->vc_cols - 2)
++ && (ch == SPACE || ch == 0 || IS_WDLM(ch))
++ && ((char) get_char(vc, (u_short *) &tmp_pos+1, &temp) > SPACE)) {
++ tmp_pos += 2;
++ tmpx++;
++ } else
++ while (tmpx > 0) {
++ ch = (char) get_char(vc, (u_short *) tmp_pos - 1, &temp);
++ if ((ch == SPACE || ch == 0 || IS_WDLM(ch))
++ && ((char) get_char(vc, (u_short *) tmp_pos, &temp) >
++ SPACE))
++ break;
++ tmp_pos -= 2;
++ tmpx--;
++ }
++ attr_ch = get_char(vc, (u_short *) tmp_pos, &spk_attr);
++ buf[cnt++] = attr_ch & 0xff;
++ while (tmpx < vc->vc_cols - 1) {
++ tmp_pos += 2;
++ tmpx++;
++ ch = (char) get_char(vc, (u_short *) tmp_pos, &temp);
++ if ((ch == SPACE) || ch == 0 || (IS_WDLM(buf[cnt-1]) && (ch > SPACE)))
++ break;
++ buf[cnt++] = ch;
++ }
++ buf[cnt] = '\0';
++ return cnt;
++}
++
++static void say_word(struct vc_data *vc)
++{
++ u_long cnt = get_word(vc);
++ u_short saved_punc_mask = punc_mask;
++ if (cnt == 0)
++ return;
++ punc_mask = PUNC;
++ buf[cnt++] = SPACE;
++ spkup_write(buf, cnt);
++ punc_mask = saved_punc_mask;
++}
++
++static void say_prev_word(struct vc_data *vc)
++{
++ u_char temp;
++ char ch;
++ u_short edge_said = 0, last_state = 0, state = 0;
++ spk_parked |= 0x01;
++
++ if (spk_x == 0) {
++ if (spk_y == 0) {
++ announce_edge(vc, edge_top);
++ return;
++ }
++ spk_y--;
++ spk_x = vc->vc_cols;
++ edge_said = edge_quiet;
++ }
++ while (1) {
++ if (spk_x == 0) {
++ if (spk_y == 0) {
++ edge_said = edge_top;
++ break;
++ }
++ if (edge_said != edge_quiet)
++ edge_said = edge_left;
++ if (state > 0)
++ break;
++ spk_y--;
++ spk_x = vc->vc_cols - 1;
++ } else
++ spk_x--;
++ spk_pos -= 2;
++ ch = (char) get_char(vc, (u_short *) spk_pos, &temp);
++ if (ch == SPACE || ch == 0)
++ state = 0;
++ else if (IS_WDLM(ch))
++ state = 1;
++ else
++ state = 2;
++ if (state < last_state) {
++ spk_pos += 2;
++ spk_x++;
++ break;
++ }
++ last_state = state;
++ }
++ if (spk_x == 0 && edge_said == edge_quiet)
++ edge_said = edge_left;
++ if (edge_said > 0 && edge_said < edge_quiet)
++ announce_edge(vc, edge_said);
++ say_word(vc);
++}
++
++static void say_next_word(struct vc_data *vc)
++{
++ u_char temp;
++ char ch;
++ u_short edge_said = 0, last_state = 2, state = 0;
++ spk_parked |= 0x01;
++
++ if (spk_x == vc->vc_cols - 1 && spk_y == vc->vc_rows - 1) {
++ announce_edge(vc, edge_bottom);
++ return;
++ }
++ while (1) {
++ ch = (char) get_char(vc, (u_short *) spk_pos, &temp);
++ if (ch == SPACE || ch == 0)
++ state = 0;
++ else if (IS_WDLM(ch))
++ state = 1;
++ else
++ state = 2;
++ if (state > last_state)
++ break;
++ if (spk_x >= vc->vc_cols - 1) {
++ if (spk_y == vc->vc_rows - 1) {
++ edge_said = edge_bottom;
++ break;
++ }
++ state = 0;
++ spk_y++;
++ spk_x = 0;
++ edge_said = edge_right;
++ } else
++ spk_x++;
++ spk_pos += 2;
++ last_state = state;
++ }
++ if (edge_said > 0)
++ announce_edge(vc, edge_said);
++ say_word(vc);
++}
++
++static void spell_word(struct vc_data *vc)
++{
++ static char *delay_str[] = { "", ",", ".", ". .", ". . ." };
++ char *cp = buf, *str_cap = str_caps_stop;
++ char *cp1, *last_cap = str_caps_stop;
++ u_char ch;
++ if (!get_word(vc))
++ return;
++ while ((ch = (u_char) *cp)) {
++ if (cp != buf)
++ synth_printf(" %s ", delay_str[spell_delay]);
++ if (IS_CHAR(ch, B_CAP)) {
++ str_cap = str_caps_start;
++ if (*str_caps_stop)
++ pitch_shift++;
++ else /* synth has no pitch */
++ last_cap = str_caps_stop;
++ } else
++ str_cap = str_caps_stop;
++ if (str_cap != last_cap) {
++ synth_printf("%s", str_cap);
++ last_cap = str_cap;
++ }
++ if (this_speakup_key == SPELL_PHONETIC
++ && (isascii(ch) && isalpha(ch))) {
++ ch &= 31;
++ cp1 = phonetic[--ch];
++ } else {
++ cp1 = characters[ch];
++ if (*cp1 == '^') {
++ synth_printf("%s", msg_get(MSG_CTRL));
++ cp1++;
++ }
++ }
++ synth_printf("%s", cp1);
++ cp++;
++ }
++ if (str_cap != str_caps_stop)
++ synth_printf("%s", str_caps_stop);
++}
++
++static int get_line(struct vc_data *vc)
++{
++ u_long tmp = spk_pos - (spk_x * 2);
++ int i = 0;
++ u_char tmp2;
++
++ spk_old_attr = spk_attr;
++ spk_attr = get_attributes((u_short *) spk_pos);
++ for (i = 0; i < vc->vc_cols; i++) {
++ buf[i] = (u_char) get_char(vc, (u_short *) tmp, &tmp2);
++ tmp += 2;
++ }
++ for (--i; i >= 0; i--)
++ if (buf[i] != SPACE)
++ break;
++ return ++i;
++}
++
++static void say_line(struct vc_data *vc)
++{
++ int i = get_line(vc);
++ char *cp;
++ u_short saved_punc_mask = punc_mask;
++ if (i == 0) {
++ synth_printf("%s\n", msg_get(MSG_BLANK));
++ return;
++ }
++ buf[i++] = '\n';
++ if (this_speakup_key == SAY_LINE_INDENT) {
++ for (cp = buf; *cp == SPACE; cp++)
++ ;
++ synth_printf("%d, ", (cp - buf) + 1);
++ }
++ punc_mask = punc_masks[reading_punc];
++ spkup_write(buf, i);
++ punc_mask = saved_punc_mask;
++}
++
++static void say_prev_line(struct vc_data *vc)
++{
++ spk_parked |= 0x01;
++ if (spk_y == 0) {
++ announce_edge(vc, edge_top);
++ return;
++ }
++ spk_y--;
++ spk_pos -= vc->vc_size_row;
++ say_line(vc);
++}
++
++static void say_next_line(struct vc_data *vc)
++{
++ spk_parked |= 0x01;
++ if (spk_y == vc->vc_rows - 1) {
++ announce_edge(vc, edge_bottom);
++ return;
++ }
++ spk_y++;
++ spk_pos += vc->vc_size_row;
++ say_line(vc);
++}
++
++static int say_from_to(struct vc_data *vc, u_long from, u_long to,
++ int read_punc)
++{
++ int i = 0;
++ u_char tmp;
++ u_short saved_punc_mask = punc_mask;
++ spk_old_attr = spk_attr;
++ spk_attr = get_attributes((u_short *) from);
++ while (from < to) {
++ buf[i++] = (char) get_char(vc, (u_short *) from, &tmp);
++ from += 2;
++ if (i >= vc->vc_size_row)
++ break;
++ }
++ for (--i; i >= 0; i--)
++ if (buf[i] != SPACE)
++ break;
++ buf[++i] = SPACE;
++ buf[++i] = '\0';
++ if (i < 1)
++ return i;
++ if (read_punc)
++ punc_mask = punc_info[reading_punc].mask;
++ spkup_write(buf, i);
++ if (read_punc)
++ punc_mask = saved_punc_mask;
++ return i - 1;
++}
++
++static void say_line_from_to(struct vc_data *vc, u_long from, u_long to,
++ int read_punc)
++{
++ u_long start = vc->vc_origin + (spk_y * vc->vc_size_row);
++ u_long end = start + (to * 2);
++ start += from * 2;
++ if (say_from_to(vc, start, end, read_punc) <= 0)
++ if (cursor_track != read_all_mode)
++ synth_printf("%s\n", msg_get(MSG_BLANK));
++}
++
++/* Sentence Reading Commands */
++
++void synth_insert_next_index(int);
++
++static int currsentence;
++static int numsentences[2];
++static char *sentbufend[2];
++static char *sentmarks[2][10];
++static int currbuf;
++static int bn;
++static char sentbuf[2][256];
++
++static int say_sentence_num(int num , int prev)
++{
++ bn = currbuf;
++ currsentence = num + 1;
++ if (prev && --bn == -1)
++ bn = 1;
++
++ if (num > numsentences[bn])
++ return 0;
++
++ spkup_write(sentmarks[bn][num], sentbufend[bn] - sentmarks[bn][num]);
++ return 1;
++}
++
++static int get_sentence_buf(struct vc_data *vc, int read_punc)
++{
++ u_long start, end;
++ int i, bn;
++ u_char tmp;
++
++ currbuf++;
++ if (currbuf == 2)
++ currbuf = 0;
++ bn = currbuf;
++ start = vc->vc_origin + ((spk_y) * vc->vc_size_row);
++ end = vc->vc_origin+((spk_y) * vc->vc_size_row) + vc->vc_cols * 2;
++
++ numsentences[bn] = 0;
++ sentmarks[bn][0] = &sentbuf[bn][0];
++ i = 0;
++ spk_old_attr = spk_attr;
++ spk_attr = get_attributes((u_short *) start);
++
++ while (start < end) {
++ sentbuf[bn][i] = (char) get_char(vc, (u_short *) start, &tmp);
++ if (i > 0) {
++ if (sentbuf[bn][i] == SPACE && sentbuf[bn][i-1] == '.'
++ && numsentences[bn] < 9) {
++ /* Sentence Marker */
++ numsentences[bn]++;
++ sentmarks[bn][numsentences[bn]] =
++ &sentbuf[bn][i];
++ }
++ }
++ i++;
++ start += 2;
++ if (i >= vc->vc_size_row)
++ break;
++ }
++
++ for (--i; i >= 0; i--)
++ if (sentbuf[bn][i] != SPACE)
++ break;
++
++ if (i < 1)
++ return -1;
++
++ sentbuf[bn][++i] = SPACE;
++ sentbuf[bn][++i] = '\0';
++
++ sentbufend[bn] = &sentbuf[bn][i];
++ return numsentences[bn];
++}
++
++static void say_screen_from_to(struct vc_data *vc, u_long from, u_long to)
++{
++ u_long start = vc->vc_origin, end;
++ if (from > 0)
++ start += from * vc->vc_size_row;
++ if (to > vc->vc_rows)
++ to = vc->vc_rows;
++ end = vc->vc_origin + (to * vc->vc_size_row);
++ for (from = start; from < end; from = to) {
++ to = from + vc->vc_size_row;
++ say_from_to(vc, from, to, 1);
++ }
++}
++
++static void say_screen(struct vc_data *vc)
++{
++ say_screen_from_to(vc, 0, vc->vc_rows);
++}
++
++static void speakup_win_say(struct vc_data *vc)
++{
++ u_long start, end, from, to;
++ if (win_start < 2) {
++ synth_printf("%s\n", msg_get(MSG_NO_WINDOW));
++ return;
++ }
++ start = vc->vc_origin + (win_top * vc->vc_size_row);
++ end = vc->vc_origin + (win_bottom * vc->vc_size_row);
++ while (start <= end) {
++ from = start + (win_left * 2);
++ to = start + (win_right * 2);
++ say_from_to(vc, from, to, 1);
++ start += vc->vc_size_row;
++ }
++}
++
++static void top_edge(struct vc_data *vc)
++{
++ spk_parked |= 0x01;
++ spk_pos = vc->vc_origin + 2 * spk_x;
++ spk_y = 0;
++ say_line(vc);
++}
++
++static void bottom_edge(struct vc_data *vc)
++{
++ spk_parked |= 0x01;
++ spk_pos += (vc->vc_rows - spk_y - 1) * vc->vc_size_row;
++ spk_y = vc->vc_rows - 1;
++ say_line(vc);
++}
++
++static void left_edge(struct vc_data *vc)
++{
++ spk_parked |= 0x01;
++ spk_pos -= spk_x * 2;
++ spk_x = 0;
++ say_char(vc);
++}
++
++static void right_edge(struct vc_data *vc)
++{
++ spk_parked |= 0x01;
++ spk_pos += (vc->vc_cols - spk_x - 1) * 2;
++ spk_x = vc->vc_cols - 1;
++ say_char(vc);
++}
++
++static void say_first_char(struct vc_data *vc)
++{
++ int i, len = get_line(vc);
++ u_char ch;
++ spk_parked |= 0x01;
++ if (len == 0) {
++ synth_printf("%s\n", msg_get(MSG_BLANK));
++ return;
++ }
++ for (i = 0; i < len; i++)
++ if (buf[i] != SPACE)
++ break;
++ ch = buf[i];
++ spk_pos -= (spk_x - i) * 2;
++ spk_x = i;
++ synth_printf("%d, ", ++i);
++ speak_char(ch);
++}
++
++static void say_last_char(struct vc_data *vc)
++{
++ int len = get_line(vc);
++ u_char ch;
++ spk_parked |= 0x01;
++ if (len == 0) {
++ synth_printf("%s\n", msg_get(MSG_BLANK));
++ return;
++ }
++ ch = buf[--len];
++ spk_pos -= (spk_x - len) * 2;
++ spk_x = len;
++ synth_printf("%d, ", ++len);
++ speak_char(ch);
++}
++
++static void say_position(struct vc_data *vc)
++{
++ synth_printf(msg_get(MSG_POS_INFO), spk_y + 1, spk_x + 1,
++ vc->vc_num + 1);
++ synth_printf("\n");
++}
++
++/* Added by brianb */
++static void say_char_num(struct vc_data *vc)
++{
++ u_char tmp;
++ u_short ch = get_char(vc, (u_short *) spk_pos, &tmp);
++ ch &= 0xff;
++ synth_printf(msg_get(MSG_CHAR_INFO), ch, ch);
++}
++
++/* these are stub functions to keep keyboard.c happy. */
++
++static void say_from_top(struct vc_data *vc)
++{
++ say_screen_from_to(vc, 0, spk_y);
++}
++
++static void say_to_bottom(struct vc_data *vc)
++{
++ say_screen_from_to(vc, spk_y, vc->vc_rows);
++}
++
++static void say_from_left(struct vc_data *vc)
++{
++ say_line_from_to(vc, 0, spk_x, 1);
++}
++
++static void say_to_right(struct vc_data *vc)
++{
++ say_line_from_to(vc, spk_x, vc->vc_cols, 1);
++}
++
++/* end of stub functions. */
++
++static void spkup_write(const char *in_buf, int count)
++{
++ static int rep_count = 0;
++ static u_char ch = '\0', old_ch = '\0';
++ static u_short char_type = 0, last_type = 0;
++ int in_count = count;
++ spk_keydown = 0;
++ while (count--) {
++ if (cursor_track == read_all_mode) {
++ /* Insert Sentence Index */
++ if ((in_buf == sentmarks[bn][currsentence]) &&
++ (currsentence <= numsentences[bn]))
++ synth_insert_next_index(currsentence++);
++ }
++ ch = (u_char)*in_buf++;
++ char_type = spk_chartab[ch];
++ if (ch == old_ch && !(char_type&B_NUM)) {
++ if (++rep_count > 2)
++ continue;
++ } else {
++ if ((last_type&CH_RPT) && rep_count > 2) {
++ synth_printf(" ");
++ synth_printf(msg_get(MSG_REPEAT_DESC), ++rep_count);
++ synth_printf(" ");
++ }
++ rep_count = 0;
++ }
++ if (ch == spk_lastkey) {
++ rep_count = 0;
++ if (key_echo == 1 && ch >= MINECHOCHAR)
++ speak_char(ch);
++ } else if (char_type & B_ALPHA) {
++ if ((synth_flags & SF_DEC) && (last_type & PUNC))
++ synth_buffer_add(SPACE);
++ synth_printf("%c", ch);
++ } else if (char_type & B_NUM) {
++ rep_count = 0;
++ synth_printf("%c", ch);
++ } else if (char_type&punc_mask) {
++ speak_char(ch);
++ char_type &= ~PUNC; /* for dec nospell processing */
++ } else if (char_type&SYNTH_OK) {
++/* these are usually puncts like . and , which synth needs for expression.
++ * suppress multiple to get rid of long pausesand clear repeat count so if
++ *someone has repeats on you don't get nothing repeated count */
++ if (ch != old_ch)
++ synth_printf("%c", ch);
++ else
++ rep_count = 0;
++ } else {
++/* send space and record position, if next is num overwrite space */
++ if (old_ch != ch)
++ synth_buffer_add(SPACE);
++ else
++ rep_count = 0;
++ }
++ old_ch = ch;
++ last_type = char_type;
++ }
++ spk_lastkey = 0;
++ if (in_count > 2 && rep_count > 2) {
++ if (last_type&CH_RPT) {
++ synth_printf(" ");
++ synth_printf(msg_get(MSG_REPEAT_DESC2), ++rep_count);
++ synth_printf(" ");
++ }
++ rep_count = 0;
++ }
++}
++
++static const int NUM_CTL_LABELS = (MSG_CTL_END - MSG_CTL_START + 1);
++
++static void read_all_doc(struct vc_data *vc);
++static void cursor_done(u_long data);
++static DEFINE_TIMER(cursor_timer, cursor_done, 0, 0);
++
++static void do_handle_shift(struct vc_data *vc, u_char value, char up_flag)
++{
++ unsigned long flags;
++ if (synth == NULL || up_flag || spk_killed)
++ return;
++ spk_lock(flags);
++ if (cursor_track == read_all_mode) {
++ switch (value) {
++ case KVAL(K_SHIFT):
++ del_timer(&cursor_timer);
++ spk_shut_up &= 0xfe;
++ do_flush();
++ read_all_doc(vc);
++ break;
++ case KVAL(K_CTRL):
++ del_timer(&cursor_timer);
++ cursor_track = prev_cursor_track;
++ spk_shut_up &= 0xfe;
++ do_flush();
++ break;
++ }
++ } else {
++ spk_shut_up &= 0xfe;
++ do_flush();
++ }
++ if (say_ctrl && value < NUM_CTL_LABELS)
++ synth_printf("%s", msg_get(MSG_CTL_START + value));
++ spk_unlock(flags);
++}
++
++static void do_handle_latin(struct vc_data *vc, u_char value, char up_flag)
++{
++ unsigned long flags;
++ spk_lock(flags);
++ if (up_flag) {
++ spk_lastkey = spk_keydown = 0;
++ spk_unlock(flags);
++ return;
++ }
++ if (synth == NULL || spk_killed) {
++ spk_unlock(flags);
++ return;
++ }
++ spk_shut_up &= 0xfe;
++ spk_lastkey = value;
++ spk_keydown++;
++ spk_parked &= 0xfe;
++ if (key_echo == 2 && value >= MINECHOCHAR)
++ speak_char(value);
++ spk_unlock(flags);
++}
++
++int set_key_info(const u_char *key_info, u_char *k_buffer)
++{
++ int i = 0, states, key_data_len;
++ const u_char *cp = key_info;
++ u_char *cp1 = k_buffer;
++ u_char ch, version, num_keys;
++ version = *cp++;
++ if (version != KEY_MAP_VER)
++ return -1;
++ num_keys = *cp;
++ states = (int) cp[1];
++ key_data_len = (states + 1) * (num_keys + 1);
++ if (key_data_len + SHIFT_TBL_SIZE + 4 >= sizeof(key_buf))
++ return -2;
++ memset(k_buffer, 0, SHIFT_TBL_SIZE);
++ memset(our_keys, 0, sizeof(our_keys));
++ shift_table = k_buffer;
++ our_keys[0] = shift_table;
++ cp1 += SHIFT_TBL_SIZE;
++ memcpy(cp1, cp, key_data_len + 3);
++ /* get num_keys, states and data*/
++ cp1 += 2; /* now pointing at shift states */
++ for (i = 1; i <= states; i++) {
++ ch = *cp1++;
++ if (ch >= SHIFT_TBL_SIZE)
++ return -3;
++ shift_table[ch] = i;
++ }
++ keymap_flags = *cp1++;
++ while ((ch = *cp1)) {
++ if (ch >= MAX_KEY)
++ return -4;
++ our_keys[ch] = cp1;
++ cp1 += states + 1;
++ }
++ return 0;
++}
++
++static struct var_t spk_vars[] = {
++ /* bell must be first to set high limit */
++ { BELL_POS, .u.n = {NULL, 0, 0, 0, 0, 0, NULL }},
++ { SPELL_DELAY, .u.n = {NULL, 0, 0, 4, 0, 0, NULL }},
++ { ATTRIB_BLEEP, .u.n = {NULL, 1, 0, 3, 0, 0, NULL }},
++ { BLEEPS, .u.n = {NULL, 3, 0, 3, 0, 0, NULL }},
++ { BLEEP_TIME, .u.n = {NULL, 30, 1, 200, 0, 0, NULL }},
++ { PUNC_LEVEL, .u.n = {NULL, 1, 0, 4, 0, 0, NULL }},
++ { READING_PUNC, .u.n = {NULL, 1, 0, 4, 0, 0, NULL }},
++ { CURSOR_TIME, .u.n = {NULL, 120, 50, 600, 0, 0, NULL }},
++ { SAY_CONTROL, TOGGLE_0 },
++ { SAY_WORD_CTL, TOGGLE_0 },
++ { NO_INTERRUPT, TOGGLE_0 },
++ { KEY_ECHO, .u.n = {NULL, 1, 0, 2, 0, 0, NULL }},
++ V_LAST_VAR
++};
++
++
++static void toggle_cursoring(struct vc_data *vc)
++{
++ if (cursor_track == read_all_mode)
++ cursor_track = prev_cursor_track;
++ if (++cursor_track >= CT_Max)
++ cursor_track = 0;
++ synth_printf("%s\n", msg_get(MSG_CURSOR_MSGS_START + cursor_track));
++}
++
++void reset_default_chars(void)
++{
++ int i;
++
++ /* First, free any non-default */
++ for (i = 0; i < 256; i++) {
++ if ((characters[i] != NULL)
++ && (characters[i] != default_chars[i]))
++ kfree(characters[i]);
++ }
++
++ memcpy(characters, default_chars, sizeof(default_chars));
++}
++
++void reset_default_chartab(void)
++{
++ memcpy(spk_chartab, default_chartab, sizeof(default_chartab));
++}
++
++static const struct st_bits_data *pb_edit = NULL;
++
++static int edit_bits(struct vc_data *vc, u_char type, u_char ch, u_short key)
++{
++ short mask = pb_edit->mask, ch_type = spk_chartab[ch];
++ if (type != KT_LATIN || (ch_type&B_NUM) || ch < SPACE)
++ return -1;
++ if (ch == SPACE) {
++ synth_printf("%s\n", msg_get(MSG_EDIT_DONE));
++ special_handler = NULL;
++ return 1;
++ }
++ if (mask < PUNC && !(ch_type&PUNC))
++ return -1;
++ spk_chartab[ch] ^= mask;
++ speak_char(ch);
++ synth_printf(" %s\n",
++ (spk_chartab[ch]&mask) ? msg_get(MSG_ON) : msg_get(MSG_OFF));
++ return 1;
++}
++
++/* Allocation concurrency is protected by the console semaphore */
++void speakup_allocate(struct vc_data *vc)
++{
++ int vc_num;
++
++ vc_num = vc->vc_num;
++ if (speakup_console[vc_num] == NULL) {
++ speakup_console[vc_num] = kzalloc(sizeof(*speakup_console[0]),
++ GFP_ATOMIC);
++ if (speakup_console[vc_num] == NULL)
++ return;
++ speakup_date(vc);
++ } else if (!spk_parked)
++ speakup_date(vc);
++}
++
++void speakup_deallocate(struct vc_data *vc)
++{
++ int vc_num;
++
++ vc_num = vc->vc_num;
++ if (speakup_console[vc_num] != NULL) {
++ kfree(speakup_console[vc_num]);
++ speakup_console[vc_num] = NULL;
++ }
++}
++
++static u_char is_cursor;
++static u_long old_cursor_pos, old_cursor_x, old_cursor_y;
++static int cursor_con;
++
++static void reset_highlight_buffers(struct vc_data *);
++
++static int read_all_key;
++
++void reset_index_count(int);
++void get_index_count(int *, int *);
++/*int synth_supports_indexing(void); */
++static void start_read_all_timer(struct vc_data *vc, int command);
++
++enum {
++ RA_NOTHING,
++ RA_NEXT_SENT,
++ RA_PREV_LINE,
++ RA_NEXT_LINE,
++ RA_PREV_SENT,
++ RA_DOWN_ARROW,
++ RA_TIMER,
++ RA_FIND_NEXT_SENT,
++ RA_FIND_PREV_SENT,
++};
++
++static void
++kbd_fakekey2(struct vc_data *vc, int v, int command)
++{
++ del_timer(&cursor_timer);
++ k_handler[KT_CUR](vc, v, 0);
++ k_handler[KT_CUR](vc, v, 1);
++ start_read_all_timer(vc, command);
++}
++
++static void
++read_all_doc(struct vc_data *vc)
++{
++ if ((vc->vc_num != fg_console) || synth == NULL || spk_shut_up)
++ return;
++ if (!synth_supports_indexing())
++ return;
++ if (cursor_track != read_all_mode)
++ prev_cursor_track = cursor_track;
++ cursor_track = read_all_mode;
++ reset_index_count(0);
++ if (get_sentence_buf(vc, 0) == -1)
++ kbd_fakekey2(vc, 0, RA_DOWN_ARROW);
++ else {
++ say_sentence_num(0, 0);
++ synth_insert_next_index(0);
++ start_read_all_timer(vc, RA_TIMER);
++ }
++}
++
++static void
++stop_read_all(struct vc_data *vc)
++{
++ del_timer(&cursor_timer);
++ cursor_track = prev_cursor_track;
++ spk_shut_up &= 0xfe;
++ do_flush();
++}
++
++static void
++start_read_all_timer(struct vc_data *vc, int command)
++{
++ struct var_t *cursor_timeout;
++
++ cursor_con = vc->vc_num;
++ read_all_key = command;
++ cursor_timeout = get_var(CURSOR_TIME);
++ mod_timer(&cursor_timer, jiffies + msecs_to_jiffies(cursor_timeout->u.n.value));
++}
++
++static void
++handle_cursor_read_all(struct vc_data *vc, int command)
++{
++ int indcount, sentcount, rv, sn;
++
++ switch (command) {
++ case RA_NEXT_SENT:
++ /* Get Current Sentence */
++ get_index_count(&indcount, &sentcount);
++ /*printk("%d %d ", indcount, sentcount); */
++ reset_index_count(sentcount+1);
++ if (indcount == 1) {
++ if (!say_sentence_num(sentcount+1, 0)) {
++ kbd_fakekey2(vc, 0, RA_FIND_NEXT_SENT);
++ return;
++ }
++ synth_insert_next_index(0);
++ } else {
++ sn = 0;
++ if (!say_sentence_num(sentcount+1, 1)) {
++ sn = 1;
++ reset_index_count(sn);
++ } else
++ synth_insert_next_index(0);
++ if (!say_sentence_num(sn, 0)) {
++ kbd_fakekey2(vc, 0, RA_FIND_NEXT_SENT);
++ return;
++ }
++ synth_insert_next_index(0);
++ }
++ start_read_all_timer(vc, RA_TIMER);
++ break;
++ case RA_PREV_SENT:
++ break;
++ case RA_NEXT_LINE:
++ read_all_doc(vc);
++ break;
++ case RA_PREV_LINE:
++ break;
++ case RA_DOWN_ARROW:
++ if (get_sentence_buf(vc, 0) == -1) {
++ kbd_fakekey2(vc, 0, RA_DOWN_ARROW);
++ } else {
++ say_sentence_num(0, 0);
++ synth_insert_next_index(0);
++ start_read_all_timer(vc, RA_TIMER);
++ }
++ break;
++ case RA_FIND_NEXT_SENT:
++ rv = get_sentence_buf(vc, 0);
++ if (rv == -1)
++ read_all_doc(vc);
++ if (rv == 0)
++ kbd_fakekey2(vc, 0, RA_FIND_NEXT_SENT);
++ else {
++ say_sentence_num(1, 0);
++ synth_insert_next_index(0);
++ start_read_all_timer(vc, RA_TIMER);
++ }
++ break;
++ case RA_FIND_PREV_SENT:
++ break;
++ case RA_TIMER:
++ get_index_count(&indcount, &sentcount);
++ if (indcount < 2)
++ kbd_fakekey2(vc, 0, RA_DOWN_ARROW);
++ else
++ start_read_all_timer(vc, RA_TIMER);
++ break;
++ }
++}
++
++static int pre_handle_cursor(struct vc_data *vc, u_char value, char up_flag)
++{
++ unsigned long flags;
++ spk_lock(flags);
++ if (cursor_track == read_all_mode) {
++ spk_parked &= 0xfe;
++ if (synth == NULL || up_flag || spk_shut_up) {
++ spk_unlock(flags);
++ return NOTIFY_STOP;
++ }
++ del_timer(&cursor_timer);
++ spk_shut_up &= 0xfe;
++ do_flush();
++ start_read_all_timer(vc, value+1);
++ spk_unlock(flags);
++ return NOTIFY_STOP;
++ }
++ spk_unlock(flags);
++ return NOTIFY_OK;
++}
++
++static void do_handle_cursor(struct vc_data *vc, u_char value, char up_flag)
++{
++ unsigned long flags;
++ struct var_t *cursor_timeout;
++
++ spk_lock(flags);
++ spk_parked &= 0xfe;
++ if (synth == NULL || up_flag || spk_shut_up || cursor_track == CT_Off) {
++ spk_unlock(flags);
++ return;
++ }
++ spk_shut_up &= 0xfe;
++ if (no_intr)
++ do_flush();
++/* the key press flushes if !no_inter but we want to flush on cursor
++ * moves regardless of no_inter state */
++ is_cursor = value + 1;
++ old_cursor_pos = vc->vc_pos;
++ old_cursor_x = vc->vc_x;
++ old_cursor_y = vc->vc_y;
++ speakup_console[vc->vc_num]->ht.cy = vc->vc_y;
++ cursor_con = vc->vc_num;
++ if (cursor_track == CT_Highlight)
++ reset_highlight_buffers(vc);
++ cursor_timeout = get_var(CURSOR_TIME);
++ mod_timer(&cursor_timer, jiffies + msecs_to_jiffies(cursor_timeout->u.n.value));
++ spk_unlock(flags);
++}
++
++static void
++update_color_buffer(struct vc_data *vc , const char *ic , int len)
++{
++ int i, bi, hi;
++ int vc_num = vc->vc_num;
++
++ bi = ((vc->vc_attr & 0x70) >> 4) ;
++ hi = speakup_console[vc_num]->ht.highsize[bi];
++
++ i = 0;
++ if (speakup_console[vc_num]->ht.highsize[bi] == 0) {
++ speakup_console[vc_num]->ht.rpos[bi] = vc->vc_pos;
++ speakup_console[vc_num]->ht.rx[bi] = vc->vc_x;
++ speakup_console[vc_num]->ht.ry[bi] = vc->vc_y;
++ }
++ while ((hi < COLOR_BUFFER_SIZE) && (i < len)) {
++ if ((ic[i] > 32) && (ic[i] < 127)) {
++ speakup_console[vc_num]->ht.highbuf[bi][hi] = ic[i];
++ hi++;
++ } else if ((ic[i] == 32) && (hi != 0)) {
++ if (speakup_console[vc_num]->ht.highbuf[bi][hi-1] !=
++ 32) {
++ speakup_console[vc_num]->ht.highbuf[bi][hi] =
++ ic[i];
++ hi++;
++ }
++ }
++ i++;
++ }
++ speakup_console[vc_num]->ht.highsize[bi] = hi;
++}
++
++static void
++reset_highlight_buffers(struct vc_data *vc)
++{
++ int i;
++ int vc_num = vc->vc_num;
++ for (i = 0 ; i < 8 ; i++)
++ speakup_console[vc_num]->ht.highsize[i] = 0;
++}
++
++static int
++count_highlight_color(struct vc_data *vc)
++{
++ int i, bg;
++ int cc;
++ int vc_num = vc->vc_num;
++ u16 ch;
++ u16 *start = (u16 *) vc->vc_origin;
++
++ for (i = 0; i < 8; i++)
++ speakup_console[vc_num]->ht.bgcount[i] = 0;
++
++ for (i = 0; i < vc->vc_rows; i++) {
++ u16 *end = start + vc->vc_cols*2;
++ u16 *ptr;
++ for (ptr = start; ptr < end; ptr++) {
++ ch = get_attributes(ptr);
++ bg = (ch & 0x70) >> 4;
++ speakup_console[vc_num]->ht.bgcount[bg]++;
++ }
++ start += vc->vc_size_row;
++ }
++
++ cc = 0;
++ for (i = 0; i < 8; i++)
++ if (speakup_console[vc_num]->ht.bgcount[i] > 0)
++ cc++;
++ return cc;
++}
++
++static int
++get_highlight_color(struct vc_data *vc)
++{
++ int i, j;
++ unsigned int cptr[8], tmp;
++ int vc_num = vc->vc_num;
++
++ for (i = 0; i < 8; i++)
++ cptr[i] = i;
++
++ for (i = 0; i < 7; i++)
++ for (j = i + 1; j < 8; j++)
++ if (speakup_console[vc_num]->ht.bgcount[cptr[i]] >
++ speakup_console[vc_num]->ht.bgcount[cptr[j]]) {
++ tmp = cptr[i];
++ cptr[i] = cptr[j];
++ cptr[j] = tmp;
++ }
++
++ for (i = 0; i < 8; i++)
++ if (speakup_console[vc_num]->ht.bgcount[cptr[i]] != 0)
++ if (speakup_console[vc_num]->ht.highsize[cptr[i]] > 0)
++ return cptr[i];
++ return -1;
++}
++
++static int
++speak_highlight(struct vc_data *vc)
++{
++ int hc, d;
++ int vc_num = vc->vc_num;
++ if (count_highlight_color(vc) == 1)
++ return 0;
++ hc = get_highlight_color(vc);
++ if (hc != -1) {
++ d = vc->vc_y-speakup_console[vc_num]->ht.cy;
++ if ((d == 1) || (d == -1))
++ if (speakup_console[vc_num]->ht.ry[hc] != vc->vc_y)
++ return 0;
++ spk_parked |= 0x01;
++ do_flush();
++ spkup_write(speakup_console[vc_num]->ht.highbuf[hc],
++ speakup_console[vc_num]->ht.highsize[hc]);
++ spk_pos = spk_cp = speakup_console[vc_num]->ht.rpos[hc];
++ spk_x = spk_cx = speakup_console[vc_num]->ht.rx[hc];
++ spk_y = spk_cy = speakup_console[vc_num]->ht.ry[hc];
++ return 1;
++ }
++ return 0;
++}
++
++static void
++cursor_done(u_long data)
++{
++ struct vc_data *vc = vc_cons[cursor_con].d;
++ unsigned long flags;
++ del_timer(&cursor_timer);
++ spk_lock(flags);
++ if (cursor_con != fg_console) {
++ is_cursor = 0;
++ goto out;
++ }
++ speakup_date(vc);
++ if (win_enabled) {
++ if (vc->vc_x >= win_left && vc->vc_x <= win_right &&
++ vc->vc_y >= win_top && vc->vc_y <= win_bottom) {
++ spk_keydown = is_cursor = 0;
++ goto out;
++ }
++ }
++ if (cursor_track == read_all_mode) {
++ handle_cursor_read_all(vc, read_all_key);
++ goto out;
++ }
++ if (cursor_track == CT_Highlight) {
++ if (speak_highlight(vc)) {
++ spk_keydown = is_cursor = 0;
++ goto out;
++ }
++ }
++ if (cursor_track == CT_Window)
++ speakup_win_say(vc);
++ else if (is_cursor == 1 || is_cursor == 4)
++ say_line_from_to(vc, 0, vc->vc_cols, 0);
++ else
++ say_char(vc);
++ spk_keydown = is_cursor = 0;
++out:
++ spk_unlock(flags);
++}
++
++/* called by: vt_notifier_call() */
++static void speakup_bs(struct vc_data *vc)
++{
++ unsigned long flags;
++ if (!speakup_console[vc->vc_num])
++ return;
++ if (!spk_trylock(flags))
++ /* Speakup output, discard */
++ return;
++ if (!spk_parked)
++ speakup_date(vc);
++ if (spk_shut_up || synth == NULL) {
++ spk_unlock(flags);
++ return;
++ }
++ if (vc->vc_num == fg_console && spk_keydown) {
++ spk_keydown = 0;
++ if (!is_cursor)
++ say_char(vc);
++ }
++ spk_unlock(flags);
++}
++
++/* called by: vt_notifier_call() */
++static void speakup_con_write(struct vc_data *vc, const char *str, int len)
++{
++ unsigned long flags;
++ if ((vc->vc_num != fg_console) || spk_shut_up || synth == NULL)
++ return;
++ if (!spk_trylock(flags))
++ /* Speakup output, discard */
++ return;
++ if (bell_pos && spk_keydown && (vc->vc_x == bell_pos - 1))
++ bleep(3);
++ if ((is_cursor) || (cursor_track == read_all_mode)) {
++ if (cursor_track == CT_Highlight)
++ update_color_buffer(vc, str, len);
++ spk_unlock(flags);
++ return;
++ }
++ if (win_enabled) {
++ if (vc->vc_x >= win_left && vc->vc_x <= win_right &&
++ vc->vc_y >= win_top && vc->vc_y <= win_bottom) {
++ spk_unlock(flags);
++ return;
++ }
++ }
++
++ spkup_write(str, len);
++ spk_unlock(flags);
++}
++
++void
++speakup_con_update(struct vc_data *vc)
++{
++ unsigned long flags;
++ if (speakup_console[vc->vc_num] == NULL || spk_parked)
++ return;
++ if (!spk_trylock(flags))
++ /* Speakup output, discard */
++ return;
++ speakup_date(vc);
++ spk_unlock(flags);
++}
++
++static void do_handle_spec(struct vc_data *vc, u_char value, char up_flag)
++{
++ unsigned long flags;
++ int on_off = 2;
++ char *label;
++ if (synth == NULL || up_flag || spk_killed)
++ return;
++ spk_lock(flags);
++ spk_shut_up &= 0xfe;
++ if (no_intr)
++ do_flush();
++ switch (value) {
++ case KVAL(K_CAPS):
++ label = msg_get(MSG_KEYNAME_CAPSLOCK);
++ on_off = (vc_kbd_led(kbd_table + vc->vc_num, VC_CAPSLOCK));
++ break;
++ case KVAL(K_NUM):
++ label = msg_get(MSG_KEYNAME_NUMLOCK);
++ on_off = (vc_kbd_led(kbd_table + vc->vc_num, VC_NUMLOCK));
++ break;
++ case KVAL(K_HOLD):
++ label = msg_get(MSG_KEYNAME_SCROLLLOCK);
++ on_off = (vc_kbd_led(kbd_table + vc->vc_num, VC_SCROLLOCK));
++ if (speakup_console[vc->vc_num])
++ speakup_console[vc->vc_num]->tty_stopped = on_off;
++ break;
++ default:
++ spk_parked &= 0xfe;
++ spk_unlock(flags);
++ return;
++ }
++ if (on_off < 2)
++ synth_printf("%s %s\n",
++ label, msg_get(MSG_STATUS_START + on_off));
++ spk_unlock(flags);
++}
++
++static int
++inc_dec_var(u_char value)
++{
++ struct st_var_header *p_header;
++ struct var_t *var_data;
++ char num_buf[32];
++ char *cp = num_buf;
++ char *pn;
++ int var_id = (int)value - VAR_START;
++ int how = (var_id&1) ? E_INC : E_DEC;
++ var_id = var_id/2+FIRST_SET_VAR;
++ p_header = get_var_header(var_id);
++ if (p_header == NULL)
++ return -1;
++ if (p_header->var_type != VAR_NUM)
++ return -1;
++ var_data = p_header->data;
++ if (set_num_var(1, p_header, how) != 0)
++ return -1;
++ if (!spk_close_press) {
++ for (pn = p_header->name; *pn; pn++) {
++ if (*pn == '_')
++ *cp = SPACE;
++ else
++ *cp++ = *pn;
++ }
++ }
++ snprintf(cp, sizeof(num_buf) - (cp - num_buf), " %d ",
++ var_data->u.n.value);
++ synth_printf("%s", num_buf);
++ return 0;
++}
++
++static void
++speakup_win_set(struct vc_data *vc)
++{
++ char info[40];
++ if (win_start > 1) {
++ synth_printf("%s\n", msg_get(MSG_WINDOW_ALREADY_SET));
++ return;
++ }
++ if (spk_x < win_left || spk_y < win_top) {
++ synth_printf("%s\n", msg_get(MSG_END_BEFORE_START));
++ return;
++ }
++ if (win_start && spk_x == win_left && spk_y == win_top) {
++ win_left = 0;
++ win_right = vc->vc_cols-1;
++ win_bottom = spk_y;
++ snprintf(info, sizeof(info), msg_get(MSG_WINDOW_LINE),
++ (int)win_top+1);
++ } else {
++ if (!win_start) {
++ win_top = spk_y;
++ win_left = spk_x;
++ } else {
++ win_bottom = spk_y;
++ win_right = spk_x;
++ }
++ snprintf(info, sizeof(info), msg_get(MSG_WINDOW_BOUNDARY),
++ (win_start) ? msg_get(MSG_END) : msg_get(MSG_START),
++ (int)spk_y+1, (int)spk_x+1);
++ }
++ synth_printf("%s\n", info);
++ win_start++;
++}
++
++static void
++speakup_win_clear(struct vc_data *vc)
++{
++ win_top = win_bottom = 0;
++ win_left = win_right = 0;
++ win_start = 0;
++ synth_printf("%s\n", msg_get(MSG_WINDOW_CLEARED));
++}
++
++static void
++speakup_win_enable(struct vc_data *vc)
++{
++ if (win_start < 2) {
++ synth_printf("%s\n", msg_get(MSG_NO_WINDOW));
++ return;
++ }
++ win_enabled ^= 1;
++ if (win_enabled)
++ synth_printf("%s\n", msg_get(MSG_WINDOW_SILENCED));
++ else
++ synth_printf("%s\n", msg_get(MSG_WINDOW_SILENCE_DISABLED));
++}
++
++static void
++speakup_bits(struct vc_data *vc)
++{
++ int val = this_speakup_key - (FIRST_EDIT_BITS - 1);
++ if (special_handler != NULL || val < 1 || val > 6) {
++ synth_printf("%s\n", msg_get(MSG_ERROR));
++ return;
++ }
++ pb_edit = &punc_info[val];
++ synth_printf(msg_get(MSG_EDIT_PROMPT), pb_edit->name);
++ special_handler = edit_bits;
++}
++
++static int handle_goto(struct vc_data *vc, u_char type, u_char ch, u_short key)
++{
++ static u_char *goto_buf = "\0\0\0\0\0\0";
++ static int num = 0;
++ int maxlen, go_pos;
++ char *cp;
++ if (type == KT_SPKUP && ch == SPEAKUP_GOTO)
++ goto do_goto;
++ if (type == KT_LATIN && ch == '\n')
++ goto do_goto;
++ if (type != 0)
++ goto oops;
++ if (ch == 8) {
++ if (num == 0)
++ return -1;
++ ch = goto_buf[--num];
++ goto_buf[num] = '\0';
++ spkup_write(&ch, 1);
++ return 1;
++ }
++ if (ch < '+' || ch > 'y')
++ goto oops;
++ goto_buf[num++] = ch;
++ goto_buf[num] = '\0';
++ spkup_write(&ch, 1);
++ maxlen = (*goto_buf >= '0') ? 3 : 4;
++ if ((ch == '+' || ch == '-') && num == 1)
++ return 1;
++ if (ch >= '0' && ch <= '9' && num < maxlen)
++ return 1;
++ if (num < maxlen-1 || num > maxlen)
++ goto oops;
++ if (ch < 'x' || ch > 'y') {
++oops:
++ if (!spk_killed)
++ synth_printf(" %s\n", msg_get(MSG_GOTO_CANCELED));
++ goto_buf[num = 0] = '\0';
++ special_handler = NULL;
++ return 1;
++ }
++ cp = speakup_s2i(goto_buf, &go_pos);
++ goto_pos = (u_long)go_pos;
++ if (*cp == 'x') {
++ if (*goto_buf < '0')
++ goto_pos += spk_x;
++ else
++ goto_pos--;
++ if (goto_pos < 0)
++ goto_pos = 0;
++ if (goto_pos >= vc->vc_cols)
++ goto_pos = vc->vc_cols-1;
++ goto_x = 1;
++ } else {
++ if (*goto_buf < '0')
++ goto_pos += spk_y;
++ else
++ goto_pos--;
++ if (goto_pos < 0)
++ goto_pos = 0;
++ if (goto_pos >= vc->vc_rows)
++ goto_pos = vc->vc_rows-1;
++ goto_x = 0;
++ }
++ goto_buf[num = 0] = '\0';
++do_goto:
++ special_handler = NULL;
++ spk_parked |= 0x01;
++ if (goto_x) {
++ spk_pos -= spk_x * 2;
++ spk_x = goto_pos;
++ spk_pos += goto_pos * 2;
++ say_word(vc);
++ } else {
++ spk_y = goto_pos;
++ spk_pos = vc->vc_origin + (goto_pos * vc->vc_size_row);
++ say_line(vc);
++ }
++ return 1;
++}
++
++static void
++speakup_goto(struct vc_data *vc)
++{
++ if (special_handler != NULL) {
++ synth_printf("%s\n", msg_get(MSG_ERROR));
++ return;
++ }
++ synth_printf("%s\n", msg_get(MSG_GOTO));
++ special_handler = handle_goto;
++ return;
++}
++
++static void speakup_help(struct vc_data *vc)
++{
++ handle_help(vc, KT_SPKUP, SPEAKUP_HELP, 0);
++}
++
++static void
++do_nothing(struct vc_data *vc)
++{
++ return; /* flush done in do_spkup */
++}
++static u_char key_speakup, spk_key_locked;
++
++static void
++speakup_lock(struct vc_data *vc)
++{
++ if (!spk_key_locked)
++ spk_key_locked = key_speakup = 16;
++ else
++ spk_key_locked = key_speakup = 0;
++}
++
++typedef void(*spkup_hand)(struct vc_data *);
++spkup_hand spkup_handler[] = {
++ /* must be ordered same as defines in speakup.h */
++ do_nothing, speakup_goto, speech_kill, speakup_shut_up,
++ speakup_cut, speakup_paste, say_first_char, say_last_char,
++ say_char, say_prev_char, say_next_char,
++ say_word, say_prev_word, say_next_word,
++ say_line, say_prev_line, say_next_line,
++ top_edge, bottom_edge, left_edge, right_edge,
++ spell_word, spell_word, say_screen,
++ say_position, say_attributes,
++ speakup_off, speakup_parked, say_line, /* this is for indent */
++ say_from_top, say_to_bottom,
++ say_from_left, say_to_right,
++ say_char_num, speakup_bits, speakup_bits, say_phonetic_char,
++ speakup_bits, speakup_bits, speakup_bits,
++ speakup_win_set, speakup_win_clear, speakup_win_enable, speakup_win_say,
++ speakup_lock, speakup_help, toggle_cursoring, read_all_doc, NULL
++};
++
++static void do_spkup(struct vc_data *vc, u_char value)
++{
++ if (spk_killed && value != SPEECH_KILL)
++ return;
++ spk_keydown = 0;
++ spk_lastkey = 0;
++ spk_shut_up &= 0xfe;
++ this_speakup_key = value;
++ if (value < SPKUP_MAX_FUNC && spkup_handler[value]) {
++ do_flush();
++ (*spkup_handler[value])(vc);
++ } else {
++ if (inc_dec_var(value) < 0)
++ bleep(9);
++ }
++}
++
++static const char *pad_chars = "0123456789+-*/\015,.?()";
++
++int
++speakup_key(struct vc_data *vc, int shift_state, int keycode, u_short keysym,
++ int up_flag)
++{
++ unsigned long flags;
++ int kh;
++ u_char *key_info;
++ u_char type = KTYP(keysym), value = KVAL(keysym), new_key = 0;
++ u_char shift_info, offset;
++ int ret = 0;
++ if (synth == NULL)
++ return 0;
++
++ spk_lock(flags);
++ tty = vc->vc_tty;
++ if (type >= 0xf0)
++ type -= 0xf0;
++ if (type == KT_PAD &&
++ (vc_kbd_led(kbd_table + fg_console, VC_NUMLOCK))) {
++ if (up_flag) {
++ spk_keydown = 0;
++ goto out;
++ }
++ value = spk_lastkey = pad_chars[value];
++ spk_keydown++;
++ spk_parked &= 0xfe;
++ goto no_map;
++ }
++ if (keycode >= MAX_KEY)
++ goto no_map;
++ key_info = our_keys[keycode];
++ if (key_info == 0)
++ goto no_map;
++ /* Check valid read all mode keys */
++ if ((cursor_track == read_all_mode) && (!up_flag)) {
++ switch (value) {
++ case KVAL(K_DOWN):
++ case KVAL(K_UP):
++ case KVAL(K_LEFT):
++ case KVAL(K_RIGHT):
++ case KVAL(K_PGUP):
++ case KVAL(K_PGDN):
++ break;
++ default:
++ stop_read_all(vc);
++ break;
++ }
++ }
++ shift_info = (shift_state&0x0f) + key_speakup;
++ offset = shift_table[shift_info];
++ if (offset) {
++ new_key = key_info[offset];
++ if (new_key) {
++ ret = 1;
++ if (new_key == SPK_KEY) {
++ if (!spk_key_locked)
++ key_speakup = (up_flag) ? 0 : 16;
++ if (up_flag || spk_killed)
++ goto out;
++ spk_shut_up &= 0xfe;
++ do_flush();
++ goto out;
++ }
++ if (up_flag)
++ goto out;
++ if (last_keycode == keycode &&
++ last_spk_jiffy+MAX_DELAY > jiffies) {
++ spk_close_press = 1;
++ offset = shift_table[shift_info+32];
++ /* double press? */
++ if (offset && key_info[offset])
++ new_key = key_info[offset];
++ }
++ last_keycode = keycode;
++ last_spk_jiffy = jiffies;
++ type = KT_SPKUP;
++ value = new_key;
++ }
++ }
++no_map:
++ if (type == KT_SPKUP && special_handler == NULL) {
++ do_spkup(vc, new_key);
++ spk_close_press = 0;
++ ret = 1;
++ goto out;
++ }
++ if (up_flag || spk_killed || type == KT_SHIFT)
++ goto out;
++ spk_shut_up &= 0xfe;
++ kh = (value == KVAL(K_DOWN))
++ || (value == KVAL(K_UP))
++ || (value == KVAL(K_LEFT))
++ || (value == KVAL(K_RIGHT));
++ if ((cursor_track != read_all_mode) || !kh)
++ if (!no_intr)
++ do_flush();
++ if (special_handler) {
++ if (type == KT_SPEC && value == 1) {
++ value = '\n';
++ type = KT_LATIN;
++ } else if (type == KT_LETTER)
++ type = KT_LATIN;
++ else if (value == 0x7f)
++ value = 8; /* make del = backspace */
++ ret = (*special_handler)(vc, type, value, keycode);
++ spk_close_press = 0;
++ if (ret < 0)
++ bleep(9);
++ goto out;
++ }
++ last_keycode = 0;
++out:
++ spk_unlock(flags);
++ return ret;
++}
++
++static int keyboard_notifier_call(struct notifier_block *nb,
++ unsigned long code, void *_param)
++{
++ struct keyboard_notifier_param *param = _param;
++ struct vc_data *vc = param->vc;
++ int up = !param->down;
++ int ret = NOTIFY_OK;
++ static int keycode; /* to hold the current keycode */
++
++ if (vc->vc_mode == KD_GRAPHICS)
++ return ret;
++ switch (code) {
++ case KBD_KEYCODE:
++ /* speakup requires keycode and keysym currently */
++ keycode = param->value;
++ break;
++ case KBD_UNBOUND_KEYCODE:
++ /* not used yet */
++ break;
++ case KBD_UNICODE:
++ /* not used yet */
++ break;
++ case KBD_KEYSYM:
++ if (speakup_key(vc, param->shift, keycode, param->value, up))
++ ret = NOTIFY_STOP;
++ else
++ if (KTYP(param->value) == KT_CUR)
++ ret = pre_handle_cursor(vc,
++ KVAL(param->value), up);
++ break;
++ case KBD_POST_KEYSYM: {
++ unsigned char type = KTYP(param->value) - 0xf0;
++ unsigned char val = KVAL(param->value);
++ switch (type) {
++ case KT_SHIFT:
++ do_handle_shift(vc, val, up);
++ break;
++ case KT_LATIN:
++ case KT_LETTER:
++ do_handle_latin(vc, val, up);
++ break;
++ case KT_CUR:
++ do_handle_cursor(vc, val, up);
++ break;
++ case KT_SPEC:
++ do_handle_spec(vc, val, up);
++ break;
++ }
++ break;
++ }
++ }
++ return ret;
++}
++
++static int vt_notifier_call(struct notifier_block *nb,
++ unsigned long code, void *_param)
++{
++ struct vt_notifier_param *param = _param;
++ struct vc_data *vc = param->vc;
++ switch (code) {
++ case VT_ALLOCATE:
++ if (vc->vc_mode == KD_TEXT)
++ speakup_allocate(vc);
++ break;
++ case VT_DEALLOCATE:
++ speakup_deallocate(vc);
++ break;
++ case VT_WRITE:
++ if (param->c == '\b')
++ speakup_bs(vc);
++ else
++ if (param->c < 0x100) {
++ char d = param->c;
++ speakup_con_write(vc, &d, 1);
++ }
++ break;
++ case VT_UPDATE:
++ speakup_con_update(vc);
++ break;
++ }
++ return NOTIFY_OK;
++}
++
++/* called by: module_exit() */
++static void __exit speakup_exit(void)
++{
++ int i;
++
++ free_user_msgs();
++ unregister_keyboard_notifier(&keyboard_notifier_block);
++ unregister_vt_notifier(&vt_notifier_block);
++ speakup_unregister_devsynth();
++ del_timer(&cursor_timer);
++
++ kthread_stop(speakup_task);
++ speakup_task = NULL;
++ mutex_lock(&spk_mutex);
++ synth_release();
++ mutex_unlock(&spk_mutex);
++
++ for (i = 0; i < MAXVARS; i++)
++ speakup_unregister_var(i);
++
++ for (i = 0; i < 256; i++) {
++ if (characters[i] != default_chars[i])
++ kfree(characters[i]);
++ }
++ for (i = 0; speakup_console[i]; i++)
++ kfree(speakup_console[i]);
++ speakup_kobj_exit();
++}
++
++/* call by: module_init() */
++static int __init speakup_init(void)
++{
++ int i;
++ struct st_spk_t *first_console;
++ struct vc_data *vc = vc_cons[fg_console].d;
++ struct var_t *var;
++
++ initialize_msgs(); /* Initialize arrays for i18n. */
++ first_console = kzalloc(sizeof(*first_console), GFP_KERNEL);
++ if (!first_console)
++ return -ENOMEM;
++ if (speakup_kobj_init() < 0)
++ return -ENOMEM;
++
++ reset_default_chars();
++ reset_default_chartab();
++
++ speakup_console[vc->vc_num] = first_console;
++ speakup_date(vc);
++ pr_info("speakup %s: initialized\n", SPEAKUP_VERSION);
++
++ strlwr(synth_name);
++ spk_vars[0].u.n.high = vc->vc_cols;
++ for (var = spk_vars; var->var_id !=MAXVARS; var++)
++ speakup_register_var(var);
++ for (var = synth_time_vars; (var->var_id >= 0) && (var->var_id < MAXVARS); var++)
++ speakup_register_var(var);
++ for (i = 1; punc_info[i].mask != 0; i++)
++ set_mask_bits(0, i, 2);
++
++ set_key_info(key_defaults, key_buf);
++ if (quiet_boot)
++ spk_shut_up |= 0x01;
++
++ for (i = 0; i < MAX_NR_CONSOLES; i++)
++ if (vc_cons[i].d)
++ speakup_allocate(vc_cons[i].d);
++
++ pr_warn("synth name on entry is: %s\n", synth_name);
++ synth_init(synth_name);
++ speakup_register_devsynth();
++
++ register_keyboard_notifier(&keyboard_notifier_block);
++ register_vt_notifier(&vt_notifier_block);
++
++ speakup_task = kthread_create(speakup_thread, NULL, "speakup");
++ set_user_nice(speakup_task, 10);
++ if ( ! IS_ERR(speakup_task))
++ wake_up_process(speakup_task);
++ else
++ return -ENOMEM;
++ return 0;
++}
++
++module_init(speakup_init);
++module_exit(speakup_exit);
++
+--- a/drivers/staging/speakup/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/Makefile 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,12 @@
++KERNELDIR = /lib/modules/`uname -r`/build
++
++all: modules
++
++modules:
++ make -C $(KERNELDIR) M=`pwd` `cat allmodule.mk`
++
++modules_install:
++ make INSTALL_MOD_DIR=speakup -C $(KERNELDIR) M=`pwd` `cat allmodule.mk` $@
++
++clean:
++ make -C $(KERNELDIR) M=`pwd` `cat allmodule.mk` $@
+--- a/drivers/staging/speakup/selection.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/selection.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,152 @@
++#include <linux/consolemap.h>
++#include <linux/interrupt.h>
++#include <linux/sched.h>
++#include <linux/selection.h>
++
++#include "speakup.h"
++
++/* ------ cut and paste ----- */
++/* Don't take this from <ctype.h>: 011-015 on the screen aren't spaces */
++#define ishardspace(c) ((c) == ' ')
++
++unsigned short xs, ys, xe, ye; /* our region points */
++
++/* Variables for selection control. */
++/* must not be disallocated */
++struct vc_data *spk_sel_cons;
++/* cleared by clear_selection */
++static int sel_start = -1;
++static int sel_end;
++static int sel_buffer_lth;
++static char *sel_buffer;
++
++static unsigned char sel_pos(int n)
++{
++ return inverse_translate(spk_sel_cons, screen_glyph(spk_sel_cons, n));
++}
++
++void speakup_clear_selection(void)
++{
++ sel_start = -1;
++}
++
++/* does screen address p correspond to character at LH/RH edge of screen? */
++static int atedge(const int p, int size_row)
++{
++ return (!(p % size_row) || !((p + 2) % size_row));
++}
++
++/* constrain v such that v <= u */
++static unsigned short limit(const unsigned short v, const unsigned short u)
++{
++ return (v > u) ? u : v;
++}
++
++int speakup_set_selection(struct tty_struct *tty)
++{
++ int new_sel_start, new_sel_end;
++ char *bp, *obp;
++ int i, ps, pe;
++ struct vc_data *vc = vc_cons[fg_console].d;
++
++ xs = limit(xs, vc->vc_cols - 1);
++ ys = limit(ys, vc->vc_rows - 1);
++ xe = limit(xe, vc->vc_cols - 1);
++ ye = limit(ye, vc->vc_rows - 1);
++ ps = ys * vc->vc_size_row + (xs << 1);
++ pe = ye * vc->vc_size_row + (xe << 1);
++
++ if (ps > pe) {
++ /* make sel_start <= sel_end */
++ int tmp = ps;
++ ps = pe;
++ pe = tmp;
++ }
++
++ if (spk_sel_cons != vc_cons[fg_console].d) {
++ speakup_clear_selection();
++ spk_sel_cons = vc_cons[fg_console].d;
++ printk(KERN_WARNING
++ "Selection: mark console not the same as cut\n");
++ return -EINVAL;
++ }
++
++ new_sel_start = ps;
++ new_sel_end = pe;
++
++ /* select to end of line if on trailing space */
++ if (new_sel_end > new_sel_start &&
++ !atedge(new_sel_end, vc->vc_size_row) &&
++ ishardspace(sel_pos(new_sel_end))) {
++ for (pe = new_sel_end + 2; ; pe += 2)
++ if (!ishardspace(sel_pos(pe)) ||
++ atedge(pe, vc->vc_size_row))
++ break;
++ if (ishardspace(sel_pos(pe)))
++ new_sel_end = pe;
++ }
++ if ((new_sel_start == sel_start) && (new_sel_end == sel_end))
++ return 0; /* no action required */
++
++ sel_start = new_sel_start;
++ sel_end = new_sel_end;
++ /* Allocate a new buffer before freeing the old one ... */
++ bp = kmalloc((sel_end-sel_start)/2+1, GFP_ATOMIC);
++ if (!bp) {
++ printk(KERN_WARNING "selection: kmalloc() failed\n");
++ speakup_clear_selection();
++ return -ENOMEM;
++ }
++ kfree(sel_buffer);
++ sel_buffer = bp;
++
++ obp = bp;
++ for (i = sel_start; i <= sel_end; i += 2) {
++ *bp = sel_pos(i);
++ if (!ishardspace(*bp++))
++ obp = bp;
++ if (!((i + 2) % vc->vc_size_row)) {
++ /* strip trailing blanks from line and add newline,
++ unless non-space at end of line. */
++ if (obp != bp) {
++ bp = obp;
++ *bp++ = '\r';
++ }
++ obp = bp;
++ }
++ }
++ sel_buffer_lth = bp - sel_buffer;
++ return 0;
++}
++
++int speakup_paste_selection(struct tty_struct *tty)
++{
++ struct vc_data *vc = (struct vc_data *) tty->driver_data;
++ int pasted = 0, count;
++ DECLARE_WAITQUEUE(wait, current);
++ add_wait_queue(&vc->paste_wait, &wait);
++ while (sel_buffer && sel_buffer_lth > pasted) {
++ set_current_state(TASK_INTERRUPTIBLE);
++ if (test_bit(TTY_THROTTLED, &tty->flags)) {
++ if (in_atomic())
++ /* can't be performed in an interrupt handler, abort */
++ break;
++ schedule();
++ continue;
++ }
++ count = sel_buffer_lth - pasted;
++ count = min_t(int, count, tty->receive_room);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31)
++ tty->ldisc->ops->receive_buf(tty, sel_buffer + pasted, 0, count);
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
++ tty->ldisc.ops->receive_buf(tty, sel_buffer + pasted, 0, count);
++#else
++ tty->ldisc.receive_buf(tty, sel_buffer + pasted, 0, count);
++#endif
++ pasted += count;
++ }
++ remove_wait_queue(&vc->paste_wait, &wait);
++ current->state = TASK_RUNNING;
++ return 0;
++}
++
+--- a/drivers/staging/speakup/serialio.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/serialio.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,208 @@
++#include <linux/interrupt.h>
++#include <linux/ioport.h>
++
++#include "spk_types.h"
++#include "speakup.h"
++#include "spk_priv.h"
++#include "serialio.h"
++
++static void start_serial_interrupt(int irq);
++
++static struct serial_state rs_table[] = {
++ SERIAL_PORT_DFNS
++};
++static struct serial_state *serstate;
++static int timeouts;
++
++struct serial_state *spk_serial_init(int index)
++{
++ int baud = 9600, quot = 0;
++ unsigned int cval = 0;
++ int cflag = CREAD | HUPCL | CLOCAL | B9600 | CS8;
++ struct serial_state *ser = NULL;
++
++ ser = rs_table + index;
++ /* Divisor, bytesize and parity */
++ quot = ser->baud_base / baud;
++ cval = cflag & (CSIZE | CSTOPB);
++#if defined(__powerpc__) || defined(__alpha__)
++ cval >>= 8;
++#else /* !__powerpc__ && !__alpha__ */
++ cval >>= 4;
++#endif /* !__powerpc__ && !__alpha__ */
++ if (cflag & PARENB)
++ cval |= UART_LCR_PARITY;
++ if (!(cflag & PARODD))
++ cval |= UART_LCR_EPAR;
++ if (synth_request_region(ser->port, 8)) {
++ /* try to take it back. */
++ printk("Ports not available, trying to steal them\n");
++ __release_region(&ioport_resource, ser->port, 8);
++ if (synth_request_region(ser->port, 8))
++ return NULL;
++ }
++
++ /* Disable UART interrupts, set DTR and RTS high
++ * and set speed. */
++ outb(cval | UART_LCR_DLAB, ser->port + UART_LCR); /* set DLAB */
++ outb(quot & 0xff, ser->port + UART_DLL); /* LS of divisor */
++ outb(quot >> 8, ser->port + UART_DLM); /* MS of divisor */
++ outb(cval, ser->port + UART_LCR); /* reset DLAB */
++
++ /* Turn off Interrupts */
++ outb(0, ser->port + UART_IER);
++ outb(UART_MCR_DTR | UART_MCR_RTS, ser->port + UART_MCR);
++
++ /* If we read 0xff from the LSR, there is no UART here. */
++ if (inb(ser->port + UART_LSR) == 0xff) {
++ synth_release_region(ser->port, 8);
++ serstate = NULL;
++ return NULL;
++ }
++
++ mdelay(1);
++ speakup_info.port_tts = ser->port;
++ serstate = ser;
++
++ start_serial_interrupt(ser->irq);
++
++ return ser;
++}
++
++static irqreturn_t synth_readbuf_handler(int irq, void *dev_id)
++{
++ unsigned long flags;
++/*printk(KERN_ERR "in irq\n"); */
++/*pr_warn("in IRQ\n"); */
++ int c;
++ spk_lock(flags);
++ while (inb_p(speakup_info.port_tts + UART_LSR) & UART_LSR_DR) {
++
++ c = inb_p(speakup_info.port_tts+UART_RX);
++ synth->read_buff_add((u_char) c);
++/*printk(KERN_ERR "c = %d\n", c); */
++/*pr_warn("C = %d\n", c); */
++ }
++ spk_unlock(flags);
++ return IRQ_HANDLED;
++}
++
++static void start_serial_interrupt(int irq)
++{
++ int rv;
++
++ if (synth->read_buff_add == NULL)
++ return;
++
++ rv = request_irq(irq, synth_readbuf_handler, IRQF_SHARED,
++ "serial", (void *) synth_readbuf_handler);
++
++ if (rv)
++ printk(KERN_ERR "Unable to request Speakup serial I R Q\n");
++ /* Set MCR */
++ outb(UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2,
++ speakup_info.port_tts + UART_MCR);
++ /* Turn on Interrupts */
++ outb(UART_IER_MSI|UART_IER_RLSI|UART_IER_RDI,
++ speakup_info.port_tts + UART_IER);
++ inb(speakup_info.port_tts+UART_LSR);
++ inb(speakup_info.port_tts+UART_RX);
++ inb(speakup_info.port_tts+UART_IIR);
++ inb(speakup_info.port_tts+UART_MSR);
++ outb(1, speakup_info.port_tts + UART_FCR); /* Turn FIFO On */
++}
++
++void stop_serial_interrupt(void)
++{
++ if (speakup_info.port_tts == 0)
++ return;
++
++ if (synth->read_buff_add == NULL)
++ return;
++
++ /* Turn off interrupts */
++ outb(0, speakup_info.port_tts+UART_IER);
++ /* Free IRQ */
++ free_irq(serstate->irq, (void *) synth_readbuf_handler);
++}
++
++int wait_for_xmitr(void)
++{
++ int tmout = SPK_XMITR_TIMEOUT;
++ if ((synth->alive) && (timeouts >= NUM_DISABLE_TIMEOUTS)) {
++ pr_warn("%s: too many timeouts, deactivating speakup\n", synth->long_name);
++ synth->alive = 0;
++ /* No synth any more, so nobody will restart TTYs, and we thus
++ * need to do it ourselves. Now that there is no synth we can
++ * let application flood anyway */
++ speakup_start_ttys();
++ timeouts = 0;
++ return 0;
++ }
++ while (spk_serial_tx_busy()) {
++ if (--tmout == 0) {
++ pr_warn("%s: timed out (tx busy)\n", synth->long_name);
++ timeouts++;
++ return 0;
++ }
++ udelay(1);
++ }
++ tmout = SPK_CTS_TIMEOUT;
++ while (!((inb_p(speakup_info.port_tts + UART_MSR)) & UART_MSR_CTS)) {
++ /* CTS */
++ if (--tmout == 0) {
++ // pr_warn("%s: timed out (cts)\n", synth->long_name);
++ timeouts++;
++ return 0;
++ }
++ udelay(1);
++ }
++ timeouts = 0;
++ return 1;
++}
++
++unsigned char spk_serial_in(void)
++{
++ int tmout = SPK_SERIAL_TIMEOUT;
++
++ while (!(inb_p(speakup_info.port_tts + UART_LSR) & UART_LSR_DR)) {
++ if (--tmout == 0) {
++ pr_warn("time out while waiting for input.\n");
++ return 0xff;
++ }
++ udelay(1);
++ }
++ return inb_p(speakup_info.port_tts + UART_RX);
++}
++EXPORT_SYMBOL_GPL(spk_serial_in);
++
++unsigned char spk_serial_in_nowait(void)
++{
++ unsigned char lsr;
++
++ lsr = inb_p(speakup_info.port_tts + UART_LSR);
++ if (!(lsr & UART_LSR_DR))
++ return 0;
++ return inb_p(speakup_info.port_tts + UART_RX);
++}
++EXPORT_SYMBOL_GPL(spk_serial_in_nowait);
++
++int spk_serial_out(const char ch)
++{
++ if (synth->alive && wait_for_xmitr()) {
++ outb_p(ch, speakup_info.port_tts);
++ return 1;
++ }
++ return 0;
++}
++EXPORT_SYMBOL_GPL(spk_serial_out);
++
++void spk_serial_release(void)
++{
++ if (speakup_info.port_tts == 0)
++ return;
++ synth_release_region(speakup_info.port_tts, 8);
++ speakup_info.port_tts = 0;
++}
++EXPORT_SYMBOL_GPL(spk_serial_release);
++
+--- a/drivers/staging/speakup/serialio.h 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/serialio.h 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,55 @@
++#ifndef _SPEAKUP_SERIAL_H
++#define _SPEAKUP_SERIAL_H
++
++#include <linux/serial.h> /* for rs_table, serial constants &
++ serial_uart_config */
++#include <linux/serial_reg.h> /* for more serial constants */
++#include <linux/serialP.h> /* for struct serial_state */
++#ifndef __sparc__
++#include <asm/serial.h>
++#endif
++
++/* countdown values for serial timeouts in us */
++#define SPK_SERIAL_TIMEOUT 100000
++/* countdown values transmitter/dsr timeouts in us */
++#define SPK_XMITR_TIMEOUT 100000
++/* countdown values cts timeouts in us */
++#define SPK_CTS_TIMEOUT 100000
++/* check ttyS0 ... ttyS3 */
++#define SPK_LO_TTY 0
++#define SPK_HI_TTY 3
++/* # of timeouts permitted before disable */
++#define NUM_DISABLE_TIMEOUTS 3
++/* buffer timeout in ms */
++#define SPK_TIMEOUT 100
++#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
++
++#define spk_serial_tx_busy() ((inb(speakup_info.port_tts + UART_LSR) & BOTH_EMPTY) != BOTH_EMPTY)
++
++/* 2.6.22 doesn't have them any more, hardcode it for now (these values should
++ * be fine for 99% cases) */
++#ifndef BASE_BAUD
++#define BASE_BAUD (1843200 / 16)
++#endif
++#ifndef STD_COM_FLAGS
++#ifdef CONFIG_SERIAL_DETECT_IRQ
++#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ)
++#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ)
++#else
++#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
++#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
++#endif
++#endif
++#ifndef SERIAL_PORT_DFNS
++#define SERIAL_PORT_DFNS \
++ /* UART CLK PORT IRQ FLAGS */ \
++ { 0, BASE_BAUD, 0x3F8, 4, STD_COM_FLAGS }, /* ttyS0 */ \
++ { 0, BASE_BAUD, 0x2F8, 3, STD_COM_FLAGS }, /* ttyS1 */ \
++ { 0, BASE_BAUD, 0x3E8, 4, STD_COM_FLAGS }, /* ttyS2 */ \
++ { 0, BASE_BAUD, 0x2E8, 3, STD_COM4_FLAGS }, /* ttyS3 */
++#endif
++#ifndef IRQF_SHARED
++#define IRQF_SHARED SA_SHIRQ
++#endif
++
++#endif
+--- a/drivers/staging/speakup/speakup_acnt.h 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_acnt.h 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,16 @@
++/* speakup_acntpc.h - header file for speakups Accent-PC driver. */
++
++#define SYNTH_IO_EXTENT 0x02
++
++#define SYNTH_CLEAR 0x18 /* stops speech */
++
++ /* Port Status Flags */
++#define SYNTH_READABLE 0x01 /* mask for bit which is nonzero if a
++ byte can be read from the data port */
++#define SYNTH_WRITABLE 0x02 /* mask for RDY bit, which when set to
++ 1, indicates the data port is ready
++ to accept a byte of data. */
++#define SYNTH_QUIET 'S' /* synth is not speaking */
++#define SYNTH_FULL 'F' /* synth is full. */
++#define SYNTH_ALMOST_EMPTY 'M' /* synth has les than 2 seconds of text left */
++#define SYNTH_SPEAKING 's' /* synth is speaking and has a fare way to go */
+--- a/drivers/staging/speakup/speakup_acntpc.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_acntpc.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,323 @@
++/*
++ * written by: Kirk Reiser <kirk@braille.uwo.ca>
++ * this version considerably modified by David Borowski, david575@rogers.com
++ *
++ * Copyright (C) 1998-99 Kirk Reiser.
++ * Copyright (C) 2003 David Borowski.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * this code is specificly written as a driver for the speakup screenreview
++ * package and is not a general device driver.
++ * This driver is for the Aicom Acent PC internal synthesizer.
++ */
++
++#include <linux/jiffies.h>
++#include <linux/sched.h>
++#include <linux/timer.h>
++#include <linux/kthread.h>
++
++#include "spk_priv.h"
++#include "serialio.h"
++#include "speakup.h"
++#include "speakup_acnt.h" /* local header file for Accent values */
++
++#define DRV_VERSION "2.9"
++#define synth_readable() (inb_p(synth_port_control) & SYNTH_READABLE)
++#define synth_writable() (inb_p(synth_port_control) & SYNTH_WRITABLE)
++#define synth_full() (inb_p(speakup_info.port_tts + UART_RX) == 'F')
++#define PROCSPEECH '\r'
++
++static int synth_probe(struct spk_synth *synth);
++static void accent_release(void);
++static const char *synth_immediate(struct spk_synth *synth, const char *buf);
++static void do_catch_up(struct spk_synth *synth);
++static void synth_flush(struct spk_synth *synth);
++
++static int synth_port_control;
++static int port_forced;
++static unsigned int synth_portlist[] = { 0x2a8, 0 };
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"\033P8" }},
++ { CAPS_STOP, .u.s = {"\033P5" }},
++ { RATE, .u.n = {"\033R%c", 9, 0, 17, 0, 0, "0123456789abcdefgh" }},
++ { PITCH, .u.n = {"\033P%d", 5, 0, 9, 0, 0, NULL }},
++ { VOL, .u.n = {"\033A%d", 5, 0, 9, 0, 0, NULL }},
++ { TONE, .u.n = {"\033V%d", 5, 0, 9, 0, 0, NULL }},
++ V_LAST_VAR
++};
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/acntpc.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute tone_attribute =
++ __ATTR(tone, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute vol_attribute =
++ __ATTR(vol, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &pitch_attribute.attr,
++ &rate_attribute.attr,
++ &tone_attribute.attr,
++ &vol_attribute.attr,
++ &delay_time_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_acntpc = {
++ .name = "acntpc",
++ .version = DRV_VERSION,
++ .long_name = "Accent PC",
++ .init = "\033=X \033Oi\033T2\033=M\033N1\n",
++ .procspeech = PROCSPEECH,
++ .clear = SYNTH_CLEAR,
++ .delay = 500,
++ .trigger = 50,
++ .jiffies = 50,
++ .full = 1000,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = synth_probe,
++ .release = accent_release,
++ .synth_immediate = synth_immediate,
++ .catch_up = do_catch_up,
++ .flush = synth_flush,
++ .is_alive = spk_synth_is_alive_nop,
++ .synth_adjust = NULL,
++ .read_buff_add = NULL,
++ .get_index = NULL,
++ .indexing = {
++ .command = NULL,
++ .lowindex = 0,
++ .highindex = 0,
++ .currindex = 0,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "acntpc",
++ },
++};
++
++static const char *synth_immediate(struct spk_synth *synth, const char *buf)
++{
++ u_char ch;
++ while ((ch = *buf)) {
++ int timeout = SPK_XMITR_TIMEOUT;
++ if (ch == '\n')
++ ch = PROCSPEECH;
++ if (synth_full())
++ return buf;
++ while (synth_writable()) {
++ if (!--timeout)
++ return buf;
++ udelay(1);
++ }
++ outb_p(ch, speakup_info.port_tts);
++ buf++;
++ }
++ return 0;
++}
++
++static void do_catch_up(struct spk_synth *synth)
++{
++ u_char ch;
++ unsigned long flags;
++ unsigned long jiff_max;
++ int timeout;
++ int delay_time_val;
++ int jiffy_delta_val;
++ int full_time_val;
++ struct var_t *delay_time;
++ struct var_t *full_time;
++ struct var_t *jiffy_delta;
++
++ jiffy_delta = get_var(JIFFY);
++ delay_time = get_var(DELAY);
++ full_time = get_var(FULL);
++
++ spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ spk_unlock(flags);
++
++ jiff_max = jiffies + jiffy_delta_val;
++ while (!kthread_should_stop()) {
++ spk_lock(flags);
++ if (speakup_info.flushing) {
++ speakup_info.flushing = 0;
++ spk_unlock(flags);
++ synth->flush(synth);
++ continue;
++ }
++ if (synth_buffer_empty()) {
++ spk_unlock(flags);
++ break;
++ }
++ set_current_state(TASK_INTERRUPTIBLE);
++ full_time_val = full_time->u.n.value;
++ spk_unlock(flags);
++ if (synth_full()) {
++ schedule_timeout(msecs_to_jiffies(full_time_val));
++ continue;
++ }
++ set_current_state(TASK_RUNNING);
++ timeout = SPK_XMITR_TIMEOUT;
++ while (synth_writable()) {
++ if (!--timeout)
++ break;
++ udelay(1);
++ }
++ spk_lock(flags);
++ ch = synth_buffer_getc();
++ spk_unlock(flags);
++ if (ch == '\n')
++ ch = PROCSPEECH;
++ outb_p(ch, speakup_info.port_tts);
++ if (jiffies >= jiff_max && ch == SPACE) {
++ timeout = SPK_XMITR_TIMEOUT;
++ while (synth_writable()) {
++ if (!--timeout)
++ break;
++ udelay(1);
++ }
++ outb_p(PROCSPEECH, speakup_info.port_tts);
++ spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ delay_time_val = delay_time->u.n.value;
++ spk_unlock(flags);
++ schedule_timeout(msecs_to_jiffies(delay_time_val));
++ jiff_max = jiffies+jiffy_delta_val;
++ }
++ }
++ timeout = SPK_XMITR_TIMEOUT;
++ while (synth_writable()) {
++ if (!--timeout)
++ break;
++ udelay(1);
++ }
++ outb_p(PROCSPEECH, speakup_info.port_tts);
++}
++
++static void synth_flush(struct spk_synth *synth)
++{
++ outb_p(SYNTH_CLEAR, speakup_info.port_tts);
++}
++
++static int synth_probe(struct spk_synth *synth)
++{
++ unsigned int port_val = 0;
++ int i = 0;
++ pr_info("Probing for %s.\n", synth->long_name);
++ if (port_forced) {
++ speakup_info.port_tts = port_forced;
++ pr_info("probe forced to %x by kernel command line\n",
++ speakup_info.port_tts);
++ if (synth_request_region(speakup_info.port_tts-1,
++ SYNTH_IO_EXTENT)) {
++ pr_warn("sorry, port already reserved\n");
++ return -EBUSY;
++ }
++ port_val = inw(speakup_info.port_tts-1);
++ synth_port_control = speakup_info.port_tts-1;
++ } else {
++ for (i = 0; synth_portlist[i]; i++) {
++ if (synth_request_region(synth_portlist[i],
++ SYNTH_IO_EXTENT)) {
++ pr_warn("request_region: failed with 0x%x, %d\n",
++ synth_portlist[i], SYNTH_IO_EXTENT);
++ continue;
++ }
++ port_val = inw(synth_portlist[i]) & 0xfffc;
++ if (port_val == 0x53fc) {
++ /* 'S' and out&input bits */
++ synth_port_control = synth_portlist[i];
++ speakup_info.port_tts = synth_port_control+1;
++ break;
++ }
++ }
++ }
++ port_val &= 0xfffc;
++ if (port_val != 0x53fc) {
++ /* 'S' and out&input bits */
++ pr_info("%s: not found\n", synth->long_name);
++ synth_release_region(synth_portlist[i], SYNTH_IO_EXTENT);
++ synth_port_control = 0;
++ return -ENODEV;
++ }
++ pr_info("%s: %03x-%03x, driver version %s,\n", synth->long_name,
++ synth_port_control, synth_port_control+SYNTH_IO_EXTENT-1,
++ synth->version);
++ synth->alive = 1;
++ return 0;
++}
++
++static void accent_release(void)
++{
++ if (speakup_info.port_tts)
++ synth_release_region(speakup_info.port_tts-1, SYNTH_IO_EXTENT);
++ speakup_info.port_tts = 0;
++}
++
++module_param_named(port, port_forced, int, S_IRUGO);
++module_param_named(start, synth_acntpc.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(port, "Set the port for the synthesizer (override probing).");
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++static int __init acntpc_init(void)
++{
++ return synth_add(&synth_acntpc);
++}
++
++static void __exit acntpc_exit(void)
++{
++ synth_remove(&synth_acntpc);
++}
++
++module_init(acntpc_init);
++module_exit(acntpc_exit);
++MODULE_AUTHOR("Kirk Reiser <kirk@braille.uwo.ca>");
++MODULE_AUTHOR("David Borowski");
++MODULE_DESCRIPTION("Speakup support for Accent PC synthesizer");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/speakup_acntsa.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_acntsa.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,160 @@
++/*
++ * originally written by: Kirk Reiser <kirk@braille.uwo.ca>
++* this version considerably modified by David Borowski, david575@rogers.com
++ *
++ * Copyright (C) 1998-99 Kirk Reiser.
++ * Copyright (C) 2003 David Borowski.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * this code is specificly written as a driver for the speakup screenreview
++ * package and is not a general device driver.
++ */
++
++#include "spk_priv.h"
++#include "speakup.h"
++#include "speakup_acnt.h" /* local header file for Accent values */
++
++#define DRV_VERSION "2.10"
++#define synth_full() (inb_p(speakup_info.port_tts + UART_RX) == 'F')
++#define PROCSPEECH '\r'
++
++static int synth_probe(struct spk_synth *synth);
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"\033P8" }},
++ { CAPS_STOP, .u.s = {"\033P5" }},
++ { RATE, .u.n = {"\033R%c", 9, 0, 17, 0, 0, "0123456789abcdefgh" }},
++ { PITCH, .u.n = {"\033P%d", 5, 0, 9, 0, 0, NULL }},
++ { VOL, .u.n = {"\033A%d", 9, 0, 9, 0, 0, NULL }},
++ { TONE, .u.n = {"\033V%d", 5, 0, 9, 0, 0, NULL }},
++ V_LAST_VAR
++};
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/acntsa.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute tone_attribute =
++ __ATTR(tone, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute vol_attribute =
++ __ATTR(vol, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &pitch_attribute.attr,
++ &rate_attribute.attr,
++ &tone_attribute.attr,
++ &vol_attribute.attr,
++ &delay_time_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_acntsa = {
++ .name = "acntsa",
++ .version = DRV_VERSION,
++ .long_name = "Accent-SA",
++ .init = "\033T2\033=M\033Oi\033N1\n",
++ .procspeech = PROCSPEECH,
++ .clear = SYNTH_CLEAR,
++ .delay = 400,
++ .trigger = 50,
++ .jiffies = 30,
++ .full = 40000,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = synth_probe,
++ .release = spk_serial_release,
++ .synth_immediate = spk_synth_immediate,
++ .catch_up = spk_do_catch_up,
++ .flush = spk_synth_flush,
++ .is_alive = spk_synth_is_alive_restart,
++ .synth_adjust = NULL,
++ .read_buff_add = NULL,
++ .get_index = NULL,
++ .indexing = {
++ .command = NULL,
++ .lowindex = 0,
++ .highindex = 0,
++ .currindex = 0,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "acntsa",
++ },
++};
++
++static int synth_probe(struct spk_synth *synth)
++{
++ int failed;
++
++ failed = serial_synth_probe(synth);
++ if (failed == 0) {
++ spk_synth_immediate(synth, "\033=R\r");
++ mdelay(100);
++ }
++ synth->alive = !failed;
++ return failed;
++}
++
++module_param_named(ser, synth_acntsa.ser, int, S_IRUGO);
++module_param_named(start, synth_acntsa.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(ser, "Set the serial port for the synthesizer (0-based).");
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++static int __init acntsa_init(void)
++{
++ return synth_add(&synth_acntsa);
++}
++
++static void __exit acntsa_exit(void)
++{
++ synth_remove(&synth_acntsa);
++}
++
++module_init(acntsa_init);
++module_exit(acntsa_exit);
++MODULE_AUTHOR("Kirk Reiser <kirk@braille.uwo.ca>");
++MODULE_AUTHOR("David Borowski");
++MODULE_DESCRIPTION("Speakup support for Accent SA synthesizer");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/speakup_apollo.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_apollo.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,221 @@
++/*
++ * originally written by: Kirk Reiser <kirk@braille.uwo.ca>
++* this version considerably modified by David Borowski, david575@rogers.com
++ *
++ * Copyright (C) 1998-99 Kirk Reiser.
++ * Copyright (C) 2003 David Borowski.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * this code is specificly written as a driver for the speakup screenreview
++ * package and is not a general device driver.
++ */
++#include <linux/jiffies.h>
++#include <linux/sched.h>
++#include <linux/timer.h>
++#include <linux/kthread.h>
++
++#include "spk_priv.h"
++#include "serialio.h"
++#include "speakup.h"
++
++#define DRV_VERSION "2.20"
++#define SYNTH_CLEAR 0x18
++#define PROCSPEECH '\r'
++
++static void do_catch_up(struct spk_synth *synth);
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"cap, " }},
++ { CAPS_STOP, .u.s = {"" }},
++ { RATE, .u.n = {"@W%d", 6, 1, 9, 0, 0, NULL }},
++ { PITCH, .u.n = {"@F%x", 10, 0, 15, 0, 0, NULL }},
++ { VOL, .u.n = {"@A%x", 10, 0, 15, 0, 0, NULL }},
++ { VOICE, .u.n = {"@V%d", 1, 1, 6, 0, 0, NULL }},
++ { LANG, .u.n = {"@=%d,", 1, 1, 4, 0, 0, NULL }},
++ V_LAST_VAR
++};
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/apollo.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute lang_attribute =
++ __ATTR(lang, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute voice_attribute =
++ __ATTR(voice, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute vol_attribute =
++ __ATTR(vol, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &lang_attribute.attr,
++ &pitch_attribute.attr,
++ &rate_attribute.attr,
++ &voice_attribute.attr,
++ &vol_attribute.attr,
++ &delay_time_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_apollo = {
++ .name = "apollo",
++ .version = DRV_VERSION,
++ .long_name = "Apollo",
++ .init = "@R3@D0@K1\r",
++ .procspeech = PROCSPEECH,
++ .clear = SYNTH_CLEAR,
++ .delay = 500,
++ .trigger = 50,
++ .jiffies = 50,
++ .full = 40000,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = serial_synth_probe,
++ .release = spk_serial_release,
++ .synth_immediate = spk_synth_immediate,
++ .catch_up = do_catch_up,
++ .flush = spk_synth_flush,
++ .is_alive = spk_synth_is_alive_restart,
++ .synth_adjust = NULL,
++ .read_buff_add = NULL,
++ .get_index = NULL,
++ .indexing = {
++ .command = NULL,
++ .lowindex = 0,
++ .highindex = 0,
++ .currindex = 0,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "apollo",
++ },
++};
++
++static void do_catch_up(struct spk_synth *synth)
++{
++ u_char ch;
++ unsigned long flags;
++ unsigned long jiff_max;
++ struct var_t *jiffy_delta;
++ struct var_t *delay_time;
++ struct var_t *full_time;
++ int full_time_val = 0;
++ int delay_time_val = 0;
++ int jiffy_delta_val = 0;
++
++ jiffy_delta = get_var(JIFFY);
++ delay_time = get_var(DELAY);
++ full_time = get_var(FULL);
++ spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ spk_unlock(flags);
++ jiff_max = jiffies + jiffy_delta_val;
++
++ while (!kthread_should_stop()) {
++ spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ full_time_val = full_time->u.n.value;
++ delay_time_val = delay_time->u.n.value;
++ if (speakup_info.flushing) {
++ speakup_info.flushing = 0;
++ spk_unlock(flags);
++ synth->flush(synth);
++ continue;
++ }
++ if (synth_buffer_empty()) {
++ spk_unlock(flags);
++ break;
++ }
++ ch = synth_buffer_peek();
++ set_current_state(TASK_INTERRUPTIBLE);
++ full_time_val = full_time->u.n.value;
++ spk_unlock(flags);
++ if (!spk_serial_out(ch)) {
++ outb(UART_MCR_DTR, speakup_info.port_tts + UART_MCR);
++ outb(UART_MCR_DTR | UART_MCR_RTS,
++ speakup_info.port_tts + UART_MCR);
++ schedule_timeout(msecs_to_jiffies(full_time_val));
++ continue;
++ }
++ if ((jiffies >= jiff_max) && (ch == SPACE)) {
++ spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ full_time_val = full_time->u.n.value;
++ delay_time_val = delay_time->u.n.value;
++ spk_unlock(flags);
++ if (spk_serial_out(synth->procspeech))
++ schedule_timeout(msecs_to_jiffies(delay_time_val));
++ else
++ schedule_timeout(msecs_to_jiffies(full_time_val));
++ jiff_max = jiffies + jiffy_delta_val;
++ }
++ set_current_state(TASK_RUNNING);
++ spk_lock(flags);
++ synth_buffer_getc();
++ spk_unlock(flags);
++ }
++ spk_serial_out(PROCSPEECH);
++}
++
++module_param_named(ser, synth_apollo.ser, int, S_IRUGO);
++module_param_named(start, synth_apollo.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(ser, "Set the serial port for the synthesizer (0-based).");
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++static int __init apollo_init(void)
++{
++ return synth_add(&synth_apollo);
++}
++
++static void __exit apollo_exit(void)
++{
++ synth_remove(&synth_apollo);
++}
++
++module_init(apollo_init);
++module_exit(apollo_exit);
++MODULE_AUTHOR("Kirk Reiser <kirk@braille.uwo.ca>");
++MODULE_AUTHOR("David Borowski");
++MODULE_DESCRIPTION("Speakup support for Apollo II synthesizer");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/speakup_audptr.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_audptr.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,191 @@
++/*
++ * originally written by: Kirk Reiser <kirk@braille.uwo.ca>
++ * this version considerably modified by David Borowski, david575@rogers.com
++ *
++ * Copyright (C) 1998-99 Kirk Reiser.
++ * Copyright (C) 2003 David Borowski.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * specificly written as a driver for the speakup screenreview
++ * s not a general device driver.
++ */
++#include "spk_priv.h"
++#include "speakup.h"
++#include "serialio.h"
++
++#define DRV_VERSION "2.10"
++#define SYNTH_CLEAR 0x18 /* flush synth buffer */
++#define PROCSPEECH '\r' /* start synth processing speech char */
++
++static int synth_probe(struct spk_synth *synth);
++static void synth_flush(struct spk_synth *synth);
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"\x05[f99]" }},
++ { CAPS_STOP, .u.s = {"\x05[f80]" }},
++ { RATE, .u.n = {"\x05[r%d]", 10, 0, 20, 100, -10, NULL }},
++ { PITCH, .u.n = {"\x05[f%d]", 80, 39, 4500, 0, 0, NULL }},
++ { VOL, .u.n = {"\x05[g%d]", 21, 0, 40, 0, 0, NULL }},
++ { TONE, .u.n = {"\x05[s%d]", 9, 0, 63, 0, 0, 0 }},
++ { PUNCT, .u.n = {"\x05[A%c]", 0, 0, 3, 0, 0, "nmsa" }},
++ V_LAST_VAR
++};
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/audptr.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute punct_attribute =
++ __ATTR(punct, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute tone_attribute =
++ __ATTR(tone, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute vol_attribute =
++ __ATTR(vol, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &pitch_attribute.attr,
++ &punct_attribute.attr,
++ &rate_attribute.attr,
++ &tone_attribute.attr,
++ &vol_attribute.attr,
++ &delay_time_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_audptr = {
++ .name = "audptr",
++ .version = DRV_VERSION,
++ .long_name = "Audapter",
++ .init = "\x05[D1]\x05[Ol]",
++ .procspeech = PROCSPEECH,
++ .clear = SYNTH_CLEAR,
++ .delay = 400,
++ .trigger = 50,
++ .jiffies = 30,
++ .full = 18000,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = synth_probe,
++ .release = spk_serial_release,
++ .synth_immediate = spk_synth_immediate,
++ .catch_up = spk_do_catch_up,
++ .flush = synth_flush,
++ .is_alive = spk_synth_is_alive_restart,
++ .synth_adjust = NULL,
++ .read_buff_add = NULL,
++ .get_index = NULL,
++ .indexing = {
++ .command = NULL,
++ .lowindex = 0,
++ .highindex = 0,
++ .currindex = 0,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "audptr",
++ },
++};
++
++static void synth_flush(struct spk_synth *synth)
++{
++ int timeout = SPK_XMITR_TIMEOUT;
++ while (spk_serial_tx_busy()) {
++ if (!--timeout)
++ break;
++ udelay(1);
++ }
++ outb(SYNTH_CLEAR, speakup_info.port_tts);
++ spk_serial_out(PROCSPEECH);
++}
++
++static void synth_version(struct spk_synth *synth)
++{
++ unsigned char test = 0;
++ char synth_id[40] = "";
++ spk_synth_immediate(synth, "\x05[Q]");
++ synth_id[test] = spk_serial_in();
++ if (synth_id[test] == 'A') {
++ do {
++ /* read version string from synth */
++ synth_id[++test] = spk_serial_in();
++ } while (synth_id[test] != '\n' && test < 32);
++ synth_id[++test] = 0x00;
++ }
++ if (synth_id[0] == 'A')
++ pr_info("%s version: %s", synth->long_name, synth_id);
++}
++
++static int synth_probe(struct spk_synth *synth)
++{
++ int failed = 0;
++
++ failed = serial_synth_probe(synth);
++ if (failed == 0)
++ synth_version(synth);
++ synth->alive = !failed;
++ return 0;
++}
++
++module_param_named(ser, synth_audptr.ser, int, S_IRUGO);
++module_param_named(start, synth_audptr.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(ser, "Set the serial port for the synthesizer (0-based).");
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++static int __init audptr_init(void)
++{
++ return synth_add(&synth_audptr);
++}
++
++static void __exit audptr_exit(void)
++{
++ synth_remove(&synth_audptr);
++}
++
++module_init(audptr_init);
++module_exit(audptr_exit);
++MODULE_AUTHOR("Kirk Reiser <kirk@braille.uwo.ca>");
++MODULE_AUTHOR("David Borowski");
++MODULE_DESCRIPTION("Speakup support for Audapter synthesizer");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/speakup_bns.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_bns.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,143 @@
++/*
++ * originally written by: Kirk Reiser <kirk@braille.uwo.ca>
++* this version considerably modified by David Borowski, david575@rogers.com
++ *
++ * Copyright (C) 1998-99 Kirk Reiser.
++ * Copyright (C) 2003 David Borowski.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * this code is specificly written as a driver for the speakup screenreview
++ * package and is not a general device driver.
++ */
++#include "spk_priv.h"
++#include "speakup.h"
++
++#define DRV_VERSION "2.10"
++#define SYNTH_CLEAR 0x18
++#define PROCSPEECH '\r'
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"\x05\x31\x32P" }},
++ { CAPS_STOP, .u.s = {"\x05\x38P" }},
++ { RATE, .u.n = {"\x05%dE", 8, 1, 16, 0, 0, NULL }},
++ { PITCH, .u.n = {"\x05%dP", 8, 0, 16, 0, 0, NULL }},
++ { VOL, .u.n = {"\x05%dV", 8, 0, 16, 0, 0, NULL }},
++ { TONE, .u.n = {"\x05%dT", 8, 0, 16, 0, 0, NULL }},
++ V_LAST_VAR
++};
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/bns.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute tone_attribute =
++ __ATTR(tone, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute vol_attribute =
++ __ATTR(vol, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &pitch_attribute.attr,
++ &rate_attribute.attr,
++ &tone_attribute.attr,
++ &vol_attribute.attr,
++ &delay_time_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_bns = {
++ .name = "bns",
++ .version = DRV_VERSION,
++ .long_name = "Braille 'N Speak",
++ .init = "\x05Z\x05\x43",
++ .procspeech = PROCSPEECH,
++ .clear = SYNTH_CLEAR,
++ .delay = 500,
++ .trigger = 50,
++ .jiffies = 50,
++ .full = 40000,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = serial_synth_probe,
++ .release = spk_serial_release,
++ .synth_immediate = spk_synth_immediate,
++ .catch_up = spk_do_catch_up,
++ .flush = spk_synth_flush,
++ .is_alive = spk_synth_is_alive_restart,
++ .synth_adjust = NULL,
++ .read_buff_add = NULL,
++ .get_index = NULL,
++ .indexing = {
++ .command = NULL,
++ .lowindex = 0,
++ .highindex = 0,
++ .currindex = 0,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "bns",
++ },
++};
++
++module_param_named(ser, synth_bns.ser, int, S_IRUGO);
++module_param_named(start, synth_bns.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(ser, "Set the serial port for the synthesizer (0-based).");
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++static int __init bns_init(void)
++{
++ return synth_add(&synth_bns);
++}
++
++static void __exit bns_exit(void)
++{
++ synth_remove(&synth_bns);
++}
++
++module_init(bns_init);
++module_exit(bns_exit);
++MODULE_AUTHOR("Kirk Reiser <kirk@braille.uwo.ca>");
++MODULE_AUTHOR("David Borowski");
++MODULE_DESCRIPTION("Speakup support for Braille 'n Speak synthesizers");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/speakup_decext.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_decext.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,238 @@
++/*
++ * originally written by: Kirk Reiser <kirk@braille.uwo.ca>
++* this version considerably modified by David Borowski, david575@rogers.com
++ *
++ * Copyright (C) 1998-99 Kirk Reiser.
++ * Copyright (C) 2003 David Borowski.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * specificly written as a driver for the speakup screenreview
++ * s not a general device driver.
++ */
++#include <linux/jiffies.h>
++#include <linux/sched.h>
++#include <linux/timer.h>
++#include <linux/kthread.h>
++
++#include "spk_priv.h"
++#include "serialio.h"
++#include "speakup.h"
++
++#define DRV_VERSION "2.13"
++#define SYNTH_CLEAR 0x03
++#define PROCSPEECH 0x0b
++static unsigned char last_char;
++#define get_last_char() ((inb_p(speakup_info.port_tts + UART_LSR) & UART_LSR_DR)? \
++ (last_char = inb_p(speakup_info.port_tts + UART_RX)) : last_char)
++#define synth_full() (get_last_char() == 0x13)
++
++static void do_catch_up(struct spk_synth *synth);
++static void synth_flush(struct spk_synth *synth);
++
++static int in_escape;
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"[:dv ap 222]" }},
++ { CAPS_STOP, .u.s = {"[:dv ap 100]" }},
++ { RATE, .u.n = {"[:ra %d]", 7, 0, 9, 150, 25, NULL }},
++ { PITCH, .u.n = {"[:dv ap %d]", 100, 0, 100, 0, 0, NULL }},
++ { VOL, .u.n = {"[:dv gv %d]", 13, 0, 16, 0, 5, NULL }},
++ { PUNCT, .u.n = {"[:pu %c]", 0, 0, 2, 0, 0, "nsa" }},
++ { VOICE, .u.n = {"[:n%c]", 0, 0, 9, 0, 0, "phfdburwkv" }},
++ V_LAST_VAR
++};
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/decext.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute punct_attribute =
++ __ATTR(punct, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute voice_attribute =
++ __ATTR(voice, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute vol_attribute =
++ __ATTR(vol, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &pitch_attribute.attr,
++ &punct_attribute.attr,
++ &rate_attribute.attr,
++ &voice_attribute.attr,
++ &vol_attribute.attr,
++ &delay_time_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_decext = {
++ .name = "decext",
++ .version = DRV_VERSION,
++ .long_name = "Dectalk External",
++ .init = "[:pe -380]",
++ .procspeech = PROCSPEECH,
++ .clear = SYNTH_CLEAR,
++ .delay = 500,
++ .trigger = 50,
++ .jiffies = 50,
++ .full = 40000,
++ .flags = SF_DEC,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = serial_synth_probe,
++ .release = spk_serial_release,
++ .synth_immediate = spk_synth_immediate,
++ .catch_up = do_catch_up,
++ .flush = synth_flush,
++ .is_alive = spk_synth_is_alive_restart,
++ .synth_adjust = NULL,
++ .read_buff_add = NULL,
++ .get_index = NULL,
++ .indexing = {
++ .command = NULL,
++ .lowindex = 0,
++ .highindex = 0,
++ .currindex = 0,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "decext",
++ },
++};
++
++static void do_catch_up(struct spk_synth *synth)
++{
++ u_char ch;
++ static u_char last = '\0';
++ unsigned long flags;
++ unsigned long jiff_max;
++ struct var_t *jiffy_delta;
++ struct var_t *delay_time;
++ int jiffy_delta_val = 0;
++ int delay_time_val = 0;
++
++ jiffy_delta = get_var(JIFFY);
++ delay_time = get_var(DELAY);
++
++ spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ spk_unlock(flags);
++ jiff_max = jiffies + jiffy_delta_val;
++
++ while (!kthread_should_stop()) {
++ spk_lock(flags);
++ if (speakup_info.flushing) {
++ speakup_info.flushing = 0;
++ spk_unlock(flags);
++ synth->flush(synth);
++ continue;
++ }
++ if (synth_buffer_empty()) {
++ spk_unlock(flags);
++ break;
++ }
++ ch = synth_buffer_peek();
++ set_current_state(TASK_INTERRUPTIBLE);
++ delay_time_val = delay_time->u.n.value;
++ spk_unlock(flags);
++ if (ch == '\n')
++ ch = 0x0D;
++ if (synth_full() || !spk_serial_out(ch)) {
++ schedule_timeout(msecs_to_jiffies(delay_time_val));
++ continue;
++ }
++ set_current_state(TASK_RUNNING);
++ spk_lock(flags);
++ synth_buffer_getc();
++ spk_unlock(flags);
++ if (ch == '[')
++ in_escape = 1;
++ else if (ch == ']')
++ in_escape = 0;
++ else if (ch <= SPACE) {
++ if (!in_escape && strchr(",.!?;:", last))
++ spk_serial_out(PROCSPEECH);
++ if (jiffies >= jiff_max) {
++ if ( ! in_escape )
++ spk_serial_out(PROCSPEECH);
++ spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ delay_time_val = delay_time->u.n.value;
++ spk_unlock(flags);
++ schedule_timeout(msecs_to_jiffies(delay_time_val));
++ jiff_max = jiffies + jiffy_delta_val;
++ }
++ }
++ last = ch;
++ }
++ if (!in_escape)
++ spk_serial_out(PROCSPEECH);
++}
++
++static void synth_flush(struct spk_synth *synth)
++{
++ in_escape = 0;
++ spk_synth_immediate(synth, "\033P;10z\033\\");
++}
++
++module_param_named(ser, synth_decext.ser, int, S_IRUGO);
++module_param_named(start, synth_decext.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(ser, "Set the serial port for the synthesizer (0-based).");
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++static int __init decext_init(void)
++{
++ return synth_add(&synth_decext);
++}
++
++static void __exit decext_exit(void)
++{
++ synth_remove(&synth_decext);
++}
++
++module_init(decext_init);
++module_exit(decext_exit);
++MODULE_AUTHOR("Kirk Reiser <kirk@braille.uwo.ca>");
++MODULE_AUTHOR("David Borowski");
++MODULE_DESCRIPTION("Speakup support for DECtalk External synthesizers");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/speakup_dectlk.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_dectlk.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,306 @@
++/*
++ * originally written by: Kirk Reiser <kirk@braille.uwo.ca>
++ * this version considerably modified by David Borowski, david575@rogers.com
++ *
++ * Copyright (C) 1998-99 Kirk Reiser.
++ * Copyright (C) 2003 David Borowski.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * specificly written as a driver for the speakup screenreview
++ * s not a general device driver.
++ */
++#include <linux/unistd.h>
++#include <linux/proc_fs.h>
++#include <linux/jiffies.h>
++#include <linux/spinlock.h>
++#include <linux/sched.h>
++#include <linux/timer.h>
++#include <linux/kthread.h>
++#include "speakup.h"
++#include "spk_priv.h"
++#include "serialio.h"
++
++#define DRV_VERSION "2.15"
++#define SYNTH_CLEAR 0x03
++#define PROCSPEECH 0x0b
++static volatile int xoff;
++#define synth_full() (xoff)
++
++static void do_catch_up(struct spk_synth *synth);
++static void synth_flush(struct spk_synth *synth);
++static void read_buff_add(u_char c);
++static unsigned char get_index(void);
++
++static int in_escape;
++static int is_flushing;
++
++static spinlock_t flush_lock;
++static DECLARE_WAIT_QUEUE_HEAD(flush);
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"[:dv ap 200]" }},
++ { CAPS_STOP, .u.s = {"[:dv ap 100]" }},
++ { RATE, .u.n = {"[:ra %d]", 9, 0, 18, 150, 25, NULL }},
++ { PITCH, .u.n = {"[:dv ap %d]", 80, 0, 200, 20, 0, NULL }},
++ { VOL, .u.n = {"[:dv gv %d]", 13, 0, 14, 0, 5, NULL }},
++ { PUNCT, .u.n = {"[:pu %c]", 0, 0, 2, 0, 0, "nsa" }},
++ { VOICE, .u.n = {"[:n%c]", 0, 0, 9, 0, 0, "phfdburwkv" }},
++ V_LAST_VAR
++};
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/dectlk.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute punct_attribute =
++ __ATTR(punct, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute voice_attribute =
++ __ATTR(voice, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute vol_attribute =
++ __ATTR(vol, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &pitch_attribute.attr,
++ &punct_attribute.attr,
++ &rate_attribute.attr,
++ &voice_attribute.attr,
++ &vol_attribute.attr,
++ &delay_time_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_dectlk = {
++ .name = "dectlk",
++ .version = DRV_VERSION,
++ .long_name = "Dectalk Express",
++ .init = "[:dv ap 100][:error sp]",
++ .procspeech = PROCSPEECH,
++ .clear = SYNTH_CLEAR,
++ .delay = 500,
++ .trigger = 50,
++ .jiffies = 50,
++ .full = 40000,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = serial_synth_probe,
++ .release = spk_serial_release,
++ .synth_immediate = spk_synth_immediate,
++ .catch_up = do_catch_up,
++ .flush = synth_flush,
++ .is_alive = spk_synth_is_alive_restart,
++ .synth_adjust = NULL,
++ .read_buff_add = read_buff_add,
++ .get_index = get_index,
++ .indexing = {
++ .command = "[:in re %d] ",
++ .lowindex = 1,
++ .highindex = 8,
++ .currindex = 1,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "dectlk",
++ },
++};
++
++static int is_indnum(u_char *ch)
++{
++ if ((*ch >= '0') && (*ch <= '9')) {
++ *ch = *ch - '0';
++ return 1;
++ }
++ return 0;
++}
++
++static u_char lastind = 0;
++
++static unsigned char get_index(void)
++{
++ u_char rv;
++ rv = lastind;
++ lastind = 0;
++ return rv;
++}
++
++static void read_buff_add(u_char c)
++{
++ static int ind = -1;
++
++ if (c == 0x01) {
++ unsigned long flags;
++ spin_lock_irqsave(&flush_lock, flags);
++ is_flushing = 0;
++ wake_up_interruptible(&flush);
++ spin_unlock_irqrestore(&flush_lock, flags);
++ } else if (c == 0x13) {
++ xoff = 1;
++ } else if (c == 0x11) {
++ xoff = 0;
++ } else if (is_indnum(&c)) {
++ if (ind == -1)
++ ind = c;
++ else
++ ind = ind * 10 + c;
++ } else if ((c > 31) && (c < 127)) {
++ if (ind != -1)
++ lastind = (u_char)ind;
++ ind = -1;
++ }
++}
++
++static void do_catch_up(struct spk_synth *synth)
++{
++ static u_char ch = 0;
++ static u_char last = '\0';
++ unsigned long flags;
++ unsigned long jiff_max;
++ unsigned long timeout = msecs_to_jiffies(4000);
++ DEFINE_WAIT(wait);
++ struct var_t *jiffy_delta;
++ struct var_t *delay_time;
++ int jiffy_delta_val;
++ int delay_time_val;
++
++ jiffy_delta = get_var(JIFFY);
++ delay_time = get_var(DELAY);
++ spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ spk_unlock(flags);
++ jiff_max = jiffies + jiffy_delta_val;
++
++ while (!kthread_should_stop()) {
++ /* if no ctl-a in 4, send data anyway */
++ spin_lock_irqsave(&flush_lock, flags);
++ while (is_flushing && timeout) {
++ prepare_to_wait(&flush, &wait, TASK_INTERRUPTIBLE);
++ spin_unlock_irqrestore(&flush_lock, flags);
++ timeout = schedule_timeout(timeout);
++ spin_lock_irqsave(&flush_lock, flags);
++ }
++ finish_wait(&flush, &wait);
++ is_flushing = 0;
++ spin_unlock_irqrestore(&flush_lock, flags);
++
++ spk_lock(flags);
++ if (speakup_info.flushing) {
++ speakup_info.flushing = 0;
++ spk_unlock(flags);
++ synth->flush(synth);
++ continue;
++ }
++ if (synth_buffer_empty()) {
++ spk_unlock(flags);
++ break;
++ }
++ ch = synth_buffer_peek();
++ set_current_state(TASK_INTERRUPTIBLE);
++ delay_time_val = delay_time->u.n.value;
++ spk_unlock(flags);
++ if (ch == '\n')
++ ch = 0x0D;
++ if (synth_full() || !spk_serial_out(ch)) {
++ schedule_timeout(msecs_to_jiffies(delay_time_val));
++ continue;
++ }
++ set_current_state(TASK_RUNNING);
++ spk_lock(flags);
++ synth_buffer_getc();
++ spk_unlock(flags);
++ if (ch == '[')
++ in_escape = 1;
++ else if (ch == ']')
++ in_escape = 0;
++ else if (ch <= SPACE) {
++ if (!in_escape && strchr(",.!?;:", last))
++ spk_serial_out(PROCSPEECH);
++ if (jiffies >= jiff_max) {
++ if ( ! in_escape )
++ spk_serial_out(PROCSPEECH);
++ spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ delay_time_val = delay_time->u.n.value;
++ spk_unlock(flags);
++ schedule_timeout(msecs_to_jiffies(delay_time_val));
++ jiff_max = jiffies + jiffy_delta_val;
++ }
++ }
++ last = ch;
++ }
++ if (!in_escape)
++ spk_serial_out(PROCSPEECH);
++}
++
++static void synth_flush(struct spk_synth *synth)
++{
++ if (in_escape) {
++ /* if in command output ']' so we don't get an error */
++ spk_serial_out(']');
++ }
++ in_escape = 0;
++ is_flushing = 1;
++ spk_serial_out(SYNTH_CLEAR);
++}
++
++module_param_named(ser, synth_dectlk.ser, int, S_IRUGO);
++module_param_named(start, synth_dectlk.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(ser, "Set the serial port for the synthesizer (0-based).");
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++static int __init dectlk_init(void)
++{
++ return synth_add(&synth_dectlk);
++}
++
++static void __exit dectlk_exit(void)
++{
++ synth_remove(&synth_dectlk);
++}
++
++module_init(dectlk_init);
++module_exit(dectlk_exit);
++MODULE_AUTHOR("Kirk Reiser <kirk@braille.uwo.ca>");
++MODULE_AUTHOR("David Borowski");
++MODULE_DESCRIPTION("Speakup support for DECtalk Express synthesizers");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/speakup_dtlk.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_dtlk.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,379 @@
++/*
++ * originally written by: Kirk Reiser <kirk@braille.uwo.ca>
++* this version considerably modified by David Borowski, david575@rogers.com
++ *
++ * Copyright (C) 1998-99 Kirk Reiser.
++ * Copyright (C) 2003 David Borowski.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * specificly written as a driver for the speakup screenreview
++ * package it's not a general device driver.
++ * This driver is for the RC Systems DoubleTalk PC internal synthesizer.
++ */
++#include <linux/jiffies.h>
++#include <linux/sched.h>
++#include <linux/timer.h>
++#include <linux/kthread.h>
++
++#include "spk_priv.h"
++#include "serialio.h"
++#include "speakup_dtlk.h" /* local header file for DoubleTalk values */
++#include "speakup.h"
++
++#define DRV_VERSION "2.9"
++#define PROCSPEECH 0x00
++#define synth_readable() ((synth_status = inb_p(speakup_info.port_tts + UART_RX)) & TTS_READABLE)
++#define synth_writable() ((synth_status = inb_p(speakup_info.port_tts + UART_RX)) & TTS_WRITABLE)
++#define synth_full() ((synth_status = inb_p(speakup_info.port_tts + UART_RX)) & TTS_ALMOST_FULL)
++
++static int synth_probe(struct spk_synth *synth);
++static void dtlk_release(void);
++static const char *synth_immediate(struct spk_synth *synth, const char *buf);
++static void do_catch_up(struct spk_synth *synth);
++static void synth_flush(struct spk_synth *synth);
++
++static int synth_lpc;
++static int port_forced;
++static unsigned int synth_portlist[] =
++ { 0x25e, 0x29e, 0x2de, 0x31e, 0x35e, 0x39e, 0 };
++static u_char synth_status;
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"\x01+35p" }},
++ { CAPS_STOP, .u.s = {"\x01-35p" }},
++ { RATE, .u.n = {"\x01%ds", 8, 0, 9, 0, 0, NULL }},
++ { PITCH, .u.n = {"\x01%dp", 50, 0, 99, 0, 0, NULL }},
++ { VOL, .u.n = {"\x01%dv", 5, 0, 9, 0, 0, NULL }},
++ { TONE, .u.n = {"\x01%dx", 1, 0, 2, 0, 0, NULL }},
++ { PUNCT, .u.n = {"\x01%db", 7, 0, 15, 0, 0, NULL }},
++ { VOICE, .u.n = {"\x01%do", 0, 0, 7, 0, 0, NULL }},
++ { FREQUENCY, .u.n = {"\x01%df", 5, 0, 9, 0, 0, NULL }},
++ V_LAST_VAR
++};
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/dtlk.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute freq_attribute =
++ __ATTR(freq, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute punct_attribute =
++ __ATTR(punct, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute tone_attribute =
++ __ATTR(tone, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute voice_attribute =
++ __ATTR(voice, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute vol_attribute =
++ __ATTR(vol, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &freq_attribute.attr,
++ &pitch_attribute.attr,
++ &punct_attribute.attr,
++ &rate_attribute.attr,
++ &tone_attribute.attr,
++ &voice_attribute.attr,
++ &vol_attribute.attr,
++ &delay_time_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_dtlk = {
++ .name = "dtlk",
++ .version = DRV_VERSION,
++ .long_name = "DoubleTalk PC",
++ .init = "\x01@\x01\x31y",
++ .procspeech = PROCSPEECH,
++ .clear = SYNTH_CLEAR,
++ .delay = 500,
++ .trigger = 30,
++ .jiffies = 50,
++ .full = 1000,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = synth_probe,
++ .release = dtlk_release,
++ .synth_immediate = synth_immediate,
++ .catch_up = do_catch_up,
++ .flush = synth_flush,
++ .is_alive = spk_synth_is_alive_nop,
++ .synth_adjust = NULL,
++ .read_buff_add = NULL,
++ .get_index = spk_serial_in_nowait,
++ .indexing = {
++ .command = "\x01%di",
++ .lowindex = 1,
++ .highindex = 5,
++ .currindex = 1,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "dtlk",
++ },
++};
++
++static void spk_out(const char ch)
++{
++ int timeout = SPK_XMITR_TIMEOUT;
++ while (synth_writable() == 0) {
++ if (!--timeout)
++ break;
++ udelay(1);
++ }
++ outb_p(ch, speakup_info.port_tts);
++ timeout = SPK_XMITR_TIMEOUT;
++ while (synth_writable() != 0) {
++ if (!--timeout)
++ break;
++ udelay(1);
++ }
++}
++
++static void do_catch_up(struct spk_synth *synth)
++{
++ u_char ch;
++ unsigned long flags;
++ unsigned long jiff_max;
++ struct var_t *jiffy_delta;
++ struct var_t *delay_time;
++ int jiffy_delta_val;
++ int delay_time_val;
++
++ jiffy_delta = get_var(JIFFY);
++ delay_time = get_var(DELAY);
++ spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ spk_unlock(flags);
++ jiff_max = jiffies + jiffy_delta_val;
++ while (!kthread_should_stop()) {
++ spk_lock(flags);
++ if (speakup_info.flushing) {
++ speakup_info.flushing = 0;
++ spk_unlock(flags);
++ synth->flush(synth);
++ continue;
++ }
++ if (synth_buffer_empty()) {
++ spk_unlock(flags);
++ break;
++ }
++ set_current_state(TASK_INTERRUPTIBLE);
++ delay_time_val = delay_time->u.n.value;
++ spk_unlock(flags);
++ if (synth_full()) {
++ schedule_timeout(msecs_to_jiffies(delay_time_val));
++ continue;
++ }
++ set_current_state(TASK_RUNNING);
++ spk_lock(flags);
++ ch = synth_buffer_getc();
++ spk_unlock(flags);
++ if (ch == '\n')
++ ch = PROCSPEECH;
++ spk_out(ch);
++ if ((jiffies >= jiff_max) && (ch == SPACE)) {
++ spk_out(PROCSPEECH);
++ spk_lock(flags);
++ delay_time_val = delay_time->u.n.value;
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ spk_unlock(flags);
++ schedule_timeout(msecs_to_jiffies(delay_time_val));
++ jiff_max = jiffies + jiffy_delta_val;
++ }
++ }
++ spk_out(PROCSPEECH);
++}
++
++static const char *synth_immediate(struct spk_synth *synth, const char *buf)
++{
++ u_char ch;
++ while ((ch = (u_char)*buf)) {
++ if (synth_full())
++ return buf;
++ if (ch == '\n')
++ ch = PROCSPEECH;
++ spk_out(ch);
++ buf++;
++ }
++ return 0;
++}
++
++static void synth_flush(struct spk_synth *synth)
++{
++ outb_p(SYNTH_CLEAR, speakup_info.port_tts);
++ while (synth_writable() != 0)
++ cpu_relax();
++}
++
++static char synth_read_tts(void)
++{
++ u_char ch;
++ while (synth_readable() == 0)
++ cpu_relax();
++ ch = synth_status & 0x7f;
++ outb_p(ch, speakup_info.port_tts);
++ while (synth_readable() != 0)
++ cpu_relax();
++ return (char) ch;
++}
++
++/* interrogate the DoubleTalk PC and return its settings */
++static struct synth_settings *synth_interrogate(struct spk_synth *synth)
++{
++ u_char *t;
++ static char buf[sizeof(struct synth_settings) + 1];
++ int total, i;
++ static struct synth_settings status;
++ synth_immediate(synth, "\x18\x01?");
++ for (total = 0, i = 0; i < 50; i++) {
++ buf[total] = synth_read_tts();
++ if (total > 2 && buf[total] == 0x7f)
++ break;
++ if (total < sizeof(struct synth_settings))
++ total++;
++ }
++ t = buf;
++ /* serial number is little endian */
++ status.serial_number = t[0] + t[1]*256;
++ t += 2;
++ for (i = 0; *t != '\r'; t++) {
++ status.rom_version[i] = *t;
++ if (i < sizeof(status.rom_version)-1)
++ i++;
++ }
++ status.rom_version[i] = 0;
++ t++;
++ status.mode = *t++;
++ status.punc_level = *t++;
++ status.formant_freq = *t++;
++ status.pitch = *t++;
++ status.speed = *t++;
++ status.volume = *t++;
++ status.tone = *t++;
++ status.expression = *t++;
++ status.ext_dict_loaded = *t++;
++ status.ext_dict_status = *t++;
++ status.free_ram = *t++;
++ status.articulation = *t++;
++ status.reverb = *t++;
++ status.eob = *t++;
++ return &status;
++}
++
++static int synth_probe(struct spk_synth *synth)
++{
++ unsigned int port_val = 0;
++ int i = 0;
++ struct synth_settings *sp;
++ pr_info("Probing for DoubleTalk.\n");
++ if (port_forced) {
++ speakup_info.port_tts = port_forced;
++ pr_info("probe forced to %x by kernel command line\n",
++ speakup_info.port_tts);
++ if (synth_request_region(speakup_info.port_tts-1,
++ SYNTH_IO_EXTENT)) {
++ pr_warn("sorry, port already reserved\n");
++ return -EBUSY;
++ }
++ port_val = inw(speakup_info.port_tts-1);
++ synth_lpc = speakup_info.port_tts-1;
++ } else {
++ for (i = 0; synth_portlist[i]; i++) {
++ if (synth_request_region(synth_portlist[i],
++ SYNTH_IO_EXTENT))
++ continue;
++ port_val = inw(synth_portlist[i]) & 0xfbff;
++ if (port_val == 0x107f) {
++ synth_lpc = synth_portlist[i];
++ speakup_info.port_tts = synth_lpc+1;
++ break;
++ }
++ synth_release_region(synth_portlist[i],
++ SYNTH_IO_EXTENT);
++ }
++ }
++ port_val &= 0xfbff;
++ if (port_val != 0x107f) {
++ pr_info("DoubleTalk PC: not found\n");
++ return -ENODEV;
++ }
++ while (inw_p(synth_lpc) != 0x147f)
++ cpu_relax(); /* wait until it's ready */
++ sp = synth_interrogate(synth);
++ pr_info("%s: %03x-%03x, ROM ver %s, s/n %u, driver: %s\n",
++ synth->long_name, synth_lpc, synth_lpc+SYNTH_IO_EXTENT - 1,
++ sp->rom_version, sp->serial_number, synth->version);
++ synth->alive = 1;
++ return 0;
++}
++
++static void dtlk_release(void)
++{
++ if (speakup_info.port_tts)
++ synth_release_region(speakup_info.port_tts-1, SYNTH_IO_EXTENT);
++ speakup_info.port_tts = 0;
++}
++
++module_param_named(port, port_forced, int, S_IRUGO);
++module_param_named(start, synth_dtlk.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(port, "Set the port for the synthesizer (override probing).");
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++static int __init dtlk_init(void)
++{
++ return synth_add(&synth_dtlk);
++}
++
++static void __exit dtlk_exit(void)
++{
++ synth_remove(&synth_dtlk);
++}
++
++module_init(dtlk_init);
++module_exit(dtlk_exit);
++MODULE_AUTHOR("Kirk Reiser <kirk@braille.uwo.ca>");
++MODULE_AUTHOR("David Borowski");
++MODULE_DESCRIPTION("Speakup support for DoubleTalk PC synthesizers");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/speakup_dtlk.h 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_dtlk.h 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,54 @@
++/* speakup_dtlk.h - header file for speakups DoubleTalk driver. */
++
++#define SYNTH_IO_EXTENT 0x02
++#define SYNTH_CLEAR 0x18 /* stops speech */
++ /* TTS Port Status Flags */
++#define TTS_READABLE 0x80 /* mask for bit which is nonzero if a
++ byte can be read from the TTS port */
++#define TTS_SPEAKING 0x40 /* mask for SYNC bit, which is nonzero
++ while DoubleTalk is producing
++ output with TTS, PCM or CVSD
++ synthesizers or tone generators
++ (that is, all but LPC) */
++#define TTS_SPEAKING2 0x20 /* mask for SYNC2 bit,
++ which falls to zero up to 0.4 sec
++ before speech stops */
++#define TTS_WRITABLE 0x10 /* mask for RDY bit, which when set to
++ 1, indicates the TTS port is ready
++ to accept a byte of data. The RDY
++ bit goes zero 2-3 usec after
++ writing, and goes 1 again 180-190
++ usec later. */
++#define TTS_ALMOST_FULL 0x08 /* mask for AF bit: When set to 1,
++ indicates that less than 300 bytes
++ are available in the TTS input
++ buffer. AF is always 0 in the PCM,
++ TGN and CVSD modes. */
++#define TTS_ALMOST_EMPTY 0x04 /* mask for AE bit: When set to 1,
++ indicates that less than 300 bytes
++ are remaining in DoubleTalk's input
++ (TTS or PCM) buffer. AE is always 1
++ in the TGN and CVSD modes. */
++
++ /* data returned by Interrogate command */
++struct synth_settings {
++ u_short serial_number; /* 0-7Fh:0-7Fh */
++ u_char rom_version[24]; /* null terminated string */
++ u_char mode; /* 0=Character; 1=Phoneme; 2=Text */
++ u_char punc_level; /* nB; 0-7 */
++ u_char formant_freq; /* nF; 0-9 */
++ u_char pitch; /* nP; 0-99 */
++ u_char speed; /* nS; 0-9 */
++ u_char volume; /* nV; 0-9 */
++ u_char tone; /* nX; 0-2 */
++ u_char expression; /* nE; 0-9 */
++ u_char ext_dict_loaded; /* 1=exception dictionary loaded */
++ u_char ext_dict_status; /* 1=exception dictionary enabled */
++ u_char free_ram; /* # pages (truncated) remaining for
++ * text buffer */
++ u_char articulation; /* nA; 0-9 */
++ u_char reverb; /* nR; 0-9 */
++ u_char eob; /* 7Fh value indicating end of
++ * parameter block */
++ u_char has_indexing; /* nonzero if indexing is implemented */
++};
+--- a/drivers/staging/speakup/speakup_dummy.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_dummy.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,144 @@
++/*
++ * originally written by: Kirk Reiser <kirk@braille.uwo.ca>
++ * this version considerably modified by David Borowski, david575@rogers.com
++ * eventually modified by Samuel Thibault <samuel.thibault@ens-lyon.org>
++ *
++ * Copyright (C) 1998-99 Kirk Reiser.
++ * Copyright (C) 2003 David Borowski.
++ * Copyright (C) 2007 Samuel Thibault.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * specificly written as a driver for the speakup screenreview
++ * s not a general device driver.
++ */
++#include "spk_priv.h"
++#include "speakup.h"
++
++#define PROCSPEECH '\n'
++#define DRV_VERSION "2.10"
++#define SYNTH_CLEAR '!'
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"CAPS_START\n" }},
++ { CAPS_STOP, .u.s = {"CAPS_STOP\n" }},
++ { RATE, .u.n = {"RATE %d\n", 8, 1, 16, 0, 0, NULL }},
++ { PITCH, .u.n = {"PITCH %d\n", 8, 0, 16, 0, 0, NULL }},
++ { VOL, .u.n = {"VOL %d\n", 8, 0, 16, 0, 0, NULL }},
++ { TONE, .u.n = {"TONE %d\n", 8, 0, 16, 0, 0, NULL }},
++ V_LAST_VAR
++};
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/dummy.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute tone_attribute =
++ __ATTR(tone, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute vol_attribute =
++ __ATTR(vol, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &pitch_attribute.attr,
++ &rate_attribute.attr,
++ &tone_attribute.attr,
++ &vol_attribute.attr,
++ &delay_time_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_dummy = {
++ .name = "dummy",
++ .version = DRV_VERSION,
++ .long_name = "Dummy",
++ .init = "Speakup\n",
++ .procspeech = PROCSPEECH,
++ .clear = SYNTH_CLEAR,
++ .delay = 500,
++ .trigger = 50,
++ .jiffies = 50,
++ .full = 40000,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = serial_synth_probe,
++ .release = spk_serial_release,
++ .synth_immediate = spk_synth_immediate,
++ .catch_up = spk_do_catch_up,
++ .flush = spk_synth_flush,
++ .is_alive = spk_synth_is_alive_restart,
++ .synth_adjust = NULL,
++ .read_buff_add = NULL,
++ .get_index = NULL,
++ .indexing = {
++ .command = NULL,
++ .lowindex = 0,
++ .highindex = 0,
++ .currindex = 0,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "dummy",
++ },
++};
++
++module_param_named(ser, synth_dummy.ser, int, S_IRUGO);
++module_param_named(start, synth_dummy.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(ser, "Set the serial port for the synthesizer (0-based).");
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++static int __init dummy_init(void)
++{
++ return synth_add(&synth_dummy);
++}
++
++static void __exit dummy_exit(void)
++{
++ synth_remove(&synth_dummy);
++}
++
++module_init(dummy_init);
++module_exit(dummy_exit);
++MODULE_AUTHOR("Samuel Thibault <samuel.thibault@ens-lyon.org>");
++MODULE_DESCRIPTION("Speakup support for text console");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/speakup.h 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup.h 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,124 @@
++#ifndef _SPEAKUP_H
++#define _SPEAKUP_H
++#include <linux/version.h>
++
++#include "spk_types.h"
++#include "i18n.h"
++
++#define SPEAKUP_VERSION "3.1.3"
++#define KEY_MAP_VER 119
++#define SHIFT_TBL_SIZE 64
++#define MAX_DESC_LEN 72
++
++/* proc permissions */
++#define USER_R (S_IFREG|S_IRUGO)
++#define USER_W (S_IFREG|S_IWUGO)
++#define USER_RW (S_IFREG|S_IRUGO|S_IWUGO)
++#define ROOT_W (S_IFREG|S_IRUGO|S_IWUSR)
++
++#define TOGGLE_0 .u.n = {NULL, 0, 0, 1, 0, 0, NULL }
++#define TOGGLE_1 .u.n = {NULL, 1, 0, 1, 0, 0, NULL }
++#define MAXVARLEN 15
++
++#define SYNTH_OK 0x0001
++#define B_ALPHA 0x0002
++#define ALPHA 0x0003
++#define B_CAP 0x0004
++#define A_CAP 0x0007
++#define B_NUM 0x0008
++#define NUM 0x0009
++#define ALPHANUM (B_ALPHA|B_NUM)
++#define SOME 0x0010
++#define MOST 0x0020
++#define PUNC 0x0040
++#define A_PUNC 0x0041
++#define B_WDLM 0x0080
++#define WDLM 0x0081
++#define B_EXNUM 0x0100
++#define CH_RPT 0x0200
++#define B_CTL 0x0400
++#define A_CTL (B_CTL+SYNTH_OK)
++#define B_SYM 0x0800
++#define B_CAPSYM (B_CAP|B_SYM)
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)
++#define inverse_translate(vc, c) inverse_translate(vc, c, 0)
++#endif
++
++#define IS_WDLM(x) (spk_chartab[((u_char)x)]&B_WDLM)
++#define IS_CHAR(x, type) (spk_chartab[((u_char)x)]&type)
++#define IS_TYPE(x, type) ((spk_chartab[((u_char)x)]&type) == type)
++
++#define SET_DEFAULT -4
++#define E_RANGE -3
++#define E_TOOLONG -2
++#define E_UNDEF -1
++
++extern int speakup_thread(void *data);
++extern void reset_default_chars(void);
++extern void reset_default_chartab(void);
++extern void synth_start(void);
++extern int set_key_info(const u_char *key_info, u_char *k_buffer);
++extern char *strlwr(char *s);
++extern char *speakup_s2i(char *start, int *dest);
++extern char *s2uchar(char *start, char *dest);
++extern char *xlate(char *s);
++extern int speakup_kobj_init(void);
++extern void speakup_kobj_exit(void);
++extern int chartab_get_value(char *keyword);
++extern void speakup_register_var(struct var_t *var);
++extern void speakup_unregister_var(enum var_id_t var_id);
++extern struct st_var_header *get_var_header(enum var_id_t var_id);
++extern struct st_var_header *var_header_by_name(const char *name);
++extern struct punc_var_t *get_punc_var(enum var_id_t var_id);
++extern int set_num_var(int val, struct st_var_header *var, int how);
++extern int set_string_var(const char *page, struct st_var_header *var, int len);
++extern int set_mask_bits(const char *input, const int which, const int how);
++extern special_func special_handler;
++extern int handle_help(struct vc_data *vc, u_char type, u_char ch, u_short key);
++extern int synth_init(char *name);
++extern void synth_release(void);
++
++extern void do_flush(void);
++extern void speakup_start_ttys(void);
++extern void synth_buffer_add(char ch);
++extern void synth_buffer_clear(void);
++extern void speakup_clear_selection(void);
++extern int speakup_set_selection(struct tty_struct *tty);
++extern int speakup_paste_selection(struct tty_struct *tty);
++extern void speakup_register_devsynth(void);
++extern void speakup_unregister_devsynth(void);
++extern void synth_write(const char *buf, size_t count);
++extern int synth_supports_indexing(void);
++
++extern struct vc_data *spk_sel_cons;
++extern unsigned short xs, ys, xe, ye; /* our region points */
++
++extern wait_queue_head_t speakup_event;
++extern struct kobject *speakup_kobj;
++extern struct task_struct *speakup_task;
++extern const u_char key_defaults[];
++
++/* Protect speakup synthesizer list */
++extern struct mutex spk_mutex;
++extern struct st_spk_t *speakup_console[];
++extern struct spk_synth *synth;
++extern char pitch_buff[];
++extern u_char *our_keys[];
++extern short punc_masks[];
++extern char str_caps_start[], str_caps_stop[];
++extern const struct st_bits_data punc_info[];
++extern u_char key_buf[600];
++extern char *characters[];
++extern char *default_chars[];
++extern u_short spk_chartab[];
++extern int no_intr, say_ctrl, say_word_ctl, punc_level;
++extern int reading_punc, attrib_bleep, bleeps;
++extern int bleep_time, bell_pos;
++extern int spell_delay, key_echo;
++extern short punc_mask;
++extern short pitch_shift, synth_flags;
++extern int quiet_boot;
++extern char *synth_name;
++
++#endif
+--- a/drivers/staging/speakup/speakup_keypc.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_keypc.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,323 @@
++/*
++ * written by David Borowski
++ *
++ * Copyright (C) 2003 David Borowski.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * specificly written as a driver for the speakup screenreview
++ * package it's not a general device driver.
++ * This driver is for the Keynote Gold internal synthesizer.
++ */
++#include <linux/jiffies.h>
++#include <linux/sched.h>
++#include <linux/timer.h>
++#include <linux/kthread.h>
++#include <linux/serial_reg.h>
++
++#include "spk_priv.h"
++#include "speakup.h"
++
++#define DRV_VERSION "2.9"
++#define SYNTH_IO_EXTENT 0x04
++#define SWAIT udelay(70)
++#define synth_writable() (inb_p(synth_port + UART_RX) & 0x10)
++#define synth_readable() (inb_p(synth_port + UART_RX) & 0x10)
++#define synth_full() ((inb_p(synth_port + UART_RX) & 0x80) == 0)
++#define PROCSPEECH 0x1f
++#define SYNTH_CLEAR 0x03
++
++static int synth_probe(struct spk_synth *synth);
++static void keynote_release(void);
++static const char *synth_immediate(struct spk_synth *synth, const char *buf);
++static void do_catch_up(struct spk_synth *synth);
++static void synth_flush(struct spk_synth *synth);
++
++static int synth_port;
++static int port_forced;
++static unsigned int synth_portlist[] = { 0x2a8, 0 };
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"[f130]" }},
++ { CAPS_STOP, .u.s = {"[f90]" }},
++ { RATE, .u.n = {"\04%c ", 8, 0, 10, 81, -8, NULL }},
++ { PITCH, .u.n = {"[f%d]", 5, 0, 9, 40, 10, NULL }},
++ V_LAST_VAR
++};
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/keypc.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &pitch_attribute.attr,
++ &rate_attribute.attr,
++ &delay_time_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_keypc = {
++ .name = "keypc",
++ .version = DRV_VERSION,
++ .long_name = "Keynote PC",
++ .init = "[t][n7,1][n8,0]",
++ .procspeech = PROCSPEECH,
++ .clear = SYNTH_CLEAR,
++ .delay = 500,
++ .trigger = 50,
++ .jiffies = 50,
++ .full = 1000,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = synth_probe,
++ .release = keynote_release,
++ .synth_immediate = synth_immediate,
++ .catch_up = do_catch_up,
++ .flush = synth_flush,
++ .is_alive = spk_synth_is_alive_nop,
++ .synth_adjust = NULL,
++ .read_buff_add = NULL,
++ .get_index = NULL,
++ .indexing = {
++ .command = NULL,
++ .lowindex = 0,
++ .highindex = 0,
++ .currindex = 0,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "keypc",
++ },
++};
++
++static char *oops(void)
++{
++ int s1, s2, s3, s4;
++ s1 = inb_p(synth_port);
++ s2 = inb_p(synth_port+1);
++ s3 = inb_p(synth_port+2);
++ s4 = inb_p(synth_port+3);
++ pr_warn("synth timeout %d %d %d %d\n", s1, s2, s3, s4);
++ return NULL;
++}
++
++static const char *synth_immediate(struct spk_synth *synth, const char *buf)
++{
++ u_char ch;
++ int timeout;
++ while ((ch = *buf)) {
++ if (ch == '\n')
++ ch = PROCSPEECH;
++ if (synth_full())
++ return buf;
++ timeout = 1000;
++ while (synth_writable())
++ if (--timeout <= 0)
++ return oops();
++ outb_p(ch, synth_port);
++ udelay(70);
++ buf++;
++ }
++ return 0;
++}
++
++static void do_catch_up(struct spk_synth *synth)
++{
++ u_char ch;
++ int timeout;
++ unsigned long flags;
++ unsigned long jiff_max;
++ struct var_t *jiffy_delta;
++ struct var_t *delay_time;
++ struct var_t *full_time;
++ int delay_time_val;
++ int full_time_val;
++ int jiffy_delta_val;
++
++ jiffy_delta = get_var(JIFFY);
++ delay_time = get_var(DELAY);
++ full_time = get_var(FULL);
++spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ spk_unlock(flags);
++
++ jiff_max = jiffies + jiffy_delta_val;
++ while (!kthread_should_stop()) {
++ spk_lock(flags);
++ if (speakup_info.flushing) {
++ speakup_info.flushing = 0;
++ spk_unlock(flags);
++ synth->flush(synth);
++ continue;
++ }
++ if (synth_buffer_empty()) {
++ spk_unlock(flags);
++ break;
++ }
++ set_current_state(TASK_INTERRUPTIBLE);
++ full_time_val = full_time->u.n.value;
++ spk_unlock(flags);
++ if (synth_full()) {
++ schedule_timeout(msecs_to_jiffies(full_time_val));
++ continue;
++ }
++ set_current_state(TASK_RUNNING);
++ timeout = 1000;
++ while (synth_writable())
++ if (--timeout <= 0)
++ break;
++ if (timeout <= 0) {
++ oops();
++ break;
++ }
++ spk_lock(flags);
++ ch = synth_buffer_getc();
++ spk_unlock(flags);
++ if (ch == '\n')
++ ch = PROCSPEECH;
++ outb_p(ch, synth_port);
++ SWAIT;
++ if ((jiffies >= jiff_max) && (ch == SPACE)) {
++ timeout = 1000;
++ while (synth_writable())
++ if (--timeout <= 0)
++ break;
++ if (timeout <= 0) {
++ oops();
++ break;
++ }
++ outb_p(PROCSPEECH, synth_port);
++ spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ delay_time_val = delay_time->u.n.value;
++ spk_unlock(flags);
++ schedule_timeout(msecs_to_jiffies(delay_time_val));
++ jiff_max = jiffies+jiffy_delta_val;
++ }
++ }
++ timeout = 1000;
++ while (synth_writable())
++ if (--timeout <= 0)
++ break;
++ if (timeout <= 0)
++ oops();
++ else
++ outb_p(PROCSPEECH, synth_port);
++}
++
++static void synth_flush(struct spk_synth *synth)
++{
++ outb_p(SYNTH_CLEAR, synth_port);
++}
++
++static int synth_probe(struct spk_synth *synth)
++{
++ unsigned int port_val = 0;
++ int i = 0;
++ pr_info("Probing for %s.\n", synth->long_name);
++ if (port_forced) {
++ synth_port = port_forced;
++ pr_info("probe forced to %x by kernel command line\n",
++ synth_port);
++ if (synth_request_region(synth_port-1, SYNTH_IO_EXTENT)) {
++ pr_warn("sorry, port already reserved\n");
++ return -EBUSY;
++ }
++ port_val = inb(synth_port);
++ } else {
++ for (i = 0; synth_portlist[i]; i++) {
++ if (synth_request_region(synth_portlist[i],
++ SYNTH_IO_EXTENT)) {
++ pr_warn("request_region: failed with 0x%x, %d\n",
++ synth_portlist[i], SYNTH_IO_EXTENT);
++ continue;
++ }
++ port_val = inb(synth_portlist[i]);
++ if (port_val == 0x80) {
++ synth_port = synth_portlist[i];
++ break;
++ }
++ }
++ }
++ if (port_val != 0x80) {
++ pr_info("%s: not found\n", synth->long_name);
++ synth_release_region(synth_portlist[i], SYNTH_IO_EXTENT);
++ synth_port = 0;
++ return -ENODEV;
++ }
++ pr_info("%s: %03x-%03x, driver version %s,\n", synth->long_name,
++ synth_port, synth_port+SYNTH_IO_EXTENT-1,
++ synth->version);
++ synth->alive = 1;
++ return 0;
++}
++
++static void keynote_release(void)
++{
++ if (synth_port)
++ synth_release_region(synth_port, SYNTH_IO_EXTENT);
++ synth_port = 0;
++}
++
++module_param_named(port, port_forced, int, S_IRUGO);
++module_param_named(start, synth_keypc.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(port, "Set the port for the synthesizer (override probing).");
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++static int __init keypc_init(void)
++{
++ return synth_add(&synth_keypc);
++}
++
++static void __exit keypc_exit(void)
++{
++ synth_remove(&synth_keypc);
++}
++
++module_init(keypc_init);
++module_exit(keypc_exit);
++MODULE_AUTHOR("David Borowski");
++MODULE_DESCRIPTION("Speakup support for Keynote Gold PC synthesizers");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/speakup_ltlk.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_ltlk.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,191 @@
++/*
++ * originally written by: Kirk Reiser <kirk@braille.uwo.ca>
++* this version considerably modified by David Borowski, david575@rogers.com
++ *
++ * Copyright (C) 1998-99 Kirk Reiser.
++ * Copyright (C) 2003 David Borowski.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * specificly written as a driver for the speakup screenreview
++ * s not a general device driver.
++ */
++#include "speakup.h"
++#include "spk_priv.h"
++#include "serialio.h"
++#include "speakup_dtlk.h" /* local header file for LiteTalk values */
++
++#define DRV_VERSION "2.10"
++#define synth_full( ) ( !( inb( synth_port_tts + UART_MSR ) & UART_MSR_CTS ) )
++#define PROCSPEECH 0x0d
++
++static int synth_probe(struct spk_synth *synth);
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"\x01+35p" }},
++ { CAPS_STOP, .u.s = {"\x01-35p" }},
++ { RATE, .u.n = {"\x01%ds", 8, 0, 9, 0, 0, NULL }},
++ { PITCH, .u.n = {"\x01%dp", 50, 0, 99, 0, 0, NULL }},
++ { VOL, .u.n = {"\x01%dv", 5, 0, 9, 0, 0, NULL }},
++ { TONE, .u.n = {"\x01%dx", 1, 0, 2, 0, 0, NULL }},
++ { PUNCT, .u.n = {"\x01%db", 7, 0, 15, 0, 0, NULL }},
++ { VOICE, .u.n = {"\x01%do", 0, 0, 7, 0, 0, NULL }},
++ { FREQUENCY, .u.n = {"\x01%df", 5, 0, 9, 0, 0, NULL }},
++ V_LAST_VAR
++};
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/ltlk.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute freq_attribute =
++ __ATTR(freq, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute punct_attribute =
++ __ATTR(punct, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute tone_attribute =
++ __ATTR(tone, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute voice_attribute =
++ __ATTR(voice, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute vol_attribute =
++ __ATTR(vol, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &freq_attribute.attr,
++ &pitch_attribute.attr,
++ &punct_attribute.attr,
++ &rate_attribute.attr,
++ &tone_attribute.attr,
++ &voice_attribute.attr,
++ &vol_attribute.attr,
++ &delay_time_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_ltlk = {
++ .name = "ltlk",
++ .version = DRV_VERSION,
++ .long_name = "LiteTalk",
++ .init = "\01@\x01\x31y\n\0",
++ .procspeech = PROCSPEECH,
++ .clear = SYNTH_CLEAR,
++ .delay = 500,
++ .trigger = 50,
++ .jiffies = 50,
++ .full = 40000,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = synth_probe,
++ .release = spk_serial_release,
++ .synth_immediate = spk_synth_immediate,
++ .catch_up = spk_do_catch_up,
++ .flush = spk_synth_flush,
++ .is_alive = spk_synth_is_alive_restart,
++ .synth_adjust = NULL,
++ .read_buff_add = NULL,
++ .get_index = spk_serial_in_nowait,
++ .indexing = {
++ .command = "\x01%di",
++ .lowindex = 1,
++ .highindex = 5,
++ .currindex = 1,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "ltlk",
++ },
++};
++
++/* interrogate the LiteTalk and print its settings */
++static void synth_interrogate(struct spk_synth *synth)
++{
++ unsigned char *t, i;
++ unsigned char buf[50], rom_v[20];
++ spk_synth_immediate(synth, "\x18\x01?");
++ for (i = 0; i < 50; i++) {
++ buf[i] = spk_serial_in();
++ if (i > 2 && buf[i] == 0x7f)
++ break;
++ }
++ t = buf+2;
++ for (i = 0; *t != '\r'; t++) {
++ rom_v[i] = *t;
++ if (++i >= 19)
++ break;
++ }
++ rom_v[i] = 0;
++ pr_info("%s: ROM version: %s\n", synth->long_name, rom_v);
++}
++
++static int synth_probe(struct spk_synth *synth)
++{
++ int failed = 0;
++
++ failed = serial_synth_probe(synth);
++ if (failed == 0)
++ synth_interrogate(synth);
++ synth->alive = !failed;
++ return failed;
++}
++
++module_param_named(ser, synth_ltlk.ser, int, S_IRUGO);
++module_param_named(start, synth_ltlk.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(ser, "Set the serial port for the synthesizer (0-based).");
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++static int __init ltlk_init(void)
++{
++ return synth_add(&synth_ltlk);
++}
++
++static void __exit ltlk_exit(void)
++{
++ synth_remove(&synth_ltlk);
++}
++
++module_init(ltlk_init);
++module_exit(ltlk_exit);
++MODULE_AUTHOR("Kirk Reiser <kirk@braille.uwo.ca>");
++MODULE_AUTHOR("David Borowski");
++MODULE_DESCRIPTION("Speakup support for DoubleTalk LT/LiteTalk synthesizers");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/speakupmap.h 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakupmap.h 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,65 @@
++ 119, 62, 6,
++ 0, 16, 20, 17, 32, 48, 0,
++ 2, 0, 78, 0, 0, 0, 0,
++ 3, 0, 79, 0, 0, 0, 0,
++ 4, 0, 76, 0, 0, 0, 0,
++ 5, 0, 77, 0, 0, 0, 0,
++ 6, 0, 74, 0, 0, 0, 0,
++ 7, 0, 75, 0, 0, 0, 0,
++ 9, 0, 5, 46, 0, 0, 0,
++ 10, 0, 4, 0, 0, 0, 0,
++ 11, 0, 0, 1, 0, 0, 0,
++ 12, 0, 27, 0, 33, 0, 0,
++ 19, 0, 47, 0, 0, 0, 0,
++ 21, 0, 29, 17, 0, 0, 0,
++ 22, 0, 15, 0, 0, 0, 0,
++ 23, 0, 14, 0, 0, 0, 28,
++ 24, 0, 16, 0, 0, 0, 0,
++ 25, 0, 30, 18, 0, 0, 0,
++ 28, 0, 3, 26, 0, 0, 0,
++ 35, 0, 31, 0, 0, 0, 0,
++ 36, 0, 12, 0, 0, 0, 0,
++ 37, 0, 11, 0, 0, 0, 22,
++ 38, 0, 13, 0, 0, 0, 0,
++ 39, 0, 32, 7, 0, 0, 0,
++ 40, 0, 23, 0, 0, 0, 0,
++ 44, 0, 44, 0, 0, 0, 0,
++ 49, 0, 24, 0, 0, 0, 0,
++ 50, 0, 9, 19, 6, 0, 0,
++ 51, 0, 8, 0, 0, 0, 36,
++ 52, 0, 10, 20, 0, 0, 0,
++ 53, 0, 25, 0, 0, 0, 0,
++ 55, 46, 1, 0, 0, 0, 0,
++ 58, 128, 128, 0, 0, 0, 0,
++ 59, 0, 45, 0, 0, 0, 0,
++ 60, 0, 40, 0, 0, 0, 0,
++ 61, 0, 41, 0, 0, 0, 0,
++ 62, 0, 42, 0, 0, 0, 0,
++ 63, 0, 34, 0, 0, 0, 0,
++ 64, 0, 35, 0, 0, 0, 0,
++ 65, 0, 37, 0, 0, 0, 0,
++ 66, 0, 38, 0, 0, 0, 0,
++ 67, 0, 66, 0, 39, 0, 0,
++ 68, 0, 67, 0, 0, 0, 0,
++ 71, 15, 19, 0, 0, 0, 0,
++ 72, 14, 29, 0, 0, 28, 0,
++ 73, 16, 17, 0, 0, 0, 0,
++ 74, 27, 33, 0, 0, 0, 0,
++ 75, 12, 31, 0, 0, 0, 0,
++ 76, 11, 21, 0, 0, 22, 0,
++ 77, 13, 32, 0, 0, 0, 0,
++ 78, 23, 43, 0, 0, 0, 0,
++ 79, 9, 20, 0, 0, 0, 0,
++ 80, 8, 30, 0, 0, 36, 0,
++ 81, 10, 18, 0, 0, 0, 0,
++ 82, 128, 128, 0, 0, 0, 0,
++ 83, 24, 25, 0, 0, 0, 0,
++ 87, 0, 68, 0, 0, 0, 0,
++ 88, 0, 69, 0, 0, 0, 0,
++ 96, 3, 26, 0, 0, 0, 0,
++ 98, 4, 5, 0, 0, 0, 0,
++ 99, 2, 0, 0, 0, 0, 0,
++ 104, 0, 6, 0, 0, 0, 0,
++ 109, 0, 7, 0, 0, 0, 0,
++ 125, 128, 128, 0, 0, 0, 0,
++ 0, 119
+--- a/drivers/staging/speakup/speakupmap.map 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakupmap.map 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,93 @@
++spk key_f9 = punc_level_dec
++spk key_f10 = punc_level_inc
++spk key_f11 = reading_punc_dec
++spk key_f12 = reading_punc_inc
++spk key_1 = vol_dec
++spk key_2 = vol_inc
++spk key_3 = pitch_dec
++spk key_4 = pitch_inc
++spk key_5 = rate_dec
++spk key_6 = rate_inc
++key_kpasterisk = toggle_cursoring
++ctrl spk key_8 = toggle_cursoring
++spk key_kpasterisk = speakup_goto
++spk key_f1 = speakup_help
++spk key_f2 = set_win
++spk key_f3 = clear_win
++spk key_f4 = enable_win
++spk key_f5 = edit_some
++spk key_f6 = edit_most
++spk key_f7 = edit_delim
++spk key_f8 = edit_repeat
++shift spk key_f9 = edit_exnum
++ key_kp7 = say_prev_line
++spk key_kp7 = left_edge
++ key_kp8 = say_line
++double key_kp8 = say_line_indent
++spk key_kp8 = say_from_top
++ key_kp9 = say_next_line
++spk key_kp9 = top_edge
++ key_kpminus = speakup_parked
++spk key_kpminus = say_char_num
++ key_kp4 = say_prev_word
++spk key_kp4 = say_from_left
++ key_kp5 = say_word
++double key_kp5 = spell_word
++spk key_kp5 = spell_phonetic
++ key_kp6 = say_next_word
++spk key_kp6 = say_to_right
++ key_kpplus = say_screen
++spk key_kpplus = say_win
++ key_kp1 = say_prev_char
++spk key_kp1 = right_edge
++ key_kp2 = say_char
++spk key_kp2 = say_to_bottom
++double key_kp2 = say_phonetic_char
++ key_kp3 = say_next_char
++spk key_kp3 = bottom_edge
++ key_kp0 = spk_key
++ key_kpdot = say_position
++spk key_kpdot = say_attributes
++key_kpenter = speakup_quiet
++spk key_kpenter = speakup_off
++key_sysrq = speech_kill
++ key_kpslash = speakup_cut
++spk key_kpslash = speakup_paste
++spk key_pageup = say_first_char
++spk key_pagedown = say_last_char
++key_capslock = spk_key
++ spk key_z = spk_lock
++key_leftmeta = spk_key
++ctrl spk key_0 = speakup_goto
++spk key_u = say_prev_line
++spk key_i = say_line
++double spk key_i = say_line_indent
++spk key_o = say_next_line
++spk key_minus = speakup_parked
++shift spk key_minus = say_char_num
++spk key_j = say_prev_word
++spk key_k = say_word
++double spk key_k = spell_word
++spk key_l = say_next_word
++spk key_m = say_prev_char
++spk key_comma = say_char
++double spk key_comma = say_phonetic_char
++spk key_dot = say_next_char
++spk key_n = say_position
++ ctrl spk key_m = left_edge
++ ctrl spk key_y = top_edge
++ ctrl spk key_dot = right_edge
++ctrl spk key_p = bottom_edge
++spk key_apostrophe = say_screen
++spk key_h = say_from_left
++spk key_y = say_from_top
++spk key_semicolon = say_to_right
++spk key_p = say_to_bottom
++spk key_slash = say_attributes
++ spk key_enter = speakup_quiet
++ ctrl spk key_enter = speakup_off
++ spk key_9 = speakup_cut
++spk key_8 = speakup_paste
++shift spk key_m = say_first_char
++ ctrl spk key_semicolon = say_last_char
++spk key_r = read_all_doc
+--- a/drivers/staging/speakup/speakup_soft.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_soft.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,366 @@
++/* speakup_soft.c - speakup driver to register and make available
++ * a user space device for software synthesizers. written by: Kirk
++ * Reiser <kirk@braille.uwo.ca>
++ *
++ * Copyright (C) 2003 Kirk Reiser.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * this code is specificly written as a driver for the speakup screenreview
++ * package and is not a general device driver. */
++
++#include <linux/unistd.h>
++#include <linux/miscdevice.h> /* for misc_register, and SYNTH_MINOR */
++#include <linux/poll.h> /* for poll_wait() */
++#include <linux/sched.h>
++
++#include "spk_priv.h"
++#include "speakup.h"
++
++#define DRV_VERSION "2.6"
++#define SOFTSYNTH_MINOR 26 /* might as well give it one more than /dev/synth */
++#define PROCSPEECH 0x0d
++#define CLEAR_SYNTH 0x18
++
++static int softsynth_probe(struct spk_synth *synth);
++static void softsynth_release(void);
++static int softsynth_is_alive(struct spk_synth *synth);
++static unsigned char get_index(void);
++
++static struct miscdevice synth_device;
++static int initialized = 0;
++static int misc_registered;
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"\x01+3p" }},
++ { CAPS_STOP, .u.s = {"\x01-3p" }},
++ { RATE, .u.n = {"\x01%ds", 5, 0, 9, 0, 0, NULL }},
++ { PITCH, .u.n = {"\x01%dp", 5, 0, 9, 0, 0, NULL }},
++ { VOL, .u.n = {"\x01%dv", 5, 0, 9, 0, 0, NULL }},
++ { TONE, .u.n = {"\x01%dx", 1, 0, 2, 0, 0, NULL }},
++ { PUNCT, .u.n = {"\x01%db", 0, 0, 2, 0, 0, NULL }},
++ { VOICE, .u.n = {"\x01%do", 0, 0, 7, 0, 0, NULL }},
++ { FREQUENCY, .u.n = {"\x01%df", 5, 0, 9, 0, 0, NULL }},
++ { DIRECT, .u.n = {NULL, 0, 0, 1, 0, 0, NULL }},
++ V_LAST_VAR
++};
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/soft.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute freq_attribute =
++ __ATTR(freq, USER_RW, spk_var_show, spk_var_store);
++//static struct kobj_attribute lang_attribute =
++// __ATTR(lang, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute punct_attribute =
++ __ATTR(punct, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute tone_attribute =
++ __ATTR(tone, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute voice_attribute =
++ __ATTR(voice, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute vol_attribute =
++ __ATTR(vol, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute direct_attribute =
++ __ATTR(direct, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &freq_attribute.attr,
++// &lang_attribute.attr,
++ &pitch_attribute.attr,
++ &punct_attribute.attr,
++ &rate_attribute.attr,
++ &tone_attribute.attr,
++ &voice_attribute.attr,
++ &vol_attribute.attr,
++ &delay_time_attribute.attr,
++ &direct_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_soft = {
++ .name = "soft",
++ .version = DRV_VERSION,
++ .long_name = "software synth",
++ .init = "\01@\x01\x31y\n",
++ .procspeech = PROCSPEECH,
++ .delay = 0,
++ .trigger = 0,
++ .jiffies = 0,
++ .full = 0,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = softsynth_probe,
++ .release = softsynth_release,
++ .synth_immediate = NULL,
++ .catch_up = NULL,
++ .flush = NULL,
++ .is_alive = softsynth_is_alive,
++ .synth_adjust = NULL,
++ .read_buff_add = NULL,
++ .get_index = get_index,
++ .indexing = {
++ .command = "\x01%di",
++ .lowindex = 1,
++ .highindex = 5,
++ .currindex = 1,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "soft",
++ },
++};
++
++static char *get_initstring(void)
++{
++ static char buf[40];
++ char *cp;
++ struct var_t *var;
++
++ memset(buf, 0, sizeof(buf));
++ cp = buf;
++ var = synth_soft.vars;
++ while (var->var_id != MAXVARS) {
++ if (var->var_id != CAPS_START && var->var_id != CAPS_STOP
++ && var->var_id != DIRECT)
++ cp = cp + sprintf(cp, var->u.n.synth_fmt, var->u.n.value);
++ var++;
++ }
++ cp = cp + sprintf(cp, "\n");
++ return buf;
++}
++
++static int softsynth_open(struct inode *inode, struct file *fp)
++{
++ unsigned long flags;
++ /*if ((fp->f_flags & O_ACCMODE) != O_RDONLY) */
++ /* return -EPERM; */
++ spk_lock(flags);
++ if (synth_soft.alive) {
++ spk_unlock(flags);
++ return -EBUSY;
++ }
++ synth_soft.alive = 1;
++ spk_unlock(flags);
++ return 0;
++}
++
++static int softsynth_close(struct inode *inode, struct file *fp)
++{
++ unsigned long flags;
++ spk_lock(flags);
++ synth_soft.alive = 0;
++ initialized = 0;
++ spk_unlock(flags);
++ /* Make sure we let applications go before leaving */
++ speakup_start_ttys();
++ return 0;
++}
++
++static ssize_t softsynth_read(struct file *fp, char *buf, size_t count,
++ loff_t *pos)
++{
++ int chars_sent = 0;
++ char *cp;
++ char *init;
++ char ch;
++ int empty;
++ unsigned long flags;
++ DEFINE_WAIT(wait);
++
++ spk_lock(flags);
++ while (1) {
++ prepare_to_wait(&speakup_event, &wait, TASK_INTERRUPTIBLE);
++ if (!synth_buffer_empty() || speakup_info.flushing)
++ break;
++ spk_unlock(flags);
++ if (fp->f_flags & O_NONBLOCK) {
++ finish_wait(&speakup_event, &wait);
++ return -EAGAIN;
++ }
++ if (signal_pending(current)) {
++ finish_wait(&speakup_event, &wait);
++ return -ERESTARTSYS;
++ }
++ schedule();
++ spk_lock(flags);
++ }
++ finish_wait(&speakup_event, &wait);
++
++ cp = buf;
++ init = get_initstring();
++ while (chars_sent < count) {
++ if (speakup_info.flushing) {
++ speakup_info.flushing = 0;
++ ch = '\x18';
++ } else if (synth_buffer_empty()) {
++ break;
++ } else if (! initialized) {
++ if (*init) {
++ ch = *init;
++ init++;
++ } else {
++ initialized = 1;
++ }
++ } else {
++ ch = synth_buffer_getc();
++ }
++ spk_unlock(flags);
++ if (copy_to_user(cp, &ch, 1))
++ return -EFAULT;
++ spk_lock(flags);
++ chars_sent++;
++ cp++;
++ }
++ *pos += chars_sent;
++ empty = synth_buffer_empty();
++ spk_unlock(flags);
++ if (empty) {
++ speakup_start_ttys();
++ *pos = 0;
++ }
++ return chars_sent;
++}
++
++static int last_index = 0;
++
++static ssize_t softsynth_write(struct file *fp, const char *buf, size_t count,
++ loff_t *pos)
++{
++ char indbuf[5];
++ if (count >= sizeof(indbuf))
++ return -EINVAL;
++
++ if (copy_from_user(indbuf, buf, count))
++ return -EFAULT;
++ indbuf[4] = 0;
++
++ last_index = simple_strtoul(indbuf, NULL, 0);
++ return count;
++}
++
++static unsigned int softsynth_poll(struct file *fp,
++ struct poll_table_struct *wait)
++{
++ unsigned long flags;
++ int ret = 0;
++ poll_wait(fp, &speakup_event, wait);
++
++ spk_lock(flags);
++ if (! synth_buffer_empty() || speakup_info.flushing)
++ ret = POLLIN | POLLRDNORM;
++ spk_unlock(flags);
++ return ret;
++}
++
++static unsigned char get_index(void)
++{
++ int rv;
++ rv = last_index;
++ last_index = 0;
++ return rv;
++}
++
++static struct file_operations softsynth_fops = {
++ .owner = THIS_MODULE,
++ .poll = softsynth_poll,
++ .read = softsynth_read,
++ .write = softsynth_write,
++ .open = softsynth_open,
++ .release = softsynth_close,
++};
++
++
++static int softsynth_probe(struct spk_synth *synth)
++{
++
++ if (misc_registered != 0)
++ return 0;
++ memset(&synth_device, 0, sizeof(synth_device));
++ synth_device.minor = SOFTSYNTH_MINOR;
++ synth_device.name = "softsynth";
++ synth_device.fops = &softsynth_fops;
++ if (misc_register(&synth_device)) {
++ pr_warn("Couldn't initialize miscdevice /dev/softsynth.\n");
++ return -ENODEV;
++ }
++
++ misc_registered = 1;
++ pr_info("initialized device: /dev/softsynth, node (MAJOR 10, MINOR 26)\n");
++ return 0;
++}
++
++static void softsynth_release(void)
++{
++ misc_deregister(&synth_device);
++ misc_registered = 0;
++ pr_info("unregistered /dev/softsynth\n");
++}
++
++static int softsynth_is_alive(struct spk_synth *synth)
++{
++ if (synth_soft.alive)
++ return 1;
++ return 0;
++}
++
++module_param_named(start, synth_soft.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++
++static int __init soft_init(void)
++{
++ return synth_add(&synth_soft);
++}
++
++static void __exit soft_exit(void)
++{
++ synth_remove(&synth_soft);
++}
++
++module_init(soft_init);
++module_exit(soft_exit);
++MODULE_AUTHOR("Kirk Reiser <kirk@braille.uwo.ca>");
++MODULE_DESCRIPTION("Speakup userspace software synthesizer support");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/speakup_spkout.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_spkout.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,161 @@
++/*
++ * originally written by: Kirk Reiser <kirk@braille.uwo.ca>
++* this version considerably modified by David Borowski, david575@rogers.com
++ *
++ * Copyright (C) 1998-99 Kirk Reiser.
++ * Copyright (C) 2003 David Borowski.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * specificly written as a driver for the speakup screenreview
++ * s not a general device driver.
++ */
++#include "spk_priv.h"
++#include "speakup.h"
++#include "serialio.h"
++
++#define DRV_VERSION "2.10"
++#define SYNTH_CLEAR 0x18
++#define PROCSPEECH '\r'
++
++static void synth_flush(struct spk_synth *synth);
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"\x05P+" }},
++ { CAPS_STOP, .u.s = {"\x05P-" }},
++ { RATE, .u.n = {"\x05R%d", 7, 0, 9, 0, 0, NULL }},
++ { PITCH, .u.n = {"\x05P%d", 3, 0, 9, 0, 0, NULL }},
++ { VOL, .u.n = {"\x05V%d", 9, 0, 9, 0, 0, NULL }},
++ { TONE, .u.n = {"\x05T%c", 8, 0, 25, 65, 0, NULL }},
++ { PUNCT, .u.n = {"\x05M%c", 0, 0, 3, 0, 0, "nsma" }},
++ V_LAST_VAR
++};
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/spkout.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute punct_attribute =
++ __ATTR(punct, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute tone_attribute =
++ __ATTR(tone, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute vol_attribute =
++ __ATTR(vol, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &pitch_attribute.attr,
++ &punct_attribute.attr,
++ &rate_attribute.attr,
++ &tone_attribute.attr,
++ &vol_attribute.attr,
++ &delay_time_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_spkout = {
++ .name = "spkout",
++ .version = DRV_VERSION,
++ .long_name = "Speakout",
++ .init = "\005W1\005I2\005C3",
++ .procspeech = PROCSPEECH,
++ .clear = SYNTH_CLEAR,
++ .delay = 500,
++ .trigger = 50,
++ .jiffies = 50,
++ .full = 40000,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = serial_synth_probe,
++ .release = spk_serial_release,
++ .synth_immediate = spk_synth_immediate,
++ .catch_up = spk_do_catch_up,
++ .flush = synth_flush,
++ .is_alive = spk_synth_is_alive_restart,
++ .synth_adjust = NULL,
++ .read_buff_add = NULL,
++ .get_index = spk_serial_in_nowait,
++ .indexing = {
++ .command = "\x05[%c",
++ .lowindex = 1,
++ .highindex = 5,
++ .currindex = 1,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "spkout",
++ },
++};
++
++static void synth_flush(struct spk_synth *synth)
++{
++ int timeout = SPK_XMITR_TIMEOUT;
++ while (spk_serial_tx_busy()) {
++ if (!--timeout)
++ break;
++ udelay(1);
++ }
++ outb(SYNTH_CLEAR, speakup_info.port_tts);
++}
++
++module_param_named(ser, synth_spkout.ser, int, S_IRUGO);
++module_param_named(start, synth_spkout.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(ser, "Set the serial port for the synthesizer (0-based).");
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++static int __init spkout_init(void)
++{
++ return synth_add(&synth_spkout);
++}
++
++static void __exit spkout_exit(void)
++{
++ synth_remove(&synth_spkout);
++}
++
++module_init(spkout_init);
++module_exit(spkout_exit);
++MODULE_AUTHOR("Kirk Reiser <kirk@braille.uwo.ca>");
++MODULE_AUTHOR("David Borowski");
++MODULE_DESCRIPTION("Speakup support for Speak Out synthesizers");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/speakup_txprt.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/speakup_txprt.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,143 @@
++/*
++ * originally written by: Kirk Reiser <kirk@braille.uwo.ca>
++* this version considerably modified by David Borowski, david575@rogers.com
++ *
++ * Copyright (C) 1998-99 Kirk Reiser.
++ * Copyright (C) 2003 David Borowski.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * specificly written as a driver for the speakup screenreview
++ * s not a general device driver.
++ */
++#include "spk_priv.h"
++#include "speakup.h"
++
++#define DRV_VERSION "2.10"
++#define SYNTH_CLEAR 0x18
++#define PROCSPEECH '\r' /* process speech char */
++
++static struct var_t vars[] = {
++ { CAPS_START, .u.s = {"\x05P8" }},
++ { CAPS_STOP, .u.s = {"\x05P5" }},
++ { RATE, .u.n = {"\x05R%d", 5, 0, 9, 0, 0, NULL }},
++ { PITCH, .u.n = {"\x05P%d", 5, 0, 9, 0, 0, NULL }},
++ { VOL, .u.n = {"\x05V%d", 5, 0, 9, 0, 0, NULL }},
++ { TONE, .u.n = {"\x05T%c", 12, 0, 25, 61, 0, NULL }},
++ V_LAST_VAR
++ };
++
++/*
++ * These attributes will appear in /sys/accessibility/speakup/txprt.
++ */
++static struct kobj_attribute caps_start_attribute =
++ __ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute caps_stop_attribute =
++ __ATTR(caps_stop, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute pitch_attribute =
++ __ATTR(pitch, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute rate_attribute =
++ __ATTR(rate, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute tone_attribute =
++ __ATTR(tone, USER_RW, spk_var_show, spk_var_store);
++static struct kobj_attribute vol_attribute =
++ __ATTR(vol, USER_RW, spk_var_show, spk_var_store);
++
++static struct kobj_attribute delay_time_attribute =
++ __ATTR(delay_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute full_time_attribute =
++ __ATTR(full_time, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute jiffy_delta_attribute =
++ __ATTR(jiffy_delta, ROOT_W, spk_var_show, spk_var_store);
++static struct kobj_attribute trigger_time_attribute =
++ __ATTR(trigger_time, ROOT_W, spk_var_show, spk_var_store);
++
++/*
++ * Create a group of attributes so that we can create and destroy them all
++ * at once.
++ */
++static struct attribute *synth_attrs[] = {
++ &caps_start_attribute.attr,
++ &caps_stop_attribute.attr,
++ &pitch_attribute.attr,
++ &rate_attribute.attr,
++ &tone_attribute.attr,
++ &vol_attribute.attr,
++ &delay_time_attribute.attr,
++ &full_time_attribute.attr,
++ &jiffy_delta_attribute.attr,
++ &trigger_time_attribute.attr,
++ NULL, /* need to NULL terminate the list of attributes */
++};
++
++static struct spk_synth synth_txprt = {
++ .name = "txprt",
++ .version = DRV_VERSION,
++ .long_name = "Transport",
++ .init = "\x05N1",
++ .procspeech = PROCSPEECH,
++ .clear = SYNTH_CLEAR,
++ .delay = 500,
++ .trigger = 50,
++ .jiffies = 50,
++ .full = 40000,
++ .startup = SYNTH_START,
++ .checkval = SYNTH_CHECK,
++ .vars = vars,
++ .probe = serial_synth_probe,
++ .release = spk_serial_release,
++ .synth_immediate = spk_synth_immediate,
++ .catch_up = spk_do_catch_up,
++ .flush = spk_synth_flush,
++ .is_alive = spk_synth_is_alive_restart,
++ .synth_adjust = NULL,
++ .read_buff_add = NULL,
++ .get_index = NULL,
++ .indexing = {
++ .command = NULL,
++ .lowindex = 0,
++ .highindex = 0,
++ .currindex = 0,
++ },
++ .attributes = {
++ .attrs = synth_attrs,
++ .name = "txprt",
++ },
++};
++
++module_param_named(ser, synth_txprt.ser, int, S_IRUGO);
++module_param_named(start, synth_txprt.startup, short, S_IRUGO);
++
++MODULE_PARM_DESC(ser, "Set the serial port for the synthesizer (0-based).");
++MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
++
++static int __init txprt_init(void)
++{
++ return synth_add(&synth_txprt);
++}
++
++static void __exit txprt_exit(void)
++{
++ synth_remove(&synth_txprt);
++}
++
++module_init(txprt_init);
++module_exit(txprt_exit);
++MODULE_AUTHOR("Kirk Reiser <kirk@braille.uwo.ca>");
++MODULE_AUTHOR("David Borowski");
++MODULE_DESCRIPTION("Speakup support for Transport synthesizers");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
+--- a/drivers/staging/speakup/spk_priv.h 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/spk_priv.h 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,93 @@
++/* spk_priv.h
++ review functions for the speakup screen review package.
++ originally written by: Kirk Reiser and Andy Berdan.
++
++ extensively modified by David Borowski.
++
++ Copyright (C) 1998 Kirk Reiser.
++ Copyright (C) 2003 David Borowski.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; if not, write to the Free Software
++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++*/
++#ifndef _SPEAKUP_PRIVATE_H
++#define _SPEAKUP_PRIVATE_H
++
++#include "spk_types.h"
++#include "spk_priv_keyinfo.h"
++
++#ifndef pr_warn
++#define pr_warn(fmt, arg...) printk(KERN_WARNING fmt, ##arg)
++#endif
++
++#define V_LAST_VAR { MAXVARS }
++#define SPACE 0x20
++#define SYNTH_CHECK 20030716 /* today's date ought to do for check value */
++/* synth flags, for odd synths */
++#define SF_DEC 1 /* to fiddle puncs in alpha strings so it doesn't spell */
++#ifdef MODULE
++#define SYNTH_START 1
++#else
++#define SYNTH_START 0
++#endif
++
++#define KT_SPKUP 15
++
++extern struct serial_state *spk_serial_init(int index);
++extern void stop_serial_interrupt(void);
++extern int wait_for_xmitr(void);
++extern unsigned char spk_serial_in(void);
++extern unsigned char spk_serial_in_nowait(void);
++extern int spk_serial_out(const char ch);
++extern void spk_serial_release(void);
++
++extern char synth_buffer_getc(void);
++extern char synth_buffer_peek(void);
++extern int synth_buffer_empty(void);
++extern struct var_t *get_var(enum var_id_t var_id);
++extern ssize_t spk_var_show(struct kobject *kobj, struct kobj_attribute *attr,
++ char *buf);
++extern ssize_t spk_var_store(struct kobject *kobj, struct kobj_attribute *attr,
++ const char *buf, size_t count);
++
++extern int serial_synth_probe(struct spk_synth *synth);
++extern const char *spk_synth_immediate(struct spk_synth *synth, const char *buff);
++extern void spk_do_catch_up(struct spk_synth *synth);
++extern void spk_synth_flush(struct spk_synth *synth);
++extern int spk_synth_is_alive_nop(struct spk_synth *synth);
++extern int spk_synth_is_alive_restart(struct spk_synth *synth);
++extern void synth_printf(const char *buf, ...);
++extern int synth_request_region(u_long, u_long);
++extern int synth_release_region(u_long, u_long);
++extern int synth_add(struct spk_synth *in_synth);
++extern void synth_remove(struct spk_synth *in_synth);
++
++extern struct speakup_info_t speakup_info;
++
++extern struct var_t synth_time_vars[];
++
++/* Protect the whole speakup machinery, must be taken at each kernel->speakup
++ * transition and released at all corresponding speakup->kernel transitions
++ * (flags must be the same variable between lock/trylock and unlock).
++ *
++ * The progression thread only interferes with the speakup machinery through
++ * the synth buffer, and so only needs to take the lock while tinkering with
++ * it.
++ */
++/* Speakup needs to disable the keyboard IRQ, hence _irqsave/restore */
++#define spk_lock(flags) spin_lock_irqsave(&speakup_info.spinlock, flags)
++#define spk_trylock(flags) spin_trylock_irqsave(&speakup_info.spinlock, flags)
++#define spk_unlock(flags) spin_unlock_irqrestore(&speakup_info.spinlock, flags)
++
++#endif
+--- a/drivers/staging/speakup/spk_priv_keyinfo.h 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/spk_priv_keyinfo.h 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,110 @@
++/* spk_priv.h
++ review functions for the speakup screen review package.
++ originally written by: Kirk Reiser and Andy Berdan.
++
++ extensively modified by David Borowski.
++
++ Copyright (C) 1998 Kirk Reiser.
++ Copyright (C) 2003 David Borowski.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; if not, write to the Free Software
++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++*/
++
++#ifndef _SPEAKUP_KEYINFO_H
++#define _SPEAKUP_KEYINFO_H
++
++#define FIRST_SYNTH_VAR RATE
++/* 0 is reserved for no remap */
++#define SPEAKUP_GOTO 0x01
++#define SPEECH_KILL 0x02
++#define SPEAKUP_QUIET 0x03
++#define SPEAKUP_CUT 0x04
++#define SPEAKUP_PASTE 0x05
++#define SAY_FIRST_CHAR 0x06
++#define SAY_LAST_CHAR 0x07
++#define SAY_CHAR 0x08
++#define SAY_PREV_CHAR 0x09
++#define SAY_NEXT_CHAR 0x0a
++#define SAY_WORD 0x0b
++#define SAY_PREV_WORD 0x0c
++#define SAY_NEXT_WORD 0x0d
++#define SAY_LINE 0x0e
++#define SAY_PREV_LINE 0x0f
++#define SAY_NEXT_LINE 0x10
++#define TOP_EDGE 0x11
++#define BOTTOM_EDGE 0x12
++#define LEFT_EDGE 0x13
++#define RIGHT_EDGE 0x14
++#define SPELL_PHONETIC 0x15
++#define SPELL_WORD 0x16
++#define SAY_SCREEN 0x17
++#define SAY_POSITION 0x18
++#define SAY_ATTRIBUTES 0x19
++#define SPEAKUP_OFF 0x1a
++#define SPEAKUP_PARKED 0x1b
++#define SAY_LINE_INDENT 0x1c
++#define SAY_FROM_TOP 0x1d
++#define SAY_TO_BOTTOM 0x1e
++#define SAY_FROM_LEFT 0x1f
++#define SAY_TO_RIGHT 0x20
++#define SAY_CHAR_NUM 0x21
++#define EDIT_SOME 0x22
++#define EDIT_MOST 0x23
++#define SAY_PHONETIC_CHAR 0x24
++#define EDIT_DELIM 0x25
++#define EDIT_REPEAT 0x26
++#define EDIT_EXNUM 0x27
++#define SET_WIN 0x28
++#define CLEAR_WIN 0x29
++#define ENABLE_WIN 0x2a
++#define SAY_WIN 0x2b
++#define SPK_LOCK 0x2c
++#define SPEAKUP_HELP 0x2d
++#define TOGGLE_CURSORING 0x2e
++#define READ_ALL_DOC 0x2f
++#define SPKUP_MAX_FUNC 0x30 /* one greater than the last func handler */
++
++#define SPK_KEY 0x80
++#define FIRST_EDIT_BITS 0x22
++
++#define FIRST_SET_VAR SPELL_DELAY
++#define VAR_START 0x40 /* increase if adding more than 0x3f functions */
++
++/* keys for setting variables, must be ordered same as the enum for var_ids */
++/* with dec being even and inc being 1 greater */
++#define SPELL_DELAY_DEC VAR_START+0
++#define SPELL_DELAY_INC SPELL_DELAY_DEC+1
++#define PUNC_LEVEL_DEC SPELL_DELAY_DEC+2
++#define PUNC_LEVEL_INC PUNC_LEVEL_DEC+1
++#define READING_PUNC_DEC PUNC_LEVEL_DEC+2
++#define READING_PUNC_INC READING_PUNC_DEC+1
++#define ATTRIB_BLEEP_DEC READING_PUNC_DEC+2
++#define ATTRIB_BLEEP_INC ATTRIB_BLEEP_DEC+1
++#define BLEEPS_DEC ATTRIB_BLEEP_DEC+2
++#define BLEEPS_INC BLEEPS_DEC+1
++#define RATE_DEC BLEEPS_DEC+2
++#define RATE_INC RATE_DEC+1
++#define PITCH_DEC RATE_DEC+2
++#define PITCH_INC PITCH_DEC+1
++#define VOL_DEC PITCH_DEC+2
++#define VOL_INC VOL_DEC+1
++#define TONE_DEC VOL_DEC+2
++#define TONE_INC TONE_DEC+1
++#define PUNCT_DEC TONE_DEC+2
++#define PUNCT_INC PUNCT_DEC+1
++#define VOICE_DEC PUNCT_DEC+2
++#define VOICE_INC VOICE_DEC+1
++
++#endif
+--- a/drivers/staging/speakup/spk_types.h 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/spk_types.h 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,185 @@
++#ifndef SPEAKUP_TYPES_H
++#define SPEAKUP_TYPES_H
++
++/*
++ * This file includes all of the typedefs and structs used in speakup.
++ */
++
++#include <linux/types.h>
++#include <linux/fs.h>
++#include <linux/errno.h>
++#include <linux/delay.h>
++#include <linux/wait.h> /* for wait_queue */
++#include <linux/init.h> /* for __init */
++#include <linux/module.h>
++#include <linux/vt_kern.h>
++#include <linux/spinlock.h>
++#include <linux/mutex.h>
++#include <linux/io.h> /* for inb_p, outb_p, inb, outb, etc... */
++
++enum var_type_t {
++ VAR_NUM = 0,
++ VAR_TIME,
++ VAR_STRING,
++ VAR_PROC
++};
++
++enum {
++ E_DEFAULT = 0,
++ E_SET,
++ E_INC,
++ E_DEC
++};
++
++enum var_id_t {
++ VERSION = 0, SYNTH, SILENT, SYNTH_DIRECT,
++ KEYMAP, CHARS,
++ PUNC_SOME, PUNC_MOST, PUNC_ALL,
++ DELIM, REPEATS, EXNUMBER,
++ DELAY, TRIGGER, JIFFY, FULL, /* all timers must be together */
++ BLEEP_TIME, CURSOR_TIME, BELL_POS,
++SAY_CONTROL, SAY_WORD_CTL, NO_INTERRUPT, KEY_ECHO,
++ SPELL_DELAY, PUNC_LEVEL, READING_PUNC,
++ ATTRIB_BLEEP, BLEEPS,
++ RATE, PITCH, VOL, TONE, PUNCT, VOICE, FREQUENCY, LANG, DIRECT,
++ CAPS_START, CAPS_STOP, CHARTAB,
++ MAXVARS
++};
++
++typedef int (*special_func)(struct vc_data *vc, u_char type, u_char ch,
++ u_short key);
++
++#define COLOR_BUFFER_SIZE 160
++
++struct spk_highlight_color_track{
++ /* Count of each background color */
++ unsigned int bgcount[8];
++ /* Buffer for characters drawn with each background color */
++ char highbuf[8][COLOR_BUFFER_SIZE];
++ /* Current index into highbuf */
++ unsigned int highsize[8];
++ /* Reading Position for each color */
++ u_long rpos[8], rx[8], ry[8];
++ /* Real Cursor Y Position */
++ ulong cy;
++};
++
++struct st_spk_t {
++ u_long reading_x, cursor_x;
++ u_long reading_y, cursor_y;
++ u_long reading_pos, cursor_pos;
++ u_long go_x, go_pos;
++ u_long w_top, w_bottom, w_left, w_right;
++ u_char w_start, w_enabled;
++ u_char reading_attr, old_attr;
++ char parked, shut_up;
++ struct spk_highlight_color_track ht;
++ int tty_stopped;
++};
++
++/* now some defines to make these easier to use. */
++#define spk_shut_up speakup_console[vc->vc_num]->shut_up
++#define spk_killed (speakup_console[vc->vc_num]->shut_up & 0x40)
++#define spk_x speakup_console[vc->vc_num]->reading_x
++#define spk_cx speakup_console[vc->vc_num]->cursor_x
++#define spk_y speakup_console[vc->vc_num]->reading_y
++#define spk_cy speakup_console[vc->vc_num]->cursor_y
++#define spk_pos (speakup_console[vc->vc_num]->reading_pos)
++#define spk_cp speakup_console[vc->vc_num]->cursor_pos
++#define goto_pos (speakup_console[vc->vc_num]->go_pos)
++#define goto_x (speakup_console[vc->vc_num]->go_x)
++#define win_top (speakup_console[vc->vc_num]->w_top)
++#define win_bottom (speakup_console[vc->vc_num]->w_bottom)
++#define win_left (speakup_console[vc->vc_num]->w_left)
++#define win_right (speakup_console[vc->vc_num]->w_right)
++#define win_start (speakup_console[vc->vc_num]->w_start)
++#define win_enabled (speakup_console[vc->vc_num]->w_enabled)
++#define spk_attr speakup_console[vc->vc_num]->reading_attr
++#define spk_old_attr speakup_console[vc->vc_num]->old_attr
++#define spk_parked speakup_console[vc->vc_num]->parked
++
++struct st_var_header {
++ char *name;
++ enum var_id_t var_id;
++ enum var_type_t var_type;
++ void *p_val; /* ptr to programs variable to store value */
++ void *data; /* ptr to the vars data */
++};
++
++struct num_var_t {
++ char *synth_fmt;
++ int default_val;
++ int low;
++ int high;
++ short offset, multiplier; /* for fiddling rates etc. */
++ char *out_str; /* if synth needs char representation of number */
++ int value; /* current value */
++};
++
++struct punc_var_t {
++ enum var_id_t var_id;
++ short value;
++};
++
++struct string_var_t {
++ char *default_val;
++};
++
++struct var_t {
++ enum var_id_t var_id;
++ union {
++ struct num_var_t n;
++ struct string_var_t s;
++ } u;
++};
++
++struct st_bits_data { /* punc, repeats, word delim bits */
++ char *name;
++ char *value;
++ short mask;
++};
++
++struct synth_indexing {
++ char *command;
++ unsigned char lowindex;
++ unsigned char highindex;
++ unsigned char currindex;
++};
++
++struct spk_synth {
++ const char *name;
++ const char *version;
++ const char *long_name;
++ const char *init;
++ char procspeech;
++ char clear;
++ int delay;
++ int trigger;
++ int jiffies;
++ int full;
++ int ser;
++ short flags;
++ short startup;
++ const int checkval; /* for validating a proper synth module */
++ struct var_t *vars;
++ int (*probe)(struct spk_synth *synth);
++ void (*release)(void);
++ const char *(*synth_immediate)(struct spk_synth *synth, const char *buff);
++ void (*catch_up)(struct spk_synth *synth);
++ void (*flush)(struct spk_synth *synth);
++ int (*is_alive)(struct spk_synth *synth);
++ int (*synth_adjust)(struct st_var_header *var);
++ void (*read_buff_add)(u_char);
++ unsigned char (*get_index)(void);
++ struct synth_indexing indexing;
++ int alive;
++ struct attribute_group attributes;
++};
++
++struct speakup_info_t {
++ spinlock_t spinlock;
++ int port_tts;
++ int flushing;
++};
++
++#endif
+--- a/drivers/staging/speakup/synth.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/synth.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,458 @@
++#include <linux/types.h>
++#include <linux/ctype.h> /* for isdigit() and friends */
++#include <linux/fs.h>
++#include <linux/mm.h> /* for verify_area */
++#include <linux/errno.h> /* for -EBUSY */
++#include <linux/ioport.h> /* for check_region, request_region */
++#include <linux/interrupt.h>
++#include <linux/delay.h> /* for loops_per_sec */
++#include <linux/kmod.h>
++#include <linux/jiffies.h>
++#include <linux/uaccess.h> /* for copy_from_user */
++#include <linux/sched.h>
++#include <linux/timer.h>
++#include <linux/kthread.h>
++
++#include "spk_priv.h"
++#include "speakup.h"
++#include "serialio.h"
++
++#define MAXSYNTHS 16 /* Max number of synths in array. */
++static struct spk_synth *synths[MAXSYNTHS];
++struct spk_synth *synth = NULL;
++char pitch_buff[32] = "";
++static int module_status;
++int quiet_boot;
++
++struct speakup_info_t speakup_info = {
++ .spinlock = SPIN_LOCK_UNLOCKED,
++ .flushing = 0,
++};
++EXPORT_SYMBOL_GPL(speakup_info);
++
++static int do_synth_init(struct spk_synth *in_synth);
++
++int serial_synth_probe(struct spk_synth *synth)
++{
++ struct serial_state *ser;
++ int failed = 0;
++
++ if ((synth->ser >= SPK_LO_TTY) && (synth->ser <= SPK_HI_TTY)) {
++ ser = spk_serial_init(synth->ser);
++ if (ser == NULL) {
++ failed = -1;
++ } else {
++ outb_p(0, ser->port);
++ mdelay(1);
++ outb_p('\r', ser->port);
++ }
++ } else {
++ failed = -1;
++ pr_warn("ttyS%i is an invalid port\n", synth->ser);
++ }
++ if (failed) {
++ pr_info("%s: not found\n", synth->long_name);
++ return -ENODEV;
++ }
++ pr_info("%s: ttyS%i, Driver Version %s\n",
++ synth->long_name, synth->ser, synth->version);
++ synth->alive = 1;
++ return 0;
++}
++EXPORT_SYMBOL_GPL(serial_synth_probe);
++
++/* Main loop of the progression thread: keep eating from the buffer
++ * and push to the serial port, waiting as needed
++ *
++ * For devices that have a "full" notification mecanism, the driver can
++ * adapt the loop the way they prefer.
++ */
++void spk_do_catch_up(struct spk_synth *synth)
++{
++ u_char ch;
++ unsigned long flags;
++ unsigned long jiff_max;
++ struct var_t *delay_time;
++ struct var_t *full_time;
++ struct var_t *jiffy_delta;
++ int jiffy_delta_val;
++ int delay_time_val;
++ int full_time_val;
++
++ jiffy_delta = get_var(JIFFY);
++ full_time = get_var(FULL);
++ delay_time = get_var(DELAY);
++
++ spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ spk_unlock(flags);
++
++ jiff_max = jiffies + jiffy_delta_val;
++ while (!kthread_should_stop()) {
++ spk_lock(flags);
++ if (speakup_info.flushing) {
++ speakup_info.flushing = 0;
++ spk_unlock(flags);
++ synth->flush(synth);
++ continue;
++ }
++ if (synth_buffer_empty()) {
++ spk_unlock(flags);
++ break;
++ }
++ ch = synth_buffer_peek();
++ set_current_state(TASK_INTERRUPTIBLE);
++ full_time_val = full_time->u.n.value;
++ spk_unlock(flags);
++ if (ch == '\n')
++ ch = synth->procspeech;
++ if (!spk_serial_out(ch)) {
++ schedule_timeout(msecs_to_jiffies(full_time_val));
++ continue;
++ }
++ if ((jiffies >= jiff_max) && (ch == SPACE)) {
++ spk_lock(flags);
++ jiffy_delta_val = jiffy_delta->u.n.value;
++ delay_time_val = delay_time->u.n.value;
++ full_time_val = full_time->u.n.value;
++ spk_unlock(flags);
++ if (spk_serial_out(synth->procspeech))
++ schedule_timeout(msecs_to_jiffies(delay_time_val));
++ else
++ schedule_timeout(msecs_to_jiffies(full_time_val));
++ jiff_max = jiffies + jiffy_delta_val;
++ }
++ set_current_state(TASK_RUNNING);
++ spk_lock(flags);
++ synth_buffer_getc();
++ spk_unlock(flags);
++ }
++ spk_serial_out(synth->procspeech);
++}
++EXPORT_SYMBOL_GPL(spk_do_catch_up);
++
++const char *spk_synth_immediate(struct spk_synth *synth, const char *buff)
++{
++ u_char ch;
++ while ((ch = *buff)) {
++ if (ch == '\n')
++ ch = synth->procspeech;
++ if (wait_for_xmitr())
++ outb(ch, speakup_info.port_tts);
++ else
++ return buff;
++ buff++;
++ }
++ return 0;
++}
++EXPORT_SYMBOL_GPL(spk_synth_immediate);
++
++void spk_synth_flush(struct spk_synth *synth)
++{
++ spk_serial_out(synth->clear);
++}
++EXPORT_SYMBOL_GPL(spk_synth_flush);
++
++int spk_synth_is_alive_nop(struct spk_synth *synth)
++{
++ synth->alive = 1;
++ return 1;
++}
++EXPORT_SYMBOL_GPL(spk_synth_is_alive_nop);
++
++int spk_synth_is_alive_restart(struct spk_synth *synth)
++{
++ if (synth->alive)
++ return 1;
++ if (!synth->alive && wait_for_xmitr() > 0) {
++ /* restart */
++ synth->alive = 1;
++ synth_printf("%s", synth->init);
++ return 2; /* reenabled */
++ }
++ pr_warn("%s: can't restart synth\n", synth->long_name);
++ return 0;
++}
++EXPORT_SYMBOL_GPL(spk_synth_is_alive_restart);
++
++static void thread_wake_up(u_long data)
++{
++ wake_up_interruptible_all(&speakup_event);
++}
++
++static DEFINE_TIMER(thread_timer, thread_wake_up, 0, 0);
++
++void synth_start(void)
++{
++ struct var_t *trigger_time;
++
++ if (!synth->alive) {
++ synth_buffer_clear();
++ return;
++ }
++ trigger_time = get_var(TRIGGER);
++ if (!timer_pending(&thread_timer))
++ mod_timer(&thread_timer, jiffies + msecs_to_jiffies(trigger_time->u.n.value));
++}
++
++void do_flush(void)
++{
++ speakup_info.flushing = 1;
++ synth_buffer_clear();
++ if (synth->alive) {
++ if (pitch_shift) {
++ synth_printf("%s", pitch_buff);
++ pitch_shift = 0;
++ }
++ }
++ wake_up_interruptible_all(&speakup_event);
++ wake_up_process(speakup_task);
++}
++
++void synth_write(const char *buf, size_t count)
++{
++ while (count--)
++ synth_buffer_add(*buf++);
++ synth_start();
++}
++
++void synth_printf(const char *fmt, ...)
++{
++ va_list args;
++ unsigned char buf[160], *p;
++ int r;
++
++ va_start(args, fmt);
++ r = vsnprintf(buf, sizeof(buf), fmt, args);
++ va_end(args);
++ if (r > sizeof(buf) - 1)
++ r = sizeof(buf) - 1;
++
++ p = buf;
++ while (r--)
++ synth_buffer_add(*p++);
++ synth_start();
++}
++EXPORT_SYMBOL_GPL(synth_printf);
++
++static int index_count = 0;
++static int sentence_count = 0;
++
++void reset_index_count(int sc)
++{
++ static int first = 1;
++ if (first)
++ first = 0;
++ else
++ synth->get_index();
++ index_count = 0;
++ sentence_count = sc;
++}
++
++int synth_supports_indexing(void)
++{
++ if (synth->get_index != NULL)
++ return 1;
++ return 0;
++}
++
++void synth_insert_next_index(int sent_num)
++{
++ int out;
++ if (synth->alive) {
++ if (sent_num == 0) {
++ synth->indexing.currindex++;
++ index_count++;
++ if (synth->indexing.currindex >
++ synth->indexing.highindex)
++ synth->indexing.currindex =
++ synth->indexing.lowindex;
++ }
++
++ out = synth->indexing.currindex * 10 + sent_num;
++ synth_printf(synth->indexing.command, out, out);
++ }
++}
++
++void get_index_count(int *linecount, int *sentcount)
++{
++ int ind = synth->get_index();
++ if (ind) {
++ sentence_count = ind % 10;
++
++ if ((ind / 10) <= synth->indexing.currindex)
++ index_count = synth->indexing.currindex-(ind/10);
++ else
++ index_count = synth->indexing.currindex-synth->indexing.lowindex
++ + synth->indexing.highindex-(ind/10)+1;
++
++ }
++ *sentcount = sentence_count;
++ *linecount = index_count;
++}
++
++static struct resource synth_res;
++
++int synth_request_region(unsigned long start, unsigned long n)
++{
++ struct resource *parent = &ioport_resource;
++ memset(&synth_res, 0, sizeof(synth_res));
++ synth_res.name = synth->name;
++ synth_res.start = start;
++ synth_res.end = start + n - 1;
++ synth_res.flags = IORESOURCE_BUSY;
++ return request_resource(parent, &synth_res);
++}
++EXPORT_SYMBOL_GPL(synth_request_region);
++
++int synth_release_region(unsigned long start, unsigned long n)
++{
++ return release_resource(&synth_res);
++}
++EXPORT_SYMBOL_GPL(synth_release_region);
++
++struct var_t synth_time_vars[] = {
++ { DELAY, .u.n = {NULL, 100, 100, 2000, 0, 0, NULL }},
++ { TRIGGER, .u.n = {NULL, 20, 10, 2000, 0, 0, NULL }},
++ { JIFFY, .u.n = {NULL, 50, 20, 200, 0, 0, NULL }},
++ { FULL, .u.n = {NULL, 400, 200, 60000, 0, 0, NULL }},
++ V_LAST_VAR
++};
++
++/* called by: speakup_init() */
++int synth_init(char *synth_name)
++{
++ int i;
++ int ret = 0;
++ struct spk_synth *synth = NULL;
++
++ if (synth_name == NULL)
++ return 0;
++
++ if (strcmp(synth_name, "none") == 0) {
++ mutex_lock(&spk_mutex);
++ synth_release();
++ mutex_unlock(&spk_mutex);
++ return 0;
++ }
++
++ mutex_lock(&spk_mutex);
++ /* First, check if we already have it loaded. */
++ for (i = 0; synths[i] != NULL && i < MAXSYNTHS; i++)
++ if (strcmp(synths[i]->name, synth_name) == 0)
++ synth = synths[i];
++
++ /* If we got one, initialize it now. */
++ if (synth)
++ ret = do_synth_init(synth);
++ else
++ ret = -ENODEV;
++ mutex_unlock(&spk_mutex);
++
++ return ret;
++}
++
++/* called by: synth_add() */
++static int do_synth_init(struct spk_synth *in_synth)
++{
++ struct var_t *var;
++
++ synth_release();
++ if (in_synth->checkval != SYNTH_CHECK)
++ return -EINVAL;
++ synth = in_synth;
++ synth->alive = 0;
++ pr_warn("synth probe\n");
++ if (synth->probe(synth) < 0) {
++ pr_warn("%s: device probe failed\n", in_synth->name);
++ synth = NULL;
++ return -ENODEV;
++ }
++ synth_time_vars[0].u.n.value =
++ synth_time_vars[0].u.n.default_val = synth->delay;
++ synth_time_vars[1].u.n.value =
++ synth_time_vars[1].u.n.default_val = synth->trigger;
++ synth_time_vars[2].u.n.value =
++ synth_time_vars[2].u.n.default_val = synth->jiffies;
++ synth_time_vars[3].u.n.value =
++ synth_time_vars[3].u.n.default_val = synth->full;
++ synth_printf("%s", synth->init);
++ for (var = synth->vars; (var->var_id >= 0) && (var->var_id < MAXVARS); var++)
++ speakup_register_var(var);
++ if (!quiet_boot)
++ synth_printf("%s found\n", synth->long_name);
++ if (synth->attributes.name
++ && sysfs_create_group(speakup_kobj, &(synth->attributes)) < 0)
++ return -ENOMEM;
++ synth_flags = synth->flags;
++ wake_up_interruptible_all(&speakup_event);
++ if (speakup_task)
++ wake_up_process(speakup_task);
++ return 0;
++}
++
++void synth_release(void)
++{
++ struct var_t *var;
++ unsigned long flags;
++
++ if (synth == NULL)
++ return;
++ spk_lock(flags);
++ pr_info("releasing synth %s\n", synth->name);
++ synth->alive = 0;
++ del_timer(&thread_timer);
++ spk_unlock(flags);
++ if (synth->attributes.name)
++ sysfs_remove_group(speakup_kobj, &(synth->attributes));
++ for (var = synth->vars; var->var_id != MAXVARS; var++)
++ speakup_unregister_var(var->var_id);
++ stop_serial_interrupt();
++ synth->release();
++ synth = NULL;
++}
++
++/* called by: all_driver_init() */
++int synth_add(struct spk_synth *in_synth)
++{
++ int i;
++ int status = 0;
++ mutex_lock(&spk_mutex);
++ for (i = 0; synths[i] != NULL && i < MAXSYNTHS; i++)
++ /* synth_remove() is responsible for rotating the array down */
++ if (in_synth == synths[i]) {
++ mutex_unlock(&spk_mutex);
++ return 0;
++ }
++ if (i == MAXSYNTHS) {
++ pr_warn("Error: attempting to add a synth past end of array\n");
++ mutex_unlock(&spk_mutex);
++ return -1;
++ }
++ synths[i++] = in_synth;
++ synths[i] = NULL;
++ if (in_synth->startup)
++ status = do_synth_init(in_synth);
++ mutex_unlock(&spk_mutex);
++ return status;
++}
++EXPORT_SYMBOL_GPL(synth_add);
++
++void synth_remove(struct spk_synth *in_synth)
++{
++ int i;
++ mutex_lock(&spk_mutex);
++ if (synth == in_synth)
++ synth_release();
++ for (i = 0; synths[i] != NULL; i++) {
++ if (in_synth == synths[i])
++ break;
++ }
++ for ( ; synths[i] != NULL; i++) /* compress table */
++ synths[i] = synths[i+1];
++ module_status = 0;
++ mutex_unlock(&spk_mutex);
++}
++EXPORT_SYMBOL_GPL(synth_remove);
++
++short punc_masks[] = { 0, SOME, MOST, PUNC, PUNC|B_SYM };
+--- a/drivers/staging/speakup/thread.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/thread.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,47 @@
++#include <linux/kthread.h>
++#include <linux/wait.h>
++
++#include "spk_types.h"
++#include "speakup.h"
++#include "spk_priv.h"
++
++DECLARE_WAIT_QUEUE_HEAD(speakup_event);
++EXPORT_SYMBOL_GPL(speakup_event);
++
++int speakup_thread(void *data)
++{
++ unsigned long flags;
++ int should_break;
++
++ mutex_lock(&spk_mutex);
++ while (1) {
++ DEFINE_WAIT(wait);
++ while(1) {
++ spk_lock(flags);
++ prepare_to_wait(&speakup_event, &wait, TASK_INTERRUPTIBLE);
++ should_break = kthread_should_stop() ||
++ (synth && synth->catch_up && synth->alive &&
++ (speakup_info.flushing ||
++ !synth_buffer_empty()));
++ spk_unlock(flags);
++ if (should_break)
++ break;
++ mutex_unlock(&spk_mutex);
++ schedule();
++ mutex_lock(&spk_mutex);
++ }
++ finish_wait(&speakup_event, &wait);
++ if (kthread_should_stop())
++ break;
++
++ if (synth && synth->catch_up && synth->alive) {
++ /* It is up to the callee to take the lock, so that it
++ * can sleep whenever it likes */
++ synth->catch_up(synth);
++ }
++
++ speakup_start_ttys();
++ }
++ mutex_unlock(&spk_mutex);
++ return 0;
++}
+--- a/drivers/staging/speakup/varhandlers.c 1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/staging/speakup/varhandlers.c 2009-08-13 01:21:12.000000000 +0100
+@@ -0,0 +1,395 @@
++#include <linux/ctype.h>
++#include "spk_types.h"
++#include "spk_priv.h"
++#include "speakup.h"
++
++static struct st_var_header var_headers[] = {
++ { "version", VERSION, VAR_PROC, NULL, NULL },
++ { "synth_name", SYNTH, VAR_PROC, NULL, NULL },
++ { "keymap", KEYMAP, VAR_PROC, NULL, NULL },
++ { "silent", SILENT, VAR_PROC, NULL, NULL },
++ { "punc_some", PUNC_SOME, VAR_PROC, NULL, NULL },
++ { "punc_most", PUNC_MOST, VAR_PROC, NULL, NULL },
++ { "punc_all", PUNC_ALL, VAR_PROC, NULL, NULL },
++ { "delimiters", DELIM, VAR_PROC, NULL, NULL },
++ { "repeats", REPEATS, VAR_PROC, NULL, NULL },
++ { "ex_num", EXNUMBER, VAR_PROC, NULL, NULL },
++ { "characters", CHARS, VAR_PROC, NULL, NULL },
++ { "synth_direct", SYNTH_DIRECT, VAR_PROC, NULL, NULL },
++ { "caps_start", CAPS_START, VAR_STRING, str_caps_start, NULL },
++ { "caps_stop", CAPS_STOP, VAR_STRING, str_caps_stop, NULL },
++ { "delay_time", DELAY, VAR_TIME, NULL, NULL },
++ { "trigger_time", TRIGGER, VAR_TIME, NULL, NULL },
++ { "jiffy_delta", JIFFY, VAR_TIME, NULL, NULL },
++ { "full_time", FULL, VAR_TIME, NULL, NULL },
++ { "spell_delay", SPELL_DELAY, VAR_NUM, &spell_delay, NULL },
++ { "bleeps", BLEEPS, VAR_NUM, &bleeps, NULL },
++ { "attrib_bleep", ATTRIB_BLEEP, VAR_NUM, &attrib_bleep, NULL },
++ { "bleep_time", BLEEP_TIME, VAR_TIME, &bleep_time, NULL },
++ { "cursor_time", CURSOR_TIME, VAR_TIME, NULL, NULL },
++ { "punc_level", PUNC_LEVEL, VAR_NUM, &punc_level, NULL },
++ { "reading_punc", READING_PUNC, VAR_NUM, &reading_punc, NULL },
++ { "say_control", SAY_CONTROL, VAR_NUM, &say_ctrl, NULL },
++ { "say_word_ctl", SAY_WORD_CTL, VAR_NUM, &say_word_ctl, NULL },
++ { "no_interrupt", NO_INTERRUPT, VAR_NUM, &no_intr, NULL },
++ { "key_echo", KEY_ECHO, VAR_NUM, &key_echo, NULL },
++ { "bell_pos", BELL_POS, VAR_NUM, &bell_pos, NULL },
++ { "rate", RATE, VAR_NUM, NULL, NULL },
++ { "pitch", PITCH, VAR_NUM, NULL, NULL },
++ { "vol", VOL, VAR_NUM, NULL, NULL },
++ { "tone", TONE, VAR_NUM, NULL, NULL },
++ { "punct", PUNCT, VAR_NUM, NULL, NULL },
++ { "voice", VOICE, VAR_NUM, NULL, NULL },
++ { "freq", FREQUENCY, VAR_NUM, NULL, NULL },
++ { "lang", LANG, VAR_NUM, NULL, NULL },
++ { "chartab", CHARTAB, VAR_PROC, NULL, NULL },
++ { "direct", DIRECT, VAR_NUM, NULL, NULL },
++};
++
++static struct st_var_header *var_ptrs[MAXVARS] = { 0, 0, 0 };
++
++static struct punc_var_t punc_vars[] = {
++ { PUNC_SOME, 1 },
++ { PUNC_MOST, 2 },
++ { PUNC_ALL, 3 },
++ { DELIM, 4 },
++ { REPEATS, 5 },
++ { EXNUMBER, 6 },
++ { -1, -1 },
++};
++
++int chartab_get_value(char *keyword)
++{
++ int value = 0;
++
++ if (!strcmp(keyword, "ALPHA"))
++ value = ALPHA;
++ else if (!strcmp(keyword, "B_CTL"))
++ value = B_CTL;
++ else if (!strcmp(keyword, "WDLM"))
++ value = WDLM;
++ else if (!strcmp(keyword, "A_PUNC"))
++ value = A_PUNC;
++ else if (!strcmp(keyword, "PUNC"))
++ value = PUNC;
++ else if (!strcmp(keyword, "NUM"))
++ value = NUM;
++ else if (!strcmp(keyword, "A_CAP"))
++ value = A_CAP;
++ else if (!strcmp(keyword, "B_CAPSYM"))
++ value = B_CAPSYM;
++ else if (!strcmp(keyword, "B_SYM"))
++ value = B_SYM;
++ return value;
++}
++
++void speakup_register_var(struct var_t *var)
++{
++ static char nothing[2] = "\0";
++ int i;
++ struct st_var_header *p_header;
++
++ BUG_ON(!var || var->var_id < 0 || var->var_id >= MAXVARS);
++ if (var_ptrs[0] == NULL) {
++ for (i = 0; i < MAXVARS; i++) {
++ p_header = &var_headers[i];
++ var_ptrs[p_header->var_id] = p_header;
++ p_header->data = NULL;
++ }
++ }
++ p_header = var_ptrs[var->var_id];
++ if (p_header->data != NULL)
++ return;
++ p_header->data = var;
++ switch (p_header->var_type) {
++ case VAR_STRING:
++ set_string_var(nothing, p_header, 0);
++ break;
++ case VAR_NUM:
++ case VAR_TIME:
++ set_num_var(0, p_header, E_DEFAULT);
++ break;
++ default:
++ break;
++ }
++ return;
++}
++
++void speakup_unregister_var(enum var_id_t var_id)
++{
++ struct st_var_header *p_header;
++ BUG_ON(var_id < 0 || var_id >= MAXVARS);
++ p_header = var_ptrs[var_id];
++ p_header->data = NULL;
++}
++
++struct st_var_header *get_var_header(enum var_id_t var_id)
++{
++ struct st_var_header *p_header;
++ if (var_id < 0 || var_id >= MAXVARS)
++ return NULL;
++ p_header = var_ptrs[var_id];
++ if (p_header->data == NULL)
++ return NULL;
++ return p_header;
++}
++
++struct st_var_header *var_header_by_name(const char *name)
++{
++ int i;
++ struct st_var_header *where = NULL;
++
++ if (name != NULL) {
++ i = 0;
++ while ((i < MAXVARS) && (where == NULL)) {
++ if (strcmp(name, var_ptrs[i]->name) == 0)
++ where = var_ptrs[i];
++ else
++ i++;
++ }
++ }
++ return where;
++}
++
++struct var_t *get_var(enum var_id_t var_id)
++{
++ BUG_ON(var_id < 0 || var_id >= MAXVARS);
++ BUG_ON(! var_ptrs[var_id]);
++ return (var_ptrs[var_id]->data);
++}
++EXPORT_SYMBOL_GPL(get_var);
++
++struct punc_var_t *get_punc_var(enum var_id_t var_id)
++{
++ struct punc_var_t *rv = NULL;
++ struct punc_var_t *where;
++
++ where = punc_vars;
++ while ((where->var_id != -1) && (rv == NULL)) {
++ if (where->var_id == var_id)
++ rv = where;
++ else
++ where++;
++ }
++ return rv;
++}
++
++/* handlers for setting vars */
++int set_num_var(int input, struct st_var_header *var, int how)
++{
++ int val;
++ short ret = 0;
++ int *p_val = var->p_val;
++ int l;
++ char buf[32];
++ char *cp;
++ struct var_t *var_data = var->data;
++ if (var_data == NULL)
++ return E_UNDEF;
++ if (how == E_DEFAULT) {
++ val = var_data->u.n.default_val;
++ ret = SET_DEFAULT;
++ } else {
++ if (how == E_SET)
++ val = input;
++ else
++ val = var_data->u.n.value;
++ if (how == E_INC)
++ val += input;
++ else if (how == E_DEC)
++ val -= input;
++ if (val < var_data->u.n.low || val > var_data->u.n.high)
++ return E_RANGE;
++ }
++ var_data->u.n.value = val;
++ if (var->var_type == VAR_TIME && p_val != NULL) {
++ *p_val = msecs_to_jiffies(val);
++ return ret;
++ }
++ if (p_val != NULL)
++ *p_val = val;
++ if (var->var_id == PUNC_LEVEL) {
++ punc_mask = punc_masks[val];
++ return ret;
++ }
++ if (var_data->u.n.multiplier != 0)
++ val *= var_data->u.n.multiplier;
++ val += var_data->u.n.offset;
++ if (var->var_id < FIRST_SYNTH_VAR || synth == NULL)
++ return ret;
++ if (synth->synth_adjust != NULL) {
++ int status = synth->synth_adjust(var);
++ return (status != 0) ? status : ret;
++ }
++ if (!var_data->u.n.synth_fmt)
++ return ret;
++ if (var->var_id == PITCH)
++ cp = pitch_buff;
++ else
++ cp = buf;
++ if (!var_data->u.n.out_str)
++ l = sprintf(cp, var_data->u.n.synth_fmt, (int)val);
++ else
++ l = sprintf(cp, var_data->u.n.synth_fmt, var_data->u.n.out_str[val]);
++ synth_printf("%s", cp);
++ return ret;
++}
++
++int set_string_var(const char *page, struct st_var_header *var, int len)
++{
++ int ret = 0;
++ struct var_t *var_data = var->data;
++ if (var_data == NULL)
++ return E_UNDEF;
++ if (len > MAXVARLEN)
++ return -E_TOOLONG;
++ if (!len) {
++ if (!var_data->u.s.default_val)
++ return 0;
++ ret = SET_DEFAULT;
++ if (!var->p_val)
++ var->p_val = var_data->u.s.default_val;
++ if (var->p_val != var_data->u.s.default_val)
++ strcpy((char *)var->p_val, var_data->u.s.default_val);
++ } else if (var->p_val)
++ strcpy((char *)var->p_val, page);
++ else
++ return -E_TOOLONG;
++ return ret;
++}
++
++/* set_mask_bits sets or clears the punc/delim/repeat bits,
++ * if input is null uses the defaults.
++ * values for how: 0 clears bits of chars supplied,
++ * 1 clears allk, 2 sets bits for chars */
++int set_mask_bits(const char *input, const int which, const int how)
++{
++ u_char *cp;
++ short mask = punc_info[which].mask;
++ if (how&1) {
++ for (cp = (u_char *)punc_info[3].value; *cp; cp++)
++ spk_chartab[*cp] &= ~mask;
++ }
++ cp = (u_char *)input;
++ if (cp == 0)
++ cp = punc_info[which].value;
++ else {
++ for ( ; *cp; cp++) {
++ if (*cp < SPACE)
++ break;
++ if (mask < PUNC) {
++ if (!(spk_chartab[*cp]&PUNC))
++ break;
++ } else if (spk_chartab[*cp]&B_NUM)
++ break;
++ }
++ if (*cp)
++ return -EINVAL;
++ cp = (u_char *)input;
++ }
++ if (how&2) {
++ for ( ; *cp; cp++)
++ if (*cp > SPACE)
++ spk_chartab[*cp] |= mask;
++ } else {
++ for ( ; *cp; cp++)
++ if (*cp > SPACE)
++ spk_chartab[*cp] &= ~mask;
++ }
++ return 0;
++}
++
++char *strlwr(char *s)
++{
++ char *p;
++ if (s == NULL)
++ return NULL;
++
++ for (p = s; *p; p++)
++ *p = tolower(*p);
++ return s;
++}
++
++char *speakup_s2i(char *start, int *dest)
++{
++ int val;
++ char ch = *start;
++ if (ch == '-' || ch == '+')
++ start++;
++ if (*start < '0' || *start > '9')
++ return start;
++ val = (*start) - '0';
++ start++;
++ while (*start >= '0' && *start <= '9') {
++ val *= 10;
++ val += (*start) - '0';
++ start++;
++ }
++ if (ch == '-')
++ *dest = -val;
++ else
++ *dest = val;
++ return start;
++}
++
++char *s2uchar(char *start, char *dest)
++{
++ int val = 0;
++ while (*start && *start <= SPACE)
++ start++;
++ while (*start >= '0' && *start <= '9') {
++ val *= 10;
++ val += (*start) - '0';
++ start++;
++ }
++ if (*start == ',')
++ start++;
++ *dest = (u_char)val;
++ return start;
++}
++
++char *xlate(char *s)
++{
++ static const char finds[] = "nrtvafe";
++ static const char subs[] = "\n\r\t\013\001\014\033";
++ static const char hx[] = "0123456789abcdefABCDEF";
++ char *p = s, *p1, *p2, c;
++ int num;
++ while ((p = strchr(p, '\\'))) {
++ p1 = p+1;
++ p2 = strchr(finds, *p1);
++ if (p2) {
++ *p++ = subs[p2-finds];
++ p1++;
++ } else if (*p1 >= '0' && *p1 <= '7') {
++ num = (*p1++)&7;
++ while (num < 256 && *p1 >= '0' && *p1 <= '7') {
++ num <<= 3;
++ num = (*p1++)&7;
++ }
++ *p++ = num;
++ } else if (*p1 == 'x' &&
++ strchr(hx, p1[1]) && strchr(hx, p1[2])) {
++ p1++;
++ c = *p1++;
++ if (c > '9')
++ c = (c - '7') & 0x0f;
++ else
++ c -= '0';
++ num = c << 4;
++ c = *p1++;
++ if (c > '9')
++ c = (c-'7')&0x0f;
++ else
++ c -= '0';
++ num += c;
++ *p++ = num;
++ } else
++ *p++ = *p1++;
++ p2 = p;
++ while (*p1)
++ *p2++ = *p1++;
++ *p2 = '\0';
++ }
++ return s;
++}
diff --git a/patches/features/all/speakup/speakup-kbuild.patch b/patches/features/all/speakup/speakup-kbuild.patch
new file mode 100644
index 0000000..aec7a48
--- /dev/null
+++ b/patches/features/all/speakup/speakup-kbuild.patch
@@ -0,0 +1,28 @@
+From: Ben Hutchings <ben@decadent.org.uk>
+Subject: [PATCH] speakup: integrate into kbuild
+
+--- a/drivers/staging/Kconfig
++++ b/drivers/staging/Kconfig
+@@ -126,6 +126,8 @@
+ source "drivers/staging/netwave/Kconfig"
+
+ source "drivers/staging/sm7xx/Kconfig"
++
++source "drivers/staging/speakup/Kconfig"
+
+ endif # !STAGING_EXCLUDE_BUILD
+ endif # STAGING
+--- a/drivers/staging/Makefile
++++ b/drivers/staging/Makefile
+@@ -45,3 +45,4 @@
+ obj-$(CONFIG_PCMCIA_WAVELAN) += wavelan/
+ obj-$(CONFIG_PCMCIA_NETWAVE) += netwave/
+ obj-$(CONFIG_FB_SM7XX) += sm7xx/
++obj-$(CONFIG_SPEAKUP) += speakup/
+--- a/drivers/staging/speakup/Kbuild
++++ b/drivers/staging/speakup/Kbuild
+@@ -1,4 +1,3 @@
+-include $M/allmodule.mk
+ obj-$(CONFIG_SPEAKUP_SYNTH_ACNTSA) += speakup_acntsa.o
+ obj-$(CONFIG_SPEAKUP_SYNTH_ACNTPC) += speakup_acntpc.o
+ obj-$(CONFIG_SPEAKUP_SYNTH_APOLLO) += speakup_apollo.o
diff --git a/patches/features/all/vserver/bindmount-dev.patch b/patches/features/all/vserver/bindmount-dev.patch
deleted file mode 100644
index 2cb2706..0000000
--- a/patches/features/all/vserver/bindmount-dev.patch
+++ /dev/null
@@ -1,41 +0,0 @@
---- a/fs/namespace.c 2007-02-07 14:15:28.000000000 +0100
-+++ b/fs/namespace.c 2007-02-08 10:57:40.000000000 +0100
-@@ -988,6 +988,9 @@ static int do_loopback(struct nameidata
- if (!mnt)
- goto out;
-
-+ if (!capable(CAP_SYS_ADMIN) && (old_nd.path.mnt->mnt_flags & MNT_NODEV))
-+ mnt_flags |= MNT_NODEV;
-+
- err = graft_tree(mnt, &nd->path);
- if (err) {
- LIST_HEAD(umount_list);
-@@ -1030,6 +1033,9 @@ static int do_remount(struct nameidata *
- if (nd->path.dentry != nd->path.mnt->mnt_root)
- return -EINVAL;
-
-+ if (!capable(CAP_SYS_ADMIN))
-+ mnt_flags |= MNT_NODEV;
-+
- down_write(&sb->s_umount);
- if (flags & MS_BIND)
- err = change_mount_flags(nd->path.mnt, flags);
-@@ -1138,6 +1144,9 @@ static int do_new_mount(struct nameidata
- if (!vx_capable(CAP_SYS_ADMIN, VXC_SECURE_MOUNT))
- return -EPERM;
-
-+ if (!capable(CAP_SYS_ADMIN))
-+ mnt_flags |= MNT_NODEV;
-+
- mnt = do_kern_mount(type, flags, name, data);
- if (IS_ERR(mnt))
- return PTR_ERR(mnt);
-@@ -1489,8 +1498,6 @@ long do_mount(char *dev_name, char *dir_
- if (flags & MS_RDONLY)
- mnt_flags |= MNT_READONLY;
-
-- if (!capable(CAP_SYS_ADMIN))
-- mnt_flags |= MNT_NODEV;
- flags &= ~(MS_NOSUID | MS_NOEXEC | MS_NODEV | MS_ACTIVE |
- MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT);
-
diff --git a/patches/features/alpha/titan-video.patch b/patches/features/alpha/titan-video.patch
deleted file mode 100644
index 4c4e9d0..0000000
--- a/patches/features/alpha/titan-video.patch
+++ /dev/null
@@ -1,720 +0,0 @@
-diff -uNr source/arch/alpha/Kconfig source-es45/arch/alpha/Kconfig
---- source/arch/alpha/Kconfig 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/arch/alpha/Kconfig 2006-09-30 03:14:44.000000000 -0700
-@@ -469,6 +469,11 @@
- depends on ALPHA_GENERIC || ALPHA_PC164
- default y
-
-+config VGA_HOSE
-+ bool "VGA on arbitrary hose"
-+ depends on ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL || ALPHA_TSUNAMI
-+ default y
-+
- config ALPHA_SRM
- bool "Use SRM as bootloader" if ALPHA_CABRIOLET || ALPHA_AVANTI_CH || ALPHA_EB64P || ALPHA_PC164 || ALPHA_TAKARA || ALPHA_EB164 || ALPHA_ALCOR || ALPHA_MIATA || ALPHA_LX164 || ALPHA_SX164 || ALPHA_NAUTILUS || ALPHA_NONAME
- default y if ALPHA_JENSEN || ALPHA_MIKASA || ALPHA_SABLE || ALPHA_LYNX || ALPHA_NORITAKE || ALPHA_DP264 || ALPHA_RAWHIDE || ALPHA_EIGER || ALPHA_WILDFIRE || ALPHA_TITAN || ALPHA_SHARK || ALPHA_MARVEL
-@@ -626,6 +631,13 @@
-
- source "drivers/Kconfig"
-
-+# DUMMY_CONSOLE may be defined in drivers/video/console/Kconfig
-+# but we also need it if VGA_HOSE is set
-+config DUMMY_CONSOLE
-+ bool
-+ depends on VGA_HOSE
-+ default y
-+
- source "fs/Kconfig"
-
- source "arch/alpha/oprofile/Kconfig"
-diff -uNr source/arch/alpha/kernel/alpha_ksyms.c source-es45/arch/alpha/kernel/alpha_ksyms.c
---- source/arch/alpha/kernel/alpha_ksyms.c 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/arch/alpha/kernel/alpha_ksyms.c 2006-09-30 03:14:44.000000000 -0700
-@@ -206,3 +206,7 @@
- EXPORT_SYMBOL(irongate_ioremap);
- EXPORT_SYMBOL(irongate_iounmap);
- #endif
-+
-+#ifdef CONFIG_VGA_HOSE
-+EXPORT_SYMBOL(pci_vga_hose);
-+#endif
-diff -uNr source/arch/alpha/kernel/console.c source-es45/arch/alpha/kernel/console.c
---- source/arch/alpha/kernel/console.c 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/arch/alpha/kernel/console.c 2006-09-30 03:14:44.000000000 -0700
-@@ -8,17 +8,16 @@
- #include <linux/pci.h>
- #include <linux/init.h>
- #include <linux/tty.h>
-+#include <linux/vt.h>
- #include <linux/console.h>
- #include <asm/vga.h>
- #include <asm/machvec.h>
-
-+#include "pci_impl.h"
-+
- #ifdef CONFIG_VGA_HOSE
-
--/*
-- * Externally-visible vga hose bases
-- */
--unsigned long __vga_hose_io_base = 0; /* base for default hose */
--unsigned long __vga_hose_mem_base = 0; /* base for default hose */
-+struct pci_controller *pci_vga_hose = NULL;
-
- static struct pci_controller * __init
- default_vga_hose_select(struct pci_controller *h1, struct pci_controller *h2)
-@@ -32,10 +31,7 @@
- void __init
- set_vga_hose(struct pci_controller *hose)
- {
-- if (hose) {
-- __vga_hose_io_base = hose->io_space->start;
-- __vga_hose_mem_base = hose->mem_space->start;
-- }
-+ pci_vga_hose = hose;
- }
-
- void __init
-@@ -44,18 +40,18 @@
- struct pci_controller *hose = NULL;
- struct pci_dev *dev = NULL;
-
-+ /* Default the select function */
- if (!sel_func) sel_func = (void *)default_vga_hose_select;
-
-+ /* Find the console VGA device */
- for(dev=NULL; (dev=pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, dev));) {
- if (!hose) hose = dev->sysdata;
- else hose = sel_func(hose, dev->sysdata);
- }
-
-- /* Did we already inititialize the correct one? */
-- if (conswitchp == &vga_con &&
-- __vga_hose_io_base == hose->io_space->start &&
-- __vga_hose_mem_base == hose->mem_space->start)
-- return;
-+ /* Did we already initialize the correct one? Is there one? */
-+ if (!hose || (conswitchp == &vga_con && pci_vga_hose == hose))
-+ return;
-
- /* Set the VGA hose and init the new console */
- set_vga_hose(hose);
-diff -uNr source/arch/alpha/kernel/core_marvel.c source-es45/arch/alpha/kernel/core_marvel.c
---- source/arch/alpha/kernel/core_marvel.c 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/arch/alpha/kernel/core_marvel.c 2006-09-30 03:14:44.000000000 -0700
-@@ -684,9 +684,6 @@
- /*
- * IO map support.
- */
--
--#define __marvel_is_mem_vga(a) (((a) >= 0xa0000) && ((a) <= 0xc0000))
--
- void __iomem *
- marvel_ioremap(unsigned long addr, unsigned long size)
- {
-@@ -698,13 +695,9 @@
- unsigned long pfn;
-
- /*
-- * Adjust the addr.
-+ * Adjust the address.
- */
--#ifdef CONFIG_VGA_HOSE
-- if (pci_vga_hose && __marvel_is_mem_vga(addr)) {
-- addr += pci_vga_hose->mem_space->start;
-- }
--#endif
-+ FIXUP_MEMADDR_VGA(addr);
-
- /*
- * Find the hose.
-@@ -781,7 +774,7 @@
- return (void __iomem *) vaddr;
- }
-
-- return NULL;
-+ return (void __iomem *) NULL;
- }
-
- void
-@@ -803,8 +796,6 @@
- return (addr & 0xFF000000UL) == 0;
- }
-
--#define __marvel_is_port_vga(a) \
-- (((a) >= 0x3b0) && ((a) < 0x3e0) && ((a) != 0x3b3) && ((a) != 0x3d3))
- #define __marvel_is_port_kbd(a) (((a) == 0x60) || ((a) == 0x64))
- #define __marvel_is_port_rtc(a) (((a) == 0x70) || ((a) == 0x71))
-
-@@ -813,7 +804,7 @@
- if (__marvel_is_port_rtc (addr) || __marvel_is_port_kbd(addr))
- ;
- #ifdef CONFIG_VGA_HOSE
-- else if (__marvel_is_port_vga (addr) && pci_vga_hose)
-+ else if (__is_port_vga (addr) && pci_vga_hose)
- addr += pci_vga_hose->io_space->start;
- #endif
- else
-diff -uNr source/arch/alpha/kernel/core_titan.c source-es45/arch/alpha/kernel/core_titan.c
---- source/arch/alpha/kernel/core_titan.c 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/arch/alpha/kernel/core_titan.c 2006-09-30 03:14:44.000000000 -0700
-@@ -35,6 +35,17 @@
- } saved_config[4] __attribute__((common));
-
- /*
-+ * Is PChip 1 present? No need to query it more than once.
-+ */
-+static int titan_pchip1_present;
-+
-+/* hoseno to index mapping */
-+#define H2I(h) ((((h)&2)>>1)|(((h)&1)<<1))
-+/* index to hoseno mapping */
-+#define I2H(i) ((((i)&2)>>1)|(((i)&1)<<1))
-+
-+
-+/*
- * BIOS32-style PCI interface:
- */
-
-@@ -196,14 +207,14 @@
- titan_pci_tbi(struct pci_controller *hose, dma_addr_t start, dma_addr_t end)
- {
- titan_pachip *pachip =
-- (hose->index & 1) ? TITAN_pachip1 : TITAN_pachip0;
-+ (hose->index & 2) ? TITAN_pachip1 : TITAN_pachip0;
- titan_pachip_port *port;
- volatile unsigned long *csr;
- unsigned long value;
-
- /* Get the right hose. */
- port = &pachip->g_port;
-- if (hose->index & 2)
-+ if (hose->index & 1)
- port = &pachip->a_port;
-
- /* We can invalidate up to 8 tlb entries in a go. The flush
-@@ -238,12 +249,12 @@
- }
-
- static void __init
--titan_init_one_pachip_port(titan_pachip_port *port, int index)
-+titan_init_one_pachip_port(titan_pachip_port *port, int hoseno)
- {
- struct pci_controller *hose;
-
- hose = alloc_pci_controller();
-- if (index == 0)
-+ if (hoseno == 0)
- pci_isa_hose = hose;
- hose->io_space = alloc_resource();
- hose->mem_space = alloc_resource();
-@@ -258,47 +269,47 @@
- hose->sparse_mem_base = 0;
- hose->sparse_io_base = 0;
- hose->dense_mem_base
-- = (TITAN_MEM(index) & 0xffffffffffUL) | 0x80000000000UL;
-+ = (TITAN_MEM(hoseno) & 0xffffffffffUL) | 0x80000000000UL;
- hose->dense_io_base
-- = (TITAN_IO(index) & 0xffffffffffUL) | 0x80000000000UL;
-+ = (TITAN_IO(hoseno) & 0xffffffffffUL) | 0x80000000000UL;
-
-- hose->config_space_base = TITAN_CONF(index);
-- hose->index = index;
-+ hose->config_space_base = TITAN_CONF(hoseno);
-+ hose->index = H2I(hoseno);
-
-- hose->io_space->start = TITAN_IO(index) - TITAN_IO_BIAS;
-+ hose->io_space->start = TITAN_IO(hoseno) - TITAN_IO_BIAS;
- hose->io_space->end = hose->io_space->start + TITAN_IO_SPACE - 1;
-- hose->io_space->name = pci_io_names[index];
-+ hose->io_space->name = pci_io_names[hoseno];
- hose->io_space->flags = IORESOURCE_IO;
-
-- hose->mem_space->start = TITAN_MEM(index) - TITAN_MEM_BIAS;
-+ hose->mem_space->start = TITAN_MEM(hoseno) - TITAN_MEM_BIAS;
- hose->mem_space->end = hose->mem_space->start + 0xffffffff;
-- hose->mem_space->name = pci_mem_names[index];
-+ hose->mem_space->name = pci_mem_names[hoseno];
- hose->mem_space->flags = IORESOURCE_MEM;
-
- if (request_resource(&ioport_resource, hose->io_space) < 0)
-- printk(KERN_ERR "Failed to request IO on hose %d\n", index);
-+ printk(KERN_ERR "Failed to request IO on hose %d\n", hoseno);
- if (request_resource(&iomem_resource, hose->mem_space) < 0)
-- printk(KERN_ERR "Failed to request MEM on hose %d\n", index);
-+ printk(KERN_ERR "Failed to request MEM on hose %d\n", hoseno);
-
- /*
- * Save the existing PCI window translations. SRM will
- * need them when we go to reboot.
- */
-- saved_config[index].wsba[0] = port->wsba[0].csr;
-- saved_config[index].wsm[0] = port->wsm[0].csr;
-- saved_config[index].tba[0] = port->tba[0].csr;
--
-- saved_config[index].wsba[1] = port->wsba[1].csr;
-- saved_config[index].wsm[1] = port->wsm[1].csr;
-- saved_config[index].tba[1] = port->tba[1].csr;
--
-- saved_config[index].wsba[2] = port->wsba[2].csr;
-- saved_config[index].wsm[2] = port->wsm[2].csr;
-- saved_config[index].tba[2] = port->tba[2].csr;
--
-- saved_config[index].wsba[3] = port->wsba[3].csr;
-- saved_config[index].wsm[3] = port->wsm[3].csr;
-- saved_config[index].tba[3] = port->tba[3].csr;
-+ saved_config[hoseno].wsba[0] = port->wsba[0].csr;
-+ saved_config[hoseno].wsm[0] = port->wsm[0].csr;
-+ saved_config[hoseno].tba[0] = port->tba[0].csr;
-+
-+ saved_config[hoseno].wsba[1] = port->wsba[1].csr;
-+ saved_config[hoseno].wsm[1] = port->wsm[1].csr;
-+ saved_config[hoseno].tba[1] = port->tba[1].csr;
-+
-+ saved_config[hoseno].wsba[2] = port->wsba[2].csr;
-+ saved_config[hoseno].wsm[2] = port->wsm[2].csr;
-+ saved_config[hoseno].tba[2] = port->tba[2].csr;
-+
-+ saved_config[hoseno].wsba[3] = port->wsba[3].csr;
-+ saved_config[hoseno].wsm[3] = port->wsm[3].csr;
-+ saved_config[hoseno].tba[3] = port->tba[3].csr;
-
- /*
- * Set up the PCI to main memory translation windows.
-@@ -344,14 +355,14 @@
- static void __init
- titan_init_pachips(titan_pachip *pachip0, titan_pachip *pachip1)
- {
-- int pchip1_present = TITAN_cchip->csc.csr & 1L<<14;
-+ titan_pchip1_present = TITAN_cchip->csc.csr & 1L<<14;
-
- /* Init the ports in hose order... */
- titan_init_one_pachip_port(&pachip0->g_port, 0); /* hose 0 */
-- if (pchip1_present)
-+ if (titan_pchip1_present)
- titan_init_one_pachip_port(&pachip1->g_port, 1);/* hose 1 */
- titan_init_one_pachip_port(&pachip0->a_port, 2); /* hose 2 */
-- if (pchip1_present)
-+ if (titan_pchip1_present)
- titan_init_one_pachip_port(&pachip1->a_port, 3);/* hose 3 */
- }
-
-@@ -366,16 +377,18 @@
- int h = (pu64[30] >> 24) & 0xff; /* console hose # */
-
- /*
-- * Our hose numbering matches the console's, so just find
-+ * Our hose numbering does NOT match the console's, so find
- * the right one...
- */
- for (hose = hose_head; hose; hose = hose->next) {
-- if (hose->index == h) break;
-+ if (I2H(hose->index) == h) break;
- }
-
- if (hose) {
-- printk("Console graphics on hose %d\n", hose->index);
-+ printk("Console graphics on hose %d\n", h);
- pci_vga_hose = hose;
-+ } else {
-+ printk("ERROR: Console graphics hose not found\n");
- }
- }
- #endif /* CONFIG_VGA_HOSE */
-@@ -406,6 +419,7 @@
-
- /* With multiple PCI busses, we play with I/O as physical addrs. */
- ioport_resource.end = ~0UL;
-+ iomem_resource.end = ~0UL;
-
- /* PCI DMA Direct Mapping is 1GB at 2GB. */
- __direct_map_base = 0x80000000;
-@@ -441,9 +455,7 @@
- static void
- titan_kill_pachips(titan_pachip *pachip0, titan_pachip *pachip1)
- {
-- int pchip1_present = TITAN_cchip->csc.csr & 1L<<14;
--
-- if (pchip1_present) {
-+ if (titan_pchip1_present) {
- titan_kill_one_pachip_port(&pachip1->g_port, 1);
- titan_kill_one_pachip_port(&pachip1->a_port, 3);
- }
-@@ -474,12 +486,12 @@
- unsigned long *ptes;
- unsigned long pfn;
-
-+#ifdef CONFIG_VGA_HOSE
- /*
-- * Adjust the addr.
-+ * Adjust the address and hose, if necessary.
- */
--#ifdef CONFIG_VGA_HOSE
-- if (pci_vga_hose && __titan_is_mem_vga(addr)) {
-- h = pci_vga_hose->index;
-+ if (pci_vga_hose && __is_mem_vga(addr)) {
-+ h = I2H(pci_vga_hose->index);
- addr += pci_vga_hose->mem_space->start;
- }
- #endif
-@@ -488,7 +500,7 @@
- * Find the hose.
- */
- for (hose = hose_head; hose; hose = hose->next)
-- if (hose->index == h)
-+ if (I2H(hose->index) == h)
- break;
- if (!hose)
- return NULL;
-@@ -521,8 +533,10 @@
- * Map it
- */
- area = get_vm_area(size, VM_IOREMAP);
-- if (!area)
-+ if (!area) {
-+ printk("ioremap failed... no vm_area...\n");
- return NULL;
-+ }
-
- ptes = hose->sg_pci->ptes;
- for (vaddr = (unsigned long)area->addr;
-@@ -539,7 +553,7 @@
- if (__alpha_remap_area_pages(vaddr,
- pfn << PAGE_SHIFT,
- PAGE_SIZE, 0)) {
-- printk("FAILED to map...\n");
-+ printk("FAILED to remap_area_pages...\n");
- vfree(area->addr);
- return NULL;
- }
-@@ -551,7 +565,8 @@
- return (void __iomem *) vaddr;
- }
-
-- return NULL;
-+ /* Assume a legacy (read: VGA) address, and return appropriately. */
-+ return (void __iomem *)(addr + TITAN_MEM_BIAS);
- }
-
- void
-@@ -750,6 +765,7 @@
- if (titan_query_agp(port))
- hosenum = 2;
- if (hosenum < 0 &&
-+ titan_pchip1_present &&
- titan_query_agp(port = &TITAN_pachip1->a_port))
- hosenum = 3;
-
-@@ -757,7 +773,7 @@
- * Find the hose the port is on.
- */
- for (hose = hose_head; hose; hose = hose->next)
-- if (hose->index == hosenum)
-+ if (I2H(hose->index) == hosenum)
- break;
-
- if (!hose || !hose->sg_pci)
-diff -uNr source/arch/alpha/kernel/core_tsunami.c source-es45/arch/alpha/kernel/core_tsunami.c
---- source/arch/alpha/kernel/core_tsunami.c 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/arch/alpha/kernel/core_tsunami.c 2006-09-30 03:14:44.000000000 -0700
-@@ -349,6 +349,32 @@
- tsunami_pci_tbi(hose, 0, -1);
- }
-
-+static void __init
-+tsunami_init_vga_hose(void)
-+{
-+#ifdef CONFIG_VGA_HOSE
-+ u64 *pu64 = (u64 *)((u64)hwrpb + hwrpb->ctbt_offset);
-+
-+ if (pu64[7] == 3) { /* TERM_TYPE == graphics */
-+ struct pci_controller *hose;
-+ int h = (pu64[30] >> 24) & 0xff; /* console hose # */
-+
-+ /*
-+ * Our hose numbering does NOT match the console's, so find
-+ * the right one...
-+ */
-+ for (hose = hose_head; hose; hose = hose->next) {
-+ if (hose->index == h) break;
-+ }
-+
-+ if (hose) {
-+ printk("Console graphics on hose %d\n", h);
-+ pci_vga_hose = hose;
-+ }
-+ }
-+#endif /* CONFIG_VGA_HOSE */
-+}
-+
- void __init
- tsunami_init_arch(void)
- {
-@@ -393,6 +419,9 @@
- tsunami_init_one_pchip(TSUNAMI_pchip0, 0);
- if (TSUNAMI_cchip->csc.csr & 1L<<14)
- tsunami_init_one_pchip(TSUNAMI_pchip1, 1);
-+
-+ /* Check for graphic console location (if any). */
-+ tsunami_init_vga_hose();
- }
-
- static void
-diff -uNr source/arch/alpha/kernel/proto.h source-es45/arch/alpha/kernel/proto.h
---- source/arch/alpha/kernel/proto.h 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/arch/alpha/kernel/proto.h 2006-09-30 03:14:44.000000000 -0700
-@@ -106,6 +106,9 @@
- extern unsigned long wildfire_node_mem_start(int);
- extern unsigned long wildfire_node_mem_size(int);
-
-+/* console.c */
-+ extern void locate_and_init_vga(void *(*)(void *, void *));
-+
- /* setup.c */
- extern unsigned long srm_hae;
- extern int boot_cpuid;
-diff -uNr source/arch/alpha/kernel/setup.c source-es45/arch/alpha/kernel/setup.c
---- source/arch/alpha/kernel/setup.c 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/arch/alpha/kernel/setup.c 2006-09-30 03:14:44.000000000 -0700
-@@ -787,9 +787,9 @@
- static int rawhide_indices[] = {0,0,0,1,1,2,2,3,3,4,4};
-
- static char titan_names[][16] = {
-- "DEFAULT", "Privateer", "Falcon", "Granite"
-+ "DEFAULT", "Privateer", "Falcon", "Granite", "HyperBrick2"
- };
--static int titan_indices[] = {0,1,2,2,3};
-+static int titan_indices[] = {0,1,2,2,3,4};
-
- static char tsunami_names[][16] = {
- "0", "DP264", "Warhol", "Windjammer", "Monet", "Clipper",
-@@ -891,6 +891,7 @@
- &privateer_mv, /* privateer */
- &titan_mv, /* falcon */
- &privateer_mv, /* granite */
-+ &titan_mv, /* hyperbrick2 */
- };
-
- static struct alpha_machine_vector *tsunami_vecs[] __initdata =
-diff -uNr source/arch/alpha/kernel/sys_dp264.c source-es45/arch/alpha/kernel/sys_dp264.c
---- source/arch/alpha/kernel/sys_dp264.c 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/arch/alpha/kernel/sys_dp264.c 2006-09-30 03:14:44.000000000 -0700
-@@ -42,6 +42,14 @@
- /* dp264 boards handle at max four CPUs */
- static unsigned long cpu_irq_affinity[4] = { 0UL, 0UL, 0UL, 0UL };
-
-+#ifdef CONFIG_VGA_HOSE
-+extern void locate_and_init_vga(void *(*handler)(void *, void *));
-+#else
-+static inline void locate_and_init_vga(void *(*handler)(void *, void *))
-+{
-+}
-+#endif
-+
- DEFINE_SPINLOCK(dp264_irq_lock);
-
- static void
-@@ -543,6 +551,7 @@
- {
- common_init_pci();
- SMC669_Init(0);
-+ locate_and_init_vga(NULL);
- }
-
- static void __init
-@@ -551,6 +560,14 @@
- common_init_pci();
- SMC669_Init(1);
- es1888_init();
-+ locate_and_init_vga(NULL);
-+}
-+
-+static void __init
-+clipper_init_pci(void)
-+{
-+ common_init_pci();
-+ locate_and_init_vga(NULL);
- }
-
- static void __init
-@@ -655,7 +672,7 @@
- .init_arch = tsunami_init_arch,
- .init_irq = clipper_init_irq,
- .init_rtc = common_init_rtc,
-- .init_pci = common_init_pci,
-+ .init_pci = clipper_init_pci,
- .kill_arch = tsunami_kill_arch,
- .pci_map_irq = clipper_map_irq,
- .pci_swizzle = common_swizzle,
-diff -uNr source/drivers/video/console/vgacon.c source-es45/drivers/video/console/vgacon.c
---- source/drivers/video/console/vgacon.c 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/drivers/video/console/vgacon.c 2006-09-30 03:14:44.000000000 -0700
-@@ -52,6 +52,11 @@
- #include <video/vga.h>
- #include <asm/io.h>
-
-+/* wait until after includes to test for this, to allow arch-specific mod. */
-+#ifndef vga_request_resource
-+# define vga_request_resource request_resource
-+#endif
-+
- static DEFINE_SPINLOCK(vga_lock);
- static int cursor_size_lastfrom;
- static int cursor_size_lastto;
-@@ -393,7 +398,7 @@
- vga_video_type = VIDEO_TYPE_EGAM;
- vga_vram_size = 0x8000;
- display_desc = "EGA+";
-- request_resource(&ioport_resource,
-+ vga_request_resource(&ioport_resource,
- &ega_console_resource);
- } else {
- static struct resource mda1_console_resource =
-@@ -403,9 +408,9 @@
- vga_video_type = VIDEO_TYPE_MDA;
- vga_vram_size = 0x2000;
- display_desc = "*MDA";
-- request_resource(&ioport_resource,
-+ vga_request_resource(&ioport_resource,
- &mda1_console_resource);
-- request_resource(&ioport_resource,
-+ vga_request_resource(&ioport_resource,
- &mda2_console_resource);
- vga_video_font_height = 14;
- }
-@@ -425,14 +430,14 @@
- = { .name = "ega", .start = 0x3C0, .end = 0x3DF };
- vga_video_type = VIDEO_TYPE_EGAC;
- display_desc = "EGA";
-- request_resource(&ioport_resource,
-+ vga_request_resource(&ioport_resource,
- &ega_console_resource);
- } else {
- static struct resource vga_console_resource
- = { .name = "vga+", .start = 0x3C0, .end = 0x3DF };
- vga_video_type = VIDEO_TYPE_VGAC;
- display_desc = "VGA+";
-- request_resource(&ioport_resource,
-+ vga_request_resource(&ioport_resource,
- &vga_console_resource);
-
- #ifdef VGA_CAN_DO_64KB
-@@ -477,7 +482,7 @@
- vga_video_type = VIDEO_TYPE_CGA;
- vga_vram_size = 0x2000;
- display_desc = "*CGA";
-- request_resource(&ioport_resource,
-+ vga_request_resource(&ioport_resource,
- &cga_console_resource);
- vga_video_font_height = 8;
- }
-diff -uNr source/include/asm-alpha/core_titan.h source-es45/include/asm-alpha/core_titan.h
---- source/include/asm-alpha/core_titan.h 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/include/asm-alpha/core_titan.h 2006-09-30 03:14:44.000000000 -0700
-@@ -3,6 +3,7 @@
-
- #include <linux/types.h>
- #include <linux/pci.h>
-+#include <asm/pci.h>
- #include <asm/compiler.h>
-
- /*
-@@ -383,6 +384,7 @@
-
- __EXTERN_INLINE void __iomem *titan_ioportmap(unsigned long addr)
- {
-+ FIXUP_IOADDR_VGA(addr);
- return (void __iomem *)(addr + TITAN_IO_BIAS);
- }
-
-diff -uNr source/include/asm-alpha/core_tsunami.h source-es45/include/asm-alpha/core_tsunami.h
---- source/include/asm-alpha/core_tsunami.h 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/include/asm-alpha/core_tsunami.h 2006-09-30 03:14:44.000000000 -0700
-@@ -2,6 +2,8 @@
- #define __ALPHA_TSUNAMI__H__
-
- #include <linux/types.h>
-+#include <linux/pci.h>
-+#include <asm/pci.h>
- #include <asm/compiler.h>
-
- /*
-@@ -305,12 +307,14 @@
-
- __EXTERN_INLINE void __iomem *tsunami_ioportmap(unsigned long addr)
- {
-+ FIXUP_IOADDR_VGA(addr);
- return (void __iomem *)(addr + TSUNAMI_IO_BIAS);
- }
-
- __EXTERN_INLINE void __iomem *tsunami_ioremap(unsigned long addr,
- unsigned long size)
- {
-+ FIXUP_MEMADDR_VGA(addr);
- return (void __iomem *)(addr + TSUNAMI_MEM_BIAS);
- }
-
-diff -uNr source/include/asm-alpha/io.h source-es45/include/asm-alpha/io.h
---- source/include/asm-alpha/io.h 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/include/asm-alpha/io.h 2006-09-30 03:14:44.000000000 -0700
-@@ -126,6 +126,30 @@
- return (long)address <= 0 ? NULL : virt;
- }
-
-+#ifdef CONFIG_VGA_HOSE
-+extern struct pci_controller *pci_vga_hose;
-+
-+# define __is_port_vga(a) \
-+ (((a) >= 0x3b0) && ((a) < 0x3e0) && \
-+ ((a) != 0x3b3) && ((a) != 0x3d3))
-+
-+# define __is_mem_vga(a) \
-+ (((a) >= 0xa0000) && ((a) <= 0xc0000))
-+
-+# define FIXUP_IOADDR_VGA(a) do { \
-+ if (pci_vga_hose && __is_port_vga(a)) \
-+ a += pci_vga_hose->io_space->start; \
-+ } while(0)
-+
-+# define FIXUP_MEMADDR_VGA(a) do { \
-+ if (pci_vga_hose && __is_mem_vga(a)) \
-+ a += pci_vga_hose->io_space->start; \
-+ } while(0)
-+
-+#else /* CONFIG_VGA_HOSE */
-+# define FIXUP_IOADDR_VGA(a)
-+#endif /* CONFIG_VGA_HOSE */
-+
- /*
- * There are different chipsets to interface the Alpha CPUs to the world.
- */
-diff -uNr source/include/asm-alpha/vga.h source-es45/include/asm-alpha/vga.h
---- source/include/asm-alpha/vga.h 2006-09-19 20:42:06.000000000 -0700
-+++ source-es45/include/asm-alpha/vga.h 2006-09-30 03:14:44.000000000 -0700
-@@ -48,4 +48,26 @@
-
- #define VGA_MAP_MEM(x,s) ((unsigned long) ioremap(x, s))
-
-+#ifdef CONFIG_VGA_HOSE
-+#include <linux/ioport.h>
-+#include <linux/pci.h>
-+
-+extern struct pci_controller *pci_vga_hose;
-+
-+#define vga_request_resource alpha_vga_request_resource
-+
-+static int inline
-+alpha_vga_request_resource(struct resource *root, struct resource *new)
-+{
-+ /* First, fixup the VGA resource bounds WRT the hose it is on. */
-+ if (pci_vga_hose) {
-+ new->start += pci_vga_hose->io_space->start;
-+ new->end += pci_vga_hose->io_space->start;
-+ }
-+
-+ /* Finally, do a normal request_resource(). */
-+ return request_resource(root, new);
-+}
-+#endif /* CONFIG_VGA_HOSE */
-+
- #endif
diff --git a/patches/features/arm/compression-add-lzma.patch b/patches/features/arm/compression-add-lzma.patch
new file mode 100644
index 0000000..4318ad2
--- /dev/null
+++ b/patches/features/arm/compression-add-lzma.patch
@@ -0,0 +1,42 @@
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -19,6 +19,7 @@ config ARM
+ select HAVE_FUNCTION_TRACER if (!XIP_KERNEL)
+ select HAVE_GENERIC_DMA_COHERENT
+ select HAVE_KERNEL_GZIP
++ select HAVE_KERNEL_LZMA
+ select HAVE_KERNEL_LZO
+ help
+ The ARM series is a line of low-power-consumption RISC chip designs
+--- a/arch/arm/boot/compressed/Makefile
++++ b/arch/arm/boot/compressed/Makefile
+@@ -64,6 +64,7 @@ endif
+ SEDFLAGS = s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/
+
+ suffix_$(CONFIG_KERNEL_GZIP) = gzip
++suffix_$(CONFIG_KERNEL_LZMA) = lzma
+ suffix_$(CONFIG_KERNEL_LZO) = lzo
+
+ targets := vmlinux vmlinux.lds \
+--- a/arch/arm/boot/compressed/misc.c
++++ b/arch/arm/boot/compressed/misc.c
+@@ -237,6 +237,10 @@ static unsigned long free_mem_end_ptr;
+ #include "../../../../lib/decompress_inflate.c"
+ #endif
+
++#ifdef CONFIG_KERNEL_LZMA
++#include "../../../../lib/decompress_unlzma.c"
++#endif
++
+ #ifdef CONFIG_KERNEL_LZO
+ #include "../../../../lib/decompress_unlzo.c"
+ #endif
+--- /dev/null
++++ b/arch/arm/boot/compressed/piggy.lzma.S
+@@ -0,0 +1,6 @@
++ .section .piggydata,#alloc
++ .globl input_data
++input_data:
++ .incbin "arch/arm/boot/compressed/piggy.lzma"
++ .globl input_data_end
++input_data_end:
diff --git a/patches/features/arm/openrd-client.patch b/patches/features/arm/openrd-client.patch
new file mode 100644
index 0000000..592638a
--- /dev/null
+++ b/patches/features/arm/openrd-client.patch
@@ -0,0 +1,135 @@
+--- a/arch/arm/mach-kirkwood/Kconfig 2009-09-25 19:49:01.000000000 +0000
++++ b/arch/arm/mach-kirkwood/Kconfig 2009-09-25 19:50:08.000000000 +0000
+@@ -52,6 +52,12 @@
+ Say 'Y' here if you want your kernel to support the
+ Marvell OpenRD Base Board.
+
++config MACH_OPENRD_CLIENT
++ bool "Marvell OpenRD Client Board"
++ help
++ Say 'Y' here if you want your kernel to support the
++ Marvell OpenRD Client Board.
++
+ config MACH_NETSPACE_V2
+ bool "LaCie Network Space v2 NAS Board"
+ help
+--- a/arch/arm/mach-kirkwood/Makefile 2009-09-25 19:49:07.000000000 +0000
++++ b/arch/arm/mach-kirkwood/Makefile 2009-09-25 19:49:29.000000000 +0000
+@@ -8,6 +8,7 @@
+ obj-$(CONFIG_MACH_TS219) += ts219-setup.o
+ obj-$(CONFIG_MACH_TS41X) += ts41x-setup.o tsx1x-common.o
+ obj-$(CONFIG_MACH_OPENRD_BASE) += openrd_base-setup.o
++obj-$(CONFIG_MACH_OPENRD_CLIENT) += openrd_client-setup.o
+ obj-$(CONFIG_MACH_NETSPACE_V2) += netspace_v2-setup.o
+
+ obj-$(CONFIG_CPU_IDLE) += cpuidle.o
+--- /dev/null 2008-06-15 07:07:41.000000000 +0000
++++ b/arch/arm/mach-kirkwood/openrd_client-setup.c 2009-09-25 19:52:36.000000000 +0000
+@@ -0,0 +1,107 @@
++/*
++ * arch/arm/mach-kirkwood/openrd_client-setup.c
++ *
++ * Marvell OpenRD Base Client Setup
++ *
++ * This file is licensed under the terms of the GNU General Public
++ * License version 2. This program is licensed "as is" without any
++ * warranty of any kind, whether express or implied.
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/partitions.h>
++#include <linux/ata_platform.h>
++#include <linux/mv643xx_eth.h>
++#include <linux/gpio.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <mach/kirkwood.h>
++#include <plat/mvsdio.h>
++#include "common.h"
++#include "mpp.h"
++
++static struct mtd_partition openrd_client_nand_parts[] = {
++ {
++ .name = "u-boot",
++ .offset = 0,
++ .size = SZ_1M
++ }, {
++ .name = "uImage",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = SZ_4M
++ }, {
++ .name = "root",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = MTDPART_SIZ_FULL
++ },
++};
++
++static struct mv643xx_eth_platform_data openrd_client_ge00_data = {
++ .phy_addr = MV643XX_ETH_PHY_ADDR(8),
++};
++
++static struct mv643xx_eth_platform_data openrd_client_ge01_data = {
++ .phy_addr = MV643XX_ETH_PHY_ADDR(24),
++};
++
++static struct mv_sata_platform_data openrd_client_sata_data = {
++ .n_ports = 2,
++};
++
++static struct mvsdio_platform_data openrd_client_mvsdio_data = {
++ .gpio_card_detect = 29, /* MPP29 used as SD card detect */
++};
++
++static unsigned int openrd_client_mpp_config[] __initdata = {
++ MPP29_GPIO,
++ 0
++};
++
++static void __init openrd_client_init(void)
++{
++ /*
++ * Basic setup. Needs to be called early.
++ */
++ kirkwood_init();
++ kirkwood_mpp_conf(openrd_client_mpp_config);
++
++ kirkwood_uart0_init();
++ kirkwood_uart1_init();
++ kirkwood_nand_init(ARRAY_AND_SIZE(openrd_client_nand_parts), 25);
++
++ kirkwood_ehci_init();
++
++ /* initialize gbe0 and gbe1 */
++ kirkwood_ge00_init(&openrd_client_ge00_data);
++ kirkwood_ge01_init(&openrd_client_ge01_data);
++
++ kirkwood_sata_init(&openrd_client_sata_data);
++ kirkwood_sdio_init(&openrd_client_mvsdio_data);
++
++ kirkwood_i2c_init();
++}
++
++static int __init openrd_client_pci_init(void)
++{
++if (machine_is_openrd_client())
++ kirkwood_pcie_init();
++
++ return 0;
++}
++subsys_initcall(openrd_client_pci_init);
++
++
++
++
++MACHINE_START(OPENRD_CLIENT, "Marvell OpenRD Client Board")
++ /* Maintainer: Dhaval Vasa <dhaval.vasa@einfochips.com> */
++ .phys_io = KIRKWOOD_REGS_PHYS_BASE,
++ .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc,
++ .boot_params = 0x00000100,
++ .init_machine = openrd_client_init,
++ .map_io = kirkwood_map_io,
++ .init_irq = kirkwood_init_irq,
++ .timer = &kirkwood_timer,
++MACHINE_END
diff --git a/patches/features/sparc/video-sunxvr500-intergraph.patch b/patches/features/sparc/video-sunxvr500-intergraph.patch
index f56431d..dc03e60 100644
--- a/patches/features/sparc/video-sunxvr500-intergraph.patch
+++ b/patches/features/sparc/video-sunxvr500-intergraph.patch
@@ -5,19 +5,7 @@ diff -aur a/drivers/video/sunxvr500.c b/drivers/video/sunxvr500.c
static struct pci_device_id e3d_pci_table[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_3DLABS, 0x7a0), },
-+ { PCI_DEVICE(PCI_VENDOR_ID_IGRAPH, 0x7a0), },
++ { PCI_DEVICE(0x1091, 0x7a0), },
{ PCI_DEVICE(PCI_VENDOR_ID_3DLABS, 0x7a2), },
{ .vendor = PCI_VENDOR_ID_3DLABS,
.device = PCI_ANY_ID,
-diff -aur a/include/linux/pci_ids.h b/include/linux/pci_ids.h
---- a/include/linux/pci_ids.h 2008-11-20 18:02:37.000000000 -0500
-+++ b/include/linux/pci_ids.h 2008-12-01 15:43:04.000000000 -0500
-@@ -930,6 +930,8 @@
- #define PCI_DEVICE_ID_SUN_TOMATILLO 0xa801
- #define PCI_DEVICE_ID_SUN_CASSINI 0xabba
-
-+#define PCI_VENDOR_ID_IGRAPH 0x1091
-+
- #define PCI_VENDOR_ID_CMD 0x1095
- #define PCI_DEVICE_ID_CMD_643 0x0643
- #define PCI_DEVICE_ID_CMD_646 0x0646
diff --git a/patches/series/base b/patches/series/base
index 4f33e03..1734d9d 100644
--- a/patches/series/base
+++ b/patches/series/base
@@ -6,27 +6,51 @@
+ debian/drivers-ata-ata_piix-postpone-pata.patch
+ debian/drivers-ata-pata_sis-postpone-pata.patch
-+ features/all/drivers-gpu-drm-mga-request_firmware.patch
-+ features/all/drivers-gpu-drm-r128-request_firmware.patch
-+ features/all/drivers-gpu-drm-radeon-request_firmware.patch
-+ features/all/drivers-net-cxgb3-request_firmware.patch
-# rt2860sta and rt2870sta need ITU-T CRC on bit-reversed data
-+ features/all/lib-crcitut-bit-reversed.patch
-+ features/all/drivers-staging-rt28x0sta-request_firmware.patch
-+ features/all/export-unionfs-symbols.patch
-
-+ bugfix/sparc/drivers_net-broken.patch
++ features/all/drivers-infiniband-hw-ipath-iba7220-use-request_firmware.patch
++ features/all/drivers-media-dvb-usb-af9005-request_firmware.patch
+
++ features/all/rt28x0sta-constify-RTUSBMultiWrite-RTUSBFirmwareWrite.patch
++ features/all/rt28x0sta-use-request_firmware.patch
++ features/all/lgs8gxx-lgs8g75-request_firmware.patch
++ features/all/r8169-rtl8168d-1-2-request_firmware-2.patch
++ features/all/sound-pci-cs46xx-request_firmware.patch
+
++ features/all/module-firmware/0025-tty-declare-MODULE_FIRMWARE-in-various-drivers.patch
++ features/all/module-firmware/0026-staging-declare-MODULE_FIRMWARE-in-various-drivers.patch
++ features/all/module-firmware/0027-sep-include-driver-name-in-firmware-filenames.patch
++ features/all/module-firmware/0028-sep-declare-MODULE_FIRMWARE.patch
++ features/all/module-firmware/0029-isight-firmware-declare-MODULE_FIRMWARE.patch
+
+# FIXME: 2.6.33 tree
+# patches from aufs2 repository, with s/EXPORT_SYMBOL/&_GPL/
+
+# content of src/ from speakup package; generated with:
+# diff -ur --unidirectional-new-file nonexistent src | filterdiff --strip=1 --addoldprefix=a/drivers/staging/speakup/ --addnewprefix=b/drivers/staging/speakup/
++ features/all/speakup/speakup-add.patch
++ features/all/speakup/speakup-kbuild.patch
+
#+ bugfix/ia64/hardcode-arch-script-output.patch
+ bugfix/mips/disable-advansys.patch
+ bugfix/arm/disable-scsi_acard.patch
+ bugfix/mips/disable-werror.patch
-+ bugfix/fix-hifn_795X-divdi3.patch
-+ bugfix/powerpc/mm-mol.patch
+ bugfix/powerpc/lpar-console.patch
#+ bugfix/all/wireless-regulatory-default-EU.patch
-#+ features/sparc/video-sunxvr500-intergraph.patch
-#+ bugfix/sparc/arch-zimage-target.patch
-### stuff that will hopefully be fixed in the next rc
-#+ bugfix/arm/export-flush_dcache_page.patch
-+ bugfix/all/add-missing-mtd-include.patch
-+ bugfix/mips/fix-smp.patch
++ features/sparc/video-sunxvr500-intergraph.patch
++ bugfix/all/drivers-scsi-qla1280-request-firmware-unlocked.patch
++ debian/dfsg/radeon-add-clarifying-comment-to-r600-blit.patch
++ features/arm/compression-add-lzma.patch
++ features/arm/openrd-client.patch
+
++ features/all/i915-autoload-without-CONFIG_DRM_I915_KMS.patch
+
++ bugfix/ia64/ia64-Include-linux-personality.h-header-in-asm-fcntl.patch
+
++ bugfix/all/cxusb-Select-all-required-frontend-and-tuner-modules.patch
+
++ bugfix/x86/kvm-fix-memory-access-during-x86-emulation.patch
++ bugfix/x86/kvm-Check-IOPL-level-during-io-instruction-emulation.patch
++ bugfix/x86/kvm-Fix-popf-emulation.patch
++ bugfix/x86/kvm-Check-CPL-level-during-privilege-instruction-emulation.patch
+
++ debian/sysrq-mask.patch
++ bugfix/all/efifb_fix_v2.patch
diff --git a/patches/series/base-extra b/patches/series/base-extra
index d1b7933..8b13789 100644
--- a/patches/series/base-extra
+++ b/patches/series/base-extra
@@ -1,4 +1 @@
-#+ features/all/openvz/openvz.patch featureset=openvz
-#+ features/all/vserver/vs2.3.0.35.patch featureset=vserver
-+ features/all/vserver/bindmount-dev.patch featureset=vserver
diff --git a/patches/series/orig-0 b/patches/series/orig-0
index 2d64f0c..19f74f4 100644
--- a/patches/series/orig-0
+++ b/patches/series/orig-0
@@ -1,15 +1,15 @@
+ debian/dfsg/arch-powerpc-platforms-8xx-ucode-disable.patch
-+ debian/dfsg/drivers-gpu-drm-mga-disable.patch
-+ debian/dfsg/drivers-gpu-drm-r128-disable.patch
-+ debian/dfsg/drivers-gpu-drm-radeon-disable.patch
++ debian/dfsg/drivers-media-dvb-dvb-usb-af9005-disable.patch
++ debian/dfsg/drivers-infiniband-hw-ipath-iba7220-disable.patch
+ debian/dfsg/drivers-net-appletalk-cops.patch
-+ debian/dfsg/drivers-net-cxgb3-disable.patch
-+ debian/dfsg/drivers-staging-me4000-disable.patch
+ debian/dfsg/drivers-staging-otus-disable.patch
+ debian/dfsg/drivers-staging-rt2860-disable.patch
+ debian/dfsg/drivers-staging-rt2870-disable.patch
-+ debian/dfsg/drivers-staging-rt3070-disable.patch
+ debian/dfsg/drivers-staging-rtl8192su-disable.patch
++ debian/dfsg/drivers-staging-wlags49_h2-disable.patch
++ debian/dfsg/drivers-staging-wlags49_h25-disable.patch
+ debian/dfsg/firmware-cleanup.patch
++ debian/dfsg/lgs8gxx-lgs8g75-disable.patch
++ debian/dfsg/r8169-rtl8168d-1-2-disable.patch
+ debian/dfsg/sound-pci.patch
X debian/dfsg/files-1
diff --git a/rules b/rules
index e281dd5..1be2077 100755
--- a/rules
+++ b/rules
@@ -11,6 +11,8 @@ include debian/rules.defs
stamp = [ -d $(dir $@) ] || mkdir $(dir $@); touch $@
+.NOTPARALLEL:
+
source: debian/control $(STAMPS_DIR)/source-base
$(STAMPS_DIR)/source-base:
dh_testdir
diff --git a/rules.real b/rules.real
index af1766c..29534e5 100644
--- a/rules.real
+++ b/rules.real
@@ -19,6 +19,9 @@ include debian/rules.defs
stamp = [ -d $(dir $@) ] || mkdir $(dir $@); touch $@
+ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+ DEBIAN_KERNEL_JOBS := $(subst parallel=,,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+endif
ifdef DEBIAN_KERNEL_JOBS
JOBS_ARG = -j$(DEBIAN_KERNEL_JOBS)
endif
@@ -46,8 +49,8 @@ binary-indep: install-manual
binary-indep: install-patch
binary-indep: install-source
binary-indep: install-support
-binary-indep: install-tree
binary-indep: install-firmware
+#binary-indep: install-linux-base
build: $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
@@ -108,8 +111,8 @@ else
echo 'override CROSS_COMPILE = $$(DEB_HOST_GNU_TYPE)-' >> '$(DIR)/.kernelvariables'
echo 'endif' >> '$(DIR)/.kernelvariables'
endif
-ifdef CFLAGS
- echo 'CFLAGS += $(CFLAGS)' >> '$(DIR)/.kernelvariables'
+ifdef CFLAGS_KERNEL
+ echo 'CFLAGS += $(CFLAGS_KERNEL)' >> '$(DIR)/.kernelvariables'
endif
+$(MAKE_CLEAN) -C '$(SOURCE_DIR)' O='$(CURDIR)/$(DIR)' reportoldconfig
+$(MAKE_CLEAN) -C '$(SOURCE_DIR)' O='$(CURDIR)/$(DIR)' $(JOBS_ARG) prepare
@@ -174,12 +177,6 @@ install-manual: $(STAMPS_DIR)/build-doc
find $(DIR)/Documentation/DocBook/man/ -name '*.9' | xargs dh_installman
+$(MAKE_SELF) install-base
-install-dummy:
- dh_testdir
- dh_testroot
- dh_prep
- +$(MAKE_SELF) install-base
-
install-headers_$(ARCH): PACKAGE_NAMES = linux-headers-$(UPSTREAMVERSION)$(ABINAME)-all linux-headers-$(UPSTREAMVERSION)$(ABINAME)-all-$(ARCH)
install-headers_$(ARCH): DH_OPTIONS = $(foreach p, $(PACKAGE_NAMES), -p$(p))
install-headers_$(ARCH):
@@ -203,14 +200,18 @@ install-headers_$(ARCH)_$(FEATURESET): $(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET
echo Makefile; \
find arch/$(KERNEL_ARCH) -maxdepth 1 -name 'Makefile*' -print; \
find arch/$(KERNEL_ARCH) -name 'module.lds' -print; \
- find arch/$(KERNEL_ARCH)/include -print; \
+ find $$(find arch/$(KERNEL_ARCH) -name include -type d -print) -print; \
find include -name 'asm*' -prune -o -print; \
find include/asm-generic -print; \
) \
| \
cpio -pd --preserve-modification-time '$(CURDIR)/$(DIR)'
- ln -s ../$(PACKAGE_NAME_KBUILD)/{Kbuild,scripts} $(DIR)
+ ln -s /usr/lib/$(PACKAGE_NAME_KBUILD)/{Kbuild,scripts} $(DIR)
+ if [ -d $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/scripts ]; then \
+ ln -s /usr/lib/$(PACKAGE_NAME_KBUILD)/arch/$(KERNEL_ARCH)/scripts \
+ $(DIR)/arch/$(KERNEL_ARCH); \
+ fi
+$(MAKE_SELF) install-base
@@ -255,7 +256,7 @@ endif
@echo '$$(cmd) %/: all' >> $(DIR)/Makefile
@echo ' @:' >> $(DIR)/Makefile
- ln -s ../$(PACKAGE_NAME_KBUILD)/scripts $(DIR)
+ ln -s /usr/lib/$(PACKAGE_NAME_KBUILD)/scripts $(DIR)
mkdir -p $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)
ln -s /usr/src/$(PACKAGE_NAME) $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/build
@@ -274,14 +275,18 @@ install-libc-dev_$(ARCH):
dh_prep
rm -rf '$(DIR)'
mkdir $(DIR)
- +$(MAKE_CLEAN) -C $(SOURCE_DIR) O='$(CURDIR)/$(DIR)' headers_check ARCH=$(LIBC_DEV_ARCH)
- +$(MAKE_CLEAN) -C $(SOURCE_DIR) O='$(CURDIR)/$(DIR)' headers_install ARCH=$(LIBC_DEV_ARCH) INSTALL_HDR_PATH='$(CURDIR)'/$(OUT_DIR)
+ +$(MAKE_CLEAN) -C $(SOURCE_DIR) O='$(CURDIR)/$(DIR)' headers_check ARCH=$(KERNEL_ARCH)
+ +$(MAKE_CLEAN) -C $(SOURCE_DIR) O='$(CURDIR)/$(DIR)' headers_install ARCH=$(KERNEL_ARCH) INSTALL_HDR_PATH='$(CURDIR)'/$(OUT_DIR)
+
+ rm -rf $(OUT_DIR)/include/scsi
+ find $(OUT_DIR)/include \( -name .install -o -name ..install.cmd \) -execdir rm {} +
+
+$(MAKE_SELF) install-base
install-support: PACKAGE_NAME = linux-support-$(UPSTREAMVERSION)$(ABINAME)
install-support: DH_OPTIONS = -p$(PACKAGE_NAME)
install-support: PACKAGE_DIR = debian/$(PACKAGE_NAME)
-install-support: PACKAGE_ROOT = /usr/src/$(PACKAGE_NAME)
+install-support: PACKAGE_ROOT = /usr/share/$(PACKAGE_NAME)
install-support:
dh_testdir
dh_testroot
@@ -291,7 +296,8 @@ install-support:
cp debian/lib/python/debian_linux/*.py $(PACKAGE_DIR)$(PACKAGE_ROOT)/lib/python/debian_linux
cp debian/modules/* $(PACKAGE_DIR)$(PACKAGE_ROOT)/modules
chmod a+x $(PACKAGE_DIR)$(PACKAGE_ROOT)/modules/gencontrol.py
- dh_pycentral /usr/src/$(PACKAGE_NAME)/lib/python
+ dh_pysupport
+ dh_link $(PACKAGE_ROOT) /usr/src/$(PACKAGE_NAME)
+$(MAKE_SELF) install-base
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): REAL_VERSION = $(UPSTREAMVERSION)$(ABINAME)$(LOCALVERSION)
@@ -327,7 +333,8 @@ endif
install-image_arm_$(FEATURESET)_$(FLAVOUR)_plain_image \
install-image_armel_$(FEATURESET)_$(FLAVOUR)_plain_image \
-install-image_sparc_$(FEATURESET)_$(FLAVOUR)_plain_image:
+install-image_sparc_$(FEATURESET)_$(FLAVOUR)_plain_image \
+install-image_sparc64_$(FEATURESET)_$(FLAVOUR)_plain_image:
install -m644 '$(DIR)/arch/$(KERNEL_ARCH)/boot/zImage' $(INSTALL_DIR)/vmlinuz-$(REAL_VERSION)
install-image_amd64_$(FEATURESET)_$(FLAVOUR)_plain_image \
@@ -366,6 +373,7 @@ install-image_mips_$(FEATURESET)_$(FLAVOUR)_plain_templates \
install-image_mipsel_$(FEATURESET)_$(FLAVOUR)_plain_templates \
install-image_powerpc_$(FEATURESET)_$(FLAVOUR)_plain_templates: ARG_KIMAGE = vmlinux
+install-image_ia64_$(FEATURESET)_$(FLAVOUR)_plain_templates: ARG_BOOTLOADER = elilo
install-image_mips_$(FEATURESET)_r4k-ip22_plain_templates: ARG_BOOTLOADER = arcboot
install-image_mips_$(FEATURESET)_r5k-ip32_plain_templates: ARG_BOOTLOADER = arcboot
install-image_s390_$(FEATURESET)_$(FLAVOUR)_plain_templates: ARG_BOOTLOADER = zipl
@@ -375,7 +383,6 @@ install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_templates:
for i in $(wildcard debian/templates/temp.image.plain/*); do \
sed \
-e 's,=D,/boot,g' \
- -e 's/=OF/YES/g' \
-e 's/=ST/linux/g' \
-e 's@=A@$(DEB_HOST_ARCH)@g' \
-e 's@=B@$(KERNEL_ARCH)@g' \
@@ -386,12 +393,10 @@ install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_templates:
-e 's@=MK@$(INITRD_CMD)@g' \
-e 's/=V/$(REAL_VERSION)/g' \
-e 's/=M//g' \
- -e 's/=MD//g' \
- -e 's/=R//g' \
-e 's/=S//g' \
$$i > $(PACKAGE_DIR)/DEBIAN/$$(basename $$i); \
done
- chmod 755 $(PACKAGE_DIR)/DEBIAN/{config,{pre,post}*}
+ chmod 755 $(PACKAGE_DIR)/DEBIAN/{pre,post}*
chmod 644 $(PACKAGE_DIR)/DEBIAN/templates
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_bug:
@@ -436,23 +441,19 @@ install-patch:
dh_testdir
dh_testroot
dh_prep
- dh_installdirs $(DH_OPTIONS) '$(pbase)/apply' '$(pbase)/debian' '$(pbase)/unpatch'
- dh_install $(DH_OPTIONS) debian/patches/* '$(pbase)/debian'
+ dh_installdirs '$(pbase)/apply' '$(pbase)/debian' '$(pbase)/unpatch'
+ dh_install debian/patches/* '$(pbase)/debian'
install debian/bin/patch.apply '$(pfull)/apply/debian'
install debian/templates/patch.unpatch '$(pfull)/unpatch/debian'
find '$(pfull)/debian' ! -path '*/series/*' -type f -execdir bzip2 '{}' ';' -execdir chmod 644 '{}.bz2' ';'
- +$(MAKE_SELF) install-base DH_OPTIONS='$(DH_OPTIONS)'
+ +$(MAKE_SELF) install-base
install-source: DH_OPTIONS = -plinux-source-$(VERSION)
install-source: $(BUILD_DIR)/linux-source-$(UPSTREAMVERSION).tar.bz2
dh_testdir
dh_testroot
- dh_install $(DH_OPTIONS) '$<' /usr/src
- +$(MAKE_SELF) install-base DH_OPTIONS='$(DH_OPTIONS)'
-
-install-tree: DH_OPTIONS = -plinux-tree-$(VERSION)
-install-tree:
- +$(MAKE_SELF) install-dummy DH_OPTIONS='$(DH_OPTIONS)'
+ dh_install '$<' /usr/src
+ +$(MAKE_SELF) install-base
install-firmware: PACKAGE_NAME = firmware-linux-free
install-firmware: DIR = $(BUILD_DIR)/build-firmware
@@ -466,6 +467,15 @@ install-firmware: $(STAMPS_DIR)/source
rm -rf '$(DIR)'
mkdir '$(DIR)'
+$(MAKE_CLEAN) -C '$(SOURCE_DIR)' O='$(CURDIR)/$(DIR)' INSTALL_MOD_PATH='$(CURDIR)'/$(PACKAGE_DIR) firmware_install
- +$(MAKE_SELF) install-base DH_OPTIONS='$(DH_OPTIONS)'
+ +$(MAKE_SELF) install-base
+
+install-linux-base: PACKAGE_NAME = linux-base
+install-linux-base: DH_OPTIONS := -p$(PACKAGE_NAME)
+install-linux-base:
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_install -X.svn
+ +$(MAKE_SELF) install-base
# vim: filetype=make
diff --git a/templates/control.image.type-kernel-package.in b/templates/control.image.type-kernel-package.in
index b3f27b0..d35c4a5 100644
--- a/templates/control.image.type-kernel-package.in
+++ b/templates/control.image.type-kernel-package.in
@@ -3,6 +3,5 @@ Provides: linux-image, linux-image-@major@, linux-modules-@upstreamversion@@abin
Pre-Depends: debconf | debconf-2.0
Depends: module-init-tools
Suggests: linux-doc-@version@
-Description: Linux @upstreamversion@ image on @class@
- This package provides the binary image and pre-built loadable modules for
- Linux kernel @upstreamversion@ on @longclass@ machines.
+Description: Linux @upstreamversion@ for @class@
+ The Linux kernel @upstreamversion@ and modules for use on @longclass@.
diff --git a/templates/control.image.type-modulesextra.in b/templates/control.image.type-modulesextra.in
index bc6d1d8..4981930 100644
--- a/templates/control.image.type-modulesextra.in
+++ b/templates/control.image.type-modulesextra.in
@@ -2,12 +2,10 @@ Package: linux-image-@upstreamversion@@abiname@@localversion@
Provides: linux-image, linux-image-@major@
Depends: linux-modules-@upstreamversion@@abiname@@localversion@ (= ${binary:Version})
Suggests: linux-doc-@version@
-Description: Linux @upstreamversion@ image on @class@
- This package provides the binary image for
- Linux kernel @upstreamversion@ on @longclass@ machines.
+Description: Linux @upstreamversion@ for @class@
+ The Linux kernel @upstreamversion@ for use on @longclass@.
Package: linux-modules-@upstreamversion@@abiname@@localversion@
Depends: module-init-tools
-Description: Linux @upstreamversion@ modules on @class@
- This package provides pre-built loadable modules for
- Linux kernel @version@ on @longclass@ machines.
+Description: Linux @upstreamversion@ modules for @class@
+ Modules for Linux kernel @upstreamversion@ for use on @longclass@.
diff --git a/templates/control.image.type-modulesinline.in b/templates/control.image.type-modulesinline.in
index 2151ce0..dae73fa 100644
--- a/templates/control.image.type-modulesinline.in
+++ b/templates/control.image.type-modulesinline.in
@@ -2,6 +2,5 @@ Package: linux-image-@upstreamversion@@abiname@@localversion@
Provides: linux-image, linux-image-@major@, linux-modules-@upstreamversion@@abiname@@localversion@
Depends: module-init-tools
Suggests: linux-doc-@version@
-Description: Linux @upstreamversion@ image on @class@
- This package provides the binary image and pre-built loadable modules for
- Linux kernel @upstreamversion@ on @longclass@ machines.
+Description: Linux @upstreamversion@ for @class@
+ The Linux kernel @upstreamversion@ for use on @longclass@.
diff --git a/templates/control.image.type-plain.in b/templates/control.image.type-plain.in
index 92a96ba..1dda400 100644
--- a/templates/control.image.type-plain.in
+++ b/templates/control.image.type-plain.in
@@ -4,6 +4,5 @@ Pre-Depends: debconf | debconf-2.0
Depends: module-init-tools, ${shlibs:Depends}
Recommends: firmware-linux-free (>= @source_upstream@)
Suggests: linux-doc-@version@
-Description: Linux @upstreamversion@ image on @class@
- This package provides the binary image and pre-built loadable modules for
- Linux kernel @upstreamversion@ on @longclass@ machines.
+Description: Linux @upstreamversion@ for @class@
+ The Linux kernel @upstreamversion@ and modules for use on @longclass@.
diff --git a/templates/control.image.type-standalone.in b/templates/control.image.type-standalone.in
index 8add82a..4036d32 100644
--- a/templates/control.image.type-standalone.in
+++ b/templates/control.image.type-standalone.in
@@ -2,6 +2,5 @@ Package: linux-image-@upstreamversion@@abiname@@localversion@
Provides: linux-image, linux-image-@major@
Suggests: linux-doc-@version@
Depends: ${shlibs:Depends}
-Description: Linux @upstreamversion@ image on @class@
- This package provides the binary image for
- Linux kernel @upstreamversion@ on @longclass@ machines.
+Description: Linux @upstreamversion@ for @class@
+ The Linux kernel @upstreamversion@ for use on @longclass@.
diff --git a/templates/control.main.in b/templates/control.main.in
index 59adabe..0ca7ea4 100644
--- a/templates/control.main.in
+++ b/templates/control.main.in
@@ -47,7 +47,7 @@ Description: Linux kernel API manual pages for version @version@
Package: linux-patch-debian-@version@
Architecture: all
-Depends: bzip2, linux-support-@upstreamversion@@abiname@
+Depends: bzip2, linux-support-@upstreamversion@@abiname@, python
Suggests: linux-source-@version@
Description: Debian patches to version @version@ of the Linux kernel
This package includes the patches used to produce the prepackaged
@@ -67,3 +67,20 @@ Description: Binary firmware for various drivers in the Linux kernel
.
Most firmware previously included in the Linux kernel is non-free
and has been moved to the firmware-linux-nonfree package.
+
+Package: linux-support-@upstreamversion@@abiname@
+Architecture: all
+Section: devel
+Depends: ${python:Depends}
+Description: Support files for Linux @upstreamversion@
+ This package provides support files for the Linux kernel build,
+ e.g. scripts to handle ABI information and for generation of
+ build system meta data.
+
+Package: linux-base
+Architecture: all
+Depends: ${misc:Depends}
+Description: Linux image base package
+ This package contains files and support scripts for all Linux
+ images.
+
diff --git a/templates/control.source.in b/templates/control.source.in
index 3f47743..fa5bd57 100644
--- a/templates/control.source.in
+++ b/templates/control.source.in
@@ -1,8 +1,9 @@
Section: kernel
Priority: optional
Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org>
-Uploaders: Bastian Blank <waldi@debian.org>, Frederik Schüler <fs@debian.org>, maximilian attems <maks@debian.org>
-Standards-Version: 3.8.2
-Build-Depends: debhelper (>> 7), module-init-tools, python
-Build-Depends-Indep: bzip2, python-central, xmlto
-XS-Python-Version: current
+Uploaders: Bastian Blank <waldi@debian.org>, Frederik Schüler <fs@debian.org>, maximilian attems <maks@debian.org>, Ben Hutchings <ben@decadent.org.uk>
+Standards-Version: 3.8.4
+Build-Depends: debhelper (>> 7), cpio, module-init-tools, python, lzma [armel]
+Build-Depends-Indep: bzip2, python-support, xmlto
+Vcs-Svn: svn://svn.debian.org/svn/kernel/dists/sid/linux-2.6/
+Vcs-Browser: http://svn.debian.org/wsvn/kernel/dists/sid/linux-2.6/?op=log
diff --git a/templates/control.support.in b/templates/control.support.in
deleted file mode 100644
index b86f870..0000000
--- a/templates/control.support.in
+++ /dev/null
@@ -1,8 +0,0 @@
-Package: linux-support-@upstreamversion@@abiname@
-Architecture: all
-Section: devel
-Depends: ${python:Depends}
-Description: Support files for Linux @upstreamversion@
- This package provides support files for the Linux kernel build.
-XB-Python-Version: ${python:Versions}
-
diff --git a/templates/control.tree.in b/templates/control.tree.in
deleted file mode 100644
index 517c439..0000000
--- a/templates/control.tree.in
+++ /dev/null
@@ -1,23 +0,0 @@
-Package: linux-tree-@version@
-Architecture: all
-Section: devel
-Description: Linux kernel source tree for building Debian kernel images
- This metapackage is used as a build dependency of Debian
- linux-image packages to prevent a version discrepancy between
- the linux-image and corresponding linux-sources packages in the
- fast-moving unstable archive. The package's dependency relations
- are structured so that a linux-image package's build
- dependencies can always be satisfied, even if the linux-source
- package that had been used to compile the image has been
- superseded by a newer Debian revision since the last build.
- .
- The package provides a list of virtual packages, corresponding to
- Debian revisions of a linux-source package. The Debian
- linux-patch contains the information needed to roll back the
- current linux-source to any of the revisions identified by the
- provided virtual packages. Therefore, the linux-tree package
- ensures the availability of the Linux kernel source tree corresponding
- to each of the virtual packages listed.
- .
- The package serves no purpose outside of the Debian build and
- archive infrastructure.
diff --git a/templates/image.plain.bug/control b/templates/image.plain.bug/control
new file mode 100644
index 0000000..d49f83d
--- /dev/null
+++ b/templates/image.plain.bug/control
@@ -0,0 +1,2 @@
+Submit-As: linux-2.6
+Package-Status: firmware-bnx2 firmware-bnx2x firmware-ipw2x00 firmware-ivtv firmware-iwlwifi firmware-linux firmware-linux-nonfree firmware-qlogic firmware-ralink
diff --git a/templates/image.plain.bug/include-1tainted b/templates/image.plain.bug/include-1tainted
index 44984cb..e616acf 100644
--- a/templates/image.plain.bug/include-1tainted
+++ b/templates/image.plain.bug/include-1tainted
@@ -1,34 +1,43 @@
-TAINT_PROPRIETARY_MODULE=1
-TAINT_FORCED_MODULE=2
-TAINT_UNSAFE_SMP=4
-TAINT_FORCED_RMMOD=8
-TAINT_MACHINE_CHECK=16
-TAINT_BAD_PAGE=32
-TAINT_USER=64
-TAINT_DIE=128
-TAINT_OVERRIDDEN_ACPI_TABLE=256
-TAINT_WARN=512
+TAINT_PROPRIETARY_MODULE=0
+TAINT_FORCED_MODULE=1
+TAINT_UNSAFE_SMP=2
+TAINT_FORCED_RMMOD=3
+TAINT_MACHINE_CHECK=4
+TAINT_BAD_PAGE=5
+TAINT_USER=6
+TAINT_DIE=7
+TAINT_OVERRIDDEN_ACPI_TABLE=8
+TAINT_WARN=9
+TAINT_CRAP=10
+
+_check() {
+ if [ $(($tainted & 1<<$1)) -ne 0 ]; then
+ result_short="$result_short$2"
+ result_long="$result_long * $3\n"
+ fi
+}
add_1tainted() {
tainted=$(cat /proc/sys/kernel/tainted)
if [ "$tainted" -gt 0 ]; then
- local s
- [ $(($tainted & $TAINT_PROPRIETARY_MODULE)) -ne 0 ] && s="P" || s="G"
- [ $(($tainted & $TAINT_FORCED_MODULE)) -ne 0 ] && s="${s}F" || s="$s "
- [ $(($tainted & $TAINT_UNSAFE_SMP)) -ne 0 ] && s="${s}S" || s="$s "
- [ $(($tainted & $TAINT_FORCED_RMMOD)) -ne 0 ] && s="${s}R" || s="$s "
- [ $(($tainted & $TAINT_MACHINE_CHECK)) -ne 0 ] && s="${s}M" || s="$s "
- [ $(($tainted & $TAINT_BAD_PAGE)) -ne 0 ] && s="${s}B" || s="$s "
- [ $(($tainted & $TAINT_USER)) -ne 0 ] && s="${s}U" || s="$s "
- [ $(($tainted & $TAINT_DIE)) -ne 0 ] && s="${s}D" || s="$s "
- [ $(($tainted & $TAINT_OVERRIDDEN_ACPI_TABLE)) -ne 0 ] && s="${s}A" || s="$s "
- [ $(($tainted & $TAINT_WARN)) -ne 0 ] && s="${s}W" || s="$s "
- echo '** Tainted:' $s "($tainted)" >&3
- echo >&3
+ local result_short result_long
+ _check $TAINT_PROPRIETARY_MODULE 'P' 'Proprietary module has been loaded.'
+ _check $TAINT_FORCED_MODULE 'F' 'Module has been forcibly loaded.'
+ _check $TAINT_UNSAFE_SMP 'S' 'SMP with CPUs not designed for SMP.'
+ _check $TAINT_FORCED_RMMOD 'R' 'User forced a module unload.'
+ _check $TAINT_MACHINE_CHECK 'M' 'System experienced a machine check exception.'
+ _check $TAINT_BAD_PAGE 'B' 'System has hit bad_page.'
+ _check $TAINT_USER 'U' 'Userspace-defined naughtiness.'
+ _check $TAINT_DIE 'D' 'Kernel has oopsed before.'
+ _check $TAINT_OVERRIDDEN_ACPI_TABLE 'A' 'ACPI table overridden.'
+ _check $TAINT_WARN 'W' 'Taint on warning.'
+ _check $TAINT_CRAP 'C' 'Module from drivers/staging has been loaded.'
+ echo "** Tainted: $result_short ($tainted)" >&3
+ printf "$result_long" >&3
else
echo '** Not tainted' >&3
- echo >&3
fi
+ echo >&3
}
ask_1tainted() {
diff --git a/templates/image.plain.bug/include-dmesg b/templates/image.plain.bug/include-dmesg
index 81b5f54..a7f4f41 100644
--- a/templates/image.plain.bug/include-dmesg
+++ b/templates/image.plain.bug/include-dmesg
@@ -5,5 +5,8 @@ add_dmesg() {
}
ask_dmesg() {
- true
+ # Remind the user to attach the kernel log. This should also trigger
+ # a reminder in some MUAs if the user tries to send without it.
+ echo '** Kernel log: boot messages should be attached' >&3
+ echo >&3
}
diff --git a/templates/image.plain.bug/include-model b/templates/image.plain.bug/include-model
new file mode 100644
index 0000000..542efc8
--- /dev/null
+++ b/templates/image.plain.bug/include-model
@@ -0,0 +1,52 @@
+grep_model() {
+ case "$(uname -m)" in
+ alpha)
+ egrep '^(system (type|variation|revision)|platform string)\b' /proc/cpuinfo
+ ;;
+ arm*)
+ egrep '^(Processor|Hardware|Revision)\b' /proc/cpuinfo
+ ;;
+ i386|ia64|x86_64)
+ local found=
+ for name in {sys,product,chassis,bios,board}_{vendor,name,version}; do
+ if [ -f /sys/class/dmi/id/$name ]; then
+ echo -n "$name: "
+ cat /sys/class/dmi/id/$name
+ found=y
+ fi
+ done
+ test -n "$found"
+ ;;
+ mips|mips64)
+ egrep '^(system type|cpu model)\b' /proc/cpuinfo
+ ;;
+ parisc|parisc64)
+ egrep '^(model|[hs]version)\b' /proc/cpuinfo
+ ;;
+ ppc|ppc64)
+ egrep -i '^(board|machine|model|motherboard|platform|revision|vendor)\b' /proc/cpuinfo
+ ;;
+ s390|s390x)
+ egrep '^processor\b' /proc/cpuinfo
+ ;;
+ sparc|sparc64)
+ egrep '^(cpu|fpu|pmu|prom|type)\b' /proc/cpuinfo
+ ;;
+ *)
+ false
+ ;;
+ esac
+}
+
+add_model() {
+ local found=
+ echo '** Model information' >&3
+ grep_model >&3 2>/dev/null || echo "not available" >&3
+ echo >&3
+}
+
+ask_model() {
+ # This is still valid as long as the bug is being reported on the same
+ # system.
+ test $same_system = nop || add_model
+}
diff --git a/templates/image.plain.bug/include-network b/templates/image.plain.bug/include-network
new file mode 100644
index 0000000..c3591c0
--- /dev/null
+++ b/templates/image.plain.bug/include-network
@@ -0,0 +1,42 @@
+add_network() {
+ yesno "Include network configuration and status from this computer? " nop
+ test $REPLY = yep || return 0
+
+ echo '** Network interface configuration:' >&3
+ # Hide passwords/keys
+ awk '$1 ~ /key|pass|^wpa-(anonymous|identity|phase|pin|private|psk)/ { gsub(".", "*", $2); }
+ $1 == "ethtool-wol" { gsub(".", "*", $3); }
+ !/^[[:space:]]*\#/ { print; }
+ ' </etc/network/interfaces >&3
+ echo >&3
+ echo '** Network status:' >&3
+ if command -v ip >/dev/null; then
+ echo '*** IP interfaces and addresses:' >&3
+ ip address show >&3
+ echo >&3
+ fi
+ echo '*** Device statistics:' >&3
+ cat /proc/net/dev >&3
+ echo >&3
+ if command -v netstat >/dev/null; then
+ echo '*** Protocol statistics:' >&3
+ netstat -s >&3 || true
+ echo >&3
+ fi
+ echo '*** Device features:' >&3
+ for dir in /sys/class/net/*; do
+ echo -n "${dir##*/}: " >&3
+ cat "$dir"/features >&3
+ done
+ echo >&3
+}
+
+ask_network() {
+ test $same_system = yep || return 0
+ yesno "Include network configuration from this computer? " nop
+ test $REPLY = yep || return 0
+
+ echo '** Network interface configuration:' >&3
+ cat /etc/network/interfaces >&3
+ echo >&3
+}
diff --git a/templates/image.plain.bug/include-pci b/templates/image.plain.bug/include-pci
index e4ad456..53f9513 100644
--- a/templates/image.plain.bug/include-pci
+++ b/templates/image.plain.bug/include-pci
@@ -9,6 +9,8 @@ add_pci() {
}
ask_pci() {
- true
+ # This information shouldn't vary much between kernel versions, so
+ # include it anyway.
+ test $same_system = nop || add_pci
}
diff --git a/templates/image.plain.bug/include-usb b/templates/image.plain.bug/include-usb
new file mode 100644
index 0000000..e8eb67e
--- /dev/null
+++ b/templates/image.plain.bug/include-usb
@@ -0,0 +1,11 @@
+add_usb() {
+ echo '** USB devices:' >&3
+ lsusb >&3 2>/dev/null || echo 'not available' >&3
+ echo >&3
+}
+
+ask_usb() {
+ # This information shouldn't vary much between kernel versions, so
+ # include it anyway.
+ test $same_system = nop || add_usb
+}
diff --git a/templates/image.plain.bug/presubj b/templates/image.plain.bug/presubj
new file mode 100644
index 0000000..55a4004
--- /dev/null
+++ b/templates/image.plain.bug/presubj
@@ -0,0 +1,7 @@
+Please ensure that you are currently running the kernel version that you
+are reporting on. This will allow your bug report to include useful
+diagnostic information about the running kernel.
+
+If you are reporting that the kernel fails to boot, please use a digital
+camera, serial console or netconsole to record the boot messages and
+attach these to your report.
diff --git a/templates/image.plain.bug/script b/templates/image.plain.bug/script
index 434ea0b..9374b2f 100644
--- a/templates/image.plain.bug/script
+++ b/templates/image.plain.bug/script
@@ -1,6 +1,8 @@
#!/bin/bash
set -e
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
dir="$(dirname $0)"
. "$dir"/info
@@ -16,6 +18,8 @@ if [ "$RELEASE" == "$(uname -r)" ]; then
add_$hook
done
else
+ yesno "Does the bug you are reporting affect this computer? " yep
+ same_system=$REPLY
for hook in ${hooks[@]}; do
ask_$hook
done
diff --git a/templates/patch.apply.in b/templates/patch.apply.in
index 82dbd93..dd35c65 100644
--- a/templates/patch.apply.in
+++ b/templates/patch.apply.in
@@ -3,7 +3,7 @@
import os, os.path, re, sys
from warnings import warn
-sys.path.append("/usr/src/linux-support-@linux_upstream@@abiname@/lib/python")
+sys.path.append("/usr/share/linux-support-@linux_upstream@@abiname@/lib/python")
from debian_linux.patches import PatchSeries, PatchSeriesList
diff --git a/templates/temp.image.plain/config b/templates/temp.image.plain/config
deleted file mode 100755
index 015a910..0000000
--- a/templates/temp.image.plain/config
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-set -eu
-
-exit 0
diff --git a/templates/temp.image.plain/postinst b/templates/temp.image.plain/postinst
index d796a8d..586ef14 100755
--- a/templates/temp.image.plain/postinst
+++ b/templates/temp.image.plain/postinst
@@ -1,26 +1,11 @@
#! /usr/bin/perl
-# -*- Mode: Cperl -*-
-# debian.postinst ---
-# Author : Manoj Srivastava ( srivasta@pilgrim.umass.edu )
-# Created On : Sat Apr 27 05:55:26 1996
-# Created On Node : melkor.pilgrim.umass.edu
-# Last Modified By : Manoj Srivastava
-# Last Modified On : Fri Sep 29 10:08:18 2006
-# Last Machine Used: glaurung.internal.golden-gryphon.com
-# Update Count : 357
-# Status : Unknown, Use with caution!
-# HISTORY :
-# Description :
-#
-# $Id: image.postinst,v 1.125 2003/10/07 16:24:20 srivasta Exp $
-#
-
#
#use strict; #for debugging
use Cwd 'abs_path';
use Debconf::Client::ConfModule qw(:all);
+use POSIX ();
version('2.0');
-my $capb=capb("backup");
+my $capb = capb('backup', 'escape');
$|=1;
@@ -28,14 +13,13 @@ $|=1;
my $version = "=V";
my $link_in_boot = "=IB"; # Should be empty, mostly
my $no_symlink = "=S"; # Should be empty, mostly
-my $reverse_symlink = "=R"; # Should be empty, mostly
my $do_symlink = "Yes"; # target machine defined
my $do_boot_enable = "Yes"; # target machine defined
my $do_bootloader = "Yes"; # target machine defined
my $kimage = "=K"; # Should be empty, mostly
my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, nettrom, arcboot or delo
my $image_dir = "=D"; # where the image is located
-my $relative_links = ""; # target machine defined
+my $initrd = "=I"; # initrd kernel
my $mkimage = "=M"; # command to generate the initrd image
my $use_hard_links = ''; # hardlinks do not work across fs boundaries
my $postinst_hook = ''; #Normally we do not
@@ -44,11 +28,9 @@ my $ignore_depmod_err = ''; # normally we do not
my $relink_src_link = 'YES'; # There is no harm in checking the link
my $relink_build_link = 'YES'; # There is no harm in checking the link
my $force_build_link = ''; # There is no harm in checking the link
-my $official_image = "=OF"; # only true for official images
-my $arch = "=A"; # should be same as dpkg --print-installation-architecture
+my $arch = "=A"; # should be same as dpkg --print-architecture
my $kernel_arch = "=B";
my $ramdisk = "=MK"; # List of tools to create initial ram fs.
-my $initrddep = "=MD"; # List of dependencies for such tools
my $package_name = "=ST-image-$version";
my $explicit_do_loader = '';
@@ -72,7 +54,6 @@ my $temp_file_name = "/var/log/$loader" . "_log.$$";
my $image_dest = "/";
my $realimageloc = "/$image_dir/";
my $have_conffile = "";
-my $silent_loader = '';
my $modules_base = '/lib/modules';
my $CONF_LOC = '/etc/kernel-img.conf';
@@ -101,41 +82,35 @@ if (-r "$CONF_LOC" && -f "$CONF_LOC" ) {
s/\#.*$//g;
next if /^\s*$/;
- $do_symlink = "" if /do_symlinks\s*=\s*(no|false|0)\s*$/ig;
- $no_symlink = "" if /no_symlinks\s*=\s*(no|false|0)\s*$/ig;
- $reverse_symlink = "" if /reverse_symlink\s*=\s*(no|false|0)\s*$/ig;
- $link_in_boot = "" if /link_in_boot\s*=\s*(no|false|0)\s*$/ig;
- $do_boot_enable = '' if /do_boot_enable\s*=\s*(no|false|0)\s*$/ig;
- $relative_links = '' if /relative_links \s*=\s*(no|false|0)\s*$/ig;
- $do_bootloader = '' if /do_bootloader\s*=\s*(no|false|0)\s*$/ig;
- $use_hard_links = '' if /use_hard_links\s*=\s*(no|false|0)\s*$/ig;
- $silent_loader = '' if /silent_loader\s*=\s*(no|false|0)\s*$/ig;
- $minimal_swap = '' if /minimal_swap\s*=\s*(no|false|0)\s*$/ig;
- $ignore_depmod_err = '' if /ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig;
- $relink_src_link = '' if /relink_src_link\s*=\s*(no|false|0)\s*$/ig;
- $relink_build_link = '' if /relink_build_link\s*=\s*(no|false|0)\s*$/ig;
- $force_build_link = '' if /force_build_link\s*=\s*(no|false|0)\s*$/ig;
-
- $do_symlink = "Yes" if /do_symlinks\s*=\s*(yes|true|1)\s*$/ig;
- $no_symlink = "Yes" if /no_symlinks\s*=\s*(yes|true|1)\s*$/ig;
- $reverse_symlink = "Yes" if /reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig;
- $link_in_boot = "Yes" if /link_in_boot\s*=\s*(yes|true|1)\s*$/ig;
- $do_boot_enable = "Yes" if /do_boot_enable\s*=\s*(yes|true|1)\s*$/ig;
- $do_bootloader = "Yes" if /do_bootloader\s*=\s*(yes|true|1)\s*$/ig;
- $explicit_do_loader = "YES" if /do_bootloader\s*=\s*(yes|true|1)\s*$/ig;
- $relative_links = "Yes" if /relative_links\s*=\s*(yes|true|1)\s*$/ig;
- $use_hard_links = "Yes" if /use_hard_links\s*=\s*(yes|true|1)\s*$/ig;
- $silent_loader = 'Yes' if /silent_loader\s*=\s*(yes|true|1)\s*$/ig;
- $minimal_swap = 'Yes' if /minimal_swap\s*=\s*(yes|true|1)\s*$/ig;
- $ignore_depmod_err = 'Yes' if /ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig;
- $relink_src_link = 'Yes' if /relink_src_link\s*=\s*(yes|true|1)\s*$/ig;
- $relink_build_link = 'Yes' if /relink_build_link\s*=\s*(yes|true|1)\s*$/ig;
- $force_build_link = 'Yes' if /force_build_link\s*=\s*(yes|true|1)\s*$/ig;
-
- $image_dest = "$1" if /image_dest\s*=\s*(\S+)/ig;
- $postinst_hook = "$1" if /postinst_hook\s*=\s*(\S+)/ig;
- $mkimage = "$1" if /mkimage\s*=\s*(.+)$/ig;
- $ramdisk = "$1" if /ramdisk\s*=\s*(.+)$/ig;
+ $do_symlink = "" if /do_symlinks\s*=\s*(no|false|0)\s*$/i;
+ $no_symlink = "" if /no_symlinks\s*=\s*(no|false|0)\s*$/i;
+ $link_in_boot = "" if /link_in_boot\s*=\s*(no|false|0)\s*$/i;
+ $do_boot_enable = '' if /do_boot_enable\s*=\s*(no|false|0)\s*$/i;
+ $do_bootloader = '' if /do_bootloader\s*=\s*(no|false|0)\s*$/i;
+ $use_hard_links = '' if /use_hard_links\s*=\s*(no|false|0)\s*$/i;
+ $minimal_swap = '' if /minimal_swap\s*=\s*(no|false|0)\s*$/i;
+ $ignore_depmod_err = '' if /ignore_depmod_err\s*=\s*(no|false|0)\s*$/i;
+ $relink_src_link = '' if /relink_src_link\s*=\s*(no|false|0)\s*$/i;
+ $relink_build_link = '' if /relink_build_link\s*=\s*(no|false|0)\s*$/i;
+ $force_build_link = '' if /force_build_link\s*=\s*(no|false|0)\s*$/i;
+
+ $do_symlink = "Yes" if /do_symlinks\s*=\s*(yes|true|1)\s*$/i;
+ $no_symlink = "Yes" if /no_symlinks\s*=\s*(yes|true|1)\s*$/i;
+ $link_in_boot = "Yes" if /link_in_boot\s*=\s*(yes|true|1)\s*$/i;
+ $do_boot_enable = "Yes" if /do_boot_enable\s*=\s*(yes|true|1)\s*$/i;
+ $do_bootloader = "Yes" if /do_bootloader\s*=\s*(yes|true|1)\s*$/i;
+ $explicit_do_loader = "YES" if /do_bootloader\s*=\s*(yes|true|1)\s*$/i;
+ $use_hard_links = "Yes" if /use_hard_links\s*=\s*(yes|true|1)\s*$/i;
+ $minimal_swap = 'Yes' if /minimal_swap\s*=\s*(yes|true|1)\s*$/i;
+ $ignore_depmod_err = 'Yes' if /ignore_depmod_err\s*=\s*(yes|true|1)\s*$/i;
+ $relink_src_link = 'Yes' if /relink_src_link\s*=\s*(yes|true|1)\s*$/i;
+ $relink_build_link = 'Yes' if /relink_build_link\s*=\s*(yes|true|1)\s*$/i;
+ $force_build_link = 'Yes' if /force_build_link\s*=\s*(yes|true|1)\s*$/i;
+
+ $image_dest = "$1" if /image_dest\s*=\s*(\S+)/i;
+ $postinst_hook = "$1" if /postinst_hook\s*=\s*(\S+)/i;
+ $mkimage = "$1" if /mkimage\s*=\s*(.+)$/i;
+ $ramdisk = "$1" if /ramdisk\s*=\s*(.+)$/i;
}
close CONF;
$have_conffile = "Yes";
@@ -143,6 +118,11 @@ if (-r "$CONF_LOC" && -f "$CONF_LOC" ) {
}
+# For some versions of kernel-package, we had this warning in the
+# postinst, but the rules did not really interpolate the value in.
+# Here is a sanity check.
+my $pattern = "=" . "I";
+$initrd=~ s/^$pattern$//;
if ($link_in_boot) {
$image_dest = "/$image_dir/"; # same as realimageloc
@@ -337,12 +317,10 @@ sub move_p {
warn "Move?: kimage=$kimage, image_dest=$image_dest, \n" .
"\timage_name=$image_name, src_dir=$src_dir" if $DEBUG;
- if ($no_symlink || $reverse_symlink) {
+ if ($no_symlink) {
# we do not want links, yet we have a symbolic link here!
warn "found a symbolic link in " . $image_dest . "$kimage \n" .
"even though no_symlink is defined\n" if $no_symlink;
- warn "found a symbolic link in " . $image_dest . "$kimage \n" .
- "even though reverse_symlink is defined\n" if $reverse_symlink;
# make sure we change this state of affairs
$force_move = 1;
return $force_move;
@@ -497,43 +475,21 @@ sub handle_missing_link {
die("Failed to copy " . $realimageloc . "$image_name to "
. $image_dest . "$kimage .\n");
}
- }
- elsif ($reverse_symlink) {
- my $ret = system("mv -f " . $realimageloc . "$image_name "
- . "$kimage");
- if ($ret) {
- die("Failed to move " . $realimageloc . "$image_name to "
- . $image_dest . "$kimage .\n");
- }
- }
- else {
+ } else {
if (! $have_conffile) {
- my $ret;
- my $answer='';
+ # current default
$do_symlink = "Yes";
- my $question = "${package_name}/postinst/create-kimage-link-$version";
-
- ($ret,$answer) = get("$question");
- die "Error retreiving answer for $question: $answer" if $ret;
-
- $answer =~ s/^\s+//;
- $answer =~ s/\s+$//;
- $do_symlink = "No" if $answer =~ /^(f|n)/i;
-
- if (open(CONF, ">$CONF_LOC")) {
- print CONF "# Kernel Image management overrides\n";
- print CONF "# See kernel-img.conf(5) for details\n";
- if ($loader =~ /palo/i) {
+
+ if ($loader =~ /palo/i) {
+ if (open(CONF, ">$CONF_LOC")) {
+ print CONF "# Kernel Image management overrides\n";
print CONF "link_in_boot = Yes\n";
print CONF "do_symlinks = Yes\n";
- print CONF "relative_links = Yes\n";
print CONF "do_bootloader = No\n";
- } else {
- print CONF "do_symlinks = $do_symlink\n";
+ close CONF;
+ $have_conffile = "Yes";
}
- close CONF;
}
- $have_conffile = "Yes";
}
}
@@ -543,12 +499,6 @@ sub handle_missing_link {
my $Name = "$image_name";
my $Link_Dest = "$kimage";
- if ($reverse_symlink) {
- $Old = $image_dest;
- $New = $realimageloc;
- $Name = "$kimage";
- $Link_Dest = $realimageloc . "$image_name";
- }
if (test_relative ('Old Dir' => $Old,
'New Dir' => $New,
'Test File' => $Name)) {
@@ -565,7 +515,7 @@ sub handle_missing_link {
}
# This routine handles the rest of the cases, where the user has requested
-# non-traditional handling, like using cp, or reverse symlinks, or hard links.
+# non-traditional handling, like using cp or hard links.
sub handle_non_symlinks {
my $kimage = $_[0]; # Name of the symbolic link
my $image_dest = $_[1]; # The directory the links goes into
@@ -596,41 +546,6 @@ sub handle_non_symlinks {
##,####
# case Two
#`####
- elsif ($reverse_symlink) { # Maybe /$image_dest is on a dos system?
- my $ret = system("mv -f " . $realimageloc . "$image_name "
- . $image_dest . "$kimage");
- if ($ret) {
- if (-e "$kimage.$$") {
- rename("$kimage.$$", "$kimage");
- }
- die("Failed to move " . $realimageloc . "$image_name to "
- . $image_dest . "$kimage .\n");
- }
- my $Old = $image_dest;
- if (test_relative ('Old Dir' => $Old, 'New Dir' => $realimageloc,
- 'Test File' => "$kimage")) {
- $Old =~ s|^/*||o;
- }
- # Special case is they are in the same dir
- my $rel_path = spath('Old' => "$Old", 'New' => "$realimageloc" );
- $Old ="" if $rel_path =~ m/^\s*$/o;
-
- if ($use_hard_links =~ m/YES/i) {
- if (! link($Old . "$kimage", $realimageloc . "$image_name")) {
- warn "Could not hard link " . $image_dest .
- "$kimage to $image_name :$!";
- }
- }
- else {
- if (! symlink($Old . "$kimage", $realimageloc . "$image_name")) {
- warn "Could not symlink " . $image_dest .
- "$kimage to $image_name :$!";
- }
- }
- }
- ##,####
- # case Three
- #`####
elsif ($use_hard_links =~ m/YES/i ) {
# Ok then. this ought to be a hard link, and hence fair game
# don't clobber $kimage.old quite yet
@@ -652,7 +567,7 @@ sub handle_non_symlinks {
}
}
##,####
- # case Four
+ # case Three
#`####
else {
# We just use cp
@@ -708,8 +623,7 @@ sub image_magic {
######################################################################
######################################################################
-# We may not have any modules installed
-if ( -d "$modules_base/$version" ) {
+sub do_modules {
print STDERR "Running depmod.\n";
my $ret = system("depmod -a -F $realimageloc/System.map-$version $version");
my $exit_value = $? >> 8;
@@ -760,25 +674,119 @@ if ( -d "$modules_base/$version" ) {
}
}
}
+
+ # If we are installing (not upgrading) a package for a newer
+ # upstream version than that of the running kernel, check whether
+ # the user might be missing necessary firmware, perhaps because
+ # it has now been removed from the kernel.
+ #
+ # We base this check on the modules used in the running kernel and
+ # the corresponding (by name) modules in the new kernel. This is
+ # not entirely accurate because:
+ # 1. A device may now be handled by a module with a different name,
+ # leading us to miss the dependency
+ # 2. A device may be handled by a module that needs firmware only
+ # for some other device, leading us to claim a dependency wrongly
+
+ if (!defined($ARGV[1]) || $ARGV[1] eq '') {
+ (undef, undef, my $running_version) = POSIX::uname();
+ my $running_patchlevel = $running_version;
+ $running_patchlevel =~ s/^2\.6\.(\d+).*/$1/;
+ my $new_patchlevel = $version;
+ $new_patchlevel =~ s/^2\.6\.(\d+).*/$1/;
+
+ if ($new_patchlevel > $running_patchlevel) {
+ my $missing = '';
+ my %module_paths;
+ open(DEP, "<$modules_base/$version/modules.dep") or return;
+ while (<DEP>) {
+ if (m|(.*/([^/]*)\.ko):|) {
+ my ($path, $module) = ($1, $2);
+ $module =~ s/-/_/g;
+ $module_paths{$module} = $path;
+ }
+ }
+ close(DEP);
+ open(MODULES, '</proc/modules') or return;
+ while (<MODULES>) {
+ s/ .*//s;
+ my $module = $_;
+ my $module_path = $module_paths{$module};
+ if (defined($module_path)) {
+ my $first = 1;
+ if ($module_path !~ m|^/|) {
+ $module_path = "$modules_base/$version/$module_path";
+ }
+ open(MODINFO, "modinfo -F firmware '$module_path' |");
+ while (<MODINFO>) {
+ chomp;
+ my $firmware = $_;
+ unless (-e "/lib/firmware/$firmware" ||
+ -e "/lib/firmware/$version/$firmware") {
+ if ($first) {
+ $missing .= "\\n" if $missing ne '';
+ $missing .= "$module: ";
+ $first = 0;
+ } else {
+ $missing .= ', ';
+ }
+ $missing .= $firmware;
+ }
+ }
+ close(MODINFO);
+ }
+ }
+ close(MODULES);
+
+ if ($missing ne '') {
+ my ($ret, $seen);
+ my $text = "${package_name}/postinst/missing-firmware-${version}";
+
+ ($ret, $seen) = subst($text, 'runningversion', $running_version);
+ die "Error setting debconf substitutions in $text: $seen" if $ret;
+
+ ($ret, $seen) = subst($text, 'version', $version);
+ die "Error setting debconf substitutions in $text: $seen" if $ret;
+
+ ($ret, $seen) = subst($text, 'missing', $missing);
+ die "Error setting debconf substitutions in $text: $seen" if $ret;
+
+ ($ret, $seen) = input('high', $text);
+ if ($ret && $ret != 30) {
+ die "Error setting debconf question $text: $seen";
+ }
+
+ ($ret, $seen) = go();
+ if ($ret && $ret != 30) {
+ die "Error asking debconf question $text: $seen";
+ }
+ }
+ }
+ }
}
+# We may not have any modules installed
+if (-d "$modules_base/$version") {
+ &do_modules();
+}
-sub find_inird_tool {
+sub find_initramfs_tool {
my $ramdisk = shift;
- my (@ramdisks, $initramfs_cmd);
+ my (@tools, $initramfs_cmd);
foreach $initramfs_cmd (split(/[:,\s]+/, $ramdisk)) {
if (system("test -x \"\$(command -v $initramfs_cmd)\"") == 0) {
- push(@ramdisks, $initramfs_cmd);
+ push(@tools, $initramfs_cmd);
}
}
- return @ramdisks;
+ return @tools;
}
+if ($initrd) {
my @ramdisklist;
-@ramdisklist = find_inird_tool($ramdisk) if $ramdisk;
+@ramdisklist = find_initramfs_tool($ramdisk) if $ramdisk;
die "Failed to find suitable initramfs generation tool in $ramdisk\n"
if $#ramdisklist < 0;
my $success = 0;
@@ -798,7 +806,7 @@ for $ramdisk_cmd (@ramdisklist) {
}
}
die "Failed to create initrd image.\n" unless $success;
-if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m/<unknown>/og) {
+if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m/<unknown>/o) {
image_magic("initrd.img", $image_dest);
} else {
if (! -e "initrd.img") {
@@ -806,9 +814,10 @@ if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m/<unknown>/og) {
$realimageloc);
}
}
+}
# Only change the symlinks if we are not being upgraded
-if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m/<unknown>/og) {
+if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m/<unknown>/o) {
image_magic($kimage, $image_dest);
}
else {
@@ -842,6 +851,13 @@ sub run_hook {
}
}
+my $options;
+for (@ARGV) {
+ s,','\\'',g;
+ $options .= " '$_'";
+}
+$ENV{'DEB_MAINT_PARAMS'}="$options";
+
## Run user hook script here, if any
if ($postinst_hook) {
&run_hook("postinst", $postinst_hook);
@@ -872,9 +888,7 @@ LOADER: {
last if $loader =~ /nettrom/i; # NETTROM does not have to be executed.
last if $loader =~ /arcboot/i; # ARCBOOT does not have to be executed.
last if $loader =~ /delo/i; # DELO does not have to be executed.
- if ($official_image =~ /^\s*YES\s*$/o) {
- last if $loader =~ /quik/i; # maintainer asked quik invocation to be ignored
- }
+ last if $loader =~ /quik/i; # maintainer asked quik invocation to be ignored
last unless $loaderloc;
last unless -x $loaderloc;
diff --git a/templates/temp.image.plain/postrm b/templates/temp.image.plain/postrm
index 4df1dd2..23cd777 100755
--- a/templates/temp.image.plain/postrm
+++ b/templates/temp.image.plain/postrm
@@ -1,21 +1,4 @@
#! /usr/bin/perl
-# -*- Mode: Cperl -*-
-# image.postrm ---
-# Author : Manoj Srivastava ( srivasta@glaurung.green-gryphon.com )
-# Created On : Sat May 15 11:05:13 1999
-# Created On Node : glaurung.green-gryphon.com
-# Last Modified By : Manoj Srivastava
-# Last Modified On : Wed Sep 13 11:26:19 2006
-# Last Machine Used: glaurung.internal.golden-gryphon.com
-# Update Count : 57
-# Status : Unknown, Use with caution!
-# HISTORY :
-# Description :
-#
-# $Id: image.postrm,v 1.31 2003/10/07 16:24:20 srivasta Exp $
-#
-
-
#
#use strict; #for debugging
use Cwd 'abs_path';
@@ -38,21 +21,20 @@ $|=1;
my $version = "=V";
my $link_in_boot = "=IB"; # Should be empty, mostly
my $no_symlink = "=S"; # Should be empty, mostly
-my $reverse_symlink = "=R"; # Should be empty, mostly
my $do_symlink = "Yes"; # target machine defined
my $do_boot_enable = "Yes"; # target machine defined
my $do_bootloader = "Yes"; # target machine defined
my $kimage = "=K"; # Should be empty, mostly
my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, or nettrom
my $image_dir = "=D"; # where the image is located
+my $initrd = "=I"; # initrd kernel
my $use_hard_links = ''; # hardlinks do not work across fs boundaries
my $postrm_hook = ''; #Normally we do not
my $minimal_swap = ''; # Do not swap symlinks
my $ignore_depmod_err = ''; # normally we do not
my $relink_build_link = 'YES'; # There is no harm in checking the link
my $force_build_link = ''; # we shall not create a dangling link
-my $official_image = "=OF"; # only true for official images
-my $arch = "=A"; # should be same as dpkg --print-installation-architecture
+my $arch = "=A"; # should be same as dpkg --print-architecture
my $kernel_arch = "=B";
my $ramdisk = "=MK"; # List of tools to create initial ram fs.
my $package_name = "=ST-image-$version";
@@ -73,21 +55,9 @@ $Loader = "ELILO" if $loader =~ /^elilo/io;
my $temp_file_name = "/var/log/$loader" . "_log.$$";
#known variables
-my @boilerplate = ();
-my @silotemplate = ();
-my @quiktemplate = ();
-my @palotemplate = ();
-my @vmelilotemplate = ();
-my $bootdevice = '';
-my $rootdevice = '';
-my $rootdisk = '';
-my $rootpartition = '';
my $image_dest = "/";
my $realimageloc = "/$image_dir/";
-my $have_conffile = "";
my $CONF_LOC = '/etc/kernel-img.conf';
-my $relative_links = '';
-my $silent_loader = '';
chdir('/') or die "could not chdir to /:$!\n";
# remove multiple leading slashes; make sure there is at least one.
@@ -102,39 +72,32 @@ if (-r "$CONF_LOC" && -f "$CONF_LOC" ) {
s/\#.*$//g;
next if /^\s*$/;
- $do_symlink = "" if /do_symlinks\s*=\s*(no|false|0)\s*$/ig;
- $no_symlink = "" if /no_symlinks\s*=\s*(no|false|0)\s*$/ig;
- $reverse_symlink = "" if /reverse_symlinks\s*=\s*(no|false|0)\s*$/ig;
- $link_in_boot = "" if /link_in_boot\s*=\s*(no|false|0)\s*$/ig;
- $do_boot_enable = '' if /do_boot_enable\s*=\s*(no|false|0)\s*$/ig;
- $relative_links = '' if /relative_links \s*=\s*(no|false|0)\s*$/ig;
- $do_bootloader = '' if /do_bootloader\s*=\s*(no|false|0)\s*$/ig;
- $use_hard_links = '' if /use_hard_links\s*=\s*(no|false|0)\s*$/ig;
- $silent_loader = '' if /silent_loader\s*=\s*(no|false|0)\s*$/ig;
- $minimal_swap = '' if /minimal_swap\s*=\s*(no|false|0)\s*$/ig;
- $ignore_depmod_err = '' if /ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig;
- $relink_build_link = '' if /relink_build_link\s*=\s*(no|false|0)\s*$/ig;
- $force_build_link = '' if /force_build_link\s*=\s*(no|false|0)\s*$/ig;
-
- $do_symlink = "Yes" if /do_symlinks\s*=\s*(yes|true|1)\s*$/ig;
- $no_symlink = "Yes" if /no_symlinks\s*=\s*(yes|true|1)\s*$/ig;
- $reverse_symlink = "Yes" if /reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig;
- $link_in_boot = "Yes" if /link_in_boot\s*=\s*(yes|true|1)\s*$/ig;
- $do_boot_enable = "Yes" if /do_boot_enable\s*=\s*(yes|true|1)\s*$/ig;
- $do_bootloader = "Yes" if /do_bootloader\s*=\s*(yes|true|1)\s*$/ig;
- $relative_links = "Yes" if /relative_links\s*=\s*(yes|true|1)\s*$/ig;
- $use_hard_links = "Yes" if /use_hard_links\s*=\s*(yes|true|1)\s*$/ig;
- $silent_loader = 'Yes' if /silent_loader\s*=\s*(yes|true|1)\s*$/ig;
- $minimal_swap = 'Yes' if /minimal_swap\s*=\s*(yes|true|1)\s*$/ig;
- $ignore_depmod_err = 'Yes' if /ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig;
- $relink_build_link = 'Yes' if /relink_build_link\s*=\s*(yes|true|1)\s*$/ig;
- $force_build_link = 'Yes' if /force_build_link\s*=\s*(yes|true|1)\s*$/ig;
-
- $image_dest = "$1" if /image_dest\s*=\s*(\S+)/ig;
- $postrm_hook = "$1" if /postrm_hook\s*=\s*(\S+)/ig;
+ $do_symlink = "" if /do_symlinks\s*=\s*(no|false|0)\s*$/i;
+ $no_symlink = "" if /no_symlinks\s*=\s*(no|false|0)\s*$/i;
+ $link_in_boot = "" if /link_in_boot\s*=\s*(no|false|0)\s*$/i;
+ $do_boot_enable = '' if /do_boot_enable\s*=\s*(no|false|0)\s*$/i;
+ $do_bootloader = '' if /do_bootloader\s*=\s*(no|false|0)\s*$/i;
+ $use_hard_links = '' if /use_hard_links\s*=\s*(no|false|0)\s*$/i;
+ $minimal_swap = '' if /minimal_swap\s*=\s*(no|false|0)\s*$/i;
+ $ignore_depmod_err = '' if /ignore_depmod_err\s*=\s*(no|false|0)\s*$/i;
+ $relink_build_link = '' if /relink_build_link\s*=\s*(no|false|0)\s*$/i;
+ $force_build_link = '' if /force_build_link\s*=\s*(no|false|0)\s*$/i;
+
+ $do_symlink = "Yes" if /do_symlinks\s*=\s*(yes|true|1)\s*$/i;
+ $no_symlink = "Yes" if /no_symlinks\s*=\s*(yes|true|1)\s*$/i;
+ $link_in_boot = "Yes" if /link_in_boot\s*=\s*(yes|true|1)\s*$/i;
+ $do_boot_enable = "Yes" if /do_boot_enable\s*=\s*(yes|true|1)\s*$/i;
+ $do_bootloader = "Yes" if /do_bootloader\s*=\s*(yes|true|1)\s*$/i;
+ $use_hard_links = "Yes" if /use_hard_links\s*=\s*(yes|true|1)\s*$/i;
+ $minimal_swap = 'Yes' if /minimal_swap\s*=\s*(yes|true|1)\s*$/i;
+ $ignore_depmod_err = 'Yes' if /ignore_depmod_err\s*=\s*(yes|true|1)\s*$/i;
+ $relink_build_link = 'Yes' if /relink_build_link\s*=\s*(yes|true|1)\s*$/i;
+ $force_build_link = 'Yes' if /force_build_link\s*=\s*(yes|true|1)\s*$/i;
+
+ $image_dest = "$1" if /image_dest\s*=\s*(\S+)/i;
+ $postrm_hook = "$1" if /postrm_hook\s*=\s*(\S+)/i;
}
close CONF;
- $have_conffile = "Yes";
}
}
@@ -293,6 +256,13 @@ sub run_hook {
}
}
+my $options;
+for (@ARGV) {
+ s,','\\'',g;
+ $options .= " '$_'";
+}
+$ENV{'DEB_MAINT_PARAMS'}="$options";
+
## Run user hook script here, if any
if ($postrm_hook) {
&run_hook("postrm", $postrm_hook);
@@ -326,8 +296,8 @@ if ($ARGV[0] !~ /upgrade/) {
# check and remove damaged and dangling symlinks
image_magic($kimage, $image_dest);
image_magic($kimage . ".old", $image_dest);
- image_magic("initrd.img", $image_dest);
- image_magic("initrd.img.old", $image_dest);
+ image_magic("initrd.img", $image_dest) if $initrd;
+ image_magic("initrd.img.old", $image_dest) if $initrd;
}
diff --git a/templates/temp.image.plain/preinst b/templates/temp.image.plain/preinst
index cb8c7d3..1b9ddbc 100755
--- a/templates/temp.image.plain/preinst
+++ b/templates/temp.image.plain/preinst
@@ -1,19 +1,4 @@
#! /usr/bin/perl
-# -*- Mode: Cperl -*-
-# image.preinst ---
-# Author : Manoj Srivastava ( srivasta@tiamat.datasync.com )
-# Created On : Sun Jun 14 03:38:02 1998
-# Created On Node : tiamat.datasync.com
-# Last Modified By : Manoj Srivastava
-# Last Modified On : Sun Sep 24 14:04:42 2006
-# Last Machine Used: glaurung.internal.golden-gryphon.com
-# Update Count : 99
-# Status : Unknown, Use with caution!
-# HISTORY :
-# Description :
-#
-#
-
#
#use strict; #for debugging
@@ -27,7 +12,6 @@ $|=1;
my $version = "=V";
my $link_in_boot = "=IB"; # Should be empty, mostly
my $no_symlink = "=S"; # Should be empty, mostly
-my $reverse_symlink = "=R"; # Should be empty, mostly
my $do_symlink = "Yes"; # target machine defined
my $kimage = "=K"; # Should be empty, mostly
my $image_dir = "=D"; # where the image is located
@@ -38,28 +22,15 @@ my $ignore_depmod_err = ''; # normally we do not
my $relink_src_link = 'YES'; # There is no harm in checking the link
my $relink_build_link = 'YES'; # There is no harm in checking the link
my $force_build_link = ''; # There is no harm in checking the link
-my $official_image = "=OF"; # only true for official images
-my $arch = "=A"; # should be same as dpkg --print-installation-architecture
+my $arch = "=A"; # should be same as dpkg --print-architecture
my $kernel_arch = "=B";
my $ramdisk = "=MK"; # List of tools to create initial ram fs.
-my $initrddep = "=MD"; # List of dependencies for such tools
my $package_name = "=ST-image-$version";
#known variables
-my @boilerplate = ();
-my @silotemplate = ();
-my @quiktemplate = ();
-my @palotemplate = ();
-my @vmelilotemplate = ();
-my $bootdevice = '';
-my $rootdevice = '';
-my $rootdisk = '';
-my $rootpartition = '';
my $image_dest = "/";
my $realimageloc = "/$image_dir/";
-my $have_conffile = "";
my $CONF_LOC = '/etc/kernel-img.conf';
-my $relative_links = '';
my $modules_base = '/lib/modules';
@@ -79,92 +50,36 @@ if (-r "$CONF_LOC" && -f "$CONF_LOC" ) {
s/\#.*$//g;
next if /^\s*$/;
- $do_symlink = "" if /do_symlinks\s*=\s*(no|false|0)\s*$/ig;
- $no_symlink = "" if /no_symlinks\s*=\s*(no|false|0)\s*$/ig;
- $reverse_symlink = "" if /reverse_symlinks\s*=\s*(no|false|0)\s*$/ig;
- $link_in_boot = "" if /link_in_boot\s*=\s*(no|false|0)\s*$/ig;
- $relative_links = '' if /relative_links \s*=\s*(no|false|0)\s*$/ig;
- $use_hard_links = '' if /use_hard_links\s*=\s*(no|false|0)\s*$/ig;
- $minimal_swap = '' if /minimal_swap\s*=\s*(no|false|0)\s*$/ig;
- $ignore_depmod_err = '' if /ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig;
- $relink_src_link = '' if /relink_src_link\s*=\s*(no|false|0)\s*$/ig;
- $relink_build_link = '' if /relink_build_link\s*=\s*(no|false|0)\s*$/ig;
- $force_build_link = '' if /force_build_link\s*=\s*(no|false|0)\s*$/ig;
-
- $do_symlink = "Yes" if /do_symlinks\s*=\s*(yes|true|1)\s*$/ig;
- $no_symlink = "Yes" if /no_symlinks\s*=\s*(yes|true|1)\s*$/ig;
- $reverse_symlink = "Yes" if /reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig;
- $link_in_boot = "Yes" if /link_in_boot\s*=\s*(yes|true|1)\s*$/ig;
- $relative_links = "Yes" if /relative_links\s*=\s*(yes|true|1)\s*$/ig;
- $use_hard_links = "Yes" if /use_hard_links\s*=\s*(yes|true|1)\s*$/ig;
- $minimal_swap = 'Yes' if /minimal_swap\s*=\s*(yes|true|1)\s*$/ig;
- $ignore_depmod_err = 'Yes' if /ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig;
- $relink_src_link = 'Yes' if /relink_src_link\s*=\s*(yes|true|1)\s*$/ig;
- $relink_build_link = 'Yes' if /relink_build_link\s*=\s*(yes|true|1)\s*$/ig;
- $force_build_link = 'Yes' if /force_build_link\s*=\s*(yes|true|1)\s*$/ig;
-
- $image_dest = "$1" if /image_dest\s*=\s*(\S+)/ig;
- $preinst_hook = "$1" if /preinst_hook\s*=\s*(\S+)/ig;
- $ramdisk = "$1" if /ramdisk\s*=\s*(.+)$/ig;
+ $do_symlink = "" if /do_symlinks\s*=\s*(no|false|0)\s*$/i;
+ $no_symlink = "" if /no_symlinks\s*=\s*(no|false|0)\s*$/i;
+ $link_in_boot = "" if /link_in_boot\s*=\s*(no|false|0)\s*$/i;
+ $use_hard_links = '' if /use_hard_links\s*=\s*(no|false|0)\s*$/i;
+ $minimal_swap = '' if /minimal_swap\s*=\s*(no|false|0)\s*$/i;
+ $ignore_depmod_err = '' if /ignore_depmod_err\s*=\s*(no|false|0)\s*$/i;
+ $relink_src_link = '' if /relink_src_link\s*=\s*(no|false|0)\s*$/i;
+ $relink_build_link = '' if /relink_build_link\s*=\s*(no|false|0)\s*$/i;
+ $force_build_link = '' if /force_build_link\s*=\s*(no|false|0)\s*$/i;
+
+ $do_symlink = "Yes" if /do_symlinks\s*=\s*(yes|true|1)\s*$/i;
+ $no_symlink = "Yes" if /no_symlinks\s*=\s*(yes|true|1)\s*$/i;
+ $link_in_boot = "Yes" if /link_in_boot\s*=\s*(yes|true|1)\s*$/i;
+ $use_hard_links = "Yes" if /use_hard_links\s*=\s*(yes|true|1)\s*$/i;
+ $minimal_swap = 'Yes' if /minimal_swap\s*=\s*(yes|true|1)\s*$/i;
+ $ignore_depmod_err = 'Yes' if /ignore_depmod_err\s*=\s*(yes|true|1)\s*$/i;
+ $relink_src_link = 'Yes' if /relink_src_link\s*=\s*(yes|true|1)\s*$/i;
+ $relink_build_link = 'Yes' if /relink_build_link\s*=\s*(yes|true|1)\s*$/i;
+ $force_build_link = 'Yes' if /force_build_link\s*=\s*(yes|true|1)\s*$/i;
+
+ $image_dest = "$1" if /image_dest\s*=\s*(\S+)/i;
+ $preinst_hook = "$1" if /preinst_hook\s*=\s*(\S+)/i;
+ $ramdisk = "$1" if /ramdisk\s*=\s*(.+)$/i;
}
close CONF;
- $have_conffile = "Yes";
- $have_conffile = "Yes"; # stop perl complaining
}
}
$ENV{KERNEL_ARCH}=$kernel_arch if $kernel_arch;
-# About to upgrade this package from version $2 TO THIS VERSION.
-# "prerm upgrade" has already been called for the old version of
-# this package.
-
-sub find_inird_tool {
- my $ramdisk = shift;
- my (@ramdisks, $initramfs_cmd);
-
- foreach $initramfs_cmd (split(/[:,\s]+/, $ramdisk)) {
- if (system("test -x \"\$(command -v $initramfs_cmd)\"") == 0) {
- push(@ramdisks, $initramfs_cmd);
- }
- }
- return @ramdisks;
-}
-
-chomp (my $hostversion = `uname -r`);
-my @ramdisklist;
-@ramdisklist = find_inird_tool($ramdisk) if $ramdisk;
-if ($#ramdisklist < 0) {
- my $ret;
- my $seen;
- my $text = "${package_name}/preinst/initrd-$version";
- ($ret,$seen) = fset ("$text", 'seen', 'false');
- die "Error setting debconf flags in $text: $seen" if $ret;
-
- ($ret,$seen) = subst("$text", 'hostversion', "$hostversion");
- die "Error setting debconf substitutions in $text: $seen" if $ret;
-
- ($ret,$seen) = subst("$text", 'ramdisk', "$ramdisk");
- die "Error setting debconf substitutions in $text: $seen" if $ret;
-
- ($ret,$seen) = subst("$text", 'initrddep', "$initrddep");
- die "Error setting debconf substitutions in $text: $seen" if $ret;
-
- ($ret,$seen) = input('medium', "$text");
- if ($ret && $ret != 30 ) {
- die "Error setting debconf question $text: $seen";
- }
-
- ($ret,$seen) = go ();
- if ($ret && $ret != 30 ) {
- die "Error asking debconf question $text: $seen";
- }
- # I no longer claim this question
- ($ret,$seen) = unregister("$text");
- die "Error unregistering debconf question $text: $seen" if $ret;
- warn "Could not find $ramdisk.";
-}
-
sub check {
my $version = shift;
@@ -214,11 +129,9 @@ if (-d "$modules_base/$version") {
warn "Info:\n$errors\n" if $errors;
}
-if ($official_image =~ /^\s*YES\s*$/o ) {
- if (-d "$modules_base/$version" && -l "$modules_base/$version/build" ) {
- rename("$modules_base/$version/build", "$modules_base/$version/build.save") ||
- die "failed to move $modules_base/$version/build:$!";
- }
+if (-d "$modules_base/$version" && -l "$modules_base/$version/build" ) {
+ rename("$modules_base/$version/build", "$modules_base/$version/build.save") ||
+ die "failed to move $modules_base/$version/build:$!";
}
# set the env var stem
@@ -271,6 +184,13 @@ sub run_hook {
}
+my $options;
+for (@ARGV) {
+ s,','\\'',g;
+ $options .= " '$_'";
+}
+$ENV{'DEB_MAINT_PARAMS'}="$options";
+
## Run user hook script here, if any
if (-x "$preinst_hook") {
&run_hook("preinst", $preinst_hook);
diff --git a/templates/temp.image.plain/prerm b/templates/temp.image.plain/prerm
index d419ca1..5db52c9 100755
--- a/templates/temp.image.plain/prerm
+++ b/templates/temp.image.plain/prerm
@@ -1,20 +1,4 @@
#! /usr/bin/perl
-# -*- Mode: Perl -*-
-# image.prerm ---
-# Author : root ( root@melkor.pilgrim.umass.edu )
-# Created On : Fri May 17 03:28:59 1996
-# Created On Node : melkor.pilgrim.umass.edu
-# Last Modified By : Manoj Srivastava
-# Last Modified On : Sat Aug 5 13:14:17 2006
-# Last Machine Used: glaurung.internal.golden-gryphon.com
-# Update Count : 85
-# Status : Unknown, Use with caution!
-# HISTORY :
-# Description :
-#
-#
-# $Id: image.prerm,v 1.22 2003/10/07 16:24:20 srivasta Exp $
-#
#
#use strict;
use Debconf::Client::ConfModule qw(:all);
@@ -26,7 +10,6 @@ $|=1;
my $version = "=V";
my $link_in_boot = "=IB"; # Should be empty, mostly
my $no_symlink = "=S"; # Should be empty, mostly
-my $reverse_symlink = "=R"; # Should be empty, mostly
my $do_symlinks = "Yes"; # target machine defined
my $do_boot_enable = "Yes"; # target machine defined
my $do_bootloader = "Yes"; # target machine defined
@@ -39,8 +22,7 @@ my $minimal_swap = ''; # Do not swap symlinks
my $ignore_depmod_err = ''; # normally we do not
my $relink_build_link = 'YES'; # There is no harm in checking the link
my $force_build_link = ''; # There is no harm in checking the link
-my $official_image = "=OF"; # only true for official images
-my $arch = "=A"; # should be same as dpkg --print-installation-architecture
+my $arch = "=A"; # should be same as dpkg --print-architecture
my $kernel_arch = "=B";
my $package_name = "=ST-image-$version";
@@ -62,10 +44,7 @@ my $temp_file_name = "/var/log/$loader" . "_log.$$";
#known variables
my $image_dest = "/";
my $realimageloc = "/$image_dir/";
-my $have_conffile = "";
my $CONF_LOC = '/etc/kernel-img.conf';
-my $relative_links = '';
-my $silent_loader = '';
# remove multiple leading slashes; make sure there is at least one.
$realimageloc =~ s|^/*|/|o;
@@ -102,42 +81,35 @@ if (-r "$CONF_LOC" && -f "$CONF_LOC" ) {
s/\#.*$//g;
next if /^\s*$/;
- $do_symlink = "" if /do_symlinks\s*=\s*(no|false|0)\s*$/ig;
- $no_symlink = "" if /no_symlinks\s*=\s*(no|false|0)\s*$/ig;
- $reverse_symlink = "" if /reverse_symlinks\s*=\s*(no|false|0)\s*$/ig;
- $link_in_boot = "" if /link_in_boot\s*=\s*(no|false|0)\s*$/ig;
- $do_boot_enable = '' if /do_boot_enable\s*=\s*(no|false|0)\s*$/ig;
- $relative_links = '' if /relative_links \s*=\s*(no|false|0)\s*$/ig;
- $do_bootloader = '' if /do_bootloader\s*=\s*(no|false|0)\s*$/ig;
- $use_hard_links = '' if /use_hard_links\s*=\s*(no|false|0)\s*$/ig;
- $silent_loader = '' if /silent_loader\s*=\s*(no|false|0)\s*$/ig;
- $warn_reboot = '' if /warn_reboot\s*=\s*(no|false|0)\s*$/ig;
- $minimal_swap = '' if /minimal_swap\s*=\s*(no|false|0)\s*$/ig;
- $ignore_depmod_err = '' if /ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig;
- $relink_build_link = '' if /relink_build_link\s*=\s*(no|false|0)\s*$/ig;
- $force_build_link = '' if /force_build_link\s*=\s*(no|false|0)\s*$/ig;
-
-
- $do_symlink = "Yes" if /do_symlinks\s*=\s*(yes|true|1)\s*$/ig;
- $no_symlink = "Yes" if /no_symlinks\s*=\s*(yes|true|1)\s*$/ig;
- $reverse_symlink = "Yes" if /reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig;
- $link_in_boot = "Yes" if /link_in_boot\s*=\s*(yes|true|1)\s*$/ig;
- $do_boot_enable = "Yes" if /do_boot_enable\s*=\s*(yes|true|1)\s*$/ig;
- $do_bootloader = "Yes" if /do_bootloader\s*=\s*(yes|true|1)\s*$/ig;
- $relative_links = "Yes" if /relative_links\s*=\s*(yes|true|1)\s*$/ig;
- $use_hard_links = "Yes" if /use_hard_links\s*=\s*(yes|true|1)\s*$/ig;
- $silent_loader = 'Yes' if /silent_loader\s*=\s*(yes|true|1)\s*$/ig;
- $warn_reboot = 'Yes' if /warn_reboot\s*=\s*(yes|true|1)\s*$/ig;
- $minimal_swap = 'Yes' if /minimal_swap\s*=\s*(yes|true|1)\s*$/ig;
- $ignore_depmod_err = 'Yes' if /ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig;
- $relink_build_link = 'Yes' if /relink_build_link\s*=\s*(yes|true|1)\s*$/ig;
- $force_build_link = 'Yes' if /force_build_link\s*=\s*(yes|true|1)\s*$/ig;
-
- $image_dest = "$1" if /image_dest\s*=\s*(\S+)/ig;
- $prerm_hook = "$1" if /prerm_hook\s*=\s*(\S+)/ig;
+ $do_symlink = "" if /do_symlinks\s*=\s*(no|false|0)\s*$/i;
+ $no_symlink = "" if /no_symlinks\s*=\s*(no|false|0)\s*$/i;
+ $link_in_boot = "" if /link_in_boot\s*=\s*(no|false|0)\s*$/i;
+ $do_boot_enable = '' if /do_boot_enable\s*=\s*(no|false|0)\s*$/i;
+ $do_bootloader = '' if /do_bootloader\s*=\s*(no|false|0)\s*$/i;
+ $use_hard_links = '' if /use_hard_links\s*=\s*(no|false|0)\s*$/i;
+ $warn_reboot = '' if /warn_reboot\s*=\s*(no|false|0)\s*$/i;
+ $minimal_swap = '' if /minimal_swap\s*=\s*(no|false|0)\s*$/i;
+ $ignore_depmod_err = '' if /ignore_depmod_err\s*=\s*(no|false|0)\s*$/i;
+ $relink_build_link = '' if /relink_build_link\s*=\s*(no|false|0)\s*$/i;
+ $force_build_link = '' if /force_build_link\s*=\s*(no|false|0)\s*$/i;
+
+
+ $do_symlink = "Yes" if /do_symlinks\s*=\s*(yes|true|1)\s*$/i;
+ $no_symlink = "Yes" if /no_symlinks\s*=\s*(yes|true|1)\s*$/i;
+ $link_in_boot = "Yes" if /link_in_boot\s*=\s*(yes|true|1)\s*$/i;
+ $do_boot_enable = "Yes" if /do_boot_enable\s*=\s*(yes|true|1)\s*$/i;
+ $do_bootloader = "Yes" if /do_bootloader\s*=\s*(yes|true|1)\s*$/i;
+ $use_hard_links = "Yes" if /use_hard_links\s*=\s*(yes|true|1)\s*$/i;
+ $warn_reboot = 'Yes' if /warn_reboot\s*=\s*(yes|true|1)\s*$/i;
+ $minimal_swap = 'Yes' if /minimal_swap\s*=\s*(yes|true|1)\s*$/i;
+ $ignore_depmod_err = 'Yes' if /ignore_depmod_err\s*=\s*(yes|true|1)\s*$/i;
+ $relink_build_link = 'Yes' if /relink_build_link\s*=\s*(yes|true|1)\s*$/i;
+ $force_build_link = 'Yes' if /force_build_link\s*=\s*(yes|true|1)\s*$/i;
+
+ $image_dest = "$1" if /image_dest\s*=\s*(\S+)/i;
+ $prerm_hook = "$1" if /prerm_hook\s*=\s*(\S+)/i;
}
close CONF;
- $have_conffile = "Yes";
}
}
@@ -184,7 +156,7 @@ if ($running eq $version) {
chdir("/") or die "could not chdir to /:$!\n";
if (-f "/etc/$loader.conf") { #I know, could be a link, but ..
- open (LILO, "/etc/$loader.conf") || &success(); # this is not critical
+ open (LILO, "/etc/$loader.conf"); # this is not critical
while (<LILO>) {
chop;
s/\#.*//; # nix the comments
@@ -198,11 +170,11 @@ if (-f "/etc/$loader.conf") { #I know, could be a link, but ..
$WouldInvalidate |= $image =~ /$kimage-$version/;
}
else {
- &success(); # invalid $loader.conf file
+ last; # invalid $loader.conf file
}
}
else {
- &success(); # invalid $loader.conf file
+ last; # invalid $loader.conf file
}
}
close (LILO);
@@ -237,7 +209,6 @@ if (-f "/etc/$loader.conf") { #I know, could be a link, but ..
}
else {
print STFERR "Ok, proceeding with removing running kernel image.\n";
- &success();
}
}
}
@@ -293,6 +264,13 @@ sub run_hook {
}
+my $options;
+for (@ARGV) {
+ s,','\\'',g;
+ $options .= " '$_'";
+}
+$ENV{'DEB_MAINT_PARAMS'}="$options";
+
## Run user hook script here, if any
if (-x "$prerm_hook") {
&run_hook("prerm", $prerm_hook);
@@ -311,14 +289,5 @@ if (-d "/etc/kernel/prerm.d/$version") {
die "Failed to process /etc/kernel/prerm.d/$version";
}
-sub success () {
- -f "/lib/modules/$version/modules.dep" &&
- unlink "/lib/modules/$version/modules.dep";
- exit 0;
-}
-
-
-
-&success();
exit 0;
__END__
diff --git a/templates/temp.image.plain/templates b/templates/temp.image.plain/templates
index 99149f2..8be8fd2 100644
--- a/templates/temp.image.plain/templates
+++ b/templates/temp.image.plain/templates
@@ -1,17 +1,3 @@
-Template: =ST-image-=V/preinst/initrd-=V
-Type: text
-Description: Initial RAMdisk image generation impossible
- You are attempting to install an initrd kernel image (version
- =V) on a machine currently running kernel version
- ${hostversion}.
- .
- No suitable tool for generating initrd images was found in
- ${ramdisk} and therefore no initrd image can be generated.
- This will break the installation, unless such tools are also being installed
- right now. Suitable tools:
- .
- ${initrddep}
-
Template: =ST-image-=V/postinst/depmod-error-initrd-=V
Type: boolean
Default: false
@@ -91,3 +77,17 @@ Description: Abort kernel removal?
.
It is highly recommended to abort the kernel removal unless you are
prepared to fix the system after removal.
+
+Template: =ST-image-=V/postinst/missing-firmware-=V
+Type: note
+Description: Required firmware files may be missing
+ This system is currently running Linux ${runningversion} and you are
+ installing Linux ${version}. In the new version some of the drivers
+ used on this system may require additional firmware files:
+ .
+ ${missing}
+ .
+ Most firmware files are not included in the Debian system because
+ no source code is available for them. You may need to reconfigure
+ the package manager to include the non-free section of the Debian
+ archive before you can install these firmware files.